@budibase/server 2.2.12-alpha.20 → 2.2.12-alpha.21
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/builder/assets/{index.fa480d5b.css → index.34817feb.css} +1 -1
- package/builder/assets/{index.35af2c9c.js → index.61dfdc1c.js} +245 -244
- package/builder/index.html +2 -2
- package/coverage/clover.xml +772 -771
- package/coverage/coverage-final.json +40 -40
- package/coverage/lcov-report/index.html +55 -55
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/apikeys.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/application.ts.html +56 -56
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/automation.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/cloud.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/component.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/datasource.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +12 -12
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +69 -69
- package/coverage/lcov-report/src/api/controllers/dev.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/layout.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/metadata.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/migrations.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/permission.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/tables.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +1 -1
- 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 +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/query/validation.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/role.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/routing.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/external.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/index.html +15 -15
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/internal.ts.html +23 -20
- package/coverage/lcov-report/src/api/controllers/row/internalSearch.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/staticFormula.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/row/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/static/index.html +1 -1
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/table/bulkFormula.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/table/external.ts.html +17 -17
- package/coverage/lcov-report/src/api/controllers/table/index.html +33 -33
- package/coverage/lcov-report/src/api/controllers/table/index.ts.html +122 -35
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +5 -5
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +23 -26
- package/coverage/lcov-report/src/api/controllers/templates.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/user.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/exporters.ts.html +61 -16
- package/coverage/lcov-report/src/api/controllers/view/index.html +28 -28
- package/coverage/lcov-report/src/api/controllers/view/index.ts.html +52 -25
- package/coverage/lcov-report/src/api/controllers/view/utils.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/view/viewBuilder.ts.html +1 -1
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/api/index.html +1 -1
- package/coverage/lcov-report/src/api/index.ts.html +5 -5
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/application.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/auth.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/automation.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/backup.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/cloud.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/component.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/dev.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/index.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/integration.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/layout.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/metadata.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/permission.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/query.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/role.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/routing.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/row.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/screen.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/script.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/static.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/table.ts.html +17 -86
- package/coverage/lcov-report/src/api/routes/templates.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/api/routes/user.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/index.html +1 -1
- package/coverage/lcov-report/src/api/routes/utils/validators.ts.html +2 -2
- package/coverage/lcov-report/src/api/routes/view.ts.html +1 -1
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/app.ts.html +1 -1
- package/coverage/lcov-report/src/automations/actions.ts.html +1 -1
- package/coverage/lcov-report/src/automations/automationUtils.ts.html +1 -1
- package/coverage/lcov-report/src/automations/bullboard.ts.html +2 -2
- package/coverage/lcov-report/src/automations/index.html +1 -1
- package/coverage/lcov-report/src/automations/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.html +1 -1
- package/coverage/lcov-report/src/automations/logging/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/bash.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/delay.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/discord.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/executeQuery.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/executeScript.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/filter.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/index.html +1 -1
- package/coverage/lcov-report/src/automations/steps/integromat.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/loop.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/outgoingWebhook.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/queryRows.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/sendSmtpEmail.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/serverLog.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/slack.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/updateRow.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/utils.ts.html +1 -1
- package/coverage/lcov-report/src/automations/steps/zapier.ts.html +1 -1
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/cron.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/rowDeleted.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/rowSaved.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/rowUpdated.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggerInfo/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/automations/triggers.ts.html +1 -1
- package/coverage/lcov-report/src/automations/utils.ts.html +11 -11
- package/coverage/lcov-report/src/constants/index.html +1 -1
- package/coverage/lcov-report/src/constants/index.ts.html +25 -25
- package/coverage/lcov-report/src/constants/layouts.ts.html +1 -1
- package/coverage/lcov-report/src/constants/screens.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/index.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +1 -1
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +1 -1
- package/coverage/lcov-report/src/db/inMemoryView.ts.html +1 -1
- package/coverage/lcov-report/src/db/index.html +1 -1
- package/coverage/lcov-report/src/db/index.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/LinkController.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/index.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/index.ts.html +1 -1
- package/coverage/lcov-report/src/db/linkedRows/linkUtils.ts.html +1 -1
- package/coverage/lcov-report/src/db/newid.ts.html +3 -3
- package/coverage/lcov-report/src/db/utils.ts.html +15 -15
- package/coverage/lcov-report/src/definitions/automations.ts.html +1 -1
- package/coverage/lcov-report/src/definitions/datasource.ts.html +1 -1
- package/coverage/lcov-report/src/definitions/index.html +1 -1
- package/coverage/lcov-report/src/environment.ts.html +19 -19
- package/coverage/lcov-report/src/events/AutomationEmitter.ts.html +1 -1
- package/coverage/lcov-report/src/events/BudibaseEmitter.ts.html +1 -1
- package/coverage/lcov-report/src/events/index.html +1 -1
- package/coverage/lcov-report/src/events/index.ts.html +1 -1
- package/coverage/lcov-report/src/events/utils.ts.html +1 -1
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/airtable.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/base/index.html +1 -1
- package/coverage/lcov-report/src/integrations/base/query.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/dynamodb.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/firebase.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/index.html +1 -1
- package/coverage/lcov-report/src/integrations/index.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/mysql.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/oracle.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/postgres.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/queries/index.html +1 -1
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/redis.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/rest.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/s3.ts.html +1 -1
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/middleware/appInfo.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/authorized.ts.html +21 -21
- package/coverage/lcov-report/src/middleware/builder.ts.html +12 -12
- package/coverage/lcov-report/src/middleware/currentapp.ts.html +33 -33
- 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 +1 -1
- package/coverage/lcov-report/src/middleware/resourceId.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/selfhost.ts.html +1 -1
- package/coverage/lcov-report/src/middleware/utils.ts.html +3 -3
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +1 -1
- package/coverage/lcov-report/src/migrations/index.html +1 -1
- package/coverage/lcov-report/src/migrations/index.ts.html +1 -1
- 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 +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/applications/sync.ts.html +18 -18
- package/coverage/lcov-report/src/sdk/app/applications/utils.ts.html +7 -7
- package/coverage/lcov-report/src/sdk/app/automations/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/attachments.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/rows/rows.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/app/tables/index.html +1 -1
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/index.html +1 -1
- package/coverage/lcov-report/src/sdk/index.ts.html +2 -2
- package/coverage/lcov-report/src/sdk/users/index.html +1 -1
- package/coverage/lcov-report/src/sdk/users/index.ts.html +1 -1
- package/coverage/lcov-report/src/sdk/users/utils.ts.html +20 -20
- package/coverage/lcov-report/src/startup.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +59 -59
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +3 -3
- package/coverage/lcov-report/src/tests/utilities/index.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/index.ts.html +1 -1
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +2 -2
- package/coverage/lcov-report/src/threads/automation.ts.html +1 -1
- package/coverage/lcov-report/src/threads/index.html +1 -1
- package/coverage/lcov-report/src/threads/index.ts.html +1 -1
- package/coverage/lcov-report/src/threads/query.ts.html +1 -1
- package/coverage/lcov-report/src/threads/utils.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/budibaseDir.ts.html +3 -3
- package/coverage/lcov-report/src/utilities/centralPath.ts.html +2 -2
- package/coverage/lcov-report/src/utilities/fileSystem/app.ts.html +16 -16
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/filesystem.ts.html +30 -30
- package/coverage/lcov-report/src/utilities/fileSystem/index.html +15 -15
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +6 -6
- package/coverage/lcov-report/src/utilities/fileSystem/plugin.ts.html +8 -8
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/fileSystem/template.ts.html +7 -7
- package/coverage/lcov-report/src/utilities/global.ts.html +33 -33
- package/coverage/lcov-report/src/utilities/index.html +24 -24
- package/coverage/lcov-report/src/utilities/index.ts.html +4 -4
- package/coverage/lcov-report/src/utilities/redis.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.html +1 -1
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/index.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/rowProcessor/utils.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/{csvParser.ts.html → schema.ts.html} +173 -233
- package/coverage/lcov-report/src/utilities/scriptRunner.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/security.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 +1 -1
- package/coverage/lcov-report/src/utilities/usageQuota/usageQuoteReset.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/users.ts.html +1 -1
- package/coverage/lcov-report/src/utilities/workerRequests.ts.html +1 -1
- package/coverage/lcov-report/src/watch.ts.html +1 -1
- package/coverage/lcov-report/src/websocket.ts.html +1 -1
- package/coverage/lcov.info +1303 -1267
- package/dist/api/controllers/row/internal.js +12 -8
- package/dist/api/controllers/table/external.js +8 -30
- package/dist/api/controllers/table/index.js +44 -15
- package/dist/api/controllers/table/internal.js +4 -4
- package/dist/api/controllers/table/utils.js +9 -9
- package/dist/api/controllers/view/exporters.js +22 -6
- package/dist/api/controllers/view/index.js +19 -34
- package/dist/api/routes/table.js +6 -37
- package/dist/api/routes/utils/validators.js +1 -1
- package/dist/package.json +6 -6
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/schema.js +108 -0
- package/package.json +7 -7
- package/src/api/controllers/row/internal.ts +10 -9
- package/src/api/controllers/table/external.ts +10 -10
- package/src/api/controllers/table/index.ts +46 -17
- package/src/api/controllers/table/internal.ts +4 -4
- package/src/api/controllers/table/utils.ts +12 -13
- package/src/api/controllers/view/exporters.ts +20 -5
- package/src/api/controllers/view/index.ts +21 -12
- package/src/api/routes/table.ts +15 -38
- package/src/api/routes/tests/misc.spec.js +4 -10
- package/src/api/routes/tests/table.spec.js +8 -30
- package/src/api/routes/utils/validators.ts +1 -1
- package/src/utilities/schema.ts +141 -0
- package/dist/utilities/csvParser.js +0 -152
- package/src/utilities/csvParser.ts +0 -161
- package/src/utilities/tests/__snapshots__/csvParser.spec.js.snap +0 -15
- package/src/utilities/tests/csvParser.spec.js +0 -112
|
@@ -61,7 +61,7 @@ const utils_2 = 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");
|
|
64
|
-
const
|
|
64
|
+
const exporters_1 = require("../view/exporters");
|
|
65
65
|
const fileSystem_1 = require("../../../utilities/fileSystem");
|
|
66
66
|
const CALCULATION_TYPES = {
|
|
67
67
|
SUM: "sum",
|
|
@@ -418,13 +418,17 @@ function exportRows(ctx) {
|
|
|
418
418
|
else {
|
|
419
419
|
rows = result;
|
|
420
420
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
421
|
+
if (format === exporters_1.Format.CSV) {
|
|
422
|
+
ctx.attachment("export.csv");
|
|
423
|
+
return (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(rows[0]), rows));
|
|
424
|
+
}
|
|
425
|
+
else if (format === exporters_1.Format.JSON) {
|
|
426
|
+
ctx.attachment("export.json");
|
|
427
|
+
return (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(rows));
|
|
428
|
+
}
|
|
429
|
+
else {
|
|
430
|
+
throw "Format not recognised";
|
|
431
|
+
}
|
|
428
432
|
});
|
|
429
433
|
}
|
|
430
434
|
exports.exportRows = exportRows;
|
|
@@ -1,27 +1,4 @@
|
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -40,9 +17,9 @@ const utils_1 = require("../../../integrations/utils");
|
|
|
40
17
|
const utils_2 = require("./utils");
|
|
41
18
|
const constants_1 = require("../../../constants");
|
|
42
19
|
const query_1 = require("../../../integrations/base/query");
|
|
43
|
-
const csvParser = __importStar(require("../../../utilities/csvParser"));
|
|
44
20
|
const external_1 = require("../row/external");
|
|
45
21
|
const backend_core_1 = require("@budibase/backend-core");
|
|
22
|
+
const schema_1 = require("../../../utilities/schema");
|
|
46
23
|
const types_1 = require("@budibase/types");
|
|
47
24
|
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
48
25
|
const { cloneDeep } = require("lodash/fp");
|
|
@@ -176,7 +153,7 @@ function save(ctx) {
|
|
|
176
153
|
const table = ctx.request.body;
|
|
177
154
|
const renamed = table === null || table === void 0 ? void 0 : table._rename;
|
|
178
155
|
// can't do this right now
|
|
179
|
-
delete table.
|
|
156
|
+
delete table.rows;
|
|
180
157
|
const datasourceId = getDatasourceId(ctx.request.body);
|
|
181
158
|
// table doesn't exist already, note that it is created
|
|
182
159
|
if (!table._id) {
|
|
@@ -279,15 +256,16 @@ exports.destroy = destroy;
|
|
|
279
256
|
function bulkImport(ctx) {
|
|
280
257
|
return __awaiter(this, void 0, void 0, function* () {
|
|
281
258
|
const table = yield sdk_1.default.tables.getTable(ctx.params.tableId);
|
|
282
|
-
const {
|
|
283
|
-
|
|
259
|
+
const { rows } = ctx.request.body;
|
|
260
|
+
const schema = table.schema;
|
|
261
|
+
if (!rows || !(0, schema_1.isRows)(rows) || !(0, schema_1.isSchema)(schema)) {
|
|
284
262
|
ctx.throw(400, "Provided data import information is invalid.");
|
|
285
263
|
}
|
|
286
|
-
const
|
|
264
|
+
const parsedRows = yield (0, schema_1.parse)(rows, schema);
|
|
287
265
|
yield (0, external_1.handleRequest)(types_1.Operation.BULK_CREATE, table._id, {
|
|
288
|
-
rows,
|
|
266
|
+
rows: parsedRows,
|
|
289
267
|
});
|
|
290
|
-
yield backend_core_1.events.rows.imported(table,
|
|
268
|
+
yield backend_core_1.events.rows.imported(table, parsedRows.length);
|
|
291
269
|
return table;
|
|
292
270
|
});
|
|
293
271
|
}
|
|
@@ -35,14 +35,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
35
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
36
|
};
|
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.
|
|
38
|
+
exports.validateExistingTableImport = exports.validateNewTableImport = exports.csvToJson = exports.bulkImport = exports.destroy = exports.save = exports.find = exports.fetch = void 0;
|
|
39
39
|
const internal = __importStar(require("./internal"));
|
|
40
40
|
const external = __importStar(require("./external"));
|
|
41
|
-
const
|
|
41
|
+
const schema_1 = require("../../../utilities/schema");
|
|
42
42
|
const utils_1 = require("../../../integrations/utils");
|
|
43
43
|
const utils_2 = require("../../../db/utils");
|
|
44
44
|
const backend_core_1 = require("@budibase/backend-core");
|
|
45
45
|
const sdk_1 = __importDefault(require("../../../sdk"));
|
|
46
|
+
const csvtojson_1 = __importDefault(require("csvtojson"));
|
|
46
47
|
function pickApi({ tableId, table }) {
|
|
47
48
|
if (table && !tableId) {
|
|
48
49
|
tableId = table._id;
|
|
@@ -87,7 +88,7 @@ function save(ctx) {
|
|
|
87
88
|
return __awaiter(this, void 0, void 0, function* () {
|
|
88
89
|
const appId = ctx.appId;
|
|
89
90
|
const table = ctx.request.body;
|
|
90
|
-
const
|
|
91
|
+
const isImport = table.rows;
|
|
91
92
|
const savedTable = yield pickApi({ table }).save(ctx);
|
|
92
93
|
if (!table._id) {
|
|
93
94
|
yield backend_core_1.events.table.created(savedTable);
|
|
@@ -95,8 +96,8 @@ function save(ctx) {
|
|
|
95
96
|
else {
|
|
96
97
|
yield backend_core_1.events.table.updated(savedTable);
|
|
97
98
|
}
|
|
98
|
-
if (
|
|
99
|
-
yield backend_core_1.events.table.imported(savedTable
|
|
99
|
+
if (isImport) {
|
|
100
|
+
yield backend_core_1.events.table.imported(savedTable);
|
|
100
101
|
}
|
|
101
102
|
ctx.status = 200;
|
|
102
103
|
ctx.message = `Table ${table.name} saved successfully.`;
|
|
@@ -132,19 +133,47 @@ function bulkImport(ctx) {
|
|
|
132
133
|
});
|
|
133
134
|
}
|
|
134
135
|
exports.bulkImport = bulkImport;
|
|
135
|
-
function
|
|
136
|
+
function csvToJson(ctx) {
|
|
136
137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
-
|
|
138
|
-
const
|
|
139
|
-
|
|
138
|
+
const { csvString } = ctx.request.body;
|
|
139
|
+
const result = yield (0, csvtojson_1.default)().fromString(csvString);
|
|
140
|
+
ctx.status = 200;
|
|
141
|
+
ctx.body = result;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
exports.csvToJson = csvToJson;
|
|
145
|
+
function validateNewTableImport(ctx) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
const { rows, schema } = ctx.request.body;
|
|
148
|
+
if ((0, schema_1.isRows)(rows) && (0, schema_1.isSchema)(schema)) {
|
|
149
|
+
ctx.status = 200;
|
|
150
|
+
ctx.body = (0, schema_1.validate)(rows, schema);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
ctx.status = 422;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
exports.validateNewTableImport = validateNewTableImport;
|
|
158
|
+
function validateExistingTableImport(ctx) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
const { rows, tableId } = ctx.request.body;
|
|
161
|
+
let schema = null;
|
|
140
162
|
if (tableId) {
|
|
141
|
-
|
|
163
|
+
const table = yield sdk_1.default.tables.getTable(tableId);
|
|
164
|
+
schema = table.schema;
|
|
142
165
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
166
|
+
else {
|
|
167
|
+
ctx.status = 422;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (tableId && (0, schema_1.isRows)(rows) && (0, schema_1.isSchema)(schema)) {
|
|
171
|
+
ctx.status = 200;
|
|
172
|
+
ctx.body = (0, schema_1.validate)(rows, schema);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
ctx.status = 422;
|
|
146
176
|
}
|
|
147
|
-
ctx.body = { schema: result };
|
|
148
177
|
});
|
|
149
178
|
}
|
|
150
|
-
exports.
|
|
179
|
+
exports.validateExistingTableImport = validateExistingTableImport;
|
|
@@ -57,7 +57,7 @@ function checkAutoColumns(table, oldTable) {
|
|
|
57
57
|
function save(ctx) {
|
|
58
58
|
return __awaiter(this, void 0, void 0, function* () {
|
|
59
59
|
const db = backend_core_1.context.getAppDB();
|
|
60
|
-
const _a = ctx.request.body, {
|
|
60
|
+
const _a = ctx.request.body, { rows } = _a, rest = __rest(_a, ["rows"]);
|
|
61
61
|
let tableToSave = Object.assign({ type: "table", _id: (0, utils_1.generateTableID)(), views: {} }, rest);
|
|
62
62
|
// if the table obj had an _id then it will have been retrieved
|
|
63
63
|
let oldTable;
|
|
@@ -75,7 +75,7 @@ function save(ctx) {
|
|
|
75
75
|
const tableSaveFunctions = new utils_2.TableSaveFunctions({
|
|
76
76
|
user: ctx.user,
|
|
77
77
|
oldTable,
|
|
78
|
-
|
|
78
|
+
importRows: rows,
|
|
79
79
|
});
|
|
80
80
|
tableToSave = yield tableSaveFunctions.before(tableToSave);
|
|
81
81
|
// make sure that types don't change of a column, have to remove
|
|
@@ -186,8 +186,8 @@ exports.destroy = destroy;
|
|
|
186
186
|
function bulkImport(ctx) {
|
|
187
187
|
return __awaiter(this, void 0, void 0, function* () {
|
|
188
188
|
const table = yield sdk_1.default.tables.getTable(ctx.params.tableId);
|
|
189
|
-
const {
|
|
190
|
-
yield (0, utils_2.handleDataImport)(ctx.user, table,
|
|
189
|
+
const { rows } = ctx.request.body;
|
|
190
|
+
yield (0, utils_2.handleDataImport)(ctx.user, table, rows);
|
|
191
191
|
return table;
|
|
192
192
|
});
|
|
193
193
|
}
|
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.TableSaveFunctions = exports.hasTypeChanged = exports.areSwitchableTypes = exports.foreignKeyStructure = exports.generateJunctionTableName = exports.generateForeignKey = exports.checkForViewUpdates = exports.checkStaticTables = exports.handleSearchIndexes = exports.handleDataImport = exports.importToRows = exports.makeSureTableUpToDate = exports.checkForColumnUpdates = exports.clearColumns = void 0;
|
|
16
|
-
const
|
|
16
|
+
const schema_1 = require("../../../utilities/schema");
|
|
17
17
|
const utils_1 = require("../../../db/utils");
|
|
18
18
|
const lodash_1 = require("lodash");
|
|
19
19
|
const constants_1 = require("../../../constants");
|
|
@@ -124,19 +124,19 @@ function importToRows(data, table, user = {}) {
|
|
|
124
124
|
return finalData;
|
|
125
125
|
}
|
|
126
126
|
exports.importToRows = importToRows;
|
|
127
|
-
function handleDataImport(user, table,
|
|
127
|
+
function handleDataImport(user, table, rows) {
|
|
128
128
|
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
-
|
|
129
|
+
const schema = table.schema;
|
|
130
|
+
if (!rows || !(0, schema_1.isRows)(rows) || !(0, schema_1.isSchema)(schema)) {
|
|
130
131
|
return table;
|
|
131
132
|
}
|
|
132
133
|
const db = backend_core_1.context.getAppDB();
|
|
133
|
-
|
|
134
|
-
const data = yield (0, csvParser_1.transform)(Object.assign(Object.assign({}, dataImport), { existingTable: table }));
|
|
134
|
+
const data = (0, schema_1.parse)(rows, schema);
|
|
135
135
|
let finalData = importToRows(data, table, user);
|
|
136
136
|
yield pro_1.quotas.addRows(finalData.length, () => db.bulkDocs(finalData), {
|
|
137
137
|
tableId: table._id,
|
|
138
138
|
});
|
|
139
|
-
yield backend_core_1.events.rows.imported(table,
|
|
139
|
+
yield backend_core_1.events.rows.imported(table, finalData.length);
|
|
140
140
|
return table;
|
|
141
141
|
});
|
|
142
142
|
}
|
|
@@ -195,11 +195,11 @@ function checkStaticTables(table) {
|
|
|
195
195
|
}
|
|
196
196
|
exports.checkStaticTables = checkStaticTables;
|
|
197
197
|
class TableSaveFunctions {
|
|
198
|
-
constructor({ user, oldTable,
|
|
198
|
+
constructor({ user, oldTable, importRows }) {
|
|
199
199
|
this.db = backend_core_1.context.getAppDB();
|
|
200
200
|
this.user = user;
|
|
201
201
|
this.oldTable = oldTable;
|
|
202
|
-
this.
|
|
202
|
+
this.importRows = importRows;
|
|
203
203
|
// any rows that need updated
|
|
204
204
|
this.rows = [];
|
|
205
205
|
}
|
|
@@ -225,7 +225,7 @@ class TableSaveFunctions {
|
|
|
225
225
|
after(table) {
|
|
226
226
|
return __awaiter(this, void 0, void 0, function* () {
|
|
227
227
|
table = yield handleSearchIndexes(table);
|
|
228
|
-
table = yield handleDataImport(this.user, table, this.
|
|
228
|
+
table = yield handleDataImport(this.user, table, this.importRows);
|
|
229
229
|
return table;
|
|
230
230
|
});
|
|
231
231
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isFormat = exports.Format = exports.jsonWithSchema = exports.json = exports.csv = void 0;
|
|
4
4
|
function csv(headers, rows) {
|
|
5
5
|
let csv = headers.map(key => `"${key}"`).join(",");
|
|
6
6
|
for (let row of rows) {
|
|
@@ -18,11 +18,27 @@ function csv(headers, rows) {
|
|
|
18
18
|
return csv;
|
|
19
19
|
}
|
|
20
20
|
exports.csv = csv;
|
|
21
|
-
function json(
|
|
21
|
+
function json(rows) {
|
|
22
22
|
return JSON.stringify(rows, undefined, 2);
|
|
23
23
|
}
|
|
24
24
|
exports.json = json;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
function jsonWithSchema(schema, rows) {
|
|
26
|
+
const newSchema = {};
|
|
27
|
+
Object.values(schema).forEach(column => {
|
|
28
|
+
if (!column.autocolumn) {
|
|
29
|
+
newSchema[column.name] = column;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return JSON.stringify({ schema: newSchema, rows }, undefined, 2);
|
|
33
|
+
}
|
|
34
|
+
exports.jsonWithSchema = jsonWithSchema;
|
|
35
|
+
var Format;
|
|
36
|
+
(function (Format) {
|
|
37
|
+
Format["CSV"] = "csv";
|
|
38
|
+
Format["JSON"] = "json";
|
|
39
|
+
Format["JSON_WITH_SCHEMA"] = "jsonWithSchema";
|
|
40
|
+
})(Format = exports.Format || (exports.Format = {}));
|
|
41
|
+
function isFormat(format) {
|
|
42
|
+
return Object.values(Format).includes(format);
|
|
43
|
+
}
|
|
44
|
+
exports.isFormat = isFormat;
|
|
@@ -1,27 +1,4 @@
|
|
|
1
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
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -49,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
49
26
|
exports.exportView = exports.destroy = exports.filterEvents = exports.calculationEvents = exports.save = exports.fetch = void 0;
|
|
50
27
|
const viewBuilder_1 = __importDefault(require("./viewBuilder"));
|
|
51
28
|
const fileSystem_1 = require("../../../utilities/fileSystem");
|
|
52
|
-
const
|
|
29
|
+
const exporters_1 = require("./exporters");
|
|
53
30
|
const utils_1 = require("./utils");
|
|
54
31
|
const row_1 = require("../row");
|
|
55
32
|
const constants_1 = require("../../../constants");
|
|
@@ -160,8 +137,8 @@ function exportView(ctx) {
|
|
|
160
137
|
const viewName = decodeURIComponent(ctx.query.view);
|
|
161
138
|
const view = yield (0, utils_1.getView)(viewName);
|
|
162
139
|
const format = ctx.query.format;
|
|
163
|
-
if (!
|
|
164
|
-
ctx.throw(400, "Format must be specified, either csv or
|
|
140
|
+
if (!(0, exporters_1.isFormat)(format)) {
|
|
141
|
+
ctx.throw(400, "Format must be specified, either csv, json or jsonWithSchema");
|
|
165
142
|
}
|
|
166
143
|
if (view) {
|
|
167
144
|
ctx.params.viewName = viewName;
|
|
@@ -199,7 +176,7 @@ function exportView(ctx) {
|
|
|
199
176
|
delete schema[column];
|
|
200
177
|
});
|
|
201
178
|
// make sure no "undefined" entries appear in the CSV
|
|
202
|
-
if (format ===
|
|
179
|
+
if (format === exporters_1.Format.CSV) {
|
|
203
180
|
const schemaKeys = Object.keys(schema);
|
|
204
181
|
for (let key of schemaKeys) {
|
|
205
182
|
for (let row of rows) {
|
|
@@ -209,13 +186,21 @@ function exportView(ctx) {
|
|
|
209
186
|
}
|
|
210
187
|
}
|
|
211
188
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
189
|
+
if (format === exporters_1.Format.CSV) {
|
|
190
|
+
ctx.attachment(`${viewName}.csv`);
|
|
191
|
+
ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.csv)(Object.keys(schema), rows));
|
|
192
|
+
}
|
|
193
|
+
else if (format === exporters_1.Format.JSON) {
|
|
194
|
+
ctx.attachment(`${viewName}.json`);
|
|
195
|
+
ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.json)(rows));
|
|
196
|
+
}
|
|
197
|
+
else if (format === exporters_1.Format.JSON_WITH_SCHEMA) {
|
|
198
|
+
ctx.attachment(`${viewName}.json`);
|
|
199
|
+
ctx.body = (0, fileSystem_1.apiFileReturn)((0, exporters_1.jsonWithSchema)(schema, rows));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
throw "Format not recognised";
|
|
203
|
+
}
|
|
219
204
|
if (viewName.startsWith(utils_2.DocumentType.TABLE)) {
|
|
220
205
|
yield backend_core_1.events.table.exported(table, format);
|
|
221
206
|
}
|
package/dist/api/routes/table.js
CHANGED
|
@@ -88,10 +88,7 @@ router
|
|
|
88
88
|
* structure, and the "updated", new column name should also be supplied. The schema should also be updated, this field
|
|
89
89
|
* lets the server know that a field hasn't just been deleted, that the data has moved to a new name, this will fix
|
|
90
90
|
* the rows in the table. This functionality is only available for internal tables.
|
|
91
|
-
* @apiParam (Body) {object} [
|
|
92
|
-
* CSV validation endpoint. Send the CSV data to the validation endpoint, then put the results of that call
|
|
93
|
-
* into this property, along with the CSV and a table/rows will be built from it. This is not supported when updating
|
|
94
|
-
* or for external tables.
|
|
91
|
+
* @apiParam (Body) {object[]} [rows] When creating a table using a compatible data source, an array of objects to be imported into the new table can be provided.
|
|
95
92
|
*
|
|
96
93
|
* @apiParamExample {json} Example:
|
|
97
94
|
* {
|
|
@@ -120,15 +117,7 @@ router
|
|
|
120
117
|
* "old": "columnName",
|
|
121
118
|
* "updated": "newColumnName",
|
|
122
119
|
* },
|
|
123
|
-
* "
|
|
124
|
-
* "csvString": "column\nvalue",
|
|
125
|
-
* "primaryDisplay": "column",
|
|
126
|
-
* "schema": {
|
|
127
|
-
* "column": {
|
|
128
|
-
* "type": "string"
|
|
129
|
-
* }
|
|
130
|
-
* }
|
|
131
|
-
* }
|
|
120
|
+
* "rows": []
|
|
132
121
|
* }
|
|
133
122
|
*
|
|
134
123
|
* @apiSuccess {object} table The response body will contain the table structure after being cleaned up and
|
|
@@ -137,27 +126,9 @@ router
|
|
|
137
126
|
.post("/api/tables",
|
|
138
127
|
// allows control over updating a table
|
|
139
128
|
(0, resourceId_1.bodyResource)("_id"), (0, authorized_1.default)(BUILDER), (0, validators_1.tableValidator)(), tableController.save)
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
* @apiGroup tables
|
|
144
|
-
* @apiPermission builder
|
|
145
|
-
* @apiDescription When creating a new table, or importing a CSV to an existing table the CSV must be validated and
|
|
146
|
-
* converted into a Budibase schema; this endpoint does this.
|
|
147
|
-
*
|
|
148
|
-
* @apiParam (Body) {string} csvString The CSV which is to be validated as a string.
|
|
149
|
-
* @apiParam (Body) {object} [schema] When a CSV has been validated it is possible to re-validate after changing the
|
|
150
|
-
* type of a field, by default everything will be strings as there is no way to infer types. The returned schema can
|
|
151
|
-
* be updated and then returned to the endpoint to re-validate and check if the type will work for the CSV, e.g.
|
|
152
|
-
* using a number instead of strings.
|
|
153
|
-
* @apiParam (Body) {string} [tableId] If importing data to an existing table this will pull the current table and
|
|
154
|
-
* remove any fields from the CSV schema which do not exist on the table/don't match the type of the table. When
|
|
155
|
-
* importing a CSV to an existing table only fields that are present on the table can be imported.
|
|
156
|
-
*
|
|
157
|
-
* @apiSuccess {object} schema The response body will contain a "schema" object that represents the schema found for
|
|
158
|
-
* the CSV - this will be in the same format used for table schema.s
|
|
159
|
-
*/
|
|
160
|
-
.post("/api/tables/csv/validate", (0, authorized_1.default)(BUILDER), tableController.validateCSVSchema)
|
|
129
|
+
.post("/api/convert/csvToJson", (0, authorized_1.default)(BUILDER), tableController.csvToJson)
|
|
130
|
+
.post("/api/tables/validateNewTableImport", (0, authorized_1.default)(BUILDER), tableController.validateNewTableImport)
|
|
131
|
+
.post("/api/tables/validateExistingTableImport", (0, authorized_1.default)(BUILDER), tableController.validateExistingTableImport)
|
|
161
132
|
/**
|
|
162
133
|
* @api {post} /api/tables/:tableId/:revId Delete a table
|
|
163
134
|
* @apiName Delete a table
|
|
@@ -184,9 +155,7 @@ router
|
|
|
184
155
|
*
|
|
185
156
|
* @apiParam {string} tableId The ID of the table which the data should be imported to.
|
|
186
157
|
*
|
|
187
|
-
* @apiParam (Body) {object}
|
|
188
|
-
* a CSV, it will have the "schema" returned from the CSV validation endpoint and the "csvString" which is to be
|
|
189
|
-
* turned into rows.
|
|
158
|
+
* @apiParam (Body) {object[]} rows An array of objects representing the rows to be imported, key-value pairs not matching the table schema will be ignored.
|
|
190
159
|
*
|
|
191
160
|
* @apiSuccess {string} message A message stating that the data was imported successfully.
|
|
192
161
|
*/
|
|
@@ -22,7 +22,7 @@ function tableValidator() {
|
|
|
22
22
|
schema: joi_1.default.object().required(),
|
|
23
23
|
name: joi_1.default.string().required(),
|
|
24
24
|
views: joi_1.default.object(),
|
|
25
|
-
|
|
25
|
+
rows: joi_1.default.array(),
|
|
26
26
|
}).unknown(true));
|
|
27
27
|
}
|
|
28
28
|
exports.tableValidator = tableValidator;
|
package/dist/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@budibase/server",
|
|
3
3
|
"email": "hi@budibase.com",
|
|
4
|
-
"version": "2.2.12-alpha.
|
|
4
|
+
"version": "2.2.12-alpha.20",
|
|
5
5
|
"description": "Budibase Web Server",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"repository": {
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"license": "GPL-3.0",
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@apidevtools/swagger-parser": "10.0.3",
|
|
46
|
-
"@budibase/backend-core": "2.2.12-alpha.
|
|
47
|
-
"@budibase/client": "2.2.12-alpha.
|
|
48
|
-
"@budibase/pro": "2.2.12-alpha.
|
|
49
|
-
"@budibase/string-templates": "2.2.12-alpha.
|
|
50
|
-
"@budibase/types": "2.2.12-alpha.
|
|
46
|
+
"@budibase/backend-core": "2.2.12-alpha.20",
|
|
47
|
+
"@budibase/client": "2.2.12-alpha.20",
|
|
48
|
+
"@budibase/pro": "2.2.12-alpha.20",
|
|
49
|
+
"@budibase/string-templates": "2.2.12-alpha.20",
|
|
50
|
+
"@budibase/types": "2.2.12-alpha.20",
|
|
51
51
|
"@bull-board/api": "3.7.0",
|
|
52
52
|
"@bull-board/koa": "3.9.4",
|
|
53
53
|
"@elastic/elasticsearch": "7.10.0",
|