@budibase/server 1.0.49-alpha.9 → 1.0.49
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.
- package/__mocks__/arangojs.ts +1 -1
- package/__mocks__/aws-sdk.ts +4 -4
- package/__mocks__/mongodb.ts +5 -4
- package/__mocks__/mssql.ts +3 -3
- package/__mocks__/node-fetch.ts +1 -2
- package/__mocks__/pg.ts +5 -3
- package/builder/assets/{index.ad5370ae.js → index.2c37968e.js} +246 -249
- package/builder/assets/index.39e01193.css +1 -0
- package/builder/assets/{vendor.d526bfe8.js → vendor.f9faf6ab.js} +12 -12
- package/builder/index.html +3 -3
- package/coverage/clover.xml +2827 -3117
- package/coverage/coverage-final.json +101 -106
- package/coverage/lcov-report/api/controllers/analytics.js.html +1 -1
- package/coverage/lcov-report/api/controllers/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/controllers/application.js.html +152 -257
- package/coverage/lcov-report/api/controllers/auth.js.html +13 -22
- package/coverage/lcov-report/api/controllers/automation.js.html +69 -39
- package/coverage/lcov-report/api/controllers/backup.js.html +1 -1
- package/coverage/lcov-report/api/controllers/cloud.js.html +11 -8
- package/coverage/lcov-report/api/controllers/component.js.html +16 -13
- package/coverage/lcov-report/api/controllers/datasource.js.html +51 -81
- package/coverage/lcov-report/api/controllers/dev.js.html +6 -6
- package/coverage/lcov-report/{utilities/usageQuota/usageQuoteReset.js.html → api/controllers/hosting.js.html} +48 -36
- package/coverage/lcov-report/api/controllers/index.html +76 -76
- package/coverage/lcov-report/api/controllers/integration.js.html +1 -1
- package/coverage/lcov-report/api/controllers/layout.js.html +9 -9
- package/coverage/lcov-report/api/controllers/metadata.js.html +21 -6
- package/coverage/lcov-report/api/controllers/permission.js.html +19 -19
- package/coverage/lcov-report/api/controllers/query/index.html +10 -10
- package/coverage/lcov-report/api/controllers/query/index.js.html +35 -38
- package/coverage/lcov-report/api/controllers/query/validation.js.html +6 -6
- package/coverage/lcov-report/api/controllers/role.js.html +16 -16
- package/coverage/lcov-report/api/controllers/routing.js.html +10 -7
- package/coverage/lcov-report/api/controllers/row/external.js.html +141 -48
- package/coverage/lcov-report/api/controllers/row/index.html +40 -55
- package/coverage/lcov-report/api/controllers/row/index.js.html +26 -26
- package/coverage/lcov-report/api/controllers/row/internal.js.html +226 -118
- package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +34 -52
- package/coverage/lcov-report/api/controllers/row/utils.js.html +62 -47
- package/coverage/lcov-report/api/controllers/screen.js.html +21 -15
- package/coverage/lcov-report/api/controllers/script.js.html +4 -4
- package/coverage/lcov-report/api/controllers/table/external.js.html +34 -25
- package/coverage/lcov-report/api/controllers/table/index.html +43 -58
- package/coverage/lcov-report/api/controllers/table/index.js.html +82 -58
- package/coverage/lcov-report/api/controllers/table/internal.js.html +66 -81
- package/coverage/lcov-report/api/controllers/table/utils.js.html +110 -218
- package/coverage/lcov-report/api/controllers/templates.js.html +1 -1
- package/coverage/lcov-report/api/controllers/user.js.html +50 -47
- package/coverage/lcov-report/api/controllers/view/exporters.js.html +4 -4
- package/coverage/lcov-report/api/controllers/view/index.html +16 -16
- package/coverage/lcov-report/api/controllers/view/index.js.html +33 -27
- package/coverage/lcov-report/api/controllers/view/utils.js.html +20 -35
- package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +7 -7
- package/coverage/lcov-report/api/controllers/webhook.js.html +28 -34
- package/coverage/lcov-report/api/index.html +1 -1
- package/coverage/lcov-report/api/index.js.html +8 -8
- package/coverage/lcov-report/api/routes/analytics.js.html +1 -1
- package/coverage/lcov-report/api/routes/apikeys.js.html +1 -1
- package/coverage/lcov-report/api/routes/application.js.html +1 -1
- package/coverage/lcov-report/api/routes/auth.js.html +1 -1
- package/coverage/lcov-report/api/routes/automation.js.html +1 -1
- package/coverage/lcov-report/api/routes/backup.js.html +1 -1
- package/coverage/lcov-report/api/routes/cloud.js.html +1 -1
- package/coverage/lcov-report/api/routes/component.js.html +1 -1
- package/coverage/lcov-report/api/routes/datasource.js.html +1 -1
- package/coverage/lcov-report/api/routes/deploy.js.html +1 -1
- package/coverage/lcov-report/api/routes/dev.js.html +1 -1
- package/coverage/lcov-report/api/routes/{migrations.js.html → hosting.js.html} +14 -17
- package/coverage/lcov-report/api/routes/index.html +18 -18
- package/coverage/lcov-report/api/routes/index.js.html +3 -3
- package/coverage/lcov-report/api/routes/integration.js.html +1 -1
- package/coverage/lcov-report/api/routes/layout.js.html +1 -1
- package/coverage/lcov-report/api/routes/metadata.js.html +1 -1
- package/coverage/lcov-report/api/routes/permission.js.html +1 -1
- package/coverage/lcov-report/api/routes/query.js.html +1 -1
- package/coverage/lcov-report/api/routes/role.js.html +1 -1
- package/coverage/lcov-report/api/routes/routing.js.html +1 -1
- package/coverage/lcov-report/api/routes/row.js.html +1 -1
- package/coverage/lcov-report/api/routes/screen.js.html +1 -1
- package/coverage/lcov-report/api/routes/script.js.html +1 -1
- package/coverage/lcov-report/api/routes/static.js.html +2 -17
- package/coverage/lcov-report/api/routes/table.js.html +1 -1
- package/coverage/lcov-report/api/routes/templates.js.html +1 -1
- package/coverage/lcov-report/api/routes/user.js.html +1 -1
- package/coverage/lcov-report/api/routes/view.js.html +1 -1
- package/coverage/lcov-report/api/routes/webhook.js.html +1 -1
- package/coverage/lcov-report/automations/actions.js.html +24 -24
- package/coverage/lcov-report/automations/automationUtils.js.html +10 -7
- package/coverage/lcov-report/automations/bullboard.js.html +16 -16
- package/coverage/lcov-report/automations/index.html +18 -18
- package/coverage/lcov-report/automations/index.js.html +1 -1
- package/coverage/lcov-report/automations/steps/bash.js.html +6 -6
- package/coverage/lcov-report/automations/steps/createRow.js.html +22 -13
- package/coverage/lcov-report/automations/steps/delay.js.html +4 -4
- package/coverage/lcov-report/automations/steps/deleteRow.js.html +20 -11
- package/coverage/lcov-report/automations/steps/discord.js.html +7 -7
- package/coverage/lcov-report/automations/steps/executeQuery.js.html +6 -6
- package/coverage/lcov-report/automations/steps/executeScript.js.html +6 -6
- package/coverage/lcov-report/automations/steps/filter.js.html +7 -7
- package/coverage/lcov-report/automations/steps/index.html +13 -13
- package/coverage/lcov-report/automations/steps/integromat.js.html +5 -5
- package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +8 -8
- package/coverage/lcov-report/automations/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +5 -5
- package/coverage/lcov-report/automations/steps/serverLog.js.html +3 -3
- package/coverage/lcov-report/automations/steps/slack.js.html +5 -5
- package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
- package/coverage/lcov-report/automations/steps/utils.js.html +3 -3
- package/coverage/lcov-report/automations/steps/zapier.js.html +5 -5
- package/coverage/lcov-report/automations/triggerInfo/app.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/cron.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/automations/triggerInfo/index.js.html +8 -8
- package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +2 -2
- package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +2 -2
- package/coverage/lcov-report/automations/triggers.js.html +55 -61
- package/coverage/lcov-report/automations/utils.js.html +42 -54
- package/coverage/lcov-report/constants/index.html +5 -5
- package/coverage/lcov-report/constants/index.js.html +26 -53
- package/coverage/lcov-report/constants/layouts.js.html +5 -5
- package/coverage/lcov-report/constants/screens.js.html +4 -4
- package/coverage/lcov-report/db/client.js.html +18 -18
- package/coverage/lcov-report/db/inMemoryView.js.html +7 -7
- package/coverage/lcov-report/db/index.html +15 -15
- package/coverage/lcov-report/db/index.js.html +3 -3
- package/coverage/lcov-report/db/linkedRows/LinkController.js.html +37 -25
- package/coverage/lcov-report/db/linkedRows/index.html +27 -27
- package/coverage/lcov-report/db/linkedRows/index.js.html +96 -51
- package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +42 -42
- package/coverage/lcov-report/db/newid.js.html +4 -4
- package/coverage/lcov-report/db/utils.js.html +87 -87
- package/coverage/lcov-report/events/AutomationEmitter.js.html +1 -1
- package/coverage/lcov-report/events/index.html +1 -1
- package/coverage/lcov-report/events/index.js.html +5 -5
- package/coverage/lcov-report/events/utils.js.html +3 -3
- package/coverage/lcov-report/index.html +120 -135
- package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/middleware/appInfo.js.html +1 -1
- package/coverage/lcov-report/middleware/authorized.js.html +65 -173
- package/coverage/lcov-report/middleware/builder.js.html +10 -10
- package/coverage/lcov-report/middleware/currentapp.js.html +83 -95
- package/coverage/lcov-report/middleware/index.html +38 -38
- package/coverage/lcov-report/middleware/joi-validator.js.html +3 -3
- package/coverage/lcov-report/middleware/resourceId.js.html +1 -1
- package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
- package/coverage/lcov-report/middleware/usageQuota.js.html +53 -281
- package/coverage/lcov-report/middleware/utils.js.html +2 -2
- package/coverage/lcov-report/threads/automation.js.html +24 -30
- package/coverage/lcov-report/threads/index.html +26 -26
- package/coverage/lcov-report/threads/index.js.html +10 -10
- package/coverage/lcov-report/threads/query.js.html +24 -39
- package/coverage/lcov-report/threads/utils.js.html +14 -14
- package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
- package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
- package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
- package/coverage/lcov-report/utilities/csvParser.js.html +6 -6
- package/coverage/lcov-report/utilities/global.js.html +49 -58
- package/coverage/lcov-report/utilities/index.html +37 -37
- package/coverage/lcov-report/utilities/index.js.html +73 -43
- package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +8 -8
- package/coverage/lcov-report/utilities/queue/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/utilities/routing/index.js.html +7 -7
- package/coverage/lcov-report/utilities/rowProcessor/index.html +27 -27
- package/coverage/lcov-report/utilities/rowProcessor/index.js.html +103 -97
- package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +27 -75
- package/coverage/lcov-report/utilities/scriptRunner.js.html +5 -5
- package/coverage/lcov-report/utilities/security.js.html +8 -8
- package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
- package/coverage/lcov-report/utilities/users.js.html +9 -9
- package/coverage/lcov-report/utilities/workerRequests.js.html +112 -43
- package/coverage/lcov.info +4431 -5013
- package/dist/api/controllers/application.js +60 -90
- package/dist/api/controllers/auth.js +5 -8
- package/dist/api/controllers/automation.js +19 -14
- package/dist/api/controllers/cloud.js +3 -2
- package/dist/api/controllers/component.js +4 -3
- package/dist/api/controllers/datasource.js +10 -20
- package/dist/api/controllers/deploy/Deployment.js +6 -3
- package/dist/api/controllers/deploy/index.js +13 -12
- package/dist/api/controllers/dev.js +5 -5
- package/dist/api/controllers/hosting.js +30 -0
- package/dist/api/controllers/layout.js +3 -3
- package/dist/api/controllers/metadata.js +4 -4
- package/dist/api/controllers/permission.js +4 -4
- package/dist/api/controllers/query/import/index.js +6 -4
- package/dist/api/controllers/query/index.js +10 -11
- package/dist/api/controllers/role.js +5 -5
- package/dist/api/controllers/routing.js +6 -5
- package/dist/api/controllers/row/ExternalRequest.js +67 -90
- package/dist/api/controllers/row/external.js +22 -14
- package/dist/api/controllers/row/internal.js +93 -55
- package/dist/api/controllers/row/internalSearch.js +17 -23
- package/dist/api/controllers/row/utils.js +14 -13
- package/dist/api/controllers/screen.js +7 -5
- package/dist/api/controllers/static/index.js +12 -61
- package/dist/api/controllers/table/external.js +10 -7
- package/dist/api/controllers/table/index.js +13 -16
- package/dist/api/controllers/table/internal.js +16 -22
- package/dist/api/controllers/table/utils.js +35 -62
- package/dist/api/controllers/user.js +20 -18
- package/dist/api/controllers/view/index.js +10 -8
- package/dist/api/controllers/view/utils.js +4 -9
- package/dist/api/controllers/webhook.js +8 -10
- package/dist/api/routes/hosting.js +11 -0
- package/dist/api/routes/index.js +2 -2
- package/dist/api/routes/static.js +1 -2
- package/dist/api/routes/tests/utilities/TestFunctions.js +17 -37
- package/dist/app.js +5 -35
- package/dist/automations/automationUtils.js +3 -2
- package/dist/automations/steps/createRow.js +5 -3
- package/dist/automations/steps/deleteRow.js +4 -1
- package/dist/automations/steps/updateRow.js +1 -1
- package/dist/automations/triggers.js +25 -27
- package/dist/automations/utils.js +5 -10
- package/dist/constants/index.js +0 -7
- package/dist/db/linkedRows/LinkController.js +7 -3
- package/dist/db/linkedRows/index.js +27 -16
- package/dist/db/linkedRows/linkUtils.js +6 -6
- package/dist/db/views/staticViews.js +10 -9
- package/dist/definitions/datasource.js +0 -1
- package/dist/environment.js +1 -4
- package/dist/integrations/base/sql.js +14 -56
- package/dist/integrations/index.js +0 -3
- package/dist/integrations/utils.js +9 -60
- package/dist/middleware/authorized.js +30 -57
- package/dist/middleware/builder.js +2 -2
- package/dist/middleware/currentapp.js +37 -41
- package/dist/middleware/usageQuota.js +15 -82
- package/dist/package.json +5 -8
- package/dist/tests/utilities/TestConfiguration.js +50 -80
- package/dist/threads/automation.js +11 -13
- package/dist/threads/query.js +11 -15
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/index.js +3 -4
- package/dist/utilities/global.js +12 -15
- package/dist/utilities/index.js +17 -7
- package/dist/utilities/routing/index.js +5 -5
- package/dist/utilities/rowProcessor/index.js +17 -23
- package/dist/utilities/rowProcessor/utils.js +4 -14
- package/dist/utilities/{usageQuota/index.js → usageQuota.js} +31 -45
- package/dist/utilities/users.js +3 -3
- package/dist/utilities/workerRequests.js +24 -4
- package/nodemon.json +1 -1
- package/package.json +6 -9
- package/scripts/integrations/postgres/init.sql +6 -11
- package/scripts/likeCypress.ts +1 -1
- package/src/api/controllers/application.js +50 -85
- package/src/api/controllers/auth.js +5 -8
- package/src/api/controllers/automation.js +23 -13
- package/src/api/controllers/cloud.js +3 -2
- package/src/api/controllers/component.js +4 -3
- package/src/api/controllers/datasource.js +11 -21
- package/src/api/controllers/deploy/Deployment.js +7 -3
- package/src/api/controllers/deploy/index.js +13 -20
- package/src/api/controllers/dev.js +5 -5
- package/src/api/controllers/hosting.js +22 -0
- package/src/api/controllers/layout.js +3 -3
- package/src/api/controllers/metadata.js +9 -4
- package/src/api/controllers/permission.js +4 -4
- package/src/api/controllers/query/import/index.ts +6 -4
- package/src/api/controllers/query/import/tests/index.spec.js +1 -2
- package/src/api/controllers/query/index.js +10 -11
- package/src/api/controllers/role.js +5 -5
- package/src/api/controllers/routing.js +6 -5
- package/src/api/controllers/row/ExternalRequest.ts +43 -67
- package/src/api/controllers/row/external.js +58 -27
- package/src/api/controllers/row/internal.js +90 -54
- package/src/api/controllers/row/internalSearch.js +17 -23
- package/src/api/controllers/row/utils.js +18 -13
- package/src/api/controllers/screen.js +7 -5
- package/src/api/controllers/static/index.js +12 -65
- package/src/api/controllers/table/external.js +10 -7
- package/src/api/controllers/table/index.js +28 -20
- package/src/api/controllers/table/internal.js +19 -24
- package/src/api/controllers/table/utils.js +42 -78
- package/src/api/controllers/user.js +20 -19
- package/src/api/controllers/view/index.js +10 -8
- package/src/api/controllers/view/utils.js +4 -9
- package/src/api/controllers/webhook.js +8 -10
- package/src/api/routes/hosting.js +13 -0
- package/src/api/routes/index.js +2 -2
- package/src/api/routes/static.js +0 -5
- package/src/api/routes/tests/application.spec.js +2 -2
- package/src/api/routes/tests/auth.spec.js +2 -1
- package/src/api/routes/tests/automation.spec.js +0 -1
- package/src/api/routes/tests/hosting.spec.js +36 -0
- package/src/api/routes/tests/misc.spec.js +1 -0
- package/src/api/routes/tests/routing.spec.js +12 -21
- package/src/api/routes/tests/row.spec.js +4 -7
- package/src/api/routes/tests/utilities/TestFunctions.js +17 -39
- package/src/app.ts +5 -18
- package/src/automations/automationUtils.js +3 -2
- package/src/automations/steps/createRow.js +5 -2
- package/src/automations/steps/deleteRow.js +4 -1
- package/src/automations/steps/updateRow.js +1 -1
- package/src/automations/triggers.js +31 -33
- package/src/automations/utils.js +5 -9
- package/src/constants/index.js +0 -9
- package/src/db/linkedRows/LinkController.js +7 -3
- package/src/db/linkedRows/index.js +31 -16
- package/src/db/linkedRows/linkUtils.js +6 -6
- package/src/db/tests/linkController.spec.js +1 -0
- package/src/db/tests/linkTests.spec.js +6 -5
- package/src/db/views/staticViews.js +10 -8
- package/src/definitions/common.ts +0 -3
- package/src/definitions/datasource.ts +0 -3
- package/src/environment.js +1 -4
- package/src/integrations/base/sql.ts +21 -69
- package/src/integrations/index.ts +0 -3
- package/src/integrations/tests/sql.spec.js +0 -16
- package/src/integrations/utils.ts +12 -75
- package/src/middleware/authorized.js +30 -66
- package/src/middleware/builder.js +2 -2
- package/src/middleware/currentapp.js +46 -50
- package/src/middleware/tests/authorized.spec.js +6 -13
- package/src/middleware/tests/currentapp.spec.js +0 -6
- package/src/middleware/tests/usageQuota.spec.js +24 -18
- package/src/middleware/usageQuota.js +17 -93
- package/src/tests/utilities/TestConfiguration.js +55 -82
- package/src/threads/automation.js +15 -17
- package/src/threads/query.js +12 -17
- package/src/utilities/fileSystem/index.js +3 -4
- package/src/utilities/global.js +12 -15
- package/src/utilities/index.js +17 -7
- package/src/utilities/routing/index.js +5 -5
- package/src/utilities/rowProcessor/index.js +27 -25
- package/src/utilities/rowProcessor/utils.js +7 -23
- package/src/utilities/usageQuota.js +73 -0
- package/src/utilities/users.js +3 -3
- package/src/utilities/workerRequests.js +27 -4
- package/tsconfig.json +1 -2
- package/builder/assets/index.83c0944f.css +0 -1
- package/coverage/lcov-report/api/controllers/migrations.js.html +0 -119
- package/coverage/lcov-report/api/controllers/row/staticFormula.js.html +0 -548
- package/coverage/lcov-report/api/controllers/table/bulkFormula.js.html +0 -599
- package/coverage/lcov-report/utilities/usageQuota/index.html +0 -141
- package/coverage/lcov-report/utilities/usageQuota/index.js.html +0 -359
- package/coverage/lcov-report/utilities/usageQuota/rows.js.html +0 -305
- package/dist/api/controllers/migrations.js +0 -21
- package/dist/api/controllers/row/staticFormula.js +0 -147
- package/dist/api/controllers/table/bulkFormula.js +0 -159
- package/dist/api/routes/migrations.js +0 -9
- package/dist/integrations/googlesheets.js +0 -340
- package/dist/migrations/functions/appUrls.js +0 -46
- package/dist/migrations/functions/quotas1.js +0 -50
- package/dist/migrations/functions/usageQuotas/index.js +0 -20
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -29
- package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
- package/dist/migrations/functions/userEmailViewCasing.js +0 -24
- package/dist/migrations/index.js +0 -62
- package/dist/utilities/usageQuota/rows.js +0 -78
- package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
- package/src/api/controllers/migrations.js +0 -13
- package/src/api/controllers/row/staticFormula.js +0 -156
- package/src/api/controllers/table/bulkFormula.js +0 -173
- package/src/api/routes/migrations.js +0 -14
- package/src/api/routes/tests/static.spec.js +0 -98
- package/src/integrations/googlesheets.ts +0 -353
- package/src/migrations/functions/appUrls.ts +0 -34
- package/src/migrations/functions/quotas1.ts +0 -20
- package/src/migrations/functions/tests/appUrls.spec.js +0 -29
- package/src/migrations/functions/tests/quotas1.spec.js +0 -27
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +0 -25
- package/src/migrations/functions/usageQuotas/index.ts +0 -8
- package/src/migrations/functions/usageQuotas/syncApps.ts +0 -18
- package/src/migrations/functions/usageQuotas/syncRows.ts +0 -22
- package/src/migrations/functions/usageQuotas/tests/syncApps.spec.js +0 -37
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.js +0 -43
- package/src/migrations/functions/userEmailViewCasing.ts +0 -13
- package/src/migrations/index.ts +0 -56
- package/src/module.d.ts +0 -3
- package/src/utilities/tests/usageQuota/usageQuota.spec.js +0 -72
- package/src/utilities/usageQuota/index.js +0 -93
- package/src/utilities/usageQuota/rows.js +0 -75
- package/src/utilities/usageQuota/usageQuoteReset.js +0 -18
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>34/34</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">89.28% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>28
|
|
35
|
+
<span class='fraction'>25/28</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>4/4</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>34/34</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -127,43 +127,7 @@
|
|
|
127
127
|
<a name='L68'></a><a href='#L68'>68</a>
|
|
128
128
|
<a name='L69'></a><a href='#L69'>69</a>
|
|
129
129
|
<a name='L70'></a><a href='#L70'>70</a>
|
|
130
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
131
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
132
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
133
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
134
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
135
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
136
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
137
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
138
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
139
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
140
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
141
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
142
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
143
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
144
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
145
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
146
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
147
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
148
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
149
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
150
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
151
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
152
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
153
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
154
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
155
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
156
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
157
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
158
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
159
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
160
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
161
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
162
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
163
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
164
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
165
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
166
|
-
<a name='L107'></a><a href='#L107'>107</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
130
|
+
<a name='L71'></a><a href='#L71'>71</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
167
131
|
<span class="cline-any cline-neutral"> </span>
|
|
168
132
|
<span class="cline-any cline-neutral"> </span>
|
|
169
133
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -174,100 +138,64 @@
|
|
|
174
138
|
<span class="cline-any cline-yes">24x</span>
|
|
175
139
|
<span class="cline-any cline-yes">24x</span>
|
|
176
140
|
<span class="cline-any cline-yes">24x</span>
|
|
177
|
-
<span class="cline-any cline-yes">24x</span>
|
|
178
|
-
<span class="cline-any cline-yes">24x</span>
|
|
179
141
|
<span class="cline-any cline-neutral"> </span>
|
|
180
142
|
<span class="cline-any cline-neutral"> </span>
|
|
181
|
-
<span class="cline-any cline-yes">
|
|
143
|
+
<span class="cline-any cline-yes">7x</span>
|
|
182
144
|
<span class="cline-any cline-neutral"> </span>
|
|
183
145
|
<span class="cline-any cline-neutral"> </span>
|
|
184
146
|
<span class="cline-any cline-yes">24x</span>
|
|
185
147
|
<span class="cline-any cline-neutral"> </span>
|
|
148
|
+
<span class="cline-any cline-yes">2338x</span>
|
|
186
149
|
<span class="cline-any cline-neutral"> </span>
|
|
187
150
|
<span class="cline-any cline-neutral"> </span>
|
|
151
|
+
<span class="cline-any cline-yes">160x</span>
|
|
152
|
+
<span class="cline-any cline-yes">1x</span>
|
|
188
153
|
<span class="cline-any cline-neutral"> </span>
|
|
189
154
|
<span class="cline-any cline-neutral"> </span>
|
|
190
|
-
<span class="cline-any cline-
|
|
191
|
-
<span class="cline-any cline-
|
|
192
|
-
<span class="cline-any cline-yes">24x</span>
|
|
193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
194
|
-
<span class="cline-any cline-yes">156x</span>
|
|
195
|
-
<span class="cline-any cline-yes">156x</span>
|
|
196
|
-
<span class="cline-any cline-yes">156x</span>
|
|
197
|
-
<span class="cline-any cline-yes">28x</span>
|
|
198
|
-
<span class="cline-any cline-neutral"> </span>
|
|
199
|
-
<span class="cline-any cline-neutral"> </span>
|
|
200
|
-
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-yes">128x</span>
|
|
202
|
-
<span class="cline-any cline-yes">3x</span>
|
|
203
|
-
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-neutral"> </span>
|
|
205
|
-
<span class="cline-any cline-neutral"> </span>
|
|
206
|
-
<span class="cline-any cline-yes">24x</span>
|
|
207
|
-
<span class="cline-any cline-neutral"> </span>
|
|
155
|
+
<span class="cline-any cline-yes">159x</span>
|
|
156
|
+
<span class="cline-any cline-yes">1x</span>
|
|
208
157
|
<span class="cline-any cline-neutral"> </span>
|
|
209
158
|
<span class="cline-any cline-neutral"> </span>
|
|
210
159
|
<span class="cline-any cline-neutral"> </span>
|
|
211
160
|
<span class="cline-any cline-neutral"> </span>
|
|
161
|
+
<span class="cline-any cline-yes">158x</span>
|
|
212
162
|
<span class="cline-any cline-neutral"> </span>
|
|
213
|
-
<span class="cline-any cline-yes">
|
|
214
|
-
<span class="cline-any cline-yes">3x</span>
|
|
163
|
+
<span class="cline-any cline-yes">158x</span>
|
|
215
164
|
<span class="cline-any cline-neutral"> </span>
|
|
165
|
+
<span class="cline-any cline-yes">158x</span>
|
|
166
|
+
<span class="cline-any cline-yes">158x</span>
|
|
167
|
+
<span class="cline-any cline-yes">158x</span>
|
|
168
|
+
<span class="cline-any cline-yes">122x</span>
|
|
169
|
+
<span class="cline-any cline-yes">36x</span>
|
|
170
|
+
<span class="cline-any cline-yes">29x</span>
|
|
216
171
|
<span class="cline-any cline-neutral"> </span>
|
|
217
|
-
<span class="cline-any cline-yes">3x</span>
|
|
218
172
|
<span class="cline-any cline-neutral"> </span>
|
|
219
|
-
<span class="cline-any cline-yes">3x</span>
|
|
220
173
|
<span class="cline-any cline-neutral"> </span>
|
|
221
|
-
<span class="cline-any cline-
|
|
222
|
-
<span class="cline-any cline-
|
|
223
|
-
<span class="cline-any cline-no"> </span>
|
|
174
|
+
<span class="cline-any cline-yes">7x</span>
|
|
175
|
+
<span class="cline-any cline-yes">7x</span>
|
|
224
176
|
<span class="cline-any cline-neutral"> </span>
|
|
225
177
|
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-yes">
|
|
178
|
+
<span class="cline-any cline-yes">7x</span>
|
|
179
|
+
<span class="cline-any cline-yes">7x</span>
|
|
180
|
+
<span class="cline-any cline-yes">7x</span>
|
|
227
181
|
<span class="cline-any cline-yes">3x</span>
|
|
228
182
|
<span class="cline-any cline-neutral"> </span>
|
|
229
183
|
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-
|
|
231
|
-
<span class="cline-any cline-yes">24x</span>
|
|
232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-yes">2338x</span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-yes">162x</span>
|
|
184
|
+
<span class="cline-any cline-yes">7x</span>
|
|
237
185
|
<span class="cline-any cline-yes">1x</span>
|
|
238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
240
|
-
<span class="cline-any cline-yes">161x</span>
|
|
241
186
|
<span class="cline-any cline-yes">1x</span>
|
|
242
187
|
<span class="cline-any cline-neutral"> </span>
|
|
243
|
-
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
246
|
-
<span class="cline-any cline-yes">160x</span>
|
|
247
|
-
<span class="cline-any cline-neutral"> </span>
|
|
248
|
-
<span class="cline-any cline-neutral"> </span>
|
|
249
|
-
<span class="cline-any cline-yes">160x</span>
|
|
250
|
-
<span class="cline-any cline-yes">160x</span>
|
|
251
|
-
<span class="cline-any cline-yes">160x</span>
|
|
252
|
-
<span class="cline-any cline-yes">55x</span>
|
|
253
|
-
<span class="cline-any cline-neutral"> </span>
|
|
254
|
-
<span class="cline-any cline-neutral"> </span>
|
|
255
|
-
<span class="cline-any cline-neutral"> </span>
|
|
256
|
-
<span class="cline-any cline-yes">160x</span>
|
|
257
|
-
<span class="cline-any cline-yes">160x</span>
|
|
258
188
|
<span class="cline-any cline-yes">1x</span>
|
|
189
|
+
<span class="cline-any cline-yes">6x</span>
|
|
190
|
+
<span class="cline-any cline-yes">6x</span>
|
|
259
191
|
<span class="cline-any cline-neutral"> </span>
|
|
260
192
|
<span class="cline-any cline-neutral"> </span>
|
|
261
193
|
<span class="cline-any cline-neutral"> </span>
|
|
262
|
-
<span class="cline-any cline-yes">
|
|
263
|
-
<span class="cline-any cline-yes">
|
|
264
|
-
<span class="cline-any cline-neutral"> </span>
|
|
194
|
+
<span class="cline-any cline-yes">4x</span>
|
|
195
|
+
<span class="cline-any cline-yes">4x</span>
|
|
265
196
|
<span class="cline-any cline-neutral"> </span>
|
|
266
197
|
<span class="cline-any cline-neutral"> </span>
|
|
267
|
-
<span class="cline-any cline-yes">
|
|
268
|
-
<span class="cline-any cline-neutral"> </span>
|
|
269
|
-
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-yes">129x</span>
|
|
198
|
+
<span class="cline-any cline-yes">4x</span>
|
|
271
199
|
<span class="cline-any cline-neutral"> </span>
|
|
272
200
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const {
|
|
273
201
|
getUserRoleHierarchy,
|
|
@@ -280,60 +208,11 @@ const {
|
|
|
280
208
|
} = require("@budibase/backend-core/permissions")
|
|
281
209
|
const builderMiddleware = require("./builder")
|
|
282
210
|
const { isWebhookEndpoint } = require("./utils")
|
|
283
|
-
const { buildCsrfMiddleware } = require("@budibase/backend-core/auth")
|
|
284
|
-
const { getAppId } = require("@budibase/backend-core/context")
|
|
285
211
|
|
|
286
212
|
function hasResource(ctx) {
|
|
287
213
|
return ctx.resourceId != null
|
|
288
214
|
}
|
|
289
215
|
|
|
290
|
-
const csrf = buildCsrfMiddleware()
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Apply authorization to the requested resource:
|
|
294
|
-
* - If this is a builder resource the user must be a builder.
|
|
295
|
-
* - Builders can access all resources.
|
|
296
|
-
* - Otherwise the user must have the required role.
|
|
297
|
-
*/
|
|
298
|
-
const checkAuthorized = async (ctx, resourceRoles, permType, permLevel) => {
|
|
299
|
-
// check if this is a builder api and the user is not a builder
|
|
300
|
-
const isBuilder = ctx.user && ctx.user.builder && ctx.user.builder.global
|
|
301
|
-
const isBuilderApi = permType === PermissionTypes.BUILDER
|
|
302
|
-
if (isBuilderApi && !isBuilder) {
|
|
303
|
-
return ctx.throw(403, "Not Authorized")
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
// check for resource authorization
|
|
307
|
-
if (!isBuilder) {
|
|
308
|
-
await checkAuthorizedResource(ctx, resourceRoles, permType, permLevel)
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
const checkAuthorizedResource = async (
|
|
313
|
-
ctx,
|
|
314
|
-
resourceRoles,
|
|
315
|
-
permType,
|
|
316
|
-
permLevel
|
|
317
|
-
) => {
|
|
318
|
-
// get the user's roles
|
|
319
|
-
const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC
|
|
320
|
-
const userRoles = await getUserRoleHierarchy(roleId, {
|
|
321
|
-
idOnly: false,
|
|
322
|
-
})
|
|
323
|
-
const permError = "User does not have permission"
|
|
324
|
-
// check if the user has the required role
|
|
325
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (resourceRoles.length > 0) {
|
|
326
|
-
// deny access if the user doesn't have the required resource role
|
|
327
|
-
const found = <span class="cstat-no" title="statement not covered" >userRoles.find(<span class="fstat-no" title="function not covered" >ro</span>le => <span class="cstat-no" title="statement not covered" >resourceRoles.indexOf(role._id) !== -1)</span></span>
|
|
328
|
-
<span class="cstat-no" title="statement not covered" > if (!found) {</span>
|
|
329
|
-
<span class="cstat-no" title="statement not covered" > ctx.throw(403, permError)</span>
|
|
330
|
-
}
|
|
331
|
-
// fallback to the base permissions when no resource roles are found
|
|
332
|
-
} else if (!doesHaveBasePermission(permType, permLevel, userRoles)) {
|
|
333
|
-
ctx.throw(403, permError)
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
|
|
337
216
|
module.exports =
|
|
338
217
|
(permType, permLevel = null) =>
|
|
339
218
|
async (ctx, next) => {
|
|
@@ -351,29 +230,42 @@ module.exports =
|
|
|
351
230
|
// to find API endpoints which are builder focused
|
|
352
231
|
await builderMiddleware(ctx, permType)
|
|
353
232
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
// if the resource is public, proceed
|
|
362
|
-
const isPublicResource = resourceRoles.includes(BUILTIN_ROLE_IDS.PUBLIC)
|
|
363
|
-
if (isPublicResource) {
|
|
233
|
+
const isAuthed = ctx.isAuthenticated
|
|
234
|
+
// builders for now have permission to do anything
|
|
235
|
+
let isBuilder = ctx.user && ctx.user.builder && ctx.user.builder.global
|
|
236
|
+
const isBuilderApi = permType === PermissionTypes.BUILDER
|
|
237
|
+
if (isBuilder) {
|
|
364
238
|
return next()
|
|
239
|
+
} else if (isBuilderApi && !isBuilder) {
|
|
240
|
+
return ctx.throw(403, "Not Authorized")
|
|
365
241
|
}
|
|
366
242
|
|
|
367
|
-
// check
|
|
368
|
-
|
|
369
|
-
|
|
243
|
+
// need to check this first, in-case public access, don't check authed until last
|
|
244
|
+
const roleId = ctx.roleId || BUILTIN_ROLE_IDS.PUBLIC
|
|
245
|
+
const hierarchy = await getUserRoleHierarchy(ctx.appId, roleId, {
|
|
246
|
+
idOnly: false,
|
|
247
|
+
})
|
|
248
|
+
const permError = "User does not have permission"
|
|
249
|
+
let possibleRoleIds = []
|
|
250
|
+
if (hasResource(ctx)) {
|
|
251
|
+
possibleRoleIds = await getRequiredResourceRole(ctx.appId, permLevel, ctx)
|
|
252
|
+
}
|
|
253
|
+
// check if we found a role, if not fallback to base permissions
|
|
254
|
+
if (possibleRoleIds.length > 0) {
|
|
255
|
+
const found = hierarchy.find(
|
|
256
|
+
role => possibleRoleIds.indexOf(role._id) !== -1
|
|
257
|
+
)
|
|
258
|
+
return found ? next() : <span class="branch-1 cbranch-no" title="branch not covered" >ctx.throw(403, permError)</span>
|
|
259
|
+
} else if (!doesHaveBasePermission(permType, permLevel, hierarchy)) {
|
|
260
|
+
ctx.throw(403, permError)
|
|
370
261
|
}
|
|
371
262
|
|
|
372
|
-
//
|
|
373
|
-
|
|
263
|
+
// if they are not authed, then anything using the authorized middleware will fail
|
|
264
|
+
if (!isAuthed) {
|
|
265
|
+
ctx.throw(403, "Session not authenticated")
|
|
266
|
+
}
|
|
374
267
|
|
|
375
|
-
|
|
376
|
-
return csrf(ctx, next)
|
|
268
|
+
return next()
|
|
377
269
|
}
|
|
378
270
|
</pre></td></tr></table></pre>
|
|
379
271
|
|
|
@@ -382,7 +274,7 @@ module.exports =
|
|
|
382
274
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
383
275
|
Code coverage generated by
|
|
384
276
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
385
|
-
at
|
|
277
|
+
at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
|
|
386
278
|
</div>
|
|
387
279
|
</div>
|
|
388
280
|
<script src="../prettify.js"></script>
|
|
@@ -196,17 +196,17 @@
|
|
|
196
196
|
<span class="cline-any cline-neutral"> </span>
|
|
197
197
|
<span class="cline-any cline-neutral"> </span>
|
|
198
198
|
<span class="cline-any cline-yes">24x</span>
|
|
199
|
-
<span class="cline-any cline-yes">
|
|
199
|
+
<span class="cline-any cline-yes">158x</span>
|
|
200
200
|
<span class="cline-any cline-neutral"> </span>
|
|
201
|
-
<span class="cline-any cline-yes">
|
|
201
|
+
<span class="cline-any cline-yes">158x</span>
|
|
202
202
|
<span class="cline-any cline-yes">5x</span>
|
|
203
203
|
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-yes">
|
|
205
|
-
<span class="cline-any cline-yes">
|
|
206
|
-
<span class="cline-any cline-yes">
|
|
204
|
+
<span class="cline-any cline-yes">153x</span>
|
|
205
|
+
<span class="cline-any cline-yes">153x</span>
|
|
206
|
+
<span class="cline-any cline-yes">153x</span>
|
|
207
207
|
<span class="cline-any cline-neutral"> </span>
|
|
208
|
-
<span class="cline-any cline-yes">
|
|
209
|
-
<span class="cline-any cline-yes">
|
|
208
|
+
<span class="cline-any cline-yes">153x</span>
|
|
209
|
+
<span class="cline-any cline-yes">152x</span>
|
|
210
210
|
<span class="cline-any cline-neutral"> </span>
|
|
211
211
|
<span class="cline-any cline-neutral"> </span>
|
|
212
212
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -220,7 +220,7 @@ const {
|
|
|
220
220
|
checkDebounce,
|
|
221
221
|
setDebounce,
|
|
222
222
|
} = require("../utilities/redis")
|
|
223
|
-
const
|
|
223
|
+
const CouchDB = require("../db")
|
|
224
224
|
const { DocumentTypes } = require("../db/utils")
|
|
225
225
|
const { PermissionTypes } = require("@budibase/backend-core/permissions")
|
|
226
226
|
const { app: appCache } = require("@budibase/backend-core/cache")
|
|
@@ -263,7 +263,7 @@ async function updateAppUpdatedAt(ctx) {
|
|
|
263
263
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (ctx.method === "GET" || (await checkDebounce(appId))) {
|
|
264
264
|
<span class="cstat-no" title="statement not covered" > return</span>
|
|
265
265
|
}
|
|
266
|
-
const db =
|
|
266
|
+
const db = new CouchDB(appId)
|
|
267
267
|
const metadata = await db.get(DocumentTypes.APP_METADATA)
|
|
268
268
|
metadata.updatedAt = new Date().toISOString()
|
|
269
269
|
const response = await db.put(metadata)
|
|
@@ -298,7 +298,7 @@ module.exports = async (ctx, permType) => {
|
|
|
298
298
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
299
299
|
Code coverage generated by
|
|
300
300
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
301
|
-
at
|
|
301
|
+
at Fri Feb 04 2022 12:19:28 GMT+0000 (Coordinated Universal Time)
|
|
302
302
|
</div>
|
|
303
303
|
</div>
|
|
304
304
|
<script src="../prettify.js"></script>
|