@budibase/server 2.1.43-alpha.6 → 2.1.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/aws-sdk.ts +0 -14
- package/__mocks__/node-fetch.ts +1 -5
- package/builder/assets/index.2d05742a.js +1021 -0
- package/builder/assets/index.534f6c29.css +6 -0
- package/builder/index.html +2 -2
- package/coverage/clover.xml +3857 -10913
- package/coverage/coverage-final.json +118 -267
- package/coverage/lcov-report/{src/api/controllers/apikeys.ts.html → api/controllers/apikeys.js.html} +30 -30
- package/coverage/lcov-report/{src/api/controllers/automation.ts.html → api/controllers/automation.js.html} +99 -99
- package/coverage/lcov-report/{src/api/controllers/cloud.ts.html → api/controllers/cloud.js.html} +58 -58
- package/coverage/lcov-report/{src/api/controllers/datasource.ts.html → api/controllers/datasource.js.html} +107 -287
- package/coverage/lcov-report/{src/api/controllers/dev.ts.html → api/controllers/dev.js.html} +87 -69
- package/coverage/lcov-report/api/controllers/index.html +326 -0
- package/coverage/lcov-report/{src/middleware/selfhost.ts.html → api/controllers/integration.js.html} +28 -22
- package/coverage/lcov-report/{src/api/controllers/layout.ts.html → api/controllers/layout.js.html} +31 -31
- package/coverage/lcov-report/{src/api/controllers/metadata.ts.html → api/controllers/metadata.js.html} +30 -33
- package/coverage/lcov-report/{src/api/controllers/migrations.ts.html → api/controllers/migrations.js.html} +17 -20
- package/coverage/lcov-report/{src/api/controllers/permission.ts.html → api/controllers/permission.js.html} +79 -88
- package/coverage/lcov-report/{src/utilities/routing → api/controllers/query}/index.html +8 -8
- package/coverage/lcov-report/{src/api/controllers/query/validation.ts.html → api/controllers/query/validation.js.html} +25 -25
- package/coverage/lcov-report/{src/api/controllers/role.ts.html → api/controllers/role.js.html} +60 -48
- package/coverage/lcov-report/{src/api/controllers/routing.ts.html → api/controllers/routing.js.html} +58 -67
- package/coverage/lcov-report/{src/api/controllers/row/external.ts.html → api/controllers/row/external.js.html} +111 -162
- package/coverage/lcov-report/{src/api → api}/controllers/row/index.html +52 -82
- package/coverage/lcov-report/{src/api/controllers/row/internal.ts.html → api/controllers/row/internal.js.html} +121 -163
- package/coverage/lcov-report/{src/api/controllers/row/internalSearch.ts.html → api/controllers/row/internalSearch.js.html} +117 -189
- package/coverage/lcov-report/{src/api/controllers/row/staticFormula.ts.html → api/controllers/row/staticFormula.js.html} +58 -73
- package/coverage/lcov-report/{src/api/controllers/row/utils.ts.html → api/controllers/row/utils.js.html} +58 -88
- package/coverage/lcov-report/{src/api/controllers/script.ts.html → api/controllers/script.js.html} +16 -19
- package/coverage/lcov-report/{src/api/controllers/table/bulkFormula.ts.html → api/controllers/table/bulkFormula.js.html} +62 -104
- package/coverage/lcov-report/{src/api/controllers/table/external.ts.html → api/controllers/table/external.js.html} +111 -204
- package/coverage/lcov-report/{src/utilities/fileSystem → api/controllers/table}/index.html +44 -44
- package/coverage/lcov-report/{src/api/controllers/table/index.ts.html → api/controllers/table/index.js.html} +49 -58
- package/coverage/lcov-report/{src/api/controllers/templates.ts.html → api/controllers/templates.js.html} +29 -38
- package/coverage/lcov-report/{src/api/controllers/user.ts.html → api/controllers/user.js.html} +99 -93
- package/coverage/lcov-report/{src/api/controllers/view/exporters.ts.html → api/controllers/view/exporters.js.html} +16 -22
- package/coverage/lcov-report/{src/api → api}/controllers/view/index.html +36 -36
- package/coverage/lcov-report/{src/api/controllers/view/index.ts.html → api/controllers/view/index.js.html} +64 -91
- package/coverage/lcov-report/{src/api/controllers/view/utils.ts.html → api/controllers/view/utils.js.html} +54 -72
- package/coverage/lcov-report/{src/api/controllers/view/viewBuilder.ts.html → api/controllers/view/viewBuilder.js.html} +36 -78
- package/coverage/lcov-report/{src/api → api}/index.html +23 -23
- package/coverage/lcov-report/{src/api/index.ts.html → api/index.js.html} +76 -55
- package/coverage/lcov-report/{src/middleware/utils.ts.html → api/routes/analytics.js.html} +19 -19
- package/coverage/lcov-report/api/routes/apikeys.js.html +121 -0
- package/coverage/lcov-report/{src/api/routes/automation.ts.html → api/routes/automation.js.html} +47 -53
- package/coverage/lcov-report/{src/api/routes/backup.ts.html → api/routes/cloud.js.html} +28 -28
- package/coverage/lcov-report/{src/api/routes/component.ts.html → api/routes/component.js.html} +24 -24
- package/coverage/lcov-report/{src/definitions/datasource.ts.html → api/routes/datasource.js.html} +64 -61
- package/coverage/lcov-report/{src/api/routes/cloud.ts.html → api/routes/deploy.js.html} +28 -31
- package/coverage/lcov-report/{src/automations/index.ts.html → api/routes/dev.js.html} +46 -46
- package/coverage/lcov-report/{src/api → api}/routes/index.html +47 -167
- package/coverage/lcov-report/api/routes/integration.js.html +121 -0
- package/coverage/lcov-report/{src/db/index.ts.html → api/routes/layout.js.html} +28 -28
- package/coverage/lcov-report/{src/api/routes/metadata.ts.html → api/routes/metadata.js.html} +31 -31
- package/coverage/lcov-report/{src/sdk/index.ts.html → api/routes/migrations.js.html} +21 -24
- package/coverage/lcov-report/{src/api/routes/permission.ts.html → api/routes/permission.js.html} +31 -55
- package/coverage/lcov-report/{src/api/routes/query.ts.html → api/routes/query.js.html} +50 -41
- package/coverage/lcov-report/api/routes/role.js.html +130 -0
- package/coverage/lcov-report/{src/api/routes/routing.ts.html → api/routes/routing.js.html} +24 -24
- package/coverage/lcov-report/api/routes/screen.js.html +139 -0
- package/coverage/lcov-report/{src/api/routes/script.ts.html → api/routes/script.js.html} +17 -17
- package/coverage/lcov-report/{src/api/routes/table.ts.html → api/routes/table.js.html} +41 -32
- package/coverage/lcov-report/{src/api/routes/templates.ts.html → api/routes/templates.js.html} +25 -25
- package/coverage/lcov-report/{src/api/routes/user.ts.html → api/routes/user.js.html} +41 -35
- package/coverage/lcov-report/{src/api → api}/routes/utils/index.html +15 -15
- package/coverage/lcov-report/{src/api/routes/utils/validators.ts.html → api/routes/utils/validators.js.html} +98 -86
- package/coverage/lcov-report/{src/api/routes/view.ts.html → api/routes/view.js.html} +36 -45
- package/coverage/lcov-report/{src/automations/actions.ts.html → automations/actions.js.html} +60 -69
- package/coverage/lcov-report/{src/automations/automationUtils.ts.html → automations/automationUtils.js.html} +33 -36
- package/coverage/lcov-report/{src/automations/bullboard.ts.html → automations/bullboard.js.html} +42 -39
- package/coverage/lcov-report/{src/automations → automations}/index.html +48 -63
- package/coverage/lcov-report/{src/websocket.ts.html → automations/index.js.html} +50 -41
- package/coverage/lcov-report/{src/automations/steps/bash.ts.html → automations/steps/bash.js.html} +30 -45
- package/coverage/lcov-report/{src/automations/steps/delay.ts.html → automations/steps/delay.js.html} +19 -34
- package/coverage/lcov-report/{src/automations/steps/discord.ts.html → automations/steps/discord.js.html} +28 -43
- package/coverage/lcov-report/{src/automations/steps/executeQuery.ts.html → automations/steps/executeQuery.js.html} +30 -45
- package/coverage/lcov-report/{src/automations/steps/executeScript.ts.html → automations/steps/executeScript.js.html} +28 -58
- package/coverage/lcov-report/{src/automations/steps/filter.ts.html → automations/steps/filter.js.html} +30 -39
- package/coverage/lcov-report/automations/steps/index.html +341 -0
- package/coverage/lcov-report/{src/automations/steps/integromat.ts.html → automations/steps/integromat.js.html} +23 -38
- package/coverage/lcov-report/{src/automations/steps/loop.ts.html → automations/steps/loop.js.html} +15 -21
- package/coverage/lcov-report/{src/automations/steps/outgoingWebhook.ts.html → automations/steps/outgoingWebhook.js.html} +39 -54
- package/coverage/lcov-report/{src/automations/steps/queryRows.ts.html → automations/steps/queryRows.js.html} +66 -102
- package/coverage/lcov-report/{src/automations/steps/sendSmtpEmail.ts.html → automations/steps/sendSmtpEmail.js.html} +25 -40
- package/coverage/lcov-report/{src/automations/steps/serverLog.ts.html → automations/steps/serverLog.js.html} +22 -40
- package/coverage/lcov-report/{src/automations/steps/slack.ts.html → automations/steps/slack.js.html} +23 -38
- package/coverage/lcov-report/{src/automations/steps/updateRow.ts.html → automations/steps/updateRow.js.html} +25 -40
- package/coverage/lcov-report/{src/automations/steps/utils.ts.html → automations/steps/utils.js.html} +27 -45
- package/coverage/lcov-report/{src/automations/steps/zapier.ts.html → automations/steps/zapier.js.html} +23 -41
- package/coverage/lcov-report/{src/definitions/automations.ts.html → automations/triggerInfo/app.js.html} +42 -42
- package/coverage/lcov-report/{src/automations/triggerInfo/cron.ts.html → automations/triggerInfo/cron.js.html} +15 -30
- package/coverage/lcov-report/{src/automations → automations}/triggerInfo/index.html +31 -31
- package/coverage/lcov-report/{src/api/routes/layout.ts.html → automations/triggerInfo/index.js.html} +26 -29
- package/coverage/lcov-report/{src/automations/triggerInfo/rowDeleted.ts.html → automations/triggerInfo/rowDeleted.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggerInfo/rowSaved.ts.html → automations/triggerInfo/rowSaved.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggerInfo/rowUpdated.ts.html → automations/triggerInfo/rowUpdated.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggerInfo/webhook.ts.html → automations/triggerInfo/webhook.js.html} +15 -30
- package/coverage/lcov-report/{src/automations/triggers.ts.html → automations/triggers.js.html} +66 -78
- package/coverage/lcov-report/{src/constants → constants}/index.html +26 -26
- package/coverage/lcov-report/{src/integrations/dynamodb.ts.html → constants/index.js.html} +227 -263
- package/coverage/lcov-report/{src/constants/layouts.ts.html → constants/layouts.js.html} +36 -18
- package/coverage/lcov-report/{src/constants/screens.ts.html → constants/screens.js.html} +58 -64
- package/coverage/lcov-report/{src/db/inMemoryView.ts.html → db/inMemoryView.js.html} +29 -47
- package/coverage/lcov-report/{src/db → db}/index.html +33 -48
- package/coverage/lcov-report/{src/api/routes/integration.ts.html → db/index.js.html} +33 -33
- package/coverage/lcov-report/{src/db/linkedRows/LinkController.ts.html → db/linkedRows/LinkController.js.html} +160 -97
- package/coverage/lcov-report/db/linkedRows/index.html +146 -0
- package/coverage/lcov-report/{src/db/linkedRows/index.ts.html → db/linkedRows/index.js.html} +78 -93
- package/coverage/lcov-report/{src/db/linkedRows/linkUtils.ts.html → db/linkedRows/linkUtils.js.html} +56 -83
- package/coverage/lcov-report/{src/db/newid.ts.html → db/newid.js.html} +14 -14
- package/coverage/lcov-report/{src/db/utils.ts.html → db/utils.js.html} +211 -163
- package/coverage/lcov-report/{src/events/AutomationEmitter.ts.html → events/AutomationEmitter.js.html} +25 -40
- package/coverage/lcov-report/{src/events → events}/index.html +33 -48
- package/coverage/lcov-report/{src/events/BudibaseEmitter.ts.html → events/index.js.html} +29 -26
- package/coverage/lcov-report/{src/api/routes/dev.ts.html → events/utils.js.html} +69 -69
- package/coverage/lcov-report/index.html +184 -679
- package/coverage/lcov-report/{src/integrations → integrations}/tests/TestConfiguration.js.html +10 -10
- package/coverage/lcov-report/{src/integrations → integrations}/tests/index.html +10 -10
- package/coverage/lcov-report/{src/middleware/appInfo.ts.html → middleware/appInfo.js.html} +30 -33
- package/coverage/lcov-report/{src/middleware/builder.ts.html → middleware/builder.js.html} +40 -46
- package/coverage/lcov-report/{src/middleware/currentapp.ts.html → middleware/currentapp.js.html} +72 -81
- package/coverage/lcov-report/{src/middleware → middleware}/index.html +63 -78
- package/coverage/lcov-report/{src/middleware/joi-validator.ts.html → middleware/joi-validator.js.html} +22 -25
- package/coverage/lcov-report/{src/middleware/publicApi.ts.html → middleware/publicApi.js.html} +27 -27
- package/coverage/lcov-report/{src/middleware/resourceId.ts.html → middleware/resourceId.js.html} +45 -60
- package/coverage/lcov-report/{src/tests/utilities/index.ts.html → middleware/selfhost.js.html} +30 -33
- package/coverage/lcov-report/{src/events/index.ts.html → middleware/utils.js.html} +24 -18
- package/coverage/lcov-report/{src/utilities/budibaseDir.ts.html → utilities/budibaseDir.js.html} +14 -14
- package/coverage/lcov-report/{src/utilities/centralPath.ts.html → utilities/centralPath.js.html} +16 -16
- package/coverage/lcov-report/{src/utilities/csvParser.ts.html → utilities/csvParser.js.html} +59 -107
- package/coverage/lcov-report/{src/utilities/global.ts.html → utilities/global.js.html} +82 -115
- package/coverage/lcov-report/{src/utilities → utilities}/index.html +77 -92
- package/coverage/lcov-report/{src/utilities/index.ts.html → utilities/index.js.html} +74 -98
- package/coverage/lcov-report/{src/utilities/plugins.ts.html → utilities/plugins.js.html} +22 -25
- package/coverage/lcov-report/{src/integrations/airtable.ts.html → utilities/queue/inMemoryQueue.js.html} +135 -213
- package/coverage/lcov-report/{src/migrations → utilities/queue}/index.html +23 -23
- package/coverage/lcov-report/{src/sdk → utilities/routing}/index.html +10 -10
- package/coverage/lcov-report/{src/api/controllers/public/mapping/tables.ts.html → utilities/routing/index.js.html} +43 -46
- package/coverage/lcov-report/{src/definitions → utilities/rowProcessor}/index.html +34 -34
- package/coverage/lcov-report/{src/utilities/rowProcessor/index.ts.html → utilities/rowProcessor/index.js.html} +359 -128
- package/coverage/lcov-report/{src/utilities/rowProcessor/utils.ts.html → utilities/rowProcessor/utils.js.html} +42 -54
- package/coverage/lcov-report/{src/utilities/scriptRunner.ts.html → utilities/scriptRunner.js.html} +19 -31
- package/coverage/lcov-report/{src/utilities/security.ts.html → utilities/security.js.html} +78 -60
- package/coverage/lcov-report/{src/utilities/statusCodes.ts.html → utilities/statusCodes.js.html} +11 -11
- package/coverage/lcov-report/{src/utilities → utilities}/usageQuota/index.html +28 -28
- package/coverage/lcov-report/{src/utilities/usageQuota/rows.ts.html → utilities/usageQuota/rows.js.html} +48 -36
- package/coverage/lcov-report/{src/utilities/usageQuota/usageQuoteReset.ts.html → utilities/usageQuota/usageQuoteReset.js.html} +13 -13
- package/coverage/lcov-report/{src/utilities/users.ts.html → utilities/users.js.html} +40 -34
- package/coverage/lcov-report/{src/utilities/workerRequests.ts.html → utilities/workerRequests.js.html} +112 -127
- package/coverage/lcov.info +7069 -19757
- package/dist/api/controllers/apikeys.js +9 -12
- package/dist/api/controllers/application.js +45 -48
- package/dist/api/controllers/automation.js +82 -122
- package/dist/api/controllers/cloud.js +71 -84
- package/dist/api/controllers/component.js +2 -4
- package/dist/api/controllers/datasource.js +94 -151
- package/dist/api/controllers/deploy/Deployment.js +6 -10
- package/dist/api/controllers/deploy/index.js +16 -13
- package/dist/api/controllers/dev.js +81 -96
- package/dist/api/controllers/integration.js +8 -11
- package/dist/api/controllers/layout.js +15 -18
- package/dist/api/controllers/metadata.js +37 -51
- package/dist/api/controllers/migrations.js +11 -19
- package/dist/api/controllers/permission.js +43 -52
- package/dist/api/controllers/plugin/index.js +7 -6
- package/dist/api/controllers/plugin/utils.js +1 -2
- package/dist/api/controllers/public/applications.js +9 -17
- package/dist/api/controllers/public/tables.js +9 -29
- package/dist/api/controllers/public/utils.js +2 -2
- package/dist/api/controllers/query/import/index.js +2 -1
- package/dist/api/controllers/query/index.js +13 -10
- package/dist/api/controllers/query/validation.js +33 -41
- package/dist/api/controllers/role.js +27 -29
- package/dist/api/controllers/routing.js +58 -71
- package/dist/api/controllers/row/ExternalRequest.js +542 -539
- package/dist/api/controllers/row/external.js +190 -258
- package/dist/api/controllers/row/index.js +14 -43
- package/dist/api/controllers/row/internal.js +295 -354
- package/dist/api/controllers/row/internalSearch.js +80 -95
- package/dist/api/controllers/row/staticFormula.js +112 -125
- package/dist/api/controllers/row/utils.js +84 -122
- package/dist/api/controllers/screen.js +66 -81
- package/dist/api/controllers/script.js +6 -13
- package/dist/api/controllers/static/index.js +14 -11
- package/dist/api/controllers/table/bulkFormula.js +35 -47
- package/dist/api/controllers/table/external.js +53 -89
- package/dist/api/controllers/table/index.js +31 -64
- package/dist/api/controllers/table/internal.js +6 -5
- package/dist/api/controllers/table/utils.js +35 -39
- package/dist/api/controllers/templates.js +10 -17
- package/dist/api/controllers/user.js +70 -82
- package/dist/api/controllers/view/exporters.js +4 -8
- package/dist/api/controllers/view/index.js +153 -201
- package/dist/api/controllers/view/utils.js +121 -151
- package/dist/api/controllers/view/viewBuilder.js +16 -4
- package/dist/api/controllers/webhook.js +2 -25
- package/dist/api/index.js +34 -38
- package/dist/api/routes/analytics.js +3 -29
- package/dist/api/routes/apikeys.js +7 -33
- package/dist/api/routes/application.js +9 -8
- package/dist/api/routes/auth.js +2 -1
- package/dist/api/routes/automation.js +20 -46
- package/dist/api/routes/backup.js +4 -3
- package/dist/api/routes/cloud.js +6 -32
- package/dist/api/routes/component.js +6 -32
- package/dist/api/routes/datasource.js +13 -39
- package/dist/api/routes/deploy.js +8 -34
- package/dist/api/routes/dev.js +10 -36
- package/dist/api/routes/integration.js +7 -33
- package/dist/api/routes/layout.js +7 -33
- package/dist/api/routes/metadata.js +10 -36
- package/dist/api/routes/migrations.js +6 -32
- package/dist/api/routes/permission.js +12 -38
- package/dist/api/routes/plugin.js +5 -5
- package/dist/api/routes/public/index.js +11 -11
- package/dist/api/routes/query.js +15 -42
- package/dist/api/routes/role.js +10 -36
- package/dist/api/routes/routing.js +6 -32
- package/dist/api/routes/row.js +11 -12
- package/dist/api/routes/screen.js +9 -35
- package/dist/api/routes/script.js +6 -32
- package/dist/api/routes/static.js +9 -9
- package/dist/api/routes/table.js +13 -40
- package/dist/api/routes/templates.js +7 -33
- package/dist/api/routes/tests/utilities/TestFunctions.js +8 -6
- package/dist/api/routes/tests/utilities/index.js +32 -69
- package/dist/api/routes/user.js +13 -40
- package/dist/api/routes/utils/validators.js +126 -142
- package/dist/api/routes/view.js +12 -38
- package/dist/api/routes/webhook.js +2 -1
- package/dist/app.js +22 -22
- package/dist/automations/actions.js +24 -53
- package/dist/automations/automationUtils.js +19 -31
- package/dist/automations/bullboard.js +29 -59
- package/dist/automations/index.js +18 -23
- package/dist/automations/steps/bash.js +10 -40
- package/dist/automations/steps/createRow.js +1 -2
- package/dist/automations/steps/delay.js +5 -9
- package/dist/automations/steps/deleteRow.js +1 -2
- package/dist/automations/steps/discord.js +7 -14
- package/dist/automations/steps/executeQuery.js +7 -34
- package/dist/automations/steps/executeScript.js +7 -34
- package/dist/automations/steps/filter.js +18 -20
- package/dist/automations/steps/integromat.js +7 -14
- package/dist/automations/steps/loop.js +1 -4
- package/dist/automations/steps/outgoingWebhook.js +14 -45
- package/dist/automations/steps/queryRows.js +38 -71
- package/dist/automations/steps/sendSmtpEmail.js +6 -33
- package/dist/automations/steps/serverLog.js +8 -12
- package/dist/automations/steps/slack.js +7 -14
- package/dist/automations/steps/updateRow.js +7 -34
- package/dist/automations/steps/utils.js +16 -22
- package/dist/automations/steps/zapier.js +7 -15
- package/dist/automations/tests/utilities/index.js +38 -62
- package/dist/automations/triggerInfo/app.js +1 -4
- package/dist/automations/triggerInfo/cron.js +1 -4
- package/dist/automations/triggerInfo/index.js +6 -31
- package/dist/automations/triggerInfo/rowDeleted.js +1 -4
- package/dist/automations/triggerInfo/rowSaved.js +1 -4
- package/dist/automations/triggerInfo/rowUpdated.js +1 -4
- package/dist/automations/triggerInfo/webhook.js +1 -4
- package/dist/automations/triggers.js +57 -90
- package/dist/automations/utils.js +8 -9
- package/dist/constants/index.js +104 -118
- package/dist/constants/layouts.js +10 -7
- package/dist/constants/screens.js +44 -49
- package/dist/db/dynamoClient.js +20 -20
- package/dist/db/inMemoryView.js +38 -47
- package/dist/db/index.js +4 -7
- package/dist/db/linkedRows/LinkController.js +70 -51
- package/dist/db/linkedRows/index.js +81 -93
- package/dist/db/linkedRows/linkUtils.js +32 -42
- package/dist/db/utils.js +119 -146
- package/dist/db/views/staticViews.js +74 -91
- package/dist/environment.js +6 -9
- package/dist/events/AutomationEmitter.js +10 -13
- package/dist/events/index.js +23 -5
- package/dist/events/utils.js +10 -18
- package/dist/integrations/elasticsearch.js +2 -26
- package/dist/integrations/googlesheets.js +6 -5
- package/dist/integrations/index.js +6 -15
- package/dist/integrations/microsoftSqlServer.js +3 -8
- package/dist/integrations/oracle.js +1 -8
- package/dist/integrations/postgres.js +3 -6
- package/dist/integrations/s3.js +1 -157
- package/dist/integrations/tests/TestConfiguration.js +1 -0
- package/dist/middleware/appInfo.js +9 -14
- package/dist/middleware/authorized.js +21 -22
- package/dist/middleware/builder.js +40 -41
- package/dist/middleware/currentapp.js +37 -39
- package/dist/middleware/joi-validator.js +10 -17
- package/dist/middleware/publicApi.js +6 -5
- package/dist/middleware/resourceId.js +9 -16
- package/dist/middleware/selfhost.js +4 -5
- package/dist/middleware/utils.js +2 -5
- package/dist/migrations/functions/appUrls.js +2 -2
- package/dist/migrations/functions/backfill/global.js +1 -1
- package/dist/migrations/functions/usageQuotas/syncApps.js +4 -3
- package/dist/migrations/functions/usageQuotas/syncRows.js +4 -3
- package/dist/migrations/functions/userEmailViewCasing.js +3 -3
- package/dist/migrations/index.js +0 -5
- package/dist/package.json +45 -11
- package/dist/sdk/app/backups/exports.js +2 -1
- package/dist/sdk/app/backups/imports.js +3 -2
- package/dist/sdk/app/tables/index.js +5 -5
- package/dist/startup.js +10 -10
- package/dist/tests/utilities/TestConfiguration.js +87 -111
- package/dist/tests/utilities/controllers.js +15 -38
- package/dist/tests/utilities/structures.js +53 -72
- package/dist/threads/automation.js +27 -49
- package/dist/threads/query.js +19 -17
- package/dist/threads/utils.js +8 -33
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utilities/budibaseDir.js +2 -4
- package/dist/utilities/centralPath.js +7 -14
- package/dist/utilities/csvParser.js +21 -27
- package/dist/utilities/fileSystem/clientLibrary.js +73 -87
- package/dist/utilities/fileSystem/index.js +175 -203
- package/dist/utilities/fileSystem/processor.js +3 -8
- package/dist/utilities/fileSystem/utilities.js +22 -0
- package/dist/utilities/global.js +66 -87
- package/dist/utilities/index.js +75 -102
- package/dist/utilities/plugins.js +9 -15
- package/dist/utilities/queue/inMemoryQueue.js +126 -0
- package/dist/utilities/redis.js +65 -100
- package/dist/utilities/routing/index.js +23 -27
- package/dist/utilities/rowProcessor/index.js +191 -133
- package/dist/utilities/rowProcessor/utils.js +26 -35
- package/dist/utilities/scriptRunner.js +5 -8
- package/dist/utilities/security.js +35 -39
- package/dist/utilities/usageQuota/rows.js +49 -56
- package/dist/utilities/users.js +28 -31
- package/dist/utilities/workerRequests.js +82 -115
- package/dist/watch.js +2 -1
- package/package.json +46 -12
- package/scripts/exportAppTemplate.js +2 -2
- package/scripts/integrations/mssql/data/setup.sql +3 -3
- package/{src/tests/jestSetup.ts → scripts/jestSetup.js} +2 -11
- package/scripts/localdomain.js +6 -34
- package/src/api/controllers/{apikeys.ts → apikeys.js} +10 -10
- package/src/api/controllers/application.ts +42 -56
- package/src/api/controllers/auth.ts +3 -4
- package/src/api/controllers/{automation.ts → automation.js} +48 -48
- package/src/api/controllers/{cloud.ts → cloud.js} +24 -24
- package/src/api/controllers/component.ts +1 -2
- package/src/api/controllers/{datasource.ts → datasource.js} +49 -109
- package/src/api/controllers/deploy/{Deployment.ts → Deployment.js} +10 -13
- package/src/api/controllers/deploy/index.ts +25 -13
- package/src/api/controllers/{dev.ts → dev.js} +37 -31
- package/src/api/controllers/integration.js +14 -0
- package/src/api/controllers/{layout.ts → layout.js} +8 -8
- package/src/api/controllers/{metadata.ts → metadata.js} +10 -11
- package/src/api/controllers/migrations.js +13 -0
- package/src/api/controllers/{permission.ts → permission.js} +46 -49
- package/src/api/controllers/plugin/index.ts +5 -4
- package/src/api/controllers/plugin/utils.ts +5 -3
- package/src/api/controllers/public/applications.ts +9 -15
- package/src/api/controllers/public/rows.ts +1 -1
- package/src/api/controllers/public/tables.ts +2 -2
- package/src/api/controllers/public/utils.ts +2 -2
- package/src/api/controllers/query/import/index.ts +3 -2
- package/src/api/controllers/query/index.ts +14 -11
- package/src/api/controllers/query/{validation.ts → validation.js} +7 -7
- package/src/api/controllers/{role.ts → role.js} +25 -21
- package/src/api/controllers/{routing.ts → routing.js} +34 -37
- package/src/api/controllers/row/ExternalRequest.ts +624 -605
- package/src/api/controllers/row/{external.ts → external.js} +62 -79
- package/src/api/controllers/row/index.ts +11 -19
- package/src/api/controllers/row/{internal.ts → internal.js} +73 -87
- package/src/api/controllers/row/{internalSearch.ts → internalSearch.js} +68 -92
- package/src/api/controllers/row/{staticFormula.ts → staticFormula.js} +25 -30
- package/src/api/controllers/row/{utils.ts → utils.js} +22 -32
- package/src/api/controllers/screen.ts +6 -10
- package/src/api/controllers/script.js +11 -0
- package/src/api/controllers/static/index.ts +16 -14
- package/src/api/controllers/table/{bulkFormula.ts → bulkFormula.js} +25 -39
- package/src/api/controllers/table/{external.ts → external.js} +55 -86
- package/src/api/controllers/table/{index.ts → index.js} +18 -21
- package/src/api/controllers/table/internal.ts +6 -5
- package/src/api/controllers/table/utils.ts +21 -26
- package/src/api/controllers/{templates.ts → templates.js} +7 -10
- package/src/api/controllers/{user.ts → user.js} +49 -47
- package/src/api/controllers/view/{exporters.ts → exporters.js} +3 -5
- package/src/api/controllers/view/{index.ts → index.js} +27 -36
- package/src/api/controllers/view/{utils.ts → utils.js} +20 -26
- package/src/api/controllers/view/{viewBuilder.ts → viewBuilder.js} +11 -25
- package/src/api/controllers/webhook.ts +1 -1
- package/src/api/{index.ts → index.js} +22 -15
- package/src/api/routes/analytics.js +9 -0
- package/src/api/routes/apikeys.js +12 -0
- package/src/api/routes/application.ts +9 -17
- package/src/api/routes/auth.ts +2 -2
- package/src/api/routes/automation.js +85 -0
- package/src/api/routes/backup.ts +4 -8
- package/src/api/routes/cloud.js +14 -0
- package/src/api/routes/component.js +14 -0
- package/src/api/routes/datasource.js +51 -0
- package/src/api/routes/deploy.js +17 -0
- package/src/api/routes/dev.js +26 -0
- package/src/api/routes/integration.js +12 -0
- package/src/api/routes/layout.js +16 -0
- package/src/api/routes/{metadata.ts → metadata.js} +13 -13
- package/src/api/routes/migrations.js +14 -0
- package/src/api/routes/permission.js +33 -0
- package/src/api/routes/plugin.ts +6 -14
- package/src/api/routes/public/index.ts +14 -11
- package/src/api/routes/public/tests/compare.spec.js +1 -1
- package/src/api/routes/{query.ts → query.js} +22 -19
- package/src/api/routes/role.js +15 -0
- package/src/api/routes/routing.js +14 -0
- package/src/api/routes/row.ts +15 -13
- package/src/api/routes/screen.js +18 -0
- package/src/api/routes/script.js +10 -0
- package/src/api/routes/static.ts +10 -7
- package/src/api/routes/{table.ts → table.js} +13 -10
- package/src/api/routes/templates.js +16 -0
- package/src/api/routes/tests/analytics.spec.js +1 -1
- package/src/api/routes/tests/backup.spec.js +1 -9
- package/src/api/routes/tests/deployment.spec.ts +1 -1
- package/src/api/routes/tests/permissions.spec.js +1 -2
- package/src/api/routes/tests/query.spec.js +10 -15
- package/src/api/routes/tests/role.spec.js +9 -7
- package/src/api/routes/tests/routing.spec.js +1 -2
- package/src/api/routes/tests/row.spec.js +4 -3
- package/src/api/routes/tests/static.spec.js +2 -2
- package/src/api/routes/tests/table.spec.js +36 -40
- package/src/api/routes/tests/user.spec.js +1 -2
- package/src/api/routes/tests/utilities/TestFunctions.ts +8 -6
- package/src/api/routes/tests/utilities/{index.ts → index.js} +12 -12
- package/src/api/routes/tests/view.spec.js +3 -3
- package/src/api/routes/user.js +53 -0
- package/src/api/routes/utils/{validators.ts → validators.js} +37 -33
- package/src/api/routes/view.js +31 -0
- package/src/api/routes/webhook.ts +2 -2
- package/src/app.ts +14 -15
- package/src/automations/{actions.ts → actions.js} +23 -26
- package/src/automations/{automationUtils.ts → automationUtils.js} +12 -13
- package/src/automations/bullboard.js +39 -0
- package/src/automations/index.js +29 -0
- package/src/automations/steps/{bash.ts → bash.js} +8 -13
- package/src/automations/steps/createRow.ts +3 -8
- package/src/automations/steps/{delay.ts → delay.js} +4 -9
- package/src/automations/steps/deleteRow.ts +3 -8
- package/src/automations/steps/{discord.ts → discord.js} +5 -10
- package/src/automations/steps/{executeQuery.ts → executeQuery.js} +7 -12
- package/src/automations/steps/{executeScript.ts → executeScript.js} +7 -17
- package/src/automations/steps/{filter.ts → filter.js} +9 -12
- package/src/automations/steps/{integromat.ts → integromat.js} +5 -10
- package/src/automations/steps/{loop.ts → loop.js} +2 -4
- package/src/automations/steps/{outgoingWebhook.ts → outgoingWebhook.js} +13 -18
- package/src/automations/steps/{queryRows.ts → queryRows.js} +36 -48
- package/src/automations/steps/{sendSmtpEmail.ts → sendSmtpEmail.js} +5 -10
- package/src/automations/steps/{serverLog.ts → serverLog.js} +3 -9
- package/src/automations/steps/{slack.ts → slack.js} +5 -10
- package/src/automations/steps/{updateRow.ts → updateRow.js} +7 -12
- package/src/automations/steps/{utils.ts → utils.js} +4 -10
- package/src/automations/steps/{zapier.ts → zapier.js} +5 -11
- package/src/automations/tests/updateRow.spec.js +1 -0
- package/src/automations/tests/utilities/index.js +51 -0
- package/src/automations/triggerInfo/{app.ts → app.js} +2 -7
- package/src/automations/triggerInfo/{cron.ts → cron.js} +2 -7
- package/src/automations/triggerInfo/index.js +15 -0
- package/src/automations/triggerInfo/{rowDeleted.ts → rowDeleted.js} +2 -7
- package/src/automations/triggerInfo/{rowSaved.ts → rowSaved.js} +2 -7
- package/src/automations/triggerInfo/{rowUpdated.ts → rowUpdated.js} +2 -7
- package/src/automations/triggerInfo/{webhook.ts → webhook.js} +2 -7
- package/src/automations/{triggers.ts → triggers.js} +26 -30
- package/src/automations/utils.ts +12 -9
- package/src/constants/index.js +208 -0
- package/src/constants/{layouts.ts → layouts.js} +9 -3
- package/src/constants/screens.js +46 -0
- package/src/db/{dynamoClient.ts → dynamoClient.js} +19 -39
- package/src/db/{inMemoryView.ts → inMemoryView.js} +9 -15
- package/src/db/index.js +16 -0
- package/src/db/linkedRows/{LinkController.ts → LinkController.js} +85 -64
- package/src/db/linkedRows/{index.ts → index.js} +38 -43
- package/src/db/linkedRows/{linkUtils.ts → linkUtils.js} +24 -33
- package/src/db/{newid.ts → newid.js} +1 -1
- package/src/db/tests/linkController.spec.js +57 -73
- package/src/db/tests/linkTests.spec.js +14 -17
- package/src/db/{utils.ts → utils.js} +93 -77
- package/src/db/views/{staticViews.ts → staticViews.js} +13 -20
- package/src/{environment.ts → environment.js} +7 -11
- package/src/events/{AutomationEmitter.ts → AutomationEmitter.js} +7 -12
- package/src/events/{BudibaseEmitter.ts → index.js} +8 -7
- package/src/events/utils.js +38 -0
- package/src/integrations/base/sql.ts +1 -1
- package/src/integrations/base/sqlTable.ts +1 -1
- package/src/integrations/elasticsearch.ts +2 -32
- package/src/integrations/googlesheets.ts +7 -5
- package/src/integrations/index.ts +41 -45
- package/src/integrations/microsoftSqlServer.ts +12 -14
- package/src/integrations/mysql.ts +3 -4
- package/src/integrations/oracle.ts +46 -17
- package/src/integrations/postgres.ts +2 -8
- package/src/integrations/s3.ts +3 -179
- package/src/integrations/tests/s3.spec.ts +1 -85
- package/src/integrations/utils.ts +2 -6
- package/src/middleware/appInfo.js +19 -0
- package/src/middleware/authorized.ts +28 -21
- package/src/middleware/{builder.ts → builder.js} +15 -17
- package/src/middleware/{currentapp.ts → currentapp.js} +39 -42
- package/src/middleware/{joi-validator.ts → joi-validator.js} +8 -9
- package/src/middleware/publicApi.js +21 -0
- package/src/middleware/{resourceId.ts → resourceId.js} +11 -16
- package/src/middleware/{selfhost.ts → selfhost.js} +2 -4
- package/src/middleware/tests/authorized.spec.js +6 -5
- package/src/middleware/tests/currentapp.spec.js +63 -118
- package/src/middleware/{utils.ts → utils.js} +1 -3
- package/src/migrations/functions/appUrls.ts +2 -2
- package/src/migrations/functions/backfill/app/tables.ts +5 -2
- package/src/migrations/functions/backfill/global.ts +1 -1
- package/src/migrations/functions/tests/appUrls.spec.js +4 -4
- package/src/migrations/functions/tests/userEmailViewCasing.spec.js +9 -14
- package/src/migrations/functions/usageQuotas/syncApps.ts +4 -3
- package/src/migrations/functions/usageQuotas/syncRows.ts +5 -4
- package/src/migrations/functions/usageQuotas/tests/syncRows.spec.ts +7 -7
- package/src/migrations/functions/userEmailViewCasing.ts +3 -3
- package/src/migrations/index.ts +0 -9
- package/src/migrations/tests/index.spec.ts +1 -1
- package/src/module.d.ts +14 -0
- package/src/sdk/app/backups/exports.ts +3 -5
- package/src/sdk/app/backups/imports.ts +14 -7
- package/src/sdk/app/backups/statistics.ts +18 -9
- package/src/sdk/app/tables/index.ts +8 -7
- package/src/startup.ts +5 -5
- package/src/tests/utilities/{TestConfiguration.ts → TestConfiguration.js} +78 -111
- package/src/tests/utilities/controllers.js +16 -0
- package/src/tests/utilities/{index.ts → index.js} +2 -2
- package/src/tests/utilities/{structures.ts → structures.js} +36 -41
- package/src/threads/automation.ts +19 -18
- package/src/threads/query.ts +16 -11
- package/src/threads/utils.ts +5 -4
- package/src/utilities/budibaseDir.js +3 -0
- package/src/utilities/{centralPath.ts → centralPath.js} +3 -3
- package/src/utilities/{csvParser.ts → csvParser.js} +26 -42
- package/src/utilities/fileSystem/{clientLibrary.ts → clientLibrary.js} +20 -20
- package/src/utilities/fileSystem/{index.ts → index.js} +65 -61
- package/src/utilities/fileSystem/{processor.ts → processor.js} +5 -3
- package/src/utilities/fileSystem/utilities.js +36 -0
- package/src/utilities/global.js +127 -0
- package/src/utilities/{index.ts → index.js} +32 -40
- package/src/utilities/{plugins.ts → plugins.js} +4 -5
- package/src/utilities/queue/inMemoryQueue.js +122 -0
- package/src/utilities/{redis.ts → redis.js} +20 -21
- package/src/utilities/routing/index.js +25 -0
- package/src/utilities/rowProcessor/{index.ts → index.js} +144 -67
- package/src/utilities/rowProcessor/{utils.ts → utils.js} +15 -19
- package/src/utilities/{scriptRunner.ts → scriptRunner.js} +4 -8
- package/src/utilities/security.js +71 -0
- package/src/utilities/{statusCodes.ts → statusCodes.js} +1 -1
- package/src/utilities/usageQuota/{rows.ts → rows.js} +18 -14
- package/src/utilities/usageQuota/{usageQuoteReset.ts → usageQuoteReset.js} +1 -1
- package/src/utilities/{users.ts → users.js} +13 -11
- package/src/utilities/{workerRequests.ts → workerRequests.js} +38 -43
- package/src/watch.ts +3 -2
- package/tsconfig.build.json +2 -1
- package/tsconfig.json +1 -3
- package/builder/assets/index.0c44dac3.css +0 -6
- package/builder/assets/index.e19dcc8e.js +0 -1021
- package/coverage/lcov-report/src/api/controllers/analytics.ts.html +0 -190
- package/coverage/lcov-report/src/api/controllers/application.ts.html +0 -2038
- package/coverage/lcov-report/src/api/controllers/auth.ts.html +0 -301
- package/coverage/lcov-report/src/api/controllers/backup.ts.html +0 -148
- package/coverage/lcov-report/src/api/controllers/component.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/deploy/Deployment.ts.html +0 -259
- package/coverage/lcov-report/src/api/controllers/deploy/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/deploy/index.ts.html +0 -730
- package/coverage/lcov-report/src/api/controllers/index.html +0 -431
- package/coverage/lcov-report/src/api/controllers/integration.ts.html +0 -124
- package/coverage/lcov-report/src/api/controllers/plugin/file.ts.html +0 -130
- package/coverage/lcov-report/src/api/controllers/plugin/github.ts.html +0 -310
- package/coverage/lcov-report/src/api/controllers/plugin/index.html +0 -206
- package/coverage/lcov-report/src/api/controllers/plugin/index.ts.html +0 -484
- package/coverage/lcov-report/src/api/controllers/plugin/npm.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/plugin/uploaders.ts.html +0 -97
- package/coverage/lcov-report/src/api/controllers/plugin/url.ts.html +0 -121
- package/coverage/lcov-report/src/api/controllers/plugin/utils.ts.html +0 -136
- package/coverage/lcov-report/src/api/controllers/public/applications.ts.html +0 -334
- package/coverage/lcov-report/src/api/controllers/public/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/applications.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.html +0 -191
- package/coverage/lcov-report/src/api/controllers/public/mapping/index.ts.html +0 -124
- package/coverage/lcov-report/src/api/controllers/public/mapping/queries.ts.html +0 -202
- package/coverage/lcov-report/src/api/controllers/public/mapping/rows.ts.html +0 -178
- package/coverage/lcov-report/src/api/controllers/public/mapping/users.ts.html +0 -181
- package/coverage/lcov-report/src/api/controllers/public/queries.ts.html +0 -145
- package/coverage/lcov-report/src/api/controllers/public/rows.ts.html +0 -328
- package/coverage/lcov-report/src/api/controllers/public/tables.ts.html +0 -253
- package/coverage/lcov-report/src/api/controllers/public/users.ts.html +0 -268
- package/coverage/lcov-report/src/api/controllers/public/utils.ts.html +0 -220
- package/coverage/lcov-report/src/api/controllers/query/import/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/query/import/index.ts.html +0 -373
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/index.ts.html +0 -379
- package/coverage/lcov-report/src/api/controllers/query/import/sources/base/openapi.ts.html +0 -157
- package/coverage/lcov-report/src/api/controllers/query/import/sources/curl.ts.html +0 -403
- package/coverage/lcov-report/src/api/controllers/query/import/sources/index.html +0 -146
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi2.ts.html +0 -586
- package/coverage/lcov-report/src/api/controllers/query/import/sources/openapi3.ts.html +0 -712
- package/coverage/lcov-report/src/api/controllers/query/index.html +0 -131
- package/coverage/lcov-report/src/api/controllers/query/index.ts.html +0 -976
- package/coverage/lcov-report/src/api/controllers/row/ExternalRequest.ts.html +0 -2269
- package/coverage/lcov-report/src/api/controllers/row/index.ts.html +0 -541
- package/coverage/lcov-report/src/api/controllers/screen.ts.html +0 -463
- package/coverage/lcov-report/src/api/controllers/static/index.html +0 -116
- package/coverage/lcov-report/src/api/controllers/static/index.ts.html +0 -694
- package/coverage/lcov-report/src/api/controllers/table/index.html +0 -176
- package/coverage/lcov-report/src/api/controllers/table/internal.ts.html +0 -661
- package/coverage/lcov-report/src/api/controllers/table/utils.ts.html +0 -1255
- package/coverage/lcov-report/src/api/controllers/webhook.ts.html +0 -379
- package/coverage/lcov-report/src/api/routes/analytics.ts.html +0 -112
- package/coverage/lcov-report/src/api/routes/apikeys.ts.html +0 -121
- package/coverage/lcov-report/src/api/routes/application.ts.html +0 -223
- package/coverage/lcov-report/src/api/routes/auth.ts.html +0 -109
- package/coverage/lcov-report/src/api/routes/datasource.ts.html +0 -265
- package/coverage/lcov-report/src/api/routes/deploy.ts.html +0 -148
- package/coverage/lcov-report/src/api/routes/index.ts.html +0 -289
- package/coverage/lcov-report/src/api/routes/migrations.ts.html +0 -127
- package/coverage/lcov-report/src/api/routes/plugin.ts.html +0 -151
- package/coverage/lcov-report/src/api/routes/public/applications.ts.html +0 -541
- package/coverage/lcov-report/src/api/routes/public/index.html +0 -191
- package/coverage/lcov-report/src/api/routes/public/index.ts.html +0 -493
- package/coverage/lcov-report/src/api/routes/public/middleware/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/public/middleware/mapper.ts.html +0 -328
- package/coverage/lcov-report/src/api/routes/public/queries.ts.html +0 -313
- package/coverage/lcov-report/src/api/routes/public/rows.ts.html +0 -598
- package/coverage/lcov-report/src/api/routes/public/tables.ts.html +0 -586
- package/coverage/lcov-report/src/api/routes/public/users.ts.html +0 -511
- package/coverage/lcov-report/src/api/routes/public/utils/Endpoint.ts.html +0 -238
- package/coverage/lcov-report/src/api/routes/public/utils/index.html +0 -116
- package/coverage/lcov-report/src/api/routes/role.ts.html +0 -157
- package/coverage/lcov-report/src/api/routes/row.ts.html +0 -883
- package/coverage/lcov-report/src/api/routes/screen.ts.html +0 -154
- package/coverage/lcov-report/src/api/routes/static.ts.html +0 -280
- package/coverage/lcov-report/src/api/routes/tests/utilities/TestFunctions.ts.html +0 -550
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.html +0 -131
- package/coverage/lcov-report/src/api/routes/tests/utilities/index.ts.html +0 -367
- package/coverage/lcov-report/src/api/routes/webhook.ts.html +0 -166
- package/coverage/lcov-report/src/app.ts.html +0 -406
- package/coverage/lcov-report/src/automations/logging/index.html +0 -116
- package/coverage/lcov-report/src/automations/logging/index.ts.html +0 -199
- package/coverage/lcov-report/src/automations/steps/createRow.ts.html +0 -382
- package/coverage/lcov-report/src/automations/steps/deleteRow.ts.html +0 -349
- package/coverage/lcov-report/src/automations/steps/index.html +0 -371
- package/coverage/lcov-report/src/automations/tests/utilities/index.html +0 -116
- package/coverage/lcov-report/src/automations/tests/utilities/index.ts.html +0 -265
- package/coverage/lcov-report/src/automations/triggerInfo/app.ts.html +0 -196
- package/coverage/lcov-report/src/automations/triggerInfo/index.ts.html +0 -130
- package/coverage/lcov-report/src/automations/utils.ts.html +0 -886
- package/coverage/lcov-report/src/constants/index.ts.html +0 -697
- package/coverage/lcov-report/src/db/defaultData/datasource_bb_default.ts.html +0 -2059
- package/coverage/lcov-report/src/db/defaultData/employeeImport.ts.html +0 -541
- package/coverage/lcov-report/src/db/defaultData/expensesImport.ts.html +0 -427
- package/coverage/lcov-report/src/db/defaultData/index.html +0 -176
- package/coverage/lcov-report/src/db/defaultData/inventoryImport.ts.html +0 -403
- package/coverage/lcov-report/src/db/defaultData/jobsImport.ts.html +0 -559
- package/coverage/lcov-report/src/db/dynamoClient.ts.html +0 -526
- package/coverage/lcov-report/src/db/linkedRows/LinkDocument.ts.html +0 -265
- package/coverage/lcov-report/src/db/linkedRows/index.html +0 -161
- package/coverage/lcov-report/src/environment.ts.html +0 -457
- package/coverage/lcov-report/src/events/utils.ts.html +0 -319
- package/coverage/lcov-report/src/index.html +0 -191
- package/coverage/lcov-report/src/index.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/arangodb.ts.html +0 -415
- package/coverage/lcov-report/src/integrations/base/index.html +0 -161
- package/coverage/lcov-report/src/integrations/base/query.ts.html +0 -133
- package/coverage/lcov-report/src/integrations/base/sql.ts.html +0 -1951
- package/coverage/lcov-report/src/integrations/base/sqlTable.ts.html +0 -691
- package/coverage/lcov-report/src/integrations/base/utils.ts.html +0 -121
- package/coverage/lcov-report/src/integrations/couchdb.ts.html +0 -406
- package/coverage/lcov-report/src/integrations/elasticsearch.ts.html +0 -634
- package/coverage/lcov-report/src/integrations/firebase.ts.html +0 -646
- package/coverage/lcov-report/src/integrations/googlesheets.ts.html +0 -1315
- package/coverage/lcov-report/src/integrations/index.html +0 -371
- package/coverage/lcov-report/src/integrations/index.ts.html +0 -445
- package/coverage/lcov-report/src/integrations/microsoftSqlServer.ts.html +0 -1012
- package/coverage/lcov-report/src/integrations/mongodb.ts.html +0 -1867
- package/coverage/lcov-report/src/integrations/mysql.ts.html +0 -967
- package/coverage/lcov-report/src/integrations/oracle.ts.html +0 -1387
- package/coverage/lcov-report/src/integrations/postgres.ts.html +0 -1087
- package/coverage/lcov-report/src/integrations/queries/index.html +0 -116
- package/coverage/lcov-report/src/integrations/queries/sql.ts.html +0 -463
- package/coverage/lcov-report/src/integrations/redis.ts.html +0 -550
- package/coverage/lcov-report/src/integrations/rest.ts.html +0 -1381
- package/coverage/lcov-report/src/integrations/s3.ts.html +0 -862
- package/coverage/lcov-report/src/integrations/snowflake.ts.html +0 -376
- package/coverage/lcov-report/src/integrations/utils.ts.html +0 -1018
- package/coverage/lcov-report/src/middleware/authorized.ts.html +0 -460
- package/coverage/lcov-report/src/migrations/functions/appUrls.ts.html +0 -187
- package/coverage/lcov-report/src/migrations/functions/backfill/app/automations.ts.html +0 -163
- package/coverage/lcov-report/src/migrations/functions/backfill/app/datasources.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/index.html +0 -206
- package/coverage/lcov-report/src/migrations/functions/backfill/app/layouts.ts.html +0 -172
- package/coverage/lcov-report/src/migrations/functions/backfill/app/queries.ts.html +0 -226
- package/coverage/lcov-report/src/migrations/functions/backfill/app/roles.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/screens.ts.html +0 -151
- package/coverage/lcov-report/src/migrations/functions/backfill/app/tables.ts.html +0 -166
- package/coverage/lcov-report/src/migrations/functions/backfill/app.ts.html +0 -532
- package/coverage/lcov-report/src/migrations/functions/backfill/global/configs.ts.html +0 -283
- package/coverage/lcov-report/src/migrations/functions/backfill/global/index.html +0 -146
- package/coverage/lcov-report/src/migrations/functions/backfill/global/quotas.ts.html +0 -265
- package/coverage/lcov-report/src/migrations/functions/backfill/global/users.ts.html +0 -232
- package/coverage/lcov-report/src/migrations/functions/backfill/global.ts.html +0 -724
- package/coverage/lcov-report/src/migrations/functions/backfill/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/backfill/index.ts.html +0 -106
- package/coverage/lcov-report/src/migrations/functions/backfill/installation.ts.html +0 -235
- package/coverage/lcov-report/src/migrations/functions/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/syncQuotas.ts.html +0 -130
- package/coverage/lcov-report/src/migrations/functions/tableSettings.ts.html +0 -520
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.html +0 -161
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/index.ts.html +0 -94
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncApps.ts.html +0 -127
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncPlugins.ts.html +0 -115
- package/coverage/lcov-report/src/migrations/functions/usageQuotas/syncRows.ts.html +0 -169
- package/coverage/lcov-report/src/migrations/functions/userEmailViewCasing.ts.html +0 -124
- package/coverage/lcov-report/src/migrations/index.ts.html +0 -430
- package/coverage/lcov-report/src/migrations/tests/helpers.ts.html +0 -205
- package/coverage/lcov-report/src/migrations/tests/index.html +0 -131
- package/coverage/lcov-report/src/migrations/tests/structures.ts.html +0 -283
- package/coverage/lcov-report/src/sdk/app/automations/index.html +0 -131
- package/coverage/lcov-report/src/sdk/app/automations/index.ts.html +0 -100
- package/coverage/lcov-report/src/sdk/app/automations/webhook.ts.html +0 -214
- package/coverage/lcov-report/src/sdk/app/backups/constants.ts.html +0 -91
- package/coverage/lcov-report/src/sdk/app/backups/exports.ts.html +0 -604
- package/coverage/lcov-report/src/sdk/app/backups/imports.ts.html +0 -682
- package/coverage/lcov-report/src/sdk/app/backups/index.html +0 -176
- package/coverage/lcov-report/src/sdk/app/backups/index.ts.html +0 -112
- package/coverage/lcov-report/src/sdk/app/backups/statistics.ts.html +0 -292
- package/coverage/lcov-report/src/sdk/app/tables/index.html +0 -116
- package/coverage/lcov-report/src/sdk/app/tables/index.ts.html +0 -265
- package/coverage/lcov-report/src/startup.ts.html +0 -499
- package/coverage/lcov-report/src/tests/utilities/TestConfiguration.ts.html +0 -1966
- package/coverage/lcov-report/src/tests/utilities/controllers.ts.html +0 -127
- package/coverage/lcov-report/src/tests/utilities/index.html +0 -161
- package/coverage/lcov-report/src/tests/utilities/structures.ts.html +0 -667
- package/coverage/lcov-report/src/threads/automation.ts.html +0 -1594
- package/coverage/lcov-report/src/threads/index.html +0 -161
- package/coverage/lcov-report/src/threads/index.ts.html +0 -418
- package/coverage/lcov-report/src/threads/query.ts.html +0 -961
- package/coverage/lcov-report/src/threads/utils.ts.html +0 -373
- package/coverage/lcov-report/src/utilities/fileSystem/clientLibrary.ts.html +0 -547
- package/coverage/lcov-report/src/utilities/fileSystem/index.ts.html +0 -1129
- package/coverage/lcov-report/src/utilities/fileSystem/processor.ts.html +0 -142
- package/coverage/lcov-report/src/utilities/redis.ts.html +0 -343
- package/coverage/lcov-report/src/utilities/routing/index.ts.html +0 -181
- package/coverage/lcov-report/src/utilities/rowProcessor/index.html +0 -146
- package/coverage/lcov-report/src/utilities/rowProcessor/map.ts.html +0 -373
- package/coverage/lcov-report/src/watch.ts.html +0 -196
- package/dist/db/defaultData/datasource_bb_default.js +0 -573
- 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/linkedRows/LinkDocument.js +0 -32
- package/dist/events/BudibaseEmitter.js +0 -24
- package/dist/integrations/base/types.js +0 -2
- package/dist/migrations/functions/tableSettings.js +0 -130
- package/dist/utilities/rowProcessor/map.js +0 -99
- package/jest.config.ts +0 -33
- package/scripts/integrations/postgres/emp-skill.sql +0 -46
- package/src/api/controllers/integration.ts +0 -13
- package/src/api/controllers/migrations.ts +0 -14
- package/src/api/controllers/script.ts +0 -12
- package/src/api/routes/analytics.ts +0 -9
- package/src/api/routes/apikeys.ts +0 -12
- package/src/api/routes/automation.ts +0 -87
- package/src/api/routes/cloud.ts +0 -18
- package/src/api/routes/component.ts +0 -14
- package/src/api/routes/datasource.ts +0 -60
- package/src/api/routes/deploy.ts +0 -21
- package/src/api/routes/dev.ts +0 -38
- package/src/api/routes/integration.ts +0 -16
- package/src/api/routes/layout.ts +0 -16
- package/src/api/routes/migrations.ts +0 -14
- package/src/api/routes/permission.ts +0 -41
- package/src/api/routes/role.ts +0 -24
- package/src/api/routes/routing.ts +0 -14
- package/src/api/routes/screen.ts +0 -23
- package/src/api/routes/script.ts +0 -10
- package/src/api/routes/templates.ts +0 -16
- package/src/api/routes/user.ts +0 -51
- package/src/api/routes/view.ts +0 -34
- package/src/automations/bullboard.ts +0 -38
- package/src/automations/index.ts +0 -26
- package/src/automations/tests/utilities/index.ts +0 -60
- package/src/automations/triggerInfo/index.ts +0 -15
- package/src/constants/index.ts +0 -204
- package/src/constants/screens.ts +0 -48
- package/src/db/defaultData/datasource_bb_default.ts +0 -658
- package/src/db/defaultData/employeeImport.ts +0 -152
- package/src/db/defaultData/expensesImport.ts +0 -114
- package/src/db/defaultData/inventoryImport.ts +0 -106
- package/src/db/defaultData/jobsImport.ts +0 -158
- package/src/db/index.ts +0 -16
- package/src/db/linkedRows/LinkDocument.ts +0 -60
- package/src/events/index.ts +0 -5
- package/src/events/utils.ts +0 -78
- package/src/integrations/base/types.ts +0 -134
- package/src/middleware/appInfo.ts +0 -20
- package/src/middleware/publicApi.ts +0 -21
- package/src/migrations/functions/tableSettings.ts +0 -145
- package/src/migrations/functions/tests/tableSettings.spec.ts +0 -144
- package/src/tests/utilities/controllers.ts +0 -14
- package/src/utilities/budibaseDir.ts +0 -3
- package/src/utilities/global.ts +0 -138
- package/src/utilities/routing/index.ts +0 -32
- package/src/utilities/rowProcessor/map.ts +0 -96
- package/src/utilities/security.ts +0 -65
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for
|
|
6
|
+
<title>Code coverage report for api/controllers/row/staticFormula.js</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/row</a> staticFormula.js</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">16.12% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>5/31</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">35.
|
|
47
|
+
<span class="strong">35.93% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>23/
|
|
49
|
+
<span class='fraction'>23/64</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -219,22 +219,16 @@
|
|
|
219
219
|
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
220
|
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
221
|
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">46x</span>
|
|
228
|
-
<span class="cline-any cline-yes">46x</span>
|
|
229
|
-
<span class="cline-any cline-neutral"> </span>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">45x</span>
|
|
230
223
|
<span class="cline-any cline-neutral"> </span>
|
|
231
224
|
<span class="cline-any cline-neutral"> </span>
|
|
232
225
|
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-yes">46x</span>
|
|
234
|
-
<span class="cline-any cline-yes">46x</span>
|
|
235
226
|
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-yes">
|
|
237
|
-
<span class="cline-any cline-yes">
|
|
227
|
+
<span class="cline-any cline-yes">45x</span>
|
|
228
|
+
<span class="cline-any cline-yes">45x</span>
|
|
229
|
+
<span class="cline-any cline-yes">45x</span>
|
|
230
|
+
<span class="cline-any cline-yes">45x</span>
|
|
231
|
+
<span class="cline-any cline-yes">45x</span>
|
|
238
232
|
<span class="cline-any cline-neutral"> </span>
|
|
239
233
|
<span class="cline-any cline-neutral"> </span>
|
|
240
234
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -242,7 +236,7 @@
|
|
|
242
236
|
<span class="cline-any cline-neutral"> </span>
|
|
243
237
|
<span class="cline-any cline-neutral"> </span>
|
|
244
238
|
<span class="cline-any cline-neutral"> </span>
|
|
245
|
-
<span class="cline-any cline-yes">
|
|
239
|
+
<span class="cline-any cline-yes">45x</span>
|
|
246
240
|
<span class="cline-any cline-yes">86x</span>
|
|
247
241
|
<span class="cline-any cline-neutral"> </span>
|
|
248
242
|
<span class="cline-any cline-yes">86x</span>
|
|
@@ -297,7 +291,7 @@
|
|
|
297
291
|
<span class="cline-any cline-no"> </span>
|
|
298
292
|
<span class="cline-any cline-neutral"> </span>
|
|
299
293
|
<span class="cline-any cline-neutral"> </span>
|
|
300
|
-
<span class="cline-any cline-yes">
|
|
294
|
+
<span class="cline-any cline-yes">45x</span>
|
|
301
295
|
<span class="cline-any cline-no"> </span>
|
|
302
296
|
<span class="cline-any cline-neutral"> </span>
|
|
303
297
|
<span class="cline-any cline-no"> </span>
|
|
@@ -317,8 +311,6 @@
|
|
|
317
311
|
<span class="cline-any cline-neutral"> </span>
|
|
318
312
|
<span class="cline-any cline-no"> </span>
|
|
319
313
|
<span class="cline-any cline-no"> </span>
|
|
320
|
-
<span class="cline-any cline-neutral"> </span>
|
|
321
|
-
<span class="cline-any cline-no"> </span>
|
|
322
314
|
<span class="cline-any cline-no"> </span>
|
|
323
315
|
<span class="cline-any cline-neutral"> </span>
|
|
324
316
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -338,9 +330,7 @@
|
|
|
338
330
|
<span class="cline-any cline-neutral"> </span>
|
|
339
331
|
<span class="cline-any cline-neutral"> </span>
|
|
340
332
|
<span class="cline-any cline-neutral"> </span>
|
|
341
|
-
<span class="cline-any cline-yes">
|
|
342
|
-
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-yes">45x</span>
|
|
344
334
|
<span class="cline-any cline-neutral"> </span>
|
|
345
335
|
<span class="cline-any cline-neutral"> </span>
|
|
346
336
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -385,17 +375,16 @@
|
|
|
385
375
|
<span class="cline-any cline-neutral"> </span>
|
|
386
376
|
<span class="cline-any cline-yes">81x</span>
|
|
387
377
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">
|
|
389
|
-
|
|
378
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const { getRowParams } = require("../../../db/utils")
|
|
379
|
+
const {
|
|
390
380
|
outputProcessing,
|
|
391
381
|
processAutoColumn,
|
|
392
382
|
processFormulas,
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
import { context } from "@budibase/backend-core"
|
|
396
|
-
import { Table, Row } from "@budibase/types"
|
|
383
|
+
} = require("../../../utilities/rowProcessor")
|
|
384
|
+
const { FieldTypes, FormulaTypes } = require("../../../constants")
|
|
397
385
|
const { isEqual } = require("lodash")
|
|
398
386
|
const { cloneDeep } = require("lodash/fp")
|
|
387
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
399
388
|
|
|
400
389
|
/**
|
|
401
390
|
* This function runs through a list of enriched rows, looks at the rows which
|
|
@@ -403,49 +392,49 @@ const { cloneDeep } = require("lodash/fp")
|
|
|
403
392
|
* updated.
|
|
404
393
|
* NOTE: this will only for affect static formulas.
|
|
405
394
|
*/
|
|
406
|
-
|
|
407
|
-
const db =
|
|
395
|
+
exports.updateRelatedFormula = async (table, enrichedRows) => {
|
|
396
|
+
const db = getAppDB()
|
|
408
397
|
// no formula to update, we're done
|
|
409
|
-
if (!table.relatedFormula) {
|
|
398
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!table.relatedFormula) {
|
|
410
399
|
return
|
|
411
400
|
}
|
|
412
|
-
let promises
|
|
401
|
+
let promises = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
413
402
|
<span class="cstat-no" title="statement not covered" > for (let enrichedRow of Array.isArray(enrichedRows)</span>
|
|
414
403
|
? enrichedRows
|
|
415
404
|
: [enrichedRows]) {
|
|
416
405
|
// the related rows by tableId
|
|
417
|
-
let relatedRows
|
|
406
|
+
let relatedRows = <span class="cstat-no" title="statement not covered" >{}</span>
|
|
418
407
|
<span class="cstat-no" title="statement not covered" > for (let [key, field] of Object.entries(enrichedRow)) {</span>
|
|
419
408
|
const columnDefinition = <span class="cstat-no" title="statement not covered" >table.schema[key]</span>
|
|
420
|
-
<span class="cstat-no" title="statement not covered" >
|
|
421
|
-
const relatedTableId = <span class="cstat-no" title="statement not covered" >columnDefinition.tableId
|
|
422
|
-
<span class="cstat-no" title="statement not covered" >
|
|
409
|
+
<span class="cstat-no" title="statement not covered" > if (columnDefinition && columnDefinition.type === FieldTypes.LINK) {</span>
|
|
410
|
+
const relatedTableId = <span class="cstat-no" title="statement not covered" >columnDefinition.tableId</span>
|
|
411
|
+
<span class="cstat-no" title="statement not covered" > if (!relatedRows[relatedTableId]) {</span>
|
|
423
412
|
<span class="cstat-no" title="statement not covered" > relatedRows[relatedTableId] = []</span>
|
|
424
413
|
}
|
|
425
414
|
<span class="cstat-no" title="statement not covered" > relatedRows[relatedTableId] = relatedRows[relatedTableId].concat(field)</span>
|
|
426
415
|
}
|
|
427
416
|
}
|
|
428
417
|
<span class="cstat-no" title="statement not covered" > for (let tableId of table.relatedFormula) {</span>
|
|
429
|
-
let relatedTable
|
|
418
|
+
let relatedTable
|
|
430
419
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
431
420
|
// no rows to update, skip
|
|
432
|
-
<span class="cstat-no" title="statement not covered" >
|
|
421
|
+
<span class="cstat-no" title="statement not covered" > if (!relatedRows[tableId] || relatedRows[tableId].length === 0) {</span>
|
|
433
422
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
434
423
|
}
|
|
435
424
|
<span class="cstat-no" title="statement not covered" > relatedTable = await db.get(tableId)</span>
|
|
436
425
|
} catch (err) {
|
|
437
426
|
// no error scenario, table doesn't seem to exist anymore, ignore
|
|
438
427
|
}
|
|
439
|
-
<span class="cstat-no" title="statement not covered" > for (let column of Object.values(relatedTable
|
|
428
|
+
<span class="cstat-no" title="statement not covered" > for (let column of Object.values(relatedTable.schema)) {</span>
|
|
440
429
|
// needs updated in related rows
|
|
441
|
-
<span class="cstat-no" title="statement not covered" >
|
|
430
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
442
431
|
column.type === FieldTypes.FORMULA &&
|
|
443
432
|
column.formulaType === FormulaTypes.STATIC
|
|
444
433
|
) {
|
|
445
434
|
// re-enrich rows for all the related, don't update the related formula for them
|
|
446
435
|
<span class="cstat-no" title="statement not covered" > promises = promises.concat(</span>
|
|
447
|
-
relatedRows[tableId].map(<span class="fstat-no" title="function not covered" >
|
|
448
|
-
<span class="cstat-no" title="statement not covered" > finaliseRow(relatedTable, related, {</span>
|
|
436
|
+
relatedRows[tableId].map(<span class="fstat-no" title="function not covered" >re</span>lated =>
|
|
437
|
+
<span class="cstat-no" title="statement not covered" > exports.finaliseRow(relatedTable, related, {</span>
|
|
449
438
|
updateFormula: false,
|
|
450
439
|
})
|
|
451
440
|
)
|
|
@@ -458,8 +447,8 @@ export async function updateRelatedFormula(table: Table, enrichedRows: Row[]) {
|
|
|
458
447
|
<span class="cstat-no" title="statement not covered" > await Promise.all(promises)</span>
|
|
459
448
|
}
|
|
460
449
|
|
|
461
|
-
|
|
462
|
-
const db = <span class="cstat-no" title="statement not covered" >
|
|
450
|
+
exports.updateAllFormulasInTable = <span class="fstat-no" title="function not covered" >as</span>ync table => {
|
|
451
|
+
const db = <span class="cstat-no" title="statement not covered" >getAppDB()</span>
|
|
463
452
|
// start by getting the raw rows (which will be written back to DB after update)
|
|
464
453
|
let rows = <span class="cstat-no" title="statement not covered" >(</span>
|
|
465
454
|
await db.allDocs(
|
|
@@ -467,7 +456,7 @@ export async function <span class="fstat-no" title="function not covered" >updat
|
|
|
467
456
|
include_docs: true,
|
|
468
457
|
})
|
|
469
458
|
)
|
|
470
|
-
).rows.map(<span class="fstat-no" title="function not covered" >
|
|
459
|
+
).rows.map(<span class="fstat-no" title="function not covered" >ro</span>w => <span class="cstat-no" title="statement not covered" >row.doc)</span>
|
|
471
460
|
// now enrich the rows, note the clone so that we have the base state of the
|
|
472
461
|
// rows so that we don't write any of the enriched information back
|
|
473
462
|
let enrichedRows = <span class="cstat-no" title="statement not covered" >await outputProcessing(table, cloneDeep(rows), {</span>
|
|
@@ -476,16 +465,14 @@ export async function <span class="fstat-no" title="function not covered" >updat
|
|
|
476
465
|
const updatedRows = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
477
466
|
<span class="cstat-no" title="statement not covered" > for (let row of rows) {</span>
|
|
478
467
|
// find the enriched row, if found process the formulas
|
|
479
|
-
const enrichedRow = <span class="cstat-no" title="statement not covered" >enrichedRows.find(</span>
|
|
480
|
-
<span class="
|
|
481
|
-
)
|
|
482
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (enrichedRow) {</span>
|
|
468
|
+
const enrichedRow = <span class="cstat-no" title="statement not covered" >enrichedRows.find(<span class="fstat-no" title="function not covered" >en</span>riched => <span class="cstat-no" title="statement not covered" >enriched._id === row._id)</span></span>
|
|
469
|
+
<span class="cstat-no" title="statement not covered" > if (enrichedRow) {</span>
|
|
483
470
|
const processed = <span class="cstat-no" title="statement not covered" >processFormulas(table, cloneDeep(row), {</span>
|
|
484
471
|
dynamic: false,
|
|
485
472
|
contextRows: enrichedRow,
|
|
486
473
|
})
|
|
487
474
|
// values have changed, need to add to bulk docs to update
|
|
488
|
-
<span class="cstat-no" title="statement not covered" >
|
|
475
|
+
<span class="cstat-no" title="statement not covered" > if (!isEqual(processed, row)) {</span>
|
|
489
476
|
<span class="cstat-no" title="statement not covered" > updatedRows.push(processed)</span>
|
|
490
477
|
}
|
|
491
478
|
}
|
|
@@ -499,19 +486,17 @@ export async function <span class="fstat-no" title="function not covered" >updat
|
|
|
499
486
|
* row. The reason we need to return the enriched row is that the automation row created trigger
|
|
500
487
|
* expects the row to be totally enriched/contain all relationships.
|
|
501
488
|
*/
|
|
502
|
-
|
|
503
|
-
table
|
|
504
|
-
row
|
|
505
|
-
{ oldTable, updateFormula }
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
) {
|
|
509
|
-
const db = context.getAppDB()
|
|
489
|
+
exports.finaliseRow = async (
|
|
490
|
+
table,
|
|
491
|
+
row,
|
|
492
|
+
{ oldTable, updateFormula } = <span class="branch-0 cbranch-no" title="branch not covered" >{ updateFormula: true }</span>
|
|
493
|
+
) => {
|
|
494
|
+
const db = getAppDB()
|
|
510
495
|
row.type = "row"
|
|
511
496
|
// process the row before return, to include relationships
|
|
512
|
-
let enrichedRow =
|
|
497
|
+
let enrichedRow = await outputProcessing(table, cloneDeep(row), {
|
|
513
498
|
squash: false,
|
|
514
|
-
})
|
|
499
|
+
})
|
|
515
500
|
// use enriched row to generate formulas for saving, specifically only use as context
|
|
516
501
|
row = processFormulas(table, row, {
|
|
517
502
|
dynamic: false,
|
|
@@ -523,7 +508,7 @@ export async function finaliseRow(
|
|
|
523
508
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (oldTable && !isEqual(oldTable, table)) {
|
|
524
509
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
525
510
|
<span class="cstat-no" title="statement not covered" > await db.put(table)</span>
|
|
526
|
-
} catch (err
|
|
511
|
+
} catch (err) {
|
|
527
512
|
<span class="cstat-no" title="statement not covered" > if (err.status === 409) {</span>
|
|
528
513
|
const updatedTable = <span class="cstat-no" title="statement not covered" >await db.get(table._id)</span>
|
|
529
514
|
let response = <span class="cstat-no" title="statement not covered" >processAutoColumn(null, updatedTable, row, {</span>
|
|
@@ -541,7 +526,7 @@ export async function finaliseRow(
|
|
|
541
526
|
enrichedRow._rev = response.rev
|
|
542
527
|
enrichedRow = await processFormulas(table, enrichedRow, { dynamic: false })
|
|
543
528
|
// this updates the related formulas in other rows based on the relations to this row
|
|
544
|
-
if (updateFormula) {
|
|
529
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (updateFormula) {
|
|
545
530
|
await exports.updateRelatedFormula(table, enrichedRow)
|
|
546
531
|
}
|
|
547
532
|
return { row: enrichedRow, table }
|
|
@@ -553,16 +538,16 @@ export async function finaliseRow(
|
|
|
553
538
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
554
539
|
Code coverage generated by
|
|
555
540
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
556
|
-
at Mon Dec 05 2022 18:
|
|
541
|
+
at Mon Dec 05 2022 18:40:03 GMT+0000 (Coordinated Universal Time)
|
|
557
542
|
</div>
|
|
558
|
-
<script src="
|
|
543
|
+
<script src="../../../prettify.js"></script>
|
|
559
544
|
<script>
|
|
560
545
|
window.onload = function () {
|
|
561
546
|
prettyPrint();
|
|
562
547
|
};
|
|
563
548
|
</script>
|
|
564
|
-
<script src="
|
|
565
|
-
<script src="
|
|
549
|
+
<script src="../../../sorter.js"></script>
|
|
550
|
+
<script src="../../../block-navigation.js"></script>
|
|
566
551
|
</body>
|
|
567
552
|
</html>
|
|
568
553
|
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
<html lang="en">
|
|
4
4
|
|
|
5
5
|
<head>
|
|
6
|
-
<title>Code coverage report for
|
|
6
|
+
<title>Code coverage report for api/controllers/row/utils.js</title>
|
|
7
7
|
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="
|
|
9
|
-
<link rel="stylesheet" href="
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="
|
|
8
|
+
<link rel="stylesheet" href="../../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../../favicon.png" />
|
|
11
11
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
12
|
<style type='text/css'>
|
|
13
13
|
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(
|
|
14
|
+
background-image: url(../../../sort-arrow-sprite.png);
|
|
15
15
|
}
|
|
16
16
|
</style>
|
|
17
17
|
</head>
|
|
@@ -19,27 +19,27 @@
|
|
|
19
19
|
<body>
|
|
20
20
|
<div class='wrapper'>
|
|
21
21
|
<div class='pad1'>
|
|
22
|
-
<h1><a href="
|
|
22
|
+
<h1><a href="../../../index.html">All files</a> / <a href="index.html">api/controllers/row</a> utils.js</h1>
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">63.
|
|
26
|
+
<span class="strong">63.33% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>38/60</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">38.46% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>15/39</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">66.66% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>4/6</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
@@ -171,27 +171,16 @@
|
|
|
171
171
|
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
172
|
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
173
|
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<
|
|
176
|
-
<
|
|
177
|
-
<
|
|
178
|
-
<
|
|
179
|
-
<
|
|
180
|
-
<
|
|
181
|
-
<
|
|
182
|
-
<
|
|
183
|
-
<
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">47x</span>
|
|
185
|
-
<span class="cline-any cline-yes">47x</span>
|
|
186
|
-
<span class="cline-any cline-yes">47x</span>
|
|
187
|
-
<span class="cline-any cline-yes">47x</span>
|
|
188
|
-
<span class="cline-any cline-yes">47x</span>
|
|
189
|
-
<span class="cline-any cline-neutral"> </span>
|
|
190
|
-
<span class="cline-any cline-yes">120x</span>
|
|
191
|
-
<span class="cline-any cline-yes">47x</span>
|
|
192
|
-
<span class="cline-any cline-yes">47x</span>
|
|
193
|
-
<span class="cline-any cline-neutral"> </span>
|
|
194
|
-
<span class="cline-any cline-yes">47x</span>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">46x</span>
|
|
175
|
+
<span class="cline-any cline-yes">46x</span>
|
|
176
|
+
<span class="cline-any cline-yes">46x</span>
|
|
177
|
+
<span class="cline-any cline-yes">46x</span>
|
|
178
|
+
<span class="cline-any cline-yes">46x</span>
|
|
179
|
+
<span class="cline-any cline-yes">46x</span>
|
|
180
|
+
<span class="cline-any cline-yes">46x</span>
|
|
181
|
+
<span class="cline-any cline-yes">46x</span>
|
|
182
|
+
<span class="cline-any cline-neutral"> </span>
|
|
183
|
+
<span class="cline-any cline-yes">46x</span>
|
|
195
184
|
<span class="cline-any cline-neutral"> </span>
|
|
196
185
|
<span class="cline-any cline-yes">2x</span>
|
|
197
186
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -201,14 +190,16 @@
|
|
|
201
190
|
<span class="cline-any cline-neutral"> </span>
|
|
202
191
|
<span class="cline-any cline-neutral"> </span>
|
|
203
192
|
<span class="cline-any cline-neutral"> </span>
|
|
204
|
-
<span class="cline-any cline-yes">
|
|
193
|
+
<span class="cline-any cline-yes">46x</span>
|
|
194
|
+
<span class="cline-any cline-neutral"> </span>
|
|
195
|
+
<span class="cline-any cline-yes">46x</span>
|
|
205
196
|
<span class="cline-any cline-yes">1x</span>
|
|
206
197
|
<span class="cline-any cline-yes">1x</span>
|
|
207
198
|
<span class="cline-any cline-yes">1x</span>
|
|
208
199
|
<span class="cline-any cline-yes">1x</span>
|
|
209
200
|
<span class="cline-any cline-neutral"> </span>
|
|
210
201
|
<span class="cline-any cline-neutral"> </span>
|
|
211
|
-
<span class="cline-any cline-yes">
|
|
202
|
+
<span class="cline-any cline-yes">46x</span>
|
|
212
203
|
<span class="cline-any cline-yes">26x</span>
|
|
213
204
|
<span class="cline-any cline-neutral"> </span>
|
|
214
205
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -227,22 +218,11 @@
|
|
|
227
218
|
<span class="cline-any cline-yes">23x</span>
|
|
228
219
|
<span class="cline-any cline-neutral"> </span>
|
|
229
220
|
<span class="cline-any cline-neutral"> </span>
|
|
230
|
-
<span class="cline-any cline-yes">
|
|
231
|
-
<span class="cline-any cline-neutral"> </span>
|
|
232
|
-
<span class="cline-any cline-neutral"> </span>
|
|
233
|
-
<span class="cline-any cline-neutral"> </span>
|
|
234
|
-
<span class="cline-any cline-neutral"> </span>
|
|
235
|
-
<span class="cline-any cline-neutral"> </span>
|
|
236
|
-
<span class="cline-any cline-neutral"> </span>
|
|
237
|
-
<span class="cline-any cline-neutral"> </span>
|
|
238
|
-
<span class="cline-any cline-neutral"> </span>
|
|
239
|
-
<span class="cline-any cline-neutral"> </span>
|
|
221
|
+
<span class="cline-any cline-yes">46x</span>
|
|
240
222
|
<span class="cline-any cline-yes">85x</span>
|
|
241
223
|
<span class="cline-any cline-yes">2x</span>
|
|
242
224
|
<span class="cline-any cline-yes">2x</span>
|
|
243
225
|
<span class="cline-any cline-neutral"> </span>
|
|
244
|
-
<span class="cline-any cline-yes">83x</span>
|
|
245
|
-
<span class="cline-any cline-neutral"> </span>
|
|
246
226
|
<span class="cline-any cline-yes">85x</span>
|
|
247
227
|
<span class="cline-any cline-yes">85x</span>
|
|
248
228
|
<span class="cline-any cline-yes">228x</span>
|
|
@@ -299,35 +279,36 @@
|
|
|
299
279
|
<span class="cline-any cline-neutral"> </span>
|
|
300
280
|
<span class="cline-any cline-yes">85x</span>
|
|
301
281
|
<span class="cline-any cline-neutral"> </span>
|
|
302
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">
|
|
303
|
-
import * as userController from "../user"
|
|
304
|
-
import { FieldTypes } from "../../../constants"
|
|
305
|
-
import { context } from "@budibase/backend-core"
|
|
306
|
-
import { makeExternalQuery } from "../../../integrations/base/query"
|
|
307
|
-
import { BBContext, Row, Table } from "@budibase/types"
|
|
308
|
-
export { removeKeyNumbering } from "../../../integrations/base/utils"
|
|
309
|
-
const validateJs = require("validate.js")
|
|
282
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const validateJs = require("validate.js")
|
|
310
283
|
const { cloneDeep } = require("lodash/fp")
|
|
284
|
+
const { InternalTables } = require("../../../db/utils")
|
|
285
|
+
const userController = require("../user")
|
|
286
|
+
const { FieldTypes } = require("../../../constants")
|
|
287
|
+
const { getAppDB } = require("@budibase/backend-core/context")
|
|
288
|
+
const { makeExternalQuery } = require("../../../integrations/base/query")
|
|
289
|
+
const { removeKeyNumbering } = require("../../../integrations/base/utils")
|
|
311
290
|
|
|
312
291
|
validateJs.extend(validateJs.validators.datetime, {
|
|
313
|
-
parse: function (value
|
|
292
|
+
parse: function (value) {
|
|
314
293
|
return new Date(value).getTime()
|
|
315
294
|
},
|
|
316
295
|
// Input is a unix timestamp
|
|
317
|
-
format: <span class="fstat-no" title="function not covered" >
|
|
296
|
+
format: <span class="fstat-no" title="function not covered" >fu</span>nction (value) {
|
|
318
297
|
<span class="cstat-no" title="statement not covered" > return new Date(value).toISOString()</span>
|
|
319
298
|
},
|
|
320
299
|
})
|
|
321
300
|
|
|
322
|
-
|
|
301
|
+
exports.removeKeyNumbering = removeKeyNumbering
|
|
302
|
+
|
|
303
|
+
exports.getDatasourceAndQuery = async json => {
|
|
323
304
|
const datasourceId = json.endpoint.datasourceId
|
|
324
|
-
const db =
|
|
305
|
+
const db = getAppDB()
|
|
325
306
|
const datasource = await db.get(datasourceId)
|
|
326
307
|
return makeExternalQuery(datasource, json)
|
|
327
308
|
}
|
|
328
309
|
|
|
329
|
-
|
|
330
|
-
const db =
|
|
310
|
+
exports.findRow = async (ctx, tableId, rowId) => {
|
|
311
|
+
const db = getAppDB()
|
|
331
312
|
let row
|
|
332
313
|
// TODO remove special user case in future
|
|
333
314
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (tableId === InternalTables.USER_METADATA) {
|
|
@@ -345,26 +326,15 @@ export async function findRow(ctx: BBContext, tableId: string, rowId: string) {
|
|
|
345
326
|
return row
|
|
346
327
|
}
|
|
347
328
|
|
|
348
|
-
|
|
349
|
-
tableId,
|
|
350
|
-
row,
|
|
351
|
-
table,
|
|
352
|
-
}: {
|
|
353
|
-
tableId?: string
|
|
354
|
-
row: Row
|
|
355
|
-
table?: Table
|
|
356
|
-
}) {
|
|
357
|
-
let fetchedTable: Table
|
|
329
|
+
exports.validate = async ({ tableId, row, table }) => {
|
|
358
330
|
if (!table) {
|
|
359
|
-
const db =
|
|
360
|
-
|
|
361
|
-
} else {
|
|
362
|
-
fetchedTable = table
|
|
331
|
+
const db = getAppDB()
|
|
332
|
+
table = await db.get(tableId)
|
|
363
333
|
}
|
|
364
|
-
const errors
|
|
365
|
-
for (let fieldName of Object.keys(
|
|
366
|
-
const constraints = cloneDeep(
|
|
367
|
-
const type =
|
|
334
|
+
const errors = {}
|
|
335
|
+
for (let fieldName of Object.keys(table.schema)) {
|
|
336
|
+
const constraints = cloneDeep(table.schema[fieldName].constraints)
|
|
337
|
+
const type = table.schema[fieldName].type
|
|
368
338
|
// formulas shouldn't validated, data will be deleted anyway
|
|
369
339
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.FORMULA) {
|
|
370
340
|
<span class="cstat-no" title="statement not covered" > continue</span>
|
|
@@ -378,18 +348,18 @@ export async function validate({
|
|
|
378
348
|
// Validate.js doesn't seem to handle array
|
|
379
349
|
<span class="missing-if-branch" title="if path not taken" >I</span>if (type === FieldTypes.ARRAY && <span class="branch-1 cbranch-no" title="branch not covered" >row[fieldName])</span> {
|
|
380
350
|
<span class="cstat-no" title="statement not covered" > if (row[fieldName].length) {</span>
|
|
381
|
-
<span class="cstat-no" title="statement not covered" >
|
|
351
|
+
<span class="cstat-no" title="statement not covered" > if (!Array.isArray(row[fieldName])) {</span>
|
|
382
352
|
<span class="cstat-no" title="statement not covered" > row[fieldName] = row[fieldName].split(",")</span>
|
|
383
353
|
}
|
|
384
|
-
<span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >
|
|
385
|
-
<span class="cstat-no" title="statement not covered" >
|
|
354
|
+
<span class="cstat-no" title="statement not covered" > row[fieldName].map(<span class="fstat-no" title="function not covered" >va</span>l => {</span>
|
|
355
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
386
356
|
!constraints.inclusion.includes(val) &&
|
|
387
357
|
constraints.inclusion.length !== 0
|
|
388
358
|
) {
|
|
389
359
|
<span class="cstat-no" title="statement not covered" > errors[fieldName] = "Field not in list"</span>
|
|
390
360
|
}
|
|
391
361
|
})
|
|
392
|
-
} else <span class="cstat-no" title="statement not covered"
|
|
362
|
+
} else <span class="cstat-no" title="statement not covered" >if (constraints.presence && row[fieldName].length === 0) {</span>
|
|
393
363
|
// non required MultiSelect creates an empty array, which should not throw errors
|
|
394
364
|
<span class="cstat-no" title="statement not covered" > errors[fieldName] = [`${fieldName} is required`]</span>
|
|
395
365
|
}
|
|
@@ -400,7 +370,7 @@ export async function validate({
|
|
|
400
370
|
// this should only happen if there is an error
|
|
401
371
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
402
372
|
const json = <span class="cstat-no" title="statement not covered" >JSON.parse(row[fieldName])</span>
|
|
403
|
-
<span class="cstat-no" title="statement not covered" >
|
|
373
|
+
<span class="cstat-no" title="statement not covered" > if (type === FieldTypes.ATTACHMENT) {</span>
|
|
404
374
|
<span class="cstat-no" title="statement not covered" > if (Array.isArray(json)) {</span>
|
|
405
375
|
<span class="cstat-no" title="statement not covered" > row[fieldName] = json</span>
|
|
406
376
|
} else {
|
|
@@ -424,16 +394,16 @@ export async function validate({
|
|
|
424
394
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
425
395
|
Code coverage generated by
|
|
426
396
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
427
|
-
at Mon Dec 05 2022 18:
|
|
397
|
+
at Mon Dec 05 2022 18:40:03 GMT+0000 (Coordinated Universal Time)
|
|
428
398
|
</div>
|
|
429
|
-
<script src="
|
|
399
|
+
<script src="../../../prettify.js"></script>
|
|
430
400
|
<script>
|
|
431
401
|
window.onload = function () {
|
|
432
402
|
prettyPrint();
|
|
433
403
|
};
|
|
434
404
|
</script>
|
|
435
|
-
<script src="
|
|
436
|
-
<script src="
|
|
405
|
+
<script src="../../../sorter.js"></script>
|
|
406
|
+
<script src="../../../block-navigation.js"></script>
|
|
437
407
|
</body>
|
|
438
408
|
</html>
|
|
439
409
|
|