@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
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { Observable } from 'rxjs';
|
|
2
|
-
import { VocabQueryConfig } from '../model/config/VocabQueryConfig';
|
|
3
|
-
import { BrandingModel } from '../model/storage/BrandingModel';
|
|
4
|
-
import { Services as services } from '../CoreService';
|
|
5
|
-
import { AxiosResponse } from 'axios';
|
|
6
|
-
export declare namespace Services {
|
|
7
|
-
type AdditionalInfoRecord = {
|
|
8
|
-
message: string;
|
|
9
|
-
isSuccess: boolean;
|
|
10
|
-
};
|
|
11
|
-
type VocabUserContext = Record<string, unknown> & {
|
|
12
|
-
additionalInfoFound?: AdditionalInfoRecord[];
|
|
13
|
-
additionalAttributes?: Record<string, unknown>;
|
|
14
|
-
name?: string;
|
|
15
|
-
};
|
|
16
|
-
type MintTriggerOptions = {
|
|
17
|
-
sourceType?: string;
|
|
18
|
-
queryString?: string;
|
|
19
|
-
fieldsToMap?: string[];
|
|
20
|
-
};
|
|
21
|
-
type ExternalServiceParams = {
|
|
22
|
-
options: Record<string, unknown>;
|
|
23
|
-
postBody?: unknown;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Vocab related services...
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* Author: <a href='https://github.com/shilob' target='_blank'>Shilo Banihit</a>
|
|
30
|
-
*
|
|
31
|
-
*/
|
|
32
|
-
export class Vocab extends services.Core.Service {
|
|
33
|
-
protected _exportedMethods: string[];
|
|
34
|
-
/** @deprecated Legacy bootstrap flow for deprecated vocab API. */
|
|
35
|
-
bootstrap(): Observable<unknown>;
|
|
36
|
-
/** @deprecated Legacy Mint trigger wrapper. */
|
|
37
|
-
findInMintTriggerWrapper(user: VocabUserContext, options: MintTriggerOptions, failureMode: string): Promise<VocabUserContext>;
|
|
38
|
-
private setSuccessOrFailure;
|
|
39
|
-
/** @deprecated Legacy Mint integration. */
|
|
40
|
-
findInMint(sourceType: string, queryString: string): Promise<Record<string, unknown>>;
|
|
41
|
-
/** @deprecated Legacy record query implementation. */
|
|
42
|
-
findRecords(sourceType: string, brand: BrandingModel, searchString: string, start: number, rows: number, user: VocabUserContext): Promise<Record<string, unknown> | Array<Record<string, unknown>>>;
|
|
43
|
-
buildNamedQueryParamMap(queryConfig: VocabQueryConfig, searchString: string, user: VocabUserContext): Record<string, unknown>;
|
|
44
|
-
private buildSolrParams;
|
|
45
|
-
getResultObjectMappings(results: Record<string, unknown>, queryConfig: VocabQueryConfig): Array<Record<string, unknown>>;
|
|
46
|
-
private getSearchService;
|
|
47
|
-
private runTemplate;
|
|
48
|
-
/** @deprecated Legacy external service proxy. */
|
|
49
|
-
findInExternalService(providerName: string, params: ExternalServiceParams): Promise<Record<string, unknown>>;
|
|
50
|
-
private getTemplateStringFunction;
|
|
51
|
-
/** @deprecated Use VocabularyService.getEntries() or FormVocabularyController endpoints. */
|
|
52
|
-
getVocab: (vocabId: string) => Observable<Array<{
|
|
53
|
-
uri: string;
|
|
54
|
-
notation: string;
|
|
55
|
-
label: string;
|
|
56
|
-
}> | unknown>;
|
|
57
|
-
private getManagedVocabulary;
|
|
58
|
-
protected getConcepts(url: string, rawItems: Array<unknown>): Observable<Array<unknown>>;
|
|
59
|
-
protected getNonAndsVocab(vocabId: string): Observable<AxiosResponse<unknown>>;
|
|
60
|
-
/** @deprecated Managed via Vocabulary admin. */
|
|
61
|
-
loadCollection(collectionId: string, progressId?: string | null, force?: boolean): Observable<Record<string, unknown>[] | null>;
|
|
62
|
-
protected saveCollectionChunk(methodName: string, buffer: unknown, _i: number): Observable<unknown>;
|
|
63
|
-
/** @deprecated Managed via Vocabulary admin. */
|
|
64
|
-
findCollection(collectionId: string, searchString: string): Observable<unknown>;
|
|
65
|
-
/** @deprecated Legacy ANDS/RVA lookup. */
|
|
66
|
-
rvaGetResourceDetails(uri: string, vocab: string): Observable<AxiosResponse<unknown>>;
|
|
67
|
-
protected getMintOptions(url: string, method: string, contentType?: string): {
|
|
68
|
-
method: string;
|
|
69
|
-
url: string;
|
|
70
|
-
headers: {
|
|
71
|
-
Authorization: string;
|
|
72
|
-
'Content-Type': string;
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
export {};
|
|
77
|
-
}
|
|
78
|
-
declare global {
|
|
79
|
-
let VocabService: Services.Vocab;
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=VocabService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VocabService.d.ts","sourceRoot":"","sources":["../../src/services/VocabService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright (c) 2017 Queensland Cyber Infrastructure Foundation (http://www.qcif.edu.au/)
|
|
3
|
-
//
|
|
4
|
-
// GNU GENERAL PUBLIC LICENSE
|
|
5
|
-
// Version 2, June 1991
|
|
6
|
-
//
|
|
7
|
-
// This program is free software; you can redistribute it and/or modify
|
|
8
|
-
// it under the terms of the GNU General Public License as published by
|
|
9
|
-
// the Free Software Foundation; either version 2 of the License, or
|
|
10
|
-
// (at your option) any later version.
|
|
11
|
-
//
|
|
12
|
-
// This program is distributed in the hope that it will be useful,
|
|
13
|
-
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
-
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
-
// GNU General Public License for more details.
|
|
16
|
-
//
|
|
17
|
-
// You should have received a copy of the GNU General Public License along
|
|
18
|
-
// with this program; if not, write to the Free Software Foundation, Inc.,
|
|
19
|
-
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
20
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
21
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
22
|
-
};
|
|
23
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.Services = void 0;
|
|
25
|
-
const rxjs_1 = require("rxjs");
|
|
26
|
-
const operators_1 = require("rxjs/operators");
|
|
27
|
-
const CoreService_1 = require("../CoreService");
|
|
28
|
-
const axios_1 = __importDefault(require("axios"));
|
|
29
|
-
const sails_ng_common_1 = require("@researchdatabox/sails-ng-common");
|
|
30
|
-
var Services;
|
|
31
|
-
(function (Services) {
|
|
32
|
-
/**
|
|
33
|
-
* Vocab related services...
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* Author: <a href='https://github.com/shilob' target='_blank'>Shilo Banihit</a>
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
class Vocab extends CoreService_1.Services.Core.Service {
|
|
40
|
-
_exportedMethods = [
|
|
41
|
-
'bootstrap',
|
|
42
|
-
'getVocab',
|
|
43
|
-
'loadCollection',
|
|
44
|
-
'findCollection',
|
|
45
|
-
'findInMint',
|
|
46
|
-
'findInExternalService',
|
|
47
|
-
'rvaGetResourceDetails',
|
|
48
|
-
'findInMintTriggerWrapper',
|
|
49
|
-
'findRecords'
|
|
50
|
-
];
|
|
51
|
-
/** @deprecated Legacy bootstrap flow for deprecated vocab API. */
|
|
52
|
-
bootstrap() {
|
|
53
|
-
return _.isEmpty(sails.config.vocab.bootStrapVocabs) ?
|
|
54
|
-
(0, rxjs_1.of)(null)
|
|
55
|
-
: (0, rxjs_1.from)(sails.config.vocab.bootStrapVocabs).pipe((0, operators_1.mergeMap)((vocabId) => {
|
|
56
|
-
return this.getVocab(vocabId);
|
|
57
|
-
}), (0, operators_1.last)());
|
|
58
|
-
}
|
|
59
|
-
/** @deprecated Legacy Mint trigger wrapper. */
|
|
60
|
-
async findInMintTriggerWrapper(user, options, failureMode) {
|
|
61
|
-
let additionalInfoFound = _.get(user, 'additionalInfoFound');
|
|
62
|
-
if (!_.isArray(additionalInfoFound)) {
|
|
63
|
-
additionalInfoFound = [];
|
|
64
|
-
}
|
|
65
|
-
try {
|
|
66
|
-
const sourceType = _.get(options, 'sourceType', '');
|
|
67
|
-
const queryStringTmp = _.get(options, 'queryString', '');
|
|
68
|
-
const compiledTemplate = _.template(queryStringTmp, {});
|
|
69
|
-
const fieldsToMap = _.get(options, 'fieldsToMap', []);
|
|
70
|
-
const queryString = compiledTemplate({ user: user });
|
|
71
|
-
const mintResponse = await this.findInMint(sourceType, queryString);
|
|
72
|
-
const responseDocs = _.get(mintResponse, 'response.docs');
|
|
73
|
-
if (_.isArray(responseDocs) && responseDocs.length > 0) {
|
|
74
|
-
for (const fieldName of fieldsToMap) {
|
|
75
|
-
const sourceField = _.get(responseDocs[0], fieldName);
|
|
76
|
-
if (!_.isUndefined(sourceField) && !_.isEmpty(sourceField) && !_.isNull(sourceField)) {
|
|
77
|
-
_.set(user, 'additionalAttributes.' + fieldName, sourceField);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
this.setSuccessOrFailure(user, additionalInfoFound, '', true);
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
this.setSuccessOrFailure(user, additionalInfoFound, failureMode);
|
|
84
|
-
}
|
|
85
|
-
return user;
|
|
86
|
-
}
|
|
87
|
-
catch (err) {
|
|
88
|
-
sails.log.error(`findInMintTriggerWrapper failed to complete. Additional info for user ${_.get(user, 'name')} not found`);
|
|
89
|
-
sails.log.error(err);
|
|
90
|
-
sails.log.error(options);
|
|
91
|
-
this.setSuccessOrFailure(user, additionalInfoFound, failureMode);
|
|
92
|
-
return user;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
setSuccessOrFailure(user, additionalInfoFound, failureMode, forceSuccess = false) {
|
|
96
|
-
if (forceSuccess) {
|
|
97
|
-
const successResponse = {
|
|
98
|
-
message: `Additional info for user ${_.get(user, 'name')} found.`,
|
|
99
|
-
isSuccess: true
|
|
100
|
-
};
|
|
101
|
-
additionalInfoFound.push(successResponse);
|
|
102
|
-
_.set(user, 'additionalInfoFound', additionalInfoFound);
|
|
103
|
-
}
|
|
104
|
-
else if (failureMode == 'continue') {
|
|
105
|
-
const successResponse = {
|
|
106
|
-
message: `Additional info for user ${_.get(user, 'name')} not found. Ignore because failure mode is set to ${failureMode}`,
|
|
107
|
-
isSuccess: true
|
|
108
|
-
};
|
|
109
|
-
additionalInfoFound.push(successResponse);
|
|
110
|
-
_.set(user, 'additionalInfoFound', additionalInfoFound);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
const errorResponse = {
|
|
114
|
-
message: `Additional info for user ${_.get(user, 'name')} not found`,
|
|
115
|
-
isSuccess: false
|
|
116
|
-
};
|
|
117
|
-
additionalInfoFound.push(errorResponse);
|
|
118
|
-
_.set(user, 'additionalInfoFound', additionalInfoFound);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/** @deprecated Legacy Mint integration. */
|
|
122
|
-
async findInMint(sourceType, queryString) {
|
|
123
|
-
queryString = _.trim(queryString);
|
|
124
|
-
let searchString = '';
|
|
125
|
-
if (!_.isEmpty(queryString)) {
|
|
126
|
-
searchString = ` AND (${queryString})`;
|
|
127
|
-
}
|
|
128
|
-
const mintUrl = `${sails.config.record.baseUrl.mint}${sails.config.mint.api.search.url}?q=repository_type:${sourceType}${searchString}&version=2.2&wt=json&start=0`;
|
|
129
|
-
sails.log.info(mintUrl);
|
|
130
|
-
const options = this.getMintOptions(mintUrl, sails.config.record.api.search.method);
|
|
131
|
-
sails.log.verbose(options);
|
|
132
|
-
const response = await (0, axios_1.default)(options);
|
|
133
|
-
return response.data;
|
|
134
|
-
}
|
|
135
|
-
/** @deprecated Legacy record query implementation. */
|
|
136
|
-
async findRecords(sourceType, brand, searchString, start, rows, user) {
|
|
137
|
-
const queryConfig = sails.config.vocab.queries[sourceType];
|
|
138
|
-
if (queryConfig.querySource == 'database') {
|
|
139
|
-
const namedQueryConfig = await NamedQueryService.getNamedQueryConfig(brand, queryConfig.databaseQuery.queryName);
|
|
140
|
-
const paramMap = this.buildNamedQueryParamMap(queryConfig, searchString, user);
|
|
141
|
-
const dbResults = await NamedQueryService.performNamedQueryFromConfig(namedQueryConfig, paramMap, brand, start, rows);
|
|
142
|
-
if (queryConfig.resultObjectMapping) {
|
|
143
|
-
return this.getResultObjectMappings(dbResults, queryConfig);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
return dbResults;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
else if (queryConfig.querySource == 'solr') {
|
|
150
|
-
const solrQuery = this.buildSolrParams(brand, searchString, queryConfig, start, rows, 'json', user);
|
|
151
|
-
const solrResults = await this.getSearchService().searchAdvanced(queryConfig.searchQuery.searchCore, '', solrQuery);
|
|
152
|
-
if (queryConfig.resultObjectMapping) {
|
|
153
|
-
return this.getResultObjectMappings(solrResults, queryConfig);
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
return solrResults;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
return {};
|
|
160
|
-
}
|
|
161
|
-
buildNamedQueryParamMap(queryConfig, searchString, user) {
|
|
162
|
-
const paramMap = {};
|
|
163
|
-
if (queryConfig.queryField.type == 'text') {
|
|
164
|
-
paramMap[queryConfig.queryField.property] = searchString;
|
|
165
|
-
}
|
|
166
|
-
if (queryConfig.userQueryFields != null) {
|
|
167
|
-
for (const userQueryField of queryConfig.userQueryFields) {
|
|
168
|
-
paramMap[userQueryField.property] = _.get(user, userQueryField.userValueProperty, null);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return paramMap;
|
|
172
|
-
}
|
|
173
|
-
buildSolrParams(brand, searchString, queryConfig, start, rows, format = 'json', user) {
|
|
174
|
-
let query = `${queryConfig.searchQuery.baseQuery}&sort=date_object_modified desc&version=2.2&start=${start}&rows=${rows}`;
|
|
175
|
-
query = query + `&fq=metaMetadata_brandId:${brand.id}&wt=${format}`;
|
|
176
|
-
if (queryConfig.queryField.type == 'text') {
|
|
177
|
-
const value = searchString;
|
|
178
|
-
if (!_.isEmpty(value)) {
|
|
179
|
-
const searchProperty = queryConfig.queryField.property;
|
|
180
|
-
query = query + '&fq=' + searchProperty + ':';
|
|
181
|
-
if (value.indexOf('*') != -1) {
|
|
182
|
-
query = query + value.replaceAll('*', '') + '*';
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
query = query + value + '*';
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
if (queryConfig.userQueryFields != null) {
|
|
190
|
-
for (const userQueryField of queryConfig.userQueryFields) {
|
|
191
|
-
const searchProperty = userQueryField.property;
|
|
192
|
-
query = query + '&fq=' + searchProperty + ':' + _.get(user, userQueryField.userValueProperty, null);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
return query;
|
|
196
|
-
}
|
|
197
|
-
getResultObjectMappings(results, queryConfig) {
|
|
198
|
-
let responseRecords = _.get(results, 'response.docs', '');
|
|
199
|
-
if (responseRecords == '') {
|
|
200
|
-
responseRecords = results.records ?? [];
|
|
201
|
-
}
|
|
202
|
-
const response = [];
|
|
203
|
-
const that = this;
|
|
204
|
-
const resultObjectMapping = queryConfig.resultObjectMapping;
|
|
205
|
-
for (const record of responseRecords) {
|
|
206
|
-
try {
|
|
207
|
-
const variables = {
|
|
208
|
-
record: record,
|
|
209
|
-
_: _
|
|
210
|
-
};
|
|
211
|
-
let defaultMetadata = {};
|
|
212
|
-
if (!_.isEmpty(resultObjectMapping)) {
|
|
213
|
-
const resultMetadata = _.cloneDeep(resultObjectMapping);
|
|
214
|
-
_.forOwn(resultObjectMapping, function (value, key) {
|
|
215
|
-
_.set(resultMetadata, key, that.runTemplate(value, variables));
|
|
216
|
-
});
|
|
217
|
-
defaultMetadata = resultMetadata;
|
|
218
|
-
response.push(defaultMetadata);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (_error) {
|
|
222
|
-
//This is required because the records retrieved from the solr index can have different structure and runTemplate method
|
|
223
|
-
//cannot handle this .i.e if there are records type rdmp thar normal rdmp records and there are mock mint records that
|
|
224
|
-
//are also rdmp type when the mock mint records are set to a different record type this should not happen
|
|
225
|
-
continue;
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
return response;
|
|
229
|
-
}
|
|
230
|
-
getSearchService() {
|
|
231
|
-
return sails.services[sails.config.search.serviceName];
|
|
232
|
-
}
|
|
233
|
-
runTemplate(templateOrPath, variables) {
|
|
234
|
-
if (templateOrPath && templateOrPath.indexOf('<%') != -1) {
|
|
235
|
-
return _.template(templateOrPath)(variables);
|
|
236
|
-
}
|
|
237
|
-
return _.get(variables, templateOrPath);
|
|
238
|
-
}
|
|
239
|
-
/** @deprecated Legacy external service proxy. */
|
|
240
|
-
async findInExternalService(providerName, params) {
|
|
241
|
-
const method = sails.config.vocab.external[providerName].method;
|
|
242
|
-
let url = sails.config.vocab.external[providerName].url;
|
|
243
|
-
const templateFunction = this.getTemplateStringFunction(url);
|
|
244
|
-
url = templateFunction(params.options);
|
|
245
|
-
sails.log.info(url);
|
|
246
|
-
const options = sails.config.vocab.external[providerName].options;
|
|
247
|
-
if (method == 'post') {
|
|
248
|
-
const post = {
|
|
249
|
-
method: method,
|
|
250
|
-
url: url,
|
|
251
|
-
data: params.postBody,
|
|
252
|
-
params: options
|
|
253
|
-
};
|
|
254
|
-
sails.log.verbose(post);
|
|
255
|
-
const response = await (0, axios_1.default)(post);
|
|
256
|
-
return response.data;
|
|
257
|
-
}
|
|
258
|
-
else {
|
|
259
|
-
const getSearch = {
|
|
260
|
-
method: method,
|
|
261
|
-
url: url,
|
|
262
|
-
params: options
|
|
263
|
-
};
|
|
264
|
-
sails.log.verbose(getSearch);
|
|
265
|
-
const response = await (0, axios_1.default)(getSearch);
|
|
266
|
-
return response.data;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
getTemplateStringFunction(template) {
|
|
270
|
-
const sanitized = template
|
|
271
|
-
.replace(/\$\{([\s]*[^;\s{]+[\s]*)\}/g, function (_, match) {
|
|
272
|
-
return `\${map.${match.trim()}}`;
|
|
273
|
-
})
|
|
274
|
-
// Afterwards, replace anything that's not ${map.expressions}' (etc) with a blank string.
|
|
275
|
-
.replace(/(\$\{(?!map\.)[^}]+\})/g, '');
|
|
276
|
-
return Function('map', `return \`${sanitized}\``);
|
|
277
|
-
}
|
|
278
|
-
/** @deprecated Use VocabularyService.getEntries() or FormVocabularyController endpoints. */
|
|
279
|
-
getVocab = (vocabId) => {
|
|
280
|
-
// Check cache
|
|
281
|
-
return (0, rxjs_1.from)(CacheService.get(vocabId)).pipe((0, operators_1.mergeMap)(data => {
|
|
282
|
-
if (data) {
|
|
283
|
-
sails.log.verbose(`Returning cached vocab: ${vocabId}`);
|
|
284
|
-
return (0, rxjs_1.of)(data);
|
|
285
|
-
}
|
|
286
|
-
return (0, rxjs_1.from)(this.getManagedVocabulary(vocabId)).pipe((0, operators_1.mergeMap)((managedVocabulary) => {
|
|
287
|
-
if (managedVocabulary) {
|
|
288
|
-
CacheService.set(vocabId, managedVocabulary);
|
|
289
|
-
return (0, rxjs_1.of)(managedVocabulary);
|
|
290
|
-
}
|
|
291
|
-
if (sails.config.vocab.nonAnds && sails.config.vocab.nonAnds[vocabId]) {
|
|
292
|
-
return this.getNonAndsVocab(vocabId);
|
|
293
|
-
}
|
|
294
|
-
const url = `${sails.config.vocab.rootUrl}${vocabId}/${sails.config.vocab.conceptUri}`;
|
|
295
|
-
let items = null; // a flat array containing all the entries
|
|
296
|
-
const rawItems = [];
|
|
297
|
-
return this.getConcepts(url, rawItems).pipe((0, operators_1.mergeMap)(allRawItems => {
|
|
298
|
-
// we only are interested in notation, label and the uri
|
|
299
|
-
items = _.map(allRawItems, (rawItem) => {
|
|
300
|
-
const rawItemObj = rawItem;
|
|
301
|
-
const prefLabel = rawItemObj.prefLabel;
|
|
302
|
-
return { uri: rawItemObj._about, notation: rawItemObj.notation, label: prefLabel?._value ?? '' };
|
|
303
|
-
});
|
|
304
|
-
CacheService.set(vocabId, items);
|
|
305
|
-
return (0, rxjs_1.of)(items);
|
|
306
|
-
}));
|
|
307
|
-
}));
|
|
308
|
-
}));
|
|
309
|
-
};
|
|
310
|
-
async getManagedVocabulary(vocabId) {
|
|
311
|
-
const normalizedId = String(vocabId ?? '').trim();
|
|
312
|
-
if (!normalizedId) {
|
|
313
|
-
return null;
|
|
314
|
-
}
|
|
315
|
-
const vocabulary = await Vocabulary.findOne({
|
|
316
|
-
or: [{ id: normalizedId }, { slug: normalizedId }, { name: normalizedId }]
|
|
317
|
-
});
|
|
318
|
-
if (!vocabulary?.id) {
|
|
319
|
-
return null;
|
|
320
|
-
}
|
|
321
|
-
const entries = await VocabularyEntry
|
|
322
|
-
.find({ vocabulary: vocabulary.id })
|
|
323
|
-
.sort([{ order: "ASC" }, { label: "ASC" }]);
|
|
324
|
-
return entries.map((entry) => ({
|
|
325
|
-
uri: String(entry.identifier ?? entry.value ?? ''),
|
|
326
|
-
notation: String(entry.value ?? ''),
|
|
327
|
-
label: String(entry.label ?? ''),
|
|
328
|
-
historical: (0, sails_ng_common_1.toBoolean)(entry.historical)
|
|
329
|
-
}));
|
|
330
|
-
}
|
|
331
|
-
// have to do this since ANDS endpoint ignores _pageSize
|
|
332
|
-
getConcepts(url, rawItems) {
|
|
333
|
-
console.log(`Getting concepts....${url}`);
|
|
334
|
-
return (0, rxjs_1.from)(axios_1.default.get(url)).pipe((0, operators_1.mergeMap)((resp) => {
|
|
335
|
-
const response = resp.data;
|
|
336
|
-
rawItems = rawItems.concat(response.result?.items ?? []);
|
|
337
|
-
if (response.result && response.result.next) {
|
|
338
|
-
return this.getConcepts(response.result.next, rawItems);
|
|
339
|
-
}
|
|
340
|
-
return (0, rxjs_1.of)(rawItems);
|
|
341
|
-
}));
|
|
342
|
-
}
|
|
343
|
-
getNonAndsVocab(vocabId) {
|
|
344
|
-
const url = sails.config.vocab.nonAnds[vocabId].url;
|
|
345
|
-
return (0, rxjs_1.from)(axios_1.default.get(url)).pipe((0, operators_1.mergeMap)(response => {
|
|
346
|
-
CacheService.set(vocabId, response.data);
|
|
347
|
-
return (0, rxjs_1.of)(response);
|
|
348
|
-
}));
|
|
349
|
-
}
|
|
350
|
-
/** @deprecated Managed via Vocabulary admin. */
|
|
351
|
-
loadCollection(collectionId, progressId = null, force = false) {
|
|
352
|
-
const progressKey = progressId ?? '';
|
|
353
|
-
const getMethod = sails.config.vocab.collection[collectionId].getMethod;
|
|
354
|
-
const bufferCount = sails.config.vocab.collection[collectionId].processingBuffer;
|
|
355
|
-
const processWindow = sails.config.vocab.collection[collectionId].processingTime;
|
|
356
|
-
let collectionData = null;
|
|
357
|
-
return this[getMethod](collectionId).pipe((0, operators_1.mergeMap)((data) => {
|
|
358
|
-
if (_.isEmpty(data) || force) {
|
|
359
|
-
// return a receipt and then start the process of loading...
|
|
360
|
-
const url = sails.config.vocab.collection[collectionId].url;
|
|
361
|
-
sails.log.verbose(`Loading collection: ${collectionId}, using url: ${url}`);
|
|
362
|
-
const methodName = sails.config.vocab.collection[collectionId].saveMethod;
|
|
363
|
-
return (0, rxjs_1.from)(axios_1.default.get(url)).pipe((0, operators_1.mergeMap)(resp => {
|
|
364
|
-
const response = resp.data;
|
|
365
|
-
sails.log.verbose(`Got response retrieving data for collection: ${collectionId}, saving...`);
|
|
366
|
-
sails.log.verbose(`Number of items: ${response.length}`);
|
|
367
|
-
const itemsToSave = _.chunk(response, bufferCount);
|
|
368
|
-
collectionData = itemsToSave;
|
|
369
|
-
// sails.log.verbose(collectionData);
|
|
370
|
-
const updateObj = { currentIdx: 0, targetIdx: (collectionData || []).length };
|
|
371
|
-
return AsynchsService.update({ id: progressKey }, updateObj);
|
|
372
|
-
}), (0, operators_1.mergeMap)(_updateResp => {
|
|
373
|
-
sails.log.verbose(`Updated asynch progress...`);
|
|
374
|
-
return (0, rxjs_1.from)(collectionData || []);
|
|
375
|
-
}), (0, operators_1.concatMap)((buffer, i) => {
|
|
376
|
-
sails.log.verbose(`Processing chunk: ${i}`);
|
|
377
|
-
return (0, rxjs_1.of)(buffer).pipe((0, operators_1.delay)(i * processWindow), (0, operators_1.mergeMap)(() => this.saveCollectionChunk(methodName, buffer, i).pipe((0, operators_1.mergeMap)(_saveResp => {
|
|
378
|
-
sails.log.verbose(`Updating chunk progress...${i}`);
|
|
379
|
-
if (i === (collectionData || []).length - 1) {
|
|
380
|
-
sails.log.verbose(`Asynch completed.`);
|
|
381
|
-
return AsynchsService.finish(progressKey);
|
|
382
|
-
}
|
|
383
|
-
else {
|
|
384
|
-
return AsynchsService.update({ id: progressKey }, { currentIdx: i + 1, status: 'processing' });
|
|
385
|
-
}
|
|
386
|
-
}))));
|
|
387
|
-
}));
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
sails.log.verbose(`Collection already loaded: ${collectionId}`);
|
|
391
|
-
return (0, rxjs_1.of)(null);
|
|
392
|
-
}
|
|
393
|
-
}));
|
|
394
|
-
}
|
|
395
|
-
saveCollectionChunk(methodName, buffer, _i) {
|
|
396
|
-
return this[methodName](buffer);
|
|
397
|
-
}
|
|
398
|
-
/** @deprecated Managed via Vocabulary admin. */
|
|
399
|
-
findCollection(collectionId, searchString) {
|
|
400
|
-
return this[sails.config.vocab.collection[collectionId].searchMethod](searchString);
|
|
401
|
-
}
|
|
402
|
-
/** @deprecated Legacy ANDS/RVA lookup. */
|
|
403
|
-
rvaGetResourceDetails(uri, vocab) {
|
|
404
|
-
const url = sails.config.vocab.rootUrl + `${vocab}/resource.json?uri=${uri}`;
|
|
405
|
-
return (0, rxjs_1.from)(axios_1.default.get(url)).pipe((0, operators_1.mergeMap)(response => {
|
|
406
|
-
CacheService.set(vocab, response.data);
|
|
407
|
-
return (0, rxjs_1.of)(response);
|
|
408
|
-
}));
|
|
409
|
-
}
|
|
410
|
-
getMintOptions(url, method, contentType = 'application/json; charset=utf-8') {
|
|
411
|
-
const opts = {
|
|
412
|
-
method: method,
|
|
413
|
-
url: url,
|
|
414
|
-
headers: {
|
|
415
|
-
'Authorization': `Bearer ${sails.config.mint.apiKey}`,
|
|
416
|
-
'Content-Type': contentType
|
|
417
|
-
}
|
|
418
|
-
};
|
|
419
|
-
return opts;
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
Services.Vocab = Vocab;
|
|
423
|
-
})(Services || (exports.Services = Services = {}));
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVm9jYWJTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL1ZvY2FiU2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEZBQTBGO0FBQzFGLEVBQUU7QUFDRiw2QkFBNkI7QUFDN0IsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRix1RUFBdUU7QUFDdkUsdUVBQXVFO0FBQ3ZFLG9FQUFvRTtBQUNwRSxzQ0FBc0M7QUFDdEMsRUFBRTtBQUNGLGtFQUFrRTtBQUNsRSxpRUFBaUU7QUFDakUsZ0VBQWdFO0FBQ2hFLCtDQUErQztBQUMvQyxFQUFFO0FBQ0YsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSw4REFBOEQ7Ozs7OztBQUU5RCwrQkFBNEM7QUFDNUMsOENBQTZFO0FBSTdFLGdEQUFzRDtBQUN0RCxrREFBNkM7QUFDN0Msc0VBQTJEO0FBRzNELElBQWlCLFFBQVEsQ0FzZHhCO0FBdGRELFdBQWlCLFFBQVE7SUFhdkI7Ozs7OztPQU1HO0lBQ0gsTUFBYSxLQUFNLFNBQVEsc0JBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTztRQUUzQixnQkFBZ0IsR0FBYTtZQUM5QyxXQUFXO1lBQ1gsVUFBVTtZQUNWLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsWUFBWTtZQUNaLHVCQUF1QjtZQUN2Qix1QkFBdUI7WUFDdkIsMEJBQTBCO1lBQzFCLGFBQWE7U0FDZCxDQUFDO1FBRUYsa0VBQWtFO1FBQzNELFNBQVM7WUFDZCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDcEQsSUFBQSxTQUFFLEVBQUMsSUFBSSxDQUFDO2dCQUNSLENBQUMsQ0FBQyxJQUFBLFdBQUksRUFBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUEyQixDQUFDLENBQUMsSUFBSSxDQUN6RCxJQUFBLG9CQUFPLEVBQUMsQ0FBQyxP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
|