@budibase/server 2.0.30-alpha.0 → 2.0.30-alpha.10

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.
Files changed (179) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/{index.ae93bd4f.js → index.98f30f0a.js} +276 -272
  3. package/builder/assets/{index.e56da48a.css → index.a6a040bb.css} +1 -1
  4. package/builder/index.html +2 -2
  5. package/coverage/clover.xml +191 -190
  6. package/coverage/coverage-final.json +4 -4
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  8. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  9. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  11. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/index.html +1 -1
  14. package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
  15. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  16. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  18. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  20. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  24. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  28. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  34. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  42. package/coverage/lcov-report/api/index.html +1 -1
  43. package/coverage/lcov-report/api/index.js.html +1 -1
  44. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  45. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  46. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  47. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  48. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  49. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/index.html +1 -1
  54. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  60. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/table.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/utils/index.html +1 -1
  68. package/coverage/lcov-report/api/routes/utils/validators.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  71. package/coverage/lcov-report/automations/actions.js.html +1 -1
  72. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  73. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  74. package/coverage/lcov-report/automations/index.html +1 -1
  75. package/coverage/lcov-report/automations/index.js.html +1 -1
  76. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  77. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  78. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  79. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  80. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  81. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/index.html +1 -1
  83. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  89. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  93. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  94. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  95. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  96. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  97. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  98. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  102. package/coverage/lcov-report/constants/index.html +1 -1
  103. package/coverage/lcov-report/constants/index.js.html +8 -2
  104. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  105. package/coverage/lcov-report/constants/screens.js.html +1 -1
  106. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  107. package/coverage/lcov-report/db/index.html +1 -1
  108. package/coverage/lcov-report/db/index.js.html +1 -1
  109. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  110. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  111. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  112. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  113. package/coverage/lcov-report/db/newid.js.html +1 -1
  114. package/coverage/lcov-report/db/utils.js.html +1 -1
  115. package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
  116. package/coverage/lcov-report/events/index.html +1 -1
  117. package/coverage/lcov-report/events/index.js.html +1 -1
  118. package/coverage/lcov-report/events/utils.js.html +1 -1
  119. package/coverage/lcov-report/index.html +14 -14
  120. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  121. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  122. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  123. package/coverage/lcov-report/middleware/builder.js.html +1 -1
  124. package/coverage/lcov-report/middleware/currentapp.js.html +1 -1
  125. package/coverage/lcov-report/middleware/index.html +1 -1
  126. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  127. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  128. package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
  129. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  130. package/coverage/lcov-report/middleware/utils.js.html +1 -1
  131. package/coverage/lcov-report/utilities/budibaseDir.js.html +1 -1
  132. package/coverage/lcov-report/utilities/centralPath.js.html +1 -1
  133. package/coverage/lcov-report/utilities/csvParser.js.html +11 -8
  134. package/coverage/lcov-report/utilities/global.js.html +1 -1
  135. package/coverage/lcov-report/utilities/index.html +15 -15
  136. package/coverage/lcov-report/utilities/index.js.html +7 -7
  137. package/coverage/lcov-report/utilities/plugins.js.html +1 -1
  138. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +1 -1
  139. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  140. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  141. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  142. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  143. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +17 -2
  144. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  145. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  146. package/coverage/lcov-report/utilities/security.js.html +1 -1
  147. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  148. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  149. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  150. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  151. package/coverage/lcov-report/utilities/users.js.html +1 -1
  152. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  153. package/coverage/lcov.info +337 -334
  154. package/dist/api/controllers/query/index.js +1 -0
  155. package/dist/constants/index.js +2 -0
  156. package/dist/integrations/arangodb.js +2 -0
  157. package/dist/integrations/base/sqlTable.js +1 -0
  158. package/dist/integrations/mongodb.js +300 -11
  159. package/dist/integrations/rest.js +2 -6
  160. package/dist/migrations/index.js +6 -29
  161. package/dist/package.json +7 -8
  162. package/dist/tsconfig.build.tsbuildinfo +1 -1
  163. package/dist/utilities/csvParser.js +1 -0
  164. package/dist/utilities/rowProcessor/index.js +5 -0
  165. package/package.json +8 -9
  166. package/specs/openapi.json +3 -0
  167. package/specs/openapi.yaml +3 -0
  168. package/src/api/controllers/deploy/index.ts +0 -1
  169. package/src/api/controllers/query/index.ts +1 -0
  170. package/src/constants/index.js +2 -0
  171. package/src/integrations/arangodb.ts +2 -0
  172. package/src/integrations/base/sqlTable.ts +1 -0
  173. package/src/integrations/mongodb.ts +290 -27
  174. package/src/integrations/rest.ts +2 -6
  175. package/src/integrations/tests/mongo.spec.ts +19 -19
  176. package/src/integrations/tests/rest.spec.ts +29 -13
  177. package/src/migrations/index.ts +17 -30
  178. package/src/utilities/csvParser.js +1 -0
  179. package/src/utilities/rowProcessor/index.js +5 -0
