geonetwork-ui 2.4.0-dev.344a92f2 → 2.4.0-dev.3b6b95eb
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/esm2022/libs/api/metadata-converter/src/index.mjs +4 -1
- package/esm2022/libs/api/metadata-converter/src/lib/common/license.mjs +64 -0
- package/esm2022/libs/api/metadata-converter/src/lib/common/url.mjs +14 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.mjs +254 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/index.mjs +2 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.mjs +17 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.mjs +196 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.mjs +46 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.mjs +74 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.mjs +2 -0
- package/esm2022/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.mjs +27 -0
- package/esm2022/libs/api/metadata-converter/src/lib/find-converter.mjs +11 -1
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +8 -23
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +3 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +27 -37
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +35 -3
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +78 -39
- package/esm2022/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.mjs +34 -26
- package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/platform.service.interface.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/catalog/src/lib/feature-catalog.module.mjs +7 -4
- package/esm2022/libs/feature/catalog/src/lib/organisations/organisations.component.mjs +6 -6
- package/esm2022/libs/feature/dataviz/src/lib/feature-dataviz.module.mjs +10 -7
- package/esm2022/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.mjs +40 -50
- package/esm2022/libs/feature/editor/src/index.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/+state/editor.effects.mjs +5 -5
- package/esm2022/libs/feature/editor/src/lib/components/contact-card/contact-card.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/import-record/import-record.component.mjs +95 -0
- package/esm2022/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.mjs +72 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.mjs +109 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.mjs +9 -8
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.mjs +38 -60
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.mjs +10 -7
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.mjs +191 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +5 -4
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +10 -6
- package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +17 -3
- package/esm2022/libs/feature/editor/src/lib/services/editor.service.mjs +5 -5
- package/esm2022/libs/feature/map/src/index.mjs +2 -9
- package/esm2022/libs/feature/map/src/lib/+state/map.actions.mjs +4 -7
- package/esm2022/libs/feature/map/src/lib/+state/map.facade.mjs +9 -15
- package/esm2022/libs/feature/map/src/lib/+state/map.reducer.mjs +13 -44
- package/esm2022/libs/feature/map/src/lib/+state/map.selectors.mjs +3 -2
- package/esm2022/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.mjs +15 -15
- package/esm2022/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.mjs +16 -10
- package/esm2022/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.mjs +10 -8
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.mjs +11 -7
- package/esm2022/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.mjs +10 -6
- package/esm2022/libs/feature/map/src/lib/constant/index.mjs +1 -2
- package/esm2022/libs/feature/map/src/lib/feature-map.module.mjs +4 -44
- package/esm2022/libs/feature/map/src/lib/geocoding/geocoding.component.mjs +43 -29
- package/esm2022/libs/feature/map/src/lib/layers-panel/layers-panel.component.mjs +17 -8
- package/esm2022/libs/feature/map/src/lib/map-state-container/map-state-container.component.mjs +27 -0
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +4 -168
- package/esm2022/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.mjs +21 -17
- package/esm2022/libs/feature/record/src/lib/feature-record.module.mjs +14 -8
- package/esm2022/libs/feature/record/src/lib/map-view/map-view.component.mjs +40 -52
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +11 -6
- package/esm2022/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.mjs +7 -7
- package/esm2022/libs/ui/catalog/src/lib/ui-catalog.module.mjs +1 -6
- package/esm2022/libs/ui/inputs/src/index.mjs +2 -1
- package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +3 -3
- package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/lib/search-input/search-input.component.mjs +6 -4
- package/esm2022/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.mjs +5 -3
- package/esm2022/libs/ui/inputs/src/lib/ui-inputs.module.mjs +2 -7
- package/esm2022/libs/ui/inputs/src/lib/url-input/url-input.component.mjs +20 -4
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +3 -3
- package/esm2022/libs/ui/map/src/index.mjs +4 -3
- package/esm2022/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.mjs +8 -6
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-container.component.mjs +137 -0
- package/esm2022/libs/ui/map/src/lib/components/map-container/map-settings.token.mjs +13 -0
- package/esm2022/libs/ui/map/src/lib/map-utils.mjs +37 -0
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +3 -3
- package/esm2022/libs/util/app-config/src/index.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
- package/esm2022/libs/util/shared/src/lib/utils/index.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/no-duplicate-file-name.mjs +19 -0
- package/esm2022/translations/de.json +19 -0
- package/esm2022/translations/en.json +51 -32
- package/esm2022/translations/es.json +19 -0
- package/esm2022/translations/fr.json +82 -63
- package/esm2022/translations/it.json +19 -0
- package/esm2022/translations/nl.json +19 -0
- package/esm2022/translations/pt.json +19 -0
- package/fesm2022/geonetwork-ui.mjs +6871 -6029
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +3 -0
- package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/common/license.d.ts +3 -0
- package/libs/api/metadata-converter/src/lib/common/license.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/common/url.d.ts +7 -0
- package/libs/api/metadata-converter/src/lib/common/url.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts +13 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/index.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts +16 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts +20 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts +9 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts +8 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts +2 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts +6 -0
- package/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/find-converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +0 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +4 -6
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +58 -0
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +12 -7
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts +2 -15
- package/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts +1 -1
- package/libs/common/domain/src/lib/model/record/contact.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +2 -3
- package/libs/common/domain/src/lib/platform.service.interface.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +7 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts +2 -1
- package/libs/feature/catalog/src/lib/feature-catalog.module.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts +10 -9
- package/libs/feature/dataviz/src/lib/feature-dataviz.module.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts +13 -20
- package/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.d.ts.map +1 -1
- package/libs/feature/editor/src/index.d.ts +1 -0
- package/libs/feature/editor/src/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/+state/editor.effects.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts +34 -0
- package/libs/feature/editor/src/lib/components/import-record/import-record.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts +16 -0
- package/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts +38 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts +6 -13
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts +44 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +2 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/services/editor.service.d.ts +2 -2
- package/libs/feature/editor/src/lib/services/editor.service.d.ts.map +1 -1
- package/libs/feature/map/src/index.d.ts +1 -8
- package/libs/feature/map/src/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/+state/map.actions.d.ts +13 -39
- package/libs/feature/map/src/lib/+state/map.actions.d.ts.map +1 -1
- package/libs/feature/map/src/lib/+state/map.facade.d.ts +9 -10
- package/libs/feature/map/src/lib/+state/map.facade.d.ts.map +1 -1
- package/libs/feature/map/src/lib/+state/map.reducer.d.ts +4 -2
- package/libs/feature/map/src/lib/+state/map.reducer.d.ts.map +1 -1
- package/libs/feature/map/src/lib/+state/map.selectors.d.ts +6 -1
- package/libs/feature/map/src/lib/+state/map.selectors.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts +3 -5
- package/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts +2 -2
- package/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts +1 -1
- package/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts +1 -1
- package/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/constant/index.d.ts +0 -1
- package/libs/feature/map/src/lib/constant/index.d.ts.map +1 -1
- package/libs/feature/map/src/lib/feature-map.module.d.ts +12 -18
- package/libs/feature/map/src/lib/feature-map.module.d.ts.map +1 -1
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts +7 -7
- package/libs/feature/map/src/lib/geocoding/geocoding.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts +4 -3
- package/libs/feature/map/src/lib/layers-panel/layers-panel.component.d.ts.map +1 -1
- package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts +14 -0
- package/libs/feature/map/src/lib/map-state-container/map-state-container.component.d.ts.map +1 -0
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts +0 -30
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +8 -5
- package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/feature-record.module.d.ts +13 -11
- package/libs/feature/record/src/lib/feature-record.module.d.ts.map +1 -1
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts +13 -19
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +4 -3
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts +1 -1
- package/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.d.ts.map +1 -1
- package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts +9 -10
- package/libs/ui/catalog/src/lib/ui-catalog.module.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
- package/libs/ui/inputs/src/index.d.ts +1 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/search-input/search-input.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts +1 -0
- package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts +25 -26
- package/libs/ui/inputs/src/lib/ui-inputs.module.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts +6 -3
- package/libs/ui/inputs/src/lib/url-input/url-input.component.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/interactive-table/interactive-table-column/interactive-table-column.component.d.ts +1 -1
- package/libs/ui/map/src/index.d.ts +3 -2
- package/libs/ui/map/src/index.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts +3 -4
- package/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.d.ts.map +1 -1
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts +37 -0
- package/libs/ui/map/src/lib/components/map-container/map-container.component.d.ts.map +1 -0
- package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts +18 -0
- package/libs/ui/map/src/lib/components/map-container/map-settings.token.d.ts.map +1 -0
- package/libs/ui/map/src/lib/map-utils.d.ts +7 -0
- package/libs/ui/map/src/lib/map-utils.d.ts.map +1 -0
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +1 -1
- package/libs/util/app-config/src/index.d.ts +1 -0
- package/libs/util/app-config/src/index.d.ts.map +1 -1
- package/libs/util/app-config/src/lib/map-layers.d.ts +4 -0
- package/libs/util/app-config/src/lib/map-layers.d.ts.map +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts +1 -0
- package/libs/util/shared/src/lib/utils/index.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts +2 -0
- package/libs/util/shared/src/lib/utils/no-duplicate-file-name.d.ts.map +1 -0
- package/package.json +5 -3
- package/src/libs/api/metadata-converter/src/index.ts +3 -0
- package/src/libs/api/metadata-converter/src/lib/common/license.ts +66 -0
- package/src/libs/api/metadata-converter/src/lib/common/url.ts +15 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/dcat-ap.converter.ts +378 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/index.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/namespaces.ts +17 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/read-parts.ts +370 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/graph-utils.ts +95 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/individual-name.ts +20 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/keyword.mapper.ts +16 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/role.mapper.ts +48 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/serialize-to-xml.ts +97 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/status.mapper.ts +19 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/update-frequency.mapper.ts +67 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/utils/uri.ts +1 -0
- package/src/libs/api/metadata-converter/src/lib/dcat-ap/write-parts.ts +68 -0
- package/src/libs/api/metadata-converter/src/lib/find-converter.ts +13 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/eu.dcat-ap.records.ts +272 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/opendataswiss.records.ts +110 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/sextant.records.ts +85 -0
- package/src/libs/api/metadata-converter/src/lib/fixtures/vlaanderen.dcat-ap.records.ts +73 -0
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +1 -2
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +7 -35
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +1 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +85 -120
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +37 -2
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +132 -68
- package/src/libs/api/repository/src/lib/gn4/platform/gn4-platform.service.ts +57 -30
- package/src/libs/common/domain/src/lib/model/record/contact.model.ts +1 -1
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +2 -2
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
- package/src/libs/common/fixtures/src/index.ts +3 -0
- package/src/libs/common/fixtures/src/lib/individual.fixtures.ts +61 -0
- package/src/libs/common/fixtures/src/lib/map/index.ts +1 -0
- package/src/libs/common/fixtures/src/lib/map/map-context.fixtures.ts +53 -0
- package/src/libs/common/fixtures/src/lib/user.fixtures.ts +13 -0
- package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -1
- package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +6 -2
- package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.html +5 -2
- package/src/libs/feature/dataviz/src/lib/geo-table-view/geo-table-view.component.ts +38 -78
- package/src/libs/feature/editor/src/index.ts +1 -0
- package/src/libs/feature/editor/src/lib/+state/editor.effects.ts +11 -4
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.html +47 -0
- package/src/libs/feature/editor/src/lib/components/import-record/import-record.component.ts +132 -0
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.html +31 -0
- package/src/libs/feature/editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.ts +82 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.html +40 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.ts +170 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.html +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +6 -8
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.html +1 -4
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-map-container/form-field-map-container.component.ts +41 -83
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.html +20 -11
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +9 -5
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.html +71 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-resources/form-field-online-resources.component.ts +241 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +4 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.ts +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +15 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +7 -3
- package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
- package/src/libs/feature/editor/src/lib/fields.config.ts +18 -2
- package/src/libs/feature/editor/src/lib/services/editor.service.ts +7 -3
- package/src/libs/feature/map/src/index.ts +1 -8
- package/src/libs/feature/map/src/lib/+state/map.actions.ts +10 -25
- package/src/libs/feature/map/src/lib/+state/map.facade.ts +11 -15
- package/src/libs/feature/map/src/lib/+state/map.reducer.ts +16 -53
- package/src/libs/feature/map/src/lib/+state/map.selectors.ts +7 -2
- package/src/libs/feature/map/src/lib/add-layer-from-catalog/add-layer-record-preview/add-layer-record-preview.component.ts +12 -15
- package/src/libs/feature/map/src/lib/add-layer-from-file/add-layer-from-file.component.ts +17 -11
- package/src/libs/feature/map/src/lib/add-layer-from-ogc-api/add-layer-from-ogc-api.component.ts +11 -12
- package/src/libs/feature/map/src/lib/add-layer-from-wfs/add-layer-from-wfs.component.ts +12 -10
- package/src/libs/feature/map/src/lib/add-layer-from-wms/add-layer-from-wms.component.ts +11 -9
- package/src/libs/feature/map/src/lib/constant/index.ts +0 -1
- package/src/libs/feature/map/src/lib/feature-map.module.ts +0 -26
- package/src/libs/feature/map/src/lib/geocoding/geocoding.component.ts +38 -20
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.html +2 -2
- package/src/libs/feature/map/src/lib/layers-panel/layers-panel.component.ts +15 -5
- package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.css +0 -0
- package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.html +4 -0
- package/src/libs/feature/map/src/lib/map-state-container/map-state-container.component.ts +29 -0
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -229
- package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +27 -18
- package/src/libs/feature/record/src/lib/feature-record.module.ts +11 -3
- package/src/libs/feature/record/src/lib/map-view/map-view.component.html +4 -4
- package/src/libs/feature/record/src/lib/map-view/map-view.component.ts +44 -71
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +1 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +4 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +4 -2
- package/src/libs/ui/catalog/src/lib/organisations-filter/organisations-filter.component.ts +8 -1
- package/src/libs/ui/catalog/src/lib/ui-catalog.module.ts +0 -3
- package/src/libs/ui/inputs/src/index.ts +1 -0
- package/src/libs/ui/inputs/src/lib/badge/badge.component.html +1 -2
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +2 -1
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +2 -1
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +8 -8
- package/src/libs/ui/inputs/src/lib/search-input/search-input.component.ts +5 -1
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +3 -1
- package/src/libs/ui/inputs/src/lib/ui-inputs.module.ts +0 -3
- package/src/libs/ui/inputs/src/lib/url-input/url-input.component.html +5 -1
- package/src/libs/ui/inputs/src/lib/url-input/url-input.component.ts +25 -2
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.css +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +2 -2
- package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +1 -1
- package/src/libs/ui/map/src/index.ts +3 -2
- package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.html +1 -1
- package/src/libs/ui/map/src/lib/components/feature-detail/feature-detail.component.ts +8 -5
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.css +0 -0
- package/src/libs/ui/map/src/lib/components/map-container/map-container.component.ts +203 -0
- package/src/libs/ui/map/src/lib/components/map-container/map-settings.token.ts +23 -0
- package/src/libs/ui/map/src/lib/map-utils.ts +54 -0
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +18 -14
- package/src/libs/util/app-config/src/index.ts +1 -0
- package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
- package/src/libs/util/shared/src/lib/utils/index.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/no-duplicate-file-name.ts +23 -0
- package/tailwind.base.css +3 -2
- package/translations/de.json +19 -0
- package/translations/en.json +51 -32
- package/translations/es.json +19 -0
- package/translations/fr.json +82 -63
- package/translations/it.json +19 -0
- package/translations/nl.json +19 -0
- package/translations/pt.json +19 -0
- package/translations/sk.json +19 -0
- package/esm2022/libs/feature/map/src/lib/+state/map.effects.mjs +0 -15
- package/esm2022/libs/feature/map/src/lib/+state/map.models.mjs +0 -2
- package/esm2022/libs/feature/map/src/lib/constant/map-options.mjs +0 -8
- package/esm2022/libs/feature/map/src/lib/constant/style.constant.mjs +0 -17
- package/esm2022/libs/feature/map/src/lib/feature-info/feature-info.service.mjs +0 -38
- package/esm2022/libs/feature/map/src/lib/manager/map-instance.directive.mjs +0 -19
- package/esm2022/libs/feature/map/src/lib/manager/map-manager.service.mjs +0 -19
- package/esm2022/libs/feature/map/src/lib/map-container/map-container.component.mjs +0 -27
- package/esm2022/libs/feature/map/src/lib/map-context/component/map-context.component.mjs +0 -46
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.model.mjs +0 -10
- package/esm2022/libs/feature/map/src/lib/map-context/map-context.service.mjs +0 -289
- package/esm2022/libs/ui/map/src/lib/components/map/map.component.mjs +0 -40
- package/esm2022/libs/ui/map/src/lib/ui-map.module.mjs +0 -33
- package/libs/feature/map/src/lib/+state/map.effects.d.ts +0 -9
- package/libs/feature/map/src/lib/+state/map.effects.d.ts.map +0 -1
- package/libs/feature/map/src/lib/+state/map.models.d.ts +0 -9
- package/libs/feature/map/src/lib/+state/map.models.d.ts.map +0 -1
- package/libs/feature/map/src/lib/constant/map-options.d.ts +0 -9
- package/libs/feature/map/src/lib/constant/map-options.d.ts.map +0 -1
- package/libs/feature/map/src/lib/constant/style.constant.d.ts +0 -4
- package/libs/feature/map/src/lib/constant/style.constant.d.ts.map +0 -1
- package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts +0 -16
- package/libs/feature/map/src/lib/feature-info/feature-info.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts +0 -9
- package/libs/feature/map/src/lib/manager/map-instance.directive.d.ts.map +0 -1
- package/libs/feature/map/src/lib/manager/map-manager.service.d.ts +0 -11
- package/libs/feature/map/src/lib/manager/map-manager.service.d.ts.map +0 -1
- package/libs/feature/map/src/lib/map-container/map-container.component.d.ts +0 -12
- package/libs/feature/map/src/lib/map-container/map-container.component.d.ts.map +0 -1
- package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts +0 -26
- package/libs/feature/map/src/lib/map-context/component/map-context.component.d.ts.map +0 -1
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts +0 -77
- package/libs/feature/map/src/lib/map-context/map-context.model.d.ts.map +0 -1
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts +0 -26
- package/libs/feature/map/src/lib/map-context/map-context.service.d.ts.map +0 -1
- package/libs/ui/map/src/lib/components/map/map.component.d.ts +0 -19
- package/libs/ui/map/src/lib/components/map/map.component.d.ts.map +0 -1
- package/libs/ui/map/src/lib/ui-map.module.d.ts +0 -13
- package/libs/ui/map/src/lib/ui-map.module.d.ts.map +0 -1
- package/src/libs/feature/map/src/lib/+state/map.effects.ts +0 -7
- package/src/libs/feature/map/src/lib/+state/map.models.ts +0 -9
- package/src/libs/feature/map/src/lib/constant/map-options.ts +0 -17
- package/src/libs/feature/map/src/lib/feature-info/feature-info.service.ts +0 -42
- package/src/libs/feature/map/src/lib/manager/map-instance.directive.ts +0 -10
- package/src/libs/feature/map/src/lib/manager/map-manager.service.ts +0 -13
- package/src/libs/feature/map/src/lib/map-container/map-container.component.html +0 -1
- package/src/libs/feature/map/src/lib/map-container/map-container.component.ts +0 -26
- package/src/libs/feature/map/src/lib/map-context/component/map-context.component.html +0 -1
- package/src/libs/feature/map/src/lib/map-context/component/map-context.component.ts +0 -57
- package/src/libs/feature/map/src/lib/map-context/map-context.fixtures.ts +0 -55
- package/src/libs/feature/map/src/lib/map-context/map-context.model.ts +0 -95
- package/src/libs/feature/map/src/lib/map-context/map-context.service.ts +0 -318
- package/src/libs/ui/map/src/lib/components/map/map.component.ts +0 -57
- package/src/libs/ui/map/src/lib/ui-map.module.ts +0 -19
- /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/import-record/import-record.component.css} +0 -0
- /package/src/libs/feature/{map/src/lib/map-context/component/map-context.component.css → editor/src/lib/components/online-service-resource-input/online-service-resource-input.component.css} +0 -0
- /package/src/libs/{ui/map/src/lib/components/map/map.component.css → feature/editor/src/lib/components/record-form/form-field/form-field-contacts/form-field-contacts.component.css} +0 -0
- /package/src/libs/ui/map/src/lib/components/{map/map.component.html → map-container/map-container.component.html} +0 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { DCAT, DCTERMS, FOAF, LOCN, RDF, SKOS, VCARD } from './namespaces';
|
|
2
|
+
import { findNodeLocalized } from './utils/graph-utils';
|
|
3
|
+
import { getAsValidUrl } from '../common/url';
|
|
4
|
+
import { fullNameToParts } from '../iso19139/utils/individual-name';
|
|
5
|
+
import { readLicenseFromString } from '../common/license';
|
|
6
|
+
import { matchProtocol } from '../common/distribution.mapper';
|
|
7
|
+
function getDataset(dataStore, recordNode) {
|
|
8
|
+
return (dataStore.the(recordNode, FOAF('primaryTopic'), null) ||
|
|
9
|
+
dataStore.the(null, RDF('type'), DCAT('Dataset')));
|
|
10
|
+
}
|
|
11
|
+
export function readUniqueIdentifier(dataStore, recordNode) {
|
|
12
|
+
return dataStore.the(recordNode, DCTERMS('identifier'), null)?.value;
|
|
13
|
+
}
|
|
14
|
+
export function readTitle(dataStore, recordNode) {
|
|
15
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
16
|
+
return findNodeLocalized(dataStore, dataset, DCTERMS('title'), null, 'en')
|
|
17
|
+
?.value;
|
|
18
|
+
}
|
|
19
|
+
export function readAbstract(dataStore, recordNode) {
|
|
20
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
21
|
+
return findNodeLocalized(dataStore, dataset, DCTERMS('description'), null, 'en')?.value;
|
|
22
|
+
}
|
|
23
|
+
function mapContactFromStatement(dataStore, statement) {
|
|
24
|
+
const contactNode = statement.object;
|
|
25
|
+
const fullName = dataStore.the(contactNode, VCARD('fn'), null) ??
|
|
26
|
+
dataStore.the(contactNode, VCARD('title'), null) ??
|
|
27
|
+
dataStore.the(contactNode, VCARD('organisation-name'), null);
|
|
28
|
+
let firstName, lastName;
|
|
29
|
+
if (fullName) {
|
|
30
|
+
const parts = fullNameToParts(fullName.value);
|
|
31
|
+
firstName = parts[0];
|
|
32
|
+
lastName = parts[1];
|
|
33
|
+
}
|
|
34
|
+
const role = dataStore.the(contactNode, VCARD('role'), null);
|
|
35
|
+
const email = dataStore.the(contactNode, VCARD('hasEmail'), null);
|
|
36
|
+
const emailValue = email
|
|
37
|
+
? email.value.replace(/^mailto:/, '')
|
|
38
|
+
: 'missing@missing.com';
|
|
39
|
+
return {
|
|
40
|
+
role: role?.value ?? 'point_of_contact',
|
|
41
|
+
email: emailValue,
|
|
42
|
+
...(firstName && { firstName }),
|
|
43
|
+
...(lastName && { lastName }),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function readContacts(dataStore, recordNode) {
|
|
47
|
+
const statements = dataStore.statementsMatching(recordNode, DCAT('contactPoint'), null);
|
|
48
|
+
return statements.map((s) => mapContactFromStatement(dataStore, s));
|
|
49
|
+
}
|
|
50
|
+
export function readContactsForResource(dataStore, recordNode) {
|
|
51
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
52
|
+
const statements = dataStore.statementsMatching(dataset, DCAT('contactPoint'), null);
|
|
53
|
+
return statements.map((s) => mapContactFromStatement(dataStore, s));
|
|
54
|
+
}
|
|
55
|
+
export function readLandingPage(dataStore, recordNode) {
|
|
56
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
57
|
+
const landingPage = dataStore.the(dataset, DCAT('landingPage'), null);
|
|
58
|
+
return landingPage !== null ? getAsValidUrl(landingPage.value) : undefined;
|
|
59
|
+
}
|
|
60
|
+
function readOnlineLinkResource(dataStore, distributionNode) {
|
|
61
|
+
const accessUrl = dataStore.the(distributionNode, DCAT('accessURL'), null);
|
|
62
|
+
const description = findNodeLocalized(dataStore, distributionNode, DCTERMS('description'), null, 'en');
|
|
63
|
+
const title = findNodeLocalized(dataStore, distributionNode, DCTERMS('title'), null, 'en');
|
|
64
|
+
return {
|
|
65
|
+
url: getAsValidUrl(accessUrl?.value),
|
|
66
|
+
type: 'link',
|
|
67
|
+
...(title && { name: title?.value }),
|
|
68
|
+
...(description && { description: description?.value }),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function readDownloadDistribution(dataStore, distributionNode) {
|
|
72
|
+
const downloadUrl = dataStore.the(distributionNode, DCAT('downloadURL'), null);
|
|
73
|
+
const description = findNodeLocalized(dataStore, distributionNode, DCTERMS('description'), null, 'en');
|
|
74
|
+
const title = findNodeLocalized(dataStore, distributionNode, DCTERMS('title'), null, 'en');
|
|
75
|
+
// todo mime type
|
|
76
|
+
return {
|
|
77
|
+
url: getAsValidUrl(downloadUrl?.value),
|
|
78
|
+
type: 'download',
|
|
79
|
+
...(title && { name: title?.value }),
|
|
80
|
+
...(description && { description: description?.value }),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function readServiceDistribution(dataStore, distributionNode) {
|
|
84
|
+
const service = dataStore.the(distributionNode, DCAT('accessService'), null);
|
|
85
|
+
const conformsTo = dataStore.the(service, DCTERMS('conformsTo'), null);
|
|
86
|
+
const accessUrl = dataStore.the(distributionNode, DCAT('accessURL'), null);
|
|
87
|
+
const description = findNodeLocalized(dataStore, distributionNode, DCTERMS('description'), null, 'en');
|
|
88
|
+
const title = findNodeLocalized(dataStore, distributionNode, DCTERMS('title'), null, 'en');
|
|
89
|
+
return {
|
|
90
|
+
url: getAsValidUrl(accessUrl?.value),
|
|
91
|
+
type: 'service',
|
|
92
|
+
accessServiceProtocol: matchProtocol(conformsTo?.value),
|
|
93
|
+
...(title && { name: title?.value }),
|
|
94
|
+
...(description && { description: description?.value }),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export function mapOnlineResource(dataStore, distributionNode) {
|
|
98
|
+
if (dataStore.holds(distributionNode, DCAT('accessService'), null)) {
|
|
99
|
+
const service = dataStore.the(distributionNode, DCAT('accessService'), null);
|
|
100
|
+
const conformsTo = dataStore.the(service, DCTERMS('conformsTo'), null);
|
|
101
|
+
if (conformsTo) {
|
|
102
|
+
return readServiceDistribution(dataStore, distributionNode);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (dataStore.holds(distributionNode, DCAT('downloadURL'), null)) {
|
|
106
|
+
return readDownloadDistribution(dataStore, distributionNode);
|
|
107
|
+
}
|
|
108
|
+
return readOnlineLinkResource(dataStore, distributionNode);
|
|
109
|
+
}
|
|
110
|
+
export function readOnlineResources(dataStore, recordNode) {
|
|
111
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
112
|
+
const statements = dataStore.statementsMatching(dataset, DCAT('distribution'), null);
|
|
113
|
+
return statements.map((statement) => mapOnlineResource(dataStore, statement.object));
|
|
114
|
+
}
|
|
115
|
+
export function readSpatialExtents(dataStore, recordNode) {
|
|
116
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
117
|
+
const statements = dataStore.statementsMatching(dataset, DCTERMS('spatial'), null);
|
|
118
|
+
return statements
|
|
119
|
+
.map((statement) => {
|
|
120
|
+
const geom = dataStore.the(statement.object, LOCN('geometry'), null);
|
|
121
|
+
if (!geom)
|
|
122
|
+
return {
|
|
123
|
+
description: statement.object.value,
|
|
124
|
+
};
|
|
125
|
+
return {
|
|
126
|
+
geometry: JSON.parse(geom.value),
|
|
127
|
+
};
|
|
128
|
+
})
|
|
129
|
+
.filter((statement) => !!statement);
|
|
130
|
+
}
|
|
131
|
+
export function readKeywords(dataStore, recordNode) {
|
|
132
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
133
|
+
const statements = dataStore.statementsMatching(dataset, DCAT('keyword'), null);
|
|
134
|
+
return statements.map((statement) => {
|
|
135
|
+
return {
|
|
136
|
+
label: statement.object.value,
|
|
137
|
+
type: 'theme',
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
export function readTopics(dataStore, recordNode) {
|
|
142
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
143
|
+
const statements = dataStore.statementsMatching(dataset, DCAT('theme'), null);
|
|
144
|
+
return statements.map((statement) => {
|
|
145
|
+
const prefLabel = dataStore.the(statement.object, SKOS('prefLabel'), null);
|
|
146
|
+
return prefLabel?.value ?? statement.object.value;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
export function readRecordCreated(dataStore, recordNode) {
|
|
150
|
+
const dateString = dataStore.the(recordNode, DCTERMS('issued'), null)?.value;
|
|
151
|
+
if (dateString)
|
|
152
|
+
return new Date(dateString);
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
export function readRecordUpdated(dataStore, recordNode) {
|
|
156
|
+
const dateString = dataStore.the(recordNode, DCTERMS('modified'), null)?.value;
|
|
157
|
+
if (dateString)
|
|
158
|
+
return new Date(dateString);
|
|
159
|
+
return new Date(); // record updated is a mandatory field
|
|
160
|
+
}
|
|
161
|
+
export function readResourceCreated(dataStore, recordNode) {
|
|
162
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
163
|
+
const dateString = dataStore.the(dataset, DCTERMS('issued'), null)?.value;
|
|
164
|
+
if (dateString)
|
|
165
|
+
return new Date(dateString);
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
export function readResourceUpdated(dataStore, recordNode) {
|
|
169
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
170
|
+
const dateString = dataStore.the(dataset, DCTERMS('modified'), null)?.value;
|
|
171
|
+
if (dateString)
|
|
172
|
+
return new Date(dateString);
|
|
173
|
+
return null;
|
|
174
|
+
}
|
|
175
|
+
export function readOwnerOrganization(dataStore) {
|
|
176
|
+
const publisherStatements = dataStore.statementsMatching(null, DCTERMS('publisher'), null);
|
|
177
|
+
if (!publisherStatements.length)
|
|
178
|
+
return null;
|
|
179
|
+
const publisher = publisherStatements[0].object;
|
|
180
|
+
const nameNode = dataStore.the(publisher, FOAF('name'), null);
|
|
181
|
+
const name = nameNode ? nameNode.value : publisher.value;
|
|
182
|
+
return {
|
|
183
|
+
name,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export function readLicenses(dataStore, recordNode) {
|
|
187
|
+
const dataset = getDataset(dataStore, recordNode);
|
|
188
|
+
const distributions = dataStore.statementsMatching(dataset, DCAT('distribution'), null);
|
|
189
|
+
return distributions
|
|
190
|
+
.map((statement) => dataStore.the(statement.object, DCTERMS('license'), null))
|
|
191
|
+
.filter((license) => !!license)
|
|
192
|
+
.map((s) => readLicenseFromString(s.value))
|
|
193
|
+
.filter((license, index, array) => array.findIndex((l) => l.url?.toString() === license.url?.toString() &&
|
|
194
|
+
l.text === license.text) === index);
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZC1wYXJ0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2RjYXQtYXAvcmVhZC1wYXJ0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBV3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQTtBQUU3RCxTQUFTLFVBQVUsQ0FBQyxTQUFnQixFQUFFLFVBQXFCO0lBQ3pELE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzNELFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBYyxDQUFBO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLFNBQWdCLEVBQ2hCLFVBQXFCO0lBRXJCLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQTtBQUN0RSxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxTQUFnQixFQUFFLFVB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LFVBQXFCO0lBQ2xFLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDakQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixDQUNoRCxPQUFPLEVBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUNwQixJQUFJLENBQ0wsQ0FBQTtJQUNELE9BQU8sYUFBYTtTQUNqQixHQUFHLENBQ0YsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxHQUFHLENBQ1gsU0FBUyxDQUFDLE1BQW1CLEVBQzdCLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDbEIsSUFBSSxDQUNRLENBQ2pCO1NBQ0EsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1NBQzlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFDLE1BQU0sQ0FDTCxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FDeEIsS0FBSyxDQUFDLFNBQVMsQ0FDYixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRTtRQUM3QyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQzFCLEtBQUssS0FBSyxDQUNkLENBQUE7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmFtZWROb2RlLCBTdGF0ZW1lbnQsIFN0b3JlIH0gZnJvbSAncmRmbGliJ1xuaW1wb3J0IHsgRENBVCwgRENURVJNUywgRk9BRiwgTE9DTiwgUkRGLCBTS09TLCBWQ0FSRCB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7IGZpbmROb2RlTG9jYWxpemVkIH0gZnJvbSAnLi91dGlscy9ncmFwaC11dGlscydcbmltcG9ydCB7XG4gIERhdGFzZXREb3dubG9hZERpc3RyaWJ1dGlvbixcbiAgRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24sXG4gIERhdGFzZXRTcGF0aWFsRXh0ZW50LFxuICBJbmRpdmlkdWFsLFxuICBLZXl3b3JkLFxuICBPbmxpbmVMaW5rUmVzb3VyY2UsXG4gIE9ubGluZVJlc291cmNlLFxuICBPcmdhbml6YXRpb24sXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IGdldEFzVmFsaWRVcmwgfSBmcm9tICcuLi9jb21tb24vdXJsJ1xuaW1wb3J0IHsgZnVsbE5hbWVUb1BhcnRzIH0gZnJvbSAnLi4vaXNvMTkxMzkvdXRpbHMvaW5kaXZpZHVhbC1uYW1lJ1xuaW1wb3J0IHsgcmVhZExpY2Vuc2VGcm9tU3RyaW5nIH0gZnJvbSAnLi4vY29tbW9uL2xpY2Vuc2UnXG5pbXBvcnQgeyBtYXRjaFByb3RvY29sIH0gZnJvbSAnLi4vY29tbW9uL2Rpc3RyaWJ1dGlvbi5tYXBwZXInXG5cbmZ1bmN0aW9uIGdldERhdGFzZXQoZGF0YVN0b3JlOiBTdG9yZSwgcmVjb3JkTm9kZTogTmFtZWROb2RlKTogTmFtZWROb2RlIHtcbiAgcmV0dXJuIChkYXRhU3RvcmUudGhlKHJlY29yZE5vZGUsIEZPQUYoJ3ByaW1hcnlUb3BpYycpLCBudWxsKSB8fFxuICAgIGRhdGFTdG9yZS50aGUobnVsbCwgUkRGKCd0eXBlJyksIERDQVQoJ0RhdGFzZXQnKSkpIGFzIE5hbWVkTm9kZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVuaXF1ZUlkZW50aWZpZXIoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRhdGFTdG9yZS50aGUocmVjb3JkTm9kZSwgRENURVJNUygnaWRlbnRpZmllcicpLCBudWxsKT8udmFsdWVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRUaXRsZShkYXRhU3RvcmU6IFN0b3JlLCByZWNvcmROb2RlOiBOYW1lZE5vZGUpOiBzdHJpbmcge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIHJldHVybiBmaW5kTm9kZUxvY2FsaXplZChkYXRhU3RvcmUsIGRhdGFzZXQsIERDVEVSTVMoJ3RpdGxlJyksIG51bGwsICdlbicpXG4gICAgPy52YWx1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEFic3RyYWN0KGRhdGFTdG9yZTogU3RvcmUsIHJlY29yZE5vZGU6IE5hbWVkTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXREYXRhc2V0KGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgcmV0dXJuIGZpbmROb2RlTG9jYWxpemVkKFxuICAgIGRhdGFTdG9yZSxcbiAgICBkYXRhc2V0LFxuICAgIERDVEVSTVMoJ2Rlc2NyaXB0aW9uJyksXG4gICAgbnVsbCxcbiAgICAnZW4nXG4gICk/LnZhbHVlXG59XG5cbmZ1bmN0aW9uIG1hcENvbnRhY3RGcm9tU3RhdGVtZW50KFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICBzdGF0ZW1lbnQ6IFN0YXRlbWVudFxuKTogSW5kaXZpZHVhbCB7XG4gIGNvbnN0IGNvbnRhY3ROb2RlID0gc3RhdGVtZW50Lm9iamVjdCBhcyBOYW1lZE5vZGVcbiAgY29uc3QgZnVsbE5hbWUgPVxuICAgIGRhdGFTdG9yZS50aGUoY29udGFjdE5vZGUsIFZDQVJEKCdmbicpLCBudWxsKSA/P1xuICAgIGRhdGFTdG9yZS50aGUoY29udGFjdE5vZGUsIFZDQVJEKCd0aXRsZScpLCBudWxsKSA/P1xuICAgIGRhdGFTdG9yZS50aGUoY29udGFjdE5vZGUsIFZDQVJEKCdvcmdhbmlzYXRpb24tbmFtZScpLCBudWxsKVxuICBsZXQgZmlyc3ROYW1lLCBsYXN0TmFtZVxuICBpZiAoZnVsbE5hbWUpIHtcbiAgICBjb25zdCBwYXJ0cyA9IGZ1bGxOYW1lVG9QYXJ0cyhmdWxsTmFtZS52YWx1ZSlcbiAgICBmaXJzdE5hbWUgPSBwYXJ0c1swXVxuICAgIGxhc3ROYW1lID0gcGFydHNbMV1cbiAgfVxuICBjb25zdCByb2xlID0gZGF0YVN0b3JlLnRoZShjb250YWN0Tm9kZSwgVkNBUkQoJ3JvbGUnKSwgbnVsbClcbiAgY29uc3QgZW1haWwgPSBkYXRhU3RvcmUudGhlKGNvbnRhY3ROb2RlLCBWQ0FSRCgnaGFzRW1haWwnKSwgbnVsbClcbiAgY29uc3QgZW1haWxWYWx1ZSA9IGVtYWlsXG4gICAgPyBlbWFpbC52YWx1ZS5yZXBsYWNlKC9ebWFpbHRvOi8sICcnKVxuICAgIDogJ21pc3NpbmdAbWlzc2luZy5jb20nXG4gIHJldHVybiB7XG4gICAgcm9sZTogcm9sZT8udmFsdWUgPz8gJ3BvaW50X29mX2NvbnRhY3QnLFxuICAgIGVtYWlsOiBlbWFpbFZhbHVlLFxuICAgIC4uLihmaXJzdE5hbWUgJiYgeyBmaXJzdE5hbWUgfSksXG4gICAgLi4uKGxhc3ROYW1lICYmIHsgbGFzdE5hbWUgfSksXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb250YWN0cyhcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBJbmRpdmlkdWFsW10ge1xuICBjb25zdCBzdGF0ZW1lbnRzID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICByZWNvcmROb2RlLFxuICAgIERDQVQoJ2NvbnRhY3RQb2ludCcpLFxuICAgIG51bGxcbiAgKVxuICByZXR1cm4gc3RhdGVtZW50cy5tYXAoKHMpID0+IG1hcENvbnRhY3RGcm9tU3RhdGVtZW50KGRhdGFTdG9yZSwgcykpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkQ29udGFjdHNGb3JSZXNvdXJjZShcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBJbmRpdmlkdWFsW10ge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKFxuICAgIGRhdGFzZXQsXG4gICAgRENBVCgnY29udGFjdFBvaW50JyksXG4gICAgbnVsbFxuICApXG4gIHJldHVybiBzdGF0ZW1lbnRzLm1hcCgocykgPT4gbWFwQ29udGFjdEZyb21TdGF0ZW1lbnQoZGF0YVN0b3JlLCBzKSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRMYW5kaW5nUGFnZShkYXRhU3RvcmU6IFN0b3JlLCByZWNvcmROb2RlOiBOYW1lZE5vZGUpOiBVUkwge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IGxhbmRpbmdQYWdlID0gZGF0YVN0b3JlLnRoZShkYXRhc2V0LCBEQ0FUKCdsYW5kaW5nUGFnZScpLCBudWxsKVxuICByZXR1cm4gbGFuZGluZ1BhZ2UgIT09IG51bGwgPyBnZXRBc1ZhbGlkVXJsKGxhbmRpbmdQYWdlLnZhbHVlKSA6IHVuZGVmaW5lZFxufVxuXG5mdW5jdGlvbiByZWFkT25saW5lTGlua1Jlc291cmNlKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICBkaXN0cmlidXRpb25Ob2RlOiBOYW1lZE5vZGVcbik6IE9ubGluZUxpbmtSZXNvdXJjZSB7XG4gIGNvbnN0IGFjY2Vzc1VybCA9IGRhdGFTdG9yZS50aGUoZGlzdHJpYnV0aW9uTm9kZSwgRENBVCgnYWNjZXNzVVJMJyksIG51bGwpXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gZmluZE5vZGVMb2NhbGl6ZWQoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgRENURVJNUygnZGVzY3JpcHRpb24nKSxcbiAgICBudWxsLFxuICAgICdlbidcbiAgKVxuICBjb25zdCB0aXRsZSA9IGZpbmROb2RlTG9jYWxpemVkKFxuICAgIGRhdGFTdG9yZSxcbiAgICBkaXN0cmlidXRpb25Ob2RlLFxuICAgIERDVEVSTVMoJ3RpdGxlJyksXG4gICAgbnVsbCxcbiAgICAnZW4nXG4gIClcbiAgcmV0dXJuIHtcbiAgICB1cmw6IGdldEFzVmFsaWRVcmwoYWNjZXNzVXJsPy52YWx1ZSksXG4gICAgdHlwZTogJ2xpbmsnLFxuICAgIC4uLih0aXRsZSAmJiB7IG5hbWU6IHRpdGxlPy52YWx1ZSB9KSxcbiAgICAuLi4oZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24/LnZhbHVlIH0pLFxuICB9XG59XG5cbmZ1bmN0aW9uIHJlYWREb3dubG9hZERpc3RyaWJ1dGlvbihcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgZGlzdHJpYnV0aW9uTm9kZTogTmFtZWROb2RlXG4pOiBEYXRhc2V0RG93bmxvYWREaXN0cmlidXRpb24ge1xuICBjb25zdCBkb3dubG9hZFVybCA9IGRhdGFTdG9yZS50aGUoZGlzdHJpYnV0aW9uTm9kZSwgRENBVCgnZG93bmxvYWRVUkwnKSwgbnVsbClcbiAgY29uc3QgZGVzY3JpcHRpb24gPSBmaW5kTm9kZUxvY2FsaXplZChcbiAgICBkYXRhU3RvcmUsXG4gICAgZGlzdHJpYnV0aW9uTm9kZSxcbiAgICBEQ1RFUk1TKCdkZXNjcmlwdGlvbicpLFxuICAgIG51bGwsXG4gICAgJ2VuJ1xuICApXG4gIGNvbnN0IHRpdGxlID0gZmluZE5vZGVMb2NhbGl6ZWQoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgRENURVJNUygndGl0bGUnKSxcbiAgICBudWxsLFxuICAgICdlbidcbiAgKVxuICAvLyB0b2RvIG1pbWUgdHlwZVxuICByZXR1cm4ge1xuICAgIHVybDogZ2V0QXNWYWxpZFVybChkb3dubG9hZFVybD8udmFsdWUpLFxuICAgIHR5cGU6ICdkb3dubG9hZCcsXG4gICAgLi4uKHRpdGxlICYmIHsgbmFtZTogdGl0bGU/LnZhbHVlIH0pLFxuICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7IGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbj8udmFsdWUgfSksXG4gIH1cbn1cblxuZnVuY3Rpb24gcmVhZFNlcnZpY2VEaXN0cmlidXRpb24oXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIGRpc3RyaWJ1dGlvbk5vZGU6IE5hbWVkTm9kZVxuKTogRGF0YXNldFNlcnZpY2VEaXN0cmlidXRpb24ge1xuICBjb25zdCBzZXJ2aWNlID0gZGF0YVN0b3JlLnRoZShcbiAgICBkaXN0cmlidXRpb25Ob2RlLFxuICAgIERDQVQoJ2FjY2Vzc1NlcnZpY2UnKSxcbiAgICBudWxsXG4gICkgYXMgTmFtZWROb2RlXG4gIGNvbnN0IGNvbmZvcm1zVG8gPSBkYXRhU3RvcmUudGhlKHNlcnZpY2UsIERDVEVSTVMoJ2NvbmZvcm1zVG8nKSwgbnVsbClcbiAgY29uc3QgYWNjZXNzVXJsID0gZGF0YVN0b3JlLnRoZShkaXN0cmlidXRpb25Ob2RlLCBEQ0FUKCdhY2Nlc3NVUkwnKSwgbnVsbClcbiAgY29uc3QgZGVzY3JpcHRpb24gPSBmaW5kTm9kZUxvY2FsaXplZChcbiAgICBkYXRhU3RvcmUsXG4gICAgZGlzdHJpYnV0aW9uTm9kZSxcbiAgICBEQ1RFUk1TKCdkZXNjcmlwdGlvbicpLFxuICAgIG51bGwsXG4gICAgJ2VuJ1xuICApXG4gIGNvbnN0IHRpdGxlID0gZmluZE5vZGVMb2NhbGl6ZWQoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgRENURVJNUygndGl0bGUnKSxcbiAgICBudWxsLFxuICAgICdlbidcbiAgKVxuICByZXR1cm4ge1xuICAgIHVybDogZ2V0QXNWYWxpZFVybChhY2Nlc3NVcmw/LnZhbHVlKSxcbiAgICB0eXBlOiAnc2VydmljZScsXG4gICAgYWNjZXNzU2VydmljZVByb3RvY29sOiBtYXRjaFByb3RvY29sKGNvbmZvcm1zVG8/LnZhbHVlKSxcbiAgICAuLi4odGl0bGUgJiYgeyBuYW1lOiB0aXRsZT8udmFsdWUgfSksXG4gICAgLi4uKGRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uPy52YWx1ZSB9KSxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwT25saW5lUmVzb3VyY2UoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIGRpc3RyaWJ1dGlvbk5vZGU6IE5hbWVkTm9kZVxuKTogT25saW5lUmVzb3VyY2Uge1xuICBpZiAoZGF0YVN0b3JlLmhvbGRzKGRpc3RyaWJ1dGlvbk5vZGUsIERDQVQoJ2FjY2Vzc1NlcnZpY2UnKSwgbnVsbCkpIHtcbiAgICBjb25zdCBzZXJ2aWNlID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIGRpc3RyaWJ1dGlvbk5vZGUsXG4gICAgICBEQ0FUKCdhY2Nlc3NTZXJ2aWNlJyksXG4gICAgICBudWxsXG4gICAgKSBhcyBOYW1lZE5vZGVcbiAgICBjb25zdCBjb25mb3Jtc1RvID0gZGF0YVN0b3JlLnRoZShzZXJ2aWNlLCBEQ1RFUk1TKCdjb25mb3Jtc1RvJyksIG51bGwpXG4gICAgaWYgKGNvbmZvcm1zVG8pIHtcbiAgICAgIHJldHVybiByZWFkU2VydmljZURpc3RyaWJ1dGlvbihkYXRhU3RvcmUsIGRpc3RyaWJ1dGlvbk5vZGUpXG4gICAgfVxuICB9XG4gIGlmIChkYXRhU3RvcmUuaG9sZHMoZGlzdHJpYnV0aW9uTm9kZSwgRENBVCgnZG93bmxvYWRVUkwnKSwgbnVsbCkpIHtcbiAgICByZXR1cm4gcmVhZERvd25sb2FkRGlzdHJpYnV0aW9uKGRhdGFTdG9yZSwgZGlzdHJpYnV0aW9uTm9kZSlcbiAgfVxuICByZXR1cm4gcmVhZE9ubGluZUxpbmtSZXNvdXJjZShkYXRhU3RvcmUsIGRpc3RyaWJ1dGlvbk5vZGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkT25saW5lUmVzb3VyY2VzKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbik6IE9ubGluZVJlc291cmNlW10ge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKFxuICAgIGRhdGFzZXQsXG4gICAgRENBVCgnZGlzdHJpYnV0aW9uJyksXG4gICAgbnVsbFxuICApXG4gIHJldHVybiBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PlxuICAgIG1hcE9ubGluZVJlc291cmNlKGRhdGFTdG9yZSwgc3RhdGVtZW50Lm9iamVjdCBhcyBOYW1lZE5vZGUpXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRTcGF0aWFsRXh0ZW50cyhcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBEYXRhc2V0U3BhdGlhbEV4dGVudFtdIHtcbiAgY29uc3QgZGF0YXNldCA9IGdldERhdGFzZXQoZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBjb25zdCBzdGF0ZW1lbnRzID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICBkYXRhc2V0LFxuICAgIERDVEVSTVMoJ3NwYXRpYWwnKSxcbiAgICBudWxsXG4gIClcbiAgcmV0dXJuIHN0YXRlbWVudHNcbiAgICAubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGdlb20gPSBkYXRhU3RvcmUudGhlKFxuICAgICAgICBzdGF0ZW1lbnQub2JqZWN0IGFzIE5hbWVkTm9kZSxcbiAgICAgICAgTE9DTignZ2VvbWV0cnknKSxcbiAgICAgICAgbnVsbFxuICAgICAgKVxuICAgICAgaWYgKCFnZW9tKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdGF0ZW1lbnQub2JqZWN0LnZhbHVlLFxuICAgICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBnZW9tZXRyeTogSlNPTi5wYXJzZShnZW9tLnZhbHVlKSxcbiAgICAgIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoKHN0YXRlbWVudCkgPT4gISFzdGF0ZW1lbnQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkS2V5d29yZHMoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKTogS2V5d29yZFtdIHtcbiAgY29uc3QgZGF0YXNldCA9IGdldERhdGFzZXQoZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBjb25zdCBzdGF0ZW1lbnRzID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICBkYXRhc2V0LFxuICAgIERDQVQoJ2tleXdvcmQnKSxcbiAgICBudWxsXG4gIClcbiAgcmV0dXJuIHN0YXRlbWVudHMubWFwKChzdGF0ZW1lbnQpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbGFiZWw6IHN0YXRlbWVudC5vYmplY3QudmFsdWUsXG4gICAgICB0eXBlOiAndGhlbWUnLFxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRUb3BpY3MoZGF0YVN0b3JlOiBTdG9yZSwgcmVjb3JkTm9kZTogTmFtZWROb2RlKTogc3RyaW5nW10ge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0RGF0YXNldChkYXRhU3RvcmUsIHJlY29yZE5vZGUpXG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKGRhdGFzZXQsIERDQVQoJ3RoZW1lJyksIG51bGwpXG4gIHJldHVybiBzdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgY29uc3QgcHJlZkxhYmVsID0gZGF0YVN0b3JlLnRoZShcbiAgICAgIHN0YXRlbWVudC5vYmplY3QgYXMgTmFtZWROb2RlLFxuICAgICAgU0tPUygncHJlZkxhYmVsJyksXG4gICAgICBudWxsXG4gICAgKVxuICAgIHJldHVybiBwcmVmTGFiZWw/LnZhbHVlID8/IHN0YXRlbWVudC5vYmplY3QudmFsdWVcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWNvcmRDcmVhdGVkKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbik6IERhdGUge1xuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YVN0b3JlLnRoZShyZWNvcmROb2RlLCBEQ1RFUk1TKCdpc3N1ZWQnKSwgbnVsbCk/LnZhbHVlXG4gIGlmIChkYXRlU3RyaW5nKSByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZylcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZWNvcmRVcGRhdGVkKFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbik6IERhdGUge1xuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YVN0b3JlLnRoZShyZWNvcmROb2RlLCBEQ1RFUk1TKCdtb2RpZmllZCcpLCBudWxsKT8udmFsdWVcbiAgaWYgKGRhdGVTdHJpbmcpIHJldHVybiBuZXcgRGF0ZShkYXRlU3RyaW5nKVxuICByZXR1cm4gbmV3IERhdGUoKSAvLyByZWNvcmQgdXBkYXRlZCBpcyBhIG1hbmRhdG9yeSBmaWVsZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFJlc291cmNlQ3JlYXRlZChcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBEYXRlIHtcbiAgY29uc3QgZGF0YXNldCA9IGdldERhdGFzZXQoZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBjb25zdCBkYXRlU3RyaW5nID0gZGF0YVN0b3JlLnRoZShkYXRhc2V0LCBEQ1RFUk1TKCdpc3N1ZWQnKSwgbnVsbCk/LnZhbHVlXG4gIGlmIChkYXRlU3RyaW5nKSByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZylcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRSZXNvdXJjZVVwZGF0ZWQoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKTogRGF0ZSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXREYXRhc2V0KGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgY29uc3QgZGF0ZVN0cmluZyA9IGRhdGFTdG9yZS50aGUoZGF0YXNldCwgRENURVJNUygnbW9kaWZpZWQnKSwgbnVsbCk/LnZhbHVlXG4gIGlmIChkYXRlU3RyaW5nKSByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZylcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRPd25lck9yZ2FuaXphdGlvbihkYXRhU3RvcmU6IFN0b3JlKTogT3JnYW5pemF0aW9uIHtcbiAgY29uc3QgcHVibGlzaGVyU3RhdGVtZW50cyA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcoXG4gICAgbnVsbCxcbiAgICBEQ1RFUk1TKCdwdWJsaXNoZXInKSxcbiAgICBudWxsXG4gIClcbiAgaWYgKCFwdWJsaXNoZXJTdGF0ZW1lbnRzLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgY29uc3QgcHVibGlzaGVyID0gcHVibGlzaGVyU3RhdGVtZW50c1swXS5vYmplY3QgYXMgTmFtZWROb2RlXG4gIGNvbnN0IG5hbWVOb2RlID0gZGF0YVN0b3JlLnRoZShwdWJsaXNoZXIsIEZPQUYoJ25hbWUnKSwgbnVsbClcbiAgY29uc3QgbmFtZSA9IG5hbWVOb2RlID8gbmFtZU5vZGUudmFsdWUgOiBwdWJsaXNoZXIudmFsdWVcbiAgcmV0dXJuIHtcbiAgICBuYW1lLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkTGljZW5zZXMoZGF0YVN0b3JlOiBTdG9yZSwgcmVjb3JkTm9kZTogTmFtZWROb2RlKSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXREYXRhc2V0KGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgY29uc3QgZGlzdHJpYnV0aW9ucyA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcoXG4gICAgZGF0YXNldCxcbiAgICBEQ0FUKCdkaXN0cmlidXRpb24nKSxcbiAgICBudWxsXG4gIClcbiAgcmV0dXJuIGRpc3RyaWJ1dGlvbnNcbiAgICAubWFwKFxuICAgICAgKHN0YXRlbWVudCkgPT5cbiAgICAgICAgZGF0YVN0b3JlLnRoZShcbiAgICAgICAgICBzdGF0ZW1lbnQub2JqZWN0IGFzIE5hbWVkTm9kZSxcbiAgICAgICAgICBEQ1RFUk1TKCdsaWNlbnNlJyksXG4gICAgICAgICAgbnVsbFxuICAgICAgICApIGFzIE5hbWVkTm9kZVxuICAgIClcbiAgICAuZmlsdGVyKChsaWNlbnNlKSA9PiAhIWxpY2Vuc2UpXG4gICAgLm1hcCgocykgPT4gcmVhZExpY2Vuc2VGcm9tU3RyaW5nKHMudmFsdWUpKVxuICAgIC5maWx0ZXIoXG4gICAgICAobGljZW5zZSwgaW5kZXgsIGFycmF5KSA9PlxuICAgICAgICBhcnJheS5maW5kSW5kZXgoXG4gICAgICAgICAgKGwpID0+XG4gICAgICAgICAgICBsLnVybD8udG9TdHJpbmcoKSA9PT0gbGljZW5zZS51cmw/LnRvU3RyaW5nKCkgJiZcbiAgICAgICAgICAgIGwudGV4dCA9PT0gbGljZW5zZS50ZXh0XG4gICAgICAgICkgPT09IGluZGV4XG4gICAgKVxufVxuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { lit, Literal, parse } from 'rdflib';
|
|
2
|
+
import { BASE_URI } from './uri';
|
|
3
|
+
export function findNodeLocalized(dataStore, subject, predicate, object, language) {
|
|
4
|
+
const literals = dataStore
|
|
5
|
+
.each(subject, predicate, object)
|
|
6
|
+
.filter((node) => node instanceof Literal);
|
|
7
|
+
const matchingLang = literals.find((node) => node.language.startsWith(language));
|
|
8
|
+
const noLang = literals.find((node) => !node.language);
|
|
9
|
+
const anyLang = literals[0];
|
|
10
|
+
return matchingLang ?? noLang ?? anyLang;
|
|
11
|
+
}
|
|
12
|
+
export function getOrAddStatement(dataStore, subject, predicate, object) {
|
|
13
|
+
let statement = dataStore.statementsMatching(subject, predicate, typeof object === 'string' ? null : object)[0];
|
|
14
|
+
if (!statement) {
|
|
15
|
+
statement = dataStore.add(subject, predicate, object);
|
|
16
|
+
}
|
|
17
|
+
return statement;
|
|
18
|
+
}
|
|
19
|
+
export function getOrAddLiteral(dataStore, subject, predicate, objectValue) {
|
|
20
|
+
let statement = dataStore.statementsMatching(subject, predicate, null)[0];
|
|
21
|
+
if (!statement) {
|
|
22
|
+
statement = dataStore.add(subject, predicate, lit(objectValue));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
statement.object = lit(objectValue);
|
|
26
|
+
}
|
|
27
|
+
return statement;
|
|
28
|
+
}
|
|
29
|
+
export function getOrAddLocalizedLiteral(dataStore, subject, predicate, objectValue, language) {
|
|
30
|
+
const statements = dataStore.statementsMatching(subject, predicate, null);
|
|
31
|
+
const withMatchingLanguage = statements.filter((statement) => statement.object instanceof Literal &&
|
|
32
|
+
statement.object.language.startsWith(language));
|
|
33
|
+
const withNoLanguage = statements.filter((statement) => statement.object instanceof Literal && !statement.object.language);
|
|
34
|
+
let statement = withMatchingLanguage[0] || withNoLanguage[0];
|
|
35
|
+
if (!statement) {
|
|
36
|
+
statement = dataStore.add(subject, predicate, lit(objectValue, language));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
statement.object = lit(objectValue, language);
|
|
40
|
+
}
|
|
41
|
+
return statement;
|
|
42
|
+
}
|
|
43
|
+
export function loadGraph(dataStore, document, contentType, base = BASE_URI) {
|
|
44
|
+
return new Promise((resolve) => parse(document, dataStore, base, contentType, resolve));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL3V0aWxzL2dyYXBoLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFRLEtBQUssRUFBb0IsTUFBTSxRQUFRLENBQUE7QUFHcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVoQyxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLFNBQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLFNBQXlCLEVBQ3pCLE1BQW1CLEVBQ25CLFFBQWdCO0lBRWhCLE1BQU0sUUFBUSxHQUFHLFNBQVM7U0FDdkIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDO1NBQ2hDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBbUIsRUFBRSxDQUFDLElBQUksWUFBWSxPQUFPLENBQUMsQ0FBQTtJQUM3RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQ25DLENBQUE7SUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN0RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDM0IsT0FBTyxZQUFZLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQTtBQUMxQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFnQixFQUNoQixPQUFxQixFQUNyQixTQUF5QixFQUN6QixNQUE0QjtJQUU1QixJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsa0JBQWtCLENBQzFDLE9BQU8sRUFDUCxTQUFTLEVBQ1QsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0MsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNKLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBYyxDQUFBO0tBQ25FO0lBQ0QsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQzdCLFNBQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLFNBQXlCLEVBQ3pCLFdBQW1CO0lBRW5CLElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3pFLElBQUksQ0FBQyxTQUFTLEVBQUU7UUFDZCxTQUFTLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBYyxDQUFBO0tBQzdFO1NBQU07UUFDTCxTQUFTLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtLQUNwQztJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLFNBQWdCLEVBQ2hCLE9BQXFCLEVBQ3JCLFNBQXlCLEVBQ3pCLFdBQW1CLEVBQ25CLFFBQWdCO0lBRWhCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3pFLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxNQUFNLFlBQVksT0FBTztRQUNuQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQ2pELENBQUE7SUFDRCxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUN0QyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQ1osU0FBUyxDQUFDLE1BQU0sWUFBWSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDcEUsQ0FBQTtJQUNELElBQUksU0FBUyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM1RCxJQUFJLENBQUMsU0FBUyxFQUFFO1FBQ2QsU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQ3ZCLE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FDZCxDQUFBO0tBQ2Y7U0FBTTtRQUNMLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQTtLQUM5QztJQUNELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUN2QixTQUFnQixFQUNoQixRQUFnQixFQUNoQixXQUF3QixFQUN4QixJQUFJLEdBQUcsUUFBUTtJQUVmLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUM3QixLQUFLLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUN2RCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxpdCwgTGl0ZXJhbCwgTm9kZSwgcGFyc2UsIFN0YXRlbWVudCwgU3RvcmUgfSBmcm9tICdyZGZsaWInXG5pbXBvcnQgeyBRdWFkX09iamVjdCwgUXVhZF9QcmVkaWNhdGUsIFF1YWRfU3ViamVjdCB9IGZyb20gJ3JkZmxpYi9saWIvdGYtdHlwZXMnXG5pbXBvcnQgeyBDb250ZW50VHlwZSB9IGZyb20gJ3JkZmxpYi9saWIvdHlwZXMnXG5pbXBvcnQgeyBCQVNFX1VSSSB9IGZyb20gJy4vdXJpJ1xuXG5leHBvcnQgZnVuY3Rpb24gZmluZE5vZGVMb2NhbGl6ZWQoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0OiBRdWFkX09iamVjdCxcbiAgbGFuZ3VhZ2U6IHN0cmluZ1xuKTogTm9kZSB8IG51bGwge1xuICBjb25zdCBsaXRlcmFscyA9IGRhdGFTdG9yZVxuICAgIC5lYWNoKHN1YmplY3QsIHByZWRpY2F0ZSwgb2JqZWN0KVxuICAgIC5maWx0ZXIoKG5vZGUpOiBub2RlIGlzIExpdGVyYWwgPT4gbm9kZSBpbnN0YW5jZW9mIExpdGVyYWwpXG4gIGNvbnN0IG1hdGNoaW5nTGFuZyA9IGxpdGVyYWxzLmZpbmQoKG5vZGUpID0+XG4gICAgbm9kZS5sYW5ndWFnZS5zdGFydHNXaXRoKGxhbmd1YWdlKVxuICApXG4gIGNvbnN0IG5vTGFuZyA9IGxpdGVyYWxzLmZpbmQoKG5vZGUpID0+ICFub2RlLmxhbmd1YWdlKVxuICBjb25zdCBhbnlMYW5nID0gbGl0ZXJhbHNbMF1cbiAgcmV0dXJuIG1hdGNoaW5nTGFuZyA/PyBub0xhbmcgPz8gYW55TGFuZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0T3JBZGRTdGF0ZW1lbnQoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0OiBRdWFkX09iamVjdCB8IHN0cmluZ1xuKTogU3RhdGVtZW50IHtcbiAgbGV0IHN0YXRlbWVudCA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcoXG4gICAgc3ViamVjdCxcbiAgICBwcmVkaWNhdGUsXG4gICAgdHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycgPyBudWxsIDogb2JqZWN0XG4gIClbMF1cbiAgaWYgKCFzdGF0ZW1lbnQpIHtcbiAgICBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKHN1YmplY3QsIHByZWRpY2F0ZSwgb2JqZWN0KSBhcyBTdGF0ZW1lbnRcbiAgfVxuICByZXR1cm4gc3RhdGVtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckFkZExpdGVyYWwoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0VmFsdWU6IHN0cmluZ1xuKSB7XG4gIGxldCBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKHN1YmplY3QsIHByZWRpY2F0ZSwgbnVsbClbMF1cbiAgaWYgKCFzdGF0ZW1lbnQpIHtcbiAgICBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKHN1YmplY3QsIHByZWRpY2F0ZSwgbGl0KG9iamVjdFZhbHVlKSkgYXMgU3RhdGVtZW50XG4gIH0gZWxzZSB7XG4gICAgc3RhdGVtZW50Lm9iamVjdCA9IGxpdChvYmplY3RWYWx1ZSlcbiAgfVxuICByZXR1cm4gc3RhdGVtZW50XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckFkZExvY2FsaXplZExpdGVyYWwoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHN1YmplY3Q6IFF1YWRfU3ViamVjdCxcbiAgcHJlZGljYXRlOiBRdWFkX1ByZWRpY2F0ZSxcbiAgb2JqZWN0VmFsdWU6IHN0cmluZyxcbiAgbGFuZ3VhZ2U6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHN0YXRlbWVudHMgPSBkYXRhU3RvcmUuc3RhdGVtZW50c01hdGNoaW5nKHN1YmplY3QsIHByZWRpY2F0ZSwgbnVsbClcbiAgY29uc3Qgd2l0aE1hdGNoaW5nTGFuZ3VhZ2UgPSBzdGF0ZW1lbnRzLmZpbHRlcihcbiAgICAoc3RhdGVtZW50KSA9PlxuICAgICAgc3RhdGVtZW50Lm9iamVjdCBpbnN0YW5jZW9mIExpdGVyYWwgJiZcbiAgICAgIHN0YXRlbWVudC5vYmplY3QubGFuZ3VhZ2Uuc3RhcnRzV2l0aChsYW5ndWFnZSlcbiAgKVxuICBjb25zdCB3aXRoTm9MYW5ndWFnZSA9IHN0YXRlbWVudHMuZmlsdGVyKFxuICAgIChzdGF0ZW1lbnQpID0+XG4gICAgICBzdGF0ZW1lbnQub2JqZWN0IGluc3RhbmNlb2YgTGl0ZXJhbCAmJiAhc3RhdGVtZW50Lm9iamVjdC5sYW5ndWFnZVxuICApXG4gIGxldCBzdGF0ZW1lbnQgPSB3aXRoTWF0Y2hpbmdMYW5ndWFnZVswXSB8fCB3aXRoTm9MYW5ndWFnZVswXVxuICBpZiAoIXN0YXRlbWVudCkge1xuICAgIHN0YXRlbWVudCA9IGRhdGFTdG9yZS5hZGQoXG4gICAgICBzdWJqZWN0LFxuICAgICAgcHJlZGljYXRlLFxuICAgICAgbGl0KG9iamVjdFZhbHVlLCBsYW5ndWFnZSlcbiAgICApIGFzIFN0YXRlbWVudFxuICB9IGVsc2Uge1xuICAgIHN0YXRlbWVudC5vYmplY3QgPSBsaXQob2JqZWN0VmFsdWUsIGxhbmd1YWdlKVxuICB9XG4gIHJldHVybiBzdGF0ZW1lbnRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRHcmFwaChcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgZG9jdW1lbnQ6IHN0cmluZyxcbiAgY29udGVudFR5cGU6IENvbnRlbnRUeXBlLFxuICBiYXNlID0gQkFTRV9VUklcbikge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+XG4gICAgcGFyc2UoZG9jdW1lbnQsIGRhdGFTdG9yZSwgYmFzZSwgY29udGVudFR5cGUsIHJlc29sdmUpXG4gIClcbn1cbiJdfQ==
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BlankNode, Literal, sym } from 'rdflib';
|
|
2
|
+
import { XmlElement, XmlText } from '@rgrove/parse-xml';
|
|
3
|
+
import { DCAT, FOAF, RDF } from '../namespaces';
|
|
4
|
+
import { createDocument, NAMESPACES, xmlToString } from '../../xml-utils';
|
|
5
|
+
import { BASE_URI } from './uri';
|
|
6
|
+
function fullNameToXml(fullName) {
|
|
7
|
+
for (const key in NAMESPACES) {
|
|
8
|
+
if (fullName.startsWith(NAMESPACES[key])) {
|
|
9
|
+
return [key, fullName.replace(NAMESPACES[key], '')];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return [null, fullName];
|
|
13
|
+
}
|
|
14
|
+
function createXmlElementFromNode(dataStore, node) {
|
|
15
|
+
if (node instanceof Literal) {
|
|
16
|
+
return new XmlText(node.value);
|
|
17
|
+
}
|
|
18
|
+
const type = dataStore.the(node, RDF('type'));
|
|
19
|
+
if (!type)
|
|
20
|
+
return null;
|
|
21
|
+
const statements = dataStore.statementsMatching(node, null, null);
|
|
22
|
+
const children = statements
|
|
23
|
+
// filtering out the rdf:type statements because they are already used above
|
|
24
|
+
.filter((statement) => statement.predicate.value !== RDF('type').value)
|
|
25
|
+
.map((statement) => {
|
|
26
|
+
if (statement.object.toString() === statement.subject.toString()) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
// special cases: foaf:primaryTopic in dcat:CatalogRecord
|
|
30
|
+
if (statement.predicate.value === FOAF('primaryTopic').value) {
|
|
31
|
+
return new XmlElement(`foaf:primaryTopic`, {
|
|
32
|
+
'rdf:resource': statement.object.value,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const [namespace, name] = fullNameToXml(statement.predicate.value);
|
|
36
|
+
const objectNode = createXmlElementFromNode(dataStore, statement.object);
|
|
37
|
+
if (!objectNode) {
|
|
38
|
+
// no object node: simply use the object value
|
|
39
|
+
return new XmlElement(`${namespace}:${name}`, {
|
|
40
|
+
'rdf:resource': statement.object.value,
|
|
41
|
+
}, []);
|
|
42
|
+
}
|
|
43
|
+
// wrap the object node in the predicate one
|
|
44
|
+
return new XmlElement(`${namespace}:${name}`, {}, [objectNode]);
|
|
45
|
+
})
|
|
46
|
+
.filter((child) => !!child);
|
|
47
|
+
const [namespace, name] = fullNameToXml(type.value);
|
|
48
|
+
const attributes = node instanceof BlankNode
|
|
49
|
+
? {}
|
|
50
|
+
: {
|
|
51
|
+
'rdf:about': node.value,
|
|
52
|
+
};
|
|
53
|
+
return new XmlElement(`${namespace}:${name}`, attributes, children);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* This will output an XML document serialized as string, tailored in a way that it
|
|
57
|
+
* can be understood and indexed by GN4 dcat-ap plugin
|
|
58
|
+
* @param dataStore
|
|
59
|
+
*/
|
|
60
|
+
export function exportGraphToXml(dataStore) {
|
|
61
|
+
// we start with the catalog node (which is created if missing)
|
|
62
|
+
let catalogNode = dataStore.statementsMatching(null, RDF('type'), DCAT('Catalog'))[0]?.subject;
|
|
63
|
+
if (!catalogNode) {
|
|
64
|
+
const recordNode = dataStore.the(null, RDF('type'), DCAT('CatalogRecord'));
|
|
65
|
+
const statement = dataStore.add(sym(`${BASE_URI}catalog`), RDF('type'), DCAT('Catalog'));
|
|
66
|
+
catalogNode = statement.subject;
|
|
67
|
+
dataStore.add(catalogNode, DCAT('record'), recordNode);
|
|
68
|
+
}
|
|
69
|
+
const rootEl = new XmlElement('rdf:RDF', {}, [
|
|
70
|
+
createXmlElementFromNode(dataStore, catalogNode),
|
|
71
|
+
]);
|
|
72
|
+
return xmlToString(createDocument(rootEl));
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplLXRvLXhtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMvbGliL2RjYXQtYXAvdXRpbHMvc2VyaWFsaXplLXRvLXhtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBK0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxPQUFPLENBQUE7QUFFaEMsU0FBUyxhQUFhLENBQUMsUUFBZ0I7SUFDckMsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDNUIsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtTQUNwRDtLQUNGO0lBQ0QsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUN6QixDQUFDO0FBRUQsU0FBUyx3QkFBd0IsQ0FDL0IsU0FBZ0IsRUFDaEIsSUFBeUI7SUFFekIsSUFBSSxJQUFJLFlBQVksT0FBTyxFQUFFO1FBQzNCLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0tBQy9CO0lBQ0QsTUFBTSxJQUFJLEdBQUcsU0FB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QUcsQ0FDN0IsR0FBRyxDQUFDLEdBQUcsUUFBUSxTQUFTLENBQUMsRUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDSCxDQUFBO1FBQ2QsV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFvQixDQUFBO1FBQzVDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQTtLQUN2RDtJQUNELE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDM0Msd0JBQXdCLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQztLQUNqRCxDQUFDLENBQUE7SUFDRixPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmxhbmtOb2RlLCBMaXRlcmFsLCBOYW1lZE5vZGUsIFN0YXRlbWVudCwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IFhtbEVsZW1lbnQsIFhtbFRleHQgfSBmcm9tICdAcmdyb3ZlL3BhcnNlLXhtbCdcbmltcG9ydCB7IERDQVQsIEZPQUYsIFJERiB9IGZyb20gJy4uL25hbWVzcGFjZXMnXG5pbXBvcnQgeyBjcmVhdGVEb2N1bWVudCwgTkFNRVNQQUNFUywgeG1sVG9TdHJpbmcgfSBmcm9tICcuLi8uLi94bWwtdXRpbHMnXG5pbXBvcnQgeyBCQVNFX1VSSSB9IGZyb20gJy4vdXJpJ1xuXG5mdW5jdGlvbiBmdWxsTmFtZVRvWG1sKGZ1bGxOYW1lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gTkFNRVNQQUNFUykge1xuICAgIGlmIChmdWxsTmFtZS5zdGFydHNXaXRoKE5BTUVTUEFDRVNba2V5XSkpIHtcbiAgICAgIHJldHVybiBba2V5LCBmdWxsTmFtZS5yZXBsYWNlKE5BTUVTUEFDRVNba2V5XSwgJycpXVxuICAgIH1cbiAgfVxuICByZXR1cm4gW251bGwsIGZ1bGxOYW1lXVxufVxuXG5mdW5jdGlvbiBjcmVhdGVYbWxFbGVtZW50RnJvbU5vZGUoXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIG5vZGU6IE5hbWVkTm9kZSB8IExpdGVyYWxcbik6IFhtbEVsZW1lbnQgfCBYbWxUZXh0IHtcbiAgaWYgKG5vZGUgaW5zdGFuY2VvZiBMaXRlcmFsKSB7XG4gICAgcmV0dXJuIG5ldyBYbWxUZXh0KG5vZGUudmFsdWUpXG4gIH1cbiAgY29uc3QgdHlwZSA9IGRhdGFTdG9yZS50aGUobm9kZSwgUkRGKCd0eXBlJykpIGFzIE5hbWVkTm9kZVxuICBpZiAoIXR5cGUpIHJldHVybiBudWxsXG5cbiAgY29uc3Qgc3RhdGVtZW50cyA9IGRhdGFTdG9yZS5zdGF0ZW1lbnRzTWF0Y2hpbmcobm9kZSwgbnVsbCwgbnVsbClcbiAgY29uc3QgY2hpbGRyZW4gPSBzdGF0ZW1lbnRzXG4gICAgLy8gZmlsdGVyaW5nIG91dCB0aGUgcmRmOnR5cGUgc3RhdGVtZW50cyBiZWNhdXNlIHRoZXkgYXJlIGFscmVhZHkgdXNlZCBhYm92ZVxuICAgIC5maWx0ZXIoKHN0YXRlbWVudCkgPT4gc3RhdGVtZW50LnByZWRpY2F0ZS52YWx1ZSAhPT0gUkRGKCd0eXBlJykudmFsdWUpXG4gICAgLm1hcCgoc3RhdGVtZW50KSA9PiB7XG4gICAgICBpZiAoc3RhdGVtZW50Lm9iamVjdC50b1N0cmluZygpID09PSBzdGF0ZW1lbnQuc3ViamVjdC50b1N0cmluZygpKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIC8vIHNwZWNpYWwgY2FzZXM6IGZvYWY6cHJpbWFyeVRvcGljIGluIGRjYXQ6Q2F0YWxvZ1JlY29yZFxuICAgICAgaWYgKHN0YXRlbWVudC5wcmVkaWNhdGUudmFsdWUgPT09IEZPQUYoJ3ByaW1hcnlUb3BpYycpLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgWG1sRWxlbWVudChgZm9hZjpwcmltYXJ5VG9waWNgLCB7XG4gICAgICAgICAgJ3JkZjpyZXNvdXJjZSc6IHN0YXRlbWVudC5vYmplY3QudmFsdWUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IFtuYW1lc3BhY2UsIG5hbWVdID0gZnVsbE5hbWVUb1htbChzdGF0ZW1lbnQucHJlZGljYXRlLnZhbHVlKVxuICAgICAgY29uc3Qgb2JqZWN0Tm9kZSA9IGNyZWF0ZVhtbEVsZW1lbnRGcm9tTm9kZShcbiAgICAgICAgZGF0YVN0b3JlLFxuICAgICAgICBzdGF0ZW1lbnQub2JqZWN0IGFzIE5hbWVkTm9kZVxuICAgICAgKVxuICAgICAgaWYgKCFvYmplY3ROb2RlKSB7XG4gICAgICAgIC8vIG5vIG9iamVjdCBub2RlOiBzaW1wbHkgdXNlIHRoZSBvYmplY3QgdmFsdWVcbiAgICAgICAgcmV0dXJuIG5ldyBYbWxFbGVtZW50KFxuICAgICAgICAgIGAke25hbWVzcGFjZX06JHtuYW1lfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ3JkZjpyZXNvdXJjZSc6IHN0YXRlbWVudC5vYmplY3QudmFsdWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBbXVxuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyB3cmFwIHRoZSBvYmplY3Qgbm9kZSBpbiB0aGUgcHJlZGljYXRlIG9uZVxuICAgICAgcmV0dXJuIG5ldyBYbWxFbGVtZW50KGAke25hbWVzcGFjZX06JHtuYW1lfWAsIHt9LCBbb2JqZWN0Tm9kZV0pXG4gICAgfSlcbiAgICAuZmlsdGVyKChjaGlsZCkgPT4gISFjaGlsZClcbiAgY29uc3QgW25hbWVzcGFjZSwgbmFtZV0gPSBmdWxsTmFtZVRvWG1sKHR5cGUudmFsdWUpXG4gIGNvbnN0IGF0dHJpYnV0ZXMgPVxuICAgIG5vZGUgaW5zdGFuY2VvZiBCbGFua05vZGVcbiAgICAgID8ge31cbiAgICAgIDoge1xuICAgICAgICAgICdyZGY6YWJvdXQnOiBub2RlLnZhbHVlLFxuICAgICAgICB9XG4gIHJldHVybiBuZXcgWG1sRWxlbWVudChgJHtuYW1lc3BhY2V9OiR7bmFtZX1gLCBhdHRyaWJ1dGVzLCBjaGlsZHJlbilcbn1cblxuLyoqXG4gKiBUaGlzIHdpbGwgb3V0cHV0IGFuIFhNTCBkb2N1bWVudCBzZXJpYWxpemVkIGFzIHN0cmluZywgdGFpbG9yZWQgaW4gYSB3YXkgdGhhdCBpdFxuICogY2FuIGJlIHVuZGVyc3Rvb2QgYW5kIGluZGV4ZWQgYnkgR040IGRjYXQtYXAgcGx1Z2luXG4gKiBAcGFyYW0gZGF0YVN0b3JlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRHcmFwaFRvWG1sKGRhdGFTdG9yZTogU3RvcmUpOiBzdHJpbmcge1xuICAvLyB3ZSBzdGFydCB3aXRoIHRoZSBjYXRhbG9nIG5vZGUgKHdoaWNoIGlzIGNyZWF0ZWQgaWYgbWlzc2luZylcbiAgbGV0IGNhdGFsb2dOb2RlID0gZGF0YVN0b3JlLnN0YXRlbWVudHNNYXRjaGluZyhcbiAgICBudWxsLFxuICAgIFJERigndHlwZScpLFxuICAgIERDQVQoJ0NhdGFsb2cnKVxuICApWzBdPy5zdWJqZWN0IGFzIE5hbWVkTm9kZVxuICBpZiAoIWNhdGFsb2dOb2RlKSB7XG4gICAgY29uc3QgcmVjb3JkTm9kZSA9IGRhdGFTdG9yZS50aGUobnVsbCwgUkRGKCd0eXBlJyksIERDQVQoJ0NhdGFsb2dSZWNvcmQnKSlcbiAgICBjb25zdCBzdGF0ZW1lbnQgPSBkYXRhU3RvcmUuYWRkKFxuICAgICAgc3ltKGAke0JBU0VfVVJJfWNhdGFsb2dgKSxcbiAgICAgIFJERigndHlwZScpLFxuICAgICAgRENBVCgnQ2F0YWxvZycpXG4gICAgKSBhcyBTdGF0ZW1lbnRcbiAgICBjYXRhbG9nTm9kZSA9IHN0YXRlbWVudC5zdWJqZWN0IGFzIE5hbWVkTm9kZVxuICAgIGRhdGFTdG9yZS5hZGQoY2F0YWxvZ05vZGUsIERDQVQoJ3JlY29yZCcpLCByZWNvcmROb2RlKVxuICB9XG4gIGNvbnN0IHJvb3RFbCA9IG5ldyBYbWxFbGVtZW50KCdyZGY6UkRGJywge30sIFtcbiAgICBjcmVhdGVYbWxFbGVtZW50RnJvbU5vZGUoZGF0YVN0b3JlLCBjYXRhbG9nTm9kZSksXG4gIF0pXG4gIHJldHVybiB4bWxUb1N0cmluZyhjcmVhdGVEb2N1bWVudChyb290RWwpKVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const BASE_URI = 'http://geonetwork-ui/';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvbWV0YWRhdGEtY29udmVydGVyL3NyYy9saWIvZGNhdC1hcC91dGlscy91cmkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLHVCQUF1QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJBU0VfVVJJID0gJ2h0dHA6Ly9nZW9uZXR3b3JrLXVpLydcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { sym } from 'rdflib';
|
|
2
|
+
import { DCAT, DCTERMS, FOAF, RDF } from './namespaces';
|
|
3
|
+
import { getOrAddLiteral, getOrAddLocalizedLiteral, getOrAddStatement, } from './utils/graph-utils';
|
|
4
|
+
import { BASE_URI } from './utils/uri';
|
|
5
|
+
function getOrAddDatasetNode(record, dataStore, recordNode) {
|
|
6
|
+
if (dataStore.holds(null, RDF('type'), DCAT('Dataset'))) {
|
|
7
|
+
return dataStore.the(null, RDF('type'), DCAT('Dataset'));
|
|
8
|
+
}
|
|
9
|
+
const datasetNode = sym(`${BASE_URI}dataset/${record.uniqueIdentifier}`);
|
|
10
|
+
dataStore.add(datasetNode, RDF('type'), DCAT('Dataset'));
|
|
11
|
+
dataStore.add(recordNode, FOAF('primaryTopic'), datasetNode);
|
|
12
|
+
return datasetNode;
|
|
13
|
+
}
|
|
14
|
+
export function writeUniqueIdentifier(record, dataStore, recordNode) {
|
|
15
|
+
getOrAddStatement(dataStore, recordNode, DCTERMS('identifier'), record.uniqueIdentifier);
|
|
16
|
+
}
|
|
17
|
+
export function writeTitle(record, dataStore, recordNode) {
|
|
18
|
+
const dataset = getOrAddDatasetNode(record, dataStore, recordNode);
|
|
19
|
+
getOrAddLocalizedLiteral(dataStore, dataset, DCTERMS('title'), record.title, 'en');
|
|
20
|
+
getOrAddLiteral(dataStore, dataset, DCTERMS('title'), record.title);
|
|
21
|
+
}
|
|
22
|
+
export function writeAbstract(record, dataStore, recordNode) {
|
|
23
|
+
const dataset = getOrAddDatasetNode(record, dataStore, recordNode);
|
|
24
|
+
getOrAddLocalizedLiteral(dataStore, dataset, DCTERMS('description'), record.abstract, 'en');
|
|
25
|
+
getOrAddLiteral(dataStore, dataset, DCTERMS('description'), record.abstract);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtcGFydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9kY2F0LWFwL3dyaXRlLXBhcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBb0IsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkQsT0FBTyxFQUNMLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsaUJBQWlCLEdBQ2xCLE1BQU0scUJBQXFCLENBQUE7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUV0QyxTQUFTLG1CQUFtQixDQUMxQixNQUFxQixFQUNyQixTQUFnQixFQUNoQixVQUFxQjtJQUVyQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtRQUN2RCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQWMsQ0FBQTtLQUN0RTtJQUNELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQVEsV0FBVyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO0lBQ3hFLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtJQUN4RCxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDNUQsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsTUFBcUIsRUFDckIsU0FBZ0IsRUFDaEIsVUFBcUI7SUFFckIsaUJBQWlCLENBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixPQUFPLENBQUMsWUFBWSxDQUFDLEVBQ3JCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDeEIsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUN4QixNQUFxQixFQUNyQixTQUFnQixFQUNoQixVQUFxQjtJQUVyQixNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQ2xFLHdCQUF3QixDQUN0QixTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDaEIsTUFBTSxDQUFDLEtBQUssRUFDWixJQUFJLENBQ0wsQ0FBQTtJQUNELGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDckUsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQXFCLEVBQ3JCLFNBQWdCLEVBQ2hCLFVBQXFCO0lBRXJCLE1BQU0sT0FBTyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUE7SUFDbEUsd0JBQXdCLENBQ3RCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUN0QixNQUFNLENBQUMsUUFBUSxFQUNmLElBQUksQ0FDTCxDQUFBO0lBQ0QsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IE5hbWVkTm9kZSwgU3RvcmUsIHN5bSB9IGZyb20gJ3JkZmxpYidcbmltcG9ydCB7IERDQVQsIERDVEVSTVMsIEZPQUYsIFJERiB9IGZyb20gJy4vbmFtZXNwYWNlcydcbmltcG9ydCB7XG4gIGdldE9yQWRkTGl0ZXJhbCxcbiAgZ2V0T3JBZGRMb2NhbGl6ZWRMaXRlcmFsLFxuICBnZXRPckFkZFN0YXRlbWVudCxcbn0gZnJvbSAnLi91dGlscy9ncmFwaC11dGlscydcbmltcG9ydCB7IEJBU0VfVVJJIH0gZnJvbSAnLi91dGlscy91cmknXG5cbmZ1bmN0aW9uIGdldE9yQWRkRGF0YXNldE5vZGUoXG4gIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgZGF0YVN0b3JlOiBTdG9yZSxcbiAgcmVjb3JkTm9kZTogTmFtZWROb2RlXG4pOiBOYW1lZE5vZGUge1xuICBpZiAoZGF0YVN0b3JlLmhvbGRzKG51bGwsIFJERigndHlwZScpLCBEQ0FUKCdEYXRhc2V0JykpKSB7XG4gICAgcmV0dXJuIGRhdGFTdG9yZS50aGUobnVsbCwgUkRGKCd0eXBlJyksIERDQVQoJ0RhdGFzZXQnKSkgYXMgTmFtZWROb2RlXG4gIH1cbiAgY29uc3QgZGF0YXNldE5vZGUgPSBzeW0oYCR7QkFTRV9VUkl9ZGF0YXNldC8ke3JlY29yZC51bmlxdWVJZGVudGlmaWVyfWApXG4gIGRhdGFTdG9yZS5hZGQoZGF0YXNldE5vZGUsIFJERigndHlwZScpLCBEQ0FUKCdEYXRhc2V0JykpXG4gIGRhdGFTdG9yZS5hZGQocmVjb3JkTm9kZSwgRk9BRigncHJpbWFyeVRvcGljJyksIGRhdGFzZXROb2RlKVxuICByZXR1cm4gZGF0YXNldE5vZGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVW5pcXVlSWRlbnRpZmllcihcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbikge1xuICBnZXRPckFkZFN0YXRlbWVudChcbiAgICBkYXRhU3RvcmUsXG4gICAgcmVjb3JkTm9kZSxcbiAgICBEQ1RFUk1TKCdpZGVudGlmaWVyJyksXG4gICAgcmVjb3JkLnVuaXF1ZUlkZW50aWZpZXJcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVUaXRsZShcbiAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICBkYXRhU3RvcmU6IFN0b3JlLFxuICByZWNvcmROb2RlOiBOYW1lZE5vZGVcbikge1xuICBjb25zdCBkYXRhc2V0ID0gZ2V0T3JBZGREYXRhc2V0Tm9kZShyZWNvcmQsIGRhdGFTdG9yZSwgcmVjb3JkTm9kZSlcbiAgZ2V0T3JBZGRMb2NhbGl6ZWRMaXRlcmFsKFxuICAgIGRhdGFTdG9yZSxcbiAgICBkYXRhc2V0LFxuICAgIERDVEVSTVMoJ3RpdGxlJyksXG4gICAgcmVjb3JkLnRpdGxlLFxuICAgICdlbidcbiAgKVxuICBnZXRPckFkZExpdGVyYWwoZGF0YVN0b3JlLCBkYXRhc2V0LCBEQ1RFUk1TKCd0aXRsZScpLCByZWNvcmQudGl0bGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cml0ZUFic3RyYWN0KFxuICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gIGRhdGFTdG9yZTogU3RvcmUsXG4gIHJlY29yZE5vZGU6IE5hbWVkTm9kZVxuKSB7XG4gIGNvbnN0IGRhdGFzZXQgPSBnZXRPckFkZERhdGFzZXROb2RlKHJlY29yZCwgZGF0YVN0b3JlLCByZWNvcmROb2RlKVxuICBnZXRPckFkZExvY2FsaXplZExpdGVyYWwoXG4gICAgZGF0YVN0b3JlLFxuICAgIGRhdGFzZXQsXG4gICAgRENURVJNUygnZGVzY3JpcHRpb24nKSxcbiAgICByZWNvcmQuYWJzdHJhY3QsXG4gICAgJ2VuJ1xuICApXG4gIGdldE9yQWRkTGl0ZXJhbChkYXRhU3RvcmUsIGRhdGFzZXQsIERDVEVSTVMoJ2Rlc2NyaXB0aW9uJyksIHJlY29yZC5hYnN0cmFjdClcbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Iso19139Converter } from './iso19139';
|
|
2
2
|
import { Iso191153Converter } from './iso19115-3';
|
|
3
|
+
import { DcatApConverter } from './dcat-ap';
|
|
3
4
|
export function findConverterForDocument(document) {
|
|
4
5
|
if (document.indexOf('mdb:MD_Metadata') > 0) {
|
|
5
6
|
return new Iso191153Converter();
|
|
@@ -7,9 +8,18 @@ export function findConverterForDocument(document) {
|
|
|
7
8
|
else if (document.indexOf('gmd:MD_Metadata') > 0) {
|
|
8
9
|
return new Iso19139Converter();
|
|
9
10
|
}
|
|
11
|
+
else if (/@prefix\s*[a-z]+\s*:\s*<http:\/\/www\.w3\.org\/ns\/dcat#>\s*\./.test(document)) {
|
|
12
|
+
return new DcatApConverter('text/turtle');
|
|
13
|
+
}
|
|
14
|
+
else if (/xmlns:[a-z]+="http:\/\/www\.w3\.org\/ns\/dcat#"/.test(document)) {
|
|
15
|
+
return new DcatApConverter('application/rdf+xml');
|
|
16
|
+
}
|
|
17
|
+
else if (/"[a-zA-Z]+"\s*:\s*"http:\/\/www\.w3\.org\/ns\/dcat#/.test(document)) {
|
|
18
|
+
return new DcatApConverter('application/ld+json');
|
|
19
|
+
}
|
|
10
20
|
else {
|
|
11
21
|
throw new Error(`No suitable converter found for the following document:
|
|
12
22
|
${document.substring(0, 400)}...`);
|
|
13
23
|
}
|
|
14
24
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9maW5kLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFM0MsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxRQUFnQjtJQUVoQixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDM0MsT0FBTyxJQUFJLGtCQUFrQixFQUFFLENBQUE7S0FDaEM7U0FBTSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDbEQsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUE7S0FDL0I7U0FBTSxJQUNMLGdFQUFnRSxDQUFDLElBQUksQ0FDbkUsUUFBUSxDQUNULEVBQ0Q7UUFDQSxPQUFPLElBQUksZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFBO0tBQzFDO1NBQU0sSUFBSSxpREFBaUQsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDM0UsT0FBTyxJQUFJLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0tBQ2xEO1NBQU0sSUFDTCxxREFBcUQsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3BFO1FBQ0EsT0FBTyxJQUFJLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO0tBQ2xEO1NBQU07UUFDTCxNQUFNLElBQUksS0FBSyxDQUFDO0VBQ2xCLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtLQUMvQjtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJc28xOTEzOUNvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMzknXG5pbXBvcnQgeyBCYXNlQ29udmVydGVyIH0gZnJvbSAnLi9iYXNlLmNvbnZlcnRlcidcbmltcG9ydCB7IElzbzE5MTE1M0NvbnZlcnRlciB9IGZyb20gJy4vaXNvMTkxMTUtMydcbmltcG9ydCB7IERjYXRBcENvbnZlcnRlciB9IGZyb20gJy4vZGNhdC1hcCdcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChcbiAgZG9jdW1lbnQ6IHN0cmluZ1xuKTogQmFzZUNvbnZlcnRlcjxzdHJpbmc+IHtcbiAgaWYgKGRvY3VtZW50LmluZGV4T2YoJ21kYjpNRF9NZXRhZGF0YScpID4gMCkge1xuICAgIHJldHVybiBuZXcgSXNvMTkxMTUzQ29udmVydGVyKClcbiAgfSBlbHNlIGlmIChkb2N1bWVudC5pbmRleE9mKCdnbWQ6TURfTWV0YWRhdGEnKSA+IDApIHtcbiAgICByZXR1cm4gbmV3IElzbzE5MTM5Q29udmVydGVyKClcbiAgfSBlbHNlIGlmIChcbiAgICAvQHByZWZpeFxccypbYS16XStcXHMqOlxccyo8aHR0cDpcXC9cXC93d3dcXC53M1xcLm9yZ1xcL25zXFwvZGNhdCM+XFxzKlxcLi8udGVzdChcbiAgICAgIGRvY3VtZW50XG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gbmV3IERjYXRBcENvbnZlcnRlcigndGV4dC90dXJ0bGUnKVxuICB9IGVsc2UgaWYgKC94bWxuczpbYS16XSs9XCJodHRwOlxcL1xcL3d3d1xcLnczXFwub3JnXFwvbnNcXC9kY2F0I1wiLy50ZXN0KGRvY3VtZW50KSkge1xuICAgIHJldHVybiBuZXcgRGNhdEFwQ29udmVydGVyKCdhcHBsaWNhdGlvbi9yZGYreG1sJylcbiAgfSBlbHNlIGlmIChcbiAgICAvXCJbYS16QS1aXStcIlxccyo6XFxzKlwiaHR0cDpcXC9cXC93d3dcXC53M1xcLm9yZ1xcL25zXFwvZGNhdCMvLnRlc3QoZG9jdW1lbnQpXG4gICkge1xuICAgIHJldHVybiBuZXcgRGNhdEFwQ29udmVydGVyKCdhcHBsaWNhdGlvbi9sZCtqc29uJylcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1aXRhYmxlIGNvbnZlcnRlciBmb3VuZCBmb3IgdGhlIGZvbGxvd2luZyBkb2N1bWVudDpcbiR7ZG9jdW1lbnQuc3Vic3RyaW5nKDAsIDQwMCl9Li4uYClcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Iso19139Converter } from '../iso19139';
|
|
2
2
|
import { renameElements } from '../xml-utils';
|
|
3
3
|
import { readContacts, readKind, readLandingPage, readLineage, readOnlineResources, readOwnerOrganization, readRecordCreated, readRecordPublished, readRecordUpdated, readResourceContacts, readUniqueIdentifier, } from './read-parts';
|
|
4
|
-
import { writeContacts, writeContactsForResource, writeKind, writeLandingPage, writeLineage, writeOnlineResources,
|
|
4
|
+
import { writeContacts, writeContactsForResource, writeKind, writeLandingPage, writeLineage, writeOnlineResources, writeRecordCreated, writeRecordPublished, writeRecordUpdated, writeResourceCreated, writeResourcePublished, writeResourceUpdated, writeSpatialRepresentation, writeStatus, writeUniqueIdentifier, } from './write-parts';
|
|
5
5
|
export class Iso191153Converter extends Iso19139Converter {
|
|
6
6
|
constructor() {
|
|
7
7
|
super();
|
|
@@ -26,7 +26,7 @@ export class Iso191153Converter extends Iso19139Converter {
|
|
|
26
26
|
this.writers['resourcePublished'] = writeResourcePublished;
|
|
27
27
|
this.writers['contacts'] = writeContacts;
|
|
28
28
|
this.writers['contactsForResource'] = writeContactsForResource;
|
|
29
|
-
this.writers['ownerOrganization'] =
|
|
29
|
+
this.writers['ownerOrganization'] = () => undefined; // fixme: find a way to store this value properly
|
|
30
30
|
this.writers['landingPage'] = writeLandingPage;
|
|
31
31
|
this.writers['lineage'] = writeLineage;
|
|
32
32
|
this.writers['onlineResources'] = writeOnlineResources;
|
|
@@ -120,4 +120,4 @@ export class Iso191153Converter extends Iso19139Converter {
|
|
|
120
120
|
return result;
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMTUtMy5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL2lzbzE5MTE1LTMuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGVBQWUsRUFDZixXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLFdBQVcsRUFDWCxxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUE7QUFFdEIsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGlCQUFpQjtJQUN2RDtRQUNFLEtBQUssRUFBRSxDQUFBO1FBRVAsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLG9CQUFvQixDQUFBO1FBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFBO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsaUJBQWlCLENBQUE7UUFDakQsSUFBSSxDQUFD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LG9CQUFvQixFQUFFLG9CQUFvQjtZQUMxQyx1QkFBdUIsRUFBRSx1QkFBdUI7WUFDaEQsc0JBQXNCLEVBQUUsc0JBQXNCO1lBQzlDLHdCQUF3QixFQUFFLHdCQUF3QjtZQUNsRCxvQkFBb0IsRUFBRSxvQkFBb0I7WUFDMUMsMkJBQTJCLEVBQUUsMkJBQTJCO1lBRXhELFlBQVk7WUFDWixxQkFBcUIsRUFBRSxxQkFBcUI7WUFDNUMsc0JBQXNCLEVBQUUsc0JBQXNCO1lBQzlDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLHFCQUFxQixFQUFFLHFCQUFxQjtZQUU1Qyx1QkFBdUI7WUFDdkIsU0FBUyxFQUFFLHFCQUFxQjtTQUNqQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FDZixNQUFxQixFQUNyQixTQUFrQjtRQUVsQixJQUFJLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3ZELHdFQUF3RTtRQUN4RSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDckIsb0NBQW9DLEVBQ3BDLGlEQUFpRCxDQUNsRCxDQUFBO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgWG1sRWxlbWVudCB9IGZyb20gJ0ByZ3JvdmUvcGFyc2UteG1sJ1xuaW1wb3J0IHsgSXNvMTkxMzlDb252ZXJ0ZXIgfSBmcm9tICcuLi9pc28xOTEzOSdcbmltcG9ydCB7IHJlbmFtZUVsZW1lbnRzIH0gZnJvbSAnLi4veG1sLXV0aWxzJ1xuaW1wb3J0IHtcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkS2luZCxcbiAgcmVhZExhbmRpbmdQYWdlLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFB1Ymxpc2hlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNvbnRhY3RzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgd3JpdGVDb250YWN0cyxcbiAgd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICB3cml0ZUtpbmQsXG4gIHdyaXRlTGFuZGluZ1BhZ2UsXG4gIHdyaXRlTGluZWFnZSxcbiAgd3JpdGVPbmxpbmVSZXNvdXJjZXMsXG4gIHdyaXRlT3duZXJPcmdhbml6YXRpb24sXG4gIHdyaXRlUmVjb3JkQ3JlYXRlZCxcbiAgd3JpdGVSZWNvcmRQdWJsaXNoZWQsXG4gIHdyaXRlUmVjb3JkVXBkYXRlZCxcbiAgd3JpdGVSZXNvdXJjZUNyZWF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VQdWJsaXNoZWQsXG4gIHdyaXRlUmVzb3VyY2VVcGRhdGVkLFxuICB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgd3JpdGVTdGF0dXMsXG4gIHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi93cml0ZS1wYXJ0cydcblxuZXhwb3J0IGNsYXNzIElzbzE5MTE1M0NvbnZlcnRlciBleHRlbmRzIElzbzE5MTM5Q29udmVydGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSByZWFkVW5pcXVlSWRlbnRpZmllclxuICAgIHRoaXMucmVhZGVyc1sna2luZCddID0gcmVhZEtpbmRcbiAgICB0aGlzLnJlYWRlcnNbJ3JlY29yZFVwZGF0ZWQnXSA9IHJlYWRSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10gPSByZWFkUmVjb3JkQ3JlYXRlZFxuICAgIHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10gPSByZWFkUmVjb3JkUHVibGlzaGVkXG4gICAgdGhpcy5yZWFkZXJzWydjb250YWN0cyddID0gcmVhZENvbnRhY3RzXG4gICAgdGhpcy5yZWFkZXJzWydjb250YWN0c0ZvclJlc291cmNlJ10gPSByZWFkUmVzb3VyY2VDb250YWN0c1xuICAgIHRoaXMucmVhZGVyc1snb3duZXJPcmdhbml6YXRpb24nXSA9IHJlYWRPd25lck9yZ2FuaXphdGlvblxuICAgIHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXSA9IHJlYWRMYW5kaW5nUGFnZVxuICAgIHRoaXMucmVhZGVyc1snbGluZWFnZSddID0gcmVhZExpbmVhZ2VcbiAgICB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddID0gcmVhZE9ubGluZVJlc291cmNlc1xuXG4gICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSB3cml0ZVVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLndyaXRlcnNbJ2tpbmQnXSA9IHdyaXRlS2luZFxuICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddID0gd3JpdGVSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10gPSB3cml0ZVJlY29yZENyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gd3JpdGVSZWNvcmRQdWJsaXNoZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddID0gd3JpdGVSZXNvdXJjZVVwZGF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddID0gd3JpdGVSZXNvdXJjZUNyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10gPSB3cml0ZVJlc291cmNlUHVibGlzaGVkXG4gICAgdGhpcy53cml0ZXJzWydjb250YWN0cyddID0gd3JpdGVDb250YWN0c1xuICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gd3JpdGVDb250YWN0c0ZvclJlc291cmNlXG4gICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddID0gd3JpdGVPd25lck9yZ2FuaXphdGlvblxuICAgIHRoaXMud3JpdGVyc1snbGFuZGluZ1BhZ2UnXSA9IHdyaXRlTGFuZGluZ1BhZ2VcbiAgICB0aGlzLndyaXRlcnNbJ2xpbmVhZ2UnXSA9IHdyaXRlTGluZWFnZVxuICAgIHRoaXMud3JpdGVyc1snb25saW5lUmVzb3VyY2VzJ10gPSB3cml0ZU9ubGluZVJlc291cmNlc1xuICAgIHRoaXMud3JpdGVyc1snc3RhdHVzJ10gPSB3cml0ZVN0YXR1c1xuICAgIHRoaXMud3JpdGVyc1snc3BhdGlhbFJlcHJlc2VudGF0aW9uJ10gPSB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvblxuICB9XG5cbiAgYmVmb3JlRG9jdW1lbnRDcmVhdGlvbihyb290RWw6IFhtbEVsZW1lbnQpIHtcbiAgICByZW5hbWVFbGVtZW50cyhyb290RWwsIHtcbiAgICAgIGdtZDogJ21kYicsXG4gICAgICAnZ21kOmNoYXJhY3RlckVuY29kaW5nJzogJ2xhbjpjaGFyYWN0ZXJFbmNvZGluZycsXG4gICAgICAnZ21kOk1EX0NoYXJhY3RlclNldENvZGUnOiAnbGFuOk1EX0NoYXJhY3RlclNldENvZGUnLFxuICAgICAgJ2dtZDpNRF9EYXRhSWRlbnRpZmljYXRpb24nOiAnbXJpOk1EX0RhdGFJZGVudGlmaWNhdGlvbicsXG4gICAgICAnZ21kOmNpdGF0aW9uJzogJ21yaTpjaXRhdGlvbicsXG4gICAgICAnZ21kOmFic3RyYWN0JzogJ21yaTphYnN0cmFjdCcsXG4gICAgICAnZ21kOnRpdGxlJzogJ2NpdDp0aXRsZScsXG4gICAgICAnZ21kOkNJX0NpdGF0aW9uJzogJ2NpdDpDSV9DaXRhdGlvbicsXG4gICAgICAnZ214OkFuY2hvcic6ICdnY3g6QW5jaG9yJyxcblxuICAgICAgLy8gbGFuZ3VhZ2VzXG4gICAgICAnZ21kOlBUX0xvY2FsZSc6ICdsYW46UFRfTG9jYWxlJyxcbiAgICAgICdnbWQ6bGFuZ3VhZ2VDb2RlJzogJ2xhbjpsYW5ndWFnZUNvZGUnLFxuICAgICAgJ2dtZDpMYW5ndWFnZUNvZGUnOiAnbGFuOkxhbmd1YWdlQ29kZScsXG5cbiAgICAgIC8vIHN0YXR1c1xuICAgICAgJ2dtZDpzdGF0dXMnOiAnbXJpOnN0YXR1cycsXG4gICAgICAnZ21kOk1EX1Byb2dyZXNzQ29kZSc6ICdtcmk6TURfUHJvZ3Jlc3NDb2RlJyxcblxuICAgICAgLy8gZGF0ZXNcbiAgICAgICdnbWQ6ZGF0ZSc6ICdjaXQ6ZGF0ZScsXG4gICAgICAnZ21kOkNJX0RhdGUnOiAnY2l0OkNJX0RhdGUnLFxuICAgICAgJ2dtZDpkYXRlVHlwZSc6ICdjaXQ6ZGF0ZVR5cGUnLFxuICAgICAgJ2dtZDpDSV9EYXRlVHlwZUNvZGUnOiAnY2l0OkNJX0RhdGVUeXBlQ29kZScsXG5cbiAgICAgIC8vIGNvbnRhY3RzXG4gICAgICAnZ21kOkNJX1Jlc3BvbnNpYmlsaXR5JzogJ2NpdDpDSV9SZXNwb25zaWJpbGl0eScsXG4gICAgICAnZ21kOnJvbGUnOiAnY2l0OnJvbGUnLFxuICAgICAgJ2dtZDpDSV9Sb2xlQ29kZSc6ICdjaXQ6Q0lfUm9sZUNvZGUnLFxuXG4gICAgICAvLyBrZXl3b3Jkc1xuICAgICAgJ2dtZDpkZXNjcmlwdGl2ZUtleXdvcmRzJzogJ21yaTpkZXNjcmlwdGl2ZUtleXdvcmRzJyxcbiAgICAgICdnbWQ6TURfS2V5d29yZHMnOiAnbXJpOk1EX0tleXdvcmRzJyxcbiAgICAgICdnbWQ6dHlwZSc6ICdtcmk6dHlwZScsXG4gICAgICAnZ21kOk1EX0tleXdvcmRUeXBlQ29kZSc6ICdtcmk6TURfS2V5d29yZFR5cGVDb2RlJyxcbiAgICAgICdnbWQ6dGhlc2F1cnVzTmFtZSc6ICdtcmk6dGhlc2F1cnVzTmFtZScsXG4gICAgICAnZ21kOmtleXdvcmQnOiAnbXJpOmtleXdvcmQnLFxuICAgICAgJ2dtZDppZGVudGlmaWVyJzogJ2NpdDppZGVudGlmaWVyJyxcbiAgICAgICdnbWQ6TURfSWRlbnRpZmllcic6ICdtY2M6TURfSWRlbnRpZmllcicsXG4gICAgICAnZ21kOmNvZGUnOiAnbWNjOmNvZGUnLFxuXG4gICAgICAvLyBkaXN0cmlidXRpb25zXG4gICAgICAnZ21kOk1EX0Rpc3RyaWJ1dGlvbic6ICdtcmQ6TURfRGlzdHJpYnV0aW9uJyxcbiAgICAgICdnbWQ6dHJhbnNmZXJPcHRpb25zJzogJ21yZDp0cmFuc2Zlck9wdGlvbnMnLFxuICAgICAgJ2dtZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJzogJ21yZDpNRF9EaWdpdGFsVHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICdnbWQ6b25MaW5lJzogJ21yZDpvbkxpbmUnLFxuICAgICAgJ2dtZDpkaXN0cmlidXRpb25Gb3JtYXQnOiAnbXJkOmRpc3RyaWJ1dGlvbkZvcm1hdCcsXG4gICAgICAnZ21kOk1EX0Zvcm1hdCc6ICdtcmQ6TURfRm9ybWF0JyxcbiAgICAgICdnbWQ6Q0lfT25saW5lUmVzb3VyY2UnOiAnY2l0OkNJX09ubGluZVJlc291cmNlJyxcbiAgICAgICdnbWQ6bGlua2FnZSc6ICdjaXQ6bGlua2FnZScsXG4gICAgICAnZ21kOm5hbWUnOiAnY2l0Om5hbWUnLFxuICAgICAgJ2dtZDpkZXNjcmlwdGlvbic6ICdjaXQ6ZGVzY3JpcHRpb24nLFxuICAgICAgJ2dtZDpDSV9PbkxpbmVGdW5jdGlvbkNvZGUnOiAnY2l0OkNJX09uTGluZUZ1bmN0aW9uQ29kZScsXG4gICAgICAnZ21kOmZ1bmN0aW9uJzogJ2NpdDpmdW5jdGlvbicsXG4gICAgICAnZ21kOnByb3RvY29sJzogJ2NpdDpwcm90b2NvbCcsXG5cbiAgICAgIC8vIHRvcGljXG4gICAgICAnZ21kOnRvcGljQ2F0ZWdvcnknOiAnbXJpOnRvcGljQ2F0ZWdvcnknLFxuICAgICAgJ2dtZDpNRF9Ub3BpY0NhdGVnb3J5Q29kZSc6ICdtcmk6TURfVG9waWNDYXRlZ29yeUNvZGUnLFxuXG4gICAgICAvLyB1cGRhdGUgZnJlcXVlbmN5XG4gICAgICAnZ21kOnJlc291cmNlTWFpbnRlbmFuY2UnOiAnbXJpOnJlc291cmNlTWFpbnRlbmFuY2UnLFxuICAgICAgJ2dtZDpNRF9NYWludGVuYW5jZUluZm9ybWF0aW9uJzogJ21taTpNRF9NYWludGVuYW5jZUluZm9ybWF0aW9uJyxcbiAgICAgICdnbWQ6dXNlckRlZmluZWRNYWludGVuYW5jZUZyZXF1ZW5jeSc6XG4gICAgICAgICdtbWk6dXNlckRlZmluZWRNYWludGVuYW5jZUZyZXF1ZW5jeScsXG4gICAgICAnZ3RzOlRNX1BlcmlvZER1cmF0aW9uJzogJ2djbzpUTV9QZXJpb2REdXJhdGlvbicsXG5cbiAgICAgIC8vIGNvbnN0cmFpbnRzXG4gICAgICAnZ21kOnJlc291cmNlQ29uc3RyYWludHMnOiAnbXJpOnJlc291cmNlQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9Db25zdHJhaW50cyc6ICdtY286TURfQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpNRF9MZWdhbENvbnN0cmFpbnRzJzogJ21jbzpNRF9MZWdhbENvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6TURfU2VjdXJpdHlDb25zdHJhaW50cyc6ICdtY286TURfU2VjdXJpdHlDb25zdHJhaW50cycsXG4gICAgICAnZ21kOnVzZUxpbWl0YXRpb24nOiAnbWNvOnVzZUxpbWl0YXRpb24nLFxuICAgICAgJ2dtZDp1c2VDb25zdHJhaW50cyc6ICdtY286dXNlQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDphY2Nlc3NDb25zdHJhaW50cyc6ICdtY286YWNjZXNzQ29uc3RyYWludHMnLFxuICAgICAgJ2dtZDpvdGhlckNvbnN0cmFpbnRzJzogJ21jbzpvdGhlckNvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6TURfUmVzdHJpY3Rpb25Db2RlJzogJ21jbzpNRF9SZXN0cmljdGlvbkNvZGUnLFxuICAgICAgJ2dtZDpjbGFzc2lmaWNhdGlvbic6ICdtY286Y2xhc3NpZmljYXRpb24nLFxuICAgICAgJ2dtZDpNRF9DbGFzc2lmaWNhdGlvbkNvZGUnOiAnbWNvOk1EX0NsYXNzaWZpY2F0aW9uQ29kZScsXG5cbiAgICAgIC8vIG92ZXJ2aWV3c1xuICAgICAgJ2dtZDpncmFwaGljT3ZlcnZpZXcnOiAnbXJpOmdyYXBoaWNPdmVydmlldycsXG4gICAgICAnZ21kOk1EX0Jyb3dzZUdyYXBoaWMnOiAnbWNjOk1EX0Jyb3dzZUdyYXBoaWMnLFxuICAgICAgJ2dtZDpmaWxlTmFtZSc6ICdtY2M6ZmlsZU5hbWUnLFxuICAgICAgJ2dtZDpmaWxlRGVzY3JpcHRpb24nOiAnbWNjOmZpbGVEZXNjcmlwdGlvbicsXG5cbiAgICAgIC8vIG5vIG1vcmUgVVJMIGVsZW1lbnRzXG4gICAgICAnZ21kOlVSTCc6ICdnY286Q2hhcmFjdGVyU3RyaW5nJyxcbiAgICB9KVxuICB9XG5cbiAgYXN5bmMgd3JpdGVSZWNvcmQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZT86IHN0cmluZ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXN1bHQgPSBhd2FpdCBzdXBlci53cml0ZVJlY29yZChyZWNvcmQsIHJlZmVyZW5jZSlcbiAgICAvLyBmaXggZ2NvIG5hbWVzcGFjZSBkZWZpbml0aW9uIChjaGFuZ2VzIGJldHdlZW4gaXNvMTkxMzkgYW5kIGlzbzE5MTE1LTNcbiAgICByZXN1bHQgPSByZXN1bHQucmVwbGFjZShcbiAgICAgICdcImh0dHA6Ly93d3cuaXNvdGMyMTEub3JnLzIwMDUvZ2NvXCInLFxuICAgICAgJ1wiaHR0cDovL3N0YW5kYXJkcy5pc28ub3JnL2lzby8xOTExNS8tMy9nY28vMS4wXCInXG4gICAgKVxuICAgIHJldHVybiByZXN1bHRcbiAgfVxufVxuIl19
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNvMTkxMTUtMy5jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2xpYi9pc28xOTExNS0zL2lzbzE5MTE1LTMuY29udmVydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFDTCxZQUFZLEVBQ1osUUFBUSxFQUNSLGVBQWUsRUFDZixXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ25CLGlCQUFpQixFQUNqQixvQkFBb0IsRUFDcEIsb0JBQW9CLEdBQ3JCLE1BQU0sY0FBYyxDQUFBO0FBQ3JCLE9BQU8sRUFDTCxhQUFhLEVBQ2Isd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixrQkFBa0IsRUFDbEIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUNwQiwwQkFBMEIsRUFDMUIsV0FBVyxFQUNYLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQTtBQUV0QixNQUFNLE9BQU8sa0JBQW1CLFNBQVEsaUJBQWlCO0lBQ3ZEO1FBQ0UsS0FBSyxFQUFFLENBQUE7UUFFUCxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsb0JBQW9CLENBQUE7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUE7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxpQkFBaUIsQ0FBQTtRQUNqRCxJQUFJLENBQUMsT0FBTyxDQUFDLGVB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bUJBQW1CO1lBQ3hDLG9CQUFvQixFQUFFLG9CQUFvQjtZQUMxQyx1QkFBdUIsRUFBRSx1QkFBdUI7WUFDaEQsc0JBQXNCLEVBQUUsc0JBQXNCO1lBQzlDLHdCQUF3QixFQUFFLHdCQUF3QjtZQUNsRCxvQkFBb0IsRUFBRSxvQkFBb0I7WUFDMUMsMkJBQTJCLEVBQUUsMkJBQTJCO1lBRXhELFlBQVk7WUFDWixxQkFBcUIsRUFBRSxxQkFBcUI7WUFDNUMsc0JBQXNCLEVBQUUsc0JBQXNCO1lBQzlDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLHFCQUFxQixFQUFFLHFCQUFxQjtZQUU1Qyx1QkFBdUI7WUFDdkIsU0FBUyxFQUFFLHFCQUFxQjtTQUNqQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FDZixNQUFxQixFQUNyQixTQUFrQjtRQUVsQixJQUFJLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ3ZELHdFQUF3RTtRQUN4RSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FDckIsb0NBQW9DLEVBQ3BDLGlEQUFpRCxDQUNsRCxDQUFBO1FBQ0QsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgWG1sRWxlbWVudCB9IGZyb20gJ0ByZ3JvdmUvcGFyc2UteG1sJ1xuaW1wb3J0IHsgSXNvMTkxMzlDb252ZXJ0ZXIgfSBmcm9tICcuLi9pc28xOTEzOSdcbmltcG9ydCB7IHJlbmFtZUVsZW1lbnRzIH0gZnJvbSAnLi4veG1sLXV0aWxzJ1xuaW1wb3J0IHtcbiAgcmVhZENvbnRhY3RzLFxuICByZWFkS2luZCxcbiAgcmVhZExhbmRpbmdQYWdlLFxuICByZWFkTGluZWFnZSxcbiAgcmVhZE9ubGluZVJlc291cmNlcyxcbiAgcmVhZE93bmVyT3JnYW5pemF0aW9uLFxuICByZWFkUmVjb3JkQ3JlYXRlZCxcbiAgcmVhZFJlY29yZFB1Ymxpc2hlZCxcbiAgcmVhZFJlY29yZFVwZGF0ZWQsXG4gIHJlYWRSZXNvdXJjZUNvbnRhY3RzLFxuICByZWFkVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi9yZWFkLXBhcnRzJ1xuaW1wb3J0IHtcbiAgd3JpdGVDb250YWN0cyxcbiAgd3JpdGVDb250YWN0c0ZvclJlc291cmNlLFxuICB3cml0ZUtpbmQsXG4gIHdyaXRlTGFuZGluZ1BhZ2UsXG4gIHdyaXRlTGluZWFnZSxcbiAgd3JpdGVPbmxpbmVSZXNvdXJjZXMsXG4gIHdyaXRlUmVjb3JkQ3JlYXRlZCxcbiAgd3JpdGVSZWNvcmRQdWJsaXNoZWQsXG4gIHdyaXRlUmVjb3JkVXBkYXRlZCxcbiAgd3JpdGVSZXNvdXJjZUNyZWF0ZWQsXG4gIHdyaXRlUmVzb3VyY2VQdWJsaXNoZWQsXG4gIHdyaXRlUmVzb3VyY2VVcGRhdGVkLFxuICB3cml0ZVNwYXRpYWxSZXByZXNlbnRhdGlvbixcbiAgd3JpdGVTdGF0dXMsXG4gIHdyaXRlVW5pcXVlSWRlbnRpZmllcixcbn0gZnJvbSAnLi93cml0ZS1wYXJ0cydcblxuZXhwb3J0IGNsYXNzIElzbzE5MTE1M0NvbnZlcnRlciBleHRlbmRzIElzbzE5MTM5Q29udmVydGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuXG4gICAgdGhpcy5yZWFkZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSByZWFkVW5pcXVlSWRlbnRpZmllclxuICAgIHRoaXMucmVhZGVyc1sna2luZCddID0gcmVhZEtpbmRcbiAgICB0aGlzLnJlYWRlcnNbJ3JlY29yZFVwZGF0ZWQnXSA9IHJlYWRSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy5yZWFkZXJzWydyZWNvcmRDcmVhdGVkJ10gPSByZWFkUmVjb3JkQ3JlYXRlZFxuICAgIHRoaXMucmVhZGVyc1sncmVjb3JkUHVibGlzaGVkJ10gPSByZWFkUmVjb3JkUHVibGlzaGVkXG4gICAgdGhpcy5yZWFkZXJzWydjb250YWN0cyddID0gcmVhZENvbnRhY3RzXG4gICAgdGhpcy5yZWFkZXJzWydjb250YWN0c0ZvclJlc291cmNlJ10gPSByZWFkUmVzb3VyY2VDb250YWN0c1xuICAgIHRoaXMucmVhZGVyc1snb3duZXJPcmdhbml6YXRpb24nXSA9IHJlYWRPd25lck9yZ2FuaXphdGlvblxuICAgIHRoaXMucmVhZGVyc1snbGFuZGluZ1BhZ2UnXSA9IHJlYWRMYW5kaW5nUGFnZVxuICAgIHRoaXMucmVhZGVyc1snbGluZWFnZSddID0gcmVhZExpbmVhZ2VcbiAgICB0aGlzLnJlYWRlcnNbJ29ubGluZVJlc291cmNlcyddID0gcmVhZE9ubGluZVJlc291cmNlc1xuXG4gICAgdGhpcy53cml0ZXJzWyd1bmlxdWVJZGVudGlmaWVyJ10gPSB3cml0ZVVuaXF1ZUlkZW50aWZpZXJcbiAgICB0aGlzLndyaXRlcnNbJ2tpbmQnXSA9IHdyaXRlS2luZFxuICAgIHRoaXMud3JpdGVyc1sncmVjb3JkVXBkYXRlZCddID0gd3JpdGVSZWNvcmRVcGRhdGVkXG4gICAgdGhpcy53cml0ZXJzWydyZWNvcmRDcmVhdGVkJ10gPSB3cml0ZVJlY29yZENyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3JlY29yZFB1Ymxpc2hlZCddID0gd3JpdGVSZWNvcmRQdWJsaXNoZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlVXBkYXRlZCddID0gd3JpdGVSZXNvdXJjZVVwZGF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlQ3JlYXRlZCddID0gd3JpdGVSZXNvdXJjZUNyZWF0ZWRcbiAgICB0aGlzLndyaXRlcnNbJ3Jlc291cmNlUHVibGlzaGVkJ10gPSB3cml0ZVJlc291cmNlUHVibGlzaGVkXG4gICAgdGhpcy53cml0ZXJzWydjb250YWN0cyddID0gd3JpdGVDb250YWN0c1xuICAgIHRoaXMud3JpdGVyc1snY29udGFjdHNGb3JSZXNvdXJjZSddID0gd3JpdGVDb250YWN0c0ZvclJlc291cmNlXG4gICAgdGhpcy53cml0ZXJzWydvd25lck9yZ2FuaXphdGlvbiddID0gKCkgPT4gdW5kZWZpbmVkIC8vIGZpeG1lOiBmaW5kIGEgd2F5IHRvIHN0b3JlIHRoaXMgdmFsdWUgcHJvcGVybHlcbiAgICB0aGlzLndyaXRlcnNbJ2xhbmRpbmdQYWdlJ10gPSB3cml0ZUxhbmRpbmdQYWdlXG4gICAgdGhpcy53cml0ZXJzWydsaW5lYWdlJ10gPSB3cml0ZUxpbmVhZ2VcbiAgICB0aGlzLndyaXRlcnNbJ29ubGluZVJlc291cmNlcyddID0gd3JpdGVPbmxpbmVSZXNvdXJjZXNcbiAgICB0aGlzLndyaXRlcnNbJ3N0YXR1cyddID0gd3JpdGVTdGF0dXNcbiAgICB0aGlzLndyaXRlcnNbJ3NwYXRpYWxSZXByZXNlbnRhdGlvbiddID0gd3JpdGVTcGF0aWFsUmVwcmVzZW50YXRpb25cbiAgfVxuXG4gIGJlZm9yZURvY3VtZW50Q3JlYXRpb24ocm9vdEVsOiBYbWxFbGVtZW50KSB7XG4gICAgcmVuYW1lRWxlbWVudHMocm9vdEVsLCB7XG4gICAgICBnbWQ6ICdtZGInLFxuICAgICAgJ2dtZDpjaGFyYWN0ZXJFbmNvZGluZyc6ICdsYW46Y2hhcmFjdGVyRW5jb2RpbmcnLFxuICAgICAgJ2dtZDpNRF9DaGFyYWN0ZXJTZXRDb2RlJzogJ2xhbjpNRF9DaGFyYWN0ZXJTZXRDb2RlJyxcbiAgICAgICdnbWQ6TURfRGF0YUlkZW50aWZpY2F0aW9uJzogJ21yaTpNRF9EYXRhSWRlbnRpZmljYXRpb24nLFxuICAgICAgJ2dtZDpjaXRhdGlvbic6ICdtcmk6Y2l0YXRpb24nLFxuICAgICAgJ2dtZDphYnN0cmFjdCc6ICdtcmk6YWJzdHJhY3QnLFxuICAgICAgJ2dtZDp0aXRsZSc6ICdjaXQ6dGl0bGUnLFxuICAgICAgJ2dtZDpDSV9DaXRhdGlvbic6ICdjaXQ6Q0lfQ2l0YXRpb24nLFxuICAgICAgJ2dteDpBbmNob3InOiAnZ2N4OkFuY2hvcicsXG5cbiAgICAgIC8vIGxhbmd1YWdlc1xuICAgICAgJ2dtZDpQVF9Mb2NhbGUnOiAnbGFuOlBUX0xvY2FsZScsXG4gICAgICAnZ21kOmxhbmd1YWdlQ29kZSc6ICdsYW46bGFuZ3VhZ2VDb2RlJyxcbiAgICAgICdnbWQ6TGFuZ3VhZ2VDb2RlJzogJ2xhbjpMYW5ndWFnZUNvZGUnLFxuXG4gICAgICAvLyBzdGF0dXNcbiAgICAgICdnbWQ6c3RhdHVzJzogJ21yaTpzdGF0dXMnLFxuICAgICAgJ2dtZDpNRF9Qcm9ncmVzc0NvZGUnOiAnbXJpOk1EX1Byb2dyZXNzQ29kZScsXG5cbiAgICAgIC8vIGRhdGVzXG4gICAgICAnZ21kOmRhdGUnOiAnY2l0OmRhdGUnLFxuICAgICAgJ2dtZDpDSV9EYXRlJzogJ2NpdDpDSV9EYXRlJyxcbiAgICAgICdnbWQ6ZGF0ZVR5cGUnOiAnY2l0OmRhdGVUeXBlJyxcbiAgICAgICdnbWQ6Q0lfRGF0ZVR5cGVDb2RlJzogJ2NpdDpDSV9EYXRlVHlwZUNvZGUnLFxuXG4gICAgICAvLyBjb250YWN0c1xuICAgICAgJ2dtZDpDSV9SZXNwb25zaWJpbGl0eSc6ICdjaXQ6Q0lfUmVzcG9uc2liaWxpdHknLFxuICAgICAgJ2dtZDpyb2xlJzogJ2NpdDpyb2xlJyxcbiAgICAgICdnbWQ6Q0lfUm9sZUNvZGUnOiAnY2l0OkNJX1JvbGVDb2RlJyxcblxuICAgICAgLy8ga2V5d29yZHNcbiAgICAgICdnbWQ6ZGVzY3JpcHRpdmVLZXl3b3Jkcyc6ICdtcmk6ZGVzY3JpcHRpdmVLZXl3b3JkcycsXG4gICAgICAnZ21kOk1EX0tleXdvcmRzJzogJ21yaTpNRF9LZXl3b3JkcycsXG4gICAgICAnZ21kOnR5cGUnOiAnbXJpOnR5cGUnLFxuICAgICAgJ2dtZDpNRF9LZXl3b3JkVHlwZUNvZGUnOiAnbXJpOk1EX0tleXdvcmRUeXBlQ29kZScsXG4gICAgICAnZ21kOnRoZXNhdXJ1c05hbWUnOiAnbXJpOnRoZXNhdXJ1c05hbWUnLFxuICAgICAgJ2dtZDprZXl3b3JkJzogJ21yaTprZXl3b3JkJyxcbiAgICAgICdnbWQ6aWRlbnRpZmllcic6ICdjaXQ6aWRlbnRpZmllcicsXG4gICAgICAnZ21kOk1EX0lkZW50aWZpZXInOiAnbWNjOk1EX0lkZW50aWZpZXInLFxuICAgICAgJ2dtZDpjb2RlJzogJ21jYzpjb2RlJyxcblxuICAgICAgLy8gZGlzdHJpYnV0aW9uc1xuICAgICAgJ2dtZDpNRF9EaXN0cmlidXRpb24nOiAnbXJkOk1EX0Rpc3RyaWJ1dGlvbicsXG4gICAgICAnZ21kOnRyYW5zZmVyT3B0aW9ucyc6ICdtcmQ6dHJhbnNmZXJPcHRpb25zJyxcbiAgICAgICdnbWQ6TURfRGlnaXRhbFRyYW5zZmVyT3B0aW9ucyc6ICdtcmQ6TURfRGlnaXRhbFRyYW5zZmVyT3B0aW9ucycsXG4gICAgICAnZ21kOm9uTGluZSc6ICdtcmQ6b25MaW5lJyxcbiAgICAgICdnbWQ6ZGlzdHJpYnV0aW9uRm9ybWF0JzogJ21yZDpkaXN0cmlidXRpb25Gb3JtYXQnLFxuICAgICAgJ2dtZDpNRF9Gb3JtYXQnOiAnbXJkOk1EX0Zvcm1hdCcsXG4gICAgICAnZ21kOkNJX09ubGluZVJlc291cmNlJzogJ2NpdDpDSV9PbmxpbmVSZXNvdXJjZScsXG4gICAgICAnZ21kOmxpbmthZ2UnOiAnY2l0OmxpbmthZ2UnLFxuICAgICAgJ2dtZDpuYW1lJzogJ2NpdDpuYW1lJyxcbiAgICAgICdnbWQ6ZGVzY3JpcHRpb24nOiAnY2l0OmRlc2NyaXB0aW9uJyxcbiAgICAgICdnbWQ6Q0lfT25MaW5lRnVuY3Rpb25Db2RlJzogJ2NpdDpDSV9PbkxpbmVGdW5jdGlvbkNvZGUnLFxuICAgICAgJ2dtZDpmdW5jdGlvbic6ICdjaXQ6ZnVuY3Rpb24nLFxuICAgICAgJ2dtZDpwcm90b2NvbCc6ICdjaXQ6cHJvdG9jb2wnLFxuXG4gICAgICAvLyB0b3BpY1xuICAgICAgJ2dtZDp0b3BpY0NhdGVnb3J5JzogJ21yaTp0b3BpY0NhdGVnb3J5JyxcbiAgICAgICdnbWQ6TURfVG9waWNDYXRlZ29yeUNvZGUnOiAnbXJpOk1EX1RvcGljQ2F0ZWdvcnlDb2RlJyxcblxuICAgICAgLy8gdXBkYXRlIGZyZXF1ZW5jeVxuICAgICAgJ2dtZDpyZXNvdXJjZU1haW50ZW5hbmNlJzogJ21yaTpyZXNvdXJjZU1haW50ZW5hbmNlJyxcbiAgICAgICdnbWQ6TURfTWFpbnRlbmFuY2VJbmZvcm1hdGlvbic6ICdtbWk6TURfTWFpbnRlbmFuY2VJbmZvcm1hdGlvbicsXG4gICAgICAnZ21kOnVzZXJEZWZpbmVkTWFpbnRlbmFuY2VGcmVxdWVuY3knOlxuICAgICAgICAnbW1pOnVzZXJEZWZpbmVkTWFpbnRlbmFuY2VGcmVxdWVuY3knLFxuICAgICAgJ2d0czpUTV9QZXJpb2REdXJhdGlvbic6ICdnY286VE1fUGVyaW9kRHVyYXRpb24nLFxuXG4gICAgICAvLyBjb25zdHJhaW50c1xuICAgICAgJ2dtZDpyZXNvdXJjZUNvbnN0cmFpbnRzJzogJ21yaTpyZXNvdXJjZUNvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6TURfQ29uc3RyYWludHMnOiAnbWNvOk1EX0NvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6TURfTGVnYWxDb25zdHJhaW50cyc6ICdtY286TURfTGVnYWxDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX1NlY3VyaXR5Q29uc3RyYWludHMnOiAnbWNvOk1EX1NlY3VyaXR5Q29uc3RyYWludHMnLFxuICAgICAgJ2dtZDp1c2VMaW1pdGF0aW9uJzogJ21jbzp1c2VMaW1pdGF0aW9uJyxcbiAgICAgICdnbWQ6dXNlQ29uc3RyYWludHMnOiAnbWNvOnVzZUNvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6YWNjZXNzQ29uc3RyYWludHMnOiAnbWNvOmFjY2Vzc0NvbnN0cmFpbnRzJyxcbiAgICAgICdnbWQ6b3RoZXJDb25zdHJhaW50cyc6ICdtY286b3RoZXJDb25zdHJhaW50cycsXG4gICAgICAnZ21kOk1EX1Jlc3RyaWN0aW9uQ29kZSc6ICdtY286TURfUmVzdHJpY3Rpb25Db2RlJyxcbiAgICAgICdnbWQ6Y2xhc3NpZmljYXRpb24nOiAnbWNvOmNsYXNzaWZpY2F0aW9uJyxcbiAgICAgICdnbWQ6TURfQ2xhc3NpZmljYXRpb25Db2RlJzogJ21jbzpNRF9DbGFzc2lmaWNhdGlvbkNvZGUnLFxuXG4gICAgICAvLyBvdmVydmlld3NcbiAgICAgICdnbWQ6Z3JhcGhpY092ZXJ2aWV3JzogJ21yaTpncmFwaGljT3ZlcnZpZXcnLFxuICAgICAgJ2dtZDpNRF9Ccm93c2VHcmFwaGljJzogJ21jYzpNRF9Ccm93c2VHcmFwaGljJyxcbiAgICAgICdnbWQ6ZmlsZU5hbWUnOiAnbWNjOmZpbGVOYW1lJyxcbiAgICAgICdnbWQ6ZmlsZURlc2NyaXB0aW9uJzogJ21jYzpmaWxlRGVzY3JpcHRpb24nLFxuXG4gICAgICAvLyBubyBtb3JlIFVSTCBlbGVtZW50c1xuICAgICAgJ2dtZDpVUkwnOiAnZ2NvOkNoYXJhY3RlclN0cmluZycsXG4gICAgfSlcbiAgfVxuXG4gIGFzeW5jIHdyaXRlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2U/OiBzdHJpbmdcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgc3VwZXIud3JpdGVSZWNvcmQocmVjb3JkLCByZWZlcmVuY2UpXG4gICAgLy8gZml4IGdjbyBuYW1lc3BhY2UgZGVmaW5pdGlvbiAoY2hhbmdlcyBiZXR3ZWVuIGlzbzE5MTM5IGFuZCBpc28xOTExNS0zXG4gICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UoXG4gICAgICAnXCJodHRwOi8vd3d3Lmlzb3RjMjExLm9yZy8yMDA1L2djb1wiJyxcbiAgICAgICdcImh0dHA6Ly9zdGFuZGFyZHMuaXNvLm9yZy9pc28vMTkxMTUvLTMvZ2NvLzEuMFwiJ1xuICAgIClcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cbiJdfQ==
|