@budibase/server 2.6.19-alpha.3 → 2.6.19-alpha.30

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 (401) hide show
  1. package/.dockerignore +7 -6
  2. package/Dockerfile +16 -8
  3. package/builder/assets/{index.71388c79.js → index.3dd3d237.js} +435 -428
  4. package/builder/assets/{index.07382a47.css → index.8469b14c.css} +2 -2
  5. package/builder/index.html +2 -2
  6. package/client/manifest.json +5229 -0
  7. package/dist/automation.js +32392 -0
  8. package/dist/automation.js.map +7 -0
  9. package/dist/index.js +44698 -13
  10. package/dist/index.js.map +7 -0
  11. package/dist/query.js +24363 -0
  12. package/dist/query.js.map +7 -0
  13. package/jest.config.ts +3 -0
  14. package/nodemon.json +1 -1
  15. package/package.json +31 -13
  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 +20 -0
  21. package/src/api/controllers/row/index.ts +15 -22
  22. package/src/api/controllers/row/internal.ts +1 -1
  23. package/src/api/controllers/row/utils.ts +12 -0
  24. package/src/api/controllers/static/index.ts +3 -3
  25. package/src/api/controllers/table/index.ts +3 -0
  26. package/src/api/controllers/table/internal.ts +2 -6
  27. package/src/api/controllers/table/utils.ts +32 -1
  28. package/src/api/controllers/view/index.ts +5 -5
  29. package/src/api/controllers/webhook.ts +33 -9
  30. package/src/api/routes/application.ts +5 -0
  31. package/src/api/routes/automation.ts +0 -1
  32. package/src/api/routes/datasource.ts +5 -0
  33. package/src/api/routes/static.ts +3 -1
  34. package/src/api/routes/tests/{automation.spec.js → automation.spec.ts} +106 -31
  35. package/src/api/routes/tests/datasource.spec.ts +1 -1
  36. package/src/api/routes/tests/{webhook.spec.js → webhook.spec.ts} +33 -11
  37. package/src/app.ts +0 -1
  38. package/src/automations/actions.ts +8 -0
  39. package/src/automations/steps/bash.ts +4 -0
  40. package/src/automations/steps/collect.ts +58 -0
  41. package/src/automations/steps/createRow.ts +4 -0
  42. package/src/automations/steps/delay.ts +1 -0
  43. package/src/automations/steps/deleteRow.ts +4 -0
  44. package/src/automations/steps/discord.ts +4 -0
  45. package/src/automations/steps/executeQuery.ts +4 -0
  46. package/src/automations/steps/executeScript.ts +4 -0
  47. package/src/automations/steps/filter.ts +1 -0
  48. package/src/automations/steps/loop.ts +1 -0
  49. package/src/automations/steps/make.ts +4 -0
  50. package/src/automations/steps/openai.ts +106 -0
  51. package/src/automations/steps/outgoingWebhook.ts +4 -0
  52. package/src/automations/steps/queryRows.ts +4 -0
  53. package/src/automations/steps/sendSmtpEmail.ts +4 -0
  54. package/src/automations/steps/serverLog.ts +4 -0
  55. package/src/automations/steps/slack.ts +4 -0
  56. package/src/automations/steps/updateRow.ts +4 -0
  57. package/src/automations/steps/zapier.ts +4 -0
  58. package/src/automations/tests/openai.spec.ts +86 -0
  59. package/src/automations/triggers.ts +3 -2
  60. package/src/constants/index.ts +17 -16
  61. package/src/db/inMemoryView.ts +1 -0
  62. package/src/environment.ts +2 -0
  63. package/src/integration-test/postgres.spec.ts +47 -4
  64. package/src/integrations/airtable.ts +3 -1
  65. package/src/integrations/arangodb.ts +3 -1
  66. package/src/integrations/base/sqlTable.ts +0 -1
  67. package/src/integrations/couchdb.ts +3 -1
  68. package/src/integrations/dynamodb.ts +3 -1
  69. package/src/integrations/elasticsearch.ts +3 -1
  70. package/src/integrations/firebase.ts +3 -1
  71. package/src/integrations/googlesheets.ts +11 -3
  72. package/src/integrations/microsoftSqlServer.ts +18 -2
  73. package/src/integrations/mongodb.ts +3 -1
  74. package/src/integrations/mysql.ts +27 -11
  75. package/src/integrations/oracle.ts +11 -1
  76. package/src/integrations/postgres.ts +15 -1
  77. package/src/integrations/redis.ts +3 -1
  78. package/src/integrations/s3.ts +3 -1
  79. package/src/integrations/snowflake.ts +3 -1
  80. package/src/integrations/tests/googlesheets.spec.ts +41 -9
  81. package/src/middleware/builder.ts +4 -5
  82. package/src/sdk/app/automations/index.ts +2 -0
  83. package/src/sdk/app/automations/utils.ts +7 -0
  84. package/src/startup.ts +2 -0
  85. package/src/tests/utilities/TestConfiguration.ts +4 -2
  86. package/src/tests/utilities/structures.ts +42 -0
  87. package/src/threads/automation.ts +39 -0
  88. package/src/utilities/fileSystem/app.ts +1 -1
  89. package/src/utilities/fileSystem/clientLibrary.ts +8 -3
  90. package/src/utilities/fileSystem/filesystem.ts +3 -1
  91. package/src/utilities/redis.ts +19 -2
  92. package/src/websockets/builder.ts +69 -0
  93. package/src/websockets/grid.ts +25 -7
  94. package/src/websockets/index.ts +5 -2
  95. package/src/websockets/websocket.ts +20 -4
  96. package/tsconfig.build.json +9 -1
  97. package/tsconfig.json +1 -14
  98. package/dist/api/controllers/analytics.js +0 -46
  99. package/dist/api/controllers/apikeys.js +0 -72
  100. package/dist/api/controllers/application.js +0 -574
  101. package/dist/api/controllers/auth.js +0 -80
  102. package/dist/api/controllers/automation.js +0 -303
  103. package/dist/api/controllers/backup.js +0 -37
  104. package/dist/api/controllers/component.js +0 -59
  105. package/dist/api/controllers/datasource.js +0 -337
  106. package/dist/api/controllers/deploy/Deployment.js +0 -53
  107. package/dist/api/controllers/deploy/index.js +0 -198
  108. package/dist/api/controllers/dev.js +0 -146
  109. package/dist/api/controllers/integration.js +0 -28
  110. package/dist/api/controllers/layout.js +0 -49
  111. package/dist/api/controllers/metadata.js +0 -63
  112. package/dist/api/controllers/migrations.js +0 -29
  113. package/dist/api/controllers/ops.js +0 -40
  114. package/dist/api/controllers/permission.js +0 -162
  115. package/dist/api/controllers/plugin/file.js +0 -24
  116. package/dist/api/controllers/plugin/github.js +0 -69
  117. package/dist/api/controllers/plugin/index.js +0 -112
  118. package/dist/api/controllers/plugin/npm.js +0 -58
  119. package/dist/api/controllers/plugin/uploaders.js +0 -11
  120. package/dist/api/controllers/plugin/url.js +0 -24
  121. package/dist/api/controllers/plugin/utils.js +0 -27
  122. package/dist/api/controllers/public/applications.js +0 -146
  123. package/dist/api/controllers/public/mapping/applications.js +0 -29
  124. package/dist/api/controllers/public/mapping/index.js +0 -11
  125. package/dist/api/controllers/public/mapping/queries.js +0 -36
  126. package/dist/api/controllers/public/mapping/rows.js +0 -24
  127. package/dist/api/controllers/public/mapping/tables.js +0 -23
  128. package/dist/api/controllers/public/mapping/types.js +0 -2
  129. package/dist/api/controllers/public/mapping/users.js +0 -29
  130. package/dist/api/controllers/public/metrics.js +0 -113
  131. package/dist/api/controllers/public/queries.js +0 -58
  132. package/dist/api/controllers/public/rows.js +0 -120
  133. package/dist/api/controllers/public/tables.js +0 -95
  134. package/dist/api/controllers/public/users.js +0 -93
  135. package/dist/api/controllers/public/utils.js +0 -56
  136. package/dist/api/controllers/query/import/index.js +0 -87
  137. package/dist/api/controllers/query/import/sources/base/index.js +0 -75
  138. package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
  139. package/dist/api/controllers/query/import/sources/curl.js +0 -99
  140. package/dist/api/controllers/query/import/sources/openapi2.js +0 -145
  141. package/dist/api/controllers/query/import/sources/openapi3.js +0 -177
  142. package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
  143. package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
  144. package/dist/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
  145. package/dist/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
  146. package/dist/api/controllers/query/index.js +0 -299
  147. package/dist/api/controllers/query/validation.js +0 -53
  148. package/dist/api/controllers/role.js +0 -109
  149. package/dist/api/controllers/routing.js +0 -105
  150. package/dist/api/controllers/row/ExternalRequest.js +0 -683
  151. package/dist/api/controllers/row/external.js +0 -339
  152. package/dist/api/controllers/row/index.js +0 -203
  153. package/dist/api/controllers/row/internal.js +0 -509
  154. package/dist/api/controllers/row/internalSearch.js +0 -28
  155. package/dist/api/controllers/row/staticFormula.js +0 -165
  156. package/dist/api/controllers/row/utils.js +0 -183
  157. package/dist/api/controllers/screen.js +0 -110
  158. package/dist/api/controllers/script.js +0 -30
  159. package/dist/api/controllers/static/index.js +0 -268
  160. package/dist/api/controllers/table/bulkFormula.js +0 -173
  161. package/dist/api/controllers/table/external.js +0 -279
  162. package/dist/api/controllers/table/index.js +0 -179
  163. package/dist/api/controllers/table/internal.js +0 -197
  164. package/dist/api/controllers/table/utils.js +0 -379
  165. package/dist/api/controllers/templates.js +0 -56
  166. package/dist/api/controllers/user.js +0 -124
  167. package/dist/api/controllers/view/exporters.js +0 -46
  168. package/dist/api/controllers/view/index.js +0 -193
  169. package/dist/api/controllers/view/utils.js +0 -177
  170. package/dist/api/controllers/view/viewBuilder.js +0 -158
  171. package/dist/api/controllers/webhook.js +0 -134
  172. package/dist/api/index.js +0 -55
  173. package/dist/api/routes/analytics.js +0 -34
  174. package/dist/api/routes/apikeys.js +0 -37
  175. package/dist/api/routes/application.js +0 -48
  176. package/dist/api/routes/auth.js +0 -33
  177. package/dist/api/routes/automation.js +0 -50
  178. package/dist/api/routes/backup.js +0 -35
  179. package/dist/api/routes/component.js +0 -35
  180. package/dist/api/routes/datasource.js +0 -44
  181. package/dist/api/routes/deploy.js +0 -37
  182. package/dist/api/routes/dev.js +0 -49
  183. package/dist/api/routes/index.js +0 -75
  184. package/dist/api/routes/integration.js +0 -37
  185. package/dist/api/routes/layout.js +0 -37
  186. package/dist/api/routes/metadata.js +0 -40
  187. package/dist/api/routes/migrations.js +0 -36
  188. package/dist/api/routes/ops.js +0 -52
  189. package/dist/api/routes/permission.js +0 -44
  190. package/dist/api/routes/plugin.js +0 -39
  191. package/dist/api/routes/public/applications.js +0 -174
  192. package/dist/api/routes/public/index.js +0 -140
  193. package/dist/api/routes/public/metrics.js +0 -30
  194. package/dist/api/routes/public/middleware/mapper.js +0 -97
  195. package/dist/api/routes/public/queries.js +0 -72
  196. package/dist/api/routes/public/rows.js +0 -158
  197. package/dist/api/routes/public/tables.js +0 -152
  198. package/dist/api/routes/public/users.js +0 -135
  199. package/dist/api/routes/public/utils/Endpoint.js +0 -36
  200. package/dist/api/routes/query.js +0 -47
  201. package/dist/api/routes/role.js +0 -40
  202. package/dist/api/routes/routing.js +0 -39
  203. package/dist/api/routes/row.js +0 -239
  204. package/dist/api/routes/screen.js +0 -39
  205. package/dist/api/routes/script.js +0 -35
  206. package/dist/api/routes/static.js +0 -80
  207. package/dist/api/routes/table.js +0 -163
  208. package/dist/api/routes/templates.js +0 -37
  209. package/dist/api/routes/user.js +0 -43
  210. package/dist/api/routes/utils/validators.js +0 -238
  211. package/dist/api/routes/view.js +0 -42
  212. package/dist/api/routes/webhook.js +0 -43
  213. package/dist/app.js +0 -132
  214. package/dist/automations/actions.js +0 -137
  215. package/dist/automations/automationUtils.js +0 -173
  216. package/dist/automations/bullboard.js +0 -71
  217. package/dist/automations/index.js +0 -43
  218. package/dist/automations/logging/index.js +0 -53
  219. package/dist/automations/steps/bash.js +0 -111
  220. package/dist/automations/steps/createRow.js +0 -108
  221. package/dist/automations/steps/delay.js +0 -53
  222. package/dist/automations/steps/deleteRow.js +0 -96
  223. package/dist/automations/steps/discord.js +0 -116
  224. package/dist/automations/steps/executeQuery.js +0 -134
  225. package/dist/automations/steps/executeScript.js +0 -106
  226. package/dist/automations/steps/filter.js +0 -112
  227. package/dist/automations/steps/loop.js +0 -54
  228. package/dist/automations/steps/make.js +0 -134
  229. package/dist/automations/steps/outgoingWebhook.js +0 -166
  230. package/dist/automations/steps/queryRows.js +0 -216
  231. package/dist/automations/steps/sendSmtpEmail.js +0 -115
  232. package/dist/automations/steps/serverLog.js +0 -65
  233. package/dist/automations/steps/slack.js +0 -98
  234. package/dist/automations/steps/updateRow.js +0 -144
  235. package/dist/automations/steps/utils.js +0 -56
  236. package/dist/automations/steps/zapier.js +0 -130
  237. package/dist/automations/triggerInfo/app.js +0 -36
  238. package/dist/automations/triggerInfo/cron.js +0 -35
  239. package/dist/automations/triggerInfo/index.js +0 -40
  240. package/dist/automations/triggerInfo/rowDeleted.js +0 -36
  241. package/dist/automations/triggerInfo/rowSaved.js +0 -44
  242. package/dist/automations/triggerInfo/rowUpdated.js +0 -44
  243. package/dist/automations/triggerInfo/webhook.js +0 -40
  244. package/dist/automations/triggers.js +0 -181
  245. package/dist/automations/utils.js +0 -275
  246. package/dist/constants/definitions.js +0 -2
  247. package/dist/constants/index.js +0 -181
  248. package/dist/constants/layouts.js +0 -148
  249. package/dist/constants/screens.js +0 -51
  250. package/dist/db/defaultData/datasource_bb_default.js +0 -574
  251. package/dist/db/defaultData/employeeImport.js +0 -155
  252. package/dist/db/defaultData/expensesImport.js +0 -117
  253. package/dist/db/defaultData/inventoryImport.js +0 -109
  254. package/dist/db/defaultData/jobsImport.js +0 -152
  255. package/dist/db/dynamoClient.js +0 -124
  256. package/dist/db/inMemoryView.js +0 -62
  257. package/dist/db/index.js +0 -43
  258. package/dist/db/linkedRows/LinkController.js +0 -392
  259. package/dist/db/linkedRows/LinkDocument.js +0 -33
  260. package/dist/db/linkedRows/index.js +0 -206
  261. package/dist/db/linkedRows/linkUtils.js +0 -131
  262. package/dist/db/newid.js +0 -7
  263. package/dist/db/utils.js +0 -248
  264. package/dist/db/views/staticViews.js +0 -144
  265. package/dist/ddApm.js +0 -11
  266. package/dist/definitions/automations.js +0 -8
  267. package/dist/definitions/common.js +0 -2
  268. package/dist/definitions/datasource.js +0 -7
  269. package/dist/definitions/openapi.js +0 -6
  270. package/dist/environment.js +0 -109
  271. package/dist/events/AutomationEmitter.js +0 -53
  272. package/dist/events/BudibaseEmitter.js +0 -25
  273. package/dist/events/docUpdates/index.js +0 -17
  274. package/dist/events/docUpdates/processors.js +0 -18
  275. package/dist/events/docUpdates/syncUsers.js +0 -49
  276. package/dist/events/index.js +0 -11
  277. package/dist/events/utils.js +0 -43
  278. package/dist/integrations/airtable.js +0 -173
  279. package/dist/integrations/arangodb.js +0 -119
  280. package/dist/integrations/base/query.js +0 -32
  281. package/dist/integrations/base/sql.js +0 -600
  282. package/dist/integrations/base/sqlTable.js +0 -167
  283. package/dist/integrations/base/types.js +0 -2
  284. package/dist/integrations/couchdb.js +0 -140
  285. package/dist/integrations/dynamodb.js +0 -210
  286. package/dist/integrations/elasticsearch.js +0 -201
  287. package/dist/integrations/firebase.js +0 -189
  288. package/dist/integrations/googlesheets.js +0 -484
  289. package/dist/integrations/index.js +0 -138
  290. package/dist/integrations/microsoftSqlServer.js +0 -289
  291. package/dist/integrations/mongodb.js +0 -630
  292. package/dist/integrations/mysql.js +0 -272
  293. package/dist/integrations/oracle.js +0 -404
  294. package/dist/integrations/postgres.js +0 -320
  295. package/dist/integrations/queries/sql.js +0 -84
  296. package/dist/integrations/redis.js +0 -187
  297. package/dist/integrations/rest.js +0 -400
  298. package/dist/integrations/s3.js +0 -256
  299. package/dist/integrations/snowflake.js +0 -114
  300. package/dist/integrations/utils.js +0 -295
  301. package/dist/middleware/appInfo.js +0 -22
  302. package/dist/middleware/authorized.js +0 -112
  303. package/dist/middleware/builder.js +0 -93
  304. package/dist/middleware/currentapp.js +0 -103
  305. package/dist/middleware/joi-validator.js +0 -43
  306. package/dist/middleware/publicApi.js +0 -25
  307. package/dist/middleware/resourceId.js +0 -59
  308. package/dist/middleware/selfhost.js +0 -24
  309. package/dist/middleware/utils.js +0 -8
  310. package/dist/migrations/functions/appUrls.js +0 -42
  311. package/dist/migrations/functions/backfill/app/automations.js +0 -31
  312. package/dist/migrations/functions/backfill/app/datasources.js +0 -28
  313. package/dist/migrations/functions/backfill/app/layouts.js +0 -33
  314. package/dist/migrations/functions/backfill/app/queries.js +0 -49
  315. package/dist/migrations/functions/backfill/app/roles.js +0 -28
  316. package/dist/migrations/functions/backfill/app/screens.js +0 -28
  317. package/dist/migrations/functions/backfill/app/tables.js +0 -37
  318. package/dist/migrations/functions/backfill/app.js +0 -176
  319. package/dist/migrations/functions/backfill/global/configs.js +0 -67
  320. package/dist/migrations/functions/backfill/global/quotas.js +0 -60
  321. package/dist/migrations/functions/backfill/global/users.js +0 -50
  322. package/dist/migrations/functions/backfill/global.js +0 -205
  323. package/dist/migrations/functions/backfill/index.js +0 -32
  324. package/dist/migrations/functions/backfill/installation.js +0 -80
  325. package/dist/migrations/functions/syncQuotas.js +0 -52
  326. package/dist/migrations/functions/tableSettings.js +0 -130
  327. package/dist/migrations/functions/usageQuotas/index.js +0 -16
  328. package/dist/migrations/functions/usageQuotas/syncApps.js +0 -24
  329. package/dist/migrations/functions/usageQuotas/syncPlugins.js +0 -23
  330. package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
  331. package/dist/migrations/functions/usageQuotas/syncUsers.js +0 -21
  332. package/dist/migrations/functions/userEmailViewCasing.js +0 -24
  333. package/dist/migrations/index.js +0 -111
  334. package/dist/migrations/tests/helpers.js +0 -72
  335. package/dist/migrations/tests/structures.js +0 -37
  336. package/dist/sdk/app/applications/index.js +0 -28
  337. package/dist/sdk/app/applications/sync.js +0 -164
  338. package/dist/sdk/app/applications/utils.js +0 -21
  339. package/dist/sdk/app/automations/index.js +0 -29
  340. package/dist/sdk/app/automations/webhook.js +0 -54
  341. package/dist/sdk/app/backups/constants.js +0 -6
  342. package/dist/sdk/app/backups/exports.js +0 -160
  343. package/dist/sdk/app/backups/imports.js +0 -170
  344. package/dist/sdk/app/backups/index.js +0 -29
  345. package/dist/sdk/app/backups/statistics.js +0 -73
  346. package/dist/sdk/app/datasources/datasources.js +0 -173
  347. package/dist/sdk/app/datasources/index.js +0 -27
  348. package/dist/sdk/app/queries/index.js +0 -27
  349. package/dist/sdk/app/queries/queries.js +0 -60
  350. package/dist/sdk/app/rows/attachments.js +0 -61
  351. package/dist/sdk/app/rows/index.js +0 -28
  352. package/dist/sdk/app/rows/rows.js +0 -30
  353. package/dist/sdk/app/tables/index.js +0 -65
  354. package/dist/sdk/index.js +0 -27
  355. package/dist/sdk/plugins/index.js +0 -27
  356. package/dist/sdk/plugins/plugins.js +0 -53
  357. package/dist/sdk/users/index.js +0 -27
  358. package/dist/sdk/users/utils.js +0 -87
  359. package/dist/sdk/utils/index.js +0 -29
  360. package/dist/startup.js +0 -158
  361. package/dist/threads/automation.js +0 -450
  362. package/dist/threads/definitions.js +0 -2
  363. package/dist/threads/index.js +0 -140
  364. package/dist/threads/query.js +0 -265
  365. package/dist/threads/utils.js +0 -120
  366. package/dist/tsconfig.build.tsbuildinfo +0 -1
  367. package/dist/utilities/appDirectoryTemplate/package.json +0 -10
  368. package/dist/utilities/budibaseDir.js +0 -5
  369. package/dist/utilities/centralPath.js +0 -27
  370. package/dist/utilities/csv.js +0 -33
  371. package/dist/utilities/fileSystem/app.js +0 -88
  372. package/dist/utilities/fileSystem/clientLibrary.js +0 -138
  373. package/dist/utilities/fileSystem/filesystem.js +0 -180
  374. package/dist/utilities/fileSystem/index.js +0 -21
  375. package/dist/utilities/fileSystem/plugin.js +0 -76
  376. package/dist/utilities/fileSystem/processor.js +0 -34
  377. package/dist/utilities/fileSystem/template.js +0 -47
  378. package/dist/utilities/global.js +0 -149
  379. package/dist/utilities/index.js +0 -143
  380. package/dist/utilities/redis.js +0 -117
  381. package/dist/utilities/retry.js +0 -30
  382. package/dist/utilities/routing/index.js +0 -39
  383. package/dist/utilities/rowProcessor/index.js +0 -282
  384. package/dist/utilities/rowProcessor/map.js +0 -116
  385. package/dist/utilities/rowProcessor/utils.js +0 -87
  386. package/dist/utilities/schema.js +0 -112
  387. package/dist/utilities/scriptRunner.js +0 -26
  388. package/dist/utilities/security.js +0 -57
  389. package/dist/utilities/statusCodes.js +0 -9
  390. package/dist/utilities/usageQuota/rows.js +0 -88
  391. package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
  392. package/dist/utilities/users.js +0 -57
  393. package/dist/utilities/workerRequests.js +0 -171
  394. package/dist/watch.js +0 -53
  395. package/dist/websockets/client.js +0 -14
  396. package/dist/websockets/grid.js +0 -60
  397. package/dist/websockets/index.js +0 -17
  398. package/dist/websockets/websocket.js +0 -78
  399. /package/dist/{api/controllers/static/templates/BudibaseApp.svelte → BudibaseApp-Y5NZEDTC.svelte} +0 -0
  400. /package/dist/{api/controllers/static/templates/app.hbs → app.hbs} +0 -0
  401. /package/dist/{api/controllers/static/templates/preview.hbs → preview.hbs} +0 -0
