@researchdatabox/redbox-core 5.0.2 → 5.0.4-beta.12498
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/dist/AttachmentStagingIdentity.d.ts +3 -0
- package/dist/AttachmentStagingIdentity.d.ts.map +1 -0
- package/dist/AttachmentStagingIdentity.js +10 -0
- package/dist/CoreController.d.ts +7 -3
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +85 -3
- package/dist/DatastreamService.d.ts +4 -0
- package/dist/DatastreamService.d.ts.map +1 -1
- package/dist/HarvestRunService.d.ts +4 -3
- package/dist/HarvestRunService.d.ts.map +1 -1
- package/dist/HarvestRunService.js +1 -1
- package/dist/RecordConcurrencyObservability.d.ts +51 -0
- package/dist/RecordConcurrencyObservability.d.ts.map +1 -0
- package/dist/RecordConcurrencyObservability.js +136 -0
- package/dist/RecordEntityTag.d.ts +31 -0
- package/dist/RecordEntityTag.d.ts.map +1 -0
- package/dist/RecordEntityTag.js +101 -0
- package/dist/RecordFormFingerprint.d.ts +7 -0
- package/dist/RecordFormFingerprint.d.ts.map +1 -0
- package/dist/RecordFormFingerprint.js +106 -0
- package/dist/RecordHttpConcurrency.d.ts +60 -0
- package/dist/RecordHttpConcurrency.d.ts.map +1 -0
- package/dist/RecordHttpConcurrency.js +181 -0
- package/dist/RecordSaveResponse.d.ts +219 -0
- package/dist/RecordSaveResponse.d.ts.map +1 -0
- package/dist/RecordSaveResponse.js +639 -0
- package/dist/RecordStorageConcurrency.d.ts +48 -0
- package/dist/RecordStorageConcurrency.d.ts.map +1 -0
- package/dist/RecordStorageConcurrency.js +103 -0
- package/dist/RecordWriteClassification.d.ts +12 -0
- package/dist/RecordWriteClassification.d.ts.map +1 -0
- package/dist/RecordWriteClassification.js +70 -0
- package/dist/RecordsService.d.ts +105 -12
- package/dist/RecordsService.d.ts.map +1 -1
- package/dist/RecordsService.js +44 -1
- package/dist/SearchService.d.ts +2 -1
- package/dist/SearchService.d.ts.map +1 -1
- package/dist/StorageService.d.ts +48 -8
- package/dist/StorageService.d.ts.map +1 -1
- package/dist/StorageService.js +19 -1
- package/dist/StorageServiceResponse.d.ts +22 -1
- package/dist/StorageServiceResponse.d.ts.map +1 -1
- package/dist/StorageServiceResponse.js +22 -4
- package/dist/action-execution/audit.d.ts +41 -0
- package/dist/action-execution/audit.d.ts.map +1 -0
- package/dist/action-execution/audit.js +122 -0
- package/dist/action-execution/executor.d.ts +24 -0
- package/dist/action-execution/executor.d.ts.map +1 -0
- package/dist/action-execution/executor.js +435 -0
- package/dist/action-execution/failure.d.ts +49 -0
- package/dist/action-execution/failure.d.ts.map +1 -0
- package/dist/action-execution/failure.js +129 -0
- package/dist/action-execution/index.d.ts +7 -0
- package/dist/action-execution/index.d.ts.map +1 -0
- package/dist/action-execution/index.js +23 -0
- package/dist/action-execution/legacy-result.d.ts +21 -0
- package/dist/action-execution/legacy-result.d.ts.map +1 -0
- package/dist/action-execution/legacy-result.js +70 -0
- package/dist/action-execution/policy.d.ts +12 -0
- package/dist/action-execution/policy.d.ts.map +1 -0
- package/dist/action-execution/policy.js +138 -0
- package/dist/action-execution/types.d.ts +121 -0
- package/dist/action-execution/types.d.ts.map +1 -0
- package/dist/action-execution/types.js +22 -0
- package/dist/api-routes/groups/branding.d.ts +8 -0
- package/dist/api-routes/groups/branding.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.js +86 -11
- package/dist/api-routes/groups/dashboard-config.d.ts +12 -9
- package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
- package/dist/api-routes/groups/dashboard-config.js +136 -73
- package/dist/api-routes/groups/forms.d.ts.map +1 -1
- package/dist/api-routes/groups/forms.js +10 -2
- package/dist/api-routes/groups/record-schemas.d.ts +5 -0
- package/dist/api-routes/groups/record-schemas.d.ts.map +1 -0
- package/dist/api-routes/groups/record-schemas.js +181 -0
- package/dist/api-routes/groups/records.d.ts +1 -0
- package/dist/api-routes/groups/records.d.ts.map +1 -1
- package/dist/api-routes/groups/records.js +141 -26
- package/dist/api-routes/index.d.ts +3 -0
- package/dist/api-routes/index.d.ts.map +1 -1
- package/dist/api-routes/index.js +4 -1
- package/dist/api-routes/openapi.d.ts.map +1 -1
- package/dist/api-routes/openapi.js +7 -5
- package/dist/api-routes/record-schema-openapi.d.ts +26 -0
- package/dist/api-routes/record-schema-openapi.d.ts.map +1 -0
- package/dist/api-routes/record-schema-openapi.js +38 -0
- package/dist/api-routes/record-schema-response.d.ts +40 -0
- package/dist/api-routes/record-schema-response.d.ts.map +1 -0
- package/dist/api-routes/record-schema-response.js +89 -0
- package/dist/api-routes/request-extraction.d.ts.map +1 -1
- package/dist/api-routes/request-extraction.js +10 -8
- package/dist/api-routes/route-factory.d.ts.map +1 -1
- package/dist/api-routes/route-factory.js +2 -1
- package/dist/api-routes/route-registry.d.ts.map +1 -1
- package/dist/api-routes/route-registry.js +3 -1
- package/dist/api-routes/schemas/common.d.ts +36 -0
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +95 -5
- package/dist/api-routes/schemas/responses.d.ts +1424 -1
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +382 -60
- package/dist/api-routes/types.d.ts +1 -0
- package/dist/api-routes/types.d.ts.map +1 -1
- package/dist/api-routes/validation.d.ts +5 -1
- package/dist/api-routes/validation.d.ts.map +1 -1
- package/dist/api-routes/validation.js +14 -15
- package/dist/bootstrap.d.ts +3 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +58 -41
- package/dist/config/agendaQueue.config.d.ts +3 -0
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +29 -2
- package/dist/config/branding.config.d.ts +13 -0
- package/dist/config/branding.config.d.ts.map +1 -1
- package/dist/config/branding.config.js +34 -2
- package/dist/config/brandingConfigurationDefaults.config.d.ts +4 -0
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +42 -3
- package/dist/config/index.d.ts +12 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +7 -4
- package/dist/config/policies.config.d.ts.map +1 -1
- package/dist/config/policies.config.js +37 -23
- package/dist/config/raid.config.d.ts +7 -4
- package/dist/config/raid.config.d.ts.map +1 -1
- package/dist/config/raid.config.js +21 -35
- package/dist/config/record.config.d.ts +3 -0
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +37 -35
- package/dist/config/recordSchema.config.d.ts +68 -0
- package/dist/config/recordSchema.config.d.ts.map +1 -0
- package/dist/config/recordSchema.config.js +173 -0
- package/dist/config/recordValidation.config.d.ts +19 -0
- package/dist/config/recordValidation.config.d.ts.map +1 -0
- package/dist/config/recordValidation.config.js +10 -0
- package/dist/config/recordtype.config.d.ts +32 -9
- package/dist/config/recordtype.config.d.ts.map +1 -1
- package/dist/config/recordtype.config.js +4 -7
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +135 -53
- package/dist/config/workflow.config.d.ts +6 -0
- package/dist/config/workflow.config.d.ts.map +1 -1
- package/dist/config/workflow.config.js +1 -1
- package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
- package/dist/configmodels/AdminSidebarConfig.js +4 -2
- package/dist/configmodels/ConfigModels.d.ts +1 -1
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +26 -9
- package/dist/configmodels/DashboardFieldCatalogue.d.ts +67 -0
- package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +1 -0
- package/dist/configmodels/DashboardFieldCatalogue.js +174 -0
- package/dist/configmodels/DashboardSettings.d.ts +191 -0
- package/dist/configmodels/DashboardSettings.d.ts.map +1 -0
- package/dist/configmodels/DashboardSettings.js +705 -0
- package/dist/configmodels/OniPublishing.d.ts +205 -0
- package/dist/configmodels/OniPublishing.d.ts.map +1 -0
- package/dist/configmodels/OniPublishing.js +335 -0
- package/dist/configmodels/RaidPublishing.d.ts +97 -0
- package/dist/configmodels/RaidPublishing.d.ts.map +1 -0
- package/dist/configmodels/RaidPublishing.js +35 -0
- package/dist/configmodels/WebAnalytics.d.ts +55 -0
- package/dist/configmodels/WebAnalytics.d.ts.map +1 -0
- package/dist/configmodels/WebAnalytics.js +61 -0
- package/dist/controllers/AppConfigController.d.ts.map +1 -1
- package/dist/controllers/AppConfigController.js +4 -1
- package/dist/controllers/BrandingAppController.d.ts +29 -7
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +265 -69
- package/dist/controllers/BrandingController.d.ts +24 -1
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +173 -43
- package/dist/controllers/BrandingControllerSupport.d.ts +20 -0
- package/dist/controllers/BrandingControllerSupport.d.ts.map +1 -0
- package/dist/controllers/BrandingControllerSupport.js +80 -0
- package/dist/controllers/DashboardConfigController.d.ts +6 -2
- package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
- package/dist/controllers/DashboardConfigController.js +18 -4
- package/dist/controllers/DynamicAssetController.d.ts +7 -5
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +21 -12
- package/dist/controllers/RecordController.d.ts +46 -5
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +815 -347
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +4 -1
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
- package/dist/controllers/webservice/AdminController.js +4 -3
- package/dist/controllers/webservice/BrandingController.d.ts +26 -1
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
- package/dist/controllers/webservice/BrandingController.js +292 -116
- package/dist/controllers/webservice/DashboardConfigController.d.ts +25 -17
- package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
- package/dist/controllers/webservice/DashboardConfigController.js +90 -205
- package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/FormManagementController.js +37 -3
- package/dist/controllers/webservice/RecordController.d.ts +15 -1
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +664 -271
- package/dist/controllers/webservice/RecordSchemaController.d.ts +32 -0
- package/dist/controllers/webservice/RecordSchemaController.d.ts.map +1 -0
- package/dist/controllers/webservice/RecordSchemaController.js +356 -0
- package/dist/controllers/webservice/RecordTypeController.d.ts +6 -1
- package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordTypeController.js +21 -3
- package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
- package/dist/controllers/webservice/SearchController.js +7 -3
- package/dist/hooks/defineRedboxHook.d.ts +3 -0
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
- package/dist/hooks/defineRedboxHook.js +4 -1
- package/dist/index.d.ts +50 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -2
- package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
- package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
- package/dist/loader/bootstrapShimRuntime.js +20 -12
- package/dist/loader/index.d.ts +9 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +93 -4
- package/dist/model/BrandingTypeface.d.ts +70 -0
- package/dist/model/BrandingTypeface.d.ts.map +1 -0
- package/dist/model/BrandingTypeface.js +116 -0
- package/dist/model/BuildResponse.d.ts +25 -11
- package/dist/model/BuildResponse.d.ts.map +1 -1
- package/dist/model/BuildResponse.js +4 -3
- package/dist/model/DashboardTypeResponseModel.d.ts +6 -0
- package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardTypeResponseModel.js +7 -1
- package/dist/model/DashboardViewResponseModel.d.ts +5 -1
- package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardViewResponseModel.js +6 -3
- package/dist/model/RBValidationError.d.ts +17 -0
- package/dist/model/RBValidationError.d.ts.map +1 -1
- package/dist/model/RBValidationError.js +37 -1
- package/dist/model/RecordTypeResponseModel.d.ts +12 -4
- package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
- package/dist/model/RecordTypeResponseModel.js +11 -2
- package/dist/model/index.d.ts +5 -1
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +5 -2
- package/dist/model/record-contract.d.ts +42 -0
- package/dist/model/record-contract.d.ts.map +1 -0
- package/dist/model/record-contract.js +3 -0
- package/dist/model/storage/BrandingModel.d.ts +7 -0
- package/dist/model/storage/BrandingModel.d.ts.map +1 -1
- package/dist/model/storage/BrandingModel.js +7 -1
- package/dist/model/storage/DeletedRecordModel.d.ts +35 -0
- package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
- package/dist/model/storage/DeletedRecordModel.js +62 -1
- package/dist/model/storage/IntegrationAuditModel.d.ts +16 -2
- package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
- package/dist/model/storage/IntegrationAuditModel.js +15 -1
- package/dist/model/storage/RecordAuditModel.d.ts +11 -1
- package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
- package/dist/model/storage/RecordAuditModel.js +8 -2
- package/dist/model/storage/RecordModel.d.ts +6 -0
- package/dist/model/storage/RecordModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.d.ts +6 -0
- package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.js +4 -1
- package/dist/model/storage/index.d.ts +12 -10
- package/dist/model/storage/index.d.ts.map +1 -1
- package/dist/model/storage/index.js +24 -2
- package/dist/model/storage/record-schema.d.ts +115 -0
- package/dist/model/storage/record-schema.d.ts.map +1 -0
- package/dist/model/storage/record-schema.js +3 -0
- package/dist/policies/checkAuth.d.ts +2 -6
- package/dist/policies/checkAuth.d.ts.map +1 -1
- package/dist/policies/checkAuth.js +32 -9
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
- package/dist/policies/contentSecurityPolicy.js +85 -2
- package/dist/policies/index.d.ts +3 -2
- package/dist/policies/index.d.ts.map +1 -1
- package/dist/policies/index.js +4 -2
- package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
- package/dist/policies/validateApiContractRequest.js +49 -11
- package/dist/record-contract/ajv-error-mapper.d.ts +34 -0
- package/dist/record-contract/ajv-error-mapper.d.ts.map +1 -0
- package/dist/record-contract/ajv-error-mapper.js +153 -0
- package/dist/record-contract/canonical-json.d.ts +20 -0
- package/dist/record-contract/canonical-json.d.ts.map +1 -0
- package/dist/record-contract/canonical-json.js +126 -0
- package/dist/record-contract/codes.d.ts +36 -0
- package/dist/record-contract/codes.d.ts.map +1 -0
- package/dist/record-contract/codes.js +38 -0
- package/dist/record-contract/contributor-registry.d.ts +76 -0
- package/dist/record-contract/contributor-registry.d.ts.map +1 -0
- package/dist/record-contract/contributor-registry.js +126 -0
- package/dist/record-contract/core-contributors.d.ts +44 -0
- package/dist/record-contract/core-contributors.d.ts.map +1 -0
- package/dist/record-contract/core-contributors.js +395 -0
- package/dist/record-contract/deep-freeze.d.ts +3 -0
- package/dist/record-contract/deep-freeze.d.ts.map +1 -0
- package/dist/record-contract/deep-freeze.js +23 -0
- package/dist/record-contract/index.d.ts +13 -0
- package/dist/record-contract/index.d.ts.map +1 -0
- package/dist/record-contract/index.js +29 -0
- package/dist/record-contract/json-pointer.d.ts +20 -0
- package/dist/record-contract/json-pointer.d.ts.map +1 -0
- package/dist/record-contract/json-pointer.js +70 -0
- package/dist/record-contract/json-schema-renderer.d.ts +51 -0
- package/dist/record-contract/json-schema-renderer.d.ts.map +1 -0
- package/dist/record-contract/json-schema-renderer.js +450 -0
- package/dist/record-contract/record-contract-compiler.d.ts +42 -0
- package/dist/record-contract/record-contract-compiler.d.ts.map +1 -0
- package/dist/record-contract/record-contract-compiler.js +775 -0
- package/dist/record-contract/record-contract-context.d.ts +91 -0
- package/dist/record-contract/record-contract-context.d.ts.map +1 -0
- package/dist/record-contract/record-contract-context.js +39 -0
- package/dist/record-contract/record-json-schema-artifact.d.ts +74 -0
- package/dist/record-contract/record-json-schema-artifact.d.ts.map +1 -0
- package/dist/record-contract/record-json-schema-artifact.js +309 -0
- package/dist/record-contract/record-json-schema-etag.d.ts +15 -0
- package/dist/record-contract/record-json-schema-etag.d.ts.map +1 -0
- package/dist/record-contract/record-json-schema-etag.js +41 -0
- package/dist/record-contract/types.d.ts +151 -0
- package/dist/record-contract/types.d.ts.map +1 -0
- package/dist/record-contract/types.js +6 -0
- package/dist/services/AppConfigService.d.ts +6 -0
- package/dist/services/AppConfigService.d.ts.map +1 -1
- package/dist/services/AppConfigService.js +23 -1
- package/dist/services/AttachmentMetadataService.d.ts +58 -0
- package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
- package/dist/services/AttachmentMetadataService.js +643 -8
- package/dist/services/BrandingLogoService.d.ts +6 -1
- package/dist/services/BrandingLogoService.d.ts.map +1 -1
- package/dist/services/BrandingLogoService.js +77 -9
- package/dist/services/BrandingService.d.ts +171 -9
- package/dist/services/BrandingService.d.ts.map +1 -1
- package/dist/services/BrandingService.js +572 -68
- package/dist/services/BrandingThemeCssService.d.ts +17 -1
- package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
- package/dist/services/BrandingThemeCssService.js +71 -9
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
- package/dist/services/BrandingThemeTokens.js +2 -1
- package/dist/services/BrandingTypefaceService.d.ts +74 -0
- package/dist/services/BrandingTypefaceService.d.ts.map +1 -0
- package/dist/services/BrandingTypefaceService.js +359 -0
- package/dist/services/BrandingWoff2Inspector.d.ts +17 -0
- package/dist/services/BrandingWoff2Inspector.d.ts.map +1 -0
- package/dist/services/BrandingWoff2Inspector.js +402 -0
- package/dist/services/DashboardConfigService.d.ts +214 -54
- package/dist/services/DashboardConfigService.d.ts.map +1 -1
- package/dist/services/DashboardConfigService.js +829 -261
- package/dist/services/DashboardLegacyConversion.d.ts +82 -0
- package/dist/services/DashboardLegacyConversion.d.ts.map +1 -0
- package/dist/services/DashboardLegacyConversion.js +427 -0
- package/dist/services/DashboardTypesService.d.ts +15 -4
- package/dist/services/DashboardTypesService.d.ts.map +1 -1
- package/dist/services/DashboardTypesService.js +72 -139
- package/dist/services/DoiService.d.ts +1 -1
- package/dist/services/DoiService.d.ts.map +1 -1
- package/dist/services/DoiService.js +71 -45
- package/dist/services/FigshareService.d.ts +1 -1
- package/dist/services/FigshareService.d.ts.map +1 -1
- package/dist/services/FigshareService.js +73 -32
- package/dist/services/FormRecordConsistencyService.d.ts +8 -23
- package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
- package/dist/services/FormRecordConsistencyService.js +54 -70
- package/dist/services/FormsService.d.ts +91 -2
- package/dist/services/FormsService.d.ts.map +1 -1
- package/dist/services/FormsService.js +324 -64
- package/dist/services/HarvestRunService.d.ts +6 -3
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +161 -97
- package/dist/services/I18nEntriesService.d.ts +1 -0
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +26 -6
- package/dist/services/OniService.d.ts +19 -62
- package/dist/services/OniService.d.ts.map +1 -1
- package/dist/services/OniService.js +223 -691
- package/dist/services/RDMPService.d.ts +1 -1
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +5 -5
- package/dist/services/RaidService.d.ts +19 -61
- package/dist/services/RaidService.d.ts.map +1 -1
- package/dist/services/RaidService.js +191 -530
- package/dist/services/RecordSchemaService.d.ts +440 -0
- package/dist/services/RecordSchemaService.d.ts.map +1 -0
- package/dist/services/RecordSchemaService.js +3061 -0
- package/dist/services/RecordTypesService.d.ts +29 -0
- package/dist/services/RecordTypesService.d.ts.map +1 -1
- package/dist/services/RecordTypesService.js +106 -11
- package/dist/services/RecordValidationService.d.ts +340 -0
- package/dist/services/RecordValidationService.d.ts.map +1 -0
- package/dist/services/RecordValidationService.js +1898 -0
- package/dist/services/RecordsService.d.ts +313 -22
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +4948 -509
- package/dist/services/SolrSearchService.d.ts +1 -1
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +42 -12
- package/dist/services/StandardDatastreamService.d.ts +4 -0
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +109 -45
- package/dist/services/TriggerService.d.ts.map +1 -1
- package/dist/services/TriggerService.js +54 -30
- package/dist/services/UsersService.d.ts +2 -1
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +364 -283
- package/dist/services/VocabularyService.d.ts +2 -0
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +61 -2
- package/dist/services/WorkflowStepsService.d.ts +11 -0
- package/dist/services/WorkflowStepsService.d.ts.map +1 -1
- package/dist/services/WorkflowStepsService.js +32 -3
- package/dist/services/WorkspaceService.d.ts +2 -2
- package/dist/services/WorkspaceService.d.ts.map +1 -1
- package/dist/services/WorkspaceService.js +5 -5
- package/dist/services/doi-v2/bindings.d.ts.map +1 -1
- package/dist/services/doi-v2/bindings.js +3 -20
- package/dist/services/doi-v2/config.d.ts +1 -0
- package/dist/services/doi-v2/config.d.ts.map +1 -1
- package/dist/services/doi-v2/config.js +13 -5
- package/dist/services/doi-v2/runtime.d.ts.map +1 -1
- package/dist/services/doi-v2/runtime.js +14 -54
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
- package/dist/services/figshare-v2/bindings.js +3 -20
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +11 -58
- package/dist/services/form-record-access-user.d.ts +3 -0
- package/dist/services/form-record-access-user.d.ts.map +1 -0
- package/dist/services/form-record-access-user.js +23 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +45 -3
- package/dist/services/integration-v2/bindings.d.ts +3 -0
- package/dist/services/integration-v2/bindings.d.ts.map +1 -0
- package/dist/services/integration-v2/bindings.js +91 -0
- package/dist/services/integration-v2/runtime.d.ts +3 -0
- package/dist/services/integration-v2/runtime.d.ts.map +1 -0
- package/dist/services/integration-v2/runtime.js +50 -0
- package/dist/services/internal-record-schema-authorization.d.ts +8 -0
- package/dist/services/internal-record-schema-authorization.d.ts.map +1 -0
- package/dist/services/internal-record-schema-authorization.js +16 -0
- package/dist/services/oni-v2/audit.d.ts +19 -0
- package/dist/services/oni-v2/audit.d.ts.map +1 -0
- package/dist/services/oni-v2/audit.js +50 -0
- package/dist/services/oni-v2/bindings.d.ts +7 -0
- package/dist/services/oni-v2/bindings.d.ts.map +1 -0
- package/dist/services/oni-v2/bindings.js +31 -0
- package/dist/services/oni-v2/config.d.ts +12 -0
- package/dist/services/oni-v2/config.d.ts.map +1 -0
- package/dist/services/oni-v2/config.js +134 -0
- package/dist/services/oni-v2/context.d.ts +3 -0
- package/dist/services/oni-v2/context.d.ts.map +1 -0
- package/dist/services/oni-v2/context.js +17 -0
- package/dist/services/oni-v2/crate.d.ts +17 -0
- package/dist/services/oni-v2/crate.d.ts.map +1 -0
- package/dist/services/oni-v2/crate.js +504 -0
- package/dist/services/oni-v2/flydriveOcflStore.d.ts +69 -0
- package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +1 -0
- package/dist/services/oni-v2/flydriveOcflStore.js +325 -0
- package/dist/services/oni-v2/ingestion.d.ts +37 -0
- package/dist/services/oni-v2/ingestion.d.ts.map +1 -0
- package/dist/services/oni-v2/ingestion.js +91 -0
- package/dist/services/oni-v2/mapping.d.ts +17 -0
- package/dist/services/oni-v2/mapping.d.ts.map +1 -0
- package/dist/services/oni-v2/mapping.js +137 -0
- package/dist/services/oni-v2/repository.d.ts +9 -0
- package/dist/services/oni-v2/repository.d.ts.map +1 -0
- package/dist/services/oni-v2/repository.js +180 -0
- package/dist/services/oni-v2/runtime.d.ts +23 -0
- package/dist/services/oni-v2/runtime.d.ts.map +1 -0
- package/dist/services/oni-v2/runtime.js +121 -0
- package/dist/services/oni-v2/templating.d.ts +11 -0
- package/dist/services/oni-v2/templating.d.ts.map +1 -0
- package/dist/services/oni-v2/templating.js +27 -0
- package/dist/services/oni-v2/types.d.ts +100 -0
- package/dist/services/oni-v2/types.d.ts.map +1 -0
- package/dist/services/oni-v2/types.js +3 -0
- package/dist/services/raid-v2/audit.d.ts +10 -0
- package/dist/services/raid-v2/audit.d.ts.map +1 -0
- package/dist/services/raid-v2/audit.js +29 -0
- package/dist/services/raid-v2/errors.d.ts +85 -0
- package/dist/services/raid-v2/errors.d.ts.map +1 -0
- package/dist/services/raid-v2/errors.js +36 -0
- package/dist/services/raid-v2/http.d.ts +4 -0
- package/dist/services/raid-v2/http.d.ts.map +1 -0
- package/dist/services/raid-v2/http.js +84 -0
- package/dist/services/raid-v2/logger.d.ts +8 -0
- package/dist/services/raid-v2/logger.d.ts.map +1 -0
- package/dist/services/raid-v2/logger.js +30 -0
- package/dist/services/raid-v2/mapping.d.ts +9 -0
- package/dist/services/raid-v2/mapping.d.ts.map +1 -0
- package/dist/services/raid-v2/mapping.js +168 -0
- package/dist/services/raid-v2/runtime.d.ts +5 -0
- package/dist/services/raid-v2/runtime.d.ts.map +1 -0
- package/dist/services/raid-v2/runtime.js +135 -0
- package/dist/services/raid-v2/tags.d.ts +11 -0
- package/dist/services/raid-v2/tags.d.ts.map +1 -0
- package/dist/services/raid-v2/tags.js +12 -0
- package/dist/services/raid-v2/types.d.ts +66 -0
- package/dist/services/raid-v2/types.d.ts.map +1 -0
- package/dist/services/raid-v2/types.js +3 -0
- package/dist/services/record-hooks/coordinator.d.ts +64 -0
- package/dist/services/record-hooks/coordinator.d.ts.map +1 -0
- package/dist/services/record-hooks/coordinator.js +276 -0
- package/dist/visitor/client.visitor.d.ts +6 -0
- package/dist/visitor/client.visitor.d.ts.map +1 -1
- package/dist/visitor/client.visitor.js +59 -14
- package/dist/visitor/construct.visitor.d.ts +27 -1
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +265 -177
- package/dist/visitor/context-variables.visitor.d.ts +3 -1
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
- package/dist/visitor/context-variables.visitor.js +15 -1
- package/dist/visitor/data-value.visitor.d.ts +6 -0
- package/dist/visitor/data-value.visitor.d.ts.map +1 -1
- package/dist/visitor/data-value.visitor.js +10 -1
- package/dist/visitor/json-type-def.visitor.d.ts +6 -0
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
- package/dist/visitor/json-type-def.visitor.js +10 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +11 -0
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +228 -133
- package/dist/visitor/related-object-data-inline.visitor.d.ts +31 -0
- package/dist/visitor/related-object-data-inline.visitor.d.ts.map +1 -0
- package/dist/visitor/related-object-data-inline.visitor.js +96 -0
- package/dist/visitor/template.visitor.d.ts +17 -2
- package/dist/visitor/template.visitor.d.ts.map +1 -1
- package/dist/visitor/template.visitor.js +60 -22
- package/dist/visitor/validator.visitor.d.ts +49 -7
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +275 -178
- package/dist/waterline-models/AttachmentMetadata.d.ts +22 -0
- package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
- package/dist/waterline-models/AttachmentMetadata.js +147 -3
- package/dist/waterline-models/BrandingConfig.d.ts +7 -0
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +16 -1
- package/dist/waterline-models/BrandingConfigHistory.d.ts +11 -2
- package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfigHistory.js +21 -1
- package/dist/waterline-models/DashboardConfiguration.d.ts +29 -0
- package/dist/waterline-models/DashboardConfiguration.d.ts.map +1 -0
- package/dist/waterline-models/DashboardConfiguration.js +52 -0
- package/dist/waterline-models/RecordType.d.ts +9 -0
- package/dist/waterline-models/RecordType.d.ts.map +1 -1
- package/dist/waterline-models/RecordType.js +16 -1
- package/dist/waterline-models/User.d.ts.map +1 -1
- package/dist/waterline-models/User.js +10 -15
- 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/package.json +60 -47
- package/dist/config/datapubs.config.d.ts +0 -72
- package/dist/config/datapubs.config.d.ts.map +0 -1
- package/dist/config/datapubs.config.js +0 -74
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
+
import { type RecordConcurrentModificationConfig, type RecordConcurrentModificationMode } from '@researchdatabox/sails-ng-common';
|
|
2
3
|
import { Services as services } from '../CoreService';
|
|
3
4
|
import { BrandingModel } from '../model/storage/BrandingModel';
|
|
4
5
|
import { RecordTypeModel } from '../model/storage/RecordTypeModel';
|
|
6
|
+
import { type RecordSchemaConfigurationProblem } from '../config/recordSchema.config';
|
|
7
|
+
export declare class RecordTypeRecordSchemaConfigurationError extends TypeError {
|
|
8
|
+
readonly problems: readonly RecordSchemaConfigurationProblem[];
|
|
9
|
+
constructor(problems: readonly RecordSchemaConfigurationProblem[]);
|
|
10
|
+
}
|
|
5
11
|
export declare namespace Services {
|
|
6
12
|
/**
|
|
7
13
|
* WorkflowSteps related functions...
|
|
@@ -13,12 +19,35 @@ export declare namespace Services {
|
|
|
13
19
|
protected _exportedMethods: string[];
|
|
14
20
|
protected recordTypes: RecordTypeModel[];
|
|
15
21
|
bootstrap(defBrand: BrandingModel): Promise<RecordTypeModel[]>;
|
|
22
|
+
/**
|
|
23
|
+
* Persist a record type from configuration. Concurrency policy is
|
|
24
|
+
* normalized here, at the boundary where configuration enters storage, so
|
|
25
|
+
* a malformed mode fails the lift instead of being discovered by the first
|
|
26
|
+
* conditional write.
|
|
27
|
+
*/
|
|
16
28
|
create(brand: BrandingModel, name: string, config: RecordTypeModel & {
|
|
17
29
|
dashboard?: unknown;
|
|
18
30
|
}): Observable<RecordTypeModel>;
|
|
19
31
|
get(brand: BrandingModel, name: string, fields?: string[] | null): Observable<RecordTypeModel>;
|
|
20
32
|
getAll(brand: BrandingModel, fields?: string[] | null): Observable<RecordTypeModel[]>;
|
|
21
33
|
getAllCache(): RecordTypeModel[];
|
|
34
|
+
private configuredStorageService;
|
|
35
|
+
private assertRecordSchemaConfig;
|
|
36
|
+
private assertRecordSchemaConfigs;
|
|
37
|
+
private assertStrictStorageCapabilities;
|
|
38
|
+
/** Used both at startup and again when a mutation resolves current policy. */
|
|
39
|
+
assertConcurrentModificationCapability(mode: RecordConcurrentModificationMode): void;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve concurrency policy from the authoritative stored record type.
|
|
42
|
+
*
|
|
43
|
+
* This reads storage on every call, so an administrator's policy change
|
|
44
|
+
* applies to existing records the next time one of their requests resolves
|
|
45
|
+
* policy. Request bodies, headers, and save candidates never reach this
|
|
46
|
+
* boundary, and an unresolvable or malformed policy fails closed rather
|
|
47
|
+
* than silently degrading to last-write-wins.
|
|
48
|
+
*/
|
|
49
|
+
resolveConcurrentModificationPolicy(brand: BrandingModel, name: string): Observable<RecordConcurrentModificationConfig>;
|
|
50
|
+
resolveConcurrentModificationMode(brand: BrandingModel, name: string): Observable<RecordConcurrentModificationMode>;
|
|
22
51
|
}
|
|
23
52
|
}
|
|
24
53
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecordTypesService.d.ts","sourceRoot":"","sources":["../../src/services/RecordTypesService.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"RecordTypesService.d.ts","sourceRoot":"","sources":["../../src/services/RecordTypesService.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,UAAU,EAAuB,MAAM,MAAM,CAAC;AACvD,OAAO,EAEL,KAAK,kCAAkC,EACvC,KAAK,gCAAgC,EACtC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAGL,KAAK,gCAAgC,EACtC,MAAM,+BAA+B,CAAC;AAEvC,qBAAa,wCAAyC,SAAQ,SAAS;IACrE,SAAgB,QAAQ,EAAE,SAAS,gCAAgC,EAAE,CAAC;gBAEnD,QAAQ,EAAE,SAAS,gCAAgC,EAAE;CAUzE;AAED,yBAAiB,QAAQ,CAAC;IACxB;;;;;OAKG;IACH,MAAa,WAAY,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QACpD,UAAmB,gBAAgB,EAAE,MAAM,EAAE,CAS3C;QAEF,SAAS,CAAC,WAAW,EAAG,eAAe,EAAE,CAAC;QAE7B,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QA+C3E;;;;;WAKG;QACI,MAAM,CACX,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,GAAG;YAAE,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,GAChD,UAAU,CAAC,eAAe,CAAC;QAsBvB,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,EAAE,GAAG,IAAW,GAAG,UAAU,CAAC,eAAe,CAAC;QAUpG,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,GAAE,MAAM,EAAE,GAAG,IAAW,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;QAQ3F,WAAW,IAAI,eAAe,EAAE;QAIvC,OAAO,CAAC,wBAAwB;QAKhC,OAAO,CAAC,wBAAwB;QAShC,OAAO,CAAC,yBAAyB;QAQjC,OAAO,CAAC,+BAA+B;QAOvC,8EAA8E;QACvE,sCAAsC,CAAC,IAAI,EAAE,gCAAgC,GAAG,IAAI;QAI3F;;;;;;;;WAQG;QACI,mCAAmC,CACxC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,GACX,UAAU,CAAC,kCAAkC,CAAC;QAa1C,iCAAiC,CACtC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,GACX,UAAU,CAAC,gCAAgC,CAAC;KAGhD;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,kBAAkB,EAAE,QAAQ,CAAC,WAAW,CAAC;CAC9C"}
|
|
@@ -18,9 +18,24 @@
|
|
|
18
18
|
// with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
19
|
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.Services = void 0;
|
|
21
|
+
exports.Services = exports.RecordTypeRecordSchemaConfigurationError = void 0;
|
|
22
22
|
const rxjs_1 = require("rxjs");
|
|
23
|
+
const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
|
|
23
24
|
const CoreService_1 = require("../CoreService");
|
|
25
|
+
const RecordStorageConcurrency_1 = require("../RecordStorageConcurrency");
|
|
26
|
+
const recordSchema_config_1 = require("../config/recordSchema.config");
|
|
27
|
+
class RecordTypeRecordSchemaConfigurationError extends TypeError {
|
|
28
|
+
problems;
|
|
29
|
+
constructor(problems) {
|
|
30
|
+
const first = problems[0];
|
|
31
|
+
super(first
|
|
32
|
+
? `Invalid record-type record schema configuration at ${first.path}: ${first.reason}.`
|
|
33
|
+
: 'Invalid record-type record schema configuration.');
|
|
34
|
+
this.name = 'RecordTypeRecordSchemaConfigurationError';
|
|
35
|
+
this.problems = Object.freeze([...problems]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.RecordTypeRecordSchemaConfigurationError = RecordTypeRecordSchemaConfigurationError;
|
|
24
39
|
var Services;
|
|
25
40
|
(function (Services) {
|
|
26
41
|
/**
|
|
@@ -35,11 +50,16 @@ var Services;
|
|
|
35
50
|
'create',
|
|
36
51
|
'get',
|
|
37
52
|
'getAll',
|
|
38
|
-
'getAllCache'
|
|
53
|
+
'getAllCache',
|
|
54
|
+
'assertConcurrentModificationCapability',
|
|
55
|
+
'resolveConcurrentModificationMode',
|
|
56
|
+
'resolveConcurrentModificationPolicy',
|
|
39
57
|
];
|
|
40
58
|
recordTypes;
|
|
41
59
|
async bootstrap(defBrand) {
|
|
42
|
-
let recordTypes = await RecordType.find({
|
|
60
|
+
let recordTypes = (await RecordType.find({
|
|
61
|
+
branding: defBrand.id,
|
|
62
|
+
}));
|
|
43
63
|
if (sails.config.appmode.bootstrapAlways) {
|
|
44
64
|
await RecordType.destroy({ branding: defBrand.id });
|
|
45
65
|
recordTypes = [];
|
|
@@ -50,26 +70,44 @@ var Services;
|
|
|
50
70
|
sails.log.debug(`RecordTypes found: ${recordTypes} and boostrapAlways set to: ${sails.config.appmode.bootstrapAlways}`);
|
|
51
71
|
if (_.isEmpty(recordTypes)) {
|
|
52
72
|
// var rTypesObs = [];
|
|
53
|
-
sails.log.verbose(
|
|
73
|
+
sails.log.verbose('Bootstrapping record type definitions... ');
|
|
54
74
|
// _.forOwn(sails.config.recordtype, (config, recordType) => {
|
|
55
75
|
// recordTypes.push(recordType);
|
|
56
76
|
// var obs = this.create(defBrand, recordType, config);
|
|
57
77
|
// rTypesObs.push(obs);
|
|
58
78
|
// });
|
|
59
|
-
|
|
60
|
-
const rTypes = [];
|
|
79
|
+
const configuredRecordTypes = [];
|
|
61
80
|
for (const recordType in sails.config.recordtype) {
|
|
62
81
|
const config = sails.config.recordtype[recordType];
|
|
82
|
+
configuredRecordTypes.push([recordType, config]);
|
|
83
|
+
}
|
|
84
|
+
for (const [recordType, config] of configuredRecordTypes) {
|
|
85
|
+
this.assertRecordSchemaConfig(recordType, config.recordSchema);
|
|
86
|
+
}
|
|
87
|
+
const rTypes = [];
|
|
88
|
+
for (const [recordType, config] of configuredRecordTypes) {
|
|
63
89
|
rTypes.push(await (0, rxjs_1.firstValueFrom)(this.create(defBrand, recordType, config)));
|
|
64
90
|
}
|
|
91
|
+
this.recordTypes = rTypes;
|
|
92
|
+
this.assertStrictStorageCapabilities(rTypes);
|
|
65
93
|
return rTypes;
|
|
66
94
|
}
|
|
67
|
-
sails.log.verbose(
|
|
95
|
+
sails.log.verbose('Default recordTypes definition(s) exist.');
|
|
96
|
+
this.assertRecordSchemaConfigs(recordTypes);
|
|
68
97
|
sails.log.verbose(JSON.stringify(recordTypes));
|
|
69
98
|
this.recordTypes = recordTypes;
|
|
99
|
+
this.assertStrictStorageCapabilities(recordTypes);
|
|
70
100
|
return recordTypes;
|
|
71
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Persist a record type from configuration. Concurrency policy is
|
|
104
|
+
* normalized here, at the boundary where configuration enters storage, so
|
|
105
|
+
* a malformed mode fails the lift instead of being discovered by the first
|
|
106
|
+
* conditional write.
|
|
107
|
+
*/
|
|
72
108
|
create(brand, name, config) {
|
|
109
|
+
this.assertRecordSchemaConfig(name, config.recordSchema);
|
|
110
|
+
const concurrentModification = (0, sails_ng_common_1.resolveRecordConcurrentModificationConfig)(config.concurrentModification);
|
|
73
111
|
return super.getObservable(RecordType.create({
|
|
74
112
|
name: name,
|
|
75
113
|
branding: brand.id,
|
|
@@ -80,11 +118,16 @@ var Services;
|
|
|
80
118
|
transferResponsibility: config.transferResponsibility,
|
|
81
119
|
relatedTo: config.relatedTo,
|
|
82
120
|
searchable: config.searchable,
|
|
83
|
-
dashboard: config.dashboard
|
|
84
|
-
|
|
121
|
+
dashboard: config.dashboard,
|
|
122
|
+
recordValidation: config.recordValidation,
|
|
123
|
+
concurrentModification,
|
|
124
|
+
recordSchema: config.recordSchema,
|
|
125
|
+
}).fetch());
|
|
85
126
|
}
|
|
86
127
|
get(brand, name, fields = null) {
|
|
87
|
-
const criteria = {
|
|
128
|
+
const criteria = {
|
|
129
|
+
where: { branding: brand.id, name: name },
|
|
130
|
+
};
|
|
88
131
|
if (fields) {
|
|
89
132
|
criteria.select = fields;
|
|
90
133
|
}
|
|
@@ -100,7 +143,59 @@ var Services;
|
|
|
100
143
|
getAllCache() {
|
|
101
144
|
return this.recordTypes;
|
|
102
145
|
}
|
|
146
|
+
configuredStorageService() {
|
|
147
|
+
const serviceName = String(sails.config.storage?.serviceName ?? '');
|
|
148
|
+
return serviceName ? sails.services?.[serviceName] : undefined;
|
|
149
|
+
}
|
|
150
|
+
assertRecordSchemaConfig(name, value) {
|
|
151
|
+
if (!(0, recordSchema_config_1.isRecordSchemaEnabled)(sails.config.recordSchema) || value === undefined)
|
|
152
|
+
return;
|
|
153
|
+
const pathName = /^[A-Za-z0-9_-]{1,100}$/.test(name) ? name : 'unknown';
|
|
154
|
+
const problems = (0, recordSchema_config_1.validateRecordTypeRecordSchemaConfig)(value, `recordtype.${pathName}.recordSchema`);
|
|
155
|
+
if (problems.length > 0) {
|
|
156
|
+
throw new RecordTypeRecordSchemaConfigurationError(problems);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
assertRecordSchemaConfigs(recordTypes) {
|
|
160
|
+
for (const [index, recordType] of recordTypes.entries()) {
|
|
161
|
+
const runtimeRecordType = recordType;
|
|
162
|
+
const name = typeof runtimeRecordType.name === 'string' ? runtimeRecordType.name : `index-${index}`;
|
|
163
|
+
this.assertRecordSchemaConfig(name, runtimeRecordType.recordSchema);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
assertStrictStorageCapabilities(recordTypes) {
|
|
167
|
+
for (const recordType of recordTypes) {
|
|
168
|
+
const policy = (0, sails_ng_common_1.resolveRecordConcurrentModificationConfig)(recordType.concurrentModification);
|
|
169
|
+
this.assertConcurrentModificationCapability(policy.mode);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** Used both at startup and again when a mutation resolves current policy. */
|
|
173
|
+
assertConcurrentModificationCapability(mode) {
|
|
174
|
+
(0, RecordStorageConcurrency_1.assertStorageConcurrencyCapabilityForMode)(mode, this.configuredStorageService());
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Resolve concurrency policy from the authoritative stored record type.
|
|
178
|
+
*
|
|
179
|
+
* This reads storage on every call, so an administrator's policy change
|
|
180
|
+
* applies to existing records the next time one of their requests resolves
|
|
181
|
+
* policy. Request bodies, headers, and save candidates never reach this
|
|
182
|
+
* boundary, and an unresolvable or malformed policy fails closed rather
|
|
183
|
+
* than silently degrading to last-write-wins.
|
|
184
|
+
*/
|
|
185
|
+
resolveConcurrentModificationPolicy(brand, name) {
|
|
186
|
+
return this.get(brand, name, ['concurrentModification']).pipe((0, rxjs_1.map)(recordType => {
|
|
187
|
+
if (!recordType) {
|
|
188
|
+
throw new Error(`Record type '${name}' could not be resolved for concurrency policy.`);
|
|
189
|
+
}
|
|
190
|
+
const policy = (0, sails_ng_common_1.resolveRecordConcurrentModificationConfig)(recordType.concurrentModification);
|
|
191
|
+
this.assertConcurrentModificationCapability(policy.mode);
|
|
192
|
+
return policy;
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
resolveConcurrentModificationMode(brand, name) {
|
|
196
|
+
return this.resolveConcurrentModificationPolicy(brand, name).pipe((0, rxjs_1.map)(policy => policy.mode));
|
|
197
|
+
}
|
|
103
198
|
}
|
|
104
199
|
Services.RecordTypes = RecordTypes;
|
|
105
200
|
})(Services || (exports.Services = Services = {}));
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb3JkVHlwZXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL1JlY29yZFR5cGVzU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7OztBQUU5RCwrQkFBdUQ7QUFDdkQsc0VBSTBDO0FBQzFDLGdEQUFzRDtBQUd0RCwwRUFBd0g7QUFDeEgsdUVBSXVDO0FBRXZDLE1BQWEsd0NBQXlDLFNBQVEsU0FBUztJQUNyRCxRQUFRLENBQThDO0lBRXRFLFlBQW1CLFFBQXFEO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixLQUFLLENBQ0gsS0FBSztZQUNILENBQUMsQ0FBQyxzREFBc0QsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxHQUFHO1lBQ3RGLENBQUMsQ0FBQyxrREFBa0QsQ0FDdkQsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsMENBQTBDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRjtBQWJELDRGQWFDO0FBRUQsSUFBaUIsUUFBUSxDQTRMeEI7QUE1TEQsV0FBaUIsUUFBUTtJQUN2Qjs7Ozs7T0FLRztJQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFRLENBQUMsSUFBSSxDQUFDLE9BQU87UUFDakMs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
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { FormConfigFrame, FormConfigOutline, FormValidatorDefinition, JSONataEvaluate, RecordSaveIssue, RecordValidationDiagnostic, ReusableFormDefinitions, ValidationMode, ValidationOperationDiscovery } from '@researchdatabox/sails-ng-common';
|
|
2
|
+
import { Services as services } from '../CoreService';
|
|
3
|
+
import type { RecordValidationConfig } from '../config/recordValidation.config';
|
|
4
|
+
import { type RecordTypeRecordSchemaConfig } from '../config/recordSchema.config';
|
|
5
|
+
import type { RecordTypeValidationConfig } from '../config/recordtype.config';
|
|
6
|
+
import type { WorkflowStageConfig } from '../config/workflow.config';
|
|
7
|
+
import type { RecordMetaMetadata, RecordWorkflow } from '../model/storage/RecordModel';
|
|
8
|
+
import type { RecordContractContext, RecordContractContextRequest } from '../record-contract/record-contract-context';
|
|
9
|
+
import type { FormAttributes } from '../waterline-models/Form';
|
|
10
|
+
import { type FormValueTransformation, type ValidatorFormConfigResult } from '../visitor/validator.visitor';
|
|
11
|
+
export declare const RECORD_VALIDATION_DIAGNOSTIC_CODES: {
|
|
12
|
+
readonly formReferenceMissing: "record-validation-form-reference-missing";
|
|
13
|
+
readonly formReferenceMalformed: "record-validation-form-reference-malformed";
|
|
14
|
+
readonly formNotFound: "record-validation-form-not-found";
|
|
15
|
+
readonly formConfigurationMissing: "record-validation-form-configuration-missing";
|
|
16
|
+
readonly formConfigurationMalformed: "record-validation-form-configuration-malformed";
|
|
17
|
+
readonly formReferenceDivergence: "record-validation-form-reference-divergence";
|
|
18
|
+
readonly recordTypeReferenceMissing: "record-validation-record-type-reference-missing";
|
|
19
|
+
readonly recordTypeReferenceMalformed: "record-validation-record-type-reference-malformed";
|
|
20
|
+
readonly recordTypeNotFound: "record-validation-record-type-not-found";
|
|
21
|
+
readonly brandReferenceMissing: "record-validation-brand-reference-missing";
|
|
22
|
+
readonly brandReferenceMalformed: "record-validation-brand-reference-malformed";
|
|
23
|
+
readonly workflowStepReferenceMissing: "record-validation-workflow-step-reference-missing";
|
|
24
|
+
readonly workflowStepReferenceMalformed: "record-validation-workflow-step-reference-malformed";
|
|
25
|
+
readonly workflowStepNotFound: "record-validation-workflow-step-not-found";
|
|
26
|
+
readonly workflowStepFormMissing: "record-validation-workflow-step-form-missing";
|
|
27
|
+
readonly operationMalformed: "record-validation-operation-malformed";
|
|
28
|
+
readonly operationUnknown: "record-validation-operation-unknown";
|
|
29
|
+
readonly operationRoleUnauthorized: "record-validation-operation-role-unauthorized";
|
|
30
|
+
readonly operationTargetUnauthorized: "record-validation-operation-target-unauthorized";
|
|
31
|
+
readonly operationPolicyMalformed: "record-validation-operation-policy-malformed";
|
|
32
|
+
readonly rolloutModeMalformed: "record-validation-rollout-mode-malformed";
|
|
33
|
+
readonly expressionUnsupported: "record-validation-expression-unsupported";
|
|
34
|
+
readonly expressionEvaluationFailed: "record-validation-expression-evaluation-failed";
|
|
35
|
+
readonly expressionResultMalformed: "record-validation-expression-result-malformed";
|
|
36
|
+
readonly expressionContextUnsupported: "record-validation-expression-context-unsupported";
|
|
37
|
+
readonly transformationInapplicable: "record-validation-transformation-inapplicable";
|
|
38
|
+
readonly validationGroupUnknown: "record-validation-group-unknown";
|
|
39
|
+
readonly requestParameterDropped: "record-validation-request-parameter-dropped";
|
|
40
|
+
readonly resolutionFailed: "record-validation-resolution-failed";
|
|
41
|
+
readonly advisoryConfigurationMalformed: "record-validation-advisory-configuration-malformed";
|
|
42
|
+
readonly advisoryGroupUnknown: "record-validation-advisory-group-unknown";
|
|
43
|
+
readonly validationGroupOverlap: "record-validation-group-overlap";
|
|
44
|
+
readonly blockingExecutionFailed: "record-validation-execution-failed";
|
|
45
|
+
readonly advisoryExecutionFailed: "record-validation-advisory-execution-failed";
|
|
46
|
+
readonly blockingTimeout: "record-validation-timeout";
|
|
47
|
+
readonly advisoryTimeout: "record-validation-advisory-timeout";
|
|
48
|
+
};
|
|
49
|
+
export type RecordValidationDiagnosticCode = (typeof RECORD_VALIDATION_DIAGNOSTIC_CODES)[keyof typeof RECORD_VALIDATION_DIAGNOSTIC_CODES];
|
|
50
|
+
export type RecordValidationOutcome = 'valid' | 'invalid' | 'request-rejected' | 'configuration-error' | 'timed-out';
|
|
51
|
+
export type RecordValidationTimeoutKind = 'none' | 'blocking' | 'advisory';
|
|
52
|
+
export type RecordValidationWriteKind = 'create' | 'update' | 'transition';
|
|
53
|
+
export type RecordValidationJSONValue = string | number | boolean | null | readonly RecordValidationJSONValue[] | {
|
|
54
|
+
readonly [key: string]: RecordValidationJSONValue;
|
|
55
|
+
};
|
|
56
|
+
export interface RecordValidationCandidate {
|
|
57
|
+
readonly redboxOid?: string;
|
|
58
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
59
|
+
readonly metaMetadata: Readonly<Partial<RecordMetaMetadata> & Record<string, unknown>>;
|
|
60
|
+
readonly workflow?: Readonly<Partial<RecordWorkflow>>;
|
|
61
|
+
readonly previousWorkflow?: Readonly<Partial<RecordWorkflow>>;
|
|
62
|
+
}
|
|
63
|
+
export interface RecordValidationActor {
|
|
64
|
+
readonly authenticated: boolean;
|
|
65
|
+
readonly roles?: readonly string[];
|
|
66
|
+
}
|
|
67
|
+
export interface RecordValidationRequest {
|
|
68
|
+
readonly candidate: RecordValidationCandidate;
|
|
69
|
+
readonly writeKind: RecordValidationWriteKind;
|
|
70
|
+
/** Server-owned validation intent; separate from the CRUD write kind. */
|
|
71
|
+
readonly validationOperation?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Whether to execute conditional groups and form validators after resolving
|
|
74
|
+
* the named operation. RecordsService sets this to false only for write
|
|
75
|
+
* classifications that are explicitly exempt from form validation; operation
|
|
76
|
+
* syntax, existence, and authorization remain authoritative.
|
|
77
|
+
*/
|
|
78
|
+
readonly evaluateFormValidators?: boolean;
|
|
79
|
+
/** Requested workflow movement; separate from validationOperation. */
|
|
80
|
+
readonly targetStep?: string;
|
|
81
|
+
/** Current workflow step before a transition, when already known by the caller. */
|
|
82
|
+
readonly currentStep?: string;
|
|
83
|
+
readonly actor: RecordValidationActor;
|
|
84
|
+
readonly requestParameters?: Readonly<Record<string, RecordValidationJSONValue>>;
|
|
85
|
+
/** Optional caller-side narrowing of the server-owned request-parameter allowlist. */
|
|
86
|
+
readonly allowedRequestParameterNames?: readonly string[];
|
|
87
|
+
readonly runtimeContext?: Readonly<Record<string, RecordValidationJSONValue>>;
|
|
88
|
+
/** Validation boundary phase, used only as a safe observability dimension. */
|
|
89
|
+
readonly phase?: 'pre-save' | 'post-save';
|
|
90
|
+
readonly requestId?: string;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Read-only operation discovery for one authoritative save context.
|
|
94
|
+
*
|
|
95
|
+
* Callers must supply edit and transition decisions produced by the existing
|
|
96
|
+
* record/workflow authorization layer. Operation policy can only narrow those
|
|
97
|
+
* decisions; it can never manufacture record access.
|
|
98
|
+
*/
|
|
99
|
+
export interface RecordValidationOperationDiscoveryRequest {
|
|
100
|
+
readonly candidate: RecordValidationCandidate;
|
|
101
|
+
readonly writeKind: RecordValidationWriteKind;
|
|
102
|
+
/** Optional narrowing to one actor-authorized transition target. */
|
|
103
|
+
readonly targetStep?: string;
|
|
104
|
+
readonly currentStep?: string;
|
|
105
|
+
readonly actor: RecordValidationActor;
|
|
106
|
+
readonly canEdit: boolean;
|
|
107
|
+
/** Actor-authorized transition targets to evaluate in this single discovery run. */
|
|
108
|
+
readonly authorizedTargetSteps?: readonly string[];
|
|
109
|
+
}
|
|
110
|
+
export interface RecordValidationExpressionContext {
|
|
111
|
+
readonly formData: Readonly<Record<string, unknown>>;
|
|
112
|
+
readonly operation?: string;
|
|
113
|
+
readonly recordType: string;
|
|
114
|
+
readonly formName: string;
|
|
115
|
+
readonly brand: string;
|
|
116
|
+
readonly workflow: {
|
|
117
|
+
readonly currentStep?: string;
|
|
118
|
+
readonly targetStep?: string;
|
|
119
|
+
};
|
|
120
|
+
readonly requestParams: Readonly<Record<string, RecordValidationJSONValue>>;
|
|
121
|
+
readonly runtimeContext: Readonly<Record<string, RecordValidationJSONValue>>;
|
|
122
|
+
readonly actor: {
|
|
123
|
+
readonly authenticated: boolean;
|
|
124
|
+
readonly roles: readonly string[];
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export interface EffectiveValidationOperationPolicy {
|
|
128
|
+
readonly name: string;
|
|
129
|
+
readonly enabledValidationGroups: readonly string[];
|
|
130
|
+
readonly label?: string;
|
|
131
|
+
readonly description?: string;
|
|
132
|
+
readonly roles?: readonly string[];
|
|
133
|
+
readonly allowedTargetSteps?: readonly string[];
|
|
134
|
+
}
|
|
135
|
+
export interface RecordValidationResolvedState {
|
|
136
|
+
readonly constructedForm: FormConfigOutline;
|
|
137
|
+
readonly formName: string;
|
|
138
|
+
readonly recordType: string;
|
|
139
|
+
readonly brand: string;
|
|
140
|
+
readonly workflowStep?: string;
|
|
141
|
+
readonly operationPolicy?: EffectiveValidationOperationPolicy;
|
|
142
|
+
/** Group fold before strict-all/operation exact-group finalization. */
|
|
143
|
+
readonly conditionalGroups: readonly string[];
|
|
144
|
+
/** Present only when conditional groups/form validators were evaluated. */
|
|
145
|
+
readonly expressionContext?: RecordValidationExpressionContext;
|
|
146
|
+
}
|
|
147
|
+
interface RecordValidationResultBase {
|
|
148
|
+
readonly shouldBlock: boolean;
|
|
149
|
+
readonly mode: ValidationMode;
|
|
150
|
+
readonly formName?: string;
|
|
151
|
+
readonly effectiveOperation?: string;
|
|
152
|
+
readonly diagnostics: readonly RecordValidationDiagnostic[];
|
|
153
|
+
}
|
|
154
|
+
export interface ResolvedRecordValidationResult extends RecordValidationResultBase {
|
|
155
|
+
readonly status: 'resolved';
|
|
156
|
+
readonly formName: string;
|
|
157
|
+
readonly effectiveGroups: readonly string[];
|
|
158
|
+
readonly resolved: RecordValidationResolvedState;
|
|
159
|
+
/** Safe issues only; raw validator summaries never cross this boundary. */
|
|
160
|
+
readonly blockingErrors: readonly RecordSaveIssue[];
|
|
161
|
+
/** Advisory issues are observable only and never affect shouldBlock. */
|
|
162
|
+
readonly advisoryErrors: readonly RecordSaveIssue[];
|
|
163
|
+
readonly advisoryGroups: readonly string[];
|
|
164
|
+
/** Cloned authoritative candidate after schema-owned value transformations. */
|
|
165
|
+
readonly transformedCandidate: RecordValidationCandidate;
|
|
166
|
+
}
|
|
167
|
+
export interface UnresolvedRecordValidationResult extends RecordValidationResultBase {
|
|
168
|
+
readonly status: 'unresolved';
|
|
169
|
+
/**
|
|
170
|
+
* Safe cloned candidate available when schema-owned transformations
|
|
171
|
+
* completed before a later resolution failure. It is deliberately absent
|
|
172
|
+
* when resolution stopped before that boundary, avoiding unsafe access to
|
|
173
|
+
* accessor-bearing or cyclic caller data.
|
|
174
|
+
*/
|
|
175
|
+
readonly transformedCandidate?: RecordValidationCandidate;
|
|
176
|
+
}
|
|
177
|
+
export type RecordValidationResult = ResolvedRecordValidationResult | UnresolvedRecordValidationResult;
|
|
178
|
+
/** Safe observability payload: it deliberately contains no record or expression values. */
|
|
179
|
+
export interface RecordValidationResolutionMetric {
|
|
180
|
+
readonly requestId?: string;
|
|
181
|
+
readonly recordType?: string;
|
|
182
|
+
readonly formName?: string;
|
|
183
|
+
readonly operation?: string;
|
|
184
|
+
readonly writeKind: RecordValidationWriteKind;
|
|
185
|
+
readonly phase: 'pre-save' | 'post-save';
|
|
186
|
+
readonly mode: ValidationMode;
|
|
187
|
+
readonly status: RecordValidationResult['status'];
|
|
188
|
+
readonly shouldBlock: boolean;
|
|
189
|
+
/** Whether this result would reject the candidate under enforcement. */
|
|
190
|
+
readonly wouldBlock: boolean;
|
|
191
|
+
readonly outcome: RecordValidationOutcome;
|
|
192
|
+
readonly durationMs: number;
|
|
193
|
+
readonly blockingErrorCount: number;
|
|
194
|
+
readonly advisoryErrorCount: number;
|
|
195
|
+
readonly timeoutKind: RecordValidationTimeoutKind;
|
|
196
|
+
readonly configurationDiagnosticCount: number;
|
|
197
|
+
readonly diagnosticCodes: readonly string[];
|
|
198
|
+
readonly diagnosticIdentities: readonly RecordValidationDiagnosticIdentity[];
|
|
199
|
+
}
|
|
200
|
+
export interface RecordValidationDiagnosticIdentity {
|
|
201
|
+
readonly code: string;
|
|
202
|
+
readonly scope: 'diagnostic' | 'blocking-validator' | 'advisory-validator';
|
|
203
|
+
readonly expressionName?: string;
|
|
204
|
+
readonly field?: string;
|
|
205
|
+
readonly pointer?: string;
|
|
206
|
+
readonly validatorClass?: string;
|
|
207
|
+
readonly validatorCode?: string;
|
|
208
|
+
readonly lineage?: string;
|
|
209
|
+
}
|
|
210
|
+
export interface RecordValidationModeResolution {
|
|
211
|
+
readonly mode: ValidationMode;
|
|
212
|
+
/** Number only: malformed configuration values must not enter diagnostics. */
|
|
213
|
+
readonly malformedModeCount: number;
|
|
214
|
+
}
|
|
215
|
+
type ValidationModeConfigLike = {
|
|
216
|
+
readonly mode?: unknown;
|
|
217
|
+
readonly operations?: unknown;
|
|
218
|
+
};
|
|
219
|
+
/**
|
|
220
|
+
* Resolve rollout mode with one shared precedence rule:
|
|
221
|
+
* global -> global operation -> record type -> record-type operation.
|
|
222
|
+
*/
|
|
223
|
+
export declare function resolveValidationMode(globalConfig: Pick<RecordValidationConfig, 'mode' | 'operations'> | ValidationModeConfigLike | null | undefined, recordTypeConfig: RecordTypeValidationConfig | ValidationModeConfigLike | null | undefined, operation?: string): RecordValidationModeResolution;
|
|
224
|
+
interface RecordTypeLike {
|
|
225
|
+
readonly id?: string;
|
|
226
|
+
readonly name?: string;
|
|
227
|
+
readonly recordValidation?: RecordTypeValidationConfig;
|
|
228
|
+
readonly recordSchema?: RecordTypeRecordSchemaConfig;
|
|
229
|
+
}
|
|
230
|
+
interface WorkflowStepLike {
|
|
231
|
+
readonly name?: string;
|
|
232
|
+
readonly starting?: boolean;
|
|
233
|
+
readonly config?: Readonly<Partial<WorkflowStageConfig> & Record<string, unknown>>;
|
|
234
|
+
}
|
|
235
|
+
export interface RecordValidationServiceDependencies {
|
|
236
|
+
loadRecord(oid: string): Promise<Readonly<Record<string, unknown>> | null>;
|
|
237
|
+
loadRecordType(brand: string, recordType: string): Promise<RecordTypeLike | null>;
|
|
238
|
+
loadStartingWorkflowStep(recordType: RecordTypeLike): Promise<WorkflowStepLike | null>;
|
|
239
|
+
loadWorkflowStep(recordType: RecordTypeLike, step: string): Promise<WorkflowStepLike | null>;
|
|
240
|
+
loadWorkflowSteps(recordType: RecordTypeLike): Promise<readonly WorkflowStepLike[]>;
|
|
241
|
+
loadForm(formName: string, brand: string): Promise<FormAttributes | null>;
|
|
242
|
+
constructForm(form: FormConfigFrame, metadata: Readonly<Record<string, unknown>>, reusableFormDefinitions: ReusableFormDefinitions): Promise<FormConfigOutline>;
|
|
243
|
+
collectTransformations?(form: FormConfigOutline, checkDeadline?: () => void): Promise<readonly FormValueTransformation[]>;
|
|
244
|
+
executeValidators?(form: FormConfigOutline, enabledValidationGroups: readonly string[], validatorDefinitionsMap: ReadonlyMap<string, FormValidatorDefinition>, jsonataEvaluatorFactory: (expression: string) => JSONataEvaluate, excludedOnlyValidationGroups?: readonly string[], checkDeadline?: () => void): Promise<ValidatorFormConfigResult>;
|
|
245
|
+
}
|
|
246
|
+
export declare namespace Services {
|
|
247
|
+
/**
|
|
248
|
+
* Resolves and executes authoritative record validation while exposing only
|
|
249
|
+
* bounded, value-free observability data.
|
|
250
|
+
*
|
|
251
|
+
* @extensionPoint Hooks may replace the service implementation; replacements must preserve authoritative form, operation, group, privacy, timeout, and shadow/enforce semantics.
|
|
252
|
+
* @see https://github.com/redbox-mint/redbox-portal/wiki/Server-Side-Form-Validation-Operations
|
|
253
|
+
*/
|
|
254
|
+
class RecordValidation extends services.Core.Service {
|
|
255
|
+
private readonly dependencyOverrides?;
|
|
256
|
+
protected _exportedMethods: string[];
|
|
257
|
+
private resolvedDependencies?;
|
|
258
|
+
constructor(dependencyOverrides?: Partial<RecordValidationServiceDependencies> | undefined);
|
|
259
|
+
/**
|
|
260
|
+
* Resolve the authoritative form and execute its blocking/advisory validators.
|
|
261
|
+
*
|
|
262
|
+
* @param request Complete server-owned candidate and save intent.
|
|
263
|
+
* @returns The authoritative decision plus safe diagnostics and resolved context.
|
|
264
|
+
*/
|
|
265
|
+
resolve(request: RecordValidationRequest): Promise<RecordValidationResult>;
|
|
266
|
+
/**
|
|
267
|
+
* Resolve the authoritative validation context without executing validators.
|
|
268
|
+
*
|
|
269
|
+
* This is the shared selection boundary for form-facing and schema-facing
|
|
270
|
+
* consumers. Private record, actor, and source-form data remains separated
|
|
271
|
+
* from the allowlisted public schema context by the Phase5A1 result types.
|
|
272
|
+
*
|
|
273
|
+
* @param request Authoritative create or update context request.
|
|
274
|
+
* @returns The selected public context and private construction inputs.
|
|
275
|
+
*/
|
|
276
|
+
resolveContractContext(request: RecordContractContextRequest): Promise<RecordContractContext>;
|
|
277
|
+
private resolveContractContextOrThrow;
|
|
278
|
+
/**
|
|
279
|
+
* Resolve public operation metadata without executing expressions or
|
|
280
|
+
* validators. Any incomplete/malformed context fails to an empty list so
|
|
281
|
+
* discovery cannot become an authorization oracle or leak diagnostics.
|
|
282
|
+
*
|
|
283
|
+
* @param request Authorized server-owned discovery context.
|
|
284
|
+
* @returns Operations visible to the actor for the exact resolved form.
|
|
285
|
+
*/
|
|
286
|
+
discoverOperations(request: RecordValidationOperationDiscoveryRequest): Promise<ValidationOperationDiscovery[]>;
|
|
287
|
+
private discoverOperationsForContext;
|
|
288
|
+
private resolveAuthoritativeContext;
|
|
289
|
+
private resolveRequest;
|
|
290
|
+
private contractReference;
|
|
291
|
+
private contractContextFailureKind;
|
|
292
|
+
private contractContextError;
|
|
293
|
+
private recordContractCandidate;
|
|
294
|
+
private recordContractPrivateResolution;
|
|
295
|
+
private dependencies;
|
|
296
|
+
private normalizeRequest;
|
|
297
|
+
private normalizeOperation;
|
|
298
|
+
private requiredReference;
|
|
299
|
+
private optionalStepReference;
|
|
300
|
+
private resolveFormSelection;
|
|
301
|
+
private selectionFromWorkflowStep;
|
|
302
|
+
private workflowOperationOverrides;
|
|
303
|
+
private resolveOperationPolicy;
|
|
304
|
+
private authorizeOperation;
|
|
305
|
+
private buildExpressionContext;
|
|
306
|
+
private projectExpressionContextObject;
|
|
307
|
+
private resolveValidationGroups;
|
|
308
|
+
private evaluateGroupExpression;
|
|
309
|
+
private loadFormDefinition;
|
|
310
|
+
private constructForm;
|
|
311
|
+
private discoverAdvisoryGroups;
|
|
312
|
+
private validatorDefinitions;
|
|
313
|
+
private executeValidators;
|
|
314
|
+
private collectCandidateTransformations;
|
|
315
|
+
private applyCandidateTransformations;
|
|
316
|
+
private isCanonicalRichHtmlTransformation;
|
|
317
|
+
private replaceCandidateMetadataValue;
|
|
318
|
+
private jsonataEvaluator;
|
|
319
|
+
private compiledExpression;
|
|
320
|
+
private evaluateJSONata;
|
|
321
|
+
private mapValidatorSummaries;
|
|
322
|
+
private mapTransformationAdvisories;
|
|
323
|
+
private timeoutMs;
|
|
324
|
+
private createDeadline;
|
|
325
|
+
private checkDeadline;
|
|
326
|
+
private remainingBudgetMs;
|
|
327
|
+
private withDeadline;
|
|
328
|
+
private addMalformedModeDiagnostics;
|
|
329
|
+
private buildResult;
|
|
330
|
+
private validatorFailureIdentities;
|
|
331
|
+
private observeResolution;
|
|
332
|
+
private warnObservabilityFailure;
|
|
333
|
+
private emitOpenTelemetry;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
declare global {
|
|
337
|
+
let RecordValidationService: Services.RecordValidation;
|
|
338
|
+
}
|
|
339
|
+
export {};
|
|
340
|
+
//# sourceMappingURL=RecordValidationService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordValidationService.d.ts","sourceRoot":"","sources":["../../src/services/RecordValidationService.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,eAAe,EACf,iBAAiB,EAKjB,uBAAuB,EAKvB,eAAe,EACf,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,EAEd,4BAA4B,EAU7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAGL,KAAK,4BAA4B,EAElC,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGvF,OAAO,KAAK,EACV,qBAAqB,EAGrB,4BAA4B,EAK7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC/B,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCrC,CAAC;AAEX,MAAM,MAAM,8BAA8B,GACxC,CAAC,OAAO,kCAAkC,CAAC,CAAC,MAAM,OAAO,kCAAkC,CAAC,CAAC;AAE/F,MAAM,MAAM,uBAAuB,GAC/B,OAAO,GACP,SAAS,GACT,kBAAkB,GAClB,qBAAqB,GACrB,WAAW,CAAC;AAEhB,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3E,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAC3E,MAAM,MAAM,yBAAyB,GACjC,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,yBAAyB,EAAE,GACpC;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,yEAAyE;IACzE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,sEAAsE;IACtE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;IACjF,sFAAsF;IACtF,QAAQ,CAAC,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC9E,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,yCAAyC;IACxD,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oFAAoF;IACpF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpD;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC5E,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,uBAAuB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,kCAAkC,CAAC;IAC9D,uEAAuE;IACvE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iCAAiC,CAAC;CAChE;AAED,UAAU,0BAA0B;IAClC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;IACjD,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,EAAE,SAAS,eAAe,EAAE,CAAC;IACpD,wEAAwE;IACxE,QAAQ,CAAC,cAAc,EAAE,SAAS,eAAe,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,+EAA+E;IAC/E,QAAQ,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;CAC1D;AAED,MAAM,WAAW,gCAAiC,SAAQ,0BAA0B;IAClF,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;CAC3D;AAED,MAAM,MAAM,sBAAsB,GAAG,8BAA8B,GAAG,gCAAgC,CAAC;AAEvG,2FAA2F;AAC3F,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,yBAAyB,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,SAAS,kCAAkC,EAAE,CAAC;CAC9E;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAcF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,IAAI,CAAC,sBAAsB,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,wBAAwB,GAAG,IAAI,GAAG,SAAS,EAC/G,gBAAgB,EAAE,0BAA0B,GAAG,wBAAwB,GAAG,IAAI,GAAG,SAAS,EAC1F,SAAS,CAAC,EAAE,MAAM,GACjB,8BAA8B,CAkBhC;AAED,UAAU,cAAc;IACtB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,4BAA4B,CAAC;CACtD;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACpF;AAED,MAAM,WAAW,mCAAmC;IAClD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3E,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAClF,wBAAwB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACvF,gBAAgB,CAAC,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAC7F,iBAAiB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1E,aAAa,CACX,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC3C,uBAAuB,EAAE,uBAAuB,GAC/C,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,sBAAsB,CAAC,CACrB,IAAI,EAAE,iBAAiB,EACvB,aAAa,CAAC,EAAE,MAAM,IAAI,GACzB,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,CAChB,IAAI,EAAE,iBAAiB,EACvB,uBAAuB,EAAE,SAAS,MAAM,EAAE,EAC1C,uBAAuB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACrE,uBAAuB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,eAAe,EAChE,4BAA4B,CAAC,EAAE,SAAS,MAAM,EAAE,EAChD,aAAa,CAAC,EAAE,MAAM,IAAI,GACzB,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACvC;AAiaD,yBAAiB,QAAQ,CAAC;IACxB;;;;;;OAMG;IACH,MAAa,gBAAiB,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QAItC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAHxD,UAAmB,gBAAgB,WAA+D;QAClG,OAAO,CAAC,oBAAoB,CAAC,CAAsC;oBAE/B,mBAAmB,CAAC,EAAE,OAAO,CAAC,mCAAmC,CAAC,YAAA;QAItG;;;;;WAKG;QACU,OAAO,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;QAwCvF;;;;;;;;;WASG;QACU,sBAAsB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;gBAW5F,6BAA6B;QAgG3C;;;;;;;WAOG;QACU,kBAAkB,CAC7B,OAAO,EAAE,yCAAyC,GACjD,OAAO,CAAC,4BAA4B,EAAE,CAAC;gBAgB5B,4BAA4B;gBAsM5B,2BAA2B;gBA4I3B,cAAc;QAqR5B,OAAO,CAAC,iBAAiB;QAQzB,OAAO,CAAC,0BAA0B;QA0BlC,OAAO,CAAC,oBAAoB;QAU5B,OAAO,CAAC,uBAAuB;QAmC/B,OAAO,CAAC,+BAA+B;QAkCvC,OAAO,CAAC,YAAY;QAuDpB,OAAO,CAAC,gBAAgB;QA4BxB,OAAO,CAAC,kBAAkB;QAwB1B,OAAO,CAAC,iBAAiB;QAyBzB,OAAO,CAAC,qBAAqB;gBAmBf,oBAAoB;QAmGlC,OAAO,CAAC,yBAAyB;QA0BjC,OAAO,CAAC,0BAA0B;QAMlC,OAAO,CAAC,sBAAsB;QA4D9B,OAAO,CAAC,kBAAkB;QAiC1B,OAAO,CAAC,sBAAsB;QA6E9B,OAAO,CAAC,8BAA8B;gBAqBxB,uBAAuB;gBAsDvB,uBAAuB;gBA2FvB,kBAAkB;gBAUlB,aAAa;QAY3B,OAAO,CAAC,sBAAsB;QAiE9B,OAAO,CAAC,oBAAoB;gBAkBd,iBAAiB;gBAqBjB,+BAA+B;QAW7C,OAAO,CAAC,6BAA6B;QAoDrC,OAAO,CAAC,iCAAiC;QAQzC,OAAO,CAAC,6BAA6B;QAWrC,OAAO,CAAC,gBAAgB;QAYxB,OAAO,CAAC,kBAAkB;gBAIZ,eAAe;QAa7B,OAAO,CAAC,qBAAqB;QAiC7B,OAAO,CAAC,2BAA2B;QAUnC,OAAO,CAAC,SAAS;QAIjB,OAAO,CAAC,cAAc;QAItB,OAAO,CAAC,aAAa;QAIrB,OAAO,CAAC,iBAAiB;gBAIX,YAAY;QA8B1B,OAAO,CAAC,2BAA2B;QAWnC,OAAO,CAAC,WAAW;QAyCnB,OAAO,CAAC,0BAA0B;QAyClC,OAAO,CAAC,iBAAiB;QAwHzB,OAAO,CAAC,wBAAwB;QAQhC,OAAO,CAAC,iBAAiB;KAkC1B;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,uBAAuB,EAAE,QAAQ,CAAC,gBAAgB,CAAC;CACxD"}
|