From 1cd46327bf9249ea0e69dee5e6996903daa64331 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 7 Oct 2021 22:18:59 +0000 Subject: [PATCH 1/9] v0.9.160 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 510f605b3f..9c1d1db679 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.159", + "version": "0.9.160", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 5af97cb10a..9c81a03a1b 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.159", + "version": "0.9.160", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index bba2722293..dfb0fcb75b 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": "0.9.159", + "version": "0.9.160", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index f09c2e9c59..856168470d 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.159", + "version": "0.9.160", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.159", - "@budibase/client": "^0.9.159", + "@budibase/bbui": "^0.9.160", + "@budibase/client": "^0.9.160", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.159", + "@budibase/string-templates": "^0.9.160", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 4024bf0906..5f35fb3984 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.159", + "version": "0.9.160", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 4b1e88b2fa..a5252dcfdf 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.159", + "version": "0.9.160", "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": "^0.9.159", + "@budibase/bbui": "^0.9.160", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.159", + "@budibase/string-templates": "^0.9.160", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index f3fa66a595..6a9c127f67 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.159", + "version": "0.9.160", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -66,9 +66,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.159", - "@budibase/client": "^0.9.159", - "@budibase/string-templates": "^0.9.159", + "@budibase/auth": "^0.9.160", + "@budibase/client": "^0.9.160", + "@budibase/string-templates": "^0.9.160", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index fa2e0ae8c0..1459cd1f4d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.159", + "version": "0.9.160", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 30e7107fd3..b628591971 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.159", + "version": "0.9.160", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -27,8 +27,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.159", - "@budibase/string-templates": "^0.9.159", + "@budibase/auth": "^0.9.160", + "@budibase/string-templates": "^0.9.160", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0", From 22527970b237e0cbc64f579fec1eebe42dc1c778 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Thu, 7 Oct 2021 22:32:31 +0000 Subject: [PATCH 2/9] v0.9.161 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 9c1d1db679..3b72b76b32 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.160", + "version": "0.9.161", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 9c81a03a1b..2bfc50a6a3 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.160", + "version": "0.9.161", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index dfb0fcb75b..2afd4a5f30 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": "0.9.160", + "version": "0.9.161", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 856168470d..09f6fbc1e2 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.160", + "version": "0.9.161", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.160", - "@budibase/client": "^0.9.160", + "@budibase/bbui": "^0.9.161", + "@budibase/client": "^0.9.161", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.160", + "@budibase/string-templates": "^0.9.161", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 5f35fb3984..8bbef74dd7 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.160", + "version": "0.9.161", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index a5252dcfdf..c79e9d0c61 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.160", + "version": "0.9.161", "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": "^0.9.160", + "@budibase/bbui": "^0.9.161", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.160", + "@budibase/string-templates": "^0.9.161", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 6a9c127f67..5c5637e229 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.160", + "version": "0.9.161", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -66,9 +66,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.160", - "@budibase/client": "^0.9.160", - "@budibase/string-templates": "^0.9.160", + "@budibase/auth": "^0.9.161", + "@budibase/client": "^0.9.161", + "@budibase/string-templates": "^0.9.161", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 1459cd1f4d..a758d157cb 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.160", + "version": "0.9.161", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index b628591971..cd8b590f4d 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.160", + "version": "0.9.161", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -27,8 +27,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.160", - "@budibase/string-templates": "^0.9.160", + "@budibase/auth": "^0.9.161", + "@budibase/string-templates": "^0.9.161", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0", From 7a26f3769d54a14a202d8f36964844df9d7fb401 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 8 Oct 2021 18:21:40 +0100 Subject: [PATCH 3/9] Fixing some issues with cloud export/import, removing the ability to export and import your users as this was dangerous and didn't really work with passwords/SSO. --- .../admin/_components/ImportAppsModal.svelte | 5 ++- .../src/pages/builder/admin/index.svelte | 10 ++++- packages/builder/src/stores/portal/admin.js | 13 ++++++ .../server/src/api/controllers/application.js | 1 + packages/server/src/api/controllers/cloud.js | 41 ++++++++++++++----- packages/server/src/api/routes/cloud.js | 1 + .../worker/src/middleware/cloudRestricted.js | 2 +- 7 files changed, 58 insertions(+), 15 deletions(-) diff --git a/packages/builder/src/pages/builder/admin/_components/ImportAppsModal.svelte b/packages/builder/src/pages/builder/admin/_components/ImportAppsModal.svelte index 633147e910..de29e11301 100644 --- a/packages/builder/src/pages/builder/admin/_components/ImportAppsModal.svelte +++ b/packages/builder/src/pages/builder/admin/_components/ImportAppsModal.svelte @@ -1,6 +1,7 @@ @@ -73,7 +81,7 @@ > Change organisation - {:else if !cloud} + {:else if !cloud && !imported} { diff --git a/packages/builder/src/stores/portal/admin.js b/packages/builder/src/stores/portal/admin.js index ebe8294060..b9ed0f04b8 100644 --- a/packages/builder/src/stores/portal/admin.js +++ b/packages/builder/src/stores/portal/admin.js @@ -9,6 +9,7 @@ export function createAdminStore() { cloud: false, disableAccountPortal: false, accountPortalUrl: "", + importComplete: false, onboardingProgress: 0, checklist: { apps: { checked: false }, @@ -45,6 +46,17 @@ export function createAdminStore() { } } + async function checkImportComplete() { + const response = await api.get(`/api/cloud/import/complete`) + if (response.status === 200) { + const json = await response.json() + admin.update(store => { + store.importComplete = json ? json.imported : false + return store + }) + } + } + async function getEnvironment() { let multiTenancyEnabled = false let cloud = false @@ -79,6 +91,7 @@ export function createAdminStore() { return { subscribe: admin.subscribe, init, + checkImportComplete, unload, } } diff --git a/packages/server/src/api/controllers/application.js b/packages/server/src/api/controllers/application.js index 6608ba0cac..e3aac8bd63 100644 --- a/packages/server/src/api/controllers/application.js +++ b/packages/server/src/api/controllers/application.js @@ -86,6 +86,7 @@ async function getAppUrlIfNotInUse(ctx) { if ( url && deployedApps[url] != null && + ctx.params != null && deployedApps[url].appId !== ctx.params.appId ) { ctx.throw(400, "App name/URL is already in use.") diff --git a/packages/server/src/api/controllers/cloud.js b/packages/server/src/api/controllers/cloud.js index aac79bb9dd..a0057d68e4 100644 --- a/packages/server/src/api/controllers/cloud.js +++ b/packages/server/src/api/controllers/cloud.js @@ -28,15 +28,18 @@ exports.exportApps = async ctx => { ctx.throw(400, "Exporting only allowed in multi-tenant cloud environments.") } const apps = await getAllApps(CouchDB, { all: true }) - const globalDBString = await exportDB(getGlobalDBName()) + const globalDBString = await exportDB(getGlobalDBName(), { + filter: doc => !doc._id.startsWith(DocumentTypes.USER), + }) let allDBs = { global: globalDBString, } for (let app of apps) { + const appId = app.appId || app._id // only export the dev apps as they will be the latest, the user can republish the apps // in their self hosted environment - if (isDevAppID(app._id)) { - allDBs[app.name] = await exportDB(app._id) + if (isDevAppID(appId)) { + allDBs[app.name] = await exportDB(appId) } } const filename = `cloud-export-${new Date().getTime()}.txt` @@ -53,16 +56,26 @@ async function getAllDocType(db, docType) { return response.rows.map(row => row.doc) } +async function hasBeenImported() { + if (!env.SELF_HOSTED || env.MULTI_TENANCY) { + return true + } + const apps = await getAllApps(CouchDB, { all: true }) + return apps.length !== 0 +} + +exports.hasBeenImported = async ctx => { + ctx.body = { + imported: await hasBeenImported(), + } +} + exports.importApps = async ctx => { if (!env.SELF_HOSTED || env.MULTI_TENANCY) { ctx.throw(400, "Importing only allowed in self hosted environments.") } - const apps = await getAllApps(CouchDB, { all: true }) - if ( - apps.length !== 0 || - !ctx.request.files || - !ctx.request.files.importFile - ) { + const beenImported = await hasBeenImported() + if (beenImported || !ctx.request.files || !ctx.request.files.importFile) { ctx.throw( 400, "Import file is required and environment must be fresh to import apps." @@ -80,11 +93,17 @@ exports.importApps = async ctx => { for (let [appName, appImport] of Object.entries(dbs)) { await createApp(appName, appImport) } - // once apps are created clean up the global db + + // if there are any users make sure to remove them let users = await getAllDocType(globalDb, DocumentTypes.USER) + let userDeletionPromises = [] for (let user of users) { - delete user.tenantId + userDeletionPromises.push(globalDb.remove(user._id, user._rev)) } + if (userDeletionPromises.length > 0) { + await Promise.all(userDeletionPromises) + } + await globalDb.bulkDocs(users) ctx.body = { message: "Apps successfully imported.", diff --git a/packages/server/src/api/routes/cloud.js b/packages/server/src/api/routes/cloud.js index 214473f43f..02b501c399 100644 --- a/packages/server/src/api/routes/cloud.js +++ b/packages/server/src/api/routes/cloud.js @@ -9,5 +9,6 @@ router .get("/api/cloud/export", authorized(BUILDER), controller.exportApps) // has to be public, only run if apps don't exist .post("/api/cloud/import", controller.importApps) + .get("/api/cloud/import/complete", controller.hasBeenImported) module.exports = router diff --git a/packages/worker/src/middleware/cloudRestricted.js b/packages/worker/src/middleware/cloudRestricted.js index 10cdeaebd4..b29093f77e 100644 --- a/packages/worker/src/middleware/cloudRestricted.js +++ b/packages/worker/src/middleware/cloudRestricted.js @@ -6,7 +6,7 @@ const { Headers } = require("@budibase/auth").constants * Ensure that the correct API key has been supplied. */ module.exports = async (ctx, next) => { - if (!env.SELF_HOSTED) { + if (!env.SELF_HOSTED && !env.DISABLE_ACCOUNT_PORTAL) { const apiKey = ctx.request.headers[Headers.API_KEY] if (apiKey !== env.INTERNAL_API_KEY) { ctx.throw(403, "Unauthorized") From 9f14471ab547424f5a9681415ab88e44c27b99d0 Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 11 Oct 2021 15:17:21 +0000 Subject: [PATCH 4/9] v0.9.162 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 3b72b76b32..4b3ac04296 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.161", + "version": "0.9.162", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 2bfc50a6a3..8f960007d3 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.161", + "version": "0.9.162", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 2afd4a5f30..26ba439ab3 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": "0.9.161", + "version": "0.9.162", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 09f6fbc1e2..5d47275ea1 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.161", + "version": "0.9.162", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.161", - "@budibase/client": "^0.9.161", + "@budibase/bbui": "^0.9.162", + "@budibase/client": "^0.9.162", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.161", + "@budibase/string-templates": "^0.9.162", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 8bbef74dd7..6cf4e06f5c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.161", + "version": "0.9.162", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index c79e9d0c61..55e833091a 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.161", + "version": "0.9.162", "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": "^0.9.161", + "@budibase/bbui": "^0.9.162", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.161", + "@budibase/string-templates": "^0.9.162", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 5c5637e229..16c0ef0650 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.161", + "version": "0.9.162", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -66,9 +66,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.161", - "@budibase/client": "^0.9.161", - "@budibase/string-templates": "^0.9.161", + "@budibase/auth": "^0.9.162", + "@budibase/client": "^0.9.162", + "@budibase/string-templates": "^0.9.162", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index a758d157cb..445d2f9e87 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.161", + "version": "0.9.162", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index cd8b590f4d..02eee2ad5c 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.161", + "version": "0.9.162", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -27,8 +27,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.161", - "@budibase/string-templates": "^0.9.161", + "@budibase/auth": "^0.9.162", + "@budibase/string-templates": "^0.9.162", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0", From 1e4799ce9c113fca07ea4e9f77f05c616cb39a68 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 11 Oct 2021 17:59:44 +0100 Subject: [PATCH 5/9] Fixing an issue with env variables becoming numbers if they started with one. --- packages/server/src/environment.js | 7 ++++--- packages/worker/src/environment.js | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/server/src/environment.js b/packages/server/src/environment.js index e7bc35b04b..4044bb3787 100644 --- a/packages/server/src/environment.js +++ b/packages/server/src/environment.js @@ -74,9 +74,10 @@ module.exports = { }, } -// convert any strings to numbers if required, like "0" would be true otherwise +// clean up any environment variable edge cases for (let [key, value] of Object.entries(module.exports)) { - if (typeof value === "string" && !isNaN(parseInt(value))) { - module.exports[key] = parseInt(value) + // handle the edge case of "0" to disable an environment variable + if (value === "0") { + module.exports[key] = 0 } } diff --git a/packages/worker/src/environment.js b/packages/worker/src/environment.js index 74bd40314c..a1fab84112 100644 --- a/packages/worker/src/environment.js +++ b/packages/worker/src/environment.js @@ -52,3 +52,11 @@ module.exports = { return !isDev() }, } + +// clean up any environment variable edge cases +for (let [key, value] of Object.entries(module.exports)) { + // handle the edge case of "0" to disable an environment variable + if (value === "0") { + module.exports[key] = 0 + } +} From a71ea88855222a44e32fdcbab8ece22806f344ea Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Mon, 11 Oct 2021 17:22:28 +0000 Subject: [PATCH 6/9] v0.9.163 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 4b3ac04296..9d4d302f12 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.162", + "version": "0.9.163", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index 8f960007d3..fbf9c98ddb 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.162", + "version": "0.9.163", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 26ba439ab3..362c4732e4 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": "0.9.162", + "version": "0.9.163", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index 5d47275ea1..a3d7488a27 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.162", + "version": "0.9.163", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.162", - "@budibase/client": "^0.9.162", + "@budibase/bbui": "^0.9.163", + "@budibase/client": "^0.9.163", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.162", + "@budibase/string-templates": "^0.9.163", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index 6cf4e06f5c..e2cb7da75a 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.162", + "version": "0.9.163", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index 55e833091a..d445cae044 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.162", + "version": "0.9.163", "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": "^0.9.162", + "@budibase/bbui": "^0.9.163", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.162", + "@budibase/string-templates": "^0.9.163", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index 16c0ef0650..ca054202ea 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.162", + "version": "0.9.163", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -66,9 +66,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.162", - "@budibase/client": "^0.9.162", - "@budibase/string-templates": "^0.9.162", + "@budibase/auth": "^0.9.163", + "@budibase/client": "^0.9.163", + "@budibase/string-templates": "^0.9.163", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 445d2f9e87..883ebdc6bd 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.162", + "version": "0.9.163", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 02eee2ad5c..93e0f271d9 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.162", + "version": "0.9.163", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -27,8 +27,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.162", - "@budibase/string-templates": "^0.9.162", + "@budibase/auth": "^0.9.163", + "@budibase/string-templates": "^0.9.163", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0", From ca0457dcb4fc559ce814392fa95b020d8eb2ecc7 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 12 Oct 2021 21:58:10 +0100 Subject: [PATCH 7/9] updated K8S templates with new kit --- docs/budibase-0.2.0.tgz | Bin 0 -> 40877 bytes docs/index.yaml | 32 +++++++++++++-- .../budibase/{templates => }/.helmignore | 0 hosting/kubernetes/budibase/Chart.yaml | 8 ++-- .../budibase/templates/alb-ingress.yaml | 2 + .../templates/app-service-deployment.yaml | 20 ++++++---- .../templates/proxy-service-deployment.yaml | 4 +- .../templates/worker-service-deployment.yaml | 22 ++++++++--- hosting/kubernetes/budibase/values.yaml | 37 ++++++++++-------- 9 files changed, 87 insertions(+), 38 deletions(-) create mode 100644 docs/budibase-0.2.0.tgz rename hosting/kubernetes/budibase/{templates => }/.helmignore (100%) diff --git a/docs/budibase-0.2.0.tgz b/docs/budibase-0.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..379b92cbb78ca9d7159e508fa8b9d8bcd110853a GIT binary patch literal 40877 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%0DQnUs9pIdxY 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 literal 0 HcmV?d00001 diff --git a/docs/index.yaml b/docs/index.yaml index 4e064f3dd0..b050330477 100644 --- a/docs/index.yaml +++ b/docs/index.yaml @@ -1,9 +1,35 @@ apiVersion: v1 entries: budibase: + - apiVersion: v2 + appVersion: 0.9.163 + created: "2021-10-12T21:58:00.515555+01:00" + dependencies: + - condition: services.couchdb.enabled + name: couchdb + repository: https://apache.github.io/couchdb-helm + version: 3.3.4 + - condition: ingress.nginx + name: ingress-nginx + repository: https://github.com/kubernetes/ingress-nginx + version: 3.35.0 + description: Budibase is an open source low-code platform, helping thousands of teams build apps for their workplace in minutes. + digest: f369536c0eac1f6959d51e8ce6d74a87a7a9df29ae84fb9cbed0a273ab77429b + keywords: + - low-code + - database + - cluster + name: budibase + sources: + - https://github.com/Budibase/budibase + - https://budibase.com + type: application + urls: + - https://budibase.github.io/budibase/budibase-0.2.0.tgz + version: 0.2.0 - apiVersion: v2 appVersion: 0.9.56 - created: "2021-08-18T18:41:52.640176+01:00" + created: "2021-10-12T21:58:00.512062+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -28,7 +54,7 @@ entries: version: 0.1.1 - apiVersion: v2 appVersion: 0.9.56 - created: "2021-08-18T18:41:52.635603+01:00" + created: "2021-10-12T21:58:00.507257+01:00" dependencies: - condition: services.couchdb.enabled name: couchdb @@ -51,4 +77,4 @@ entries: urls: - https://budibase.github.io/budibase/budibase-0.1.0.tgz version: 0.1.0 -generated: "2021-08-18T18:41:52.629415+01:00" +generated: "2021-10-12T21:58:00.503447+01:00" diff --git a/hosting/kubernetes/budibase/templates/.helmignore b/hosting/kubernetes/budibase/.helmignore similarity index 100% rename from hosting/kubernetes/budibase/templates/.helmignore rename to hosting/kubernetes/budibase/.helmignore diff --git a/hosting/kubernetes/budibase/Chart.yaml b/hosting/kubernetes/budibase/Chart.yaml index d00b228b0e..fa652ed28f 100644 --- a/hosting/kubernetes/budibase/Chart.yaml +++ b/hosting/kubernetes/budibase/Chart.yaml @@ -22,13 +22,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.1 +version: 0.2.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.9.56" +appVersion: "0.9.163" dependencies: - name: couchdb @@ -37,5 +37,5 @@ dependencies: condition: services.couchdb.enabled - name: ingress-nginx version: 3.35.0 - repository: https://kubernetes.github.io/ingress-nginx - condition: services.ingress.nginx + repository: https://github.com/kubernetes/ingress-nginx + condition: ingress.nginx diff --git a/hosting/kubernetes/budibase/templates/alb-ingress.yaml b/hosting/kubernetes/budibase/templates/alb-ingress.yaml index ea3bd674d5..388bcf1d3e 100644 --- a/hosting/kubernetes/budibase/templates/alb-ingress.yaml +++ b/hosting/kubernetes/budibase/templates/alb-ingress.yaml @@ -7,6 +7,8 @@ metadata: kubernetes.io/ingress.class: alb alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: ip + alb.ingress.kubernetes.io/success-codes: 200,301 + alb.ingress.kubernetes.io/healthcheck-path: / {{- if .Values.ingress.certificateArn }} alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}' alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]' diff --git a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml index 98fdc8dfd0..bce532016a 100644 --- a/hosting/kubernetes/budibase/templates/app-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/app-service-deployment.yaml @@ -14,7 +14,7 @@ spec: matchLabels: io.kompose.service: app-service strategy: - type: Recreate + type: RollingUpdate template: metadata: annotations: @@ -73,13 +73,11 @@ spec: name: {{ template "budibase.fullname" . }} key: objectStoreSecret - name: MINIO_URL - {{ if .Values.services.objectStore.url }} value: {{ .Values.services.objectStore.url }} - {{ else }} - value: http://minio-service:{{ .Values.services.objectStore.port }} - {{ end }} - name: PORT value: {{ .Values.services.apps.port | quote }} + - name: MULTI_TENANCY + value: "1" - name: REDIS_PASSWORD value: {{ .Values.services.redis.password }} - name: REDIS_URL @@ -92,14 +90,20 @@ spec: value: {{ .Values.globals.selfHosted | quote }} - name: SENTRY_DSN value: {{ .Values.globals.sentryDSN }} + - name: POSTHOG_TOKEN + value: {{ .Values.globals.posthogToken }} - name: WORKER_URL - value: worker-service:{{ .Values.services.worker.port }} - - name: COOKIE_DOMAIN - value: {{ .Values.globals.cookieDomain | quote }} + value: http://worker-service:{{ .Values.services.worker.port }} + - name: PLATFORM_URL + value: {{ .Values.globals.platformUrl | quote }} + - name: USE_QUOTAS + value: "1" - name: ACCOUNT_PORTAL_URL value: {{ .Values.globals.accountPortalUrl | quote }} - name: ACCOUNT_PORTAL_API_KEY value: {{ .Values.globals.accountPortalApiKey | quote }} + - name: COOKIE_DOMAIN + value: {{ .Values.globals.cookieDomain | quote }} image: budibase/apps imagePullPolicy: Always name: bbapps diff --git a/hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml b/hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml index 0f802da843..2e453d1c5b 100644 --- a/hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/proxy-service-deployment.yaml @@ -14,7 +14,7 @@ spec: matchLabels: app.kubernetes.io/name: budibase-proxy strategy: - type: Recreate + type: RollingUpdate template: metadata: annotations: @@ -26,7 +26,7 @@ spec: spec: containers: - image: budibase/proxy - imagePullPolicy: "" + imagePullPolicy: Always name: proxy-service ports: - containerPort: {{ .Values.services.proxy.port }} diff --git a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml index 08b40d3b6b..563b1b4193 100644 --- a/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml +++ b/hosting/kubernetes/budibase/templates/worker-service-deployment.yaml @@ -15,7 +15,7 @@ spec: matchLabels: io.kompose.service: worker-service strategy: - type: Recreate + type: RollingUpdate template: metadata: annotations: @@ -70,13 +70,11 @@ spec: name: {{ template "budibase.fullname" . }} key: objectStoreSecret - name: MINIO_URL - {{ if .Values.services.objectStore.url }} value: {{ .Values.services.objectStore.url }} - {{ else }} - value: http://minio-service:{{ .Values.services.objectStore.port }} - {{ end }} - name: PORT value: {{ .Values.services.worker.port | quote }} + - name: MULTI_TENANCY + value: "1" - name: REDIS_PASSWORD value: {{ .Values.services.redis.password | quote }} - name: REDIS_URL @@ -91,8 +89,22 @@ spec: value: {{ .Values.globals.accountPortalUrl | quote }} - name: ACCOUNT_PORTAL_API_KEY value: {{ .Values.globals.accountPortalApiKey | quote }} + - name: PLATFORM_URL + value: {{ .Values.globals.platformUrl | quote }} - name: COOKIE_DOMAIN value: {{ .Values.globals.cookieDomain | quote }} + - name: SMTP_FALLBACK_ENABLED + value: {{ .Values.globals.smtp.enabled | quote }} + - name: SMTP_USER + value: {{ .Values.globals.smtp.user | quote }} + - name: SMTP_PASSWORD + value: {{ .Values.globals.smtp.password | quote }} + - name: SMTP_HOST + value: {{ .Values.globals.smtp.host | quote }} + - name: SMTP_PORT + value: {{ .Values.globals.smtp.port | quote }} + - name: SMTP_FROM_ADDRESS + value: {{ .Values.globals.smtp.from | quote }} image: budibase/worker imagePullPolicy: Always name: bbworker diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index 5999f9c4bc..c9dbebd287 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -40,11 +40,12 @@ service: port: 10000 ingress: - enabled: true - nginx: true - certificateArn: "" + enabled: false + aws: false + nginx: true + certificateArn: arn:aws:acm:eu-west-1:545012296077:certificate/507db6ec-ae27-475c-984a-cb590162d567 className: "" - annotations: + annotations: kubernetes.io/ingress.class: nginx hosts: - host: # change if using custom domain @@ -55,7 +56,7 @@ ingress: service: name: proxy-service port: - number: 10000 + number: 10000 resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -84,20 +85,24 @@ affinity: {} globals: budibaseEnv: PRODUCTION - enableAnalytics: false - posthogToken: "" - sentryDSN: "" + enableAnalytics: true + sentryDSN: https://a34ae347621946bf8acded18e5b7d4b8@o420233.ingest.sentry.io/5338131 + posthogToken: "phc_yGOn4i7jWKaCTapdGR6lfA4AvmuEQ2ijn5zAVSFYPlS" logLevel: info - selfHosted: 1 - accountPortalUrL: "" + selfHosted: "" + accountPortalUrl: "" accountPortalApiKey: "" - cookieDomain: "" + cookieDomain: "" + platformUrl: "" + createSecrets: true # creates an internal API key, JWT secrets and redis password for you # if createSecrets is set to false, you can hard-code your secrets here internalApiKey: "" jwtSecret: "" + smtp: + enabled: false services: dns: cluster.local @@ -118,12 +123,12 @@ services: couchdb: enabled: true replicaCount: 3 - url: "" # only change if pointing to existing couch server - user: "" # only change if pointing to existing couch server - password: "" # only change if pointing to existing couch server + # url: "" # only change if pointing to existing couch server + # user: "" # only change if pointing to existing couch server + # password: "" # only change if pointing to existing couch server port: 5984 storage: 100Mi - + redis: enabled: true # disable if using external redis port: 6379 @@ -131,7 +136,7 @@ services: url: "" # only change if pointing to existing redis cluster and enabled: false password: "budibase" # recommended to override if using built-in redis storage: 100Mi - + objectStore: minio: true browser: true From fcd8ba18df049af78b6fb043b1cb798b107e9d07 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 12 Oct 2021 22:04:29 +0100 Subject: [PATCH 8/9] removing quotas that are no longer needed --- hosting/kubernetes/budibase/values.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hosting/kubernetes/budibase/values.yaml b/hosting/kubernetes/budibase/values.yaml index c9dbebd287..774f7ea102 100644 --- a/hosting/kubernetes/budibase/values.yaml +++ b/hosting/kubernetes/budibase/values.yaml @@ -43,7 +43,7 @@ ingress: enabled: false aws: false nginx: true - certificateArn: arn:aws:acm:eu-west-1:545012296077:certificate/507db6ec-ae27-475c-984a-cb590162d567 + certificateArn: "" className: "" annotations: kubernetes.io/ingress.class: nginx @@ -86,8 +86,8 @@ affinity: {} globals: budibaseEnv: PRODUCTION enableAnalytics: true - sentryDSN: https://a34ae347621946bf8acded18e5b7d4b8@o420233.ingest.sentry.io/5338131 - posthogToken: "phc_yGOn4i7jWKaCTapdGR6lfA4AvmuEQ2ijn5zAVSFYPlS" + sentryDSN: "" + posthogToken: "" logLevel: info selfHosted: "" accountPortalUrl: "" From 6a129067e256bb2d39aae1df9f98c587c820c25f Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Tue, 12 Oct 2021 21:15:39 +0000 Subject: [PATCH 9/9] v0.9.164 --- lerna.json | 2 +- packages/auth/package.json | 2 +- packages/bbui/package.json | 2 +- packages/builder/package.json | 8 ++++---- packages/cli/package.json | 2 +- packages/client/package.json | 6 +++--- packages/server/package.json | 8 ++++---- packages/string-templates/package.json | 2 +- packages/worker/package.json | 6 +++--- 9 files changed, 19 insertions(+), 19 deletions(-) diff --git a/lerna.json b/lerna.json index 9d4d302f12..0f097b4bda 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "0.9.163", + "version": "0.9.164", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/auth/package.json b/packages/auth/package.json index fbf9c98ddb..170e09547e 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/auth", - "version": "0.9.163", + "version": "0.9.164", "description": "Authentication middlewares for budibase builder and apps", "main": "src/index.js", "author": "Budibase", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 362c4732e4..76b904d0dd 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": "0.9.163", + "version": "0.9.164", "license": "AGPL-3.0", "svelte": "src/index.js", "module": "dist/bbui.es.js", diff --git a/packages/builder/package.json b/packages/builder/package.json index a3d7488a27..25e5e10be3 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "0.9.163", + "version": "0.9.164", "license": "AGPL-3.0", "private": true, "scripts": { @@ -65,10 +65,10 @@ } }, "dependencies": { - "@budibase/bbui": "^0.9.163", - "@budibase/client": "^0.9.163", + "@budibase/bbui": "^0.9.164", + "@budibase/client": "^0.9.164", "@budibase/colorpicker": "1.1.2", - "@budibase/string-templates": "^0.9.163", + "@budibase/string-templates": "^0.9.164", "@sentry/browser": "5.19.1", "@spectrum-css/page": "^3.0.1", "@spectrum-css/vars": "^3.0.1", diff --git a/packages/cli/package.json b/packages/cli/package.json index e2cb7da75a..6659a58b81 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "0.9.163", + "version": "0.9.164", "description": "Budibase CLI, for developers, self hosting and migrations.", "main": "src/index.js", "bin": { diff --git a/packages/client/package.json b/packages/client/package.json index d445cae044..edcdba9a7d 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "0.9.163", + "version": "0.9.164", "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": "^0.9.163", + "@budibase/bbui": "^0.9.164", "@budibase/standard-components": "^0.9.139", - "@budibase/string-templates": "^0.9.163", + "@budibase/string-templates": "^0.9.164", "regexparam": "^1.3.0", "shortid": "^2.2.15", "svelte-spa-router": "^3.0.5" diff --git a/packages/server/package.json b/packages/server/package.json index ca054202ea..6e2eb934b8 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "0.9.163", + "version": "0.9.164", "description": "Budibase Web Server", "main": "src/index.js", "repository": { @@ -66,9 +66,9 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.163", - "@budibase/client": "^0.9.163", - "@budibase/string-templates": "^0.9.163", + "@budibase/auth": "^0.9.164", + "@budibase/client": "^0.9.164", + "@budibase/string-templates": "^0.9.164", "@elastic/elasticsearch": "7.10.0", "@koa/router": "8.0.0", "@sendgrid/mail": "7.1.1", diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 883ebdc6bd..c56f35f42d 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "0.9.163", + "version": "0.9.164", "description": "Handlebars wrapper for Budibase templating.", "main": "src/index.cjs", "module": "dist/bundle.mjs", diff --git a/packages/worker/package.json b/packages/worker/package.json index 93e0f271d9..94fed7426c 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "0.9.163", + "version": "0.9.164", "description": "Budibase background service", "main": "src/index.js", "repository": { @@ -27,8 +27,8 @@ "author": "Budibase", "license": "AGPL-3.0-or-later", "dependencies": { - "@budibase/auth": "^0.9.163", - "@budibase/string-templates": "^0.9.163", + "@budibase/auth": "^0.9.164", + "@budibase/string-templates": "^0.9.164", "@koa/router": "^8.0.0", "@techpass/passport-openidconnect": "^0.3.0", "aws-sdk": "^2.811.0",