@researchdatabox/redbox-core 5.1.0-beta.12573 → 5.1.0-beta.13939
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/browser/redoc-library-loader.cjs +20 -0
- package/browser/redoc-standalone.js +143 -0
- package/dist/CoreBase.d.ts +43 -0
- package/dist/CoreBase.d.ts.map +1 -0
- package/dist/CoreBase.js +101 -0
- package/dist/CoreController.d.ts +23 -31
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +142 -131
- package/dist/CoreService.d.ts +13 -33
- package/dist/CoreService.d.ts.map +1 -1
- package/dist/CoreService.js +69 -95
- package/dist/HarvestRunService.d.ts +9 -1
- package/dist/HarvestRunService.d.ts.map +1 -1
- package/dist/HarvestRunService.js +1 -1
- package/dist/RecordRouteForm.d.ts +49 -0
- package/dist/RecordRouteForm.d.ts.map +1 -0
- package/dist/RecordRouteForm.js +188 -0
- package/dist/RecordSaveResponse.d.ts +4 -0
- package/dist/RecordSaveResponse.d.ts.map +1 -1
- package/dist/RecordSaveResponse.js +3 -2
- package/dist/action-execution/executor.d.ts +1 -1
- package/dist/action-execution/executor.d.ts.map +1 -1
- package/dist/action-execution/executor.js +19 -20
- package/dist/action-execution/legacy-result.d.ts +1 -1
- package/dist/action-execution/legacy-result.d.ts.map +1 -1
- package/dist/action-execution/legacy-result.js +43 -10
- package/dist/action-execution/types.d.ts +3 -3
- package/dist/action-execution/types.d.ts.map +1 -1
- package/dist/api-routes/groups/harvest-runs.d.ts +1 -0
- package/dist/api-routes/groups/harvest-runs.d.ts.map +1 -1
- package/dist/api-routes/groups/harvest-runs.js +24 -3
- package/dist/api-routes/groups/records.d.ts.map +1 -1
- package/dist/api-routes/groups/records.js +30 -21
- package/dist/api-routes/groups/reports.d.ts.map +1 -1
- package/dist/api-routes/groups/reports.js +3 -2
- package/dist/api-routes/helpers.d.ts +1 -1
- package/dist/api-routes/helpers.d.ts.map +1 -1
- package/dist/api-routes/helpers.js +10 -6
- package/dist/api-routes/openapi.d.ts.map +1 -1
- package/dist/api-routes/openapi.js +15 -1
- package/dist/api-routes/request-extraction.js +2 -2
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +7 -2
- package/dist/api-routes/schemas/responses.d.ts +38 -12
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +11 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +13 -3
- package/dist/config/agendaQueue.config.d.ts +5 -0
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +29 -2
- package/dist/config/appConfigSecrets.config.d.ts +14 -0
- package/dist/config/appConfigSecrets.config.d.ts.map +1 -0
- package/dist/config/appConfigSecrets.config.js +8 -0
- package/dist/config/brandingConfigurationDefaults.config.d.ts +16 -3
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +1 -1
- package/dist/config/dompurify.config.d.ts.map +1 -1
- package/dist/config/dompurify.config.js +3 -2
- package/dist/config/harvestRuns.config.d.ts +7 -0
- package/dist/config/harvestRuns.config.d.ts.map +1 -1
- package/dist/config/harvestRuns.config.js +2 -1
- package/dist/config/http.config.d.ts +3 -2
- package/dist/config/http.config.d.ts.map +1 -1
- package/dist/config/http.config.js +108 -12
- package/dist/config/i18n.config.d.ts +3 -0
- package/dist/config/i18n.config.d.ts.map +1 -1
- package/dist/config/i18n.config.js +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -1
- package/dist/config/log.config.d.ts +33 -5
- package/dist/config/log.config.d.ts.map +1 -1
- package/dist/config/log.config.js +58 -54
- package/dist/config/record.config.d.ts +17 -0
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +7 -1
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +11 -2
- package/dist/config/session.config.d.ts +2 -2
- package/dist/config/session.config.d.ts.map +1 -1
- package/dist/config/solr.config.d.ts +8 -0
- package/dist/config/solr.config.d.ts.map +1 -1
- package/dist/config/solr.config.js +15 -2
- package/dist/config/storage.config.d.ts.map +1 -1
- package/dist/config/storage.config.js +9 -1
- package/dist/config/vocab.config.d.ts +1 -0
- package/dist/config/vocab.config.d.ts.map +1 -1
- package/dist/config/vocab.config.js +3 -3
- package/dist/config/webpack.config.d.ts.map +1 -1
- package/dist/config/webpack.config.js +23 -5
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +3 -2
- package/dist/configmodels/FigsharePublishing.d.ts +1 -1
- package/dist/controllers/ActionController.d.ts.map +1 -1
- package/dist/controllers/ActionController.js +8 -2
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +21 -2
- package/dist/controllers/DynamicAssetController.d.ts +9 -10
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +67 -53
- package/dist/controllers/EmailController.d.ts.map +1 -1
- package/dist/controllers/EmailController.js +32 -14
- package/dist/controllers/ExportController.d.ts +9 -0
- package/dist/controllers/ExportController.d.ts.map +1 -1
- package/dist/controllers/ExportController.js +154 -3
- package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
- package/dist/controllers/FormVocabularyController.js +62 -33
- package/dist/controllers/RecordAuditController.d.ts.map +1 -1
- package/dist/controllers/RecordAuditController.js +4 -2
- package/dist/controllers/RecordController.d.ts +4 -1
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +248 -114
- package/dist/controllers/ReportController.d.ts +1 -0
- package/dist/controllers/ReportController.d.ts.map +1 -1
- package/dist/controllers/ReportController.js +40 -12
- package/dist/controllers/TranslationController.d.ts.map +1 -1
- package/dist/controllers/TranslationController.js +56 -16
- package/dist/controllers/UserController.d.ts +3 -1
- package/dist/controllers/UserController.d.ts.map +1 -1
- package/dist/controllers/UserController.js +178 -76
- package/dist/controllers/VocabularyController.d.ts +0 -1
- package/dist/controllers/VocabularyController.d.ts.map +1 -1
- package/dist/controllers/VocabularyController.js +18 -16
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
- package/dist/controllers/webservice/AdminController.js +2 -5
- package/dist/controllers/webservice/HarvestRunController.d.ts +1 -0
- package/dist/controllers/webservice/HarvestRunController.d.ts.map +1 -1
- package/dist/controllers/webservice/HarvestRunController.js +46 -2
- package/dist/controllers/webservice/IntegrationAuditController.d.ts +0 -1
- package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
- package/dist/controllers/webservice/IntegrationAuditController.js +13 -6
- package/dist/controllers/webservice/RecordController.d.ts +1 -1
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +13 -4
- package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
- package/dist/controllers/webservice/ReportController.js +15 -10
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/UserManagementController.js +17 -8
- package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
- package/dist/controllers/webservice/VocabularyController.js +19 -13
- package/dist/form-config/generated-view-only.d.ts.map +1 -1
- package/dist/form-config/generated-view-only.js +12 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/loader/index.d.ts +1 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +56 -11
- package/dist/middleware/redboxSession.d.ts.map +1 -1
- package/dist/middleware/redboxSession.js +15 -3
- package/dist/middleware/requestChronicle.d.ts +14 -0
- package/dist/middleware/requestChronicle.d.ts.map +1 -0
- package/dist/middleware/requestChronicle.js +73 -0
- package/dist/model/BuildResponse.d.ts +7 -5
- package/dist/model/BuildResponse.d.ts.map +1 -1
- package/dist/model/RBValidationError.d.ts +18 -5
- package/dist/model/RBValidationError.d.ts.map +1 -1
- package/dist/model/RBValidationError.js +56 -17
- package/dist/model/storage/ExportJobModel.d.ts +33 -0
- package/dist/model/storage/ExportJobModel.d.ts.map +1 -0
- package/dist/model/storage/ExportJobModel.js +3 -0
- package/dist/model/storage/HarvestRunModel.d.ts +20 -0
- package/dist/model/storage/HarvestRunModel.d.ts.map +1 -1
- package/dist/model/storage/HarvestRunModel.js +2 -1
- package/dist/model/storage/index.d.ts +2 -1
- package/dist/model/storage/index.d.ts.map +1 -1
- package/dist/model/storage/index.js +1 -1
- package/dist/policies/checkAuth.d.ts.map +1 -1
- package/dist/policies/checkAuth.js +3 -2
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
- package/dist/policies/contentSecurityPolicy.js +7 -2
- package/dist/policies/noCache.d.ts.map +1 -1
- package/dist/policies/noCache.js +4 -3
- package/dist/record-contract/record-contract-compiler.d.ts.map +1 -1
- package/dist/record-contract/record-contract-compiler.js +3 -19
- package/dist/record-contract/record-contract-context.d.ts +2 -0
- package/dist/record-contract/record-contract-context.d.ts.map +1 -1
- package/dist/record-contract/record-contract-context.js +1 -1
- package/dist/responses/notFound.d.ts.map +1 -1
- package/dist/responses/notFound.js +6 -1
- package/dist/responses/serverError.d.ts.map +1 -1
- package/dist/responses/serverError.js +13 -3
- package/dist/sails.d.ts +27 -17
- package/dist/sails.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.d.ts +11 -2
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +163 -51
- package/dist/services/AppConfigSecrets.d.ts +66 -0
- package/dist/services/AppConfigSecrets.d.ts.map +1 -0
- package/dist/services/AppConfigSecrets.js +396 -0
- package/dist/services/AppConfigService.d.ts +16 -1
- package/dist/services/AppConfigService.d.ts.map +1 -1
- package/dist/services/AppConfigService.js +283 -33
- package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
- package/dist/services/BrandingThemeCssService.js +32 -3
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
- package/dist/services/BrandingThemeTokens.js +10 -1
- package/dist/services/ConfigService.d.ts +1 -0
- package/dist/services/ConfigService.d.ts.map +1 -1
- package/dist/services/ConfigService.js +24 -9
- package/dist/services/DomSanitizerService.d.ts.map +1 -1
- package/dist/services/DomSanitizerService.js +19 -6
- package/dist/services/EmailService.d.ts +10 -2
- package/dist/services/EmailService.d.ts.map +1 -1
- package/dist/services/EmailService.js +53 -53
- package/dist/services/ExportService.d.ts +62 -0
- package/dist/services/ExportService.d.ts.map +1 -0
- package/dist/services/ExportService.js +609 -0
- package/dist/services/FormVocabularyService.d.ts.map +1 -1
- package/dist/services/FormVocabularyService.js +14 -4
- package/dist/services/FormsService.d.ts +3 -0
- package/dist/services/FormsService.d.ts.map +1 -1
- package/dist/services/FormsService.js +10 -3
- package/dist/services/HarvestRunService.d.ts +23 -1
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +155 -22
- package/dist/services/I18nEntriesService.d.ts +5 -0
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +55 -3
- package/dist/services/NamedQueryService.d.ts +1 -0
- package/dist/services/NamedQueryService.d.ts.map +1 -1
- package/dist/services/NamedQueryService.js +67 -31
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +69 -83
- package/dist/services/RaidService.d.ts.map +1 -1
- package/dist/services/RaidService.js +45 -11
- package/dist/services/RecordSchemaService.d.ts +3 -1
- package/dist/services/RecordSchemaService.d.ts.map +1 -1
- package/dist/services/RecordSchemaService.js +2 -1
- package/dist/services/RecordValidationService.d.ts +3 -0
- package/dist/services/RecordValidationService.d.ts.map +1 -1
- package/dist/services/RecordValidationService.js +25 -5
- package/dist/services/RecordsService.d.ts +10 -1
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +194 -93
- package/dist/services/ReportsService.d.ts +1 -0
- package/dist/services/ReportsService.d.ts.map +1 -1
- package/dist/services/ReportsService.js +10 -9
- package/dist/services/RvaImportService.d.ts.map +1 -1
- package/dist/services/RvaImportService.js +6 -5
- package/dist/services/SolrSearchService.d.ts +7 -2
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +205 -81
- package/dist/services/StorageManagerService.d.ts +5 -0
- package/dist/services/StorageManagerService.d.ts.map +1 -1
- package/dist/services/StorageManagerService.js +4 -1
- package/dist/services/TriggerService.d.ts.map +1 -1
- package/dist/services/TriggerService.js +64 -56
- package/dist/services/UsersService.d.ts +13 -1
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +191 -257
- package/dist/services/VocabularyService.d.ts +11 -1
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +120 -24
- package/dist/services/doi-v2/http.d.ts +3 -2
- package/dist/services/doi-v2/http.d.ts.map +1 -1
- package/dist/services/doi-v2/http.js +38 -4
- package/dist/services/doi-v2/runtime.d.ts +4 -3
- package/dist/services/doi-v2/runtime.d.ts.map +1 -1
- package/dist/services/doi-v2/runtime.js +52 -17
- package/dist/services/figshare-v2/assets.d.ts +1 -1
- package/dist/services/figshare-v2/assets.d.ts.map +1 -1
- package/dist/services/figshare-v2/assets.js +1 -1
- package/dist/services/figshare-v2/http.d.ts +3 -2
- package/dist/services/figshare-v2/http.d.ts.map +1 -1
- package/dist/services/figshare-v2/http.js +38 -4
- package/dist/services/figshare-v2/observability.d.ts.map +1 -1
- package/dist/services/figshare-v2/observability.js +3 -3
- package/dist/services/figshare-v2/runtime.d.ts +4 -3
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +48 -13
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +8 -3
- package/dist/services/integration-v2/runtime.d.ts +1 -1
- package/dist/services/integration-v2/runtime.d.ts.map +1 -1
- package/dist/services/integration-v2/runtime.js +7 -7
- package/dist/services/oni-v2/audit.d.ts +3 -2
- package/dist/services/oni-v2/audit.d.ts.map +1 -1
- package/dist/services/oni-v2/audit.js +38 -4
- package/dist/services/oni-v2/bindings.d.ts +1 -1
- package/dist/services/oni-v2/bindings.d.ts.map +1 -1
- package/dist/services/oni-v2/bindings.js +37 -4
- package/dist/services/oni-v2/repository.d.ts +3 -2
- package/dist/services/oni-v2/repository.d.ts.map +1 -1
- package/dist/services/oni-v2/repository.js +42 -7
- package/dist/services/oni-v2/runtime.d.ts +5 -4
- package/dist/services/oni-v2/runtime.d.ts.map +1 -1
- package/dist/services/oni-v2/runtime.js +57 -19
- package/dist/services/oni-v2/templating.d.ts +4 -2
- package/dist/services/oni-v2/templating.d.ts.map +1 -1
- package/dist/services/oni-v2/templating.js +42 -7
- package/dist/services/raid-v2/audit.d.ts +1 -1
- package/dist/services/raid-v2/audit.d.ts.map +1 -1
- package/dist/services/raid-v2/audit.js +39 -5
- package/dist/services/raid-v2/errors.d.ts +9 -9
- package/dist/services/raid-v2/errors.js +44 -11
- package/dist/services/raid-v2/http.d.ts +1 -1
- package/dist/services/raid-v2/http.d.ts.map +1 -1
- package/dist/services/raid-v2/http.js +42 -8
- package/dist/services/raid-v2/logger.d.ts +1 -1
- package/dist/services/raid-v2/logger.d.ts.map +1 -1
- package/dist/services/raid-v2/logger.js +42 -8
- package/dist/services/raid-v2/mapping.d.ts +1 -1
- package/dist/services/raid-v2/mapping.d.ts.map +1 -1
- package/dist/services/raid-v2/mapping.js +41 -7
- package/dist/services/raid-v2/runtime.d.ts +1 -1
- package/dist/services/raid-v2/runtime.d.ts.map +1 -1
- package/dist/services/raid-v2/runtime.js +76 -34
- package/dist/services/raid-v2/tags.d.ts +8 -8
- package/dist/services/raid-v2/tags.d.ts.map +1 -1
- package/dist/services/raid-v2/tags.js +42 -9
- package/dist/services/record-hooks/coordinator.d.ts +11 -0
- package/dist/services/record-hooks/coordinator.d.ts.map +1 -1
- package/dist/services/record-hooks/coordinator.js +70 -6
- package/dist/storage/GridFSDriver.d.ts +16 -9
- package/dist/storage/GridFSDriver.d.ts.map +1 -1
- package/dist/storage/GridFSDriver.js +87 -33
- package/dist/storage/TusStorageManagerDataStore.d.ts +11 -1
- package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
- package/dist/storage/TusStorageManagerDataStore.js +190 -56
- package/dist/utilities/HarvestHistoryRetention.d.ts +17 -0
- package/dist/utilities/HarvestHistoryRetention.d.ts.map +1 -0
- package/dist/utilities/HarvestHistoryRetention.js +141 -0
- package/dist/utilities/HarvestRunIndexes.d.ts +12 -0
- package/dist/utilities/HarvestRunIndexes.d.ts.map +1 -0
- package/dist/utilities/HarvestRunIndexes.js +84 -0
- package/dist/utilities/PinoLoggerUtils.d.ts +9 -0
- package/dist/utilities/PinoLoggerUtils.d.ts.map +1 -0
- package/dist/utilities/PinoLoggerUtils.js +17 -0
- package/dist/utilities/RequestChronicle.d.ts +221 -0
- package/dist/utilities/RequestChronicle.d.ts.map +1 -0
- package/dist/utilities/RequestChronicle.js +770 -0
- package/dist/utilities/RequestChronicleContext.d.ts +6 -0
- package/dist/utilities/RequestChronicleContext.d.ts.map +1 -0
- package/dist/utilities/RequestChronicleContext.js +19 -0
- package/dist/utilities/RequestChronicleSettings.d.ts +29 -0
- package/dist/utilities/RequestChronicleSettings.d.ts.map +1 -0
- package/dist/utilities/RequestChronicleSettings.js +31 -0
- package/dist/utilities/TransactionUtils.d.ts +2 -1
- package/dist/utilities/TransactionUtils.d.ts.map +1 -1
- package/dist/utilities/TransactionUtils.js +1 -1
- package/dist/utilities/TranslationHtml.d.ts.map +1 -1
- package/dist/utilities/TranslationHtml.js +13 -5
- package/dist/utilities/VocabularyAdminAccess.d.ts +10 -0
- package/dist/utilities/VocabularyAdminAccess.d.ts.map +1 -0
- package/dist/utilities/VocabularyAdminAccess.js +42 -0
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +7 -2
- package/dist/visitor/context-variables.visitor.d.ts +1 -2
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
- package/dist/visitor/context-variables.visitor.js +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +5 -1
- package/dist/visitor/related-object-data-inline.visitor.d.ts +1 -1
- package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -1
- package/dist/visitor/related-object-data-inline.visitor.js +57 -23
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +4 -2
- package/dist/visitor/visitor-helpers.js +3 -3
- package/dist/visitor/vocab-inline.visitor.d.ts +1 -2
- package/dist/visitor/vocab-inline.visitor.d.ts.map +1 -1
- package/dist/visitor/vocab-inline.visitor.js +1 -1
- package/dist/waterline-models/ExportJob.d.ts +38 -0
- package/dist/waterline-models/ExportJob.d.ts.map +1 -0
- package/dist/waterline-models/ExportJob.js +148 -0
- package/dist/waterline-models/HarvestRecordEvent.d.ts.map +1 -1
- package/dist/waterline-models/HarvestRecordEvent.js +3 -9
- package/dist/waterline-models/HarvestRun.d.ts +5 -1
- package/dist/waterline-models/HarvestRun.d.ts.map +1 -1
- package/dist/waterline-models/HarvestRun.js +13 -7
- package/dist/waterline-models/HarvestRunChunk.d.ts.map +1 -1
- package/dist/waterline-models/HarvestRunChunk.js +3 -7
- package/dist/waterline-models/User.d.ts +2 -2
- package/dist/waterline-models/User.d.ts.map +1 -1
- package/dist/waterline-models/User.js +3 -3
- package/dist/waterline-models/index.d.ts +2 -0
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +4 -1
- package/logfmt-transport.cjs +59 -0
- package/package.json +76 -45
- package/dist/Logger.d.ts +0 -16
- package/dist/Logger.d.ts.map +0 -1
- package/dist/Logger.js +0 -3
|
@@ -57,6 +57,8 @@ const ConfigModels_1 = require("../configmodels/ConfigModels");
|
|
|
57
57
|
const DashboardConfigService_1 = require("./DashboardConfigService");
|
|
58
58
|
const TJS = __importStar(require("typescript-json-schema"));
|
|
59
59
|
const glob_1 = require("glob");
|
|
60
|
+
const AppConfigSecrets_1 = require("./AppConfigSecrets");
|
|
61
|
+
const appConfigSecrets_config_1 = require("../config/appConfigSecrets.config");
|
|
60
62
|
exports.APP_CONFIG_SECRET_MASK = '__REDACTED__';
|
|
61
63
|
exports.APP_CONFIG_SECRET_CLEAR = '__CLEAR_SECRET__';
|
|
62
64
|
const APP_CONFIG_PRESENT_KEYS_SYMBOL = Symbol.for('redbox.appConfig.presentKeys');
|
|
@@ -71,11 +73,14 @@ var Services;
|
|
|
71
73
|
brandingAppConfigMap = {};
|
|
72
74
|
modelSchemaMap = {};
|
|
73
75
|
extraTsGlobs = new Set();
|
|
76
|
+
secretStore;
|
|
77
|
+
configWriteGates = new Map();
|
|
74
78
|
_exportedMethods = [
|
|
75
79
|
'bootstrap',
|
|
76
80
|
'getAllConfigurationForBrand',
|
|
77
81
|
'loadAppConfigurationModel',
|
|
78
82
|
'getAppConfigurationForBrand',
|
|
83
|
+
'getMaskedAppConfigurationForBrand',
|
|
79
84
|
'createOrUpdateConfig',
|
|
80
85
|
'getAppConfigForm',
|
|
81
86
|
'getAppConfigByBrandAndKey',
|
|
@@ -118,13 +123,166 @@ var Services;
|
|
|
118
123
|
}
|
|
119
124
|
}
|
|
120
125
|
}
|
|
121
|
-
|
|
122
|
-
const
|
|
123
|
-
this.
|
|
126
|
+
prepareBrandingCache(branding, configKey, hydrated, fallback) {
|
|
127
|
+
const current = this.brandingAppConfigMap[branding.name] ?? fallback;
|
|
128
|
+
const next = { ...(current ?? this.createDefaultConfiguration()) };
|
|
129
|
+
next[configKey] = hydrated;
|
|
130
|
+
const presentKeys = Reflect.get(current ?? {}, APP_CONFIG_PRESENT_KEYS_SYMBOL) ?? new Set();
|
|
131
|
+
Object.defineProperty(next, APP_CONFIG_PRESENT_KEYS_SYMBOL, {
|
|
132
|
+
value: new Set([...presentKeys, configKey]), enumerable: false, configurable: true
|
|
133
|
+
});
|
|
134
|
+
return next;
|
|
135
|
+
}
|
|
136
|
+
/** Expand only own properties; wildcard matches one literal key, including punctuation. */
|
|
137
|
+
getSecretPaths(configKey, data, forWrite = false) {
|
|
138
|
+
const paths = [];
|
|
139
|
+
const unsafe = new Set(['__proto__', 'prototype', 'constructor']);
|
|
140
|
+
const visit = (value, parts, path) => {
|
|
141
|
+
if (parts.length === 0) {
|
|
142
|
+
paths.push(path);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
if (typeof value !== 'object' || value === null)
|
|
146
|
+
return;
|
|
147
|
+
const [part, ...rest] = parts;
|
|
148
|
+
const keys = part === '*' ? Object.keys(value) : [part];
|
|
149
|
+
for (const key of keys) {
|
|
150
|
+
if (forWrite && unsafe.has(key))
|
|
151
|
+
throw new Error('Unsafe AppConfig secret field key');
|
|
152
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
153
|
+
visit(Reflect.get(value, key), rest, [...path, key]);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
for (const field of this.getSecretFields(configKey))
|
|
158
|
+
visit(data, field.split('.'), []);
|
|
159
|
+
return paths;
|
|
160
|
+
}
|
|
161
|
+
setExistingSecretPath(data, path, value) {
|
|
162
|
+
let parent = data;
|
|
163
|
+
for (const key of path.slice(0, -1)) {
|
|
164
|
+
if (!Object.prototype.hasOwnProperty.call(parent, key))
|
|
165
|
+
return;
|
|
166
|
+
const next = Reflect.get(parent, key);
|
|
167
|
+
if (typeof next !== 'object' || next === null)
|
|
168
|
+
return;
|
|
169
|
+
parent = next;
|
|
170
|
+
}
|
|
171
|
+
const key = path[path.length - 1];
|
|
172
|
+
if (key !== undefined && Object.prototype.hasOwnProperty.call(parent, key)) {
|
|
173
|
+
Object.defineProperty(parent, key, { value, writable: true, enumerable: true, configurable: true });
|
|
174
|
+
}
|
|
124
175
|
}
|
|
125
176
|
getSecretFields(configKey) {
|
|
126
177
|
return ConfigModels_1.ConfigModels.getModelInfo(configKey)?.secretFields ?? [];
|
|
127
178
|
}
|
|
179
|
+
getSecretStore() {
|
|
180
|
+
return this.secretStore ??= new AppConfigSecrets_1.AppConfigSecrets({ ...appConfigSecrets_config_1.appConfigSecrets, ...sails.config.appConfigSecrets });
|
|
181
|
+
}
|
|
182
|
+
async hydrateSecretFields(configKey, configData) {
|
|
183
|
+
if (configData == null)
|
|
184
|
+
return configData;
|
|
185
|
+
const hydrated = _.cloneDeep(configData);
|
|
186
|
+
for (const field of this.getSecretPaths(configKey, hydrated)) {
|
|
187
|
+
const value = _.get(hydrated, field);
|
|
188
|
+
if ((0, AppConfigSecrets_1.isAppConfigSecretReference)(value)) {
|
|
189
|
+
this.setExistingSecretPath(hydrated, field, await this.getSecretStore().resolve(value));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return hydrated;
|
|
193
|
+
}
|
|
194
|
+
async storeSecretFields(brandId, configKey, incoming, existing, lease) {
|
|
195
|
+
const provider = sails.config.appConfigSecrets?.provider ?? 'database';
|
|
196
|
+
if (provider !== 'database' && provider !== 'aws-secrets-manager') {
|
|
197
|
+
throw new Error('Unsupported appConfigSecrets.provider');
|
|
198
|
+
}
|
|
199
|
+
const layout = sails.config.appConfigSecrets?.layout ?? 'per-field';
|
|
200
|
+
if (layout !== 'per-field' && layout !== 'brand-json')
|
|
201
|
+
throw new Error('Unsupported appConfigSecrets.layout');
|
|
202
|
+
const bundle = provider === 'aws-secrets-manager' && layout === 'brand-json';
|
|
203
|
+
const changes = new Map();
|
|
204
|
+
const bundledFields = [];
|
|
205
|
+
// References are backend-owned. Forms submit only values, masks, or clear markers.
|
|
206
|
+
const incomingSecretPaths = this.getSecretPaths(configKey, incoming, true);
|
|
207
|
+
const existingSecretPaths = this.getSecretPaths(configKey, existing);
|
|
208
|
+
for (const field of incomingSecretPaths) {
|
|
209
|
+
const value = _.get(incoming, field);
|
|
210
|
+
if (value != null && typeof value !== 'string') {
|
|
211
|
+
throw new Error(`AppConfig secret field '${field.join('.')}' must be a string`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const hasBundledReferences = existingSecretPaths.some(field => {
|
|
215
|
+
const value = _.get(existing, field);
|
|
216
|
+
return (0, AppConfigSecrets_1.isAppConfigSecretReference)(value) && value.$appConfigSecret.key !== undefined;
|
|
217
|
+
});
|
|
218
|
+
if ((bundle && (incomingSecretPaths.length > 0 || existingSecretPaths.length > 0)) || hasBundledReferences) {
|
|
219
|
+
await this.getSecretStore().synchronizeBundle(brandId, 'save', lease);
|
|
220
|
+
}
|
|
221
|
+
const stored = this.mergeSecretFields(configKey, incoming, existing);
|
|
222
|
+
for (const field of this.getSecretPaths(configKey, stored, true)) {
|
|
223
|
+
const value = _.get(stored, field);
|
|
224
|
+
if ((0, AppConfigSecrets_1.isAppConfigSecretReference)(value)) {
|
|
225
|
+
if (bundle && value.$appConfigSecret.key === undefined) {
|
|
226
|
+
const key = JSON.stringify([configKey, ...field]);
|
|
227
|
+
changes.set(key, await this.getSecretStore().resolve(value));
|
|
228
|
+
bundledFields.push({ field, key });
|
|
229
|
+
}
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (!this.shouldMaskSecretValue(value))
|
|
233
|
+
continue;
|
|
234
|
+
const previous = _.get(existing, field);
|
|
235
|
+
// Bundled plaintext comparisons run under the distributed lease in
|
|
236
|
+
// storeBundle, so a stale local value cannot suppress a requested change.
|
|
237
|
+
if ((0, AppConfigSecrets_1.isAppConfigSecretReference)(previous) && !(bundle && previous.$appConfigSecret.key !== undefined)) {
|
|
238
|
+
let previousValue;
|
|
239
|
+
try {
|
|
240
|
+
previousValue = await this.getSecretStore().resolve(previous);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
// An explicit replacement can recover from a deleted/inaccessible old secret.
|
|
244
|
+
// Database mode must never turn an AWS reference into plaintext.
|
|
245
|
+
if (provider !== 'aws-secrets-manager')
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
if (value === previousValue && (!bundle || previous.$appConfigSecret.key !== undefined)) {
|
|
249
|
+
_.set(stored, field, previous);
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
if (provider === 'aws-secrets-manager') {
|
|
254
|
+
if (bundle) {
|
|
255
|
+
const key = JSON.stringify([configKey, ...field]);
|
|
256
|
+
changes.set(key, String(value));
|
|
257
|
+
bundledFields.push({ field, key });
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
_.set(stored, field, await this.getSecretStore().store(brandId, configKey, JSON.stringify(field), String(value)));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
else if ((0, AppConfigSecrets_1.isAppConfigSecretReference)(_.get(existing, field))) {
|
|
264
|
+
throw new Error('Enable AWS Secrets Manager to replace an externally stored AppConfig secret');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (bundle) {
|
|
268
|
+
// Remove cleared/omitted bundled fields without rewriting any other configuration key.
|
|
269
|
+
for (const field of this.getSecretPaths(configKey, existing)) {
|
|
270
|
+
const previous = _.get(existing, field);
|
|
271
|
+
if ((0, AppConfigSecrets_1.isAppConfigSecretReference)(previous) && previous.$appConfigSecret.key !== undefined && !this.shouldMaskSecretValue(_.get(stored, field))) {
|
|
272
|
+
changes.set(previous.$appConfigSecret.key, null);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
if (changes.size > 0) {
|
|
276
|
+
const arn = await this.getSecretStore().storeBundle(brandId, changes, lease);
|
|
277
|
+
if (bundledFields.length > 0 && !arn)
|
|
278
|
+
throw new Error('AWS Secrets Manager did not return a bundle ARN');
|
|
279
|
+
for (const { field, key } of bundledFields) {
|
|
280
|
+
_.set(stored, field, { $appConfigSecret: { provider: 'aws-secrets-manager', arn: arn, key } });
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return stored;
|
|
285
|
+
}
|
|
128
286
|
isMaskedSecretPlaceholder(value) {
|
|
129
287
|
return typeof value === 'string' && value === exports.APP_CONFIG_SECRET_MASK;
|
|
130
288
|
}
|
|
@@ -140,9 +298,9 @@ var Services;
|
|
|
140
298
|
return configData;
|
|
141
299
|
}
|
|
142
300
|
const masked = _.cloneDeep(configData);
|
|
143
|
-
|
|
301
|
+
this.getSecretPaths(configKey, masked).forEach((fieldPath) => {
|
|
144
302
|
if (_.has(masked, fieldPath) && this.shouldMaskSecretValue(_.get(masked, fieldPath))) {
|
|
145
|
-
|
|
303
|
+
this.setExistingSecretPath(masked, fieldPath, exports.APP_CONFIG_SECRET_MASK);
|
|
146
304
|
}
|
|
147
305
|
});
|
|
148
306
|
return masked;
|
|
@@ -153,7 +311,7 @@ var Services;
|
|
|
153
311
|
return incomingConfig;
|
|
154
312
|
}
|
|
155
313
|
const merged = _.cloneDeep(incomingConfig);
|
|
156
|
-
|
|
314
|
+
this.getSecretPaths(configKey, merged, true).forEach((fieldPath) => {
|
|
157
315
|
const incomingValue = _.get(merged, fieldPath);
|
|
158
316
|
if (this.isMaskedSecretPlaceholder(incomingValue)) {
|
|
159
317
|
if (existingConfig != null && _.has(existingConfig, fieldPath)) {
|
|
@@ -186,6 +344,16 @@ var Services;
|
|
|
186
344
|
getAppConfigurationForBrand(brandName) {
|
|
187
345
|
return _.get(this.brandingAppConfigMap, brandName, sails.config.brandingConfigurationDefaults == undefined ? {} : sails.config.brandingConfigurationDefaults);
|
|
188
346
|
}
|
|
347
|
+
/** Safe admin view; backend consumers continue to use the hydrated cache. */
|
|
348
|
+
getMaskedAppConfigurationForBrand(brandName, configKey) {
|
|
349
|
+
const configuration = this.getAppConfigurationForBrand(brandName);
|
|
350
|
+
const masked = _.cloneDeep(configuration);
|
|
351
|
+
for (const key of new Set([...ConfigModels_1.ConfigModels.getConfigKeys(), ...Object.keys(masked)])) {
|
|
352
|
+
if (_.has(masked, key))
|
|
353
|
+
_.set(masked, key, this.maskSecretFields(key, _.get(masked, key)));
|
|
354
|
+
}
|
|
355
|
+
return configKey ? _.get(masked, configKey, null) : masked;
|
|
356
|
+
}
|
|
189
357
|
getAllConfigurationForBrand = (brandId) => {
|
|
190
358
|
return AppConfig.find({ branding: brandId });
|
|
191
359
|
};
|
|
@@ -232,7 +400,7 @@ var Services;
|
|
|
232
400
|
}
|
|
233
401
|
return this.chooseLatestConfigRecord(records);
|
|
234
402
|
}
|
|
235
|
-
|
|
403
|
+
createDefaultConfiguration() {
|
|
236
404
|
const appConfiguration = {};
|
|
237
405
|
const modelNames = ConfigModels_1.ConfigModels.getConfigKeys();
|
|
238
406
|
for (const modelName of modelNames) {
|
|
@@ -246,13 +414,39 @@ var Services;
|
|
|
246
414
|
}
|
|
247
415
|
// grab any default branding configuration we're overriding in config
|
|
248
416
|
_.merge(appConfiguration, sails.config.brandingConfigurationDefaults);
|
|
417
|
+
return appConfiguration;
|
|
418
|
+
}
|
|
419
|
+
async loadAppConfigurationModel(brandId) {
|
|
420
|
+
const appConfiguration = this.createDefaultConfiguration();
|
|
249
421
|
const appConfigItems = await this.getAllConfigurationForBrand(brandId);
|
|
250
|
-
const latestAppConfigItems = this.reduceToLatestConfigRecords(appConfigItems)
|
|
251
|
-
|
|
422
|
+
const latestAppConfigItems = this.reduceToLatestConfigRecords(appConfigItems).filter(item => {
|
|
423
|
+
if (this.isSafeConfigKey(item.configKey))
|
|
424
|
+
return true;
|
|
425
|
+
sails.log.warn(`Skipping legacy AppConfig row with an unsafe configuration key for branding '${brandId}'. Review hook filenames and migrate the row explicitly.`);
|
|
426
|
+
return false;
|
|
427
|
+
});
|
|
428
|
+
if (this.reduceToLatestConfigRecords(appConfigItems).length !== appConfigItems.length) {
|
|
252
429
|
sails.log.warn(`Duplicate appconfig records detected for branding '${brandId}'. Using the most recently updated record for each config key.`);
|
|
253
430
|
}
|
|
431
|
+
// An explicit reload refreshes each distinct ARN once; all fields in a brand
|
|
432
|
+
// bundle share that request. Routine reads and saves reuse the resolved values.
|
|
433
|
+
const references = new Set();
|
|
434
|
+
let hasBundledReferences = false;
|
|
435
|
+
for (const item of latestAppConfigItems) {
|
|
436
|
+
for (const field of this.getSecretPaths(item.configKey, item.configData)) {
|
|
437
|
+
const value = _.get(item.configData, field);
|
|
438
|
+
if ((0, AppConfigSecrets_1.isAppConfigSecretReference)(value)) {
|
|
439
|
+
references.add(value.$appConfigSecret.arn);
|
|
440
|
+
hasBundledReferences ||= value.$appConfigSecret.key !== undefined;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
for (const arn of references)
|
|
445
|
+
this.secretStore?.invalidate(arn);
|
|
446
|
+
if (hasBundledReferences)
|
|
447
|
+
await this.getSecretStore().synchronizeBundle(brandId, 'load');
|
|
254
448
|
for (const appConfigItem of latestAppConfigItems) {
|
|
255
|
-
_.set(appConfiguration, appConfigItem.configKey, appConfigItem.configData);
|
|
449
|
+
_.set(appConfiguration, appConfigItem.configKey, await this.hydrateSecretFields(appConfigItem.configKey, appConfigItem.configData));
|
|
256
450
|
}
|
|
257
451
|
Object.defineProperty(appConfiguration, APP_CONFIG_PRESENT_KEYS_SYMBOL, {
|
|
258
452
|
value: new Set(latestAppConfigItems.map(item => item.configKey)),
|
|
@@ -262,6 +456,7 @@ var Services;
|
|
|
262
456
|
return appConfiguration;
|
|
263
457
|
}
|
|
264
458
|
async getAppConfigByBrandAndKey(brandId, configKey) {
|
|
459
|
+
this.assertSafeConfigKey(configKey);
|
|
265
460
|
const dbConfig = await this.findLatestConfigRecord(brandId, configKey);
|
|
266
461
|
// If no config exists in the DB return the default settings
|
|
267
462
|
if (dbConfig != null) {
|
|
@@ -283,7 +478,16 @@ var Services;
|
|
|
283
478
|
* operations: independent dashboard settings are revision-checked and live in
|
|
284
479
|
* the DashboardConfiguration model. The migration reads legacy rows directly.
|
|
285
480
|
*/
|
|
481
|
+
isSafeConfigKey(configKey) {
|
|
482
|
+
return typeof configKey === 'string' && configKey.length > 0 &&
|
|
483
|
+
!/[.[\]]/.test(configKey) && !['__proto__', 'prototype', 'constructor'].includes(configKey);
|
|
484
|
+
}
|
|
485
|
+
assertSafeConfigKey(configKey) {
|
|
486
|
+
if (!this.isSafeConfigKey(configKey))
|
|
487
|
+
throw new Error('AppConfig key must be a single safe configuration name');
|
|
488
|
+
}
|
|
286
489
|
assertWritableConfigKey(configKey) {
|
|
490
|
+
this.assertSafeConfigKey(configKey);
|
|
287
491
|
if (DashboardConfigService_1.RESERVED_DASHBOARD_APP_CONFIG_KEYS.includes(configKey)) {
|
|
288
492
|
const error = new Error(`Config key "${configKey}" is retired. Dashboard settings are managed through the dashboard configuration editor or /api/dashboard-config.`);
|
|
289
493
|
error.status = 410;
|
|
@@ -291,34 +495,80 @@ var Services;
|
|
|
291
495
|
throw error;
|
|
292
496
|
}
|
|
293
497
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
const
|
|
297
|
-
const
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
498
|
+
/** Order persistence/cache publication per key, or per brand for shared JSON bundles. */
|
|
499
|
+
async withConfigWriteLock(brandId, configKey, write) {
|
|
500
|
+
const bundle = sails.config.appConfigSecrets?.provider === 'aws-secrets-manager' && sails.config.appConfigSecrets.layout === 'brand-json';
|
|
501
|
+
const key = JSON.stringify([brandId, bundle ? null : configKey]);
|
|
502
|
+
const previous = this.configWriteGates.get(key) ?? Promise.resolve();
|
|
503
|
+
let release;
|
|
504
|
+
const gate = new Promise(resolve => { release = resolve; });
|
|
505
|
+
this.configWriteGates.set(key, gate);
|
|
506
|
+
await previous;
|
|
507
|
+
try {
|
|
508
|
+
const readAndWrite = async (lease) => write(await this.findLatestConfigRecord(brandId, configKey), lease);
|
|
509
|
+
// Acquire before reading the row, including saves that omit/clear every
|
|
510
|
+
// secret: another node may be adding one to this same key right now.
|
|
511
|
+
if (bundle && this.getSecretFields(configKey).length > 0) {
|
|
512
|
+
return await this.getSecretStore().withBundleSave(brandId, readAndWrite);
|
|
513
|
+
}
|
|
514
|
+
// Existing bundle references still require coordination after a layout
|
|
515
|
+
// or provider change. Re-read the row inside the lease in write().
|
|
516
|
+
const existing = await this.findLatestConfigRecord(brandId, configKey);
|
|
517
|
+
if (this.getSecretFields(configKey).length > 0) {
|
|
518
|
+
if (this.getSecretPaths(configKey, existing?.configData).some(field => {
|
|
519
|
+
const value = _.get(existing?.configData, field);
|
|
520
|
+
return (0, AppConfigSecrets_1.isAppConfigSecretReference)(value) && value.$appConfigSecret.key !== undefined;
|
|
521
|
+
}))
|
|
522
|
+
return await this.getSecretStore().withBundleSave(brandId, readAndWrite);
|
|
523
|
+
}
|
|
524
|
+
return await write(existing);
|
|
303
525
|
}
|
|
304
|
-
|
|
305
|
-
|
|
526
|
+
finally {
|
|
527
|
+
release();
|
|
528
|
+
if (this.configWriteGates.get(key) === gate)
|
|
529
|
+
this.configWriteGates.delete(key);
|
|
306
530
|
}
|
|
307
|
-
|
|
308
|
-
|
|
531
|
+
}
|
|
532
|
+
async createOrUpdateConfig(branding, configKey, configData) {
|
|
533
|
+
this.assertWritableConfigKey(configKey);
|
|
534
|
+
return this.withConfigWriteLock(String(branding.id), configKey, async (dbConfig, lease) => {
|
|
535
|
+
const preparedConfigData = this.prepareConfigModelForSave(configKey, configData);
|
|
536
|
+
const mergedConfigData = await this.storeSecretFields(String(branding.id), configKey, preparedConfigData, dbConfig?.configData ?? _.get(this.createDefaultConfiguration(), [configKey]), lease);
|
|
537
|
+
const hydrated = await this.hydrateSecretFields(configKey, mergedConfigData);
|
|
538
|
+
const nextCache = this.prepareBrandingCache(branding, configKey, hydrated);
|
|
539
|
+
if (lease)
|
|
540
|
+
await this.getSecretStore().checkBundleSave(lease);
|
|
541
|
+
// Hydrate and prepare defaults before persistence; cache publication needs no AWS reads.
|
|
542
|
+
let record;
|
|
543
|
+
if (dbConfig == null) {
|
|
544
|
+
record = await AppConfig.create({ branding: branding.id, configKey: configKey, configData: mergedConfigData });
|
|
545
|
+
}
|
|
546
|
+
else {
|
|
547
|
+
record = await AppConfig.updateOne({ branding: branding.id, configKey }).set({ configData: mergedConfigData });
|
|
548
|
+
}
|
|
549
|
+
// Rebase on the current cache in case a different key was saved while the DB write awaited.
|
|
550
|
+
this.brandingAppConfigMap[branding.name] = this.prepareBrandingCache(branding, configKey, hydrated, nextCache);
|
|
551
|
+
return this.maskSecretFields(configKey, record.configData);
|
|
552
|
+
});
|
|
309
553
|
}
|
|
310
554
|
async createConfig(brandName, configKey, configData) {
|
|
311
555
|
this.assertWritableConfigKey(configKey);
|
|
312
556
|
const branding = BrandingService.getBrand(brandName);
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
557
|
+
return this.withConfigWriteLock(String(branding.id), configKey, async (dbConfig, lease) => {
|
|
558
|
+
const preparedConfigData = this.prepareConfigModelForSave(configKey, configData);
|
|
559
|
+
// Create if no config exists
|
|
560
|
+
if (dbConfig == null) {
|
|
561
|
+
const stored = await this.storeSecretFields(String(branding.id), configKey, preparedConfigData, _.get(this.createDefaultConfiguration(), [configKey]), lease);
|
|
562
|
+
const hydrated = await this.hydrateSecretFields(configKey, stored);
|
|
563
|
+
const nextCache = this.prepareBrandingCache(branding, configKey, hydrated);
|
|
564
|
+
if (lease)
|
|
565
|
+
await this.getSecretStore().checkBundleSave(lease);
|
|
566
|
+
const createdRecord = await AppConfig.create({ branding: branding.id, configKey, configData: stored });
|
|
567
|
+
this.brandingAppConfigMap[branding.name] = this.prepareBrandingCache(branding, configKey, hydrated, nextCache);
|
|
568
|
+
return this.maskSecretFields(configKey, createdRecord.configData);
|
|
569
|
+
}
|
|
570
|
+
throw Error(`Config with key ${configKey} for branding ${brandName} already exists`);
|
|
571
|
+
});
|
|
322
572
|
}
|
|
323
573
|
async getAppConfigForm(branding, configForm) {
|
|
324
574
|
const appConfig = this.getAppConfigurationForBrand(branding.name);
|
|
@@ -406,4 +656,4 @@ var Services;
|
|
|
406
656
|
}
|
|
407
657
|
Services.AppConfigs = AppConfigs;
|
|
408
658
|
})(Services || (exports.Services = Services = {}));
|
|
409
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwQ29uZmlnU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9BcHBDb25maWdTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRkFBMEY7QUFDMUYsRUFBRTtBQUNGLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSx1RUFBdUU7QUFDdkUsb0VBQW9FO0FBQ3BFLHNDQUFzQztBQUN0QyxFQUFFO0FBQ0Ysa0VBQWtFO0FBQ2xFLGlFQUFpRTtBQUNqRSxnRUFBZ0U7QUFDaEUsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLDhEQUE4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSTlELGdEQUFzRDtBQUN0RCwrREFBK0c7QUFFL0cscUVBQThFO0FBRTlFLDREQUE4QztBQUM5QywrQkFBZ0M7QUFFbkIsUUFBQSxzQkFBc0IsR0FBRyxjQUFjLENBQUE7QUFDdkMsUUFBQSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQztBQUkxRCxNQUFNLDhCQUE4QixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztBQUVsRixJQUFpQixRQUFRLENBd1l4QjtBQXhZRCxXQUFpQixRQUFRO0lBQ3ZCOzs7O09BSUc7SUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUSxDQUFDLElBQUksQ0FBQyxPQUFPO1FBQ25ELG9CQUFvQixHQUFnSCxFQUFFLENBQUM7UUFDdkksY0FBYyxHQUE0QixFQUFFLENBQUM7UUFDckMsWUFBWSxHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTNCLGdCQUFnQixHQUFhO1lBQzlDLFdBQVc7WUFDWCw2QkFBNkI7WUFDN0IsMkJBQTJCO1lBQzNCLDZCQUE2QjtZQUM3QixzQkFBc0I7WUFDdEIsa0JBQWtCO1lBQ2xCLDJCQUEyQjtZQUMzQixjQUFjO1lBQ2Qs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
|
|
659
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwQ29uZmlnU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9BcHBDb25maWdTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwRkFBMEY7QUFDMUYsRUFBRTtBQUNGLDZCQUE2QjtBQUM3QiwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGLHVFQUF1RTtBQUN2RSx1RUFBdUU7QUFDdkUsb0VBQW9FO0FBQ3BFLHNDQUFzQztBQUN0QyxFQUFFO0FBQ0Ysa0VBQWtFO0FBQ2xFLGlFQUFpRTtBQUNqRSxnRUFBZ0U7QUFDaEUsK0NBQStDO0FBQy9DLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLDhEQUE4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSTlELGdEQUFzRDtBQUN0RCwrREFBK0c7QUFFL0cscUVBQThFO0FBRTlFLDREQUE4QztBQUM5QywrQkFBZ0M7QUFDaEMseURBQTZHO0FBQzdHLCtFQUFxRTtBQUV4RCxRQUFBLHNCQUFzQixHQUFHLGNBQWMsQ0FBQTtBQUN2QyxRQUFBLHVCQUF1QixHQUFHLGtCQUFrQixDQUFDO0FBSTFELE1BQU0sOEJBQThCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRWxGLElBQWlCLFFBQVEsQ0ErbUJ4QjtBQS9tQkQsV0FBaUIsUUFBUTtJQUN2Qjs7OztPQUlHO0lBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUNuRCxvQkFBb0IsR0FBZ0gsRUFBRSxDQUFDO1FBQ3ZJLGNBQWMsR0FBNEIsRUFBRSxDQUFDO1FBQ3JDLFlBQVksR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QyxXQUFXLENBQW9CO1FBQy9CLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO1FBRXpDLGdCQUFnQixHQUFhO1lBQzlDLFdBQVc7WUFDWCw2QkFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrandingThemeCssService.d.ts","sourceRoot":"","sources":["../../src/services/BrandingThemeCssService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAOtD,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAKnC,0FAA0F;AAC1F,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAYjE,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACxC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yBAAiB,QAAQ,CAAC;IACxB,MACa,gBAAiB,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QACzD,sBAAsB,IAAI,MAAM,EAAE;QAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;QAgBnC,OAAO,CAAC,YAAY;QAKpB,OAAO,CAAC,kBAAkB;QA4B1B,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAI5E,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"BrandingThemeCssService.d.ts","sourceRoot":"","sources":["../../src/services/BrandingThemeCssService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAOtD,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AAKnC,0FAA0F;AAC1F,eAAO,MAAM,yBAAyB,0BAA0B,CAAC;AAYjE,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACxC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yBAAiB,QAAQ,CAAC;IACxB,MACa,gBAAiB,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QACzD,sBAAsB,IAAI,MAAM,EAAE;QAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;QAgBnC,OAAO,CAAC,YAAY;QAKpB,OAAO,CAAC,kBAAkB;QA4B1B,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;QAI5E,OAAO,CAAC,gBAAgB;QAOxB,OAAO,CAAC,YAAY;QAgBpB,OAAO,CAAC,qBAAqB;QA+C7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,uBAAuB,GAAG;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE;QAc1G;;;;;WAKG;QACH,OAAO,CAAC,gBAAgB;KAgCzB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,uBAAuB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;CACxD"}
|