@researchdatabox/redbox-core 0.0.1-beta.9228 → 0.0.1-beta.9474
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 +4 -0
- package/dist/CoreController.d.ts.map +1 -1
- package/dist/CoreController.js +33 -1
- package/dist/DatastreamService.d.ts +5 -2
- package/dist/DatastreamService.d.ts.map +1 -1
- package/dist/QueueService.d.ts +1 -1
- package/dist/QueueService.d.ts.map +1 -1
- package/dist/RecordsService.d.ts +38 -2
- package/dist/RecordsService.d.ts.map +1 -1
- package/dist/StorageService.d.ts +2 -1
- package/dist/StorageService.d.ts.map +1 -1
- package/dist/api-routes/apib.d.ts +7 -0
- package/dist/api-routes/apib.d.ts.map +1 -0
- package/dist/api-routes/apib.js +43 -0
- package/dist/api-routes/define.d.ts +4 -0
- package/dist/api-routes/define.d.ts.map +1 -0
- package/dist/api-routes/define.js +29 -0
- package/dist/api-routes/groups/admin.d.ts +6 -0
- package/dist/api-routes/groups/admin.d.ts.map +1 -0
- package/dist/api-routes/groups/admin.js +53 -0
- package/dist/api-routes/groups/appconfig.d.ts +4 -0
- package/dist/api-routes/groups/appconfig.d.ts.map +1 -0
- package/dist/api-routes/groups/appconfig.js +33 -0
- package/dist/api-routes/groups/branding.d.ts +8 -0
- package/dist/api-routes/groups/branding.d.ts.map +1 -0
- package/dist/api-routes/groups/branding.js +61 -0
- package/dist/api-routes/groups/dashboard-config.d.ts +11 -0
- package/dist/api-routes/groups/dashboard-config.d.ts.map +1 -0
- package/dist/api-routes/groups/dashboard-config.js +90 -0
- package/dist/api-routes/groups/export.d.ts +3 -0
- package/dist/api-routes/groups/export.d.ts.map +1 -0
- package/dist/api-routes/groups/export.js +30 -0
- package/dist/api-routes/groups/forms.d.ts +4 -0
- package/dist/api-routes/groups/forms.d.ts.map +1 -0
- package/dist/api-routes/groups/forms.js +29 -0
- package/dist/api-routes/groups/integration-audit.d.ts +3 -0
- package/dist/api-routes/groups/integration-audit.d.ts.map +1 -0
- package/dist/api-routes/groups/integration-audit.js +35 -0
- package/dist/api-routes/groups/notifications.d.ts +3 -0
- package/dist/api-routes/groups/notifications.d.ts.map +1 -0
- package/dist/api-routes/groups/notifications.js +20 -0
- package/dist/api-routes/groups/records.d.ts +28 -0
- package/dist/api-routes/groups/records.d.ts.map +1 -0
- package/dist/api-routes/groups/records.js +349 -0
- package/dist/api-routes/groups/recordtypes.d.ts +4 -0
- package/dist/api-routes/groups/recordtypes.d.ts.map +1 -0
- package/dist/api-routes/groups/recordtypes.js +27 -0
- package/dist/api-routes/groups/reports.d.ts +3 -0
- package/dist/api-routes/groups/reports.d.ts.map +1 -0
- package/dist/api-routes/groups/reports.js +20 -0
- package/dist/api-routes/groups/search-query.d.ts +4 -0
- package/dist/api-routes/groups/search-query.d.ts.map +1 -0
- package/dist/api-routes/groups/search-query.js +51 -0
- package/dist/api-routes/groups/search.d.ts +6 -0
- package/dist/api-routes/groups/search.d.ts.map +1 -0
- package/dist/api-routes/groups/search.js +31 -0
- package/dist/api-routes/groups/translation.d.ts +8 -0
- package/dist/api-routes/groups/translation.d.ts.map +1 -0
- package/dist/api-routes/groups/translation.js +78 -0
- package/dist/api-routes/groups/users.d.ts +17 -0
- package/dist/api-routes/groups/users.d.ts.map +1 -0
- package/dist/api-routes/groups/users.js +149 -0
- package/dist/api-routes/groups/vocabulary.d.ts +10 -0
- package/dist/api-routes/groups/vocabulary.d.ts.map +1 -0
- package/dist/api-routes/groups/vocabulary.js +97 -0
- package/dist/api-routes/helpers.d.ts +29 -0
- package/dist/api-routes/helpers.d.ts.map +1 -0
- package/dist/api-routes/helpers.js +486 -0
- package/dist/api-routes/index.d.ts +25 -0
- package/dist/api-routes/index.d.ts.map +1 -0
- package/dist/api-routes/index.js +41 -0
- package/dist/api-routes/openapi.d.ts +27 -0
- package/dist/api-routes/openapi.d.ts.map +1 -0
- package/dist/api-routes/openapi.js +273 -0
- package/dist/api-routes/request-extraction.d.ts +14 -0
- package/dist/api-routes/request-extraction.d.ts.map +1 -0
- package/dist/api-routes/request-extraction.js +100 -0
- package/dist/api-routes/route-factory.d.ts +3 -0
- package/dist/api-routes/route-factory.d.ts.map +1 -0
- package/dist/api-routes/route-factory.js +30 -0
- package/dist/api-routes/route-registry.d.ts +24 -0
- package/dist/api-routes/route-registry.d.ts.map +1 -0
- package/dist/api-routes/route-registry.js +113 -0
- package/dist/api-routes/route-resolution.d.ts +4 -0
- package/dist/api-routes/route-resolution.d.ts.map +1 -0
- package/dist/api-routes/route-resolution.js +57 -0
- package/dist/api-routes/schemas/common.d.ts +37 -0
- package/dist/api-routes/schemas/common.d.ts.map +1 -0
- package/dist/api-routes/schemas/common.js +147 -0
- package/dist/api-routes/schemas/responses.d.ts +2904 -0
- package/dist/api-routes/schemas/responses.d.ts.map +1 -0
- package/dist/api-routes/schemas/responses.js +417 -0
- package/dist/api-routes/types.d.ts +70 -0
- package/dist/api-routes/types.d.ts.map +1 -0
- package/dist/api-routes/types.js +3 -0
- package/dist/api-routes/validation.d.ts +32 -0
- package/dist/api-routes/validation.d.ts.map +1 -0
- package/dist/api-routes/validation.js +142 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +10 -10
- package/dist/config/agendaQueue.config.d.ts +25 -1
- package/dist/config/agendaQueue.config.d.ts.map +1 -1
- package/dist/config/agendaQueue.config.js +19 -2
- package/dist/config/auth.config.d.ts.map +1 -1
- package/dist/config/auth.config.js +21 -2
- package/dist/config/brandingConfigurationDefaults.config.js +3 -3
- package/dist/config/dashboardtype.config.d.ts +5 -0
- package/dist/config/dashboardtype.config.d.ts.map +1 -1
- package/dist/config/dashboardtype.config.js +1 -1
- package/dist/config/dashboardview.config.d.ts +24 -0
- package/dist/config/dashboardview.config.d.ts.map +1 -0
- package/dist/config/dashboardview.config.js +137 -0
- package/dist/config/dompurify.config.d.ts.map +1 -1
- package/dist/config/dompurify.config.js +2 -2
- package/dist/config/http.config.d.ts.map +1 -1
- package/dist/config/http.config.js +5 -3
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -1
- package/dist/config/namedQuery.config.d.ts +10 -2
- package/dist/config/namedQuery.config.d.ts.map +1 -1
- package/dist/config/namedQuery.config.js +17 -17
- package/dist/config/policies.config.d.ts +3 -0
- package/dist/config/policies.config.d.ts.map +1 -1
- package/dist/config/policies.config.js +35 -1
- package/dist/config/record.config.d.ts.map +1 -1
- package/dist/config/record.config.js +2 -1
- package/dist/config/recordtype.config.d.ts +28 -0
- package/dist/config/recordtype.config.d.ts.map +1 -1
- package/dist/config/recordtype.config.js +85 -9
- package/dist/config/routes.config.d.ts +5 -2
- package/dist/config/routes.config.d.ts.map +1 -1
- package/dist/config/routes.config.js +24 -110
- package/dist/config/storage.config.d.ts +20 -2
- package/dist/config/storage.config.d.ts.map +1 -1
- package/dist/config/storage.config.js +2 -1
- package/dist/config/vocab.config.d.ts +30 -0
- package/dist/config/vocab.config.d.ts.map +1 -1
- package/dist/config/vocab.config.js +21 -1
- package/dist/config/webpack.config.d.ts.map +1 -1
- package/dist/config/webpack.config.js +13 -7
- package/dist/config/workflow.config.d.ts +0 -1
- package/dist/config/workflow.config.d.ts.map +1 -1
- package/dist/config/workflow.config.js +1 -137
- package/dist/configmodels/AdminSidebarConfig.d.ts.map +1 -1
- package/dist/configmodels/AdminSidebarConfig.js +1 -2
- package/dist/configmodels/ConfigModels.d.ts +1 -1
- package/dist/configmodels/ConfigModels.d.ts.map +1 -1
- package/dist/configmodels/ConfigModels.js +9 -1
- package/dist/configmodels/DashboardTableOverrideConfig.d.ts +1011 -0
- package/dist/configmodels/DashboardTableOverrideConfig.d.ts.map +1 -0
- package/dist/configmodels/DashboardTableOverrideConfig.js +138 -0
- package/dist/controllers/AdminController.d.ts +0 -1
- package/dist/controllers/AdminController.d.ts.map +1 -1
- package/dist/controllers/AdminController.js +2 -32
- package/dist/controllers/BrandingController.d.ts +3 -5
- package/dist/controllers/BrandingController.d.ts.map +1 -1
- package/dist/controllers/BrandingController.js +29 -21
- package/dist/controllers/DashboardConfigController.d.ts +8 -0
- package/dist/controllers/DashboardConfigController.d.ts.map +1 -0
- package/dist/controllers/DashboardConfigController.js +17 -0
- package/dist/controllers/DynamicAssetController.d.ts +1 -0
- package/dist/controllers/DynamicAssetController.d.ts.map +1 -1
- package/dist/controllers/DynamicAssetController.js +20 -1
- package/dist/controllers/EmailController.d.ts.map +1 -1
- package/dist/controllers/EmailController.js +16 -12
- package/dist/controllers/FormVocabularyController.d.ts +1 -0
- package/dist/controllers/FormVocabularyController.d.ts.map +1 -1
- package/dist/controllers/FormVocabularyController.js +94 -4
- package/dist/controllers/RecordController.d.ts +18 -1
- package/dist/controllers/RecordController.d.ts.map +1 -1
- package/dist/controllers/RecordController.js +274 -124
- package/dist/controllers/RenderViewController.d.ts.map +1 -1
- package/dist/controllers/RenderViewController.js +4 -2
- package/dist/controllers/TranslationController.d.ts.map +1 -1
- package/dist/controllers/TranslationController.js +3 -2
- package/dist/controllers/WorkspaceTypesController.d.ts +3 -2
- package/dist/controllers/WorkspaceTypesController.d.ts.map +1 -1
- package/dist/controllers/WorkspaceTypesController.js +120 -31
- package/dist/controllers/index.d.ts.map +1 -1
- package/dist/controllers/index.js +7 -4
- package/dist/controllers/webservice/AdminController.d.ts.map +1 -1
- package/dist/controllers/webservice/AdminController.js +15 -16
- package/dist/controllers/webservice/AppConfigController.d.ts.map +1 -1
- package/dist/controllers/webservice/AppConfigController.js +19 -20
- package/dist/controllers/webservice/BrandingController.d.ts.map +1 -1
- package/dist/controllers/webservice/BrandingController.js +101 -48
- package/dist/controllers/webservice/DashboardConfigController.d.ts +26 -0
- package/dist/controllers/webservice/DashboardConfigController.d.ts.map +1 -0
- package/dist/controllers/webservice/DashboardConfigController.js +241 -0
- package/dist/controllers/webservice/ExportController.d.ts.map +1 -1
- package/dist/controllers/webservice/ExportController.js +11 -11
- package/dist/controllers/webservice/FormManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/FormManagementController.js +11 -13
- package/dist/controllers/webservice/RecordController.d.ts +4 -0
- package/dist/controllers/webservice/RecordController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordController.js +428 -257
- package/dist/controllers/webservice/RecordTypeController.d.ts.map +1 -1
- package/dist/controllers/webservice/RecordTypeController.js +9 -10
- package/dist/controllers/webservice/ReportController.d.ts.map +1 -1
- package/dist/controllers/webservice/ReportController.js +18 -20
- package/dist/controllers/webservice/SearchController.d.ts.map +1 -1
- package/dist/controllers/webservice/SearchController.js +28 -35
- package/dist/controllers/webservice/TranslationController.d.ts.map +1 -1
- package/dist/controllers/webservice/TranslationController.js +61 -39
- package/dist/controllers/webservice/UserManagementController.d.ts.map +1 -1
- package/dist/controllers/webservice/UserManagementController.js +112 -99
- package/dist/controllers/webservice/VocabularyController.d.ts.map +1 -1
- package/dist/controllers/webservice/VocabularyController.js +76 -28
- package/dist/hooks/defineRedboxHook.d.ts +3 -0
- package/dist/hooks/defineRedboxHook.d.ts.map +1 -1
- package/dist/hooks/defineRedboxHook.js +4 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/loader/index.d.ts +6 -0
- package/dist/loader/index.d.ts.map +1 -1
- package/dist/loader/index.js +57 -10
- package/dist/middleware/redboxSession.js +1 -1
- package/dist/model/DashboardTypeResponseModel.d.ts +13 -1
- package/dist/model/DashboardTypeResponseModel.d.ts.map +1 -1
- package/dist/model/DashboardTypeResponseModel.js +12 -4
- package/dist/model/DashboardViewResponseModel.d.ts +20 -0
- package/dist/model/DashboardViewResponseModel.d.ts.map +1 -0
- package/dist/model/DashboardViewResponseModel.js +38 -0
- package/dist/model/RecordTypeResponseModel.d.ts +3 -1
- package/dist/model/RecordTypeResponseModel.d.ts.map +1 -1
- package/dist/model/RecordTypeResponseModel.js +4 -2
- package/dist/model/index.d.ts +1 -0
- package/dist/model/index.d.ts.map +1 -1
- package/dist/model/index.js +5 -2
- package/dist/model/storage/BrandingModel.d.ts +0 -16
- package/dist/model/storage/BrandingModel.d.ts.map +1 -1
- package/dist/model/storage/BrandingModel.js +2 -51
- package/dist/model/storage/DashboardTypeModel.d.ts +4 -0
- package/dist/model/storage/DashboardTypeModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.d.ts +16 -0
- package/dist/model/storage/RecordTypeModel.d.ts.map +1 -1
- package/dist/model/storage/RecordTypeModel.js +9 -1
- package/dist/policies/contentSecurityPolicy.d.ts.map +1 -1
- package/dist/policies/contentSecurityPolicy.js +23 -2
- package/dist/policies/index.d.ts +3 -0
- package/dist/policies/index.d.ts.map +1 -1
- package/dist/policies/index.js +6 -2
- package/dist/policies/validateApiContractRequest.d.ts +3 -0
- package/dist/policies/validateApiContractRequest.d.ts.map +1 -0
- package/dist/policies/validateApiContractRequest.js +74 -0
- package/dist/responses/badRequest.d.ts.map +1 -1
- package/dist/responses/badRequest.js +5 -3
- package/dist/responses/created.d.ts.map +1 -1
- package/dist/responses/created.js +5 -3
- package/dist/responses/forbidden.d.ts.map +1 -1
- package/dist/responses/forbidden.js +5 -3
- package/dist/responses/ok.d.ts.map +1 -1
- package/dist/responses/ok.js +5 -3
- package/dist/responses/serverError.d.ts.map +1 -1
- package/dist/responses/serverError.js +5 -3
- package/dist/responses/siteTitle.d.ts +6 -0
- package/dist/responses/siteTitle.d.ts.map +1 -0
- package/dist/responses/siteTitle.js +28 -0
- package/dist/sails.d.ts +7 -0
- package/dist/sails.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.d.ts +38 -17
- package/dist/services/AgendaQueueService.d.ts.map +1 -1
- package/dist/services/AgendaQueueService.js +311 -81
- package/dist/services/AttachmentMetadataService.d.ts +34 -0
- package/dist/services/AttachmentMetadataService.d.ts.map +1 -0
- package/dist/services/AttachmentMetadataService.js +133 -0
- package/dist/services/BrandingLogoService.d.ts +6 -8
- package/dist/services/BrandingLogoService.d.ts.map +1 -1
- package/dist/services/BrandingLogoService.js +66 -72
- package/dist/services/DashboardConfigService.d.ts +71 -0
- package/dist/services/DashboardConfigService.d.ts.map +1 -0
- package/dist/services/DashboardConfigService.js +309 -0
- package/dist/services/DashboardTypesService.d.ts +61 -63
- package/dist/services/DashboardTypesService.d.ts.map +1 -1
- package/dist/services/DashboardTypesService.js +361 -198
- package/dist/services/DoiService.d.ts +11 -0
- package/dist/services/DoiService.d.ts.map +1 -1
- package/dist/services/DoiService.js +206 -1
- package/dist/services/FigshareService.d.ts.map +1 -1
- package/dist/services/FigshareService.js +5 -1
- package/dist/services/FormVocabularyService.d.ts +45 -0
- package/dist/services/FormVocabularyService.d.ts.map +1 -0
- package/dist/services/FormVocabularyService.js +326 -0
- package/dist/services/I18nEntriesService.d.ts +3 -0
- package/dist/services/I18nEntriesService.d.ts.map +1 -1
- package/dist/services/I18nEntriesService.js +14 -2
- package/dist/services/NamedQueryService.d.ts +27 -9
- package/dist/services/NamedQueryService.d.ts.map +1 -1
- package/dist/services/NamedQueryService.js +223 -55
- package/dist/services/RDMPService.d.ts.map +1 -1
- package/dist/services/RDMPService.js +3 -2
- package/dist/services/RecordsService.d.ts +8 -2
- package/dist/services/RecordsService.d.ts.map +1 -1
- package/dist/services/RecordsService.js +64 -16
- package/dist/services/ReportsService.d.ts.map +1 -1
- package/dist/services/ReportsService.js +7 -1
- package/dist/services/StandardDatastreamService.d.ts +32 -5
- package/dist/services/StandardDatastreamService.d.ts.map +1 -1
- package/dist/services/StandardDatastreamService.js +490 -38
- package/dist/services/StorageManagerService.d.ts +12 -1
- package/dist/services/StorageManagerService.d.ts.map +1 -1
- package/dist/services/StorageManagerService.js +72 -7
- package/dist/services/index.d.ts +9 -3
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +17 -7
- package/dist/storage/GridFSDriver.d.ts +101 -0
- package/dist/storage/GridFSDriver.d.ts.map +1 -0
- package/dist/storage/GridFSDriver.js +291 -0
- package/dist/storage/TusStorageManagerDataStore.d.ts +49 -0
- package/dist/storage/TusStorageManagerDataStore.d.ts.map +1 -0
- package/dist/storage/TusStorageManagerDataStore.js +300 -0
- package/dist/visitor/construct.visitor.d.ts.map +1 -1
- package/dist/visitor/construct.visitor.js +6 -3
- package/dist/visitor/migrate-config-v4-v5.visitor.d.ts.map +1 -1
- package/dist/visitor/migrate-config-v4-v5.visitor.js +19 -1
- package/dist/visitor/validator.visitor.d.ts.map +1 -1
- package/dist/visitor/validator.visitor.js +11 -3
- package/dist/waterline-models/AttachmentAccessAudit.d.ts +26 -0
- package/dist/waterline-models/AttachmentAccessAudit.d.ts.map +1 -0
- package/dist/waterline-models/AttachmentAccessAudit.js +63 -0
- package/dist/waterline-models/AttachmentMetadata.d.ts +40 -0
- package/dist/waterline-models/AttachmentMetadata.d.ts.map +1 -0
- package/dist/waterline-models/AttachmentMetadata.js +147 -0
- package/dist/waterline-models/BrandingConfig.d.ts +0 -2
- package/dist/waterline-models/BrandingConfig.d.ts.map +1 -1
- package/dist/waterline-models/BrandingConfig.js +1 -6
- package/dist/waterline-models/DashboardType.d.ts +7 -0
- package/dist/waterline-models/DashboardType.d.ts.map +1 -1
- package/dist/waterline-models/DashboardType.js +16 -1
- package/dist/waterline-models/I18nTranslation.d.ts +2 -0
- package/dist/waterline-models/I18nTranslation.d.ts.map +1 -1
- package/dist/waterline-models/I18nTranslation.js +6 -1
- package/dist/waterline-models/NamedQuery.d.ts +6 -0
- package/dist/waterline-models/NamedQuery.d.ts.map +1 -1
- package/dist/waterline-models/NamedQuery.js +16 -1
- package/dist/waterline-models/index.d.ts +4 -0
- package/dist/waterline-models/index.d.ts.map +1 -1
- package/dist/waterline-models/index.js +7 -1
- package/package.json +31 -21
- package/dist/controllers/VocabController.d.ts +0 -43
- package/dist/controllers/VocabController.d.ts.map +0 -1
- package/dist/controllers/VocabController.js +0 -190
- package/dist/services/VocabService.d.ts +0 -81
- package/dist/services/VocabService.d.ts.map +0 -1
- package/dist/services/VocabService.js +0 -424
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Services = void 0;
|
|
4
|
+
const CoreService_1 = require("../CoreService");
|
|
5
|
+
var Services;
|
|
6
|
+
(function (Services) {
|
|
7
|
+
class AttachmentMetadataService extends CoreService_1.Services.Core.Service {
|
|
8
|
+
_exportedMethods = [
|
|
9
|
+
'upsert',
|
|
10
|
+
'findByOid',
|
|
11
|
+
'findOneByStorageKey',
|
|
12
|
+
'deleteByStorageKey',
|
|
13
|
+
'recordAccess',
|
|
14
|
+
];
|
|
15
|
+
logHeader = 'AttachmentMetadataService::';
|
|
16
|
+
async upsert(row) {
|
|
17
|
+
const storageKey = String(row.storageKey ?? '').trim();
|
|
18
|
+
if (!storageKey) {
|
|
19
|
+
throw new Error('AttachmentMetadataService.upsert requires storageKey');
|
|
20
|
+
}
|
|
21
|
+
const payload = this.normalizeMetadataRow(row);
|
|
22
|
+
const oid = String(payload.oid ?? '').trim();
|
|
23
|
+
const fileId = String(payload.fileId ?? '').trim();
|
|
24
|
+
const existing = await AttachmentMetadata.findOne({ storageKey })
|
|
25
|
+
?? (oid && fileId
|
|
26
|
+
? await AttachmentMetadata.findOne({ oid, fileId })
|
|
27
|
+
: null);
|
|
28
|
+
if (existing?.id) {
|
|
29
|
+
await AttachmentMetadata.updateOne({ id: existing.id }).set(payload);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
await AttachmentMetadata.create(payload).fetch();
|
|
33
|
+
}
|
|
34
|
+
async findByOid(oid) {
|
|
35
|
+
const normalizedOid = String(oid ?? '').trim();
|
|
36
|
+
if (!normalizedOid) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
return await AttachmentMetadata.find({ oid: normalizedOid }).sort([{ createdAt: 'ASC' }]);
|
|
40
|
+
}
|
|
41
|
+
async findOneByStorageKey(storageKey) {
|
|
42
|
+
const normalizedStorageKey = String(storageKey ?? '').trim();
|
|
43
|
+
if (!normalizedStorageKey) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return await AttachmentMetadata.findOne({ storageKey: normalizedStorageKey });
|
|
47
|
+
}
|
|
48
|
+
async deleteByStorageKey(storageKey) {
|
|
49
|
+
const normalizedStorageKey = String(storageKey ?? '').trim();
|
|
50
|
+
if (!normalizedStorageKey) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
await AttachmentMetadata.destroy({ storageKey: normalizedStorageKey });
|
|
54
|
+
}
|
|
55
|
+
async recordAccess(event) {
|
|
56
|
+
try {
|
|
57
|
+
const normalizedEvent = this.normalizeAccessEvent(event);
|
|
58
|
+
if (!normalizedEvent.oid || !normalizedEvent.action) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (normalizedEvent.storageKey && normalizedEvent.action !== 'list') {
|
|
62
|
+
const existing = await AttachmentMetadata.findOne({ storageKey: normalizedEvent.storageKey });
|
|
63
|
+
if (existing?.id) {
|
|
64
|
+
const currentCount = Number(existing.accessCount ?? 0);
|
|
65
|
+
const nextCount = this.shouldIncrementAccessCount(normalizedEvent.action) ? currentCount + 1 : currentCount;
|
|
66
|
+
await AttachmentMetadata.updateOne({ id: existing.id }).set({
|
|
67
|
+
lastAccessedAt: normalizedEvent.accessedAt,
|
|
68
|
+
lastAccessedBy: normalizedEvent.accessedBy,
|
|
69
|
+
accessCount: nextCount,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
await AttachmentAccessAudit.create(normalizedEvent).fetch();
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
this.logger.error(`${this.logHeader} recordAccess() failed`, err);
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
shouldIncrementAccessCount(action) {
|
|
81
|
+
return action === 'download' || action === 'access';
|
|
82
|
+
}
|
|
83
|
+
normalizeMetadataRow(row) {
|
|
84
|
+
return {
|
|
85
|
+
oid: String(row.oid ?? '').trim(),
|
|
86
|
+
fileId: String(row.fileId ?? '').trim(),
|
|
87
|
+
storageKey: String(row.storageKey ?? '').trim(),
|
|
88
|
+
contentType: this.optionalString(row.contentType),
|
|
89
|
+
contentLength: this.optionalNumber(row.contentLength),
|
|
90
|
+
etag: this.optionalString(row.etag),
|
|
91
|
+
lastModified: this.optionalDateString(row.lastModified),
|
|
92
|
+
filename: this.optionalString(row.filename),
|
|
93
|
+
mimeType: this.optionalString(row.mimeType),
|
|
94
|
+
uploadedBy: this.optionalString(row.uploadedBy),
|
|
95
|
+
attachmentField: this.optionalString(row.attachmentField),
|
|
96
|
+
lastAccessedAt: this.optionalDateString(row.lastAccessedAt),
|
|
97
|
+
lastAccessedBy: this.optionalString(row.lastAccessedBy),
|
|
98
|
+
accessCount: this.optionalNumber(row.accessCount) ?? 0,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
normalizeAccessEvent(event) {
|
|
102
|
+
return {
|
|
103
|
+
oid: String(event.oid ?? '').trim(),
|
|
104
|
+
fileId: this.optionalString(event.fileId),
|
|
105
|
+
storageKey: this.optionalString(event.storageKey),
|
|
106
|
+
action: String(event.action ?? '').trim(),
|
|
107
|
+
accessedBy: this.optionalString(event.accessedBy),
|
|
108
|
+
accessedAt: new Date().toISOString(),
|
|
109
|
+
itemCount: this.optionalNumber(event.itemCount),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
optionalString(value) {
|
|
113
|
+
const normalized = String(value ?? '').trim();
|
|
114
|
+
return normalized ? normalized : undefined;
|
|
115
|
+
}
|
|
116
|
+
optionalNumber(value) {
|
|
117
|
+
if (value === null || value === undefined || value === '') {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
const normalized = Number(value);
|
|
121
|
+
return Number.isFinite(normalized) ? normalized : undefined;
|
|
122
|
+
}
|
|
123
|
+
optionalDateString(value) {
|
|
124
|
+
if (!value) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const normalizedDate = new Date(value);
|
|
128
|
+
return Number.isNaN(normalizedDate.getTime()) ? undefined : normalizedDate.toISOString();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
Services.AttachmentMetadataService = AttachmentMetadataService;
|
|
132
|
+
})(Services || (exports.Services = Services = {}));
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0YWNobWVudE1ldGFkYXRhU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9BdHRhY2htZW50TWV0YWRhdGFTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGdEQUFzRDtBQUd0RCxJQUFpQixRQUFRLENBdUp4QjtBQXZKRCxXQUFpQixRQUFRO0lBYXZCLE1BQWEseUJBQTBCLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUMvQyxnQkFBZ0IsR0FBYTtZQUM5QyxRQUFRO1lBQ1IsV0FBVztZQUNYLHFCQUFxQjtZQUNyQixvQkFBb0I7WUFDcEIsY0FBYztTQUNmLENBQUM7UUFFaUIsU0FBUyxHQUFXLDZCQUE2QixDQUFDO1FBRTlELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBNEI7WUFDOUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUF3QzttQkFDbkcsQ0FBQyxHQUFHLElBQUksTUFBTTtvQkFDZixDQUFDLENBQUMs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
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { Services as coreServices } from '../CoreService';
|
|
2
2
|
export declare namespace Services {
|
|
3
3
|
class BrandingLogo extends coreServices.Core.Service {
|
|
4
|
-
/**
|
|
5
|
-
private cachedBucket;
|
|
6
|
-
/** In-memory placeholder storage keyed by gridFsId. */
|
|
4
|
+
/** In-memory placeholder storage keyed by storage identifier. */
|
|
7
5
|
private _binaryById;
|
|
8
6
|
private getCacheTtlMs;
|
|
9
7
|
private pruneExpiredEntries;
|
|
10
8
|
private setCache;
|
|
11
9
|
private getFromCache;
|
|
12
|
-
|
|
13
|
-
private
|
|
10
|
+
private isStorageNotFoundError;
|
|
11
|
+
private isLegacyGridFsObjectId;
|
|
12
|
+
private logoStorageKey;
|
|
14
13
|
getMaxBytes(): number;
|
|
15
14
|
allowedContentTypes: Set<string>;
|
|
16
15
|
/** Basic SVG detection */
|
|
@@ -23,7 +22,6 @@ export declare namespace Services {
|
|
|
23
22
|
warnings?: string[];
|
|
24
23
|
finalContentType?: string;
|
|
25
24
|
}>;
|
|
26
|
-
/** Write logo to storage (GridFS) and update BrandingConfig.logo metadata */
|
|
27
25
|
putLogo(opts: {
|
|
28
26
|
branding: string;
|
|
29
27
|
portal: string;
|
|
@@ -32,13 +30,13 @@ export declare namespace Services {
|
|
|
32
30
|
}): Promise<{
|
|
33
31
|
hash: string;
|
|
34
32
|
gridFsId: string;
|
|
33
|
+
storageKey: string;
|
|
35
34
|
contentType: string;
|
|
36
35
|
updatedAt: string;
|
|
37
36
|
}>;
|
|
38
|
-
/** Retrieve stored binary (interim). */
|
|
39
37
|
getBinary(id: string): Buffer | null;
|
|
40
|
-
/** Retrieve stored binary from persistent storage (GridFS) if available. */
|
|
41
38
|
getBinaryAsync(id: string): Promise<Buffer | null>;
|
|
39
|
+
private getLegacyGridFsBinary;
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
42
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrandingLogoService.d.ts","sourceRoot":"","sources":["../../src/services/BrandingLogoService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"BrandingLogoService.d.ts","sourceRoot":"","sources":["../../src/services/BrandingLogoService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqB1D,yBAAiB,QAAQ,CAAC;IACxB,MACa,YAAa,SAAQ,YAAY,CAAC,IAAI,CAAC,OAAO;QACzD,iEAAiE;QACjE,OAAO,CAAC,WAAW,CAA4D;QAE/E,OAAO,CAAC,aAAa;QASrB,OAAO,CAAC,mBAAmB;QAS3B,OAAO,CAAC,QAAQ;QAKhB,OAAO,CAAC,YAAY;QAUpB,OAAO,CAAC,sBAAsB;QAc9B,OAAO,CAAC,sBAAsB;QAI9B,OAAO,CAAC,cAAc;QAKtB,WAAW,IAAI,MAAM;QAIrB,mBAAmB,cAIhB;QAEH,0BAA0B;QAC1B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;QAMjC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAAE,CAAC;QA6ClM,OAAO,CAAC,IAAI,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;SAAE,GAAG,OAAO,CAAC;YAC3G,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;YACnB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;QAwBF,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;QAI9B,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;gBAoB1C,qBAAqB;KA6BpC;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,mBAAmB,EAAE,QAAQ,CAAC,YAAY,CAAC;CAChD"}
|
|
@@ -14,18 +14,13 @@ const CoreService_1 = require("../CoreService");
|
|
|
14
14
|
const PopulateExportedMethods_decorator_1 = require("../decorator/PopulateExportedMethods.decorator");
|
|
15
15
|
const crypto_1 = __importDefault(require("crypto"));
|
|
16
16
|
const mongodb_1 = require("mongodb");
|
|
17
|
-
// Using skipper-gridfs adapter pattern like BrandingController
|
|
18
|
-
// We'll lazily require to avoid circular load issues.
|
|
19
17
|
var Services;
|
|
20
18
|
(function (Services) {
|
|
21
19
|
let BrandingLogo = class BrandingLogo extends CoreService_1.Services.Core.Service {
|
|
22
|
-
/**
|
|
23
|
-
cachedBucket = null;
|
|
24
|
-
/** In-memory placeholder storage keyed by gridFsId. */
|
|
20
|
+
/** In-memory placeholder storage keyed by storage identifier. */
|
|
25
21
|
_binaryById = {};
|
|
26
22
|
getCacheTtlMs() {
|
|
27
23
|
const DEFAULT_LOGO_CACHE_TTL_MS = 24 * 60 * 60 * 1000;
|
|
28
|
-
// defaults to 1 day
|
|
29
24
|
const configured = _.get(sails, 'config.branding.logoCacheTtlMs', DEFAULT_LOGO_CACHE_TTL_MS);
|
|
30
25
|
if (typeof configured === 'number' && configured > 0) {
|
|
31
26
|
return configured;
|
|
@@ -54,25 +49,24 @@ var Services;
|
|
|
54
49
|
}
|
|
55
50
|
return entry.buffer;
|
|
56
51
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
52
|
+
isStorageNotFoundError(err) {
|
|
53
|
+
if (!err || typeof err !== 'object') {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const storageError = err;
|
|
57
|
+
const message = storageError.message?.toLowerCase() ?? '';
|
|
58
|
+
return storageError.code === 'ENOENT'
|
|
59
|
+
|| storageError.status === 404
|
|
60
|
+
|| storageError.statusCode === 404
|
|
61
|
+
|| message.includes('not found')
|
|
62
|
+
|| message.includes('enoent');
|
|
63
|
+
}
|
|
64
|
+
isLegacyGridFsObjectId(id) {
|
|
65
|
+
return /^[0-9a-fA-F]{24}$/.test(id);
|
|
66
|
+
}
|
|
67
|
+
logoStorageKey(branding, portal, contentType) {
|
|
68
|
+
const ext = contentType === 'image/png' ? 'png' : contentType === 'image/jpeg' ? 'jpg' : 'svg';
|
|
69
|
+
return `${branding}/${portal}/images/logo.${ext}`;
|
|
76
70
|
}
|
|
77
71
|
getMaxBytes() {
|
|
78
72
|
return _.get(sails, 'config.branding.logoMaxBytes', 512 * 1024);
|
|
@@ -113,7 +107,6 @@ var Services;
|
|
|
113
107
|
let outBuffer = fileBuf;
|
|
114
108
|
let finalCt = contentType;
|
|
115
109
|
if (this.isSvg(fileBuf, contentType)) {
|
|
116
|
-
// Sanitize SVG using existing service
|
|
117
110
|
const svg = fileBuf.toString('utf8');
|
|
118
111
|
const result = await DomSanitizerService.sanitize(svg);
|
|
119
112
|
if (!result.safe) {
|
|
@@ -129,7 +122,6 @@ var Services;
|
|
|
129
122
|
const sha256 = crypto_1.default.createHash('sha256').update(outBuffer).digest('hex');
|
|
130
123
|
return { ok: true, sha256, sanitizedBuffer: outBuffer, warnings, finalContentType: finalCt };
|
|
131
124
|
}
|
|
132
|
-
/** Write logo to storage (GridFS) and update BrandingConfig.logo metadata */
|
|
133
125
|
async putLogo(opts) {
|
|
134
126
|
const brand = await BrandingConfig.findOne({ name: opts.branding });
|
|
135
127
|
if (!brand)
|
|
@@ -139,69 +131,71 @@ var Services;
|
|
|
139
131
|
if (!ok)
|
|
140
132
|
throw new Error('logo-invalid: ' + errorList.join(','));
|
|
141
133
|
const resolvedContentType = finalContentType ?? opts.contentType;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
try {
|
|
153
|
-
await bucket.delete(f._id);
|
|
154
|
-
}
|
|
155
|
-
catch (_e) { /* noop */ }
|
|
156
|
-
}
|
|
157
|
-
await new Promise((resolve, reject) => {
|
|
158
|
-
const up = bucket.openUploadStream(gridFsId, { metadata: { contentType: finalContentType } });
|
|
159
|
-
up.on('error', reject);
|
|
160
|
-
up.on('finish', () => resolve());
|
|
161
|
-
up.end(sanitizedBuffer);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch (e) {
|
|
166
|
-
sails.log.warn('BrandingLogoService.putLogo GridFS write failed:', e);
|
|
167
|
-
}
|
|
168
|
-
// Update in-memory cache and config metadata
|
|
169
|
-
this.setCache(gridFsId, sanitizedBuffer);
|
|
170
|
-
const meta = { gridFsId, sha256, contentType: resolvedContentType, updatedAt: new Date().toISOString() };
|
|
134
|
+
const storageKey = this.logoStorageKey(opts.branding, opts.portal, resolvedContentType);
|
|
135
|
+
await StorageManagerService.primaryDisk().put(storageKey, sanitizedBuffer, { contentType: resolvedContentType });
|
|
136
|
+
this.setCache(storageKey, sanitizedBuffer);
|
|
137
|
+
const meta = {
|
|
138
|
+
gridFsId: storageKey,
|
|
139
|
+
storageKey,
|
|
140
|
+
sha256,
|
|
141
|
+
contentType: resolvedContentType,
|
|
142
|
+
updatedAt: new Date().toISOString(),
|
|
143
|
+
};
|
|
171
144
|
await BrandingConfig.update({ id: brand.id }, { logo: meta });
|
|
172
|
-
return { hash: sha256, gridFsId, contentType: resolvedContentType, updatedAt: meta.updatedAt };
|
|
145
|
+
return { hash: sha256, gridFsId: storageKey, storageKey, contentType: resolvedContentType, updatedAt: meta.updatedAt };
|
|
173
146
|
}
|
|
174
|
-
/** Retrieve stored binary (interim). */
|
|
175
147
|
getBinary(id) {
|
|
176
148
|
return this.getFromCache(id);
|
|
177
149
|
}
|
|
178
|
-
/** Retrieve stored binary from persistent storage (GridFS) if available. */
|
|
179
150
|
async getBinaryAsync(id) {
|
|
180
|
-
// Prefer in-memory cache first
|
|
181
151
|
const mem = this.getFromCache(id);
|
|
182
152
|
if (mem)
|
|
183
153
|
return mem;
|
|
184
154
|
try {
|
|
185
|
-
const
|
|
186
|
-
|
|
187
|
-
|
|
155
|
+
const bytes = await StorageManagerService.primaryDisk().getBytes(id);
|
|
156
|
+
const buf = Buffer.from(bytes);
|
|
157
|
+
this.setCache(id, buf);
|
|
158
|
+
return buf;
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
if (!this.isStorageNotFoundError(error)) {
|
|
162
|
+
sails.log.warn('BrandingLogoService.getBinaryAsync storage read failed:', error);
|
|
163
|
+
}
|
|
164
|
+
if (this.isLegacyGridFsObjectId(id)) {
|
|
165
|
+
return this.getLegacyGridFsBinary(id);
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async getLegacyGridFsBinary(id) {
|
|
171
|
+
const datastores = sails.config?.datastores;
|
|
172
|
+
const url = datastores?.mongodb?.url;
|
|
173
|
+
if (!url) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const client = await mongodb_1.MongoClient.connect(url, {});
|
|
177
|
+
try {
|
|
178
|
+
const bucket = new mongodb_1.GridFSBucket(client.db(), { bucketName: 'fs' });
|
|
188
179
|
const chunks = [];
|
|
189
180
|
await new Promise((resolve, reject) => {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
181
|
+
bucket.openDownloadStream(new mongodb_1.ObjectId(id))
|
|
182
|
+
.on('data', (chunk) => chunks.push(Buffer.from(chunk)))
|
|
183
|
+
.on('error', reject)
|
|
184
|
+
.on('end', resolve);
|
|
194
185
|
});
|
|
195
|
-
if (chunks.length === 0)
|
|
196
|
-
return null;
|
|
197
186
|
const buf = Buffer.concat(chunks);
|
|
198
|
-
// Populate cache for subsequent reads
|
|
199
187
|
this.setCache(id, buf);
|
|
200
188
|
return buf;
|
|
201
189
|
}
|
|
202
|
-
catch (
|
|
190
|
+
catch (error) {
|
|
191
|
+
if (!this.isStorageNotFoundError(error)) {
|
|
192
|
+
sails.log.warn('BrandingLogoService.getLegacyGridFsBinary read failed:', error);
|
|
193
|
+
}
|
|
203
194
|
return null;
|
|
204
195
|
}
|
|
196
|
+
finally {
|
|
197
|
+
await client.close();
|
|
198
|
+
}
|
|
205
199
|
}
|
|
206
200
|
};
|
|
207
201
|
BrandingLogo = __decorate([
|
|
@@ -209,4 +203,4 @@ var Services;
|
|
|
209
203
|
], BrandingLogo);
|
|
210
204
|
Services.BrandingLogo = BrandingLogo;
|
|
211
205
|
})(Services || (exports.Services = Services = {}));
|
|
212
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJhbmRpbmdMb2dvU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9CcmFuZGluZ0xvZ29TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwRDtBQUMxRCxzR0FBeUY7QUFDekYsb0RBQTRCO0FBQzVCLHFDQUEyQztBQWlCM0MsK0RBQStEO0FBQy9ELHNEQUFzRDtBQUl0RCxJQUFpQixRQUFRLENBME14QjtBQTFNRCxXQUFpQixRQUFRO0lBRXZCLElBQWEsWUFBWSxHQUF6QixNQUFhLFlBQWEsU0FBUSxzQkFBWSxDQUFDLElBQUksQ0FBQyxPQUFPO1FBRXpELDZEQUE2RDtRQUNyRCxZQUFZLEdBQXdCLElBQUksQ0FBQztRQUVqRCx1REFBdUQ7UUFDL0MsV0FBVyxHQUF5RCxFQUFFLENBQUM7UUFFdkUsYUFBYTtZQUNuQixNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN0RCxvQkFBb0I7WUFDcEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZ0NBQWdDLEVBQUcseUJBQXlCLENBQUMsQ0FBQztZQUM5RixJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sVUFBVSxDQUFDO1lBQ3BCLENBQUM7WUFDRCxPQUFPLHlCQUF5QixDQUFDO1FBQ25DLENBQUM7UUFFTyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDakMsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JB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
|
|
206
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJhbmRpbmdMb2dvU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9CcmFuZGluZ0xvZ29TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGdEQUEwRDtBQUMxRCxzR0FBeUY7QUFDekYsb0RBQTRCO0FBQzVCLHFDQUE4RDtBQWtCOUQsSUFBaUIsUUFBUSxDQWdOeEI7QUFoTkQsV0FBaUIsUUFBUTtJQUV2QixJQUFhLFlBQVksR0FBekIsTUFBYSxZQUFhLFNBQVEsc0JBQVksQ0FBQyxJQUFJLENBQUMsT0FBTztRQUN6RCxpRUFBaUU7UUFDekQsV0FBVyxHQUF5RCxFQUFFLENBQUM7UUFFdkUsYUFBYTtZQUNuQixNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN0RCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdGLElBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDckQsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztZQUNELE9BQU8seUJBQXlCLENBQUM7UUFDbkMsQ0FBQztRQUVPLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqQyxLQUFLLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxJQUFJLENBQUMsV0FB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
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Services as services } from '../CoreService';
|
|
2
|
+
import { BrandingModel } from '../model/storage/BrandingModel';
|
|
3
|
+
import type { DashboardTableConfig, DashboardFormatRules } from '../config/workflow.config';
|
|
4
|
+
import type { DashboardTableOverrideConfigData, WorkflowStateDashboardConfig } from '../configmodels/DashboardTableOverrideConfig';
|
|
5
|
+
type DashboardTypeDefinition = {
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
searchable?: boolean;
|
|
9
|
+
system?: boolean;
|
|
10
|
+
formatRules?: DashboardFormatRules;
|
|
11
|
+
tableConfig?: DashboardTableConfig;
|
|
12
|
+
};
|
|
13
|
+
export declare namespace Services {
|
|
14
|
+
interface DashboardConfigInfo {
|
|
15
|
+
recordTypes: Array<{
|
|
16
|
+
name: string;
|
|
17
|
+
steps: string[];
|
|
18
|
+
}>;
|
|
19
|
+
views: Array<{
|
|
20
|
+
name: string;
|
|
21
|
+
steps: string[];
|
|
22
|
+
}>;
|
|
23
|
+
dashboardTypes: DashboardTypeDefinition[];
|
|
24
|
+
}
|
|
25
|
+
interface MergedDashboardConfigResult {
|
|
26
|
+
dashboardType: string;
|
|
27
|
+
inheritedTypeConfig: DashboardTableConfig;
|
|
28
|
+
workflowConfig: DashboardTableConfig | null;
|
|
29
|
+
overrideConfig: DashboardTableConfig | null;
|
|
30
|
+
mergedConfig: DashboardTableConfig;
|
|
31
|
+
formatRules: DashboardFormatRules;
|
|
32
|
+
}
|
|
33
|
+
class DashboardConfig extends services.Core.Service {
|
|
34
|
+
protected _exportedMethods: string[];
|
|
35
|
+
bootstrap(): Promise<void>;
|
|
36
|
+
getDefaultDashboardTableConfig(): DashboardTableConfig;
|
|
37
|
+
private normalizeTableConfig;
|
|
38
|
+
private normalizeDashboardTypeDefinition;
|
|
39
|
+
private normalizeOverrides;
|
|
40
|
+
private mergeTableConfigs;
|
|
41
|
+
private getDashboardTypeDefinitionForBrand;
|
|
42
|
+
getDashboardConfigInfo(brand: BrandingModel): Promise<DashboardConfigInfo>;
|
|
43
|
+
getDashboardOverrides(brand: BrandingModel): Promise<DashboardTableOverrideConfigData>;
|
|
44
|
+
saveDashboardOverrides(brand: BrandingModel, overrides: DashboardTableOverrideConfigData): Promise<DashboardTableOverrideConfigData>;
|
|
45
|
+
private getWorkflowStateConfig;
|
|
46
|
+
private getViewStateConfig;
|
|
47
|
+
getWorkflowStateDashboardConfig(brand: BrandingModel, recordType: string, workflowStage: string): Promise<WorkflowStateDashboardConfig | null>;
|
|
48
|
+
saveWorkflowStateDashboardConfig(brand: BrandingModel, recordType: string, workflowStage: string, config: WorkflowStateDashboardConfig): Promise<DashboardTableOverrideConfigData>;
|
|
49
|
+
getDashboardViewStepConfig(brand: BrandingModel, viewName: string, stepName: string): Promise<WorkflowStateDashboardConfig | null>;
|
|
50
|
+
saveDashboardViewStepConfig(brand: BrandingModel, viewName: string, stepName: string, config: WorkflowStateDashboardConfig): Promise<DashboardTableOverrideConfigData>;
|
|
51
|
+
getEffectiveDashboardType(brand: BrandingModel, context: {
|
|
52
|
+
kind: 'recordType';
|
|
53
|
+
recordType: string;
|
|
54
|
+
workflowStage: string;
|
|
55
|
+
fallbackDashboardType?: string;
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'view';
|
|
58
|
+
viewName: string;
|
|
59
|
+
stepName: string;
|
|
60
|
+
fallbackDashboardType?: string;
|
|
61
|
+
}): Promise<string>;
|
|
62
|
+
getMergedDashboardTableConfig(brand: BrandingModel, recordType: string, workflowStage: string, fallbackDashboardType?: string): Promise<MergedDashboardConfigResult | null>;
|
|
63
|
+
getMergedDashboardViewTableConfig(brand: BrandingModel, viewName: string, stepName: string, fallbackDashboardType?: string): Promise<MergedDashboardConfigResult | null>;
|
|
64
|
+
getMergedDashboardTypeFormatRules(brand: BrandingModel, dashboardType: string): Promise<DashboardFormatRules | null>;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
declare global {
|
|
68
|
+
let DashboardConfigService: Services.DashboardConfig;
|
|
69
|
+
}
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=DashboardConfigService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardConfigService.d.ts","sourceRoot":"","sources":["../../src/services/DashboardConfigService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,KAAK,EACV,gCAAgC,EAGhC,4BAA4B,EAC7B,MAAM,8CAA8C,CAAC;AAEtD,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC,CAAC;AAEF,yBAAiB,QAAQ,CAAC;IACxB,UAAiB,mBAAmB;QAClC,WAAW,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QACtD,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QAChD,cAAc,EAAE,uBAAuB,EAAE,CAAC;KAC3C;IAED,UAAiB,2BAA2B;QAC1C,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,oBAAoB,CAAC;QAC1C,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;QAC5C,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;QAC5C,YAAY,EAAE,oBAAoB,CAAC;QACnC,WAAW,EAAE,oBAAoB,CAAC;KACnC;IAED,MAAa,eAAgB,SAAQ,QAAQ,CAAC,IAAI,CAAC,OAAO;QACxD,UAAmB,gBAAgB,EAAE,MAAM,EAAE,CAc3C;QAEW,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;QAIhC,8BAA8B,IAAI,oBAAoB;QA4C7D,OAAO,CAAC,oBAAoB;QAI5B,OAAO,CAAC,gCAAgC;QAcxC,OAAO,CAAC,kBAAkB;QAO1B,OAAO,CAAC,iBAAiB;gBAQX,kCAAkC;QA6BnC,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,mBAAmB,CAAC;QA6B1E,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,gCAAgC,CAAC;QAQtF,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,gCAAgC,GAAG,OAAO,CAAC,gCAAgC,CAAC;QAMjJ,OAAO,CAAC,sBAAsB;QAK9B,OAAO,CAAC,kBAAkB;QAKb,+BAA+B,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAK9I,gCAAgC,CAC3C,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,gCAAgC,CAAC;QAsB/B,0BAA0B,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAKlI,2BAA2B,CACtC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,gCAAgC,CAAC;QAsB/B,yBAAyB,CACpC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE;YAAE,IAAI,EAAE,YAAY,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;SAAE,GAChM,OAAO,CAAC,MAAM,CAAC;QAcL,6BAA6B,CACxC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,qBAAqB,GAAE,MAAmB,GACzC,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;QAkDjC,iCAAiC,CAC5C,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,qBAAqB,GAAE,MAAmB,GACzC,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;QA+CjC,iCAAiC,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;KAIlI;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,sBAAsB,EAAE,QAAQ,CAAC,eAAe,CAAC;CACtD"}
|