@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.
@@ -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://test.com", tenantId: _1.tenant.id() }, userProps);
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,iBAAiB,EAC7B,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"}
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.17.7",
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.17.7",
27
- "@budibase/types": "2.17.7",
28
- "@techpass/passport-openidconnect": "0.3.2",
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": "4.1.4",
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.3.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": "f2bad156fddf44445199aa4bb7fabbe0ec3bed92"
99
+ "gitHead": "0ec725ca4b2e8121fc1eb94b3325ba49fc7c4ecc"
100
100
  }
@@ -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
- jsExecutionTracker?: ExecutionTimeTracker
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
- } while (isTruncated)
258
+ token = response.NextContinuationToken
259
+ } while (isTruncated && token)
259
260
  return objects
260
261
  }
261
262
 
@@ -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: { removeStalledCb?: StalledFn } = {}
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)
@@ -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://test.com"
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}.test.com`
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://test.com/builder/app/${expected}/design/screen_123/screens`,
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://test.com/foo/app/${appId}/bar`,
103
+ referer: `http://example.com/foo/app/${appId}/bar`,
104
104
  }
105
105
 
106
106
  const actual = await utils.getAppIdFromCtx(ctx)
@@ -3,5 +3,5 @@ import { v4 as uuid } from "uuid"
3
3
  export { v4 as uuid } from "uuid"
4
4
 
5
5
  export const email = () => {
6
- return `${uuid()}@test.com`
6
+ return `${uuid()}@example.com`
7
7
  }
@@ -61,7 +61,7 @@ export function ssoProfile(user?: User): SSOProfile {
61
61
  },
62
62
  _json: {
63
63
  email: user.email,
64
- picture: "http://test.com",
64
+ picture: "http://example.com",
65
65
  },
66
66
  provider: generator.string(),
67
67
  }
@@ -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://test.com",
28
+ pictureUrl: "http://example.com",
29
29
  tenantId: tenant.id(),
30
30
  ...userProps,
31
31
  }