@budibase/server 2.1.31 → 2.1.32-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.
- package/__mocks__/aws-sdk.ts +14 -0
- package/__mocks__/node-fetch.ts +5 -1
- package/builder/assets/{index.6e202eba.js → index.3a6f5b99.js} +270 -270
- package/builder/assets/{index.534f6c29.css → index.7176fd99.css} +1 -1
- package/builder/index.html +2 -2
- package/coverage/clover.xml +9664 -2787
- package/coverage/coverage-final.json +162 -19
- package/coverage/lcov-report/index.html +621 -126
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +190 -0
- package/coverage/lcov-report/{api → src/api}/controllers/apikeys.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/application.ts.html +1981 -0
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +301 -0
- package/coverage/lcov-report/{api → src/api}/controllers/automation.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +148 -0
- package/coverage/lcov-report/{api → src/api}/controllers/cloud.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/component.ts.html +256 -0
- package/coverage/lcov-report/{api → src/api}/controllers/datasource.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.js.html +250 -0
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +730 -0
- package/coverage/lcov-report/{api/controllers/dev.js.html → src/api/controllers/dev.ts.html} +53 -71
- package/coverage/lcov-report/{api → src/api}/controllers/index.html +134 -29
- package/coverage/lcov-report/{api → src/api}/controllers/integration.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/layout.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/metadata.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/migrations.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/permission.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +130 -0
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +310 -0
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +206 -0
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +487 -0
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +253 -0
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +97 -0
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +121 -0
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +142 -0
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +334 -0
- package/coverage/lcov-report/src/api/controllers/public/index.html +191 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +181 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +191 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +124 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +202 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +178 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +163 -0
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +181 -0
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +145 -0
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +328 -0
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +253 -0
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +268 -0
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +220 -0
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +376 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +379 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +157 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +403 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +146 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +586 -0
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +712 -0
- package/coverage/lcov-report/src/api/controllers/query/index.html +131 -0
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +976 -0
- package/coverage/lcov-report/{api → src/api}/controllers/query/validation.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/role.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/routing.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +2332 -0
- package/coverage/lcov-report/{api → src/api}/controllers/row/external.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/row/index.html +48 -18
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +541 -0
- package/coverage/lcov-report/{api → src/api}/controllers/row/internal.js.html +12 -12
- package/coverage/lcov-report/{api → src/api}/controllers/row/internalSearch.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/row/staticFormula.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/row/utils.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +451 -0
- package/coverage/lcov-report/{api → src/api}/controllers/script.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/static/index.html +116 -0
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +700 -0
- package/coverage/lcov-report/{api → src/api}/controllers/table/bulkFormula.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/table/external.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/table/index.html +49 -19
- package/coverage/lcov-report/{api → src/api}/controllers/table/index.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +664 -0
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +1240 -0
- package/coverage/lcov-report/{api → src/api}/controllers/templates.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/user.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/view/exporters.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/view/index.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/view/index.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/view/utils.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/controllers/view/viewBuilder.js.html +10 -10
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +379 -0
- package/coverage/lcov-report/{api → src/api}/index.html +10 -10
- package/coverage/lcov-report/{api → src/api}/index.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/analytics.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/apikeys.js.html +10 -10
- package/coverage/lcov-report/src/api/routes/application.ts.html +199 -0
- package/coverage/lcov-report/src/api/routes/auth.ts.html +109 -0
- package/coverage/lcov-report/{api → src/api}/routes/automation.js.html +14 -14
- package/coverage/lcov-report/src/api/routes/backup.ts.html +115 -0
- package/coverage/lcov-report/{api → src/api}/routes/cloud.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/component.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/datasource.js.html +15 -15
- package/coverage/lcov-report/{api → src/api}/routes/deploy.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/dev.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/index.html +137 -17
- package/coverage/lcov-report/src/api/routes/index.ts.html +289 -0
- package/coverage/lcov-report/{api → src/api}/routes/integration.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/layout.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/metadata.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/migrations.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/permission.js.html +10 -10
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +127 -0
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +541 -0
- package/coverage/lcov-report/src/api/routes/public/index.html +191 -0
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +502 -0
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +116 -0
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +328 -0
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +313 -0
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +598 -0
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +586 -0
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +511 -0
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +238 -0
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +116 -0
- package/coverage/lcov-report/{api → src/api}/routes/query.js.html +15 -15
- package/coverage/lcov-report/{api → src/api}/routes/role.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/routing.js.html +10 -10
- package/coverage/lcov-report/src/api/routes/row.ts.html +889 -0
- package/coverage/lcov-report/{api → src/api}/routes/screen.js.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/script.js.html +10 -10
- package/coverage/lcov-report/src/api/routes/static.ts.html +289 -0
- package/coverage/lcov-report/{api → src/api}/routes/table.js.html +13 -13
- package/coverage/lcov-report/{api → src/api}/routes/templates.js.html +10 -10
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +556 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +131 -0
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.js.html +367 -0
- package/coverage/lcov-report/{api → src/api}/routes/user.js.html +20 -20
- package/coverage/lcov-report/{api → src/api}/routes/utils/index.html +10 -10
- package/coverage/lcov-report/{api → src/api}/routes/utils/validators.js.html +15 -15
- package/coverage/lcov-report/{api → src/api}/routes/view.js.html +13 -13
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +166 -0
- package/coverage/lcov-report/src/app.ts.html +403 -0
- package/coverage/lcov-report/{automations → src/automations}/actions.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/automationUtils.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/bullboard.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/index.html +34 -19
- package/coverage/lcov-report/{automations → src/automations}/index.js.html +10 -10
- package/coverage/lcov-report/src/automations/logging/index.html +116 -0
- package/coverage/lcov-report/src/automations/logging/index.ts.html +199 -0
- package/coverage/lcov-report/{automations → src/automations}/steps/bash.js.html +10 -10
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +367 -0
- package/coverage/lcov-report/{automations → src/automations}/steps/delay.js.html +10 -10
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +334 -0
- package/coverage/lcov-report/{automations → src/automations}/steps/discord.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/executeQuery.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/executeScript.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/filter.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/index.html +56 -26
- package/coverage/lcov-report/{automations → src/automations}/steps/integromat.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/loop.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/outgoingWebhook.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/queryRows.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/sendSmtpEmail.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/serverLog.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/slack.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/updateRow.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/steps/utils.js.html +19 -19
- package/coverage/lcov-report/{automations → src/automations}/steps/zapier.js.html +10 -10
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +116 -0
- package/coverage/lcov-report/src/automations/tests/utilities/index.js.html +256 -0
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/app.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/cron.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/index.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/index.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/rowDeleted.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/rowSaved.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/rowUpdated.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggerInfo/webhook.js.html +10 -10
- package/coverage/lcov-report/{automations → src/automations}/triggers.js.html +10 -10
- package/coverage/lcov-report/src/automations/utils.ts.html +886 -0
- package/coverage/lcov-report/{constants → src/constants}/index.html +10 -10
- package/coverage/lcov-report/{constants → src/constants}/index.js.html +10 -10
- package/coverage/lcov-report/{constants → src/constants}/layouts.js.html +10 -10
- package/coverage/lcov-report/{constants → src/constants}/screens.js.html +10 -10
- package/coverage/lcov-report/src/db/dynamoClient.js.html +466 -0
- package/coverage/lcov-report/{db → src/db}/inMemoryView.js.html +12 -12
- package/coverage/lcov-report/{db → src/db}/index.html +42 -27
- package/coverage/lcov-report/{db → src/db}/index.js.html +18 -18
- package/coverage/lcov-report/{db → src/db}/linkedRows/LinkController.js.html +10 -10
- package/coverage/lcov-report/{db → src/db}/linkedRows/index.html +10 -10
- package/coverage/lcov-report/{db → src/db}/linkedRows/index.js.html +10 -10
- package/coverage/lcov-report/{db → src/db}/linkedRows/linkUtils.js.html +10 -10
- package/coverage/lcov-report/{db → src/db}/newid.js.html +10 -10
- package/coverage/lcov-report/{db/utils.js.html → src/db/utils.ts.html} +104 -152
- package/coverage/lcov-report/src/definitions/automations.ts.html +181 -0
- package/coverage/lcov-report/src/definitions/datasource.ts.html +235 -0
- package/coverage/lcov-report/src/definitions/index.html +131 -0
- package/coverage/lcov-report/src/environment.js.html +445 -0
- package/coverage/lcov-report/{events → src/events}/AutomationEmitter.js.html +10 -10
- package/coverage/lcov-report/{events → src/events}/index.html +10 -10
- package/coverage/lcov-report/{events → src/events}/index.js.html +10 -10
- package/coverage/lcov-report/{events → src/events}/utils.js.html +10 -10
- package/coverage/lcov-report/src/index.html +206 -0
- package/coverage/lcov-report/src/index.ts.html +133 -0
- package/coverage/lcov-report/src/integrations/airtable.ts.html +529 -0
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +415 -0
- package/coverage/lcov-report/src/integrations/base/index.html +161 -0
- package/coverage/lcov-report/src/integrations/base/query.ts.html +133 -0
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +1951 -0
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +691 -0
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +121 -0
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +406 -0
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +745 -0
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +634 -0
- package/coverage/lcov-report/src/integrations/firebase.ts.html +646 -0
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1312 -0
- package/coverage/lcov-report/src/integrations/index.html +371 -0
- package/coverage/lcov-report/src/integrations/index.ts.html +433 -0
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1006 -0
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +1867 -0
- package/coverage/lcov-report/src/integrations/mysql.ts.html +952 -0
- package/coverage/lcov-report/src/integrations/oracle.ts.html +1474 -0
- package/coverage/lcov-report/src/integrations/postgres.ts.html +1069 -0
- package/coverage/lcov-report/src/integrations/queries/index.html +116 -0
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +463 -0
- package/coverage/lcov-report/src/integrations/redis.ts.html +550 -0
- package/coverage/lcov-report/src/integrations/rest.ts.html +1381 -0
- package/coverage/lcov-report/src/integrations/s3.ts.html +862 -0
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +376 -0
- package/coverage/lcov-report/{integrations → src/integrations}/tests/TestConfiguration.js.html +10 -10
- package/coverage/lcov-report/{integrations → src/integrations}/tests/index.html +10 -10
- package/coverage/lcov-report/src/integrations/utils.ts.html +1006 -0
- package/coverage/lcov-report/{middleware/appInfo.js.html → src/middleware/appInfo.ts.html} +31 -28
- package/coverage/lcov-report/src/middleware/authorized.ts.html +481 -0
- package/coverage/lcov-report/{middleware/builder.js.html → src/middleware/builder.ts.html} +43 -37
- package/coverage/lcov-report/{middleware/currentapp.js.html → src/middleware/currentapp.ts.html} +77 -68
- package/coverage/lcov-report/{middleware → src/middleware}/index.html +78 -63
- package/coverage/lcov-report/{middleware/joi-validator.js.html → src/middleware/joi-validator.ts.html} +25 -22
- package/coverage/lcov-report/{middleware/publicApi.js.html → src/middleware/publicApi.ts.html} +24 -24
- package/coverage/lcov-report/{middleware/resourceId.js.html → src/middleware/resourceId.ts.html} +40 -25
- package/coverage/lcov-report/{middleware/selfhost.js.html → src/middleware/selfhost.ts.html} +25 -19
- package/coverage/lcov-report/{middleware/utils.js.html → src/middleware/utils.ts.html} +19 -13
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +187 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +163 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +206 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +172 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +226 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +151 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +166 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +532 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +283 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +146 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +265 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +232 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +724 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +106 -0
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +235 -0
- package/coverage/lcov-report/src/migrations/functions/index.html +146 -0
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +130 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +161 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +94 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +130 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +115 -0
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +172 -0
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +124 -0
- package/coverage/lcov-report/src/migrations/index.html +116 -0
- package/coverage/lcov-report/src/migrations/index.ts.html +403 -0
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +205 -0
- package/coverage/lcov-report/src/migrations/tests/index.html +131 -0
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +283 -0
- package/coverage/lcov-report/src/module.d.ts.html +127 -0
- package/coverage/lcov-report/src/sdk/app/automations/index.html +131 -0
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +100 -0
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +214 -0
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +91 -0
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +598 -0
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +694 -0
- package/coverage/lcov-report/src/sdk/app/backups/index.html +176 -0
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +112 -0
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +292 -0
- package/coverage/lcov-report/src/sdk/app/tables/index.html +116 -0
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +265 -0
- package/coverage/lcov-report/{utilities/routing → src/sdk}/index.html +10 -10
- package/coverage/lcov-report/src/sdk/index.ts.html +130 -0
- package/coverage/lcov-report/src/startup.ts.html +499 -0
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.js.html +1873 -0
- package/coverage/lcov-report/src/tests/utilities/controllers.js.html +133 -0
- package/coverage/lcov-report/src/tests/utilities/index.html +161 -0
- package/coverage/lcov-report/src/tests/utilities/index.js.html +118 -0
- package/coverage/lcov-report/src/tests/utilities/structures.js.html +652 -0
- package/coverage/lcov-report/src/threads/automation.ts.html +1597 -0
- package/coverage/lcov-report/src/threads/index.html +161 -0
- package/coverage/lcov-report/src/threads/index.ts.html +418 -0
- package/coverage/lcov-report/src/threads/query.ts.html +976 -0
- package/coverage/lcov-report/src/threads/utils.ts.html +376 -0
- package/coverage/lcov-report/{utilities → src/utilities}/budibaseDir.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/centralPath.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/csvParser.js.html +10 -10
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.js.html +547 -0
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +161 -0
- package/coverage/lcov-report/src/utilities/fileSystem/index.js.html +1141 -0
- package/coverage/lcov-report/src/utilities/fileSystem/processor.js.html +148 -0
- package/coverage/lcov-report/src/utilities/fileSystem/utilities.js.html +193 -0
- package/coverage/lcov-report/{utilities/global.js.html → src/utilities/global.ts.html} +107 -74
- package/coverage/lcov-report/{utilities → src/utilities}/index.html +42 -27
- package/coverage/lcov-report/{utilities → src/utilities}/index.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/plugins.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/queue/inMemoryQueue.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/queue/index.html +10 -10
- package/coverage/lcov-report/src/utilities/redis.js.html +340 -0
- package/coverage/lcov-report/{api/controllers/query → src/utilities/routing}/index.html +8 -8
- package/coverage/lcov-report/{utilities → src/utilities}/routing/index.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/rowProcessor/index.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/rowProcessor/index.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/rowProcessor/utils.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/scriptRunner.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/security.js.html +22 -22
- package/coverage/lcov-report/{utilities → src/utilities}/statusCodes.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/index.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/rows.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/usageQuota/usageQuoteReset.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/users.js.html +10 -10
- package/coverage/lcov-report/{utilities → src/utilities}/workerRequests.js.html +13 -13
- package/coverage/lcov-report/src/watch.ts.html +199 -0
- package/coverage/lcov-report/src/websocket.ts.html +163 -0
- package/coverage/lcov.info +17589 -5003
- package/dist/api/controllers/application.js +35 -43
- package/dist/api/controllers/deploy/index.js +13 -16
- package/dist/api/controllers/dev.js +96 -81
- package/dist/api/controllers/public/applications.js +17 -9
- package/dist/api/controllers/query/index.js +10 -13
- package/dist/api/controllers/row/ExternalRequest.js +6 -1
- package/dist/api/controllers/row/index.js +16 -7
- package/dist/api/controllers/row/internal.js +2 -2
- package/dist/api/controllers/table/internal.js +4 -4
- package/dist/api/routes/automation.js +3 -3
- package/dist/api/routes/datasource.js +4 -4
- package/dist/api/routes/public/index.js +9 -9
- package/dist/api/routes/query.js +4 -4
- package/dist/api/routes/row.js +11 -11
- package/dist/api/routes/static.js +3 -3
- package/dist/api/routes/table.js +2 -2
- package/dist/api/routes/user.js +9 -9
- package/dist/api/routes/utils/validators.js +4 -4
- package/dist/api/routes/view.js +2 -2
- package/dist/automations/tests/utilities/index.js +21 -12
- package/dist/automations/utils.js +9 -8
- package/dist/db/inMemoryView.js +2 -2
- package/dist/db/utils.js +145 -118
- package/dist/integrations/elasticsearch.js +26 -2
- package/dist/integrations/googlesheets.js +4 -6
- package/dist/integrations/s3.js +157 -1
- package/dist/middleware/appInfo.js +14 -9
- package/dist/middleware/authorized.js +5 -5
- package/dist/middleware/builder.js +41 -40
- package/dist/middleware/currentapp.js +39 -37
- package/dist/middleware/joi-validator.js +17 -10
- package/dist/middleware/publicApi.js +5 -6
- package/dist/middleware/resourceId.js +16 -9
- package/dist/middleware/selfhost.js +5 -4
- package/dist/middleware/utils.js +5 -2
- package/dist/migrations/functions/backfill/global.js +1 -1
- package/dist/migrations/functions/usageQuotas/syncRows.js +1 -1
- package/dist/package.json +10 -44
- package/dist/sdk/app/tables/index.js +4 -4
- package/dist/tests/utilities/TestConfiguration.js +12 -10
- package/dist/tests/utilities/structures.js +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/global.js +87 -66
- package/dist/utilities/security.js +10 -10
- package/dist/utilities/workerRequests.js +3 -3
- package/jest.config.ts +33 -0
- package/package.json +11 -45
- package/scripts/localdomain.js +34 -6
- package/src/api/controllers/application.ts +34 -39
- package/src/api/controllers/auth.ts +3 -2
- package/src/api/controllers/deploy/index.ts +13 -25
- package/src/api/controllers/{dev.js → dev.ts} +31 -37
- package/src/api/controllers/public/applications.ts +15 -9
- package/src/api/controllers/query/index.ts +11 -14
- package/src/api/controllers/row/ExternalRequest.ts +5 -3
- package/src/api/controllers/row/index.ts +17 -9
- package/src/api/controllers/row/internal.js +2 -2
- package/src/api/controllers/table/internal.ts +4 -4
- package/src/api/routes/automation.js +4 -4
- package/src/api/routes/datasource.js +5 -5
- package/src/api/routes/public/index.ts +10 -10
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/query.js +5 -5
- package/src/api/routes/row.ts +12 -12
- package/src/api/routes/static.ts +5 -5
- package/src/api/routes/table.js +3 -3
- package/src/api/routes/tests/analytics.spec.js +1 -1
- package/src/api/routes/tests/query.spec.js +15 -10
- package/src/api/routes/tests/role.spec.js +5 -5
- package/src/api/routes/tests/static.spec.js +2 -2
- package/src/api/routes/tests/table.spec.js +38 -35
- package/src/api/routes/user.js +10 -10
- package/src/api/routes/utils/validators.js +5 -5
- package/src/api/routes/view.js +3 -3
- package/src/automations/tests/updateRow.spec.js +0 -1
- package/src/automations/tests/utilities/index.js +10 -4
- package/src/automations/utils.ts +9 -12
- package/src/db/inMemoryView.js +2 -2
- package/src/db/tests/linkController.spec.js +73 -57
- package/src/db/tests/linkTests.spec.js +17 -14
- package/src/db/{utils.js → utils.ts} +76 -92
- package/src/integrations/elasticsearch.ts +32 -2
- package/src/integrations/googlesheets.ts +4 -7
- package/src/integrations/s3.ts +179 -3
- package/src/integrations/tests/s3.spec.ts +85 -1
- package/src/middleware/appInfo.ts +20 -0
- package/src/middleware/authorized.ts +6 -6
- package/src/middleware/{builder.js → builder.ts} +17 -15
- package/src/middleware/{currentapp.js → currentapp.ts} +42 -39
- package/src/middleware/{joi-validator.js → joi-validator.ts} +9 -8
- package/src/middleware/publicApi.ts +21 -0
- package/src/middleware/{resourceId.js → resourceId.ts} +16 -11
- package/src/middleware/{selfhost.js → selfhost.ts} +4 -2
- package/src/middleware/tests/authorized.spec.js +5 -5
- package/src/middleware/tests/currentapp.spec.js +118 -63
- package/src/middleware/{utils.js → utils.ts} +3 -1
- package/src/migrations/functions/backfill/app/tables.ts +2 -5
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/usageQuotas/syncRows.ts +2 -2
- package/src/sdk/app/backups/imports.ts +4 -7
- package/src/sdk/app/backups/statistics.ts +9 -18
- package/src/sdk/app/tables/index.ts +6 -7
- package/{scripts/jestSetup.js → src/tests/jestSetup.ts} +11 -2
- package/src/tests/utilities/TestConfiguration.js +12 -10
- package/src/tests/utilities/structures.js +2 -2
- package/src/threads/automation.ts +1 -1
- package/src/utilities/global.ts +138 -0
- package/src/utilities/security.js +12 -12
- package/src/utilities/workerRequests.js +3 -3
- package/tsconfig.json +3 -1
- package/src/middleware/appInfo.js +0 -19
- package/src/middleware/publicApi.js +0 -21
- package/src/utilities/global.js +0 -127
package/coverage/lcov-report/{api/controllers/dev.js.html → src/api/controllers/dev.ts.html}
RENAMED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers/dev.
|
|
6
|
+
<title>Code coverage report for src/api/controllers/dev.ts</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> dev.ts</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">56.33% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>40/71</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">18.18% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>2/11</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">38.46% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>5/
|
|
42
|
+
<span class='fraction'>5/13</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">58.82% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>40/68</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -192,15 +192,7 @@
|
|
|
192
192
|
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
193
|
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
194
|
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">44x</span>
|
|
202
|
-
<span class="cline-any cline-yes">44x</span>
|
|
203
|
-
<span class="cline-any cline-yes">44x</span>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">44x</span>
|
|
204
196
|
<span class="cline-any cline-yes">44x</span>
|
|
205
197
|
<span class="cline-any cline-yes">44x</span>
|
|
206
198
|
<span class="cline-any cline-yes">44x</span>
|
|
@@ -221,10 +213,6 @@
|
|
|
221
213
|
<span class="cline-any cline-neutral"> </span>
|
|
222
214
|
<span class="cline-any cline-neutral"> </span>
|
|
223
215
|
<span class="cline-any cline-neutral"> </span>
|
|
224
|
-
<span class="cline-any cline-neutral"> </span>
|
|
225
|
-
<span class="cline-any cline-neutral"> </span>
|
|
226
|
-
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-neutral"> </span>
|
|
228
216
|
<span class="cline-any cline-no"> </span>
|
|
229
217
|
<span class="cline-any cline-no"> </span>
|
|
230
218
|
<span class="cline-any cline-no"> </span>
|
|
@@ -333,39 +321,33 @@
|
|
|
333
321
|
<span class="cline-any cline-neutral"> </span>
|
|
334
322
|
<span class="cline-any cline-yes">1x</span>
|
|
335
323
|
<span class="cline-any cline-neutral"> </span>
|
|
336
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
const { getProdAppDB, getAppDB } = require("@budibase/backend-core/context")
|
|
345
|
-
const { events } = require("@budibase/backend-core")
|
|
324
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import fetch from "node-fetch"
|
|
325
|
+
import env from "../../environment"
|
|
326
|
+
import { checkSlashesInUrl } from "../../utilities"
|
|
327
|
+
import { request } from "../../utilities/workerRequests"
|
|
328
|
+
import { clearLock as redisClearLock } from "../../utilities/redis"
|
|
329
|
+
import { DocumentType } from "../../db/utils"
|
|
330
|
+
import { context } from "@budibase/backend-core"
|
|
331
|
+
import { events, db as dbCore, cache } from "@budibase/backend-core"
|
|
346
332
|
|
|
347
|
-
async function <span class="fstat-no" title="function not covered" >redirect(</span>ctx, method, path = <span class="branch-0 cbranch-no" title="branch not covered" >"global")</span> {
|
|
333
|
+
async function <span class="fstat-no" title="function not covered" >redirect(</span>ctx: any, method: string, path: string = <span class="branch-0 cbranch-no" title="branch not covered" >"global")</span> {
|
|
348
334
|
const { devPath } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
|
|
349
335
|
const queryString = <span class="cstat-no" title="statement not covered" >ctx.originalUrl.split("?")[1] || ""</span>
|
|
350
336
|
const response = <span class="cstat-no" title="statement not covered" >await fetch(</span>
|
|
351
337
|
checkSlashesInUrl(
|
|
352
338
|
`${env.WORKER_URL}/api/${path}/${devPath}?${queryString}`
|
|
353
339
|
),
|
|
354
|
-
request(
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
body: ctx.request.body,
|
|
359
|
-
},
|
|
360
|
-
true
|
|
361
|
-
)
|
|
340
|
+
request(ctx, {
|
|
341
|
+
method,
|
|
342
|
+
body: ctx.request.body,
|
|
343
|
+
})
|
|
362
344
|
)
|
|
363
|
-
<span class="cstat-no" title="statement not covered" > if (response.status !== 200) {</span>
|
|
345
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (response.status !== 200) {</span>
|
|
364
346
|
const err = <span class="cstat-no" title="statement not covered" >await response.text()</span>
|
|
365
347
|
<span class="cstat-no" title="statement not covered" > ctx.throw(400, err)</span>
|
|
366
348
|
}
|
|
367
349
|
const cookie = <span class="cstat-no" title="statement not covered" >response.headers.get("set-cookie")</span>
|
|
368
|
-
<span class="cstat-no" title="statement not covered" > if (cookie) {</span>
|
|
350
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (cookie) {</span>
|
|
369
351
|
<span class="cstat-no" title="statement not covered" > ctx.set("set-cookie", cookie)</span>
|
|
370
352
|
}
|
|
371
353
|
let body
|
|
@@ -375,34 +357,34 @@ async function <span class="fstat-no" title="function not covered" >redirect(</s
|
|
|
375
357
|
// don't worry about errors, likely no JSON
|
|
376
358
|
}
|
|
377
359
|
<span class="cstat-no" title="statement not covered" > ctx.status = response.status</span>
|
|
378
|
-
<span class="cstat-no" title="statement not covered" > if (body) {</span>
|
|
360
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (body) {</span>
|
|
379
361
|
<span class="cstat-no" title="statement not covered" > ctx.body = body</span>
|
|
380
362
|
}
|
|
381
363
|
<span class="cstat-no" title="statement not covered" > ctx.cookies</span>
|
|
382
364
|
}
|
|
383
365
|
|
|
384
|
-
|
|
385
|
-
return <span class="fstat-no" title="function not covered" >
|
|
366
|
+
export function buildRedirectGet(path: string) {
|
|
367
|
+
return <span class="fstat-no" title="function not covered" >async (c</span>tx: any) =><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
|
|
386
368
|
<span class="cstat-no" title="statement not covered" > await redirect(ctx, "GET", path)</span>
|
|
387
369
|
}
|
|
388
370
|
}
|
|
389
371
|
|
|
390
|
-
|
|
391
|
-
return <span class="fstat-no" title="function not covered" >
|
|
372
|
+
export function buildRedirectPost(path: string) {
|
|
373
|
+
return <span class="fstat-no" title="function not covered" >async (c</span>tx: any) =><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
|
|
392
374
|
<span class="cstat-no" title="statement not covered" > await redirect(ctx, "POST", path)</span>
|
|
393
375
|
}
|
|
394
376
|
}
|
|
395
377
|
|
|
396
|
-
|
|
397
|
-
return <span class="fstat-no" title="function not covered" >
|
|
378
|
+
export function buildRedirectDelete(path: string) {
|
|
379
|
+
return <span class="fstat-no" title="function not covered" >async (c</span>tx: any) =><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > {</span></span>
|
|
398
380
|
<span class="cstat-no" title="statement not covered" > await redirect(ctx, "DELETE", path)</span>
|
|
399
381
|
}
|
|
400
382
|
}
|
|
401
383
|
|
|
402
|
-
|
|
384
|
+
export async function <span class="fstat-no" title="function not covered" >clearLock(</span>ctx: any) {
|
|
403
385
|
const { appId } = <span class="cstat-no" title="statement not covered" >ctx.params</span>
|
|
404
386
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
405
|
-
<span class="cstat-no" title="statement not covered" > await
|
|
387
|
+
<span class="cstat-no" title="statement not covered" > await redisClearLock(appId, ctx.user)</span>
|
|
406
388
|
} catch (err) {
|
|
407
389
|
<span class="cstat-no" title="statement not covered" > ctx.throw(400, `Unable to remove lock. ${err}`)</span>
|
|
408
390
|
}
|
|
@@ -411,16 +393,16 @@ exports.clearLock = <span class="fstat-no" title="function not covered" >as</spa
|
|
|
411
393
|
}
|
|
412
394
|
}
|
|
413
395
|
|
|
414
|
-
|
|
396
|
+
export async function revert(ctx: any) {
|
|
415
397
|
const { appId } = ctx.params
|
|
416
|
-
const productionAppId = getProdAppID(appId)
|
|
398
|
+
const productionAppId = dbCore.getProdAppID(appId)
|
|
417
399
|
|
|
418
400
|
// App must have been deployed first
|
|
419
401
|
try {
|
|
420
|
-
const db = getProdAppDB({ skip_setup: true })
|
|
421
|
-
const
|
|
422
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
423
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
402
|
+
const db = context.getProdAppDB({ skip_setup: true })
|
|
403
|
+
const exists = await db.exists()
|
|
404
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!exists) {
|
|
405
|
+
<span class="cstat-no" title="statement not covered" > throw new Error("App must be deployed to be reverted.")</span>
|
|
424
406
|
}
|
|
425
407
|
const deploymentDoc = await db.get(DocumentType.DEPLOYMENTS)
|
|
426
408
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
@@ -433,7 +415,7 @@ exports.revert = async ctx => {
|
|
|
433
415
|
<span class="cstat-no" title="statement not covered" > return ctx.throw(400, "App has not yet been deployed")</span>
|
|
434
416
|
}
|
|
435
417
|
|
|
436
|
-
const replication = new Replication({
|
|
418
|
+
const replication = new dbCore.Replication({
|
|
437
419
|
source: productionAppId,
|
|
438
420
|
target: appId,
|
|
439
421
|
})
|
|
@@ -444,12 +426,12 @@ exports.revert = async ctx => {
|
|
|
444
426
|
}
|
|
445
427
|
|
|
446
428
|
// update appID in reverted app to be dev version again
|
|
447
|
-
const db = getAppDB()
|
|
429
|
+
const db = context.getAppDB()
|
|
448
430
|
const appDoc = await db.get(DocumentType.APP_METADATA)
|
|
449
431
|
appDoc.appId = appId
|
|
450
432
|
appDoc.instance._id = appId
|
|
451
433
|
await db.put(appDoc)
|
|
452
|
-
await
|
|
434
|
+
await cache.app.invalidateAppMetadata(appId)
|
|
453
435
|
ctx.body = {
|
|
454
436
|
message: "Reverted changes successfully.",
|
|
455
437
|
}
|
|
@@ -461,7 +443,7 @@ exports.revert = async ctx => {
|
|
|
461
443
|
}
|
|
462
444
|
}
|
|
463
445
|
|
|
464
|
-
|
|
446
|
+
export async function getBudibaseVersion(ctx: any) {
|
|
465
447
|
const version = require("../../../package.json").version
|
|
466
448
|
ctx.body = {
|
|
467
449
|
version,
|
|
@@ -475,16 +457,16 @@ exports.getBudibaseVersion = async ctx => {
|
|
|
475
457
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
476
458
|
Code coverage generated by
|
|
477
459
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
478
|
-
at Mon Nov 21 2022
|
|
460
|
+
at Mon Nov 21 2022 15:34:22 GMT+0000 (Coordinated Universal Time)
|
|
479
461
|
</div>
|
|
480
|
-
<script src="
|
|
462
|
+
<script src="../../../prettify.js"></script>
|
|
481
463
|
<script>
|
|
482
464
|
window.onload = function () {
|
|
483
465
|
prettyPrint();
|
|
484
466
|
};
|
|
485
467
|
</script>
|
|
486
|
-
<script src="
|
|
487
|
-
<script src="
|
|
468
|
+
<script src="../../../sorter.js"></script>
|
|
469
|
+
<script src="../../../block-navigation.js"></script>
|
|
488
470
|
</body>
|
|
489
471
|
</html>
|
|
490
472
|
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers</title>
|
|
6
|
+
<title>Code coverage report for src/api/controllers</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> src/api/controllers</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">74.2% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>1024/1380</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">51.3% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>216/421</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">72.19% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>161/223</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">73.53% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>967/1315</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -79,6 +79,21 @@
|
|
|
79
79
|
</tr>
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
|
+
<td class="file high" data-value="analytics.ts"><a href="analytics.ts.html">analytics.ts</a></td>
|
|
83
|
+
<td data-value="100" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
85
|
+
</td>
|
|
86
|
+
<td data-value="100" class="pct high">100%</td>
|
|
87
|
+
<td data-value="24" class="abs high">24/24</td>
|
|
88
|
+
<td data-value="100" class="pct high">100%</td>
|
|
89
|
+
<td data-value="4" class="abs high">4/4</td>
|
|
90
|
+
<td data-value="100" class="pct high">100%</td>
|
|
91
|
+
<td data-value="4" class="abs high">4/4</td>
|
|
92
|
+
<td data-value="100" class="pct high">100%</td>
|
|
93
|
+
<td data-value="20" class="abs high">20/20</td>
|
|
94
|
+
</tr>
|
|
95
|
+
|
|
96
|
+
<tr>
|
|
82
97
|
<td class="file high" data-value="apikeys.js"><a href="apikeys.js.html">apikeys.js</a></td>
|
|
83
98
|
<td data-value="100" class="pic high">
|
|
84
99
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
@@ -93,6 +108,36 @@
|
|
|
93
108
|
<td data-value="24" class="abs high">24/24</td>
|
|
94
109
|
</tr>
|
|
95
110
|
|
|
111
|
+
<tr>
|
|
112
|
+
<td class="file high" data-value="application.ts"><a href="application.ts.html">application.ts</a></td>
|
|
113
|
+
<td data-value="85.58" class="pic high">
|
|
114
|
+
<div class="chart"><div class="cover-fill" style="width: 85%"></div><div class="cover-empty" style="width: 15%"></div></div>
|
|
115
|
+
</td>
|
|
116
|
+
<td data-value="85.58" class="pct high">85.58%</td>
|
|
117
|
+
<td data-value="333" class="abs high">285/333</td>
|
|
118
|
+
<td data-value="67.5" class="pct medium">67.5%</td>
|
|
119
|
+
<td data-value="120" class="abs medium">81/120</td>
|
|
120
|
+
<td data-value="94.91" class="pct high">94.91%</td>
|
|
121
|
+
<td data-value="59" class="abs high">56/59</td>
|
|
122
|
+
<td data-value="84.06" class="pct high">84.06%</td>
|
|
123
|
+
<td data-value="295" class="abs high">248/295</td>
|
|
124
|
+
</tr>
|
|
125
|
+
|
|
126
|
+
<tr>
|
|
127
|
+
<td class="file medium" data-value="auth.ts"><a href="auth.ts.html">auth.ts</a></td>
|
|
128
|
+
<td data-value="65.71" class="pic medium">
|
|
129
|
+
<div class="chart"><div class="cover-fill" style="width: 65%"></div><div class="cover-empty" style="width: 35%"></div></div>
|
|
130
|
+
</td>
|
|
131
|
+
<td data-value="65.71" class="pct medium">65.71%</td>
|
|
132
|
+
<td data-value="35" class="abs medium">23/35</td>
|
|
133
|
+
<td data-value="35.71" class="pct low">35.71%</td>
|
|
134
|
+
<td data-value="14" class="abs low">5/14</td>
|
|
135
|
+
<td data-value="100" class="pct high">100%</td>
|
|
136
|
+
<td data-value="2" class="abs high">2/2</td>
|
|
137
|
+
<td data-value="65.71" class="pct medium">65.71%</td>
|
|
138
|
+
<td data-value="35" class="abs medium">23/35</td>
|
|
139
|
+
</tr>
|
|
140
|
+
|
|
96
141
|
<tr>
|
|
97
142
|
<td class="file high" data-value="automation.js"><a href="automation.js.html">automation.js</a></td>
|
|
98
143
|
<td data-value="84.55" class="pic high">
|
|
@@ -108,6 +153,21 @@
|
|
|
108
153
|
<td data-value="131" class="abs high">110/131</td>
|
|
109
154
|
</tr>
|
|
110
155
|
|
|
156
|
+
<tr>
|
|
157
|
+
<td class="file high" data-value="backup.ts"><a href="backup.ts.html">backup.ts</a></td>
|
|
158
|
+
<td data-value="100" class="pic high">
|
|
159
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
160
|
+
</td>
|
|
161
|
+
<td data-value="100" class="pct high">100%</td>
|
|
162
|
+
<td data-value="17" class="abs high">17/17</td>
|
|
163
|
+
<td data-value="100" class="pct high">100%</td>
|
|
164
|
+
<td data-value="0" class="abs high">0/0</td>
|
|
165
|
+
<td data-value="100" class="pct high">100%</td>
|
|
166
|
+
<td data-value="3" class="abs high">3/3</td>
|
|
167
|
+
<td data-value="100" class="pct high">100%</td>
|
|
168
|
+
<td data-value="16" class="abs high">16/16</td>
|
|
169
|
+
</tr>
|
|
170
|
+
|
|
111
171
|
<tr>
|
|
112
172
|
<td class="file low" data-value="cloud.js"><a href="cloud.js.html">cloud.js</a></td>
|
|
113
173
|
<td data-value="21.42" class="pic low">
|
|
@@ -123,6 +183,21 @@
|
|
|
123
183
|
<td data-value="55" class="abs low">12/55</td>
|
|
124
184
|
</tr>
|
|
125
185
|
|
|
186
|
+
<tr>
|
|
187
|
+
<td class="file high" data-value="component.ts"><a href="component.ts.html">component.ts</a></td>
|
|
188
|
+
<td data-value="81.48" class="pic high">
|
|
189
|
+
<div class="chart"><div class="cover-fill" style="width: 81%"></div><div class="cover-empty" style="width: 19%"></div></div>
|
|
190
|
+
</td>
|
|
191
|
+
<td data-value="81.48" class="pct high">81.48%</td>
|
|
192
|
+
<td data-value="27" class="abs high">22/27</td>
|
|
193
|
+
<td data-value="100" class="pct high">100%</td>
|
|
194
|
+
<td data-value="2" class="abs high">2/2</td>
|
|
195
|
+
<td data-value="50" class="pct medium">50%</td>
|
|
196
|
+
<td data-value="6" class="abs medium">3/6</td>
|
|
197
|
+
<td data-value="81.48" class="pct high">81.48%</td>
|
|
198
|
+
<td data-value="27" class="abs high">22/27</td>
|
|
199
|
+
</tr>
|
|
200
|
+
|
|
126
201
|
<tr>
|
|
127
202
|
<td class="file medium" data-value="datasource.js"><a href="datasource.js.html">datasource.js</a></td>
|
|
128
203
|
<td data-value="57.93" class="pic medium">
|
|
@@ -139,18 +214,18 @@
|
|
|
139
214
|
</tr>
|
|
140
215
|
|
|
141
216
|
<tr>
|
|
142
|
-
<td class="file medium" data-value="dev.
|
|
143
|
-
<td data-value="
|
|
144
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
217
|
+
<td class="file medium" data-value="dev.ts"><a href="dev.ts.html">dev.ts</a></td>
|
|
218
|
+
<td data-value="56.33" class="pic medium">
|
|
219
|
+
<div class="chart"><div class="cover-fill" style="width: 56%"></div><div class="cover-empty" style="width: 44%"></div></div>
|
|
145
220
|
</td>
|
|
146
|
-
<td data-value="
|
|
147
|
-
<td data-value="
|
|
148
|
-
<td data-value="
|
|
149
|
-
<td data-value="
|
|
150
|
-
<td data-value="
|
|
151
|
-
<td data-value="
|
|
152
|
-
<td data-value="
|
|
153
|
-
<td data-value="
|
|
221
|
+
<td data-value="56.33" class="pct medium">56.33%</td>
|
|
222
|
+
<td data-value="71" class="abs medium">40/71</td>
|
|
223
|
+
<td data-value="18.18" class="pct low">18.18%</td>
|
|
224
|
+
<td data-value="11" class="abs low">2/11</td>
|
|
225
|
+
<td data-value="38.46" class="pct low">38.46%</td>
|
|
226
|
+
<td data-value="13" class="abs low">5/13</td>
|
|
227
|
+
<td data-value="58.82" class="pct medium">58.82%</td>
|
|
228
|
+
<td data-value="68" class="abs medium">40/68</td>
|
|
154
229
|
</tr>
|
|
155
230
|
|
|
156
231
|
<tr>
|
|
@@ -258,6 +333,21 @@
|
|
|
258
333
|
<td data-value="49" class="abs high">44/49</td>
|
|
259
334
|
</tr>
|
|
260
335
|
|
|
336
|
+
<tr>
|
|
337
|
+
<td class="file medium" data-value="screen.ts"><a href="screen.ts.html">screen.ts</a></td>
|
|
338
|
+
<td data-value="70.68" class="pic medium">
|
|
339
|
+
<div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
|
|
340
|
+
</td>
|
|
341
|
+
<td data-value="70.68" class="pct medium">70.68%</td>
|
|
342
|
+
<td data-value="58" class="abs medium">41/58</td>
|
|
343
|
+
<td data-value="33.33" class="pct low">33.33%</td>
|
|
344
|
+
<td data-value="15" class="abs low">5/15</td>
|
|
345
|
+
<td data-value="69.23" class="pct medium">69.23%</td>
|
|
346
|
+
<td data-value="13" class="abs medium">9/13</td>
|
|
347
|
+
<td data-value="69.81" class="pct medium">69.81%</td>
|
|
348
|
+
<td data-value="53" class="abs medium">37/53</td>
|
|
349
|
+
</tr>
|
|
350
|
+
|
|
261
351
|
<tr>
|
|
262
352
|
<td class="file low" data-value="script.js"><a href="script.js.html">script.js</a></td>
|
|
263
353
|
<td data-value="42.85" class="pic low">
|
|
@@ -303,6 +393,21 @@
|
|
|
303
393
|
<td data-value="120" class="abs low">38/120</td>
|
|
304
394
|
</tr>
|
|
305
395
|
|
|
396
|
+
<tr>
|
|
397
|
+
<td class="file high" data-value="webhook.ts"><a href="webhook.ts.html">webhook.ts</a></td>
|
|
398
|
+
<td data-value="91.66" class="pic high">
|
|
399
|
+
<div class="chart"><div class="cover-fill" style="width: 91%"></div><div class="cover-empty" style="width: 9%"></div></div>
|
|
400
|
+
</td>
|
|
401
|
+
<td data-value="91.66" class="pct high">91.66%</td>
|
|
402
|
+
<td data-value="48" class="abs high">44/48</td>
|
|
403
|
+
<td data-value="50" class="pct medium">50%</td>
|
|
404
|
+
<td data-value="4" class="abs medium">2/4</td>
|
|
405
|
+
<td data-value="100" class="pct high">100%</td>
|
|
406
|
+
<td data-value="6" class="abs high">6/6</td>
|
|
407
|
+
<td data-value="91.48" class="pct high">91.48%</td>
|
|
408
|
+
<td data-value="47" class="abs high">43/47</td>
|
|
409
|
+
</tr>
|
|
410
|
+
|
|
306
411
|
</tbody>
|
|
307
412
|
</table>
|
|
308
413
|
</div>
|
|
@@ -311,16 +416,16 @@
|
|
|
311
416
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
312
417
|
Code coverage generated by
|
|
313
418
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
314
|
-
at Mon Nov 21 2022
|
|
419
|
+
at Mon Nov 21 2022 15:34:22 GMT+0000 (Coordinated Universal Time)
|
|
315
420
|
</div>
|
|
316
|
-
<script src="
|
|
421
|
+
<script src="../../../prettify.js"></script>
|
|
317
422
|
<script>
|
|
318
423
|
window.onload = function () {
|
|
319
424
|
prettyPrint();
|
|
320
425
|
};
|
|
321
426
|
</script>
|
|
322
|
-
<script src="
|
|
323
|
-
<script src="
|
|
427
|
+
<script src="../../../sorter.js"></script>
|
|
428
|
+
<script src="../../../block-navigation.js"></script>
|
|
324
429
|
</body>
|
|
325
430
|
</html>
|
|
326
431
|
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers/integration.js</title>
|
|
6
|
+
<title>Code coverage report for src/api/controllers/integration.js</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> integration.js</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
@@ -112,16 +112,16 @@ exports.find = async function (ctx) {
|
|
|
112
112
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
113
113
|
Code coverage generated by
|
|
114
114
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
115
|
-
at Mon Nov 21 2022
|
|
115
|
+
at Mon Nov 21 2022 15:34:22 GMT+0000 (Coordinated Universal Time)
|
|
116
116
|
</div>
|
|
117
|
-
<script src="
|
|
117
|
+
<script src="../../../prettify.js"></script>
|
|
118
118
|
<script>
|
|
119
119
|
window.onload = function () {
|
|
120
120
|
prettyPrint();
|
|
121
121
|
};
|
|
122
122
|
</script>
|
|
123
|
-
<script src="
|
|
124
|
-
<script src="
|
|
123
|
+
<script src="../../../sorter.js"></script>
|
|
124
|
+
<script src="../../../block-navigation.js"></script>
|
|
125
125
|
</body>
|
|
126
126
|
</html>
|
|
127
127
|
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for api/controllers/layout.js</title>
|
|
6
|
+
<title>Code coverage report for src/api/controllers/layout.js</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">src/api/controllers</a> layout.js</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
@@ -211,16 +211,16 @@ exports.destroy = async function (ctx) {
|
|
|
211
211
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
212
212
|
Code coverage generated by
|
|
213
213
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
214
|
-
at Mon Nov 21 2022
|
|
214
|
+
at Mon Nov 21 2022 15:34:22 GMT+0000 (Coordinated Universal Time)
|
|
215
215
|
</div>
|
|
216
|
-
<script src="
|
|
216
|
+
<script src="../../../prettify.js"></script>
|
|
217
217
|
<script>
|
|
218
218
|
window.onload = function () {
|
|
219
219
|
prettyPrint();
|
|
220
220
|
};
|
|
221
221
|
</script>
|
|
222
|
-
<script src="
|
|
223
|
-
<script src="
|
|
222
|
+
<script src="../../../sorter.js"></script>
|
|
223
|
+
<script src="../../../block-navigation.js"></script>
|
|
224
224
|
</body>
|
|
225
225
|
</html>
|
|
226
226
|
|