@budibase/server 2.2.4-alpha.1 → 2.2.5
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 +0 -19
- package/__mocks__/node-fetch.ts +0 -78
- package/builder/assets/{index.77b82b83.js → index.18998a03.js} +194 -194
- package/builder/index.html +1 -1
- package/coverage/clover.xml +4897 -4907
- package/coverage/coverage-final.json +262 -265
- package/coverage/lcov-report/index.html +169 -169
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/application.ts.html +159 -171
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +51 -51
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +79 -91
- package/coverage/lcov-report/src/api/controllers/component.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +30 -30
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +83 -83
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/index.html +51 -51
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +13 -13
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +19 -19
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +63 -63
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +72 -72
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +135 -150
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +55 -55
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +2 -2
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +11 -11
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/query/index.html +19 -19
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +60 -60
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/role.ts.html +8 -8
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +6 -6
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +15 -12
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +20 -20
- package/coverage/lcov-report/src/api/controllers/row/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +51 -54
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +9 -9
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +12 -21
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +14 -17
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +26 -26
- package/coverage/lcov-report/src/api/controllers/script.ts.html +18 -18
- package/coverage/lcov-report/src/api/controllers/static/index.html +11 -11
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +44 -32
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +10 -10
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/table/index.html +19 -19
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +14 -14
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +17 -17
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +51 -51
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +7 -7
- package/coverage/lcov-report/src/api/controllers/user.ts.html +119 -119
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +4 -4
- package/coverage/lcov-report/src/api/controllers/view/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +47 -47
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +33 -33
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +14 -14
- package/coverage/lcov-report/src/api/index.html +1 -1
- package/coverage/lcov-report/src/api/index.ts.html +33 -33
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/application.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/auth.ts.html +6 -6
- package/coverage/lcov-report/src/api/routes/automation.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/backup.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/component.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/index.ts.html +37 -40
- package/coverage/lcov-report/src/api/routes/integration.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/layout.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +7 -7
- package/coverage/lcov-report/src/api/routes/permission.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/tests/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/tests/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +12 -12
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +19 -19
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/query.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/role.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/routing.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/row.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/screen.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/static.ts.html +14 -14
- package/coverage/lcov-report/src/api/routes/table.ts.html +11 -11
- package/coverage/lcov-report/src/api/routes/templates.ts.html +8 -8
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +16 -16
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +22 -22
- package/coverage/lcov-report/src/api/routes/user.ts.html +9 -9
- package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +42 -42
- package/coverage/lcov-report/src/api/routes/view.ts.html +10 -10
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +10 -10
- package/coverage/lcov-report/src/app.ts.html +32 -32
- package/coverage/lcov-report/src/automations/actions.ts.html +25 -25
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +19 -91
- package/coverage/lcov-report/src/automations/bullboard.ts.html +11 -11
- package/coverage/lcov-report/src/automations/index.html +19 -19
- package/coverage/lcov-report/src/automations/index.ts.html +13 -13
- package/coverage/lcov-report/src/automations/logging/index.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.ts.html +11 -11
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +34 -34
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +5 -5
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +33 -33
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +35 -35
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +31 -31
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/index.html +83 -83
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +3 -3
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +14 -14
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +17 -17
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +28 -28
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +18 -18
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +6 -6
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +7 -7
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +16 -16
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +22 -22
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +5 -5
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +26 -26
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +8 -8
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +3 -3
- package/coverage/lcov-report/src/automations/triggers.ts.html +21 -21
- package/coverage/lcov-report/src/automations/utils.ts.html +56 -56
- package/coverage/lcov-report/src/constants/index.html +1 -1
- package/coverage/lcov-report/src/constants/index.ts.html +92 -92
- package/coverage/lcov-report/src/constants/layouts.ts.html +4 -4
- package/coverage/lcov-report/src/constants/screens.ts.html +5 -5
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +23 -23
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +2 -2
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +16 -16
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +5 -5
- package/coverage/lcov-report/src/db/index.html +19 -19
- package/coverage/lcov-report/src/db/index.ts.html +9 -9
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +8 -8
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +4 -4
- package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +15 -15
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +12 -12
- package/coverage/lcov-report/src/db/newid.ts.html +4 -4
- package/coverage/lcov-report/src/db/utils.ts.html +80 -80
- package/coverage/lcov-report/src/definitions/automations.ts.html +4 -4
- package/coverage/lcov-report/src/definitions/datasource.ts.html +4 -4
- package/coverage/lcov-report/src/definitions/index.html +1 -1
- package/coverage/lcov-report/src/environment.ts.html +31 -43
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +6 -6
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +5 -5
- package/coverage/lcov-report/src/events/index.html +1 -1
- package/coverage/lcov-report/src/events/index.ts.html +4 -4
- package/coverage/lcov-report/src/events/utils.ts.html +3 -3
- package/coverage/lcov-report/src/index.html +26 -26
- package/coverage/lcov-report/src/index.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/airtable.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/base/index.html +1 -1
- package/coverage/lcov-report/src/integrations/base/query.ts.html +3 -3
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +14 -14
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +3 -3
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/firebase.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +11 -11
- package/coverage/lcov-report/src/integrations/index.html +5 -5
- package/coverage/lcov-report/src/integrations/index.ts.html +47 -35
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +8 -8
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/mysql.ts.html +10 -10
- package/coverage/lcov-report/src/integrations/oracle.ts.html +13 -13
- package/coverage/lcov-report/src/integrations/postgres.ts.html +42 -42
- package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +13 -13
- package/coverage/lcov-report/src/integrations/redis.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/rest.ts.html +16 -16
- package/coverage/lcov-report/src/integrations/s3.ts.html +6 -6
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +5 -5
- package/coverage/lcov-report/src/integrations/tests/TestConfiguration.js.html +1 -1
- package/coverage/lcov-report/src/integrations/tests/index.html +1 -1
- package/coverage/lcov-report/src/integrations/utils.ts.html +36 -36
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +7 -7
- package/coverage/lcov-report/src/middleware/authorized.ts.html +28 -28
- package/coverage/lcov-report/src/middleware/builder.ts.html +17 -17
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +39 -39
- package/coverage/lcov-report/src/middleware/index.html +1 -1
- package/coverage/lcov-report/src/middleware/joi-validator.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/publicApi.ts.html +4 -4
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +22 -22
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/utils.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +19 -19
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +10 -13
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +7 -7
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +15 -15
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +8 -8
- package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +2 -2
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +5 -5
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +4 -4
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +6 -6
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.ts.html +32 -32
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/tests/index.html +1 -1
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/index.html +15 -15
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +34 -34
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +9 -9
- package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +17 -17
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +54 -42
- package/coverage/lcov-report/src/sdk/app/backups/index.html +30 -30
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +73 -73
- package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +5 -5
- package/coverage/lcov-report/src/sdk/index.html +1 -1
- package/coverage/lcov-report/src/sdk/index.ts.html +8 -8
- package/coverage/lcov-report/src/sdk/users/index.html +5 -5
- package/coverage/lcov-report/src/sdk/users/index.ts.html +3 -3
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +34 -34
- package/coverage/lcov-report/src/startup.ts.html +42 -42
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +119 -146
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
- package/coverage/lcov-report/src/tests/utilities/index.html +10 -10
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +30 -30
- package/coverage/lcov-report/src/threads/automation.ts.html +101 -32
- package/coverage/lcov-report/src/threads/index.html +19 -19
- package/coverage/lcov-report/src/threads/index.ts.html +25 -25
- package/coverage/lcov-report/src/threads/query.ts.html +71 -71
- package/coverage/lcov-report/src/threads/utils.ts.html +18 -18
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/csvParser.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +12 -12
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +19 -79
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +1049 -20
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/global.ts.html +42 -42
- package/coverage/lcov-report/src/utilities/index.html +63 -48
- package/coverage/lcov-report/src/utilities/index.ts.html +168 -36
- package/coverage/lcov-report/src/utilities/plugins.ts.html +151 -0
- package/coverage/lcov-report/src/utilities/redis.ts.html +32 -32
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +5 -5
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +28 -28
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +33 -60
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +38 -38
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +32 -32
- package/coverage/lcov-report/src/utilities/security.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/statusCodes.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/index.html +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/rows.ts.html +35 -35
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/users.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +56 -56
- package/coverage/lcov-report/src/watch.ts.html +9 -9
- package/coverage/lcov-report/src/websocket.ts.html +15 -15
- package/coverage/lcov.info +6958 -6989
- package/dist/api/controllers/application.js +10 -9
- package/dist/api/controllers/cloud.js +2 -6
- package/dist/api/controllers/plugin/index.js +6 -6
- package/dist/api/controllers/row/ExternalRequest.js +1 -0
- package/dist/api/controllers/row/internal.js +11 -11
- package/dist/api/controllers/row/staticFormula.js +1 -1
- package/dist/api/controllers/static/index.js +11 -8
- package/dist/api/routes/tests/utilities/TestFunctions.js +167 -0
- package/dist/api/routes/tests/utilities/index.js +131 -0
- package/dist/automations/automationUtils.js +1 -26
- package/dist/automations/tests/utilities/index.js +81 -0
- package/dist/environment.js +2 -6
- package/dist/integrations/index.js +2 -1
- package/dist/migrations/functions/backfill/global/configs.js +4 -4
- package/dist/package.json +7 -9
- package/dist/sdk/app/backups/imports.js +7 -3
- package/dist/tests/utilities/TestConfiguration.js +562 -0
- package/dist/tests/utilities/controllers.js +40 -0
- package/dist/tests/utilities/structures.js +168 -0
- package/dist/threads/automation.js +26 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/fileSystem/clientLibrary.js +3 -3
- package/dist/utilities/fileSystem/index.js +342 -18
- package/dist/utilities/index.js +44 -1
- package/dist/utilities/plugins.js +26 -0
- package/dist/utilities/rowProcessor/index.js +4 -12
- package/package.json +8 -10
- package/src/api/controllers/application.ts +12 -16
- package/src/api/controllers/auth.ts +2 -2
- package/src/api/controllers/cloud.ts +6 -10
- package/src/api/controllers/plugin/index.ts +9 -14
- package/src/api/controllers/row/ExternalRequest.ts +1 -0
- package/src/api/controllers/row/internal.ts +22 -23
- package/src/api/controllers/row/staticFormula.ts +2 -5
- package/src/api/controllers/row/utils.ts +1 -2
- package/src/api/controllers/static/index.ts +10 -6
- package/src/api/routes/index.ts +3 -4
- package/src/api/routes/tests/__snapshots__/{datasource.spec.ts.snap → datasource.spec.js.snap} +0 -0
- package/src/api/routes/tests/{application.spec.ts → application.spec.js} +7 -40
- package/src/api/routes/tests/{backup.spec.ts → backup.spec.js} +6 -17
- package/src/api/routes/tests/{datasource.spec.ts → datasource.spec.js} +15 -23
- package/src/api/routes/tests/routing.spec.js +1 -0
- package/src/api/routes/tests/row.spec.js +2 -4
- package/src/api/routes/tests/static.spec.js +17 -2
- package/src/api/routes/tests/table.spec.js +2 -8
- package/src/api/routes/tests/user.spec.js +0 -86
- package/src/api/routes/tests/utilities/index.ts +2 -2
- package/src/automations/automationUtils.ts +0 -24
- package/src/automations/tests/utilities/index.ts +2 -2
- package/src/automations/unitTests/automationUtils.spec.js +17 -0
- package/src/environment.ts +2 -6
- package/src/integrations/index.ts +5 -1
- package/src/migrations/functions/backfill/global/configs.ts +4 -5
- package/src/sdk/app/backups/imports.ts +7 -3
- package/src/tests/jestSetup.ts +1 -4
- package/src/tests/utilities/TestConfiguration.ts +0 -9
- package/src/threads/automation.ts +25 -2
- package/src/utilities/fileSystem/clientLibrary.ts +1 -1
- package/src/utilities/fileSystem/index.ts +348 -5
- package/src/utilities/index.ts +45 -1
- package/src/utilities/plugins.ts +22 -0
- package/src/utilities/rowProcessor/index.ts +8 -17
- package/tsconfig.build.json +0 -2
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +0 -343
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +0 -595
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +0 -280
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +0 -193
- package/dist/utilities/fileSystem/app.js +0 -97
- package/dist/utilities/fileSystem/filesystem.js +0 -182
- package/dist/utilities/fileSystem/plugin.js +0 -63
- package/dist/utilities/fileSystem/template.js +0 -44
- package/src/api/routes/tests/cloud.spec.ts +0 -66
- package/src/api/routes/tests/data/budibase-component-1.0.1.tgz +0 -0
- package/src/api/routes/tests/data/comment-box-1.0.2.tar.gz +0 -0
- package/src/api/routes/tests/data/export-test.tar.gz +0 -0
- package/src/api/routes/tests/plugin.spec.ts +0 -179
- package/src/automations/tests/bash.spec.js +0 -34
- package/src/automations/tests/discord.spec.js +0 -27
- package/src/automations/tests/executeQuery.spec.js +0 -49
- package/src/automations/tests/executeScript.spec.js +0 -48
- package/src/automations/tests/sendSmtpEmail.spec.js +0 -71
- package/src/automations/tests/serverLog.spec.js +0 -22
- package/src/automations/tests/zapier.spec.js +0 -27
- package/src/automations/unitTests/automationUtils.spec.ts +0 -65
- package/src/utilities/fileSystem/app.ts +0 -86
- package/src/utilities/fileSystem/filesystem.ts +0 -170
- package/src/utilities/fileSystem/plugin.ts +0 -65
- package/src/utilities/fileSystem/template.ts +0 -36
- package/src/utilities/rowProcessor/tests/utils.spec.ts +0 -57
|
@@ -24,13 +24,14 @@ const datasource_bb_default_1 = require("../../db/defaultData/datasource_bb_defa
|
|
|
24
24
|
const workerRequests_1 = require("../../utilities/workerRequests");
|
|
25
25
|
const utilities_1 = require("../../utilities");
|
|
26
26
|
const redis_1 = require("../../utilities/redis");
|
|
27
|
-
const
|
|
27
|
+
const clientLibrary_1 = require("../../utilities/fileSystem/clientLibrary");
|
|
28
28
|
const utils_2 = require("../../automations/utils");
|
|
29
29
|
const logging_1 = require("../../automations/logging");
|
|
30
30
|
const rows_1 = require("../../utilities/usageQuota/rows");
|
|
31
31
|
const pro_1 = require("@budibase/pro");
|
|
32
32
|
const types_1 = require("@budibase/types");
|
|
33
33
|
const layouts_1 = require("../../constants/layouts");
|
|
34
|
+
const plugins_1 = require("../../utilities/plugins");
|
|
34
35
|
const sdk_1 = __importDefault(require("../../sdk"));
|
|
35
36
|
// utility function, need to do away with this
|
|
36
37
|
function getLayouts() {
|
|
@@ -163,25 +164,25 @@ function fetchAppDefinition(ctx) {
|
|
|
163
164
|
}
|
|
164
165
|
exports.fetchAppDefinition = fetchAppDefinition;
|
|
165
166
|
function fetchAppPackage(ctx) {
|
|
167
|
+
var _a;
|
|
166
168
|
return __awaiter(this, void 0, void 0, function* () {
|
|
167
169
|
const db = backend_core_1.context.getAppDB();
|
|
168
170
|
let application = yield db.get(utils_1.DocumentType.APP_METADATA);
|
|
169
171
|
const layouts = yield getLayouts();
|
|
170
172
|
let screens = yield getScreens();
|
|
171
173
|
// Enrich plugin URLs
|
|
172
|
-
application.usedPlugins =
|
|
174
|
+
application.usedPlugins = (0, plugins_1.enrichPluginURLs)(application.usedPlugins);
|
|
173
175
|
// Only filter screens if the user is not a builder
|
|
174
|
-
if (!(ctx.user.builder && ctx.user.builder.global)) {
|
|
176
|
+
if (!(((_a = ctx.user) === null || _a === void 0 ? void 0 : _a.builder) && ctx.user.builder.global)) {
|
|
175
177
|
const userRoleId = getUserRoleId(ctx);
|
|
176
178
|
const accessController = new backend_core_1.roles.AccessController();
|
|
177
179
|
screens = yield accessController.checkScreensAccess(screens, userRoleId);
|
|
178
180
|
}
|
|
179
|
-
const clientLibPath = backend_core_1.objectStore.clientLibraryUrl(ctx.params.appId, application.version);
|
|
180
181
|
ctx.body = {
|
|
181
182
|
application,
|
|
182
183
|
screens,
|
|
183
184
|
layouts,
|
|
184
|
-
clientLibPath,
|
|
185
|
+
clientLibPath: (0, utilities_1.clientLibraryPath)(ctx.params.appId, application.version),
|
|
185
186
|
};
|
|
186
187
|
});
|
|
187
188
|
}
|
|
@@ -324,7 +325,7 @@ function appPostCreate(ctx, app) {
|
|
|
324
325
|
if (err.code && err.code === backend_core_1.errors.codes.USAGE_LIMIT_EXCEEDED) {
|
|
325
326
|
// this import resulted in row usage exceeding the quota
|
|
326
327
|
// delete the app
|
|
327
|
-
// skip pre and post-steps as no rows have been added to quotas yet
|
|
328
|
+
// skip pre- and post-steps as no rows have been added to quotas yet
|
|
328
329
|
ctx.params.appId = app.appId;
|
|
329
330
|
yield destroyApp(ctx);
|
|
330
331
|
}
|
|
@@ -374,8 +375,8 @@ function updateClient(ctx) {
|
|
|
374
375
|
const currentVersion = application.version;
|
|
375
376
|
// Update client library and manifest
|
|
376
377
|
if (!environment_1.default.isTest()) {
|
|
377
|
-
yield (0,
|
|
378
|
-
yield (0,
|
|
378
|
+
yield (0, clientLibrary_1.backupClientLibrary)(ctx.params.appId);
|
|
379
|
+
yield (0, clientLibrary_1.updateClientLibrary)(ctx.params.appId);
|
|
379
380
|
}
|
|
380
381
|
// Update versions in app package
|
|
381
382
|
const updatedToVersion = package_json_1.default.version;
|
|
@@ -400,7 +401,7 @@ function revertClient(ctx) {
|
|
|
400
401
|
}
|
|
401
402
|
// Update client library and manifest
|
|
402
403
|
if (!environment_1.default.isTest()) {
|
|
403
|
-
yield (0,
|
|
404
|
+
yield (0, clientLibrary_1.revertClientLibrary)(ctx.params.appId);
|
|
404
405
|
}
|
|
405
406
|
// Update versions in app package
|
|
406
407
|
const currentVersion = application.version;
|
|
@@ -95,15 +95,11 @@ function importApps(ctx) {
|
|
|
95
95
|
if (beenImported || !ctx.request.files || !ctx.request.files.importFile) {
|
|
96
96
|
ctx.throw(400, "Import file is required and environment must be fresh to import apps.");
|
|
97
97
|
}
|
|
98
|
-
|
|
99
|
-
if (Array.isArray(file)) {
|
|
100
|
-
ctx.throw(400, "Single file is required");
|
|
101
|
-
}
|
|
102
|
-
if (file.type !== "application/gzip") {
|
|
98
|
+
if (ctx.request.files.importFile.type !== "application/gzip") {
|
|
103
99
|
ctx.throw(400, "Import file must be a gzipped tarball.");
|
|
104
100
|
}
|
|
105
101
|
// initially get all the app databases out of the tarball
|
|
106
|
-
const tmpPath = sdk_1.default.backups.untarFile(
|
|
102
|
+
const tmpPath = sdk_1.default.backups.untarFile(ctx.request.files.importFile);
|
|
107
103
|
const globalDbImport = sdk_1.default.backups.getGlobalDBFile(tmpPath);
|
|
108
104
|
const appNames = sdk_1.default.backups.getListOfAppsInMulti(tmpPath);
|
|
109
105
|
const globalDb = backend_core_1.tenancy.getGlobalDB();
|
|
@@ -18,15 +18,15 @@ const backend_core_1 = require("@budibase/backend-core");
|
|
|
18
18
|
const types_1 = require("@budibase/types");
|
|
19
19
|
const environment_1 = __importDefault(require("../../../environment"));
|
|
20
20
|
const websocket_1 = require("../../../websocket");
|
|
21
|
+
const backend_core_2 = require("@budibase/backend-core");
|
|
21
22
|
const pro_1 = require("@budibase/pro");
|
|
22
23
|
function getPlugins(type) {
|
|
23
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
24
25
|
const db = backend_core_1.tenancy.getGlobalDB();
|
|
25
|
-
const response = yield db.allDocs(
|
|
26
|
+
const response = yield db.allDocs(backend_core_2.db.getPluginParams(null, {
|
|
26
27
|
include_docs: true,
|
|
27
28
|
}));
|
|
28
|
-
|
|
29
|
-
plugins = backend_core_1.objectStore.enrichPluginURLs(plugins);
|
|
29
|
+
const plugins = response.rows.map((row) => row.doc);
|
|
30
30
|
if (type) {
|
|
31
31
|
return plugins.filter((plugin) => { var _a; return ((_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.type) === type; });
|
|
32
32
|
}
|
|
@@ -92,7 +92,7 @@ function create(ctx) {
|
|
|
92
92
|
if (!environment_1.default.SELF_HOSTED && ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.schema) === null || _a === void 0 ? void 0 : _a.type) !== types_1.PluginType.COMPONENT) {
|
|
93
93
|
throw new Error("Only component plugins are supported outside of self-host");
|
|
94
94
|
}
|
|
95
|
-
const doc = yield pro_1.
|
|
95
|
+
const doc = yield pro_1.plugins.storePlugin(metadata, directory, source);
|
|
96
96
|
websocket_1.ClientAppSocket.emit("plugins-update", { name, hash: doc.hash });
|
|
97
97
|
ctx.body = {
|
|
98
98
|
message: "Plugin uploaded successfully",
|
|
@@ -117,7 +117,7 @@ function destroy(ctx) {
|
|
|
117
117
|
return __awaiter(this, void 0, void 0, function* () {
|
|
118
118
|
const { pluginId } = ctx.params;
|
|
119
119
|
try {
|
|
120
|
-
yield pro_1.
|
|
120
|
+
yield pro_1.plugins.deletePlugin(pluginId);
|
|
121
121
|
ctx.body = { message: `Plugin ${ctx.params.pluginId} deleted.` };
|
|
122
122
|
}
|
|
123
123
|
catch (err) {
|
|
@@ -135,7 +135,7 @@ function processUploadedPlugin(plugin, source) {
|
|
|
135
135
|
if (!environment_1.default.SELF_HOSTED && ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.schema) === null || _a === void 0 ? void 0 : _a.type) !== types_1.PluginType.COMPONENT) {
|
|
136
136
|
throw new Error("Only component plugins are supported outside of self-host");
|
|
137
137
|
}
|
|
138
|
-
const doc = yield pro_1.
|
|
138
|
+
const doc = yield pro_1.plugins.storePlugin(metadata, directory, source);
|
|
139
139
|
websocket_1.ClientAppSocket.emit("plugin-update", { name: doc.name, hash: doc.hash });
|
|
140
140
|
return doc;
|
|
141
141
|
});
|
|
@@ -27,6 +27,7 @@ const utils_2 = require("./utils");
|
|
|
27
27
|
const constants_1 = require("../../../constants");
|
|
28
28
|
const utils_3 = require("../../../integrations/utils");
|
|
29
29
|
const string_templates_1 = require("@budibase/string-templates");
|
|
30
|
+
// @ts-ignore
|
|
30
31
|
const fp_1 = require("lodash/fp");
|
|
31
32
|
const rowProcessor_1 = require("../../../utilities/rowProcessor");
|
|
32
33
|
const backend_core_1 = require("@budibase/backend-core");
|
|
@@ -52,12 +52,12 @@ const utils_1 = require("../../../db/utils");
|
|
|
52
52
|
const userController = __importStar(require("../user"));
|
|
53
53
|
const rowProcessor_1 = require("../../../utilities/rowProcessor");
|
|
54
54
|
const constants_1 = require("../../../constants");
|
|
55
|
-
const
|
|
55
|
+
const utils_2 = require("./utils");
|
|
56
56
|
const internalSearch_1 = require("./internalSearch");
|
|
57
57
|
const global_1 = require("../../../utilities/global");
|
|
58
58
|
const inMemoryViews = __importStar(require("../../../db/inMemoryView"));
|
|
59
59
|
const environment_1 = __importDefault(require("../../../environment"));
|
|
60
|
-
const
|
|
60
|
+
const utils_3 = require("../view/utils");
|
|
61
61
|
const fp_1 = require("lodash/fp");
|
|
62
62
|
const backend_core_1 = require("@budibase/backend-core");
|
|
63
63
|
const staticFormula_1 = require("./staticFormula");
|
|
@@ -70,9 +70,9 @@ const CALCULATION_TYPES = {
|
|
|
70
70
|
};
|
|
71
71
|
function getView(db, viewName) {
|
|
72
72
|
return __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
let mainGetter = environment_1.default.SELF_HOSTED ?
|
|
74
|
-
let secondaryGetter = environment_1.default.SELF_HOSTED ?
|
|
75
|
-
let migration = environment_1.default.SELF_HOSTED ?
|
|
73
|
+
let mainGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromDesignDoc : utils_3.getFromMemoryDoc;
|
|
74
|
+
let secondaryGetter = environment_1.default.SELF_HOSTED ? utils_3.getFromMemoryDoc : utils_3.getFromDesignDoc;
|
|
75
|
+
let migration = environment_1.default.SELF_HOSTED ? utils_3.migrateToDesignView : utils_3.migrateToInMemoryView;
|
|
76
76
|
let viewInfo, migrate = false;
|
|
77
77
|
try {
|
|
78
78
|
viewInfo = yield mainGetter(db, viewName);
|
|
@@ -121,7 +121,7 @@ function patch(ctx) {
|
|
|
121
121
|
let oldRow;
|
|
122
122
|
try {
|
|
123
123
|
let dbTable = yield db.get(tableId);
|
|
124
|
-
oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield
|
|
124
|
+
oldRow = yield (0, rowProcessor_1.outputProcessing)(dbTable, yield (0, utils_2.findRow)(ctx, tableId, inputs._id));
|
|
125
125
|
}
|
|
126
126
|
catch (err) {
|
|
127
127
|
if (isUserTable) {
|
|
@@ -145,7 +145,7 @@ function patch(ctx) {
|
|
|
145
145
|
}
|
|
146
146
|
// this returns the table and row incase they have been updated
|
|
147
147
|
let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, combinedRow);
|
|
148
|
-
const validateResult = yield
|
|
148
|
+
const validateResult = yield (0, utils_2.validate)({
|
|
149
149
|
row,
|
|
150
150
|
table,
|
|
151
151
|
});
|
|
@@ -185,7 +185,7 @@ function save(ctx) {
|
|
|
185
185
|
// this returns the table and row incase they have been updated
|
|
186
186
|
const dbTable = yield db.get(inputs.tableId);
|
|
187
187
|
let { table, row } = (0, rowProcessor_1.inputProcessing)(ctx.user, dbTable, inputs);
|
|
188
|
-
const validateResult = yield
|
|
188
|
+
const validateResult = yield (0, utils_2.validate)({
|
|
189
189
|
row,
|
|
190
190
|
table,
|
|
191
191
|
});
|
|
@@ -274,7 +274,7 @@ function find(ctx) {
|
|
|
274
274
|
return __awaiter(this, void 0, void 0, function* () {
|
|
275
275
|
const db = backend_core_1.db.getDB(ctx.appId);
|
|
276
276
|
const table = yield db.get(ctx.params.tableId);
|
|
277
|
-
let row = yield
|
|
277
|
+
let row = yield (0, utils_2.findRow)(ctx, ctx.params.tableId, ctx.params.rowId);
|
|
278
278
|
row = yield (0, rowProcessor_1.outputProcessing)(table, row);
|
|
279
279
|
return row;
|
|
280
280
|
});
|
|
@@ -386,7 +386,7 @@ function search(ctx) {
|
|
|
386
386
|
exports.search = search;
|
|
387
387
|
function validate(ctx) {
|
|
388
388
|
return __awaiter(this, void 0, void 0, function* () {
|
|
389
|
-
return
|
|
389
|
+
return (0, utils_2.validate)({
|
|
390
390
|
tableId: ctx.params.tableId,
|
|
391
391
|
row: ctx.request.body,
|
|
392
392
|
});
|
|
@@ -436,7 +436,7 @@ function fetchEnrichedRow(ctx) {
|
|
|
436
436
|
// need table to work out where links go in row
|
|
437
437
|
let [table, row] = yield Promise.all([
|
|
438
438
|
db.get(tableId),
|
|
439
|
-
|
|
439
|
+
(0, utils_2.findRow)(ctx, tableId, rowId),
|
|
440
440
|
]);
|
|
441
441
|
// get the link docs
|
|
442
442
|
const linkVals = (yield linkRows.getLinkDocuments({
|
|
@@ -153,7 +153,7 @@ function finaliseRow(table, row, { oldTable, updateFormula } = {
|
|
|
153
153
|
enrichedRow = yield (0, rowProcessor_1.processFormulas)(table, enrichedRow, { dynamic: false });
|
|
154
154
|
// this updates the related formulas in other rows based on the relations to this row
|
|
155
155
|
if (updateFormula) {
|
|
156
|
-
yield updateRelatedFormula(table, enrichedRow);
|
|
156
|
+
yield exports.updateRelatedFormula(table, enrichedRow);
|
|
157
157
|
}
|
|
158
158
|
return { row: enrichedRow, table };
|
|
159
159
|
});
|
|
@@ -10,14 +10,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.getSignedUploadURL = exports.serveClientLibrary = exports.serveBuilderPreview = exports.serveApp = exports.deleteObjects = exports.uploadFile = exports.serveBuilder = exports.toggleBetaUiFeature = void 0;
|
|
13
|
+
const plugins_1 = require("../../../utilities/plugins");
|
|
13
14
|
require("svelte/register");
|
|
14
15
|
const send = require("koa-send");
|
|
15
16
|
const { resolve, join } = require("../../../utilities/centralPath");
|
|
16
17
|
const uuid = require("uuid");
|
|
17
|
-
const
|
|
18
|
+
const { ObjectStoreBuckets } = require("../../../constants");
|
|
18
19
|
const { processString } = require("@budibase/string-templates");
|
|
19
20
|
const { loadHandlebarsFile, NODE_MODULES_PATH, TOP_LEVEL_PATH, } = require("../../../utilities/fileSystem");
|
|
20
21
|
const env = require("../../../environment");
|
|
22
|
+
const { clientLibraryPath } = require("../../../utilities");
|
|
23
|
+
const { attachmentsRelativeURL } = require("../../../utilities");
|
|
21
24
|
const { DocumentType } = require("../../../db/utils");
|
|
22
25
|
const { context, objectStore, utils } = require("@budibase/backend-core");
|
|
23
26
|
const AWS = require("aws-sdk");
|
|
@@ -35,7 +38,7 @@ function prepareUpload({ s3Key, bucket, metadata, file }) {
|
|
|
35
38
|
return {
|
|
36
39
|
size: file.size,
|
|
37
40
|
name: file.name,
|
|
38
|
-
url:
|
|
41
|
+
url: attachmentsRelativeURL(response.Key),
|
|
39
42
|
extension: [...file.name.split(".")].pop(),
|
|
40
43
|
key: response.Key,
|
|
41
44
|
};
|
|
@@ -82,8 +85,8 @@ const uploadFile = function (ctx) {
|
|
|
82
85
|
const processedFileName = `${uuid.v4()}.${fileExtension}`;
|
|
83
86
|
return prepareUpload({
|
|
84
87
|
file,
|
|
85
|
-
s3Key: `${
|
|
86
|
-
bucket:
|
|
88
|
+
s3Key: `${ctx.appId}/attachments/${processedFileName}`,
|
|
89
|
+
bucket: ObjectStoreBuckets.APPS,
|
|
87
90
|
});
|
|
88
91
|
}));
|
|
89
92
|
ctx.body = yield Promise.all(uploads);
|
|
@@ -92,7 +95,7 @@ const uploadFile = function (ctx) {
|
|
|
92
95
|
exports.uploadFile = uploadFile;
|
|
93
96
|
const deleteObjects = function (ctx) {
|
|
94
97
|
return __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
ctx.body = yield objectStore.deleteFiles(
|
|
98
|
+
ctx.body = yield objectStore.deleteFiles(ObjectStoreBuckets.APPS, ctx.request.body.keys);
|
|
96
99
|
});
|
|
97
100
|
};
|
|
98
101
|
exports.deleteObjects = deleteObjects;
|
|
@@ -103,13 +106,13 @@ const serveApp = function (ctx) {
|
|
|
103
106
|
let appId = context.getAppId();
|
|
104
107
|
if (!env.isJest()) {
|
|
105
108
|
const App = require("./templates/BudibaseApp.svelte").default;
|
|
106
|
-
const plugins =
|
|
109
|
+
const plugins = (0, plugins_1.enrichPluginURLs)(appInfo.usedPlugins);
|
|
107
110
|
const { head, html, css } = App.render({
|
|
108
111
|
metaImage: "https://res.cloudinary.com/daog6scxm/image/upload/v1666109324/meta-images/budibase-meta-image_uukc1m.png",
|
|
109
112
|
title: appInfo.name,
|
|
110
113
|
production: env.isProd(),
|
|
111
114
|
appId,
|
|
112
|
-
clientLibPath:
|
|
115
|
+
clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
|
|
113
116
|
usedPlugins: plugins,
|
|
114
117
|
});
|
|
115
118
|
const appHbs = loadHandlebarsFile(`${__dirname}/templates/app.hbs`);
|
|
@@ -135,7 +138,7 @@ const serveBuilderPreview = function (ctx) {
|
|
|
135
138
|
let appId = context.getAppId();
|
|
136
139
|
const previewHbs = loadHandlebarsFile(`${__dirname}/templates/preview.hbs`);
|
|
137
140
|
ctx.body = yield processString(previewHbs, {
|
|
138
|
-
clientLibPath:
|
|
141
|
+
clientLibPath: clientLibraryPath(appId, appInfo.version, ctx),
|
|
139
142
|
});
|
|
140
143
|
}
|
|
141
144
|
else {
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.runInProd = exports.testAutomation = exports.getDB = exports.checkPermissionsEndpoint = exports.checkBuilderEndpoint = exports.createRequest = exports.clearAllAutomations = exports.clearAllApps = exports.getAllTableRows = void 0;
|
|
36
|
+
const rowController = __importStar(require("../../../controllers/row"));
|
|
37
|
+
const appController = __importStar(require("../../../controllers/application"));
|
|
38
|
+
const utils_1 = require("../../../../db/utils");
|
|
39
|
+
const backend_core_1 = require("@budibase/backend-core");
|
|
40
|
+
const structures_1 = require("../../../../tests/utilities/structures");
|
|
41
|
+
const env = __importStar(require("../../../../environment"));
|
|
42
|
+
class Request {
|
|
43
|
+
constructor(appId, params) {
|
|
44
|
+
this.appId = appId;
|
|
45
|
+
this.params = params;
|
|
46
|
+
this.request = {};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function runRequest(appId, controlFunc, request) {
|
|
50
|
+
return backend_core_1.context.doInAppContext(appId, () => __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
return controlFunc(request);
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
const getAllTableRows = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
const req = new Request(config.appId, { tableId: config.table._id });
|
|
56
|
+
yield runRequest(config.appId, rowController.fetch, req);
|
|
57
|
+
return req.body;
|
|
58
|
+
});
|
|
59
|
+
exports.getAllTableRows = getAllTableRows;
|
|
60
|
+
const clearAllApps = (tenantId = structures_1.TENANT_ID) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
yield backend_core_1.tenancy.doInTenant(tenantId, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
const req = { query: { status: utils_1.AppStatus.DEV }, user: { tenantId } };
|
|
63
|
+
yield appController.fetch(req);
|
|
64
|
+
const apps = req.body;
|
|
65
|
+
if (!apps || apps.length <= 0) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
for (let app of apps) {
|
|
69
|
+
const { appId } = app;
|
|
70
|
+
const req = new Request(null, { appId });
|
|
71
|
+
yield runRequest(appId, appController.destroy, req);
|
|
72
|
+
}
|
|
73
|
+
}));
|
|
74
|
+
});
|
|
75
|
+
exports.clearAllApps = clearAllApps;
|
|
76
|
+
const clearAllAutomations = (config) => __awaiter(void 0, void 0, void 0, function* () {
|
|
77
|
+
const automations = yield config.getAllAutomations();
|
|
78
|
+
for (let auto of automations) {
|
|
79
|
+
yield backend_core_1.context.doInAppContext(config.appId, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
80
|
+
yield config.deleteAutomation(auto);
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
exports.clearAllAutomations = clearAllAutomations;
|
|
85
|
+
const createRequest = (request, method, url, body) => {
|
|
86
|
+
let req;
|
|
87
|
+
if (method === "POST")
|
|
88
|
+
req = request.post(url).send(body);
|
|
89
|
+
else if (method === "GET")
|
|
90
|
+
req = request.get(url);
|
|
91
|
+
else if (method === "DELETE")
|
|
92
|
+
req = request.delete(url);
|
|
93
|
+
else if (method === "PATCH")
|
|
94
|
+
req = request.patch(url).send(body);
|
|
95
|
+
else if (method === "PUT")
|
|
96
|
+
req = request.put(url).send(body);
|
|
97
|
+
return req;
|
|
98
|
+
};
|
|
99
|
+
exports.createRequest = createRequest;
|
|
100
|
+
const checkBuilderEndpoint = ({ config, method, url, body, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
+
const headers = yield config.login({
|
|
102
|
+
userId: "us_fail",
|
|
103
|
+
builder: false,
|
|
104
|
+
prodApp: true,
|
|
105
|
+
});
|
|
106
|
+
yield exports
|
|
107
|
+
.createRequest(config.request, method, url, body)
|
|
108
|
+
.set(headers)
|
|
109
|
+
.expect(403);
|
|
110
|
+
});
|
|
111
|
+
exports.checkBuilderEndpoint = checkBuilderEndpoint;
|
|
112
|
+
const checkPermissionsEndpoint = ({ config, method, url, body, passRole, failRole, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
113
|
+
const passHeader = yield config.login({
|
|
114
|
+
roleId: passRole,
|
|
115
|
+
prodApp: true,
|
|
116
|
+
});
|
|
117
|
+
yield exports
|
|
118
|
+
.createRequest(config.request, method, url, body)
|
|
119
|
+
.set(passHeader)
|
|
120
|
+
.expect(200);
|
|
121
|
+
let failHeader;
|
|
122
|
+
if (failRole === backend_core_1.roles.BUILTIN_ROLE_IDS.PUBLIC) {
|
|
123
|
+
failHeader = config.publicHeaders({ prodApp: true });
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
failHeader = yield config.login({
|
|
127
|
+
roleId: failRole,
|
|
128
|
+
builder: false,
|
|
129
|
+
prodApp: true,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
yield exports
|
|
133
|
+
.createRequest(config.request, method, url, body)
|
|
134
|
+
.set(failHeader)
|
|
135
|
+
.expect(403);
|
|
136
|
+
});
|
|
137
|
+
exports.checkPermissionsEndpoint = checkPermissionsEndpoint;
|
|
138
|
+
const getDB = () => {
|
|
139
|
+
return backend_core_1.context.getAppDB();
|
|
140
|
+
};
|
|
141
|
+
exports.getDB = getDB;
|
|
142
|
+
const testAutomation = (config, automation) => __awaiter(void 0, void 0, void 0, function* () {
|
|
143
|
+
return runRequest(automation.appId, () => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
+
return yield config.request
|
|
145
|
+
.post(`/api/automations/${automation._id}/test`)
|
|
146
|
+
.send({
|
|
147
|
+
row: {
|
|
148
|
+
name: "Test",
|
|
149
|
+
description: "TEST",
|
|
150
|
+
},
|
|
151
|
+
})
|
|
152
|
+
.set(config.defaultHeaders())
|
|
153
|
+
.expect("Content-Type", /json/)
|
|
154
|
+
.expect(200);
|
|
155
|
+
}));
|
|
156
|
+
});
|
|
157
|
+
exports.testAutomation = testAutomation;
|
|
158
|
+
const runInProd = (func) => __awaiter(void 0, void 0, void 0, function* () {
|
|
159
|
+
const nodeEnv = env.NODE_ENV;
|
|
160
|
+
const workerId = env.JEST_WORKER_ID;
|
|
161
|
+
env._set("NODE_ENV", "PRODUCTION");
|
|
162
|
+
env._set("JEST_WORKER_ID", null);
|
|
163
|
+
yield func();
|
|
164
|
+
env._set("NODE_ENV", nodeEnv);
|
|
165
|
+
env._set("JEST_WORKER_ID", workerId);
|
|
166
|
+
});
|
|
167
|
+
exports.runInProd = runInProd;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.switchToSelfHosted = exports.getConfig = exports.getRequest = exports.afterAll = exports.beforeAll = exports.delay = exports.structures = void 0;
|
|
39
|
+
const TestConfiguration_1 = __importDefault(require("../../../../tests/utilities/TestConfiguration"));
|
|
40
|
+
const environment_1 = __importDefault(require("../../../../environment"));
|
|
41
|
+
exports.structures = __importStar(require("../../../../tests/utilities/structures"));
|
|
42
|
+
function user() {
|
|
43
|
+
return {
|
|
44
|
+
_id: "user",
|
|
45
|
+
_rev: "rev",
|
|
46
|
+
createdAt: Date.now(),
|
|
47
|
+
email: "test@test.com",
|
|
48
|
+
roles: {},
|
|
49
|
+
tenantId: "default",
|
|
50
|
+
status: "active",
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
jest.mock("../../../../utilities/workerRequests", () => ({
|
|
54
|
+
getGlobalUsers: jest.fn(() => {
|
|
55
|
+
return {
|
|
56
|
+
_id: "us_uuid1",
|
|
57
|
+
};
|
|
58
|
+
}),
|
|
59
|
+
getGlobalSelf: jest.fn(() => {
|
|
60
|
+
return {
|
|
61
|
+
_id: "us_uuid1",
|
|
62
|
+
};
|
|
63
|
+
}),
|
|
64
|
+
allGlobalUsers: jest.fn(() => {
|
|
65
|
+
return [user()];
|
|
66
|
+
}),
|
|
67
|
+
readGlobalUser: jest.fn(() => {
|
|
68
|
+
return user();
|
|
69
|
+
}),
|
|
70
|
+
saveGlobalUser: jest.fn(() => {
|
|
71
|
+
return { _id: "user", _rev: "rev" };
|
|
72
|
+
}),
|
|
73
|
+
deleteGlobalUser: jest.fn(() => {
|
|
74
|
+
return { message: "deleted user" };
|
|
75
|
+
}),
|
|
76
|
+
removeAppFromUserRoles: jest.fn(),
|
|
77
|
+
}));
|
|
78
|
+
function delay(ms) {
|
|
79
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
80
|
+
}
|
|
81
|
+
exports.delay = delay;
|
|
82
|
+
let request, config;
|
|
83
|
+
function beforeAll() {
|
|
84
|
+
config = new TestConfiguration_1.default();
|
|
85
|
+
request = config.getRequest();
|
|
86
|
+
}
|
|
87
|
+
exports.beforeAll = beforeAll;
|
|
88
|
+
function afterAll() {
|
|
89
|
+
if (config) {
|
|
90
|
+
config.end();
|
|
91
|
+
}
|
|
92
|
+
// clear app files
|
|
93
|
+
request = null;
|
|
94
|
+
config = null;
|
|
95
|
+
}
|
|
96
|
+
exports.afterAll = afterAll;
|
|
97
|
+
function getRequest() {
|
|
98
|
+
if (!request) {
|
|
99
|
+
exports.beforeAll();
|
|
100
|
+
}
|
|
101
|
+
return request;
|
|
102
|
+
}
|
|
103
|
+
exports.getRequest = getRequest;
|
|
104
|
+
function getConfig() {
|
|
105
|
+
if (!config) {
|
|
106
|
+
exports.beforeAll();
|
|
107
|
+
}
|
|
108
|
+
return config;
|
|
109
|
+
}
|
|
110
|
+
exports.getConfig = getConfig;
|
|
111
|
+
function switchToSelfHosted(func) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
// self hosted stops any attempts to Dynamo
|
|
114
|
+
environment_1.default._set("NODE_ENV", "production");
|
|
115
|
+
environment_1.default._set("SELF_HOSTED", true);
|
|
116
|
+
let error;
|
|
117
|
+
try {
|
|
118
|
+
yield func();
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
error = err;
|
|
122
|
+
}
|
|
123
|
+
environment_1.default._set("NODE_ENV", "jest");
|
|
124
|
+
environment_1.default._set("SELF_HOSTED", false);
|
|
125
|
+
// don't throw error until after reset
|
|
126
|
+
if (error) {
|
|
127
|
+
throw error;
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
exports.switchToSelfHosted = switchToSelfHosted;
|
|
@@ -12,10 +12,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.stringSplit = exports.substituteLoopStep = exports.getError = exports.cleanUpRow = exports.cleanInputValues = void 0;
|
|
16
16
|
const string_templates_1 = require("@budibase/string-templates");
|
|
17
17
|
const sdk_1 = __importDefault(require("../sdk"));
|
|
18
|
-
const automations_1 = require("../definitions/automations");
|
|
19
18
|
/**
|
|
20
19
|
* When values are input to the system generally they will be of type string as this is required for template strings.
|
|
21
20
|
* This can generate some odd scenarios as the Schema of the automation requires a number but the builder might supply
|
|
@@ -133,27 +132,3 @@ function stringSplit(value) {
|
|
|
133
132
|
return value;
|
|
134
133
|
}
|
|
135
134
|
exports.stringSplit = stringSplit;
|
|
136
|
-
function typecastForLooping(loopStep, input) {
|
|
137
|
-
if (!input || !input.binding) {
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
try {
|
|
141
|
-
switch (loopStep.inputs.option) {
|
|
142
|
-
case automations_1.LoopStepType.ARRAY:
|
|
143
|
-
if (typeof input.binding === "string") {
|
|
144
|
-
return JSON.parse(input.binding);
|
|
145
|
-
}
|
|
146
|
-
break;
|
|
147
|
-
case automations_1.LoopStepType.STRING:
|
|
148
|
-
if (Array.isArray(input.binding)) {
|
|
149
|
-
return input.binding.join(",");
|
|
150
|
-
}
|
|
151
|
-
break;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
catch (err) {
|
|
155
|
-
throw new Error("Unable to cast to correct type");
|
|
156
|
-
}
|
|
157
|
-
return input.binding;
|
|
158
|
-
}
|
|
159
|
-
exports.typecastForLooping = typecastForLooping;
|