@budibase/server 1.3.21-alpha.1 → 1.3.21

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 (308) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.8d12d461.css +6 -0
  3. package/builder/assets/index.d354271c.js +879 -0
  4. package/builder/assets/vendor.5e1fe644.css +1 -0
  5. package/builder/assets/vendor.67dbd8fa.js +248 -0
  6. package/builder/index.html +4 -2
  7. package/coverage/clover.xml +390 -451
  8. package/coverage/coverage-final.json +21 -21
  9. package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
  10. package/coverage/lcov-report/api/controllers/auth.js.html +8 -41
  11. package/coverage/lcov-report/api/controllers/automation.js.html +1 -1
  12. package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
  13. package/coverage/lcov-report/api/controllers/cloud.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/component.js.html +11 -68
  15. package/coverage/lcov-report/api/controllers/datasource.js.html +34 -73
  16. package/coverage/lcov-report/api/controllers/dev.js.html +1 -1
  17. package/coverage/lcov-report/api/controllers/index.html +46 -46
  18. package/coverage/lcov-report/api/controllers/integration.js.html +6 -6
  19. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  20. package/coverage/lcov-report/api/controllers/metadata.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/migrations.js.html +1 -1
  22. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/query/index.html +1 -1
  24. package/coverage/lcov-report/api/controllers/query/validation.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  26. package/coverage/lcov-report/api/controllers/routing.js.html +1 -1
  27. package/coverage/lcov-report/api/controllers/row/external.js.html +2 -2
  28. package/coverage/lcov-report/api/controllers/row/index.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/internal.js.html +1 -1
  30. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/row/utils.js.html +1 -1
  33. package/coverage/lcov-report/api/controllers/screen.js.html +12 -207
  34. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  35. package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +1 -1
  36. package/coverage/lcov-report/api/controllers/table/external.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  38. package/coverage/lcov-report/api/controllers/table/index.js.html +1 -1
  39. package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  42. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  43. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  44. package/coverage/lcov-report/api/controllers/view/utils.js.html +1 -1
  45. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  46. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  47. package/coverage/lcov-report/api/index.html +1 -1
  48. package/coverage/lcov-report/api/index.js.html +13 -13
  49. package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
  50. package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
  51. package/coverage/lcov-report/api/routes/auth.js.html +1 -1
  52. package/coverage/lcov-report/api/routes/automation.js.html +1 -1
  53. package/coverage/lcov-report/api/routes/backup.js.html +1 -1
  54. package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
  55. package/coverage/lcov-report/api/routes/component.js.html +1 -1
  56. package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
  57. package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
  58. package/coverage/lcov-report/api/routes/dev.js.html +1 -1
  59. package/coverage/lcov-report/api/routes/index.html +1 -1
  60. package/coverage/lcov-report/api/routes/integration.js.html +1 -1
  61. package/coverage/lcov-report/api/routes/layout.js.html +1 -1
  62. package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
  63. package/coverage/lcov-report/api/routes/migrations.js.html +1 -1
  64. package/coverage/lcov-report/api/routes/permission.js.html +1 -1
  65. package/coverage/lcov-report/api/routes/query.js.html +1 -1
  66. package/coverage/lcov-report/api/routes/role.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/routing.js.html +1 -1
  68. package/coverage/lcov-report/api/routes/screen.js.html +1 -1
  69. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  70. package/coverage/lcov-report/api/routes/table.js.html +2 -2
  71. package/coverage/lcov-report/api/routes/templates.js.html +1 -1
  72. package/coverage/lcov-report/api/routes/user.js.html +1 -1
  73. package/coverage/lcov-report/api/routes/utils/index.html +9 -9
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +12 -75
  75. package/coverage/lcov-report/api/routes/view.js.html +1 -1
  76. package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
  77. package/coverage/lcov-report/automations/actions.js.html +1 -1
  78. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  79. package/coverage/lcov-report/automations/bullboard.js.html +1 -1
  80. package/coverage/lcov-report/automations/index.html +1 -1
  81. package/coverage/lcov-report/automations/index.js.html +1 -1
  82. package/coverage/lcov-report/automations/steps/bash.js.html +1 -1
  83. package/coverage/lcov-report/automations/steps/delay.js.html +1 -1
  84. package/coverage/lcov-report/automations/steps/discord.js.html +1 -1
  85. package/coverage/lcov-report/automations/steps/executeQuery.js.html +1 -1
  86. package/coverage/lcov-report/automations/steps/executeScript.js.html +1 -1
  87. package/coverage/lcov-report/automations/steps/filter.js.html +1 -1
  88. package/coverage/lcov-report/automations/steps/index.html +1 -1
  89. package/coverage/lcov-report/automations/steps/integromat.js.html +1 -1
  90. package/coverage/lcov-report/automations/steps/loop.js.html +1 -1
  91. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +1 -1
  92. package/coverage/lcov-report/automations/steps/queryRows.js.html +1 -1
  93. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +1 -1
  94. package/coverage/lcov-report/automations/steps/serverLog.js.html +1 -1
  95. package/coverage/lcov-report/automations/steps/slack.js.html +1 -1
  96. package/coverage/lcov-report/automations/steps/updateRow.js.html +1 -1
  97. package/coverage/lcov-report/automations/steps/utils.js.html +1 -1
  98. package/coverage/lcov-report/automations/steps/zapier.js.html +1 -1
  99. package/coverage/lcov-report/automations/triggerInfo/app.js.html +1 -1
  100. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +1 -1
  101. package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
  102. package/coverage/lcov-report/automations/triggerInfo/index.js.html +1 -1
  103. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +1 -1
  104. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +1 -1
  105. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +1 -1
  106. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +1 -1
  107. package/coverage/lcov-report/automations/triggers.js.html +1 -1
  108. package/coverage/lcov-report/constants/index.html +1 -1
  109. package/coverage/lcov-report/constants/index.js.html +1 -1
  110. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  111. package/coverage/lcov-report/constants/screens.js.html +1 -1
  112. package/coverage/lcov-report/db/inMemoryView.js.html +1 -1
  113. package/coverage/lcov-report/db/index.html +18 -18
  114. package/coverage/lcov-report/db/index.js.html +1 -1
  115. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +1 -1
  116. package/coverage/lcov-report/db/linkedRows/index.html +1 -1
  117. package/coverage/lcov-report/db/linkedRows/index.js.html +1 -1
  118. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +1 -1
  119. package/coverage/lcov-report/db/newid.js.html +2 -2
  120. package/coverage/lcov-report/db/utils.js.html +20 -56
  121. package/coverage/lcov-report/events/AutomationEmitter.js.html +3 -3
  122. package/coverage/lcov-report/events/index.html +1 -1
  123. package/coverage/lcov-report/events/index.js.html +1 -1
  124. package/coverage/lcov-report/events/utils.js.html +1 -1
  125. package/coverage/lcov-report/index.html +46 -46
  126. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  127. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  128. package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
  129. package/coverage/lcov-report/middleware/builder.js.html +12 -12
  130. package/coverage/lcov-report/middleware/currentapp.js.html +40 -46
  131. package/coverage/lcov-report/middleware/index.html +15 -15
  132. package/coverage/lcov-report/middleware/joi-validator.js.html +1 -1
  133. package/coverage/lcov-report/middleware/publicApi.js.html +1 -1
  134. package/coverage/lcov-report/middleware/resourceId.js.html +7 -7
  135. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  136. package/coverage/lcov-report/middleware/utils.js.html +2 -2
  137. package/coverage/lcov-report/utilities/budibaseDir.js.html +3 -3
  138. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  139. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  140. package/coverage/lcov-report/utilities/global.js.html +16 -16
  141. package/coverage/lcov-report/utilities/index.html +15 -15
  142. package/coverage/lcov-report/utilities/index.js.html +24 -24
  143. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +2 -2
  144. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  146. package/coverage/lcov-report/utilities/routing/index.js.html +1 -1
  147. package/coverage/lcov-report/utilities/rowProcessor/index.html +1 -1
  148. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +1 -1
  149. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +1 -1
  150. package/coverage/lcov-report/utilities/scriptRunner.js.html +1 -1
  151. package/coverage/lcov-report/utilities/security.js.html +2 -2
  152. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  153. package/coverage/lcov-report/utilities/usageQuota/index.html +1 -1
  154. package/coverage/lcov-report/utilities/usageQuota/rows.js.html +1 -1
  155. package/coverage/lcov-report/utilities/usageQuota/usageQuoteReset.js.html +1 -1
  156. package/coverage/lcov-report/utilities/users.js.html +1 -1
  157. package/coverage/lcov-report/utilities/workerRequests.js.html +8 -32
  158. package/coverage/lcov.info +672 -798
  159. package/dist/api/controllers/application.js +5 -5
  160. package/dist/api/controllers/auth.js +0 -9
  161. package/dist/api/controllers/component.js +1 -14
  162. package/dist/api/controllers/datasource.js +8 -21
  163. package/dist/api/controllers/deploy/index.js +8 -1
  164. package/dist/api/controllers/integration.js +4 -4
  165. package/dist/api/controllers/row/external.js +1 -1
  166. package/dist/api/controllers/screen.js +2 -52
  167. package/dist/api/controllers/static/index.js +0 -1
  168. package/dist/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  169. package/dist/api/controllers/static/templates/preview.hbs +1 -5
  170. package/dist/api/index.js +1 -1
  171. package/dist/api/routes/application.js +2 -3
  172. package/dist/api/routes/index.js +0 -2
  173. package/dist/api/routes/public/rows.js +82 -1
  174. package/dist/api/routes/public/tables.js +1 -1
  175. package/dist/api/routes/table.js +1 -1
  176. package/dist/api/routes/utils/validators.js +2 -20
  177. package/dist/app.js +1 -16
  178. package/dist/db/utils.js +1 -10
  179. package/dist/environment.js +0 -1
  180. package/dist/integrations/airtable.js +129 -126
  181. package/dist/integrations/arangodb.js +89 -86
  182. package/dist/integrations/base/query.js +2 -2
  183. package/dist/integrations/base/sqlTable.js +1 -3
  184. package/dist/integrations/couchdb.js +83 -80
  185. package/dist/integrations/dynamodb.js +164 -161
  186. package/dist/integrations/elasticsearch.js +138 -135
  187. package/dist/integrations/firebase.js +157 -154
  188. package/dist/integrations/googlesheets.js +327 -323
  189. package/dist/integrations/index.js +51 -99
  190. package/dist/integrations/microsoftSqlServer.js +243 -240
  191. package/dist/integrations/mongodb.js +242 -239
  192. package/dist/integrations/mysql.js +219 -215
  193. package/dist/integrations/oracle.js +322 -318
  194. package/dist/integrations/postgres.js +265 -262
  195. package/dist/integrations/redis.js +139 -134
  196. package/dist/integrations/rest.js +292 -289
  197. package/dist/integrations/s3.js +64 -61
  198. package/dist/integrations/snowflake.js +86 -83
  199. package/dist/middleware/currentapp.js +0 -2
  200. package/dist/migrations/functions/backfill/global.js +3 -0
  201. package/dist/migrations/functions/developerQuota.js +49 -0
  202. package/dist/{api/routes/plugin.js → migrations/functions/publishedAppsQuota.js} +21 -13
  203. package/dist/{api/controllers/plugin/url.js → migrations/functions/usageQuotas/syncDevelopers.js} +13 -13
  204. package/dist/{api/controllers/plugin/file.js → migrations/functions/usageQuotas/syncPublishedApps.js} +15 -13
  205. package/dist/migrations/index.js +10 -0
  206. package/dist/package.json +6 -9
  207. package/dist/tests/utilities/TestConfiguration.js +1 -1
  208. package/dist/threads/query.js +2 -2
  209. package/dist/tsconfig.build.tsbuildinfo +1 -1
  210. package/dist/utilities/fileSystem/index.js +1 -111
  211. package/dist/utilities/workerRequests.js +0 -4
  212. package/package.json +7 -10
  213. package/scripts/dev/manage.js +0 -4
  214. package/scripts/localdomain.js +1 -3
  215. package/specs/openapi.json +112 -115
  216. package/specs/openapi.yaml +94 -96
  217. package/specs/resources/misc.js +0 -116
  218. package/specs/resources/query.js +1 -1
  219. package/src/api/controllers/application.ts +2 -1
  220. package/src/api/controllers/auth.js +0 -11
  221. package/src/api/controllers/component.js +2 -21
  222. package/src/api/controllers/datasource.js +8 -21
  223. package/src/api/controllers/deploy/index.ts +6 -1
  224. package/src/api/controllers/integration.js +4 -4
  225. package/src/api/controllers/public/mapping/types.ts +0 -8
  226. package/src/api/controllers/row/external.js +1 -1
  227. package/src/api/controllers/screen.js +1 -66
  228. package/src/api/controllers/static/index.ts +1 -1
  229. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  230. package/src/api/controllers/static/templates/preview.hbs +1 -5
  231. package/src/api/index.js +1 -1
  232. package/src/api/routes/application.ts +2 -13
  233. package/src/api/routes/index.ts +0 -2
  234. package/src/api/routes/public/rows.ts +82 -1
  235. package/src/api/routes/public/tables.ts +1 -1
  236. package/src/api/routes/table.js +1 -1
  237. package/src/api/routes/tests/query.spec.js +25 -8
  238. package/src/api/routes/tests/user.spec.js +2 -0
  239. package/src/api/routes/utils/validators.js +5 -26
  240. package/src/app.ts +2 -25
  241. package/src/db/utils.js +0 -12
  242. package/src/definitions/openapi.ts +55 -56
  243. package/src/environment.js +0 -1
  244. package/src/integrations/airtable.ts +118 -116
  245. package/src/integrations/arangodb.ts +89 -87
  246. package/src/integrations/base/query.ts +2 -2
  247. package/src/integrations/base/sqlTable.ts +1 -3
  248. package/src/integrations/couchdb.ts +89 -83
  249. package/src/integrations/dynamodb.ts +175 -173
  250. package/src/integrations/elasticsearch.ts +122 -120
  251. package/src/integrations/firebase.ts +159 -157
  252. package/src/integrations/googlesheets.ts +338 -328
  253. package/src/integrations/index.ts +21 -64
  254. package/src/integrations/microsoftSqlServer.ts +251 -249
  255. package/src/integrations/mongodb.ts +258 -261
  256. package/src/integrations/mysql.ts +234 -229
  257. package/src/integrations/oracle.ts +380 -373
  258. package/src/integrations/postgres.ts +268 -264
  259. package/src/integrations/redis.ts +132 -128
  260. package/src/integrations/rest.ts +329 -324
  261. package/src/integrations/s3.ts +71 -68
  262. package/src/integrations/snowflake.ts +82 -80
  263. package/src/integrations/tests/{airtable.spec.ts → airtable.spec.js} +18 -21
  264. package/src/integrations/tests/{arangodb.spec.ts → arangodb.spec.js} +9 -12
  265. package/src/integrations/tests/{couchdb.spec.ts → couchdb.spec.js} +27 -33
  266. package/src/integrations/tests/{dynamodb.spec.ts → dynamodb.spec.js} +41 -45
  267. package/src/integrations/tests/{elasticsearch.spec.ts → elasticsearch.spec.js} +21 -22
  268. package/src/integrations/tests/{firebase.spec.ts → firebase.spec.js} +28 -33
  269. package/src/integrations/tests/{microsoftSqlServer.spec.ts → microsoftSqlServer.spec.js} +11 -12
  270. package/src/integrations/tests/{mongo.spec.ts → mongo.spec.js} +35 -46
  271. package/src/integrations/tests/{mysql.spec.ts → mysql.spec.js} +15 -17
  272. package/src/integrations/tests/{oracle.spec.ts → oracle.spec.js} +17 -19
  273. package/src/integrations/tests/{postgres.spec.ts → postgres.spec.js} +17 -19
  274. package/src/integrations/tests/{redis.spec.ts → redis.spec.js} +18 -27
  275. package/src/integrations/tests/{rest.spec.ts → rest.spec.js} +14 -22
  276. package/src/integrations/tests/{s3.spec.ts → s3.spec.js} +8 -10
  277. package/src/integrations/tests/{sql.spec.ts → sql.spec.js} +177 -228
  278. package/src/middleware/currentapp.js +0 -2
  279. package/src/migrations/functions/backfill/global.ts +3 -0
  280. package/src/migrations/functions/developerQuota.ts +15 -0
  281. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  282. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  283. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  284. package/src/migrations/index.ts +16 -0
  285. package/src/module.d.ts +0 -2
  286. package/src/tests/utilities/TestConfiguration.js +1 -1
  287. package/src/threads/query.ts +2 -2
  288. package/src/utilities/fileSystem/index.js +0 -130
  289. package/src/utilities/workerRequests.js +0 -8
  290. package/builder/assets/index.c9d3f9e8.js +0 -1005
  291. package/builder/assets/index.f1b70f52.css +0 -6
  292. package/dist/api/controllers/plugin/github.js +0 -69
  293. package/dist/api/controllers/plugin/index.js +0 -200
  294. package/dist/api/controllers/plugin/npm.js +0 -58
  295. package/dist/api/controllers/plugin/uploaders.js +0 -11
  296. package/dist/api/controllers/plugin/utils.js +0 -26
  297. package/dist/watch.js +0 -77
  298. package/dist/websocket.js +0 -22
  299. package/src/api/controllers/plugin/file.ts +0 -15
  300. package/src/api/controllers/plugin/github.ts +0 -75
  301. package/src/api/controllers/plugin/index.ts +0 -215
  302. package/src/api/controllers/plugin/npm.ts +0 -56
  303. package/src/api/controllers/plugin/uploaders.ts +0 -4
  304. package/src/api/controllers/plugin/url.ts +0 -12
  305. package/src/api/controllers/plugin/utils.ts +0 -19
  306. package/src/api/routes/plugin.ts +0 -14
  307. package/src/watch.ts +0 -38
  308. package/src/websocket.ts +0 -26
