From a2b9fcd4486ffdd8909dfec722c56dd89837b9a9 Mon Sep 17 00:00:00 2001 From: Rory Powell Date: Fri, 10 Jun 2022 22:57:12 +0100 Subject: [PATCH] Dev improvements - remove need to rebuilds of backend-core/dist and enable debugging when running tests and backend services, use source directly using typescript and jest path mappings --- .gitignore | 2 + package.json | 2 +- packages/backend-core/.gitignore | 3 - packages/backend-core/accounts.js | 2 +- packages/backend-core/auth.js | 2 +- packages/backend-core/cache.js | 6 +- packages/backend-core/constants.js | 2 +- packages/backend-core/context.js | 4 +- packages/backend-core/db.js | 10 +- packages/backend-core/deprovision.js | 2 +- packages/backend-core/encryption.js | 2 +- packages/backend-core/logging.js | 2 +- packages/backend-core/middleware.js | 2 +- packages/backend-core/migrations.js | 2 +- packages/backend-core/objectStore.js | 4 +- packages/backend-core/package.json | 9 +- packages/backend-core/permissions.js | 2 +- packages/backend-core/redis.js | 6 +- packages/backend-core/roles.js | 2 +- packages/backend-core/sessions.js | 2 +- packages/backend-core/src/logging.js | 2 +- packages/backend-core/tenancy.js | 2 +- packages/backend-core/tests/index.ts | 5 - .../tests/utilities/TestConfiguration.js | 3 - .../tests/utilities/mocks/events.js | 183 +++++++++--------- packages/backend-core/tsconfig.build.json | 7 +- packages/backend-core/tsconfig.json | 10 +- packages/backend-core/utils.js | 4 +- packages/builder/package.json | 1 + packages/builder/tsconfig.build.json | 23 +++ packages/builder/tsconfig.json | 36 ++-- packages/builder/yarn.lock | 21 +- packages/server/package.json | 8 +- packages/server/scripts/jestSetup.js | 4 +- packages/server/src/module.d.ts | 1 - packages/server/tsconfig.build.json | 9 +- packages/server/tsconfig.json | 15 +- packages/server/yarn.lock | 9 + packages/types/.gitignore | 4 +- packages/types/package.json | 5 +- packages/types/tsconfig.build.json | 6 +- packages/worker/.gitignore | 3 +- packages/worker/package.json | 10 +- packages/worker/scripts/jestSetup.js | 4 +- .../worker/src/api/routes/tests/auth.spec.js | 4 +- packages/worker/tsconfig.build.json | 6 +- packages/worker/tsconfig.json | 14 +- packages/worker/yarn.lock | 14 ++ tsconfig.json | 9 + 49 files changed, 286 insertions(+), 204 deletions(-) create mode 100644 packages/builder/tsconfig.build.json create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index 03d77c5477..f063e2224f 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,5 @@ packages/builder/cypress.env.json packages/builder/cypress/reports stats.html +# TypeScript cache +*.tsbuildinfo \ No newline at end of file diff --git a/package.json b/package.json index 94e712127f..3704e42388 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "setup": "node ./hosting/scripts/setup.js && yarn && yarn bootstrap && yarn build && yarn dev", "bootstrap": "lerna link && lerna bootstrap && ./scripts/link-dependencies.sh", "build": "lerna run build", - "build:dev": "lerna run prebuild && lerna run build:dev --scope @budibase/server --scope @budibase/worker --stream", + "build:dev": "lerna run prebuild && tsc --build --watch --preserveWatchOutput", "release": "lerna publish patch --yes --force-publish && yarn release:pro", "release:develop": "lerna publish prerelease --yes --force-publish --dist-tag develop && yarn release:pro:develop", "release:pro": "bash scripts/pro/release.sh", diff --git a/packages/backend-core/.gitignore b/packages/backend-core/.gitignore index 2528ad91a4..3784b93408 100644 --- a/packages/backend-core/.gitignore +++ b/packages/backend-core/.gitignore @@ -44,9 +44,6 @@ jspm_packages/ # Snowpack dependency directory (https://snowpack.dev/) web_modules/ -# TypeScript cache -*.tsbuildinfo - # Optional npm cache directory .npm diff --git a/packages/backend-core/accounts.js b/packages/backend-core/accounts.js index ec06a7775e..47ad03456a 100644 --- a/packages/backend-core/accounts.js +++ b/packages/backend-core/accounts.js @@ -1 +1 @@ -module.exports = require("./dist/src/cloud/accounts") +module.exports = require("./src/cloud/accounts") diff --git a/packages/backend-core/auth.js b/packages/backend-core/auth.js index 624c3458f7..bbfe3d41dd 100644 --- a/packages/backend-core/auth.js +++ b/packages/backend-core/auth.js @@ -1 +1 @@ -module.exports = require("./dist/src/auth") +module.exports = require("./src/auth") diff --git a/packages/backend-core/cache.js b/packages/backend-core/cache.js index 615058406a..932fd7b901 100644 --- a/packages/backend-core/cache.js +++ b/packages/backend-core/cache.js @@ -1,7 +1,7 @@ -const generic = require("./dist/src/cache/generic") +const generic = require("./src/cache/generic") module.exports = { - user: require("./dist/src/cache/user"), - app: require("./dist/src/cache/appMetadata"), + user: require("./src/cache/user"), + app: require("./src/cache/appMetadata"), ...generic, } diff --git a/packages/backend-core/constants.js b/packages/backend-core/constants.js index c972fbe99c..4abb7703db 100644 --- a/packages/backend-core/constants.js +++ b/packages/backend-core/constants.js @@ -1 +1 @@ -module.exports = require("./dist/src/constants") +module.exports = require("./src/constants") diff --git a/packages/backend-core/context.js b/packages/backend-core/context.js index 67138e797a..aaa0f56f92 100644 --- a/packages/backend-core/context.js +++ b/packages/backend-core/context.js @@ -6,9 +6,9 @@ const { updateAppId, doInAppContext, doInTenant, -} = require("./dist/src/context") +} = require("./src/context") -const identity = require("./dist/src/context/identity") +const identity = require("./src/context/identity") module.exports = { getAppDB, diff --git a/packages/backend-core/db.js b/packages/backend-core/db.js index e835485568..0d2869d9f1 100644 --- a/packages/backend-core/db.js +++ b/packages/backend-core/db.js @@ -1,7 +1,7 @@ module.exports = { - ...require("./dist/src/db/utils"), - ...require("./dist/src/db/constants"), - ...require("./dist/src/db"), - ...require("./dist/src/db/views"), - ...require("./dist/src/db/pouch"), + ...require("./src/db/utils"), + ...require("./src/db/constants"), + ...require("./src/db"), + ...require("./src/db/views"), + ...require("./src/db/pouch"), } diff --git a/packages/backend-core/deprovision.js b/packages/backend-core/deprovision.js index f99338e24c..672da214ff 100644 --- a/packages/backend-core/deprovision.js +++ b/packages/backend-core/deprovision.js @@ -1 +1 @@ -module.exports = require("./dist/src/context/deprovision") +module.exports = require("./src/context/deprovision") diff --git a/packages/backend-core/encryption.js b/packages/backend-core/encryption.js index 89761158af..4ccb6e3a99 100644 --- a/packages/backend-core/encryption.js +++ b/packages/backend-core/encryption.js @@ -1 +1 @@ -module.exports = require("./dist/src/security/encryption") +module.exports = require("./src/security/encryption") diff --git a/packages/backend-core/logging.js b/packages/backend-core/logging.js index fd095fd6f7..da40fe3100 100644 --- a/packages/backend-core/logging.js +++ b/packages/backend-core/logging.js @@ -1 +1 @@ -module.exports = require("./dist/src/logging") +module.exports = require("./src/logging") diff --git a/packages/backend-core/middleware.js b/packages/backend-core/middleware.js index 09ae618b38..30fec96239 100644 --- a/packages/backend-core/middleware.js +++ b/packages/backend-core/middleware.js @@ -1 +1 @@ -module.exports = require("./dist/src/middleware") +module.exports = require("./src/middleware") diff --git a/packages/backend-core/migrations.js b/packages/backend-core/migrations.js index 0ff2b6331c..2de19ebf65 100644 --- a/packages/backend-core/migrations.js +++ b/packages/backend-core/migrations.js @@ -1 +1 @@ -module.exports = require("./dist/src/migrations") +module.exports = require("./src/migrations") diff --git a/packages/backend-core/objectStore.js b/packages/backend-core/objectStore.js index abf760591c..3ee433f224 100644 --- a/packages/backend-core/objectStore.js +++ b/packages/backend-core/objectStore.js @@ -1,4 +1,4 @@ module.exports = { - ...require("./dist/src/objectStore"), - ...require("./dist/src/objectStore/utils"), + ...require("./src/objectStore"), + ...require("./src/objectStore/utils"), } diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index c928beea6f..574e0a2367 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -4,6 +4,10 @@ "description": "Budibase backend core libraries used in server and worker", "main": "dist/src/index.js", "types": "dist/src/index.d.ts", + "exports": { + ".": "./dist/src/index.js", + "./*": "./dist/*.js" + }, "author": "Budibase", "license": "GPL-3.0", "scripts": { @@ -43,12 +47,15 @@ "jest": { "preset": "ts-jest", "testEnvironment": "node", + "moduleNameMapper": { + "@budibase/types": "/../types/src" + }, "setupFiles": [ "./scripts/jestSetup.ts" ] }, "devDependencies": { - "@budibase/types": "^1.0.195", + "@budibase/types": "^1.0.198", "@shopify/jest-koa-mocks": "3.1.5", "@types/koa": "2.0.52", "@types/node": "14.18.20", diff --git a/packages/backend-core/permissions.js b/packages/backend-core/permissions.js index 589c66ae37..42f37c9c7e 100644 --- a/packages/backend-core/permissions.js +++ b/packages/backend-core/permissions.js @@ -1 +1 @@ -module.exports = require("./dist/src/security/permissions") +module.exports = require("./src/security/permissions") diff --git a/packages/backend-core/redis.js b/packages/backend-core/redis.js index 53edb79122..badce3be20 100644 --- a/packages/backend-core/redis.js +++ b/packages/backend-core/redis.js @@ -1,5 +1,5 @@ module.exports = { - Client: require("./dist/src/redis"), - utils: require("./dist/src/redis/utils"), - clients: require("./dist/src/redis/authRedis"), + Client: require("./src/redis"), + utils: require("./src/redis/utils"), + clients: require("./src/redis/authRedis"), } diff --git a/packages/backend-core/roles.js b/packages/backend-core/roles.js index 69a884bd2a..158bcdb6b8 100644 --- a/packages/backend-core/roles.js +++ b/packages/backend-core/roles.js @@ -1 +1 @@ -module.exports = require("./dist/src/security/roles") +module.exports = require("./src/security/roles") diff --git a/packages/backend-core/sessions.js b/packages/backend-core/sessions.js index 5d3ffc8642..c07efa2380 100644 --- a/packages/backend-core/sessions.js +++ b/packages/backend-core/sessions.js @@ -1 +1 @@ -module.exports = require("./dist/src/security/sessions") +module.exports = require("./src/security/sessions") diff --git a/packages/backend-core/src/logging.js b/packages/backend-core/src/logging.js index 425d7f8133..6ab5bff44a 100644 --- a/packages/backend-core/src/logging.js +++ b/packages/backend-core/src/logging.js @@ -4,7 +4,7 @@ function isSuppressed(e) { return e && e["suppressAlert"] } -module.exports.logAlert = (message, e = null) => { +module.exports.logAlert = (message, e) => { if (e && NonErrors.includes(e.name) && isSuppressed(e)) { return } diff --git a/packages/backend-core/tenancy.js b/packages/backend-core/tenancy.js index ce784c3037..9ca808b74e 100644 --- a/packages/backend-core/tenancy.js +++ b/packages/backend-core/tenancy.js @@ -1 +1 @@ -module.exports = require("./dist/src/tenancy") +module.exports = require("./src/tenancy") diff --git a/packages/backend-core/tests/index.ts b/packages/backend-core/tests/index.ts index 143a66488a..b23d52e6e0 100644 --- a/packages/backend-core/tests/index.ts +++ b/packages/backend-core/tests/index.ts @@ -1,6 +1 @@ -import * as utils from "./utilities" export * from "./utilities" - -export const init = (corePkg: any) => { - utils.mocks.events.init(corePkg) -} diff --git a/packages/backend-core/tests/utilities/TestConfiguration.js b/packages/backend-core/tests/utilities/TestConfiguration.js index ee37e50b34..207b1d937f 100644 --- a/packages/backend-core/tests/utilities/TestConfiguration.js +++ b/packages/backend-core/tests/utilities/TestConfiguration.js @@ -1,4 +1 @@ require("./db") -const mocks = require("./mocks") -const core = require("../../src") -mocks.events.init(core) diff --git a/packages/backend-core/tests/utilities/mocks/events.js b/packages/backend-core/tests/utilities/mocks/events.js index b2bd2c5250..d2f8f363a1 100644 --- a/packages/backend-core/tests/utilities/mocks/events.js +++ b/packages/backend-core/tests/utilities/mocks/events.js @@ -1,112 +1,111 @@ -exports.init = core => { - const events = core.events - const processors = events.processors +const processors = require("../../../src/events/processors") - jest.spyOn(processors.analyticsProcessor, "processEvent") +jest.spyOn(processors.analyticsProcessor, "processEvent") - jest.spyOn(events.identification, "identifyTenantGroup") - jest.spyOn(events.identification, "identifyUser") +const events = require("../../../src/events") - jest.spyOn(events.backfill, "appSucceeded") - jest.spyOn(events.backfill, "tenantSucceeded") +jest.spyOn(events.identification, "identifyTenantGroup") +jest.spyOn(events.identification, "identifyUser") - jest.spyOn(events.account, "created") - jest.spyOn(events.account, "deleted") - jest.spyOn(events.account, "verified") +jest.spyOn(events.backfill, "appSucceeded") +jest.spyOn(events.backfill, "tenantSucceeded") - jest.spyOn(events.app, "created") - jest.spyOn(events.app, "updated") - jest.spyOn(events.app, "deleted") - jest.spyOn(events.app, "published") - jest.spyOn(events.app, "unpublished") - jest.spyOn(events.app, "templateImported") - jest.spyOn(events.app, "fileImported") - jest.spyOn(events.app, "versionUpdated") - jest.spyOn(events.app, "versionReverted") - jest.spyOn(events.app, "reverted") - jest.spyOn(events.app, "exported") +jest.spyOn(events.account, "created") +jest.spyOn(events.account, "deleted") +jest.spyOn(events.account, "verified") - jest.spyOn(events.auth, "login") - jest.spyOn(events.auth, "logout") - jest.spyOn(events.auth, "SSOCreated") - jest.spyOn(events.auth, "SSOUpdated") - jest.spyOn(events.auth, "SSOActivated") - jest.spyOn(events.auth, "SSODeactivated") +jest.spyOn(events.app, "created") +jest.spyOn(events.app, "updated") +jest.spyOn(events.app, "deleted") +jest.spyOn(events.app, "published") +jest.spyOn(events.app, "unpublished") +jest.spyOn(events.app, "templateImported") +jest.spyOn(events.app, "fileImported") +jest.spyOn(events.app, "versionUpdated") +jest.spyOn(events.app, "versionReverted") +jest.spyOn(events.app, "reverted") +jest.spyOn(events.app, "exported") - jest.spyOn(events.automation, "created") - jest.spyOn(events.automation, "deleted") - jest.spyOn(events.automation, "tested") - jest.spyOn(events.automation, "stepCreated") - jest.spyOn(events.automation, "stepDeleted") - jest.spyOn(events.automation, "triggerUpdated") +jest.spyOn(events.auth, "login") +jest.spyOn(events.auth, "logout") +jest.spyOn(events.auth, "SSOCreated") +jest.spyOn(events.auth, "SSOUpdated") +jest.spyOn(events.auth, "SSOActivated") +jest.spyOn(events.auth, "SSODeactivated") - jest.spyOn(events.datasource, "created") - jest.spyOn(events.datasource, "updated") - jest.spyOn(events.datasource, "deleted") +jest.spyOn(events.automation, "created") +jest.spyOn(events.automation, "deleted") +jest.spyOn(events.automation, "tested") +jest.spyOn(events.automation, "stepCreated") +jest.spyOn(events.automation, "stepDeleted") +jest.spyOn(events.automation, "triggerUpdated") - jest.spyOn(events.email, "SMTPCreated") - jest.spyOn(events.email, "SMTPUpdated") +jest.spyOn(events.datasource, "created") +jest.spyOn(events.datasource, "updated") +jest.spyOn(events.datasource, "deleted") - jest.spyOn(events.layout, "created") - jest.spyOn(events.layout, "deleted") +jest.spyOn(events.email, "SMTPCreated") +jest.spyOn(events.email, "SMTPUpdated") - jest.spyOn(events.org, "nameUpdated") - jest.spyOn(events.org, "logoUpdated") - jest.spyOn(events.org, "platformURLUpdated") - jest.spyOn(events.org, "analyticsOptOut") +jest.spyOn(events.layout, "created") +jest.spyOn(events.layout, "deleted") - jest.spyOn(events.version, "checked") +jest.spyOn(events.org, "nameUpdated") +jest.spyOn(events.org, "logoUpdated") +jest.spyOn(events.org, "platformURLUpdated") +jest.spyOn(events.org, "analyticsOptOut") - jest.spyOn(events.query, "created") - jest.spyOn(events.query, "updated") - jest.spyOn(events.query, "deleted") - jest.spyOn(events.query, "imported") - jest.spyOn(events.query, "previewed") +jest.spyOn(events.version, "checked") - jest.spyOn(events.role, "created") - jest.spyOn(events.role, "updated") - jest.spyOn(events.role, "deleted") - jest.spyOn(events.role, "assigned") - jest.spyOn(events.role, "unassigned") +jest.spyOn(events.query, "created") +jest.spyOn(events.query, "updated") +jest.spyOn(events.query, "deleted") +jest.spyOn(events.query, "imported") +jest.spyOn(events.query, "previewed") - jest.spyOn(events.rows, "imported") - jest.spyOn(events.rows, "created") +jest.spyOn(events.role, "created") +jest.spyOn(events.role, "updated") +jest.spyOn(events.role, "deleted") +jest.spyOn(events.role, "assigned") +jest.spyOn(events.role, "unassigned") - jest.spyOn(events.screen, "created") - jest.spyOn(events.screen, "deleted") +jest.spyOn(events.rows, "imported") +jest.spyOn(events.rows, "created") - jest.spyOn(events.user, "created") - jest.spyOn(events.user, "updated") - jest.spyOn(events.user, "deleted") - jest.spyOn(events.user, "permissionAdminAssigned") - jest.spyOn(events.user, "permissionAdminRemoved") - jest.spyOn(events.user, "permissionBuilderAssigned") - jest.spyOn(events.user, "permissionBuilderRemoved") - jest.spyOn(events.user, "invited") - jest.spyOn(events.user, "inviteAccepted") - jest.spyOn(events.user, "passwordForceReset") - jest.spyOn(events.user, "passwordUpdated") - jest.spyOn(events.user, "passwordResetRequested") - jest.spyOn(events.user, "passwordReset") +jest.spyOn(events.screen, "created") +jest.spyOn(events.screen, "deleted") - jest.spyOn(events.serve, "servedBuilder") - jest.spyOn(events.serve, "servedApp") - jest.spyOn(events.serve, "servedAppPreview") +jest.spyOn(events.user, "created") +jest.spyOn(events.user, "updated") +jest.spyOn(events.user, "deleted") +jest.spyOn(events.user, "permissionAdminAssigned") +jest.spyOn(events.user, "permissionAdminRemoved") +jest.spyOn(events.user, "permissionBuilderAssigned") +jest.spyOn(events.user, "permissionBuilderRemoved") +jest.spyOn(events.user, "invited") +jest.spyOn(events.user, "inviteAccepted") +jest.spyOn(events.user, "passwordForceReset") +jest.spyOn(events.user, "passwordUpdated") +jest.spyOn(events.user, "passwordResetRequested") +jest.spyOn(events.user, "passwordReset") - jest.spyOn(events.table, "created") - jest.spyOn(events.table, "updated") - jest.spyOn(events.table, "deleted") - jest.spyOn(events.table, "exported") - jest.spyOn(events.table, "imported") +jest.spyOn(events.serve, "servedBuilder") +jest.spyOn(events.serve, "servedApp") +jest.spyOn(events.serve, "servedAppPreview") - jest.spyOn(events.view, "created") - jest.spyOn(events.view, "updated") - jest.spyOn(events.view, "deleted") - jest.spyOn(events.view, "exported") - jest.spyOn(events.view, "filterCreated") - jest.spyOn(events.view, "filterUpdated") - jest.spyOn(events.view, "filterDeleted") - jest.spyOn(events.view, "calculationCreated") - jest.spyOn(events.view, "calculationUpdated") - jest.spyOn(events.view, "calculationDeleted") -} +jest.spyOn(events.table, "created") +jest.spyOn(events.table, "updated") +jest.spyOn(events.table, "deleted") +jest.spyOn(events.table, "exported") +jest.spyOn(events.table, "imported") + +jest.spyOn(events.view, "created") +jest.spyOn(events.view, "updated") +jest.spyOn(events.view, "deleted") +jest.spyOn(events.view, "exported") +jest.spyOn(events.view, "filterCreated") +jest.spyOn(events.view, "filterUpdated") +jest.spyOn(events.view, "filterDeleted") +jest.spyOn(events.view, "calculationCreated") +jest.spyOn(events.view, "calculationUpdated") +jest.spyOn(events.view, "calculationDeleted") diff --git a/packages/backend-core/tsconfig.build.json b/packages/backend-core/tsconfig.build.json index 933ef494b1..40ffe6b827 100644 --- a/packages/backend-core/tsconfig.build.json +++ b/packages/backend-core/tsconfig.build.json @@ -12,8 +12,7 @@ "sourceMap": true, "declaration": true, "types": [ "node", "jest" ], - "outDir": "dist", - "rootDir": "." + "outDir": "dist" }, "include": [ "**/*.js", @@ -24,8 +23,6 @@ "node_modules", "dist", "**/*.spec.ts", - "**/*.spec.js", - "tests", - "scripts/jestSetup.ts" + "**/*.spec.js" ] } \ No newline at end of file diff --git a/packages/backend-core/tsconfig.json b/packages/backend-core/tsconfig.json index ff4ec6b0c4..ccefd149a0 100644 --- a/packages/backend-core/tsconfig.json +++ b/packages/backend-core/tsconfig.json @@ -2,16 +2,12 @@ "extends": "./tsconfig.build.json", "compilerOptions": { "composite": true, + "baseUrl": ".", "paths": { - "@budibase/types": ["../types/src"], - "@budibase/backend-core": ["./src"], + "@budibase/types": ["../types/src"] } }, "references": [ - { "path": "../types/tsconfig.json" }, - ], - "exclude": [ - "node_modules", - "dist", + { "path": "../types" }, ] } \ No newline at end of file diff --git a/packages/backend-core/utils.js b/packages/backend-core/utils.js index 71b403b6a0..2ef920e103 100644 --- a/packages/backend-core/utils.js +++ b/packages/backend-core/utils.js @@ -1,4 +1,4 @@ module.exports = { - ...require("./dist/src/utils"), - ...require("./dist/src/hashing"), + ...require("./src/utils"), + ...require("./src/hashing"), } diff --git a/packages/builder/package.json b/packages/builder/package.json index f64612913b..b8a0bf40a1 100644 --- a/packages/builder/package.json +++ b/packages/builder/package.json @@ -115,6 +115,7 @@ "svelte": "^3.38.2", "svelte-jester": "^1.3.2", "ts-node": "^10.4.0", + "tsconfig-paths": "4.0.0", "typescript": "^4.5.5", "vite": "^2.1.5" }, diff --git a/packages/builder/tsconfig.build.json b/packages/builder/tsconfig.build.json new file mode 100644 index 0000000000..6a5ba315a1 --- /dev/null +++ b/packages/builder/tsconfig.build.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "lib": ["es2019"], + "allowJs": true, + "outDir": "dist", + "strict": true, + "noImplicitAny": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "incremental": true + }, + "include": [ + "./src/**/*" + ], + "exclude": [ + "node_modules", + "**/*.json", + "**/*.spec.ts", + "**/*.spec.js" + ] +} diff --git a/packages/builder/tsconfig.json b/packages/builder/tsconfig.json index 6a5ba315a1..1c018ab983 100644 --- a/packages/builder/tsconfig.json +++ b/packages/builder/tsconfig.json @@ -1,23 +1,21 @@ { + "extends": "./tsconfig.build.json", "compilerOptions": { - "target": "es6", - "module": "commonjs", - "lib": ["es2019"], - "allowJs": true, - "outDir": "dist", - "strict": true, - "noImplicitAny": true, - "esModuleInterop": true, - "resolveJsonModule": true, - "incremental": true + "composite": true, + "declaration": true, + "sourceMap": true, + "baseUrl": ".", + "paths": { + "@budibase/types": ["../types/src"], + "@budibase/backend-core": ["../backend-core/src"], + "@budibase/backend-core/*": ["../backend-core/*.js"] + } }, - "include": [ - "./src/**/*" - ], - "exclude": [ - "node_modules", - "**/*.json", - "**/*.spec.ts", - "**/*.spec.js" + "ts-node": { + "require": ["tsconfig-paths/register"] + }, + "references": [ + { "path": "../types" }, + { "path": "../backend-core" }, ] -} +} \ No newline at end of file diff --git a/packages/builder/yarn.lock b/packages/builder/yarn.lock index 53b8997e17..ed5a9fbfa5 100644 --- a/packages/builder/yarn.lock +++ b/packages/builder/yarn.lock @@ -4220,6 +4220,11 @@ json5@^2.1.2: dependencies: minimist "^1.2.5" +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -4529,7 +4534,7 @@ minimatch@^3.1.1: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -5641,6 +5646,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -5877,6 +5887,15 @@ ts-node@^10.4.0: make-error "^1.1.1" yn "3.1.1" +tsconfig-paths@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz#1082f5d99fd127b72397eef4809e4dd06d229b64" + integrity sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q== + dependencies: + json5 "^2.2.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" diff --git a/packages/server/package.json b/packages/server/package.json index da6504633e..2f6c7ab902 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -39,6 +39,11 @@ "jest": { "preset": "ts-jest", "testEnvironment": "node", + "moduleNameMapper": { + "@budibase/backend-core/(.*)": "/../backend-core/$1", + "@budibase/backend-core": "/../backend-core/src", + "@budibase/types": "/../types/src" + }, "setupFiles": [ "./scripts/jestSetup.js" ], @@ -142,7 +147,7 @@ "zlib": "1.0.5" }, "devDependencies": { - "@budibase/types": "^1.0.195", + "@budibase/types": "^1.0.198", "@budibase/standard-components": "^0.9.139", "@babel/core": "7.17.4", "@babel/preset-env": "7.16.11", @@ -182,6 +187,7 @@ "timekeeper": "2.2.0", "ts-jest": "27.1.3", "ts-node": "10.5.0", + "tsconfig-paths": "4.0.0", "typescript": "4.6.2", "update-dotenv": "1.1.1" }, diff --git a/packages/server/scripts/jestSetup.js b/packages/server/scripts/jestSetup.js index fc49f01a92..d450a47c3b 100644 --- a/packages/server/scripts/jestSetup.js +++ b/packages/server/scripts/jestSetup.js @@ -9,9 +9,7 @@ env._set("BUDIBASE_DIR", tmpdir("budibase-unittests")) env._set("LOG_LEVEL", "silent") env._set("PORT", 0) -const core = require("@budibase/backend-core") -const { mocks, init } = require("@budibase/backend-core/tests") -init(core) +const { mocks } = require("@budibase/backend-core/tests") // mock all dates to 2020-01-01T00:00:00.000Z // use tk.reset() to use real dates in individual tests diff --git a/packages/server/src/module.d.ts b/packages/server/src/module.d.ts index dd01358254..466bea6576 100644 --- a/packages/server/src/module.d.ts +++ b/packages/server/src/module.d.ts @@ -1,4 +1,3 @@ -// declare module "@budibase/backend-core" declare module "@budibase/backend-core/tenancy" declare module "@budibase/backend-core/db" declare module "@budibase/backend-core/context" diff --git a/packages/server/tsconfig.build.json b/packages/server/tsconfig.build.json index cdf11271bf..a3cdb163d6 100644 --- a/packages/server/tsconfig.build.json +++ b/packages/server/tsconfig.build.json @@ -2,7 +2,7 @@ "compilerOptions": { "target": "es6", "module": "commonjs", - "lib": ["es2020", "dom"], + "lib": ["es2020"], "allowJs": true, "strict": true, "noImplicitAny": true, @@ -10,12 +10,11 @@ "resolveJsonModule": true, "incremental": true, "types": [ "node", "jest" ], - "outDir": "dist" + "outDir": "dist", + "skipLibCheck": true }, "include": [ - "src/**/*", - "specs", - "package.json" + "src/**/*" ], "exclude": [ "node_modules", diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index 11f19380aa..592eb7dffe 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -4,15 +4,24 @@ "composite": true, "declaration": true, "sourceMap": true, + "baseUrl": ".", "paths": { "@budibase/types": ["../types/src"], "@budibase/backend-core": ["../backend-core/src"], - "@budibase/server": ["./src"], + "@budibase/backend-core/*": ["../backend-core/*.js"] } }, + "ts-node": { + "require": ["tsconfig-paths/register"] + }, "references": [ - { "path": "../types/tsconfig.json" }, - { "path": "../backend-core/tsconfig.json" }, + { "path": "../types" }, + { "path": "../backend-core" }, + ], + "include": [ + "src/**/*", + "specs", + "package.json" ], "exclude": [ "node_modules", diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 2e25407cbf..6c130a268c 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -13151,6 +13151,15 @@ ts-node@10.5.0: v8-compile-cache-lib "^3.0.0" yn "3.1.1" +tsconfig-paths@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz#1082f5d99fd127b72397eef4809e4dd06d229b64" + integrity sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q== + dependencies: + json5 "^2.2.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" diff --git a/packages/types/.gitignore b/packages/types/.gitignore index 03b460dc6b..48a50e6f72 100644 --- a/packages/types/.gitignore +++ b/packages/types/.gitignore @@ -1,5 +1,3 @@ node_modules/ dist -coverage/ -tsconfig.build.tsbuildinfo -tsconfig.tsbuildinfo \ No newline at end of file +coverage/ \ No newline at end of file diff --git a/packages/types/package.json b/packages/types/package.json index 4d7ab39239..5b96be4eb4 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -7,8 +7,9 @@ "author": "Budibase", "license": "GPL-3.0", "scripts": { - "prebuild": "rimraf dist/ && rm -f tsconfig.build.tsbuildinfo && rm -rf tsconfig.tsbuildinfo", - "build": "tsc -p tsconfig.build.json" + "prebuild": "rimraf dist/", + "build": "tsc -p tsconfig.build.json", + "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput" }, "jest": { }, diff --git a/packages/types/tsconfig.build.json b/packages/types/tsconfig.build.json index 17de6930d9..9c92cdbd05 100644 --- a/packages/types/tsconfig.build.json +++ b/packages/types/tsconfig.build.json @@ -11,12 +11,10 @@ "incremental": true, "sourceMap": true, "declaration": true, - "outDir": "dist", - "rootDir": "src", - "types": [] + "outDir": "dist" }, "include": [ - "src/**/*", + "src/**/*" ], "exclude": [ "node_modules", diff --git a/packages/worker/.gitignore b/packages/worker/.gitignore index 6abdc850b0..e82880bc81 100644 --- a/packages/worker/.gitignore +++ b/packages/worker/.gitignore @@ -1,5 +1,4 @@ node_modules/ .env watchtower-hook.json -dist/ -tsconfig.build.tsbuildinfo \ No newline at end of file +dist/ \ No newline at end of file diff --git a/packages/worker/package.json b/packages/worker/package.json index 4c06ccf187..b27fb5d028 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -14,8 +14,8 @@ "scripts": { "prebuild": "rimraf dist/", "build": "tsc -p tsconfig.build.json", - "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "postbuild": "copyfiles -u 1 src/**/*.hbs dist/", + "build:dev": "yarn prebuild && tsc --build --watch --preserveWatchOutput", "run:docker": "node dist/index.js", "run:docker:cluster": "pm2-runtime start pm2.config.js", "build:docker": "docker build . -t worker-service --label version=$BUDIBASE_RELEASE_VERSION", @@ -66,7 +66,7 @@ "server-destroy": "1.0.1" }, "devDependencies": { - "@budibase/types": "^1.0.195", + "@budibase/types": "^1.0.198", "@types/koa": "2.13.4", "@types/koa-router": "7.4.4", "@types/koa__router": "8.0.11", @@ -83,6 +83,7 @@ "supertest": "6.2.2", "timekeeper": "2.2.0", "ts-jest": "27.1.3", + "tsconfig-paths": "4.0.0", "ts-node": "10.4.0", "typescript": "4.5.5", "update-dotenv": "1.1.1" @@ -90,6 +91,11 @@ "jest": { "preset": "ts-jest", "testEnvironment": "node", + "moduleNameMapper": { + "@budibase/backend-core/(.*)": "/../backend-core/$1", + "@budibase/backend-core": "/../backend-core/src", + "@budibase/types": "/../types/src" + }, "setupFiles": [ "./scripts/jestSetup.js" ] diff --git a/packages/worker/scripts/jestSetup.js b/packages/worker/scripts/jestSetup.js index 408b0ab78b..765befd153 100644 --- a/packages/worker/scripts/jestSetup.js +++ b/packages/worker/scripts/jestSetup.js @@ -6,9 +6,7 @@ env._set("JWT_SECRET", "test-jwtsecret") env._set("LOG_LEVEL", "silent") env._set("MULTI_TENANCY", true) -const core = require("@budibase/backend-core") -const { mocks, init } = require("@budibase/backend-core/tests") -init(core) +const { mocks } = require("@budibase/backend-core/tests") // mock all dates to 2020-01-01T00:00:00.000Z // use tk.reset() to use real dates in individual tests diff --git a/packages/worker/src/api/routes/tests/auth.spec.js b/packages/worker/src/api/routes/tests/auth.spec.js index 37c954bd20..03b00d8312 100644 --- a/packages/worker/src/api/routes/tests/auth.spec.js +++ b/packages/worker/src/api/routes/tests/auth.spec.js @@ -78,8 +78,8 @@ describe("/api/global/auth", () => { const auth = require("@budibase/backend-core/auth") // mock the oidc strategy implementation and return value - strategyFactory = jest.fn() - mockStrategyReturn = jest.fn() + let strategyFactory = jest.fn() + let mockStrategyReturn = jest.fn() strategyFactory.mockReturnValue(mockStrategyReturn) auth.oidc.strategyFactory = strategyFactory diff --git a/packages/worker/tsconfig.build.json b/packages/worker/tsconfig.build.json index 55e498316c..a3cdb163d6 100644 --- a/packages/worker/tsconfig.build.json +++ b/packages/worker/tsconfig.build.json @@ -10,7 +10,8 @@ "resolveJsonModule": true, "incremental": true, "types": [ "node", "jest" ], - "outDir": "dist" + "outDir": "dist", + "skipLibCheck": true }, "include": [ "src/**/*" @@ -19,7 +20,6 @@ "node_modules", "dist", "**/*.spec.ts", - "**/*.spec.js", - "src/tests" + "**/*.spec.js" ] } \ No newline at end of file diff --git a/packages/worker/tsconfig.json b/packages/worker/tsconfig.json index 3cbb9f4897..e89c380cd6 100644 --- a/packages/worker/tsconfig.json +++ b/packages/worker/tsconfig.json @@ -4,15 +4,23 @@ "composite": true, "declaration": true, "sourceMap": true, + "baseUrl": ".", "paths": { "@budibase/types": ["../types/src"], "@budibase/backend-core": ["../backend-core/src"], - "@budibase/worker": ["./src"], + "@budibase/backend-core/*": ["../backend-core/*.js"] } }, + "ts-node": { + "require": ["tsconfig-paths/register"] + }, "references": [ - { "path": "../types/tsconfig.json" }, - { "path": "../backend-core/tsconfig.json" }, + { "path": "../types" }, + { "path": "../backend-core" }, + ], + "include": [ + "src/**/*", + "package.json" ], "exclude": [ "node_modules", diff --git a/packages/worker/yarn.lock b/packages/worker/yarn.lock index a1b9bbc421..7d4db27e69 100644 --- a/packages/worker/yarn.lock +++ b/packages/worker/yarn.lock @@ -6233,6 +6233,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -6530,6 +6535,15 @@ ts-node@10.4.0: make-error "^1.1.1" yn "3.1.1" +tsconfig-paths@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.0.0.tgz#1082f5d99fd127b72397eef4809e4dd06d229b64" + integrity sha512-SLBg2GBKlR6bVtMgJJlud/o3waplKtL7skmLkExomIiaAtLGtVsoXIqP3SYdjbcH9lq/KVv7pMZeCBpLYOit6Q== + dependencies: + json5 "^2.2.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..a0a2cc5905 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,9 @@ +{ + "references": [ + { "path": "./packages/types" }, + { "path": "./packages/backend-core" }, + { "path": "./packages/server" }, + { "path": "./packages/worker" }, + ], + "files" :[] +} \ No newline at end of file