@budibase/backend-core 2.17.7 → 2.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +50188 -41
- package/dist/index.js.map +4 -4
- package/dist/index.js.meta.json +1 -1
- package/dist/package.json +8 -8
- package/dist/plugins.js.meta.json +1 -1
- package/dist/src/context/types.d.ts +2 -3
- package/dist/src/objectStore/objectStore.js +2 -1
- package/dist/src/objectStore/objectStore.js.map +1 -1
- package/dist/src/queue/queue.d.ts +3 -1
- package/dist/src/queue/queue.js +4 -1
- package/dist/src/queue/queue.js.map +1 -1
- package/dist/src/timers/timers.d.ts +0 -12
- package/dist/src/timers/timers.js +1 -38
- package/dist/src/timers/timers.js.map +1 -1
- package/dist/tests/core/utilities/structures/common.js +1 -1
- package/dist/tests/core/utilities/structures/common.js.map +1 -1
- package/dist/tests/core/utilities/structures/sso.js +1 -1
- package/dist/tests/core/utilities/structures/sso.js.map +1 -1
- package/dist/tests/core/utilities/structures/users.js +1 -1
- package/dist/tests/core/utilities/structures/users.js.map +1 -1
- package/package.json +8 -8
- package/src/context/types.ts +2 -3
- package/src/objectStore/objectStore.ts +2 -1
- package/src/queue/queue.ts +10 -3
- package/src/timers/timers.ts +0 -38
- package/src/utils/tests/utils.spec.ts +4 -4
- package/tests/core/utilities/structures/common.ts +1 -1
- package/tests/core/utilities/structures/sso.ts +1 -1
- package/tests/core/utilities/structures/users.ts +1 -1
|
@@ -11,7 +11,7 @@ const newEmail = () => {
|
|
|
11
11
|
exports.newEmail = newEmail;
|
|
12
12
|
const user = (userProps) => {
|
|
13
13
|
const userId = userProps === null || userProps === void 0 ? void 0 : userProps._id;
|
|
14
|
-
return Object.assign({ _id: userId, userId, email: (0, exports.newEmail)(), password: "password", roles: { app_test: "admin" }, firstName: generator_1.generator.first(), lastName: generator_1.generator.last(), pictureUrl: "http://
|
|
14
|
+
return Object.assign({ _id: userId, userId, email: (0, exports.newEmail)(), password: "password", roles: { app_test: "admin" }, firstName: generator_1.generator.first(), lastName: generator_1.generator.last(), pictureUrl: "http://example.com", tenantId: _1.tenant.id() }, userProps);
|
|
15
15
|
};
|
|
16
16
|
exports.user = user;
|
|
17
17
|
const adminUser = (userProps) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../../tests/core/utilities/structures/users.ts"],"names":[],"mappings":";;;AAQA,+BAAmC;AACnC,qCAA+B;AAC/B,2CAAuC;AACvC,wBAA0B;AAEnB,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,OAAO,GAAG,IAAA,aAAI,GAAE,cAAc,CAAA;AAChC,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB;AAEM,MAAM,IAAI,GAAG,CAAC,SAAyC,EAAQ,EAAE;IACtE,MAAM,MAAM,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAA;IAC7B,uBACE,GAAG,EAAE,MAAM,EACX,MAAM,EACN,KAAK,EAAE,IAAA,gBAAQ,GAAE,EACjB,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,SAAS,EAAE,qBAAS,CAAC,KAAK,EAAE,EAC5B,QAAQ,EAAE,qBAAS,CAAC,IAAI,EAAE,EAC1B,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../../../../tests/core/utilities/structures/users.ts"],"names":[],"mappings":";;;AAQA,+BAAmC;AACnC,qCAA+B;AAC/B,2CAAuC;AACvC,wBAA0B;AAEnB,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,OAAO,GAAG,IAAA,aAAI,GAAE,cAAc,CAAA;AAChC,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB;AAEM,MAAM,IAAI,GAAG,CAAC,SAAyC,EAAQ,EAAE;IACtE,MAAM,MAAM,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,GAAG,CAAA;IAC7B,uBACE,GAAG,EAAE,MAAM,EACX,MAAM,EACN,KAAK,EAAE,IAAA,gBAAQ,GAAE,EACjB,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,SAAS,EAAE,qBAAS,CAAC,KAAK,EAAE,EAC5B,QAAQ,EAAE,qBAAS,CAAC,IAAI,EAAE,EAC1B,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,SAAM,CAAC,EAAE,EAAE,IAClB,SAAS,EACb;AACH,CAAC,CAAA;AAdY,QAAA,IAAI,QAchB;AAEM,MAAM,SAAS,GAAG,CAAC,SAAe,EAAa,EAAE;IACtD,uCACK,IAAA,YAAI,EAAC,SAAS,CAAC,KAClB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;SACb,EACD,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;SACb,IACF;AACH,CAAC,CAAA;AAVY,QAAA,SAAS,aAUrB;AAEM,MAAM,aAAa,GAAG,CAAC,SAAe,EAAiB,EAAE;IAC9D,uCACK,IAAA,YAAI,EAAC,SAAS,CAAC,KAClB,KAAK,EAAE;YACL,MAAM,EAAE,IAAI;SACb,IACF;AACH,CAAC,CAAA;AAPY,QAAA,aAAa,iBAOzB;AAEM,MAAM,WAAW,GAAG,CAAC,SAAyB,EAAe,EAAE;IACpE,uCACK,IAAA,YAAI,EAAC,SAAS,CAAC,KAClB,OAAO,EAAE;YACP,MAAM,EAAE,IAAI;SACb,IACF;AACH,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB;AAEM,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,SAAe,EAAe,EAAE;IAC5E,uCACK,IAAA,YAAI,EAAC,SAAS,CAAC,KAClB,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,KAAK,CAAC;SACd,IACF;AACH,CAAC,CAAA;AAPY,QAAA,cAAc,kBAO1B;AAED,SAAgB,OAAO,CACrB,OAAiD,EAAE;;IAEnD,MAAM,IAAI,GAAG,IAAA,YAAI,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,IAAI,CAAC,QAAQ,CAAA;IAEpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;QACjB,IAAI,CAAC,OAAO,GAAG,IAAA,iBAAW,EAAC,IAAI,CAAC,CAAA;KACjC;IAED,uCACK,IAAI,KACP,kBAAkB,EAAE,KAAK,EACzB,MAAM,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,MAAM,EAC5B,QAAQ,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAS,EACjC,YAAY,EAAE,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAa,EACzC,iBAAiB,EAAE;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,UAAU;SACzB,IACF;AACH,CAAC;AArBD,0BAqBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/backend-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.0",
|
|
4
4
|
"description": "Budibase backend core libraries used in server and worker",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/src/index.d.ts",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@budibase/nano": "10.1.5",
|
|
25
25
|
"@budibase/pouchdb-replication-stream": "1.2.10",
|
|
26
|
-
"@budibase/shared-core": "2.
|
|
27
|
-
"@budibase/types": "2.
|
|
28
|
-
"@
|
|
26
|
+
"@budibase/shared-core": "2.18.0",
|
|
27
|
+
"@budibase/types": "2.18.0",
|
|
28
|
+
"@govtechsg/passport-openidconnect": "^1.0.2",
|
|
29
29
|
"aws-cloudfront-sign": "3.0.2",
|
|
30
30
|
"aws-sdk": "2.1030.0",
|
|
31
31
|
"bcrypt": "5.1.0",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"ioredis": "5.3.2",
|
|
38
38
|
"joi": "17.6.0",
|
|
39
39
|
"jsonwebtoken": "9.0.2",
|
|
40
|
-
"koa-passport": "
|
|
40
|
+
"koa-passport": "^6.0.0",
|
|
41
41
|
"koa-pino-logger": "4.0.0",
|
|
42
42
|
"lodash": "4.17.21",
|
|
43
43
|
"node-fetch": "2.6.7",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"redlock": "4.2.0",
|
|
53
53
|
"rotating-file-stream": "3.1.0",
|
|
54
54
|
"sanitize-s3-objectkey": "0.0.1",
|
|
55
|
-
"semver": "7.
|
|
55
|
+
"semver": "^7.5.4",
|
|
56
56
|
"tar-fs": "2.1.1",
|
|
57
|
-
"uuid": "8.3.2"
|
|
57
|
+
"uuid": "^8.3.2"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
60
60
|
"@shopify/jest-koa-mocks": "5.1.1",
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "0ec725ca4b2e8121fc1eb94b3325ba49fc7c4ecc"
|
|
100
100
|
}
|
package/src/context/types.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IdentityContext } from "@budibase/types"
|
|
2
|
-
import { ExecutionTimeTracker } from "../timers"
|
|
1
|
+
import { IdentityContext, VM } from "@budibase/types"
|
|
3
2
|
|
|
4
3
|
// keep this out of Budibase types, don't want to expose context info
|
|
5
4
|
export type ContextMap = {
|
|
@@ -10,5 +9,5 @@ export type ContextMap = {
|
|
|
10
9
|
isScim?: boolean
|
|
11
10
|
automationId?: string
|
|
12
11
|
isMigrating?: boolean
|
|
13
|
-
|
|
12
|
+
vm?: VM
|
|
14
13
|
}
|
|
@@ -255,7 +255,8 @@ export async function listAllObjects(bucketName: string, path: string) {
|
|
|
255
255
|
objects = objects.concat(response.Contents)
|
|
256
256
|
}
|
|
257
257
|
isTruncated = !!response.IsTruncated
|
|
258
|
-
|
|
258
|
+
token = response.NextContinuationToken
|
|
259
|
+
} while (isTruncated && token)
|
|
259
260
|
return objects
|
|
260
261
|
}
|
|
261
262
|
|
package/src/queue/queue.ts
CHANGED
|
@@ -2,7 +2,7 @@ import env from "../environment"
|
|
|
2
2
|
import { getRedisOptions } from "../redis/utils"
|
|
3
3
|
import { JobQueue } from "./constants"
|
|
4
4
|
import InMemoryQueue from "./inMemoryQueue"
|
|
5
|
-
import BullQueue, { QueueOptions } from "bull"
|
|
5
|
+
import BullQueue, { QueueOptions, JobOptions } from "bull"
|
|
6
6
|
import { addListeners, StalledFn } from "./listeners"
|
|
7
7
|
import { Duration } from "../utils"
|
|
8
8
|
import * as timers from "../timers"
|
|
@@ -24,17 +24,24 @@ async function cleanup() {
|
|
|
24
24
|
|
|
25
25
|
export function createQueue<T>(
|
|
26
26
|
jobQueue: JobQueue,
|
|
27
|
-
opts: {
|
|
27
|
+
opts: {
|
|
28
|
+
removeStalledCb?: StalledFn
|
|
29
|
+
maxStalledCount?: number
|
|
30
|
+
jobOptions?: JobOptions
|
|
31
|
+
} = {}
|
|
28
32
|
): BullQueue.Queue<T> {
|
|
29
33
|
const redisOpts = getRedisOptions()
|
|
30
34
|
const queueConfig: QueueOptions = {
|
|
31
35
|
redis: redisOpts,
|
|
32
36
|
settings: {
|
|
33
|
-
maxStalledCount: 0,
|
|
37
|
+
maxStalledCount: opts.maxStalledCount ? opts.maxStalledCount : 0,
|
|
34
38
|
lockDuration: QUEUE_LOCK_MS,
|
|
35
39
|
lockRenewTime: QUEUE_LOCK_RENEW_INTERNAL_MS,
|
|
36
40
|
},
|
|
37
41
|
}
|
|
42
|
+
if (opts.jobOptions) {
|
|
43
|
+
queueConfig.defaultJobOptions = opts.jobOptions
|
|
44
|
+
}
|
|
38
45
|
let queue: any
|
|
39
46
|
if (!env.isTest()) {
|
|
40
47
|
queue = new BullQueue(jobQueue, queueConfig)
|
package/src/timers/timers.ts
CHANGED
|
@@ -20,41 +20,3 @@ export function cleanup() {
|
|
|
20
20
|
}
|
|
21
21
|
intervals = []
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
export class ExecutionTimeoutError extends Error {
|
|
25
|
-
public readonly name = "ExecutionTimeoutError"
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export class ExecutionTimeTracker {
|
|
29
|
-
static withLimit(limitMs: number) {
|
|
30
|
-
return new ExecutionTimeTracker(limitMs)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
constructor(readonly limitMs: number) {}
|
|
34
|
-
|
|
35
|
-
private totalTimeMs = 0
|
|
36
|
-
|
|
37
|
-
track<T>(f: () => T): T {
|
|
38
|
-
this.checkLimit()
|
|
39
|
-
const start = process.hrtime.bigint()
|
|
40
|
-
try {
|
|
41
|
-
return f()
|
|
42
|
-
} finally {
|
|
43
|
-
const end = process.hrtime.bigint()
|
|
44
|
-
this.totalTimeMs += Number(end - start) / 1e6
|
|
45
|
-
this.checkLimit()
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
get elapsedMS() {
|
|
50
|
-
return this.totalTimeMs
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
checkLimit() {
|
|
54
|
-
if (this.totalTimeMs > this.limitMs) {
|
|
55
|
-
throw new ExecutionTimeoutError(
|
|
56
|
-
`Execution time limit of ${this.limitMs}ms exceeded: ${this.totalTimeMs}ms`
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
@@ -44,11 +44,11 @@ describe("utils", () => {
|
|
|
44
44
|
|
|
45
45
|
it("gets appId from url", async () => {
|
|
46
46
|
await config.doInTenant(async () => {
|
|
47
|
-
const url = "http://
|
|
47
|
+
const url = "http://example.com"
|
|
48
48
|
env._set("PLATFORM_URL", url)
|
|
49
49
|
|
|
50
50
|
const ctx = structures.koa.newContext()
|
|
51
|
-
ctx.host = `${config.tenantId}.
|
|
51
|
+
ctx.host = `${config.tenantId}.example.com`
|
|
52
52
|
|
|
53
53
|
const expected = db.generateAppID(config.tenantId)
|
|
54
54
|
const app = structures.apps.app(expected)
|
|
@@ -89,7 +89,7 @@ describe("utils", () => {
|
|
|
89
89
|
const ctx = structures.koa.newContext()
|
|
90
90
|
const expected = db.generateAppID()
|
|
91
91
|
ctx.request.headers = {
|
|
92
|
-
referer: `http://
|
|
92
|
+
referer: `http://example.com/builder/app/${expected}/design/screen_123/screens`,
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
const actual = await utils.getAppIdFromCtx(ctx)
|
|
@@ -100,7 +100,7 @@ describe("utils", () => {
|
|
|
100
100
|
const ctx = structures.koa.newContext()
|
|
101
101
|
const appId = db.generateAppID()
|
|
102
102
|
ctx.request.headers = {
|
|
103
|
-
referer: `http://
|
|
103
|
+
referer: `http://example.com/foo/app/${appId}/bar`,
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
const actual = await utils.getAppIdFromCtx(ctx)
|
|
@@ -25,7 +25,7 @@ export const user = (userProps?: Partial<Omit<User, "userId">>): User => {
|
|
|
25
25
|
roles: { app_test: "admin" },
|
|
26
26
|
firstName: generator.first(),
|
|
27
27
|
lastName: generator.last(),
|
|
28
|
-
pictureUrl: "http://
|
|
28
|
+
pictureUrl: "http://example.com",
|
|
29
29
|
tenantId: tenant.id(),
|
|
30
30
|
...userProps,
|
|
31
31
|
}
|