@budibase/server 1.3.19-alpha.1 → 1.3.19

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 (302) hide show
  1. package/__mocks__/mongodb.ts +1 -1
  2. package/builder/assets/index.9ce4f8c5.css +6 -0
  3. package/builder/assets/index.a1f7532b.js +876 -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 +388 -441
  8. package/coverage/coverage-final.json +20 -20
  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 +5 -5
  74. package/coverage/lcov-report/api/routes/utils/validators.js.html +6 -9
  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 +37 -37
  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 +1 -1
  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 +1 -1
  158. package/coverage/lcov.info +667 -780
  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/tables.js +1 -1
  174. package/dist/api/routes/table.js +1 -1
  175. package/dist/api/routes/utils/validators.js +1 -2
  176. package/dist/app.js +0 -11
  177. package/dist/db/utils.js +1 -10
  178. package/dist/environment.js +0 -1
  179. package/dist/integrations/airtable.js +129 -126
  180. package/dist/integrations/arangodb.js +89 -86
  181. package/dist/integrations/base/query.js +2 -2
  182. package/dist/integrations/base/sqlTable.js +1 -3
  183. package/dist/integrations/couchdb.js +83 -80
  184. package/dist/integrations/dynamodb.js +164 -161
  185. package/dist/integrations/elasticsearch.js +138 -135
  186. package/dist/integrations/firebase.js +157 -154
  187. package/dist/integrations/googlesheets.js +327 -323
  188. package/dist/integrations/index.js +51 -99
  189. package/dist/integrations/microsoftSqlServer.js +243 -240
  190. package/dist/integrations/mongodb.js +242 -239
  191. package/dist/integrations/mysql.js +219 -215
  192. package/dist/integrations/oracle.js +322 -318
  193. package/dist/integrations/postgres.js +265 -262
  194. package/dist/integrations/redis.js +139 -134
  195. package/dist/integrations/rest.js +292 -289
  196. package/dist/integrations/s3.js +64 -61
  197. package/dist/integrations/snowflake.js +86 -83
  198. package/dist/middleware/currentapp.js +0 -2
  199. package/dist/migrations/functions/backfill/global.js +3 -0
  200. package/dist/migrations/functions/developerQuota.js +49 -0
  201. package/dist/{api/routes/plugin.js → migrations/functions/publishedAppsQuota.js} +21 -13
  202. package/dist/{api/controllers/plugin/url.js → migrations/functions/usageQuotas/syncDevelopers.js} +13 -13
  203. package/dist/{api/controllers/plugin/file.js → migrations/functions/usageQuotas/syncPublishedApps.js} +15 -13
  204. package/dist/migrations/index.js +10 -0
  205. package/dist/package.json +6 -9
  206. package/dist/tests/utilities/TestConfiguration.js +1 -1
  207. package/dist/threads/query.js +2 -2
  208. package/dist/tsconfig.build.tsbuildinfo +1 -1
  209. package/dist/utilities/fileSystem/index.js +1 -110
  210. package/package.json +7 -10
  211. package/scripts/dev/manage.js +0 -1
  212. package/scripts/localdomain.js +1 -3
  213. package/specs/openapi.json +3 -3
  214. package/specs/openapi.yaml +3 -3
  215. package/specs/resources/query.js +1 -1
  216. package/src/api/controllers/application.ts +2 -1
  217. package/src/api/controllers/auth.js +0 -11
  218. package/src/api/controllers/component.js +2 -21
  219. package/src/api/controllers/datasource.js +8 -21
  220. package/src/api/controllers/deploy/index.ts +6 -1
  221. package/src/api/controllers/integration.js +4 -4
  222. package/src/api/controllers/row/external.js +1 -1
  223. package/src/api/controllers/screen.js +1 -66
  224. package/src/api/controllers/static/index.ts +1 -1
  225. package/src/api/controllers/static/templates/BudibaseApp.svelte +0 -10
  226. package/src/api/controllers/static/templates/preview.hbs +1 -5
  227. package/src/api/index.js +1 -1
  228. package/src/api/routes/application.ts +2 -13
  229. package/src/api/routes/index.ts +0 -2
  230. package/src/api/routes/public/tables.ts +1 -1
  231. package/src/api/routes/table.js +1 -1
  232. package/src/api/routes/tests/query.spec.js +25 -8
  233. package/src/api/routes/tests/user.spec.js +2 -0
  234. package/src/api/routes/utils/validators.js +1 -2
  235. package/src/app.ts +0 -14
  236. package/src/db/utils.js +0 -12
  237. package/src/definitions/openapi.ts +3 -3
  238. package/src/environment.js +0 -1
  239. package/src/integrations/airtable.ts +118 -116
  240. package/src/integrations/arangodb.ts +89 -87
  241. package/src/integrations/base/query.ts +2 -2
  242. package/src/integrations/base/sqlTable.ts +1 -3
  243. package/src/integrations/couchdb.ts +89 -83
  244. package/src/integrations/dynamodb.ts +175 -173
  245. package/src/integrations/elasticsearch.ts +122 -120
  246. package/src/integrations/firebase.ts +159 -157
  247. package/src/integrations/googlesheets.ts +338 -328
  248. package/src/integrations/index.ts +21 -64
  249. package/src/integrations/microsoftSqlServer.ts +251 -249
  250. package/src/integrations/mongodb.ts +258 -261
  251. package/src/integrations/mysql.ts +234 -229
  252. package/src/integrations/oracle.ts +380 -373
  253. package/src/integrations/postgres.ts +268 -264
  254. package/src/integrations/redis.ts +132 -128
  255. package/src/integrations/rest.ts +329 -324
  256. package/src/integrations/s3.ts +71 -68
  257. package/src/integrations/snowflake.ts +82 -80
  258. package/src/integrations/tests/{airtable.spec.ts → airtable.spec.js} +18 -21
  259. package/src/integrations/tests/{arangodb.spec.ts → arangodb.spec.js} +9 -12
  260. package/src/integrations/tests/{couchdb.spec.ts → couchdb.spec.js} +27 -33
  261. package/src/integrations/tests/{dynamodb.spec.ts → dynamodb.spec.js} +41 -45
  262. package/src/integrations/tests/{elasticsearch.spec.ts → elasticsearch.spec.js} +21 -22
  263. package/src/integrations/tests/{firebase.spec.ts → firebase.spec.js} +28 -33
  264. package/src/integrations/tests/{microsoftSqlServer.spec.ts → microsoftSqlServer.spec.js} +11 -12
  265. package/src/integrations/tests/{mongo.spec.ts → mongo.spec.js} +35 -46
  266. package/src/integrations/tests/{mysql.spec.ts → mysql.spec.js} +15 -17
  267. package/src/integrations/tests/{oracle.spec.ts → oracle.spec.js} +17 -19
  268. package/src/integrations/tests/{postgres.spec.ts → postgres.spec.js} +17 -19
  269. package/src/integrations/tests/{redis.spec.ts → redis.spec.js} +18 -27
  270. package/src/integrations/tests/{rest.spec.ts → rest.spec.js} +14 -22
  271. package/src/integrations/tests/{s3.spec.ts → s3.spec.js} +8 -10
  272. package/src/integrations/tests/{sql.spec.ts → sql.spec.js} +177 -228
  273. package/src/middleware/currentapp.js +0 -2
  274. package/src/migrations/functions/backfill/global.ts +3 -0
  275. package/src/migrations/functions/developerQuota.ts +15 -0
  276. package/src/migrations/functions/publishedAppsQuota.ts +13 -0
  277. package/src/migrations/functions/usageQuotas/syncDevelopers.ts +19 -0
  278. package/src/migrations/functions/usageQuotas/syncPublishedApps.ts +21 -0
  279. package/src/migrations/index.ts +16 -0
  280. package/src/module.d.ts +0 -2
  281. package/src/tests/utilities/TestConfiguration.js +1 -1
  282. package/src/threads/query.ts +2 -2
  283. package/src/utilities/fileSystem/index.js +0 -129
  284. package/builder/assets/index.1709d1b3.js +0 -1005
  285. package/builder/assets/index.8f621053.css +0 -6
  286. package/dist/api/controllers/plugin/github.js +0 -69
  287. package/dist/api/controllers/plugin/index.js +0 -200
  288. package/dist/api/controllers/plugin/npm.js +0 -58
  289. package/dist/api/controllers/plugin/uploaders.js +0 -11
  290. package/dist/api/controllers/plugin/utils.js +0 -26
  291. package/dist/watch.js +0 -77
  292. package/dist/websocket.js +0 -22
  293. package/src/api/controllers/plugin/file.ts +0 -15
  294. package/src/api/controllers/plugin/github.ts +0 -75
  295. package/src/api/controllers/plugin/index.ts +0 -215
  296. package/src/api/controllers/plugin/npm.ts +0 -56
  297. package/src/api/controllers/plugin/uploaders.ts +0 -4
  298. package/src/api/controllers/plugin/url.ts +0 -12
  299. package/src/api/controllers/plugin/utils.ts +0 -19
  300. package/src/api/routes/plugin.ts +0 -14
  301. package/src/watch.ts +0 -38
  302. 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.19-alpha.0",
4
+ "version": "1.3.18",
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.19-alpha.0",
81
- "@budibase/client": "1.3.19-alpha.0",
82
- "@budibase/pro": "1.3.19-alpha.0",
83
- "@budibase/string-templates": "1.3.19-alpha.0",
84
- "@budibase/types": "1.3.19-alpha.0",
80
+ "@budibase/backend-core": "^1.3.18",
81
+ "@budibase/client": "^1.3.18",
82
+ "@budibase/pro": "1.3.18",
83
+ "@budibase/string-templates": "^1.3.18",
84
+ "@budibase/types": "^1.3.18",
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
  }