@budibase/server 2.6.23 → 2.6.24-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/.dockerignore +7 -6
  2. package/Dockerfile +16 -8
  3. package/builder/assets/index.50121870.js +1869 -0
  4. package/builder/assets/index.a86e2071.css +6 -0
  5. package/builder/index.html +2 -2
  6. package/client/manifest.json +5229 -0
  7. package/dist/automation.js +32576 -0
  8. package/dist/automation.js.map +7 -0
  9. package/dist/index.js +45065 -13
  10. package/dist/index.js.map +7 -0
  11. package/dist/query.js +24462 -0
  12. package/dist/query.js.map +7 -0
  13. package/jest.config.ts +6 -3
  14. package/nodemon.json +8 -4
  15. package/package.json +35 -16
  16. package/pm2.config.js +1 -1
  17. package/scripts/build.js +48 -0
  18. package/src/api/controllers/application.ts +21 -22
  19. package/src/api/controllers/automation.ts +37 -9
  20. package/src/api/controllers/datasource.ts +114 -49
  21. package/src/api/controllers/deploy/index.ts +1 -0
  22. package/src/api/controllers/integration.ts +3 -3
  23. package/src/api/controllers/plugin/index.ts +1 -1
  24. package/src/api/controllers/row/external.ts +39 -15
  25. package/src/api/controllers/row/index.ts +18 -24
  26. package/src/api/controllers/row/internal.ts +1 -1
  27. package/src/api/controllers/row/staticFormula.ts +6 -1
  28. package/src/api/controllers/row/utils.ts +12 -0
  29. package/src/api/controllers/static/index.ts +3 -3
  30. package/src/api/controllers/table/index.ts +3 -0
  31. package/src/api/controllers/table/internal.ts +2 -6
  32. package/src/api/controllers/table/utils.ts +32 -1
  33. package/src/api/controllers/view/index.ts +5 -5
  34. package/src/api/controllers/webhook.ts +33 -9
  35. package/src/api/routes/application.ts +5 -0
  36. package/src/api/routes/automation.ts +0 -1
  37. package/src/api/routes/datasource.ts +10 -0
  38. package/src/api/routes/static.ts +3 -1
  39. package/src/api/routes/tests/{automation.spec.js → automation.spec.ts} +106 -31
  40. package/src/api/routes/tests/datasource.spec.ts +1 -1
  41. package/src/api/routes/tests/view.spec.js +4 -3
  42. package/src/api/routes/tests/{webhook.spec.js → webhook.spec.ts} +33 -11
  43. package/src/app.ts +0 -1
  44. package/src/automations/actions.ts +8 -0
  45. package/src/automations/logging/index.ts +21 -0
  46. package/src/automations/steps/bash.ts +4 -0
  47. package/src/automations/steps/collect.ts +58 -0
  48. package/src/automations/steps/createRow.ts +4 -0
  49. package/src/automations/steps/delay.ts +1 -0
  50. package/src/automations/steps/deleteRow.ts +4 -0
  51. package/src/automations/steps/discord.ts +4 -0
  52. package/src/automations/steps/executeQuery.ts +4 -0
  53. package/src/automations/steps/executeScript.ts +4 -0
  54. package/src/automations/steps/filter.ts +1 -0
  55. package/src/automations/steps/loop.ts +1 -0
  56. package/src/automations/steps/make.ts +22 -1
  57. package/src/automations/steps/openai.ts +106 -0
  58. package/src/automations/steps/outgoingWebhook.ts +4 -0
  59. package/src/automations/steps/queryRows.ts +4 -0
  60. package/src/automations/steps/sendSmtpEmail.ts +4 -0
  61. package/src/automations/steps/serverLog.ts +4 -0
  62. package/src/automations/steps/slack.ts +4 -0
  63. package/src/automations/steps/updateRow.ts +4 -0
  64. package/src/automations/steps/zapier.ts +22 -1
  65. package/src/automations/tests/make.spec.ts +54 -0
  66. package/src/automations/tests/openai.spec.ts +86 -0
  67. package/src/automations/tests/zapier.spec.ts +56 -0
  68. package/src/automations/triggers.ts +3 -2
  69. package/src/constants/index.ts +17 -16
  70. package/src/db/dynamoClient.ts +1 -1
  71. package/src/db/inMemoryView.ts +1 -0
  72. package/src/db/linkedRows/index.ts +5 -3
  73. package/src/environment.ts +3 -0
  74. package/src/integration-test/postgres.spec.ts +47 -5
  75. package/src/integrations/airtable.ts +33 -4
  76. package/src/integrations/arangodb.ts +20 -2
  77. package/src/integrations/base/sqlTable.ts +0 -1
  78. package/src/integrations/couchdb.ts +20 -4
  79. package/src/integrations/dynamodb.ts +36 -5
  80. package/src/integrations/elasticsearch.ts +18 -1
  81. package/src/integrations/firebase.ts +17 -0
  82. package/src/integrations/googlesheets.ts +66 -5
  83. package/src/integrations/index.ts +12 -7
  84. package/src/integrations/microsoftSqlServer.ts +33 -1
  85. package/src/integrations/mongodb.ts +18 -0
  86. package/src/integrations/mysql.ts +53 -26
  87. package/src/integrations/oracle.ts +38 -6
  88. package/src/integrations/postgres.ts +47 -12
  89. package/src/integrations/redis.ts +35 -4
  90. package/src/integrations/s3.ts +21 -3
  91. package/src/integrations/snowflake.ts +22 -1
  92. package/src/integrations/tests/googlesheets.spec.ts +41 -9
  93. package/src/middleware/builder.ts +26 -18
  94. package/src/migrations/functions/backfill/app/queries.ts +1 -1
  95. package/src/sdk/app/automations/index.ts +2 -0
  96. package/src/sdk/app/automations/utils.ts +7 -0
  97. package/src/sdk/app/datasources/datasources.ts +7 -1
  98. package/src/sdk/plugins/plugins.ts +1 -1
  99. package/src/startup.ts +2 -0
  100. package/src/tests/utilities/TestConfiguration.ts +4 -2
  101. package/src/tests/utilities/structures.ts +42 -0
  102. package/src/threads/automation.ts +91 -23
  103. package/src/threads/index.ts +9 -3
  104. package/src/threads/utils.ts +2 -0
  105. package/src/utilities/fileSystem/app.ts +14 -4
  106. package/src/utilities/fileSystem/clientLibrary.ts +8 -3
  107. package/src/utilities/fileSystem/filesystem.ts +3 -1
  108. package/src/utilities/redis.ts +25 -3
  109. package/src/utilities/rowProcessor/index.ts +4 -1
  110. package/src/utilities/rowProcessor/map.ts +1 -1
  111. package/src/websockets/builder.ts +95 -0
  112. package/src/websockets/client.ts +2 -2
  113. package/src/websockets/grid.ts +44 -44
  114. package/src/websockets/index.ts +13 -6
  115. package/src/websockets/websocket.ts +211 -7
  116. package/tsconfig.build.json +9 -1
  117. package/tsconfig.json +1 -14
  118. package/builder/assets/index.86c992bf.css +0 -6
  119. package/builder/assets/index.c16c35ca.js +0 -1794
  120. package/dist/api/controllers/analytics.js +0 -46
  121. package/dist/api/controllers/apikeys.js +0 -72
  122. package/dist/api/controllers/application.js +0 -574
  123. package/dist/api/controllers/auth.js +0 -80
  124. package/dist/api/controllers/automation.js +0 -303
  125. package/dist/api/controllers/backup.js +0 -37
  126. package/dist/api/controllers/component.js +0 -59
  127. package/dist/api/controllers/datasource.js +0 -306
  128. package/dist/api/controllers/deploy/Deployment.js +0 -53
  129. package/dist/api/controllers/deploy/index.js +0 -198
  130. package/dist/api/controllers/dev.js +0 -146
  131. package/dist/api/controllers/integration.js +0 -28
  132. package/dist/api/controllers/layout.js +0 -49
  133. package/dist/api/controllers/metadata.js +0 -63
  134. package/dist/api/controllers/migrations.js +0 -29
  135. package/dist/api/controllers/ops.js +0 -40
  136. package/dist/api/controllers/permission.js +0 -162
  137. package/dist/api/controllers/plugin/file.js +0 -24
  138. package/dist/api/controllers/plugin/github.js +0 -69
  139. package/dist/api/controllers/plugin/index.js +0 -112
  140. package/dist/api/controllers/plugin/npm.js +0 -58
  141. package/dist/api/controllers/plugin/uploaders.js +0 -11
  142. package/dist/api/controllers/plugin/url.js +0 -24
  143. package/dist/api/controllers/plugin/utils.js +0 -27
  144. package/dist/api/controllers/public/applications.js +0 -146
  145. package/dist/api/controllers/public/mapping/applications.js +0 -29
  146. package/dist/api/controllers/public/mapping/index.js +0 -11
  147. package/dist/api/controllers/public/mapping/queries.js +0 -36
  148. package/dist/api/controllers/public/mapping/rows.js +0 -24
  149. package/dist/api/controllers/public/mapping/tables.js +0 -23
  150. package/dist/api/controllers/public/mapping/types.js +0 -2
  151. package/dist/api/controllers/public/mapping/users.js +0 -29
  152. package/dist/api/controllers/public/metrics.js +0 -113
  153. package/dist/api/controllers/public/queries.js +0 -58
  154. package/dist/api/controllers/public/rows.js +0 -120
  155. package/dist/api/controllers/public/tables.js +0 -95
  156. package/dist/api/controllers/public/users.js +0 -93
  157. package/dist/api/controllers/public/utils.js +0 -56
  158. package/dist/api/controllers/query/import/index.js +0 -87
  159. package/dist/api/controllers/query/import/sources/base/index.js +0 -75
  160. package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
  161. package/dist/api/controllers/query/import/sources/curl.js +0 -99
  162. package/dist/api/controllers/query/import/sources/openapi2.js +0 -145
  163. package/dist/api/controllers/query/import/sources/openapi3.js +0 -177
  164. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  165. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  166. package/dist/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
  167. package/dist/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
  168. package/dist/api/controllers/query/index.js +0 -299
  169. package/dist/api/controllers/query/validation.js +0 -53
  170. package/dist/api/controllers/role.js +0 -109
  171. package/dist/api/controllers/routing.js +0 -105
  172. package/dist/api/controllers/row/ExternalRequest.js +0 -683
  173. package/dist/api/controllers/row/external.js +0 -339
  174. package/dist/api/controllers/row/index.js +0 -203
  175. package/dist/api/controllers/row/internal.js +0 -509
  176. package/dist/api/controllers/row/internalSearch.js +0 -28
  177. package/dist/api/controllers/row/staticFormula.js +0 -165
  178. package/dist/api/controllers/row/utils.js +0 -183
  179. package/dist/api/controllers/screen.js +0 -110
  180. package/dist/api/controllers/script.js +0 -30
  181. package/dist/api/controllers/static/index.js +0 -268
  182. package/dist/api/controllers/table/bulkFormula.js +0 -173
  183. package/dist/api/controllers/table/external.js +0 -279
  184. package/dist/api/controllers/table/index.js +0 -179
  185. package/dist/api/controllers/table/internal.js +0 -197
  186. package/dist/api/controllers/table/utils.js +0 -379
  187. package/dist/api/controllers/templates.js +0 -56
  188. package/dist/api/controllers/user.js +0 -124
  189. package/dist/api/controllers/view/exporters.js +0 -46
  190. package/dist/api/controllers/view/index.js +0 -193
  191. package/dist/api/controllers/view/utils.js +0 -177
  192. package/dist/api/controllers/view/viewBuilder.js +0 -158
  193. package/dist/api/controllers/webhook.js +0 -134
  194. package/dist/api/index.js +0 -55
  195. package/dist/api/routes/analytics.js +0 -34
  196. package/dist/api/routes/apikeys.js +0 -37
  197. package/dist/api/routes/application.js +0 -48
  198. package/dist/api/routes/auth.js +0 -33
  199. package/dist/api/routes/automation.js +0 -50
  200. package/dist/api/routes/backup.js +0 -35
  201. package/dist/api/routes/component.js +0 -35
  202. package/dist/api/routes/datasource.js +0 -43
  203. package/dist/api/routes/deploy.js +0 -37
  204. package/dist/api/routes/dev.js +0 -49
  205. package/dist/api/routes/index.js +0 -75
  206. package/dist/api/routes/integration.js +0 -37
  207. package/dist/api/routes/layout.js +0 -37
  208. package/dist/api/routes/metadata.js +0 -40
  209. package/dist/api/routes/migrations.js +0 -36
  210. package/dist/api/routes/ops.js +0 -52
  211. package/dist/api/routes/permission.js +0 -44
  212. package/dist/api/routes/plugin.js +0 -39
  213. package/dist/api/routes/public/applications.js +0 -174
  214. package/dist/api/routes/public/index.js +0 -140
  215. package/dist/api/routes/public/metrics.js +0 -30
  216. package/dist/api/routes/public/middleware/mapper.js +0 -97
  217. package/dist/api/routes/public/queries.js +0 -72
  218. package/dist/api/routes/public/rows.js +0 -158
  219. package/dist/api/routes/public/tables.js +0 -152
  220. package/dist/api/routes/public/users.js +0 -135
  221. package/dist/api/routes/public/utils/Endpoint.js +0 -36
  222. package/dist/api/routes/query.js +0 -47
  223. package/dist/api/routes/role.js +0 -40
  224. package/dist/api/routes/routing.js +0 -39
  225. package/dist/api/routes/row.js +0 -239
  226. package/dist/api/routes/screen.js +0 -39
  227. package/dist/api/routes/script.js +0 -35
  228. package/dist/api/routes/static.js +0 -80
  229. package/dist/api/routes/table.js +0 -163
  230. package/dist/api/routes/templates.js +0 -37
  231. package/dist/api/routes/user.js +0 -43
  232. package/dist/api/routes/utils/validators.js +0 -238
  233. package/dist/api/routes/view.js +0 -42
  234. package/dist/api/routes/webhook.js +0 -43
  235. package/dist/app.js +0 -132
  236. package/dist/automations/actions.js +0 -137
  237. package/dist/automations/automationUtils.js +0 -173
  238. package/dist/automations/bullboard.js +0 -71
  239. package/dist/automations/index.js +0 -43
  240. package/dist/automations/logging/index.js +0 -53
  241. package/dist/automations/steps/bash.js +0 -111
  242. package/dist/automations/steps/createRow.js +0 -108
  243. package/dist/automations/steps/delay.js +0 -53
  244. package/dist/automations/steps/deleteRow.js +0 -96
  245. package/dist/automations/steps/discord.js +0 -116
  246. package/dist/automations/steps/executeQuery.js +0 -134
  247. package/dist/automations/steps/executeScript.js +0 -106
  248. package/dist/automations/steps/filter.js +0 -112
  249. package/dist/automations/steps/loop.js +0 -54
  250. package/dist/automations/steps/make.js +0 -120
  251. package/dist/automations/steps/outgoingWebhook.js +0 -166
  252. package/dist/automations/steps/queryRows.js +0 -220
  253. package/dist/automations/steps/sendSmtpEmail.js +0 -115
  254. package/dist/automations/steps/serverLog.js +0 -65
  255. package/dist/automations/steps/slack.js +0 -98
  256. package/dist/automations/steps/updateRow.js +0 -144
  257. package/dist/automations/steps/utils.js +0 -56
  258. package/dist/automations/steps/zapier.js +0 -117
  259. package/dist/automations/triggerInfo/app.js +0 -36
  260. package/dist/automations/triggerInfo/cron.js +0 -35
  261. package/dist/automations/triggerInfo/index.js +0 -40
  262. package/dist/automations/triggerInfo/rowDeleted.js +0 -36
  263. package/dist/automations/triggerInfo/rowSaved.js +0 -44
  264. package/dist/automations/triggerInfo/rowUpdated.js +0 -44
  265. package/dist/automations/triggerInfo/webhook.js +0 -40
  266. package/dist/automations/triggers.js +0 -181
  267. package/dist/automations/utils.js +0 -275
  268. package/dist/constants/definitions.js +0 -2
  269. package/dist/constants/index.js +0 -181
  270. package/dist/constants/layouts.js +0 -148
  271. package/dist/constants/screens.js +0 -51
  272. package/dist/db/defaultData/datasource_bb_default.js +0 -574
  273. package/dist/db/defaultData/employeeImport.js +0 -155
  274. package/dist/db/defaultData/expensesImport.js +0 -117
  275. package/dist/db/defaultData/inventoryImport.js +0 -109
  276. package/dist/db/defaultData/jobsImport.js +0 -152
  277. package/dist/db/dynamoClient.js +0 -124
  278. package/dist/db/inMemoryView.js +0 -62
  279. package/dist/db/index.js +0 -43
  280. package/dist/db/linkedRows/LinkController.js +0 -392
  281. package/dist/db/linkedRows/LinkDocument.js +0 -33
  282. package/dist/db/linkedRows/index.js +0 -206
  283. package/dist/db/linkedRows/linkUtils.js +0 -131
  284. package/dist/db/newid.js +0 -7
  285. package/dist/db/utils.js +0 -248
  286. package/dist/db/views/staticViews.js +0 -144
  287. package/dist/ddApm.js +0 -11
  288. package/dist/definitions/automations.js +0 -8
  289. package/dist/definitions/common.js +0 -2
  290. package/dist/definitions/datasource.js +0 -7
  291. package/dist/definitions/openapi.js +0 -6
  292. package/dist/environment.js +0 -109
  293. package/dist/events/AutomationEmitter.js +0 -53
  294. package/dist/events/BudibaseEmitter.js +0 -25
  295. package/dist/events/docUpdates/index.js +0 -17
  296. package/dist/events/docUpdates/processors.js +0 -18
  297. package/dist/events/docUpdates/syncUsers.js +0 -49
  298. package/dist/events/index.js +0 -11
  299. package/dist/events/utils.js +0 -43
  300. package/dist/integrations/airtable.js +0 -147
  301. package/dist/integrations/arangodb.js +0 -103
  302. package/dist/integrations/base/query.js +0 -32
  303. package/dist/integrations/base/sql.js +0 -600
  304. package/dist/integrations/base/sqlTable.js +0 -167
  305. package/dist/integrations/base/types.js +0 -2
  306. package/dist/integrations/couchdb.js +0 -125
  307. package/dist/integrations/dynamodb.js +0 -194
  308. package/dist/integrations/elasticsearch.js +0 -186
  309. package/dist/integrations/firebase.js +0 -174
  310. package/dist/integrations/googlesheets.js +0 -455
  311. package/dist/integrations/index.js +0 -135
  312. package/dist/integrations/microsoftSqlServer.js +0 -273
  313. package/dist/integrations/mongodb.js +0 -614
  314. package/dist/integrations/mysql.js +0 -256
  315. package/dist/integrations/oracle.js +0 -375
  316. package/dist/integrations/postgres.js +0 -300
  317. package/dist/integrations/queries/sql.js +0 -84
  318. package/dist/integrations/redis.js +0 -168
  319. package/dist/integrations/rest.js +0 -400
  320. package/dist/integrations/s3.js +0 -237
  321. package/dist/integrations/snowflake.js +0 -102
  322. package/dist/integrations/utils.js +0 -295
  323. package/dist/middleware/appInfo.js +0 -22
  324. package/dist/middleware/authorized.js +0 -112
  325. package/dist/middleware/builder.js +0 -93
  326. package/dist/middleware/currentapp.js +0 -103
  327. package/dist/middleware/joi-validator.js +0 -43
  328. package/dist/middleware/publicApi.js +0 -25
  329. package/dist/middleware/resourceId.js +0 -59
  330. package/dist/middleware/selfhost.js +0 -24
  331. package/dist/middleware/utils.js +0 -8
  332. package/dist/migrations/functions/appUrls.js +0 -42
  333. package/dist/migrations/functions/backfill/app/automations.js +0 -31
  334. package/dist/migrations/functions/backfill/app/datasources.js +0 -28
  335. package/dist/migrations/functions/backfill/app/layouts.js +0 -33
  336. package/dist/migrations/functions/backfill/app/queries.js +0 -50
  337. package/dist/migrations/functions/backfill/app/roles.js +0 -28
  338. package/dist/migrations/functions/backfill/app/screens.js +0 -28
  339. package/dist/migrations/functions/backfill/app/tables.js +0 -37
  340. package/dist/migrations/functions/backfill/app.js +0 -176
  341. package/dist/migrations/functions/backfill/global/configs.js +0 -67
  342. package/dist/migrations/functions/backfill/global/quotas.js +0 -60
  343. package/dist/migrations/functions/backfill/global/users.js +0 -50
  344. package/dist/migrations/functions/backfill/global.js +0 -205
  345. package/dist/migrations/functions/backfill/index.js +0 -32
  346. package/dist/migrations/functions/backfill/installation.js +0 -80
  347. package/dist/migrations/functions/syncQuotas.js +0 -52
  348. package/dist/migrations/functions/tableSettings.js +0 -130
  349. package/dist/migrations/functions/usageQuotas/index.js +0 -16
  350. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -24
  351. package/dist/migrations/functions/usageQuotas/syncPlugins.js +0 -23
  352. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  353. package/dist/migrations/functions/usageQuotas/syncUsers.js +0 -21
  354. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  355. package/dist/migrations/index.js +0 -111
  356. package/dist/migrations/tests/helpers.js +0 -72
  357. package/dist/migrations/tests/structures.js +0 -37
  358. package/dist/sdk/app/applications/index.js +0 -28
  359. package/dist/sdk/app/applications/sync.js +0 -164
  360. package/dist/sdk/app/applications/utils.js +0 -21
  361. package/dist/sdk/app/automations/index.js +0 -29
  362. package/dist/sdk/app/automations/webhook.js +0 -54
  363. package/dist/sdk/app/backups/constants.js +0 -6
  364. package/dist/sdk/app/backups/exports.js +0 -160
  365. package/dist/sdk/app/backups/imports.js +0 -170
  366. package/dist/sdk/app/backups/index.js +0 -29
  367. package/dist/sdk/app/backups/statistics.js +0 -73
  368. package/dist/sdk/app/datasources/datasources.js +0 -166
  369. package/dist/sdk/app/datasources/index.js +0 -27
  370. package/dist/sdk/app/queries/index.js +0 -27
  371. package/dist/sdk/app/queries/queries.js +0 -60
  372. package/dist/sdk/app/rows/attachments.js +0 -61
  373. package/dist/sdk/app/rows/index.js +0 -28
  374. package/dist/sdk/app/rows/rows.js +0 -30
  375. package/dist/sdk/app/tables/index.js +0 -65
  376. package/dist/sdk/index.js +0 -27
  377. package/dist/sdk/plugins/index.js +0 -27
  378. package/dist/sdk/plugins/plugins.js +0 -53
  379. package/dist/sdk/users/index.js +0 -27
  380. package/dist/sdk/users/utils.js +0 -94
  381. package/dist/sdk/utils/index.js +0 -29
  382. package/dist/startup.js +0 -158
  383. package/dist/threads/automation.js +0 -450
  384. package/dist/threads/definitions.js +0 -2
  385. package/dist/threads/index.js +0 -140
  386. package/dist/threads/query.js +0 -265
  387. package/dist/threads/utils.js +0 -120
  388. package/dist/tsconfig.build.tsbuildinfo +0 -1
  389. package/dist/utilities/appDirectoryTemplate/package.json +0 -10
  390. package/dist/utilities/budibaseDir.js +0 -5
  391. package/dist/utilities/centralPath.js +0 -27
  392. package/dist/utilities/csv.js +0 -33
  393. package/dist/utilities/fileSystem/app.js +0 -88
  394. package/dist/utilities/fileSystem/clientLibrary.js +0 -138
  395. package/dist/utilities/fileSystem/filesystem.js +0 -180
  396. package/dist/utilities/fileSystem/index.js +0 -21
  397. package/dist/utilities/fileSystem/plugin.js +0 -76
  398. package/dist/utilities/fileSystem/processor.js +0 -34
  399. package/dist/utilities/fileSystem/template.js +0 -47
  400. package/dist/utilities/global.js +0 -146
  401. package/dist/utilities/index.js +0 -143
  402. package/dist/utilities/redis.js +0 -117
  403. package/dist/utilities/retry.js +0 -30
  404. package/dist/utilities/routing/index.js +0 -39
  405. package/dist/utilities/rowProcessor/index.js +0 -282
  406. package/dist/utilities/rowProcessor/map.js +0 -116
  407. package/dist/utilities/rowProcessor/utils.js +0 -87
  408. package/dist/utilities/schema.js +0 -112
  409. package/dist/utilities/scriptRunner.js +0 -26
  410. package/dist/utilities/security.js +0 -57
  411. package/dist/utilities/statusCodes.js +0 -9
  412. package/dist/utilities/usageQuota/rows.js +0 -88
  413. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  414. package/dist/utilities/users.js +0 -57
  415. package/dist/utilities/workerRequests.js +0 -171
  416. package/dist/watch.js +0 -53
  417. package/dist/websockets/client.js +0 -14
  418. package/dist/websockets/grid.js +0 -60
  419. package/dist/websockets/index.js +0 -17
  420. package/dist/websockets/websocket.js +0 -78
  421. package/src/automations/tests/zapier.spec.js +0 -27
  422. /package/dist/{api/controllers/static/templates/BudibaseApp.svelte → BudibaseApp-Y5NZEDTC.svelte} +0 -0
  423. /package/dist/{api/controllers/static/templates/app.hbs → app.hbs} +0 -0
  424. /package/dist/{api/controllers/static/templates/preview.hbs → preview.hbs} +0 -0
