@researchdatabox/redbox-core 5.0.4-beta.12498 → 5.0.5
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 +3 -7
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +3 -85
- package/dist/DatastreamService.d.ts +2 -4
- package/dist/DatastreamService.d.ts.map +1 -1
- package/dist/HarvestRunService.d.ts +3 -4
- package/dist/HarvestRunService.d.ts.map +1 -1
- package/dist/HarvestRunService.js +1 -1
- package/dist/QueueService.d.ts +1 -1
- package/dist/QueueService.d.ts.map +1 -1
- package/dist/RecordWriteOptions.d.ts +21 -0
- package/dist/RecordWriteOptions.d.ts.map +1 -0
- package/dist/RecordWriteOptions.js +17 -0
- package/dist/RecordsService.d.ts +14 -105
- package/dist/RecordsService.d.ts.map +1 -1
- package/dist/RecordsService.js +1 -44
- package/dist/SearchService.d.ts +1 -2
- package/dist/SearchService.d.ts.map +1 -1
- package/dist/StorageService.d.ts +20 -48
- package/dist/StorageService.d.ts.map +1 -1
- package/dist/StorageService.js +1 -19
- package/dist/StorageServiceResponse.d.ts +1 -22
- package/dist/StorageServiceResponse.d.ts.map +1 -1
- package/dist/StorageServiceResponse.js +4 -22
- package/dist/api-routes/groups/branding.d.ts +0 -8
- package/dist/api-routes/groups/branding.d.ts.map +1 -1
- package/dist/api-routes/groups/branding.js +11 -86
- package/dist/api-routes/groups/dashboard-config.d.ts +9 -12
- package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -1
- package/dist/api-routes/groups/dashboard-config.js +73 -136
- package/dist/api-routes/groups/forms.d.ts.map +1 -1
- package/dist/api-routes/groups/forms.js +2 -10
- package/dist/api-routes/groups/records.d.ts +0 -1
- package/dist/api-routes/groups/records.d.ts.map +1 -1
- package/dist/api-routes/groups/records.js +26 -141
- package/dist/api-routes/index.d.ts +0 -3
- package/dist/api-routes/index.d.ts.map +1 -1
- package/dist/api-routes/index.js +1 -4
- package/dist/api-routes/openapi.d.ts.map +1 -1
- package/dist/api-routes/openapi.js +5 -7
- package/dist/api-routes/request-extraction.d.ts.map +1 -1
- package/dist/api-routes/request-extraction.js +8 -10
- package/dist/api-routes/route-factory.d.ts.map +1 -1
- package/dist/api-routes/route-factory.js +1 -2
- package/dist/api-routes/route-registry.d.ts.map +1 -1
- package/dist/api-routes/route-registry.js +1 -3
- package/dist/api-routes/schemas/common.d.ts +0 -36
- package/dist/api-routes/schemas/common.d.ts.map +1 -1
- package/dist/api-routes/schemas/common.js +5 -95
- package/dist/api-routes/schemas/responses.d.ts +1 -1424
- package/dist/api-routes/schemas/responses.d.ts.map +1 -1
- package/dist/api-routes/schemas/responses.js +60 -382
- package/dist/api-routes/types.d.ts +0 -1
- package/dist/api-routes/types.d.ts.map +1 -1
- package/dist/api-routes/validation.d.ts +1 -5
- package/dist/api-routes/validation.d.ts.map +1 -1
- package/dist/api-routes/validation.js +15 -14
- package/dist/bootstrap.d.ts +1 -3
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +41 -58
- package/dist/config/agendaQueue.config.d.ts +0 -3
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +11 -29
- package/dist/config/branding.config.d.ts +0 -13
- package/dist/config/branding.config.d.ts.map +1 -1
- package/dist/config/branding.config.js +2 -34
- package/dist/config/brandingConfigurationDefaults.config.d.ts +0 -4
- package/dist/config/brandingConfigurationDefaults.config.d.ts.map +1 -1
- package/dist/config/brandingConfigurationDefaults.config.js +3 -42
- package/dist/config/datapubs.config.d.ts +72 -0
- package/dist/config/datapubs.config.d.ts.map +1 -0
- package/dist/config/datapubs.config.js +74 -0
- package/dist/config/i18n.config.d.ts +4 -0
- package/dist/config/i18n.config.d.ts.map +1 -1
- package/dist/config/i18n.config.js +1 -1
- package/dist/config/index.d.ts +4 -12
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -7
- package/dist/config/policies.config.d.ts.map +1 -1
- package/dist/config/policies.config.js +23 -37
- package/dist/config/raid.config.d.ts +4 -7
- package/dist/config/raid.config.d.ts.map +1 -1
- package/dist/config/raid.config.js +35 -21
- package/dist/config/record.config.d.ts +0 -3
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +35 -37
- package/dist/config/recordtype.config.d.ts +9 -32
- package/dist/config/recordtype.config.d.ts.map +1 -1
- package/dist/config/recordtype.config.js +7 -4
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +53 -135
- package/dist/config/session.config.d.ts +2 -2
- package/dist/config/session.config.d.ts.map +1 -1
- package/dist/config/workflow.config.d.ts +0 -6
- 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 +2 -4
- package/dist/configmodels/ConfigModels.d.ts +1 -1
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +9 -26
- package/dist/configmodels/FigsharePublishing.d.ts +103 -0
- package/dist/configmodels/FigsharePublishing.d.ts.map +1 -1
- package/dist/configmodels/FigsharePublishing.js +36 -2
- package/dist/controllers/AppConfigController.d.ts.map +1 -1
- package/dist/controllers/AppConfigController.js +1 -4
- package/dist/controllers/BrandingAppController.d.ts +7 -29
- package/dist/controllers/BrandingAppController.d.ts.map +1 -1
- package/dist/controllers/BrandingAppController.js +69 -265
- package/dist/controllers/BrandingController.d.ts +1 -24
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +43 -173
- package/dist/controllers/DashboardConfigController.d.ts +2 -6
- package/dist/controllers/DashboardConfigController.d.ts.map +1 -1
- package/dist/controllers/DashboardConfigController.js +4 -18
- package/dist/controllers/DynamicAssetController.d.ts +5 -7
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +12 -21
- package/dist/controllers/RecordAuditController.d.ts.map +1 -1
- package/dist/controllers/RecordAuditController.js +24 -6
- package/dist/controllers/RecordController.d.ts +4 -45
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +345 -778
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +1 -4
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
- package/dist/controllers/webservice/AdminController.js +3 -4
- package/dist/controllers/webservice/BrandingController.d.ts +1 -26
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
- package/dist/controllers/webservice/BrandingController.js +116 -292
- package/dist/controllers/webservice/DashboardConfigController.d.ts +17 -25
- package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -1
- package/dist/controllers/webservice/DashboardConfigController.js +205 -90
- package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/FormManagementController.js +3 -37
- package/dist/controllers/webservice/RecordController.d.ts +1 -15
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +267 -647
- package/dist/controllers/webservice/RecordTypeController.d.ts +1 -6
- package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordTypeController.js +3 -21
- package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
- package/dist/controllers/webservice/SearchController.js +3 -7
- package/dist/hooks/defineRedboxHook.d.ts +0 -3
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
- package/dist/hooks/defineRedboxHook.js +1 -4
- package/dist/index.d.ts +25 -50
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -90
- package/dist/loader/bootstrapShimRuntime.d.ts +1 -1
- package/dist/loader/bootstrapShimRuntime.d.ts.map +1 -1
- package/dist/loader/bootstrapShimRuntime.js +12 -20
- package/dist/loader/index.d.ts +0 -9
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +4 -93
- package/dist/middleware/redboxSession.d.ts.map +1 -1
- package/dist/middleware/redboxSession.js +15 -3
- package/dist/model/BuildResponse.d.ts +11 -25
- package/dist/model/BuildResponse.d.ts.map +1 -1
- package/dist/model/BuildResponse.js +3 -4
- package/dist/model/DashboardTypeResponseModel.d.ts +0 -6
- package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardTypeResponseModel.js +1 -7
- package/dist/model/DashboardViewResponseModel.d.ts +1 -5
- package/dist/model/DashboardViewResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardViewResponseModel.js +3 -6
- package/dist/model/RBValidationError.d.ts +0 -17
- package/dist/model/RBValidationError.d.ts.map +1 -1
- package/dist/model/RBValidationError.js +1 -37
- package/dist/model/RecordTypeResponseModel.d.ts +4 -12
- package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
- package/dist/model/RecordTypeResponseModel.js +2 -11
- package/dist/model/index.d.ts +1 -5
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +2 -5
- package/dist/model/storage/BrandingModel.d.ts +0 -7
- package/dist/model/storage/BrandingModel.d.ts.map +1 -1
- package/dist/model/storage/BrandingModel.js +1 -7
- package/dist/model/storage/DeletedRecordModel.d.ts +0 -35
- package/dist/model/storage/DeletedRecordModel.d.ts.map +1 -1
- package/dist/model/storage/DeletedRecordModel.js +1 -62
- package/dist/model/storage/FigshareSyncModel.d.ts +126 -0
- package/dist/model/storage/FigshareSyncModel.d.ts.map +1 -0
- package/dist/model/storage/FigshareSyncModel.js +3 -0
- package/dist/model/storage/IntegrationAuditModel.d.ts +2 -16
- package/dist/model/storage/IntegrationAuditModel.d.ts.map +1 -1
- package/dist/model/storage/IntegrationAuditModel.js +1 -15
- package/dist/model/storage/RecordAuditModel.d.ts +4 -11
- package/dist/model/storage/RecordAuditModel.d.ts.map +1 -1
- package/dist/model/storage/RecordAuditModel.js +30 -8
- package/dist/model/storage/RecordModel.d.ts +3 -6
- package/dist/model/storage/RecordModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.d.ts +0 -6
- package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.js +1 -4
- package/dist/model/storage/index.d.ts +10 -12
- package/dist/model/storage/index.d.ts.map +1 -1
- package/dist/model/storage/index.js +2 -24
- package/dist/policies/checkAuth.d.ts +6 -2
- package/dist/policies/checkAuth.d.ts.map +1 -1
- package/dist/policies/checkAuth.js +9 -32
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
- package/dist/policies/contentSecurityPolicy.js +2 -85
- package/dist/policies/index.d.ts +2 -3
- package/dist/policies/index.d.ts.map +1 -1
- package/dist/policies/index.js +2 -4
- package/dist/policies/validateApiContractRequest.d.ts.map +1 -1
- package/dist/policies/validateApiContractRequest.js +11 -49
- package/dist/services/AgendaQueueService.d.ts +1 -1
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +7 -4
- package/dist/services/AppConfigService.d.ts +0 -6
- package/dist/services/AppConfigService.d.ts.map +1 -1
- package/dist/services/AppConfigService.js +1 -23
- package/dist/services/AttachmentMetadataService.d.ts +0 -58
- package/dist/services/AttachmentMetadataService.d.ts.map +1 -1
- package/dist/services/AttachmentMetadataService.js +8 -643
- package/dist/services/BrandingLogoService.d.ts +1 -6
- package/dist/services/BrandingLogoService.d.ts.map +1 -1
- package/dist/services/BrandingLogoService.js +9 -77
- package/dist/services/BrandingService.d.ts +9 -171
- package/dist/services/BrandingService.d.ts.map +1 -1
- package/dist/services/BrandingService.js +68 -572
- package/dist/services/BrandingThemeCssService.d.ts +1 -17
- package/dist/services/BrandingThemeCssService.d.ts.map +1 -1
- package/dist/services/BrandingThemeCssService.js +12 -71
- package/dist/services/BrandingThemeTokens.d.ts.map +1 -1
- package/dist/services/BrandingThemeTokens.js +2 -1
- package/dist/services/DashboardConfigService.d.ts +54 -214
- package/dist/services/DashboardConfigService.d.ts.map +1 -1
- package/dist/services/DashboardConfigService.js +261 -829
- package/dist/services/DashboardTypesService.d.ts +4 -15
- package/dist/services/DashboardTypesService.d.ts.map +1 -1
- package/dist/services/DashboardTypesService.js +139 -72
- package/dist/services/DoiService.d.ts +1 -1
- package/dist/services/DoiService.d.ts.map +1 -1
- package/dist/services/DoiService.js +45 -71
- package/dist/services/FigshareService.d.ts +15 -10
- package/dist/services/FigshareService.d.ts.map +1 -1
- package/dist/services/FigshareService.js +82 -583
- package/dist/services/FormRecordConsistencyService.d.ts +23 -8
- package/dist/services/FormRecordConsistencyService.d.ts.map +1 -1
- package/dist/services/FormRecordConsistencyService.js +70 -54
- package/dist/services/FormsService.d.ts +2 -91
- package/dist/services/FormsService.d.ts.map +1 -1
- package/dist/services/FormsService.js +64 -324
- package/dist/services/HarvestRunService.d.ts +3 -6
- package/dist/services/HarvestRunService.d.ts.map +1 -1
- package/dist/services/HarvestRunService.js +97 -161
- package/dist/services/I18nEntriesService.d.ts +2 -1
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +45 -30
- package/dist/services/OniService.d.ts +62 -19
- package/dist/services/OniService.d.ts.map +1 -1
- package/dist/services/OniService.js +691 -223
- 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 +61 -19
- package/dist/services/RaidService.d.ts.map +1 -1
- package/dist/services/RaidService.js +530 -191
- package/dist/services/RecordTypesService.d.ts +0 -29
- package/dist/services/RecordTypesService.d.ts.map +1 -1
- package/dist/services/RecordTypesService.js +11 -106
- package/dist/services/RecordsService.d.ts +26 -313
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +763 -5089
- package/dist/services/SolrSearchService.d.ts +1 -1
- package/dist/services/SolrSearchService.d.ts.map +1 -1
- package/dist/services/SolrSearchService.js +12 -42
- package/dist/services/StandardDatastreamService.d.ts +5 -4
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +61 -106
- package/dist/services/TriggerService.d.ts.map +1 -1
- package/dist/services/TriggerService.js +30 -54
- package/dist/services/UsersService.d.ts +1 -2
- package/dist/services/UsersService.d.ts.map +1 -1
- package/dist/services/UsersService.js +283 -364
- package/dist/services/VocabularyService.d.ts +0 -2
- package/dist/services/VocabularyService.d.ts.map +1 -1
- package/dist/services/VocabularyService.js +2 -61
- package/dist/services/WorkflowStepsService.d.ts +0 -11
- package/dist/services/WorkflowStepsService.d.ts.map +1 -1
- package/dist/services/WorkflowStepsService.js +3 -32
- 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 +20 -3
- package/dist/services/doi-v2/config.d.ts +0 -1
- package/dist/services/doi-v2/config.d.ts.map +1 -1
- package/dist/services/doi-v2/config.js +5 -13
- package/dist/services/doi-v2/runtime.d.ts.map +1 -1
- package/dist/services/doi-v2/runtime.js +54 -14
- package/dist/services/figshare-v2/admin.d.ts +16 -0
- package/dist/services/figshare-v2/admin.d.ts.map +1 -0
- package/dist/services/figshare-v2/admin.js +283 -0
- package/dist/services/figshare-v2/assets.d.ts +20 -1
- package/dist/services/figshare-v2/assets.d.ts.map +1 -1
- package/dist/services/figshare-v2/assets.js +16 -1
- package/dist/services/figshare-v2/bindings.d.ts.map +1 -1
- package/dist/services/figshare-v2/bindings.js +20 -3
- package/dist/services/figshare-v2/config.d.ts +8 -2
- package/dist/services/figshare-v2/config.d.ts.map +1 -1
- package/dist/services/figshare-v2/config.js +31 -3
- package/dist/services/figshare-v2/execution.d.ts +25 -0
- package/dist/services/figshare-v2/execution.d.ts.map +1 -0
- package/dist/services/figshare-v2/execution.js +49 -0
- package/dist/services/figshare-v2/http.d.ts +6 -1
- package/dist/services/figshare-v2/http.d.ts.map +1 -1
- package/dist/services/figshare-v2/http.js +69 -12
- package/dist/services/figshare-v2/identity.d.ts +12 -0
- package/dist/services/figshare-v2/identity.d.ts.map +1 -0
- package/dist/services/figshare-v2/identity.js +78 -0
- package/dist/services/figshare-v2/managed-assets.d.ts +9 -0
- package/dist/services/figshare-v2/managed-assets.d.ts.map +1 -0
- package/dist/services/figshare-v2/managed-assets.js +229 -0
- package/dist/services/figshare-v2/plan.d.ts.map +1 -1
- package/dist/services/figshare-v2/plan.js +2 -9
- package/dist/services/figshare-v2/runtime.d.ts.map +1 -1
- package/dist/services/figshare-v2/runtime.js +58 -11
- package/dist/services/figshare-v2/source-intent.d.ts +9 -0
- package/dist/services/figshare-v2/source-intent.d.ts.map +1 -0
- package/dist/services/figshare-v2/source-intent.js +93 -0
- package/dist/services/figshare-v2/status.d.ts +4 -0
- package/dist/services/figshare-v2/status.d.ts.map +1 -0
- package/dist/services/figshare-v2/status.js +29 -0
- package/dist/services/figshare-v2/sync-store.d.ts +27 -0
- package/dist/services/figshare-v2/sync-store.d.ts.map +1 -0
- package/dist/services/figshare-v2/sync-store.js +139 -0
- package/dist/services/figshare-v2/types.d.ts +3 -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/worker.d.ts +16 -0
- package/dist/services/figshare-v2/worker.d.ts.map +1 -0
- package/dist/services/figshare-v2/worker.js +572 -0
- package/dist/services/index.d.ts +0 -9
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -45
- package/dist/utilities/TranslationHtml.d.ts +3 -0
- package/dist/utilities/TranslationHtml.d.ts.map +1 -0
- package/dist/utilities/TranslationHtml.js +46 -0
- package/dist/visitor/client.visitor.d.ts +0 -6
- package/dist/visitor/client.visitor.d.ts.map +1 -1
- package/dist/visitor/client.visitor.js +14 -59
- package/dist/visitor/construct.visitor.d.ts +1 -27
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +177 -265
- package/dist/visitor/context-variables.visitor.d.ts +1 -3
- package/dist/visitor/context-variables.visitor.d.ts.map +1 -1
- package/dist/visitor/context-variables.visitor.js +1 -15
- package/dist/visitor/data-value.visitor.d.ts +0 -6
- package/dist/visitor/data-value.visitor.d.ts.map +1 -1
- package/dist/visitor/data-value.visitor.js +1 -10
- package/dist/visitor/json-type-def.visitor.d.ts +0 -6
- package/dist/visitor/json-type-def.visitor.d.ts.map +1 -1
- package/dist/visitor/json-type-def.visitor.js +1 -10
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts +0 -11
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +133 -228
- package/dist/visitor/template.visitor.d.ts +2 -17
- package/dist/visitor/template.visitor.d.ts.map +1 -1
- package/dist/visitor/template.visitor.js +22 -60
- package/dist/visitor/validator.visitor.d.ts +7 -49
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +178 -275
- package/dist/waterline-models/AttachmentMetadata.d.ts +0 -22
- package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -1
- package/dist/waterline-models/AttachmentMetadata.js +3 -147
- package/dist/waterline-models/BrandingConfig.d.ts +0 -7
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +1 -16
- package/dist/waterline-models/BrandingConfigHistory.d.ts +2 -11
- package/dist/waterline-models/BrandingConfigHistory.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfigHistory.js +1 -21
- package/dist/waterline-models/FigshareSync.d.ts +41 -0
- package/dist/waterline-models/FigshareSync.d.ts.map +1 -0
- package/dist/waterline-models/FigshareSync.js +168 -0
- package/dist/waterline-models/RecordType.d.ts +0 -9
- package/dist/waterline-models/RecordType.d.ts.map +1 -1
- package/dist/waterline-models/RecordType.js +1 -16
- package/dist/waterline-models/User.d.ts +2 -2
- package/dist/waterline-models/User.d.ts.map +1 -1
- package/dist/waterline-models/User.js +17 -12
- package/dist/waterline-models/index.d.ts +2 -2
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +4 -4
- package/package.json +46 -59
- package/dist/AttachmentStagingIdentity.d.ts +0 -3
- package/dist/AttachmentStagingIdentity.d.ts.map +0 -1
- package/dist/AttachmentStagingIdentity.js +0 -10
- package/dist/RecordConcurrencyObservability.d.ts +0 -51
- package/dist/RecordConcurrencyObservability.d.ts.map +0 -1
- package/dist/RecordConcurrencyObservability.js +0 -136
- package/dist/RecordEntityTag.d.ts +0 -31
- package/dist/RecordEntityTag.d.ts.map +0 -1
- package/dist/RecordEntityTag.js +0 -101
- package/dist/RecordFormFingerprint.d.ts +0 -7
- package/dist/RecordFormFingerprint.d.ts.map +0 -1
- package/dist/RecordFormFingerprint.js +0 -106
- package/dist/RecordHttpConcurrency.d.ts +0 -60
- package/dist/RecordHttpConcurrency.d.ts.map +0 -1
- package/dist/RecordHttpConcurrency.js +0 -181
- package/dist/RecordSaveResponse.d.ts +0 -219
- package/dist/RecordSaveResponse.d.ts.map +0 -1
- package/dist/RecordSaveResponse.js +0 -639
- package/dist/RecordStorageConcurrency.d.ts +0 -48
- package/dist/RecordStorageConcurrency.d.ts.map +0 -1
- package/dist/RecordStorageConcurrency.js +0 -103
- package/dist/RecordWriteClassification.d.ts +0 -12
- package/dist/RecordWriteClassification.d.ts.map +0 -1
- package/dist/RecordWriteClassification.js +0 -70
- package/dist/action-execution/audit.d.ts +0 -41
- package/dist/action-execution/audit.d.ts.map +0 -1
- package/dist/action-execution/audit.js +0 -122
- package/dist/action-execution/executor.d.ts +0 -24
- package/dist/action-execution/executor.d.ts.map +0 -1
- package/dist/action-execution/executor.js +0 -435
- package/dist/action-execution/failure.d.ts +0 -49
- package/dist/action-execution/failure.d.ts.map +0 -1
- package/dist/action-execution/failure.js +0 -129
- package/dist/action-execution/index.d.ts +0 -7
- package/dist/action-execution/index.d.ts.map +0 -1
- package/dist/action-execution/index.js +0 -23
- package/dist/action-execution/legacy-result.d.ts +0 -21
- package/dist/action-execution/legacy-result.d.ts.map +0 -1
- package/dist/action-execution/legacy-result.js +0 -70
- package/dist/action-execution/policy.d.ts +0 -12
- package/dist/action-execution/policy.d.ts.map +0 -1
- package/dist/action-execution/policy.js +0 -138
- package/dist/action-execution/types.d.ts +0 -121
- package/dist/action-execution/types.d.ts.map +0 -1
- package/dist/action-execution/types.js +0 -22
- package/dist/api-routes/groups/record-schemas.d.ts +0 -5
- package/dist/api-routes/groups/record-schemas.d.ts.map +0 -1
- package/dist/api-routes/groups/record-schemas.js +0 -181
- package/dist/api-routes/record-schema-openapi.d.ts +0 -26
- package/dist/api-routes/record-schema-openapi.d.ts.map +0 -1
- package/dist/api-routes/record-schema-openapi.js +0 -38
- package/dist/api-routes/record-schema-response.d.ts +0 -40
- package/dist/api-routes/record-schema-response.d.ts.map +0 -1
- package/dist/api-routes/record-schema-response.js +0 -89
- package/dist/config/recordSchema.config.d.ts +0 -68
- package/dist/config/recordSchema.config.d.ts.map +0 -1
- package/dist/config/recordSchema.config.js +0 -173
- package/dist/config/recordValidation.config.d.ts +0 -19
- package/dist/config/recordValidation.config.d.ts.map +0 -1
- package/dist/config/recordValidation.config.js +0 -10
- package/dist/configmodels/DashboardFieldCatalogue.d.ts +0 -67
- package/dist/configmodels/DashboardFieldCatalogue.d.ts.map +0 -1
- package/dist/configmodels/DashboardFieldCatalogue.js +0 -174
- package/dist/configmodels/DashboardSettings.d.ts +0 -191
- package/dist/configmodels/DashboardSettings.d.ts.map +0 -1
- package/dist/configmodels/DashboardSettings.js +0 -705
- package/dist/configmodels/OniPublishing.d.ts +0 -205
- package/dist/configmodels/OniPublishing.d.ts.map +0 -1
- package/dist/configmodels/OniPublishing.js +0 -335
- package/dist/configmodels/RaidPublishing.d.ts +0 -97
- package/dist/configmodels/RaidPublishing.d.ts.map +0 -1
- package/dist/configmodels/RaidPublishing.js +0 -35
- package/dist/configmodels/WebAnalytics.d.ts +0 -55
- package/dist/configmodels/WebAnalytics.d.ts.map +0 -1
- package/dist/configmodels/WebAnalytics.js +0 -61
- package/dist/controllers/BrandingControllerSupport.d.ts +0 -20
- package/dist/controllers/BrandingControllerSupport.d.ts.map +0 -1
- package/dist/controllers/BrandingControllerSupport.js +0 -80
- package/dist/controllers/webservice/RecordSchemaController.d.ts +0 -32
- package/dist/controllers/webservice/RecordSchemaController.d.ts.map +0 -1
- package/dist/controllers/webservice/RecordSchemaController.js +0 -356
- package/dist/model/BrandingTypeface.d.ts +0 -70
- package/dist/model/BrandingTypeface.d.ts.map +0 -1
- package/dist/model/BrandingTypeface.js +0 -116
- package/dist/model/record-contract.d.ts +0 -42
- package/dist/model/record-contract.d.ts.map +0 -1
- package/dist/model/record-contract.js +0 -3
- package/dist/model/storage/record-schema.d.ts +0 -115
- package/dist/model/storage/record-schema.d.ts.map +0 -1
- package/dist/model/storage/record-schema.js +0 -3
- package/dist/record-contract/ajv-error-mapper.d.ts +0 -34
- package/dist/record-contract/ajv-error-mapper.d.ts.map +0 -1
- package/dist/record-contract/ajv-error-mapper.js +0 -153
- package/dist/record-contract/canonical-json.d.ts +0 -20
- package/dist/record-contract/canonical-json.d.ts.map +0 -1
- package/dist/record-contract/canonical-json.js +0 -126
- package/dist/record-contract/codes.d.ts +0 -36
- package/dist/record-contract/codes.d.ts.map +0 -1
- package/dist/record-contract/codes.js +0 -38
- package/dist/record-contract/contributor-registry.d.ts +0 -76
- package/dist/record-contract/contributor-registry.d.ts.map +0 -1
- package/dist/record-contract/contributor-registry.js +0 -126
- package/dist/record-contract/core-contributors.d.ts +0 -44
- package/dist/record-contract/core-contributors.d.ts.map +0 -1
- package/dist/record-contract/core-contributors.js +0 -395
- package/dist/record-contract/deep-freeze.d.ts +0 -3
- package/dist/record-contract/deep-freeze.d.ts.map +0 -1
- package/dist/record-contract/deep-freeze.js +0 -23
- package/dist/record-contract/index.d.ts +0 -13
- package/dist/record-contract/index.d.ts.map +0 -1
- package/dist/record-contract/index.js +0 -29
- package/dist/record-contract/json-pointer.d.ts +0 -20
- package/dist/record-contract/json-pointer.d.ts.map +0 -1
- package/dist/record-contract/json-pointer.js +0 -70
- package/dist/record-contract/json-schema-renderer.d.ts +0 -51
- package/dist/record-contract/json-schema-renderer.d.ts.map +0 -1
- package/dist/record-contract/json-schema-renderer.js +0 -450
- package/dist/record-contract/record-contract-compiler.d.ts +0 -42
- package/dist/record-contract/record-contract-compiler.d.ts.map +0 -1
- package/dist/record-contract/record-contract-compiler.js +0 -775
- package/dist/record-contract/record-contract-context.d.ts +0 -91
- package/dist/record-contract/record-contract-context.d.ts.map +0 -1
- package/dist/record-contract/record-contract-context.js +0 -39
- package/dist/record-contract/record-json-schema-artifact.d.ts +0 -74
- package/dist/record-contract/record-json-schema-artifact.d.ts.map +0 -1
- package/dist/record-contract/record-json-schema-artifact.js +0 -309
- package/dist/record-contract/record-json-schema-etag.d.ts +0 -15
- package/dist/record-contract/record-json-schema-etag.d.ts.map +0 -1
- package/dist/record-contract/record-json-schema-etag.js +0 -41
- package/dist/record-contract/types.d.ts +0 -151
- package/dist/record-contract/types.d.ts.map +0 -1
- package/dist/record-contract/types.js +0 -6
- package/dist/services/BrandingTypefaceService.d.ts +0 -74
- package/dist/services/BrandingTypefaceService.d.ts.map +0 -1
- package/dist/services/BrandingTypefaceService.js +0 -359
- package/dist/services/BrandingWoff2Inspector.d.ts +0 -17
- package/dist/services/BrandingWoff2Inspector.d.ts.map +0 -1
- package/dist/services/BrandingWoff2Inspector.js +0 -402
- package/dist/services/DashboardLegacyConversion.d.ts +0 -82
- package/dist/services/DashboardLegacyConversion.d.ts.map +0 -1
- package/dist/services/DashboardLegacyConversion.js +0 -427
- package/dist/services/RecordSchemaService.d.ts +0 -440
- package/dist/services/RecordSchemaService.d.ts.map +0 -1
- package/dist/services/RecordSchemaService.js +0 -3061
- package/dist/services/RecordValidationService.d.ts +0 -340
- package/dist/services/RecordValidationService.d.ts.map +0 -1
- package/dist/services/RecordValidationService.js +0 -1898
- package/dist/services/form-record-access-user.d.ts +0 -3
- package/dist/services/form-record-access-user.d.ts.map +0 -1
- package/dist/services/form-record-access-user.js +0 -23
- package/dist/services/integration-v2/bindings.d.ts +0 -3
- package/dist/services/integration-v2/bindings.d.ts.map +0 -1
- package/dist/services/integration-v2/bindings.js +0 -91
- package/dist/services/integration-v2/runtime.d.ts +0 -3
- package/dist/services/integration-v2/runtime.d.ts.map +0 -1
- package/dist/services/integration-v2/runtime.js +0 -50
- package/dist/services/internal-record-schema-authorization.d.ts +0 -8
- package/dist/services/internal-record-schema-authorization.d.ts.map +0 -1
- package/dist/services/internal-record-schema-authorization.js +0 -16
- package/dist/services/oni-v2/audit.d.ts +0 -19
- package/dist/services/oni-v2/audit.d.ts.map +0 -1
- package/dist/services/oni-v2/audit.js +0 -50
- package/dist/services/oni-v2/bindings.d.ts +0 -7
- package/dist/services/oni-v2/bindings.d.ts.map +0 -1
- package/dist/services/oni-v2/bindings.js +0 -31
- package/dist/services/oni-v2/config.d.ts +0 -12
- package/dist/services/oni-v2/config.d.ts.map +0 -1
- package/dist/services/oni-v2/config.js +0 -134
- package/dist/services/oni-v2/context.d.ts +0 -3
- package/dist/services/oni-v2/context.d.ts.map +0 -1
- package/dist/services/oni-v2/context.js +0 -17
- package/dist/services/oni-v2/crate.d.ts +0 -17
- package/dist/services/oni-v2/crate.d.ts.map +0 -1
- package/dist/services/oni-v2/crate.js +0 -504
- package/dist/services/oni-v2/flydriveOcflStore.d.ts +0 -69
- package/dist/services/oni-v2/flydriveOcflStore.d.ts.map +0 -1
- package/dist/services/oni-v2/flydriveOcflStore.js +0 -325
- package/dist/services/oni-v2/ingestion.d.ts +0 -37
- package/dist/services/oni-v2/ingestion.d.ts.map +0 -1
- package/dist/services/oni-v2/ingestion.js +0 -91
- package/dist/services/oni-v2/mapping.d.ts +0 -17
- package/dist/services/oni-v2/mapping.d.ts.map +0 -1
- package/dist/services/oni-v2/mapping.js +0 -137
- package/dist/services/oni-v2/repository.d.ts +0 -9
- package/dist/services/oni-v2/repository.d.ts.map +0 -1
- package/dist/services/oni-v2/repository.js +0 -180
- package/dist/services/oni-v2/runtime.d.ts +0 -23
- package/dist/services/oni-v2/runtime.d.ts.map +0 -1
- package/dist/services/oni-v2/runtime.js +0 -121
- package/dist/services/oni-v2/templating.d.ts +0 -11
- package/dist/services/oni-v2/templating.d.ts.map +0 -1
- package/dist/services/oni-v2/templating.js +0 -27
- package/dist/services/oni-v2/types.d.ts +0 -100
- package/dist/services/oni-v2/types.d.ts.map +0 -1
- package/dist/services/oni-v2/types.js +0 -3
- package/dist/services/raid-v2/audit.d.ts +0 -10
- package/dist/services/raid-v2/audit.d.ts.map +0 -1
- package/dist/services/raid-v2/audit.js +0 -29
- package/dist/services/raid-v2/errors.d.ts +0 -85
- package/dist/services/raid-v2/errors.d.ts.map +0 -1
- package/dist/services/raid-v2/errors.js +0 -36
- package/dist/services/raid-v2/http.d.ts +0 -4
- package/dist/services/raid-v2/http.d.ts.map +0 -1
- package/dist/services/raid-v2/http.js +0 -84
- package/dist/services/raid-v2/logger.d.ts +0 -8
- package/dist/services/raid-v2/logger.d.ts.map +0 -1
- package/dist/services/raid-v2/logger.js +0 -30
- package/dist/services/raid-v2/mapping.d.ts +0 -9
- package/dist/services/raid-v2/mapping.d.ts.map +0 -1
- package/dist/services/raid-v2/mapping.js +0 -168
- package/dist/services/raid-v2/runtime.d.ts +0 -5
- package/dist/services/raid-v2/runtime.d.ts.map +0 -1
- package/dist/services/raid-v2/runtime.js +0 -135
- package/dist/services/raid-v2/tags.d.ts +0 -11
- package/dist/services/raid-v2/tags.d.ts.map +0 -1
- package/dist/services/raid-v2/tags.js +0 -12
- package/dist/services/raid-v2/types.d.ts +0 -66
- package/dist/services/raid-v2/types.d.ts.map +0 -1
- package/dist/services/raid-v2/types.js +0 -3
- package/dist/services/record-hooks/coordinator.d.ts +0 -64
- package/dist/services/record-hooks/coordinator.d.ts.map +0 -1
- package/dist/services/record-hooks/coordinator.js +0 -276
- package/dist/visitor/related-object-data-inline.visitor.d.ts +0 -31
- package/dist/visitor/related-object-data-inline.visitor.d.ts.map +0 -1
- package/dist/visitor/related-object-data-inline.visitor.js +0 -96
- package/dist/waterline-models/DashboardConfiguration.d.ts +0 -29
- package/dist/waterline-models/DashboardConfiguration.d.ts.map +0 -1
- package/dist/waterline-models/DashboardConfiguration.js +0 -52
|
@@ -58,12 +58,9 @@ const CoreService_1 = require("../CoreService");
|
|
|
58
58
|
const genson_js_1 = require("genson-js");
|
|
59
59
|
const path = __importStar(require("path"));
|
|
60
60
|
const vocab_inline_visitor_1 = require("../visitor/vocab-inline.visitor");
|
|
61
|
-
const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
|
|
62
61
|
const client_visitor_1 = require("../visitor/client.visitor");
|
|
63
62
|
const construct_visitor_1 = require("../visitor/construct.visitor");
|
|
64
63
|
const context_variables_visitor_1 = require("../visitor/context-variables.visitor");
|
|
65
|
-
const related_object_data_inline_visitor_1 = require("../visitor/related-object-data-inline.visitor");
|
|
66
|
-
const core_contributors_1 = require("../record-contract/core-contributors");
|
|
67
64
|
var Services;
|
|
68
65
|
(function (Services) {
|
|
69
66
|
/**
|
|
@@ -85,34 +82,30 @@ var Services;
|
|
|
85
82
|
'generateFormFromSchema',
|
|
86
83
|
'getFormByStartingWorkflowStep',
|
|
87
84
|
'buildClientFormConfig',
|
|
88
|
-
'buildContractFormConfig',
|
|
89
|
-
'listConfiguredRecordContractForms',
|
|
90
|
-
'discoverValidationOperations',
|
|
91
|
-
'toPublicForm',
|
|
92
85
|
];
|
|
93
86
|
async bootstrap(workflowStep, brandingId) {
|
|
94
87
|
this.logger.verbose(`Bootstrapping form for workflow step: ${workflowStep.id} with form config: ${workflowStep.config.form}`);
|
|
95
88
|
let form = await Form.find({
|
|
96
89
|
name: workflowStep.config.form,
|
|
97
|
-
branding: brandingId
|
|
90
|
+
branding: brandingId
|
|
98
91
|
});
|
|
99
92
|
if (sails.config.appmode.bootstrapAlways) {
|
|
100
93
|
this.logger.verbose(`Destroying existing form definitions: ${workflowStep.config.form}`);
|
|
101
94
|
await Form.destroyOne({
|
|
102
95
|
name: workflowStep.config.form,
|
|
103
|
-
branding: brandingId
|
|
96
|
+
branding: brandingId
|
|
104
97
|
});
|
|
105
98
|
form = null;
|
|
106
99
|
}
|
|
107
100
|
let formDefs = [];
|
|
108
101
|
let formName = null;
|
|
109
102
|
const formRegistry = this.getFormConfigRegistry();
|
|
110
|
-
this.logger.verbose(
|
|
103
|
+
this.logger.verbose("Form registry: ");
|
|
111
104
|
this.logger.verbose(JSON.stringify(formRegistry));
|
|
112
|
-
this.logger.verbose(
|
|
105
|
+
this.logger.verbose("Found : ");
|
|
113
106
|
this.logger.verbose(form);
|
|
114
107
|
if (!form || (Array.isArray(form) && form.length == 0)) {
|
|
115
|
-
this.logger.verbose(
|
|
108
|
+
this.logger.verbose("Bootstrapping form definitions..");
|
|
116
109
|
// only bootstrap the form for this workflow step
|
|
117
110
|
_.forOwn(formRegistry, (_formDef, formName) => {
|
|
118
111
|
if (formName == workflowStep.config.form) {
|
|
@@ -125,16 +118,16 @@ var Services;
|
|
|
125
118
|
formName = firstFormDef ?? null;
|
|
126
119
|
}
|
|
127
120
|
else {
|
|
128
|
-
this.logger.verbose(
|
|
121
|
+
this.logger.verbose("Not Bootstrapping form definitions... ");
|
|
129
122
|
}
|
|
130
123
|
// check now if the form already exists, if it does, ignore...
|
|
131
|
-
const existingFormDef =
|
|
124
|
+
const existingFormDef = await Form.find({
|
|
132
125
|
name: formName,
|
|
133
|
-
branding: brandingId
|
|
134
|
-
})
|
|
126
|
+
branding: brandingId
|
|
127
|
+
});
|
|
135
128
|
const existCheck = {
|
|
136
129
|
formName: formName,
|
|
137
|
-
existingFormDef: existingFormDef
|
|
130
|
+
existingFormDef: existingFormDef
|
|
138
131
|
};
|
|
139
132
|
this.logger.verbose(`Existing form check: ${existCheck.formName}`);
|
|
140
133
|
this.logger.verbose(JSON.stringify(existCheck));
|
|
@@ -145,7 +138,7 @@ var Services;
|
|
|
145
138
|
else {
|
|
146
139
|
this.logger.verbose(`Existing form definition for form name: ${existCheck.existingFormDef[0]?.name}, ignoring bootstrap.`);
|
|
147
140
|
}
|
|
148
|
-
this.logger.verbose(
|
|
141
|
+
this.logger.verbose("FormName is:");
|
|
149
142
|
this.logger.verbose(formName);
|
|
150
143
|
let result = null;
|
|
151
144
|
if (formName) {
|
|
@@ -168,13 +161,11 @@ var Services;
|
|
|
168
161
|
enabledValidationGroups: formConfigRaw.enabledValidationGroups,
|
|
169
162
|
validators: formConfigRaw.validators,
|
|
170
163
|
validationGroups: formConfigRaw.validationGroups,
|
|
171
|
-
validationOperations: formConfigRaw.validationOperations,
|
|
172
164
|
behaviours: formConfigRaw.behaviours,
|
|
173
165
|
defaultLayoutComponent: formConfigRaw.defaultLayoutComponent,
|
|
174
166
|
componentDefinitions: formConfigRaw.componentDefinitions,
|
|
175
167
|
debugValue: formConfigRaw.debugValue,
|
|
176
168
|
attachmentFields: (formConfigRaw.attachmentFields ?? []),
|
|
177
|
-
serverSyncOnSave: formConfigRaw.serverSyncOnSave,
|
|
178
169
|
// Deprecated legacy properties (now removed):
|
|
179
170
|
// fields → replaced by componentDefinitions
|
|
180
171
|
// requiredFieldIndicator → removed
|
|
@@ -186,17 +177,17 @@ var Services;
|
|
|
186
177
|
branding: brandingId,
|
|
187
178
|
configuration: formConfig,
|
|
188
179
|
};
|
|
189
|
-
result =
|
|
190
|
-
this.logger.verbose(
|
|
180
|
+
result = await Form.create(formObj);
|
|
181
|
+
this.logger.verbose("Created form record: ");
|
|
191
182
|
this.logger.verbose(result);
|
|
192
183
|
}
|
|
193
184
|
if (result) {
|
|
194
185
|
this.logger.verbose(`Updating workflowstep ${workflowStep.id} to form: ${result.id}`);
|
|
195
186
|
// update the workflow step to reference the form
|
|
196
187
|
return await WorkflowStep.update({
|
|
197
|
-
id: workflowStep.id
|
|
188
|
+
id: workflowStep.id
|
|
198
189
|
}).set({
|
|
199
|
-
form: result.id
|
|
190
|
+
form: result.id
|
|
200
191
|
});
|
|
201
192
|
}
|
|
202
193
|
return null;
|
|
@@ -214,21 +205,6 @@ var Services;
|
|
|
214
205
|
return {};
|
|
215
206
|
}
|
|
216
207
|
}
|
|
217
|
-
/**
|
|
218
|
-
* Snapshot every registered form without selecting a record, actor, workflow,
|
|
219
|
-
* or operation. RecordSchemaService owns validation and compilation of these
|
|
220
|
-
* detached candidates during its awaited startup phase.
|
|
221
|
-
*/
|
|
222
|
-
listConfiguredRecordContractForms() {
|
|
223
|
-
const reusableFormDefinitions = _.cloneDeep(sails.config.reusableFormDefinitions ?? {});
|
|
224
|
-
return Object.entries(this.getFormConfigRegistry())
|
|
225
|
-
.sort(([left], [right]) => left.localeCompare(right))
|
|
226
|
-
.map(([name, form]) => Object.freeze({
|
|
227
|
-
name,
|
|
228
|
-
form: _.cloneDeep(form),
|
|
229
|
-
reusableFormDefinitions: _.cloneDeep(reusableFormDefinitions),
|
|
230
|
-
}));
|
|
231
|
-
}
|
|
232
208
|
listForms = (brandingId) => {
|
|
233
209
|
const query = {};
|
|
234
210
|
if (brandingId) {
|
|
@@ -270,156 +246,25 @@ var Services;
|
|
|
270
246
|
...form,
|
|
271
247
|
configuration: {
|
|
272
248
|
...form.configuration,
|
|
273
|
-
type: resolvedRecordType
|
|
274
|
-
},
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
/**
|
|
278
|
-
* Remove the server-owned operation policy and add only caller-filtered
|
|
279
|
-
* discovery metadata. Nested form configuration is otherwise preserved for
|
|
280
|
-
* compatibility with existing form clients.
|
|
281
|
-
*/
|
|
282
|
-
toPublicForm(form, validationOperations) {
|
|
283
|
-
const configuration = form.configuration;
|
|
284
|
-
const { validationOperations: _internalOperations, ...publicConfiguration } = configuration ?? {};
|
|
285
|
-
const safeOperations = validationOperations
|
|
286
|
-
?.map(operation => (0, sails_ng_common_1.sanitizeValidationOperationDiscovery)(operation))
|
|
287
|
-
.filter((operation) => operation !== undefined);
|
|
288
|
-
return {
|
|
289
|
-
...form,
|
|
290
|
-
...(configuration ? { configuration: publicConfiguration } : {}),
|
|
291
|
-
...(safeOperations
|
|
292
|
-
? {
|
|
293
|
-
validationOperations: safeOperations,
|
|
294
|
-
}
|
|
295
|
-
: {}),
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* Discover operations using the same form/type/stage policy resolver as a
|
|
300
|
-
* save, after applying existing record-edit and workflow-transition access.
|
|
301
|
-
* Missing services, actor data, or context fail safely to no operations.
|
|
302
|
-
*/
|
|
303
|
-
async discoverValidationOperations(options) {
|
|
304
|
-
if (!options.editable)
|
|
305
|
-
return [];
|
|
306
|
-
const user = (options.user ?? {});
|
|
307
|
-
const username = String(user.username ?? '').trim();
|
|
308
|
-
if (!username)
|
|
309
|
-
return [];
|
|
310
|
-
try {
|
|
311
|
-
const recordsService = sails.services.recordsservice;
|
|
312
|
-
const validationService = sails.services.recordvalidationservice;
|
|
313
|
-
if (!recordsService ||
|
|
314
|
-
typeof recordsService.hasEditAccess !== 'function' ||
|
|
315
|
-
typeof recordsService.hasTransitionRoleAuthorization !== 'function' ||
|
|
316
|
-
!validationService ||
|
|
317
|
-
typeof validationService.discoverOperations !== 'function') {
|
|
318
|
-
return [];
|
|
319
|
-
}
|
|
320
|
-
const actorRoles = Array.isArray(user.roles) ? user.roles : [];
|
|
321
|
-
const normalizedActorRoles = [
|
|
322
|
-
...new Set(actorRoles
|
|
323
|
-
.map(role => typeof role === 'string' ? role.trim() : String(role?.name ?? '').trim())
|
|
324
|
-
.filter(Boolean)),
|
|
325
|
-
].sort(sails_ng_common_1.compareRecordValidationIdentifiers);
|
|
326
|
-
const record = options.record ?? null;
|
|
327
|
-
const canEdit = record
|
|
328
|
-
? recordsService.hasEditAccess(options.brand, user, actorRoles, record)
|
|
329
|
-
: true;
|
|
330
|
-
if (!canEdit)
|
|
331
|
-
return [];
|
|
332
|
-
const recordTypeName = String(record?.metaMetadata?.type ?? options.recordType ?? options.form.configuration?.type ?? '').trim();
|
|
333
|
-
const brandId = String(record?.metaMetadata?.brandId ?? options.brand?.id ?? '').trim();
|
|
334
|
-
const formName = String(record?.metaMetadata?.form ?? options.form.name ?? '').trim();
|
|
335
|
-
if (!recordTypeName || !brandId || !formName)
|
|
336
|
-
return [];
|
|
337
|
-
if (record && String(options.form.name ?? '').trim() !== formName)
|
|
338
|
-
return [];
|
|
339
|
-
if (!record) {
|
|
340
|
-
const configuredFormType = String(options.form.configuration?.type ?? '').trim();
|
|
341
|
-
if (configuredFormType && configuredFormType !== recordTypeName)
|
|
342
|
-
return [];
|
|
249
|
+
type: resolvedRecordType
|
|
343
250
|
}
|
|
344
|
-
|
|
345
|
-
if (!recordType)
|
|
346
|
-
return [];
|
|
347
|
-
const workflowSteps = await (0, rxjs_1.firstValueFrom)(WorkflowStepsService.getAllForRecordType(recordType));
|
|
348
|
-
if (!record) {
|
|
349
|
-
const requestedContextStep = options.targetStep
|
|
350
|
-
? (workflowSteps ?? []).find(step => String(step?.name ?? '').trim() === options.targetStep?.trim())
|
|
351
|
-
: (workflowSteps ?? []).find(step => step?.starting === true);
|
|
352
|
-
const contextConfig = requestedContextStep?.config;
|
|
353
|
-
const contextFormName = String(contextConfig && typeof contextConfig === 'object' && !Array.isArray(contextConfig)
|
|
354
|
-
? (contextConfig.form ?? '')
|
|
355
|
-
: '').trim();
|
|
356
|
-
if (!contextFormName || contextFormName !== formName)
|
|
357
|
-
return [];
|
|
358
|
-
}
|
|
359
|
-
const authorizedTargetSteps = (workflowSteps ?? [])
|
|
360
|
-
.filter(step => recordsService.hasTransitionRoleAuthorization(step, user))
|
|
361
|
-
.map(step => String(step?.name ?? '').trim())
|
|
362
|
-
.filter(step => sails_ng_common_1.RECORD_VALIDATION_REFERENCE_PATTERN.test(step))
|
|
363
|
-
.sort(sails_ng_common_1.compareRecordValidationIdentifiers);
|
|
364
|
-
const targetStep = options.targetStep?.trim();
|
|
365
|
-
if (targetStep && !authorizedTargetSteps.includes(targetStep))
|
|
366
|
-
return [];
|
|
367
|
-
const candidate = {
|
|
368
|
-
...(record?.redboxOid ? { redboxOid: String(record.redboxOid) } : {}),
|
|
369
|
-
metadata: record?.metadata ?? {},
|
|
370
|
-
metaMetadata: {
|
|
371
|
-
...(record?.metaMetadata ?? {}),
|
|
372
|
-
brandId,
|
|
373
|
-
type: recordTypeName,
|
|
374
|
-
form: formName,
|
|
375
|
-
},
|
|
376
|
-
...(record?.workflow ? { workflow: record.workflow } : {}),
|
|
377
|
-
};
|
|
378
|
-
const operations = await validationService.discoverOperations({
|
|
379
|
-
candidate,
|
|
380
|
-
writeKind: targetStep ? (record ? 'transition' : 'create') : record ? 'update' : 'create',
|
|
381
|
-
...(targetStep ? { targetStep } : {}),
|
|
382
|
-
actor: { authenticated: true, roles: normalizedActorRoles },
|
|
383
|
-
canEdit: true,
|
|
384
|
-
authorizedTargetSteps,
|
|
385
|
-
});
|
|
386
|
-
const transportTargets = new Set(targetStep ? [targetStep] : authorizedTargetSteps);
|
|
387
|
-
const merged = new Map();
|
|
388
|
-
for (const operation of operations) {
|
|
389
|
-
const safeOperation = (0, sails_ng_common_1.sanitizeValidationOperationDiscovery)(operation, transportTargets);
|
|
390
|
-
if (safeOperation)
|
|
391
|
-
merged.set(safeOperation.name, safeOperation);
|
|
392
|
-
}
|
|
393
|
-
return [...merged.values()].sort((left, right) => (0, sails_ng_common_1.compareRecordValidationIdentifiers)(left.name, right.name));
|
|
394
|
-
}
|
|
395
|
-
catch (error) {
|
|
396
|
-
const errorType = error instanceof Error ? error.name : typeof error;
|
|
397
|
-
const recordType = String(options.record?.metaMetadata?.type ?? options.recordType ?? '').trim();
|
|
398
|
-
const formName = String(options.record?.metaMetadata?.form ?? options.form.name ?? '').trim();
|
|
399
|
-
this.logger.warn(`Validation operation discovery was safely omitted` +
|
|
400
|
-
` (recordType=${sails_ng_common_1.RECORD_VALIDATION_REFERENCE_PATTERN.test(recordType) ? recordType : 'unavailable'},` +
|
|
401
|
-
` form=${sails_ng_common_1.RECORD_VALIDATION_REFERENCE_PATTERN.test(formName) ? formName : 'unavailable'},` +
|
|
402
|
-
` errorType=${errorType}).`);
|
|
403
|
-
return [];
|
|
404
|
-
}
|
|
251
|
+
};
|
|
405
252
|
}
|
|
406
253
|
getFormByStartingWorkflowStep(branding, recordType, _editMode) {
|
|
407
254
|
const starting = true;
|
|
408
|
-
return super
|
|
409
|
-
.
|
|
410
|
-
|
|
411
|
-
}))
|
|
412
|
-
.pipe((0, operators_1.mergeMap)(recordTypeRecord => {
|
|
255
|
+
return super.getObservable(RecordType.findOne({
|
|
256
|
+
key: branding.id + "_" + recordType
|
|
257
|
+
})).pipe((0, operators_1.mergeMap)(recordTypeRecord => {
|
|
413
258
|
const recordTypeId = String(recordTypeRecord?.id ?? '');
|
|
414
259
|
return super.getObservable(WorkflowStep.findOne({
|
|
415
260
|
recordType: recordTypeId,
|
|
416
|
-
starting: starting
|
|
261
|
+
starting: starting
|
|
417
262
|
}));
|
|
418
263
|
}), (0, operators_1.mergeMap)(workflowStep => {
|
|
419
264
|
if (workflowStep?.starting == true) {
|
|
420
265
|
return super.getObservable(Form.findOne({
|
|
421
266
|
name: workflowStep.config.form,
|
|
422
|
-
branding: branding.id
|
|
267
|
+
branding: branding.id
|
|
423
268
|
}));
|
|
424
269
|
}
|
|
425
270
|
return (0, rxjs_1.of)(null);
|
|
@@ -428,11 +273,11 @@ var Services;
|
|
|
428
273
|
return (0, rxjs_1.of)(form);
|
|
429
274
|
}
|
|
430
275
|
return (0, rxjs_1.of)(null);
|
|
431
|
-
}), (0, operators_1.take)(1), (0, operators_1.tap)(form => {
|
|
276
|
+
}), (0, operators_1.take)(1), (0, operators_1.tap)((form) => {
|
|
432
277
|
if (!form) {
|
|
433
278
|
this.logger.warn(`No starting form found for branding '${String(branding?.id ?? '')}', recordType '${recordType}'`);
|
|
434
279
|
}
|
|
435
|
-
}), (0, operators_1.map)(form => form), (0, operators_1.catchError)((error) => {
|
|
280
|
+
}), (0, operators_1.map)((form) => form), (0, operators_1.catchError)((error) => {
|
|
436
281
|
const message = error instanceof Error ? error.message : String(error);
|
|
437
282
|
this.logger.error(`Error loading starting workflow form for branding '${String(branding?.id ?? '')}', recordType '${recordType}': ${message}`);
|
|
438
283
|
return (0, rxjs_1.of)(null);
|
|
@@ -444,7 +289,7 @@ var Services;
|
|
|
444
289
|
}
|
|
445
290
|
async generateFormFromSchema(branding, recordType, record) {
|
|
446
291
|
if (recordType == '') {
|
|
447
|
-
recordType =
|
|
292
|
+
recordType = _.get(record, 'metaMetadata.type', '');
|
|
448
293
|
if (recordType == '') {
|
|
449
294
|
return {};
|
|
450
295
|
}
|
|
@@ -460,9 +305,9 @@ var Services;
|
|
|
460
305
|
label: '@view-record-audit-link',
|
|
461
306
|
value: '/@branding/@portal/record/viewAudit/@oid',
|
|
462
307
|
cssClasses: 'btn btn-large btn-info margin-15',
|
|
463
|
-
controlType: 'anchor'
|
|
308
|
+
controlType: 'anchor'
|
|
464
309
|
},
|
|
465
|
-
variableSubstitutionFields: ['value']
|
|
310
|
+
variableSubstitutionFields: ['value']
|
|
466
311
|
},
|
|
467
312
|
{
|
|
468
313
|
class: 'SaveButton',
|
|
@@ -479,10 +324,10 @@ var Services;
|
|
|
479
324
|
cancelButtonMessage: '@dataPublication-cancelButtonMessage',
|
|
480
325
|
confirmButtonMessage: '@dataPublication-confirmButtonMessage',
|
|
481
326
|
isDelete: true,
|
|
482
|
-
isSubmissionButton: true
|
|
327
|
+
isSubmissionButton: true
|
|
483
328
|
},
|
|
484
|
-
variableSubstitutionFields: ['redirectLocation']
|
|
485
|
-
}
|
|
329
|
+
variableSubstitutionFields: ['redirectLocation']
|
|
330
|
+
}
|
|
486
331
|
];
|
|
487
332
|
const textFieldTemplate = {
|
|
488
333
|
class: 'TextField',
|
|
@@ -493,17 +338,15 @@ var Services;
|
|
|
493
338
|
help: '',
|
|
494
339
|
type: 'text',
|
|
495
340
|
subscribe: {
|
|
496
|
-
form: {
|
|
497
|
-
onFormLoaded: [
|
|
498
|
-
{
|
|
341
|
+
'form': {
|
|
342
|
+
onFormLoaded: [{
|
|
499
343
|
action: 'utilityService.runTemplate',
|
|
500
344
|
template: '',
|
|
501
|
-
includeFieldInFnCall: true
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
},
|
|
345
|
+
includeFieldInFnCall: true
|
|
346
|
+
}]
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
507
350
|
};
|
|
508
351
|
const groupComponentTemplate = {
|
|
509
352
|
class: 'Container',
|
|
@@ -511,8 +354,8 @@ var Services;
|
|
|
511
354
|
definition: {
|
|
512
355
|
name: '',
|
|
513
356
|
cssClasses: 'form-inline',
|
|
514
|
-
fields: []
|
|
515
|
-
}
|
|
357
|
+
fields: []
|
|
358
|
+
}
|
|
516
359
|
};
|
|
517
360
|
const groupTextFieldTemplate = {
|
|
518
361
|
class: 'TextField',
|
|
@@ -522,8 +365,8 @@ var Services;
|
|
|
522
365
|
type: 'text',
|
|
523
366
|
groupName: '',
|
|
524
367
|
groupClasses: 'width-30',
|
|
525
|
-
cssClasses:
|
|
526
|
-
}
|
|
368
|
+
cssClasses: "width-80 form-control"
|
|
369
|
+
}
|
|
527
370
|
};
|
|
528
371
|
const repeatableGroupComponentTemplate = {
|
|
529
372
|
class: 'RepeatableContainer',
|
|
@@ -533,16 +376,16 @@ var Services;
|
|
|
533
376
|
label: '',
|
|
534
377
|
help: '',
|
|
535
378
|
forceClone: ['fields'],
|
|
536
|
-
fields: []
|
|
537
|
-
}
|
|
379
|
+
fields: []
|
|
380
|
+
}
|
|
538
381
|
};
|
|
539
382
|
const objectFieldHeadingTemplate = {
|
|
540
383
|
class: 'Container',
|
|
541
384
|
compClass: 'TextBlockComponent',
|
|
542
385
|
definition: {
|
|
543
386
|
value: '',
|
|
544
|
-
type: 'h3'
|
|
545
|
-
}
|
|
387
|
+
type: 'h3'
|
|
388
|
+
}
|
|
546
389
|
};
|
|
547
390
|
const mainTitleFieldName = 'title';
|
|
548
391
|
const fieldList = [];
|
|
@@ -553,11 +396,7 @@ var Services;
|
|
|
553
396
|
const textField = _.cloneDeep(textFieldTemplate);
|
|
554
397
|
_.set(textField.definition, 'name', fieldKey);
|
|
555
398
|
_.set(textField.definition, 'label', fieldKey);
|
|
556
|
-
_.set(textField.definition, 'subscribe.form.onFormLoaded[0].template', '<%= _.trim(field.fieldMap["' +
|
|
557
|
-
fieldKey +
|
|
558
|
-
'"].field.value) == "" ? field.translationService.t("@lookup-record-field-empty") : field.fieldMap["' +
|
|
559
|
-
fieldKey +
|
|
560
|
-
'"].field.value %>');
|
|
399
|
+
_.set(textField.definition, 'subscribe.form.onFormLoaded[0].template', '<%= _.trim(field.fieldMap["' + fieldKey + '"].field.value) == "" ? field.translationService.t("@lookup-record-field-empty") : field.fieldMap["' + fieldKey + '"].field.value %>');
|
|
561
400
|
fieldList.push(textField);
|
|
562
401
|
}
|
|
563
402
|
if (schemaType === 'array') {
|
|
@@ -566,11 +405,7 @@ var Services;
|
|
|
566
405
|
const textField = _.cloneDeep(textFieldTemplate);
|
|
567
406
|
_.set(textField.definition, 'name', fieldKey);
|
|
568
407
|
_.set(textField.definition, 'label', fieldKey);
|
|
569
|
-
_.set(textField.definition, 'subscribe.form.onFormLoaded[0].template', '<%= _.isEmpty(_.trim(field.fieldMap["' +
|
|
570
|
-
fieldKey +
|
|
571
|
-
'"].field.value)) ? [field.translationService.t("@lookup-record-field-empty")] : field.fieldMap["' +
|
|
572
|
-
fieldKey +
|
|
573
|
-
'"].field.value %>');
|
|
408
|
+
_.set(textField.definition, 'subscribe.form.onFormLoaded[0].template', '<%= _.isEmpty(_.trim(field.fieldMap["' + fieldKey + '"].field.value)) ? [field.translationService.t("@lookup-record-field-empty")] : field.fieldMap["' + fieldKey + '"].field.value %>');
|
|
574
409
|
fieldList.push(textField);
|
|
575
410
|
}
|
|
576
411
|
else if (itemType === 'object') {
|
|
@@ -633,16 +468,16 @@ var Services;
|
|
|
633
468
|
viewOnly: true,
|
|
634
469
|
definition: {
|
|
635
470
|
name: mainTitleFieldName,
|
|
636
|
-
type: 'h1'
|
|
637
|
-
}
|
|
471
|
+
type: 'h1'
|
|
472
|
+
}
|
|
638
473
|
},
|
|
639
474
|
{
|
|
640
475
|
class: 'Container',
|
|
641
476
|
compClass: 'GenericGroupComponent',
|
|
642
477
|
definition: {
|
|
643
|
-
cssClasses:
|
|
644
|
-
fields: buttonsList
|
|
645
|
-
}
|
|
478
|
+
cssClasses: "form-inline",
|
|
479
|
+
fields: buttonsList
|
|
480
|
+
}
|
|
646
481
|
},
|
|
647
482
|
{
|
|
648
483
|
class: 'TabOrAccordionContainer',
|
|
@@ -659,13 +494,13 @@ var Services;
|
|
|
659
494
|
id: 'main',
|
|
660
495
|
label: '@lookup-record-details-' + recordType,
|
|
661
496
|
active: true,
|
|
662
|
-
fields: fieldList
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
]
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
]
|
|
497
|
+
fields: fieldList
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
]
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
]
|
|
669
504
|
};
|
|
670
505
|
const form = formObject;
|
|
671
506
|
return form;
|
|
@@ -689,29 +524,6 @@ var Services;
|
|
|
689
524
|
}
|
|
690
525
|
});
|
|
691
526
|
}
|
|
692
|
-
/**
|
|
693
|
-
* Build the translation lookup used to resolve form config default values.
|
|
694
|
-
*
|
|
695
|
-
* Returns undefined when the translation service is not available, so the form
|
|
696
|
-
* config values are left as they are rather than failing to build the form.
|
|
697
|
-
*
|
|
698
|
-
* @param branding The branding name.
|
|
699
|
-
*/
|
|
700
|
-
buildFormConfigTranslator(branding) {
|
|
701
|
-
if (typeof TranslationService === 'undefined' || typeof TranslationService?.t !== 'function') {
|
|
702
|
-
return undefined;
|
|
703
|
-
}
|
|
704
|
-
const brandingName = branding || 'default';
|
|
705
|
-
return (key) => {
|
|
706
|
-
try {
|
|
707
|
-
return String(TranslationService.t(key, undefined, 'en', brandingName) ?? key);
|
|
708
|
-
}
|
|
709
|
-
catch (error) {
|
|
710
|
-
this.logger.warn(`Failed to translate form config value '${key}': ${error?.message}`);
|
|
711
|
-
return key;
|
|
712
|
-
}
|
|
713
|
-
};
|
|
714
|
-
}
|
|
715
527
|
/**
|
|
716
528
|
* Convert a server-side form config to a client-side form config.
|
|
717
529
|
*
|
|
@@ -721,38 +533,22 @@ var Services;
|
|
|
721
533
|
* @param recordMetadata The record metadata.
|
|
722
534
|
* @param reusableFormDefs The reusable form definitions.
|
|
723
535
|
*/
|
|
724
|
-
async buildClientFormConfig(item, formMode, userRoles, recordMetadata, reusableFormDefs, branding, contextVariablesMap
|
|
536
|
+
async buildClientFormConfig(item, formMode, userRoles, recordMetadata, reusableFormDefs, branding, contextVariablesMap) {
|
|
725
537
|
const constructor = new construct_visitor_1.ConstructFormConfigVisitor(this.logger);
|
|
726
|
-
const constructed = await constructor.start({
|
|
727
|
-
data: item,
|
|
728
|
-
reusableFormDefs,
|
|
729
|
-
formMode,
|
|
730
|
-
record: recordMetadata,
|
|
731
|
-
translate: this.buildFormConfigTranslator(branding),
|
|
732
|
-
preserveDefaultValues,
|
|
733
|
-
});
|
|
538
|
+
const constructed = await constructor.start({ data: item, reusableFormDefs, formMode, record: recordMetadata });
|
|
734
539
|
const vocabVisitor = new vocab_inline_visitor_1.VocabInlineFormConfigVisitor(this.logger);
|
|
735
540
|
await vocabVisitor.resolveVocabs(constructed, branding, {
|
|
736
|
-
includeHistoricalValues: recordMetadata !== null && recordMetadata !== undefined
|
|
541
|
+
includeHistoricalValues: recordMetadata !== null && recordMetadata !== undefined
|
|
737
542
|
});
|
|
738
543
|
const contextVariablesVisitor = new context_variables_visitor_1.ContextVariablesFormConfigVisitor(this.logger);
|
|
739
544
|
await contextVariablesVisitor.applyContextVariables(constructed, contextVariablesMap);
|
|
740
|
-
if (recordMetadata && recordAccessContext) {
|
|
741
|
-
const recordsService = sails.services.recordsservice;
|
|
742
|
-
const relatedVisitor = new related_object_data_inline_visitor_1.RelatedObjectDataInlineFormConfigVisitor(this.logger, recordsService);
|
|
743
|
-
await relatedVisitor.resolve(constructed, recordMetadata, recordAccessContext);
|
|
744
|
-
}
|
|
745
545
|
// create the client form config
|
|
746
546
|
const visitor = new client_visitor_1.ClientFormConfigVisitor(this.logger);
|
|
747
547
|
const result = await visitor.start({ form: constructed, formMode, userRoles, reusableFormDefs });
|
|
748
548
|
if (!result) {
|
|
749
549
|
throw new Error(`The form config is invalid because all form fields were removed, ` +
|
|
750
550
|
`the form config must have at least one field the current user can view: ${JSON.stringify({
|
|
751
|
-
item,
|
|
752
|
-
formMode,
|
|
753
|
-
userRoles,
|
|
754
|
-
recordData: recordMetadata,
|
|
755
|
-
reusableFormDefs,
|
|
551
|
+
item, formMode, userRoles, recordData: recordMetadata, reusableFormDefs
|
|
756
552
|
})}`);
|
|
757
553
|
}
|
|
758
554
|
const componentDefinitions = result.componentDefinitions;
|
|
@@ -764,62 +560,6 @@ var Services;
|
|
|
764
560
|
}
|
|
765
561
|
return result;
|
|
766
562
|
}
|
|
767
|
-
/**
|
|
768
|
-
* Build the effective form used to compile a record contract.
|
|
769
|
-
*
|
|
770
|
-
* Create contracts deliberately use the form defaults rather than a synthetic
|
|
771
|
-
* record candidate. This keeps candidate-dependent form branches available to
|
|
772
|
-
* the contract compiler. Update contracts use the authoritative existing record.
|
|
773
|
-
*/
|
|
774
|
-
async buildContractFormConfig(context, recordAccessContext) {
|
|
775
|
-
const { resolution } = context;
|
|
776
|
-
const sourceForm = _.cloneDeep({
|
|
777
|
-
...resolution.sourceForm,
|
|
778
|
-
componentDefinitions: [...resolution.sourceForm.componentDefinitions],
|
|
779
|
-
});
|
|
780
|
-
const reusableFormDefinitions = {};
|
|
781
|
-
for (const [name, definitions] of Object.entries(resolution.reusableFormDefinitions)) {
|
|
782
|
-
reusableFormDefinitions[name] = _.cloneDeep([...definitions]);
|
|
783
|
-
}
|
|
784
|
-
const recordMetadata = context.publicContext.kind === 'update'
|
|
785
|
-
? _.cloneDeep((context.resolution.existingRecord?.metadata ?? {}))
|
|
786
|
-
: null;
|
|
787
|
-
const effectiveForm = await this.buildClientFormConfig(sourceForm, resolution.formMode, [...resolution.actor.roles], recordMetadata, reusableFormDefinitions, context.publicContext.brand, _.cloneDeep(resolution.contextVariables), recordAccessContext, true);
|
|
788
|
-
effectiveForm.componentDefinitions = this.retainSubmittableContractComponents(effectiveForm.componentDefinitions ?? []);
|
|
789
|
-
if (effectiveForm.componentDefinitions.length === 0) {
|
|
790
|
-
return { ok: false, reason: 'empty-effective-form' };
|
|
791
|
-
}
|
|
792
|
-
return { ok: true, effectiveForm };
|
|
793
|
-
}
|
|
794
|
-
/** Prune known display-only core leaves and structural shells emptied by that pruning. */
|
|
795
|
-
retainSubmittableContractComponents(componentDefinitions) {
|
|
796
|
-
const nestedKeys = ['componentDefinitions', 'tabs', 'panels', 'headerActions'];
|
|
797
|
-
return componentDefinitions.filter(componentDefinition => {
|
|
798
|
-
const componentType = componentDefinition.component.class;
|
|
799
|
-
const classification = Object.prototype.hasOwnProperty.call(core_contributors_1.CORE_RECORD_CONTRACT_COMPONENT_INVENTORY, componentType)
|
|
800
|
-
? core_contributors_1.CORE_RECORD_CONTRACT_COMPONENT_INVENTORY[componentType]
|
|
801
|
-
: undefined;
|
|
802
|
-
const config = componentDefinition.component.config;
|
|
803
|
-
let nestedComponentCount = 0;
|
|
804
|
-
let hasNestedComponents = false;
|
|
805
|
-
for (const key of nestedKeys) {
|
|
806
|
-
if (!config)
|
|
807
|
-
break;
|
|
808
|
-
const children = config[key];
|
|
809
|
-
if (!Array.isArray(children))
|
|
810
|
-
continue;
|
|
811
|
-
hasNestedComponents = true;
|
|
812
|
-
const retained = this.retainSubmittableContractComponents(children);
|
|
813
|
-
config[key] = retained;
|
|
814
|
-
nestedComponentCount += retained.length;
|
|
815
|
-
}
|
|
816
|
-
if (classification === 'non-persisting')
|
|
817
|
-
return false;
|
|
818
|
-
if (classification === 'container')
|
|
819
|
-
return hasNestedComponents && nestedComponentCount > 0;
|
|
820
|
-
return true;
|
|
821
|
-
});
|
|
822
|
-
}
|
|
823
563
|
findComponentDefinitionByName(componentDefinitions, targetName) {
|
|
824
564
|
for (const componentDefinition of componentDefinitions) {
|
|
825
565
|
const typedDefinition = componentDefinition;
|
|
@@ -839,4 +579,4 @@ var Services;
|
|
|
839
579
|
}
|
|
840
580
|
Services.Forms = Forms;
|
|
841
581
|
})(Services || (exports.Services = Services = {}));
|
|
842
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0Zvcm1zU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RCwrQkFBc0Q7QUFDdEQsOENBQWlGO0FBQ2pGLGdEQUFzRDtBQUl0RCx5Q0FBeUM7QUFDekMsMkNBQTZCO0FBQzdCLDBFQUErRTtBQUMvRSxzRUFVMEM7QUFDMUMsOERBQW9FO0FBQ3BFLG9FQUEwRTtBQUMxRSxvRkFBeUY7QUFDekYsc0dBQXlHO0FBSXpHLDRFQUc4QztBQXFGOUMsSUFBaUIsUUFBUSxDQW02QnhCO0FBbjZCRCxXQUFpQixRQUFRO0lBQ3ZCOzs7OztPQUtHO0lBQ0gsTUFBYSxLQUFNLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUM3QixzQ0FBc0MsR0FBRyxzQ0FBc0MsQ0FBQztRQUU5RSxnQkFBZ0IsR0FBYTtZQUM5QyxXQUFXO1lBQ1gsU0FBUztZQUNULGVBQWU7WUFDZixlQUFlO1lBQ2YsMkJBQTJCO1lBQzNCLFdBQVc7WUFDWCx5QkFBeUI7WUFDekIsd0JBQXdCO1lBQ3hCLCtCQUErQjtZQUMvQix1QkFBdUI7WUFDdkIseUJBQXlCO1lBQ3pCLG1DQUFtQztZQUNuQyw4QkFBOEI7WUFDOUIsY0FBYztTQUNmLENBQUM7UUFFSyxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQThCLEVB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
|
|
582
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybXNTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0Zvcm1zU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RCwrQkFBc0Q7QUFDdEQsOENBQWlGO0FBQ2pGLGdEQUFzRDtBQUd0RCx5Q0FBeUM7QUFDekMsMkNBQTZCO0FBQzdCLDBFQUErRTtBQUsvRSw4REFBb0U7QUFDcEUsb0VBQTBFO0FBQzFFLG9GQUF5RjtBQThCekYsSUFBaUIsUUFBUSxDQXVsQnhCO0FBdmxCRCxXQUFpQixRQUFRO0lBQ3ZCOzs7OztPQUtHO0lBQ0gsTUFBYSxLQUFNLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUM3QixzQ0FBc0MsR0FBRyxzQ0FBc0MsQ0FBQztRQUU5RSxnQkFBZ0IsR0FBYTtZQUM5QyxXQUFXO1lBQ1gsU0FBUztZQUNULGVBQWU7WUFDZixlQUFlO1lBQ2YsMkJBQTJCO1lBQzNCLFdBQVc7WUFDWCx5QkFBeUI7WUFDekIsd0JBQXdCO1lBQ3hCLCtCQUErQjtZQUMvQix1QkFBdUI7U0FDeEIsQ0FBQztRQUVLLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBOEIsRUFBRSxVQUFrQjtZQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyx5Q0FBeUMsWUFBWSxDQUFDLEVBQUUsc0JBQXNCLFlBQVksQ0FBQyxNQUFN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
|