geonetwork-ui 2.4.0-dev.e97caaf2 → 2.4.0-dev.f5019723
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/gn4/gn4.field.mapper.mjs +10 -3
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.mjs +6 -6
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.mjs +7 -4
- package/esm2022/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.mjs +17 -29
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +8 -15
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +6 -6
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +54 -54
- 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 +41 -7
- package/esm2022/libs/common/domain/src/lib/model/record/contact.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.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/data-access/gn4/src/fixtures/site.fixtures.mjs +5 -5
- package/esm2022/libs/data-access/gn4/src/fixtures/ui.fixtures.mjs +3 -3
- 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/chart-view/chart-view.component.mjs +1 -1
- 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/dataviz/src/lib/service/data.service.mjs +1 -1
- package/esm2022/libs/feature/dataviz/src/lib/table-view/table-view.component.mjs +1 -1
- 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 +4 -16
- package/esm2022/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.mjs +4 -2
- 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-resource-card/online-resource-card.component.mjs +71 -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 +15 -32
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.mjs +19 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.mjs +23 -10
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.mjs +3 -3
- 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 +148 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +86 -11
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.mjs +4 -8
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.mjs +36 -7
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +35 -59
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.mjs +4 -4
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +14 -5
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/index.mjs +2 -2
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/components/wizard/wizard.component.mjs +3 -3
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +41 -7
- package/esm2022/libs/feature/editor/src/lib/models/editor-config.model.mjs +1 -1
- 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 +16 -16
- 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/style/map-style.fixtures.mjs +3 -3
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +4 -168
- package/esm2022/libs/feature/record/src/lib/data-view/data-view.component.mjs +1 -1
- 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/record/src/lib/state/mdview.facade.mjs +4 -2
- package/esm2022/libs/feature/router/src/lib/default/state/router.facade.mjs +1 -1
- package/esm2022/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.mjs +3 -3
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +12 -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/dataviz/src/lib/table/table.fixtures.mjs +3 -3
- package/esm2022/libs/ui/elements/src/index.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/download-item/download-item.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/downloads-list/downloads-list.component.mjs +1 -1
- package/esm2022/libs/ui/elements/src/lib/link-card/link-card.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +6 -6
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- package/esm2022/libs/ui/inputs/src/index.mjs +5 -1
- package/esm2022/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.mjs +7 -4
- package/esm2022/libs/ui/inputs/src/lib/badge/badge.component.mjs +5 -3
- package/esm2022/libs/ui/inputs/src/lib/button/button.component.mjs +8 -1
- package/esm2022/libs/ui/inputs/src/lib/date-picker/date-picker.component.mjs +11 -4
- package/esm2022/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.mjs +9 -3
- package/esm2022/libs/ui/inputs/src/lib/file-input/file-input.component.mjs +87 -0
- package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +5 -4
- 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 +4 -4
- package/esm2022/libs/ui/inputs/src/lib/text-area/text-area.component.mjs +4 -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 +3 -3
- package/esm2022/libs/ui/layout/src/index.mjs +3 -1
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +5 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.mjs +29 -0
- package/esm2022/libs/ui/layout/src/lib/sortable-list/sortable-list.component.mjs +43 -0
- 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/facets/fixtures/aggregations-model-response.mjs +7 -7
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +8 -8
- package/esm2022/libs/util/app-config/src/index.mjs +2 -1
- package/esm2022/libs/util/app-config/src/lib/fixtures.mjs +10 -10
- package/esm2022/libs/util/app-config/src/lib/map-layers.mjs +27 -0
- package/esm2022/libs/util/shared/src/lib/links/link-classifier.service.mjs +1 -1
- package/esm2022/libs/util/shared/src/lib/links/link-utils.mjs +1 -1
- package/esm2022/libs/util/shared/src/lib/services/theme.service.mjs +2 -1
- package/esm2022/libs/util/shared/src/lib/utils/bytes-convert.mjs +4 -1
- package/esm2022/translations/de.json +28 -2
- package/esm2022/translations/en.json +59 -33
- package/esm2022/translations/es.json +26 -0
- package/esm2022/translations/fr.json +90 -64
- package/esm2022/translations/it.json +28 -2
- package/esm2022/translations/nl.json +26 -0
- package/esm2022/translations/pt.json +26 -0
- package/fesm2022/geonetwork-ui.mjs +9462 -8515
- 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/gn4/gn4.field.mapper.d.ts +3 -3
- package/libs/api/metadata-converter/src/lib/gn4/gn4.field.mapper.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/read-parts.d.ts +2 -2
- package/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.d.ts +1 -2
- 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/read-parts.d.ts +4 -5
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +10 -11
- 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 +21 -2
- 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/model/record/metadata.model.d.ts +6 -6
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/platform.service.interface.d.ts +15 -0
- 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/data-access/gn4/src/fixtures/site.fixtures.d.ts +2 -2
- package/libs/data-access/gn4/src/fixtures/site.fixtures.d.ts.map +1 -1
- package/libs/data-access/gn4/src/fixtures/ui.fixtures.d.ts +1 -1
- package/libs/data-access/gn4/src/fixtures/ui.fixtures.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/chart-view/chart-view.component.d.ts +2 -2
- package/libs/feature/dataviz/src/lib/chart-view/chart-view.component.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/dataviz/src/lib/service/data.service.d.ts +6 -6
- package/libs/feature/dataviz/src/lib/service/data.service.d.ts.map +1 -1
- package/libs/feature/dataviz/src/lib/table-view/table-view.component.d.ts +3 -3
- package/libs/feature/dataviz/src/lib/table-view/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/contact-card/contact-card.component.d.ts +1 -5
- package/libs/feature/editor/src/lib/components/contact-card/contact-card.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.d.ts +2 -1
- package/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.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-resource-card/online-resource-card.component.d.ts +15 -0
- package/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.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 +2 -5
- 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-date-updated/form-field-date-updated.component.d.ts +9 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-date-updated/form-field-date-updated.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.d.ts +5 -2
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.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 +35 -0
- 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 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +20 -2
- 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-rich/form-field-rich.component.d.ts +1 -3
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts +7 -2
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +9 -15
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +5 -3
- 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/components/record-form/form-field/index.d.ts +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/index.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts +3 -2
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +10 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/models/editor-config.model.d.ts +6 -0
- package/libs/feature/editor/src/lib/models/editor-config.model.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 +7 -9
- 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/style/map-style.fixtures.d.ts +2 -2
- package/libs/feature/map/src/lib/style/map-style.fixtures.d.ts.map +1 -1
- 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/data-view/data-view.component.d.ts +3 -3
- package/libs/feature/record/src/lib/data-view/data-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.d.ts +10 -7
- 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 +14 -20
- package/libs/feature/record/src/lib/map-view/map-view.component.d.ts.map +1 -1
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts +7 -7
- package/libs/feature/record/src/lib/state/mdview.facade.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +5 -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/dataviz/src/lib/table/table.fixtures.d.ts +2 -2
- package/libs/ui/dataviz/src/lib/table/table.fixtures.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -1
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/download-item/download-item.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +7 -7
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/link-card/link-card.component.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts +2 -2
- package/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.d.ts.map +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 +4 -0
- package/libs/ui/inputs/src/index.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/badge/badge.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/button/button.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-picker/date-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts +24 -0
- package/libs/ui/inputs/src/lib/file-input/file-input.component.d.ts.map +1 -0
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +1 -1
- package/libs/ui/inputs/src/lib/image-input/image-input.component.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 +0 -1
- package/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/text-area/text-area.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/layout/src/index.d.ts +2 -0
- package/libs/ui/layout/src/index.d.ts.map +1 -1
- package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.d.ts +2 -2
- package/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.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/layout/src/lib/modal-dialog/modal-dialog.component.d.ts +20 -0
- package/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.d.ts.map +1 -0
- package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts +14 -0
- package/libs/ui/layout/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -0
- 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/facets/fixtures/aggregations-model-response.d.ts +3 -3
- package/libs/ui/search/src/lib/facets/fixtures/aggregations-model-response.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +3 -3
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +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/fixtures.d.ts +8 -8
- package/libs/util/app-config/src/lib/fixtures.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/links/link-classifier.service.d.ts +3 -3
- package/libs/util/shared/src/lib/links/link-classifier.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/links/link-utils.d.ts +6 -6
- package/libs/util/shared/src/lib/links/link-utils.d.ts.map +1 -1
- package/libs/util/shared/src/lib/services/theme.service.d.ts.map +1 -1
- package/libs/util/shared/src/lib/utils/bytes-convert.d.ts +2 -1
- package/libs/util/shared/src/lib/utils/bytes-convert.d.ts.map +1 -1
- 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/generic.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +1 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +1 -1
- 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/gn4/gn4.field.mapper.ts +18 -16
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/iso19115-3.converter.ts +5 -6
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/read-parts.ts +12 -4
- package/src/libs/api/metadata-converter/src/lib/iso19115-3/write-parts.ts +21 -43
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +5 -14
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +13 -15
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +133 -156
- 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 +47 -3
- package/src/libs/common/domain/src/lib/model/record/contact.model.ts +1 -1
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +7 -7
- package/src/libs/common/domain/src/lib/platform.service.interface.ts +26 -0
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
- package/src/libs/common/fixtures/src/index.ts +4 -1
- package/src/libs/common/fixtures/src/lib/editor/editor.fixtures.ts +37 -37
- package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-request.ts → aggregations-request.fixtures.ts} +1 -3
- package/src/libs/common/fixtures/src/lib/elasticsearch/{aggregations-response.ts → aggregations-response.fixtures.ts} +6 -8
- package/src/libs/common/fixtures/src/lib/elasticsearch/{full-response.ts → full-response.fixtures.ts} +1 -3
- package/src/libs/common/fixtures/src/lib/elasticsearch/index.ts +5 -5
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata-links.fixtures.ts +1 -3
- package/src/libs/common/fixtures/src/lib/elasticsearch/metadata.fixtures.ts +1739 -1742
- package/src/libs/common/fixtures/src/lib/elasticsearch/{search-requests.ts → search-requests.fixtures.ts} +1 -3
- package/src/libs/common/fixtures/src/lib/elasticsearch/{search-responses.ts → search-responses.fixtures.ts} +4 -6
- package/src/libs/common/fixtures/src/lib/geojson.fixtures.ts +57178 -57195
- package/src/libs/common/fixtures/src/lib/gn4/groups.fixtures.ts +2 -4
- package/src/libs/common/fixtures/src/lib/individual.fixtures.ts +61 -0
- package/src/libs/common/fixtures/src/lib/link.fixtures.ts +233 -164
- 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/ol-feature.fixtures.ts +10 -0
- package/src/libs/common/fixtures/src/lib/organisations.fixture.ts +35 -11
- package/src/libs/common/fixtures/src/lib/record-link.fixtures.ts +9 -7
- package/src/libs/common/fixtures/src/lib/records.fixtures.ts +9 -9
- package/src/libs/common/fixtures/src/lib/repository.fixtures.ts +4 -4
- package/src/libs/common/fixtures/src/lib/search/aggregations.ts +2 -3
- package/src/libs/common/fixtures/src/lib/user-feedbacks.fixtures.ts +14 -15
- package/src/libs/common/fixtures/src/lib/user.fixtures.ts +45 -15
- package/src/libs/data-access/gn4/src/fixtures/site.fixtures.ts +4 -4
- package/src/libs/data-access/gn4/src/fixtures/ui.fixtures.ts +2 -2
- package/src/libs/feature/catalog/src/lib/feature-catalog.module.ts +5 -1
- package/src/libs/feature/catalog/src/lib/sources/sources.fixture.ts +1 -1
- package/src/libs/feature/dataviz/src/lib/chart-view/chart-view.component.ts +3 -3
- package/src/libs/feature/dataviz/src/lib/feature-dataviz.module.ts +6 -2
- package/src/libs/feature/dataviz/src/lib/figure/figure.fixtures.ts +2 -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/dataviz/src/lib/service/data.service.ts +6 -6
- package/src/libs/feature/dataviz/src/lib/table-view/table-view.component.ts +4 -4
- 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 +12 -24
- package/src/libs/feature/editor/src/lib/components/contact-card/contact-card.component.ts +1 -13
- package/src/libs/feature/editor/src/lib/components/generic-keywords/generic-keywords.component.ts +1 -0
- 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-resource-card/online-resource-card.component.html +35 -0
- package/src/libs/feature/editor/src/lib/components/online-resource-card/online-resource-card.component.ts +79 -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.css +4 -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 +13 -23
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-contacts-for-resource/form-field-contacts-for-resource.component.ts +11 -50
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-resource-updated/form-field-resource-updated.component.ts → form-field-date-updated/form-field-date-updated.component.ts} +4 -4
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.html +3 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-keywords/form-field-keywords.component.ts +35 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-license/form-field-license.component.css +8 -0
- 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 +34 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.ts +182 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +11 -5
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +93 -4
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.html +13 -6
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-rich/form-field-rich.component.ts +0 -9
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.html +7 -2
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-spatial-extent/form-field-spatial-extent.component.ts +62 -6
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.css +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.html +23 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +37 -69
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.css +4 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-update-frequency/form-field-update-frequency.component.html +16 -14
- 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 +34 -20
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +12 -3
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/index.ts +1 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.html +31 -29
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +2 -1
- package/src/libs/feature/editor/src/lib/components/wizard/wizard.component.html +2 -6
- package/src/libs/feature/editor/src/lib/fields.config.ts +45 -6
- package/src/libs/feature/editor/src/lib/models/editor-config.model.ts +12 -0
- 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 +18 -21
- 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.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/style/map-style.fixtures.ts +29 -27
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +1 -229
- package/src/libs/feature/record/src/lib/data-view/data-view.component.ts +3 -3
- package/src/libs/feature/record/src/lib/external-viewer-button/external-viewer-button.component.ts +29 -20
- 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 +45 -72
- package/src/libs/feature/record/src/lib/state/mdview.facade.ts +5 -1
- package/src/libs/feature/router/src/lib/default/state/router.facade.ts +1 -1
- package/src/libs/feature/search/src/lib/fuzzy-search/fuzzy-search.component.html +1 -0
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +5 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +14 -3
- package/src/libs/feature/search/src/lib/state/fixtures/search-state.fixtures.ts +2 -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/dataviz/src/lib/chart/chart.fixtures.ts +2 -2
- package/src/libs/ui/dataviz/src/lib/table/table.fixtures.ts +2 -2
- package/src/libs/ui/elements/src/index.ts +1 -1
- package/src/libs/ui/elements/src/lib/download-item/download-item.component.ts +4 -4
- package/src/libs/ui/elements/src/lib/downloads-list/downloads-list.component.ts +7 -7
- package/src/libs/ui/elements/src/lib/link-card/link-card.component.ts +3 -3
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +13 -20
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.ts +1 -1
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +5 -0
- package/src/libs/ui/inputs/src/index.ts +4 -0
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.css +25 -18
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.html +38 -24
- package/src/libs/ui/inputs/src/lib/autocomplete/autocomplete.component.ts +4 -1
- package/src/libs/ui/inputs/src/lib/badge/badge.component.html +11 -3
- package/src/libs/ui/inputs/src/lib/badge/badge.component.ts +2 -1
- package/src/libs/ui/inputs/src/lib/button/button.component.ts +15 -1
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.css +7 -2
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.html +14 -6
- package/src/libs/ui/inputs/src/lib/date-picker/date-picker.component.ts +7 -1
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.css +7 -2
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.html +28 -23
- package/src/libs/ui/inputs/src/lib/date-range-picker/date-range-picker.component.ts +7 -1
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.css +4 -0
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.html +7 -3
- package/src/libs/ui/inputs/src/lib/file-input/file-input.component.ts +2 -1
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.css +4 -0
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +30 -22
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +2 -1
- 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.css +4 -3
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.html +0 -1
- package/src/libs/ui/inputs/src/lib/switch-toggle/switch-toggle.component.ts +1 -2
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/text-area/text-area.component.ts +1 -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 +1 -1
- package/src/libs/ui/layout/src/index.ts +2 -0
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +8 -3
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.ts +4 -3
- 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/modal-dialog/modal-dialog.component.html +15 -0
- package/src/libs/ui/layout/src/lib/modal-dialog/modal-dialog.component.ts +44 -0
- package/src/libs/ui/layout/src/lib/sortable-list/sortable-list.component.html +37 -0
- package/src/libs/ui/{elements → layout}/src/lib/sortable-list/sortable-list.component.ts +13 -16
- 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/facets/fixtures/aggregations-model-response.ts +7 -6
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +20 -9
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +5 -6
- package/src/libs/util/app-config/src/index.ts +1 -0
- package/src/libs/util/app-config/src/lib/fixtures.ts +9 -9
- package/src/libs/util/app-config/src/lib/map-layers.ts +31 -0
- package/src/libs/util/shared/src/lib/links/link-classifier.service.ts +4 -3
- package/src/libs/util/shared/src/lib/links/link-utils.ts +6 -6
- package/src/libs/util/shared/src/lib/services/theme.service.ts +1 -0
- package/src/libs/util/shared/src/lib/utils/bytes-convert.ts +4 -1
- package/tailwind.base.config.js +1 -0
- package/tailwind.base.css +38 -6
- package/translations/de.json +28 -2
- package/translations/en.json +59 -33
- package/translations/es.json +26 -0
- package/translations/fr.json +90 -64
- package/translations/it.json +28 -2
- package/translations/nl.json +26 -0
- package/translations/pt.json +26 -0
- package/translations/sk.json +26 -0
- package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +0 -96
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.mjs +0 -19
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.mjs +0 -17
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.mjs +0 -17
- 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/elements/src/lib/sortable-list/sortable-list.component.mjs +0 -39
- 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/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +0 -27
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +0 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts +0 -9
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.d.ts.map +0 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.d.ts +0 -8
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.d.ts.map +0 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.d.ts +0 -8
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.d.ts.map +0 -1
- 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/elements/src/lib/sortable-list/sortable-list.component.d.ts +0 -17
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.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/common/fixtures/src/lib/ol-feature.fixture.ts +0 -7
- package/src/libs/common/fixtures/src/lib/utils/freeze.ts +0 -10
- package/src/libs/common/fixtures/src/lib/utils/index.ts +0 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +0 -9
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +0 -113
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.html +0 -7
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.ts +0 -16
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.html +0 -13
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.ts +0 -16
- 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 -51
- 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/elements/src/lib/sortable-list/sortable-list.component.html +0 -29
- 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/editor/src/lib/components/{overview-upload/overview-upload.component.css → import-record/import-record.component.css} +0 -0
- /package/src/libs/feature/editor/src/lib/components/{record-form/form-field/form-field-resource-updated/form-field-resource-updated.component.css → online-resource-card/online-resource-card.component.css} +0 -0
- /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-temporal-extents/form-field-temporal-extents-date/form-field-temporal-extents-date.component.css → form-field-contacts/form-field-contacts.component.css} +0 -0
- /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-temporal-extents/form-field-temporal-extents-range/form-field-temporal-extents-range.component.css → form-field-date-updated/form-field-date-updated.component.css} +0 -0
- /package/src/libs/feature/editor/src/lib/components/record-form/form-field/{form-field-resource-updated/form-field-resource-updated.component.html → form-field-date-updated/form-field-date-updated.component.html} +0 -0
- /package/src/libs/feature/{map/src/lib/map-container/map-container.component.css → editor/src/lib/components/record-form/form-field/form-field-online-link-resources/form-field-online-link-resources.component.css} +0 -0
- /package/src/libs/feature/map/src/lib/{map-context/component/map-context.component.css → map-state-container/map-state-container.component.css} +0 -0
- /package/src/libs/ui/{map/src/lib/components/map/map.component.css → layout/src/lib/modal-dialog/modal-dialog.component.css} +0 -0
- /package/src/libs/ui/{elements → layout}/src/lib/sortable-list/sortable-list.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
|