From 8047a0fc4cc5f7d198705ccc24554c551984b337 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 23 Feb 2023 08:09:18 +0000 Subject: [PATCH 001/193] Fix error being thrown when attempting to change query parameters (#9782) --- .../controls/ButtonActionEditor/actions/ExecuteQuery.svelte | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/ExecuteQuery.svelte b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/ExecuteQuery.svelte index 840a639fb4..ba72fd2ed7 100644 --- a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/ExecuteQuery.svelte +++ b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/ExecuteQuery.svelte @@ -20,6 +20,12 @@ x => x._id !== BUDIBASE_INTERNAL_DB_ID && x.type !== BUDIBASE_DATASOURCE_TYPE ) + // Ensure query params exist so they can be bound + $: { + if (!parameters.queryParams) { + parameters.queryParams = {} + } + } function fetchQueryDefinition(query) { const source = $datasources.list.find( From b4c88bd545b1edea79f95deded40b35ae96c86e1 Mon Sep 17 00:00:00 2001 From: Dean Date: Thu, 23 Feb 2023 10:38:03 +0000 Subject: [PATCH 002/193] Merge commit to dev --- packages/types/src/api/web/user.ts | 1 + .../src/api/controllers/global/users.ts | 119 +++++++++++++++++- packages/worker/src/sdk/users/users.ts | 6 +- packages/worker/src/utilities/redis.ts | 40 ++++++ 4 files changed, 159 insertions(+), 7 deletions(-) diff --git a/packages/types/src/api/web/user.ts b/packages/types/src/api/web/user.ts index 6acaf6912d..18f98048c4 100644 --- a/packages/types/src/api/web/user.ts +++ b/packages/types/src/api/web/user.ts @@ -16,6 +16,7 @@ export interface BulkUserRequest { userIds: string[] } create?: { + roles?: any[] users: User[] groups: any[] } diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index 817480151d..f8cb4b2103 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -1,4 +1,8 @@ -import { checkInviteCode } from "../../../utilities/redis" +import { + checkInviteCode, + getInviteCodes, + updateInviteCode, +} from "../../../utilities/redis" import sdk from "../../../sdk" import env from "../../../environment" import { @@ -6,7 +10,6 @@ import { BulkUserResponse, CloudAccount, CreateAdminUserRequest, - InviteUserRequest, InviteUsersRequest, SearchUsersRequest, User, @@ -19,6 +22,7 @@ import { tenancy, } from "@budibase/backend-core" import { checkAnyUserExists } from "../../../utilities/users" +import { isEmailConfigured } from "src/utilities/email" const MAX_USERS_UPLOAD_LIMIT = 1000 @@ -186,9 +190,54 @@ export const tenantUserLookup = async (ctx: any) => { } } +/* + Encapsulate the app user onboarding flows here. +*/ +export const onboardUsers = async (ctx: any) => { + const request = ctx.request.body as InviteUsersRequest | BulkUserRequest + const isBulkCreate = "create" in request + + const emailConfigured = await isEmailConfigured() + + let onboardingResponse + + if (isBulkCreate) { + // @ts-ignore + const { users, groups, roles } = request.create + const assignUsers = users.map((user: User) => (user.roles = roles)) + onboardingResponse = await sdk.users.bulkCreate(assignUsers, groups) + ctx.body = onboardingResponse + } else if (emailConfigured) { + onboardingResponse = await invite(ctx) + } else if (!emailConfigured) { + const inviteRequest = ctx.request.body as InviteUsersRequest + const users: User[] = inviteRequest.map(invite => { + let password = Math.random().toString(36).substring(2, 22) + + return { + email: invite.email, + password, + forceResetPassword: true, + roles: invite.userInfo.apps, + admin: { global: false }, + builder: { global: false }, + tenantId: tenancy.getTenantId(), + } + }) + let bulkCreateReponse = await sdk.users.bulkCreate(users, []) + onboardingResponse = { + ...bulkCreateReponse, + created: true, + } + ctx.body = onboardingResponse + } else { + ctx.throw(400, "User onboarding failed") + } +} + export const invite = async (ctx: any) => { - const request = ctx.request.body as InviteUserRequest - const response = await sdk.users.invite([request]) + const request = ctx.request.body as InviteUsersRequest + const response = await sdk.users.invite(request) // explicitly throw for single user invite if (response.unsuccessful.length) { @@ -202,6 +251,8 @@ export const invite = async (ctx: any) => { ctx.body = { message: "Invitation has been sent.", + successful: response.successful, + unsuccessful: response.unsuccessful, } } @@ -223,19 +274,75 @@ export const checkInvite = async (ctx: any) => { } } +export const getUserInvites = async (ctx: any) => { + let invites + try { + // Restricted to the currently authenticated tenant + invites = await getInviteCodes([ctx.user.tenantId]) + } catch (e) { + ctx.throw(400, "There was a problem fetching invites") + } + ctx.body = invites +} + +export const updateInvite = async (ctx: any) => { + const { code } = ctx.params + let updateBody = { ...ctx.request.body } + + delete updateBody.email + + let invite + try { + invite = await checkInviteCode(code, false) + if (!invite) { + throw new Error("The invite could not be retrieved") + } + } catch (e) { + ctx.throw(400, "There was a problem with the invite") + } + + let updated = { + ...invite, + } + + if (!updateBody?.apps || !Object.keys(updateBody?.apps).length) { + updated.info.apps = [] + } else { + updated.info = { + ...invite.info, + apps: { + ...invite.info.apps, + ...updateBody.apps, + }, + } + } + + await updateInviteCode(code, updated) + ctx.body = { ...invite } +} + export const inviteAccept = async (ctx: any) => { const { inviteCode, password, firstName, lastName } = ctx.request.body try { // info is an extension of the user object that was stored by global const { email, info }: any = await checkInviteCode(inviteCode) ctx.body = await tenancy.doInTenant(info.tenantId, async () => { - const saved = await sdk.users.save({ + let request = { firstName, lastName, password, email, + roles: info.apps, + } + + delete info.apps + + request = { + ...request, ...info, - }) + } + + const saved = await sdk.users.save(request) const db = tenancy.getGlobalDB() const user = await db.get(saved._id) await events.user.inviteAccepted(user) diff --git a/packages/worker/src/sdk/users/users.ts b/packages/worker/src/sdk/users/users.ts index 5124a5c5b1..db49e801c3 100644 --- a/packages/worker/src/sdk/users/users.ts +++ b/packages/worker/src/sdk/users/users.ts @@ -203,7 +203,7 @@ export const save = async ( const tenantId = tenancy.getTenantId() const db = tenancy.getGlobalDB() - let { email, _id, userGroups = [] } = user + let { email, _id, userGroups = [], roles } = user if (!email && !_id) { throw new Error("_id or email is required") @@ -245,6 +245,10 @@ export const save = async ( builtUser.roles = dbUser.roles } + if (!dbUser && roles?.length) { + builtUser.roles = { ...roles } + } + // make sure we set the _id field for a new user // Also if this is a new user, associate groups with them let groupPromises = [] diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index 893ec9f0a8..a05b043054 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -29,6 +29,20 @@ async function writeACode(db: string, value: any) { return code } +async function updateACode(db: string, code: string, value: any) { + const client = await getClient(db) + await client.store(code, value, getExpirySecondsForDB(db)) +} + +/** + * Given an invite code and invite body, allow the update an existing/valid invite in redis + * @param {string} inviteCode The invite code for an invite in redis + * @param {object} value The body of the updated user invitation + */ +export async function updateInviteCode(inviteCode: string, value: string) { + await updateACode(redis.utils.Databases.INVITATIONS, inviteCode, value) +} + async function getACode(db: string, code: string, deleteCode = true) { const client = await getClient(db) const value = await client.get(code) @@ -111,3 +125,29 @@ export async function checkInviteCode( throw "Invitation is not valid or has expired, please request a new one." } } + +/** + Get all currently available user invitations. + @return {Object[]} A +**/ +export async function getInviteCodes( + tenantIds?: string[] //should default to the current tenant of the user session. +) { + const client = await getClient(redis.utils.Databases.INVITATIONS) + const invites: any[] = await client.scan() + + const results = invites.map(invite => { + return { + ...invite.value, + code: invite.key, + } + }) + return results.reduce((acc, invite) => { + if (tenantIds?.length && tenantIds.includes(invite.info.tenantId)) { + acc.push(invite) + } else { + acc.push(invite) + } + return acc + }, []) +} From d8fbdeb6f8454d60d348cefdd561781c15a001bf Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 23 Feb 2023 16:20:44 +0000 Subject: [PATCH 003/193] set couchDB chart version to 3.1.1 --- charts/budibase/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/budibase/values.yaml b/charts/budibase/values.yaml index dd75b2daa3..536af8560f 100644 --- a/charts/budibase/values.yaml +++ b/charts/budibase/values.yaml @@ -245,7 +245,7 @@ couchdb: ## The CouchDB image image: repository: couchdb - tag: 3.2.1 + tag: 3.1.1 pullPolicy: IfNotPresent ## Experimental integration with Lucene-powered fulltext search From b0fd593db5fb319f8f89280071077b35e79e2bac Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 24 Feb 2023 16:27:50 +0000 Subject: [PATCH 004/193] Downgrade glopezep/helm to 1.7.0 (#9803) --- .github/workflows/deploy-preprod.yml | 2 +- .github/workflows/deploy-release.yml | 2 +- .github/workflows/release-develop.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index cef47636ee..5ce27b08d9 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -37,7 +37,7 @@ jobs: wc -l values.preprod.yaml - name: Deploy to Preprod Environment - uses: glopezep/helm@v1.7.1 + uses: glopezep/helm@v1.7.0 with: release: budibase-preprod namespace: budibase diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml index cff26fd7c8..b4653e5a4e 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/deploy-release.yml @@ -38,7 +38,7 @@ jobs: wc -l values.release.yaml - name: Deploy to Release Environment - uses: glopezep/helm@v1.7.1 + uses: glopezep/helm@v1.7.0 with: release: budibase-release namespace: budibase diff --git a/.github/workflows/release-develop.yml b/.github/workflows/release-develop.yml index 1ac6b20003..bbb1be0878 100644 --- a/.github/workflows/release-develop.yml +++ b/.github/workflows/release-develop.yml @@ -98,7 +98,7 @@ jobs: wc -l values.release.yaml - name: Deploy to Release Environment - uses: glopezep/helm@v1.7.1 + uses: glopezep/helm@v1.7.0 with: release: budibase-release namespace: budibase diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a28150891..7f522244e0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -107,7 +107,7 @@ jobs: wc -l values.preprod.yaml - name: Deploy to Preprod Environment - uses: glopezep/helm@v1.7.1 + uses: glopezep/helm@v1.7.0 with: release: budibase-preprod namespace: budibase From c14c57bc63e0403a1459e08bbfaf2c6207016037 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 24 Feb 2023 16:34:13 +0000 Subject: [PATCH 005/193] Fix helm action (#9804) * Downgrade glopezep/helm to 1.7.0 * Downgrade glopezep/helm to 1.6.1 --- .github/workflows/deploy-preprod.yml | 2 +- .github/workflows/deploy-release.yml | 2 +- .github/workflows/release-develop.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index 5ce27b08d9..583d83dc5d 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -37,7 +37,7 @@ jobs: wc -l values.preprod.yaml - name: Deploy to Preprod Environment - uses: glopezep/helm@v1.7.0 + uses: glopezep/helm@v1.6.1 with: release: budibase-preprod namespace: budibase diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml index b4653e5a4e..fcc29fcd7d 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/deploy-release.yml @@ -38,7 +38,7 @@ jobs: wc -l values.release.yaml - name: Deploy to Release Environment - uses: glopezep/helm@v1.7.0 + uses: glopezep/helm@v1.6.1 with: release: budibase-release namespace: budibase diff --git a/.github/workflows/release-develop.yml b/.github/workflows/release-develop.yml index bbb1be0878..3201ecb1c9 100644 --- a/.github/workflows/release-develop.yml +++ b/.github/workflows/release-develop.yml @@ -98,7 +98,7 @@ jobs: wc -l values.release.yaml - name: Deploy to Release Environment - uses: glopezep/helm@v1.7.0 + uses: glopezep/helm@v1.6.1 with: release: budibase-release namespace: budibase diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7f522244e0..28da63aadf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -107,7 +107,7 @@ jobs: wc -l values.preprod.yaml - name: Deploy to Preprod Environment - uses: glopezep/helm@v1.7.0 + uses: glopezep/helm@v1.6.1 with: release: budibase-preprod namespace: budibase From 32619fbfa33ac883298d3db46aefeed86e3bb033 Mon Sep 17 00:00:00 2001 From: Dean Date: Mon, 27 Feb 2023 09:11:32 +0000 Subject: [PATCH 006/193] Merge commit --- packages/builder/src/builderStore/store/frontend.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/builder/src/builderStore/store/frontend.js b/packages/builder/src/builderStore/store/frontend.js index 56b8a599f0..7b01f57a53 100644 --- a/packages/builder/src/builderStore/store/frontend.js +++ b/packages/builder/src/builderStore/store/frontend.js @@ -67,6 +67,8 @@ const INITIAL_FRONTEND_STATE = { // onboarding onboarding: false, tourNodes: null, + + builderSidePanel: false, } export const getFrontendStore = () => { From 9aea8bfec4edb7a3572fb4c4fe77dbb74b89eb50 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Mon, 27 Feb 2023 10:01:43 +0000 Subject: [PATCH 007/193] Use forked helm action (#9814) --- .github/workflows/deploy-preprod.yml | 2 +- .github/workflows/deploy-release.yml | 2 +- .github/workflows/release-develop.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml index 583d83dc5d..eec5546444 100644 --- a/.github/workflows/deploy-preprod.yml +++ b/.github/workflows/deploy-preprod.yml @@ -37,7 +37,7 @@ jobs: wc -l values.preprod.yaml - name: Deploy to Preprod Environment - uses: glopezep/helm@v1.6.1 + uses: budibase/helm@v1.8.0 with: release: budibase-preprod namespace: budibase diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml index fcc29fcd7d..1f7a5ebfd4 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/deploy-release.yml @@ -38,7 +38,7 @@ jobs: wc -l values.release.yaml - name: Deploy to Release Environment - uses: glopezep/helm@v1.6.1 + uses: budibase/helm@v1.8.0 with: release: budibase-release namespace: budibase diff --git a/.github/workflows/release-develop.yml b/.github/workflows/release-develop.yml index 3201ecb1c9..193f736b5f 100644 --- a/.github/workflows/release-develop.yml +++ b/.github/workflows/release-develop.yml @@ -98,7 +98,7 @@ jobs: wc -l values.release.yaml - name: Deploy to Release Environment - uses: glopezep/helm@v1.6.1 + uses: budibase/helm@v1.8.0 with: release: budibase-release namespace: budibase diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 28da63aadf..a24537ccd4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -107,7 +107,7 @@ jobs: wc -l values.preprod.yaml - name: Deploy to Preprod Environment - uses: glopezep/helm@v1.6.1 + uses: budibase/helm@v1.8.0 with: release: budibase-preprod namespace: budibase From 868f82ea337634adc8e22e3e3542069a974653ce Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 27 Feb 2023 10:12:47 +0000 Subject: [PATCH 008/193] v2.3.18 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index cfbed56e23..dc96b47dea 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.17", + "version": "2.3.18", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 25e73b9e4d..e4b47dd0a1 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -23,7 +23,7 @@ }, "dependencies": { "@budibase/nano": "10.1.1", - "@budibase/types": "^2.3.17", + "@budibase/types": "^2.3.18", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 8c9629b314..b2903c4811 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.17", + "version": "2.3.18", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "^2.3.17", + "@budibase/string-templates": "^2.3.18", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 5e968c23a3..39435e2fd2 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.17", + "version": "2.3.18", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "^2.3.17", - "@budibase/client": "^2.3.17", - "@budibase/frontend-core": "^2.3.17", - "@budibase/string-templates": "^2.3.17", + "@budibase/bbui": "^2.3.18", + "@budibase/client": "^2.3.18", + "@budibase/frontend-core": "^2.3.18", + "@budibase/string-templates": "^2.3.18", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index fb08c290fc..edebd25e3a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "^2.3.17", - "@budibase/string-templates": "^2.3.17", - "@budibase/types": "^2.3.17", + "@budibase/backend-core": "^2.3.18", + "@budibase/string-templates": "^2.3.18", + "@budibase/types": "^2.3.18", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 78df2b67f7..f11fe4360d 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.17", + "version": "2.3.18", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "^2.3.17", - "@budibase/frontend-core": "^2.3.17", - "@budibase/string-templates": "^2.3.17", + "@budibase/bbui": "^2.3.18", + "@budibase/frontend-core": "^2.3.18", + "@budibase/string-templates": "^2.3.18", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 502df0fbd4..723560309f 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "^2.3.17", + "@budibase/bbui": "^2.3.18", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index d8a5c44c5b..4b84e6d726 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index f5787302fe..2d4a8814f8 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "^2.3.17", - "@budibase/client": "^2.3.17", + "@budibase/backend-core": "^2.3.18", + "@budibase/client": "^2.3.18", "@budibase/pro": "2.3.17", - "@budibase/string-templates": "^2.3.17", - "@budibase/types": "^2.3.17", + "@budibase/string-templates": "^2.3.18", + "@budibase/types": "^2.3.18", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 87b7c69dbb..f3f8c67fab 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.17", + "version": "2.3.18", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 8417cadc06..c674aedc53 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 71b8ed6e9c..d3331d7223 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.17", + "version": "2.3.18", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "^2.3.17", + "@budibase/backend-core": "^2.3.18", "@budibase/pro": "2.3.17", - "@budibase/string-templates": "^2.3.17", - "@budibase/types": "^2.3.17", + "@budibase/string-templates": "^2.3.18", + "@budibase/types": "^2.3.18", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 941b2e4200da75661458ec695652718d93471d8a Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 27 Feb 2023 10:16:38 +0000 Subject: [PATCH 009/193] Update pro version to 2.3.18 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index 2d4a8814f8..edee3c2634 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "^2.3.18", "@budibase/client": "^2.3.18", - "@budibase/pro": "2.3.17", + "@budibase/pro": "2.3.18", "@budibase/string-templates": "^2.3.18", "@budibase/types": "^2.3.18", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 31a5b3350e..3304ea07a4 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1273,13 +1273,13 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.17": - version "2.3.17" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.17.tgz#27c8c2144bfda1533b43da6de7111c0819aea6a5" - integrity sha512-KcmF2OrNLjLbFtNbYD4ZufnsnwmN2Ez/occgWiecvFRAHOhpkm+Hoy6VggpG1YJBp1DG9kLh3WAZbeYI3QoJbw== +"@budibase/backend-core@2.3.18": + version "2.3.18" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18.tgz#e14c920aae45b8ef564f00fbe9bb03710fd0de50" + integrity sha512-KtCDs6w29TlIbnvG7XBl6ZLhhUvvn4abc1JYoSd01s39k4Y3eFAoeTqIbqkhBiCPJOD1aSF6gc79NaUOn+4SCw== dependencies: "@budibase/nano" "10.1.1" - "@budibase/types" "^2.3.17" + "@budibase/types" "^2.3.18" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1374,13 +1374,13 @@ qs "^6.11.0" tough-cookie "^4.1.2" -"@budibase/pro@2.3.17": - version "2.3.17" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.17.tgz#1a05d3d13195fcfacac410305fcd0943fbbcd5c8" - integrity sha512-sdWuKRDbseu2POkyGfmiqAWp8M9jGmpD0FqaIEWGQmKdezvOKh3sGg0PGT4InoibbXcFf4vVB+HiofBedDFLkA== +"@budibase/pro@2.3.18": + version "2.3.18" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18.tgz#70ce3039d9b206b9a11f09c65c77f84175bb7ec3" + integrity sha512-ktHsq2zkjSmS/UmObQGEi+krLGGxZlbcuTL03Ub+alHOatEV8hQVUebcqIEcikhehTdSk1KJktnZ87JCH7WcGw== dependencies: - "@budibase/backend-core" "2.3.17" - "@budibase/types" "2.3.17" + "@budibase/backend-core" "2.3.18" + "@budibase/types" "2.3.18" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1406,10 +1406,10 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/types@2.3.17", "@budibase/types@^2.3.17": - version "2.3.17" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.17.tgz#d97c1de5fb03c91ff7e55d7c8c3901e5e2e95995" - integrity sha512-p/6WgwNjVGfwyNLOofhPEG7S3tt5URxAVs+mPXuLn5bsAqRxxJ5XObvw8chijYXmewhGP0hjONQDkmDJ0FkHuA== +"@budibase/types@2.3.18", "@budibase/types@^2.3.18": + version "2.3.18" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18.tgz#8276c490b326e62ac36baeab56e94272e40fd329" + integrity sha512-914MrlKkQZp+saC6Hge7OISO4bMCu4S3ATnkdkhHtY7Fi4ZIhfm0ytLChdf+YedUta9fkZYSmow3z8xIgvEIzw== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index d3331d7223..8e781bf5d7 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "^2.3.18", - "@budibase/pro": "2.3.17", + "@budibase/pro": "2.3.18", "@budibase/string-templates": "^2.3.18", "@budibase/types": "^2.3.18", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 43d5ffb1bd..9197f589f5 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -470,13 +470,13 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.17": - version "2.3.17" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.17.tgz#27c8c2144bfda1533b43da6de7111c0819aea6a5" - integrity sha512-KcmF2OrNLjLbFtNbYD4ZufnsnwmN2Ez/occgWiecvFRAHOhpkm+Hoy6VggpG1YJBp1DG9kLh3WAZbeYI3QoJbw== +"@budibase/backend-core@2.3.18": + version "2.3.18" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18.tgz#e14c920aae45b8ef564f00fbe9bb03710fd0de50" + integrity sha512-KtCDs6w29TlIbnvG7XBl6ZLhhUvvn4abc1JYoSd01s39k4Y3eFAoeTqIbqkhBiCPJOD1aSF6gc79NaUOn+4SCw== dependencies: "@budibase/nano" "10.1.1" - "@budibase/types" "^2.3.17" + "@budibase/types" "^2.3.18" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -521,13 +521,13 @@ qs "^6.11.0" tough-cookie "^4.1.2" -"@budibase/pro@2.3.17": - version "2.3.17" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.17.tgz#1a05d3d13195fcfacac410305fcd0943fbbcd5c8" - integrity sha512-sdWuKRDbseu2POkyGfmiqAWp8M9jGmpD0FqaIEWGQmKdezvOKh3sGg0PGT4InoibbXcFf4vVB+HiofBedDFLkA== +"@budibase/pro@2.3.18": + version "2.3.18" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18.tgz#70ce3039d9b206b9a11f09c65c77f84175bb7ec3" + integrity sha512-ktHsq2zkjSmS/UmObQGEi+krLGGxZlbcuTL03Ub+alHOatEV8hQVUebcqIEcikhehTdSk1KJktnZ87JCH7WcGw== dependencies: - "@budibase/backend-core" "2.3.17" - "@budibase/types" "2.3.17" + "@budibase/backend-core" "2.3.18" + "@budibase/types" "2.3.18" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -535,10 +535,10 @@ lru-cache "^7.14.1" node-fetch "^2.6.1" -"@budibase/types@2.3.17", "@budibase/types@^2.3.17": - version "2.3.17" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.17.tgz#d97c1de5fb03c91ff7e55d7c8c3901e5e2e95995" - integrity sha512-p/6WgwNjVGfwyNLOofhPEG7S3tt5URxAVs+mPXuLn5bsAqRxxJ5XObvw8chijYXmewhGP0hjONQDkmDJ0FkHuA== +"@budibase/types@2.3.18", "@budibase/types@^2.3.18": + version "2.3.18" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18.tgz#8276c490b326e62ac36baeab56e94272e40fd329" + integrity sha512-914MrlKkQZp+saC6Hge7OISO4bMCu4S3ATnkdkhHtY7Fi4ZIhfm0ytLChdf+YedUta9fkZYSmow3z8xIgvEIzw== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From 61ed62e6c41deb1c92b9edd9c2d6c930125c01d0 Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 28 Feb 2023 09:37:03 +0000 Subject: [PATCH 010/193] Builder user onboarding --- packages/backend-core/src/users.ts | 41 + .../bbui/src/ActionButton/ActionButton.svelte | 98 ++- packages/bbui/src/Form/Core/Select.svelte | 4 +- ...loyNavigation.svelte => AppActions.svelte} | 170 ++-- .../src/components/deploy/RevertModal.svelte | 12 +- .../portal/onboarding/TourPopover.svelte | 4 +- .../src/components/portal/onboarding/tours.js | 24 + .../_components/BuilderSidePanel.svelte | 735 ++++++++++++++++++ .../builder/app/[application]/_layout.svelte | 22 +- packages/builder/src/stores/portal/users.js | 17 + packages/frontend-core/src/api/user.js | 52 +- packages/frontend-core/src/fetch/UserFetch.js | 1 + packages/types/src/api/web/user.ts | 2 +- .../src/api/controllers/global/users.ts | 49 +- .../worker/src/api/routes/global/users.ts | 29 +- packages/worker/src/sdk/users/users.ts | 13 +- packages/worker/src/utilities/redis.ts | 6 +- 17 files changed, 1133 insertions(+), 146 deletions(-) rename packages/builder/src/components/deploy/{DeployNavigation.svelte => AppActions.svelte} (53%) create mode 100644 packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte diff --git a/packages/backend-core/src/users.ts b/packages/backend-core/src/users.ts index ef76af390d..ad226e29d8 100644 --- a/packages/backend-core/src/users.ts +++ b/packages/backend-core/src/users.ts @@ -5,6 +5,7 @@ import { generateAppUserID, queryGlobalView, UNICODE_MAX, + directCouchFind, } from "./db" import { BulkDocsResponse, User } from "@budibase/types" import { getGlobalDB } from "./context" @@ -64,12 +65,52 @@ export const searchGlobalUsersByApp = async (appId: any, opts: any) => { }) params.startkey = opts && opts.startkey ? opts.startkey : params.startkey let response = await queryGlobalView(ViewName.USER_BY_APP, params) + if (!response) { response = [] } return Array.isArray(response) ? response : [response] } +/* + Return any user who potentially has access to the application + Admins, developers and app users with the explicitly role. +*/ +export const searchGlobalUsersByAppAccess = async (appId: any, opts: any) => { + const roleSelector = `roles.${appId}` + + let orQuery: any[] = [ + { + "builder.global": true, + }, + { + "admin.global": true, + }, + ] + + if (appId) { + const roleCheck = { + [roleSelector]: { + $exists: true, + }, + } + orQuery.push(roleCheck) + } + + let searchOptions = { + selector: { + $or: orQuery, + _id: { + $regex: "^us_", + }, + }, + limit: opts?.limit || 50, + } + + const resp = await directCouchFind(context.getGlobalDBName(), searchOptions) + return resp?.rows +} + export const getGlobalUserByAppPage = (appId: string, user: User) => { if (!user) { return diff --git a/packages/bbui/src/ActionButton/ActionButton.svelte b/packages/bbui/src/ActionButton/ActionButton.svelte index 663128160f..01f5033e6c 100644 --- a/packages/bbui/src/ActionButton/ActionButton.svelte +++ b/packages/bbui/src/ActionButton/ActionButton.svelte @@ -1,6 +1,9 @@ - + + diff --git a/packages/bbui/src/Form/Core/Select.svelte b/packages/bbui/src/Form/Core/Select.svelte index 721083e3a6..aa9071607e 100644 --- a/packages/bbui/src/Form/Core/Select.svelte +++ b/packages/bbui/src/Form/Core/Select.svelte @@ -41,7 +41,7 @@ const getFieldText = (value, options, placeholder) => { // Always use placeholder if no value if (value == null || value === "") { - return placeholder || "Choose an option" + return placeholder !== false ? "Choose an option" : "" } return getFieldAttribute(getOptionLabel, value, options) @@ -74,7 +74,7 @@ {autocomplete} {sort} isPlaceholder={value == null || value === ""} - placeholderOption={placeholder} + placeholderOption={placeholder === false ? null : placeholder} isOptionSelected={option => option === value} onSelectOption={selectOption} /> diff --git a/packages/builder/src/components/deploy/DeployNavigation.svelte b/packages/builder/src/components/deploy/AppActions.svelte similarity index 53% rename from packages/builder/src/components/deploy/DeployNavigation.svelte rename to packages/builder/src/components/deploy/AppActions.svelte index d3a428fed2..582b5ab8f0 100644 --- a/packages/builder/src/components/deploy/DeployNavigation.svelte +++ b/packages/builder/src/components/deploy/AppActions.svelte @@ -6,8 +6,10 @@ Heading, Body, Button, - Icon, + ActionButton, } from "@budibase/bbui" + import RevertModal from "components/deploy/RevertModal.svelte" + import VersionModal from "components/deploy/VersionModal.svelte" import { processStringSync } from "@budibase/string-templates" import ConfirmDialog from "components/common/ConfirmDialog.svelte" import analytics, { Events, EventSource } from "analytics" @@ -16,6 +18,8 @@ import { onMount } from "svelte" import DeployModal from "components/deploy/DeployModal.svelte" import { apps } from "stores/portal" + import { store } from "builderStore" + import TourWrap from "components/portal/onboarding/TourWrap.svelte" export let application @@ -108,66 +112,93 @@ }) -
- {#if isPublished} -
-
- -
- -
- - Your published app - - - {processStringSync( - "Last published {{ duration time 'millisecond' }} ago", - { - time: - new Date().getTime() - - new Date(latestDeployments[0].updatedAt).getTime(), - } - )} - - -
- - -
-
-
-
+
+
+
+
- {/if} + - {#if !isPublished} - - {/if} + {#if isPublished} +
+
+ +
+ +
+ + Your published app + + + {processStringSync( + "Last published {{ duration time 'millisecond' }} ago", + { + time: + new Date().getTime() - + new Date(latestDeployments[0].updatedAt).getTime(), + } + )} + + +
+ + +
+
+
+
+
+ {/if} + + {#if !isPublished} + + {/if} + + + + { + store.update(state => { + state.builderSidePanel = true + return state + }) + }} + > + Users + + + +
+ diff --git a/packages/builder/src/components/deploy/RevertModal.svelte b/packages/builder/src/components/deploy/RevertModal.svelte index a8f9d8f6e3..0c3372f8ec 100644 --- a/packages/builder/src/components/deploy/RevertModal.svelte +++ b/packages/builder/src/components/deploy/RevertModal.svelte @@ -1,10 +1,10 @@ - +
{tourStep?.title || "-"} -
{`${tourStepIdx + 1}/${tourSteps?.length}`}
+ {#if tourSteps?.length > 1} +
{`${tourStepIdx + 1}/${tourSteps?.length}`}
+ {/if}
diff --git a/packages/builder/src/components/portal/onboarding/tours.js b/packages/builder/src/components/portal/onboarding/tours.js index d1485c4872..7975f11bb5 100644 --- a/packages/builder/src/components/portal/onboarding/tours.js +++ b/packages/builder/src/components/portal/onboarding/tours.js @@ -9,11 +9,14 @@ export const TOUR_STEP_KEYS = { BUILDER_APP_PUBLISH: "builder-app-publish", BUILDER_DATA_SECTION: "builder-data-section", BUILDER_DESIGN_SECTION: "builder-design-section", + BUILDER_USER_MANAGEMENT: "builder-user-management", BUILDER_AUTOMATE_SECTION: "builder-automate-section", + FEATURE_USER_MANAGEMENT: "feature-user-management", } export const TOUR_KEYS = { TOUR_BUILDER_ONBOARDING: "builder-onboarding", + FEATURE_ONBOARDING: "feature-onboarding", } const tourEvent = eventKey => { @@ -58,6 +61,15 @@ const getTours = () => { }, align: "left", }, + { + id: TOUR_STEP_KEYS.BUILDER_USER_MANAGEMENT, + title: "Users", + query: ".toprightnav #builder-app-users-button", + body: "Choose which users you want to see to have access to your app and control what level of access they have.", + onLoad: () => { + tourEvent(TOUR_STEP_KEYS.BUILDER_USER_MANAGEMENT) + }, + }, { id: TOUR_STEP_KEYS.BUILDER_APP_PUBLISH, title: "Publish", @@ -90,6 +102,18 @@ const getTours = () => { }, }, ], + [TOUR_KEYS.FEATURE_ONBOARDING]: [ + { + id: TOUR_STEP_KEYS.FEATURE_USER_MANAGEMENT, + title: "Users", + query: ".toprightnav #builder-app-users-button", + body: "Choose which users you want to have access to your app and control what level of access they have.", + onLoad: () => { + tourEvent(TOUR_STEP_KEYS.FEATURE_USER_MANAGEMENT) + }, + align: "left", + }, + ], } } diff --git a/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte b/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte new file mode 100644 index 0000000000..ccd6071b90 --- /dev/null +++ b/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte @@ -0,0 +1,735 @@ + + +
{ + store.update(state => { + state.builderSidePanel = false + return state + }) + } + : () => {}} +> +
+ Users + { + store.update(state => { + state.builderSidePanel = false + return state + }) + }} + /> +
+ + + {#if promptInvite && !userOnboardResponse} + +
+ No user found +
+ Add a valid email to invite a new user +
+
+
+ {query || ""} + + Add user + +
+
+ {/if} + + {#if !promptInvite} + + {#if filteredInvites?.length} + +
+
Pending invites
+
Access
+
+ {#each filteredInvites as invite} +
+
+
+ {invite.email} +
+
+
+ { + onUpdateUserInvite(invite, e.detail) + }} + on:remove={() => { + onUninviteAppUser(invite) + }} + /> +
+
+ {/each} +
+ {/if} + + {#if $licensing.groupsEnabled && filteredGroups?.length} + +
+
Groups
+
Access
+
+ {#each filteredGroups as group} +
{ + if (selectedGroup != group._id) { + selectedGroup = group._id + } else { + selectedGroup = null + } + }} + on:keydown={() => {}} + > +
+ +
+ {group.name} +
+
+ {`${group.users?.length} user${ + group.users?.length != 1 ? "s" : "" + }`} +
+
+
+ { + onUpdateGroup(group, e.detail) + }} + on:remove={() => { + onUpdateGroup(group) + }} + /> +
+
+ {/each} +
+ {/if} + + {#if filteredUsers?.length} +
+
+
Users
+
Access
+
+ {#each allUsers as user} +
+
+
+ {user.email} +
+
+ {userTitle(user)} +
+
+
+ { + onUpdateUser(user, e.detail) + }} + on:remove={() => { + onUpdateUser(user) + }} + /> +
+
+ {/each} +
+ {/if} +
+ {/if} + + {#if userOnboardResponse?.created} + +
+ User added! +
+ Email invites are not available without SMTP configuration. Here is + the password that has been generated for this user. +
+
+
+ +
+
+ {/if} +
+ + diff --git a/packages/builder/src/pages/builder/app/[application]/_layout.svelte b/packages/builder/src/pages/builder/app/[application]/_layout.svelte index f561bd8ecd..abf70a84c0 100644 --- a/packages/builder/src/pages/builder/app/[application]/_layout.svelte +++ b/packages/builder/src/pages/builder/app/[application]/_layout.svelte @@ -13,15 +13,14 @@ notifications, } from "@budibase/bbui" - import RevertModal from "components/deploy/RevertModal.svelte" - import VersionModal from "components/deploy/VersionModal.svelte" - import DeployNavigation from "components/deploy/DeployNavigation.svelte" + import AppActions from "components/deploy/AppActions.svelte" import { API } from "api" import { isActive, goto, layout, redirect } from "@roxi/routify" import { capitalise } from "helpers" import { onMount, onDestroy } from "svelte" import TourWrap from "components/portal/onboarding/TourWrap.svelte" import TourPopover from "components/portal/onboarding/TourPopover.svelte" + import BuilderSidePanel from "./_components/BuilderSidePanel.svelte" import { TOUR_KEYS, TOURS } from "components/portal/onboarding/tours.js" export let application @@ -116,6 +115,11 @@
{:then _} + + {#if $store.builderSidePanel} + + {/if} +
@@ -181,11 +185,7 @@
-
- -
- - +
@@ -250,10 +250,6 @@ flex-direction: row; justify-content: flex-end; align-items: center; - gap: var(--spacing-xl); - } - - .version { - margin-right: var(--spacing-s); + gap: var(--spacing-l); } diff --git a/packages/builder/src/stores/portal/users.js b/packages/builder/src/stores/portal/users.js index 1510207604..206e14568b 100644 --- a/packages/builder/src/stores/portal/users.js +++ b/packages/builder/src/stores/portal/users.js @@ -26,9 +26,15 @@ export function createUsersStore() { return await API.getUsers() } + // One or more users. + async function onboard(payload) { + return await API.onboardUsers(payload) + } + async function invite(payload) { return API.inviteUsers(payload) } + async function acceptInvite(inviteCode, password, firstName, lastName) { return API.acceptInvite({ inviteCode, @@ -42,6 +48,14 @@ export function createUsersStore() { return API.getUserInvite(inviteCode) } + async function getInvites() { + return API.getUserInvites() + } + + async function updateInvite(invite) { + return API.updateUserInvite(invite) + } + async function create(data) { let mappedUsers = data.users.map(user => { const body = { @@ -106,8 +120,11 @@ export function createUsersStore() { getUserRole, fetch, invite, + onboard, acceptInvite, fetchInvite, + getInvites, + updateInvite, create, save, bulkDelete, diff --git a/packages/frontend-core/src/api/user.js b/packages/frontend-core/src/api/user.js index 9875605ce0..cb8a8f6555 100644 --- a/packages/frontend-core/src/api/user.js +++ b/packages/frontend-core/src/api/user.js @@ -12,8 +12,10 @@ export const buildUserEndpoints = API => ({ * Gets a list of users in the current tenant. * @param {string} page The page to retrieve * @param {string} search The starts with string to search username/email by. + * @param {string} appId Facilitate app/role based user searching + * @param {boolean} paginated Allow the disabling of pagination */ - searchUsers: async ({ page, email, appId } = {}) => { + searchUsers: async ({ paginated, page, email, appId } = {}) => { const opts = {} if (page) { opts.page = page @@ -24,6 +26,9 @@ export const buildUserEndpoints = API => ({ if (appId) { opts.appId = appId } + if (typeof paginated === "boolean") { + opts.paginated = paginated + } return await API.post({ url: `/api/global/users/search`, body: opts, @@ -133,7 +138,7 @@ export const buildUserEndpoints = API => ({ * @param builder whether the user should be a global builder * @param admin whether the user should be a global admin */ - inviteUser: async ({ email, builder, admin }) => { + inviteUser: async ({ email, builder, admin, apps }) => { return await API.post({ url: "/api/global/users/invite", body: { @@ -141,11 +146,43 @@ export const buildUserEndpoints = API => ({ userInfo: { admin: admin ? { global: true } : undefined, builder: builder ? { global: true } : undefined, + apps: apps ? apps : undefined, }, }, }) }, + onboardUsers: async payload => { + return await API.post({ + url: "/api/global/users/onboard", + body: payload.map(invite => { + const { email, admin, builder, apps } = invite + return { + email, + userInfo: { + admin: admin ? { global: true } : undefined, + builder: builder ? { global: true } : undefined, + apps: apps ? apps : undefined, + }, + } + }), + }) + }, + + /** + * Accepts a user invite as a body and will update the associated app roles. + * for an existing invite + * @param invite the invite code sent in the email + */ + updateUserInvite: async invite => { + await API.post({ + url: `/api/global/users/invite/update/${invite.code}`, + body: { + apps: invite.apps, + }, + }) + }, + /** * Retrieves the invitation associated with a provided code. * @param code The unique code for the target invite @@ -156,6 +193,16 @@ export const buildUserEndpoints = API => ({ }) }, + /** + * Retrieves the invitation associated with a provided code. + * @param code The unique code for the target invite + */ + getUserInvites: async () => { + return await API.get({ + url: `/api/global/users/invites`, + }) + }, + /** * Invites multiple users to the current tenant. * @param users An array of users to invite @@ -169,6 +216,7 @@ export const buildUserEndpoints = API => ({ admin: user.admin ? { global: true } : undefined, builder: user.admin || user.builder ? { global: true } : undefined, userGroups: user.groups, + roles: user.apps ? user.apps : undefined, }, })), }) diff --git a/packages/frontend-core/src/fetch/UserFetch.js b/packages/frontend-core/src/fetch/UserFetch.js index 9aeadbc0f5..5372d0ec33 100644 --- a/packages/frontend-core/src/fetch/UserFetch.js +++ b/packages/frontend-core/src/fetch/UserFetch.js @@ -35,6 +35,7 @@ export default class UserFetch extends DataFetch { page: cursor, email: query.email, appId: query.appId, + paginated: query.paginated, }) return { rows: res?.data || [], diff --git a/packages/types/src/api/web/user.ts b/packages/types/src/api/web/user.ts index b2ac6b7804..63d6be6fa0 100644 --- a/packages/types/src/api/web/user.ts +++ b/packages/types/src/api/web/user.ts @@ -50,7 +50,7 @@ export interface SearchUsersRequest { page?: string email?: string appId?: string - userIds?: string[] + paginated?: boolean } export interface CreateAdminUserRequest { diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index e41a280b22..2971011682 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -185,16 +185,28 @@ export const destroy = async (ctx: any) => { } } +export const getAppUsers = async (ctx: any) => { + const body = ctx.request.body as SearchUsersRequest + const users = await userSdk.getUsersByAppAccess(body?.appId) + + ctx.body = { data: users } +} + export const search = async (ctx: any) => { const body = ctx.request.body as SearchUsersRequest - const paginated = await userSdk.paginatedUsers(body) - // user hashed password shouldn't ever be returned - for (let user of paginated.data) { - if (user) { - delete user.password + + if (body.paginated === false) { + await getAppUsers(ctx) + } else { + const paginated = await userSdk.paginatedUsers(body) + // user hashed password shouldn't ever be returned + for (let user of paginated.data) { + if (user) { + delete user.password + } } + ctx.body = paginated } - ctx.body = paginated } // called internally by app server user fetch @@ -242,12 +254,18 @@ export const onboardUsers = async (ctx: any) => { onboardingResponse = await userSdk.bulkCreate(assignUsers, groups) ctx.body = onboardingResponse } else if (emailConfigured) { - onboardingResponse = await inviteMultiple(ctx) + onboardingResponse = await invite(ctx) } else if (!emailConfigured) { const inviteRequest = ctx.request.body as InviteUsersRequest + + let createdPasswords: any = {} + const users: User[] = inviteRequest.map(invite => { let password = Math.random().toString(36).substring(2, 22) + // Temp password to be passed to the user. + createdPasswords[invite.email] = password + return { email: invite.email, password, @@ -259,19 +277,28 @@ export const onboardUsers = async (ctx: any) => { } }) let bulkCreateReponse = await userSdk.bulkCreate(users, []) - onboardingResponse = { + + // Apply temporary credentials + let createWithCredentials = { ...bulkCreateReponse, + successful: bulkCreateReponse?.successful.map(user => { + return { + ...user, + password: createdPasswords[user.email], + } + }), created: true, } - ctx.body = onboardingResponse + + ctx.body = createWithCredentials } else { ctx.throw(400, "User onboarding failed") } } export const invite = async (ctx: any) => { - const request = ctx.request.body as InviteUserRequest - const response = await userSdk.invite([request]) + const request = ctx.request.body as InviteUsersRequest + const response = await userSdk.invite(request) // explicitly throw for single user invite if (response.unsuccessful.length) { diff --git a/packages/worker/src/api/routes/global/users.ts b/packages/worker/src/api/routes/global/users.ts index a73462b235..db182a99c6 100644 --- a/packages/worker/src/api/routes/global/users.ts +++ b/packages/worker/src/api/routes/global/users.ts @@ -38,13 +38,6 @@ function buildInviteMultipleValidation() { )) } -function buildInviteLookupValidation() { - // prettier-ignore - return auth.joiValidator.params(Joi.object({ - code: Joi.string().required() - }).unknown(true)) -} - const createUserAdminOnly = (ctx: any, next: any) => { if (!ctx.request.body._id) { return auth.adminOnly(ctx, next) @@ -88,22 +81,34 @@ router .get("/api/global/roles/:appId") .post( "/api/global/users/invite", - auth.adminOnly, + auth.builderOrAdmin, buildInviteValidation(), controller.invite ) + .post( + "/api/global/users/onboard", + auth.builderOrAdmin, + buildInviteMultipleValidation(), + controller.onboardUsers + ) .post( "/api/global/users/multi/invite", - auth.adminOnly, + auth.builderOrAdmin, buildInviteMultipleValidation(), controller.inviteMultiple ) // non-global endpoints + .get("/api/global/users/invite/:code", controller.checkInvite) + .post( + "/api/global/users/invite/update/:code", + auth.builderOrAdmin, + controller.updateInvite + ) .get( - "/api/global/users/invite/:code", - buildInviteLookupValidation(), - controller.checkInvite + "/api/global/users/invites", + auth.builderOrAdmin, + controller.getUserInvites ) .post( "/api/global/users/invite/accept", diff --git a/packages/worker/src/sdk/users/users.ts b/packages/worker/src/sdk/users/users.ts index 4a72badc10..de1ea27546 100644 --- a/packages/worker/src/sdk/users/users.ts +++ b/packages/worker/src/sdk/users/users.ts @@ -56,11 +56,22 @@ export const countUsersByApp = async (appId: string) => { } } +export const getUsersByAppAccess = async (appId?: string) => { + const opts: any = { + include_docs: true, + limit: 50, + } + let response: User[] = await usersCore.searchGlobalUsersByAppAccess( + appId, + opts + ) + return response +} + export const paginatedUsers = async ({ page, email, appId, - userIds, }: SearchUsersRequest = {}) => { const db = tenancy.getGlobalDB() // get one extra document, to have the next page diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index e9ba06227a..1e0d0beb97 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -130,11 +130,9 @@ export async function checkInviteCode( /** Get all currently available user invitations. - @return {Object[]} A + @return {Object[]} A list of all objects containing invite metadata **/ -export async function getInviteCodes( - tenantIds?: string[] //should default to the current tenant of the user session. -) { +export async function getInviteCodes(tenantIds?: string[]) { const client = await getClient(redis.utils.Databases.INVITATIONS) const invites: any[] = await client.scan() From 24161d12bf2b2f9319a7b3ef183eddaabe726235 Mon Sep 17 00:00:00 2001 From: adrinr Date: Tue, 28 Feb 2023 12:47:28 +0100 Subject: [PATCH 011/193] Type locks --- packages/backend-core/src/redis/redlockImpl.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/backend-core/src/redis/redlockImpl.ts b/packages/backend-core/src/redis/redlockImpl.ts index 136d7f5d33..d3a74bb4db 100644 --- a/packages/backend-core/src/redis/redlockImpl.ts +++ b/packages/backend-core/src/redis/redlockImpl.ts @@ -63,7 +63,10 @@ export const newRedlock = async (opts: Options = {}) => { return new Redlock([client], options) } -export const doWithLock = async (opts: LockOptions, task: any) => { +export const doWithLock = async ( + opts: LockOptions, + task: () => Promise +) => { const redlock = await getClient(opts.type) let lock try { From 66217d6b0830cb8b3c2c00a1c9e54d2fed739bd5 Mon Sep 17 00:00:00 2001 From: adrinr Date: Tue, 28 Feb 2023 12:52:43 +0100 Subject: [PATCH 012/193] Return redlock execution info --- packages/backend-core/src/redis/redlockImpl.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/backend-core/src/redis/redlockImpl.ts b/packages/backend-core/src/redis/redlockImpl.ts index d3a74bb4db..f641bbf36e 100644 --- a/packages/backend-core/src/redis/redlockImpl.ts +++ b/packages/backend-core/src/redis/redlockImpl.ts @@ -63,10 +63,22 @@ export const newRedlock = async (opts: Options = {}) => { return new Redlock([client], options) } +type SuccessfulRedlockExecution = { + executed: true + result: T +} +type UnsuccessfulRedlockExecution = { + executed: false +} + +type RedlockExecution = + | SuccessfulRedlockExecution + | UnsuccessfulRedlockExecution + export const doWithLock = async ( opts: LockOptions, task: () => Promise -) => { +): Promise> => { const redlock = await getClient(opts.type) let lock try { @@ -86,7 +98,7 @@ export const doWithLock = async ( // perform locked task // need to await to ensure completion before unlocking const result = await task() - return result + return { executed: true, result } } catch (e: any) { console.warn("lock error") // lock limit exceeded @@ -95,7 +107,7 @@ export const doWithLock = async ( // don't throw for try-once locks, they will always error // due to retry count (0) exceeded console.warn(e) - return + return { executed: false } } else { console.error(e) throw e From 862ba6ce924a09726c791f451c749196166ad813 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Tue, 28 Feb 2023 12:29:13 +0000 Subject: [PATCH 013/193] Update spacing, borders and sizing --- packages/bbui/src/Form/Core/Picker.svelte | 4 +- packages/bbui/src/Form/Core/Select.svelte | 2 + packages/bbui/src/Form/Select.svelte | 2 + .../src/components/common/RoleSelect.svelte | 4 + .../_components/BuilderSidePanel.svelte | 356 ++++++++++-------- 5 files changed, 202 insertions(+), 166 deletions(-) diff --git a/packages/bbui/src/Form/Core/Picker.svelte b/packages/bbui/src/Form/Core/Picker.svelte index 5cef0f9213..4e7bd7ba78 100644 --- a/packages/bbui/src/Form/Core/Picker.svelte +++ b/packages/bbui/src/Form/Core/Picker.svelte @@ -33,6 +33,8 @@ export let sort = false export let fetchTerm = null export let customPopoverHeight + export let align = "left" + const dispatch = createEventDispatcher() let searchTerm = null @@ -131,7 +133,7 @@ (open = false)} diff --git a/packages/bbui/src/Form/Core/Select.svelte b/packages/bbui/src/Form/Core/Select.svelte index aa9071607e..a1ae2107c8 100644 --- a/packages/bbui/src/Form/Core/Select.svelte +++ b/packages/bbui/src/Form/Core/Select.svelte @@ -18,6 +18,7 @@ export let autoWidth = false export let autocomplete = false export let sort = false + export let align const dispatch = createEventDispatcher() @@ -66,6 +67,7 @@ {fieldColour} {options} {autoWidth} + {align} {getOptionLabel} {getOptionValue} {getOptionIcon} diff --git a/packages/bbui/src/Form/Select.svelte b/packages/bbui/src/Form/Select.svelte index 76fe613c92..44ce51eff2 100644 --- a/packages/bbui/src/Form/Select.svelte +++ b/packages/bbui/src/Form/Select.svelte @@ -22,6 +22,7 @@ export let tooltip = "" export let autocomplete = false export let customPopoverHeight + export let align const dispatch = createEventDispatcher() const onChange = e => { @@ -48,6 +49,7 @@ {placeholder} {autoWidth} {sort} + {align} {getOptionLabel} {getOptionValue} {getOptionIcon} diff --git a/packages/builder/src/components/common/RoleSelect.svelte b/packages/builder/src/components/common/RoleSelect.svelte index 645e82c8ba..f94f048945 100644 --- a/packages/builder/src/components/common/RoleSelect.svelte +++ b/packages/builder/src/components/common/RoleSelect.svelte @@ -11,6 +11,8 @@ export let quiet = false export let allowPublic = true export let allowRemove = false + export let disabled = false + export let align const dispatch = createEventDispatcher() const RemoveID = "remove" @@ -59,6 +61,8 @@ e.detail === "Upload" && fileinput.click()} /> From 8c8dd637e10659388a2c242765e9a429199355ff Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 28 Feb 2023 16:38:11 +0000 Subject: [PATCH 029/193] Enable the feature tour window and extend the invite duration to 1 week --- .../src/components/deploy/AppActions.svelte | 7 +++- .../portal/onboarding/TourWrap.svelte | 9 ++-- .../src/components/portal/onboarding/tours.js | 25 +++++++++-- .../builder/app/[application]/_layout.svelte | 42 ++++++++++++------- packages/worker/src/utilities/redis.ts | 2 +- 5 files changed, 61 insertions(+), 24 deletions(-) diff --git a/packages/builder/src/components/deploy/AppActions.svelte b/packages/builder/src/components/deploy/AppActions.svelte index 582b5ab8f0..daed564204 100644 --- a/packages/builder/src/components/deploy/AppActions.svelte +++ b/packages/builder/src/components/deploy/AppActions.svelte @@ -20,6 +20,7 @@ import { apps } from "stores/portal" import { store } from "builderStore" import TourWrap from "components/portal/onboarding/TourWrap.svelte" + import { TOUR_STEP_KEYS } from "components/portal/onboarding/tours.js" export let application @@ -179,7 +180,11 @@ /> {/if} - + { if (!$store.tourKey) return - currentTour = TOURS[$store.tourKey].find(step => step.id === tourStepKey) + currentTourStep = TOURS[$store.tourKey].find( + step => step.id === tourStepKey + ) + if (!currentTourStep) return - const elem = document.querySelector(currentTour.query) + const elem = document.querySelector(currentTourStep.query) handler = tourHandler(elem, tourStepKey) ready = true }) diff --git a/packages/builder/src/components/portal/onboarding/tours.js b/packages/builder/src/components/portal/onboarding/tours.js index 7975f11bb5..e28c638a4a 100644 --- a/packages/builder/src/components/portal/onboarding/tours.js +++ b/packages/builder/src/components/portal/onboarding/tours.js @@ -65,7 +65,7 @@ const getTours = () => { id: TOUR_STEP_KEYS.BUILDER_USER_MANAGEMENT, title: "Users", query: ".toprightnav #builder-app-users-button", - body: "Choose which users you want to see to have access to your app and control what level of access they have.", + body: "Add users to your app and control what level of access they have.", onLoad: () => { tourEvent(TOUR_STEP_KEYS.BUILDER_USER_MANAGEMENT) }, @@ -107,11 +107,30 @@ const getTours = () => { id: TOUR_STEP_KEYS.FEATURE_USER_MANAGEMENT, title: "Users", query: ".toprightnav #builder-app-users-button", - body: "Choose which users you want to have access to your app and control what level of access they have.", + body: "Add users to your app and control what level of access they have.", onLoad: () => { tourEvent(TOUR_STEP_KEYS.FEATURE_USER_MANAGEMENT) }, - align: "left", + onComplete: async () => { + // Push the onboarding forward + if (get(auth).user) { + await users.save({ + ...get(auth).user, + onboardedAt: new Date().toISOString(), + }) + + // Update the cached user + await auth.getSelf() + + store.update(state => ({ + ...state, + tourNodes: undefined, + tourKey: undefined, + tourKeyStep: undefined, + onboarding: false, + })) + } + }, }, ], } diff --git a/packages/builder/src/pages/builder/app/[application]/_layout.svelte b/packages/builder/src/pages/builder/app/[application]/_layout.svelte index abf70a84c0..a4b4982fca 100644 --- a/packages/builder/src/pages/builder/app/[application]/_layout.svelte +++ b/packages/builder/src/pages/builder/app/[application]/_layout.svelte @@ -68,22 +68,32 @@ } const initTour = async () => { - if ( - !$auth.user?.onboardedAt && - isEnabled(TENANT_FEATURE_FLAGS.ONBOARDING_TOUR) - ) { - // Determine the correct step - const activeNav = $layout.children.find(c => $isActive(c.path)) - const onboardingTour = TOURS[TOUR_KEYS.TOUR_BUILDER_ONBOARDING] - const targetStep = activeNav - ? onboardingTour.find(step => step.route === activeNav?.path) - : null - await store.update(state => ({ - ...state, - onboarding: true, - tourKey: TOUR_KEYS.TOUR_BUILDER_ONBOARDING, - tourStepKey: targetStep?.id, - })) + // Check if onboarding is enabled. + if (isEnabled(TENANT_FEATURE_FLAGS.ONBOARDING_TOUR)) { + if (!$auth.user?.onboardedAt) { + // Determine the correct step + const activeNav = $layout.children.find(c => $isActive(c.path)) + const onboardingTour = TOURS[TOUR_KEYS.TOUR_BUILDER_ONBOARDING] + const targetStep = activeNav + ? onboardingTour.find(step => step.route === activeNav?.path) + : null + await store.update(state => ({ + ...state, + onboarding: true, + tourKey: TOUR_KEYS.TOUR_BUILDER_ONBOARDING, + tourStepKey: targetStep?.id, + })) + } else { + // Feature tour date + const release_date = new Date("2023-03-01T00:00:00.000Z") + const onboarded = new Date($auth.user?.onboardedAt) + if (onboarded < release_date) { + await store.update(state => ({ + ...state, + tourKey: TOUR_KEYS.FEATURE_ONBOARDING, + })) + } + } } } diff --git a/packages/worker/src/utilities/redis.ts b/packages/worker/src/utilities/redis.ts index 1e0d0beb97..ecfc027cad 100644 --- a/packages/worker/src/utilities/redis.ts +++ b/packages/worker/src/utilities/redis.ts @@ -7,7 +7,7 @@ function getExpirySecondsForDB(db: string) { return 3600 case redis.utils.Databases.INVITATIONS: // a day - return 86400 + return 604800 } } From f66fc22f29b8abe2eec46d1cfe330cb7fb194cd2 Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 28 Feb 2023 17:05:11 +0000 Subject: [PATCH 030/193] Updated email utility import --- packages/worker/src/api/controllers/global/users.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index 2971011682..ab43138aa4 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -33,7 +33,7 @@ import { platform, } from "@budibase/backend-core" import { checkAnyUserExists } from "../../../utilities/users" -import { isEmailConfigured } from "src/utilities/email" +import { isEmailConfigured } from "../../../utilities/email" const MAX_USERS_UPLOAD_LIMIT = 1000 From cb39053b12d6370557549905f0817f9f79251ec1 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 28 Feb 2023 18:10:56 +0000 Subject: [PATCH 031/193] Fix for #9778 - there was an issue with operationId in the OpenAPI spec, these need to be unique to be compliant with the spec as brought up in the issue. Also re-writing the spec generation to Typescript to be compliant with how backend code is now written. --- packages/server/package.json | 2 +- .../server/specs/{generate.js => generate.ts} | 16 +- packages/server/specs/openapi.json | 48 +- packages/server/specs/openapi.yaml | 48 +- .../specs/{parameters.js => parameters.ts} | 12 +- .../{application.js => application.ts} | 8 +- .../specs/resources/{index.js => index.ts} | 16 +- .../specs/resources/{misc.js => misc.ts} | 6 +- .../specs/resources/{query.js => query.ts} | 8 +- .../server/specs/resources/{row.js => row.ts} | 7 +- .../specs/resources/{table.js => table.ts} | 10 +- .../specs/resources/{user.js => user.ts} | 6 +- .../server/specs/resources/utils/Resource.js | 26 - .../server/specs/resources/utils/Resource.ts | 39 ++ .../resources/utils/{index.js => index.ts} | 2 +- .../server/specs/{security.js => security.ts} | 2 +- .../src/api/routes/public/applications.ts | 14 +- .../server/src/api/routes/public/queries.ts | 4 +- packages/server/src/api/routes/public/rows.ts | 10 +- .../server/src/api/routes/public/tables.ts | 10 +- .../{compare.spec.js => compare.spec.ts} | 69 ++- .../server/src/api/routes/public/users.ts | 10 +- packages/server/src/definitions/openapi.ts | 512 +++++++++++++++--- 23 files changed, 650 insertions(+), 235 deletions(-) rename packages/server/specs/{generate.js => generate.ts} (87%) rename packages/server/specs/{parameters.js => parameters.ts} (86%) rename packages/server/specs/resources/{application.js => application.ts} (94%) rename packages/server/specs/resources/{index.js => index.ts} (56%) rename packages/server/specs/resources/{misc.js => misc.ts} (96%) rename packages/server/specs/resources/{query.js => query.ts} (96%) rename packages/server/specs/resources/{row.js => row.ts} (94%) rename packages/server/specs/resources/{table.js => table.ts} (97%) rename packages/server/specs/resources/{user.js => user.ts} (96%) delete mode 100644 packages/server/specs/resources/utils/Resource.js create mode 100644 packages/server/specs/resources/utils/Resource.ts rename packages/server/specs/resources/utils/{index.js => index.ts} (79%) rename packages/server/specs/{security.js => security.ts} (87%) rename packages/server/src/api/routes/public/tests/{compare.spec.js => compare.spec.ts} (80%) diff --git a/packages/server/package.json b/packages/server/package.json index 39210f7d4a..40001da373 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -25,7 +25,7 @@ "dev:stack:down": "node scripts/dev/manage.js down", "dev:stack:nuke": "node scripts/dev/manage.js nuke", "dev:builder": "yarn run dev:stack:up && nodemon", - "specs": "node specs/generate.js && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts", + "specs": "ts-node specs/generate.ts && openapi-typescript specs/openapi.yaml --output src/definitions/openapi.ts", "initialise": "node scripts/initialise.js", "env:multi:enable": "node scripts/multiTenancy.js enable", "env:multi:disable": "node scripts/multiTenancy.js disable", diff --git a/packages/server/specs/generate.js b/packages/server/specs/generate.ts similarity index 87% rename from packages/server/specs/generate.js rename to packages/server/specs/generate.ts index f6a055f683..39d8a50ade 100644 --- a/packages/server/specs/generate.js +++ b/packages/server/specs/generate.ts @@ -1,9 +1,9 @@ +import { join } from "path" +import { writeFileSync } from "fs" +import { examples, schemas } from "./resources" +import * as parameters from "./parameters" +import * as security from "./security" const swaggerJsdoc = require("swagger-jsdoc") -const { join } = require("path") -const { writeFileSync } = require("fs") -const { examples, schemas } = require("./resources") -const parameters = require("./parameters") -const security = require("./security") const VARIABLES = {} @@ -60,7 +60,7 @@ const options = { apis: [join(__dirname, "..", "src", "api", "routes", "public", "*.ts")], } -function writeFile(output, filename) { +function writeFile(output: any, filename: string) { try { const path = join(__dirname, filename) let spec = output @@ -79,7 +79,7 @@ function writeFile(output, filename) { } } -function run() { +export function run() { const outputJSON = swaggerJsdoc(options) options.format = ".yaml" const outputYAML = swaggerJsdoc(options) @@ -90,5 +90,3 @@ function run() { if (require.main === module) { run() } - -module.exports = run diff --git a/packages/server/specs/openapi.json b/packages/server/specs/openapi.json index cf4eef75a9..a9959186a8 100644 --- a/packages/server/specs/openapi.json +++ b/packages/server/specs/openapi.json @@ -1829,7 +1829,7 @@ "paths": { "/applications": { "post": { - "operationId": "create", + "operationId": "appCreate", "summary": "Create an application", "tags": [ "applications" @@ -1870,7 +1870,7 @@ }, "/applications/{appId}": { "put": { - "operationId": "update", + "operationId": "appUpdate", "summary": "Update an application", "tags": [ "applications" @@ -1909,7 +1909,7 @@ } }, "delete": { - "operationId": "destroy", + "operationId": "appDestroy", "summary": "Delete an application", "tags": [ "applications" @@ -1938,7 +1938,7 @@ } }, "get": { - "operationId": "getById", + "operationId": "appGetById", "summary": "Retrieve an application", "tags": [ "applications" @@ -1969,7 +1969,7 @@ }, "/applications/{appId}/unpublish": { "post": { - "operationId": "unpublish", + "operationId": "appUnpublish", "summary": "Unpublish an application", "tags": [ "applications" @@ -1988,7 +1988,7 @@ }, "/applications/{appId}/publish": { "post": { - "operationId": "publish", + "operationId": "appPublish", "summary": "Unpublish an application", "tags": [ "applications" @@ -2019,7 +2019,7 @@ }, "/applications/search": { "post": { - "operationId": "search", + "operationId": "appSearch", "summary": "Search for applications", "description": "Based on application properties (currently only name) search for applications.", "tags": [ @@ -2056,7 +2056,7 @@ }, "/queries/{queryId}": { "post": { - "operationId": "execute", + "operationId": "queryExecute", "summary": "Execute a query", "description": "Queries which have been created within a Budibase app can be executed using this,", "tags": [ @@ -2104,7 +2104,7 @@ }, "/queries/search": { "post": { - "operationId": "search", + "operationId": "querySearch", "summary": "Search for queries", "description": "Based on query properties (currently only name) search for queries.", "tags": [ @@ -2146,7 +2146,7 @@ }, "/tables/{tableId}/rows": { "post": { - "operationId": "create", + "operationId": "rowCreate", "summary": "Create a row", "description": "Creates a row within the specified table.", "tags": [ @@ -2196,7 +2196,7 @@ }, "/tables/{tableId}/rows/{rowId}": { "put": { - "operationId": "update", + "operationId": "rowUpdate", "summary": "Update a row", "description": "Updates a row within the specified table.", "tags": [ @@ -2247,7 +2247,7 @@ } }, "delete": { - "operationId": "destroy", + "operationId": "rowDestroy", "summary": "Delete a row", "description": "Deletes a row within the specified table.", "tags": [ @@ -2283,7 +2283,7 @@ } }, "get": { - "operationId": "getById", + "operationId": "rowGetById", "summary": "Retrieve a row", "description": "This gets a single row, it will be enriched with the full related rows, rather than the squashed \"primaryDisplay\" format returned by the search endpoint.", "tags": [ @@ -2321,7 +2321,7 @@ }, "/tables/{tableId}/rows/search": { "post": { - "operationId": "search", + "operationId": "rowSearch", "summary": "Search for rows", "tags": [ "rows" @@ -2365,7 +2365,7 @@ }, "/tables": { "post": { - "operationId": "create", + "operationId": "tableCreate", "summary": "Create a table", "description": "Create a table, this could be internal or external.", "tags": [ @@ -2411,7 +2411,7 @@ }, "/tables/{tableId}": { "put": { - "operationId": "update", + "operationId": "tableUpdate", "summary": "Update a table", "description": "Update a table, this could be internal or external.", "tags": [ @@ -2458,7 +2458,7 @@ } }, "delete": { - "operationId": "destroy", + "operationId": "tableDestroy", "summary": "Delete a table", "description": "Delete a table, this could be internal or external.", "tags": [ @@ -2491,7 +2491,7 @@ } }, "get": { - "operationId": "getById", + "operationId": "tableGetById", "summary": "Retrieve a table", "description": "Lookup a table, this could be internal or external.", "tags": [ @@ -2526,7 +2526,7 @@ }, "/tables/search": { "post": { - "operationId": "search", + "operationId": "tableSearch", "summary": "Search for tables", "description": "Based on table properties (currently only name) search for tables. This could be an internal or an external table.", "tags": [ @@ -2568,7 +2568,7 @@ }, "/users": { "post": { - "operationId": "create", + "operationId": "userCreate", "summary": "Create a user", "tags": [ "users" @@ -2604,7 +2604,7 @@ }, "/users/{userId}": { "put": { - "operationId": "update", + "operationId": "userUpdate", "summary": "Update a user", "tags": [ "users" @@ -2643,7 +2643,7 @@ } }, "delete": { - "operationId": "destroy", + "operationId": "userDestroy", "summary": "Delete a user", "tags": [ "users" @@ -2672,7 +2672,7 @@ } }, "get": { - "operationId": "getById", + "operationId": "userGetById", "summary": "Retrieve a user", "tags": [ "users" @@ -2703,7 +2703,7 @@ }, "/users/search": { "post": { - "operationId": "search", + "operationId": "userSearch", "summary": "Search for users", "description": "Based on user properties (currently only name) search for users.", "tags": [ diff --git a/packages/server/specs/openapi.yaml b/packages/server/specs/openapi.yaml index 414efe7adb..a3007b9639 100644 --- a/packages/server/specs/openapi.yaml +++ b/packages/server/specs/openapi.yaml @@ -1397,7 +1397,7 @@ security: paths: /applications: post: - operationId: create + operationId: appCreate summary: Create an application tags: - applications @@ -1421,7 +1421,7 @@ paths: $ref: "#/components/examples/application" "/applications/{appId}": put: - operationId: update + operationId: appUpdate summary: Update an application tags: - applications @@ -1444,7 +1444,7 @@ paths: application: $ref: "#/components/examples/application" delete: - operationId: destroy + operationId: appDestroy summary: Delete an application tags: - applications @@ -1461,7 +1461,7 @@ paths: application: $ref: "#/components/examples/application" get: - operationId: getById + operationId: appGetById summary: Retrieve an application tags: - applications @@ -1479,7 +1479,7 @@ paths: $ref: "#/components/examples/application" "/applications/{appId}/unpublish": post: - operationId: unpublish + operationId: appUnpublish summary: Unpublish an application tags: - applications @@ -1490,7 +1490,7 @@ paths: description: The app was published successfully. "/applications/{appId}/publish": post: - operationId: publish + operationId: appPublish summary: Unpublish an application tags: - applications @@ -1508,7 +1508,7 @@ paths: $ref: "#/components/examples/deploymentOutput" /applications/search: post: - operationId: search + operationId: appSearch summary: Search for applications description: Based on application properties (currently only name) search for applications. @@ -1533,7 +1533,7 @@ paths: $ref: "#/components/examples/applications" "/queries/{queryId}": post: - operationId: execute + operationId: queryExecute summary: Execute a query description: Queries which have been created within a Budibase app can be executed using this, @@ -1562,7 +1562,7 @@ paths: $ref: "#/components/examples/sqlResponse" /queries/search: post: - operationId: search + operationId: querySearch summary: Search for queries description: Based on query properties (currently only name) search for queries. tags: @@ -1587,7 +1587,7 @@ paths: $ref: "#/components/examples/queries" "/tables/{tableId}/rows": post: - operationId: create + operationId: rowCreate summary: Create a row description: Creates a row within the specified table. tags: @@ -1618,7 +1618,7 @@ paths: $ref: "#/components/examples/row" "/tables/{tableId}/rows/{rowId}": put: - operationId: update + operationId: rowUpdate summary: Update a row description: Updates a row within the specified table. tags: @@ -1648,7 +1648,7 @@ paths: row: $ref: "#/components/examples/row" delete: - operationId: destroy + operationId: rowDestroy summary: Delete a row description: Deletes a row within the specified table. tags: @@ -1669,7 +1669,7 @@ paths: row: $ref: "#/components/examples/row" get: - operationId: getById + operationId: rowGetById summary: Retrieve a row description: This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the @@ -1692,7 +1692,7 @@ paths: $ref: "#/components/examples/enrichedRow" "/tables/{tableId}/rows/search": post: - operationId: search + operationId: rowSearch summary: Search for rows tags: - rows @@ -1718,7 +1718,7 @@ paths: $ref: "#/components/examples/rows" /tables: post: - operationId: create + operationId: tableCreate summary: Create a table description: Create a table, this could be internal or external. tags: @@ -1746,7 +1746,7 @@ paths: $ref: "#/components/examples/table" "/tables/{tableId}": put: - operationId: update + operationId: tableUpdate summary: Update a table description: Update a table, this could be internal or external. tags: @@ -1773,7 +1773,7 @@ paths: table: $ref: "#/components/examples/table" delete: - operationId: destroy + operationId: tableDestroy summary: Delete a table description: Delete a table, this could be internal or external. tags: @@ -1792,7 +1792,7 @@ paths: table: $ref: "#/components/examples/table" get: - operationId: getById + operationId: tableGetById summary: Retrieve a table description: Lookup a table, this could be internal or external. tags: @@ -1812,7 +1812,7 @@ paths: $ref: "#/components/examples/table" /tables/search: post: - operationId: search + operationId: tableSearch summary: Search for tables description: Based on table properties (currently only name) search for tables. This could be an internal or an external table. @@ -1838,7 +1838,7 @@ paths: $ref: "#/components/examples/tables" /users: post: - operationId: create + operationId: userCreate summary: Create a user tags: - users @@ -1860,7 +1860,7 @@ paths: $ref: "#/components/examples/user" "/users/{userId}": put: - operationId: update + operationId: userUpdate summary: Update a user tags: - users @@ -1883,7 +1883,7 @@ paths: user: $ref: "#/components/examples/user" delete: - operationId: destroy + operationId: userDestroy summary: Delete a user tags: - users @@ -1900,7 +1900,7 @@ paths: user: $ref: "#/components/examples/user" get: - operationId: getById + operationId: userGetById summary: Retrieve a user tags: - users @@ -1918,7 +1918,7 @@ paths: $ref: "#/components/examples/user" /users/search: post: - operationId: search + operationId: userSearch summary: Search for users description: Based on user properties (currently only name) search for users. tags: diff --git a/packages/server/specs/parameters.js b/packages/server/specs/parameters.ts similarity index 86% rename from packages/server/specs/parameters.js rename to packages/server/specs/parameters.ts index ca7a0a9a27..a928026bb1 100644 --- a/packages/server/specs/parameters.js +++ b/packages/server/specs/parameters.ts @@ -1,4 +1,4 @@ -exports.tableId = { +export const tableId = { in: "path", name: "tableId", required: true, @@ -8,7 +8,7 @@ exports.tableId = { }, } -exports.rowId = { +export const rowId = { in: "path", name: "rowId", required: true, @@ -18,7 +18,7 @@ exports.rowId = { }, } -exports.appId = { +export const appId = { in: "header", name: "x-budibase-app-id", required: true, @@ -28,7 +28,7 @@ exports.appId = { }, } -exports.appIdUrl = { +export const appIdUrl = { in: "path", name: "appId", required: true, @@ -38,7 +38,7 @@ exports.appIdUrl = { }, } -exports.queryId = { +export const queryId = { in: "path", name: "queryId", required: true, @@ -48,7 +48,7 @@ exports.queryId = { }, } -exports.userId = { +export const userId = { in: "path", name: "userId", required: true, diff --git a/packages/server/specs/resources/application.js b/packages/server/specs/resources/application.ts similarity index 94% rename from packages/server/specs/resources/application.js rename to packages/server/specs/resources/application.ts index 6e73817898..aa037da154 100644 --- a/packages/server/specs/resources/application.js +++ b/packages/server/specs/resources/application.ts @@ -1,6 +1,6 @@ -const userResource = require("./user") -const { object } = require("./utils") -const Resource = require("./utils/Resource") +import userResource from "./user" +import { object } from "./utils" +import Resource from "./utils/Resource" const application = { _id: "app_metadata", @@ -96,7 +96,7 @@ const deploymentOutputSchema = object({ }, }) -module.exports = new Resource() +export default new Resource() .setExamples({ application: { value: { diff --git a/packages/server/specs/resources/index.js b/packages/server/specs/resources/index.ts similarity index 56% rename from packages/server/specs/resources/index.js rename to packages/server/specs/resources/index.ts index 67421fa494..f1729f4541 100644 --- a/packages/server/specs/resources/index.js +++ b/packages/server/specs/resources/index.ts @@ -1,11 +1,11 @@ -const application = require("./application") -const row = require("./row") -const table = require("./table") -const query = require("./query") -const user = require("./user") -const misc = require("./misc") +import application from "./application" +import row from "./row" +import table from "./table" +import query from "./query" +import user from "./user" +import misc from "./misc" -exports.examples = { +export const examples = { ...application.getExamples(), ...row.getExamples(), ...table.getExamples(), @@ -14,7 +14,7 @@ exports.examples = { ...misc.getExamples(), } -exports.schemas = { +export const schemas = { ...application.getSchemas(), ...row.getSchemas(), ...table.getSchemas(), diff --git a/packages/server/specs/resources/misc.js b/packages/server/specs/resources/misc.ts similarity index 96% rename from packages/server/specs/resources/misc.js rename to packages/server/specs/resources/misc.ts index 32a81da9ec..16cb831c86 100644 --- a/packages/server/specs/resources/misc.js +++ b/packages/server/specs/resources/misc.ts @@ -1,7 +1,7 @@ -const { object } = require("./utils") -const Resource = require("./utils/Resource") +import { object } from "./utils" +import Resource from "./utils/Resource" -module.exports = new Resource().setSchemas({ +export default new Resource().setSchemas({ rowSearch: object( { query: { diff --git a/packages/server/specs/resources/query.js b/packages/server/specs/resources/query.ts similarity index 96% rename from packages/server/specs/resources/query.js rename to packages/server/specs/resources/query.ts index 1442e46a04..1db80e6011 100644 --- a/packages/server/specs/resources/query.js +++ b/packages/server/specs/resources/query.ts @@ -1,6 +1,6 @@ -const Resource = require("./utils/Resource") -const { object } = require("./utils") -const { BaseQueryVerbs } = require("../../src/constants") +import Resource from "./utils/Resource" +import { object } from "./utils" +import { BaseQueryVerbs } from "../../src/constants" const query = { _id: "query_datasource_plus_4d8be0c506b9465daf4bf84d890fdab6_454854487c574d45bc4029b1e153219e", @@ -189,7 +189,7 @@ const executeQueryOutputSchema = object( { required: ["data"] } ) -module.exports = new Resource() +export default new Resource() .setExamples({ query: { value: { diff --git a/packages/server/specs/resources/row.js b/packages/server/specs/resources/row.ts similarity index 94% rename from packages/server/specs/resources/row.js rename to packages/server/specs/resources/row.ts index 4e6359a029..aeb66b8e46 100644 --- a/packages/server/specs/resources/row.js +++ b/packages/server/specs/resources/row.ts @@ -1,5 +1,5 @@ -const { object } = require("./utils") -const Resource = require("./utils/Resource") +import { object } from "./utils" +import Resource from "./utils/Resource" const baseRow = { _id: "ro_ta_5b1649e42a5b41dea4ef7742a36a7a70_e6dc7e38cf1343b2b56760265201cda4", @@ -56,7 +56,6 @@ const rowSchema = { const rowOutputSchema = { ...rowSchema, properties: { - ...rowSchema.properties, _id: { description: "The ID of the row.", type: "string", @@ -93,7 +92,7 @@ const searchOutputSchema = { }, } -module.exports = new Resource() +export default new Resource() .setExamples({ inputRow: { value: inputRow, diff --git a/packages/server/specs/resources/table.js b/packages/server/specs/resources/table.ts similarity index 97% rename from packages/server/specs/resources/table.js rename to packages/server/specs/resources/table.ts index 523a3a9dfd..0fd063beb7 100644 --- a/packages/server/specs/resources/table.js +++ b/packages/server/specs/resources/table.ts @@ -1,10 +1,10 @@ -const { +import { FieldTypes, RelationshipTypes, FormulaTypes, -} = require("../../src/constants") -const { object } = require("./utils") -const Resource = require("./utils/Resource") +} from "../../src/constants" +import { object } from "./utils" +import Resource from "./utils/Resource" const table = { _id: "ta_5b1649e42a5b41dea4ef7742a36a7a70", @@ -170,7 +170,7 @@ const tableOutputSchema = { required: [...tableSchema.required, "_id"], } -module.exports = new Resource() +export default new Resource() .setExamples({ table: { value: { diff --git a/packages/server/specs/resources/user.js b/packages/server/specs/resources/user.ts similarity index 96% rename from packages/server/specs/resources/user.js rename to packages/server/specs/resources/user.ts index 8fb505dfb5..a7b9f1ddb9 100644 --- a/packages/server/specs/resources/user.js +++ b/packages/server/specs/resources/user.ts @@ -1,5 +1,5 @@ -const { object } = require("./utils") -const Resource = require("./utils/Resource") +import { object } from "./utils" +import Resource from "./utils/Resource" const user = { _id: "us_693a73206518477283a8d5ae31103252", @@ -105,7 +105,7 @@ const userOutputSchema = { required: [...userSchema.required, "_id"], } -module.exports = new Resource() +export default new Resource() .setExamples({ user: { value: { diff --git a/packages/server/specs/resources/utils/Resource.js b/packages/server/specs/resources/utils/Resource.js deleted file mode 100644 index 69ed7001a6..0000000000 --- a/packages/server/specs/resources/utils/Resource.js +++ /dev/null @@ -1,26 +0,0 @@ -class Resource { - constructor() { - this.examples = {} - this.schemas = {} - } - - setExamples(examples) { - this.examples = examples - return this - } - - setSchemas(schemas) { - this.schemas = schemas - return this - } - - getExamples() { - return this.examples - } - - getSchemas() { - return this.schemas - } -} - -module.exports = Resource diff --git a/packages/server/specs/resources/utils/Resource.ts b/packages/server/specs/resources/utils/Resource.ts new file mode 100644 index 0000000000..3b9065db82 --- /dev/null +++ b/packages/server/specs/resources/utils/Resource.ts @@ -0,0 +1,39 @@ +type Example = { + [key: string]: { + [key: string]: any + } +} + +type Schema = { + [key: string]: { + [key: string]: any + } +} + +export default class Resource { + examples: Example + schemas: Schema + + constructor() { + this.examples = {} + this.schemas = {} + } + + setExamples(examples: Example) { + this.examples = examples + return this + } + + setSchemas(schemas: Schema) { + this.schemas = schemas + return this + } + + getExamples() { + return this.examples + } + + getSchemas() { + return this.schemas + } +} diff --git a/packages/server/specs/resources/utils/index.js b/packages/server/specs/resources/utils/index.ts similarity index 79% rename from packages/server/specs/resources/utils/index.js rename to packages/server/specs/resources/utils/index.ts index 9bd0ecc6cf..6791fb06d7 100644 --- a/packages/server/specs/resources/utils/index.js +++ b/packages/server/specs/resources/utils/index.ts @@ -1,4 +1,4 @@ -exports.object = (props, opts) => { +export const object = (props: any, opts?: any) => { const base = { type: "object", properties: props, diff --git a/packages/server/specs/security.js b/packages/server/specs/security.ts similarity index 87% rename from packages/server/specs/security.js rename to packages/server/specs/security.ts index cbdeb40c63..e431801a07 100644 --- a/packages/server/specs/security.js +++ b/packages/server/specs/security.ts @@ -1,4 +1,4 @@ -exports.ApiKeyAuth = { +export const ApiKeyAuth = { type: "apiKey", in: "header", name: "x-budibase-api-key", diff --git a/packages/server/src/api/routes/public/applications.ts b/packages/server/src/api/routes/public/applications.ts index 9d6c380e60..088d974e6c 100644 --- a/packages/server/src/api/routes/public/applications.ts +++ b/packages/server/src/api/routes/public/applications.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /applications: * post: - * operationId: create + * operationId: appCreate * summary: Create an application * tags: * - applications @@ -42,7 +42,7 @@ write.push( * @openapi * /applications/{appId}: * put: - * operationId: update + * operationId: appUpdate * summary: Update an application * tags: * - applications @@ -75,7 +75,7 @@ write.push( * @openapi * /applications/{appId}: * delete: - * operationId: destroy + * operationId: appDestroy * summary: Delete an application * tags: * - applications @@ -98,7 +98,7 @@ write.push(new Endpoint("delete", "/applications/:appId", controller.destroy)) * @openapi * /applications/{appId}/unpublish: * post: - * operationId: unpublish + * operationId: appUnpublish * summary: Unpublish an application * tags: * - applications @@ -116,7 +116,7 @@ write.push( * @openapi * /applications/{appId}/publish: * post: - * operationId: publish + * operationId: appPublish * summary: Unpublish an application * tags: * - applications @@ -141,7 +141,7 @@ write.push( * @openapi * /applications/{appId}: * get: - * operationId: getById + * operationId: appGetById * summary: Retrieve an application * tags: * - applications @@ -164,7 +164,7 @@ read.push(new Endpoint("get", "/applications/:appId", controller.read)) * @openapi * /applications/search: * post: - * operationId: search + * operationId: appSearch * summary: Search for applications * description: Based on application properties (currently only name) search for applications. * tags: diff --git a/packages/server/src/api/routes/public/queries.ts b/packages/server/src/api/routes/public/queries.ts index dc18fb91ac..854db3c964 100644 --- a/packages/server/src/api/routes/public/queries.ts +++ b/packages/server/src/api/routes/public/queries.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /queries/{queryId}: * post: - * operationId: execute + * operationId: queryExecute * summary: Execute a query * description: Queries which have been created within a Budibase app can be executed using this, * tags: @@ -43,7 +43,7 @@ write.push(new Endpoint("post", "/queries/:queryId", controller.execute)) * @openapi * /queries/search: * post: - * operationId: search + * operationId: querySearch * summary: Search for queries * description: Based on query properties (currently only name) search for queries. * tags: diff --git a/packages/server/src/api/routes/public/rows.ts b/packages/server/src/api/routes/public/rows.ts index 9109ae76b8..80ad6d6434 100644 --- a/packages/server/src/api/routes/public/rows.ts +++ b/packages/server/src/api/routes/public/rows.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /tables/{tableId}/rows: * post: - * operationId: create + * operationId: rowCreate * summary: Create a row * description: Creates a row within the specified table. * tags: @@ -44,7 +44,7 @@ write.push(new Endpoint("post", "/tables/:tableId/rows", controller.create)) * @openapi * /tables/{tableId}/rows/{rowId}: * put: - * operationId: update + * operationId: rowUpdate * summary: Update a row * description: Updates a row within the specified table. * tags: @@ -81,7 +81,7 @@ write.push( * @openapi * /tables/{tableId}/rows/{rowId}: * delete: - * operationId: destroy + * operationId: rowDestroy * summary: Delete a row * description: Deletes a row within the specified table. * tags: @@ -109,7 +109,7 @@ write.push( * @openapi * /tables/{tableId}/rows/{rowId}: * get: - * operationId: getById + * operationId: rowGetById * summary: Retrieve a row * description: This gets a single row, it will be enriched with the full related rows, rather than * the squashed "primaryDisplay" format returned by the search endpoint. @@ -136,7 +136,7 @@ read.push(new Endpoint("get", "/tables/:tableId/rows/:rowId", controller.read)) * @openapi * /tables/{tableId}/rows/search: * post: - * operationId: search + * operationId: rowSearch * summary: Search for rows * tags: * - rows diff --git a/packages/server/src/api/routes/public/tables.ts b/packages/server/src/api/routes/public/tables.ts index 74cd8ca3cf..f8d62c4a37 100644 --- a/packages/server/src/api/routes/public/tables.ts +++ b/packages/server/src/api/routes/public/tables.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /tables: * post: - * operationId: create + * operationId: tableCreate * summary: Create a table * description: Create a table, this could be internal or external. * tags: @@ -46,7 +46,7 @@ write.push( * @openapi * /tables/{tableId}: * put: - * operationId: update + * operationId: tableUpdate * summary: Update a table * description: Update a table, this could be internal or external. * tags: @@ -83,7 +83,7 @@ write.push( * @openapi * /tables/{tableId}: * delete: - * operationId: destroy + * operationId: tableDestroy * summary: Delete a table * description: Delete a table, this could be internal or external. * tags: @@ -108,7 +108,7 @@ write.push(new Endpoint("delete", "/tables/:tableId", controller.destroy)) * @openapi * /tables/{tableId}: * get: - * operationId: getById + * operationId: tableGetById * summary: Retrieve a table * description: Lookup a table, this could be internal or external. * tags: @@ -133,7 +133,7 @@ read.push(new Endpoint("get", "/tables/:tableId", controller.read)) * @openapi * /tables/search: * post: - * operationId: search + * operationId: tableSearch * summary: Search for tables * description: Based on table properties (currently only name) search for tables. This could be * an internal or an external table. diff --git a/packages/server/src/api/routes/public/tests/compare.spec.js b/packages/server/src/api/routes/public/tests/compare.spec.ts similarity index 80% rename from packages/server/src/api/routes/public/tests/compare.spec.js rename to packages/server/src/api/routes/public/tests/compare.spec.ts index 36693a1098..f9616b06e1 100644 --- a/packages/server/src/api/routes/public/tests/compare.spec.js +++ b/packages/server/src/api/routes/public/tests/compare.spec.ts @@ -1,13 +1,14 @@ -const jestOpenAPI = require("jest-openapi").default -const generateSchema = require("../../../../../specs/generate") -const setup = require("../../tests/utilities") -const { generateMakeRequest } = require("./utils") +import jestOpenAPI from "jest-openapi" +import { run as generateSchema } from "../../../../../specs/generate" +import * as setup from "../../tests/utilities" +import { generateMakeRequest } from "./utils" +import { Table, App, Row, User } from "@budibase/types" const yamlPath = generateSchema() -jestOpenAPI(yamlPath) +jestOpenAPI(yamlPath!) let config = setup.getConfig() -let apiKey, table, app, makeRequest +let apiKey: string, table: Table, app: App, makeRequest: any beforeAll(async () => { app = await config.init() @@ -25,19 +26,29 @@ describe("check the applications endpoints", () => { }) it("should allow creating an application", async () => { - const res = await makeRequest("post", "/applications", { - name: "new App" - }, null) + const res = await makeRequest( + "post", + "/applications", + { + name: "new App", + }, + null + ) expect(res).toSatisfyApiSpec() }) it("should allow updating an application", async () => { const app = config.getApp() const appId = config.getAppId() - const res = await makeRequest("put", `/applications/${appId}`, { - ...app, - name: "updated app name", - }, appId) + const res = await makeRequest( + "put", + `/applications/${appId}`, + { + ...app, + name: "updated app name", + }, + appId + ) expect(res).toSatisfyApiSpec() }) @@ -47,7 +58,10 @@ describe("check the applications endpoints", () => { }) it("should allow deleting an application", async () => { - const res = await makeRequest("delete", `/applications/${config.getAppId()}`) + const res = await makeRequest( + "delete", + `/applications/${config.getAppId()}` + ) expect(res).toSatisfyApiSpec() }) }) @@ -68,8 +82,8 @@ describe("check the tables endpoints", () => { column1: { type: "string", constraints: {}, - } - } + }, + }, }) expect(res).toSatisfyApiSpec() }) @@ -92,12 +106,11 @@ describe("check the tables endpoints", () => { }) describe("check the rows endpoints", () => { - let row + let row: Row it("should allow retrieving rows through search", async () => { table = await config.updateTable() const res = await makeRequest("post", `/tables/${table._id}/rows/search`, { - query: { - }, + query: {}, }) expect(res).toSatisfyApiSpec() }) @@ -111,9 +124,13 @@ describe("check the rows endpoints", () => { }) it("should allow updating a row", async () => { - const res = await makeRequest("put", `/tables/${table._id}/rows/${row._id}`, { - name: "test row updated", - }) + const res = await makeRequest( + "put", + `/tables/${table._id}/rows/${row._id}`, + { + name: "test row updated", + } + ) expect(res).toSatisfyApiSpec() }) @@ -123,13 +140,16 @@ describe("check the rows endpoints", () => { }) it("should allow deleting a row", async () => { - const res = await makeRequest("delete", `/tables/${table._id}/rows/${row._id}`) + const res = await makeRequest( + "delete", + `/tables/${table._id}/rows/${row._id}` + ) expect(res).toSatisfyApiSpec() }) }) describe("check the users endpoints", () => { - let user + let user: User it("should allow retrieving users through search", async () => { user = await config.createUser() const res = await makeRequest("post", "/users/search") @@ -163,4 +183,3 @@ describe("check the queries endpoints", () => { expect(res).toSatisfyApiSpec() }) }) - diff --git a/packages/server/src/api/routes/public/users.ts b/packages/server/src/api/routes/public/users.ts index 67b73f6cbe..0787dfa3dc 100644 --- a/packages/server/src/api/routes/public/users.ts +++ b/packages/server/src/api/routes/public/users.ts @@ -9,7 +9,7 @@ const read = [], * @openapi * /users: * post: - * operationId: create + * operationId: userCreate * summary: Create a user * tags: * - users @@ -36,7 +36,7 @@ write.push(new Endpoint("post", "/users", controller.create)) * @openapi * /users/{userId}: * put: - * operationId: update + * operationId: userUpdate * summary: Update a user * tags: * - users @@ -65,7 +65,7 @@ write.push(new Endpoint("put", "/users/:userId", controller.update)) * @openapi * /users/{userId}: * delete: - * operationId: destroy + * operationId: userDestroy * summary: Delete a user * tags: * - users @@ -88,7 +88,7 @@ write.push(new Endpoint("delete", "/users/:userId", controller.destroy)) * @openapi * /users/{userId}: * get: - * operationId: getById + * operationId: userGetById * summary: Retrieve a user * tags: * - users @@ -111,7 +111,7 @@ read.push(new Endpoint("get", "/users/:userId", controller.read)) * @openapi * /users/search: * post: - * operationId: search + * operationId: userSearch * summary: Search for users * description: Based on user properties (currently only name) search for users. * tags: diff --git a/packages/server/src/definitions/openapi.ts b/packages/server/src/definitions/openapi.ts index 7c02aac060..8c44131e96 100644 --- a/packages/server/src/definitions/openapi.ts +++ b/packages/server/src/definitions/openapi.ts @@ -5,67 +5,73 @@ export interface paths { "/applications": { - post: operations["create"]; + post: operations["appCreate"]; }; "/applications/{appId}": { - get: operations["getById"]; - put: operations["update"]; - delete: operations["destroy"]; + get: operations["appGetById"]; + put: operations["appUpdate"]; + delete: operations["appDestroy"]; + }; + "/applications/{appId}/unpublish": { + post: operations["appUnpublish"]; + }; + "/applications/{appId}/publish": { + post: operations["appPublish"]; }; "/applications/search": { /** Based on application properties (currently only name) search for applications. */ - post: operations["search"]; + post: operations["appSearch"]; }; "/queries/{queryId}": { /** Queries which have been created within a Budibase app can be executed using this, */ - post: operations["execute"]; + post: operations["queryExecute"]; }; "/queries/search": { /** Based on query properties (currently only name) search for queries. */ - post: operations["search"]; + post: operations["querySearch"]; }; "/tables/{tableId}/rows": { /** Creates a row within the specified table. */ - post: operations["create"]; + post: operations["rowCreate"]; }; "/tables/{tableId}/rows/{rowId}": { /** This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. */ - get: operations["getById"]; + get: operations["rowGetById"]; /** Updates a row within the specified table. */ - put: operations["update"]; + put: operations["rowUpdate"]; /** Deletes a row within the specified table. */ - delete: operations["destroy"]; + delete: operations["rowDestroy"]; }; "/tables/{tableId}/rows/search": { - post: operations["search"]; + post: operations["rowSearch"]; }; "/tables": { /** Create a table, this could be internal or external. */ - post: operations["create"]; + post: operations["tableCreate"]; }; "/tables/{tableId}": { /** Lookup a table, this could be internal or external. */ - get: operations["getById"]; + get: operations["tableGetById"]; /** Update a table, this could be internal or external. */ - put: operations["update"]; + put: operations["tableUpdate"]; /** Delete a table, this could be internal or external. */ - delete: operations["destroy"]; + delete: operations["tableDestroy"]; }; "/tables/search": { /** Based on table properties (currently only name) search for tables. This could be an internal or an external table. */ - post: operations["search"]; + post: operations["tableSearch"]; }; "/users": { - post: operations["create"]; + post: operations["userCreate"]; }; "/users/{userId}": { - get: operations["getById"]; - put: operations["update"]; - delete: operations["destroy"]; + get: operations["userGetById"]; + put: operations["userUpdate"]; + delete: operations["userDestroy"]; }; "/users/search": { /** Based on user properties (currently only name) search for users. */ - post: operations["search"]; + post: operations["userSearch"]; }; } @@ -102,16 +108,6 @@ export interface components { lockedBy?: { [key: string]: unknown }; }; }; - deploymentOutput: { - data: { - /** @description The ID of the deployment. */ - _id: string; - /** @description The status of the deployment. */ - status: "SUCCESS" | "FAILURE"; - /** @description The URL by which the published app is accessed. */ - appUrl?: string; - } - }; applicationSearch: { data: { /** @description The name of the app. */ @@ -137,6 +133,19 @@ export interface components { lockedBy?: { [key: string]: unknown }; }[]; }; + deploymentOutput: { + data: { + /** @description The ID of the app. */ + _id: string; + /** + * @description Status of the deployment, whether it succeeded or failed + * @enum {string} + */ + status: "SUCCESS" | "FAILURE"; + /** @description The URL of the published app */ + appUrl: string; + }; + }; /** @description The row to be created/updated, based on the table schema. */ row: { [key: string]: unknown }; searchOutput: { @@ -231,7 +240,6 @@ export interface components { */ type?: | "string" - | "barcodeqr" | "longform" | "options" | "number" @@ -243,7 +251,8 @@ export interface components { | "formula" | "auto" | "json" - | "internal"; + | "internal" + | "barcodeqr"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ @@ -337,7 +346,6 @@ export interface components { */ type?: | "string" - | "barcodeqr" | "longform" | "options" | "number" @@ -349,7 +357,8 @@ export interface components { | "formula" | "auto" | "json" - | "internal"; + | "internal" + | "barcodeqr"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ @@ -445,7 +454,6 @@ export interface components { */ type?: | "string" - | "barcodeqr" | "longform" | "options" | "number" @@ -457,7 +465,8 @@ export interface components { | "formula" | "auto" | "json" - | "internal"; + | "internal" + | "barcodeqr"; /** @description A constraint can be applied to the column which will be validated against when a row is saved. */ constraints?: { /** @enum {string} */ @@ -717,81 +726,115 @@ export interface components { } export interface operations { - create: { + appCreate: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; responses: { - /** Returns the created user. */ + /** Returns the created application. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; + "application/json": components["schemas"]["applicationOutput"]; }; }; }; requestBody: { content: { - "application/json": components["schemas"]["user"]; + "application/json": components["schemas"]["application"]; }; }; }; - getById: { + appGetById: { parameters: { path: { - /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"]; + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"]; }; }; responses: { - /** Returns the retrieved user. */ + /** Returns the retrieved application. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; + "application/json": components["schemas"]["applicationOutput"]; }; }; }; }; - update: { + appUpdate: { parameters: { path: { - /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"]; + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"]; }; }; responses: { - /** Returns the updated user. */ + /** Returns the updated application. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; + "application/json": components["schemas"]["applicationOutput"]; }; }; }; requestBody: { content: { - "application/json": components["schemas"]["user"]; + "application/json": components["schemas"]["application"]; }; }; }; - destroy: { + appDestroy: { parameters: { path: { - /** The ID of the user which this request is targeting. */ - userId: components["parameters"]["userId"]; + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"]; }; }; responses: { - /** Returns the deleted user. */ + /** Returns the deleted application. */ 200: { content: { - "application/json": components["schemas"]["userOutput"]; + "application/json": components["schemas"]["applicationOutput"]; }; }; }; }; - /** Based on user properties (currently only name) search for users. */ - search: { + appUnpublish: { + parameters: { + path: { + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"]; + }; + }; responses: { - /** Returns the found users based on search parameters. */ + /** The app was published successfully. */ + 204: never; + }; + }; + appPublish: { + parameters: { + path: { + /** The ID of the app which this request is targeting. */ + appId: components["parameters"]["appIdUrl"]; + }; + }; + responses: { + /** Returns the deployment object. */ 200: { content: { - "application/json": components["schemas"]["userSearch"]; + "application/json": components["schemas"]["deploymentOutput"]; + }; + }; + }; + }; + /** Based on application properties (currently only name) search for applications. */ + appSearch: { + responses: { + /** Returns the applications that were found based on the search parameters. */ + 200: { + content: { + "application/json": components["schemas"]["applicationSearch"]; }; }; }; @@ -802,7 +845,7 @@ export interface operations { }; }; /** Queries which have been created within a Budibase app can be executed using this, */ - execute: { + queryExecute: { parameters: { path: { /** The ID of the query which this request is targeting. */ @@ -827,6 +870,349 @@ export interface operations { }; }; }; + /** Based on query properties (currently only name) search for queries. */ + querySearch: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the queries found based on the search parameters. */ + 200: { + content: { + "application/json": components["schemas"]["querySearch"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; + /** Creates a row within the specified table. */ + rowCreate: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the created row, including the ID which has been generated for it. This can be found in the Budibase portal, viewed under the developer information. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["row"]; + }; + }; + }; + /** This gets a single row, it will be enriched with the full related rows, rather than the squashed "primaryDisplay" format returned by the search endpoint. */ + rowGetById: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + /** The ID of the row which this request is targeting. */ + rowId: components["parameters"]["rowId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the retrieved row. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; + }; + /** Updates a row within the specified table. */ + rowUpdate: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + /** The ID of the row which this request is targeting. */ + rowId: components["parameters"]["rowId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the created row, including the ID which has been generated for it. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["row"]; + }; + }; + }; + /** Deletes a row within the specified table. */ + rowDestroy: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + /** The ID of the row which this request is targeting. */ + rowId: components["parameters"]["rowId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the deleted row, including the ID which has been generated for it. */ + 200: { + content: { + "application/json": components["schemas"]["rowOutput"]; + }; + }; + }; + }; + rowSearch: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** The response will contain an array of rows that match the search parameters. */ + 200: { + content: { + "application/json": components["schemas"]["searchOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["rowSearch"]; + }; + }; + }; + /** Create a table, this could be internal or external. */ + tableCreate: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the created table, including the ID which has been generated for it. This can be internal or external datasources. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["table"]; + }; + }; + }; + /** Lookup a table, this could be internal or external. */ + tableGetById: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the retrieved table. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; + }; + /** Update a table, this could be internal or external. */ + tableUpdate: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the updated table. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["table"]; + }; + }; + }; + /** Delete a table, this could be internal or external. */ + tableDestroy: { + parameters: { + path: { + /** The ID of the table which this request is targeting. */ + tableId: components["parameters"]["tableId"]; + }; + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the deleted table. */ + 200: { + content: { + "application/json": components["schemas"]["tableOutput"]; + }; + }; + }; + }; + /** Based on table properties (currently only name) search for tables. This could be an internal or an external table. */ + tableSearch: { + parameters: { + header: { + /** The ID of the app which this request is targeting. */ + "x-budibase-app-id": components["parameters"]["appId"]; + }; + }; + responses: { + /** Returns the found tables, based on the search parameters. */ + 200: { + content: { + "application/json": components["schemas"]["tableSearch"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; + userCreate: { + responses: { + /** Returns the created user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["user"]; + }; + }; + }; + userGetById: { + parameters: { + path: { + /** The ID of the user which this request is targeting. */ + userId: components["parameters"]["userId"]; + }; + }; + responses: { + /** Returns the retrieved user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; + }; + userUpdate: { + parameters: { + path: { + /** The ID of the user which this request is targeting. */ + userId: components["parameters"]["userId"]; + }; + }; + responses: { + /** Returns the updated user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["user"]; + }; + }; + }; + userDestroy: { + parameters: { + path: { + /** The ID of the user which this request is targeting. */ + userId: components["parameters"]["userId"]; + }; + }; + responses: { + /** Returns the deleted user. */ + 200: { + content: { + "application/json": components["schemas"]["userOutput"]; + }; + }; + }; + }; + /** Based on user properties (currently only name) search for users. */ + userSearch: { + responses: { + /** Returns the found users based on search parameters. */ + 200: { + content: { + "application/json": components["schemas"]["userSearch"]; + }; + }; + }; + requestBody: { + content: { + "application/json": components["schemas"]["nameSearch"]; + }; + }; + }; } export interface external {} From 5882f2b468dc73afb053b43faf8f52bd3290f7ca Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 28 Feb 2023 19:27:59 +0000 Subject: [PATCH 032/193] Fixing an issue shown in #9602 where the schema type will revert each time you re-run a query, this will hold any previously selected schema information in the query. --- .../src/components/integration/QueryViewer.svelte | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/components/integration/QueryViewer.svelte b/packages/builder/src/components/integration/QueryViewer.svelte index 2109356c74..7a76970ecb 100644 --- a/packages/builder/src/components/integration/QueryViewer.svelte +++ b/packages/builder/src/components/integration/QueryViewer.svelte @@ -35,6 +35,7 @@ let parameters let data = [] let saveId + let currentTab = "JSON" $: datasource = $datasources.list.find(ds => ds._id === query.datasourceId) $: query.schema = fieldsToSchema(fields) @@ -84,7 +85,16 @@ return } data = response.rows + // need to merge fields that already exist/might have changed + if (fields) { + for (let key of Object.keys(response.schema)) { + if (fields[key]) { + response.schema[key] = fields[key] + } + } + } fields = response.schema + currentTab = "JSON" notifications.success("Query executed successfully") } catch (error) { notifications.error(`Query Error: ${error.message}`) @@ -205,7 +215,7 @@
{#if data} - + From 09adef4d59c83b6f58a195ac00cfc787b78e0f17 Mon Sep 17 00:00:00 2001 From: Dean Date: Tue, 28 Feb 2023 22:27:02 +0000 Subject: [PATCH 033/193] Fixes for invitation unit tests --- packages/worker/src/api/controllers/global/users.ts | 8 +++++--- packages/worker/src/api/routes/global/tests/users.spec.ts | 6 +++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/worker/src/api/controllers/global/users.ts b/packages/worker/src/api/controllers/global/users.ts index ab43138aa4..d68e726e71 100644 --- a/packages/worker/src/api/controllers/global/users.ts +++ b/packages/worker/src/api/controllers/global/users.ts @@ -254,7 +254,7 @@ export const onboardUsers = async (ctx: any) => { onboardingResponse = await userSdk.bulkCreate(assignUsers, groups) ctx.body = onboardingResponse } else if (emailConfigured) { - onboardingResponse = await invite(ctx) + onboardingResponse = await inviteMultiple(ctx) } else if (!emailConfigured) { const inviteRequest = ctx.request.body as InviteUsersRequest @@ -297,8 +297,10 @@ export const onboardUsers = async (ctx: any) => { } export const invite = async (ctx: any) => { - const request = ctx.request.body as InviteUsersRequest - const response = await userSdk.invite(request) + const request = ctx.request.body as InviteUserRequest + + let multiRequest = [request] as InviteUsersRequest + const response = await userSdk.invite(multiRequest) // explicitly throw for single user invite if (response.unsuccessful.length) { diff --git a/packages/worker/src/api/routes/global/tests/users.spec.ts b/packages/worker/src/api/routes/global/tests/users.spec.ts index 31ef1d9b0c..085c976649 100644 --- a/packages/worker/src/api/routes/global/tests/users.spec.ts +++ b/packages/worker/src/api/routes/global/tests/users.spec.ts @@ -30,7 +30,11 @@ describe("/api/global/users", () => { email ) - expect(res.body).toEqual({ message: "Invitation has been sent." }) + expect(res.body?.message).toBe("Invitation has been sent.") + expect(res.body?.unsuccessful.length).toBe(0) + expect(res.body?.successful.length).toBe(1) + expect(res.body?.successful[0].email).toBe(email) + expect(sendMailMock).toHaveBeenCalled() expect(code).toBeDefined() expect(events.user.invited).toBeCalledTimes(1) From 8234fc7f3a77bef437fe82b59c69ff54f46d0853 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Wed, 1 Mar 2023 09:32:52 +0000 Subject: [PATCH 034/193] Remove comment blocks --- .../_components/BuilderSidePanel.svelte | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte b/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte index 05ff742637..a38751f5d4 100644 --- a/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/_components/BuilderSidePanel.svelte @@ -93,15 +93,6 @@ } } - // if ( - // !appRole && - // user.userGroups && - // !user.builder?.global && - // !user.admin.global - // ) { - // console.log("Hi, I don't have groups > ", user.email) - // } - return { ...user, role, @@ -220,12 +211,6 @@ // Adds the 'role' attribute and sets it to the current app. $: enrichedGroups = getEnrichedGroups($groups) $: filteredGroups = searchGroups(enrichedGroups, query) - - // $: enrichedAppGroupsById = getAppGroups(enrichedGroups, prodAppId).map( - // group => group._id - // ) - // $: console.log("ALL GROUP IDS ", enrichedAppGroupsById) - $: groupUsers = buildGroupUsers(filteredGroups, filteredUsers) $: allUsers = [...filteredUsers, ...groupUsers] From e796880e54b300fae95256e43405931602a67b15 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 10:02:33 +0000 Subject: [PATCH 035/193] v2.3.18-alpha.17 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index d0c541cc5b..5f01f98b3a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index a96ba9bf41..db49070128 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.16", + "@budibase/types": "2.3.18-alpha.17", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 21bbc15807..c200860933 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.16", + "@budibase/string-templates": "2.3.18-alpha.17", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 6524c5623f..a06235cbb5 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.16", - "@budibase/client": "2.3.18-alpha.16", - "@budibase/frontend-core": "2.3.18-alpha.16", - "@budibase/string-templates": "2.3.18-alpha.16", + "@budibase/bbui": "2.3.18-alpha.17", + "@budibase/client": "2.3.18-alpha.17", + "@budibase/frontend-core": "2.3.18-alpha.17", + "@budibase/string-templates": "2.3.18-alpha.17", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index bab0b54a86..bcfb086f66 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.16", - "@budibase/string-templates": "2.3.18-alpha.16", - "@budibase/types": "2.3.18-alpha.16", + "@budibase/backend-core": "2.3.18-alpha.17", + "@budibase/string-templates": "2.3.18-alpha.17", + "@budibase/types": "2.3.18-alpha.17", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 75af8909e1..c3425a1372 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.16", - "@budibase/frontend-core": "2.3.18-alpha.16", - "@budibase/string-templates": "2.3.18-alpha.16", + "@budibase/bbui": "2.3.18-alpha.17", + "@budibase/frontend-core": "2.3.18-alpha.17", + "@budibase/string-templates": "2.3.18-alpha.17", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 6f76261d7b..26c56d4895 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.16", + "@budibase/bbui": "2.3.18-alpha.17", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 18ab3fefb5..20245a9043 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 676ba2e108..c5a5c7454c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.16", - "@budibase/client": "2.3.18-alpha.16", + "@budibase/backend-core": "2.3.18-alpha.17", + "@budibase/client": "2.3.18-alpha.17", "@budibase/pro": "2.3.18-alpha.16", - "@budibase/string-templates": "2.3.18-alpha.16", - "@budibase/types": "2.3.18-alpha.16", + "@budibase/string-templates": "2.3.18-alpha.17", + "@budibase/types": "2.3.18-alpha.17", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index c1c9fb89b7..caf2965e05 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index aa85beb856..1ce263a016 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index a0a73b17f4..1a03bec87b 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.16", + "version": "2.3.18-alpha.17", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.16", + "@budibase/backend-core": "2.3.18-alpha.17", "@budibase/pro": "2.3.18-alpha.16", - "@budibase/string-templates": "2.3.18-alpha.16", - "@budibase/types": "2.3.18-alpha.16", + "@budibase/string-templates": "2.3.18-alpha.17", + "@budibase/types": "2.3.18-alpha.17", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From e629e9ab220717f6c49bb4cd154e49cd1bf3f449 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 10:06:03 +0000 Subject: [PATCH 036/193] Update pro version to 2.3.18-alpha.17 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index c5a5c7454c..01c6e3dc33 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.17", "@budibase/client": "2.3.18-alpha.17", - "@budibase/pro": "2.3.18-alpha.16", + "@budibase/pro": "2.3.18-alpha.17", "@budibase/string-templates": "2.3.18-alpha.17", "@budibase/types": "2.3.18-alpha.17", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 72cc24a5ee..f84bd6f625 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.16": - version "2.3.18-alpha.16" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.16.tgz#dc4eb1a84283d96e9d0814647cff6a985e204ede" - integrity sha512-oxca+tBXCqr713lH+MLKvY0K/i+yCS5W+sJmMR2jlCfBBEULhPBRcBnyNhUEQsszqcZDiHI4Svy1a50BryDCsQ== +"@budibase/backend-core@2.3.18-alpha.17": + version "2.3.18-alpha.17" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.17.tgz#4b887d161a0ad6f21bf8f582417cfec90c2c417f" + integrity sha512-tXza/NP4pA08FjIyToPqJSQcYFL03RFJRdeT6aA0u8Ibd6ASSXZ/iVw7t0VEk57S4G7fftXA5e6Q3XX8PRR2+A== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.16" + "@budibase/types" "2.3.18-alpha.17" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.16": - version "2.3.18-alpha.16" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.16.tgz#239ccee2469d7465cec859c22ae39abf0d9cc4ec" - integrity sha512-sGgZ5gTMFVtkU0GZF0ApVTAB1uw1twL/2v5vXYzrIzfJKL2Ehcsrg8d3JwlaF6S7bOzOOaNa90cuGgvXQ1TzTw== +"@budibase/pro@2.3.18-alpha.17": + version "2.3.18-alpha.17" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.17.tgz#4eceff71514ffa5254082bf5b15f9f82f5b1bdf4" + integrity sha512-Xsk3kw1MnwGtWI3aNheOdmphSjRjwh0dx/VGTP6MHiFObCKYUxrxm6VmzS9ysw5HxCfyRG8Y2w2EuXoJ08jxtQ== dependencies: - "@budibase/backend-core" "2.3.18-alpha.16" + "@budibase/backend-core" "2.3.18-alpha.17" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.16" + "@budibase/types" "2.3.18-alpha.17" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.16": - version "2.3.18-alpha.16" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.16.tgz#e4613c482ee7fc0ff099190ba3c7432fd6a3efce" - integrity sha512-nltKX5erHad2vM6SEv2tYLWCztEtV4bjXrmB8lbkTcf6iD0gjXB280vGkE4gOBdeOmBXXP39GxVc30e7ugw5GA== +"@budibase/types@2.3.18-alpha.17": + version "2.3.18-alpha.17" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.17.tgz#603a1374b601720ed39e047367fbb71fb5a1c51f" + integrity sha512-e+hJBt7LxbOjEcjklfNlzn59yODAgdjd3nhH8d/7Mv9q1tcp92ssjN6gLcFCuNSvFdH861J/ln0ApbkcNAOeTg== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index 1a03bec87b..a6d34b2816 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.17", - "@budibase/pro": "2.3.18-alpha.16", + "@budibase/pro": "2.3.18-alpha.17", "@budibase/string-templates": "2.3.18-alpha.17", "@budibase/types": "2.3.18-alpha.17", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index d5245ff350..d66da29ec2 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.16": - version "2.3.18-alpha.16" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.16.tgz#dc4eb1a84283d96e9d0814647cff6a985e204ede" - integrity sha512-oxca+tBXCqr713lH+MLKvY0K/i+yCS5W+sJmMR2jlCfBBEULhPBRcBnyNhUEQsszqcZDiHI4Svy1a50BryDCsQ== +"@budibase/backend-core@2.3.18-alpha.17": + version "2.3.18-alpha.17" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.17.tgz#4b887d161a0ad6f21bf8f582417cfec90c2c417f" + integrity sha512-tXza/NP4pA08FjIyToPqJSQcYFL03RFJRdeT6aA0u8Ibd6ASSXZ/iVw7t0VEk57S4G7fftXA5e6Q3XX8PRR2+A== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.16" + "@budibase/types" "2.3.18-alpha.17" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.16": - version "2.3.18-alpha.16" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.16.tgz#239ccee2469d7465cec859c22ae39abf0d9cc4ec" - integrity sha512-sGgZ5gTMFVtkU0GZF0ApVTAB1uw1twL/2v5vXYzrIzfJKL2Ehcsrg8d3JwlaF6S7bOzOOaNa90cuGgvXQ1TzTw== +"@budibase/pro@2.3.18-alpha.17": + version "2.3.18-alpha.17" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.17.tgz#4eceff71514ffa5254082bf5b15f9f82f5b1bdf4" + integrity sha512-Xsk3kw1MnwGtWI3aNheOdmphSjRjwh0dx/VGTP6MHiFObCKYUxrxm6VmzS9ysw5HxCfyRG8Y2w2EuXoJ08jxtQ== dependencies: - "@budibase/backend-core" "2.3.18-alpha.16" + "@budibase/backend-core" "2.3.18-alpha.17" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.16" + "@budibase/types" "2.3.18-alpha.17" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.16": - version "2.3.18-alpha.16" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.16.tgz#e4613c482ee7fc0ff099190ba3c7432fd6a3efce" - integrity sha512-nltKX5erHad2vM6SEv2tYLWCztEtV4bjXrmB8lbkTcf6iD0gjXB280vGkE4gOBdeOmBXXP39GxVc30e7ugw5GA== +"@budibase/types@2.3.18-alpha.17": + version "2.3.18-alpha.17" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.17.tgz#603a1374b601720ed39e047367fbb71fb5a1c51f" + integrity sha512-e+hJBt7LxbOjEcjklfNlzn59yODAgdjd3nhH8d/7Mv9q1tcp92ssjN6gLcFCuNSvFdH861J/ln0ApbkcNAOeTg== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From dded8beaebd79ea0f25c94c92d4e64a80b1c591f Mon Sep 17 00:00:00 2001 From: adrinr Date: Wed, 1 Mar 2023 13:16:57 +0100 Subject: [PATCH 037/193] Fix writethrough falling behind --- .../src/cache/tests/writethrough.spec.ts | 28 +++++++++++++++++++ .../backend-core/src/cache/writethrough.ts | 2 +- .../tests/utilities/structures/db.ts | 7 +++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/packages/backend-core/src/cache/tests/writethrough.spec.ts b/packages/backend-core/src/cache/tests/writethrough.spec.ts index f7b7488fc9..a34f05e881 100644 --- a/packages/backend-core/src/cache/tests/writethrough.spec.ts +++ b/packages/backend-core/src/cache/tests/writethrough.spec.ts @@ -85,6 +85,34 @@ describe("writethrough", () => { const output = await db.get(current._id) expect(output.value).toBe(4) expect(output._rev).toBe(newRev) + + current = output + }) + }) + + it("should handle updates with documents falling behind", async () => { + await config.doInTenant(async () => { + tk.freeze(Date.now() + DELAY + 1) + + const id = structures.uuid() + await writethrough.put({ _id: id, value: 1 }) + const doc = await writethrough.get(id) + + // Updating document + tk.freeze(Date.now() + DELAY + 1) + await writethrough.put({ ...doc, value: 2 }) + + // Update with the old rev value + tk.freeze(Date.now() + DELAY + 1) + const res = await writethrough.put({ + ...doc, + value: 3, + }) + expect(res.ok).toBe(true) + + const output = await db.get(id) + expect(output.value).toBe(3) + expect(output._rev).toBe(res.rev) }) }) }) diff --git a/packages/backend-core/src/cache/writethrough.ts b/packages/backend-core/src/cache/writethrough.ts index e895406c2c..43f3bfb3aa 100644 --- a/packages/backend-core/src/cache/writethrough.ts +++ b/packages/backend-core/src/cache/writethrough.ts @@ -51,7 +51,7 @@ async function put( async () => { const writeDb = async (toWrite: any) => { // doc should contain the _id and _rev - const response = await db.put(toWrite) + const response = await db.put(toWrite, { force: true }) output = { ...doc, _id: response.id, diff --git a/packages/backend-core/tests/utilities/structures/db.ts b/packages/backend-core/tests/utilities/structures/db.ts index e25b707cb9..f4a677e777 100644 --- a/packages/backend-core/tests/utilities/structures/db.ts +++ b/packages/backend-core/tests/utilities/structures/db.ts @@ -1,5 +1,12 @@ +import { structures } from ".." import { newid } from "../../../src/newid" export function id() { return `db_${newid()}` } + +export function rev() { + return `${structures.generator.character({ + numeric: true, + })}-${structures.uuid().replace(/-/, "")}` +} From b11bc5280f83ba6ce44c50f04fafade774a542ca Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 12:36:38 +0000 Subject: [PATCH 038/193] v2.3.18-alpha.18 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index 5f01f98b3a..076c79595a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index db49070128..e1a7a83f45 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.17", + "@budibase/types": "2.3.18-alpha.18", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index c200860933..019b007c27 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.17", + "@budibase/string-templates": "2.3.18-alpha.18", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index a06235cbb5..85c45f83a1 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.17", - "@budibase/client": "2.3.18-alpha.17", - "@budibase/frontend-core": "2.3.18-alpha.17", - "@budibase/string-templates": "2.3.18-alpha.17", + "@budibase/bbui": "2.3.18-alpha.18", + "@budibase/client": "2.3.18-alpha.18", + "@budibase/frontend-core": "2.3.18-alpha.18", + "@budibase/string-templates": "2.3.18-alpha.18", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index bcfb086f66..ae989fa1a6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.17", - "@budibase/string-templates": "2.3.18-alpha.17", - "@budibase/types": "2.3.18-alpha.17", + "@budibase/backend-core": "2.3.18-alpha.18", + "@budibase/string-templates": "2.3.18-alpha.18", + "@budibase/types": "2.3.18-alpha.18", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index c3425a1372..09c1f151e8 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.17", - "@budibase/frontend-core": "2.3.18-alpha.17", - "@budibase/string-templates": "2.3.18-alpha.17", + "@budibase/bbui": "2.3.18-alpha.18", + "@budibase/frontend-core": "2.3.18-alpha.18", + "@budibase/string-templates": "2.3.18-alpha.18", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 26c56d4895..62302a0f15 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.17", + "@budibase/bbui": "2.3.18-alpha.18", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 20245a9043..74c17189c8 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 01c6e3dc33..6e8a4edffe 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.17", - "@budibase/client": "2.3.18-alpha.17", + "@budibase/backend-core": "2.3.18-alpha.18", + "@budibase/client": "2.3.18-alpha.18", "@budibase/pro": "2.3.18-alpha.17", - "@budibase/string-templates": "2.3.18-alpha.17", - "@budibase/types": "2.3.18-alpha.17", + "@budibase/string-templates": "2.3.18-alpha.18", + "@budibase/types": "2.3.18-alpha.18", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index caf2965e05..fcb428d3ca 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 1ce263a016..65cdeb2be0 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index a6d34b2816..dcbf9cafba 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.17", + "version": "2.3.18-alpha.18", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.17", + "@budibase/backend-core": "2.3.18-alpha.18", "@budibase/pro": "2.3.18-alpha.17", - "@budibase/string-templates": "2.3.18-alpha.17", - "@budibase/types": "2.3.18-alpha.17", + "@budibase/string-templates": "2.3.18-alpha.18", + "@budibase/types": "2.3.18-alpha.18", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From c3806c0605fa76bb04192bdaa790e7be463e8717 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 12:39:29 +0000 Subject: [PATCH 039/193] Update pro version to 2.3.18-alpha.18 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index 6e8a4edffe..9be247cdf8 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.18", "@budibase/client": "2.3.18-alpha.18", - "@budibase/pro": "2.3.18-alpha.17", + "@budibase/pro": "2.3.18-alpha.18", "@budibase/string-templates": "2.3.18-alpha.18", "@budibase/types": "2.3.18-alpha.18", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index f84bd6f625..8def3666de 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.17": - version "2.3.18-alpha.17" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.17.tgz#4b887d161a0ad6f21bf8f582417cfec90c2c417f" - integrity sha512-tXza/NP4pA08FjIyToPqJSQcYFL03RFJRdeT6aA0u8Ibd6ASSXZ/iVw7t0VEk57S4G7fftXA5e6Q3XX8PRR2+A== +"@budibase/backend-core@2.3.18-alpha.18": + version "2.3.18-alpha.18" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.18.tgz#6c6d95f3ccb88bd31044b0ac2113a5f66e7993e0" + integrity sha512-6CjyZzEO5WK/NiPIANzOTLUzWfcMyhegIF4zaZCRJ2FSN60I28e3lDSGdqPF6WN3c8ofWeSVvtSSwWX6o2Jz5A== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.17" + "@budibase/types" "2.3.18-alpha.18" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.17": - version "2.3.18-alpha.17" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.17.tgz#4eceff71514ffa5254082bf5b15f9f82f5b1bdf4" - integrity sha512-Xsk3kw1MnwGtWI3aNheOdmphSjRjwh0dx/VGTP6MHiFObCKYUxrxm6VmzS9ysw5HxCfyRG8Y2w2EuXoJ08jxtQ== +"@budibase/pro@2.3.18-alpha.18": + version "2.3.18-alpha.18" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.18.tgz#7c0df888af5187044fb4c282ed46f6cb4a6f7932" + integrity sha512-Ma3NOOfiEz47MTlwLNuDh4hqhJ2fGc+SbFM/k1+qvcYO2jqVIuiicA+8ONwDJhO+1RzaK2jMLQ+oRL9N7QI/NA== dependencies: - "@budibase/backend-core" "2.3.18-alpha.17" + "@budibase/backend-core" "2.3.18-alpha.18" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.17" + "@budibase/types" "2.3.18-alpha.18" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.17": - version "2.3.18-alpha.17" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.17.tgz#603a1374b601720ed39e047367fbb71fb5a1c51f" - integrity sha512-e+hJBt7LxbOjEcjklfNlzn59yODAgdjd3nhH8d/7Mv9q1tcp92ssjN6gLcFCuNSvFdH861J/ln0ApbkcNAOeTg== +"@budibase/types@2.3.18-alpha.18": + version "2.3.18-alpha.18" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.18.tgz#e9a2cf39231b379a93f222b66ec07fdec3f84e26" + integrity sha512-TaauEc3Z68BmpH6XWMx5yvwbxmGvc2G9s/TuI67/ub0C+efXCN7db1TznuoE0B1ASvAvbrD+81oKkov8WCcc8g== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index dcbf9cafba..0992a5e0e8 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.18", - "@budibase/pro": "2.3.18-alpha.17", + "@budibase/pro": "2.3.18-alpha.18", "@budibase/string-templates": "2.3.18-alpha.18", "@budibase/types": "2.3.18-alpha.18", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index d66da29ec2..b5a0d7d37e 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.17": - version "2.3.18-alpha.17" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.17.tgz#4b887d161a0ad6f21bf8f582417cfec90c2c417f" - integrity sha512-tXza/NP4pA08FjIyToPqJSQcYFL03RFJRdeT6aA0u8Ibd6ASSXZ/iVw7t0VEk57S4G7fftXA5e6Q3XX8PRR2+A== +"@budibase/backend-core@2.3.18-alpha.18": + version "2.3.18-alpha.18" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.18.tgz#6c6d95f3ccb88bd31044b0ac2113a5f66e7993e0" + integrity sha512-6CjyZzEO5WK/NiPIANzOTLUzWfcMyhegIF4zaZCRJ2FSN60I28e3lDSGdqPF6WN3c8ofWeSVvtSSwWX6o2Jz5A== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.17" + "@budibase/types" "2.3.18-alpha.18" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.17": - version "2.3.18-alpha.17" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.17.tgz#4eceff71514ffa5254082bf5b15f9f82f5b1bdf4" - integrity sha512-Xsk3kw1MnwGtWI3aNheOdmphSjRjwh0dx/VGTP6MHiFObCKYUxrxm6VmzS9ysw5HxCfyRG8Y2w2EuXoJ08jxtQ== +"@budibase/pro@2.3.18-alpha.18": + version "2.3.18-alpha.18" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.18.tgz#7c0df888af5187044fb4c282ed46f6cb4a6f7932" + integrity sha512-Ma3NOOfiEz47MTlwLNuDh4hqhJ2fGc+SbFM/k1+qvcYO2jqVIuiicA+8ONwDJhO+1RzaK2jMLQ+oRL9N7QI/NA== dependencies: - "@budibase/backend-core" "2.3.18-alpha.17" + "@budibase/backend-core" "2.3.18-alpha.18" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.17" + "@budibase/types" "2.3.18-alpha.18" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.17": - version "2.3.18-alpha.17" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.17.tgz#603a1374b601720ed39e047367fbb71fb5a1c51f" - integrity sha512-e+hJBt7LxbOjEcjklfNlzn59yODAgdjd3nhH8d/7Mv9q1tcp92ssjN6gLcFCuNSvFdH861J/ln0ApbkcNAOeTg== +"@budibase/types@2.3.18-alpha.18": + version "2.3.18-alpha.18" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.18.tgz#e9a2cf39231b379a93f222b66ec07fdec3f84e26" + integrity sha512-TaauEc3Z68BmpH6XWMx5yvwbxmGvc2G9s/TuI67/ub0C+efXCN7db1TznuoE0B1ASvAvbrD+81oKkov8WCcc8g== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From d213a2f3b0b19931f8b03005bd3f0c7403729b99 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 13:26:19 +0000 Subject: [PATCH 040/193] v2.3.18-alpha.19 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index 076c79595a..d7ab71f166 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index e1a7a83f45..3a3b35aff0 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.18", + "@budibase/types": "2.3.18-alpha.19", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 019b007c27..7c1a24f4eb 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.18", + "@budibase/string-templates": "2.3.18-alpha.19", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 85c45f83a1..5bc9389ef7 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.18", - "@budibase/client": "2.3.18-alpha.18", - "@budibase/frontend-core": "2.3.18-alpha.18", - "@budibase/string-templates": "2.3.18-alpha.18", + "@budibase/bbui": "2.3.18-alpha.19", + "@budibase/client": "2.3.18-alpha.19", + "@budibase/frontend-core": "2.3.18-alpha.19", + "@budibase/string-templates": "2.3.18-alpha.19", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index ae989fa1a6..d0d8bd828c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.18", - "@budibase/string-templates": "2.3.18-alpha.18", - "@budibase/types": "2.3.18-alpha.18", + "@budibase/backend-core": "2.3.18-alpha.19", + "@budibase/string-templates": "2.3.18-alpha.19", + "@budibase/types": "2.3.18-alpha.19", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 09c1f151e8..401bcc61c7 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.18", - "@budibase/frontend-core": "2.3.18-alpha.18", - "@budibase/string-templates": "2.3.18-alpha.18", + "@budibase/bbui": "2.3.18-alpha.19", + "@budibase/frontend-core": "2.3.18-alpha.19", + "@budibase/string-templates": "2.3.18-alpha.19", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 62302a0f15..c4fc442fb6 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.18", + "@budibase/bbui": "2.3.18-alpha.19", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 74c17189c8..9f0d266c41 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 605180e2ec..e901a296e2 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.18", - "@budibase/client": "2.3.18-alpha.18", + "@budibase/backend-core": "2.3.18-alpha.19", + "@budibase/client": "2.3.18-alpha.19", "@budibase/pro": "2.3.18-alpha.18", - "@budibase/string-templates": "2.3.18-alpha.18", - "@budibase/types": "2.3.18-alpha.18", + "@budibase/string-templates": "2.3.18-alpha.19", + "@budibase/types": "2.3.18-alpha.19", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index fcb428d3ca..6a3e8868b1 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 65cdeb2be0..4196bd1a36 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 0992a5e0e8..e1deb352d1 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.18", + "version": "2.3.18-alpha.19", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.18", + "@budibase/backend-core": "2.3.18-alpha.19", "@budibase/pro": "2.3.18-alpha.18", - "@budibase/string-templates": "2.3.18-alpha.18", - "@budibase/types": "2.3.18-alpha.18", + "@budibase/string-templates": "2.3.18-alpha.19", + "@budibase/types": "2.3.18-alpha.19", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 7d9ef8c74066343af23a77e572959ce39b64b06f Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 13:29:54 +0000 Subject: [PATCH 041/193] Update pro version to 2.3.18-alpha.19 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index e901a296e2..5410241306 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.19", "@budibase/client": "2.3.18-alpha.19", - "@budibase/pro": "2.3.18-alpha.18", + "@budibase/pro": "2.3.18-alpha.19", "@budibase/string-templates": "2.3.18-alpha.19", "@budibase/types": "2.3.18-alpha.19", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 8def3666de..09882fe0ae 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.18": - version "2.3.18-alpha.18" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.18.tgz#6c6d95f3ccb88bd31044b0ac2113a5f66e7993e0" - integrity sha512-6CjyZzEO5WK/NiPIANzOTLUzWfcMyhegIF4zaZCRJ2FSN60I28e3lDSGdqPF6WN3c8ofWeSVvtSSwWX6o2Jz5A== +"@budibase/backend-core@2.3.18-alpha.19": + version "2.3.18-alpha.19" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.19.tgz#78e401d779afd2cd4b88cff3b0541696f366d8cd" + integrity sha512-hft+QscukDPvleR5qE+MSVNVJce8lvq9BPBV7JK0CnJZn7qyKe47l0shUCbpjN/yVL33pb4RRlKeC12qKlSrFQ== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.18" + "@budibase/types" "2.3.18-alpha.19" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.18": - version "2.3.18-alpha.18" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.18.tgz#7c0df888af5187044fb4c282ed46f6cb4a6f7932" - integrity sha512-Ma3NOOfiEz47MTlwLNuDh4hqhJ2fGc+SbFM/k1+qvcYO2jqVIuiicA+8ONwDJhO+1RzaK2jMLQ+oRL9N7QI/NA== +"@budibase/pro@2.3.18-alpha.19": + version "2.3.18-alpha.19" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.19.tgz#9defc7201aa9f9591d18738335ef59e3dfbe4b4a" + integrity sha512-E8WCEJXYbOb+qNTSc2cHT7tN1+25SPtdAyRcvC8nRyV1AucOh80G/lTiA8SxlsZIC7Dzy5tcaFsMebsiySlUkg== dependencies: - "@budibase/backend-core" "2.3.18-alpha.18" + "@budibase/backend-core" "2.3.18-alpha.19" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.18" + "@budibase/types" "2.3.18-alpha.19" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.18": - version "2.3.18-alpha.18" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.18.tgz#e9a2cf39231b379a93f222b66ec07fdec3f84e26" - integrity sha512-TaauEc3Z68BmpH6XWMx5yvwbxmGvc2G9s/TuI67/ub0C+efXCN7db1TznuoE0B1ASvAvbrD+81oKkov8WCcc8g== +"@budibase/types@2.3.18-alpha.19": + version "2.3.18-alpha.19" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.19.tgz#0d9b2686d5da555c8c62b87311dfed597e169189" + integrity sha512-x4VZvF+nDuULY8pfL6BlaI8pA7XNuhRhSsja+UXlSU8vtg1QCjb68mtINm90E/dvAVHnDzVGtp5gBd59dTuXNw== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index e1deb352d1..084f856968 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.19", - "@budibase/pro": "2.3.18-alpha.18", + "@budibase/pro": "2.3.18-alpha.19", "@budibase/string-templates": "2.3.18-alpha.19", "@budibase/types": "2.3.18-alpha.19", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index b5a0d7d37e..71b50625e5 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.18": - version "2.3.18-alpha.18" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.18.tgz#6c6d95f3ccb88bd31044b0ac2113a5f66e7993e0" - integrity sha512-6CjyZzEO5WK/NiPIANzOTLUzWfcMyhegIF4zaZCRJ2FSN60I28e3lDSGdqPF6WN3c8ofWeSVvtSSwWX6o2Jz5A== +"@budibase/backend-core@2.3.18-alpha.19": + version "2.3.18-alpha.19" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.19.tgz#78e401d779afd2cd4b88cff3b0541696f366d8cd" + integrity sha512-hft+QscukDPvleR5qE+MSVNVJce8lvq9BPBV7JK0CnJZn7qyKe47l0shUCbpjN/yVL33pb4RRlKeC12qKlSrFQ== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.18" + "@budibase/types" "2.3.18-alpha.19" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.18": - version "2.3.18-alpha.18" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.18.tgz#7c0df888af5187044fb4c282ed46f6cb4a6f7932" - integrity sha512-Ma3NOOfiEz47MTlwLNuDh4hqhJ2fGc+SbFM/k1+qvcYO2jqVIuiicA+8ONwDJhO+1RzaK2jMLQ+oRL9N7QI/NA== +"@budibase/pro@2.3.18-alpha.19": + version "2.3.18-alpha.19" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.19.tgz#9defc7201aa9f9591d18738335ef59e3dfbe4b4a" + integrity sha512-E8WCEJXYbOb+qNTSc2cHT7tN1+25SPtdAyRcvC8nRyV1AucOh80G/lTiA8SxlsZIC7Dzy5tcaFsMebsiySlUkg== dependencies: - "@budibase/backend-core" "2.3.18-alpha.18" + "@budibase/backend-core" "2.3.18-alpha.19" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.18" + "@budibase/types" "2.3.18-alpha.19" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.18": - version "2.3.18-alpha.18" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.18.tgz#e9a2cf39231b379a93f222b66ec07fdec3f84e26" - integrity sha512-TaauEc3Z68BmpH6XWMx5yvwbxmGvc2G9s/TuI67/ub0C+efXCN7db1TznuoE0B1ASvAvbrD+81oKkov8WCcc8g== +"@budibase/types@2.3.18-alpha.19": + version "2.3.18-alpha.19" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.19.tgz#0d9b2686d5da555c8c62b87311dfed597e169189" + integrity sha512-x4VZvF+nDuULY8pfL6BlaI8pA7XNuhRhSsja+UXlSU8vtg1QCjb68mtINm90E/dvAVHnDzVGtp5gBd59dTuXNw== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From 2dfca0f67c9d00fbc46cd739c0d8f37caad10b51 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Wed, 1 Mar 2023 14:32:01 +0000 Subject: [PATCH 042/193] Fix settings doc id in new installs --- packages/backend-core/src/configs/configs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-core/src/configs/configs.ts b/packages/backend-core/src/configs/configs.ts index 38e7bcbb29..b628f64b13 100644 --- a/packages/backend-core/src/configs/configs.ts +++ b/packages/backend-core/src/configs/configs.ts @@ -54,7 +54,7 @@ export async function getSettingsConfigDoc(): Promise { if (!config) { config = { - _id: generateConfigID(ConfigType.GOOGLE), + _id: generateConfigID(ConfigType.SETTINGS), type: ConfigType.SETTINGS, config: {}, } From a192ea0caa9e13caea71e6933b2f3df6d10a7082 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Wed, 1 Mar 2023 14:48:10 +0000 Subject: [PATCH 043/193] Only allow admins to access audit logs --- packages/builder/src/stores/portal/menu.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/builder/src/stores/portal/menu.js b/packages/builder/src/stores/portal/menu.js index 56956fc330..3ffb62d881 100644 --- a/packages/builder/src/stores/portal/menu.js +++ b/packages/builder/src/stores/portal/menu.js @@ -75,11 +75,15 @@ export const menu = derived([admin, auth], ([$admin, $auth]) => { title: "Usage", href: "/builder/portal/account/usage", }, - { - title: "Audit Logs", - href: "/builder/portal/account/auditLogs", - }, + ] + if ($auth.isAdmin) { + accountSubPages.push( + { + title: "Audit Logs", + href: "/builder/portal/account/auditLogs", + }) + } if ($admin.cloud && $auth?.user?.accountPortalAccess) { accountSubPages.push({ title: "Upgrade", From c83684ed830d8577b843ddd398b4dd8d9600c1db Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Wed, 1 Mar 2023 14:49:44 +0000 Subject: [PATCH 044/193] Prevent showing user exists for password disabled actions --- .../backend-core/src/middleware/authenticated.ts | 3 ++- .../worker/src/api/controllers/global/auth.ts | 2 +- .../src/api/routes/global/tests/auth.spec.ts | 16 +++------------- packages/worker/src/sdk/auth/auth.ts | 2 +- packages/worker/src/tests/api/auth.ts | 12 +++++++----- 5 files changed, 14 insertions(+), 21 deletions(-) diff --git a/packages/backend-core/src/middleware/authenticated.ts b/packages/backend-core/src/middleware/authenticated.ts index d7e6346b3f..0708581570 100644 --- a/packages/backend-core/src/middleware/authenticated.ts +++ b/packages/backend-core/src/middleware/authenticated.ts @@ -154,7 +154,8 @@ export default function ( return next() } } catch (err: any) { - console.error("Auth Error", err?.message || err) + console.error(`Auth Error: ${err.message}`) + console.error(err) // invalid token, clear the cookie if (err && err.name === "JsonWebTokenError") { clearCookie(ctx, Cookie.Auth) diff --git a/packages/worker/src/api/controllers/global/auth.ts b/packages/worker/src/api/controllers/global/auth.ts index 92cf014a48..362723abd9 100644 --- a/packages/worker/src/api/controllers/global/auth.ts +++ b/packages/worker/src/api/controllers/global/auth.ts @@ -62,7 +62,7 @@ export const login = async (ctx: Ctx, next: any) => { const user = await userSdk.getUserByEmail(email) if (user && (await userSdk.isPreventPasswordActions(user))) { - ctx.throw(400, "Password login is disabled for this user") + ctx.throw(403, "Invalid credentials") } return passport.authenticate( diff --git a/packages/worker/src/api/routes/global/tests/auth.spec.ts b/packages/worker/src/api/routes/global/tests/auth.spec.ts index 9b5392fc73..f79bfb538c 100644 --- a/packages/worker/src/api/routes/global/tests/auth.spec.ts +++ b/packages/worker/src/api/routes/global/tests/auth.spec.ts @@ -106,12 +106,12 @@ describe("/api/global/auth", () => { tenantId, email, password, - { status: 400 } + { status: 403 } ) expect(response.body).toEqual({ - message: "Password login is disabled for this user", - status: 400, + message: "Invalid credentials", + status: 403, }) } @@ -171,17 +171,7 @@ describe("/api/global/auth", () => { const { res } = await config.api.auth.requestPasswordReset( sendMailMock, user.email, - { status: 400 } ) - - expect(res.body).toEqual({ - message: "Password reset is disabled for this user", - status: 400, - error: { - code: "http", - type: "generic", - }, - }) expect(sendMailMock).not.toHaveBeenCalled() } diff --git a/packages/worker/src/sdk/auth/auth.ts b/packages/worker/src/sdk/auth/auth.ts index 8e9cff18dd..98830c576d 100644 --- a/packages/worker/src/sdk/auth/auth.ts +++ b/packages/worker/src/sdk/auth/auth.ts @@ -59,7 +59,7 @@ export const reset = async (email: string) => { // exit if user has sso if (await userSdk.isPreventPasswordActions(user)) { - throw new HTTPError("Password reset is disabled for this user", 400) + return } // send password reset diff --git a/packages/worker/src/tests/api/auth.ts b/packages/worker/src/tests/api/auth.ts index bd0471ca74..552d4da505 100644 --- a/packages/worker/src/tests/api/auth.ts +++ b/packages/worker/src/tests/api/auth.ts @@ -61,11 +61,13 @@ export class AuthAPI extends TestAPI { let code: string | undefined if (res.status === 200) { - const emailCall = sendMailMock.mock.calls[0][0] - const parts = emailCall.html.split( - `http://localhost:10000/builder/auth/reset?code=` - ) - code = parts[1].split('"')[0].split("&")[0] + if (sendMailMock.mock.calls.length) { + const emailCall = sendMailMock.mock.calls[0][0] + const parts = emailCall.html.split( + `http://localhost:10000/builder/auth/reset?code=` + ) + code = parts[1].split('"')[0].split("&")[0] + } } return { code, res } From d8c0233141af633dd261704ee24b714be8e66a01 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 14:52:44 +0000 Subject: [PATCH 045/193] v2.3.18-alpha.20 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index d7ab71f166..ac697c6bd3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 3a3b35aff0..58e2b3e927 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.19", + "@budibase/types": "2.3.18-alpha.20", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 7c1a24f4eb..595ba27069 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.19", + "@budibase/string-templates": "2.3.18-alpha.20", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 5bc9389ef7..7c01f3083c 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.19", - "@budibase/client": "2.3.18-alpha.19", - "@budibase/frontend-core": "2.3.18-alpha.19", - "@budibase/string-templates": "2.3.18-alpha.19", + "@budibase/bbui": "2.3.18-alpha.20", + "@budibase/client": "2.3.18-alpha.20", + "@budibase/frontend-core": "2.3.18-alpha.20", + "@budibase/string-templates": "2.3.18-alpha.20", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index d0d8bd828c..4f16f81669 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.19", - "@budibase/string-templates": "2.3.18-alpha.19", - "@budibase/types": "2.3.18-alpha.19", + "@budibase/backend-core": "2.3.18-alpha.20", + "@budibase/string-templates": "2.3.18-alpha.20", + "@budibase/types": "2.3.18-alpha.20", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 401bcc61c7..aecd01364f 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.19", - "@budibase/frontend-core": "2.3.18-alpha.19", - "@budibase/string-templates": "2.3.18-alpha.19", + "@budibase/bbui": "2.3.18-alpha.20", + "@budibase/frontend-core": "2.3.18-alpha.20", + "@budibase/string-templates": "2.3.18-alpha.20", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index c4fc442fb6..edb47d4cdd 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.19", + "@budibase/bbui": "2.3.18-alpha.20", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 9f0d266c41..295dccfd17 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 5410241306..da9018520b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.19", - "@budibase/client": "2.3.18-alpha.19", + "@budibase/backend-core": "2.3.18-alpha.20", + "@budibase/client": "2.3.18-alpha.20", "@budibase/pro": "2.3.18-alpha.19", - "@budibase/string-templates": "2.3.18-alpha.19", - "@budibase/types": "2.3.18-alpha.19", + "@budibase/string-templates": "2.3.18-alpha.20", + "@budibase/types": "2.3.18-alpha.20", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 6a3e8868b1..107311a948 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 4196bd1a36..4e3512f896 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 084f856968..3e34eed399 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.19", + "version": "2.3.18-alpha.20", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.19", + "@budibase/backend-core": "2.3.18-alpha.20", "@budibase/pro": "2.3.18-alpha.19", - "@budibase/string-templates": "2.3.18-alpha.19", - "@budibase/types": "2.3.18-alpha.19", + "@budibase/string-templates": "2.3.18-alpha.20", + "@budibase/types": "2.3.18-alpha.20", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 692d10d4becdb683463e6ea55a81866ff0b89ed0 Mon Sep 17 00:00:00 2001 From: Peter Clement Date: Wed, 1 Mar 2023 14:54:00 +0000 Subject: [PATCH 046/193] lint --- packages/builder/src/stores/portal/menu.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/builder/src/stores/portal/menu.js b/packages/builder/src/stores/portal/menu.js index 3ffb62d881..d791a4ac91 100644 --- a/packages/builder/src/stores/portal/menu.js +++ b/packages/builder/src/stores/portal/menu.js @@ -75,14 +75,12 @@ export const menu = derived([admin, auth], ([$admin, $auth]) => { title: "Usage", href: "/builder/portal/account/usage", }, - ] if ($auth.isAdmin) { - accountSubPages.push( - { - title: "Audit Logs", - href: "/builder/portal/account/auditLogs", - }) + accountSubPages.push({ + title: "Audit Logs", + href: "/builder/portal/account/auditLogs", + }) } if ($admin.cloud && $auth?.user?.accountPortalAccess) { accountSubPages.push({ From eb9615cc73b21fff4dcb7250d8f0cef9225e0d61 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 14:55:46 +0000 Subject: [PATCH 047/193] Update pro version to 2.3.18-alpha.20 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index da9018520b..b000f96d92 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.20", "@budibase/client": "2.3.18-alpha.20", - "@budibase/pro": "2.3.18-alpha.19", + "@budibase/pro": "2.3.18-alpha.20", "@budibase/string-templates": "2.3.18-alpha.20", "@budibase/types": "2.3.18-alpha.20", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 09882fe0ae..d8e7d4bfe9 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.19": - version "2.3.18-alpha.19" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.19.tgz#78e401d779afd2cd4b88cff3b0541696f366d8cd" - integrity sha512-hft+QscukDPvleR5qE+MSVNVJce8lvq9BPBV7JK0CnJZn7qyKe47l0shUCbpjN/yVL33pb4RRlKeC12qKlSrFQ== +"@budibase/backend-core@2.3.18-alpha.20": + version "2.3.18-alpha.20" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.20.tgz#ab5c88005c84e1151116fe33477641452f766a38" + integrity sha512-NPvVLSghrk4L5tzt/1hDg4KQnr11aOLC8lCR4vE1qA/Nqg4MQjU0unNWXiefqZeDx0PZtz+7Q+/Eq9ZGlwqYww== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.19" + "@budibase/types" "2.3.18-alpha.20" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.19": - version "2.3.18-alpha.19" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.19.tgz#9defc7201aa9f9591d18738335ef59e3dfbe4b4a" - integrity sha512-E8WCEJXYbOb+qNTSc2cHT7tN1+25SPtdAyRcvC8nRyV1AucOh80G/lTiA8SxlsZIC7Dzy5tcaFsMebsiySlUkg== +"@budibase/pro@2.3.18-alpha.20": + version "2.3.18-alpha.20" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.20.tgz#89aa6e1283f94e62c9d1238a358e2cd197f61bff" + integrity sha512-gDpmGIq+4LlTbZnG5iUzidhhaxd25aqEuO4J0LJ/p9Mg8UyTuBi8xfXovfBXa9/jpS/fSk1804obWIjIKZEp1w== dependencies: - "@budibase/backend-core" "2.3.18-alpha.19" + "@budibase/backend-core" "2.3.18-alpha.20" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.19" + "@budibase/types" "2.3.18-alpha.20" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.19": - version "2.3.18-alpha.19" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.19.tgz#0d9b2686d5da555c8c62b87311dfed597e169189" - integrity sha512-x4VZvF+nDuULY8pfL6BlaI8pA7XNuhRhSsja+UXlSU8vtg1QCjb68mtINm90E/dvAVHnDzVGtp5gBd59dTuXNw== +"@budibase/types@2.3.18-alpha.20": + version "2.3.18-alpha.20" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.20.tgz#58e2350dac36e90ed690b9c6e547b93c78efcd19" + integrity sha512-bi2GWQ3OAVq0NMCYUB8SGAfz1l08yo7Qj8oQXoA3HztMkCmc9VpgFvZG7HLG4uCHKj2RgulA+54Yi3gStICp4w== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index 3e34eed399..876268161a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.20", - "@budibase/pro": "2.3.18-alpha.19", + "@budibase/pro": "2.3.18-alpha.20", "@budibase/string-templates": "2.3.18-alpha.20", "@budibase/types": "2.3.18-alpha.20", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 71b50625e5..4dc1912559 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.19": - version "2.3.18-alpha.19" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.19.tgz#78e401d779afd2cd4b88cff3b0541696f366d8cd" - integrity sha512-hft+QscukDPvleR5qE+MSVNVJce8lvq9BPBV7JK0CnJZn7qyKe47l0shUCbpjN/yVL33pb4RRlKeC12qKlSrFQ== +"@budibase/backend-core@2.3.18-alpha.20": + version "2.3.18-alpha.20" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.20.tgz#ab5c88005c84e1151116fe33477641452f766a38" + integrity sha512-NPvVLSghrk4L5tzt/1hDg4KQnr11aOLC8lCR4vE1qA/Nqg4MQjU0unNWXiefqZeDx0PZtz+7Q+/Eq9ZGlwqYww== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.19" + "@budibase/types" "2.3.18-alpha.20" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.19": - version "2.3.18-alpha.19" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.19.tgz#9defc7201aa9f9591d18738335ef59e3dfbe4b4a" - integrity sha512-E8WCEJXYbOb+qNTSc2cHT7tN1+25SPtdAyRcvC8nRyV1AucOh80G/lTiA8SxlsZIC7Dzy5tcaFsMebsiySlUkg== +"@budibase/pro@2.3.18-alpha.20": + version "2.3.18-alpha.20" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.20.tgz#89aa6e1283f94e62c9d1238a358e2cd197f61bff" + integrity sha512-gDpmGIq+4LlTbZnG5iUzidhhaxd25aqEuO4J0LJ/p9Mg8UyTuBi8xfXovfBXa9/jpS/fSk1804obWIjIKZEp1w== dependencies: - "@budibase/backend-core" "2.3.18-alpha.19" + "@budibase/backend-core" "2.3.18-alpha.20" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.19" + "@budibase/types" "2.3.18-alpha.20" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.19": - version "2.3.18-alpha.19" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.19.tgz#0d9b2686d5da555c8c62b87311dfed597e169189" - integrity sha512-x4VZvF+nDuULY8pfL6BlaI8pA7XNuhRhSsja+UXlSU8vtg1QCjb68mtINm90E/dvAVHnDzVGtp5gBd59dTuXNw== +"@budibase/types@2.3.18-alpha.20": + version "2.3.18-alpha.20" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.20.tgz#58e2350dac36e90ed690b9c6e547b93c78efcd19" + integrity sha512-bi2GWQ3OAVq0NMCYUB8SGAfz1l08yo7Qj8oQXoA3HztMkCmc9VpgFvZG7HLG4uCHKj2RgulA+54Yi3gStICp4w== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From 88ce23e720e70058aae6f9e2579c8c62d8c4f96e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 15:13:55 +0000 Subject: [PATCH 048/193] v2.3.18-alpha.21 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index ac697c6bd3..977b671eb7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 58e2b3e927..b56a7ef2e3 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.20", + "@budibase/types": "2.3.18-alpha.21", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 595ba27069..65372c7b0d 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.20", + "@budibase/string-templates": "2.3.18-alpha.21", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index 7c01f3083c..a3c35117f9 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.20", - "@budibase/client": "2.3.18-alpha.20", - "@budibase/frontend-core": "2.3.18-alpha.20", - "@budibase/string-templates": "2.3.18-alpha.20", + "@budibase/bbui": "2.3.18-alpha.21", + "@budibase/client": "2.3.18-alpha.21", + "@budibase/frontend-core": "2.3.18-alpha.21", + "@budibase/string-templates": "2.3.18-alpha.21", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 4f16f81669..965c485570 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.20", - "@budibase/string-templates": "2.3.18-alpha.20", - "@budibase/types": "2.3.18-alpha.20", + "@budibase/backend-core": "2.3.18-alpha.21", + "@budibase/string-templates": "2.3.18-alpha.21", + "@budibase/types": "2.3.18-alpha.21", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index aecd01364f..6c9afa1fd2 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.20", - "@budibase/frontend-core": "2.3.18-alpha.20", - "@budibase/string-templates": "2.3.18-alpha.20", + "@budibase/bbui": "2.3.18-alpha.21", + "@budibase/frontend-core": "2.3.18-alpha.21", + "@budibase/string-templates": "2.3.18-alpha.21", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index edb47d4cdd..010ca21ae3 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.20", + "@budibase/bbui": "2.3.18-alpha.21", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 295dccfd17..deb86013b4 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index b000f96d92..a59201ac55 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.20", - "@budibase/client": "2.3.18-alpha.20", + "@budibase/backend-core": "2.3.18-alpha.21", + "@budibase/client": "2.3.18-alpha.21", "@budibase/pro": "2.3.18-alpha.20", - "@budibase/string-templates": "2.3.18-alpha.20", - "@budibase/types": "2.3.18-alpha.20", + "@budibase/string-templates": "2.3.18-alpha.21", + "@budibase/types": "2.3.18-alpha.21", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 107311a948..59354ec465 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 4e3512f896..10091e6c01 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 876268161a..6affd4c667 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.20", + "version": "2.3.18-alpha.21", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.20", + "@budibase/backend-core": "2.3.18-alpha.21", "@budibase/pro": "2.3.18-alpha.20", - "@budibase/string-templates": "2.3.18-alpha.20", - "@budibase/types": "2.3.18-alpha.20", + "@budibase/string-templates": "2.3.18-alpha.21", + "@budibase/types": "2.3.18-alpha.21", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From ac8efa2535909b13013183ecdbd337199c2b8586 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 15:17:01 +0000 Subject: [PATCH 049/193] Update pro version to 2.3.18-alpha.21 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index a59201ac55..8ed9b88de9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.21", "@budibase/client": "2.3.18-alpha.21", - "@budibase/pro": "2.3.18-alpha.20", + "@budibase/pro": "2.3.18-alpha.21", "@budibase/string-templates": "2.3.18-alpha.21", "@budibase/types": "2.3.18-alpha.21", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index d8e7d4bfe9..303a254665 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.20": - version "2.3.18-alpha.20" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.20.tgz#ab5c88005c84e1151116fe33477641452f766a38" - integrity sha512-NPvVLSghrk4L5tzt/1hDg4KQnr11aOLC8lCR4vE1qA/Nqg4MQjU0unNWXiefqZeDx0PZtz+7Q+/Eq9ZGlwqYww== +"@budibase/backend-core@2.3.18-alpha.21": + version "2.3.18-alpha.21" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.21.tgz#27197d800397a898358918c0fe0507603fd6feec" + integrity sha512-vT2wC7hmS2ssa5rOdgkAKHwJA+5I7R2GFqcBbYHOS/b13tM/Okcecuoid2t+13eBGxh9p9fzY1lp8w0RbB/Mkw== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.20" + "@budibase/types" "2.3.18-alpha.21" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.20": - version "2.3.18-alpha.20" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.20.tgz#89aa6e1283f94e62c9d1238a358e2cd197f61bff" - integrity sha512-gDpmGIq+4LlTbZnG5iUzidhhaxd25aqEuO4J0LJ/p9Mg8UyTuBi8xfXovfBXa9/jpS/fSk1804obWIjIKZEp1w== +"@budibase/pro@2.3.18-alpha.21": + version "2.3.18-alpha.21" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.21.tgz#bff5d6124bc9ed0bff1c91620f60faf32428f574" + integrity sha512-qHfGiFYUz4B0CBb78jqUJOLAyxBiwWTkHquCyYGfleI6bFJvV2ypI36GTPyvh3uYXiPAHmk78wTPQTNSka4eFA== dependencies: - "@budibase/backend-core" "2.3.18-alpha.20" + "@budibase/backend-core" "2.3.18-alpha.21" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.20" + "@budibase/types" "2.3.18-alpha.21" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.20": - version "2.3.18-alpha.20" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.20.tgz#58e2350dac36e90ed690b9c6e547b93c78efcd19" - integrity sha512-bi2GWQ3OAVq0NMCYUB8SGAfz1l08yo7Qj8oQXoA3HztMkCmc9VpgFvZG7HLG4uCHKj2RgulA+54Yi3gStICp4w== +"@budibase/types@2.3.18-alpha.21": + version "2.3.18-alpha.21" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.21.tgz#847d216d348b8fce69d20f4ebff9456977360a43" + integrity sha512-IsFkj9lc3+bMThsiGjTJ+W0YMAo4EnY5igOUkhiLF4Osf6EUfTklTaDNGUDc4xsmFvj/0VN2A5Wlied9orbbKA== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index 6affd4c667..fcf4d381f0 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.21", - "@budibase/pro": "2.3.18-alpha.20", + "@budibase/pro": "2.3.18-alpha.21", "@budibase/string-templates": "2.3.18-alpha.21", "@budibase/types": "2.3.18-alpha.21", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 4dc1912559..8c19fadafc 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.20": - version "2.3.18-alpha.20" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.20.tgz#ab5c88005c84e1151116fe33477641452f766a38" - integrity sha512-NPvVLSghrk4L5tzt/1hDg4KQnr11aOLC8lCR4vE1qA/Nqg4MQjU0unNWXiefqZeDx0PZtz+7Q+/Eq9ZGlwqYww== +"@budibase/backend-core@2.3.18-alpha.21": + version "2.3.18-alpha.21" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.21.tgz#27197d800397a898358918c0fe0507603fd6feec" + integrity sha512-vT2wC7hmS2ssa5rOdgkAKHwJA+5I7R2GFqcBbYHOS/b13tM/Okcecuoid2t+13eBGxh9p9fzY1lp8w0RbB/Mkw== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.20" + "@budibase/types" "2.3.18-alpha.21" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.20": - version "2.3.18-alpha.20" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.20.tgz#89aa6e1283f94e62c9d1238a358e2cd197f61bff" - integrity sha512-gDpmGIq+4LlTbZnG5iUzidhhaxd25aqEuO4J0LJ/p9Mg8UyTuBi8xfXovfBXa9/jpS/fSk1804obWIjIKZEp1w== +"@budibase/pro@2.3.18-alpha.21": + version "2.3.18-alpha.21" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.21.tgz#bff5d6124bc9ed0bff1c91620f60faf32428f574" + integrity sha512-qHfGiFYUz4B0CBb78jqUJOLAyxBiwWTkHquCyYGfleI6bFJvV2ypI36GTPyvh3uYXiPAHmk78wTPQTNSka4eFA== dependencies: - "@budibase/backend-core" "2.3.18-alpha.20" + "@budibase/backend-core" "2.3.18-alpha.21" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.20" + "@budibase/types" "2.3.18-alpha.21" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.20": - version "2.3.18-alpha.20" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.20.tgz#58e2350dac36e90ed690b9c6e547b93c78efcd19" - integrity sha512-bi2GWQ3OAVq0NMCYUB8SGAfz1l08yo7Qj8oQXoA3HztMkCmc9VpgFvZG7HLG4uCHKj2RgulA+54Yi3gStICp4w== +"@budibase/types@2.3.18-alpha.21": + version "2.3.18-alpha.21" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.21.tgz#847d216d348b8fce69d20f4ebff9456977360a43" + integrity sha512-IsFkj9lc3+bMThsiGjTJ+W0YMAo4EnY5igOUkhiLF4Osf6EUfTklTaDNGUDc4xsmFvj/0VN2A5Wlied9orbbKA== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From 467ad71dcc93ddbd739a74aa2848071c66e7c568 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Wed, 1 Mar 2023 15:30:15 +0000 Subject: [PATCH 050/193] Move enforceable sso to enterprise --- .../builder/src/pages/builder/portal/settings/auth/index.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/pages/builder/portal/settings/auth/index.svelte b/packages/builder/src/pages/builder/portal/settings/auth/index.svelte index af272b5d7c..0e82dd31e7 100644 --- a/packages/builder/src/pages/builder/portal/settings/auth/index.svelte +++ b/packages/builder/src/pages/builder/portal/settings/auth/index.svelte @@ -368,7 +368,7 @@
{#if !$licensing.enforceableSSO} - Business plan + Enterprise plan {/if}
From 6917abb6e70530590712f480f5b3d9a84096423d Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Wed, 1 Mar 2023 15:31:46 +0000 Subject: [PATCH 051/193] lint --- packages/worker/src/api/routes/global/tests/auth.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/worker/src/api/routes/global/tests/auth.spec.ts b/packages/worker/src/api/routes/global/tests/auth.spec.ts index f79bfb538c..6c133df652 100644 --- a/packages/worker/src/api/routes/global/tests/auth.spec.ts +++ b/packages/worker/src/api/routes/global/tests/auth.spec.ts @@ -170,7 +170,7 @@ describe("/api/global/auth", () => { async function testSSOUser() { const { res } = await config.api.auth.requestPasswordReset( sendMailMock, - user.email, + user.email ) expect(sendMailMock).not.toHaveBeenCalled() } From 4798271b3a4d8c38a42c587b8f12687698429851 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 15:40:29 +0000 Subject: [PATCH 052/193] v2.3.18-alpha.22 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index 977b671eb7..a81b247eda 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index b56a7ef2e3..c7997eaee8 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.21", + "@budibase/types": "2.3.18-alpha.22", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 65372c7b0d..14cd1625d6 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.21", + "@budibase/string-templates": "2.3.18-alpha.22", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index a3c35117f9..e4d7423d4a 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.21", - "@budibase/client": "2.3.18-alpha.21", - "@budibase/frontend-core": "2.3.18-alpha.21", - "@budibase/string-templates": "2.3.18-alpha.21", + "@budibase/bbui": "2.3.18-alpha.22", + "@budibase/client": "2.3.18-alpha.22", + "@budibase/frontend-core": "2.3.18-alpha.22", + "@budibase/string-templates": "2.3.18-alpha.22", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 965c485570..29249a3d19 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.21", - "@budibase/string-templates": "2.3.18-alpha.21", - "@budibase/types": "2.3.18-alpha.21", + "@budibase/backend-core": "2.3.18-alpha.22", + "@budibase/string-templates": "2.3.18-alpha.22", + "@budibase/types": "2.3.18-alpha.22", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index 6c9afa1fd2..e3655d9aca 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.21", - "@budibase/frontend-core": "2.3.18-alpha.21", - "@budibase/string-templates": "2.3.18-alpha.21", + "@budibase/bbui": "2.3.18-alpha.22", + "@budibase/frontend-core": "2.3.18-alpha.22", + "@budibase/string-templates": "2.3.18-alpha.22", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index 010ca21ae3..de3114300e 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.21", + "@budibase/bbui": "2.3.18-alpha.22", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index deb86013b4..11ef8df0a8 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 8ed9b88de9..c8c9f8e177 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.21", - "@budibase/client": "2.3.18-alpha.21", + "@budibase/backend-core": "2.3.18-alpha.22", + "@budibase/client": "2.3.18-alpha.22", "@budibase/pro": "2.3.18-alpha.21", - "@budibase/string-templates": "2.3.18-alpha.21", - "@budibase/types": "2.3.18-alpha.21", + "@budibase/string-templates": "2.3.18-alpha.22", + "@budibase/types": "2.3.18-alpha.22", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 59354ec465..0ec2481cef 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index 10091e6c01..dbb09cb4d4 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index fcf4d381f0..3435c7772f 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.21", + "version": "2.3.18-alpha.22", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.21", + "@budibase/backend-core": "2.3.18-alpha.22", "@budibase/pro": "2.3.18-alpha.21", - "@budibase/string-templates": "2.3.18-alpha.21", - "@budibase/types": "2.3.18-alpha.21", + "@budibase/string-templates": "2.3.18-alpha.22", + "@budibase/types": "2.3.18-alpha.22", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From b8c3dce88770a74c05648f119d2d09098950931e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 15:43:27 +0000 Subject: [PATCH 053/193] Update pro version to 2.3.18-alpha.22 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index c8c9f8e177..f034e989b9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.22", "@budibase/client": "2.3.18-alpha.22", - "@budibase/pro": "2.3.18-alpha.21", + "@budibase/pro": "2.3.18-alpha.22", "@budibase/string-templates": "2.3.18-alpha.22", "@budibase/types": "2.3.18-alpha.22", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 303a254665..5d58e761da 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.21": - version "2.3.18-alpha.21" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.21.tgz#27197d800397a898358918c0fe0507603fd6feec" - integrity sha512-vT2wC7hmS2ssa5rOdgkAKHwJA+5I7R2GFqcBbYHOS/b13tM/Okcecuoid2t+13eBGxh9p9fzY1lp8w0RbB/Mkw== +"@budibase/backend-core@2.3.18-alpha.22": + version "2.3.18-alpha.22" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.22.tgz#d3007f22edbc323e4e66eb8c3bda2543b3e544e8" + integrity sha512-ksft4P7p1v+DRYvpEsNKCb96FwhXZEjVTVDrezjHIfu8WQIYs8jj73oSlHE7e3Jke6dqFzfsK5Mqa13/w/+lRQ== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.21" + "@budibase/types" "2.3.18-alpha.22" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.21": - version "2.3.18-alpha.21" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.21.tgz#bff5d6124bc9ed0bff1c91620f60faf32428f574" - integrity sha512-qHfGiFYUz4B0CBb78jqUJOLAyxBiwWTkHquCyYGfleI6bFJvV2ypI36GTPyvh3uYXiPAHmk78wTPQTNSka4eFA== +"@budibase/pro@2.3.18-alpha.22": + version "2.3.18-alpha.22" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.22.tgz#5ae0586b0eccaaa83cfb73572e3594f3d316cccc" + integrity sha512-BRLl7oMRnWKl7KxF7koWAqkZOjTLFcmgbRrB1Sn3B085KS/D0qE+UTMoskoqHfvKVGZaNKpWzAR9mZysSp3aNA== dependencies: - "@budibase/backend-core" "2.3.18-alpha.21" + "@budibase/backend-core" "2.3.18-alpha.22" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.21" + "@budibase/types" "2.3.18-alpha.22" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.21": - version "2.3.18-alpha.21" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.21.tgz#847d216d348b8fce69d20f4ebff9456977360a43" - integrity sha512-IsFkj9lc3+bMThsiGjTJ+W0YMAo4EnY5igOUkhiLF4Osf6EUfTklTaDNGUDc4xsmFvj/0VN2A5Wlied9orbbKA== +"@budibase/types@2.3.18-alpha.22": + version "2.3.18-alpha.22" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.22.tgz#e98dace1f3a9ee09d454e7da42355875c497606f" + integrity sha512-A7wwQkS3yYau09tIGsCq6cwnKpnZGO63dqspaS93AO2Mzy199tMKIlI0F28akhfBqzM6V0VAZ0AWAjn6Jg47JA== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index 3435c7772f..5db25f5af4 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.22", - "@budibase/pro": "2.3.18-alpha.21", + "@budibase/pro": "2.3.18-alpha.22", "@budibase/string-templates": "2.3.18-alpha.22", "@budibase/types": "2.3.18-alpha.22", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 8c19fadafc..f814dbb447 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.21": - version "2.3.18-alpha.21" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.21.tgz#27197d800397a898358918c0fe0507603fd6feec" - integrity sha512-vT2wC7hmS2ssa5rOdgkAKHwJA+5I7R2GFqcBbYHOS/b13tM/Okcecuoid2t+13eBGxh9p9fzY1lp8w0RbB/Mkw== +"@budibase/backend-core@2.3.18-alpha.22": + version "2.3.18-alpha.22" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.22.tgz#d3007f22edbc323e4e66eb8c3bda2543b3e544e8" + integrity sha512-ksft4P7p1v+DRYvpEsNKCb96FwhXZEjVTVDrezjHIfu8WQIYs8jj73oSlHE7e3Jke6dqFzfsK5Mqa13/w/+lRQ== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.21" + "@budibase/types" "2.3.18-alpha.22" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.21": - version "2.3.18-alpha.21" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.21.tgz#bff5d6124bc9ed0bff1c91620f60faf32428f574" - integrity sha512-qHfGiFYUz4B0CBb78jqUJOLAyxBiwWTkHquCyYGfleI6bFJvV2ypI36GTPyvh3uYXiPAHmk78wTPQTNSka4eFA== +"@budibase/pro@2.3.18-alpha.22": + version "2.3.18-alpha.22" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.22.tgz#5ae0586b0eccaaa83cfb73572e3594f3d316cccc" + integrity sha512-BRLl7oMRnWKl7KxF7koWAqkZOjTLFcmgbRrB1Sn3B085KS/D0qE+UTMoskoqHfvKVGZaNKpWzAR9mZysSp3aNA== dependencies: - "@budibase/backend-core" "2.3.18-alpha.21" + "@budibase/backend-core" "2.3.18-alpha.22" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.21" + "@budibase/types" "2.3.18-alpha.22" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.21": - version "2.3.18-alpha.21" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.21.tgz#847d216d348b8fce69d20f4ebff9456977360a43" - integrity sha512-IsFkj9lc3+bMThsiGjTJ+W0YMAo4EnY5igOUkhiLF4Osf6EUfTklTaDNGUDc4xsmFvj/0VN2A5Wlied9orbbKA== +"@budibase/types@2.3.18-alpha.22": + version "2.3.18-alpha.22" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.22.tgz#e98dace1f3a9ee09d454e7da42355875c497606f" + integrity sha512-A7wwQkS3yYau09tIGsCq6cwnKpnZGO63dqspaS93AO2Mzy199tMKIlI0F28akhfBqzM6V0VAZ0AWAjn6Jg47JA== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From bba6f6941ce9da58725eacd89d9336dfde947571 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 1 Mar 2023 16:38:19 +0000 Subject: [PATCH 054/193] Minor fix for audit log system - after the switch to use an async queue for handling of audit log storage, context was lost - in multi-tenant environments need to carry the tenant ID into the queue job so that context can be applied. --- .../events/processors/AuditLogsProcessor.ts | 43 ++++++++++--------- packages/types/src/sdk/auditLogs.ts | 1 + 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/packages/backend-core/src/events/processors/AuditLogsProcessor.ts b/packages/backend-core/src/events/processors/AuditLogsProcessor.ts index fd68b66871..d888d4f438 100644 --- a/packages/backend-core/src/events/processors/AuditLogsProcessor.ts +++ b/packages/backend-core/src/events/processors/AuditLogsProcessor.ts @@ -8,7 +8,7 @@ import { HostInfo, } from "@budibase/types" import { EventProcessor } from "./types" -import { getAppId } from "../../context" +import { getAppId, doInTenant } from "../../context" import BullQueue from "bull" import { createQueue, JobQueue } from "../../queue" import { isAudited } from "../../utils" @@ -26,28 +26,30 @@ export default class AuditLogsProcessor implements EventProcessor { JobQueue.AUDIT_LOG ) return AuditLogsProcessor.auditLogQueue.process(async job => { - let properties = job.data.properties - if (properties.audited) { - properties = { - ...properties, - ...properties.audited, + return doInTenant(job.data.tenantId, async () => { + let properties = job.data.properties + if (properties.audited) { + properties = { + ...properties, + ...properties.audited, + } + delete properties.audited } - delete properties.audited - } - // this feature is disabled by default due to privacy requirements - // in some countries - available as env var in-case it is desired - // in self host deployments - let hostInfo: HostInfo | undefined = {} - if (env.ENABLE_AUDIT_LOG_IP_ADDR) { - hostInfo = job.data.opts.hostInfo - } + // this feature is disabled by default due to privacy requirements + // in some countries - available as env var in-case it is desired + // in self host deployments + let hostInfo: HostInfo | undefined = {} + if (env.ENABLE_AUDIT_LOG_IP_ADDR) { + hostInfo = job.data.opts.hostInfo + } - await writeAuditLogs(job.data.event, properties, { - userId: job.data.opts.userId, - timestamp: job.data.opts.timestamp, - appId: job.data.opts.appId, - hostInfo, + await writeAuditLogs(job.data.event, properties, { + userId: job.data.opts.userId, + timestamp: job.data.opts.timestamp, + appId: job.data.opts.appId, + hostInfo, + }) }) }) } @@ -72,6 +74,7 @@ export default class AuditLogsProcessor implements EventProcessor { appId: getAppId(), hostInfo: identity.hostInfo, }, + tenantId: identity.tenantId!, }) } } diff --git a/packages/types/src/sdk/auditLogs.ts b/packages/types/src/sdk/auditLogs.ts index 0322d2e862..cf12a79688 100644 --- a/packages/types/src/sdk/auditLogs.ts +++ b/packages/types/src/sdk/auditLogs.ts @@ -18,4 +18,5 @@ export type AuditLogQueueEvent = { event: Event properties: any opts: AuditWriteOpts + tenantId: string } From 0338a8e341d4d6891a31748a1adaf88ee5ffd82e Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 17:34:57 +0000 Subject: [PATCH 055/193] v2.3.18-alpha.23 --- lerna.json | 2 +- packages/backend-core/package.json | 4 ++-- packages/bbui/package.json | 4 ++-- packages/builder/package.json | 10 +++++----- packages/cli/package.json | 8 ++++---- packages/client/package.json | 8 ++++---- packages/frontend-core/package.json | 4 ++-- packages/sdk/package.json | 2 +- packages/server/package.json | 10 +++++----- packages/string-templates/package.json | 2 +- packages/types/package.json | 2 +- packages/worker/package.json | 8 ++++---- 12 files changed, 32 insertions(+), 32 deletions(-) diff --git a/lerna.json b/lerna.json index a81b247eda..f489e313bb 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index c7997eaee8..90574207e3 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -24,7 +24,7 @@ "dependencies": { "@budibase/nano": "10.1.1", "@budibase/pouchdb-replication-stream": "1.2.10", - "@budibase/types": "2.3.18-alpha.22", + "@budibase/types": "2.3.18-alpha.23", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-cloudfront-sign": "2.2.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 14cd1625d6..1f31710eb2 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/bbui", "description": "A UI solution used in the different Budibase projects.", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "license": "MPL-2.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", @@ -38,7 +38,7 @@ ], "dependencies": { "@adobe/spectrum-css-workflow-icons": "1.2.1", - "@budibase/string-templates": "2.3.18-alpha.22", + "@budibase/string-templates": "2.3.18-alpha.23", "@spectrum-css/accordion": "3.0.24", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", diff --git a/packages/builder/package.json b/packages/builder/package.json index e4d7423d4a..9b790f42c0 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "license": "GPL-3.0", "private": true, "scripts": { @@ -58,10 +58,10 @@ } }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.22", - "@budibase/client": "2.3.18-alpha.22", - "@budibase/frontend-core": "2.3.18-alpha.22", - "@budibase/string-templates": "2.3.18-alpha.22", + "@budibase/bbui": "2.3.18-alpha.23", + "@budibase/client": "2.3.18-alpha.23", + "@budibase/frontend-core": "2.3.18-alpha.23", + "@budibase/string-templates": "2.3.18-alpha.23", "@fortawesome/fontawesome-svg-core": "^6.2.1", "@fortawesome/free-brands-svg-icons": "^6.2.1", "@fortawesome/free-solid-svg-icons": "^6.2.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 29249a3d19..37023c4988 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { @@ -26,9 +26,9 @@ "outputPath": "build" }, "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.22", - "@budibase/string-templates": "2.3.18-alpha.22", - "@budibase/types": "2.3.18-alpha.22", + "@budibase/backend-core": "2.3.18-alpha.23", + "@budibase/string-templates": "2.3.18-alpha.23", + "@budibase/types": "2.3.18-alpha.23", "axios": "0.21.2", "chalk": "4.1.0", "cli-progress": "3.11.2", diff --git a/packages/client/package.json b/packages/client/package.json index e3655d9aca..f08826a423 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "license": "MPL-2.0", "module": "dist/budibase-client.js", "main": "dist/budibase-client.js", @@ -19,9 +19,9 @@ "dev:builder": "rollup -cw" }, "dependencies": { - "@budibase/bbui": "2.3.18-alpha.22", - "@budibase/frontend-core": "2.3.18-alpha.22", - "@budibase/string-templates": "2.3.18-alpha.22", + "@budibase/bbui": "2.3.18-alpha.23", + "@budibase/frontend-core": "2.3.18-alpha.23", + "@budibase/string-templates": "2.3.18-alpha.23", "@spectrum-css/button": "^3.0.3", "@spectrum-css/card": "^3.0.3", "@spectrum-css/divider": "^1.0.3", diff --git a/packages/frontend-core/package.json b/packages/frontend-core/package.json index de3114300e..3a6ad17f1b 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "2.3.18-alpha.22", + "@budibase/bbui": "2.3.18-alpha.23", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 11ef8df0a8..b76ae28e27 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index f034e989b9..bfbfa28322 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase Web Server", "main": "src/index.ts", "repository": { @@ -43,11 +43,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", - "@budibase/backend-core": "2.3.18-alpha.22", - "@budibase/client": "2.3.18-alpha.22", + "@budibase/backend-core": "2.3.18-alpha.23", + "@budibase/client": "2.3.18-alpha.23", "@budibase/pro": "2.3.18-alpha.22", - "@budibase/string-templates": "2.3.18-alpha.22", - "@budibase/types": "2.3.18-alpha.22", + "@budibase/string-templates": "2.3.18-alpha.23", + "@budibase/types": "2.3.18-alpha.23", "@bull-board/api": "3.7.0", "@bull-board/koa": "3.9.4", "@elastic/elasticsearch": "7.10.0", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 0ec2481cef..b2157fce57 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/types/package.json b/packages/types/package.json index dbb09cb4d4..75103ae043 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase types", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/worker/package.json b/packages/worker/package.json index 5db25f5af4..87c2542270 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.3.18-alpha.22", + "version": "2.3.18-alpha.23", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "2.3.18-alpha.22", + "@budibase/backend-core": "2.3.18-alpha.23", "@budibase/pro": "2.3.18-alpha.22", - "@budibase/string-templates": "2.3.18-alpha.22", - "@budibase/types": "2.3.18-alpha.22", + "@budibase/string-templates": "2.3.18-alpha.23", + "@budibase/types": "2.3.18-alpha.23", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 6fdc328cd99d9557cb8982cf3ab3e63fe59a1cd8 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 1 Mar 2023 17:37:52 +0000 Subject: [PATCH 056/193] Update pro version to 2.3.18-alpha.23 --- packages/server/package.json | 2 +- packages/server/yarn.lock | 30 +++++++++++++++--------------- packages/worker/package.json | 2 +- packages/worker/yarn.lock | 30 +++++++++++++++--------------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/packages/server/package.json b/packages/server/package.json index bfbfa28322..6be5c21cdc 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -45,7 +45,7 @@ "@apidevtools/swagger-parser": "10.0.3", "@budibase/backend-core": "2.3.18-alpha.23", "@budibase/client": "2.3.18-alpha.23", - "@budibase/pro": "2.3.18-alpha.22", + "@budibase/pro": "2.3.18-alpha.23", "@budibase/string-templates": "2.3.18-alpha.23", "@budibase/types": "2.3.18-alpha.23", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 5d58e761da..4fdfe24319 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -1278,14 +1278,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.22": - version "2.3.18-alpha.22" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.22.tgz#d3007f22edbc323e4e66eb8c3bda2543b3e544e8" - integrity sha512-ksft4P7p1v+DRYvpEsNKCb96FwhXZEjVTVDrezjHIfu8WQIYs8jj73oSlHE7e3Jke6dqFzfsK5Mqa13/w/+lRQ== +"@budibase/backend-core@2.3.18-alpha.23": + version "2.3.18-alpha.23" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.23.tgz#521f8e441b4f5072322441459e60e6320fbe8d2d" + integrity sha512-3mqzGt+jqQl762ER5BhIrDuLuMYu77ATZyDr/7oZIILYzhSuzo34uvdbnPyOFLYzmjindk0cl/79imgVAPYK1Q== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.22" + "@budibase/types" "2.3.18-alpha.23" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -1417,14 +1417,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.22": - version "2.3.18-alpha.22" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.22.tgz#5ae0586b0eccaaa83cfb73572e3594f3d316cccc" - integrity sha512-BRLl7oMRnWKl7KxF7koWAqkZOjTLFcmgbRrB1Sn3B085KS/D0qE+UTMoskoqHfvKVGZaNKpWzAR9mZysSp3aNA== +"@budibase/pro@2.3.18-alpha.23": + version "2.3.18-alpha.23" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.23.tgz#a0fd95f551108fece6de04465515c76e4f6ed316" + integrity sha512-WZQD2gcE73p8Xw+Sx7WKlCrZeevgXvKB4AAwcuBJmtmvkG+1s/V65mt9s/qe5QakUhZTLbmE4mgufBLncqr/Lw== dependencies: - "@budibase/backend-core" "2.3.18-alpha.22" + "@budibase/backend-core" "2.3.18-alpha.23" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.22" + "@budibase/types" "2.3.18-alpha.23" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1463,10 +1463,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.22": - version "2.3.18-alpha.22" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.22.tgz#e98dace1f3a9ee09d454e7da42355875c497606f" - integrity sha512-A7wwQkS3yYau09tIGsCq6cwnKpnZGO63dqspaS93AO2Mzy199tMKIlI0F28akhfBqzM6V0VAZ0AWAjn6Jg47JA== +"@budibase/types@2.3.18-alpha.23": + version "2.3.18-alpha.23" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.23.tgz#386a605d8170f650193871c875644a6a8fd5d8cf" + integrity sha512-r4CRDNHWuVduq5v3Y5QfxS3zOypF+D4cUVTvLIvZ2DstnJV3MquXlajTJReMJUMhCThJJSNDpD56KwblGWcUew== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index 87c2542270..087a1d18f3 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "2.3.18-alpha.23", - "@budibase/pro": "2.3.18-alpha.22", + "@budibase/pro": "2.3.18-alpha.23", "@budibase/string-templates": "2.3.18-alpha.23", "@budibase/types": "2.3.18-alpha.23", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index f814dbb447..18b4e3fc1e 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -475,14 +475,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.3.18-alpha.22": - version "2.3.18-alpha.22" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.22.tgz#d3007f22edbc323e4e66eb8c3bda2543b3e544e8" - integrity sha512-ksft4P7p1v+DRYvpEsNKCb96FwhXZEjVTVDrezjHIfu8WQIYs8jj73oSlHE7e3Jke6dqFzfsK5Mqa13/w/+lRQ== +"@budibase/backend-core@2.3.18-alpha.23": + version "2.3.18-alpha.23" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.3.18-alpha.23.tgz#521f8e441b4f5072322441459e60e6320fbe8d2d" + integrity sha512-3mqzGt+jqQl762ER5BhIrDuLuMYu77ATZyDr/7oZIILYzhSuzo34uvdbnPyOFLYzmjindk0cl/79imgVAPYK1Q== dependencies: "@budibase/nano" "10.1.1" "@budibase/pouchdb-replication-stream" "1.2.10" - "@budibase/types" "2.3.18-alpha.22" + "@budibase/types" "2.3.18-alpha.23" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-cloudfront-sign "2.2.0" @@ -564,14 +564,14 @@ pouchdb-promise "^6.0.4" through2 "^2.0.0" -"@budibase/pro@2.3.18-alpha.22": - version "2.3.18-alpha.22" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.22.tgz#5ae0586b0eccaaa83cfb73572e3594f3d316cccc" - integrity sha512-BRLl7oMRnWKl7KxF7koWAqkZOjTLFcmgbRrB1Sn3B085KS/D0qE+UTMoskoqHfvKVGZaNKpWzAR9mZysSp3aNA== +"@budibase/pro@2.3.18-alpha.23": + version "2.3.18-alpha.23" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.3.18-alpha.23.tgz#a0fd95f551108fece6de04465515c76e4f6ed316" + integrity sha512-WZQD2gcE73p8Xw+Sx7WKlCrZeevgXvKB4AAwcuBJmtmvkG+1s/V65mt9s/qe5QakUhZTLbmE4mgufBLncqr/Lw== dependencies: - "@budibase/backend-core" "2.3.18-alpha.22" + "@budibase/backend-core" "2.3.18-alpha.23" "@budibase/string-templates" "2.3.18-alpha.14" - "@budibase/types" "2.3.18-alpha.22" + "@budibase/types" "2.3.18-alpha.23" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -592,10 +592,10 @@ lodash "^4.17.20" vm2 "^3.9.4" -"@budibase/types@2.3.18-alpha.22": - version "2.3.18-alpha.22" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.22.tgz#e98dace1f3a9ee09d454e7da42355875c497606f" - integrity sha512-A7wwQkS3yYau09tIGsCq6cwnKpnZGO63dqspaS93AO2Mzy199tMKIlI0F28akhfBqzM6V0VAZ0AWAjn6Jg47JA== +"@budibase/types@2.3.18-alpha.23": + version "2.3.18-alpha.23" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.3.18-alpha.23.tgz#386a605d8170f650193871c875644a6a8fd5d8cf" + integrity sha512-r4CRDNHWuVduq5v3Y5QfxS3zOypF+D4cUVTvLIvZ2DstnJV3MquXlajTJReMJUMhCThJJSNDpD56KwblGWcUew== "@cspotcode/source-map-support@^0.8.0": version "0.8.1" From c5fc4ea521327d35e10d8f75173b1039f2c621cb Mon Sep 17 00:00:00 2001 From: Dean Date: Wed, 1 Mar 2023 17:40:33 +0000 Subject: [PATCH 057/193] Fix for group picker in the user details page to accommodate missing userGroups value on a user --- packages/builder/src/components/settings/UserGroupPicker.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/settings/UserGroupPicker.svelte b/packages/builder/src/components/settings/UserGroupPicker.svelte index 1c69e48da1..b1b59cda7a 100644 --- a/packages/builder/src/components/settings/UserGroupPicker.svelte +++ b/packages/builder/src/components/settings/UserGroupPicker.svelte @@ -18,7 +18,7 @@ return list.map(item => { return { ...item, - selected: selected.find(x => x === item._id) != null, + selected: selected?.find(x => x === item._id) != null, } }) } From 6a6bbb38c4ed43a095f54d46b9d750277cb980dd Mon Sep 17 00:00:00 2001 From: melohagan <101575380+melohagan@users.noreply.github.com> Date: Wed, 1 Mar 2023 17:41:50 +0000 Subject: [PATCH 058/193] Support navigate to link in new tab (#9800) * Support navigate to link in new tab * Add dropdown for Navigate To type * lint * Remove labels --- .../actions/NavigateTo.svelte | 66 +++++++++++++++---- packages/client/src/stores/routes.js | 21 +++--- packages/client/src/utils/buttonActions.js | 4 +- 3 files changed, 70 insertions(+), 21 deletions(-) diff --git a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/NavigateTo.svelte b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/NavigateTo.svelte index d90b645315..dca2887fb4 100644 --- a/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/NavigateTo.svelte +++ b/packages/builder/src/components/design/settings/controls/ButtonActionEditor/actions/NavigateTo.svelte @@ -1,22 +1,66 @@
- - (parameters.url = value.detail)} - {bindings} + +