@@ -34,7 +34,7 @@ describe("MongoDB Integration", () => {
34
34
  await config.integration.create({
35
35
  index: indexName,
36
36
  json: body,
37
- extra: { collection: "testCollection", actionTypes: "insertOne" },
37
+ extra: { collection: "testCollection", actionType: "insertOne" },
38
38
  })
39
39
  expect(config.integration.client.insertOne).toHaveBeenCalledWith(body)
40
40
  })
@@ -44,7 +44,7 @@ describe("MongoDB Integration", () => {
44
44
  json: {
45
45
  address: "test",
46
46
  },
47
- extra: { collection: "testCollection", actionTypes: "find" },
47
+ extra: { collection: "testCollection", actionType: "find" },
48
48
  }
49
49
  const response = await config.integration.read(query)
50
50
  expect(config.integration.client.find).toHaveBeenCalledWith(query.json)
@@ -61,7 +61,7 @@ describe("MongoDB Integration", () => {
61
61
  opt: "option",
62
62
  },
63
63
  },
64
- extra: { collection: "testCollection", actionTypes: "deleteOne" },
64
+ extra: { collection: "testCollection", actionType: "deleteOne" },
65
65
  }
66
66
  await config.integration.delete(query)
67
67
  expect(config.integration.client.deleteOne).toHaveBeenCalledWith(
@@ -83,7 +83,7 @@ describe("MongoDB Integration", () => {
83
83
  upsert: false,
84
84
  },
85
85
  },
86
- extra: { collection: "testCollection", actionTypes: "updateOne" },
86
+ extra: { collection: "testCollection", actionType: "updateOne" },
87
87
  }
88
88
  await config.integration.update(query)
