@budibase/server 2.2.12-alpha.5 → 2.2.13
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.fa480d5b.css → index.9cb087df.css} +2 -2
- package/builder/assets/{index.d930bfc5.js → index.ef02c146.js} +369 -372
- package/builder/index.html +2 -2
- package/coverage/clover.xml +5094 -5122
- package/coverage/coverage-final.json +265 -268
- package/coverage/lcov-report/index.html +215 -215
- 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 +183 -258
- 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 -17
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +19 -19
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +195 -141
- 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 +16 -67
- package/coverage/lcov-report/src/api/controllers/public/index.html +15 -15
- 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 +9 -9
- 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 +52 -55
- 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 +70 -52
- 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 +24 -24
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +77 -59
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +22 -22
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +69 -51
- 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 +11 -44
- 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 +11 -8
- package/coverage/lcov-report/src/api/routes/dev.ts.html +13 -13
- package/coverage/lcov-report/src/api/routes/index.html +7 -7
- 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 +14 -146
- package/coverage/lcov-report/src/api/routes/public/index.html +7 -7
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +52 -52
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +15 -15
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +16 -28
- 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 +15 -15
- 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 +24 -24
- 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 +28 -40
- 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 +25 -25
- 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 +12 -12
- 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 +53 -41
- package/coverage/lcov-report/src/sdk/app/backups/index.html +28 -28
- 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/rows/attachments.ts.html +6 -6
- package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +4 -4
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +4 -4
- 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 +9 -9
- 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 +125 -182
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +15 -15
- package/coverage/lcov-report/src/tests/utilities/index.html +15 -15
- 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 +103 -34
- 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 +43 -43
- 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 +7320 -7367
- package/dist/api/controllers/application.js +35 -47
- package/dist/api/controllers/cloud.js +2 -6
- package/dist/api/controllers/deploy/index.js +60 -43
- package/dist/api/controllers/plugin/index.js +6 -6
- package/dist/api/controllers/public/applications.js +1 -22
- package/dist/api/controllers/row/ExternalRequest.js +1 -0
- package/dist/api/controllers/row/internal.js +12 -12
- package/dist/api/controllers/row/staticFormula.js +1 -1
- package/dist/api/controllers/static/index.js +11 -8
- package/dist/api/controllers/table/utils.js +2 -1
- package/dist/api/controllers/view/index.js +6 -5
- package/dist/api/controllers/view/viewBuilder.js +8 -2
- package/dist/api/routes/application.js +0 -3
- package/dist/api/routes/deploy.js +2 -1
- package/dist/api/routes/public/applications.js +0 -37
- package/dist/api/routes/public/middleware/mapper.js +0 -3
- 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 +1 -5
- package/dist/integrations/googlesheets.js +1 -1
- 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 +6 -2
- 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 +28 -4
- 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/scripts/dev/manage.js +16 -0
- package/specs/openapi.json +0 -84
- package/specs/openapi.yaml +0 -53
- package/specs/resources/application.js +0 -19
- package/src/api/controllers/application.ts +36 -61
- package/src/api/controllers/auth.ts +2 -2
- package/src/api/controllers/cloud.ts +6 -10
- package/src/api/controllers/deploy/Deployment.ts +0 -1
- package/src/api/controllers/deploy/index.ts +58 -40
- package/src/api/controllers/plugin/index.ts +9 -14
- package/src/api/controllers/public/applications.ts +0 -17
- package/src/api/controllers/row/ExternalRequest.ts +1 -0
- package/src/api/controllers/row/internal.ts +23 -24
- 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/controllers/table/utils.ts +7 -1
- package/src/api/controllers/view/index.ts +11 -5
- package/src/api/controllers/view/viewBuilder.ts +14 -8
- package/src/api/routes/application.ts +0 -11
- package/src/api/routes/deploy.ts +1 -0
- package/src/api/routes/index.ts +3 -4
- package/src/api/routes/public/applications.ts +0 -44
- package/src/api/routes/public/middleware/mapper.ts +0 -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} +18 -94
- 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/deployment.spec.ts +25 -0
- package/src/api/routes/tests/permissions.spec.js +1 -1
- package/src/api/routes/tests/routing.spec.js +2 -1
- 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/api/routes/tests/webhook.spec.js +1 -1
- 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/definitions/openapi.ts +0 -10
- package/src/environment.ts +1 -5
- package/src/integrations/googlesheets.ts +1 -1
- package/src/integrations/index.ts +5 -1
- package/src/migrations/functions/backfill/global/configs.ts +4 -5
- package/src/sdk/app/backups/imports.ts +6 -2
- package/src/sdk/tests/attachments.spec.ts +4 -1
- package/src/tests/jestSetup.ts +1 -4
- package/src/tests/utilities/TestConfiguration.ts +4 -23
- package/src/threads/automation.ts +27 -4
- 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 -65
- 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
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.deleteFolderFileSystem = exports.findFileRec = exports.extractTarball = exports.createTempFolder = exports.readFileSync = exports.sendTempFile = exports.stringToFileStream = exports.storeTempFile = exports.streamFile = exports.apiFileReturn = exports.loadHandlebarsFile = exports.checkDevelopmentEnvironment = exports.init = exports.TOP_LEVEL_PATH = void 0;
|
|
16
|
-
const { budibaseTempDir } = require("../budibaseDir");
|
|
17
|
-
const fs = require("fs");
|
|
18
|
-
const { join } = require("path");
|
|
19
|
-
const uuid = require("uuid/v4");
|
|
20
|
-
const env = require("../../environment");
|
|
21
|
-
const tar_1 = __importDefault(require("tar"));
|
|
22
|
-
exports.TOP_LEVEL_PATH = join(__dirname, "..", "..", "..");
|
|
23
|
-
/**
|
|
24
|
-
* Upon first startup of instance there may not be everything we need in tmp directory, set it up.
|
|
25
|
-
*/
|
|
26
|
-
const init = () => {
|
|
27
|
-
const tempDir = budibaseTempDir();
|
|
28
|
-
if (!fs.existsSync(tempDir)) {
|
|
29
|
-
// some test cases fire this quickly enough that
|
|
30
|
-
// synchronous cases can end up here at the same time
|
|
31
|
-
try {
|
|
32
|
-
fs.mkdirSync(tempDir);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
if (!err || err.code !== "EEXIST") {
|
|
36
|
-
throw err;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const clientLibPath = join(budibaseTempDir(), "budibase-client.js");
|
|
41
|
-
if (env.isTest() && !fs.existsSync(clientLibPath)) {
|
|
42
|
-
fs.copyFileSync(require.resolve("@budibase/client"), clientLibPath);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
exports.init = init;
|
|
46
|
-
/**
|
|
47
|
-
* Checks if the system is currently in development mode and if it is makes sure
|
|
48
|
-
* everything required to function is ready.
|
|
49
|
-
*/
|
|
50
|
-
const checkDevelopmentEnvironment = () => {
|
|
51
|
-
if (!env.isDev() || env.isTest()) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
if (!fs.existsSync(budibaseTempDir())) {
|
|
55
|
-
fs.mkdirSync(budibaseTempDir());
|
|
56
|
-
}
|
|
57
|
-
let error;
|
|
58
|
-
if (!fs.existsSync(join(process.cwd(), ".env"))) {
|
|
59
|
-
error = "Must run via yarn once to generate environment.";
|
|
60
|
-
}
|
|
61
|
-
if (error) {
|
|
62
|
-
console.error(error);
|
|
63
|
-
process.exit(-1);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
exports.checkDevelopmentEnvironment = checkDevelopmentEnvironment;
|
|
67
|
-
/**
|
|
68
|
-
* Used to retrieve a handlebars file from the system which will be used as a template.
|
|
69
|
-
* This is allowable as the template handlebars files should be static and identical across
|
|
70
|
-
* the cluster.
|
|
71
|
-
* @param {string} path The path to the handlebars file which is to be loaded.
|
|
72
|
-
* @returns {string} The loaded handlebars file as a string - loaded as utf8.
|
|
73
|
-
*/
|
|
74
|
-
const loadHandlebarsFile = (path) => {
|
|
75
|
-
return fs.readFileSync(path, "utf8");
|
|
76
|
-
};
|
|
77
|
-
exports.loadHandlebarsFile = loadHandlebarsFile;
|
|
78
|
-
/**
|
|
79
|
-
* When return a file from the API need to write the file to the system temporarily so we
|
|
80
|
-
* can create a read stream to send.
|
|
81
|
-
* @param {string} contents the contents of the file which is to be returned from the API.
|
|
82
|
-
* @return {Object} the read stream which can be put into the koa context body.
|
|
83
|
-
*/
|
|
84
|
-
const apiFileReturn = (contents) => {
|
|
85
|
-
const path = join(budibaseTempDir(), uuid());
|
|
86
|
-
fs.writeFileSync(path, contents);
|
|
87
|
-
return fs.createReadStream(path);
|
|
88
|
-
};
|
|
89
|
-
exports.apiFileReturn = apiFileReturn;
|
|
90
|
-
const streamFile = (path) => {
|
|
91
|
-
return fs.createReadStream(path);
|
|
92
|
-
};
|
|
93
|
-
exports.streamFile = streamFile;
|
|
94
|
-
/**
|
|
95
|
-
* Writes the provided contents to a temporary file, which can be used briefly.
|
|
96
|
-
* @param {string} fileContents contents which will be written to a temp file.
|
|
97
|
-
* @return {string} the path to the temp file.
|
|
98
|
-
*/
|
|
99
|
-
const storeTempFile = (fileContents) => {
|
|
100
|
-
const path = join(budibaseTempDir(), uuid());
|
|
101
|
-
fs.writeFileSync(path, fileContents);
|
|
102
|
-
return path;
|
|
103
|
-
};
|
|
104
|
-
exports.storeTempFile = storeTempFile;
|
|
105
|
-
/**
|
|
106
|
-
* Utility function for getting a file read stream - a simple in memory buffered read
|
|
107
|
-
* stream doesn't work for pouchdb.
|
|
108
|
-
*/
|
|
109
|
-
const stringToFileStream = (contents) => {
|
|
110
|
-
const path = (0, exports.storeTempFile)(contents);
|
|
111
|
-
return fs.createReadStream(path);
|
|
112
|
-
};
|
|
113
|
-
exports.stringToFileStream = stringToFileStream;
|
|
114
|
-
/**
|
|
115
|
-
* Creates a temp file and returns it from the API.
|
|
116
|
-
* @param {string} fileContents the contents to be returned in file.
|
|
117
|
-
*/
|
|
118
|
-
const sendTempFile = (fileContents) => {
|
|
119
|
-
const path = (0, exports.storeTempFile)(fileContents);
|
|
120
|
-
return fs.createReadStream(path);
|
|
121
|
-
};
|
|
122
|
-
exports.sendTempFile = sendTempFile;
|
|
123
|
-
/**
|
|
124
|
-
* All file reads come through here just to make sure all of them make sense
|
|
125
|
-
* allows a centralised location to check logic is all good.
|
|
126
|
-
*/
|
|
127
|
-
const readFileSync = (filepath, options = "utf8") => {
|
|
128
|
-
return fs.readFileSync(filepath, options);
|
|
129
|
-
};
|
|
130
|
-
exports.readFileSync = readFileSync;
|
|
131
|
-
const createTempFolder = (item) => {
|
|
132
|
-
const path = join(budibaseTempDir(), item);
|
|
133
|
-
try {
|
|
134
|
-
// remove old tmp directories automatically - don't combine
|
|
135
|
-
if (fs.existsSync(path)) {
|
|
136
|
-
fs.rmSync(path, { recursive: true, force: true });
|
|
137
|
-
}
|
|
138
|
-
fs.mkdirSync(path);
|
|
139
|
-
}
|
|
140
|
-
catch (err) {
|
|
141
|
-
throw new Error(`Path cannot be created: ${err.message}`);
|
|
142
|
-
}
|
|
143
|
-
return path;
|
|
144
|
-
};
|
|
145
|
-
exports.createTempFolder = createTempFolder;
|
|
146
|
-
const extractTarball = (fromFilePath, toPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
147
|
-
yield tar_1.default.extract({
|
|
148
|
-
file: fromFilePath,
|
|
149
|
-
C: toPath,
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
exports.extractTarball = extractTarball;
|
|
153
|
-
/**
|
|
154
|
-
* Find for a file recursively from start path applying filter, return first match
|
|
155
|
-
*/
|
|
156
|
-
const findFileRec = (startPath, filter) => {
|
|
157
|
-
if (!fs.existsSync(startPath)) {
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
|
-
const files = fs.readdirSync(startPath);
|
|
161
|
-
for (let i = 0, len = files.length; i < len; i++) {
|
|
162
|
-
const filename = join(startPath, files[i]);
|
|
163
|
-
const stat = fs.lstatSync(filename);
|
|
164
|
-
if (stat.isDirectory()) {
|
|
165
|
-
return (0, exports.findFileRec)(filename, filter);
|
|
166
|
-
}
|
|
167
|
-
else if (filename.endsWith(filter)) {
|
|
168
|
-
return filename;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
exports.findFileRec = findFileRec;
|
|
173
|
-
/**
|
|
174
|
-
* Remove a folder which is not empty from the file system
|
|
175
|
-
*/
|
|
176
|
-
const deleteFolderFileSystem = (path) => {
|
|
177
|
-
if (!fs.existsSync(path)) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
fs.rmSync(path, { recursive: true, force: true });
|
|
181
|
-
};
|
|
182
|
-
exports.deleteFolderFileSystem = deleteFolderFileSystem;
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getDatasourcePlugin = exports.getPluginMetadata = void 0;
|
|
13
|
-
const { budibaseTempDir } = require("../budibaseDir");
|
|
14
|
-
const fs = require("fs");
|
|
15
|
-
const { join } = require("path");
|
|
16
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
17
|
-
const DATASOURCE_PATH = join(budibaseTempDir(), "datasource");
|
|
18
|
-
const getPluginMetadata = (path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
-
let metadata = {};
|
|
20
|
-
try {
|
|
21
|
-
const pkg = fs.readFileSync(join(path, "package.json"), "utf8");
|
|
22
|
-
const schema = fs.readFileSync(join(path, "schema.json"), "utf8");
|
|
23
|
-
metadata.schema = JSON.parse(schema);
|
|
24
|
-
metadata.package = JSON.parse(pkg);
|
|
25
|
-
if (!metadata.package.name ||
|
|
26
|
-
!metadata.package.version ||
|
|
27
|
-
!metadata.package.description) {
|
|
28
|
-
throw new Error("package.json is missing one of 'name', 'version' or 'description'.");
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
throw new Error(`Unable to process schema.json/package.json in plugin. ${err.message}`);
|
|
33
|
-
}
|
|
34
|
-
return { metadata, directory: path };
|
|
35
|
-
});
|
|
36
|
-
exports.getPluginMetadata = getPluginMetadata;
|
|
37
|
-
const getDatasourcePlugin = (plugin) => __awaiter(void 0, void 0, void 0, function* () {
|
|
38
|
-
var _a;
|
|
39
|
-
const hash = (_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.hash;
|
|
40
|
-
if (!fs.existsSync(DATASOURCE_PATH)) {
|
|
41
|
-
fs.mkdirSync(DATASOURCE_PATH);
|
|
42
|
-
}
|
|
43
|
-
const filename = join(DATASOURCE_PATH, plugin.name);
|
|
44
|
-
const metadataName = `${filename}.bbmetadata`;
|
|
45
|
-
if (fs.existsSync(filename)) {
|
|
46
|
-
const currentHash = fs.readFileSync(metadataName, "utf8");
|
|
47
|
-
// if hash is the same return the file, otherwise remove it and re-download
|
|
48
|
-
if (currentHash === hash) {
|
|
49
|
-
return require(filename);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
console.log(`Updating plugin: ${plugin.name}`);
|
|
53
|
-
delete require.cache[require.resolve(filename)];
|
|
54
|
-
fs.unlinkSync(filename);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const pluginKey = backend_core_1.objectStore.getPluginJSKey(plugin);
|
|
58
|
-
const pluginJs = yield backend_core_1.objectStore.retrieve(backend_core_1.objectStore.ObjectStoreBuckets.PLUGINS, pluginKey);
|
|
59
|
-
fs.writeFileSync(filename, pluginJs);
|
|
60
|
-
fs.writeFileSync(metadataName, hash);
|
|
61
|
-
return require(filename);
|
|
62
|
-
});
|
|
63
|
-
exports.getDatasourcePlugin = getDatasourcePlugin;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.downloadTemplate = exports.getTemplateStream = void 0;
|
|
13
|
-
const fs = require("fs");
|
|
14
|
-
const { join } = require("path");
|
|
15
|
-
const constants_1 = require("../../constants");
|
|
16
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
17
|
-
/**
|
|
18
|
-
* This function manages temporary template files which are stored by Koa.
|
|
19
|
-
* @param {Object} template The template object retrieved from the Koa context object.
|
|
20
|
-
* @returns {Object} Returns an fs read stream which can be loaded into the database.
|
|
21
|
-
*/
|
|
22
|
-
const getTemplateStream = (template) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
-
if (template.file) {
|
|
24
|
-
return fs.createReadStream(template.file.path);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
const [type, name] = template.key.split("/");
|
|
28
|
-
const tmpPath = yield (0, exports.downloadTemplate)(type, name);
|
|
29
|
-
return fs.createReadStream(join(tmpPath, name, "db", "dump.txt"));
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
exports.getTemplateStream = getTemplateStream;
|
|
33
|
-
/**
|
|
34
|
-
* Retrieves a template and pipes it to minio as well as making it available temporarily.
|
|
35
|
-
* @param {string} type The type of template which is to be retrieved.
|
|
36
|
-
* @param name
|
|
37
|
-
* @return {Promise<*>}
|
|
38
|
-
*/
|
|
39
|
-
const downloadTemplate = (type, name) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
const DEFAULT_TEMPLATES_BUCKET = "prod-budi-templates.s3-eu-west-1.amazonaws.com";
|
|
41
|
-
const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`;
|
|
42
|
-
return backend_core_1.objectStore.downloadTarball(templateUrl, constants_1.ObjectStoreBuckets.TEMPLATES, type);
|
|
43
|
-
});
|
|
44
|
-
exports.downloadTemplate = downloadTemplate;
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { db as dbCore } from "@budibase/backend-core"
|
|
2
|
-
import { AppStatus } from "../../../db/utils"
|
|
3
|
-
|
|
4
|
-
import * as setup from "./utilities"
|
|
5
|
-
|
|
6
|
-
describe("/cloud", () => {
|
|
7
|
-
let request = setup.getRequest()
|
|
8
|
-
let config = setup.getConfig()
|
|
9
|
-
|
|
10
|
-
afterAll(setup.afterAll)
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
await config.init()
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
afterEach(async () => {
|
|
17
|
-
// clear all mocks
|
|
18
|
-
jest.clearAllMocks()
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
describe("import", () => {
|
|
22
|
-
it("should be able to import apps", async () => {
|
|
23
|
-
// first we need to delete any existing apps on the system so it looks clean otherwise the
|
|
24
|
-
// import will not run
|
|
25
|
-
await request
|
|
26
|
-
.post(
|
|
27
|
-
`/api/applications/${dbCore.getProdAppID(
|
|
28
|
-
config.getAppId()
|
|
29
|
-
)}/unpublish`
|
|
30
|
-
)
|
|
31
|
-
.set(config.defaultHeaders())
|
|
32
|
-
.expect(204)
|
|
33
|
-
await request
|
|
34
|
-
.delete(`/api/applications/${config.getAppId()}`)
|
|
35
|
-
.set(config.defaultHeaders())
|
|
36
|
-
.expect("Content-Type", /json/)
|
|
37
|
-
.expect(200)
|
|
38
|
-
|
|
39
|
-
// get a count of apps before the import
|
|
40
|
-
const preImportApps = await request
|
|
41
|
-
.get(`/api/applications?status=${AppStatus.ALL}`)
|
|
42
|
-
.set(config.defaultHeaders())
|
|
43
|
-
.expect("Content-Type", /json/)
|
|
44
|
-
.expect(200)
|
|
45
|
-
|
|
46
|
-
// Perform the import
|
|
47
|
-
const res = await request
|
|
48
|
-
.post(`/api/cloud/import`)
|
|
49
|
-
.attach("importFile", "src/api/routes/tests/data/export-test.tar.gz")
|
|
50
|
-
.set(config.defaultHeaders())
|
|
51
|
-
.expect(200)
|
|
52
|
-
expect(res.body.message).toEqual("Apps successfully imported.")
|
|
53
|
-
|
|
54
|
-
// get a count of apps after the import
|
|
55
|
-
const postImportApps = await request
|
|
56
|
-
.get(`/api/applications?status=${AppStatus.ALL}`)
|
|
57
|
-
.set(config.defaultHeaders())
|
|
58
|
-
.expect("Content-Type", /json/)
|
|
59
|
-
.expect(200)
|
|
60
|
-
|
|
61
|
-
// There are two apps in the file that was imported so check for this
|
|
62
|
-
expect(postImportApps.body.length).toEqual(2)
|
|
63
|
-
})
|
|
64
|
-
})
|
|
65
|
-
})
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
let mockObjectStore = jest.fn().mockImplementation(() => {
|
|
2
|
-
return [{ name: "test.js" }]
|
|
3
|
-
})
|
|
4
|
-
|
|
5
|
-
let deleteFolder = jest.fn().mockImplementation()
|
|
6
|
-
jest.mock("@budibase/backend-core", () => {
|
|
7
|
-
const core = jest.requireActual("@budibase/backend-core")
|
|
8
|
-
return {
|
|
9
|
-
...core,
|
|
10
|
-
objectStore: {
|
|
11
|
-
...core.objectStore,
|
|
12
|
-
upload: jest.fn(),
|
|
13
|
-
uploadDirectory: mockObjectStore,
|
|
14
|
-
deleteFolder: deleteFolder,
|
|
15
|
-
},
|
|
16
|
-
}
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
import { events } from "@budibase/backend-core"
|
|
20
|
-
import * as setup from "./utilities"
|
|
21
|
-
|
|
22
|
-
describe("/plugins", () => {
|
|
23
|
-
let request = setup.getRequest()
|
|
24
|
-
let config = setup.getConfig()
|
|
25
|
-
|
|
26
|
-
afterAll(setup.afterAll)
|
|
27
|
-
|
|
28
|
-
beforeEach(async () => {
|
|
29
|
-
await config.init()
|
|
30
|
-
jest.clearAllMocks()
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
const createPlugin = async (status?: number) => {
|
|
34
|
-
return request
|
|
35
|
-
.post(`/api/plugin/upload`)
|
|
36
|
-
.attach("file", "src/api/routes/tests/data/comment-box-1.0.2.tar.gz")
|
|
37
|
-
.set(config.defaultHeaders())
|
|
38
|
-
.expect("Content-Type", /json/)
|
|
39
|
-
.expect(status ? status : 200)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
const getPlugins = async (status?: number) => {
|
|
43
|
-
return request
|
|
44
|
-
.get(`/api/plugin`)
|
|
45
|
-
.set(config.defaultHeaders())
|
|
46
|
-
.expect("Content-Type", /json/)
|
|
47
|
-
.expect(status ? status : 200)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
describe("upload", () => {
|
|
51
|
-
it("should be able to upload a plugin", async () => {
|
|
52
|
-
let res = await createPlugin()
|
|
53
|
-
expect(res.body).toBeDefined()
|
|
54
|
-
expect(res.body.plugins).toBeDefined()
|
|
55
|
-
expect(res.body.plugins[0]._id).toEqual("plg_comment-box")
|
|
56
|
-
expect(events.plugin.imported).toHaveBeenCalledTimes(1)
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
it("should not be able to create a plugin if there is an error", async () => {
|
|
60
|
-
mockObjectStore.mockImplementationOnce(() => {
|
|
61
|
-
throw new Error()
|
|
62
|
-
})
|
|
63
|
-
let res = await createPlugin(400)
|
|
64
|
-
expect(res.body.message).toEqual("Failed to import plugin: Error")
|
|
65
|
-
expect(events.plugin.imported).toHaveBeenCalledTimes(0)
|
|
66
|
-
})
|
|
67
|
-
})
|
|
68
|
-
|
|
69
|
-
describe("fetch", () => {
|
|
70
|
-
it("should be able to fetch plugins", async () => {
|
|
71
|
-
await createPlugin()
|
|
72
|
-
const res = await getPlugins()
|
|
73
|
-
expect(res.body).toBeDefined()
|
|
74
|
-
expect(res.body[0]._id).toEqual("plg_comment-box")
|
|
75
|
-
})
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
describe("destroy", () => {
|
|
79
|
-
it("should be able to delete a plugin", async () => {
|
|
80
|
-
await createPlugin()
|
|
81
|
-
const res = await request
|
|
82
|
-
.delete(`/api/plugin/plg_comment-box`)
|
|
83
|
-
.set(config.defaultHeaders())
|
|
84
|
-
.expect("Content-Type", /json/)
|
|
85
|
-
.expect(200)
|
|
86
|
-
expect(res.body).toBeDefined()
|
|
87
|
-
expect(res.body.message).toEqual("Plugin plg_comment-box deleted.")
|
|
88
|
-
|
|
89
|
-
const plugins = await getPlugins()
|
|
90
|
-
expect(plugins.body).toBeDefined()
|
|
91
|
-
expect(plugins.body.length).toEqual(0)
|
|
92
|
-
expect(events.plugin.deleted).toHaveBeenCalledTimes(1)
|
|
93
|
-
})
|
|
94
|
-
it("should handle an error deleting a plugin", async () => {
|
|
95
|
-
deleteFolder.mockImplementationOnce(() => {
|
|
96
|
-
throw new Error()
|
|
97
|
-
})
|
|
98
|
-
|
|
99
|
-
await createPlugin()
|
|
100
|
-
const res = await request
|
|
101
|
-
.delete(`/api/plugin/plg_comment-box`)
|
|
102
|
-
.set(config.defaultHeaders())
|
|
103
|
-
.expect("Content-Type", /json/)
|
|
104
|
-
.expect(400)
|
|
105
|
-
|
|
106
|
-
expect(res.body.message).toEqual("Failed to delete plugin: Error")
|
|
107
|
-
expect(events.plugin.deleted).toHaveBeenCalledTimes(0)
|
|
108
|
-
const plugins = await getPlugins()
|
|
109
|
-
expect(plugins.body).toBeDefined()
|
|
110
|
-
expect(plugins.body.length).toEqual(1)
|
|
111
|
-
})
|
|
112
|
-
})
|
|
113
|
-
|
|
114
|
-
describe("github", () => {
|
|
115
|
-
const createGithubPlugin = async (status?: number, url?: string) => {
|
|
116
|
-
return await request
|
|
117
|
-
.post(`/api/plugin`)
|
|
118
|
-
.send({
|
|
119
|
-
source: "Github",
|
|
120
|
-
url,
|
|
121
|
-
githubToken: "token",
|
|
122
|
-
})
|
|
123
|
-
.set(config.defaultHeaders())
|
|
124
|
-
.expect("Content-Type", /json/)
|
|
125
|
-
.expect(status ? status : 200)
|
|
126
|
-
}
|
|
127
|
-
it("should be able to create a plugin from github", async () => {
|
|
128
|
-
const res = await createGithubPlugin(
|
|
129
|
-
200,
|
|
130
|
-
"https://github.com/my-repo/budibase-comment-box.git"
|
|
131
|
-
)
|
|
132
|
-
expect(res.body).toBeDefined()
|
|
133
|
-
expect(res.body.plugin).toBeDefined()
|
|
134
|
-
expect(res.body.plugin._id).toEqual("plg_comment-box")
|
|
135
|
-
})
|
|
136
|
-
it("should fail if the url is not from github", async () => {
|
|
137
|
-
const res = await createGithubPlugin(
|
|
138
|
-
400,
|
|
139
|
-
"https://notgithub.com/my-repo/budibase-comment-box"
|
|
140
|
-
)
|
|
141
|
-
expect(res.body.message).toEqual(
|
|
142
|
-
"Failed to import plugin: The plugin origin must be from Github"
|
|
143
|
-
)
|
|
144
|
-
})
|
|
145
|
-
})
|
|
146
|
-
describe("npm", () => {
|
|
147
|
-
it("should be able to create a plugin from npm", async () => {
|
|
148
|
-
const res = await request
|
|
149
|
-
.post(`/api/plugin`)
|
|
150
|
-
.send({
|
|
151
|
-
source: "NPM",
|
|
152
|
-
url: "https://www.npmjs.com/package/budibase-component",
|
|
153
|
-
})
|
|
154
|
-
.set(config.defaultHeaders())
|
|
155
|
-
.expect("Content-Type", /json/)
|
|
156
|
-
.expect(200)
|
|
157
|
-
expect(res.body).toBeDefined()
|
|
158
|
-
expect(res.body.plugin._id).toEqual("plg_budibase-component")
|
|
159
|
-
expect(events.plugin.imported).toHaveBeenCalled()
|
|
160
|
-
})
|
|
161
|
-
})
|
|
162
|
-
|
|
163
|
-
describe("url", () => {
|
|
164
|
-
it("should be able to create a plugin from a URL", async () => {
|
|
165
|
-
const res = await request
|
|
166
|
-
.post(`/api/plugin`)
|
|
167
|
-
.send({
|
|
168
|
-
source: "URL",
|
|
169
|
-
url: "https://www.someurl.com/comment-box/comment-box-1.0.2.tar.gz",
|
|
170
|
-
})
|
|
171
|
-
.set(config.defaultHeaders())
|
|
172
|
-
.expect("Content-Type", /json/)
|
|
173
|
-
.expect(200)
|
|
174
|
-
expect(res.body).toBeDefined()
|
|
175
|
-
expect(res.body.plugin._id).toEqual("plg_comment-box")
|
|
176
|
-
expect(events.plugin.imported).toHaveBeenCalledTimes(1)
|
|
177
|
-
})
|
|
178
|
-
})
|
|
179
|
-
})
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const setup = require("./utilities")
|
|
2
|
-
|
|
3
|
-
describe("test the bash action", () => {
|
|
4
|
-
let config = setup.getConfig()
|
|
5
|
-
|
|
6
|
-
beforeEach(async () => {
|
|
7
|
-
await config.init()
|
|
8
|
-
})
|
|
9
|
-
afterAll(setup.afterAll)
|
|
10
|
-
|
|
11
|
-
it("should be able to execute a script", async () => {
|
|
12
|
-
|
|
13
|
-
let res = await setup.runStep("EXECUTE_BASH",
|
|
14
|
-
inputs = {
|
|
15
|
-
code: "echo 'test'"
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
)
|
|
19
|
-
expect(res.stdout).toEqual("test\n")
|
|
20
|
-
expect(res.success).toEqual(true)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
it("should handle a null value", async () => {
|
|
24
|
-
|
|
25
|
-
let res = await setup.runStep("EXECUTE_BASH",
|
|
26
|
-
inputs = {
|
|
27
|
-
code: null
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
)
|
|
32
|
-
expect(res.stdout).toEqual("Budibase bash automation failed: Invalid inputs")
|
|
33
|
-
})
|
|
34
|
-
})
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
const setup = require("./utilities")
|
|
2
|
-
const fetch = require("node-fetch")
|
|
3
|
-
|
|
4
|
-
jest.mock("node-fetch")
|
|
5
|
-
|
|
6
|
-
describe("test the outgoing webhook action", () => {
|
|
7
|
-
let inputs
|
|
8
|
-
let config = setup.getConfig()
|
|
9
|
-
|
|
10
|
-
beforeEach(async () => {
|
|
11
|
-
await config.init()
|
|
12
|
-
inputs = {
|
|
13
|
-
username: "joe_bloggs",
|
|
14
|
-
url: "http://www.test.com",
|
|
15
|
-
}
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
afterAll(setup.afterAll)
|
|
19
|
-
|
|
20
|
-
it("should be able to run the action", async () => {
|
|
21
|
-
const res = await setup.runStep(setup.actions.discord.stepId, inputs)
|
|
22
|
-
expect(res.response.url).toEqual("http://www.test.com")
|
|
23
|
-
expect(res.response.method).toEqual("post")
|
|
24
|
-
expect(res.success).toEqual(true)
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
})
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
const setup = require("./utilities")
|
|
2
|
-
|
|
3
|
-
describe("test the execute query action", () => {
|
|
4
|
-
let datasource
|
|
5
|
-
let config = setup.getConfig()
|
|
6
|
-
|
|
7
|
-
beforeEach(async () => {
|
|
8
|
-
await config.init()
|
|
9
|
-
|
|
10
|
-
await config.createDatasource()
|
|
11
|
-
query = await config.createQuery()
|
|
12
|
-
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
afterAll(setup.afterAll)
|
|
16
|
-
|
|
17
|
-
it("should be able to execute a query", async () => {
|
|
18
|
-
let res = await setup.runStep(setup.actions.EXECUTE_QUERY.stepId,
|
|
19
|
-
inputs = {
|
|
20
|
-
query: { queryId: query._id }
|
|
21
|
-
}
|
|
22
|
-
)
|
|
23
|
-
expect(res.response).toEqual([{ a: 'string', b: 1 }])
|
|
24
|
-
expect(res.success).toEqual(true)
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
it("should handle a null query value", async () => {
|
|
28
|
-
let res = await setup.runStep(setup.actions.EXECUTE_QUERY.stepId,
|
|
29
|
-
inputs = {
|
|
30
|
-
query: null
|
|
31
|
-
}
|
|
32
|
-
)
|
|
33
|
-
expect(res.response.message).toEqual("Invalid inputs")
|
|
34
|
-
expect(res.success).toEqual(false)
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
it("should handle an error executing a query", async () => {
|
|
39
|
-
let res = await setup.runStep(setup.actions.EXECUTE_QUERY.stepId,
|
|
40
|
-
inputs = {
|
|
41
|
-
query: { queryId: "wrong_id" }
|
|
42
|
-
}
|
|
43
|
-
)
|
|
44
|
-
expect(res.response).toEqual('{"status":404,"name":"not_found","message":"missing","reason":"missing"}')
|
|
45
|
-
expect(res.success).toEqual(false)
|
|
46
|
-
})
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
})
|