@researchdatabox/redbox-core 5.0.4 → 5.1.0-beta.12573
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 +5 -1
- 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 +49 -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 +109 -13
- 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 +49 -9
- 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/FigsharePublishing.d.ts +1 -1
- 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 +45 -4
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +778 -345
- 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 +647 -267
- 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 +8 -2
- 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/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.map +1 -1
- package/dist/services/FigshareService.js +8 -7
- 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 +11 -11
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +71 -48
- 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 +317 -26
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +5145 -765
- 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 +106 -44
- 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/figshare-v2/worker.d.ts.map +1 -1
- package/dist/services/figshare-v2/worker.js +254 -74
- 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 +59 -45
- 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
|
@@ -27,9 +27,16 @@ const context_1 = require("./context");
|
|
|
27
27
|
const IntegrationAuditModel_1 = require("../../model/storage/IntegrationAuditModel");
|
|
28
28
|
const RecordWriteOptions_1 = require("../../RecordWriteOptions");
|
|
29
29
|
const contentHash = (value) => {
|
|
30
|
-
const canonical = (v) => Array.isArray(v)
|
|
31
|
-
?
|
|
32
|
-
|
|
30
|
+
const canonical = (v) => Array.isArray(v)
|
|
31
|
+
? v.map(canonical)
|
|
32
|
+
: v && typeof v === 'object'
|
|
33
|
+
? Object.fromEntries(Object.entries(v)
|
|
34
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
35
|
+
.map(([k, x]) => [k, canonical(x)]))
|
|
36
|
+
: v;
|
|
37
|
+
return (0, node_crypto_1.createHash)('sha256')
|
|
38
|
+
.update(JSON.stringify(canonical(value)))
|
|
39
|
+
.digest('hex');
|
|
33
40
|
};
|
|
34
41
|
exports.contentHash = contentHash;
|
|
35
42
|
function getSyncStore() {
|
|
@@ -37,9 +44,19 @@ function getSyncStore() {
|
|
|
37
44
|
return new sync_store_1.FigshareSyncStore(manager);
|
|
38
45
|
}
|
|
39
46
|
function projectionPaths(config) {
|
|
40
|
-
return [
|
|
41
|
-
|
|
42
|
-
|
|
47
|
+
return [
|
|
48
|
+
...new Set([
|
|
49
|
+
config.record.articleIdPath,
|
|
50
|
+
config.record.statusPath,
|
|
51
|
+
config.record.errorPath,
|
|
52
|
+
config.record.syncStatePath,
|
|
53
|
+
config.record.dataLocationsPath,
|
|
54
|
+
config.record.allFilesUploadedPath,
|
|
55
|
+
config.writeBack.articleId,
|
|
56
|
+
...config.writeBack.articleUrls,
|
|
57
|
+
...config.writeBack.extraFields.map(f => f.targetPath),
|
|
58
|
+
].filter((p) => !!p)),
|
|
59
|
+
];
|
|
43
60
|
}
|
|
44
61
|
/** Source import never acknowledges before durable state exists. Queue delivery is disposable. */
|
|
45
62
|
async function importRecordIntent(store, record) {
|
|
@@ -93,7 +110,7 @@ async function dispatchFigshare() {
|
|
|
93
110
|
break;
|
|
94
111
|
for (const due of page) {
|
|
95
112
|
seen.add(due.oid);
|
|
96
|
-
if (!await store.dispatchClaim(due.oid))
|
|
113
|
+
if (!(await store.dispatchClaim(due.oid)))
|
|
97
114
|
continue;
|
|
98
115
|
try {
|
|
99
116
|
const fresh = await RecordsService.getMeta(due.oid);
|
|
@@ -119,8 +136,11 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
119
136
|
if (!record) {
|
|
120
137
|
const existing = await store.get(oid);
|
|
121
138
|
if (existing)
|
|
122
|
-
await store.change(oid, s => {
|
|
123
|
-
|
|
139
|
+
await store.change(oid, s => {
|
|
140
|
+
s.status = 'cancelled';
|
|
141
|
+
for (const work of Object.values(s.work))
|
|
142
|
+
work.dueAt = null;
|
|
143
|
+
});
|
|
124
144
|
return;
|
|
125
145
|
}
|
|
126
146
|
if (record.metaMetadata.brandId !== brandId)
|
|
@@ -152,7 +172,11 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
152
172
|
await store.renew(oid, owner, settings.leaseMs);
|
|
153
173
|
if (job.touch)
|
|
154
174
|
await job.touch();
|
|
155
|
-
})()
|
|
175
|
+
})()
|
|
176
|
+
.catch(() => abort.abort())
|
|
177
|
+
.finally(() => {
|
|
178
|
+
heartbeatBusy = false;
|
|
179
|
+
});
|
|
156
180
|
}, settings.heartbeatMs);
|
|
157
181
|
heartbeat.unref();
|
|
158
182
|
const checkpoint = async (fn) => {
|
|
@@ -172,14 +196,17 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
172
196
|
s.waitingReason = reason;
|
|
173
197
|
// Readiness is an expected wait, not a failed attempt. Clear recovered polling
|
|
174
198
|
// errors, while retaining a genuine terminal failure of unfinished source sync.
|
|
175
|
-
const unresolvedSyncFailure = s.error?.terminal &&
|
|
176
|
-
|
|
199
|
+
const unresolvedSyncFailure = s.error?.terminal &&
|
|
200
|
+
(!s.error.kind || s.error.kind === 'sync') &&
|
|
201
|
+
s.work.sync.requested > s.work.sync.processed;
|
|
177
202
|
if (!unresolvedSyncFailure && (!s.error?.kind || s.error.kind === kind))
|
|
178
203
|
delete s.error;
|
|
179
204
|
if (s.work[kind].requested === startedWork[kind].requested)
|
|
180
205
|
s.work[kind].dueAt = Date.now() + settings.observationMs;
|
|
181
206
|
});
|
|
182
|
-
const rawClient = config.runtime.mode === 'fixture'
|
|
207
|
+
const rawClient = config.runtime.mode === 'fixture'
|
|
208
|
+
? (0, http_1.makeFixtureClient)(config)
|
|
209
|
+
: (0, http_1.makeLiveClient)(config, (0, context_1.createRunContext)(record, config, owner, 'worker'));
|
|
183
210
|
let article;
|
|
184
211
|
let metadataChanged = false;
|
|
185
212
|
const sourceGeneration = record.figshareSyncIntent?.generation ?? 0;
|
|
@@ -198,11 +225,14 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
198
225
|
if (!fresh || fresh.metaMetadata.brandId !== brandId)
|
|
199
226
|
throw new execution_1.FigshareWaiting('record_changed');
|
|
200
227
|
const latestConfig = (0, config_1.resolveFigsharePublishingConfig)(fresh, { requireToken: false });
|
|
201
|
-
if (!latestConfig?.processing?.enabled ||
|
|
228
|
+
if (!latestConfig?.processing?.enabled ||
|
|
229
|
+
latestConfig.processingError ||
|
|
230
|
+
(0, exports.contentHash)(latestConfig) !== (0, exports.contentHash)(config))
|
|
202
231
|
throw new execution_1.FigshareWaiting('configuration_changed');
|
|
203
|
-
if (fresh.figshareSyncIntent?.readiness === 'initialising' ||
|
|
232
|
+
if (fresh.figshareSyncIntent?.readiness === 'initialising' ||
|
|
233
|
+
(fresh.figshareSyncIntent?.generation ?? 0) !== sourceGeneration)
|
|
204
234
|
throw new execution_1.FigshareWaiting('newer_save');
|
|
205
|
-
if (kind === 'sync' && !await eligible(startedWork.sync.policies, fresh))
|
|
235
|
+
if (kind === 'sync' && !(await eligible(startedWork.sync.policies, fresh)))
|
|
206
236
|
throw new execution_1.FigshareWaiting('eligibility');
|
|
207
237
|
return fresh;
|
|
208
238
|
};
|
|
@@ -227,20 +257,22 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
227
257
|
if (key === 'custom_fields') {
|
|
228
258
|
const remote = Array.isArray(current.custom_fields)
|
|
229
259
|
? Object.fromEntries(current.custom_fields.map(f => [f.name, f.value]))
|
|
230
|
-
: current.custom_fields ?? {};
|
|
260
|
+
: (current.custom_fields ?? {});
|
|
231
261
|
remoteFields[key] = Object.fromEntries(Object.keys(payload.custom_fields ?? {}).map(k => [k, remote[k]]));
|
|
232
262
|
}
|
|
233
263
|
else if (key === 'defined_type' && typeof payload[key] === 'string')
|
|
234
264
|
remoteFields[key] = current.defined_type_name ?? current[key];
|
|
235
265
|
else if (key === 'categories' && Array.isArray(current[key]))
|
|
236
|
-
remoteFields[key] = current[key].map(value => typeof value === 'object' && value ? value.id : value);
|
|
266
|
+
remoteFields[key] = current[key].map(value => (typeof value === 'object' && value ? value.id : value));
|
|
237
267
|
else if (key === 'authors' && Array.isArray(current[key]))
|
|
238
268
|
remoteFields[key] = current[key].map(value => typeof value === 'object' && value ? { id: value.id } : value);
|
|
239
269
|
else
|
|
240
270
|
remoteFields[key] = current[key];
|
|
241
271
|
}
|
|
242
272
|
if ((0, exports.contentHash)(remoteFields) === hash) {
|
|
243
|
-
await checkpoint(s => {
|
|
273
|
+
await checkpoint(s => {
|
|
274
|
+
s.checkpoints.metadata = hash;
|
|
275
|
+
});
|
|
244
276
|
return current;
|
|
245
277
|
}
|
|
246
278
|
metadataChanged = true;
|
|
@@ -248,13 +280,15 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
248
280
|
if (payload.custom_fields) {
|
|
249
281
|
const remote = Array.isArray(current.custom_fields)
|
|
250
282
|
? Object.fromEntries(current.custom_fields.map(f => [f.name, f.value]))
|
|
251
|
-
: current.custom_fields ?? {};
|
|
283
|
+
: (current.custom_fields ?? {});
|
|
252
284
|
outgoing.custom_fields = { ...remote, ...payload.custom_fields };
|
|
253
285
|
}
|
|
254
286
|
const result = await send(outgoing);
|
|
255
|
-
await checkpoint(s => {
|
|
287
|
+
await checkpoint(s => {
|
|
288
|
+
s.checkpoints.metadata = hash;
|
|
289
|
+
});
|
|
256
290
|
return { ...result, id };
|
|
257
|
-
}
|
|
291
|
+
},
|
|
258
292
|
};
|
|
259
293
|
const recovery = (fn) => execution_1.figshareExecution.run({ ...execution, binding: state.create?.binding ?? state.binding, recovery: true }, fn);
|
|
260
294
|
try {
|
|
@@ -271,7 +305,7 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
271
305
|
const user = await UsersService.getUserWithUsername(username).toPromise();
|
|
272
306
|
if (!user || user.type !== userType || user.disabled === true)
|
|
273
307
|
throw new execution_1.FigshareRepairRequired('Configured Figshare local service user is unavailable');
|
|
274
|
-
if (!await RecordsService.hasEditAccess(brand, user, (user.roles ?? []).map(role => ({ ...role })), record))
|
|
308
|
+
if (!(await RecordsService.hasEditAccess(brand, user, (user.roles ?? []).map(role => ({ ...role })), record)))
|
|
275
309
|
throw new execution_1.FigshareRepairRequired('Figshare service user does not have record edit access');
|
|
276
310
|
if (!rawClient.getAccount)
|
|
277
311
|
throw new execution_1.FigshareRepairRequired('Figshare client cannot verify authenticated account');
|
|
@@ -292,11 +326,21 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
292
326
|
if (!lookup)
|
|
293
327
|
throw new execution_1.FigshareRepairRequired('Storage adapter cannot verify legacy binding uniqueness');
|
|
294
328
|
const matching = await lookup.call(RecordsService.getFigshareIntentStorage(), config.record.articleIdPath, legacyId);
|
|
295
|
-
if (matching.some(other => other.redboxOid !== oid &&
|
|
329
|
+
if (matching.some(other => other.redboxOid !== oid &&
|
|
330
|
+
(0, config_1.resolveFigsharePublishingConfig)(other)?.connection.baseUrl.replace(/\/+$/, '') === (0, identity_1.apiNamespace)(config)))
|
|
296
331
|
throw new execution_1.FigshareRepairRequired('Duplicate legacy article bindings require repair before mutation');
|
|
297
332
|
article = await rawClient.getArticle(legacyId);
|
|
298
|
-
const binding = {
|
|
299
|
-
|
|
333
|
+
const binding = {
|
|
334
|
+
namespace: (0, identity_1.apiNamespace)(config),
|
|
335
|
+
accountId,
|
|
336
|
+
ownerId: String(article.account_id ?? accountId),
|
|
337
|
+
articleId: String(article.id),
|
|
338
|
+
};
|
|
339
|
+
await checkpoint(s => {
|
|
340
|
+
s.binding = binding;
|
|
341
|
+
s.namespace = binding.namespace;
|
|
342
|
+
s.articleId = binding.articleId;
|
|
343
|
+
});
|
|
300
344
|
execution.binding = binding;
|
|
301
345
|
}
|
|
302
346
|
}
|
|
@@ -309,10 +353,13 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
309
353
|
[config.record.articleIdPath]: state.binding.articleId,
|
|
310
354
|
[config.writeBack.articleId]: state.binding.articleId,
|
|
311
355
|
[config.record.statusPath]: state.status,
|
|
312
|
-
[config.record.errorPath]: state.error?.message ?? ''
|
|
356
|
+
[config.record.errorPath]: state.error?.message ?? '',
|
|
313
357
|
};
|
|
314
358
|
for (const path of config.writeBack.articleUrls)
|
|
315
|
-
fields[path] =
|
|
359
|
+
fields[path] =
|
|
360
|
+
article?.url_public_html ??
|
|
361
|
+
article?.url_private_html ??
|
|
362
|
+
`${config.connection.frontEndUrl}/articles/${state.binding.articleId}`;
|
|
316
363
|
for (const binding of config.writeBack.extraFields) {
|
|
317
364
|
const source = binding.from === 'article' ? article : binding.from === 'publishResult' ? state.publish : undefined;
|
|
318
365
|
const value = lodash_1.default.get(source, binding.sourcePath);
|
|
@@ -320,7 +367,8 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
320
367
|
fields[binding.targetPath] = value;
|
|
321
368
|
}
|
|
322
369
|
await store.assertOwner(oid, owner);
|
|
323
|
-
if ((await RecordsService.setRecordFields(oid, fields, fresh.recordVersion ?? 0, projectionPaths(config), user))
|
|
370
|
+
if ((await RecordsService.setRecordFields(oid, fields, fresh.recordVersion ?? 0, projectionPaths(config), user))
|
|
371
|
+
.updated)
|
|
324
372
|
return;
|
|
325
373
|
}
|
|
326
374
|
throw new execution_1.FigshareWaiting('record_changed');
|
|
@@ -330,9 +378,14 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
330
378
|
await assertCurrent();
|
|
331
379
|
if (!state.audit || state.auditClosed) {
|
|
332
380
|
const audit = (0, audit_1.startFigshareAudit)(oid, IntegrationAuditModel_1.IntegrationAuditAction.syncRecordWithFigshare, (0, context_1.createRunContext)(record, config, owner, 'worker'), {
|
|
333
|
-
sourceGeneration,
|
|
381
|
+
sourceGeneration,
|
|
382
|
+
requestedBy: startedWork.sync.requestedBy,
|
|
383
|
+
requests: startedWork.sync.requested - startedWork.sync.processed,
|
|
384
|
+
});
|
|
385
|
+
await checkpoint(s => {
|
|
386
|
+
s.audit = audit;
|
|
387
|
+
s.auditClosed = false;
|
|
334
388
|
});
|
|
335
|
-
await checkpoint(s => { s.audit = audit; s.auditClosed = false; });
|
|
336
389
|
}
|
|
337
390
|
if (!state.binding?.articleId) {
|
|
338
391
|
if (state.create) {
|
|
@@ -340,42 +393,77 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
340
393
|
if (!recovered)
|
|
341
394
|
throw new execution_1.FigshareRepairRequired('Uncertain create has no unique visible token match; do not create again. Reconcile, then run abandon-create if no article exists');
|
|
342
395
|
const binding = { ...state.create.binding, articleId: String(recovered.id) };
|
|
343
|
-
await checkpoint(s => {
|
|
396
|
+
await checkpoint(s => {
|
|
397
|
+
s.binding = binding;
|
|
398
|
+
s.namespace = binding.namespace;
|
|
399
|
+
s.articleId = binding.articleId;
|
|
400
|
+
s.create.verifiedId = binding.articleId;
|
|
401
|
+
});
|
|
344
402
|
execution.binding = binding;
|
|
345
403
|
article = recovered;
|
|
346
404
|
if (state.create.error && startedWork.sync.requested <= (state.createRequest ?? startedWork.sync.requested))
|
|
347
405
|
throw new Error(state.create.error);
|
|
348
406
|
}
|
|
349
407
|
else {
|
|
350
|
-
if ((state.waitingReason === 'uncertain_legacy_create' ||
|
|
408
|
+
if ((state.waitingReason === 'uncertain_legacy_create' ||
|
|
409
|
+
(0, types_1.getRecordField)(record, config.record.syncStatePath)) &&
|
|
410
|
+
!state.create)
|
|
351
411
|
throw new execution_1.FigshareRepairRequired('Legacy synchronisation evidence without an article ID requires migration review');
|
|
352
|
-
const ownerId = config.impersonation?.operations.create === 'owner'
|
|
412
|
+
const ownerId = config.impersonation?.operations.create === 'owner'
|
|
413
|
+
? await (0, identity_1.resolveCreationOwner)(rawClient, config, record, accountId)
|
|
414
|
+
: accountId;
|
|
353
415
|
const binding = { namespace: (0, identity_1.apiNamespace)(config), accountId, ownerId };
|
|
354
416
|
const operation = (0, identity_1.newCreateOperation)(binding);
|
|
355
|
-
await checkpoint(s => {
|
|
417
|
+
await checkpoint(s => {
|
|
418
|
+
s.binding = binding;
|
|
419
|
+
s.create = operation;
|
|
420
|
+
s.createGeneration = sourceGeneration;
|
|
421
|
+
s.createRequest = startedWork.sync.requested;
|
|
422
|
+
});
|
|
356
423
|
execution.binding = binding;
|
|
357
424
|
try {
|
|
358
|
-
const response = await (0, execution_1.workerClient)(rawClient).createArticle({
|
|
425
|
+
const response = await (0, execution_1.workerClient)(rawClient).createArticle({
|
|
426
|
+
title: (0, identity_1.provisionalTitle)(operation.token),
|
|
427
|
+
});
|
|
359
428
|
if (response.id == null)
|
|
360
429
|
throw new Error('Create response did not contain an article identity');
|
|
361
430
|
article = await recovery(() => rawClient.getArticle(String(response.id)));
|
|
362
431
|
if (article.title !== (0, identity_1.provisionalTitle)(operation.token))
|
|
363
432
|
throw new execution_1.FigshareRepairRequired('Create response did not verify the operation token');
|
|
364
433
|
const id = String(article.id);
|
|
365
|
-
await checkpoint(s => {
|
|
434
|
+
await checkpoint(s => {
|
|
435
|
+
s.binding.articleId = id;
|
|
436
|
+
s.namespace = binding.namespace;
|
|
437
|
+
s.articleId = id;
|
|
438
|
+
s.create.verifiedId = id;
|
|
439
|
+
s.create.outcome = 'confirmed';
|
|
440
|
+
});
|
|
366
441
|
execution.binding = state.binding;
|
|
367
442
|
}
|
|
368
443
|
catch (error) {
|
|
369
444
|
// Only the transport guard raises a wait here, and it refuses before sending, so nothing was created.
|
|
370
445
|
if (error instanceof execution_1.FigshareWaiting) {
|
|
371
|
-
await checkpoint(s => {
|
|
446
|
+
await checkpoint(s => {
|
|
447
|
+
delete s.create;
|
|
448
|
+
delete s.createGeneration;
|
|
449
|
+
delete s.createRequest;
|
|
450
|
+
delete s.binding;
|
|
451
|
+
});
|
|
372
452
|
throw error;
|
|
373
453
|
}
|
|
374
|
-
await checkpoint(s => {
|
|
454
|
+
await checkpoint(s => {
|
|
455
|
+
s.create.outcome = error instanceof http_1.FigshareHttpError && error.statusCode ? 'failed' : 'uncertain';
|
|
456
|
+
s.create.error = error instanceof Error ? error.message : String(error);
|
|
457
|
+
});
|
|
375
458
|
const recovered = await recovery(() => (0, identity_1.recoverCreate)(rawClient, state.create));
|
|
376
459
|
if (recovered) {
|
|
377
460
|
const id = String(recovered.id);
|
|
378
|
-
await checkpoint(s => {
|
|
461
|
+
await checkpoint(s => {
|
|
462
|
+
s.binding.articleId = id;
|
|
463
|
+
s.namespace = binding.namespace;
|
|
464
|
+
s.articleId = id;
|
|
465
|
+
s.create.verifiedId = id;
|
|
466
|
+
});
|
|
379
467
|
article = recovered;
|
|
380
468
|
await project();
|
|
381
469
|
}
|
|
@@ -388,7 +476,9 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
388
476
|
article = await rawClient.getArticle(id);
|
|
389
477
|
if (state.publish && state.publish.outcome !== 'observed') {
|
|
390
478
|
if ((0, identity_1.observedPublished)(article) && Number(article.version ?? 0) > state.publish.previousVersion) {
|
|
391
|
-
await checkpoint(s => {
|
|
479
|
+
await checkpoint(s => {
|
|
480
|
+
s.publish.outcome = 'observed';
|
|
481
|
+
});
|
|
392
482
|
}
|
|
393
483
|
else if ((0, runtime_1.isCurationLocked)(config, article)) {
|
|
394
484
|
throw new execution_1.FigshareWaiting('curation');
|
|
@@ -396,7 +486,9 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
396
486
|
else if (startedWork.sync.sourceGeneration > state.publish.generation) {
|
|
397
487
|
// The read confirms the earlier request did not publish. A newer eligible source save supersedes it,
|
|
398
488
|
// e.g. after a curator returns the article for changes, so its content syncs and publication is requested again.
|
|
399
|
-
await checkpoint(s => {
|
|
489
|
+
await checkpoint(s => {
|
|
490
|
+
delete s.publish;
|
|
491
|
+
});
|
|
400
492
|
}
|
|
401
493
|
else if (state.publish.outcome === 'submitted' || state.publish.outcome === 'uncertain') {
|
|
402
494
|
throw new execution_1.FigshareRepairRequired('Publication outcome is uncertain; confirm the article in Figshare, then run reset-publish');
|
|
@@ -420,28 +512,53 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
420
512
|
}
|
|
421
513
|
(0, types_1.setRecordField)(record, config.record.articleIdPath, id);
|
|
422
514
|
const previousAssets = state.checkpoints.assets;
|
|
423
|
-
await service.syncMetadata(record, {
|
|
515
|
+
await service.syncMetadata(record, {
|
|
516
|
+
action: 'update',
|
|
517
|
+
articleId: id,
|
|
518
|
+
sameJob: true,
|
|
519
|
+
syncState: { status: 'syncing', correlationId: owner },
|
|
520
|
+
});
|
|
424
521
|
const client = service.makeClient(config, record, owner, 'worker');
|
|
425
522
|
await (0, managed_assets_1.mirrorManagedAssets)(client, config, record, id, state, checkpoint);
|
|
426
523
|
const assetsChanged = previousAssets !== state.checkpoints.assets;
|
|
427
524
|
await (0, embargo_1.syncEmbargoPhase)(client, config, record, id);
|
|
428
|
-
await checkpoint(s => {
|
|
525
|
+
await checkpoint(s => {
|
|
526
|
+
s.checkpoints.embargo = (0, exports.contentHash)(config.embargo.mode === 'none' ? null : record.metadata);
|
|
527
|
+
});
|
|
429
528
|
await assertCurrent();
|
|
430
529
|
article = await rawClient.getArticle(id);
|
|
431
530
|
const publishHash = (0, exports.contentHash)(state.checkpoints);
|
|
432
|
-
const needsPublish = !(0, identity_1.observedPublished)(article) ||
|
|
531
|
+
const needsPublish = !(0, identity_1.observedPublished)(article) ||
|
|
532
|
+
(metadataChanged && config.article.republishOnMetadataChange) ||
|
|
533
|
+
(assetsChanged && config.article.republishOnAssetChange);
|
|
433
534
|
if (needsPublish && state.publish?.hash !== publishHash && config.article.publishMode !== 'manual') {
|
|
434
|
-
await checkpoint(s => {
|
|
535
|
+
await checkpoint(s => {
|
|
536
|
+
s.publish = {
|
|
537
|
+
generation: sourceGeneration,
|
|
538
|
+
hash: publishHash,
|
|
539
|
+
previousVersion: Number(article.version ?? 0),
|
|
540
|
+
outcome: 'submitted',
|
|
541
|
+
submittedAt: new Date().toISOString(),
|
|
542
|
+
};
|
|
543
|
+
});
|
|
435
544
|
try {
|
|
436
545
|
await client.publishArticle(id);
|
|
437
|
-
await checkpoint(s => {
|
|
546
|
+
await checkpoint(s => {
|
|
547
|
+
s.publish.outcome = 'accepted';
|
|
548
|
+
});
|
|
438
549
|
}
|
|
439
550
|
catch (error) {
|
|
440
|
-
const body = error instanceof http_1.FigshareHttpError
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
551
|
+
const body = error instanceof http_1.FigshareHttpError
|
|
552
|
+
? error.responseBody
|
|
553
|
+
: undefined;
|
|
554
|
+
const rejected = error instanceof http_1.FigshareHttpError &&
|
|
555
|
+
error.statusCode === 400 &&
|
|
556
|
+
body?.code === 'BadRequest' &&
|
|
557
|
+
typeof body.message === 'string' &&
|
|
558
|
+
body.message.startsWith('Missing mandatory value:');
|
|
559
|
+
await checkpoint(s => {
|
|
560
|
+
s.publish.outcome = rejected ? 'rejected' : 'uncertain';
|
|
561
|
+
});
|
|
445
562
|
throw error;
|
|
446
563
|
}
|
|
447
564
|
// Immediate publication is visible now; a curated article still reads private and waits for review.
|
|
@@ -451,7 +568,11 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
451
568
|
await checkpoint(s => {
|
|
452
569
|
s.status = (0, identity_1.observedPublished)(article) ? 'synced' : 'waiting';
|
|
453
570
|
delete s.error;
|
|
454
|
-
s.waitingReason = (0, identity_1.observedPublished)(article)
|
|
571
|
+
s.waitingReason = (0, identity_1.observedPublished)(article)
|
|
572
|
+
? undefined
|
|
573
|
+
: config.article.publishMode === 'manual'
|
|
574
|
+
? 'manual_publication'
|
|
575
|
+
: 'review';
|
|
455
576
|
s.work.observe.requested++;
|
|
456
577
|
s.work.observe.dueAt = Date.now() + settings.observationMs;
|
|
457
578
|
if (s.receipts.some(r => r.kind === 'hosted' && r.desired)) {
|
|
@@ -460,8 +581,13 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
460
581
|
}
|
|
461
582
|
});
|
|
462
583
|
if (!state.auditClosed) {
|
|
463
|
-
(0, audit_1.completeFigshareAudit)(state.audit, {
|
|
464
|
-
|
|
584
|
+
(0, audit_1.completeFigshareAudit)(state.audit, {
|
|
585
|
+
message: 'Figshare content synchronised; publication is observed separately.',
|
|
586
|
+
responseSummary: { articleId: id, sourceGeneration, requests: startedWork.sync.requested },
|
|
587
|
+
});
|
|
588
|
+
await checkpoint(s => {
|
|
589
|
+
s.auditClosed = true;
|
|
590
|
+
});
|
|
465
591
|
}
|
|
466
592
|
await project();
|
|
467
593
|
}
|
|
@@ -474,10 +600,14 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
474
600
|
}
|
|
475
601
|
const id = state.binding.articleId;
|
|
476
602
|
article = await rawClient.getArticle(id);
|
|
477
|
-
await checkpoint(s => {
|
|
603
|
+
await checkpoint(s => {
|
|
604
|
+
s.publication = (0, identity_1.observedPublished)(article) ? 'published' : s.publish ? 'pending' : 'private';
|
|
605
|
+
s.embargoed = article.is_embargoed === true;
|
|
606
|
+
s.observedAt = new Date().toISOString();
|
|
607
|
+
});
|
|
478
608
|
if (due('cleanup')) {
|
|
479
609
|
kind = 'cleanup';
|
|
480
|
-
if (startedWork.cleanup.policies.length && !await eligible(startedWork.cleanup.policies, record))
|
|
610
|
+
if (startedWork.cleanup.policies.length && !(await eligible(startedWork.cleanup.policies, record)))
|
|
481
611
|
throw new execution_1.FigshareWaiting('cleanup_eligibility');
|
|
482
612
|
for (let attempt = 0; attempt < 3; attempt++) {
|
|
483
613
|
record = await RecordsService.getMeta(oid);
|
|
@@ -501,14 +631,21 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
501
631
|
if (state.publish && state.publish.outcome !== 'observed') {
|
|
502
632
|
if (Number(article.version ?? 0) <= state.publish.previousVersion)
|
|
503
633
|
throw new execution_1.FigshareWaiting('publication_confirmation');
|
|
504
|
-
await checkpoint(s => {
|
|
634
|
+
await checkpoint(s => {
|
|
635
|
+
s.publish.outcome = 'observed';
|
|
636
|
+
});
|
|
505
637
|
}
|
|
506
638
|
const publicationKey = `${id}:${article.version ?? article.published_date}`;
|
|
507
639
|
if (state.publicationAuditKey !== publicationKey) {
|
|
508
640
|
// Persist the marker first: recurring observation must not produce another event.
|
|
509
|
-
await checkpoint(s => {
|
|
641
|
+
await checkpoint(s => {
|
|
642
|
+
s.publicationAuditKey = publicationKey;
|
|
643
|
+
});
|
|
510
644
|
const publicationAudit = (0, audit_1.startFigshareAudit)(oid, IntegrationAuditModel_1.IntegrationAuditAction.publishAfterUploadFilesJob, (0, context_1.createRunContext)(record, config, owner, 'observation'), { articleId: id });
|
|
511
|
-
(0, audit_1.completeFigshareAudit)(publicationAudit, {
|
|
645
|
+
(0, audit_1.completeFigshareAudit)(publicationAudit, {
|
|
646
|
+
message: 'Figshare publication confirmed.',
|
|
647
|
+
responseSummary: { articleId: id, version: article.version, publication: 'published' },
|
|
648
|
+
});
|
|
512
649
|
}
|
|
513
650
|
record = await RecordsService.getMeta(oid);
|
|
514
651
|
// An abandoned intent carries no work; only an unimported live save is newer content.
|
|
@@ -518,25 +655,45 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
518
655
|
if (state.receipts.some(r => !['available', 'removed'].includes(r.state)))
|
|
519
656
|
throw new execution_1.FigshareWaiting('uploads');
|
|
520
657
|
const transition = config.workflow.transitionJob;
|
|
521
|
-
if (transition.enabled &&
|
|
658
|
+
if (transition.enabled &&
|
|
659
|
+
record.workflow.stage !== transition.targetStep &&
|
|
660
|
+
article[transition.figshareTargetFieldKey] === transition.figshareTargetFieldValue) {
|
|
522
661
|
// Current business eligibility is still required even though the source actor is not used again.
|
|
523
|
-
if (!await eligible(state.work.sync.policies, record))
|
|
662
|
+
if (!(await eligible(state.work.sync.policies, record)))
|
|
524
663
|
throw new execution_1.FigshareWaiting('workflow_eligibility');
|
|
525
664
|
const recordType = await RecordTypesService.get(brand, record.metaMetadata.type).toPromise();
|
|
526
665
|
if (!recordType)
|
|
527
|
-
throw new execution_1.FigshareRepairRequired(
|
|
666
|
+
throw new execution_1.FigshareRepairRequired('Workflow record type is missing');
|
|
528
667
|
const step = await WorkflowStepsService.get(recordType, transition.targetStep).toPromise();
|
|
529
668
|
await store.assertOwner(oid, owner);
|
|
530
|
-
const result = await RecordsService.
|
|
531
|
-
|
|
669
|
+
const result = await RecordsService.updateMetaInternal({
|
|
670
|
+
actor: { kind: 'service', id: 'FigshareService.observeWorkflow' },
|
|
671
|
+
authorization: { kind: 'record-edit' },
|
|
672
|
+
mutationClass: 'transition',
|
|
673
|
+
maintenance: true,
|
|
674
|
+
oid,
|
|
675
|
+
record,
|
|
676
|
+
brand,
|
|
677
|
+
user,
|
|
678
|
+
targetStep: step,
|
|
679
|
+
operation: 'transition',
|
|
680
|
+
});
|
|
681
|
+
if (result.problems.some(problem => problem.issues.some(issue => issue.code === 'record-revision-stale')))
|
|
682
|
+
throw new execution_1.FigshareWaiting('record_changed');
|
|
683
|
+
if (!result.isComplete())
|
|
532
684
|
throw new execution_1.FigshareRepairRequired('Workflow hooks failed; inspect partial transition before resuming');
|
|
533
685
|
}
|
|
534
686
|
await finish('observe');
|
|
535
|
-
await checkpoint(s => {
|
|
687
|
+
await checkpoint(s => {
|
|
688
|
+
s.status = 'synced';
|
|
689
|
+
delete s.waitingReason;
|
|
690
|
+
});
|
|
536
691
|
await project();
|
|
537
692
|
}
|
|
538
693
|
if (state.status === 'running')
|
|
539
|
-
await checkpoint(s => {
|
|
694
|
+
await checkpoint(s => {
|
|
695
|
+
s.status = s.nextActionAt == null ? 'synced' : 'waiting';
|
|
696
|
+
});
|
|
540
697
|
});
|
|
541
698
|
}
|
|
542
699
|
catch (error) {
|
|
@@ -547,19 +704,42 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
547
704
|
}
|
|
548
705
|
else {
|
|
549
706
|
const message = error instanceof Error ? error.message : String(error);
|
|
550
|
-
const category = error instanceof execution_1.FigshareRepairRequired
|
|
707
|
+
const category = error instanceof execution_1.FigshareRepairRequired
|
|
708
|
+
? 'repair'
|
|
709
|
+
: error instanceof http_1.FigshareHttpError
|
|
710
|
+
? `http:${error.statusCode ?? 'transport'}`
|
|
711
|
+
: 'configuration_or_operation';
|
|
551
712
|
await checkpoint(s => {
|
|
552
713
|
const previous = s.error?.category === category && (!s.error.kind || s.error.kind === kind) ? s.error : undefined;
|
|
553
714
|
const count = (previous?.count ?? 0) + 1;
|
|
554
|
-
const terminal = category === 'repair' ||
|
|
555
|
-
|
|
556
|
-
|
|
715
|
+
const terminal = category === 'repair' ||
|
|
716
|
+
(error instanceof http_1.FigshareHttpError &&
|
|
717
|
+
error.statusCode != null &&
|
|
718
|
+
error.statusCode >= 400 &&
|
|
719
|
+
error.statusCode < 500 &&
|
|
720
|
+
![408, 429].includes(error.statusCode)) ||
|
|
721
|
+
count >= settings.maxAttempts;
|
|
722
|
+
s.error = {
|
|
723
|
+
kind,
|
|
724
|
+
category,
|
|
725
|
+
message,
|
|
726
|
+
count,
|
|
727
|
+
firstAt: previous?.firstAt ?? new Date().toISOString(),
|
|
728
|
+
lastAt: new Date().toISOString(),
|
|
729
|
+
terminal,
|
|
730
|
+
};
|
|
731
|
+
s.status = terminal ? (category === 'repair' ? 'repair_required' : 'failed') : 'retrying';
|
|
557
732
|
if (s.work[kind].requested === startedWork[kind].requested)
|
|
558
733
|
s.work[kind].dueAt = terminal ? null : Date.now() + settings.retryBaseMs * 2 ** (count - 1);
|
|
559
734
|
});
|
|
560
735
|
if (state.error?.terminal && !state.auditClosed && state.audit) {
|
|
561
|
-
(0, audit_1.failFigshareAudit)(state.audit, new Error(message), {
|
|
562
|
-
|
|
736
|
+
(0, audit_1.failFigshareAudit)(state.audit, new Error(message), {
|
|
737
|
+
message,
|
|
738
|
+
responseSummary: { articleId: state.binding?.articleId, attempts: state.error.count, category },
|
|
739
|
+
});
|
|
740
|
+
await checkpoint(s => {
|
|
741
|
+
s.auditClosed = true;
|
|
742
|
+
});
|
|
563
743
|
}
|
|
564
744
|
}
|
|
565
745
|
}
|
|
@@ -569,4 +749,4 @@ async function runFigshareWorker(service, job, store = getSyncStore()) {
|
|
|
569
749
|
await store.release(oid, owner);
|
|
570
750
|
}
|
|
571
751
|
}
|
|
572
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUE4QkEsb0NBR0M7QUFDRCwwQ0FJQztBQUdELGdEQU9DO0FBT0QsNENBNkNDO0FBRUQsOENBaVhDO0FBdmRELG9EQUF1QjtBQUN2Qiw2Q0FBcUQ7QUFJckQsbUNBQXlEO0FBQ3pELDhFQUE0RztBQUM1RyxxQ0FBc0c7QUFDdEcsNkNBQW9FO0FBQ3BFLDJDQUErSDtBQUMvSCx5Q0FBd0k7QUFDeEksbURBQTJEO0FBQzNELGlDQUFtRztBQUNuRyx1Q0FBK0Q7QUFDL0QsdUNBQTZDO0FBQzdDLHFEQUEwRTtBQUMxRSxtQ0FBdUY7QUFDdkYsdUNBQTZDO0FBQzdDLHFGQUFtRjtBQUNuRixpRUFBK0Q7QUFNeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7UUFDekcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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
|
|
752
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL3dvcmtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFnRUEsb0NBR0M7QUFDRCwwQ0FnQkM7QUFHRCxnREFPQztBQU9ELDRDQWdEQztBQUVELDhDQXdwQkM7QUEveUJELG9EQUF1QjtBQUN2Qiw2Q0FBcUQ7QUFVckQsbUNBQXlEO0FBQ3pELDhFQUE0RztBQUM1RyxxQ0FBc0c7QUFDdEcsNkNBQW9FO0FBQ3BFLDJDQU1xQjtBQUNyQix5Q0FPb0I7QUFDcEIsbURBQTJEO0FBQzNELGlDQUFtRztBQUNuRyx1Q0FBK0Q7QUFDL0QsdUNBQTZDO0FBQzdDLHFEQUEwRTtBQUMxRSxtQ0FBdUY7QUFDdkYsdUNBQTZDO0FBQzdDLHFGQUFtRjtBQUNuRixpRUFBK0Q7QUFXeEQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFjLEVBQVUsRUFBRTtJQUNwRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBVyxFQUFFLENBQ3hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtZQUMxQixDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7aUJBQ2QsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFD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
|