@budibase/server 2.6.19-alpha.5 → 2.6.19-alpha.50
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/.dockerignore +7 -6
- package/Dockerfile +16 -8
- package/builder/assets/index.6ebb99b3.css +6 -0
- package/builder/assets/index.a7585108.js +1869 -0
- package/builder/index.html +2 -2
- package/client/manifest.json +5229 -0
- package/dist/automation.js +32529 -0
- package/dist/automation.js.map +7 -0
- package/dist/index.js +45001 -13
- package/dist/index.js.map +7 -0
- package/dist/query.js +24417 -0
- package/dist/query.js.map +7 -0
- package/jest.config.ts +3 -0
- package/nodemon.json +1 -1
- package/package.json +33 -15
- package/pm2.config.js +1 -1
- package/scripts/build.js +48 -0
- package/src/api/controllers/application.ts +21 -22
- package/src/api/controllers/automation.ts +37 -9
- package/src/api/controllers/datasource.ts +25 -15
- package/src/api/controllers/deploy/index.ts +1 -0
- package/src/api/controllers/plugin/index.ts +1 -1
- package/src/api/controllers/row/external.ts +39 -15
- package/src/api/controllers/row/index.ts +18 -24
- package/src/api/controllers/row/internal.ts +1 -1
- package/src/api/controllers/row/staticFormula.ts +6 -1
- package/src/api/controllers/row/utils.ts +12 -0
- package/src/api/controllers/static/index.ts +3 -3
- package/src/api/controllers/table/index.ts +3 -0
- package/src/api/controllers/table/internal.ts +2 -6
- package/src/api/controllers/table/utils.ts +32 -1
- package/src/api/controllers/view/index.ts +5 -5
- package/src/api/controllers/webhook.ts +33 -9
- package/src/api/routes/application.ts +5 -0
- package/src/api/routes/automation.ts +0 -1
- package/src/api/routes/datasource.ts +2 -2
- package/src/api/routes/static.ts +3 -1
- package/src/api/routes/tests/{automation.spec.js → automation.spec.ts} +106 -31
- package/src/api/routes/tests/view.spec.js +4 -3
- package/src/api/routes/tests/{webhook.spec.js → webhook.spec.ts} +33 -11
- package/src/app.ts +0 -1
- package/src/automations/actions.ts +8 -0
- package/src/automations/logging/index.ts +21 -0
- package/src/automations/steps/bash.ts +4 -0
- package/src/automations/steps/collect.ts +58 -0
- package/src/automations/steps/createRow.ts +4 -0
- package/src/automations/steps/delay.ts +1 -0
- package/src/automations/steps/deleteRow.ts +4 -0
- package/src/automations/steps/discord.ts +4 -0
- package/src/automations/steps/executeQuery.ts +4 -0
- package/src/automations/steps/executeScript.ts +4 -0
- package/src/automations/steps/filter.ts +1 -0
- package/src/automations/steps/loop.ts +1 -0
- package/src/automations/steps/make.ts +4 -0
- package/src/automations/steps/openai.ts +106 -0
- package/src/automations/steps/outgoingWebhook.ts +4 -0
- package/src/automations/steps/queryRows.ts +4 -0
- package/src/automations/steps/sendSmtpEmail.ts +4 -0
- package/src/automations/steps/serverLog.ts +4 -0
- package/src/automations/steps/slack.ts +4 -0
- package/src/automations/steps/updateRow.ts +4 -0
- package/src/automations/steps/zapier.ts +4 -0
- package/src/automations/tests/openai.spec.ts +86 -0
- package/src/automations/triggers.ts +3 -2
- package/src/constants/index.ts +17 -16
- package/src/db/inMemoryView.ts +1 -0
- package/src/db/linkedRows/index.ts +5 -3
- package/src/environment.ts +3 -0
- package/src/integration-test/postgres.spec.ts +5 -5
- package/src/integrations/airtable.ts +3 -1
- package/src/integrations/arangodb.ts +3 -1
- package/src/integrations/base/sqlTable.ts +0 -1
- package/src/integrations/couchdb.ts +3 -1
- package/src/integrations/dynamodb.ts +3 -1
- package/src/integrations/elasticsearch.ts +3 -1
- package/src/integrations/firebase.ts +3 -1
- package/src/integrations/googlesheets.ts +4 -4
- package/src/integrations/microsoftSqlServer.ts +4 -4
- package/src/integrations/mongodb.ts +3 -1
- package/src/integrations/mysql.ts +4 -4
- package/src/integrations/oracle.ts +4 -4
- package/src/integrations/postgres.ts +4 -4
- package/src/integrations/redis.ts +10 -2
- package/src/integrations/s3.ts +3 -1
- package/src/integrations/snowflake.ts +3 -1
- package/src/middleware/builder.ts +26 -18
- package/src/sdk/app/automations/index.ts +2 -0
- package/src/sdk/app/automations/utils.ts +7 -0
- package/src/sdk/plugins/plugins.ts +1 -1
- package/src/startup.ts +2 -0
- package/src/tests/utilities/TestConfiguration.ts +4 -2
- package/src/tests/utilities/structures.ts +42 -0
- package/src/threads/automation.ts +91 -23
- package/src/threads/index.ts +9 -3
- package/src/threads/utils.ts +2 -0
- package/src/utilities/fileSystem/app.ts +14 -4
- package/src/utilities/fileSystem/clientLibrary.ts +8 -3
- package/src/utilities/fileSystem/filesystem.ts +3 -1
- package/src/utilities/redis.ts +25 -3
- package/src/utilities/rowProcessor/index.ts +4 -1
- package/src/utilities/rowProcessor/map.ts +1 -1
- package/src/websockets/builder.ts +77 -0
- package/src/websockets/client.ts +2 -2
- package/src/websockets/grid.ts +44 -44
- package/src/websockets/index.ts +13 -6
- package/src/websockets/websocket.ts +207 -7
- package/tsconfig.build.json +9 -1
- package/tsconfig.json +1 -14
- package/builder/assets/index.07382a47.css +0 -6
- package/builder/assets/index.3d5c50fb.js +0 -1786
- package/dist/api/controllers/analytics.js +0 -46
- package/dist/api/controllers/apikeys.js +0 -72
- package/dist/api/controllers/application.js +0 -574
- package/dist/api/controllers/auth.js +0 -80
- package/dist/api/controllers/automation.js +0 -303
- package/dist/api/controllers/backup.js +0 -37
- package/dist/api/controllers/component.js +0 -59
- package/dist/api/controllers/datasource.js +0 -352
- package/dist/api/controllers/deploy/Deployment.js +0 -53
- package/dist/api/controllers/deploy/index.js +0 -198
- package/dist/api/controllers/dev.js +0 -146
- package/dist/api/controllers/integration.js +0 -28
- package/dist/api/controllers/layout.js +0 -49
- package/dist/api/controllers/metadata.js +0 -63
- package/dist/api/controllers/migrations.js +0 -29
- package/dist/api/controllers/ops.js +0 -40
- package/dist/api/controllers/permission.js +0 -162
- package/dist/api/controllers/plugin/file.js +0 -24
- package/dist/api/controllers/plugin/github.js +0 -69
- package/dist/api/controllers/plugin/index.js +0 -112
- package/dist/api/controllers/plugin/npm.js +0 -58
- package/dist/api/controllers/plugin/uploaders.js +0 -11
- package/dist/api/controllers/plugin/url.js +0 -24
- package/dist/api/controllers/plugin/utils.js +0 -27
- package/dist/api/controllers/public/applications.js +0 -146
- package/dist/api/controllers/public/mapping/applications.js +0 -29
- package/dist/api/controllers/public/mapping/index.js +0 -11
- package/dist/api/controllers/public/mapping/queries.js +0 -36
- package/dist/api/controllers/public/mapping/rows.js +0 -24
- package/dist/api/controllers/public/mapping/tables.js +0 -23
- package/dist/api/controllers/public/mapping/types.js +0 -2
- package/dist/api/controllers/public/mapping/users.js +0 -29
- package/dist/api/controllers/public/metrics.js +0 -113
- package/dist/api/controllers/public/queries.js +0 -58
- package/dist/api/controllers/public/rows.js +0 -120
- package/dist/api/controllers/public/tables.js +0 -95
- package/dist/api/controllers/public/users.js +0 -93
- package/dist/api/controllers/public/utils.js +0 -56
- package/dist/api/controllers/query/import/index.js +0 -87
- package/dist/api/controllers/query/import/sources/base/index.js +0 -75
- package/dist/api/controllers/query/import/sources/base/openapi.js +0 -42
- package/dist/api/controllers/query/import/sources/curl.js +0 -99
- package/dist/api/controllers/query/import/sources/openapi2.js +0 -145
- package/dist/api/controllers/query/import/sources/openapi3.js +0 -177
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/crud/crud.json +0 -253
- package/dist/api/controllers/query/import/sources/tests/openapi2/data/petstore/petstore.json +0 -1054
- package/dist/api/controllers/query/import/sources/tests/openapi3/data/crud/crud.json +0 -253
- package/dist/api/controllers/query/import/sources/tests/openapi3/data/petstore/petstore.json +0 -1225
- package/dist/api/controllers/query/index.js +0 -299
- package/dist/api/controllers/query/validation.js +0 -53
- package/dist/api/controllers/role.js +0 -109
- package/dist/api/controllers/routing.js +0 -105
- package/dist/api/controllers/row/ExternalRequest.js +0 -683
- package/dist/api/controllers/row/external.js +0 -339
- package/dist/api/controllers/row/index.js +0 -203
- package/dist/api/controllers/row/internal.js +0 -509
- package/dist/api/controllers/row/internalSearch.js +0 -28
- package/dist/api/controllers/row/staticFormula.js +0 -165
- package/dist/api/controllers/row/utils.js +0 -183
- package/dist/api/controllers/screen.js +0 -110
- package/dist/api/controllers/script.js +0 -30
- package/dist/api/controllers/static/index.js +0 -268
- package/dist/api/controllers/table/bulkFormula.js +0 -173
- package/dist/api/controllers/table/external.js +0 -279
- package/dist/api/controllers/table/index.js +0 -179
- package/dist/api/controllers/table/internal.js +0 -197
- package/dist/api/controllers/table/utils.js +0 -379
- package/dist/api/controllers/templates.js +0 -56
- package/dist/api/controllers/user.js +0 -124
- package/dist/api/controllers/view/exporters.js +0 -46
- package/dist/api/controllers/view/index.js +0 -193
- package/dist/api/controllers/view/utils.js +0 -177
- package/dist/api/controllers/view/viewBuilder.js +0 -158
- package/dist/api/controllers/webhook.js +0 -134
- package/dist/api/index.js +0 -55
- package/dist/api/routes/analytics.js +0 -34
- package/dist/api/routes/apikeys.js +0 -37
- package/dist/api/routes/application.js +0 -48
- package/dist/api/routes/auth.js +0 -33
- package/dist/api/routes/automation.js +0 -50
- package/dist/api/routes/backup.js +0 -35
- package/dist/api/routes/component.js +0 -35
- package/dist/api/routes/datasource.js +0 -45
- package/dist/api/routes/deploy.js +0 -37
- package/dist/api/routes/dev.js +0 -49
- package/dist/api/routes/index.js +0 -75
- package/dist/api/routes/integration.js +0 -37
- package/dist/api/routes/layout.js +0 -37
- package/dist/api/routes/metadata.js +0 -40
- package/dist/api/routes/migrations.js +0 -36
- package/dist/api/routes/ops.js +0 -52
- package/dist/api/routes/permission.js +0 -44
- package/dist/api/routes/plugin.js +0 -39
- package/dist/api/routes/public/applications.js +0 -174
- package/dist/api/routes/public/index.js +0 -140
- package/dist/api/routes/public/metrics.js +0 -30
- package/dist/api/routes/public/middleware/mapper.js +0 -97
- package/dist/api/routes/public/queries.js +0 -72
- package/dist/api/routes/public/rows.js +0 -158
- package/dist/api/routes/public/tables.js +0 -152
- package/dist/api/routes/public/users.js +0 -135
- package/dist/api/routes/public/utils/Endpoint.js +0 -36
- package/dist/api/routes/query.js +0 -47
- package/dist/api/routes/role.js +0 -40
- package/dist/api/routes/routing.js +0 -39
- package/dist/api/routes/row.js +0 -239
- package/dist/api/routes/screen.js +0 -39
- package/dist/api/routes/script.js +0 -35
- package/dist/api/routes/static.js +0 -80
- package/dist/api/routes/table.js +0 -163
- package/dist/api/routes/templates.js +0 -37
- package/dist/api/routes/user.js +0 -43
- package/dist/api/routes/utils/validators.js +0 -238
- package/dist/api/routes/view.js +0 -42
- package/dist/api/routes/webhook.js +0 -43
- package/dist/app.js +0 -132
- package/dist/automations/actions.js +0 -137
- package/dist/automations/automationUtils.js +0 -173
- package/dist/automations/bullboard.js +0 -71
- package/dist/automations/index.js +0 -43
- package/dist/automations/logging/index.js +0 -53
- package/dist/automations/steps/bash.js +0 -111
- package/dist/automations/steps/createRow.js +0 -108
- package/dist/automations/steps/delay.js +0 -53
- package/dist/automations/steps/deleteRow.js +0 -96
- package/dist/automations/steps/discord.js +0 -116
- package/dist/automations/steps/executeQuery.js +0 -134
- package/dist/automations/steps/executeScript.js +0 -106
- package/dist/automations/steps/filter.js +0 -112
- package/dist/automations/steps/loop.js +0 -54
- package/dist/automations/steps/make.js +0 -134
- package/dist/automations/steps/outgoingWebhook.js +0 -166
- package/dist/automations/steps/queryRows.js +0 -216
- package/dist/automations/steps/sendSmtpEmail.js +0 -115
- package/dist/automations/steps/serverLog.js +0 -65
- package/dist/automations/steps/slack.js +0 -98
- package/dist/automations/steps/updateRow.js +0 -144
- package/dist/automations/steps/utils.js +0 -56
- package/dist/automations/steps/zapier.js +0 -130
- package/dist/automations/triggerInfo/app.js +0 -36
- package/dist/automations/triggerInfo/cron.js +0 -35
- package/dist/automations/triggerInfo/index.js +0 -40
- package/dist/automations/triggerInfo/rowDeleted.js +0 -36
- package/dist/automations/triggerInfo/rowSaved.js +0 -44
- package/dist/automations/triggerInfo/rowUpdated.js +0 -44
- package/dist/automations/triggerInfo/webhook.js +0 -40
- package/dist/automations/triggers.js +0 -181
- package/dist/automations/utils.js +0 -275
- package/dist/constants/definitions.js +0 -2
- package/dist/constants/index.js +0 -181
- package/dist/constants/layouts.js +0 -148
- package/dist/constants/screens.js +0 -51
- package/dist/db/defaultData/datasource_bb_default.js +0 -574
- package/dist/db/defaultData/employeeImport.js +0 -155
- package/dist/db/defaultData/expensesImport.js +0 -117
- package/dist/db/defaultData/inventoryImport.js +0 -109
- package/dist/db/defaultData/jobsImport.js +0 -152
- package/dist/db/dynamoClient.js +0 -124
- package/dist/db/inMemoryView.js +0 -62
- package/dist/db/index.js +0 -43
- package/dist/db/linkedRows/LinkController.js +0 -392
- package/dist/db/linkedRows/LinkDocument.js +0 -33
- package/dist/db/linkedRows/index.js +0 -206
- package/dist/db/linkedRows/linkUtils.js +0 -131
- package/dist/db/newid.js +0 -7
- package/dist/db/utils.js +0 -248
- package/dist/db/views/staticViews.js +0 -144
- package/dist/ddApm.js +0 -11
- package/dist/definitions/automations.js +0 -8
- package/dist/definitions/common.js +0 -2
- package/dist/definitions/datasource.js +0 -7
- package/dist/definitions/openapi.js +0 -6
- package/dist/environment.js +0 -109
- package/dist/events/AutomationEmitter.js +0 -53
- package/dist/events/BudibaseEmitter.js +0 -25
- package/dist/events/docUpdates/index.js +0 -17
- package/dist/events/docUpdates/processors.js +0 -18
- package/dist/events/docUpdates/syncUsers.js +0 -49
- package/dist/events/index.js +0 -11
- package/dist/events/utils.js +0 -43
- package/dist/integrations/airtable.js +0 -173
- package/dist/integrations/arangodb.js +0 -119
- package/dist/integrations/base/query.js +0 -32
- package/dist/integrations/base/sql.js +0 -600
- package/dist/integrations/base/sqlTable.js +0 -167
- package/dist/integrations/base/types.js +0 -2
- package/dist/integrations/couchdb.js +0 -140
- package/dist/integrations/dynamodb.js +0 -210
- package/dist/integrations/elasticsearch.js +0 -201
- package/dist/integrations/firebase.js +0 -189
- package/dist/integrations/googlesheets.js +0 -493
- package/dist/integrations/index.js +0 -138
- package/dist/integrations/microsoftSqlServer.js +0 -308
- package/dist/integrations/mongodb.js +0 -630
- package/dist/integrations/mysql.js +0 -291
- package/dist/integrations/oracle.js +0 -415
- package/dist/integrations/postgres.js +0 -335
- package/dist/integrations/queries/sql.js +0 -84
- package/dist/integrations/redis.js +0 -187
- package/dist/integrations/rest.js +0 -400
- package/dist/integrations/s3.js +0 -256
- package/dist/integrations/snowflake.js +0 -114
- package/dist/integrations/utils.js +0 -295
- package/dist/middleware/appInfo.js +0 -22
- package/dist/middleware/authorized.js +0 -112
- package/dist/middleware/builder.js +0 -93
- package/dist/middleware/currentapp.js +0 -103
- package/dist/middleware/joi-validator.js +0 -43
- package/dist/middleware/publicApi.js +0 -25
- package/dist/middleware/resourceId.js +0 -59
- package/dist/middleware/selfhost.js +0 -24
- package/dist/middleware/utils.js +0 -8
- package/dist/migrations/functions/appUrls.js +0 -42
- package/dist/migrations/functions/backfill/app/automations.js +0 -31
- package/dist/migrations/functions/backfill/app/datasources.js +0 -28
- package/dist/migrations/functions/backfill/app/layouts.js +0 -33
- package/dist/migrations/functions/backfill/app/queries.js +0 -49
- package/dist/migrations/functions/backfill/app/roles.js +0 -28
- package/dist/migrations/functions/backfill/app/screens.js +0 -28
- package/dist/migrations/functions/backfill/app/tables.js +0 -37
- package/dist/migrations/functions/backfill/app.js +0 -176
- package/dist/migrations/functions/backfill/global/configs.js +0 -67
- package/dist/migrations/functions/backfill/global/quotas.js +0 -60
- package/dist/migrations/functions/backfill/global/users.js +0 -50
- package/dist/migrations/functions/backfill/global.js +0 -205
- package/dist/migrations/functions/backfill/index.js +0 -32
- package/dist/migrations/functions/backfill/installation.js +0 -80
- package/dist/migrations/functions/syncQuotas.js +0 -52
- package/dist/migrations/functions/tableSettings.js +0 -130
- package/dist/migrations/functions/usageQuotas/index.js +0 -16
- package/dist/migrations/functions/usageQuotas/syncApps.js +0 -24
- package/dist/migrations/functions/usageQuotas/syncPlugins.js +0 -23
- package/dist/migrations/functions/usageQuotas/syncRows.js +0 -33
- package/dist/migrations/functions/usageQuotas/syncUsers.js +0 -21
- package/dist/migrations/functions/userEmailViewCasing.js +0 -24
- package/dist/migrations/index.js +0 -111
- package/dist/migrations/tests/helpers.js +0 -72
- package/dist/migrations/tests/structures.js +0 -37
- package/dist/sdk/app/applications/index.js +0 -28
- package/dist/sdk/app/applications/sync.js +0 -164
- package/dist/sdk/app/applications/utils.js +0 -21
- package/dist/sdk/app/automations/index.js +0 -29
- package/dist/sdk/app/automations/webhook.js +0 -54
- package/dist/sdk/app/backups/constants.js +0 -6
- package/dist/sdk/app/backups/exports.js +0 -160
- package/dist/sdk/app/backups/imports.js +0 -170
- package/dist/sdk/app/backups/index.js +0 -29
- package/dist/sdk/app/backups/statistics.js +0 -73
- package/dist/sdk/app/datasources/datasources.js +0 -173
- package/dist/sdk/app/datasources/index.js +0 -27
- package/dist/sdk/app/queries/index.js +0 -27
- package/dist/sdk/app/queries/queries.js +0 -60
- package/dist/sdk/app/rows/attachments.js +0 -61
- package/dist/sdk/app/rows/index.js +0 -28
- package/dist/sdk/app/rows/rows.js +0 -30
- package/dist/sdk/app/tables/index.js +0 -65
- package/dist/sdk/index.js +0 -27
- package/dist/sdk/plugins/index.js +0 -27
- package/dist/sdk/plugins/plugins.js +0 -53
- package/dist/sdk/users/index.js +0 -27
- package/dist/sdk/users/utils.js +0 -87
- package/dist/sdk/utils/index.js +0 -29
- package/dist/startup.js +0 -158
- package/dist/threads/automation.js +0 -450
- package/dist/threads/definitions.js +0 -2
- package/dist/threads/index.js +0 -140
- package/dist/threads/query.js +0 -265
- package/dist/threads/utils.js +0 -120
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- package/dist/utilities/appDirectoryTemplate/package.json +0 -10
- package/dist/utilities/budibaseDir.js +0 -5
- package/dist/utilities/centralPath.js +0 -27
- package/dist/utilities/csv.js +0 -33
- package/dist/utilities/fileSystem/app.js +0 -88
- package/dist/utilities/fileSystem/clientLibrary.js +0 -138
- package/dist/utilities/fileSystem/filesystem.js +0 -180
- package/dist/utilities/fileSystem/index.js +0 -21
- package/dist/utilities/fileSystem/plugin.js +0 -76
- package/dist/utilities/fileSystem/processor.js +0 -34
- package/dist/utilities/fileSystem/template.js +0 -47
- package/dist/utilities/global.js +0 -149
- package/dist/utilities/index.js +0 -143
- package/dist/utilities/redis.js +0 -117
- package/dist/utilities/retry.js +0 -30
- package/dist/utilities/routing/index.js +0 -39
- package/dist/utilities/rowProcessor/index.js +0 -282
- package/dist/utilities/rowProcessor/map.js +0 -116
- package/dist/utilities/rowProcessor/utils.js +0 -87
- package/dist/utilities/schema.js +0 -112
- package/dist/utilities/scriptRunner.js +0 -26
- package/dist/utilities/security.js +0 -57
- package/dist/utilities/statusCodes.js +0 -9
- package/dist/utilities/usageQuota/rows.js +0 -88
- package/dist/utilities/usageQuota/usageQuoteReset.js +0 -16
- package/dist/utilities/users.js +0 -57
- package/dist/utilities/workerRequests.js +0 -171
- package/dist/watch.js +0 -53
- package/dist/websockets/client.js +0 -14
- package/dist/websockets/grid.js +0 -60
- package/dist/websockets/index.js +0 -17
- package/dist/websockets/websocket.js +0 -78
- /package/dist/{api/controllers/static/templates/BudibaseApp.svelte → BudibaseApp-Y5NZEDTC.svelte} +0 -0
- /package/dist/{api/controllers/static/templates/app.hbs → app.hbs} +0 -0
- /package/dist/{api/controllers/static/templates/preview.hbs → preview.hbs} +0 -0
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.resolve = exports.join = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
// this simply runs all of our path join and resolve functions through
|
|
9
|
-
// a central location incase we need to add some protection to file paths
|
|
10
|
-
/**
|
|
11
|
-
* Exactly the same as path.join
|
|
12
|
-
* @param args Any number of string arguments to add to a path
|
|
13
|
-
* @returns {string} The final path ready to use
|
|
14
|
-
*/
|
|
15
|
-
function join(...args) {
|
|
16
|
-
return path_1.default.join(...args);
|
|
17
|
-
}
|
|
18
|
-
exports.join = join;
|
|
19
|
-
/**
|
|
20
|
-
* Exactly the same as path.resolve
|
|
21
|
-
* @param args Any number of string arguments to add to a path
|
|
22
|
-
* @returns {string} The final path ready to use
|
|
23
|
-
*/
|
|
24
|
-
function resolve(...args) {
|
|
25
|
-
return path_1.default.resolve(...args);
|
|
26
|
-
}
|
|
27
|
-
exports.resolve = resolve;
|
package/dist/utilities/csv.js
DELETED
|
@@ -1,33 +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.jsonFromCsvString = void 0;
|
|
16
|
-
const csvtojson_1 = __importDefault(require("csvtojson"));
|
|
17
|
-
function jsonFromCsvString(csvString) {
|
|
18
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
const castedWithEmptyValues = yield (0, csvtojson_1.default)({ ignoreEmpty: true }).fromString(csvString);
|
|
20
|
-
// By default the csvtojson library casts empty values as empty strings. This is causing issues on conversion.
|
|
21
|
-
// ignoreEmpty will remove the key completly if empty, so creating this empty object will ensure we return the values with the keys but empty values
|
|
22
|
-
const result = yield (0, csvtojson_1.default)({ ignoreEmpty: false }).fromString(csvString);
|
|
23
|
-
result.forEach((r, i) => {
|
|
24
|
-
for (const [key] of Object.entries(r).filter(([key, value]) => value === "")) {
|
|
25
|
-
if (castedWithEmptyValues[i][key] === undefined) {
|
|
26
|
-
r[key] = null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
return result;
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
exports.jsonFromCsvString = jsonFromCsvString;
|
|
@@ -1,88 +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.cleanup = exports.getComponentLibraryManifest = exports.deleteApp = exports.createApp = exports.NODE_MODULES_PATH = void 0;
|
|
16
|
-
const budibaseDir_1 = require("../budibaseDir");
|
|
17
|
-
const fs_1 = __importDefault(require("fs"));
|
|
18
|
-
const path_1 = require("path");
|
|
19
|
-
const constants_1 = require("../../constants");
|
|
20
|
-
const clientLibrary_1 = require("./clientLibrary");
|
|
21
|
-
const environment_1 = __importDefault(require("../../environment"));
|
|
22
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
23
|
-
const filesystem_1 = require("./filesystem");
|
|
24
|
-
exports.NODE_MODULES_PATH = (0, path_1.join)(filesystem_1.TOP_LEVEL_PATH, "node_modules");
|
|
25
|
-
/**
|
|
26
|
-
* Uploads the latest client library to the object store.
|
|
27
|
-
* @param {string} appId The ID of the app which is being created.
|
|
28
|
-
* @return {Promise<void>} once promise completes app resources should be ready in object store.
|
|
29
|
-
*/
|
|
30
|
-
const createApp = (appId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
-
yield (0, clientLibrary_1.updateClientLibrary)(appId);
|
|
32
|
-
});
|
|
33
|
-
exports.createApp = createApp;
|
|
34
|
-
/**
|
|
35
|
-
* Removes all of the assets created for an app in the object store.
|
|
36
|
-
* @param {string} appId The ID of the app which is being deleted.
|
|
37
|
-
* @return {Promise<void>} once promise completes the app resources will be removed from object store.
|
|
38
|
-
*/
|
|
39
|
-
const deleteApp = (appId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
-
yield backend_core_1.objectStore.deleteFolder(constants_1.ObjectStoreBuckets.APPS, `${appId}/`);
|
|
41
|
-
});
|
|
42
|
-
exports.deleteApp = deleteApp;
|
|
43
|
-
/**
|
|
44
|
-
* Retrieves component libraries from object store (or tmp symlink if in local)
|
|
45
|
-
*/
|
|
46
|
-
const getComponentLibraryManifest = (library) => __awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
-
const appId = backend_core_1.context.getAppId();
|
|
48
|
-
const filename = "manifest.json";
|
|
49
|
-
if (environment_1.default.isDev() || environment_1.default.isTest()) {
|
|
50
|
-
const path = (0, path_1.join)(filesystem_1.TOP_LEVEL_PATH, "../client", filename);
|
|
51
|
-
// always load from new so that updates are refreshed
|
|
52
|
-
delete require.cache[require.resolve(path)];
|
|
53
|
-
return require(path);
|
|
54
|
-
}
|
|
55
|
-
if (!appId) {
|
|
56
|
-
throw new Error("No app ID found - cannot get component libraries");
|
|
57
|
-
}
|
|
58
|
-
let resp;
|
|
59
|
-
let path;
|
|
60
|
-
try {
|
|
61
|
-
// Try to load the manifest from the new file location
|
|
62
|
-
path = (0, path_1.join)(appId, filename);
|
|
63
|
-
resp = yield backend_core_1.objectStore.retrieve(constants_1.ObjectStoreBuckets.APPS, path);
|
|
64
|
-
}
|
|
65
|
-
catch (error) {
|
|
66
|
-
console.error(`component-manifest-objectstore=failed appId=${appId} path=${path}`, error);
|
|
67
|
-
// Fallback to loading it from the old location for old apps
|
|
68
|
-
path = (0, path_1.join)(appId, "node_modules", library, "package", filename);
|
|
69
|
-
resp = yield backend_core_1.objectStore.retrieve(constants_1.ObjectStoreBuckets.APPS, path);
|
|
70
|
-
}
|
|
71
|
-
if (typeof resp !== "string") {
|
|
72
|
-
resp = resp.toString("utf8");
|
|
73
|
-
}
|
|
74
|
-
return JSON.parse(resp);
|
|
75
|
-
});
|
|
76
|
-
exports.getComponentLibraryManifest = getComponentLibraryManifest;
|
|
77
|
-
/**
|
|
78
|
-
* Given a set of app IDs makes sure file system is cleared of any of their temp info.
|
|
79
|
-
*/
|
|
80
|
-
const cleanup = (appIds) => {
|
|
81
|
-
for (let appId of appIds) {
|
|
82
|
-
const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), appId);
|
|
83
|
-
if (fs_1.default.existsSync(path)) {
|
|
84
|
-
fs_1.default.rmdirSync(path, { recursive: true });
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
exports.cleanup = cleanup;
|
|
@@ -1,138 +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.revertClientLibrary = exports.updateClientLibrary = exports.backupClientLibrary = void 0;
|
|
16
|
-
const path_1 = require("path");
|
|
17
|
-
const constants_1 = require("../../constants");
|
|
18
|
-
const fs_1 = __importDefault(require("fs"));
|
|
19
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
20
|
-
const centralPath_1 = require("../centralPath");
|
|
21
|
-
const environment_1 = __importDefault(require("../../environment"));
|
|
22
|
-
const filesystem_1 = require("./filesystem");
|
|
23
|
-
/**
|
|
24
|
-
* Client library paths in the object store:
|
|
25
|
-
* Previously, the entire client library package was downloaded from NPM
|
|
26
|
-
* as a tarball and extracted to the object store, even though only the manifest
|
|
27
|
-
* was ever needed. Therefore we need to support old apps which may still have
|
|
28
|
-
* the manifest at this location for the first update.
|
|
29
|
-
*
|
|
30
|
-
* The new paths for the in-use version are:
|
|
31
|
-
* {appId}/manifest.json
|
|
32
|
-
* {appId}/budibase-client.js
|
|
33
|
-
*
|
|
34
|
-
* The paths for the backups are:
|
|
35
|
-
* {appId}/manifest.json.bak
|
|
36
|
-
* {appId}/budibase-client.js.bak
|
|
37
|
-
*
|
|
38
|
-
* We don't rely on NPM at all any more, as when updating to the latest version
|
|
39
|
-
* we pull both the manifest and client bundle from the server's dependencies
|
|
40
|
-
* in the local file system.
|
|
41
|
-
*/
|
|
42
|
-
/**
|
|
43
|
-
* Backs up the current client library version by copying both the manifest
|
|
44
|
-
* and client bundle to .bak extensions in the object store. Only the one
|
|
45
|
-
* previous version is stored as a backup, which can be reverted to.
|
|
46
|
-
* @param appId The app ID to backup
|
|
47
|
-
* @returns {Promise<void>}
|
|
48
|
-
*/
|
|
49
|
-
function backupClientLibrary(appId) {
|
|
50
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
-
// Copy existing manifest to tmp
|
|
52
|
-
let tmpManifestPath;
|
|
53
|
-
try {
|
|
54
|
-
// Try to load the manifest from the new file location
|
|
55
|
-
tmpManifestPath = yield backend_core_1.objectStore.retrieveToTmp(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "manifest.json"));
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
// Fallback to loading it from the old location for old apps
|
|
59
|
-
tmpManifestPath = yield backend_core_1.objectStore.retrieveToTmp(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "node_modules", "budibase", "standard-components", "package", "manifest.json"));
|
|
60
|
-
}
|
|
61
|
-
// Copy existing client lib to tmp
|
|
62
|
-
const tmpClientPath = yield backend_core_1.objectStore.retrieveToTmp(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "budibase-client.js"));
|
|
63
|
-
// Upload manifest and client library as backups
|
|
64
|
-
const manifestUpload = backend_core_1.objectStore.upload({
|
|
65
|
-
bucket: constants_1.ObjectStoreBuckets.APPS,
|
|
66
|
-
filename: (0, path_1.join)(appId, "manifest.json.bak"),
|
|
67
|
-
path: tmpManifestPath,
|
|
68
|
-
type: "application/json",
|
|
69
|
-
});
|
|
70
|
-
const clientUpload = backend_core_1.objectStore.upload({
|
|
71
|
-
bucket: constants_1.ObjectStoreBuckets.APPS,
|
|
72
|
-
filename: (0, path_1.join)(appId, "budibase-client.js.bak"),
|
|
73
|
-
path: tmpClientPath,
|
|
74
|
-
type: "application/javascript",
|
|
75
|
-
});
|
|
76
|
-
yield Promise.all([manifestUpload, clientUpload]);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
exports.backupClientLibrary = backupClientLibrary;
|
|
80
|
-
/**
|
|
81
|
-
* Uploads the latest version of the component manifest and the client library
|
|
82
|
-
* to the object store, overwriting the existing version.
|
|
83
|
-
* @param appId The app ID to update
|
|
84
|
-
* @returns {Promise<void>}
|
|
85
|
-
*/
|
|
86
|
-
function updateClientLibrary(appId) {
|
|
87
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
-
let manifest, client;
|
|
89
|
-
if (environment_1.default.isDev()) {
|
|
90
|
-
// Load the symlinked version in dev which is always the newest
|
|
91
|
-
manifest = require.resolve("@budibase/client/manifest.json");
|
|
92
|
-
client = require.resolve("@budibase/client");
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
// Load the bundled version in prod
|
|
96
|
-
manifest = (0, centralPath_1.resolve)(filesystem_1.TOP_LEVEL_PATH, "client", "manifest.json");
|
|
97
|
-
client = (0, centralPath_1.resolve)(filesystem_1.TOP_LEVEL_PATH, "client", "budibase-client.js");
|
|
98
|
-
}
|
|
99
|
-
// Upload latest manifest and client library
|
|
100
|
-
const manifestUpload = backend_core_1.objectStore.streamUpload(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "manifest.json"), fs_1.default.createReadStream(manifest), {
|
|
101
|
-
ContentType: "application/json",
|
|
102
|
-
});
|
|
103
|
-
const clientUpload = backend_core_1.objectStore.streamUpload(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "budibase-client.js"), fs_1.default.createReadStream(client), {
|
|
104
|
-
ContentType: "application/javascript",
|
|
105
|
-
});
|
|
106
|
-
yield Promise.all([manifestUpload, clientUpload]);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
exports.updateClientLibrary = updateClientLibrary;
|
|
110
|
-
/**
|
|
111
|
-
* Reverts the version of the client library and manifest to the previously
|
|
112
|
-
* used version for an app.
|
|
113
|
-
* @param appId The app ID to revert
|
|
114
|
-
* @returns {Promise<void>}
|
|
115
|
-
*/
|
|
116
|
-
function revertClientLibrary(appId) {
|
|
117
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
-
// Copy backups manifest to tmp directory
|
|
119
|
-
const tmpManifestPath = yield backend_core_1.objectStore.retrieveToTmp(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "manifest.json.bak"));
|
|
120
|
-
// Copy backup client lib to tmp
|
|
121
|
-
const tmpClientPath = yield backend_core_1.objectStore.retrieveToTmp(constants_1.ObjectStoreBuckets.APPS, (0, path_1.join)(appId, "budibase-client.js.bak"));
|
|
122
|
-
// Upload backups as new versions
|
|
123
|
-
const manifestUpload = backend_core_1.objectStore.upload({
|
|
124
|
-
bucket: constants_1.ObjectStoreBuckets.APPS,
|
|
125
|
-
filename: (0, path_1.join)(appId, "manifest.json"),
|
|
126
|
-
path: tmpManifestPath,
|
|
127
|
-
type: "application/json",
|
|
128
|
-
});
|
|
129
|
-
const clientUpload = backend_core_1.objectStore.upload({
|
|
130
|
-
bucket: constants_1.ObjectStoreBuckets.APPS,
|
|
131
|
-
filename: (0, path_1.join)(appId, "budibase-client.js"),
|
|
132
|
-
path: tmpClientPath,
|
|
133
|
-
type: "application/javascript",
|
|
134
|
-
});
|
|
135
|
-
yield Promise.all([manifestUpload, clientUpload]);
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
exports.revertClientLibrary = revertClientLibrary;
|
|
@@ -1,180 +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 fs_1 = __importDefault(require("fs"));
|
|
17
|
-
const budibaseDir_1 = require("../budibaseDir");
|
|
18
|
-
const path_1 = require("path");
|
|
19
|
-
const environment_1 = __importDefault(require("../../environment"));
|
|
20
|
-
const tar_1 = __importDefault(require("tar"));
|
|
21
|
-
const uuid = require("uuid/v4");
|
|
22
|
-
exports.TOP_LEVEL_PATH = (0, path_1.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 = (0, budibaseDir_1.budibaseTempDir)();
|
|
28
|
-
if (!fs_1.default.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_1.default.mkdirSync(tempDir);
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
if (!err || err.code !== "EEXIST") {
|
|
36
|
-
throw err;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
exports.init = init;
|
|
42
|
-
/**
|
|
43
|
-
* Checks if the system is currently in development mode and if it is makes sure
|
|
44
|
-
* everything required to function is ready.
|
|
45
|
-
*/
|
|
46
|
-
const checkDevelopmentEnvironment = () => {
|
|
47
|
-
if (!environment_1.default.isDev() || environment_1.default.isTest()) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
if (!fs_1.default.existsSync((0, budibaseDir_1.budibaseTempDir)())) {
|
|
51
|
-
fs_1.default.mkdirSync((0, budibaseDir_1.budibaseTempDir)());
|
|
52
|
-
}
|
|
53
|
-
let error;
|
|
54
|
-
if (!fs_1.default.existsSync((0, path_1.join)(process.cwd(), ".env"))) {
|
|
55
|
-
error = "Must run via yarn once to generate environment.";
|
|
56
|
-
}
|
|
57
|
-
if (error) {
|
|
58
|
-
console.error(error);
|
|
59
|
-
process.exit(-1);
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
exports.checkDevelopmentEnvironment = checkDevelopmentEnvironment;
|
|
63
|
-
/**
|
|
64
|
-
* Used to retrieve a handlebars file from the system which will be used as a template.
|
|
65
|
-
* This is allowable as the template handlebars files should be static and identical across
|
|
66
|
-
* the cluster.
|
|
67
|
-
* @param {string} path The path to the handlebars file which is to be loaded.
|
|
68
|
-
* @returns {string} The loaded handlebars file as a string - loaded as utf8.
|
|
69
|
-
*/
|
|
70
|
-
const loadHandlebarsFile = (path) => {
|
|
71
|
-
return fs_1.default.readFileSync(path, "utf8");
|
|
72
|
-
};
|
|
73
|
-
exports.loadHandlebarsFile = loadHandlebarsFile;
|
|
74
|
-
/**
|
|
75
|
-
* When return a file from the API need to write the file to the system temporarily so we
|
|
76
|
-
* can create a read stream to send.
|
|
77
|
-
* @param {string} contents the contents of the file which is to be returned from the API.
|
|
78
|
-
* @return {Object} the read stream which can be put into the koa context body.
|
|
79
|
-
*/
|
|
80
|
-
const apiFileReturn = (contents) => {
|
|
81
|
-
const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), uuid());
|
|
82
|
-
fs_1.default.writeFileSync(path, contents);
|
|
83
|
-
return fs_1.default.createReadStream(path);
|
|
84
|
-
};
|
|
85
|
-
exports.apiFileReturn = apiFileReturn;
|
|
86
|
-
const streamFile = (path) => {
|
|
87
|
-
return fs_1.default.createReadStream(path);
|
|
88
|
-
};
|
|
89
|
-
exports.streamFile = streamFile;
|
|
90
|
-
/**
|
|
91
|
-
* Writes the provided contents to a temporary file, which can be used briefly.
|
|
92
|
-
* @param {string} fileContents contents which will be written to a temp file.
|
|
93
|
-
* @return {string} the path to the temp file.
|
|
94
|
-
*/
|
|
95
|
-
const storeTempFile = (fileContents) => {
|
|
96
|
-
const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), uuid());
|
|
97
|
-
fs_1.default.writeFileSync(path, fileContents);
|
|
98
|
-
return path;
|
|
99
|
-
};
|
|
100
|
-
exports.storeTempFile = storeTempFile;
|
|
101
|
-
/**
|
|
102
|
-
* Utility function for getting a file read stream - a simple in memory buffered read
|
|
103
|
-
* stream doesn't work for pouchdb.
|
|
104
|
-
*/
|
|
105
|
-
const stringToFileStream = (contents) => {
|
|
106
|
-
const path = (0, exports.storeTempFile)(contents);
|
|
107
|
-
return fs_1.default.createReadStream(path);
|
|
108
|
-
};
|
|
109
|
-
exports.stringToFileStream = stringToFileStream;
|
|
110
|
-
/**
|
|
111
|
-
* Creates a temp file and returns it from the API.
|
|
112
|
-
* @param {string} fileContents the contents to be returned in file.
|
|
113
|
-
*/
|
|
114
|
-
const sendTempFile = (fileContents) => {
|
|
115
|
-
const path = (0, exports.storeTempFile)(fileContents);
|
|
116
|
-
return fs_1.default.createReadStream(path);
|
|
117
|
-
};
|
|
118
|
-
exports.sendTempFile = sendTempFile;
|
|
119
|
-
/**
|
|
120
|
-
* All file reads come through here just to make sure all of them make sense
|
|
121
|
-
* allows a centralised location to check logic is all good.
|
|
122
|
-
*/
|
|
123
|
-
const readFileSync = (filepath, options = "utf8") => {
|
|
124
|
-
// @ts-ignore
|
|
125
|
-
return fs_1.default.readFileSync(filepath, options);
|
|
126
|
-
};
|
|
127
|
-
exports.readFileSync = readFileSync;
|
|
128
|
-
const createTempFolder = (item) => {
|
|
129
|
-
const path = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), item);
|
|
130
|
-
try {
|
|
131
|
-
// remove old tmp directories automatically - don't combine
|
|
132
|
-
if (fs_1.default.existsSync(path)) {
|
|
133
|
-
fs_1.default.rmSync(path, { recursive: true, force: true });
|
|
134
|
-
}
|
|
135
|
-
fs_1.default.mkdirSync(path);
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
throw new Error(`Path cannot be created: ${err.message}`);
|
|
139
|
-
}
|
|
140
|
-
return path;
|
|
141
|
-
};
|
|
142
|
-
exports.createTempFolder = createTempFolder;
|
|
143
|
-
const extractTarball = (fromFilePath, toPath) => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
-
yield tar_1.default.extract({
|
|
145
|
-
file: fromFilePath,
|
|
146
|
-
C: toPath,
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
exports.extractTarball = extractTarball;
|
|
150
|
-
/**
|
|
151
|
-
* Find for a file recursively from start path applying filter, return first match
|
|
152
|
-
*/
|
|
153
|
-
const findFileRec = (startPath, filter) => {
|
|
154
|
-
if (!fs_1.default.existsSync(startPath)) {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
const files = fs_1.default.readdirSync(startPath);
|
|
158
|
-
for (let i = 0, len = files.length; i < len; i++) {
|
|
159
|
-
// @ts-ignore
|
|
160
|
-
const filename = (0, path_1.join)(startPath, files[i]);
|
|
161
|
-
const stat = fs_1.default.lstatSync(filename);
|
|
162
|
-
if (stat.isDirectory()) {
|
|
163
|
-
return (0, exports.findFileRec)(filename, filter);
|
|
164
|
-
}
|
|
165
|
-
else if (filename.endsWith(filter)) {
|
|
166
|
-
return filename;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
exports.findFileRec = findFileRec;
|
|
171
|
-
/**
|
|
172
|
-
* Remove a folder which is not empty from the file system
|
|
173
|
-
*/
|
|
174
|
-
const deleteFolderFileSystem = (path) => {
|
|
175
|
-
if (!fs_1.default.existsSync(path)) {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
fs_1.default.rmSync(path, { recursive: true, force: true });
|
|
179
|
-
};
|
|
180
|
-
exports.deleteFolderFileSystem = deleteFolderFileSystem;
|
|
@@ -1,21 +0,0 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./app"), exports);
|
|
18
|
-
__exportStar(require("./clientLibrary"), exports);
|
|
19
|
-
__exportStar(require("./filesystem"), exports);
|
|
20
|
-
__exportStar(require("./plugin"), exports);
|
|
21
|
-
__exportStar(require("./template"), exports);
|
|
@@ -1,76 +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.getAutomationPlugin = exports.getDatasourcePlugin = exports.getPluginMetadata = void 0;
|
|
16
|
-
const budibaseDir_1 = require("../budibaseDir");
|
|
17
|
-
const fs_1 = __importDefault(require("fs"));
|
|
18
|
-
const path_1 = require("path");
|
|
19
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
20
|
-
const DATASOURCE_PATH = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), "datasource");
|
|
21
|
-
const AUTOMATION_PATH = (0, path_1.join)((0, budibaseDir_1.budibaseTempDir)(), "automation");
|
|
22
|
-
const getPluginMetadata = (path) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
-
let metadata = {};
|
|
24
|
-
try {
|
|
25
|
-
const pkg = fs_1.default.readFileSync((0, path_1.join)(path, "package.json"), "utf8");
|
|
26
|
-
const schema = fs_1.default.readFileSync((0, path_1.join)(path, "schema.json"), "utf8");
|
|
27
|
-
metadata.schema = JSON.parse(schema);
|
|
28
|
-
metadata.package = JSON.parse(pkg);
|
|
29
|
-
if (!metadata.package.name ||
|
|
30
|
-
!metadata.package.version ||
|
|
31
|
-
!metadata.package.description) {
|
|
32
|
-
throw new Error("package.json is missing one of 'name', 'version' or 'description'.");
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
catch (err) {
|
|
36
|
-
throw new Error(`Unable to process schema.json/package.json in plugin. ${err.message}`);
|
|
37
|
-
}
|
|
38
|
-
return { metadata, directory: path };
|
|
39
|
-
});
|
|
40
|
-
exports.getPluginMetadata = getPluginMetadata;
|
|
41
|
-
function getPluginImpl(path, plugin) {
|
|
42
|
-
var _a;
|
|
43
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
const hash = (_a = plugin.schema) === null || _a === void 0 ? void 0 : _a.hash;
|
|
45
|
-
if (!fs_1.default.existsSync(path)) {
|
|
46
|
-
fs_1.default.mkdirSync(path);
|
|
47
|
-
}
|
|
48
|
-
const filename = (0, path_1.join)(path, plugin.name);
|
|
49
|
-
const metadataName = `${filename}.bbmetadata`;
|
|
50
|
-
if (fs_1.default.existsSync(filename)) {
|
|
51
|
-
const currentHash = fs_1.default.readFileSync(metadataName, "utf8");
|
|
52
|
-
// if hash is the same return the file, otherwise remove it and re-download
|
|
53
|
-
if (currentHash === hash) {
|
|
54
|
-
return require(filename);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
console.log(`Updating plugin: ${plugin.name}`);
|
|
58
|
-
delete require.cache[require.resolve(filename)];
|
|
59
|
-
fs_1.default.unlinkSync(filename);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
const pluginKey = backend_core_1.objectStore.getPluginJSKey(plugin);
|
|
63
|
-
const pluginJs = yield backend_core_1.objectStore.retrieve(backend_core_1.objectStore.ObjectStoreBuckets.PLUGINS, pluginKey);
|
|
64
|
-
fs_1.default.writeFileSync(filename, pluginJs);
|
|
65
|
-
fs_1.default.writeFileSync(metadataName, hash);
|
|
66
|
-
return require(filename);
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
const getDatasourcePlugin = (plugin) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
-
return getPluginImpl(DATASOURCE_PATH, plugin);
|
|
71
|
-
});
|
|
72
|
-
exports.getDatasourcePlugin = getDatasourcePlugin;
|
|
73
|
-
const getAutomationPlugin = (plugin) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
-
return getPluginImpl(AUTOMATION_PATH, plugin);
|
|
75
|
-
});
|
|
76
|
-
exports.getAutomationPlugin = getAutomationPlugin;
|
|
@@ -1,34 +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.process = void 0;
|
|
16
|
-
const jimp_1 = __importDefault(require("jimp"));
|
|
17
|
-
const FORMATS = {
|
|
18
|
-
IMAGES: ["png", "jpg", "jpeg", "gif", "bmp", "tiff"],
|
|
19
|
-
};
|
|
20
|
-
function processImage(file) {
|
|
21
|
-
// this will overwrite the temp file
|
|
22
|
-
return jimp_1.default.read(file.path).then(img => {
|
|
23
|
-
return img.resize(300, jimp_1.default.AUTO).write(file.path);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function process(file) {
|
|
27
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
-
if (FORMATS.IMAGES.includes(file.extension.toLowerCase())) {
|
|
29
|
-
yield processImage(file);
|
|
30
|
-
}
|
|
31
|
-
return file;
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
exports.process = process;
|
|
@@ -1,47 +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.downloadTemplate = exports.getTemplateStream = void 0;
|
|
16
|
-
const fs_1 = __importDefault(require("fs"));
|
|
17
|
-
const path_1 = require("path");
|
|
18
|
-
const constants_1 = require("../../constants");
|
|
19
|
-
const backend_core_1 = require("@budibase/backend-core");
|
|
20
|
-
/**
|
|
21
|
-
* This function manages temporary template files which are stored by Koa.
|
|
22
|
-
* @param {Object} template The template object retrieved from the Koa context object.
|
|
23
|
-
* @returns {Object} Returns an fs read stream which can be loaded into the database.
|
|
24
|
-
*/
|
|
25
|
-
const getTemplateStream = (template) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
-
if (template.file) {
|
|
27
|
-
return fs_1.default.createReadStream(template.file.path);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
const [type, name] = template.key.split("/");
|
|
31
|
-
const tmpPath = yield (0, exports.downloadTemplate)(type, name);
|
|
32
|
-
return fs_1.default.createReadStream((0, path_1.join)(tmpPath, name, "db", "dump.txt"));
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
exports.getTemplateStream = getTemplateStream;
|
|
36
|
-
/**
|
|
37
|
-
* Retrieves a template and pipes it to minio as well as making it available temporarily.
|
|
38
|
-
* @param {string} type The type of template which is to be retrieved.
|
|
39
|
-
* @param name
|
|
40
|
-
* @return {Promise<*>}
|
|
41
|
-
*/
|
|
42
|
-
const downloadTemplate = (type, name) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
-
const DEFAULT_TEMPLATES_BUCKET = "prod-budi-templates.s3-eu-west-1.amazonaws.com";
|
|
44
|
-
const templateUrl = `https://${DEFAULT_TEMPLATES_BUCKET}/templates/${type}/${name}.tar.gz`;
|
|
45
|
-
return backend_core_1.objectStore.downloadTarball(templateUrl, constants_1.ObjectStoreBuckets.TEMPLATES, type);
|
|
46
|
-
});
|
|
47
|
-
exports.downloadTemplate = downloadTemplate;
|