@@ -1,165 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.finaliseRow = exports.updateAllFormulasInTable = exports.updateRelatedFormula = void 0;
13
- const utils_1 = require("../../../db/utils");
14
- const rowProcessor_1 = require("../../../utilities/rowProcessor");
15
- const constants_1 = require("../../../constants");
16
- const backend_core_1 = require("@budibase/backend-core");
17
- const { isEqual } = require("lodash");
18
- const { cloneDeep } = require("lodash/fp");
19
- /**
20
- * This function runs through a list of enriched rows, looks at the rows which
21
- * are related and then checks if they need the state of their formulas
22
- * updated.
23
- * NOTE: this will only for affect static formulas.
24
- */
25
- function updateRelatedFormula(table, enrichedRows) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- const db = backend_core_1.context.getAppDB();
28
- // no formula to update, we're done
29
- if (!table.relatedFormula) {
30
- return;
31
- }
32
- let promises = [];
33
- for (let enrichedRow of Array.isArray(enrichedRows)
34
- ? enrichedRows
35
- : [enrichedRows]) {
36
- // the related rows by tableId
37
- let relatedRows = {};
38
- for (let [key, field] of Object.entries(enrichedRow)) {
39
- const columnDefinition = table.schema[key];
40
- if (columnDefinition && columnDefinition.type === constants_1.FieldTypes.LINK) {
41
- const relatedTableId = columnDefinition.tableId;
42
- if (!relatedRows[relatedTableId]) {
43
- relatedRows[relatedTableId] = [];
44
- }
45
- // filter down to the rows which are not already included in related
46
- const currentIds = relatedRows[relatedTableId].map(row => row._id);
47
- const uniqueRelatedRows = field.filter((row) => !currentIds.includes(row._id));
48
- relatedRows[relatedTableId] =
49
- relatedRows[relatedTableId].concat(uniqueRelatedRows);
50
- }
51
- }
52
- for (let tableId of table.relatedFormula) {
53
- let relatedTable;
54
- try {
55
- // no rows to update, skip
56
- if (!relatedRows[tableId] || relatedRows[tableId].length === 0) {
57
- continue;
58
- }
59
- relatedTable = yield db.get(tableId);
60
- }
61
- catch (err) {
62
- // no error scenario, table doesn't seem to exist anymore, ignore
63
- }
64
- for (let column of Object.values(relatedTable.schema)) {
65
- // needs updated in related rows
66
- if (column.type === constants_1.FieldTypes.FORMULA &&
67
- column.formulaType === constants_1.FormulaTypes.STATIC) {
68
- // re-enrich rows for all the related, don't update the related formula for them
69
- promises = promises.concat(relatedRows[tableId].map(related => finaliseRow(relatedTable, related, {
70
- updateFormula: false,
71
- })));
72
- break;
73
- }
74
- }
75
- }
76
- }
77
- yield Promise.all(promises);
78
- });
79
- }
80
- exports.updateRelatedFormula = updateRelatedFormula;
81
- function updateAllFormulasInTable(table) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- const db = backend_core_1.context.getAppDB();
84
- // start by getting the raw rows (which will be written back to DB after update)
85
- let rows = (yield db.allDocs((0, utils_1.getRowParams)(table._id, null, {
86
- include_docs: true,
87
- }))).rows.map(row => row.doc);
88
- // now enrich the rows, note the clone so that we have the base state of the
89
- // rows so that we don't write any of the enriched information back
90
- let enrichedRows = yield (0, rowProcessor_1.outputProcessing)(table, cloneDeep(rows), {
91
- squash: false,
92
- });
93
- const updatedRows = [];
94
- for (let row of rows) {
95
- // find the enriched row, if found process the formulas
96
- const enrichedRow = enrichedRows.find((enriched) => enriched._id === row._id);
97
- if (enrichedRow) {
98
- const processed = (0, rowProcessor_1.processFormulas)(table, cloneDeep(row), {
99
- dynamic: false,
100
- contextRows: enrichedRow,
101
- });
102
- // values have changed, need to add to bulk docs to update
103
- if (!isEqual(processed, row)) {
104
- updatedRows.push(processed);
105
- }
106
- }
107
- }
108
- yield db.bulkDocs(updatedRows);
109
- });
110
- }
111
- exports.updateAllFormulasInTable = updateAllFormulasInTable;
112
- /**
113
- * This function runs at the end of the save/patch functions of the row controller, all this
114
- * really does is enrich the row, handle any static formula processing, then return the enriched
115
- * row. The reason we need to return the enriched row is that the automation row created trigger
116
- * expects the row to be totally enriched/contain all relationships.
117
- */
118
- function finaliseRow(table, row, { oldTable, updateFormula } = {
119
- updateFormula: true,
120
- }) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- const db = backend_core_1.context.getAppDB();
123
- row.type = "row";
124
- // process the row before return, to include relationships
125
- let enrichedRow = (yield (0, rowProcessor_1.outputProcessing)(table, cloneDeep(row), {
126
- squash: false,
127
- }));
128
- // use enriched row to generate formulas for saving, specifically only use as context
129
- row = (0, rowProcessor_1.processFormulas)(table, row, {
130
- dynamic: false,
131
- contextRows: enrichedRow,
132
- });
133
- // don't worry about rev, tables handle rev/lastID updates
134
- // if another row has been written since processing this will
135
- // handle the auto ID clash
136
- if (oldTable && !isEqual(oldTable, table)) {
137
- try {
138
- yield db.put(table);
139
- }
140
- catch (err) {
141
- if (err.status === 409) {
142
- const updatedTable = yield db.get(table._id);
143
- let response = (0, rowProcessor_1.processAutoColumn)(null, updatedTable, row, {
144
- reprocessing: true,
145
- });
146
- yield db.put(response.table);
147
- row = response.row;
148
- }
149
- else {
150
- throw err;
151
- }
152
- }
153
- }
154
- const response = yield db.put(row);
155
- // for response, calculate the formulas for the enriched row
156
- enrichedRow._rev = response.rev;
157
- enrichedRow = yield (0, rowProcessor_1.processFormulas)(table, enrichedRow, { dynamic: false });
158
- // this updates the related formulas in other rows based on the relations to this row
159
- if (updateFormula) {
160
- yield updateRelatedFormula(table, enrichedRow);
161
- }
162
- return { row: enrichedRow, table };
163
- });
164
- }
165
- exports.finaliseRow = finaliseRow;
@@ -1,183 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
35
- return (mod && mod.__esModule) ? mod : { "default": mod };
36
- };
37
- Object.defineProperty(exports, "__esModule", { value: true });
38
- exports.cleanExportRows = exports.validate = exports.findRow = exports.getDatasourceAndQuery = void 0;
39
- const utils_1 = require("../../../db/utils");
40
- const userController = __importStar(require("../user"));
41
- const constants_1 = require("../../../constants");
42
- const backend_core_1 = require("@budibase/backend-core");
43
- const query_1 = require("../../../integrations/base/query");
44
- const exporters_1 = require("../view/exporters");
45
- const sdk_1 = __importDefault(require("../../../sdk"));
46
- const validateJs = require("validate.js");
47
- const { cloneDeep } = require("lodash/fp");
48
- validateJs.extend(validateJs.validators.datetime, {
49
- parse: function (value) {
50
- return new Date(value).getTime();
51
- },
52
- // Input is a unix timestamp
53
- format: function (value) {
54
- return new Date(value).toISOString();
55
- },
56
- });
57
- function getDatasourceAndQuery(json) {
58
- return __awaiter(this, void 0, void 0, function* () {
59
- const datasourceId = json.endpoint.datasourceId;
60
- const datasource = yield sdk_1.default.datasources.get(datasourceId);
61
- return (0, query_1.makeExternalQuery)(datasource, json);
62
- });
63
- }
64
- exports.getDatasourceAndQuery = getDatasourceAndQuery;
65
- function findRow(ctx, tableId, rowId) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- const db = backend_core_1.context.getAppDB();
68
- let row;
69
- // TODO remove special user case in future
70
- if (tableId === utils_1.InternalTables.USER_METADATA) {
71
- ctx.params = {
72
- id: rowId,
73
- };
74
- yield userController.findMetadata(ctx);
75
- row = ctx.body;
76
- }
77
- else {
78
- row = yield db.get(rowId);
79
- }
80
- if (row.tableId !== tableId) {
81
- throw "Supplied tableId does not match the rows tableId";
82
- }
83
- return row;
84
- });
85
- }
86
- exports.findRow = findRow;
87
- function validate({ tableId, row, table, }) {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- let fetchedTable;
90
- if (!table) {
91
- fetchedTable = yield sdk_1.default.tables.getTable(tableId);
92
- }
93
- else {
94
- fetchedTable = table;
95
- }
96
- const errors = {};
97
- for (let fieldName of Object.keys(fetchedTable.schema)) {
98
- const column = fetchedTable.schema[fieldName];
99
- const constraints = cloneDeep(column.constraints);
100
- const type = column.type;
101
- // formulas shouldn't validated, data will be deleted anyway
102
- if (type === constants_1.FieldTypes.FORMULA || column.autocolumn) {
103
- continue;
104
- }
105
- // special case for options, need to always allow unselected (empty)
106
- if (type === constants_1.FieldTypes.OPTIONS && constraints.inclusion) {
107
- constraints.inclusion.push(null, "");
108
- }
109
- let res;
110
- // Validate.js doesn't seem to handle array
111
- if (type === constants_1.FieldTypes.ARRAY && row[fieldName]) {
112
- if (row[fieldName].length) {
113
- if (!Array.isArray(row[fieldName])) {
114
- row[fieldName] = row[fieldName].split(",");
115
- }
116
- row[fieldName].map((val) => {
117
- if (!constraints.inclusion.includes(val) &&
118
- constraints.inclusion.length !== 0) {
119
- errors[fieldName] = "Field not in list";
120
- }
121
- });
122
- }
123
- else if (constraints.presence && row[fieldName].length === 0) {
124
- // non required MultiSelect creates an empty array, which should not throw errors
125
- errors[fieldName] = [`${fieldName} is required`];
126
- }
127
- }
128
- else if ((type === constants_1.FieldTypes.ATTACHMENT || type === constants_1.FieldTypes.JSON) &&
129
- typeof row[fieldName] === "string") {
130
- // this should only happen if there is an error
131
- try {
132
- const json = JSON.parse(row[fieldName]);
133
- if (type === constants_1.FieldTypes.ATTACHMENT) {
134
- if (Array.isArray(json)) {
135
- row[fieldName] = json;
136
- }
137
- else {
138
- errors[fieldName] = [`Must be an array`];
139
- }
140
- }
141
- }
142
- catch (err) {
143
- errors[fieldName] = [`Contains invalid JSON`];
144
- }
145
- }
146
- else {
147
- res = validateJs.single(row[fieldName], constraints);
148
- }
149
- if (res)
150
- errors[fieldName] = res;
151
- }
152
- return { valid: Object.keys(errors).length === 0, errors };
153
- });
154
- }
155
- exports.validate = validate;
156
- function cleanExportRows(rows, schema, format, columns) {
157
- let cleanRows = [...rows];
158
- const relationships = Object.entries(schema)
159
- .filter((entry) => entry[1].type === constants_1.FieldTypes.LINK)
160
- .map(entry => entry[0]);
161
- relationships.forEach(column => {
162
- cleanRows.forEach(row => {
163
- delete row[column];
164
- });
165
- delete schema[column];
166
- });
167
- if (format === exporters_1.Format.CSV) {
168
- // Intended to append empty values in export
169
- const schemaKeys = Object.keys(schema);
170
- for (let key of schemaKeys) {
171
- if ((columns === null || columns === void 0 ? void 0 : columns.length) && columns.indexOf(key) > 0) {
172
- continue;
173
- }
174
- for (let row of cleanRows) {
175
- if (row[key] == null) {
176
- row[key] = undefined;
177
- }
178
- }
179
- }
180
- }
181
- return cleanRows;
182
- }
183
- exports.cleanExportRows = cleanExportRows;
@@ -1,110 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.destroy = exports.save = exports.fetch = void 0;
13
- const utils_1 = require("../../db/utils");
14
- const backend_core_1 = require("@budibase/backend-core");
15
- const application_1 = require("./application");
16
- function fetch(ctx) {
17
- var _a, _b;
18
- return __awaiter(this, void 0, void 0, function* () {
19
- const db = backend_core_1.context.getAppDB();
20
- const screens = (yield db.allDocs((0, utils_1.getScreenParams)(null, {
21
- include_docs: true,
22
- }))).rows.map((el) => el.doc);
23
- const roleId = (_b = (_a = ctx.user) === null || _a === void 0 ? void 0 : _a.role) === null || _b === void 0 ? void 0 : _b._id;
24
- if (!roleId) {
25
- ctx.throw("Unable to retrieve users role ID.");
26
- }
27
- ctx.body = yield new backend_core_1.roles.AccessController().checkScreensAccess(screens, roleId);
28
- });
29
- }
30
- exports.fetch = fetch;
31
- function save(ctx) {
32
- return __awaiter(this, void 0, void 0, function* () {
33
- const db = backend_core_1.context.getAppDB();
34
- let screen = ctx.request.body;
35
- let eventFn;
36
- if (!screen._id) {
37
- screen._id = (0, utils_1.generateScreenID)();
38
- eventFn = backend_core_1.events.screen.created;
39
- }
40
- const response = yield db.put(screen);
41
- // Find any custom components being used
42
- let pluginNames = [];
43
- let pluginAdded = false;
44
- findPlugins(screen.props, pluginNames);
45
- if (pluginNames.length) {
46
- const globalDB = backend_core_1.tenancy.getGlobalDB();
47
- const pluginsResponse = yield globalDB.allDocs(backend_core_1.db.getPluginParams(null, {
48
- include_docs: true,
49
- }));
50
- const requiredPlugins = pluginsResponse.rows
51
- .map((row) => row.doc)
52
- .filter((plugin) => {
53
- return (plugin.schema.type === "component" &&
54
- pluginNames.includes(`plugin/${plugin.name}`));
55
- });
56
- // Update the app metadata
57
- const application = yield db.get(utils_1.DocumentType.APP_METADATA);
58
- let usedPlugins = application.usedPlugins || [];
59
- requiredPlugins.forEach((plugin) => {
60
- if (!usedPlugins.find((x) => x._id === plugin._id)) {
61
- pluginAdded = true;
62
- usedPlugins.push({
63
- _id: plugin._id,
64
- name: plugin.name,
65
- version: plugin.version,
66
- jsUrl: plugin.jsUrl,
67
- hash: plugin.hash,
68
- });
69
- }
70
- });
71
- if (pluginAdded) {
72
- yield (0, application_1.updateAppPackage)({ usedPlugins }, ctx.appId);
73
- }
74
- }
75
- if (eventFn) {
76
- yield eventFn(screen);
77
- }
78
- ctx.message = `Screen ${screen.name} saved.`;
79
- ctx.body = Object.assign(Object.assign({}, screen), { _id: response.id, _rev: response.rev, pluginAdded });
80
- });
81
- }
82
- exports.save = save;
83
- function destroy(ctx) {
84
- return __awaiter(this, void 0, void 0, function* () {
85
- const db = backend_core_1.context.getAppDB();
86
- const id = ctx.params.screenId;
87
- const screen = yield db.get(id);
88
- yield db.remove(id, ctx.params.screenRev);
89
- yield backend_core_1.events.screen.deleted(screen);
90
- ctx.body = {
91
- message: "Screen deleted successfully",
92
- };
93
- ctx.status = 200;
94
- });
95
- }
96
- exports.destroy = destroy;
97
- function findPlugins(component, foundPlugins) {
98
- if (!component) {
99
- return;
100
- }
101
- if (component._component.startsWith("plugin")) {
102
- if (!foundPlugins.includes(component._component)) {
103
- foundPlugins.push(component._component);
104
- }
105
- }
106
- if (!component._children || !component._children.length) {
107
- return;
108
- }
109
- component._children.forEach(child => findPlugins(child, foundPlugins));
110
- }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.save = exports.execute = void 0;
16
- const scriptRunner_1 = __importDefault(require("../../utilities/scriptRunner"));
17
- function execute(ctx) {
18
- return __awaiter(this, void 0, void 0, function* () {
19
- const { script, context } = ctx.request.body;
20
- const runner = new scriptRunner_1.default(script, context);
21
- ctx.body = runner.execute();
22
- });
23
- }
24
- exports.execute = execute;
25
- function save(ctx) {
26
- return __awaiter(this, void 0, void 0, function* () {
27
- ctx.throw(501, "Not currently implemented");
28
- });
29
- }
30
- exports.save = save;