From ef7281716acd7799b3c3c92a6eff411e86db35cf Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 5 Nov 2024 13:14:45 +0100 Subject: [PATCH 01/60] Wait for test data to be processed before running the test --- .../AutomationBuilder/FlowChart/TestDataModal.svelte | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte index 21cdc4b893..4bc1e8d496 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/TestDataModal.svelte @@ -1,4 +1,5 @@ - +{#if responseType === FieldType.NUMBER} + +{:else if responseType === FieldType.BOOLEAN} + +{:else if responseType === FieldType.DATETIME} + +{:else} + +{/if} diff --git a/packages/server/src/utilities/rowProcessor/index.ts b/packages/server/src/utilities/rowProcessor/index.ts index 910e9d220f..e21cd81e3f 100644 --- a/packages/server/src/utilities/rowProcessor/index.ts +++ b/packages/server/src/utilities/rowProcessor/index.ts @@ -163,33 +163,33 @@ async function processDefaultValues(table: Table, row: Row) { /** * This will coerce a value to the correct types based on the type transform map - * @param row The value to coerce + * @param value The value to coerce * @param type The type fo coerce to * @returns The coerced value */ -export function coerce(row: any, type: string) { +export function coerce(value: unknown, type: string) { // no coercion specified for type, skip it if (!TYPE_TRANSFORM_MAP[type]) { - return row + return value } // eslint-disable-next-line no-prototype-builtins - if (TYPE_TRANSFORM_MAP[type].hasOwnProperty(row)) { + if (TYPE_TRANSFORM_MAP[type].hasOwnProperty(value)) { // @ts-ignore - return TYPE_TRANSFORM_MAP[type][row] + return TYPE_TRANSFORM_MAP[type][value] } else if (TYPE_TRANSFORM_MAP[type].parse) { // @ts-ignore - return TYPE_TRANSFORM_MAP[type].parse(row) + return TYPE_TRANSFORM_MAP[type].parse(value) } - return row + return value } /** * Given an input route this function will apply all the necessary pre-processing to it, such as coercion * of column values or adding auto-column values. - * @param user the user which is performing the input. + * @param userId the ID of the user which is performing the input. * @param row the row which is being created/updated. - * @param table the table which the row is being saved to. + * @param source the table/view which the row is being saved to. * @param opts some input processing options (like disabling auto-column relationships). * @returns the row which has been prepared to be written to the DB. */ diff --git a/packages/server/src/utilities/rowProcessor/utils.ts b/packages/server/src/utilities/rowProcessor/utils.ts index 33aba5eb3a..15c0612fae 100644 --- a/packages/server/src/utilities/rowProcessor/utils.ts +++ b/packages/server/src/utilities/rowProcessor/utils.ts @@ -10,11 +10,13 @@ import { FieldType, OperationFieldTypeEnum, AIOperationEnum, + AIFieldMetadata, } from "@budibase/types" import { OperationFields } from "@budibase/shared-core" import tracer from "dd-trace" import { context } from "@budibase/backend-core" import * as pro from "@budibase/pro" +import { coerce } from "./index" interface FormulaOpts { dynamic?: boolean @@ -67,7 +69,18 @@ export async function processFormulas( continue } + const responseType = schema.responseType const isStatic = schema.formulaType === FormulaType.STATIC + const formula = schema.formula + + // coerce static values + if (isStatic) { + rows.forEach(row => { + if (row[column] && responseType) { + row[column] = coerce(row[column], responseType) + } + }) + } if ( schema.formula == null || @@ -80,12 +93,17 @@ export async function processFormulas( for (let i = 0; i < rows.length; i++) { let row = rows[i] let context = contextRows ? contextRows[i] : row - let formula = schema.formula rows[i] = { ...row, [column]: tracer.trace("processStringSync", {}, span => { span?.addTags({ table_id: table._id, column, static: isStatic }) - return processStringSync(formula, context) + const result = processStringSync(formula, context) + try { + return responseType ? coerce(result, responseType) : result + } catch (err) { + // if the coercion fails, we return empty row contents + return undefined + } }), } } @@ -117,12 +135,13 @@ export async function processAIColumns( continue } + const operation = schema.operation + const aiSchema: AIFieldMetadata = schema const rowUpdates = rows.map((row, i) => { const contextRow = contextRows ? contextRows[i] : row // Check if the type is bindable and pass through HBS if so - const operationField = - OperationFields[schema.operation as AIOperationEnum] + const operationField = OperationFields[operation as AIOperationEnum] for (const key in schema) { const fieldType = operationField[key as keyof typeof operationField] if (fieldType === OperationFieldTypeEnum.BINDABLE_TEXT) { @@ -131,7 +150,10 @@ export async function processAIColumns( } } - const prompt = llm.buildPromptFromAIOperation({ schema, row }) + const prompt = llm.buildPromptFromAIOperation({ + schema: aiSchema, + row, + }) return tracer.trace("processAIColumn", {}, async span => { span?.addTags({ table_id: table._id, column }) diff --git a/packages/types/src/documents/app/table/schema.ts b/packages/types/src/documents/app/table/schema.ts index 7e79902a49..00e119669b 100644 --- a/packages/types/src/documents/app/table/schema.ts +++ b/packages/types/src/documents/app/table/schema.ts @@ -115,6 +115,11 @@ export interface FormulaFieldMetadata extends BaseFieldSchema { type: FieldType.FORMULA formula: string formulaType?: FormulaType + responseType?: + | FieldType.STRING + | FieldType.NUMBER + | FieldType.BOOLEAN + | FieldType.DATETIME } export interface AIFieldMetadata extends BaseFieldSchema { From 4c7103e5fded3d89fe19c0a166bdb614701384c5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 7 Nov 2024 17:01:30 +0000 Subject: [PATCH 13/60] Updating typing. --- packages/types/src/documents/app/row.ts | 6 ++++++ packages/types/src/documents/app/table/schema.ts | 8 ++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/types/src/documents/app/row.ts b/packages/types/src/documents/app/row.ts index b0c5267b37..6b6b38a5cf 100644 --- a/packages/types/src/documents/app/row.ts +++ b/packages/types/src/documents/app/row.ts @@ -134,6 +134,12 @@ export const JsonTypes = [ FieldType.ARRAY, ] +export type FormulaResponseType = + | FieldType.STRING + | FieldType.NUMBER + | FieldType.BOOLEAN + | FieldType.DATETIME + export const NumericTypes = [FieldType.NUMBER, FieldType.BIGINT] export function isNumeric(type: FieldType) { diff --git a/packages/types/src/documents/app/table/schema.ts b/packages/types/src/documents/app/table/schema.ts index 00e119669b..771192e2f5 100644 --- a/packages/types/src/documents/app/table/schema.ts +++ b/packages/types/src/documents/app/table/schema.ts @@ -1,6 +1,6 @@ // all added by grid/table when defining the // column size, position and whether it can be viewed -import { FieldType } from "../row" +import { FieldType, FormulaResponseType } from "../row" import { AutoFieldSubType, AutoReason, @@ -115,11 +115,7 @@ export interface FormulaFieldMetadata extends BaseFieldSchema { type: FieldType.FORMULA formula: string formulaType?: FormulaType - responseType?: - | FieldType.STRING - | FieldType.NUMBER - | FieldType.BOOLEAN - | FieldType.DATETIME + responseType?: FormulaResponseType } export interface AIFieldMetadata extends BaseFieldSchema { From db3c6c36fcb853a8bef1afd3d5b0c94aed67c1cb Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 7 Nov 2024 17:01:42 +0000 Subject: [PATCH 14/60] Adding test cases for all formula response types. --- .../server/src/api/routes/tests/row.spec.ts | 108 +++++++++++++++--- 1 file changed, 92 insertions(+), 16 deletions(-) diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index bf8f5a2a1c..10b30466f3 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -11,9 +11,9 @@ import emitter from "../../../../src/events" import { outputProcessing } from "../../../utilities/rowProcessor" import { context, + features, InternalTable, tenancy, - features, utils, } from "@budibase/backend-core" import { quotas } from "@budibase/pro" @@ -21,27 +21,28 @@ import { AIOperationEnum, AttachmentFieldMetadata, AutoFieldSubType, + BBReferenceFieldSubType, Datasource, DateFieldMetadata, DeleteRow, FieldSchema, FieldType, - BBReferenceFieldSubType, + FormulaResponseType, FormulaType, INTERNAL_TABLE_SOURCE_ID, + JsonFieldSubType, NumberFieldMetadata, QuotaUsageType, + RelationSchemaField, RelationshipType, Row, + RowExportFormat, SaveTableRequest, StaticQuotaName, Table, + TableSchema, TableSourceType, UpdatedRowEventEmitter, - TableSchema, - JsonFieldSubType, - RowExportFormat, - RelationSchemaField, } from "@budibase/types" import { generator, mocks } from "@budibase/backend-core/tests" import _, { merge } from "lodash" @@ -50,6 +51,7 @@ import { Knex } from "knex" import { InternalTables } from "../../../db/utils" import { withEnv } from "../../../environment" import { JsTimeoutError } from "@budibase/string-templates" +import { isDate } from "../../../utilities" jest.mock("@budibase/pro", () => ({ ...jest.requireActual("@budibase/pro"), @@ -89,6 +91,10 @@ async function waitForEvent( return await p } +function encodeJS(binding: string) { + return `{{ js "${Buffer.from(binding).toString("base64")}"}}` +} + describe.each([ ["lucene", undefined], ["sqs", undefined], @@ -3476,7 +3482,7 @@ describe.each([ describe("Formula fields", () => { let table: Table let otherTable: Table - let relatedRow: Row + let relatedRow: Row, mainRow: Row beforeAll(async () => { otherTable = await config.api.table.save(defaultTable()) @@ -3504,7 +3510,7 @@ describe.each([ name: generator.word(), description: generator.paragraph(), }) - await config.api.row.save(table._id!, { + mainRow = await config.api.row.save(table._id!, { name: generator.word(), description: generator.paragraph(), tableId: table._id!, @@ -3512,6 +3518,25 @@ describe.each([ }) }) + async function updateFormulaColumn( + formula: string, + opts?: { responseType?: FormulaResponseType; formulaType?: FormulaType } + ) { + table = await config.api.table.save({ + ...table, + schema: { + ...table.schema, + formula: { + name: "formula", + type: FieldType.FORMULA, + formula: formula, + responseType: opts?.responseType, + formulaType: opts?.formulaType || FormulaType.DYNAMIC, + }, + }, + }) + } + it("should be able to search for rows containing formulas", async () => { const { rows } = await config.api.row.search(table._id!) expect(rows.length).toBe(1) @@ -3519,12 +3544,63 @@ describe.each([ const row = rows[0] expect(row.formula).toBe(relatedRow.name) }) + + it("should coerce - number response type", async () => { + await updateFormulaColumn(encodeJS("return 1"), { + responseType: FieldType.NUMBER, + }) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBe(1) + }) + + it("should coerce - boolean response type", async () => { + await updateFormulaColumn(encodeJS("return true"), { + responseType: FieldType.BOOLEAN, + }) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBe(true) + }) + + it("should coerce - datetime response type", async () => { + await updateFormulaColumn(encodeJS("return new Date()"), { + responseType: FieldType.DATETIME, + }) + const { rows } = await config.api.row.search(table._id!) + expect(isDate(rows[0].formula)).toBe(true) + }) + + it("should coerce - datetime with invalid value", async () => { + await updateFormulaColumn(encodeJS("return 'a'"), { + responseType: FieldType.DATETIME, + }) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBeUndefined() + }) + + it("should coerce handlebars", async () => { + await updateFormulaColumn("{{ add 1 1 }}", { + responseType: FieldType.NUMBER, + }) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBe(2) + }) + + it("should coerce a static handlebars formula", async () => { + await updateFormulaColumn(encodeJS("return 1"), { + responseType: FieldType.NUMBER, + formulaType: FormulaType.STATIC, + }) + // save the row to store the static value + await config.api.row.save(table._id!, mainRow) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBe(1) + }) }) describe("Formula JS protection", () => { it("should time out JS execution if a single cell takes too long", async () => { await withEnv({ JS_PER_INVOCATION_TIMEOUT_MS: 40 }, async () => { - const js = Buffer.from( + const js = encodeJS( ` let i = 0; while (true) { @@ -3532,7 +3608,7 @@ describe.each([ } return i; ` - ).toString("base64") + ) const table = await config.api.table.save( saveTableRequest({ @@ -3544,7 +3620,7 @@ describe.each([ formula: { name: "formula", type: FieldType.FORMULA, - formula: `{{ js "${js}"}}`, + formula: js, formulaType: FormulaType.DYNAMIC, }, }, @@ -3567,7 +3643,7 @@ describe.each([ JS_PER_REQUEST_TIMEOUT_MS: 80, }, async () => { - const js = Buffer.from( + const js = encodeJS( ` let i = 0; while (true) { @@ -3575,7 +3651,7 @@ describe.each([ } return i; ` - ).toString("base64") + ) const table = await config.api.table.save( saveTableRequest({ @@ -3587,7 +3663,7 @@ describe.each([ formula: { name: "formula", type: FieldType.FORMULA, - formula: `{{ js "${js}"}}`, + formula: js, formulaType: FormulaType.DYNAMIC, }, }, @@ -3629,7 +3705,7 @@ describe.each([ }) it("should not carry over context between formulas", async () => { - const js = Buffer.from(`return $("[text]");`).toString("base64") + const js = encodeJS(`return $("[text]");`) const table = await config.api.table.save( saveTableRequest({ schema: { @@ -3640,7 +3716,7 @@ describe.each([ formula: { name: "formula", type: FieldType.FORMULA, - formula: `{{ js "${js}"}}`, + formula: js, formulaType: FormulaType.DYNAMIC, }, }, From 4076e98308671b37129a0c3ffc810f2b00a6a1a5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 8 Nov 2024 16:01:05 +0000 Subject: [PATCH 15/60] Disable static formula tests in external DBs. --- .../server/src/api/routes/tests/row.spec.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index 10b30466f3..36428cf8f0 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -3585,16 +3585,17 @@ describe.each([ expect(rows[0].formula).toBe(2) }) - it("should coerce a static handlebars formula", async () => { - await updateFormulaColumn(encodeJS("return 1"), { - responseType: FieldType.NUMBER, - formulaType: FormulaType.STATIC, + isInternal && + it("should coerce a static handlebars formula", async () => { + await updateFormulaColumn(encodeJS("return 1"), { + responseType: FieldType.NUMBER, + formulaType: FormulaType.STATIC, + }) + // save the row to store the static value + await config.api.row.save(table._id!, mainRow) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBe(1) }) - // save the row to store the static value - await config.api.row.save(table._id!, mainRow) - const { rows } = await config.api.row.search(table._id!) - expect(rows[0].formula).toBe(1) - }) }) describe("Formula JS protection", () => { From c004062509ef42d2c1ddb4a36bd70022bc683e7f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 18 Nov 2024 13:18:45 +0100 Subject: [PATCH 16/60] Move atrament dependency --- packages/bbui/package.json | 1 + packages/client/package.json | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 0830f8ab6f..aeb7418526 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -81,6 +81,7 @@ "@spectrum-css/typography": "3.0.1", "@spectrum-css/underlay": "2.0.9", "@spectrum-css/vars": "3.0.1", + "atrament": "^4.3.0", "dayjs": "^1.10.8", "easymde": "^2.16.1", "svelte-dnd-action": "^0.9.8", diff --git a/packages/client/package.json b/packages/client/package.json index d3b0f098cb..fb9851e0a1 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -33,8 +33,7 @@ "sanitize-html": "^2.13.0", "screenfull": "^6.0.1", "shortid": "^2.2.15", - "svelte-spa-router": "^4.0.1", - "atrament": "^4.3.0" + "svelte-spa-router": "^4.0.1" }, "devDependencies": { "@rollup/plugin-alias": "^5.1.0", From d0acd9dc70edddf6bf35db30fd7fbd170c48b3f2 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 18 Nov 2024 13:19:01 +0100 Subject: [PATCH 17/60] Remove nx-cloud --- lerna.json | 1 - nx.json | 1 - 2 files changed, 2 deletions(-) diff --git a/lerna.json b/lerna.json index d74318806d..b3a124ec6b 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,6 @@ "$schema": "node_modules/lerna/schemas/lerna-schema.json", "version": "3.2.0", "npmClient": "yarn", - "packages": ["packages/*"], "concurrency": 20, "command": { "publish": { diff --git a/nx.json b/nx.json index fb05ea94d0..22b23a7874 100644 --- a/nx.json +++ b/nx.json @@ -2,7 +2,6 @@ "$schema": "./node_modules/nx/schemas/nx-schema.json", "tasksRunnerOptions": { "default": { - "runner": "nx-cloud", "options": { "cacheableOperations": ["build", "test", "check:types"] } From 4750e9faca0a3dd2796900b88520b4b08888a0f6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 18 Nov 2024 13:18:45 +0100 Subject: [PATCH 18/60] Move atrament dependency --- packages/bbui/package.json | 1 + packages/client/package.json | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/bbui/package.json b/packages/bbui/package.json index 0830f8ab6f..aeb7418526 100644 --- a/packages/bbui/package.json +++ b/packages/bbui/package.json @@ -81,6 +81,7 @@ "@spectrum-css/typography": "3.0.1", "@spectrum-css/underlay": "2.0.9", "@spectrum-css/vars": "3.0.1", + "atrament": "^4.3.0", "dayjs": "^1.10.8", "easymde": "^2.16.1", "svelte-dnd-action": "^0.9.8", diff --git a/packages/client/package.json b/packages/client/package.json index d3b0f098cb..fb9851e0a1 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -33,8 +33,7 @@ "sanitize-html": "^2.13.0", "screenfull": "^6.0.1", "shortid": "^2.2.15", - "svelte-spa-router": "^4.0.1", - "atrament": "^4.3.0" + "svelte-spa-router": "^4.0.1" }, "devDependencies": { "@rollup/plugin-alias": "^5.1.0", From 62be25c15785bfafd493a45d0240dd6ff811a137 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Mon, 18 Nov 2024 13:20:31 +0000 Subject: [PATCH 19/60] fix dnd handlers --- packages/backend-core/src/environment.ts | 3 --- .../backend-core/src/middleware/contentSecurityPolicy.ts | 5 ----- packages/builder/src/components/common/NavItem.svelte | 4 ++-- .../_components/ComponentList/ComponentScrollWrapper.svelte | 4 ++-- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/packages/backend-core/src/environment.ts b/packages/backend-core/src/environment.ts index b808dca72c..2763944d2f 100644 --- a/packages/backend-core/src/environment.ts +++ b/packages/backend-core/src/environment.ts @@ -231,9 +231,6 @@ const environment = { MIN_VERSION_WITHOUT_POWER_ROLE: process.env.MIN_VERSION_WITHOUT_POWER_ROLE || "3.0.0", DISABLE_CONTENT_SECURITY_POLICY: process.env.DISABLE_CONTENT_SECURITY_POLICY, - // stopgap migration strategy until we can ensure backwards compat without unsafe-inline in CSP - DISABLE_CSP_UNSAFE_INLINE_SCRIPTS: - process.env.DISABLE_CSP_UNSAFE_INLINE_SCRIPTS, } export function setEnv(newEnvVars: Partial): () => void { diff --git a/packages/backend-core/src/middleware/contentSecurityPolicy.ts b/packages/backend-core/src/middleware/contentSecurityPolicy.ts index e0dfbe6f64..d1668d3dd5 100644 --- a/packages/backend-core/src/middleware/contentSecurityPolicy.ts +++ b/packages/backend-core/src/middleware/contentSecurityPolicy.ts @@ -1,5 +1,4 @@ import crypto from "crypto" -import env from "../environment" const CSP_DIRECTIVES = { "default-src": ["'self'"], @@ -97,10 +96,6 @@ export async function contentSecurityPolicy(ctx: any, next: any) { `'nonce-${nonce}'`, ] - if (!env.DISABLE_CSP_UNSAFE_INLINE_SCRIPTS) { - directives["script-src"].push("'unsafe-inline'") - } - ctx.state.nonce = nonce const cspHeader = Object.entries(directives) diff --git a/packages/builder/src/components/common/NavItem.svelte b/packages/builder/src/components/common/NavItem.svelte index 039f94bbc0..ea61c8cecf 100644 --- a/packages/builder/src/components/common/NavItem.svelte +++ b/packages/builder/src/components/common/NavItem.svelte @@ -84,8 +84,8 @@ on:mouseleave on:click={onClick} on:contextmenu - ondragover="return false" - ondragenter="return false" + on:dragover={e => e.preventDefault()} + on:dragenter={e => e.preventDefault()} {id} {style} {draggable} diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentScrollWrapper.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentScrollWrapper.svelte index c64877e3e6..4bcb74fdd9 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentScrollWrapper.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ComponentList/ComponentScrollWrapper.svelte @@ -68,8 +68,8 @@ on:scroll bind:this={scrollRef} on:drop={onDrop} - ondragover="return false" - ondragenter="return false" + on:dragover={e => e.preventDefault()} + on:dragenter={e => e.preventDefault()} > From 0e742807dec4eed023b29a2dc32cca1f4899a45f Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Mon, 18 Nov 2024 14:19:41 +0000 Subject: [PATCH 20/60] Fix the NX check that looks for only affected packages when running tests in CI --- .github/workflows/budibase_ci.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 128b38a704..e894a91703 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -199,18 +199,22 @@ jobs: env: DATASOURCE: ${{ matrix.datasource }} run: | - AFFECTED=$(yarn --silent nx show projects --affected -t test --base=${{ env.NX_BASE_BRANCH }} -p @budibase/server) - if [ -n "$AFFECTED" ]; then - cd packages/server - if [ "${{ matrix.datasource }}" == "none" ]; then - yarn test --filter ./src/tests/filters/non-datasource-tests.js --passWithNoTests - else - yarn test --filter ./src/tests/filters/datasource-tests.js --passWithNoTests + if ${{ env.ONLY_AFFECTED_TASKS }}; then + AFFECTED=$(yarn --silent nx show projects --affected -t test --base=${{ env.NX_BASE_BRANCH }} -p @budibase/server) + if [ -z "$AFFECTED" ]; then + echo "No affected tests to run" + exit 0 fi - else - echo "No affected tests to run" fi + FILTER="./src/tests/filters/datasource-tests.js" + if [ "${{ matrix.datasource }}" == "none" ]; then + FILTER="./src/tests/filters/non-datasource-tests.js" + fi + + cd packages/server + yarn test --filter $FILTER --passWithNoTests + check-pro-submodule: runs-on: ubuntu-latest if: inputs.run_as_oss != true && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'Budibase/budibase') From dd7259219bd352239cae23768bc89047eca12ba1 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Mon, 18 Nov 2024 15:03:59 +0000 Subject: [PATCH 21/60] Bump version to 3.2.4 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 582f95b303..a214415508 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.3", + "version": "3.2.4", "npmClient": "yarn", "packages": [ "packages/*", From 4829e0a749b3ce01bd99fb945120b27a403c475a Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 18 Nov 2024 13:33:33 +0100 Subject: [PATCH 22/60] Remove camunda scripts --- package.json | 1 - scripts/deploy-camunda.sh | 32 -------------------------------- 2 files changed, 33 deletions(-) delete mode 100755 scripts/deploy-camunda.sh diff --git a/package.json b/package.json index 5010eb6b41..bb1f832f39 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "dev": "yarn run kill-all && lerna run --parallel prebuild && lerna run --stream dev", "dev:noserver": "yarn run kill-builder && lerna run --stream dev:stack:up && lerna run --stream dev --ignore @budibase/backend-core --ignore @budibase/server --ignore @budibase/worker", "dev:server": "yarn run kill-server && lerna run --stream dev --scope @budibase/worker --scope @budibase/server", - "dev:camunda": "./scripts/deploy-camunda.sh", "dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream dev:built", "dev:docker": "./scripts/devDocker.sh", "test": "lerna run --concurrency 1 --stream test --stream", diff --git a/scripts/deploy-camunda.sh b/scripts/deploy-camunda.sh deleted file mode 100755 index 66c505a6f0..0000000000 --- a/scripts/deploy-camunda.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/bin/bash -yarn global add zbctl -export ZEEBE_ADDRESS='localhost:26500' - -cd ../budibase-bpm - -is_camunda_ready() { - if (zbctl --insecure status 2>/dev/null) | grep -q 'Healthy'; then - return 1 - else - return 0 - fi -} - -docker-compose up -d -echo "waiting for Camunda to be ready..." - -while is_camunda_ready -eq 0; do sleep 1; done - -echo "deploy processes..." -for file in src/main/resources/models/*; do - zbctl deploy resource $file --insecure -done - -cd ../budibase/packages/pro -yarn && yarn build - -cd ../account-portal/packages/server -yarn worker:run & cd ../../../.. && yarn dev:accountportal - - - From d2cb289ce6f918fe48ba78b8cf3a8d4a5120fec2 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 18 Nov 2024 13:33:41 +0100 Subject: [PATCH 23/60] Update yarn.lock --- yarn.lock | 1 + 1 file changed, 1 insertion(+) diff --git a/yarn.lock b/yarn.lock index 8e499d6ef3..99f30ec3c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2051,6 +2051,7 @@ "@budibase/pouchdb-replication-stream" "1.2.11" "@budibase/shared-core" "0.0.0" "@budibase/types" "0.0.0" + "@types/chance" "1.1.3" aws-cloudfront-sign "3.0.2" aws-sdk "2.1030.0" bcrypt "5.1.0" From 149579cf5c6f14461be93be8cc7bbdedd7e69a19 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 18 Nov 2024 15:39:55 +0000 Subject: [PATCH 24/60] PR comments. --- .../backend/DataTable/modals/CreateEditColumn.svelte | 4 ++-- packages/server/src/api/routes/tests/row.spec.ts | 8 ++++++++ packages/server/src/utilities/rowProcessor/utils.ts | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte index 96397490f8..271a82f16b 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte @@ -387,7 +387,7 @@ editableColumn.relationshipType = RelationshipType.MANY_TO_MANY } else if (editableColumn.type === FieldType.FORMULA) { editableColumn.formulaType = "dynamic" - editableColumn.responseType = FIELDS.STRING.type + editableColumn.responseType = field.responseType || FIELDS.STRING.type } } @@ -784,7 +784,7 @@ ]} getOptionLabel={option => option.name} getOptionValue={option => option.type} - tooltip="Formulas by default will return a string - however if you need a native type the response can be coerced." + tooltip="Formulas by default will return a string - however if you need a another type the response can be coerced." /> diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index 9ea2b5572e..5bdd341beb 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -3308,6 +3308,14 @@ datasourceDescribe( expect(rows[0].formula).toBe(2) }) + it("should coerce handlebars to string (default)", async () => { + await updateFormulaColumn("{{ add 1 1 }}", { + responseType: FieldType.STRING, + }) + const { rows } = await config.api.row.search(table._id!) + expect(rows[0].formula).toBe("2") + }) + isInternal && it("should coerce a static handlebars formula", async () => { await updateFormulaColumn(encodeJS("return 1"), { diff --git a/packages/server/src/utilities/rowProcessor/utils.ts b/packages/server/src/utilities/rowProcessor/utils.ts index 15c0612fae..9dbeb8ebb2 100644 --- a/packages/server/src/utilities/rowProcessor/utils.ts +++ b/packages/server/src/utilities/rowProcessor/utils.ts @@ -100,8 +100,9 @@ export async function processFormulas( const result = processStringSync(formula, context) try { return responseType ? coerce(result, responseType) : result - } catch (err) { + } catch (err: any) { // if the coercion fails, we return empty row contents + span?.addTags({ coercionError: err.message }) return undefined } }), From a5a48889b02daf2d4c12e1de586552dbe000aa0c Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Mon, 18 Nov 2024 15:41:46 +0000 Subject: [PATCH 25/60] Bump version to 3.2.5 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index a214415508..e5b0013535 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.4", + "version": "3.2.5", "npmClient": "yarn", "packages": [ "packages/*", From 0053072d4f6f164f894b91181624368d89f402a0 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 18 Nov 2024 16:05:50 +0000 Subject: [PATCH 26/60] PR comment. --- .../components/backend/DataTable/modals/CreateEditColumn.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte index 271a82f16b..17069aa8c6 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte @@ -784,7 +784,7 @@ ]} getOptionLabel={option => option.name} getOptionValue={option => option.type} - tooltip="Formulas by default will return a string - however if you need a another type the response can be coerced." + tooltip="Formulas by default will return a string - however if you need another type the response can be coerced." /> From e972f4b95bc4c8a97f950a920100c0cf3c774f73 Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Mon, 18 Nov 2024 16:38:12 +0000 Subject: [PATCH 27/60] Fix block native search --- packages/client/src/utils/blocks.js | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/client/src/utils/blocks.js b/packages/client/src/utils/blocks.js index 0de0b55579..f9452e47a9 100644 --- a/packages/client/src/utils/blocks.js +++ b/packages/client/src/utils/blocks.js @@ -1,5 +1,7 @@ import { makePropSafe as safe } from "@budibase/string-templates" import { API } from "../api/index.js" +import { UILogicalOperator } from "@budibase/types" +import { OnEmptyFilter } from "@budibase/frontend-core/src/constants.js" // Map of data types to component types for search fields inside blocks const schemaComponentMap = { @@ -60,7 +62,11 @@ export const enrichSearchColumns = async (searchColumns, schema) => { * @param formId the ID of the form containing the search fields */ export const enrichFilter = (filter, columns, formId) => { - let enrichedFilter = [...(filter || [])] + if (!columns?.length) { + return filter + } + + let newFilters = [] columns?.forEach(column => { const safePath = column.name.split(".").map(safe).join(".") const stringType = column.type === "string" || column.type === "formula" @@ -69,7 +75,7 @@ export const enrichFilter = (filter, columns, formId) => { // For dates, use a range of the entire day selected if (dateType) { - enrichedFilter.push({ + newFilters.push({ field: column.name, type: column.type, operator: "rangeLow", @@ -79,7 +85,7 @@ export const enrichFilter = (filter, columns, formId) => { const format = "YYYY-MM-DDTHH:mm:ss.SSSZ" let hbs = `{{ date (add (date ${binding} "x") 86399999) "${format}" }}` hbs = `{{#if ${binding} }}${hbs}{{/if}}` - enrichedFilter.push({ + newFilters.push({ field: column.name, type: column.type, operator: "rangeHigh", @@ -90,7 +96,7 @@ export const enrichFilter = (filter, columns, formId) => { // For other fields, do an exact match else { - enrichedFilter.push({ + newFilters.push({ field: column.name, type: column.type, operator: stringType ? "string" : "equal", @@ -99,5 +105,16 @@ export const enrichFilter = (filter, columns, formId) => { }) } }) - return enrichedFilter + + return { + logicalOperator: UILogicalOperator.ALL, + onEmptyFilter: OnEmptyFilter.RETURN_ALL, + groups: [ + ...(filter?.groups || []), + { + logicalOperator: UILogicalOperator.ALL, + filters: newFilters, + }, + ], + } } From 2867515c0e76ce1e14e12866d221300d6769f356 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 19 Nov 2024 10:33:46 +0100 Subject: [PATCH 28/60] Exclude src from npm packages --- packages/backend-core/.npmignore | 4 +--- packages/string-templates/.npmignore | 4 ++++ packages/string-templates/package.json | 4 ---- 3 files changed, 5 insertions(+), 7 deletions(-) create mode 100644 packages/string-templates/.npmignore diff --git a/packages/backend-core/.npmignore b/packages/backend-core/.npmignore index 30bba85ce8..fb547825eb 100644 --- a/packages/backend-core/.npmignore +++ b/packages/backend-core/.npmignore @@ -1,6 +1,4 @@ * !dist/**/* dist/tsconfig.build.tsbuildinfo -!package.json -!src/** -!tests/** \ No newline at end of file +!package.json \ No newline at end of file diff --git a/packages/string-templates/.npmignore b/packages/string-templates/.npmignore new file mode 100644 index 0000000000..fb547825eb --- /dev/null +++ b/packages/string-templates/.npmignore @@ -0,0 +1,4 @@ +* +!dist/**/* +dist/tsconfig.build.tsbuildinfo +!package.json \ No newline at end of file diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 17f26604a3..2fb38aff33 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -14,10 +14,6 @@ "./package.json": "./package.json", "./iife": "./src/iife.js" }, - "files": [ - "dist", - "src" - ], "scripts": { "build": "tsc --emitDeclarationOnly && rollup -c", "dev": "rollup -cw", From 4f671825859c066308d00fa11eb2b6440e665196 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 19 Nov 2024 10:33:53 +0100 Subject: [PATCH 29/60] Proper types --- packages/backend-core/package.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index b68cba5fd9..219ae498aa 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -9,6 +9,13 @@ "./tests": "./dist/tests/index.js", "./*": "./dist/*.js" }, + "typesVersions": { + "*": { + "tests": [ + "dist/tests/index.d.ts" + ] + } + }, "author": "Budibase", "license": "GPL-3.0", "scripts": { From fb80647013e3e012af3bd1f0c8a67117b3bc157f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 19 Nov 2024 10:34:05 +0100 Subject: [PATCH 30/60] Proper types --- packages/string-templates/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 2fb38aff33..7490b3a0a4 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -4,7 +4,7 @@ "description": "Handlebars wrapper for Budibase templating.", "main": "dist/bundle.cjs", "module": "dist/bundle.mjs", - "types": "src/index.ts", + "types": "dist/index.d.ts", "license": "MPL-2.0", "exports": { ".": { From 50ac79396e279452e26ddcb4eb7b1383935cc8a6 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 19 Nov 2024 10:38:02 +0100 Subject: [PATCH 31/60] Expose iife --- packages/string-templates/package.json | 2 +- packages/string-templates/rollup.config.js | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/string-templates/package.json b/packages/string-templates/package.json index 7490b3a0a4..7fe0c25679 100644 --- a/packages/string-templates/package.json +++ b/packages/string-templates/package.json @@ -12,7 +12,7 @@ "import": "./dist/bundle.mjs" }, "./package.json": "./package.json", - "./iife": "./src/iife.js" + "./iife": "./dist/iife.mjs" }, "scripts": { "build": "tsc --emitDeclarationOnly && rollup -c", diff --git a/packages/string-templates/rollup.config.js b/packages/string-templates/rollup.config.js index ee02c7a14a..b745e97d91 100644 --- a/packages/string-templates/rollup.config.js +++ b/packages/string-templates/rollup.config.js @@ -10,8 +10,8 @@ import inject from "@rollup/plugin-inject" const production = !process.env.ROLLUP_WATCH -const config = (format, outputFile) => ({ - input: "src/index.ts", +const config = (input, outputFile, format) => ({ + input, output: { sourcemap: !production, format, @@ -42,6 +42,7 @@ const config = (format, outputFile) => ({ }) export default [ - config("cjs", "./dist/bundle.cjs"), - config("esm", "./dist/bundle.mjs"), + config("src/index.ts", "./dist/bundle.cjs", "cjs"), + config("src/index.ts", "./dist/bundle.mjs", "esm"), + config("src/iife.ts", "./dist/iife.mjs", "esm"), ] From 486bc761ebd1d226ed49cb08ba9c51b1553e98d7 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 19 Nov 2024 11:46:44 +0100 Subject: [PATCH 32/60] Fix check types --- packages/server/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index d9f84f6a5e..9d633c6455 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "./tsconfig.build.json", "compilerOptions": { + "lib": ["es2020", "dom"], "composite": true, "baseUrl": "." }, From 78505c20a48034ef77b103e967a1da5d95806150 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Nov 2024 11:27:50 +0000 Subject: [PATCH 33/60] Bump cross-spawn from 7.0.3 to 7.0.6 in /examples/nextjs-api-sales Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6. - [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md) - [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6) --- updated-dependencies: - dependency-name: cross-spawn dependency-type: indirect ... Signed-off-by: dependabot[bot] --- examples/nextjs-api-sales/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/nextjs-api-sales/yarn.lock b/examples/nextjs-api-sales/yarn.lock index 9acbdfdeb6..867835a6b7 100644 --- a/examples/nextjs-api-sales/yarn.lock +++ b/examples/nextjs-api-sales/yarn.lock @@ -423,9 +423,9 @@ core-js-pure@^3.20.2: integrity sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ== cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" From 889d3158e87b28ccd85791904b804af609f73bbb Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 19 Nov 2024 11:34:15 +0000 Subject: [PATCH 34/60] Bypass transformers that are trivial, allow users to configure bson buffer size. --- packages/backend-core/src/environment.ts | 7 +++++++ packages/server/src/startup/index.ts | 5 +++++ packages/server/src/threads/query.ts | 22 ++++++++++++---------- packages/worker/src/index.ts | 6 ++++++ 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/packages/backend-core/src/environment.ts b/packages/backend-core/src/environment.ts index 2763944d2f..56d9cd6e10 100644 --- a/packages/backend-core/src/environment.ts +++ b/packages/backend-core/src/environment.ts @@ -19,6 +19,12 @@ function isDev() { return process.env.NODE_ENV !== "production" } +function parseIntSafe(number?: string) { + if (number) { + return parseInt(number) + } +} + let LOADED = false if (!LOADED && isDev() && !isTest()) { require("dotenv").config() @@ -231,6 +237,7 @@ const environment = { MIN_VERSION_WITHOUT_POWER_ROLE: process.env.MIN_VERSION_WITHOUT_POWER_ROLE || "3.0.0", DISABLE_CONTENT_SECURITY_POLICY: process.env.DISABLE_CONTENT_SECURITY_POLICY, + BSON_BUFFER_SIZE: parseIntSafe(process.env.BSON_BUFFER_SIZE), } export function setEnv(newEnvVars: Partial): () => void { diff --git a/packages/server/src/startup/index.ts b/packages/server/src/startup/index.ts index 53c4f884cc..edca64db7d 100644 --- a/packages/server/src/startup/index.ts +++ b/packages/server/src/startup/index.ts @@ -28,6 +28,7 @@ import Koa from "koa" import { Server } from "http" import { AddressInfo } from "net" import fs from "fs" +import bson from "bson" let STARTUP_RAN = false @@ -193,6 +194,10 @@ export async function startup( }) } + if (coreEnv.BSON_BUFFER_SIZE) { + bson.setInternalBufferSize(coreEnv.BSON_BUFFER_SIZE) + } + console.log("Initialising JS runner") jsRunner.init() } diff --git a/packages/server/src/threads/query.ts b/packages/server/src/threads/query.ts index c7e28d3bf4..facdd20642 100644 --- a/packages/server/src/threads/query.ts +++ b/packages/server/src/threads/query.ts @@ -136,21 +136,23 @@ class QueryRunner { pagination = output.pagination } - // transform as required - if (transformer) { + // We avoid invoking the transformer if it's trivial because there is a cost + // to passing data in and out of the isolate, especially for MongoDB where + // we have to bson serialise/deserialise the data. + const hasTransformer = + transformer != null && + transformer.length > 0 && + transformer.trim() !== "return data" && + transformer.trim() !== "return data;" + + if (transformer && hasTransformer) { transformer = iifeWrapper(transformer) let vm = new IsolatedVM() if (datasource.source === SourceName.MONGODB) { vm = vm.withParsingBson(rows) } - - const ctx = { - data: rows, - params: enrichedParameters, - } - if (transformer != null) { - rows = vm.withContext(ctx, () => vm.execute(transformer!)) - } + const ctx = { data: rows, params: enrichedParameters } + rows = vm.withContext(ctx, () => vm.execute(transformer!)) } // if the request fails we retry once, invalidating the cached value diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index 010aa4c1a0..8a26a69dde 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -24,6 +24,7 @@ import { db.init() import koaBody from "koa-body" import http from "http" +import bson from "bson" import api from "./api" const koaSession = require("koa-session") @@ -99,6 +100,11 @@ export default server.listen(parseInt(env.PORT || "4002"), async () => { startupLog = `${startupLog} - environment: "${env.BUDIBASE_ENVIRONMENT}"` } console.log(startupLog) + + if (coreEnv.BSON_BUFFER_SIZE) { + bson.setInternalBufferSize(coreEnv.BSON_BUFFER_SIZE) + } + await initPro() await redis.clients.init() features.init() From f867b32aad81a4e6fee5f059dd51425f68d2ba92 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 19 Nov 2024 11:41:32 +0000 Subject: [PATCH 35/60] Bump version to 3.2.6 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index e5b0013535..3aac13e6d7 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.5", + "version": "3.2.6", "npmClient": "yarn", "packages": [ "packages/*", From 62297fbbfce7d7f2b0d79d9241b84697cc63377c Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 19 Nov 2024 11:45:25 +0000 Subject: [PATCH 36/60] Fix mongo query tests. --- packages/server/src/api/controllers/query/index.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/server/src/api/controllers/query/index.ts b/packages/server/src/api/controllers/query/index.ts index 54f672c3f3..15c60bcf47 100644 --- a/packages/server/src/api/controllers/query/index.ts +++ b/packages/server/src/api/controllers/query/index.ts @@ -23,6 +23,7 @@ import { } from "@budibase/types" import { ValidQueryNameRegex, utils as JsonUtils } from "@budibase/shared-core" import { findHBSBlocks } from "@budibase/string-templates" +import { ObjectId } from "mongodb" const Runner = new Thread(ThreadType.QUERY, { timeoutMs: env.QUERY_THREAD_TIMEOUT, @@ -223,6 +224,8 @@ export async function preview( } else { fieldMetadata = makeQuerySchema(FieldType.ARRAY, key) } + } else if (field instanceof ObjectId) { + fieldMetadata = makeQuerySchema(FieldType.STRING, key) } else { fieldMetadata = makeQuerySchema(FieldType.JSON, key) } From cfd092638e6d8aaf96c68da2a37f14e9ff65b71a Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 19 Nov 2024 12:46:52 +0100 Subject: [PATCH 37/60] Clean scripts --- .github/workflows/budibase_ci.yml | 4 ++-- package.json | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index cd761bd1b2..c178ecddf2 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -64,8 +64,8 @@ jobs: - run: yarn --frozen-lockfile # Run build all the projects - - name: Build OSS - run: yarn build:oss + - name: Build + run: yarn build # Check the types of the projects built via esbuild - name: Check types run: | diff --git a/package.json b/package.json index bb1f832f39..94dd224e3c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "setup": "git config submodule.recurse true && git submodule update && node ./hosting/scripts/setup.js && yarn && yarn build && yarn dev", "build": "DISABLE_V8_COMPILE_CACHE=1 NODE_OPTIONS=--max-old-space-size=1500 lerna run build --stream", "build:apps": "DISABLE_V8_COMPILE_CACHE=1 yarn build --scope @budibase/server --scope @budibase/worker", - "build:oss": "DISABLE_V8_COMPILE_CACHE=1 NODE_OPTIONS=--max-old-space-size=1500 lerna run build --stream", "build:cli": "yarn build --scope @budibase/cli", "build:dev": "lerna run --stream prebuild && yarn nx run-many --target=build --output-style=dynamic --watch --preserveWatchOutput", "check:types": "lerna run --concurrency 2 check:types", From 1fe5bffe0a2c527b70b887093f1cee3ca658d3a4 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Tue, 19 Nov 2024 14:43:48 +0000 Subject: [PATCH 38/60] Bump version to 3.2.7 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 3aac13e6d7..bd7509fcb3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.6", + "version": "3.2.7", "npmClient": "yarn", "packages": [ "packages/*", From 19b219a8a8a692859f4b7fd5376462734ca5869a Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Tue, 19 Nov 2024 15:20:40 +0000 Subject: [PATCH 39/60] Remove bson call from worker. --- packages/worker/src/index.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/worker/src/index.ts b/packages/worker/src/index.ts index 8a26a69dde..0547afab38 100644 --- a/packages/worker/src/index.ts +++ b/packages/worker/src/index.ts @@ -24,7 +24,6 @@ import { db.init() import koaBody from "koa-body" import http from "http" -import bson from "bson" import api from "./api" const koaSession = require("koa-session") @@ -101,10 +100,6 @@ export default server.listen(parseInt(env.PORT || "4002"), async () => { } console.log(startupLog) - if (coreEnv.BSON_BUFFER_SIZE) { - bson.setInternalBufferSize(coreEnv.BSON_BUFFER_SIZE) - } - await initPro() await redis.clients.init() features.init() From 0fd8436a156b753c5d97dc8d69662561fde85bd4 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 19 Nov 2024 17:17:15 +0000 Subject: [PATCH 40/60] Adding dependency check scripts. --- package.json | 1 + scripts/depcheck.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100755 scripts/depcheck.js diff --git a/package.json b/package.json index fc7e202e3d..6e1e059fd3 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "@types/node": "20.10.0", "@types/proper-lockfile": "^4.1.4", "@typescript-eslint/parser": "6.9.0", + "depcheck": "^1.4.7", "esbuild": "^0.18.17", "esbuild-node-externals": "^1.14.0", "eslint": "^8.52.0", diff --git a/scripts/depcheck.js b/scripts/depcheck.js new file mode 100755 index 0000000000..a60bd9e580 --- /dev/null +++ b/scripts/depcheck.js @@ -0,0 +1,29 @@ +#!/usr/bin/node + +const depcheck = require("depcheck") + +function filterResults(missing) { + if (missing.src) { + delete missing.src + } + return missing +} + +function printMissing(missing) { + for (let [key, value] of Object.entries(filterResults(missing))) { + console.log(`Package ${key} missing in: ${value.join(", ")}`) + } +} + +depcheck(process.cwd(), { + ignorePatterns: ["dist"], + skipMissing: false, +}).then(results => { + if (Object.values(filterResults(results.missing)).length > 0) { + printMissing(results.missing) + console.error("Missing packages found - stopping.") + process.exit(-1) + } else { + console.log("No missing dependencies.") + } +}) From 87a6006b4e441e309581ba8d38684d094dafb5aa Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 19 Nov 2024 17:17:31 +0000 Subject: [PATCH 41/60] Adding all dependencies that were missing and adding to build script. --- packages/backend-core/package.json | 10 +- packages/server/package.json | 17 +- packages/worker/package.json | 10 +- yarn.lock | 404 ++++++++++++++++++++++++++--- 4 files changed, 393 insertions(+), 48 deletions(-) diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 219ae498aa..b716600cfd 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -21,7 +21,7 @@ "scripts": { "prebuild": "rimraf dist/", "prepack": "cp package.json dist", - "build": "tsc -p tsconfig.build.json --paths null && node ./scripts/build.js", + "build": "../../scripts/depcheck.js && tsc -p tsconfig.build.json --paths null && node ./scripts/build.js", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", "test": "bash scripts/test.sh", @@ -43,6 +43,7 @@ "ioredis": "5.3.2", "joi": "17.6.0", "jsonwebtoken": "9.0.2", + "knex": "2.4.2", "koa-passport": "^6.0.0", "koa-pino-logger": "4.0.0", "lodash": "4.17.21", @@ -61,9 +62,12 @@ "semver": "^7.5.4", "tar-fs": "2.1.1", "uuid": "^8.3.2", - "knex": "2.4.2" + "@techpass/passport-openidconnect": "0.3.3", + "google-auth-library": "^8.0.1", + "google-spreadsheet": "npm:@budibase/google-spreadsheet@4.1.5" }, "devDependencies": { + "@jest/types": "^29.6.3", "@shopify/jest-koa-mocks": "5.1.1", "@swc/core": "1.3.71", "@swc/jest": "0.2.27", @@ -71,6 +75,7 @@ "@types/cookies": "0.7.8", "@types/jest": "29.5.5", "@types/lodash": "4.14.200", + "@types/node": "^22.9.0", "@types/node-fetch": "2.6.4", "@types/pouchdb": "6.4.0", "@types/redlock": "4.0.7", @@ -81,6 +86,7 @@ "ioredis-mock": "8.9.0", "jest": "29.7.0", "jest-serial-runner": "1.2.1", + "nock": "^13.5.6", "pino-pretty": "10.0.0", "pouchdb-adapter-memory": "7.2.2", "testcontainers": "^10.7.2", diff --git a/packages/server/package.json b/packages/server/package.json index 76dd03b5a8..aebea5bc8b 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -10,7 +10,7 @@ }, "scripts": { "prebuild": "rimraf dist/", - "build": "node ./scripts/build.js", + "build": "../../scripts/depcheck.js && node ./scripts/build.js", "postbuild": "copyfiles -f ../client/dist/budibase-client.js ../client/manifest.json client && copyfiles -f ../../yarn.lock ./dist/", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", "build:isolated-vm-lib:snippets": "esbuild --minify --bundle src/jsRunner/bundles/snippets.ts --outfile=src/jsRunner/bundles/snippets.ivm.bundle.js --platform=node --format=iife --global-name=snippets", @@ -49,9 +49,11 @@ "license": "GPL-3.0", "dependencies": { "@apidevtools/swagger-parser": "10.0.3", + "@azure/msal-node": "^2.5.1", "@budibase/backend-core": "0.0.0", "@budibase/client": "0.0.0", "@budibase/frontend-core": "0.0.0", + "@budibase/nano": "10.1.5", "@budibase/pro": "0.0.0", "@budibase/shared-core": "0.0.0", "@budibase/string-templates": "0.0.0", @@ -69,6 +71,7 @@ "aws-sdk": "2.1030.0", "bcrypt": "5.1.0", "bcryptjs": "2.4.3", + "bson": "^6.9.0", "buffer": "6.0.3", "bull": "4.10.1", "chokidar": "3.5.3", @@ -76,10 +79,12 @@ "cookies": "0.8.0", "csvtojson": "2.0.10", "curlconverter": "3.21.0", + "dayjs": "^1.10.8", "dd-trace": "5.2.0", "dotenv": "8.2.0", "form-data": "4.0.0", "global-agent": "3.0.0", + "google-auth-library": "^8.0.1", "google-spreadsheet": "npm:@budibase/google-spreadsheet@4.1.5", "ioredis": "5.3.2", "isolated-vm": "^4.7.2", @@ -87,6 +92,7 @@ "joi": "17.6.0", "js-yaml": "4.1.0", "jsonschema": "1.4.0", + "jsonwebtoken": "9.0.2", "knex": "2.4.2", "koa": "2.13.4", "koa-body": "4.2.0", @@ -109,10 +115,12 @@ "pouchdb-all-dbs": "1.1.1", "pouchdb-find": "7.2.2", "redis": "4", + "semver": "^7.5.4", "serialize-error": "^7.0.1", "server-destroy": "1.0.1", "snowflake-promise": "^4.5.0", "socket.io": "4.7.5", + "svelte": "^4.2.10", "tar": "6.2.1", "tmp": "0.2.3", "to-json-schema": "0.2.5", @@ -123,6 +131,7 @@ }, "devDependencies": { "@babel/preset-env": "7.16.11", + "@jest/types": "^29.6.3", "@swc/core": "1.3.71", "@swc/jest": "0.2.27", "@types/archiver": "6.0.2", @@ -133,6 +142,7 @@ "@types/koa__router": "8.0.8", "@types/lodash": "4.14.200", "@types/mssql": "9.1.4", + "@types/node": "^22.9.0", "@types/node-fetch": "2.6.4", "@types/oracledb": "6.5.1", "@types/pg": "8.6.6", @@ -141,8 +151,10 @@ "@types/tar": "6.1.5", "@types/tmp": "0.2.6", "@types/uuid": "8.3.4", + "chance": "^1.1.12", "copyfiles": "2.4.1", "docker-compose": "0.23.17", + "ioredis-mock": "8.9.0", "jest": "29.7.0", "jest-extended": "^4.0.2", "jest-openapi": "0.14.2", @@ -158,7 +170,8 @@ "tsconfig-paths": "4.0.0", "typescript": "5.5.2", "update-dotenv": "1.1.1", - "yargs": "13.2.4" + "yargs": "13.2.4", + "@babel/core": "^7.22.5" }, "nx": { "targets": { diff --git a/packages/worker/package.json b/packages/worker/package.json index a65b5ed90f..9ffe9a27fa 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -13,7 +13,7 @@ ], "scripts": { "prebuild": "rimraf dist/", - "build": "node ../../scripts/build.js", + "build": "../../scripts/depcheck.js && node ../../scripts/build.js", "postbuild": "copyfiles -f ../../yarn.lock ./dist/", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", @@ -41,6 +41,7 @@ "@budibase/pro": "0.0.0", "@budibase/string-templates": "0.0.0", "@budibase/types": "0.0.0", + "@budibase/shared-core": "0.0.0", "@koa/router": "8.0.8", "@techpass/passport-openidconnect": "0.3.3", "@types/global-agent": "2.1.1", @@ -53,6 +54,8 @@ "global-agent": "3.0.0", "ical-generator": "4.1.0", "joi": "17.6.0", + "jsonwebtoken": "9.0.2", + "knex": "2.4.2", "koa": "2.13.4", "koa-body": "4.2.0", "koa-compress": "4.0.1", @@ -69,9 +72,10 @@ "pouchdb": "7.3.0", "pouchdb-all-dbs": "1.1.1", "server-destroy": "1.0.1", - "knex": "2.4.2" + "uuid": "^8.3.2" }, "devDependencies": { + "@jest/types": "^29.6.3", "@swc/core": "1.3.71", "@swc/jest": "0.2.27", "@types/jest": "29.5.5", @@ -79,6 +83,7 @@ "@types/koa": "2.13.4", "@types/koa__router": "8.0.8", "@types/lodash": "4.14.200", + "@types/node": "^22.9.0", "@types/node-fetch": "2.6.4", "@types/server-destroy": "1.0.1", "@types/supertest": "2.0.14", @@ -87,6 +92,7 @@ "nock": "^13.5.4", "nodemon": "2.0.15", "rimraf": "3.0.2", + "superagent": "^10.1.1", "supertest": "6.3.3", "timekeeper": "2.2.0", "typescript": "5.5.2", diff --git a/yarn.lock b/yarn.lock index 73a4e8fa4d..767995140b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -809,23 +809,23 @@ tslib "^2.2.0" "@azure/msal-browser@^3.11.1": - version "3.24.0" - resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.24.0.tgz#3208047672d0b0c943b0bef5f995d510d6582ae4" - integrity sha512-JGNV9hTYAa7lsum9IMIibn2kKczAojNihGo1hi7pG0kNrcKej530Fl6jxwM05A44/6I079CSn6WxYxbVhKUmWg== + version "3.27.0" + resolved "https://registry.yarnpkg.com/@azure/msal-browser/-/msal-browser-3.27.0.tgz#b6f02f73c8e102d3f115009b4677539fb173fe2b" + integrity sha512-+b4ZKSD8+vslCtVRVetkegEhOFMLP3rxDWJY212ct+2r6jVg6OSQKc1Qz3kCoXo0FgwaXkb+76TMZfpHp8QtgA== dependencies: - "@azure/msal-common" "14.15.0" + "@azure/msal-common" "14.16.0" -"@azure/msal-common@14.15.0": - version "14.15.0" - resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.15.0.tgz#0e27ac0bb88fe100f4f8d1605b64d5c268636a55" - integrity sha512-ImAQHxmpMneJ/4S8BRFhjt1MZ3bppmpRPYYNyzeQPeFN288YKbb8TmmISQEbtfkQ1BPASvYZU5doIZOPBAqENQ== +"@azure/msal-common@14.16.0": + version "14.16.0" + resolved "https://registry.yarnpkg.com/@azure/msal-common/-/msal-common-14.16.0.tgz#f3470fcaec788dbe50859952cd499340bda23d7a" + integrity sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA== -"@azure/msal-node@^2.9.2": - version "2.14.0" - resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.14.0.tgz#7881895d41b03d8b9b38a29550ba3bbb15f73b3c" - integrity sha512-rrfzIpG3Q1rHjVYZmHAEDidWAZZ2cgkxlIcMQ8dHebRISaZ2KCV33Q8Vs+uaV6lxweROabNxKFlR2lIKagZqYg== +"@azure/msal-node@^2.5.1", "@azure/msal-node@^2.9.2": + version "2.16.1" + resolved "https://registry.yarnpkg.com/@azure/msal-node/-/msal-node-2.16.1.tgz#89828832e8e6c8a88cecc4ef6d8d4e4352116b77" + integrity sha512-1NEFpTmMMT2A7RnZuvRl/hUmJU+GLPjh+ShyIqPktG2PvSd2yvPnzGd/BxIBAAvJG5nr9lH4oYcQXepDbaE7fg== dependencies: - "@azure/msal-common" "14.15.0" + "@azure/msal-common" "14.16.0" jsonwebtoken "^9.0.0" uuid "^8.3.0" @@ -851,6 +851,15 @@ "@babel/highlight" "^7.23.4" chalk "^2.4.2" +"@babel/code-frame@^7.25.9": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255" @@ -896,6 +905,17 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.25.9": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" + integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== + dependencies: + "@babel/parser" "^7.26.2" + "@babel/types" "^7.26.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -1077,11 +1097,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.22.5": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.16.7", "@babel/helper-validator-option@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" @@ -1120,6 +1150,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/parser@^7.23.0", "@babel/parser@^7.25.3", "@babel/parser@^7.25.9", "@babel/parser@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" + integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== + dependencies: + "@babel/types" "^7.26.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" @@ -2016,6 +2053,15 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/traverse@^7.22.5": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" @@ -2032,6 +2078,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.23.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" @@ -2041,6 +2100,14 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.25.9", "@babel/types@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" + integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@balena/dockerignore@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@balena/dockerignore/-/dockerignore-1.0.2.tgz#9ffe4726915251e8eb69f44ef3547e0da2c03e0d" @@ -2051,13 +2118,14 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@budibase/backend-core@2.33.2": +"@budibase/backend-core@3.2.7": version "0.0.0" dependencies: "@budibase/nano" "10.1.5" "@budibase/pouchdb-replication-stream" "1.2.11" "@budibase/shared-core" "0.0.0" "@budibase/types" "0.0.0" + "@techpass/passport-openidconnect" "0.3.3" aws-cloudfront-sign "3.0.2" aws-sdk "2.1030.0" bcrypt "5.1.0" @@ -2066,6 +2134,8 @@ correlation-id "4.0.0" dd-trace "5.2.0" dotenv "16.0.1" + google-auth-library "^8.0.1" + google-spreadsheet "npm:@budibase/google-spreadsheet@4.1.5" ioredis "5.3.2" joi "17.6.0" jsonwebtoken "9.0.2" @@ -2132,15 +2202,15 @@ through2 "^2.0.0" "@budibase/pro@npm:@budibase/pro@latest": - version "2.33.2" - resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-2.33.2.tgz#5c2012f7b2bf0fd871cda1ad37ad7a0442c84658" - integrity sha512-lBB6Wfp6OIOHRlGq82WS9KxvEXRs/P2QlwJT0Aj9PhmkQFsnXm2r8d18f0xTGvcflD+iR7XGP/k56JlCanmhQg== + version "3.2.7" + resolved "https://registry.yarnpkg.com/@budibase/pro/-/pro-3.2.7.tgz#4dfc48f3e2ba3a3b235872e54c3de4de54ea7941" + integrity sha512-GRRaf1qSqQfoodjvKjBDvNOVHZrcSXF7so6Y9Xv/MiRTjDES5nmhIT5rL/PQ1+Mb+sPytYmMaJ2mlTtwqSQZgQ== dependencies: "@anthropic-ai/sdk" "^0.27.3" - "@budibase/backend-core" "2.33.2" - "@budibase/shared-core" "2.33.2" - "@budibase/string-templates" "2.33.2" - "@budibase/types" "2.33.2" + "@budibase/backend-core" "3.2.7" + "@budibase/shared-core" "3.2.7" + "@budibase/string-templates" "3.2.7" + "@budibase/types" "3.2.7" "@koa/router" "8.0.8" bull "4.10.1" dd-trace "5.2.0" @@ -2153,13 +2223,13 @@ scim-patch "^0.8.1" scim2-parse-filter "^0.2.8" -"@budibase/shared-core@2.33.2": +"@budibase/shared-core@3.2.7": version "0.0.0" dependencies: "@budibase/types" "0.0.0" cron-validate "1.4.5" -"@budibase/string-templates@2.33.2": +"@budibase/string-templates@3.2.7": version "0.0.0" dependencies: "@budibase/handlebars-helpers" "^0.13.2" @@ -2167,7 +2237,7 @@ handlebars "^4.7.8" lodash.clonedeep "^4.5.0" -"@budibase/types@2.33.2": +"@budibase/types@3.2.7": version "0.0.0" dependencies: scim-patch "^0.8.1" @@ -5882,6 +5952,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^22.9.0": + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== + dependencies: + undici-types "~6.19.8" + "@types/nodemailer@^6.4.4": version "6.4.15" resolved "https://registry.yarnpkg.com/@types/nodemailer/-/nodemailer-6.4.15.tgz#494be695e11c438f7f5df738fb4ab740312a6ed2" @@ -5908,6 +5985,11 @@ dependencies: "@types/node" "*" +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + "@types/passport-google-oauth@^1.0.42": version "1.0.45" resolved "https://registry.yarnpkg.com/@types/passport-google-oauth/-/passport-google-oauth-1.0.45.tgz#c986c787ec9706b4a596d2bae43342b50b54973d" @@ -6657,6 +6739,53 @@ loupe "^3.1.1" tinyrainbow "^1.2.0" +"@vue/compiler-core@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05" + integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q== + dependencies: + "@babel/parser" "^7.25.3" + "@vue/shared" "3.5.13" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.0" + +"@vue/compiler-dom@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58" + integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA== + dependencies: + "@vue/compiler-core" "3.5.13" + "@vue/shared" "3.5.13" + +"@vue/compiler-sfc@^3.3.4": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46" + integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ== + dependencies: + "@babel/parser" "^7.25.3" + "@vue/compiler-core" "3.5.13" + "@vue/compiler-dom" "3.5.13" + "@vue/compiler-ssr" "3.5.13" + "@vue/shared" "3.5.13" + estree-walker "^2.0.2" + magic-string "^0.30.11" + postcss "^8.4.48" + source-map-js "^1.2.0" + +"@vue/compiler-ssr@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba" + integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA== + dependencies: + "@vue/compiler-dom" "3.5.13" + "@vue/shared" "3.5.13" + +"@vue/shared@3.5.13": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f" + integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ== + "@xyflow/svelte@^0.1.18": version "0.1.18" resolved "https://registry.yarnpkg.com/@xyflow/svelte/-/svelte-0.1.18.tgz#ba2f9f72adc64ff6f71a5ad03cf759af8d7c9748" @@ -7903,6 +8032,11 @@ bson@^6.7.0: resolved "https://registry.yarnpkg.com/bson/-/bson-6.8.0.tgz#5063c41ba2437c2b8ff851b50d9e36cb7aaa7525" integrity sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ== +bson@^6.9.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/bson/-/bson-6.9.0.tgz#2be50049430dceaa9300402520fe03e4ed5fdfd6" + integrity sha512-X9hJeyeM0//Fus+0pc5dSUMhhrrmWwQUtdavaQeF3Ta6m69matZkGWV/MrBcnwUeLC8W9kwwc2hfkZgUuCX3Ig== + btoa@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" @@ -8195,6 +8329,11 @@ call-me-maybe@^1.0.1: resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== +callsite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -8214,7 +8353,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: +camelcase@^6.2.0, camelcase@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -8301,6 +8440,11 @@ chance@1.1.8: resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.8.tgz#5d6c2b78c9170bf6eb9df7acdda04363085be909" integrity sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg== +chance@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.12.tgz#6a263cf241674af50a1b903357f9d328a6f252fb" + integrity sha512-vVBIGQVnwtUG+SYe0ge+3MvF78cvSpuCOEUJr7sVEk2vSBuMW6OXNJjSzdtzrlxNUEaoqH2GBd5Y/+18BEB01Q== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -8986,6 +9130,17 @@ cors@~2.8.5: object-assign "^4" vary "^1" +cosmiconfig@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cosmiconfig@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.2.0.tgz#f7d17c56a590856cd1e7cee98734dca272b0d8fd" @@ -9101,9 +9256,9 @@ cron-validate@1.4.5: yup "0.32.9" cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + version "6.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" + integrity sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw== dependencies: nice-try "^1.0.4" path-key "^2.0.1" @@ -9749,6 +9904,35 @@ denque@^2.1.0: resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== +depcheck@^1.4.7: + version "1.4.7" + resolved "https://registry.yarnpkg.com/depcheck/-/depcheck-1.4.7.tgz#57976e2fa43625f477efc0f19ad868ef94f8a26c" + integrity sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA== + dependencies: + "@babel/parser" "^7.23.0" + "@babel/traverse" "^7.23.2" + "@vue/compiler-sfc" "^3.3.4" + callsite "^1.0.0" + camelcase "^6.3.0" + cosmiconfig "^7.1.0" + debug "^4.3.4" + deps-regex "^0.2.0" + findup-sync "^5.0.0" + ignore "^5.2.4" + is-core-module "^2.12.0" + js-yaml "^3.14.1" + json5 "^2.2.3" + lodash "^4.17.21" + minimatch "^7.4.6" + multimatch "^5.0.0" + please-upgrade-node "^3.2.0" + readdirp "^3.6.0" + require-package-name "^2.0.1" + resolve "^1.22.3" + resolve-from "^5.0.0" + semver "^7.5.4" + yargs "^16.2.0" + depd@2.0.0, depd@^2.0.0, depd@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -9803,6 +9987,11 @@ deprecation@^2.0.0: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +deps-regex@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/deps-regex/-/deps-regex-0.2.0.tgz#3ee7ddae5fd784f3accf29d5a711aa6e10044137" + integrity sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q== + dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -9821,6 +10010,11 @@ destroy@^1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q== + detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -10474,7 +10668,7 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.2.0, entities@^4.3.0, entities@^4.4.0: +entities@^4.2.0, entities@^4.3.0, entities@^4.4.0, entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -11193,7 +11387,7 @@ expand-template@^2.0.3: resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== -expand-tilde@^2.0.2: +expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw== @@ -11548,6 +11742,16 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +findup-sync@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-5.0.0.tgz#54380ad965a7edca00cc8f63113559aadc541bd2" + integrity sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.3" + micromatch "^4.0.4" + resolve-dir "^1.0.1" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -11678,6 +11882,15 @@ formidable@^2.1.2: once "^1.4.0" qs "^6.11.0" +formidable@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-3.5.2.tgz#207c33fecdecb22044c82ba59d0c63a12fb81d77" + integrity sha512-Jqc1btCy3QzRbJaICGwKcBfGWuLADRerLzDqi2NwSt/UkXLsHJw2TVResiaoBufHVHy9aSgClOHCeJsSsFLTbg== + dependencies: + dezalgo "^1.0.4" + hexoid "^2.0.0" + once "^1.4.0" + fresh@^0.5.2, fresh@~0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -12193,6 +12406,26 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg== + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + global@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" @@ -12569,6 +12802,11 @@ hexoid@^1.0.0: resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== +hexoid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-2.0.0.tgz#fb36c740ebbf364403fa1ec0c7efd268460ec5b9" + integrity sha512-qlspKUK7IlSQv2o+5I7yhUd7TxlOG2Vr5LTa3ve2XSNVKAL/n/u/7KLvKmFNimomDIKvZFXWHv0T12mv7rT8Aw== + hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -13222,6 +13460,13 @@ is-class-hotfix@~0.0.6: resolved "https://registry.yarnpkg.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz#a527d31fb23279281dde5f385c77b5de70a72435" integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ== +is-core-module@^2.12.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.13.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" @@ -13608,6 +13853,11 @@ is-whitespace@^0.3.0: resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" integrity sha512-RydPhl4S6JwAyj0JJjshWJEFG6hNye3pZFBRZaTUfZFwGHxzppNaNOVgQuS/E/SlhrApuMXrpnK1EEIXfdo3Dg== +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -14268,7 +14518,7 @@ js-yaml@4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -js-yaml@^3.10.0, js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -15606,6 +15856,13 @@ magic-string@^0.30.10, magic-string@^0.30.3, magic-string@^0.30.4: dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" +magic-string@^0.30.11: + version "0.30.13" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.13.tgz#92438e3ff4946cf54f18247c981e5c161c46683c" + integrity sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + make-dir@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -15983,7 +16240,7 @@ minimatch@^5.0.1, minimatch@^5.1.0: dependencies: brace-expansion "^2.0.1" -minimatch@^7.4.2: +minimatch@^7.4.2, minimatch@^7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.6.tgz#845d6f254d8f4a5e4fd6baf44d5f10c8448365fb" integrity sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw== @@ -16286,7 +16543,7 @@ multi-part@^3.0.0: mime-kind "^3.0.0" multi-part-lite "^1.0.0" -multimatch@5.0.0: +multimatch@5.0.0, multimatch@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== @@ -16436,6 +16693,15 @@ nock@13.5.4, nock@^13.5.4: json-stringify-safe "^5.0.1" propagate "^2.0.0" +nock@^13.5.6: + version "13.5.6" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" + integrity sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ== + dependencies: + debug "^4.1.0" + json-stringify-safe "^5.0.1" + propagate "^2.0.0" + node-abi@^3.3.0: version "3.54.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.54.0.tgz#f6386f7548817acac6434c6cba02999c9aebcc69" @@ -17897,6 +18163,11 @@ picocolors@^1.0.0, picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -18077,6 +18348,13 @@ pkginfo@0.4.x: resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.1.tgz#b5418ef0439de5425fc4995042dced14fb2a84ff" integrity sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ== +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -18394,6 +18672,15 @@ postcss@^8.1.7, postcss@^8.2.9, postcss@^8.3.11, postcss@^8.4.12, postcss@^8.4.2 picocolors "^1.0.1" source-map-js "^1.2.0" +postcss@^8.4.48: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.1" + source-map-js "^1.2.1" + postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" @@ -19282,7 +19569,7 @@ readdir-glob@^1.1.2: dependencies: minimatch "^5.1.0" -readdirp@~3.6.0: +readdirp@^3.6.0, readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== @@ -19512,6 +19799,11 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +require-package-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" + integrity sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q== + requirejs-config-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" @@ -19552,6 +19844,14 @@ resolve-dependency-path@^2.0.0: resolved "https://registry.yarnpkg.com/resolve-dependency-path/-/resolve-dependency-path-2.0.0.tgz#11700e340717b865d216c66cabeb4a2a3c696736" integrity sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w== +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg== + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -19575,7 +19875,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== -resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.21.0, resolve@^1.22.1, resolve@^1.22.4: +resolve@^1.10.0, resolve@^1.11.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.21.0, resolve@^1.22.1, resolve@^1.22.3, resolve@^1.22.4: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -20441,6 +20741,11 @@ source-map-js@^1.0.1, source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -21040,6 +21345,21 @@ subleveldown@^5.0.1: levelup "^4.4.0" reachdown "^1.1.0" +superagent@^10.1.1: + version "10.1.1" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-10.1.1.tgz#2f112591a5701a1d4467048580bcfda104e5a94d" + integrity sha512-9pIwrHrOj3uAnqg9gDlW7EA2xv+N5au/dSM0kM22HTqmUu8jBxNT+8uA7tA3UoCnmiqzpSbu8rasIUZvbyamMQ== + dependencies: + component-emitter "^1.3.0" + cookiejar "^2.1.4" + debug "^4.3.4" + fast-safe-stringify "^2.1.1" + form-data "^4.0.0" + formidable "^3.5.2" + methods "^1.1.2" + mime "2.6.0" + qs "^6.11.0" + superagent@^8.0.5: version "8.1.2" resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" @@ -22087,7 +22407,7 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.19.2: +undici-types@~6.19.2, undici-types@~6.19.8: version "6.19.8" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== @@ -22720,9 +23040,9 @@ which-collection@^1.0.1: is-weakset "^2.0.3" which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" @@ -22735,7 +23055,7 @@ which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: gopd "^1.0.1" has-tostringtag "^1.0.2" -which@^1.2.9: +which@^1.2.14, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -23068,7 +23388,7 @@ yaml@2.0.0-1: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-1.tgz#8c3029b3ee2028306d5bcf396980623115ff8d18" integrity sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ== -yaml@^1.10.2: +yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -23244,4 +23564,4 @@ zip-stream@^6.0.1: dependencies: archiver-utils "^5.0.0" compress-commons "^6.0.2" - readable-stream "^4.0.0" \ No newline at end of file + readable-stream "^4.0.0" From c789f174ab902cc1d2fcd9966febf15cc513395c Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 19 Nov 2024 17:25:51 +0000 Subject: [PATCH 42/60] Adding node to each script run for CI. --- packages/backend-core/package.json | 2 +- packages/server/package.json | 2 +- packages/worker/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index b716600cfd..6bd3c1728e 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -21,7 +21,7 @@ "scripts": { "prebuild": "rimraf dist/", "prepack": "cp package.json dist", - "build": "../../scripts/depcheck.js && tsc -p tsconfig.build.json --paths null && node ./scripts/build.js", + "build": "node ../../scripts/depcheck.js && tsc -p tsconfig.build.json --paths null && node ./scripts/build.js", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", "test": "bash scripts/test.sh", diff --git a/packages/server/package.json b/packages/server/package.json index aebea5bc8b..6595182451 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -10,7 +10,7 @@ }, "scripts": { "prebuild": "rimraf dist/", - "build": "../../scripts/depcheck.js && node ./scripts/build.js", + "build": "node ../../scripts/depcheck.js && node ./scripts/build.js", "postbuild": "copyfiles -f ../client/dist/budibase-client.js ../client/manifest.json client && copyfiles -f ../../yarn.lock ./dist/", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", "build:isolated-vm-lib:snippets": "esbuild --minify --bundle src/jsRunner/bundles/snippets.ts --outfile=src/jsRunner/bundles/snippets.ivm.bundle.js --platform=node --format=iife --global-name=snippets", diff --git a/packages/worker/package.json b/packages/worker/package.json index 9ffe9a27fa..a2e6fceb85 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -13,7 +13,7 @@ ], "scripts": { "prebuild": "rimraf dist/", - "build": "../../scripts/depcheck.js && node ../../scripts/build.js", + "build": "node ../../scripts/depcheck.js && node ../../scripts/build.js", "postbuild": "copyfiles -f ../../yarn.lock ./dist/", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", From f8a63cec5e763daf705b3210970fcc375ee1dd64 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 19 Nov 2024 18:00:46 +0000 Subject: [PATCH 43/60] Update .gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bac643e5df..21637edfbe 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ packages/server/build/oldClientVersions/**/* packages/builder/src/components/deploy/clientVersions.json packages/server/src/integrations/tests/utils/*.lock packages/builder/vite.config.mjs.timestamp* +packages/account-portal # Logs logs @@ -110,4 +111,4 @@ budibase-component budibase-datasource *.iml -.nx \ No newline at end of file +.nx From 5a0916ca2aac750c8b3e9399acd803c349af7a5a Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 19 Nov 2024 18:08:34 +0000 Subject: [PATCH 44/60] Switching it to be a step as part of monorepo check types. --- package.json | 3 ++- packages/backend-core/package.json | 3 ++- packages/server/package.json | 3 ++- packages/worker/package.json | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 3bee9f2d91..07e0010bf2 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "build:apps": "DISABLE_V8_COMPILE_CACHE=1 yarn build --scope @budibase/server --scope @budibase/worker", "build:cli": "yarn build --scope @budibase/cli", "build:dev": "lerna run --stream prebuild && yarn nx run-many --target=build --output-style=dynamic --watch --preserveWatchOutput", - "check:types": "lerna run --concurrency 2 check:types", + "check:types": "yarn check:dependencies && lerna run --concurrency 2 check:types", + "check:dependencies": "lerna run --concurrency 2 check:dependencies", "build:sdk": "lerna run --stream build:sdk", "deps:circular": "madge packages/server/dist/index.js packages/worker/src/index.ts packages/backend-core/dist/src/index.js packages/cli/src/index.js --circular", "release": "lerna publish from-package --yes --force-publish --no-git-tag-version --no-push --no-git-reset", diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 6bd3c1728e..dc4108d20b 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -21,9 +21,10 @@ "scripts": { "prebuild": "rimraf dist/", "prepack": "cp package.json dist", - "build": "node ../../scripts/depcheck.js && tsc -p tsconfig.build.json --paths null && node ./scripts/build.js", + "build": "tsc -p tsconfig.build.json --paths null && node ./scripts/build.js", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", + "check:dependencies": "node ../../scripts/depcheck.js", "test": "bash scripts/test.sh", "test:watch": "jest --watchAll" }, diff --git a/packages/server/package.json b/packages/server/package.json index 6595182451..2ccc4cfc68 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -10,9 +10,10 @@ }, "scripts": { "prebuild": "rimraf dist/", - "build": "node ../../scripts/depcheck.js && node ./scripts/build.js", + "build": "node ./scripts/build.js", "postbuild": "copyfiles -f ../client/dist/budibase-client.js ../client/manifest.json client && copyfiles -f ../../yarn.lock ./dist/", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", + "check:dependencies": "node ../../scripts/depcheck.js", "build:isolated-vm-lib:snippets": "esbuild --minify --bundle src/jsRunner/bundles/snippets.ts --outfile=src/jsRunner/bundles/snippets.ivm.bundle.js --platform=node --format=iife --global-name=snippets", "build:isolated-vm-lib:string-templates": "esbuild --minify --bundle src/jsRunner/bundles/index-helpers.ts --outfile=src/jsRunner/bundles/index-helpers.ivm.bundle.js --platform=node --format=iife --external:handlebars --global-name=helpers", "build:isolated-vm-lib:bson": "esbuild --minify --bundle src/jsRunner/bundles/bsonPackage.ts --outfile=src/jsRunner/bundles/bson.ivm.bundle.js --platform=node --format=iife --global-name=bson", diff --git a/packages/worker/package.json b/packages/worker/package.json index a2e6fceb85..2406a5b50e 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -13,9 +13,10 @@ ], "scripts": { "prebuild": "rimraf dist/", - "build": "node ../../scripts/depcheck.js && node ../../scripts/build.js", + "build": "node ../../scripts/build.js", "postbuild": "copyfiles -f ../../yarn.lock ./dist/", "check:types": "tsc -p tsconfig.json --noEmit --paths null --target es2020", + "check:dependencies": "node ../../scripts/depcheck.js", "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "run:docker": "node dist/index.js", "debug": "yarn build && node --expose-gc --inspect=9223 dist/index.js", From d2b5320599da6998e77480fde8204b4226528672 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 19 Nov 2024 18:09:14 +0000 Subject: [PATCH 45/60] Updating yarn.lock. --- yarn.lock | 5 ----- 1 file changed, 5 deletions(-) diff --git a/yarn.lock b/yarn.lock index fc367ea08b..0564df8816 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12183,11 +12183,6 @@ husky@^8.0.3: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -husky@^9.1.4: - version "9.1.7" - resolved "https://registry.yarnpkg.com/husky/-/husky-9.1.7.tgz#d46a38035d101b46a70456a850ff4201344c0b2d" - integrity sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA== - ical-generator@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-4.1.0.tgz#2a336c951864c5583a2aa715d16f2edcdfd2d90b" From 48f9b9f570d1617ce2ba444dc74c460e03110329 Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 20 Nov 2024 09:25:08 +0000 Subject: [PATCH 46/60] Bump version to 3.2.8 --- lerna.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lerna.json b/lerna.json index a0105e7944..5b0d73f9ce 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.7", + "version": "3.2.8", "npmClient": "yarn", "concurrency": 20, "command": { @@ -17,4 +17,4 @@ "loadEnvFiles": false } } -} +} \ No newline at end of file From 7a1883f327947d0b635821c546c2a40ee80b879a Mon Sep 17 00:00:00 2001 From: Budibase Staging Release Bot <> Date: Wed, 20 Nov 2024 09:57:02 +0000 Subject: [PATCH 47/60] Bump version to 3.2.9 --- lerna.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lerna.json b/lerna.json index 5b0d73f9ce..1abfec7d7c 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.2.8", + "version": "3.2.9", "npmClient": "yarn", "concurrency": 20, "command": { From 563a0b7e2d6efeba41a90c2e72aa661a6a079fda Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 11:29:44 +0000 Subject: [PATCH 48/60] Add sqs to the datasource test matrix. --- .github/workflows/budibase_ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index c178ecddf2..0447b528f0 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -147,7 +147,8 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - datasource: [mssql, mysql, postgres, mongodb, mariadb, oracle, none] + datasource: + [mssql, mysql, postgres, mongodb, mariadb, oracle, sqs, none] steps: - name: Checkout repo uses: actions/checkout@v4 From b95960b01f9a9d8cafdb155379d5b29dfd5feeca Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 11:43:46 +0000 Subject: [PATCH 49/60] Enable verbose test output in CI, as well as the github-actions reporter. --- .github/workflows/budibase_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 0447b528f0..aa7efc13a8 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -211,7 +211,7 @@ jobs: fi cd packages/server - yarn test --filter $FILTER --passWithNoTests + yarn test --filter $FILTER --verbose --reporters=default --reporters=github-actions check-pro-submodule: runs-on: ubuntu-latest From f30d56210f029d10445a6398f725c323dadf1ad0 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 11:51:32 +0000 Subject: [PATCH 50/60] Break a test on purpose to check reporter. --- packages/server/src/api/routes/tests/row.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index 5bdd341beb..95d44a86ba 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -565,7 +565,7 @@ datasourceDescribe( const row = await config.api.row.save(table._id!, { food: ["orange"], }) - expect(row.food).toEqual(["orange"]) + expect(row.food).toEqual(["orangefdsfsd"]) }) it("resets back to its default value when empty", async () => { From 8d5a67b6b52528031f88776d8eb2d411939a34a2 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:07:07 +0000 Subject: [PATCH 51/60] Add reporters to rest of jest tests. --- .github/workflows/budibase_ci.yml | 14 +++++--- .../server/src/api/routes/tests/row.spec.ts | 2 +- scripts/run-affected.js | 34 ------------------- 3 files changed, 10 insertions(+), 40 deletions(-) delete mode 100755 scripts/run-affected.js diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index aa7efc13a8..1739070717 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -114,9 +114,9 @@ jobs: - name: Test run: | if ${{ env.ONLY_AFFECTED_TASKS }}; then - yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} + yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- --verbose --reporters=default --reporters=github-actions else - yarn test --ignore=@budibase/worker --ignore=@budibase/server + yarn test --ignore=@budibase/worker --ignore=@budibase/server --verbose --reporters=default --reporters=github-actions fi test-worker: @@ -138,11 +138,15 @@ jobs: - name: Test worker run: | if ${{ env.ONLY_AFFECTED_TASKS }}; then - node scripts/run-affected.js --task=test --scope=@budibase/worker --since=${{ env.NX_BASE_BRANCH }} - else - yarn test --scope=@budibase/worker + AFFECTED=$(yarn --silent nx show projects --affected -t test --base=${{ env.NX_BASE_BRANCH }} -p @budibase/worker) + if [ -z "$AFFECTED" ]; then + echo "No affected tests to run" + exit 0 + fi fi + yarn test --scope=@budibase/worker --verbose --reporters=default --reporters=github-actions + test-server: runs-on: ubuntu-latest strategy: diff --git a/packages/server/src/api/routes/tests/row.spec.ts b/packages/server/src/api/routes/tests/row.spec.ts index 95d44a86ba..5bdd341beb 100644 --- a/packages/server/src/api/routes/tests/row.spec.ts +++ b/packages/server/src/api/routes/tests/row.spec.ts @@ -565,7 +565,7 @@ datasourceDescribe( const row = await config.api.row.save(table._id!, { food: ["orange"], }) - expect(row.food).toEqual(["orangefdsfsd"]) + expect(row.food).toEqual(["orange"]) }) it("resets back to its default value when empty", async () => { diff --git a/scripts/run-affected.js b/scripts/run-affected.js deleted file mode 100755 index 97f79bb463..0000000000 --- a/scripts/run-affected.js +++ /dev/null @@ -1,34 +0,0 @@ -/*** - * Running lerna with since and scope is not working as expected. - * For example, running the command `yarn test --scope=@budibase/worker --since=master`, with changes only on `@budibase/backend-core` will not work as expected, as it does not analyse the dependencies properly. The actual `@budibase/worker` task will not be triggered. - * - * This script is using `lerna ls` to detect all the affected projects from a given commit, and if the scoped package is affected, the actual command will be executed. - * - * The current version of the script only supports a single project in the scope. - */ - -const { execSync } = require("child_process") - -const argv = require("yargs").demandOption(["task", "since", "scope"]).argv - -const { task, since, scope } = argv - -const affectedPackages = execSync( - `yarn --silent nx show projects --affected -t ${task} --base=${since} --json`, - { - encoding: "utf-8", - } -) - -const packages = JSON.parse(affectedPackages) - -const isAffected = packages.includes(scope) - -if (isAffected) { - console.log(`${scope} is affected. Running task "${task}"`) - execSync(`yarn ${task} --scope=${scope}`, { - stdio: "inherit", - }) -} else { - console.log(`${scope} is not affected. Skipping task "${task}"`) -} From b02e48fa099a4135a12ad7d7ee37c81cb8fe3483 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:10:39 +0000 Subject: [PATCH 52/60] Attempt to fix CI. --- .github/workflows/budibase_ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 1739070717..5decb660c1 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -116,7 +116,7 @@ jobs: if ${{ env.ONLY_AFFECTED_TASKS }}; then yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- --verbose --reporters=default --reporters=github-actions else - yarn test --ignore=@budibase/worker --ignore=@budibase/server --verbose --reporters=default --reporters=github-actions + yarn test --ignore=@budibase/worker --ignore=@budibase/server -- --verbose --reporters=default --reporters=github-actions fi test-worker: @@ -145,7 +145,8 @@ jobs: fi fi - yarn test --scope=@budibase/worker --verbose --reporters=default --reporters=github-actions + cd packages/worker + yarn test --verbose --reporters=default --reporters=github-actions test-server: runs-on: ubuntu-latest From d3da6c08a921e64d705c3aec54c7b15c4bd2b104 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:12:21 +0000 Subject: [PATCH 53/60] Attempt to fix CI. --- .github/workflows/budibase_ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 5decb660c1..cda2c7aa2d 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -114,9 +114,9 @@ jobs: - name: Test run: | if ${{ env.ONLY_AFFECTED_TASKS }}; then - yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- --verbose --reporters=default --reporters=github-actions + yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- -- --verbose --reporters=default --reporters=github-actions else - yarn test --ignore=@budibase/worker --ignore=@budibase/server -- --verbose --reporters=default --reporters=github-actions + yarn test --ignore=@budibase/worker --ignore=@budibase/server -- -- --verbose --reporters=default --reporters=github-actions fi test-worker: From d3d187e9aec7adb6284a945b3860b0ec2cdeef6b Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:25:48 +0000 Subject: [PATCH 54/60] Fix test-libraries yarn invocation. --- .github/workflows/budibase_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index cda2c7aa2d..c7630e07bd 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -116,7 +116,7 @@ jobs: if ${{ env.ONLY_AFFECTED_TASKS }}; then yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- -- --verbose --reporters=default --reporters=github-actions else - yarn test --ignore=@budibase/worker --ignore=@budibase/server -- -- --verbose --reporters=default --reporters=github-actions + yarn test -- -- --ignore=@budibase/worker --ignore=@budibase/server --verbose --reporters=default --reporters=github-actions fi test-worker: From 6495a84ff9e582fe4b4cead1aa7ecc879ccd3aea Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:34:18 +0000 Subject: [PATCH 55/60] Fix test-libraries yarn invocation. --- .github/workflows/budibase_ci.yml | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index c7630e07bd..732a295aae 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -114,9 +114,9 @@ jobs: - name: Test run: | if ${{ env.ONLY_AFFECTED_TASKS }}; then - yarn test --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- -- --verbose --reporters=default --reporters=github-actions + yarn test -- --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- --verbose --reporters=default --reporters=github-actions else - yarn test -- -- --ignore=@budibase/worker --ignore=@budibase/server --verbose --reporters=default --reporters=github-actions + yarn test -- --ignore=@budibase/worker --ignore=@budibase/server -- --verbose --reporters=default --reporters=github-actions fi test-worker: diff --git a/package.json b/package.json index 07e0010bf2..af39a4048d 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "dev:server": "yarn run kill-server && lerna run --stream dev --scope @budibase/worker --scope @budibase/server", "dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream dev:built", "dev:docker": "./scripts/devDocker.sh", - "test": "lerna run --concurrency 1 --stream test --stream", + "test": "lerna run --concurrency 1 --stream test", "test:containers:kill": "./scripts/killTestcontainers.sh", "lint:eslint": "eslint packages --max-warnings=0", "lint:prettier": "prettier --check \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\"", From 8944b0908b5e264beacb41178a1a71270a56a68c Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:37:36 +0000 Subject: [PATCH 56/60] Create failing test in test-libraries --- .../backend-core/src/users/test/db.spec.ts | 21 +------------------ 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/packages/backend-core/src/users/test/db.spec.ts b/packages/backend-core/src/users/test/db.spec.ts index 3e29d6673c..a279fa3780 100644 --- a/packages/backend-core/src/users/test/db.spec.ts +++ b/packages/backend-core/src/users/test/db.spec.ts @@ -36,26 +36,7 @@ describe("UserDB", () => { describe("save", () => { describe("create", () => { it("creating a new user will persist it", async () => { - const email = generator.email({}) - const user: User = structures.users.user({ - email, - tenantId: config.getTenantId(), - }) - - await config.doInTenant(async () => { - const saveUserResponse = await db.save(user) - - const persistedUser = await db.getUserByEmail(email) - expect(persistedUser).toEqual({ - ...user, - _id: saveUserResponse._id, - _rev: expect.stringMatching(/^1-\w+/), - password: expect.not.stringMatching(user.password!), - status: UserStatus.ACTIVE, - createdAt: Date.now(), - updatedAt: new Date().toISOString(), - }) - }) + throw new Error("oh no") }) it("the same email cannot be used twice in the same tenant", async () => { From cf57c7a0d08d3ee7887a81cf59d4c2c1ffb34861 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:37:47 +0000 Subject: [PATCH 57/60] Revert failing test. --- .../backend-core/src/users/test/db.spec.ts | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/backend-core/src/users/test/db.spec.ts b/packages/backend-core/src/users/test/db.spec.ts index a279fa3780..3e29d6673c 100644 --- a/packages/backend-core/src/users/test/db.spec.ts +++ b/packages/backend-core/src/users/test/db.spec.ts @@ -36,7 +36,26 @@ describe("UserDB", () => { describe("save", () => { describe("create", () => { it("creating a new user will persist it", async () => { - throw new Error("oh no") + const email = generator.email({}) + const user: User = structures.users.user({ + email, + tenantId: config.getTenantId(), + }) + + await config.doInTenant(async () => { + const saveUserResponse = await db.save(user) + + const persistedUser = await db.getUserByEmail(email) + expect(persistedUser).toEqual({ + ...user, + _id: saveUserResponse._id, + _rev: expect.stringMatching(/^1-\w+/), + password: expect.not.stringMatching(user.password!), + status: UserStatus.ACTIVE, + createdAt: Date.now(), + updatedAt: new Date().toISOString(), + }) + }) }) it("the same email cannot be used twice in the same tenant", async () => { From 63aa1ec0bf40e767c3f21f0a00270fa384d7b86a Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 12:50:07 +0000 Subject: [PATCH 58/60] Create failing test in test-libraries --- packages/backend-core/src/users/test/db.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend-core/src/users/test/db.spec.ts b/packages/backend-core/src/users/test/db.spec.ts index 3e29d6673c..8fce11c7f1 100644 --- a/packages/backend-core/src/users/test/db.spec.ts +++ b/packages/backend-core/src/users/test/db.spec.ts @@ -48,6 +48,7 @@ describe("UserDB", () => { const persistedUser = await db.getUserByEmail(email) expect(persistedUser).toEqual({ ...user, + ohno: "what", _id: saveUserResponse._id, _rev: expect.stringMatching(/^1-\w+/), password: expect.not.stringMatching(user.password!), From 3b439e1228767bdbdb0d11b55e8bcadd28ac632e Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 13:00:26 +0000 Subject: [PATCH 59/60] Don't prefix lerna output to allow github actions annotations through. --- .github/workflows/budibase_ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/budibase_ci.yml b/.github/workflows/budibase_ci.yml index 732a295aae..f1ed6eb87e 100644 --- a/.github/workflows/budibase_ci.yml +++ b/.github/workflows/budibase_ci.yml @@ -114,9 +114,9 @@ jobs: - name: Test run: | if ${{ env.ONLY_AFFECTED_TASKS }}; then - yarn test -- --ignore=@budibase/worker --ignore=@budibase/server --since=${{ env.NX_BASE_BRANCH }} -- --verbose --reporters=default --reporters=github-actions + yarn test -- --ignore=@budibase/worker --ignore=@budibase/server --no-prefix --since=${{ env.NX_BASE_BRANCH }} -- --verbose --reporters=default --reporters=github-actions else - yarn test -- --ignore=@budibase/worker --ignore=@budibase/server -- --verbose --reporters=default --reporters=github-actions + yarn test -- --ignore=@budibase/worker --ignore=@budibase/server --no-prefix -- --verbose --reporters=default --reporters=github-actions fi test-worker: From f25c24dac586da5866f5e768ab6454ead7e1d5fa Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Wed, 20 Nov 2024 13:06:56 +0000 Subject: [PATCH 60/60] Fix test. --- packages/backend-core/src/users/test/db.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/backend-core/src/users/test/db.spec.ts b/packages/backend-core/src/users/test/db.spec.ts index 8fce11c7f1..3e29d6673c 100644 --- a/packages/backend-core/src/users/test/db.spec.ts +++ b/packages/backend-core/src/users/test/db.spec.ts @@ -48,7 +48,6 @@ describe("UserDB", () => { const persistedUser = await db.getUserByEmail(email) expect(persistedUser).toEqual({ ...user, - ohno: "what", _id: saveUserResponse._id, _rev: expect.stringMatching(/^1-\w+/), password: expect.not.stringMatching(user.password!),