@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
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ValidatorFormConfigVisitor = void 0;
|
|
4
4
|
const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
|
|
5
5
|
const data_value_visitor_1 = require("./data-value.visitor");
|
|
6
|
-
const lodash_1 = require("lodash");
|
|
7
6
|
/**
|
|
8
7
|
* Visit each form config component and run its validators.
|
|
9
8
|
*
|
|
@@ -17,26 +16,16 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
17
16
|
validatorSupport;
|
|
18
17
|
form;
|
|
19
18
|
enabledValidationGroups;
|
|
20
|
-
excludedOnlyValidationGroups;
|
|
21
19
|
validatorDefinitionsMap;
|
|
22
|
-
jsonataEvaluatorFactory;
|
|
23
|
-
checkDeadline;
|
|
24
|
-
transformationOnly;
|
|
25
20
|
validationErrors;
|
|
26
|
-
transformations;
|
|
27
21
|
formPathHelper;
|
|
28
22
|
constructor(logger) {
|
|
29
23
|
super(logger);
|
|
30
24
|
this.validatorSupport = new sails_ng_common_1.ValidatorsSupport();
|
|
31
25
|
this.form = new sails_ng_common_1.FormConfig();
|
|
32
26
|
this.enabledValidationGroups = [];
|
|
33
|
-
this.excludedOnlyValidationGroups = [];
|
|
34
27
|
this.validatorDefinitionsMap = new Map();
|
|
35
|
-
this.jsonataEvaluatorFactory = sails_ng_common_1.jsonataEvaluateFunc;
|
|
36
|
-
this.checkDeadline = () => undefined;
|
|
37
|
-
this.transformationOnly = false;
|
|
38
28
|
this.validationErrors = [];
|
|
39
|
-
this.transformations = [];
|
|
40
29
|
this.formPathHelper = new sails_ng_common_1.FormPathHelper(logger, this);
|
|
41
30
|
}
|
|
42
31
|
/**
|
|
@@ -47,39 +36,14 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
47
36
|
* @param options.validatorDefinitions The validation definitions to make available.
|
|
48
37
|
*/
|
|
49
38
|
async start(options) {
|
|
50
|
-
const result = await this.startWithResult(options);
|
|
51
|
-
return [
|
|
52
|
-
...result.summaries,
|
|
53
|
-
...result.transformations.map(transformation => (0, lodash_1.cloneDeep)(transformation.advisorySummary)),
|
|
54
|
-
];
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Run validation and return schema-owned value transformations separately
|
|
58
|
-
* from validator summaries so save boundaries can apply them immutably.
|
|
59
|
-
*/
|
|
60
|
-
async startWithResult(options) {
|
|
61
39
|
this.formPathHelper.reset();
|
|
62
40
|
this.form = options.form;
|
|
63
41
|
// use the first non-null, non-undefined value - empty array is a valid value
|
|
64
42
|
this.enabledValidationGroups = options.enabledValidationGroups ?? this.form.enabledValidationGroups ?? ['all'];
|
|
65
|
-
this.
|
|
66
|
-
this.validatorDefinitionsMap = options.validatorDefinitionsMap
|
|
67
|
-
? new Map(options.validatorDefinitionsMap)
|
|
68
|
-
: this.validatorSupport.createValidatorDefinitionMapping(options.validatorDefinitions || []);
|
|
69
|
-
this.jsonataEvaluatorFactory = options.jsonataEvaluatorFactory ?? sails_ng_common_1.jsonataEvaluateFunc;
|
|
70
|
-
this.checkDeadline = options.checkDeadline ?? (() => undefined);
|
|
71
|
-
this.transformationOnly = options.transformationOnly === true;
|
|
43
|
+
this.validatorDefinitionsMap = this.validatorSupport.createValidatorDefinitionMapping(options.validatorDefinitions || []);
|
|
72
44
|
this.validationErrors = [];
|
|
73
|
-
this.transformations = [];
|
|
74
45
|
await this.form.accept(this);
|
|
75
|
-
return
|
|
76
|
-
summaries: [...this.validationErrors],
|
|
77
|
-
transformations: this.transformations.map(transformation => ({
|
|
78
|
-
...transformation,
|
|
79
|
-
dataModelPath: [...transformation.dataModelPath],
|
|
80
|
-
advisorySummary: (0, lodash_1.cloneDeep)(transformation.advisorySummary),
|
|
81
|
-
})),
|
|
82
|
-
};
|
|
46
|
+
return this.validationErrors;
|
|
83
47
|
}
|
|
84
48
|
/* Form Config */
|
|
85
49
|
async visitFormConfig(item) {
|
|
@@ -91,106 +55,53 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
91
55
|
// There are various reasons a validator is at form level, e.g. they involve more than one field.
|
|
92
56
|
const dataValueVisitor = new data_value_visitor_1.DataValueFormConfigVisitor(this.logger);
|
|
93
57
|
const value = await dataValueVisitor.start({ form: item });
|
|
94
|
-
const itemName = item?.name ??
|
|
95
|
-
|
|
96
|
-
this.validationErrors.push(...(await this.validateFormComponent(itemName, value, item?.validators)));
|
|
97
|
-
}
|
|
58
|
+
const itemName = item?.name ?? "";
|
|
59
|
+
this.validationErrors.push(...await this.validateFormComponent(itemName, value, item?.validators));
|
|
98
60
|
}
|
|
99
61
|
/* SimpleInput */
|
|
100
|
-
async visitSimpleInputFieldComponentDefinition(_item) {
|
|
101
|
-
|
|
62
|
+
async visitSimpleInputFieldComponentDefinition(_item) {
|
|
63
|
+
}
|
|
64
|
+
async visitSimpleInputFieldModelDefinition(_item) {
|
|
65
|
+
}
|
|
102
66
|
async visitSimpleInputFormComponentDefinition(item) {
|
|
103
67
|
await this.acceptFormComponentDefinition(item);
|
|
104
68
|
}
|
|
105
69
|
/* Content */
|
|
106
|
-
async visitContentFieldComponentDefinition(_item) {
|
|
107
|
-
async visitContentFormComponentDefinition(item) {
|
|
108
|
-
await this.acceptFormComponentDefinition(item);
|
|
70
|
+
async visitContentFieldComponentDefinition(_item) {
|
|
109
71
|
}
|
|
110
|
-
|
|
111
|
-
async visitRelatedObjectDataFieldComponentDefinition(_item) { }
|
|
112
|
-
async visitRelatedObjectDataFormComponentDefinition(item) {
|
|
72
|
+
async visitContentFormComponentDefinition(item) {
|
|
113
73
|
await this.acceptFormComponentDefinition(item);
|
|
114
74
|
}
|
|
115
75
|
/* Repeatable */
|
|
116
|
-
async visitRepeatableFieldComponentDefinition(_item) {
|
|
117
|
-
|
|
118
|
-
async
|
|
76
|
+
async visitRepeatableFieldComponentDefinition(_item) {
|
|
77
|
+
}
|
|
78
|
+
async visitRepeatableFieldModelDefinition(_item) {
|
|
79
|
+
}
|
|
80
|
+
async visitRepeatableElementFieldLayoutDefinition(_item) {
|
|
81
|
+
}
|
|
119
82
|
async visitRepeatableFormComponentDefinition(item) {
|
|
120
83
|
await this.acceptFormComponentDefinition(item);
|
|
121
|
-
const values = item.model?.config?.value;
|
|
122
|
-
const elementTemplate = item.component?.config?.elementTemplate;
|
|
123
|
-
if (!Array.isArray(values) || !elementTemplate)
|
|
124
|
-
return;
|
|
125
|
-
for (const [index, rowValue] of values.entries()) {
|
|
126
|
-
this.checkDeadline();
|
|
127
|
-
const rowTemplate = (0, lodash_1.cloneDeep)(elementTemplate);
|
|
128
|
-
this.hydrateRepeatableRow(rowTemplate, rowValue);
|
|
129
|
-
const templateLineage = this.formPathHelper.lineagePathsForRepeatableFieldComponentDefinition(rowTemplate);
|
|
130
|
-
await this.formPathHelper.acceptFormPath(rowTemplate, {
|
|
131
|
-
...templateLineage,
|
|
132
|
-
formConfig: ['component', ...(templateLineage.formConfig ?? [])],
|
|
133
|
-
dataModel: [...(templateLineage.dataModel ?? []), index],
|
|
134
|
-
angularComponents: [...(templateLineage.angularComponents ?? []), index],
|
|
135
|
-
layout: [...(templateLineage.layout ?? []), index],
|
|
136
|
-
});
|
|
137
|
-
this.checkDeadline();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/** Populate only schema-owned row controls; submitted objects never become form definitions. */
|
|
141
|
-
hydrateRepeatableRow(definition, parentValue) {
|
|
142
|
-
const definitionRecord = definition;
|
|
143
|
-
const component = definitionRecord.component;
|
|
144
|
-
const model = definitionRecord.model;
|
|
145
|
-
const name = typeof definitionRecord.name === 'string' ? definitionRecord.name : '';
|
|
146
|
-
const consumesNamedValue = Boolean(name) && (model !== undefined || component?.class === 'GroupComponent');
|
|
147
|
-
const value = consumesNamedValue && parentValue !== null && typeof parentValue === 'object' && !Array.isArray(parentValue)
|
|
148
|
-
? parentValue[name]
|
|
149
|
-
: parentValue;
|
|
150
|
-
if (model) {
|
|
151
|
-
const config = model.config && typeof model.config === 'object' && !Array.isArray(model.config)
|
|
152
|
-
? model.config
|
|
153
|
-
: {};
|
|
154
|
-
model.config = config;
|
|
155
|
-
config.value = value;
|
|
156
|
-
}
|
|
157
|
-
const componentConfig = component?.config;
|
|
158
|
-
if (!componentConfig || typeof componentConfig !== 'object' || Array.isArray(componentConfig))
|
|
159
|
-
return;
|
|
160
|
-
const config = componentConfig;
|
|
161
|
-
// A nested repeatable owns its elementTemplate expansion when its visitor
|
|
162
|
-
// sees the nested array value.
|
|
163
|
-
if (component.class === 'RepeatableComponent')
|
|
164
|
-
return;
|
|
165
|
-
for (const key of ['componentDefinitions', 'tabs', 'panels']) {
|
|
166
|
-
const children = config[key];
|
|
167
|
-
if (!Array.isArray(children))
|
|
168
|
-
continue;
|
|
169
|
-
for (const child of children) {
|
|
170
|
-
this.hydrateRepeatableRow(child, value);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
84
|
}
|
|
174
85
|
/* Validation Summary */
|
|
175
|
-
async visitValidationSummaryFieldComponentDefinition(_item) {
|
|
86
|
+
async visitValidationSummaryFieldComponentDefinition(_item) {
|
|
87
|
+
}
|
|
176
88
|
async visitValidationSummaryFormComponentDefinition(item) {
|
|
177
89
|
await this.acceptFormComponentDefinition(item);
|
|
178
90
|
}
|
|
179
|
-
async visitSuggestedValidationSummaryFieldComponentDefinition(_item) {
|
|
91
|
+
async visitSuggestedValidationSummaryFieldComponentDefinition(_item) {
|
|
92
|
+
}
|
|
180
93
|
async visitSuggestedValidationSummaryFormComponentDefinition(item) {
|
|
181
94
|
await this.acceptFormComponentDefinition(item);
|
|
182
95
|
}
|
|
183
|
-
async visitSaveStatusFieldComponentDefinition(_item) {
|
|
96
|
+
async visitSaveStatusFieldComponentDefinition(_item) {
|
|
97
|
+
}
|
|
184
98
|
async visitSaveStatusFormComponentDefinition(item) {
|
|
185
99
|
await this.acceptFormComponentDefinition(item);
|
|
186
100
|
}
|
|
187
101
|
/* Integration Status */
|
|
188
|
-
async visitIntegrationStatusFieldComponentDefinition(_item) {
|
|
189
|
-
async visitIntegrationStatusFormComponentDefinition(item) {
|
|
190
|
-
await this.acceptFormComponentDefinition(item);
|
|
102
|
+
async visitIntegrationStatusFieldComponentDefinition(_item) {
|
|
191
103
|
}
|
|
192
|
-
async
|
|
193
|
-
async visitWorkspaceFormComponentDefinition(item) {
|
|
104
|
+
async visitIntegrationStatusFormComponentDefinition(item) {
|
|
194
105
|
await this.acceptFormComponentDefinition(item);
|
|
195
106
|
}
|
|
196
107
|
/* Group */
|
|
@@ -200,7 +111,8 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
200
111
|
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForGroupFieldComponentDefinition(componentDefinition, index));
|
|
201
112
|
}
|
|
202
113
|
}
|
|
203
|
-
async visitGroupFieldModelDefinition(_item) {
|
|
114
|
+
async visitGroupFieldModelDefinition(_item) {
|
|
115
|
+
}
|
|
204
116
|
async visitGroupFormComponentDefinition(item) {
|
|
205
117
|
await this.acceptFormComponentDefinition(item);
|
|
206
118
|
}
|
|
@@ -211,7 +123,8 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
211
123
|
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabFieldComponentDefinition(componentDefinition, index));
|
|
212
124
|
}
|
|
213
125
|
}
|
|
214
|
-
async visitTabFieldLayoutDefinition(_item) {
|
|
126
|
+
async visitTabFieldLayoutDefinition(_item) {
|
|
127
|
+
}
|
|
215
128
|
async visitTabFormComponentDefinition(item) {
|
|
216
129
|
await this.acceptFormComponentDefinition(item);
|
|
217
130
|
}
|
|
@@ -221,7 +134,8 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
221
134
|
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionFieldComponentDefinition(componentDefinition, index));
|
|
222
135
|
}
|
|
223
136
|
}
|
|
224
|
-
async visitAccordionFieldLayoutDefinition(_item) {
|
|
137
|
+
async visitAccordionFieldLayoutDefinition(_item) {
|
|
138
|
+
}
|
|
225
139
|
async visitAccordionFormComponentDefinition(item) {
|
|
226
140
|
await this.acceptFormComponentDefinition(item);
|
|
227
141
|
}
|
|
@@ -230,7 +144,8 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
230
144
|
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForAccordionPanelFieldComponentDefinition(componentDefinition, index));
|
|
231
145
|
}
|
|
232
146
|
}
|
|
233
|
-
async visitAccordionPanelFieldLayoutDefinition(_item) {
|
|
147
|
+
async visitAccordionPanelFieldLayoutDefinition(_item) {
|
|
148
|
+
}
|
|
234
149
|
async visitAccordionPanelFormComponentDefinition(item) {
|
|
235
150
|
await this.acceptFormComponentDefinition(item);
|
|
236
151
|
}
|
|
@@ -241,40 +156,50 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
241
156
|
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForTabContentFieldComponentDefinition(componentDefinition, index));
|
|
242
157
|
}
|
|
243
158
|
}
|
|
244
|
-
async visitTabContentFieldLayoutDefinition(_item) {
|
|
159
|
+
async visitTabContentFieldLayoutDefinition(_item) {
|
|
160
|
+
}
|
|
245
161
|
async visitTabContentFormComponentDefinition(item) {
|
|
246
162
|
await this.acceptFormComponentDefinition(item);
|
|
247
163
|
}
|
|
248
164
|
/* Save Button */
|
|
249
|
-
async visitSaveButtonFieldComponentDefinition(_item) {
|
|
165
|
+
async visitSaveButtonFieldComponentDefinition(_item) {
|
|
166
|
+
}
|
|
250
167
|
async visitSaveButtonFormComponentDefinition(item) {
|
|
251
168
|
await this.acceptFormComponentDefinition(item);
|
|
252
169
|
}
|
|
253
170
|
/* Cancel Button */
|
|
254
|
-
async visitCancelButtonFieldComponentDefinition(_item) {
|
|
171
|
+
async visitCancelButtonFieldComponentDefinition(_item) {
|
|
172
|
+
}
|
|
255
173
|
async visitCancelButtonFormComponentDefinition(item) {
|
|
256
174
|
await this.acceptFormComponentDefinition(item);
|
|
257
175
|
}
|
|
258
|
-
async visitDeleteButtonFieldComponentDefinition(_item) {
|
|
176
|
+
async visitDeleteButtonFieldComponentDefinition(_item) {
|
|
177
|
+
}
|
|
259
178
|
async visitDeleteButtonFormComponentDefinition(item) {
|
|
260
179
|
await this.acceptFormComponentDefinition(item);
|
|
261
180
|
}
|
|
262
181
|
/* Tab Nav Button */
|
|
263
|
-
async visitTabNavButtonFieldComponentDefinition(_item) {
|
|
182
|
+
async visitTabNavButtonFieldComponentDefinition(_item) {
|
|
183
|
+
}
|
|
264
184
|
async visitTabNavButtonFormComponentDefinition(item) {
|
|
265
185
|
await this.acceptFormComponentDefinition(item);
|
|
266
186
|
}
|
|
267
187
|
/* Text Area */
|
|
268
|
-
async visitTextAreaFieldComponentDefinition(_item) {
|
|
269
|
-
|
|
188
|
+
async visitTextAreaFieldComponentDefinition(_item) {
|
|
189
|
+
}
|
|
190
|
+
async visitTextAreaFieldModelDefinition(_item) {
|
|
191
|
+
}
|
|
270
192
|
async visitTextAreaFormComponentDefinition(item) {
|
|
271
193
|
await this.acceptFormComponentDefinition(item);
|
|
272
194
|
}
|
|
273
195
|
/* Default Layout */
|
|
274
|
-
async visitDefaultFieldLayoutDefinition(_item) {
|
|
196
|
+
async visitDefaultFieldLayoutDefinition(_item) {
|
|
197
|
+
}
|
|
275
198
|
/* Checkbox Input */
|
|
276
|
-
async visitCheckboxInputFieldComponentDefinition(_item) {
|
|
277
|
-
|
|
199
|
+
async visitCheckboxInputFieldComponentDefinition(_item) {
|
|
200
|
+
}
|
|
201
|
+
async visitCheckboxInputFieldModelDefinition(_item) {
|
|
202
|
+
}
|
|
278
203
|
async visitCheckboxInputFormComponentDefinition(item) {
|
|
279
204
|
await this.acceptFormComponentDefinition(item);
|
|
280
205
|
}
|
|
@@ -284,24 +209,31 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
284
209
|
await this.formPathHelper.acceptFormPath(componentDefinition, this.formPathHelper.lineagePathsForQuestionTreeFieldComponentDefinition(componentDefinition, index));
|
|
285
210
|
}
|
|
286
211
|
}
|
|
287
|
-
async visitQuestionTreeFieldModelDefinition(_item) {
|
|
212
|
+
async visitQuestionTreeFieldModelDefinition(_item) {
|
|
213
|
+
}
|
|
288
214
|
async visitQuestionTreeFormComponentDefinition(item) {
|
|
289
215
|
await this.acceptFormComponentDefinition(item);
|
|
290
216
|
}
|
|
291
217
|
/* Checkbox Tree */
|
|
292
|
-
async visitCheckboxTreeFieldComponentDefinition(_item) {
|
|
293
|
-
|
|
218
|
+
async visitCheckboxTreeFieldComponentDefinition(_item) {
|
|
219
|
+
}
|
|
220
|
+
async visitCheckboxTreeFieldModelDefinition(_item) {
|
|
221
|
+
}
|
|
294
222
|
async visitCheckboxTreeFormComponentDefinition(item) {
|
|
295
223
|
await this.acceptFormComponentDefinition(item);
|
|
296
224
|
}
|
|
297
|
-
async visitRecordSelectorFieldComponentDefinition(_item) {
|
|
298
|
-
|
|
225
|
+
async visitRecordSelectorFieldComponentDefinition(_item) {
|
|
226
|
+
}
|
|
227
|
+
async visitRecordSelectorFieldModelDefinition(_item) {
|
|
228
|
+
}
|
|
299
229
|
async visitRecordSelectorFormComponentDefinition(item) {
|
|
300
230
|
await this.acceptFormComponentDefinition(item);
|
|
301
231
|
}
|
|
302
232
|
/* Dropdown Input */
|
|
303
|
-
async visitDropdownInputFieldComponentDefinition(_item) {
|
|
304
|
-
|
|
233
|
+
async visitDropdownInputFieldComponentDefinition(_item) {
|
|
234
|
+
}
|
|
235
|
+
async visitDropdownInputFieldModelDefinition(_item) {
|
|
236
|
+
}
|
|
305
237
|
async visitDropdownInputFormComponentDefinition(item) {
|
|
306
238
|
await this.acceptFormComponentDefinition(item);
|
|
307
239
|
}
|
|
@@ -309,76 +241,76 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
309
241
|
async visitTypeaheadInputFieldComponentDefinition(item) {
|
|
310
242
|
const configErrors = [];
|
|
311
243
|
const config = item.config;
|
|
312
|
-
const sourceType = String(config?.sourceType ??
|
|
313
|
-
if (!sourceType || ![
|
|
244
|
+
const sourceType = String(config?.sourceType ?? "");
|
|
245
|
+
if (!sourceType || !["static", "vocabulary", "namedQuery", "external", "service"].includes(sourceType)) {
|
|
314
246
|
configErrors.push({
|
|
315
|
-
class:
|
|
316
|
-
message:
|
|
317
|
-
params: { sourceType }
|
|
247
|
+
class: "typeaheadSourceType",
|
|
248
|
+
message: "@validator-error-typeahead-source-type",
|
|
249
|
+
params: { sourceType }
|
|
318
250
|
});
|
|
319
251
|
}
|
|
320
|
-
if (sourceType ===
|
|
252
|
+
if (sourceType === "static" && (!Array.isArray(config?.staticOptions) || config.staticOptions.length === 0)) {
|
|
321
253
|
configErrors.push({
|
|
322
|
-
class:
|
|
323
|
-
message:
|
|
324
|
-
params: { sourceType }
|
|
254
|
+
class: "typeaheadStaticOptions",
|
|
255
|
+
message: "@validator-error-typeahead-static-options",
|
|
256
|
+
params: { sourceType }
|
|
325
257
|
});
|
|
326
258
|
}
|
|
327
|
-
if (sourceType ===
|
|
259
|
+
if (sourceType === "vocabulary" && !String(config?.vocabRef ?? "").trim()) {
|
|
328
260
|
configErrors.push({
|
|
329
|
-
class:
|
|
330
|
-
message:
|
|
331
|
-
params: { sourceType }
|
|
261
|
+
class: "typeaheadVocabRef",
|
|
262
|
+
message: "@validator-error-typeahead-vocab-ref",
|
|
263
|
+
params: { sourceType }
|
|
332
264
|
});
|
|
333
265
|
}
|
|
334
|
-
if (sourceType ===
|
|
266
|
+
if (sourceType === "namedQuery" && !String(config?.queryId ?? "").trim()) {
|
|
335
267
|
configErrors.push({
|
|
336
|
-
class:
|
|
337
|
-
message:
|
|
338
|
-
params: { sourceType }
|
|
268
|
+
class: "typeaheadQueryId",
|
|
269
|
+
message: "@validator-error-typeahead-query-id",
|
|
270
|
+
params: { sourceType }
|
|
339
271
|
});
|
|
340
272
|
}
|
|
341
|
-
const serviceId = String(config?.[
|
|
342
|
-
if (sourceType ===
|
|
273
|
+
const serviceId = String(config?.["serviceId"] ?? "").trim();
|
|
274
|
+
if (sourceType === "service" && !serviceId) {
|
|
343
275
|
configErrors.push({
|
|
344
|
-
class:
|
|
345
|
-
message:
|
|
346
|
-
params: { sourceType }
|
|
276
|
+
class: "typeaheadServiceId",
|
|
277
|
+
message: "@validator-error-typeahead-service-id",
|
|
278
|
+
params: { sourceType }
|
|
347
279
|
});
|
|
348
280
|
}
|
|
349
|
-
if (sourceType ===
|
|
281
|
+
if (sourceType === "external" && !String(config?.provider ?? "").trim()) {
|
|
350
282
|
configErrors.push({
|
|
351
|
-
class:
|
|
352
|
-
message:
|
|
353
|
-
params: { sourceType }
|
|
283
|
+
class: "typeaheadProvider",
|
|
284
|
+
message: "@validator-error-typeahead-provider",
|
|
285
|
+
params: { sourceType }
|
|
354
286
|
});
|
|
355
287
|
}
|
|
356
288
|
if (config?.multiSelect === true) {
|
|
357
289
|
configErrors.push({
|
|
358
|
-
class:
|
|
359
|
-
message:
|
|
360
|
-
params: { multiSelect: true }
|
|
290
|
+
class: "typeaheadMultiSelect",
|
|
291
|
+
message: "@validator-error-typeahead-multi-select-unsupported",
|
|
292
|
+
params: { multiSelect: true }
|
|
361
293
|
});
|
|
362
294
|
}
|
|
363
295
|
if (configErrors.length > 0) {
|
|
364
296
|
this.validationErrors.push({
|
|
365
|
-
id: String(this.formPathHelper.formPath.angularComponents?.[this.formPathHelper.formPath.angularComponents.length - 1] ??
|
|
366
|
-
|
|
367
|
-
message: item?.config?.label ?? 'TypeaheadInput configuration',
|
|
297
|
+
id: String(this.formPathHelper.formPath.angularComponents?.[this.formPathHelper.formPath.angularComponents.length - 1] ?? ""),
|
|
298
|
+
message: item?.config?.label ?? "TypeaheadInput configuration",
|
|
368
299
|
errors: configErrors,
|
|
369
|
-
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
300
|
+
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
370
301
|
});
|
|
371
302
|
}
|
|
372
303
|
}
|
|
373
|
-
async visitTypeaheadInputFieldModelDefinition(_item) {
|
|
304
|
+
async visitTypeaheadInputFieldModelDefinition(_item) {
|
|
305
|
+
}
|
|
374
306
|
async visitTypeaheadInputFormComponentDefinition(item) {
|
|
375
307
|
await this.acceptFormComponentDefinition(item);
|
|
376
308
|
}
|
|
377
309
|
/* Rich Text Editor */
|
|
378
|
-
async visitRichTextEditorFieldComponentDefinition(_item) {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
const value = item
|
|
310
|
+
async visitRichTextEditorFieldComponentDefinition(_item) {
|
|
311
|
+
}
|
|
312
|
+
async visitRichTextEditorFieldModelDefinition(item) {
|
|
313
|
+
const value = item?.config?.value;
|
|
382
314
|
if (typeof value !== 'string' || !value) {
|
|
383
315
|
return;
|
|
384
316
|
}
|
|
@@ -391,54 +323,38 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
391
323
|
return;
|
|
392
324
|
}
|
|
393
325
|
const mode = sails?.config?.record?.form?.htmlSanitizationMode ?? 'sanitize';
|
|
394
|
-
const componentName = String(this.formPathHelper.formPath.angularComponents?.[this.formPathHelper.formPath.angularComponents.length - 1] ??
|
|
395
|
-
'Rich text content');
|
|
326
|
+
const componentName = String(this.formPathHelper.formPath.angularComponents?.[this.formPathHelper.formPath.angularComponents.length - 1] ?? "Rich text content");
|
|
396
327
|
if (mode === 'reject') {
|
|
397
328
|
// Report validation error, do NOT mutate
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
],
|
|
409
|
-
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath),
|
|
410
|
-
});
|
|
411
|
-
}
|
|
329
|
+
this.validationErrors.push({
|
|
330
|
+
id: componentName,
|
|
331
|
+
message: componentName,
|
|
332
|
+
errors: [{
|
|
333
|
+
class: "htmlUnsafe",
|
|
334
|
+
message: "@validator-error-html-unsafe",
|
|
335
|
+
params: { actual: value }
|
|
336
|
+
}],
|
|
337
|
+
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
338
|
+
});
|
|
412
339
|
}
|
|
413
340
|
else {
|
|
414
|
-
// Default: sanitize
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
item.model.config.value = sanitized;
|
|
341
|
+
// Default: sanitize in-place, report as warning
|
|
342
|
+
if (item.config) {
|
|
343
|
+
item.config.value = sanitized;
|
|
418
344
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
errors: [
|
|
429
|
-
{
|
|
430
|
-
class: 'htmlSanitized',
|
|
431
|
-
message: '@validator-warning-html-sanitized',
|
|
432
|
-
params: {},
|
|
433
|
-
},
|
|
434
|
-
],
|
|
435
|
-
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath),
|
|
436
|
-
},
|
|
345
|
+
this.validationErrors.push({
|
|
346
|
+
id: componentName,
|
|
347
|
+
message: componentName,
|
|
348
|
+
errors: [{
|
|
349
|
+
class: "htmlSanitized",
|
|
350
|
+
message: "@validator-warning-html-sanitized",
|
|
351
|
+
params: {}
|
|
352
|
+
}],
|
|
353
|
+
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
437
354
|
});
|
|
438
355
|
}
|
|
439
356
|
}
|
|
440
357
|
async visitRichTextEditorFormComponentDefinition(item) {
|
|
441
|
-
this.sanitizeRichTextValue(item);
|
|
442
358
|
await this.acceptFormComponentDefinition(item);
|
|
443
359
|
}
|
|
444
360
|
/* Map */
|
|
@@ -451,64 +367,78 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
451
367
|
configErrors.push({
|
|
452
368
|
class: 'mapEnabledModes',
|
|
453
369
|
message: '@validator-error-map-enabled-modes',
|
|
454
|
-
params: { invalidModes }
|
|
370
|
+
params: { invalidModes }
|
|
455
371
|
});
|
|
456
372
|
}
|
|
457
373
|
if (configErrors.length > 0) {
|
|
458
374
|
this.validationErrors.push({
|
|
459
|
-
id: String(this.formPathHelper.formPath.angularComponents?.[this.formPathHelper.formPath.angularComponents.length - 1] ??
|
|
460
|
-
''),
|
|
375
|
+
id: String(this.formPathHelper.formPath.angularComponents?.[this.formPathHelper.formPath.angularComponents.length - 1] ?? ''),
|
|
461
376
|
message: item?.config?.label ?? 'MapComponent configuration',
|
|
462
377
|
errors: configErrors,
|
|
463
|
-
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
378
|
+
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
464
379
|
});
|
|
465
380
|
}
|
|
466
381
|
}
|
|
467
|
-
async visitMapFieldModelDefinition(_item) {
|
|
382
|
+
async visitMapFieldModelDefinition(_item) {
|
|
383
|
+
}
|
|
468
384
|
async visitMapFormComponentDefinition(item) {
|
|
469
385
|
await this.acceptFormComponentDefinition(item);
|
|
470
386
|
}
|
|
471
387
|
/* File Upload */
|
|
472
|
-
async visitFileUploadFieldComponentDefinition(_item) {
|
|
473
|
-
|
|
388
|
+
async visitFileUploadFieldComponentDefinition(_item) {
|
|
389
|
+
}
|
|
390
|
+
async visitFileUploadFieldModelDefinition(_item) {
|
|
391
|
+
}
|
|
474
392
|
async visitFileUploadFormComponentDefinition(item) {
|
|
475
393
|
await this.acceptFormComponentDefinition(item);
|
|
476
394
|
}
|
|
477
|
-
async visitPDFListFieldComponentDefinition(_item) {
|
|
478
|
-
|
|
395
|
+
async visitPDFListFieldComponentDefinition(_item) {
|
|
396
|
+
}
|
|
397
|
+
async visitPDFListFieldModelDefinition(_item) {
|
|
398
|
+
}
|
|
479
399
|
async visitPDFListFormComponentDefinition(item) {
|
|
480
400
|
await this.acceptFormComponentDefinition(item);
|
|
481
401
|
}
|
|
482
|
-
async visitRecordMetadataRetrieverFieldComponentDefinition(_item) {
|
|
402
|
+
async visitRecordMetadataRetrieverFieldComponentDefinition(_item) {
|
|
403
|
+
}
|
|
483
404
|
async visitRecordMetadataRetrieverFormComponentDefinition(item) {
|
|
484
405
|
await this.acceptFormComponentDefinition(item);
|
|
485
406
|
}
|
|
486
407
|
/* Data Location */
|
|
487
|
-
async visitDataLocationFieldComponentDefinition(_item) {
|
|
488
|
-
|
|
408
|
+
async visitDataLocationFieldComponentDefinition(_item) {
|
|
409
|
+
}
|
|
410
|
+
async visitDataLocationFieldModelDefinition(_item) {
|
|
411
|
+
}
|
|
489
412
|
async visitDataLocationFormComponentDefinition(item) {
|
|
490
413
|
await this.acceptFormComponentDefinition(item);
|
|
491
414
|
}
|
|
492
415
|
// Validation is intentionally empty because there is no persisted refresh
|
|
493
416
|
// value to validate.
|
|
494
|
-
async visitPublishDataLocationRefreshFieldComponentDefinition(_item) {
|
|
417
|
+
async visitPublishDataLocationRefreshFieldComponentDefinition(_item) {
|
|
418
|
+
}
|
|
495
419
|
async visitPublishDataLocationRefreshFormComponentDefinition(item) {
|
|
496
420
|
await this.acceptFormComponentDefinition(item);
|
|
497
421
|
}
|
|
498
|
-
async visitPublishDataLocationSelectorFieldComponentDefinition(_item) {
|
|
499
|
-
|
|
422
|
+
async visitPublishDataLocationSelectorFieldComponentDefinition(_item) {
|
|
423
|
+
}
|
|
424
|
+
async visitPublishDataLocationSelectorFieldModelDefinition(_item) {
|
|
425
|
+
}
|
|
500
426
|
async visitPublishDataLocationSelectorFormComponentDefinition(item) {
|
|
501
427
|
await this.acceptFormComponentDefinition(item);
|
|
502
428
|
}
|
|
503
429
|
/* Radio Input */
|
|
504
|
-
async visitRadioInputFieldComponentDefinition(_item) {
|
|
505
|
-
|
|
430
|
+
async visitRadioInputFieldComponentDefinition(_item) {
|
|
431
|
+
}
|
|
432
|
+
async visitRadioInputFieldModelDefinition(_item) {
|
|
433
|
+
}
|
|
506
434
|
async visitRadioInputFormComponentDefinition(item) {
|
|
507
435
|
await this.acceptFormComponentDefinition(item);
|
|
508
436
|
}
|
|
509
437
|
/* Date Input */
|
|
510
|
-
async visitDateInputFieldComponentDefinition(_item) {
|
|
511
|
-
|
|
438
|
+
async visitDateInputFieldComponentDefinition(_item) {
|
|
439
|
+
}
|
|
440
|
+
async visitDateInputFieldModelDefinition(_item) {
|
|
441
|
+
}
|
|
512
442
|
async visitDateInputFormComponentDefinition(item) {
|
|
513
443
|
await this.acceptFormComponentDefinition(item);
|
|
514
444
|
}
|
|
@@ -516,13 +446,11 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
516
446
|
createFormControlFromRecordValue(recordValue) {
|
|
517
447
|
const guessedType = (0, sails_ng_common_1.guessType)(recordValue);
|
|
518
448
|
let result;
|
|
519
|
-
if (guessedType ===
|
|
520
|
-
result = new sails_ng_common_1.SimpleServerFormValidatorControl(Object.fromEntries(Object.entries(recordValue)
|
|
521
|
-
key,
|
|
522
|
-
this.createFormControlFromRecordValue(value),
|
|
523
|
-
])));
|
|
449
|
+
if (guessedType === "object") {
|
|
450
|
+
result = new sails_ng_common_1.SimpleServerFormValidatorControl(Object.fromEntries(Object.entries(recordValue)
|
|
451
|
+
.map(([key, value]) => [key, this.createFormControlFromRecordValue(value)])));
|
|
524
452
|
}
|
|
525
|
-
else if (guessedType ===
|
|
453
|
+
else if (guessedType === "array") {
|
|
526
454
|
result = new sails_ng_common_1.SimpleServerFormValidatorControl(recordValue.map(i => this.createFormControlFromRecordValue(i)));
|
|
527
455
|
}
|
|
528
456
|
else {
|
|
@@ -531,10 +459,8 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
531
459
|
return result;
|
|
532
460
|
}
|
|
533
461
|
async acceptFormComponentDefinition(item) {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
this.validationErrors.push(...validationErrors);
|
|
537
|
-
}
|
|
462
|
+
const validationErrors = await this.validateFormComponent(item?.name, item?.model?.config?.value, item?.model?.config?.validators, item?.layout?.config?.label);
|
|
463
|
+
this.validationErrors.push(...validationErrors);
|
|
538
464
|
await this.formPathHelper.acceptFormComponentDefinition(item);
|
|
539
465
|
}
|
|
540
466
|
async validateFormComponent(itemName, value, validators, message) {
|
|
@@ -542,36 +468,29 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
542
468
|
const availableValidatorGroups = this.form?.validationGroups ?? {};
|
|
543
469
|
const result = [];
|
|
544
470
|
if (Array.isArray(validators) && validators.length > 0) {
|
|
545
|
-
// Select the validators for this pass before preparing executable
|
|
546
|
-
// configuration. In particular, an advisory-only JSONata expression
|
|
547
|
-
// must not compile or execute during the blocking pass.
|
|
548
|
-
const filteredValidators = this.validatorSupport.enabledValidators(availableValidatorGroups, this.enabledValidationGroups, validators).filter(validator => !this.isValidatorExclusiveToGroups(availableValidatorGroups, validator));
|
|
549
471
|
// ensure jsonata-expression validators can be evaluated
|
|
550
|
-
this.validatorSupport.assignJsonataEvaluators(
|
|
551
|
-
const expr = validator?.config?.['expression']?.toString() ??
|
|
552
|
-
return
|
|
472
|
+
this.validatorSupport.assignJsonataEvaluators(validators, function (validator, index) {
|
|
473
|
+
const expr = validator?.config?.['expression']?.toString() ?? "";
|
|
474
|
+
return (0, sails_ng_common_1.jsonataEvaluateFunc)(expr);
|
|
553
475
|
});
|
|
476
|
+
const filteredValidators = this.validatorSupport.enabledValidators(availableValidatorGroups, this.enabledValidationGroups, validators);
|
|
554
477
|
const formValidatorFns = createFormValidatorFns(this.validatorDefinitionsMap, filteredValidators);
|
|
555
478
|
const recordFormControl = this.createFormControlFromRecordValue(value);
|
|
556
479
|
const summaryErrors = {
|
|
557
|
-
id:
|
|
558
|
-
message:
|
|
480
|
+
id: itemName,
|
|
481
|
+
message: message || null,
|
|
559
482
|
errors: [],
|
|
560
|
-
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
483
|
+
lineagePaths: (0, sails_ng_common_1.buildLineagePaths)(this.formPathHelper.formPath)
|
|
561
484
|
};
|
|
562
485
|
// async
|
|
563
486
|
for (const formValidatorFn of formValidatorFns.asyncDefs) {
|
|
564
|
-
this.checkDeadline();
|
|
565
487
|
const funcResult = await formValidatorFn(recordFormControl);
|
|
566
|
-
this.checkDeadline();
|
|
567
488
|
const compErrors = this.validatorSupport.getFormValidatorComponentErrors(funcResult);
|
|
568
489
|
summaryErrors.errors.push(...compErrors);
|
|
569
490
|
}
|
|
570
491
|
// sync
|
|
571
492
|
for (const formValidatorFn of formValidatorFns.syncDefs) {
|
|
572
|
-
this.checkDeadline();
|
|
573
493
|
const funcResult = formValidatorFn(recordFormControl);
|
|
574
|
-
this.checkDeadline();
|
|
575
494
|
const compErrors = this.validatorSupport.getFormValidatorComponentErrors(funcResult);
|
|
576
495
|
summaryErrors.errors.push(...compErrors);
|
|
577
496
|
}
|
|
@@ -582,28 +501,12 @@ class ValidatorFormConfigVisitor extends sails_ng_common_1.FormConfigVisitor {
|
|
|
582
501
|
}
|
|
583
502
|
return result;
|
|
584
503
|
}
|
|
585
|
-
isValidatorExclusiveToGroups(availableGroups, validator) {
|
|
586
|
-
if (this.excludedOnlyValidationGroups.length === 0)
|
|
587
|
-
return false;
|
|
588
|
-
// An initial-all group includes ordinary validators by default and can
|
|
589
|
-
// therefore never prove that a validator is advisory-only.
|
|
590
|
-
const excluded = new Set(this.excludedOnlyValidationGroups.filter(groupName => availableGroups[groupName]?.initialMembership !== 'all'));
|
|
591
|
-
if (excluded.size === 0)
|
|
592
|
-
return false;
|
|
593
|
-
const includes = validator?.groups?.include ?? [];
|
|
594
|
-
const excludes = validator?.groups?.exclude ?? [];
|
|
595
|
-
this.validatorSupport.checkValidationGroups(availableGroups, includes);
|
|
596
|
-
this.validatorSupport.checkValidationGroups(availableGroups, excludes);
|
|
597
|
-
const memberships = Object.entries(availableGroups).flatMap(([groupName, groupConfig]) => {
|
|
598
|
-
const membership = groupConfig?.initialMembership ?? 'none';
|
|
599
|
-
const belongs = membership === 'all' ? !excludes.includes(groupName) : includes.includes(groupName);
|
|
600
|
-
return belongs ? [groupName] : [];
|
|
601
|
-
});
|
|
602
|
-
return memberships.length > 0 && memberships.every(groupName => excluded.has(groupName));
|
|
603
|
-
}
|
|
604
504
|
normalizeHtmlForComparison(value) {
|
|
605
|
-
return value
|
|
505
|
+
return value
|
|
506
|
+
.replace(/>\s+</g, '><')
|
|
507
|
+
.replace(/\s+/g, ' ')
|
|
508
|
+
.trim();
|
|
606
509
|
}
|
|
607
510
|
}
|
|
608
511
|
exports.ValidatorFormConfigVisitor = ValidatorFormConfigVisitor;
|
|
609
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnZpc2l0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlzaXRvci92YWxpZGF0b3IudmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzRUFpSDBDO0FBQzFDLDZEQUFrRTtBQUNsRSxtQ0FBaUQ7QUEyQ2pEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxtQ0FBaUI7SUFDdkQsZ0JBQWdCLENBQW9CO0lBRXBDLElBQUksQ0FBb0I7SUFDeEIsdUJBQXVCLENBQVc7SUFDbEMsNEJBQTRCLENBQVc7SUFDdkMsdUJBQXVCLENBQXVDO0lBQzlELHVCQUF1QixDQUEwQztJQUNqRSxhQUFhLENBQWE7SUFDMUIsa0JBQWtCLENBQVU7SUFFNUIsZ0JBQWdCLENBQStCO0lBQy9DLGVBQWUsQ0FBNEI7SUFFM0MsY0FBYyxDQUFpQjtJQUV2QyxZQUFZLE1BQWU7UUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksbUNBQWlCLEVBQUUsQ0FBQztRQUVoRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksNEJBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLDRCQUE0QixHQUFHLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7UUFDMUUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLHFDQUFtQixDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFFaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUUxQixJ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
|
|
512
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnZpc2l0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmlzaXRvci92YWxpZGF0b3IudmlzaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzRUE0RzBDO0FBQzFDLDZEQUFrRTtBQWFsRTs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsMEJBQTJCLFNBQVEsbUNBQWlCO0lBQ3JELGdCQUFnQixDQUFvQjtJQUVwQyxJQUFJLENBQW9CO0lBQ3hCLHVCQUF1QixDQUFXO0lBQ2xDLHVCQUF1QixDQUF1QztJQUU5RCxnQkFBZ0IsQ0FBK0I7SUFFL0MsY0FBYyxDQUFpQjtJQUV2QyxZQUFZLE1BQWU7UUFDdkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksbUNBQWlCLEVBQUUsQ0FBQztRQUVoRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksNEJBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBRTFFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLE9BSVg7UUFFRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUV6Qiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLHVCQUF1QixHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixJQUFJLENBQUMsS0FB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
|