From 0c37c57a4bd704eefc783fd55729512bf166b759 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 5 Jan 2023 18:03:36 +0000 Subject: [PATCH 1/5] Fix for #9249 - there was an issue with the updating of attachment URLs when importing an app/backup, this resolves it by utilising pagination in the CouchDB find API, making sure to iterate through all documents when there is a larger number. --- .../server/src/sdk/app/backups/imports.ts | 96 ++++++++++++------- 1 file changed, 60 insertions(+), 36 deletions(-) diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts index 4c2a721c2c..8a67122594 100644 --- a/packages/server/src/sdk/app/backups/imports.ts +++ b/packages/server/src/sdk/app/backups/imports.ts @@ -1,5 +1,5 @@ import { db as dbCore, objectStore } from "@budibase/backend-core" -import { Database } from "@budibase/types" +import { Database, Row } from "@budibase/types" import { getAutomationParams, TABLE_ROW_PREFIX } from "../../../db/utils" import { budibaseTempDir } from "../../../utilities/budibaseDir" import { DB_EXPORT_FILE, GLOBAL_DB_EXPORT_FILE } from "./constants" @@ -17,6 +17,9 @@ import { const uuid = require("uuid/v4") const tar = require("tar") +// default limit - seems to work well for performance +const FIND_LIMIT = 25 + type TemplateType = { file?: { type: string @@ -25,9 +28,29 @@ type TemplateType = { key?: string } +function generateAttachmentFindParams( + attachmentCols: string[], + bookmark: null | string +) { + const params: CouchFindOptions = { + selector: { + _id: { + $regex: `^${TABLE_ROW_PREFIX}`, + }, + }, + limit: FIND_LIMIT, + } + attachmentCols.forEach(col => (params.selector[col] = { $exists: true })) + if (bookmark) { + params.bookmark = bookmark + } + return params +} + async function updateAttachmentColumns(prodAppId: string, db: Database) { // iterate through attachment documents and update them const tables = await sdk.tables.getAllInternalTables(db) + let updatedRows: Row[] = [] for (let table of tables) { const attachmentCols: string[] = [] for (let [key, column] of Object.entries(table.schema)) { @@ -39,44 +62,45 @@ async function updateAttachmentColumns(prodAppId: string, db: Database) { if (attachmentCols.length === 0) { continue } - // use the CouchDB Mango query API to lookup rows that have attachments - const params: CouchFindOptions = { - selector: { - _id: { - $regex: `^${TABLE_ROW_PREFIX}`, - }, - }, - } - attachmentCols.forEach(col => (params.selector[col] = { $exists: true })) - const { rows } = await dbCore.directCouchFind(db.name, params) - for (let row of rows) { - for (let column of attachmentCols) { - if (!Array.isArray(row[column])) { - continue - } - row[column] = row[column].map((attachment: RowAttachment) => { - // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv - const urlParts = attachment.url.split("/") - // drop the first empty element - urlParts.shift() - // get the prefix - const prefix = urlParts.shift() - // remove the app ID - urlParts.shift() - // add new app ID - urlParts.unshift(prodAppId) - const key = urlParts.join("/") - return { - ...attachment, - key, - url: `/${prefix}/${key}`, + let bookmark: null | string = null, + rowsLength = 0 + do { + const params = generateAttachmentFindParams(attachmentCols, bookmark) + // use the CouchDB Mango query API to lookup rows that have attachments + const resp = await dbCore.directCouchFind(db.name, params) + bookmark = resp.bookmark + rowsLength = resp.rows.length + const rows = resp.rows + for (let row of rows) { + for (let column of attachmentCols) { + if (!Array.isArray(row[column])) { + continue } - }) + row[column] = row[column].map((attachment: RowAttachment) => { + // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv + const urlParts = attachment.url.split("/") + // drop the first empty element + urlParts.shift() + // get the prefix + const prefix = urlParts.shift() + // remove the app ID + urlParts.shift() + // add new app ID + urlParts.unshift(prodAppId) + const key = urlParts.join("/") + return { + ...attachment, + key, + url: `/${prefix}/${key}`, + } + }) + } } - } - // write back the updated attachments - await db.bulkDocs(rows) + updatedRows = updatedRows.concat(rows) + } while (rowsLength === FIND_LIMIT) } + // write back the updated attachments + await db.bulkDocs(updatedRows) } async function updateAutomations(prodAppId: string, db: Database) { From cf90282303874c87a3f53f8e5cdf215dfa1d46bb Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 6 Jan 2023 12:47:12 +0000 Subject: [PATCH 2/5] Moving some stuff around to make more testable. --- .../server/src/sdk/app/backups/imports.ts | 96 ++++++------------- .../server/src/sdk/app/rows/attachments.ts | 60 ++++++++++++ packages/server/src/sdk/app/rows/index.ts | 5 + packages/server/src/sdk/index.ts | 2 + 4 files changed, 98 insertions(+), 65 deletions(-) create mode 100644 packages/server/src/sdk/app/rows/attachments.ts create mode 100644 packages/server/src/sdk/app/rows/index.ts diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts index 8a67122594..4893f69588 100644 --- a/packages/server/src/sdk/app/backups/imports.ts +++ b/packages/server/src/sdk/app/backups/imports.ts @@ -4,22 +4,18 @@ import { getAutomationParams, TABLE_ROW_PREFIX } from "../../../db/utils" import { budibaseTempDir } from "../../../utilities/budibaseDir" import { DB_EXPORT_FILE, GLOBAL_DB_EXPORT_FILE } from "./constants" import { downloadTemplate } from "../../../utilities/fileSystem" -import { FieldTypes, ObjectStoreBuckets } from "../../../constants" +import { ObjectStoreBuckets } from "../../../constants" import { join } from "path" import fs from "fs" import sdk from "../../" import { Automation, AutomationTriggerStepId, - CouchFindOptions, RowAttachment, } from "@budibase/types" const uuid = require("uuid/v4") const tar = require("tar") -// default limit - seems to work well for performance -const FIND_LIMIT = 25 - type TemplateType = { file?: { type: string @@ -28,23 +24,23 @@ type TemplateType = { key?: string } -function generateAttachmentFindParams( - attachmentCols: string[], - bookmark: null | string -) { - const params: CouchFindOptions = { - selector: { - _id: { - $regex: `^${TABLE_ROW_PREFIX}`, - }, - }, - limit: FIND_LIMIT, +function rewriteAttachmentUrl(appId: string, attachment: RowAttachment) { + // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv + const urlParts = attachment.url.split("/") + // drop the first empty element + urlParts.shift() + // get the prefix + const prefix = urlParts.shift() + // remove the app ID + urlParts.shift() + // add new app ID + urlParts.unshift(appId) + const key = urlParts.join("/") + return { + ...attachment, + key, + url: `/${prefix}/${key}`, } - attachmentCols.forEach(col => (params.selector[col] = { $exists: true })) - if (bookmark) { - params.bookmark = bookmark - } - return params } async function updateAttachmentColumns(prodAppId: string, db: Database) { @@ -52,52 +48,22 @@ async function updateAttachmentColumns(prodAppId: string, db: Database) { const tables = await sdk.tables.getAllInternalTables(db) let updatedRows: Row[] = [] for (let table of tables) { - const attachmentCols: string[] = [] - for (let [key, column] of Object.entries(table.schema)) { - if (column.type === FieldTypes.ATTACHMENT) { - attachmentCols.push(key) - } - } - // no attachment columns, nothing to do - if (attachmentCols.length === 0) { - continue - } - let bookmark: null | string = null, - rowsLength = 0 - do { - const params = generateAttachmentFindParams(attachmentCols, bookmark) - // use the CouchDB Mango query API to lookup rows that have attachments - const resp = await dbCore.directCouchFind(db.name, params) - bookmark = resp.bookmark - rowsLength = resp.rows.length - const rows = resp.rows - for (let row of rows) { - for (let column of attachmentCols) { - if (!Array.isArray(row[column])) { - continue + const { rows, columns } = await sdk.rows.getRowsWithAttachments( + db.name, + table + ) + updatedRows = updatedRows.concat( + rows.map(row => { + for (let column of columns) { + if (Array.isArray(row[column])) { + row[column] = row[column].map((attachment: RowAttachment) => + rewriteAttachmentUrl(prodAppId, attachment) + ) } - row[column] = row[column].map((attachment: RowAttachment) => { - // URL looks like: /prod-budi-app-assets/appId/attachments/file.csv - const urlParts = attachment.url.split("/") - // drop the first empty element - urlParts.shift() - // get the prefix - const prefix = urlParts.shift() - // remove the app ID - urlParts.shift() - // add new app ID - urlParts.unshift(prodAppId) - const key = urlParts.join("/") - return { - ...attachment, - key, - url: `/${prefix}/${key}`, - } - }) } - } - updatedRows = updatedRows.concat(rows) - } while (rowsLength === FIND_LIMIT) + return row + }) + ) } // write back the updated attachments await db.bulkDocs(updatedRows) diff --git a/packages/server/src/sdk/app/rows/attachments.ts b/packages/server/src/sdk/app/rows/attachments.ts new file mode 100644 index 0000000000..67f58f8f2c --- /dev/null +++ b/packages/server/src/sdk/app/rows/attachments.ts @@ -0,0 +1,60 @@ +import { CouchFindOptions, Table, Row } from "@budibase/types" +import { db as dbCore } from "@budibase/backend-core" +import { DocumentType, SEPARATOR } from "../../../db/utils" +import { FieldTypes } from "../../../constants" + +// default limit - seems to work well for performance +export const FIND_LIMIT = 25 + +function generateAttachmentFindParams( + tableId: string, + attachmentCols: string[], + bookmark: null | string +) { + const params: CouchFindOptions = { + selector: { + _id: { + $regex: `^${DocumentType.ROW}${SEPARATOR}${tableId}`, + }, + }, + limit: FIND_LIMIT, + } + attachmentCols.forEach(col => (params.selector[col] = { $exists: true })) + if (bookmark) { + params.bookmark = bookmark + } + return params +} + +export async function getRowsWithAttachments(appId: string, table: Table) { + // iterate through attachment documents and update them + const db = dbCore.getDB(appId) + const attachmentCols: string[] = [] + for (let [key, column] of Object.entries(table.schema)) { + if (column.type === FieldTypes.ATTACHMENT) { + attachmentCols.push(key) + } + } + // no attachment columns, nothing to do + if (attachmentCols.length === 0) { + return { rows: [], columns: [] } + } + let bookmark: null | string = null, + rowsLength = 0, + rowList: Row[] = [] + do { + const params = generateAttachmentFindParams( + table._id!, + attachmentCols, + bookmark + ) + // use the CouchDB Mango query API to lookup rows that have attachments + const resp = await dbCore.directCouchFind(db.name, params) + bookmark = resp.bookmark + rowsLength = resp.rows.length + const rows = resp.rows + rowList = rowList.concat(rows) + } while (rowsLength === FIND_LIMIT) + // write back the updated attachments + return { rows: rowList, columns: attachmentCols } +} diff --git a/packages/server/src/sdk/app/rows/index.ts b/packages/server/src/sdk/app/rows/index.ts new file mode 100644 index 0000000000..f21928141c --- /dev/null +++ b/packages/server/src/sdk/app/rows/index.ts @@ -0,0 +1,5 @@ +import * as attachments from "./attachments" + +export default { + ...attachments, +} diff --git a/packages/server/src/sdk/index.ts b/packages/server/src/sdk/index.ts index 19df8b4388..2ee40992c8 100644 --- a/packages/server/src/sdk/index.ts +++ b/packages/server/src/sdk/index.ts @@ -2,6 +2,7 @@ import { default as backups } from "./app/backups" import { default as tables } from "./app/tables" import { default as automations } from "./app/automations" import { default as applications } from "./app/applications" +import { default as rows } from "./app/rows" import { default as users } from "./users" const sdk = { @@ -9,6 +10,7 @@ const sdk = { tables, automations, applications, + rows, users, } From 76825c38b9b0232a91be7df49a1a9532ab941fe1 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 6 Jan 2023 13:33:22 +0000 Subject: [PATCH 3/5] Adding test cases for the attachment re-write feature, mocking the direct couch find functionality. --- .../src/api/routes/tests/analytics.spec.js | 2 +- .../server/src/sdk/app/backups/imports.ts | 2 +- packages/server/src/sdk/app/rows/index.ts | 2 + packages/server/src/sdk/app/rows/rows.ts | 18 +++++ .../server/src/sdk/tests/attachments.spec.ts | 79 +++++++++++++++++++ 5 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 packages/server/src/sdk/app/rows/rows.ts create mode 100644 packages/server/src/sdk/tests/attachments.spec.ts diff --git a/packages/server/src/api/routes/tests/analytics.spec.js b/packages/server/src/api/routes/tests/analytics.spec.js index 51196943e1..f8b3a6763f 100644 --- a/packages/server/src/api/routes/tests/analytics.spec.js +++ b/packages/server/src/api/routes/tests/analytics.spec.js @@ -1,5 +1,5 @@ const setup = require("./utilities") -const { events, constants, db } = require("@budibase/backend-core") +const { events, constants } = require("@budibase/backend-core") describe("/static", () => { let request = setup.getRequest() diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts index 4893f69588..a5527dcd40 100644 --- a/packages/server/src/sdk/app/backups/imports.ts +++ b/packages/server/src/sdk/app/backups/imports.ts @@ -43,7 +43,7 @@ function rewriteAttachmentUrl(appId: string, attachment: RowAttachment) { } } -async function updateAttachmentColumns(prodAppId: string, db: Database) { +export async function updateAttachmentColumns(prodAppId: string, db: Database) { // iterate through attachment documents and update them const tables = await sdk.tables.getAllInternalTables(db) let updatedRows: Row[] = [] diff --git a/packages/server/src/sdk/app/rows/index.ts b/packages/server/src/sdk/app/rows/index.ts index f21928141c..12a44ded67 100644 --- a/packages/server/src/sdk/app/rows/index.ts +++ b/packages/server/src/sdk/app/rows/index.ts @@ -1,5 +1,7 @@ import * as attachments from "./attachments" +import * as rows from "./rows" export default { ...attachments, + ...rows, } diff --git a/packages/server/src/sdk/app/rows/rows.ts b/packages/server/src/sdk/app/rows/rows.ts new file mode 100644 index 0000000000..8709180f0b --- /dev/null +++ b/packages/server/src/sdk/app/rows/rows.ts @@ -0,0 +1,18 @@ +import { db as dbCore, context } from "@budibase/backend-core" +import { Database, Row } from "@budibase/types" +import { getRowParams } from "../../../db/utils" + +export async function getAllInternalRows(appId?: string) { + let db: Database + if (appId) { + db = dbCore.getDB(appId) + } else { + db = context.getAppDB() + } + const response = await db.allDocs( + getRowParams(null, null, { + include_docs: true, + }) + ) + return response.rows.map(row => row.doc) as Row[] +} diff --git a/packages/server/src/sdk/tests/attachments.spec.ts b/packages/server/src/sdk/tests/attachments.spec.ts new file mode 100644 index 0000000000..a340018171 --- /dev/null +++ b/packages/server/src/sdk/tests/attachments.spec.ts @@ -0,0 +1,79 @@ +import newid from "../../db/newid" + +const attachment = { + size: 73479, + name: "2022-12-14 11_11_44-.png", + url: "/prod-budi-app-assets/app_bbb/attachments/a.png", + extension: "png", + key: "app_bbb/attachments/a.png", +} + +const row = { + _id: "ro_ta_aaa", + photo: [attachment], + otherCol: "string", +} + +const table = { + _id: "ta_aaa", + name: "photos", + schema: { + photo: { + type: "attachment", + name: "photo", + }, + otherCol: { + type: "string", + name: "otherCol", + }, + }, +} + +jest.mock("@budibase/backend-core", () => { + const core = jest.requireActual("@budibase/backend-core") + return { + ...core, + db: { + ...core.db, + directCouchFind: jest.fn(), + }, + } +}) + +import { db as dbCore } from "@budibase/backend-core" +import sdk from "../index" + +describe("should be able to re-write attachment URLs", () => { + it("it should update URLs on a number of rows over the limit", async () => { + const db = dbCore.getDB("app_aaa") + await db.put(table) + const limit = 30 + let rows = [] + for (let i = 0; i < limit; i++) { + const rowToWrite = { + ...row, + _id: `${row._id}_${newid()}`, + } + const { rev } = await db.put(rowToWrite) + rows.push({ + ...rowToWrite, + _rev: rev, + }) + } + + dbCore.directCouchFind + // @ts-ignore + .mockReturnValueOnce({ rows: rows.slice(0, 25), bookmark: "aaa" }) + .mockReturnValueOnce({ rows: rows.slice(25, limit), bookmark: "bbb" }) + await sdk.backups.updateAttachmentColumns(db.name, db) + const finalRows = await sdk.rows.getAllInternalRows(db.name) + for (let rowToCheck of finalRows) { + expect(rowToCheck.otherCol).toBe(row.otherCol) + expect(rowToCheck.photo[0].url).not.toBe(row.photo[0].url) + expect(rowToCheck.photo[0].url).toBe( + `/prod-budi-app-assets/${db.name}/attachments/a.png` + ) + expect(rowToCheck.photo[0].key).toBe(`${db.name}/attachments/a.png`) + } + }) +}) From f73ab8812277481538d9b0b507e5dbaa164c64ea Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 6 Jan 2023 17:13:14 +0000 Subject: [PATCH 4/5] v2.2.11 --- 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 37a965a594..c6c7f9e17c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "2.2.10", + "version": "2.2.11", "npmClient": "yarn", "packages": [ "packages/*" diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index fd33bf6d85..15882d8b38 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/backend-core", - "version": "2.2.10", + "version": "2.2.11", "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", @@ -21,7 +21,7 @@ }, "dependencies": { "@budibase/nano": "10.1.1", - "@budibase/types": "^2.2.10", + "@budibase/types": "^2.2.11", "@shopify/jest-koa-mocks": "5.0.1", "@techpass/passport-openidconnect": "0.3.2", "aws-sdk": "2.1030.0", diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 9e0cfdcaa8..d268de4061 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.2.10", + "version": "2.2.11", "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.2.10", + "@budibase/string-templates": "^2.2.11", "@spectrum-css/actionbutton": "1.0.1", "@spectrum-css/actiongroup": "1.0.1", "@spectrum-css/avatar": "3.0.2", diff --git a/packages/builder/package.json b/packages/builder/package.json index d87a45905d..9c532dcb2f 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/builder", - "version": "2.2.10", + "version": "2.2.11", "license": "GPL-3.0", "private": true, "scripts": { @@ -71,10 +71,10 @@ } }, "dependencies": { - "@budibase/bbui": "^2.2.10", - "@budibase/client": "^2.2.10", - "@budibase/frontend-core": "^2.2.10", - "@budibase/string-templates": "^2.2.10", + "@budibase/bbui": "^2.2.11", + "@budibase/client": "^2.2.11", + "@budibase/frontend-core": "^2.2.11", + "@budibase/string-templates": "^2.2.11", "@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 6e9309de41..2bfb020219 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/cli", - "version": "2.2.10", + "version": "2.2.11", "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.2.10", - "@budibase/string-templates": "^2.2.10", - "@budibase/types": "^2.2.10", + "@budibase/backend-core": "^2.2.11", + "@budibase/string-templates": "^2.2.11", + "@budibase/types": "^2.2.11", "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 dc80413566..40f75ba9ee 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/client", - "version": "2.2.10", + "version": "2.2.11", "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.2.10", - "@budibase/frontend-core": "^2.2.10", - "@budibase/string-templates": "^2.2.10", + "@budibase/bbui": "^2.2.11", + "@budibase/frontend-core": "^2.2.11", + "@budibase/string-templates": "^2.2.11", "@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 19af2fa445..34f332fc96 100644 --- a/packages/frontend-core/package.json +++ b/packages/frontend-core/package.json @@ -1,12 +1,12 @@ { "name": "@budibase/frontend-core", - "version": "2.2.10", + "version": "2.2.11", "description": "Budibase frontend core libraries used in builder and client", "author": "Budibase", "license": "MPL-2.0", "svelte": "src/index.js", "dependencies": { - "@budibase/bbui": "^2.2.10", + "@budibase/bbui": "^2.2.11", "lodash": "^4.17.21", "svelte": "^3.46.2" } diff --git a/packages/sdk/package.json b/packages/sdk/package.json index fb6647248f..db65bf176d 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/sdk", - "version": "2.2.10", + "version": "2.2.11", "description": "Budibase Public API SDK", "author": "Budibase", "license": "MPL-2.0", diff --git a/packages/server/package.json b/packages/server/package.json index 7949d472c4..85318ab2e5 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/server", "email": "hi@budibase.com", - "version": "2.2.10", + "version": "2.2.11", "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.2.10", - "@budibase/client": "^2.2.10", + "@budibase/backend-core": "^2.2.11", + "@budibase/client": "^2.2.11", "@budibase/pro": "2.2.10", - "@budibase/string-templates": "^2.2.10", - "@budibase/types": "^2.2.10", + "@budibase/string-templates": "^2.2.11", + "@budibase/types": "^2.2.11", "@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 f1135031c0..4aa04d25f7 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/string-templates", - "version": "2.2.10", + "version": "2.2.11", "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 0e1e09c2ac..8e2a25859d 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@budibase/types", - "version": "2.2.10", + "version": "2.2.11", "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 f72e5f8c10..5963d2864a 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -1,7 +1,7 @@ { "name": "@budibase/worker", "email": "hi@budibase.com", - "version": "2.2.10", + "version": "2.2.11", "description": "Budibase background service", "main": "src/index.ts", "repository": { @@ -36,10 +36,10 @@ "author": "Budibase", "license": "GPL-3.0", "dependencies": { - "@budibase/backend-core": "^2.2.10", + "@budibase/backend-core": "^2.2.11", "@budibase/pro": "2.2.10", - "@budibase/string-templates": "^2.2.10", - "@budibase/types": "^2.2.10", + "@budibase/string-templates": "^2.2.11", + "@budibase/types": "^2.2.11", "@koa/router": "8.0.8", "@sentry/node": "6.17.7", "@techpass/passport-openidconnect": "0.3.2", From 6e34e717cc47baf0b25d0ed6d2bdca75164c79dc Mon Sep 17 00:00:00 2001 From: Budibase Release Bot <> Date: Fri, 6 Jan 2023 17:16:57 +0000 Subject: [PATCH 5/5] Update pro version to 2.2.11 --- 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 85318ab2e5..f2aa0b5d1e 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.2.11", "@budibase/client": "^2.2.11", - "@budibase/pro": "2.2.10", + "@budibase/pro": "2.2.11", "@budibase/string-templates": "^2.2.11", "@budibase/types": "^2.2.11", "@bull-board/api": "3.7.0", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 95df35498c..c6c1b721c4 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.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.2.10.tgz#0fe86fdfa4c55e5f371f72b6f560e09b9e543f46" - integrity sha512-9+2s2yQ30MgslF/3Fdds9IrVDgf0YP7Q4KkKpmAnT0AX2i8+UFRu3DYhjXduSZ3V/RQRRliNy1HzzagmGWIQFA== +"@budibase/backend-core@2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.2.11.tgz#ea84971474e2ebd1c518469544bb92894fda647f" + integrity sha512-1hnZ7iR5Yhuwhd935Ei6mjdeyHo7JMTGvsqHvLnTrkOZ0+OO98goawZZXm8EHNIpYn7FT0gKu+te6jK5iOpIaQ== dependencies: "@budibase/nano" "10.1.1" - "@budibase/types" "^2.2.10" + "@budibase/types" "^2.2.11" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-sdk "2.1030.0" @@ -1372,13 +1372,13 @@ qs "^6.11.0" tough-cookie "^4.1.2" -"@budibase/pro@2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.2.10.tgz#935f4cf97288d8d4ae147107045cd3e27bbd937c" - integrity sha512-ceXFPeLqw2p3ynlDpAMlCUu86ex1PD9bwlQdsuSzXovd3Rxm3OxJ/Bw/TMayApp6gvGPsuBZIQELdrCuu4yNzg== +"@budibase/pro@2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.2.11.tgz#5619ae125a64e76f52552493805a3cccb5bc8a63" + integrity sha512-54VgY/fSJvwIKBRZe6pJolDA6Ur+YVr+V5lUIibPsdIcS/hrCklECYVVAdlL5sALOSUs4vFUYcvJtJ2v1Ttu5Q== dependencies: - "@budibase/backend-core" "2.2.10" - "@budibase/types" "2.2.10" + "@budibase/backend-core" "2.2.11" + "@budibase/types" "2.2.11" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" @@ -1402,10 +1402,10 @@ svelte-apexcharts "^1.0.2" svelte-flatpickr "^3.1.0" -"@budibase/types@2.2.10", "@budibase/types@^2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.2.10.tgz#ca6c4f796a7ac7ca0a689147af9d0f26bef0b79e" - integrity sha512-mQAeMt++jXmPXD0RK/Hs0ScJIGtYlSTGOtm8WvNjIVMm155xHrChFVT+LObFFbQkYMI5BLJ1tmHHf21r432D5A== +"@budibase/types@2.2.11", "@budibase/types@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.2.11.tgz#38496d7a845811c4710a99ba99be428eda79b983" + integrity sha512-0kiSkugOR0YzuSCFNaPEPjiLT0n630Ixva2EBhG/2S0TmyCZfUTs2OItGmNsk8OBGNxWPTdidW4NYwkKrGaaoA== "@bull-board/api@3.7.0": version "3.7.0" diff --git a/packages/worker/package.json b/packages/worker/package.json index 5963d2864a..66b266164e 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -37,7 +37,7 @@ "license": "GPL-3.0", "dependencies": { "@budibase/backend-core": "^2.2.11", - "@budibase/pro": "2.2.10", + "@budibase/pro": "2.2.11", "@budibase/string-templates": "^2.2.11", "@budibase/types": "^2.2.11", "@koa/router": "8.0.8", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index 5b459798bf..11586f7eb6 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.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.2.10.tgz#0fe86fdfa4c55e5f371f72b6f560e09b9e543f46" - integrity sha512-9+2s2yQ30MgslF/3Fdds9IrVDgf0YP7Q4KkKpmAnT0AX2i8+UFRu3DYhjXduSZ3V/RQRRliNy1HzzagmGWIQFA== +"@budibase/backend-core@2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@budibase/backend-core/-/backend-core-2.2.11.tgz#ea84971474e2ebd1c518469544bb92894fda647f" + integrity sha512-1hnZ7iR5Yhuwhd935Ei6mjdeyHo7JMTGvsqHvLnTrkOZ0+OO98goawZZXm8EHNIpYn7FT0gKu+te6jK5iOpIaQ== dependencies: "@budibase/nano" "10.1.1" - "@budibase/types" "^2.2.10" + "@budibase/types" "^2.2.11" "@shopify/jest-koa-mocks" "5.0.1" "@techpass/passport-openidconnect" "0.3.2" aws-sdk "2.1030.0" @@ -519,22 +519,22 @@ qs "^6.11.0" tough-cookie "^4.1.2" -"@budibase/pro@2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.2.10.tgz#935f4cf97288d8d4ae147107045cd3e27bbd937c" - integrity sha512-ceXFPeLqw2p3ynlDpAMlCUu86ex1PD9bwlQdsuSzXovd3Rxm3OxJ/Bw/TMayApp6gvGPsuBZIQELdrCuu4yNzg== +"@budibase/pro@2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.2.11.tgz#5619ae125a64e76f52552493805a3cccb5bc8a63" + integrity sha512-54VgY/fSJvwIKBRZe6pJolDA6Ur+YVr+V5lUIibPsdIcS/hrCklECYVVAdlL5sALOSUs4vFUYcvJtJ2v1Ttu5Q== dependencies: - "@budibase/backend-core" "2.2.10" - "@budibase/types" "2.2.10" + "@budibase/backend-core" "2.2.11" + "@budibase/types" "2.2.11" "@koa/router" "8.0.8" bull "4.10.1" joi "17.6.0" node-fetch "^2.6.1" -"@budibase/types@2.2.10", "@budibase/types@^2.2.10": - version "2.2.10" - resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.2.10.tgz#ca6c4f796a7ac7ca0a689147af9d0f26bef0b79e" - integrity sha512-mQAeMt++jXmPXD0RK/Hs0ScJIGtYlSTGOtm8WvNjIVMm155xHrChFVT+LObFFbQkYMI5BLJ1tmHHf21r432D5A== +"@budibase/types@2.2.11", "@budibase/types@^2.2.11": + version "2.2.11" + resolved "https://registry.yarnpkg.com/@budibase/types/-/types-2.2.11.tgz#38496d7a845811c4710a99ba99be428eda79b983" + integrity sha512-0kiSkugOR0YzuSCFNaPEPjiLT0n630Ixva2EBhG/2S0TmyCZfUTs2OItGmNsk8OBGNxWPTdidW4NYwkKrGaaoA== "@cspotcode/source-map-support@^0.8.0": version "0.8.1"