@@ -10,71 +10,74 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const types_1 = require("@budibase/types");
13
- const AWS = require("aws-sdk");
14
- const SCHEMA = {
15
- docs: "https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html",
16
- description: "Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.",
17
- friendlyName: "Amazon S3",
18
- type: "Object store",
19
- datasource: {
20
- region: {
21
- type: "string",
22
- required: false,
23
- default: "us-east-1",
24
- },
25
- accessKeyId: {
26
- type: "password",
27
- required: true,
28
- },
29
- secretAccessKey: {
30
- type: "password",
31
- required: true,
32
- },
33
- endpoint: {
34
- type: "string",
35
- required: false,
36
- },
37
- signatureVersion: {
38
- type: "string",
39
- required: false,
40
- default: "v4",
13
+ var S3Module;
14
+ (function (S3Module) {
15
+ const AWS = require("aws-sdk");
16
+ const SCHEMA = {
17
+ docs: "https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html",
18
+ description: "Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance.",
19
+ friendlyName: "Amazon S3",
20
+ type: "Object store",
21
+ datasource: {
22
+ region: {
23
+ type: "string",
24
+ required: false,
25
+ default: "us-east-1",
26
+ },
27
+ accessKeyId: {
28
+ type: "password",
29
+ required: true,
30
+ },
31
+ secretAccessKey: {
32
+ type: "password",
33
+ required: true,
34
+ },
35
+ endpoint: {
36
+ type: "string",
37
+ required: false,
38
+ },
39
+ signatureVersion: {
40
+ type: "string",
41
+ required: false,
42
+ default: "v4",
43
+ },
41
44
  },
42
- },
43
- query: {
44
- read: {
45
- type: types_1.QueryType.FIELDS,
46
- fields: {
47
- bucket: {
48
- type: "string",
49
- required: true,
45
+ query: {
46
+ read: {
47
+ type: types_1.QueryType.FIELDS,
48
+ fields: {
49
+ bucket: {
50
+ type: "string",
51
+ required: true,
52
+ },
50
53
  },
51
54
  },
52
55
  },
53
- },
54
- };
55
- class S3Integration {
56
- constructor(config) {
57
- this.config = config;
58
- if (this.config.endpoint) {
59
- this.config.s3ForcePathStyle = true;
56
+ };
57
+ class S3Integration {
58
+ constructor(config) {
59
+ this.config = config;
60
+ if (this.config.endpoint) {
61
+ this.config.s3ForcePathStyle = true;
62
+ }
63
+ else {
64
+ delete this.config.endpoint;
65
+ }
66
+ this.client = new AWS.S3(this.config);
60
67
  }
61
- else {
62
- delete this.config.endpoint;
68
+ read(query) {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ const response = yield this.client
71
+ .listObjects({
72
+ Bucket: query.bucket,
73
+ })
74
+ .promise();
75
+ return response.Contents;
76
+ });
63
77
  }
64
- this.client = new AWS.S3(this.config);
65
- }
66
- read(query) {
67
- return __awaiter(this, void 0, void 0, function* () {
68
- const response = yield this.client
69
- .listObjects({
70
- Bucket: query.bucket,
71
- })
72
- .promise();
73
- return response.Contents;
74
- });
75
78
  }
76
- }
77
- exports.default = {
78
- schema: SCHEMA,
79
- integration: S3Integration,
80
- };
79
+ module.exports = {
80
+ schema: SCHEMA,
81
+ integration: S3Integration,
82
+ };
83
+ })(S3Module || (S3Module = {}));
@@ -11,89 +11,92 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const types_1 = require("@budibase/types");
13
13
  const snowflake_promise_1 = require("snowflake-promise");
14
- const SCHEMA = {
15
- docs: "https://developers.snowflake.com/",
16
- description: "Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
17
- friendlyName: "Snowflake",
18
- type: "Relational",
19
- datasource: {
20
- account: {
21
- type: "string",
22
- required: true,
14
+ var SnowflakeModule;
15
+ (function (SnowflakeModule) {
16
+ const SCHEMA = {
17
+ docs: "https://developers.snowflake.com/",
18
+ description: "Snowflake is a solution for data warehousing, data lakes, data engineering, data science, data application development, and securely sharing and consuming shared data.",
19
+ friendlyName: "Snowflake",
20
+ type: "Relational",
21
+ datasource: {
22
+ account: {
23
+ type: "string",
24
+ required: true,
25
+ },
26
+ username: {
27
+ type: "string",
28
+ required: true,
29
+ },
30
+ password: {
31
+ type: "password",
32
+ required: true,
33
+ },
34
+ warehouse: {
35
+ type: "string",
36
+ required: true,
37
+ },
38
+ database: {
39
+ type: "string",
40
+ required: true,
41
+ },
42
+ schema: {
43
+ type: "string",
44
+ required: true,
45
+ },
23
46
  },
24
- username: {
25
- type: "string",
26
- required: true,
47
+ query: {
48
+ create: {
49
+ type: types_1.QueryType.SQL,
50
+ },
51
+ read: {
52
+ type: types_1.QueryType.SQL,
53
+ },
54
+ update: {
55
+ type: types_1.QueryType.SQL,
56
+ },
57
+ delete: {
58
+ type: types_1.QueryType.SQL,
59
+ },
27
60
  },
28
- password: {
29
- type: "password",
30
- required: true,
31
- },
32
- warehouse: {
33
- type: "string",
34
- required: true,
35
- },
36
- database: {
37
- type: "string",
38
- required: true,
39
- },
40
- schema: {
41
- type: "string",
42
- required: true,
43
- },
44
- },
45
- query: {
46
- create: {
47
- type: types_1.QueryType.SQL,
48
- },
49
- read: {
50
- type: types_1.QueryType.SQL,
51
- },
52
- update: {
53
- type: types_1.QueryType.SQL,
54
- },
55
- delete: {
56
- type: types_1.QueryType.SQL,
57
- },
58
- },
59
- };
60
- class SnowflakeIntegration {
61
- constructor(config) {
62
- this.client = new snowflake_promise_1.Snowflake(config);
63
- }
64
- internalQuery(query) {
65
- return __awaiter(this, void 0, void 0, function* () {
66
- yield this.client.connect();
67
- try {
68
- return yield this.client.execute(query.sql);
69
- }
70
- catch (err) {
71
- throw (err === null || err === void 0 ? void 0 : err.message.split(":")[1]) || (err === null || err === void 0 ? void 0 : err.message);
72
- }
73
- });
74
- }
75
- create(query) {
76
- return __awaiter(this, void 0, void 0, function* () {
77
- return this.internalQuery(query);
78
- });
79
- }
80
- read(query) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- return this.internalQuery(query);
83
- });
61
+ };
62
+ class SnowflakeIntegration {
63
+ constructor(config) {
64
+ this.client = new snowflake_promise_1.Snowflake(config);
65
+ }
66
+ internalQuery(query) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ yield this.client.connect();
69
+ try {
70
+ return yield this.client.execute(query.sql);
71
+ }
72
+ catch (err) {
73
+ throw (err === null || err === void 0 ? void 0 : err.message.split(":")[1]) || (err === null || err === void 0 ? void 0 : err.message);
74
+ }
75
+ });
76
+ }
77
+ create(query) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ return this.internalQuery(query);
80
+ });
81
+ }
82
+ read(query) {
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ return this.internalQuery(query);
85
+ });
86
+ }
87
+ update(query) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ return this.internalQuery(query);
90
+ });
91
+ }
92
+ delete(query) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ return this.internalQuery(query);
95
+ });
96
+ }
84
97
  }