89
89
  expect(config.integration.client.updateOne).toHaveBeenCalledWith(
@@ -97,7 +97,7 @@ describe("MongoDB Integration", () => {
97
97
  const restore = disableConsole()
98
98
 
99
99
  const query = {
100
- extra: { collection: "testCollection", actionTypes: "deleteOne" },
100
+ extra: { collection: "testCollection", actionType: "deleteOne" },
101
101
  }
102
102
 
103
103
  let error = null
@@ -125,19 +125,19 @@ describe("MongoDB Integration", () => {
125
125
  upsert: false,
126
126
  },
127
127
  },
128
- extra: { collection: "testCollection", actionTypes: "updateOne" },
128
+ extra: { collection: "testCollection", actionType: "updateOne" },
129
129
  }
130
130
  await config.integration.update(query)
131
131
  expect(config.integration.client.updateOne).toHaveBeenCalled()
132
132
 
133
133
  const args = config.integration.client.updateOne.mock.calls[0]
134
134
  expect(args[0]).toEqual({
135
- _id: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
136
- name: mongo.ObjectID.createFromHexString("BBBB12345678ABCD12345678"),
135
+ _id: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
136
+ name: mongo.ObjectId.createFromHexString("BBBB12345678ABCD12345678"),
137
137
  })
138
138
  expect(args[1]).toEqual({
139
- _id: mongo.ObjectID.createFromHexString("FFFF12345678ABCD12345678"),
140
- name: mongo.ObjectID.createFromHexString("CCCC12345678ABCD12345678"),
139
+ _id: mongo.ObjectId.createFromHexString("FFFF12345678ABCD12345678"),
140
+ name: mongo.ObjectId.createFromHexString("CCCC12345678ABCD12345678"),
141
141
  })
142
142
  expect(args[2]).toEqual({
143
143
  upsert: false,
@@ -161,7 +161,7 @@ describe("MongoDB Integration", () => {
161
161
  upsert: true,
162
162
  },
163
163
  },
164
- extra: { collection: "testCollection", actionTypes: "updateOne" },
164
+ extra: { collection: "testCollection", actionType: "updateOne" },
165
165
  }
166
166
  await config.integration.update(query)
167
167
  expect(config.integration.client.updateOne).toHaveBeenCalled()
@@ -169,12 +169,12 @@ describe("MongoDB Integration", () => {
169
169
  const args = config.integration.client.updateOne.mock.calls[0]
170
170
  expect(args[0]).toEqual({
171
171
  _id: {
172
- $eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
172
+ $eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
173
173
  },
174
174
  })
175
175
  expect(args[1]).toEqual({
176
176
  $set: {
177
- _id: mongo.ObjectID.createFromHexString("FFFF12345678ABCD12345678"),
177
+ _id: mongo.ObjectId.createFromHexString("FFFF12345678ABCD12345678"),
178
178
  },
179
179
  })
180
180
  expect(args[2]).toEqual({
@@ -200,7 +200,7 @@ describe("MongoDB Integration", () => {
200
200
  upsert: false,
201
201
  },
202
202
  },
203
- extra: { collection: "testCollection", actionTypes: "findOneAndUpdate" },
203
+ extra: { collection: "testCollection", actionType: "findOneAndUpdate" },
204
204
  }
205
205
  await config.integration.read(query)
206
206
  expect(config.integration.client.findOneAndUpdate).toHaveBeenCalled()
@@ -208,7 +208,7 @@ describe("MongoDB Integration", () => {
208
208
  const args = config.integration.client.findOneAndUpdate.mock.calls[0]
209
209
  expect(args[0]).toEqual({
210
210
  _id: {
211
- $eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
211
+ $eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
212
212
  },
213
213
  })
214
214
  expect(args[1]).toEqual({
@@ -245,7 +245,7 @@ describe("MongoDB Integration", () => {
245
245
  {
246
246
  "upsert": true
247
247
  }`,
248
- extra: { collection: "testCollection", actionTypes: "updateOne" },
248
+ extra: { collection: "testCollection", actionType: "updateOne" },
249
249
  }
250
250
  await config.integration.update(query)
251
251
  expect(config.integration.client.updateOne).toHaveBeenCalled()
@@ -253,7 +253,7 @@ describe("MongoDB Integration", () => {
253
253
  const args = config.integration.client.updateOne.mock.calls[0]
254
254
  expect(args[0]).toEqual({
255
255
  _id: {
256
- $eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
256
+ $eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
257
257
  },
258
258
  })
259
259
  expect(args[1]).toEqual({
@@ -300,7 +300,7 @@ describe("MongoDB Integration", () => {
300
300
  "upsert": true,
301
301
  "extra": "ad\\"{\\"d"
302
302
  }`,
303
- extra: { collection: "testCollection", actionTypes: "updateOne" },
303
+ extra: { collection: "testCollection", actionType: "updateOne" },
304
304
  }
305
305
  await config.integration.update(query)
306
306
  expect(config.integration.client.updateOne).toHaveBeenCalled()
@@ -308,7 +308,7 @@ describe("MongoDB Integration", () => {
308
308
  const args = config.integration.client.updateOne.mock.calls[0]
309
309
  expect(args[0]).toEqual({
310
310
  _id: {
311
- $eq: mongo.ObjectID.createFromHexString("ACBD12345678ABCD12345678"),
311
+ $eq: mongo.ObjectId.createFromHexString("ACBD12345678ABCD12345678"),
312
312
  },
313
313
  })
314
314
  expect(args[1]).toEqual({
@@ -1,17 +1,16 @@
1
- jest.mock("node-fetch", () =>
2
- jest.fn(() => ({
3
- headers: {
4
- raw: () => {
5
- return { "content-type": ["application/json"] }
6
- },
7
- get: () => ["application/json"],
1
+ const mockFetch = jest.fn(() => ({
2
+ headers: {
3
+ raw: () => {
4
+ return { "content-type": ["application/json"] }
8
5
  },
9
- json: jest.fn(() => ({
10
- my_next_cursor: 123,
11
- })),
12
- text: jest.fn(),
13
- }))
14
- )
6
+ get: () => ["application/json"],
7
+ },
8
+ json: jest.fn(() => ({
9
+ my_next_cursor: 123,
10
+ })),
11
+ text: jest.fn(),
12
+ }))
13
+ jest.mock("node-fetch", () => mockFetch)
15
14
  import fetch from "node-fetch"
16
15
  import { default as RestIntegration } from "../rest"
17
16
  const FormData = require("form-data")
@@ -572,4 +571,21 @@ describe("REST Integration", () => {
572
571
  })
573
572
  })
574
573
  })
574
+
575
+ it("Attaches custom agent when Reject Unauthorized option is false", async () => {
576
+ config = new TestConfiguration({
577
+ url: BASE_URL,
578
+ rejectUnauthorized: false,
579
+ })
580
+ await config.integration.read({})
581
+
582
+ const calls: any = mockFetch.mock.calls[0]
583
+ const url = calls[0]
584
+ expect(url).toBe(`${BASE_URL}/`)
585
+
586
+ const calledConfig = calls[1]
587
+ expect(calledConfig.method).toBe("GET")
588
+ expect(calledConfig.headers).toEqual({})
589
+ expect(calledConfig.agent.options.rejectUnauthorized).toBe(false)
590
+ })
575
591
  })
@@ -1,5 +1,11 @@
1
- import { migrations, redis } from "@budibase/backend-core"
2
- import { Migration, MigrationOptions, MigrationName } from "@budibase/types"
1
+ import { locks, migrations } from "@budibase/backend-core"
2
+ import {
3
+ Migration,
4
+ MigrationOptions,
5
+ MigrationName,
6
+ LockType,
7
+ LockName,
8
+ } from "@budibase/types"
3
9
  import env from "../environment"
4
10
 
5
11
  // migration functions
@@ -86,33 +92,14 @@ export const migrate = async (options?: MigrationOptions) => {
86
92
  }
87
93
 
88
94
  const migrateWithLock = async (options?: MigrationOptions) => {
89
- // get a new lock client
90
- const redlock = await redis.clients.getMigrationsRedlock()
91
- // lock for 15 minutes
92
- const ttl = 1000 * 60 * 15
93
-
94
- let migrationLock
95
-
96
- // acquire lock
97
- try {
98
- migrationLock = await redlock.lock("migrations", ttl)
99
- } catch (e: any) {
100
- if (e.name === "LockError") {
101
- return
102
- } else {
103
- throw e
95
+ await locks.doWithLock(
96
+ {
97
+ type: LockType.TRY_ONCE,
98
+ name: LockName.MIGRATIONS,
99
+ ttl: 1000 * 60 * 15, // auto expire the migration lock after 15 minutes
100
+ },
101
+ async () => {
102
+ await migrations.runMigrations(MIGRATIONS, options)
104
103
  }
105
- }
106
-
107
- // run migrations
108
- try {
109
- await migrations.runMigrations(MIGRATIONS, options)
110
- } finally {
111
- // release lock
112
- try {
113
- await migrationLock.unlock()
114
- } catch (e) {
115
- console.error("unable to release migration lock")
116
- }
117
- }
104
+ )
118
105
  }
@@ -4,6 +4,7 @@ const { FieldTypes } = require("../constants")
4
4
  const VALIDATORS = {
5
5
  [FieldTypes.STRING]: () => true,
6
6
  [FieldTypes.OPTIONS]: () => true,
7
+ [FieldTypes.BARCODEQR]: () => true,
7
8
  [FieldTypes.NUMBER]: attribute => {
8
9
  // allow not to be present
9
10
  if (!attribute) {
@@ -48,6 +48,11 @@ const TYPE_TRANSFORM_MAP = {
48
48
  [null]: "",
49
49
  [undefined]: undefined,
50
50
  },
51
+ [FieldTypes.BARCODEQR]: {
52
+ "": "",
53
+ [null]: "",
54
+ [undefined]: undefined,
55
+ },
51
56
  [FieldTypes.FORMULA]: {
52
57
  "": "",
53
58
  [null]: "",