@@ -1,574 +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.updateAppPackage = exports.sync = exports.unpublish = exports.destroy = exports.revertClient = exports.updateClient = exports.update = exports.create = exports.fetchAppPackage = exports.fetchAppDefinition = exports.fetch = void 0;
16
- const environment_1 = __importDefault(require("../../environment"));
17
- const staticViews_1 = require("../../db/views/staticViews");
18
- const fileSystem_1 = require("../../utilities/fileSystem");
19
- const utils_1 = require("../../db/utils");
20
- const backend_core_1 = require("@budibase/backend-core");
21
- const constants_1 = require("../../constants");
22
- const datasource_bb_default_1 = require("../../db/defaultData/datasource_bb_default");
23
- const workerRequests_1 = require("../../utilities/workerRequests");
24
- const utilities_1 = require("../../utilities");
25
- const redis_1 = require("../../utilities/redis");
26
- const fileSystem_2 = require("../../utilities/fileSystem");
27
- const utils_2 = require("../../automations/utils");
28
- const logging_1 = require("../../automations/logging");
29
- const rows_1 = require("../../utilities/usageQuota/rows");
30
- const pro_1 = require("@budibase/pro");
31
- const types_1 = require("@budibase/types");
32
- const layouts_1 = require("../../constants/layouts");
33
- const sdk_1 = __importDefault(require("../../sdk"));
34
- // utility function, need to do away with this
35
- function getLayouts() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const db = backend_core_1.context.getAppDB();
38
- return (yield db.allDocs((0, utils_1.getLayoutParams)(null, {
39
- include_docs: true,
40
- }))).rows.map((row) => row.doc);
41
- });
42
- }
43
- function getScreens() {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- const db = backend_core_1.context.getAppDB();
46
- return (yield db.allDocs((0, utils_1.getScreenParams)(null, {
47
- include_docs: true,
48
- }))).rows.map((row) => row.doc);
49
- });
50
- }
51
- function getUserRoleId(ctx) {
52
- var _a;
53
- return !((_a = ctx.user) === null || _a === void 0 ? void 0 : _a.role) || !ctx.user.role._id
54
- ? backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC
55
- : ctx.user.role._id;
56
- }
57
- function checkAppUrl(ctx, apps, url, currentAppId) {
58
- if (currentAppId) {
59
- apps = apps.filter((app) => app.appId !== currentAppId);
60
- }
61
- if (apps.some((app) => app.url === url)) {
62
- ctx.throw(400, "App URL is already in use.");
63
- }
64
- }
65
- function checkAppName(ctx, apps, name, currentAppId) {
66
- // TODO: Replace with Joi
67
- if (!name) {
68
- ctx.throw(400, "Name is required");
69
- }
70
- if (currentAppId) {
71
- apps = apps.filter((app) => app.appId !== currentAppId);
72
- }
73
- if (apps.some((app) => app.name === name)) {
74
- ctx.throw(400, "App name is already in use.");
75
- }
76
- }
77
- function createInstance(appId, template, includeSampleData) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- const db = backend_core_1.context.getAppDB();
80
- yield db.put({
81
- _id: "_design/database",
82
- // view collation information, read before writing any complex views:
83
- // https://docs.couchdb.org/en/master/ddocs/views/collation.html#collation-specification
84
- views: {},
85
- });
86
- // NOTE: indexes need to be created before any tables/templates
87
- // add view for linked rows
88
- yield (0, staticViews_1.createLinkView)();
89
- yield (0, staticViews_1.createRoutingView)();
90
- yield (0, staticViews_1.createAllSearchIndex)();
91
- // replicate the template data to the instance DB
92
- // this is currently very hard to test, downloading and importing template files
93
- if (template && template.templateString) {
94
- const { ok } = yield db.load((0, utilities_1.stringToReadStream)(template.templateString));
95
- if (!ok) {
96
- throw "Error loading database dump from memory.";
97
- }
98
- }
99
- else if (template && template.useTemplate === "true") {
100
- yield sdk_1.default.backups.importApp(appId, db, template);
101
- }
102
- else {
103
- // create the users table
104
- yield db.put(constants_1.USERS_TABLE_SCHEMA);
105
- if (includeSampleData) {
106
- // create ootb stock db
107
- yield addDefaultTables(db);
108
- }
109
- }
110
- return { _id: appId };
111
- });
112
- }
113
- function addDefaultTables(db) {
114
- return __awaiter(this, void 0, void 0, function* () {
115
- const defaultDbDocs = (0, datasource_bb_default_1.buildDefaultDocs)();
116
- // add in the default db data docs - tables, datasource, rows and links
117
- yield db.bulkDocs([...defaultDbDocs]);
118
- });
119
- }
120
- function fetch(ctx) {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- const dev = ctx.query && ctx.query.status === utils_1.AppStatus.DEV;
123
- const all = ctx.query && ctx.query.status === utils_1.AppStatus.ALL;
124
- const apps = (yield backend_core_1.db.getAllApps({ dev, all }));
125
- const appIds = apps
126
- .filter((app) => app.status === "development")
127
- .map((app) => app.appId);
128
- // get the locks for all the dev apps
129
- if (dev || all) {
130
- const locks = yield (0, redis_1.getLocksById)(appIds);
131
- for (let app of apps) {
132
- const lock = locks[app.appId];
133
- if (lock) {
134
- app.lockedBy = lock;
135
- }
136
- else {
137
- // make sure its definitely not present
138
- delete app.lockedBy;
139
- }
140
- }
141
- }
142
- ctx.body = yield (0, logging_1.checkAppMetadata)(apps);
143
- });
144
- }
145
- exports.fetch = fetch;
146
- function fetchAppDefinition(ctx) {
147
- return __awaiter(this, void 0, void 0, function* () {
148
- const layouts = yield getLayouts();
149
- const userRoleId = getUserRoleId(ctx);
150
- const accessController = new backend_core_1.roles.AccessController();
151
- const screens = yield accessController.checkScreensAccess(yield getScreens(), userRoleId);
152
- ctx.body = {
153
- layouts,
154
- screens,
155
- libraries: ["@budibase/standard-components"],
156
- };
157
- });
158
- }
159
- exports.fetchAppDefinition = fetchAppDefinition;
160
- function fetchAppPackage(ctx) {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- const db = backend_core_1.context.getAppDB();
163
- let application = yield db.get(utils_1.DocumentType.APP_METADATA);
164
- const layouts = yield getLayouts();
165
- let screens = yield getScreens();
166
- // Enrich plugin URLs
167
- application.usedPlugins = backend_core_1.objectStore.enrichPluginURLs(application.usedPlugins);
168
- // Only filter screens if the user is not a builder
169
- if (!(ctx.user.builder && ctx.user.builder.global)) {
170
- const userRoleId = getUserRoleId(ctx);
171
- const accessController = new backend_core_1.roles.AccessController();
172
- screens = yield accessController.checkScreensAccess(screens, userRoleId);
173
- }
174
- const clientLibPath = backend_core_1.objectStore.clientLibraryUrl(ctx.params.appId, application.version);
175
- ctx.body = {
176
- application: Object.assign(Object.assign({}, application), { upgradableVersion: backend_core_1.env.VERSION }),
177
- screens,
178
- layouts,
179
- clientLibPath,
180
- };
181
- });
182
- }
183
- exports.fetchAppPackage = fetchAppPackage;
184
- function performAppCreate(ctx) {
185
- return __awaiter(this, void 0, void 0, function* () {
186
- const apps = (yield backend_core_1.db.getAllApps({ dev: true }));
187
- const name = ctx.request.body.name, possibleUrl = ctx.request.body.url;
188
- checkAppName(ctx, apps, name);
189
- const url = sdk_1.default.applications.getAppUrl({ name, url: possibleUrl });
190
- checkAppUrl(ctx, apps, url);
191
- const { useTemplate, templateKey, templateString } = ctx.request.body;
192
- const instanceConfig = {
193
- useTemplate,
194
- key: templateKey,
195
- templateString,
196
- };
197
- if (ctx.request.files && ctx.request.files.templateFile) {
198
- instanceConfig.file = ctx.request.files.templateFile;
199
- }
200
- const includeSampleData = (0, utilities_1.isQsTrue)(ctx.request.body.sampleData);
201
- const tenantId = backend_core_1.tenancy.isMultiTenant() ? backend_core_1.tenancy.getTenantId() : null;
202
- const appId = (0, utils_1.generateDevAppID)((0, utils_1.generateAppID)(tenantId));
203
- return yield backend_core_1.context.doInAppContext(appId, () => __awaiter(this, void 0, void 0, function* () {
204
- const instance = yield createInstance(appId, instanceConfig, includeSampleData);
205
- const db = backend_core_1.context.getAppDB();
206
- let newApplication = {
207
- _id: utils_1.DocumentType.APP_METADATA,
208
- _rev: undefined,
209
- appId,
210
- type: "app",
211
- version: backend_core_1.env.VERSION,
212
- componentLibraries: ["@budibase/standard-components"],
213
- name: name,
214
- url: url,
215
- template: templateKey,
216
- instance,
217
- tenantId: backend_core_1.tenancy.getTenantId(),
218
- updatedAt: new Date().toISOString(),
219
- createdAt: new Date().toISOString(),
220
- status: utils_1.AppStatus.DEV,
221
- navigation: {
222
- navigation: "Top",
223
- title: name,
224
- navWidth: "Large",
225
- navBackground: "var(--spectrum-global-color-gray-100)",
226
- links: [
227
- {
228
- url: "/home",
229
- text: "Home",
230
- },
231
- ],
232
- },
233
- theme: "spectrum--light",
234
- customTheme: {
235
- buttonBorderRadius: "16px",
236
- },
237
- };
238
- // If we used a template or imported an app there will be an existing doc.
239
- // Fetch and migrate some metadata from the existing app.
240
- try {
241
- const existing = yield db.get(utils_1.DocumentType.APP_METADATA);
242
- const keys = [
243
- "_rev",
244
- "navigation",
245
- "theme",
246
- "customTheme",
247
- "icon",
248
- ];
249
- keys.forEach(key => {
250
- if (existing[key]) {
251
- // @ts-ignore
252
- newApplication[key] = existing[key];
253
- }
254
- });
255
- // Migrate navigation settings and screens if required
256
- if (existing) {
257
- const navigation = yield migrateAppNavigation();
258
- if (navigation) {
259
- newApplication.navigation = navigation;
260
- }
261
- }
262
- }
263
- catch (err) {
264
- // Nothing to do
265
- }
266
- const response = yield db.put(newApplication, { force: true });
267
- newApplication._rev = response.rev;
268
- /* istanbul ignore next */
269
- if (!environment_1.default.isTest()) {
270
- yield (0, fileSystem_1.createApp)(appId);
271
- }
272
- yield backend_core_1.cache.app.invalidateAppMetadata(appId, newApplication);
273
- return newApplication;
274
- }));
275
- });
276
- }
277
- function creationEvents(request, app) {
278
- var _a;
279
- return __awaiter(this, void 0, void 0, function* () {
280
- let creationFns = [];
281
- const body = request.body;
282
- if (body.useTemplate === "true") {
283
- // from template
284
- if (body.templateKey && body.templateKey !== "undefined") {
285
- creationFns.push(a => backend_core_1.events.app.templateImported(a, body.templateKey));
286
- }
287
- // from file
288
- else if ((_a = request.files) === null || _a === void 0 ? void 0 : _a.templateFile) {
289
- creationFns.push(a => backend_core_1.events.app.fileImported(a));
290
- }
291
- // unknown
292
- else {
293
- console.error("Could not determine template creation event");
294
- }
295
- }
296
- creationFns.push(a => backend_core_1.events.app.created(a));
297
- for (let fn of creationFns) {
298
- yield fn(app);
299
- }
300
- });
301
- }
302
- function appPostCreate(ctx, app) {
303
- return __awaiter(this, void 0, void 0, function* () {
304
- const tenantId = backend_core_1.tenancy.getTenantId();
305
- yield backend_core_1.migrations.backPopulateMigrations({
306
- type: types_1.MigrationType.APP,
307
- tenantId,
308
- appId: app.appId,
309
- });
310
- yield creationEvents(ctx.request, app);
311
- // app import & template creation
312
- if (ctx.request.body.useTemplate === "true") {
313
- const { rows } = yield (0, rows_1.getUniqueRows)([app.appId]);
314
- const rowCount = rows ? rows.length : 0;
315
- if (rowCount) {
316
- try {
317
- yield backend_core_1.context.doInAppContext(app.appId, () => {
318
- return pro_1.quotas.addRows(rowCount);
319
- });
320
- }
321
- catch (err) {
322
- if (err.code && err.code === backend_core_1.ErrorCode.USAGE_LIMIT_EXCEEDED) {
323
- // this import resulted in row usage exceeding the quota
324
- // delete the app
325
- // skip pre and post-steps as no rows have been added to quotas yet
326
- ctx.params.appId = app.appId;
327
- yield destroyApp(ctx);
328
- }
329
- throw err;
330
- }
331
- }
332
- }
333
- });
334
- }
335
- function create(ctx) {
336
- return __awaiter(this, void 0, void 0, function* () {
337
- const newApplication = yield pro_1.quotas.addApp(() => performAppCreate(ctx));
338
- yield appPostCreate(ctx, newApplication);
339
- yield backend_core_1.cache.bustCache(backend_core_1.cache.CacheKey.CHECKLIST);
340
- ctx.body = newApplication;
341
- ctx.status = 200;
342
- });
343
- }
344
- exports.create = create;
345
- // This endpoint currently operates as a PATCH rather than a PUT
346
- // Thus name and url fields are handled only if present
347
- function update(ctx) {
348
- return __awaiter(this, void 0, void 0, function* () {
349
- const apps = (yield backend_core_1.db.getAllApps({ dev: true }));
350
- // validation
351
- const name = ctx.request.body.name, possibleUrl = ctx.request.body.url;
352
- if (name) {
353
- checkAppName(ctx, apps, name, ctx.params.appId);
354
- }
355
- const url = sdk_1.default.applications.getAppUrl({ name, url: possibleUrl });
356
- if (url) {
357
- checkAppUrl(ctx, apps, url, ctx.params.appId);
358
- ctx.request.body.url = url;
359
- }
360
- const app = yield updateAppPackage(ctx.request.body, ctx.params.appId);
361
- yield backend_core_1.events.app.updated(app);
362
- ctx.status = 200;
363
- ctx.body = app;
364
- });
365
- }
366
- exports.update = update;
367
- function updateClient(ctx) {
368
- return __awaiter(this, void 0, void 0, function* () {
369
- // Get current app version
370
- const db = backend_core_1.context.getAppDB();
371
- const application = yield db.get(utils_1.DocumentType.APP_METADATA);
372
- const currentVersion = application.version;
373
- // Update client library and manifest
374
- if (!environment_1.default.isTest()) {
375
- yield (0, fileSystem_2.backupClientLibrary)(ctx.params.appId);
376
- yield (0, fileSystem_2.updateClientLibrary)(ctx.params.appId);
377
- }
378
- // Update versions in app package
379
- const updatedToVersion = backend_core_1.env.VERSION;
380
- const appPackageUpdates = {
381
- version: updatedToVersion,
382
- revertableVersion: currentVersion,
383
- };
384
- const app = yield updateAppPackage(appPackageUpdates, ctx.params.appId);
385
- yield backend_core_1.events.app.versionUpdated(app, currentVersion, updatedToVersion);
386
- ctx.status = 200;
387
- ctx.body = app;
388
- });
389
- }
390
- exports.updateClient = updateClient;
391
- function revertClient(ctx) {
392
- return __awaiter(this, void 0, void 0, function* () {
393
- // Check app can be reverted
394
- const db = backend_core_1.context.getAppDB();
395
- const application = yield db.get(utils_1.DocumentType.APP_METADATA);
396
- if (!application.revertableVersion) {
397
- ctx.throw(400, "There is no version to revert to");
398
- }
399
- // Update client library and manifest
400
- if (!environment_1.default.isTest()) {
401
- yield (0, fileSystem_2.revertClientLibrary)(ctx.params.appId);
402
- }
403
- // Update versions in app package
404
- const currentVersion = application.version;
405
- const revertedToVersion = application.revertableVersion;
406
- const appPackageUpdates = {
407
- version: revertedToVersion,
408
- revertableVersion: null,
409
- };
410
- const app = yield updateAppPackage(appPackageUpdates, ctx.params.appId);
411
- yield backend_core_1.events.app.versionReverted(app, currentVersion, revertedToVersion);
412
- ctx.status = 200;
413
- ctx.body = app;
414
- });
415
- }
416
- exports.revertClient = revertClient;
417
- function unpublishApp(ctx) {
418
- return __awaiter(this, void 0, void 0, function* () {
419
- let appId = ctx.params.appId;
420
- appId = backend_core_1.db.getProdAppID(appId);
421
- const db = backend_core_1.context.getProdAppDB();
422
- const result = yield db.destroy();
423
- yield backend_core_1.events.app.unpublished({ appId });
424
- // automations only in production
425
- yield (0, utils_2.cleanupAutomations)(appId);
426
- yield backend_core_1.cache.app.invalidateAppMetadata(appId);
427
- return result;
428
- });
429
- }
430
- function destroyApp(ctx) {
431
- return __awaiter(this, void 0, void 0, function* () {
432
- let appId = ctx.params.appId;
433
- appId = backend_core_1.db.getProdAppID(appId);
434
- const devAppId = backend_core_1.db.getDevAppID(appId);
435
- // check if we need to unpublish first
436
- if (yield backend_core_1.db.dbExists(appId)) {
437
- // app is deployed, run through unpublish flow
438
- yield sdk_1.default.applications.syncApp(devAppId);
439
- yield unpublishApp(ctx);
440
- }
441
- const db = backend_core_1.db.getDB(devAppId);
442
- // standard app deletion flow
443
- const app = yield db.get(utils_1.DocumentType.APP_METADATA);
444
- const result = yield db.destroy();
445
- yield pro_1.quotas.removeApp();
446
- yield backend_core_1.events.app.deleted(app);
447
- if (!environment_1.default.isTest()) {
448
- yield (0, fileSystem_1.deleteApp)(appId);
449
- }
450
- yield (0, workerRequests_1.removeAppFromUserRoles)(ctx, appId);
451
- yield backend_core_1.cache.app.invalidateAppMetadata(devAppId);
452
- return result;
453
- });
454
- }
455
- function preDestroyApp(ctx) {
456
- return __awaiter(this, void 0, void 0, function* () {
457
- const { rows } = yield (0, rows_1.getUniqueRows)([ctx.params.appId]);
458
- ctx.rowCount = rows.length;
459
- });
460
- }
461
- function postDestroyApp(ctx) {
462
- return __awaiter(this, void 0, void 0, function* () {
463
- const rowCount = ctx.rowCount;
464
- yield pro_1.groups.cleanupApp(ctx.params.appId);
465
- if (rowCount) {
466
- yield pro_1.quotas.removeRows(rowCount);
467
- }
468
- });
469
- }
470
- function destroy(ctx) {
471
- return __awaiter(this, void 0, void 0, function* () {
472
- yield preDestroyApp(ctx);
473
- const result = yield destroyApp(ctx);
474
- yield postDestroyApp(ctx);
475
- ctx.status = 200;
476
- ctx.body = result;
477
- });
478
- }
479
- exports.destroy = destroy;
480
- function unpublish(ctx) {
481
- return __awaiter(this, void 0, void 0, function* () {
482
- const prodAppId = backend_core_1.db.getProdAppID(ctx.params.appId);
483
- const dbExists = yield backend_core_1.db.dbExists(prodAppId);
484
- // check app has been published
485
- if (!dbExists) {
486
- return ctx.throw(400, "App has not been published.");
487
- }
488
- yield preDestroyApp(ctx);
489
- yield unpublishApp(ctx);
490
- yield postDestroyApp(ctx);
491
- ctx.status = 204;
492
- });
493
- }
494
- exports.unpublish = unpublish;
495
- function sync(ctx) {
496
- return __awaiter(this, void 0, void 0, function* () {
497
- const appId = ctx.params.appId;
498
- try {
499
- ctx.body = yield sdk_1.default.applications.syncApp(appId);
500
- }
501
- catch (err) {
502
- ctx.throw(err.status || 400, err.message);
503
- }
504
- });
505
- }
506
- exports.sync = sync;
507
- function updateAppPackage(appPackage, appId) {
508
- return __awaiter(this, void 0, void 0, function* () {
509
- return backend_core_1.context.doInAppContext(appId, () => __awaiter(this, void 0, void 0, function* () {
510
- const db = backend_core_1.context.getAppDB();
511
- const application = yield db.get(utils_1.DocumentType.APP_METADATA);
512
- const newAppPackage = Object.assign(Object.assign({}, application), appPackage);
513
- if (appPackage._rev !== application._rev) {
514
- newAppPackage._rev = application._rev;
515
- }
516
- // the locked by property is attached by server but generated from
517
- // Redis, shouldn't ever store it
518
- delete newAppPackage.lockedBy;
519
- yield db.put(newAppPackage);
520
- // remove any cached metadata, so that it will be updated
521
- yield backend_core_1.cache.app.invalidateAppMetadata(appId);
522
- return newAppPackage;
523
- }));
524
- });
525
- }
526
- exports.updateAppPackage = updateAppPackage;
527
- function migrateAppNavigation() {
528
- return __awaiter(this, void 0, void 0, function* () {
529
- const db = backend_core_1.context.getAppDB();
530
- const existing = yield db.get(utils_1.DocumentType.APP_METADATA);
531
- const layouts = yield getLayouts();
532
- const screens = yield getScreens();
533
- // Migrate all screens, removing custom layouts
534
- for (let screen of screens) {
535
- if (!screen.layoutId) {
536
- continue;
537
- }
538
- const layout = layouts.find(layout => layout._id === screen.layoutId);
539
- screen.layoutId = undefined;
540
- screen.showNavigation = (layout === null || layout === void 0 ? void 0 : layout.props.navigation) !== "None";
541
- screen.width = (layout === null || layout === void 0 ? void 0 : layout.props.width) || "Large";
542
- yield db.put(screen);
543
- }
544
- // Migrate layout navigation settings
545
- const { name, customTheme } = existing;
546
- const layout = layouts === null || layouts === void 0 ? void 0 : layouts.find((layout) => layout._id === layouts_1.BASE_LAYOUT_PROP_IDS.PRIVATE);
547
- if (layout && !existing.navigation) {
548
- let navigationSettings = {
549
- navigation: "Top",
550
- title: name,
551
- navWidth: "Large",
552
- navBackground: (customTheme === null || customTheme === void 0 ? void 0 : customTheme.navBackground) || "var(--spectrum-global-color-gray-50)",
553
- navTextColor: (customTheme === null || customTheme === void 0 ? void 0 : customTheme.navTextColor) || "var(--spectrum-global-color-gray-800)",
554
- };
555
- if (layout) {
556
- navigationSettings.hideLogo = layout.props.hideLogo;
557
- navigationSettings.hideTitle = layout.props.hideTitle;
558
- navigationSettings.title = layout.props.title || name;
559
- navigationSettings.logoUrl = layout.props.logoUrl;
560
- navigationSettings.links = layout.props.links;
561
- navigationSettings.navigation = layout.props.navigation || "Top";
562
- navigationSettings.sticky = layout.props.sticky;
563
- navigationSettings.navWidth = layout.props.width || "Large";
564
- if (navigationSettings.navigation === "None") {
565
- navigationSettings.navigation = "Top";
566
- }
567
- }
568
- return navigationSettings;
569
- }
570
- else {
571
- return null;
572
- }
573
- });
574
- }
@@ -1,80 +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.fetchSelf = void 0;
13
- const rowProcessor_1 = require("../../utilities/rowProcessor");
14
- const utils_1 = require("../../db/utils");
15
- const users_1 = require("../../utilities/users");
16
- const backend_core_1 = require("@budibase/backend-core");
17
- const pro_1 = require("@budibase/pro");
18
- const PUBLIC_ROLE = backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC;
19
- /**
20
- * Add the attributes that are session based to the current user.
21
- */
22
- const addSessionAttributesToUser = (ctx) => {
23
- if (ctx.user) {
24
- ctx.body.license = ctx.user.license;
25
- }
26
- };
27
- function fetchSelf(ctx) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- let userId = ctx.user.userId || ctx.user._id;
30
- /* istanbul ignore next */
31
- if (!userId || !ctx.isAuthenticated) {
32
- ctx.body = {};
33
- return;
34
- }
35
- const appId = backend_core_1.context.getAppId();
36
- const user = yield (0, users_1.getFullUser)(ctx, userId);
37
- // this shouldn't be returned by the app self
38
- delete user.roles;
39
- // forward the csrf token from the session
40
- user.csrfToken = ctx.user.csrfToken;
41
- if (appId) {
42
- const db = backend_core_1.context.getAppDB();
43
- // check for group permissions
44
- if (!user.roleId || user.roleId === PUBLIC_ROLE) {
45
- const groupRoleId = yield pro_1.groups.getGroupRoleId(user, appId);
46
- user.roleId = groupRoleId || user.roleId;
47
- }
48
- // remove the full roles structure
49
- delete user.roles;
50
- try {
51
- const userTable = yield db.get(utils_1.InternalTables.USER_METADATA);
52
- // specifically needs to make sure is enriched
53
- ctx.body = yield (0, rowProcessor_1.outputProcessing)(userTable, user);
54
- }
55
- catch (err) {
56
- let response;
57
- // user didn't exist in app, don't pretend they do
58
- if (user.roleId === PUBLIC_ROLE) {
59
- response = {};
60
- }
61
- // user has a role of some sort, return them
62
- else if (err.status === 404) {
63
- const metadata = Object.assign(Object.assign({}, user), { _id: userId });
64
- const dbResp = yield db.put(metadata);
65
- user._rev = dbResp.rev;
66
- response = user;
67
- }
68
- else {
69
- response = user;
70
- }
71
- ctx.body = response;
72
- }
73
- }
74
- else {
75
- ctx.body = user;
76
- }
77
- addSessionAttributesToUser(ctx);
78
- });
79
- }
80
- exports.fetchSelf = fetchSelf;