85
- update(query) {
86
- return __awaiter(this, void 0, void 0, function* () {
87
- return this.internalQuery(query);
88
- });
89
- }
90
- delete(query) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- return this.internalQuery(query);
93
- });
94
- }
95
- }
96
- exports.default = {
97
- schema: SCHEMA,
98
- integration: SnowflakeIntegration,
99
- };
98
+ module.exports = {
99
+ schema: SCHEMA,
100
+ integration: SnowflakeIntegration,
101
+ };
102
+ })(SnowflakeModule || (SnowflakeModule = {}));
@@ -105,12 +105,10 @@ module.exports = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
105
105
  ctx.appId = appId;
106
106
  if (roleId) {
107
107
  ctx.roleId = roleId;
108
- const globalId = ctx.user ? ctx.user._id : undefined;
109
108
  const userId = ctx.user ? generateUserMetadataID(ctx.user._id) : null;
110
109
  ctx.user = Object.assign(Object.assign({}, ctx.user), {
111
110
  // override userID with metadata one
112
111
  _id: userId, userId,
113
- globalId,
114
112
  roleId, role: yield getRole(roleId) });
115
113
  }
116
114
  if ((requestAppId !== appId ||
@@ -57,9 +57,11 @@ const formatUsage = (usage) => {
57
57
  let maxAutomations = 0;
58
58
  let maxQueries = 0;
59
59
  let rows = 0;
60
+ let developers = 0;
60
61
  if (usage) {
61
62
  if (usage.usageQuota) {
62
63
  rows = usage.usageQuota.rows;
64
+ developers = usage.usageQuota.developers;
63
65
  }
64
66
  if (usage.monthly) {
65
67
  for (const value of Object.values(usage.monthly)) {
@@ -76,6 +78,7 @@ const formatUsage = (usage) => {
76
78
  maxAutomations,
77
79
  maxQueries,
78
80
  rows,
81
+ developers,
79
82
  };
80
83
  };
81
84
  const EVENTS = [
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.run = void 0;
36
+ const { createUserBuildersView } = require("@budibase/backend-core/db");
37
+ const syncDevelopers = __importStar(require("./usageQuotas/syncDevelopers"));
38
+ /**
39
+ * Date:
40
+ * March 2022
41
+ *
42
+ * Description:
43
+ * Create the builder users view and sync the developer count
44
+ */
45
+ const run = (db) => __awaiter(void 0, void 0, void 0, function* () {
46
+ yield createUserBuildersView(db);
47
+ yield syncDevelopers.run();
48
+ });
49
+ exports.run = run;
@@ -22,18 +22,26 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
27
33
  };
28
34
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const router_1 = __importDefault(require("@koa/router"));
30
- const controller = __importStar(require("../controllers/plugin"));
31
- const authorized_1 = __importDefault(require("../../middleware/authorized"));
32
- const permissions_1 = require("@budibase/backend-core/permissions");
33
- const router = new router_1.default();
34
- router
35
- .post("/api/plugin/upload", (0, authorized_1.default)(permissions_1.BUILDER), controller.upload)
36
- .post("/api/plugin", (0, authorized_1.default)(permissions_1.BUILDER), controller.create)
37
- .get("/api/plugin", (0, authorized_1.default)(permissions_1.BUILDER), controller.fetch)
38
- .delete("/api/plugin/:pluginId", (0, authorized_1.default)(permissions_1.BUILDER), controller.destroy);
39
- exports.default = router;
35
+ exports.run = void 0;
36
+ const syncPublishedApps = __importStar(require("./usageQuotas/syncPublishedApps"));
37
+ /**
38
+ * Date:
39
+ * March 2022
40
+ *
41
+ * Description:
42
+ * Sync the published apps count
43
+ */
44
+ const run = (db) => __awaiter(void 0, void 0, void 0, function* () {
45
+ yield syncPublishedApps.run();
46
+ });
47
+ exports.run = run;
@@ -9,16 +9,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.urlUpload = void 0;
13
- const utils_1 = require("./utils");
14
- const fileSystem_1 = require("../../../utilities/fileSystem");
15
- function urlUpload(url, name = "", headers = {}) {
16
- return __awaiter(this, void 0, void 0, function* () {
17
- if (!url.includes(".tar.gz")) {
18
- throw new Error("Plugin must be compressed into a gzipped tarball.");
19
- }
20
- const path = yield (0, utils_1.downloadUnzipTarball)(url, name, headers);
21
- return yield (0, fileSystem_1.getPluginMetadata)(path);
22
- });
23
- }
24
- exports.urlUpload = urlUpload;
12
+ exports.run = void 0;
13
+ const tenancy_1 = require("@budibase/backend-core/tenancy");
14
+ const backend_core_1 = require("@budibase/backend-core");
15
+ const pro_1 = require("@budibase/pro");
16
+ const run = () => __awaiter(void 0, void 0, void 0, function* () {
17
+ // get developer count
18
+ const developerCount = yield backend_core_1.utils.getBuildersCount();
19
+ // sync developer count
20
+ const tenantId = (0, tenancy_1.getTenantId)();
21
+ console.log(`[Tenant: ${tenantId}] Syncing developer count: ${developerCount}`);
22
+ yield pro_1.quotas.setUsage(developerCount, pro_1.StaticQuotaName.DEVELOPERS, pro_1.QuotaUsageType.STATIC);
23
+ });
24
+ exports.run = run;
@@ -9,16 +9,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.fileUpload = void 0;
13
- const fileSystem_1 = require("../../../utilities/fileSystem");
14
- function fileUpload(file) {
15
- return __awaiter(this, void 0, void 0, function* () {
16
- if (!file.name.endsWith(".tar.gz")) {
17
- throw new Error("Plugin must be compressed into a gzipped tarball.");
18
- }
19
- const path = (0, fileSystem_1.createTempFolder)(file.name.split(".tar.gz")[0]);
20
- yield (0, fileSystem_1.extractTarball)(file.path, path);
21
- return yield (0, fileSystem_1.getPluginMetadata)(path);
22
- });
23
- }
24
- exports.fileUpload = fileUpload;
12
+ exports.run = void 0;
13
+ const tenancy_1 = require("@budibase/backend-core/tenancy");
14
+ const db_1 = require("@budibase/backend-core/db");
15
+ const pro_1 = require("@budibase/pro");
16
+ const run = () => __awaiter(void 0, void 0, void 0, function* () {
17
+ // get app count
18
+ const opts = { dev: false };
19
+ const prodApps = yield (0, db_1.getAllApps)(opts);
20
+ const prodAppCount = prodApps ? prodApps.length : 0;
21
+ // sync app count
22
+ const tenantId = (0, tenancy_1.getTenantId)();
23
+ console.log(`[Tenant: ${tenantId}] Syncing published app count: ${prodAppCount}`);
24
+ yield pro_1.quotas.setUsage(prodAppCount, pro_1.StaticQuotaName.PUBLISHED_APPS, pro_1.QuotaUsageType.STATIC);
25
+ });
26
+ exports.run = run;
@@ -43,6 +43,8 @@ const environment_1 = __importDefault(require("../environment"));
43
43
  const userEmailViewCasing = __importStar(require("./functions/userEmailViewCasing"));
44
44
  const quota1 = __importStar(require("./functions/quotas1"));
45
45
  const appUrls = __importStar(require("./functions/appUrls"));
46
+ const developerQuota = __importStar(require("./functions/developerQuota"));
47
+ const publishedAppsQuota = __importStar(require("./functions/publishedAppsQuota"));
46
48
  const backfill = __importStar(require("./functions/backfill"));
47
49
  /**
48
50
  * Populate the migration function and additional configuration from
@@ -65,6 +67,14 @@ const buildMigrations = () => {
65
67
  serverMigrations.push(Object.assign(Object.assign({}, definition), { appOpts: { all: true }, fn: appUrls.run }));
66
68
  break;
67
69
  }
70
+ case types_1.MigrationName.DEVELOPER_QUOTA: {
71
+ serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: developerQuota.run }));
72
+ break;
73
+ }
74
+ case types_1.MigrationName.PUBLISHED_APP_QUOTA: {
75
+ serverMigrations.push(Object.assign(Object.assign({}, definition), { fn: publishedAppsQuota.run }));
76
+ break;
77
+ }
68
78
  case types_1.MigrationName.EVENT_APP_BACKFILL: {
69
79
  serverMigrations.push(Object.assign(Object.assign({}, definition), { appOpts: { all: true }, fn: backfill.app.run, silent: !!environment_1.default.SELF_HOSTED, preventRetry: !!environment_1.default.SELF_HOSTED }));
70
80
  break;
package/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/server",
3
3
  "email": "hi@budibase.com",
4
- "version": "1.3.21-alpha.0",
4
+ "version": "1.3.20",
5
5
  "description": "Budibase Web Server",
6
6
  "main": "src/index.ts",
7
7
  "repository": {
@@ -77,11 +77,11 @@
77
77
  "license": "GPL-3.0",
78
78
  "dependencies": {
79
79
  "@apidevtools/swagger-parser": "10.0.3",
80
- "@budibase/backend-core": "1.3.21-alpha.0",
81
- "@budibase/client": "1.3.21-alpha.0",
82
- "@budibase/pro": "1.3.21-alpha.0",
83
- "@budibase/string-templates": "1.3.21-alpha.0",
84
- "@budibase/types": "1.3.21-alpha.0",
80
+ "@budibase/backend-core": "^1.3.20",
81
+ "@budibase/client": "^1.3.20",
82
+ "@budibase/pro": "1.3.20",
83
+ "@budibase/string-templates": "^1.3.20",
84
+ "@budibase/types": "^1.3.20",
85
85
  "@bull-board/api": "3.7.0",
86
86
  "@bull-board/koa": "3.9.4",
87
87
  "@elastic/elasticsearch": "7.10.0",
@@ -95,7 +95,6 @@
95
95
  "bcryptjs": "2.4.3",
96
96
  "bull": "4.8.5",
97
97
  "chmodr": "1.2.0",
98
- "chokidar": "3.5.3",
99
98
  "csvtojson": "2.0.10",
100
99
  "curlconverter": "3.21.0",
101
100
  "dotenv": "8.2.0",
@@ -139,10 +138,8 @@
139
138
  "redis": "4",
140
139
  "server-destroy": "1.0.1",
141
140
  "snowflake-promise": "^4.5.0",
142
- "socket.io": "^4.5.1",
143
141
  "svelte": "3.49.0",
144
142
  "swagger-parser": "10.0.3",
145
- "tar": "6.1.11",
146
143
  "to-json-schema": "0.2.5",
147
144
  "uuid": "3.3.2",
148
145
  "validate.js": "0.13.1",
@@ -504,7 +504,7 @@ class TestConfiguration {
504
504
  createQuery(config = null) {
505
505
  return __awaiter(this, void 0, void 0, function* () {
506
506
  if (!this.datasource && !config) {
507
- throw "No datasource created for query.";
507
+ throw "No data source created for query.";
508
508
  }
509
509
  config = config || basicQuery(this.datasource._id);
510
510
  return this._req(config, null, controllers.query.save);
@@ -16,7 +16,7 @@ exports.execute = void 0;
16
16
  const utils_1 = __importDefault(require("./utils"));
17
17
  utils_1.default.threadSetup();
18
18
  const ScriptRunner = require("../utilities/scriptRunner");
19
- const { getIntegration } = require("../integrations");
19
+ const { integrations } = require("../integrations");
20
20
  const { processStringSync } = require("@budibase/string-templates");
21
21
  const { doInAppContext, getAppDB } = require("@budibase/backend-core/context");
22
22
  const { refreshOAuthToken, updateUserOAuth, } = require("@budibase/backend-core/auth");
@@ -52,7 +52,7 @@ class QueryRunner {
52
52
  let { datasource, fields, queryVerb, transformer } = this;
53
53
  let datasourceClone = cloneDeep(datasource);
54
54
  let fieldsClone = cloneDeep(fields);
55
- const Integration = yield getIntegration(datasourceClone.source);
55
+ const Integration = integrations[datasourceClone.source];
56
56
  if (!Integration) {
57
57
  throw "Integration type does not exist.";
58
58
  }