@researchdatabox/redbox-core 0.0.1-beta.9950 → 5.0.0-RC1
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/CoreController.d.ts +12 -0
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +91 -52
- package/dist/CoreService.d.ts +8 -1
- package/dist/CoreService.d.ts.map +1 -1
- package/dist/CoreService.js +8 -1
- package/dist/RecordsService.d.ts +2 -0
- package/dist/RecordsService.d.ts.map +1 -1
- package/dist/SearchService.d.ts +1 -1
- package/dist/SearchService.d.ts.map +1 -1
- package/dist/StorageService.d.ts +3 -1
- package/dist/StorageService.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.d.ts +1 -0
- package/dist/api-routes/groups/branding.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.js +19 -2
- package/dist/api-routes/groups/export.js +2 -2
- package/dist/api-routes/groups/figshare-crosswalks.d.ts +11 -0
- package/dist/api-routes/groups/figshare-crosswalks.d.ts.map +1 -0
- package/dist/api-routes/groups/figshare-crosswalks.js +171 -0
- package/dist/api-routes/groups/figshare-vocabulary.d.ts +12 -0
- package/dist/api-routes/groups/figshare-vocabulary.d.ts.map +1 -0
- package/dist/api-routes/groups/figshare-vocabulary.js +248 -0
- package/dist/api-routes/groups/search.js +4 -4
- package/dist/api-routes/groups/users.js +3 -3
- package/dist/api-routes/helpers.d.ts +4 -4
- package/dist/api-routes/helpers.d.ts.map +1 -1
- package/dist/api-routes/helpers.js +3 -4
- package/dist/api-routes/index.d.ts +2 -0
- package/dist/api-routes/index.d.ts.map +1 -1
- package/dist/api-routes/index.js +3 -1
- package/dist/api-routes/openapi.js +1 -1
- package/dist/api-routes/request-extraction.d.ts +2 -2
- package/dist/api-routes/request-extraction.d.ts.map +1 -1
- package/dist/api-routes/request-extraction.js +1 -1
- package/dist/api-routes/route-registry.d.ts.map +1 -1
- package/dist/api-routes/route-registry.js +5 -1
- package/dist/api-routes/schemas/common.d.ts +19 -19
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +3 -2
- package/dist/api-routes/schemas/responses.d.ts +352 -7032
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +2 -2
- package/dist/api-routes/types.d.ts +2 -2
- package/dist/api-routes/types.d.ts.map +1 -1
- package/dist/api-routes/validation.js +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +5 -1
- package/dist/config/agendaQueue.config.d.ts +11 -5
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +27 -19
- package/dist/config/auth.config.d.ts.map +1 -1
- package/dist/config/auth.config.js +4 -1
- package/dist/config/brandingConfigurationDefaults.config.d.ts +1 -1
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +22 -227
- package/dist/config/dashboardtype.config.d.ts +7 -0
- package/dist/config/dashboardtype.config.d.ts.map +1 -1
- package/dist/config/dashboardtype.config.js +9 -89
- package/dist/config/dashboardview.config.d.ts +7 -0
- package/dist/config/dashboardview.config.d.ts.map +1 -1
- package/dist/config/dashboardview.config.js +9 -134
- package/dist/config/emailnotification.config.d.ts.map +1 -1
- package/dist/config/emailnotification.config.js +2 -1
- package/dist/config/http.config.d.ts +2 -0
- package/dist/config/http.config.d.ts.map +1 -1
- package/dist/config/http.config.js +47 -1
- package/dist/config/jsonld.config.d.ts.map +1 -1
- package/dist/config/jsonld.config.js +2 -21
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +2 -9
- package/dist/config/recordtype.config.d.ts +8 -0
- package/dist/config/recordtype.config.d.ts.map +1 -1
- package/dist/config/recordtype.config.js +10 -660
- package/dist/config/reusableContributorFormDefinitions.config.d.ts.map +1 -1
- package/dist/config/reusableContributorFormDefinitions.config.js +11 -5
- package/dist/config/reusableViewFormDefinitions.config.d.ts.map +1 -1
- package/dist/config/reusableViewFormDefinitions.config.js +15 -4
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +13 -3
- package/dist/config/solr.config.d.ts +1 -0
- package/dist/config/solr.config.d.ts.map +1 -1
- package/dist/config/solr.config.js +3 -2
- package/dist/config/static_assets.config.d.ts +2 -0
- package/dist/config/static_assets.config.d.ts.map +1 -1
- package/dist/config/static_assets.config.js +4 -2
- package/dist/config/storage.config.d.ts.map +1 -1
- package/dist/config/storage.config.js +7 -1
- package/dist/config/views.config.d.ts.map +1 -1
- package/dist/config/views.config.js +2 -6
- package/dist/config/vocab.config.d.ts +4 -0
- package/dist/config/vocab.config.d.ts.map +1 -1
- package/dist/config/vocab.config.js +1 -1
- package/dist/config/workflow.config.d.ts +7 -0
- package/dist/config/workflow.config.d.ts.map +1 -1
- package/dist/config/workflow.config.js +9 -194
- package/dist/config/workspacetype.config.d.ts +7 -0
- package/dist/config/workspacetype.config.d.ts.map +1 -1
- package/dist/config/workspacetype.config.js +9 -10
- package/dist/configmodels/ConfigModels.d.ts +1 -1
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +9 -1
- package/dist/configmodels/DoiPublishing.d.ts +1 -1
- package/dist/configmodels/DoiPublishing.d.ts.map +1 -1
- package/dist/configmodels/FigsharePublishing.d.ts +746 -217
- package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
- package/dist/configmodels/FigsharePublishing.js +181 -190
- package/dist/configmodels/IntegrationNotificationConfig.d.ts +133 -0
- package/dist/configmodels/IntegrationNotificationConfig.d.ts.map +1 -0
- package/dist/configmodels/IntegrationNotificationConfig.js +64 -0
- package/dist/constants/export.d.ts +2 -0
- package/dist/constants/export.d.ts.map +1 -0
- package/dist/constants/export.js +8 -0
- package/dist/controllers/AdminController.d.ts.map +1 -1
- package/dist/controllers/AdminController.js +1 -1
- package/dist/controllers/AsynchController.d.ts +4 -1
- package/dist/controllers/AsynchController.d.ts.map +1 -1
- package/dist/controllers/AsynchController.js +118 -9
- package/dist/controllers/BrandingAppController.d.ts +2 -0
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +40 -2
- package/dist/controllers/BrandingController.d.ts +8 -0
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +45 -1
- package/dist/controllers/ExportController.d.ts.map +1 -1
- package/dist/controllers/ExportController.js +6 -10
- package/dist/controllers/RecordAuditController.d.ts +2 -0
- package/dist/controllers/RecordAuditController.d.ts.map +1 -1
- package/dist/controllers/RecordAuditController.js +55 -1
- package/dist/controllers/RecordController.d.ts +5 -1
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +51 -21
- package/dist/controllers/UserController.d.ts.map +1 -1
- package/dist/controllers/UserController.js +3 -2
- package/dist/controllers/VocabularyController.js +4 -4
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +7 -1
- package/dist/controllers/webservice/BrandingController.d.ts +1 -0
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
- package/dist/controllers/webservice/BrandingController.js +69 -10
- package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
- package/dist/controllers/webservice/ExportController.js +6 -10
- package/dist/controllers/webservice/FigshareCrosswalkController.d.ts +20 -0
- package/dist/controllers/webservice/FigshareCrosswalkController.d.ts.map +1 -0
- package/dist/controllers/webservice/FigshareCrosswalkController.js +184 -0
- package/dist/controllers/webservice/FigshareVocabularyController.d.ts +21 -0
- package/dist/controllers/webservice/FigshareVocabularyController.d.ts.map +1 -0
- package/dist/controllers/webservice/FigshareVocabularyController.js +223 -0
- package/dist/controllers/webservice/IntegrationAuditController.d.ts.map +1 -1
- package/dist/controllers/webservice/IntegrationAuditController.js +1 -1
- package/dist/controllers/webservice/RecordController.d.ts +6 -1
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +64 -13
- package/dist/controllers/webservice/UserManagementController.d.ts +5 -3
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/UserManagementController.js +140 -9
- package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts +14 -0
- package/dist/controllers/webservice/figshare-vocabulary-errors.d.ts.map +1 -0
- package/dist/controllers/webservice/figshare-vocabulary-errors.js +39 -0
- package/dist/form-config/index.d.ts +7 -0
- package/dist/form-config/index.d.ts.map +1 -1
- package/dist/form-config/index.js +8 -5
- package/dist/hooks/defineRedboxHook.d.ts +11 -2
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
- package/dist/hooks/defineRedboxHook.js +36 -7
- package/dist/hooks/hookDiscovery.d.ts +20 -0
- package/dist/hooks/hookDiscovery.d.ts.map +1 -0
- package/dist/hooks/hookDiscovery.js +186 -0
- package/dist/hooks/hookResources.d.ts +23 -0
- package/dist/hooks/hookResources.d.ts.map +1 -0
- package/dist/hooks/hookResources.js +136 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +14 -2
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/loader/index.d.ts +2 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +82 -64
- package/dist/model/storage/BrandingModel.d.ts +2 -0
- package/dist/model/storage/BrandingModel.d.ts.map +1 -1
- package/dist/model/storage/BrandingModel.js +3 -1
- package/dist/model/storage/IntegrationAuditModel.d.ts +2 -0
- package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
- package/dist/model/storage/IntegrationAuditModel.js +3 -1
- package/dist/policies/i18nLanguages.d.ts.map +1 -1
- package/dist/policies/i18nLanguages.js +1 -1
- package/dist/policies/menuResolver.d.ts.map +1 -1
- package/dist/policies/menuResolver.js +1 -1
- package/dist/policies/setLang.d.ts.map +1 -1
- package/dist/policies/setLang.js +1 -1
- package/dist/responses/badRequest.d.ts.map +1 -1
- package/dist/responses/badRequest.js +3 -2
- package/dist/responses/created.d.ts.map +1 -1
- package/dist/responses/created.js +3 -2
- package/dist/responses/forbidden.d.ts.map +1 -1
- package/dist/responses/forbidden.js +3 -2
- package/dist/responses/ok.d.ts.map +1 -1
- package/dist/responses/ok.js +3 -2
- package/dist/responses/serverError.d.ts.map +1 -1
- package/dist/responses/serverError.js +3 -2
- package/dist/responses/siteTitle.d.ts.map +1 -1
- package/dist/responses/siteTitle.js +1 -1
- package/dist/services/AgendaQueueService.d.ts +1 -0
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +24 -9
- package/dist/services/BrandingLogoService.d.ts +25 -1
- package/dist/services/BrandingLogoService.d.ts.map +1 -1
- package/dist/services/BrandingLogoService.js +56 -5
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
- package/dist/services/BrandingThemeTokens.js +2 -1
- package/dist/services/DoiService.js +5 -5
- package/dist/services/EmailService.d.ts +12 -4
- package/dist/services/EmailService.d.ts.map +1 -1
- package/dist/services/EmailService.js +28 -19
- package/dist/services/FigshareService.d.ts +12 -7
- package/dist/services/FigshareService.d.ts.map +1 -1
- package/dist/services/FigshareService.js +258 -104
- package/dist/services/FigshareVocabularyService.d.ts +442 -0
- package/dist/services/FigshareVocabularyService.d.ts.map +1 -0
- package/dist/services/FigshareVocabularyService.js +1802 -0
- package/dist/services/FormVocabularyService.d.ts.map +1 -1
- package/dist/services/FormVocabularyService.js +28 -7
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +1 -1
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +26 -4
- package/dist/services/IntegrationAuditService.d.ts +58 -0
- package/dist/services/IntegrationAuditService.d.ts.map +1 -1
- package/dist/services/IntegrationAuditService.js +292 -15
- package/dist/services/IntegrationNotificationService.d.ts +55 -0
- package/dist/services/IntegrationNotificationService.d.ts.map +1 -0
- package/dist/services/IntegrationNotificationService.js +271 -0
- package/dist/services/NamedQueryService.d.ts.map +1 -1
- package/dist/services/NamedQueryService.js +3 -16
- package/dist/services/OniService.d.ts.map +1 -1
- package/dist/services/OniService.js +3 -5
- package/dist/services/RDMPService.d.ts +2 -0
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +49 -33
- package/dist/services/RecordsService.d.ts +9 -2
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +66 -46
- package/dist/services/ReportsService.d.ts +0 -5
- package/dist/services/ReportsService.d.ts.map +1 -1
- package/dist/services/ReportsService.js +22 -31
- package/dist/services/SolrSearchService.d.ts +10 -2
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +110 -52
- package/dist/services/StandardDatastreamService.d.ts +7 -0
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +127 -27
- package/dist/services/TemplateService.d.ts +0 -14
- package/dist/services/TemplateService.d.ts.map +1 -1
- package/dist/services/TemplateService.js +5 -45
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +19 -16
- package/dist/services/ViewUtilsService.d.ts +5 -1
- package/dist/services/ViewUtilsService.d.ts.map +1 -1
- package/dist/services/ViewUtilsService.js +38 -46
- package/dist/services/VocabularyService.d.ts +11 -2
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +46 -20
- package/dist/services/doi-v2/audit.d.ts.map +1 -1
- package/dist/services/doi-v2/audit.js +1 -1
- package/dist/services/doi-v2/bindings.d.ts.map +1 -1
- package/dist/services/doi-v2/bindings.js +2 -11
- package/dist/services/doi-v2/payload.d.ts.map +1 -1
- package/dist/services/doi-v2/payload.js +32 -18
- package/dist/services/figshare-v2/assets.d.ts +2 -1
- package/dist/services/figshare-v2/assets.d.ts.map +1 -1
- package/dist/services/figshare-v2/assets.js +144 -89
- package/dist/services/figshare-v2/audit.d.ts +7 -0
- package/dist/services/figshare-v2/audit.d.ts.map +1 -0
- package/dist/services/figshare-v2/audit.js +30 -0
- package/dist/services/figshare-v2/bindings.d.ts +28 -3
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
- package/dist/services/figshare-v2/bindings.js +76 -17
- package/dist/services/figshare-v2/categories.d.ts +142 -0
- package/dist/services/figshare-v2/categories.d.ts.map +1 -0
- package/dist/services/figshare-v2/categories.js +408 -0
- package/dist/services/figshare-v2/config.d.ts +10 -0
- package/dist/services/figshare-v2/config.d.ts.map +1 -1
- package/dist/services/figshare-v2/config.js +64 -2
- package/dist/services/figshare-v2/context.d.ts +18 -1
- package/dist/services/figshare-v2/context.d.ts.map +1 -1
- package/dist/services/figshare-v2/context.js +35 -2
- package/dist/services/figshare-v2/embargo.d.ts.map +1 -1
- package/dist/services/figshare-v2/embargo.js +6 -4
- package/dist/services/figshare-v2/http.d.ts +20 -1
- package/dist/services/figshare-v2/http.d.ts.map +1 -1
- package/dist/services/figshare-v2/http.js +85 -9
- package/dist/services/figshare-v2/metadata.d.ts.map +1 -1
- package/dist/services/figshare-v2/metadata.js +150 -35
- package/dist/services/figshare-v2/observability.d.ts +1 -2
- package/dist/services/figshare-v2/observability.d.ts.map +1 -1
- package/dist/services/figshare-v2/observability.js +7 -45
- package/dist/services/figshare-v2/runtime.d.ts +5 -2
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +59 -37
- package/dist/services/figshare-v2/types.d.ts +18 -0
- package/dist/services/figshare-v2/types.d.ts.map +1 -1
- package/dist/services/figshare-v2/types.js +1 -1
- package/dist/services/figshare-v2/vocabulary-errors.d.ts +39 -0
- package/dist/services/figshare-v2/vocabulary-errors.d.ts.map +1 -0
- package/dist/services/figshare-v2/vocabulary-errors.js +68 -0
- package/dist/services/index.d.ts +6 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +13 -2
- package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -1
- package/dist/storage/TusStorageManagerDataStore.js +14 -1
- package/dist/transformers/ExportJSONTransformer.d.ts +1 -1
- package/dist/transformers/ExportJSONTransformer.d.ts.map +1 -1
- package/dist/transformers/ExportJSONTransformer.js +3 -3
- package/dist/utilities/ContextVariableUtils.d.ts +3 -1
- package/dist/utilities/ContextVariableUtils.d.ts.map +1 -1
- package/dist/utilities/ContextVariableUtils.js +25 -7
- package/dist/utilities/PromiseUtils.d.ts +9 -0
- package/dist/utilities/PromiseUtils.d.ts.map +1 -0
- package/dist/utilities/PromiseUtils.js +27 -0
- package/dist/utilities/RedactionUtils.d.ts +3 -0
- package/dist/utilities/RedactionUtils.d.ts.map +1 -0
- package/dist/utilities/RedactionUtils.js +55 -0
- package/dist/visitor/client.visitor.d.ts +7 -0
- package/dist/visitor/client.visitor.d.ts.map +1 -1
- package/dist/visitor/client.visitor.js +135 -30
- package/dist/visitor/construct.visitor.d.ts +6 -0
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +152 -108
- package/dist/visitor/data-value.visitor.d.ts +3 -0
- package/dist/visitor/data-value.visitor.d.ts.map +1 -1
- package/dist/visitor/data-value.visitor.js +6 -1
- package/dist/visitor/json-type-def.visitor.d.ts +4 -0
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
- package/dist/visitor/json-type-def.visitor.js +25 -4
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +9 -3
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +168 -104
- package/dist/visitor/template.visitor.d.ts +3 -0
- package/dist/visitor/template.visitor.d.ts.map +1 -1
- package/dist/visitor/template.visitor.js +6 -1
- package/dist/visitor/validator.visitor.d.ts +3 -1
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +8 -2
- package/dist/visitor/visitor-helpers.js +2 -2
- package/dist/waterline-models/BrandingConfig.d.ts +2 -0
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +6 -1
- package/dist/waterline-models/FigshareVocabularyCategory.d.ts +38 -0
- package/dist/waterline-models/FigshareVocabularyCategory.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularyCategory.js +157 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts +37 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalk.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalk.js +153 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts +37 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularyCrosswalkMapping.js +138 -0
- package/dist/waterline-models/FigshareVocabularySource.d.ts +45 -0
- package/dist/waterline-models/FigshareVocabularySource.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularySource.js +149 -0
- package/dist/waterline-models/FigshareVocabularySyncRun.d.ts +70 -0
- package/dist/waterline-models/FigshareVocabularySyncRun.d.ts.map +1 -0
- package/dist/waterline-models/FigshareVocabularySyncRun.js +237 -0
- package/dist/waterline-models/Vocabulary.d.ts +3 -1
- package/dist/waterline-models/Vocabulary.d.ts.map +1 -1
- package/dist/waterline-models/Vocabulary.js +9 -3
- package/dist/waterline-models/index.d.ts +10 -0
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +16 -1
- package/package.json +28 -31
- package/dist/form-config/dataRecord-1.0-draft.d.ts +0 -4
- package/dist/form-config/dataRecord-1.0-draft.d.ts.map +0 -1
- package/dist/form-config/dataRecord-1.0-draft.js +0 -1042
- package/dist/form-config/default-1.0-draft.d.ts +0 -4
- package/dist/form-config/default-1.0-draft.d.ts.map +0 -1
- package/dist/form-config/default-1.0-draft.js +0 -1156
|
@@ -4,33 +4,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.syncAssetsPhase = syncAssetsPhase;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
7
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const
|
|
8
|
+
const node_crypto_1 = require("node:crypto");
|
|
9
|
+
const node_stream_1 = require("node:stream");
|
|
10
10
|
const RBValidationError_1 = require("../../model/RBValidationError");
|
|
11
11
|
const config_1 = require("./config");
|
|
12
12
|
const plan_1 = require("./plan");
|
|
13
|
-
const UNKNOWN_SIZE_STAGING_BUFFER_BYTES = 50 * 1024 * 1024;
|
|
14
13
|
const LINK_FILE_CREATE_RETRY_COUNT = 3;
|
|
15
14
|
const FIGSHARE_UPLOAD_PENDING_STATUS = 'created';
|
|
16
|
-
|
|
17
|
-
const configDir = config.assets.staging.tempDir;
|
|
18
|
-
if (configDir)
|
|
19
|
-
return configDir;
|
|
20
|
-
return '/tmp';
|
|
21
|
-
}
|
|
15
|
+
const DEFAULT_FIGSHARE_STAGING_DISK = 'figshare-staging';
|
|
22
16
|
function getRecordOid(record) {
|
|
23
17
|
return record.redboxOid ?? record.id ?? '';
|
|
24
18
|
}
|
|
25
19
|
function getDatastreamService() {
|
|
26
20
|
const recordConfig = sails.config.record;
|
|
27
21
|
const serviceName = String(recordConfig?.datastreamService ?? '');
|
|
28
|
-
return serviceName
|
|
22
|
+
return serviceName
|
|
23
|
+
? sails.services?.[serviceName]
|
|
24
|
+
: undefined;
|
|
29
25
|
}
|
|
30
26
|
function validationError(message) {
|
|
31
27
|
return new RBValidationError_1.RBValidationError({
|
|
32
28
|
message,
|
|
33
|
-
displayErrors: [{ title: message, detail: message }]
|
|
29
|
+
displayErrors: [{ title: message, detail: message }],
|
|
34
30
|
});
|
|
35
31
|
}
|
|
36
32
|
async function getAttachmentStream(oid, fileId) {
|
|
@@ -44,21 +40,105 @@ async function getAttachmentStream(oid, fileId) {
|
|
|
44
40
|
}
|
|
45
41
|
return response;
|
|
46
42
|
}
|
|
47
|
-
async function
|
|
48
|
-
await
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
async function ensureAttachmentDatastream(oid, fileId) {
|
|
44
|
+
const response = await getAttachmentStream(oid, fileId);
|
|
45
|
+
const stream = response.readstream;
|
|
46
|
+
if (typeof stream?.destroy === 'function') {
|
|
47
|
+
const ignoreDestroyError = () => undefined;
|
|
48
|
+
const removeDestroyErrorHandler = () => {
|
|
49
|
+
stream.off('error', ignoreDestroyError);
|
|
50
|
+
stream.off('close', removeDestroyErrorHandler);
|
|
51
|
+
stream.off('finish', removeDestroyErrorHandler);
|
|
52
|
+
};
|
|
53
|
+
stream.once('error', ignoreDestroyError);
|
|
54
|
+
stream.once('close', removeDestroyErrorHandler);
|
|
55
|
+
stream.once('finish', removeDestroyErrorHandler);
|
|
56
|
+
stream.destroy();
|
|
57
|
+
}
|
|
59
58
|
}
|
|
60
59
|
function sanitizePathComponent(value) {
|
|
61
|
-
return value
|
|
60
|
+
return (value
|
|
61
|
+
.replace(/[^A-Za-z0-9._-]+/g, '-')
|
|
62
|
+
.replace(/-+/g, '-')
|
|
63
|
+
.replace(/-\./g, '.')
|
|
64
|
+
.replace(/^-+|-+$/g, '') || 'item');
|
|
65
|
+
}
|
|
66
|
+
function getStagingDisk(config) {
|
|
67
|
+
const diskName = config.assets.staging.disk?.trim();
|
|
68
|
+
if (!diskName) {
|
|
69
|
+
return StorageManagerService.stagingDisk();
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
return StorageManagerService.disk(diskName);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (diskName !== DEFAULT_FIGSHARE_STAGING_DISK) {
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
// A deployment that overrides storage.disks may not register the default
|
|
79
|
+
// 'figshare-staging' disk. Fall back to the configured staging disk rather
|
|
80
|
+
// than failing the upload before staging starts.
|
|
81
|
+
sails.log.warn(`FigService - staging disk '${diskName}' is not registered; falling back to the default staging disk`, error);
|
|
82
|
+
return StorageManagerService.stagingDisk();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function buildStagingKey(config, articleId, oid, fileId, fileName, logger) {
|
|
86
|
+
const prefix = (config.assets.staging.keyPrefix ?? 'figshare/').replace(/^\/+|\/+$/g, '') || 'figshare';
|
|
87
|
+
const originalFileName = path_1.default.basename(fileName).trim();
|
|
88
|
+
if (originalFileName === '') {
|
|
89
|
+
throw validationError(`Attachment '${fileName}' does not contain a valid file name`);
|
|
90
|
+
}
|
|
91
|
+
// basename() can still yield the reserved '.'/'..' segments, which would point the
|
|
92
|
+
// staging key at the directory itself or escape it on an fs-backed disk.
|
|
93
|
+
if (originalFileName === '.' || originalFileName === '..') {
|
|
94
|
+
throw validationError(`Attachment '${fileName}' does not contain a valid file name`);
|
|
95
|
+
}
|
|
96
|
+
const storageFileName = sanitizePathComponent(originalFileName);
|
|
97
|
+
if (storageFileName !== originalFileName) {
|
|
98
|
+
logger?.verbose(`FigService - sanitized staging filename '${originalFileName}' to '${storageFileName}' for attachment '${fileId}'`);
|
|
99
|
+
}
|
|
100
|
+
// Append a per-attempt random segment so concurrent or retried uploads of the
|
|
101
|
+
// same attachment never share a staging key (which would let one attempt
|
|
102
|
+
// overwrite or delete the object another attempt is still streaming).
|
|
103
|
+
const dir = `${sanitizePathComponent(articleId)}-${sanitizePathComponent(oid)}-${sanitizePathComponent(fileId)}-${(0, node_crypto_1.randomUUID)()}`;
|
|
104
|
+
return `${prefix}/${dir}/${storageFileName}`;
|
|
105
|
+
}
|
|
106
|
+
async function stageAttachmentToDisk(disk, key, response) {
|
|
107
|
+
const expectedSize = Number(response.size ?? 0);
|
|
108
|
+
await disk.putStream(key, response.readstream, expectedSize > 0 ? { contentLength: expectedSize } : {});
|
|
109
|
+
const meta = await disk.getMetaData(key);
|
|
110
|
+
return meta.contentLength;
|
|
111
|
+
}
|
|
112
|
+
async function* readPartsSequentially(source, parts) {
|
|
113
|
+
const ordered = [...parts].sort((a, b) => a.startOffset - b.startOffset);
|
|
114
|
+
let consumed = 0;
|
|
115
|
+
let carry = Buffer.alloc(0);
|
|
116
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
117
|
+
for (const part of ordered) {
|
|
118
|
+
const partSize = part.endOffset - part.startOffset + 1;
|
|
119
|
+
if (part.startOffset !== consumed) {
|
|
120
|
+
throw validationError(`Figshare upload part ${part.partNo} starts at ${part.startOffset}; expected ${consumed}`);
|
|
121
|
+
}
|
|
122
|
+
async function* partStream() {
|
|
123
|
+
let need = partSize;
|
|
124
|
+
while (need > 0) {
|
|
125
|
+
if (carry.length === 0) {
|
|
126
|
+
const { value, done } = await iterator.next();
|
|
127
|
+
if (done === true) {
|
|
128
|
+
throw validationError(`Staged object truncated at offset ${consumed}; expected more bytes for part ${part.partNo}`);
|
|
129
|
+
}
|
|
130
|
+
carry = Buffer.isBuffer(value) ? value : Buffer.from(value);
|
|
131
|
+
}
|
|
132
|
+
const take = Math.min(need, carry.length);
|
|
133
|
+
const chunk = carry.subarray(0, take);
|
|
134
|
+
carry = carry.subarray(take);
|
|
135
|
+
need -= take;
|
|
136
|
+
consumed += take;
|
|
137
|
+
yield chunk;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
yield { partNo: part.partNo, stream: node_stream_1.Readable.from(partStream()) };
|
|
141
|
+
}
|
|
62
142
|
}
|
|
63
143
|
async function listArticleFiles(client, articleId) {
|
|
64
144
|
const currentFiles = [];
|
|
@@ -78,65 +158,32 @@ async function listArticleFiles(client, articleId) {
|
|
|
78
158
|
return currentFiles;
|
|
79
159
|
}
|
|
80
160
|
function hasPendingUploads(files) {
|
|
81
|
-
return files.some(
|
|
161
|
+
return files.some(entry => String(entry.status ?? '').toLowerCase() === FIGSHARE_UPLOAD_PENDING_STATUS);
|
|
82
162
|
}
|
|
83
|
-
async function uploadAttachment(client, config, articleId, oid, attachment) {
|
|
163
|
+
async function uploadAttachment(client, config, articleId, oid, attachment, logger) {
|
|
84
164
|
const fileId = attachment.fileId ?? '';
|
|
85
165
|
const fileName = attachment.name ?? '';
|
|
86
166
|
if (fileId === '' || fileName === '') {
|
|
87
167
|
throw validationError('Attachment entry is missing fileId or name');
|
|
88
168
|
}
|
|
89
|
-
const
|
|
90
|
-
const
|
|
91
|
-
const safeFileName = path_1.default.basename(fileName).trim();
|
|
92
|
-
if (safeFileName === '') {
|
|
93
|
-
throw validationError(`Attachment '${fileName}' does not contain a valid file name`);
|
|
94
|
-
}
|
|
95
|
-
await fs_1.default.promises.mkdir(resolvedTempDir, { recursive: true });
|
|
96
|
-
const stagingDir = await fs_1.default.promises.mkdtemp(path_1.default.join(resolvedTempDir, `${sanitizePathComponent(articleId)}-${sanitizePathComponent(oid)}-${sanitizePathComponent(fileId)}-`));
|
|
97
|
-
const filePath = path_1.default.resolve(stagingDir, safeFileName);
|
|
98
|
-
if (!filePath.startsWith(`${stagingDir}${path_1.default.sep}`) && filePath !== path_1.default.join(stagingDir, safeFileName)) {
|
|
99
|
-
throw validationError(`Attachment '${fileName}' resolves outside the staging directory`);
|
|
100
|
-
}
|
|
169
|
+
const disk = getStagingDisk(config);
|
|
170
|
+
const stagingKey = buildStagingKey(config, articleId, oid, fileId, fileName, logger);
|
|
101
171
|
const datastream = await getAttachmentStream(oid, fileId);
|
|
102
|
-
const expectedSize = Number(datastream.size ?? 0);
|
|
103
|
-
if (expectedSize > 0) {
|
|
104
|
-
const diskSpace = await (0, check_disk_space_1.default)(tempDir);
|
|
105
|
-
if (diskSpace.free < expectedSize + config.assets.staging.diskSpaceThresholdBytes) {
|
|
106
|
-
throw validationError(`Not enough free disk space to upload '${fileName}'`);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
const diskSpace = await (0, check_disk_space_1.default)(tempDir);
|
|
111
|
-
const requiredBytes = config.assets.staging.diskSpaceThresholdBytes + UNKNOWN_SIZE_STAGING_BUFFER_BYTES;
|
|
112
|
-
if (diskSpace.free < requiredBytes) {
|
|
113
|
-
throw validationError(`Not enough free disk space to upload '${fileName}'`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
172
|
let uploadSucceeded = false;
|
|
117
173
|
try {
|
|
118
|
-
const stagedSize = await stageAttachmentToDisk(
|
|
119
|
-
if (expectedSize <= 0) {
|
|
120
|
-
const diskSpace = await (0, check_disk_space_1.default)(tempDir);
|
|
121
|
-
if (diskSpace.free < stagedSize + config.assets.staging.diskSpaceThresholdBytes) {
|
|
122
|
-
throw validationError(`Not enough free disk space to upload '${fileName}'`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
174
|
+
const stagedSize = await stageAttachmentToDisk(disk, stagingKey, datastream);
|
|
125
175
|
const uploadInit = await client.createArticleFile(articleId, {
|
|
126
176
|
name: fileName,
|
|
127
|
-
size: stagedSize
|
|
177
|
+
size: stagedSize,
|
|
128
178
|
});
|
|
129
179
|
const uploadDescriptor = await client.getLocation(uploadInit.location);
|
|
130
180
|
const uploadUrl = uploadDescriptor.upload_url;
|
|
131
181
|
const figshareFileId = String(uploadDescriptor.id);
|
|
132
182
|
const partsDescriptor = await client.getLocation(uploadUrl);
|
|
133
183
|
const parts = partsDescriptor.parts ?? [];
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
end: part.endOffset
|
|
138
|
-
});
|
|
139
|
-
await client.uploadFilePart(uploadUrl, part.partNo, readStream);
|
|
184
|
+
const source = await disk.getStream(stagingKey);
|
|
185
|
+
for await (const { partNo, stream } of readPartsSequentially(source, parts)) {
|
|
186
|
+
await client.uploadFilePart(uploadUrl, partNo, stream);
|
|
140
187
|
}
|
|
141
188
|
await client.completeFileUpload(articleId, figshareFileId, {});
|
|
142
189
|
const uploadedFile = await client.getLocation(uploadInit.location);
|
|
@@ -144,14 +191,19 @@ async function uploadAttachment(client, config, articleId, oid, attachment) {
|
|
|
144
191
|
return uploadedFile;
|
|
145
192
|
}
|
|
146
193
|
finally {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
194
|
+
// Stored configs may omit cleanupPolicy; default to delete-after-success so
|
|
195
|
+
// staged objects are not retained on the staging disk indefinitely.
|
|
196
|
+
const cleanupPolicy = config.assets.staging.cleanupPolicy ?? 'deleteAfterSuccess';
|
|
197
|
+
const shouldDelete = !uploadSucceeded || cleanupPolicy === 'deleteAfterSuccess';
|
|
198
|
+
if (shouldDelete) {
|
|
199
|
+
await disk
|
|
200
|
+
.delete(stagingKey)
|
|
201
|
+
.catch(error => sails.log.warn(`FigService - failed to delete staged object '${stagingKey}'`, error));
|
|
150
202
|
}
|
|
151
203
|
}
|
|
152
204
|
}
|
|
153
205
|
async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles) {
|
|
154
|
-
const existingLinkFiles = currentFiles.filter(
|
|
206
|
+
const existingLinkFiles = currentFiles.filter(entry => entry.is_link_only === true);
|
|
155
207
|
const uploadedUrls = [];
|
|
156
208
|
const creationErrors = [];
|
|
157
209
|
for (const entry of selectedUrls) {
|
|
@@ -164,7 +216,7 @@ async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles)
|
|
|
164
216
|
attempt += 1;
|
|
165
217
|
try {
|
|
166
218
|
responseLocation = await client.createArticleFile(articleId, {
|
|
167
|
-
link: entry.location ?? ''
|
|
219
|
+
link: entry.location ?? '',
|
|
168
220
|
});
|
|
169
221
|
break;
|
|
170
222
|
}
|
|
@@ -183,7 +235,7 @@ async function syncLinkOnlyFiles(client, articleId, selectedUrls, currentFiles)
|
|
|
183
235
|
name: entry.name ?? entry.originalFileName ?? String(entry.location ?? ''),
|
|
184
236
|
status: uploadedFile.status,
|
|
185
237
|
download_url: uploadedFile.download_url,
|
|
186
|
-
is_link_only: true
|
|
238
|
+
is_link_only: true,
|
|
187
239
|
});
|
|
188
240
|
}
|
|
189
241
|
catch (error) {
|
|
@@ -209,13 +261,13 @@ function toFixtureFigshareFile(entry, articleId, index, isLinkOnly) {
|
|
|
209
261
|
size: 0,
|
|
210
262
|
is_link_only: isLinkOnly,
|
|
211
263
|
download_url: isLinkOnly ? String(entry.location ?? '') : String(entry.download_url ?? ''),
|
|
212
|
-
computed_md5: 'fixture-md5'
|
|
264
|
+
computed_md5: 'fixture-md5',
|
|
213
265
|
};
|
|
214
266
|
}
|
|
215
|
-
async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
267
|
+
async function syncAssetsPhase(client, config, record, article, syncState, logger) {
|
|
216
268
|
const selectedDataLocations = (0, plan_1.getSelectedDataLocations)(config, record);
|
|
217
|
-
const selectedAttachments = selectedDataLocations.filter(
|
|
218
|
-
const selectedUrls = selectedDataLocations.filter(
|
|
269
|
+
const selectedAttachments = selectedDataLocations.filter(entry => entry.type === 'attachment');
|
|
270
|
+
const selectedUrls = selectedDataLocations.filter(entry => entry.type === 'url');
|
|
219
271
|
const articleId = String(article.id);
|
|
220
272
|
const attachmentCount = selectedAttachments.length;
|
|
221
273
|
const urlCount = selectedUrls.length;
|
|
@@ -225,16 +277,17 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
|
225
277
|
}
|
|
226
278
|
if (config.runtime.mode === 'fixture') {
|
|
227
279
|
const uploadsComplete = !(attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete');
|
|
228
|
-
syncState.status =
|
|
229
|
-
|
|
230
|
-
|
|
280
|
+
syncState.status =
|
|
281
|
+
attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
|
|
282
|
+
? 'awaiting_upload_completion'
|
|
283
|
+
: 'syncing';
|
|
231
284
|
syncState.partialProgress = {
|
|
232
285
|
articleId,
|
|
233
286
|
attachmentCount,
|
|
234
287
|
urlCount,
|
|
235
288
|
uploadsComplete,
|
|
236
289
|
uploadedAttachmentCount: attachmentCount,
|
|
237
|
-
uploadedUrlCount: urlCount
|
|
290
|
+
uploadedUrlCount: urlCount,
|
|
238
291
|
};
|
|
239
292
|
(0, config_1.setSyncState)(config, record, syncState);
|
|
240
293
|
return {
|
|
@@ -244,7 +297,7 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
|
244
297
|
uploadsComplete,
|
|
245
298
|
uploadedAttachments: selectedAttachments.map((entry, index) => toFixtureFigshareFile(entry, articleId, index, false)),
|
|
246
299
|
uploadedUrls: selectedUrls.map((entry, index) => toFixtureFigshareFile(entry, articleId, index, true)),
|
|
247
|
-
dataLocations: selectedDataLocations
|
|
300
|
+
dataLocations: selectedDataLocations,
|
|
248
301
|
};
|
|
249
302
|
}
|
|
250
303
|
const oid = getRecordOid(record);
|
|
@@ -253,12 +306,13 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
|
253
306
|
if (config.assets.enableHostedFiles) {
|
|
254
307
|
for (const attachment of selectedAttachments) {
|
|
255
308
|
const fileName = attachment.name ?? '';
|
|
256
|
-
const alreadyUploaded = currentFiles.find(
|
|
309
|
+
const alreadyUploaded = currentFiles.find(entry => entry.name === fileName);
|
|
257
310
|
if (alreadyUploaded != null) {
|
|
311
|
+
await ensureAttachmentDatastream(oid, attachment.fileId ?? '');
|
|
258
312
|
uploadedAttachments.push(alreadyUploaded);
|
|
259
313
|
continue;
|
|
260
314
|
}
|
|
261
|
-
uploadedAttachments.push(await uploadAttachment(client, config, articleId, oid, attachment));
|
|
315
|
+
uploadedAttachments.push(await uploadAttachment(client, config, articleId, oid, attachment, logger));
|
|
262
316
|
uploadedAttachmentCountThisRun += 1;
|
|
263
317
|
}
|
|
264
318
|
}
|
|
@@ -271,9 +325,10 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
|
271
325
|
: config.article.publishMode === 'afterUploadsComplete' && uploadedAttachmentCountThisRun > 0
|
|
272
326
|
? false
|
|
273
327
|
: !hasPendingUploads(refreshedFiles);
|
|
274
|
-
syncState.status =
|
|
275
|
-
|
|
276
|
-
|
|
328
|
+
syncState.status =
|
|
329
|
+
attachmentCount > 0 && config.article.publishMode === 'afterUploadsComplete'
|
|
330
|
+
? 'awaiting_upload_completion'
|
|
331
|
+
: 'syncing';
|
|
277
332
|
syncState.partialProgress = {
|
|
278
333
|
articleId,
|
|
279
334
|
attachmentCount,
|
|
@@ -281,7 +336,7 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
|
281
336
|
uploadsComplete,
|
|
282
337
|
uploadedAttachmentCountThisRun,
|
|
283
338
|
uploadedAttachmentCount: uploadedAttachments.length,
|
|
284
|
-
uploadedUrlCount: uploadedUrls.length
|
|
339
|
+
uploadedUrlCount: uploadedUrls.length,
|
|
285
340
|
};
|
|
286
341
|
(0, config_1.setSyncState)(config, record, syncState);
|
|
287
342
|
return {
|
|
@@ -291,7 +346,7 @@ async function syncAssetsPhase(client, config, record, article, syncState) {
|
|
|
291
346
|
uploadsComplete,
|
|
292
347
|
uploadedAttachments,
|
|
293
348
|
uploadedUrls,
|
|
294
|
-
dataLocations: selectedDataLocations
|
|
349
|
+
dataLocations: selectedDataLocations,
|
|
295
350
|
};
|
|
296
351
|
}
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdQQSwwQ0ErRkM7QUF2VkQsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4Qix3RUFBOEM7QUFHOUMscUVBQWtFO0FBV2xFLHFDQUF3QztBQUN4QyxpQ0FBa0Q7QUFFbEQsTUFBTSxpQ0FBaUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMzRCxNQUFNLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUN2QyxNQUFNLDhCQUE4QixHQUFHLFNBQVMsQ0FBQztBQUVqRCxTQUFTLFVBQVUsQ0FBQyxNQUFvQztJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7SUFDaEQsSUFBSSxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDaEMsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLE1BQW1CO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBUyxvQkFBb0I7SUFDM0IsTUFBTSxZQUFZLEdBQUksS0FBSyxDQUFDLE1BQWtDLENBQUMsTUFBNkMsQ0FBQztJQUM3RyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBRSxLQUFLLENBQUMsUUFBb0MsRUFBRSxDQUFDLFdBQVcsQ0FBd0MsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JJLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQztRQUMzQixP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
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ZpZ3NoYXJlLXYyL2Fzc2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQTZWQSwwQ0FzR0M7QUFuY0QsZ0RBQXdCO0FBRXhCLDZDQUF5QztBQUN6Qyw2Q0FBdUM7QUFHdkMscUVBQWtFO0FBYWxFLHFDQUF3QztBQUN4QyxpQ0FBa0Q7QUFJbEQsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLENBQUM7QUFDdkMsTUFBTSw4QkFBOEIsR0FBRyxTQUFTLENBQUM7QUFDakQsTUFBTSw2QkFBNkIsR0FBRyxrQkFBa0IsQ0FBQztBQUV6RCxTQUFTLFlBQVksQ0FBQyxNQUFtQjtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMsb0JBQW9CO0lBQzNCLE1BQU0sWUFBWSxHQUFJLEtBQUssQ0FBQyxNQUFrQyxDQUFDLE1BQTZDLENBQUM7SUFDN0csTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRSxPQUFPLFdBQVc7UUFDaEIsQ0FBQyxDQUFHLEtBQUssQ0FBQyxRQUFvQyxFQUFFLENBQUMsV0FBVyxDQUF5QztRQUNyRyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxPQUFlO0lBQ3RDLE9BQU8sSUFBSSxxQ0FBaUIsQ0FBQztRQUMzQixPQUFPO1FBQ1AsYUFBYSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztLQUNyRCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBT0QsS0FBSyxVQUFVLG1CQUFtQixDQUFDLEdBQVcsRUFBRSxNQUFjO0lBQzVELE1BQU0saUJBQWlCLEdBQUcsb0JBQW9C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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IntegrationAuditContext } from '../IntegrationAuditService';
|
|
2
|
+
import { IntegrationAuditAction } from '../../model/storage/IntegrationAuditModel';
|
|
3
|
+
import type { FigshareRunContext } from './types';
|
|
4
|
+
export declare function startFigshareAudit(oid: string, action: IntegrationAuditAction, runContext: FigshareRunContext, requestSummary: Record<string, unknown>, parentAuditContext?: IntegrationAuditContext | null): IntegrationAuditContext | null;
|
|
5
|
+
export declare function completeFigshareAudit(ctx: IntegrationAuditContext | null | undefined, details: Record<string, unknown>): void;
|
|
6
|
+
export declare function failFigshareAudit(ctx: IntegrationAuditContext | null | undefined, error: unknown, details: Record<string, unknown>): void;
|
|
7
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAwB,MAAM,2CAA2C,CAAC;AACzG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,kBAAkB,EAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,kBAAkB,CAAC,EAAE,uBAAuB,GAAG,IAAI,GAClD,uBAAuB,GAAG,IAAI,CAYhC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAI7H;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,uBAAuB,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAIzI"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startFigshareAudit = startFigshareAudit;
|
|
4
|
+
exports.completeFigshareAudit = completeFigshareAudit;
|
|
5
|
+
exports.failFigshareAudit = failFigshareAudit;
|
|
6
|
+
const IntegrationAuditModel_1 = require("../../model/storage/IntegrationAuditModel");
|
|
7
|
+
function startFigshareAudit(oid, action, runContext, requestSummary, parentAuditContext) {
|
|
8
|
+
if (typeof IntegrationAuditService === 'undefined' || typeof IntegrationAuditService.startAudit !== 'function') {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return IntegrationAuditService.startAudit(oid, action, {
|
|
12
|
+
integrationName: IntegrationAuditModel_1.IntegrationAuditName.figshare,
|
|
13
|
+
brandId: runContext.brandId,
|
|
14
|
+
triggeredBy: runContext.triggerSource,
|
|
15
|
+
requestSummary,
|
|
16
|
+
traceId: parentAuditContext?.traceId,
|
|
17
|
+
parentSpanId: parentAuditContext?.spanId,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function completeFigshareAudit(ctx, details) {
|
|
21
|
+
if (typeof IntegrationAuditService !== 'undefined' && typeof IntegrationAuditService.completeAudit === 'function') {
|
|
22
|
+
IntegrationAuditService.completeAudit(ctx, details);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function failFigshareAudit(ctx, error, details) {
|
|
26
|
+
if (typeof IntegrationAuditService !== 'undefined' && typeof IntegrationAuditService.failAudit === 'function') {
|
|
27
|
+
IntegrationAuditService.failAudit(ctx, error, details);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZmlnc2hhcmUtdjIvYXVkaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxnREFrQkM7QUFFRCxzREFJQztBQUVELDhDQUlDO0FBakNELHFGQUF5RztBQUd6RyxTQUFnQixrQkFBa0IsQ0FDaEMsR0FBVyxFQUNYLE1BQThCLEVBQzlCLFVBQThCLEVBQzlCLGNBQXVDLEVBQ3ZDLGtCQUFtRDtJQUVuRCxJQUFJLE9BQU8sdUJBQXVCLEtBQUssV0FBVyxJQUFJLE9BQU8sdUJBQXVCLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQy9HLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELE9BQU8sdUJBQXVCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUU7UUFDckQsZUFBZSxFQUFFLDRDQUFvQixDQUFDLFFBQVE7UUFDOUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1FBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsYUFBYTtRQUNyQyxjQUFjO1FBQ2QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE9BQU87UUFDcEMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLE1BQU07S0FDekMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLEdBQStDLEVBQUUsT0FBZ0M7SUFDckgsSUFBSSxPQUFPLHVCQUF1QixLQUFLLFdBQVcsSUFBSSxPQUFPLHVCQUF1QixDQUFDLGFBQWEsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNsSCx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsR0FBK0MsRUFBRSxLQUFjLEVBQUUsT0FBZ0M7SUFDakksSUFBSSxPQUFPLHVCQUF1QixLQUFLLFdBQVcsSUFBSSxPQUFPLHVCQUF1QixDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM5Ryx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RCxDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
import { ValueBinding } from '../../configmodels/FigsharePublishing';
|
|
1
|
+
import { CrosswalkBinding, ValueBinding } from '../../configmodels/FigsharePublishing';
|
|
2
2
|
import { AnyRecord } from './types';
|
|
3
|
-
|
|
3
|
+
import { BindingContext } from './context';
|
|
4
|
+
export interface CrosswalkBindingResult {
|
|
5
|
+
values: Array<number | string>;
|
|
6
|
+
/** Raw candidates taken from the inner source, before normalisation. */
|
|
7
|
+
sourceCodes: string[];
|
|
8
|
+
normalizedCodes: string[];
|
|
9
|
+
unresolvedCodes: string[];
|
|
10
|
+
historicalTargets: Array<{
|
|
11
|
+
code: string;
|
|
12
|
+
categoryId: number;
|
|
13
|
+
sourceId: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
4
16
|
export declare function validateHandlebarsTemplate(template: string): void;
|
|
5
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Resolve a crosswalk binding: evaluate its inner source for codes, then push those
|
|
19
|
+
* through the approved revision of the configured crosswalk.
|
|
20
|
+
*
|
|
21
|
+
* Returns the full resolution rather than just the values, because the categories
|
|
22
|
+
* payload has to enforce `allowUnmapped` against the historical targets.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveCrosswalkBinding(binding: CrosswalkBinding, target: AnyRecord, context?: BindingContext): Promise<CrosswalkBindingResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Evaluate a binding against `target`. `context` carries ambient information such
|
|
27
|
+
* as the brand, which the crosswalk kind needs and which `target` may not hold —
|
|
28
|
+
* author lookup rules evaluate against a contributor object, not the record.
|
|
29
|
+
*/
|
|
30
|
+
export declare function evaluateBinding(binding: ValueBinding | undefined, target: AnyRecord, context?: BindingContext): Promise<unknown>;
|
|
6
31
|
//# sourceMappingURL=bindings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/bindings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/services/figshare-v2/bindings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAG3C,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/B,wEAAwE;IACxE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClF;AAkBD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAoBjE;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,sBAAsB,CAAC,CA0CjC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,OAAO,CAAC,CAwClB"}
|