@opengeospatial/jsonld-ui-utils 0.2.7 → 0.3.0
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/README.md +8 -16
- package/dist/index.cjs.js +30 -3
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +30 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/jsonld-ui-utils-leaflet.min.js +4 -4
- package/dist/jsonld-ui-utils-leaflet.min.js.map +1 -1
- package/dist/jsonld-ui-utils.min.js +4 -4
- package/dist/jsonld-ui-utils.min.js.map +1 -1
- package/dist/leaflet.cjs.js +28 -3
- package/dist/leaflet.cjs.js.map +1 -1
- package/dist/leaflet.esm.js +28 -3
- package/dist/leaflet.esm.js.map +1 -1
- package/dist/resource.d.ts +2 -0
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -14,17 +14,9 @@ A JavaScript/TypeScript library that renders JSON-LD feature data as interactive
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
npm install
|
|
17
|
+
npm install @opengeospatial/jsonld-ui-utils
|
|
18
18
|
# or
|
|
19
|
-
yarn add
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
To pin to a specific version:
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npm install github:avillar/jsonld-ui-utils#v0.2.7
|
|
26
|
-
# or
|
|
27
|
-
yarn add github:avillar/jsonld-ui-utils#v0.2.7
|
|
19
|
+
yarn add @opengeospatial/jsonld-ui-utils
|
|
28
20
|
```
|
|
29
21
|
|
|
30
22
|
### Optional peer dependencies
|
|
@@ -39,12 +31,12 @@ npm install jsonld
|
|
|
39
31
|
|
|
40
32
|
```html
|
|
41
33
|
<!-- optional: library-provided styles -->
|
|
42
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/
|
|
34
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@opengeospatial/jsonld-ui-utils@latest/dist/jsonld-ui-utils.css"/>
|
|
43
35
|
|
|
44
36
|
<!-- optional: jsonld peer dep (needed for context URL resolution) -->
|
|
45
37
|
<script src="https://cdn.jsdelivr.net/npm/jsonld@8/dist/jsonld.min.js"></script>
|
|
46
38
|
|
|
47
|
-
<script src="https://cdn.jsdelivr.net/
|
|
39
|
+
<script src="https://cdn.jsdelivr.net/npm/@opengeospatial/jsonld-ui-utils@latest/dist/jsonld-ui-utils.min.js"></script>
|
|
48
40
|
```
|
|
49
41
|
|
|
50
42
|
This exposes `jsonldUIUtils` as a global variable.
|
|
@@ -184,10 +176,10 @@ import { createJsonLDGeoJSONLayer } from '@opengeospatial/jsonld-ui-utils/leafle
|
|
|
184
176
|
|
|
185
177
|
```html
|
|
186
178
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"/>
|
|
187
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/
|
|
179
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@opengeospatial/jsonld-ui-utils@latest/dist/jsonld-ui-utils.css"/>
|
|
188
180
|
|
|
189
181
|
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
|
|
190
|
-
<script src="https://cdn.jsdelivr.net/
|
|
182
|
+
<script src="https://cdn.jsdelivr.net/npm/@opengeospatial/jsonld-ui-utils@latest/dist/jsonld-ui-utils-leaflet.min.js"></script>
|
|
191
183
|
```
|
|
192
184
|
|
|
193
185
|
This exposes `jsonldUIUtilsLeaflet` as a global variable.
|
|
@@ -227,8 +219,8 @@ Any other options are forwarded to `L.geoJSON`.
|
|
|
227
219
|
|
|
228
220
|
## Demos
|
|
229
221
|
|
|
230
|
-
- [Basic demo](https://
|
|
231
|
-
- [Leaflet demo](https://
|
|
222
|
+
- [Basic demo](https://ogcincubator.github.io/jsonld-ui-utils/demo/index.html) — renders a JSON-LD feature as an augmented properties table
|
|
223
|
+
- [Leaflet demo](https://ogcincubator.github.io/jsonld-ui-utils/demo/leaflet.html) — GeoJSON layer with popup tables and RDF augmentation
|
|
232
224
|
|
|
233
225
|
## Building from source
|
|
234
226
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -153,8 +153,19 @@ const ACCEPT_HEADER = [
|
|
|
153
153
|
'application/ld+json',
|
|
154
154
|
'application/rdf+xml',
|
|
155
155
|
].join(', ');
|
|
156
|
-
function
|
|
156
|
+
function getUserLanguages() {
|
|
157
157
|
var _a;
|
|
158
|
+
if (typeof navigator !== 'undefined' && ((_a = navigator.languages) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
159
|
+
return Array.from(navigator.languages);
|
|
160
|
+
}
|
|
161
|
+
try {
|
|
162
|
+
return [Intl.DateTimeFormat().resolvedOptions().locale];
|
|
163
|
+
}
|
|
164
|
+
catch (_b) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function findInStore(store, subjectUri, predicates, userLangs = getUserLanguages()) {
|
|
158
169
|
const subj = N3__namespace.DataFactory.namedNode(subjectUri);
|
|
159
170
|
for (const predUri of predicates) {
|
|
160
171
|
const quads = store
|
|
@@ -163,9 +174,23 @@ function findInStore(store, subjectUri, predicates) {
|
|
|
163
174
|
if (!quads.length) {
|
|
164
175
|
continue;
|
|
165
176
|
}
|
|
166
|
-
|
|
177
|
+
for (const lang of userLangs) {
|
|
178
|
+
const base = lang.split('-')[0].toLowerCase();
|
|
179
|
+
const match = quads.find(q => {
|
|
180
|
+
var _a;
|
|
181
|
+
const qLang = (_a = q.object.language) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
182
|
+
return qLang === lang.toLowerCase() || (qLang === null || qLang === void 0 ? void 0 : qLang.split('-')[0]) === base;
|
|
183
|
+
});
|
|
184
|
+
if (match) {
|
|
185
|
+
return match.object.value;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
167
188
|
const noLang = quads.find(q => !q.object.language);
|
|
168
|
-
|
|
189
|
+
if (noLang) {
|
|
190
|
+
return noLang.object.value;
|
|
191
|
+
}
|
|
192
|
+
const en = quads.find(q => { var _a; return ((_a = q.object.language) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'en'; });
|
|
193
|
+
return (en !== null && en !== void 0 ? en : quads[0]).object.value;
|
|
169
194
|
}
|
|
170
195
|
return null;
|
|
171
196
|
}
|
|
@@ -315,6 +340,7 @@ var resource = /*#__PURE__*/Object.freeze({
|
|
|
315
340
|
__proto__: null,
|
|
316
341
|
defaultFetchResourceOptions: defaultFetchResourceOptions,
|
|
317
342
|
fetchResource: fetchResource,
|
|
343
|
+
findInStore: findInStore,
|
|
318
344
|
loadFeature: loadFeature
|
|
319
345
|
});
|
|
320
346
|
|
|
@@ -568,6 +594,7 @@ exports.createPropertiesTable = createPropertiesTable;
|
|
|
568
594
|
exports.default = index;
|
|
569
595
|
exports.defaultFetchResourceOptions = defaultFetchResourceOptions;
|
|
570
596
|
exports.fetchResource = fetchResource;
|
|
597
|
+
exports.findInStore = findInStore;
|
|
571
598
|
exports.loadContext = loadContext;
|
|
572
599
|
exports.loadFeature = loadFeature;
|
|
573
600
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/jsonld.ts","../src/constants.ts","../src/resource.ts","../src/augment.ts","../src/index.ts"],"sourcesContent":["import {ContextDefinition} from 'jsonld';\n\ntype OrArray<T> = T | T[];\n\nexport type Context = OrArray<null | string | ContextDefinition>;\n\nexport type ContextObject = {\n \"@context\": Context;\n}\n\nconst jsonFetch = async (url: string) => {\n const response = await fetch(url, {\n headers: {'Accept': 'application/json'},\n });\n return await response.json() as ContextObject;\n};\n\nconst mergeContexts = (definitions: ContextDefinition[]) => {\n const mergePair = (a: ContextDefinition | null | undefined,\n b: ContextDefinition): ContextDefinition => {\n if (!a || !Object.keys(a).length) {\n return b;\n }\n const result = {...a};\n for (const [k, v] of Object.entries(b)) {\n result[k] = v;\n }\n return result;\n };\n\n if (!definitions.length) {\n return {};\n }\n if (definitions.length === 1) {\n return definitions[0];\n }\n let currentContext = definitions[0];\n for (let i = 1; i < definitions.length; i++) {\n currentContext = mergePair(currentContext, definitions[i]);\n }\n return currentContext;\n};\n\n\nexport async function loadContext(context: Context | ContextObject) {\n const loadedUrls = new Map<string, ContextObject>();\n\n const walk = async (definition: object, refChain?: string[]) => {\n for (const [key, value] of Object.entries(definition)) {\n if (key === '@context') {\n // @ts-ignore\n definition[key] = await load(value as Context, refChain);\n } else if (typeof value === 'object' && value !== null) {\n await walk(value, refChain);\n }\n }\n };\n\n const load = async (context: Context, refChain?: string[]): Promise<ContextDefinition> => {\n if (context === null || typeof context === 'undefined') {\n return {};\n }\n if (Array.isArray(context)) {\n // fetch and merge\n const contextEntries = await Promise.all(context.map(e => load(e, refChain)));\n return mergeContexts(contextEntries);\n } else if (typeof context === 'object') {\n await walk(context, refChain);\n return context;\n } else {\n if (refChain?.includes(context)) {\n throw new Error('Circular dependencies found: ' + refChain.join(' -> ') + ' -> ' + context);\n }\n const newRefChain = Array.isArray(refChain) ? refChain?.slice() : [];\n newRefChain.push(context);\n let newContext: ContextObject;\n if (!loadedUrls.has(context)) {\n newContext = await jsonFetch(context);\n loadedUrls.set(context, newContext);\n } else {\n newContext = loadedUrls.get(context) as ContextObject;\n }\n return load(newContext['@context'], newRefChain);\n }\n };\n\n if (typeof context === 'object' && context !== null && '@context' in context) {\n return load((context as ContextObject)['@context']);\n } else {\n return load(context);\n }\n}","const ns = (base: string) => (local: string): string => `${base}${local}`;\n\nexport const SKOS = ns('http://www.w3.org/2004/02/skos/core#');\nexport const RDFS = ns('http://www.w3.org/2000/01/rdf-schema#');\nexport const RDF = ns('http://www.w3.org/1999/02/22-rdf-syntax-ns#');\nexport const DCT = ns('http://purl.org/dc/terms/');\nexport const DC = ns('http://purl.org/dc/elements/1.1/');\nexport const SDO = ns('https://schema.org/');\nexport const FOAF = ns('http://xmlns.com/foaf/0.1/');\n\nexport const labelPredicates: string[] = [\n SKOS('prefLabel'),\n DCT('title'),\n DC('title'),\n SDO('name'),\n FOAF('name'),\n RDFS('label'),\n];\n\nexport const descriptionPredicates: string[] = [\n SKOS('definition'),\n DCT('description'),\n DC('description'),\n RDFS('comment'),\n];","import {loadContext} from \"./jsonld\";\nimport {descriptionPredicates, labelPredicates} from \"./constants\";\nimport * as N3 from 'n3';\nimport {RdfXmlParser} from 'rdfxml-streaming-parser';\n\nexport interface FetchResourceOptions {\n labelPredicates: string[],\n descriptionPredicates: string[],\n fallbackRainbowInstance?: string, // deprecated: use fallbackRainbowInstances\n fallbackRainbowInstances?: string | string[],\n fallbackSparqlEndpoint?: string, // deprecated: use fallbackSparqlEndpoints\n fallbackSparqlEndpoints?: string | string[],\n}\n\nexport const defaultFetchResourceOptions: FetchResourceOptions = {\n labelPredicates,\n descriptionPredicates,\n};\n\nexport interface CreatePropertiesTableOptions {\n propertiesField?: string | null,\n}\n\nexport interface ResourceData {\n uri: string,\n label: string | null,\n description?: string | null,\n}\n\nconst fetchResourceCache: { [uri: string]: Promise<ResourceData> } = {};\nconst requestCache: { [url: string]: Promise<N3.Store | null> } = {};\n\nconst N3_CONTENT_TYPES = new Set([\n 'text/turtle',\n 'text/n3',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'text/anot+turtle',\n]);\n\nconst ACCEPT_HEADER = [\n 'text/turtle',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'application/ld+json',\n 'application/rdf+xml',\n].join(', ');\n\nfunction findInStore(store: N3.Store, subjectUri: string, predicates: string[]): string | null {\n const subj = N3.DataFactory.namedNode(subjectUri);\n for (const predUri of predicates) {\n const quads = store\n .getQuads(subj, N3.DataFactory.namedNode(predUri), null, null)\n .filter(q => q.object.termType === 'Literal');\n if (!quads.length) {\n continue;\n }\n const en = quads.find(q => (q.object as N3.Literal).language === 'en');\n const noLang = quads.find(q => !(q.object as N3.Literal).language);\n return (en ?? noLang ?? quads[0]).object.value;\n }\n return null;\n}\n\nfunction parseTurtle(text: string, baseIRI: string, contentType: string): Promise<N3.Store> {\n const store = new N3.Store();\n const format = contentType === 'text/anot+turtle' ? 'text/turtle' : contentType as any;\n const parser = new N3.Parser({baseIRI, format});\n return new Promise((resolve, reject) => {\n parser.parse(text, (err, quad) => {\n if (err) {\n return reject(err);\n }\n if (quad) {\n store.addQuad(quad);\n }\n else {\n resolve(store);\n }\n });\n });\n}\n\nasync function parseJsonLd(text: string, baseIRI: string): Promise<N3.Store> {\n const jsonldMod = await import('jsonld') as any;\n if (!jsonldMod) {\n throw new Error('jsonld peer dependency is not available');\n }\n const doc = JSON.parse(text);\n const nquads = await jsonldMod.toRDF(doc, {format: 'application/n-quads', base: baseIRI});\n return parseTurtle(nquads, baseIRI, 'application/n-quads');\n}\n\nasync function parseRdfXml(text: string, baseIRI: string): Promise<N3.Store> {\n const store = new N3.Store();\n return new Promise((resolve, reject) => {\n const parser = new RdfXmlParser({baseIRI});\n parser.on('data', (quad: any) => store.addQuad(quad));\n parser.on('error', reject);\n parser.on('end', () => resolve(store));\n parser.write(text);\n parser.end();\n });\n}\n\nconst toArray = (val?: string | string[]): string[] =>\n !val ? [] : Array.isArray(val) ? val : [val];\n\nconst getSparqlQuery = (uri: string) => `DESCRIBE <${uri}>`;\n\nconst fetchAndParse = async (fetchFn: () => Promise<Response>, baseIRI: string): Promise<N3.Store | null> => {\n let response: Response;\n try {\n response = await fetchFn();\n if (!response.ok) {\n return null;\n }\n } catch {\n return null;\n }\n const contentType = response.headers.get('content-type')?.split(';')[0].trim() || 'text/turtle';\n const text = await response.text();\n try {\n if (N3_CONTENT_TYPES.has(contentType)) {\n return parseTurtle(text, baseIRI, contentType);\n }\n if (contentType === 'application/ld+json') {\n return parseJsonLd(text, baseIRI);\n }\n if (contentType === 'application/rdf+xml') {\n return parseRdfXml(text, baseIRI);\n }\n } catch {\n }\n return null;\n};\n\nconst fetchAndParseDocument = (docUrl: string, fetchFn: () => Promise<Response>): Promise<N3.Store | null> => {\n if (!(docUrl in requestCache)) {\n requestCache[docUrl] = fetchAndParse(fetchFn, docUrl);\n }\n return requestCache[docUrl];\n};\n\nconst findResourceInStore = async (storePromise: Promise<N3.Store | null>, uri: string, options: FetchResourceOptions): Promise<ResourceData | null> => {\n const store = await storePromise;\n if (!store) {\n return null;\n }\n const label = findInStore(store, uri, options.labelPredicates);\n if (!label) {\n return null;\n }\n return {uri, label, description: findInStore(store, uri, options.descriptionPredicates)};\n};\n\nconst actualFetchResource = async (uri: string, options: FetchResourceOptions): Promise<ResourceData> => {\n const docUrl = uri.includes('#') ? uri.split('#')[0] : uri;\n\n // 1. Direct (cached by document URL so hash siblings share one request)\n let result = await findResourceInStore(\n fetchAndParseDocument(docUrl, () => fetch(docUrl, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n\n // 2. Rainbow proxies (in order) — not supported for hash URIs\n const isHashUri = uri.includes('#');\n for (const instance of [...toArray(options.fallbackRainbowInstances), ...toArray(options.fallbackRainbowInstance)]) {\n if (result || isHashUri) {\n break;\n }\n const rainbowURL = new URL(instance);\n rainbowURL.searchParams.set('uri', uri);\n const rainbowUrlStr = rainbowURL.toString();\n result = await findResourceInStore(\n fetchAndParseDocument(rainbowUrlStr, () => fetch(rainbowUrlStr, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n }\n\n // 3. SPARQL endpoints (in order) — each DESCRIBE is unique per URI, no request cache\n for (const endpoint of [...toArray(options.fallbackSparqlEndpoints), ...toArray(options.fallbackSparqlEndpoint)]) {\n if (result) {\n break;\n }\n const formBody = new URLSearchParams({query: getSparqlQuery(uri)});\n result = await findResourceInStore(\n fetchAndParse(() => fetch(endpoint, {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/turtle, application/n-triples'},\n body: formBody.toString(),\n }), uri),\n uri, options,\n );\n }\n\n if (!result) {\n throw new Error(`No label data found for <${uri}>`);\n }\n return result;\n};\n\nexport async function fetchResource(uri: string, options: Partial<FetchResourceOptions> = {}) {\n const mergedOptions: FetchResourceOptions = {...defaultFetchResourceOptions, ...options};\n if (!(uri in fetchResourceCache)) {\n fetchResourceCache[uri] = actualFetchResource(uri, mergedOptions);\n }\n return fetchResourceCache[uri];\n}\n\nexport async function loadFeature(url: string) {\n const response = await fetch(url, {\n headers: {\n 'Accept': 'application/ld+json, application/json;q=0.9, */*;q=0.1',\n },\n });\n if (!response.ok) {\n throw new Error(`Could not load feature ${url}: ${response.status} - ${response.statusText}`);\n }\n const feature = await response.json();\n const context = await loadContext(feature);\n return {\n feature,\n context,\n };\n}","import {\n CreatePropertiesTableOptions,\n defaultFetchResourceOptions,\n fetchResource,\n FetchResourceOptions,\n} from \"./resource\";\nimport {ContextDefinition, ExpandedTermDefinition} from \"jsonld\";\n\nexport interface AugmentOptions extends FetchResourceOptions {\n replaceElements: boolean,\n}\n\nconst defaultAugmentOptions: AugmentOptions = {\n replaceElements: true,\n ...defaultFetchResourceOptions,\n};\n\nexport function createPropertiesTable(feature: { [index: string]: any }, container: HTMLElement,\n options: CreatePropertiesTableOptions = {\n propertiesField: 'properties',\n }) {\n const createLevel = (parent: HTMLElement, value: any, addHeaders = false) => {\n if (Array.isArray(value)) {\n for (const entry of value) {\n const newElem = createLevel(parent, entry);\n newElem.classList.add('array-entry');\n }\n return parent;\n } else if (value === null || typeof value === 'undefined' || typeof value !== 'object') {\n const span = document.createElement('span');\n span.classList.add('literal-value');\n span.textContent = '' + value;\n parent.appendChild(span);\n return span;\n } else {\n const table = document.createElement('table');\n table.classList.add('object-table');\n if (addHeaders) {\n table.innerHTML = '<thead><tr><th>Property</th><th>Value</th></tr></thead>';\n }\n const tbody = document.createElement('tbody');\n Object.entries(value).forEach(([k, v]) => {\n const row = document.createElement('tr');\n const keyCell = document.createElement('td');\n keyCell.classList.add('object-property');\n keyCell.setAttribute('data-property', k);\n keyCell.textContent = k;\n row.appendChild(keyCell);\n const valueCell = document.createElement('td');\n valueCell.classList.add('object-value');\n createLevel(valueCell, v);\n row.appendChild(valueCell);\n tbody.appendChild(row);\n });\n table.appendChild(tbody);\n parent.appendChild(table);\n return table;\n }\n };\n const wrapper = document.createElement('div');\n wrapper.classList.add('object-properties');\n container.appendChild(wrapper);\n if (options.propertiesField) {\n createLevel(wrapper, feature[options.propertiesField], true);\n } else {\n createLevel(wrapper, feature, true);\n }\n}\n\nexport async function augment(rootElem: HTMLElement, context: ContextDefinition, options: Partial<AugmentOptions> = {}) {\n\n const mergedOptions = {...defaultAugmentOptions, ...options};\n\n const resolveTerm = (term: string, contextStack: ContextDefinition[],\n useVocab = true, useBase = false): ExpandedTermDefinition | null => {\n if (term.indexOf('://') !== -1) {\n return {'@id': term};\n }\n let closestVocab: string | null = null;\n let closestBase: string | null = null;\n for (let i = contextStack.length - 1; i >= 0; i--) {\n if (term in contextStack[i]) {\n let resolvedTerm = contextStack[i][term];\n let resolvedId: string;\n if (resolvedTerm === null || typeof resolvedTerm === 'undefined' || typeof resolvedTerm === 'boolean'\n || Array.isArray(resolvedTerm)) {\n continue;\n }\n if (typeof resolvedTerm === 'string') {\n if (resolvedTerm === '@type') {\n return {'@id': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'};\n }\n resolvedId = resolvedTerm;\n resolvedTerm = {'@id': resolvedTerm};\n } else if (typeof resolvedTerm === 'object' && '@id' in resolvedTerm && typeof resolvedTerm['@id'] === 'string') {\n resolvedId = resolvedTerm['@id'];\n } else {\n continue;\n }\n const idx = resolvedId.indexOf(':');\n if (idx > -1) {\n const prefix = resolvedId.substring(0, idx);\n const localPart = resolvedId.substring(idx + 1);\n if (localPart.startsWith('//')) {\n // Full URI -> return\n return resolvedTerm;\n }\n const resolvedPrefix = resolveTerm(prefix, contextStack);\n if (resolvedPrefix !== null && '@id' in resolvedPrefix && typeof resolvedPrefix['@id'] === 'string') {\n // Prefix found and resolved\n resolvedTerm['@id'] = `${resolvedPrefix['@id']}${localPart}`;\n }\n return resolvedTerm;\n }\n }\n if (closestVocab === null && contextStack[i]['@vocab']) {\n closestVocab = contextStack[i]['@vocab']!;\n }\n if (closestBase === null && contextStack[i]['@base']) {\n closestBase = contextStack[i]['@base']!;\n }\n }\n if (term.indexOf(':') === -1) {\n if (useVocab && closestVocab) {\n return {'@id': `${closestVocab}${term}`};\n }\n if (useBase && closestBase) {\n return {'@id': `${closestBase}${term}`};\n }\n }\n return null;\n };\n\n const findPropertyChildren = (elem: HTMLElement) => {\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (node !== elem && nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('object-property')) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n const result: HTMLElement[] = [];\n let cur;\n while ((cur = walker.nextNode())) {\n result.push(cur as HTMLElement);\n }\n return result;\n };\n\n const findLiteralChildren = (elem: HTMLElement) => {\n const result: HTMLElement[] = [];\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (nodeElem.classList.contains('object-property') || nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('literal-value')) {\n result.push(nodeElem);\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) {\n }\n return result;\n };\n\n const updateElement = (elem: HTMLElement, resourceUri: string,\n replaceElements = true) => {\n elem.setAttribute('data-uri', resourceUri);\n elem.classList.add('resource-loading');\n fetchResource(resourceUri, mergedOptions)\n .then(resourceData => {\n let elemToUpdate = elem.querySelector('.resource-link') as HTMLElement || elem;\n if (resourceData.label) {\n elem.setAttribute('data-label', resourceData.label);\n if (mergedOptions.replaceElements) {\n elemToUpdate.textContent = resourceData.label;\n }\n }\n if (resourceData.description) {\n elem.setAttribute('data-description', resourceData.description);\n if (mergedOptions.replaceElements) {\n elemToUpdate.title = resourceData.description;\n }\n }\n elem.classList.add('resource-resolved');\n })\n .catch(e => {\n console.error(`Error resolving URI ${resourceUri}: ${e}`, {cause: e});\n elem.classList.add('resource-error');\n })\n .finally(() => {\n elem.classList.remove('resource-loading');\n });\n if (replaceElements) {\n const link = document.createElement(\"a\");\n link.href = resourceUri;\n link.target = '_blank';\n link.classList.add('resource-link');\n while (elem.firstChild) {\n link.appendChild(elem.firstChild);\n }\n elem.appendChild(link);\n }\n };\n\n const augmentInner = (elem: HTMLElement, contextStack: ContextDefinition[]) => {\n const propElems = findPropertyChildren(elem);\n for (const propElem of propElems) {\n let propertyName: string | null = null;\n propertyName = propElem.getAttribute('data-property');\n if (!propertyName) {\n propertyName = propElem.textContent.trim();\n }\n const resolvedProperty = resolveTerm(propertyName, contextStack);\n let newContextStack = contextStack;\n const valueElem = propElem.parentElement?.querySelector('.object-value') as HTMLElement;\n if (resolvedProperty && '@id' in resolvedProperty && typeof resolvedProperty['@id'] === 'string') {\n const propertyUri = resolvedProperty['@id'];\n updateElement(propElem, propertyUri, mergedOptions.replaceElements);\n if ('@context' in resolvedProperty) {\n newContextStack = [...contextStack, resolvedProperty['@context']!];\n }\n if (resolvedProperty['@type'] === '@id' && valueElem) {\n const literalElems = findLiteralChildren(valueElem);\n literalElems.forEach(literalElem => {\n const resolvedLiteral = resolveTerm(literalElem.textContent.trim(),\n newContextStack, false, true);\n if (resolvedLiteral && '@id' in resolvedLiteral && typeof resolvedLiteral['@id'] === 'string') {\n const resourceUri = resolvedLiteral['@id'];\n updateElement(literalElem, resourceUri, mergedOptions.replaceElements);\n }\n });\n }\n }\n if (valueElem) {\n augmentInner(valueElem as HTMLElement, newContextStack);\n }\n }\n };\n augmentInner(rootElem, [context]);\n}\n","export * from './resource';\nexport * from './jsonld';\nexport * from './augment';\n\nimport * as resource from './resource';\nimport * as jsonld from './jsonld';\nimport * as augment from './augment';\n\nexport default {\n ...resource,\n ...jsonld,\n ...augment,\n}"],"names":["N3","RdfXmlParser","augment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/jsonld.ts","../src/constants.ts","../src/resource.ts","../src/augment.ts","../src/index.ts"],"sourcesContent":["import {ContextDefinition} from 'jsonld';\n\ntype OrArray<T> = T | T[];\n\nexport type Context = OrArray<null | string | ContextDefinition>;\n\nexport type ContextObject = {\n \"@context\": Context;\n}\n\nconst jsonFetch = async (url: string) => {\n const response = await fetch(url, {\n headers: {'Accept': 'application/json'},\n });\n return await response.json() as ContextObject;\n};\n\nconst mergeContexts = (definitions: ContextDefinition[]) => {\n const mergePair = (a: ContextDefinition | null | undefined,\n b: ContextDefinition): ContextDefinition => {\n if (!a || !Object.keys(a).length) {\n return b;\n }\n const result = {...a};\n for (const [k, v] of Object.entries(b)) {\n result[k] = v;\n }\n return result;\n };\n\n if (!definitions.length) {\n return {};\n }\n if (definitions.length === 1) {\n return definitions[0];\n }\n let currentContext = definitions[0];\n for (let i = 1; i < definitions.length; i++) {\n currentContext = mergePair(currentContext, definitions[i]);\n }\n return currentContext;\n};\n\n\nexport async function loadContext(context: Context | ContextObject) {\n const loadedUrls = new Map<string, ContextObject>();\n\n const walk = async (definition: object, refChain?: string[]) => {\n for (const [key, value] of Object.entries(definition)) {\n if (key === '@context') {\n // @ts-ignore\n definition[key] = await load(value as Context, refChain);\n } else if (typeof value === 'object' && value !== null) {\n await walk(value, refChain);\n }\n }\n };\n\n const load = async (context: Context, refChain?: string[]): Promise<ContextDefinition> => {\n if (context === null || typeof context === 'undefined') {\n return {};\n }\n if (Array.isArray(context)) {\n // fetch and merge\n const contextEntries = await Promise.all(context.map(e => load(e, refChain)));\n return mergeContexts(contextEntries);\n } else if (typeof context === 'object') {\n await walk(context, refChain);\n return context;\n } else {\n if (refChain?.includes(context)) {\n throw new Error('Circular dependencies found: ' + refChain.join(' -> ') + ' -> ' + context);\n }\n const newRefChain = Array.isArray(refChain) ? refChain?.slice() : [];\n newRefChain.push(context);\n let newContext: ContextObject;\n if (!loadedUrls.has(context)) {\n newContext = await jsonFetch(context);\n loadedUrls.set(context, newContext);\n } else {\n newContext = loadedUrls.get(context) as ContextObject;\n }\n return load(newContext['@context'], newRefChain);\n }\n };\n\n if (typeof context === 'object' && context !== null && '@context' in context) {\n return load((context as ContextObject)['@context']);\n } else {\n return load(context);\n }\n}","const ns = (base: string) => (local: string): string => `${base}${local}`;\n\nexport const SKOS = ns('http://www.w3.org/2004/02/skos/core#');\nexport const RDFS = ns('http://www.w3.org/2000/01/rdf-schema#');\nexport const RDF = ns('http://www.w3.org/1999/02/22-rdf-syntax-ns#');\nexport const DCT = ns('http://purl.org/dc/terms/');\nexport const DC = ns('http://purl.org/dc/elements/1.1/');\nexport const SDO = ns('https://schema.org/');\nexport const FOAF = ns('http://xmlns.com/foaf/0.1/');\n\nexport const labelPredicates: string[] = [\n SKOS('prefLabel'),\n DCT('title'),\n DC('title'),\n SDO('name'),\n FOAF('name'),\n RDFS('label'),\n];\n\nexport const descriptionPredicates: string[] = [\n SKOS('definition'),\n DCT('description'),\n DC('description'),\n RDFS('comment'),\n];","import {loadContext} from \"./jsonld\";\nimport {descriptionPredicates, labelPredicates} from \"./constants\";\nimport * as N3 from 'n3';\nimport {RdfXmlParser} from 'rdfxml-streaming-parser';\n\nexport interface FetchResourceOptions {\n labelPredicates: string[],\n descriptionPredicates: string[],\n fallbackRainbowInstance?: string, // deprecated: use fallbackRainbowInstances\n fallbackRainbowInstances?: string | string[],\n fallbackSparqlEndpoint?: string, // deprecated: use fallbackSparqlEndpoints\n fallbackSparqlEndpoints?: string | string[],\n}\n\nexport const defaultFetchResourceOptions: FetchResourceOptions = {\n labelPredicates,\n descriptionPredicates,\n};\n\nexport interface CreatePropertiesTableOptions {\n propertiesField?: string | null,\n}\n\nexport interface ResourceData {\n uri: string,\n label: string | null,\n description?: string | null,\n}\n\nconst fetchResourceCache: { [uri: string]: Promise<ResourceData> } = {};\nconst requestCache: { [url: string]: Promise<N3.Store | null> } = {};\n\nconst N3_CONTENT_TYPES = new Set([\n 'text/turtle',\n 'text/n3',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'text/anot+turtle',\n]);\n\nconst ACCEPT_HEADER = [\n 'text/turtle',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'application/ld+json',\n 'application/rdf+xml',\n].join(', ');\n\nfunction getUserLanguages(): string[] {\n if (typeof navigator !== 'undefined' && navigator.languages?.length) {\n return Array.from(navigator.languages);\n }\n try {\n return [Intl.DateTimeFormat().resolvedOptions().locale];\n } catch {\n return [];\n }\n}\n\nexport function findInStore(store: N3.Store, subjectUri: string, predicates: string[], userLangs = getUserLanguages()): string | null {\n const subj = N3.DataFactory.namedNode(subjectUri);\n for (const predUri of predicates) {\n const quads = store\n .getQuads(subj, N3.DataFactory.namedNode(predUri), null, null)\n .filter(q => q.object.termType === 'Literal');\n if (!quads.length) {\n continue;\n }\n for (const lang of userLangs) {\n const base = lang.split('-')[0].toLowerCase();\n const match = quads.find(q => {\n const qLang = (q.object as N3.Literal).language?.toLowerCase();\n return qLang === lang.toLowerCase() || qLang?.split('-')[0] === base;\n });\n if (match) {\n return match.object.value;\n }\n }\n const noLang = quads.find(q => !(q.object as N3.Literal).language);\n if (noLang) {\n return noLang.object.value;\n }\n const en = quads.find(q => (q.object as N3.Literal).language?.toLowerCase() === 'en');\n return (en ?? quads[0]).object.value;\n }\n return null;\n}\n\nfunction parseTurtle(text: string, baseIRI: string, contentType: string): Promise<N3.Store> {\n const store = new N3.Store();\n const format = contentType === 'text/anot+turtle' ? 'text/turtle' : contentType as any;\n const parser = new N3.Parser({baseIRI, format});\n return new Promise((resolve, reject) => {\n parser.parse(text, (err, quad) => {\n if (err) {\n return reject(err);\n }\n if (quad) {\n store.addQuad(quad);\n }\n else {\n resolve(store);\n }\n });\n });\n}\n\nasync function parseJsonLd(text: string, baseIRI: string): Promise<N3.Store> {\n const jsonldMod = await import('jsonld') as any;\n if (!jsonldMod) {\n throw new Error('jsonld peer dependency is not available');\n }\n const doc = JSON.parse(text);\n const nquads = await jsonldMod.toRDF(doc, {format: 'application/n-quads', base: baseIRI});\n return parseTurtle(nquads, baseIRI, 'application/n-quads');\n}\n\nasync function parseRdfXml(text: string, baseIRI: string): Promise<N3.Store> {\n const store = new N3.Store();\n return new Promise((resolve, reject) => {\n const parser = new RdfXmlParser({baseIRI});\n parser.on('data', (quad: any) => store.addQuad(quad));\n parser.on('error', reject);\n parser.on('end', () => resolve(store));\n parser.write(text);\n parser.end();\n });\n}\n\nconst toArray = (val?: string | string[]): string[] =>\n !val ? [] : Array.isArray(val) ? val : [val];\n\nconst getSparqlQuery = (uri: string) => `DESCRIBE <${uri}>`;\n\nconst fetchAndParse = async (fetchFn: () => Promise<Response>, baseIRI: string): Promise<N3.Store | null> => {\n let response: Response;\n try {\n response = await fetchFn();\n if (!response.ok) {\n return null;\n }\n } catch {\n return null;\n }\n const contentType = response.headers.get('content-type')?.split(';')[0].trim() || 'text/turtle';\n const text = await response.text();\n try {\n if (N3_CONTENT_TYPES.has(contentType)) {\n return parseTurtle(text, baseIRI, contentType);\n }\n if (contentType === 'application/ld+json') {\n return parseJsonLd(text, baseIRI);\n }\n if (contentType === 'application/rdf+xml') {\n return parseRdfXml(text, baseIRI);\n }\n } catch {\n }\n return null;\n};\n\nconst fetchAndParseDocument = (docUrl: string, fetchFn: () => Promise<Response>): Promise<N3.Store | null> => {\n if (!(docUrl in requestCache)) {\n requestCache[docUrl] = fetchAndParse(fetchFn, docUrl);\n }\n return requestCache[docUrl];\n};\n\nconst findResourceInStore = async (storePromise: Promise<N3.Store | null>, uri: string, options: FetchResourceOptions): Promise<ResourceData | null> => {\n const store = await storePromise;\n if (!store) {\n return null;\n }\n const label = findInStore(store, uri, options.labelPredicates);\n if (!label) {\n return null;\n }\n return {uri, label, description: findInStore(store, uri, options.descriptionPredicates)};\n};\n\nconst actualFetchResource = async (uri: string, options: FetchResourceOptions): Promise<ResourceData> => {\n const docUrl = uri.includes('#') ? uri.split('#')[0] : uri;\n\n // 1. Direct (cached by document URL so hash siblings share one request)\n let result = await findResourceInStore(\n fetchAndParseDocument(docUrl, () => fetch(docUrl, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n\n // 2. Rainbow proxies (in order) — not supported for hash URIs\n const isHashUri = uri.includes('#');\n for (const instance of [...toArray(options.fallbackRainbowInstances), ...toArray(options.fallbackRainbowInstance)]) {\n if (result || isHashUri) {\n break;\n }\n const rainbowURL = new URL(instance);\n rainbowURL.searchParams.set('uri', uri);\n const rainbowUrlStr = rainbowURL.toString();\n result = await findResourceInStore(\n fetchAndParseDocument(rainbowUrlStr, () => fetch(rainbowUrlStr, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n }\n\n // 3. SPARQL endpoints (in order) — each DESCRIBE is unique per URI, no request cache\n for (const endpoint of [...toArray(options.fallbackSparqlEndpoints), ...toArray(options.fallbackSparqlEndpoint)]) {\n if (result) {\n break;\n }\n const formBody = new URLSearchParams({query: getSparqlQuery(uri)});\n result = await findResourceInStore(\n fetchAndParse(() => fetch(endpoint, {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/turtle, application/n-triples'},\n body: formBody.toString(),\n }), uri),\n uri, options,\n );\n }\n\n if (!result) {\n throw new Error(`No label data found for <${uri}>`);\n }\n return result;\n};\n\nexport async function fetchResource(uri: string, options: Partial<FetchResourceOptions> = {}) {\n const mergedOptions: FetchResourceOptions = {...defaultFetchResourceOptions, ...options};\n if (!(uri in fetchResourceCache)) {\n fetchResourceCache[uri] = actualFetchResource(uri, mergedOptions);\n }\n return fetchResourceCache[uri];\n}\n\nexport async function loadFeature(url: string) {\n const response = await fetch(url, {\n headers: {\n 'Accept': 'application/ld+json, application/json;q=0.9, */*;q=0.1',\n },\n });\n if (!response.ok) {\n throw new Error(`Could not load feature ${url}: ${response.status} - ${response.statusText}`);\n }\n const feature = await response.json();\n const context = await loadContext(feature);\n return {\n feature,\n context,\n };\n}","import {\n CreatePropertiesTableOptions,\n defaultFetchResourceOptions,\n fetchResource,\n FetchResourceOptions,\n} from \"./resource\";\nimport {ContextDefinition, ExpandedTermDefinition} from \"jsonld\";\n\nexport interface AugmentOptions extends FetchResourceOptions {\n replaceElements: boolean,\n}\n\nconst defaultAugmentOptions: AugmentOptions = {\n replaceElements: true,\n ...defaultFetchResourceOptions,\n};\n\nexport function createPropertiesTable(feature: { [index: string]: any }, container: HTMLElement,\n options: CreatePropertiesTableOptions = {\n propertiesField: 'properties',\n }) {\n const createLevel = (parent: HTMLElement, value: any, addHeaders = false) => {\n if (Array.isArray(value)) {\n for (const entry of value) {\n const newElem = createLevel(parent, entry);\n newElem.classList.add('array-entry');\n }\n return parent;\n } else if (value === null || typeof value === 'undefined' || typeof value !== 'object') {\n const span = document.createElement('span');\n span.classList.add('literal-value');\n span.textContent = '' + value;\n parent.appendChild(span);\n return span;\n } else {\n const table = document.createElement('table');\n table.classList.add('object-table');\n if (addHeaders) {\n table.innerHTML = '<thead><tr><th>Property</th><th>Value</th></tr></thead>';\n }\n const tbody = document.createElement('tbody');\n Object.entries(value).forEach(([k, v]) => {\n const row = document.createElement('tr');\n const keyCell = document.createElement('td');\n keyCell.classList.add('object-property');\n keyCell.setAttribute('data-property', k);\n keyCell.textContent = k;\n row.appendChild(keyCell);\n const valueCell = document.createElement('td');\n valueCell.classList.add('object-value');\n createLevel(valueCell, v);\n row.appendChild(valueCell);\n tbody.appendChild(row);\n });\n table.appendChild(tbody);\n parent.appendChild(table);\n return table;\n }\n };\n const wrapper = document.createElement('div');\n wrapper.classList.add('object-properties');\n container.appendChild(wrapper);\n if (options.propertiesField) {\n createLevel(wrapper, feature[options.propertiesField], true);\n } else {\n createLevel(wrapper, feature, true);\n }\n}\n\nexport async function augment(rootElem: HTMLElement, context: ContextDefinition, options: Partial<AugmentOptions> = {}) {\n\n const mergedOptions = {...defaultAugmentOptions, ...options};\n\n const resolveTerm = (term: string, contextStack: ContextDefinition[],\n useVocab = true, useBase = false): ExpandedTermDefinition | null => {\n if (term.indexOf('://') !== -1) {\n return {'@id': term};\n }\n let closestVocab: string | null = null;\n let closestBase: string | null = null;\n for (let i = contextStack.length - 1; i >= 0; i--) {\n if (term in contextStack[i]) {\n let resolvedTerm = contextStack[i][term];\n let resolvedId: string;\n if (resolvedTerm === null || typeof resolvedTerm === 'undefined' || typeof resolvedTerm === 'boolean'\n || Array.isArray(resolvedTerm)) {\n continue;\n }\n if (typeof resolvedTerm === 'string') {\n if (resolvedTerm === '@type') {\n return {'@id': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'};\n }\n resolvedId = resolvedTerm;\n resolvedTerm = {'@id': resolvedTerm};\n } else if (typeof resolvedTerm === 'object' && '@id' in resolvedTerm && typeof resolvedTerm['@id'] === 'string') {\n resolvedId = resolvedTerm['@id'];\n } else {\n continue;\n }\n const idx = resolvedId.indexOf(':');\n if (idx > -1) {\n const prefix = resolvedId.substring(0, idx);\n const localPart = resolvedId.substring(idx + 1);\n if (localPart.startsWith('//')) {\n // Full URI -> return\n return resolvedTerm;\n }\n const resolvedPrefix = resolveTerm(prefix, contextStack);\n if (resolvedPrefix !== null && '@id' in resolvedPrefix && typeof resolvedPrefix['@id'] === 'string') {\n // Prefix found and resolved\n resolvedTerm['@id'] = `${resolvedPrefix['@id']}${localPart}`;\n }\n return resolvedTerm;\n }\n }\n if (closestVocab === null && contextStack[i]['@vocab']) {\n closestVocab = contextStack[i]['@vocab']!;\n }\n if (closestBase === null && contextStack[i]['@base']) {\n closestBase = contextStack[i]['@base']!;\n }\n }\n if (term.indexOf(':') === -1) {\n if (useVocab && closestVocab) {\n return {'@id': `${closestVocab}${term}`};\n }\n if (useBase && closestBase) {\n return {'@id': `${closestBase}${term}`};\n }\n }\n return null;\n };\n\n const findPropertyChildren = (elem: HTMLElement) => {\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (node !== elem && nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('object-property')) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n const result: HTMLElement[] = [];\n let cur;\n while ((cur = walker.nextNode())) {\n result.push(cur as HTMLElement);\n }\n return result;\n };\n\n const findLiteralChildren = (elem: HTMLElement) => {\n const result: HTMLElement[] = [];\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (nodeElem.classList.contains('object-property') || nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('literal-value')) {\n result.push(nodeElem);\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) {\n }\n return result;\n };\n\n const updateElement = (elem: HTMLElement, resourceUri: string,\n replaceElements = true) => {\n elem.setAttribute('data-uri', resourceUri);\n elem.classList.add('resource-loading');\n fetchResource(resourceUri, mergedOptions)\n .then(resourceData => {\n let elemToUpdate = elem.querySelector('.resource-link') as HTMLElement || elem;\n if (resourceData.label) {\n elem.setAttribute('data-label', resourceData.label);\n if (mergedOptions.replaceElements) {\n elemToUpdate.textContent = resourceData.label;\n }\n }\n if (resourceData.description) {\n elem.setAttribute('data-description', resourceData.description);\n if (mergedOptions.replaceElements) {\n elemToUpdate.title = resourceData.description;\n }\n }\n elem.classList.add('resource-resolved');\n })\n .catch(e => {\n console.error(`Error resolving URI ${resourceUri}: ${e}`, {cause: e});\n elem.classList.add('resource-error');\n })\n .finally(() => {\n elem.classList.remove('resource-loading');\n });\n if (replaceElements) {\n const link = document.createElement(\"a\");\n link.href = resourceUri;\n link.target = '_blank';\n link.classList.add('resource-link');\n while (elem.firstChild) {\n link.appendChild(elem.firstChild);\n }\n elem.appendChild(link);\n }\n };\n\n const augmentInner = (elem: HTMLElement, contextStack: ContextDefinition[]) => {\n const propElems = findPropertyChildren(elem);\n for (const propElem of propElems) {\n let propertyName: string | null = null;\n propertyName = propElem.getAttribute('data-property');\n if (!propertyName) {\n propertyName = propElem.textContent.trim();\n }\n const resolvedProperty = resolveTerm(propertyName, contextStack);\n let newContextStack = contextStack;\n const valueElem = propElem.parentElement?.querySelector('.object-value') as HTMLElement;\n if (resolvedProperty && '@id' in resolvedProperty && typeof resolvedProperty['@id'] === 'string') {\n const propertyUri = resolvedProperty['@id'];\n updateElement(propElem, propertyUri, mergedOptions.replaceElements);\n if ('@context' in resolvedProperty) {\n newContextStack = [...contextStack, resolvedProperty['@context']!];\n }\n if (resolvedProperty['@type'] === '@id' && valueElem) {\n const literalElems = findLiteralChildren(valueElem);\n literalElems.forEach(literalElem => {\n const resolvedLiteral = resolveTerm(literalElem.textContent.trim(),\n newContextStack, false, true);\n if (resolvedLiteral && '@id' in resolvedLiteral && typeof resolvedLiteral['@id'] === 'string') {\n const resourceUri = resolvedLiteral['@id'];\n updateElement(literalElem, resourceUri, mergedOptions.replaceElements);\n }\n });\n }\n }\n if (valueElem) {\n augmentInner(valueElem as HTMLElement, newContextStack);\n }\n }\n };\n augmentInner(rootElem, [context]);\n}\n","export * from './resource';\nexport * from './jsonld';\nexport * from './augment';\n\nimport * as resource from './resource';\nimport * as jsonld from './jsonld';\nimport * as augment from './augment';\n\nexport default {\n ...resource,\n ...jsonld,\n ...augment,\n}"],"names":["N3","RdfXmlParser","augment"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ declare const _default: {
|
|
|
10
10
|
}, container: HTMLElement, options?: resource.CreatePropertiesTableOptions): void;
|
|
11
11
|
augment(rootElem: HTMLElement, context: import("jsonld").ContextDefinition, options?: Partial<augment.AugmentOptions>): Promise<void>;
|
|
12
12
|
loadContext(context: jsonld.Context | jsonld.ContextObject): Promise<import("jsonld").ContextDefinition>;
|
|
13
|
+
findInStore(store: import("n3").Store, subjectUri: string, predicates: string[], userLangs?: string[]): string | null;
|
|
13
14
|
fetchResource(uri: string, options?: Partial<resource.FetchResourceOptions>): Promise<resource.ResourceData>;
|
|
14
15
|
loadFeature(url: string): Promise<{
|
|
15
16
|
feature: any;
|
package/dist/index.esm.js
CHANGED
|
@@ -130,8 +130,19 @@ const ACCEPT_HEADER = [
|
|
|
130
130
|
'application/ld+json',
|
|
131
131
|
'application/rdf+xml',
|
|
132
132
|
].join(', ');
|
|
133
|
-
function
|
|
133
|
+
function getUserLanguages() {
|
|
134
134
|
var _a;
|
|
135
|
+
if (typeof navigator !== 'undefined' && ((_a = navigator.languages) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
136
|
+
return Array.from(navigator.languages);
|
|
137
|
+
}
|
|
138
|
+
try {
|
|
139
|
+
return [Intl.DateTimeFormat().resolvedOptions().locale];
|
|
140
|
+
}
|
|
141
|
+
catch (_b) {
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function findInStore(store, subjectUri, predicates, userLangs = getUserLanguages()) {
|
|
135
146
|
const subj = N3.DataFactory.namedNode(subjectUri);
|
|
136
147
|
for (const predUri of predicates) {
|
|
137
148
|
const quads = store
|
|
@@ -140,9 +151,23 @@ function findInStore(store, subjectUri, predicates) {
|
|
|
140
151
|
if (!quads.length) {
|
|
141
152
|
continue;
|
|
142
153
|
}
|
|
143
|
-
|
|
154
|
+
for (const lang of userLangs) {
|
|
155
|
+
const base = lang.split('-')[0].toLowerCase();
|
|
156
|
+
const match = quads.find(q => {
|
|
157
|
+
var _a;
|
|
158
|
+
const qLang = (_a = q.object.language) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
159
|
+
return qLang === lang.toLowerCase() || (qLang === null || qLang === void 0 ? void 0 : qLang.split('-')[0]) === base;
|
|
160
|
+
});
|
|
161
|
+
if (match) {
|
|
162
|
+
return match.object.value;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
144
165
|
const noLang = quads.find(q => !q.object.language);
|
|
145
|
-
|
|
166
|
+
if (noLang) {
|
|
167
|
+
return noLang.object.value;
|
|
168
|
+
}
|
|
169
|
+
const en = quads.find(q => { var _a; return ((_a = q.object.language) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'en'; });
|
|
170
|
+
return (en !== null && en !== void 0 ? en : quads[0]).object.value;
|
|
146
171
|
}
|
|
147
172
|
return null;
|
|
148
173
|
}
|
|
@@ -292,6 +317,7 @@ var resource = /*#__PURE__*/Object.freeze({
|
|
|
292
317
|
__proto__: null,
|
|
293
318
|
defaultFetchResourceOptions: defaultFetchResourceOptions,
|
|
294
319
|
fetchResource: fetchResource,
|
|
320
|
+
findInStore: findInStore,
|
|
295
321
|
loadFeature: loadFeature
|
|
296
322
|
});
|
|
297
323
|
|
|
@@ -540,5 +566,5 @@ var index = {
|
|
|
540
566
|
...augment$1,
|
|
541
567
|
};
|
|
542
568
|
|
|
543
|
-
export { augment, createPropertiesTable, index as default, defaultFetchResourceOptions, fetchResource, loadContext, loadFeature };
|
|
569
|
+
export { augment, createPropertiesTable, index as default, defaultFetchResourceOptions, fetchResource, findInStore, loadContext, loadFeature };
|
|
544
570
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/jsonld.ts","../src/constants.ts","../src/resource.ts","../src/augment.ts","../src/index.ts"],"sourcesContent":["import {ContextDefinition} from 'jsonld';\n\ntype OrArray<T> = T | T[];\n\nexport type Context = OrArray<null | string | ContextDefinition>;\n\nexport type ContextObject = {\n \"@context\": Context;\n}\n\nconst jsonFetch = async (url: string) => {\n const response = await fetch(url, {\n headers: {'Accept': 'application/json'},\n });\n return await response.json() as ContextObject;\n};\n\nconst mergeContexts = (definitions: ContextDefinition[]) => {\n const mergePair = (a: ContextDefinition | null | undefined,\n b: ContextDefinition): ContextDefinition => {\n if (!a || !Object.keys(a).length) {\n return b;\n }\n const result = {...a};\n for (const [k, v] of Object.entries(b)) {\n result[k] = v;\n }\n return result;\n };\n\n if (!definitions.length) {\n return {};\n }\n if (definitions.length === 1) {\n return definitions[0];\n }\n let currentContext = definitions[0];\n for (let i = 1; i < definitions.length; i++) {\n currentContext = mergePair(currentContext, definitions[i]);\n }\n return currentContext;\n};\n\n\nexport async function loadContext(context: Context | ContextObject) {\n const loadedUrls = new Map<string, ContextObject>();\n\n const walk = async (definition: object, refChain?: string[]) => {\n for (const [key, value] of Object.entries(definition)) {\n if (key === '@context') {\n // @ts-ignore\n definition[key] = await load(value as Context, refChain);\n } else if (typeof value === 'object' && value !== null) {\n await walk(value, refChain);\n }\n }\n };\n\n const load = async (context: Context, refChain?: string[]): Promise<ContextDefinition> => {\n if (context === null || typeof context === 'undefined') {\n return {};\n }\n if (Array.isArray(context)) {\n // fetch and merge\n const contextEntries = await Promise.all(context.map(e => load(e, refChain)));\n return mergeContexts(contextEntries);\n } else if (typeof context === 'object') {\n await walk(context, refChain);\n return context;\n } else {\n if (refChain?.includes(context)) {\n throw new Error('Circular dependencies found: ' + refChain.join(' -> ') + ' -> ' + context);\n }\n const newRefChain = Array.isArray(refChain) ? refChain?.slice() : [];\n newRefChain.push(context);\n let newContext: ContextObject;\n if (!loadedUrls.has(context)) {\n newContext = await jsonFetch(context);\n loadedUrls.set(context, newContext);\n } else {\n newContext = loadedUrls.get(context) as ContextObject;\n }\n return load(newContext['@context'], newRefChain);\n }\n };\n\n if (typeof context === 'object' && context !== null && '@context' in context) {\n return load((context as ContextObject)['@context']);\n } else {\n return load(context);\n }\n}","const ns = (base: string) => (local: string): string => `${base}${local}`;\n\nexport const SKOS = ns('http://www.w3.org/2004/02/skos/core#');\nexport const RDFS = ns('http://www.w3.org/2000/01/rdf-schema#');\nexport const RDF = ns('http://www.w3.org/1999/02/22-rdf-syntax-ns#');\nexport const DCT = ns('http://purl.org/dc/terms/');\nexport const DC = ns('http://purl.org/dc/elements/1.1/');\nexport const SDO = ns('https://schema.org/');\nexport const FOAF = ns('http://xmlns.com/foaf/0.1/');\n\nexport const labelPredicates: string[] = [\n SKOS('prefLabel'),\n DCT('title'),\n DC('title'),\n SDO('name'),\n FOAF('name'),\n RDFS('label'),\n];\n\nexport const descriptionPredicates: string[] = [\n SKOS('definition'),\n DCT('description'),\n DC('description'),\n RDFS('comment'),\n];","import {loadContext} from \"./jsonld\";\nimport {descriptionPredicates, labelPredicates} from \"./constants\";\nimport * as N3 from 'n3';\nimport {RdfXmlParser} from 'rdfxml-streaming-parser';\n\nexport interface FetchResourceOptions {\n labelPredicates: string[],\n descriptionPredicates: string[],\n fallbackRainbowInstance?: string, // deprecated: use fallbackRainbowInstances\n fallbackRainbowInstances?: string | string[],\n fallbackSparqlEndpoint?: string, // deprecated: use fallbackSparqlEndpoints\n fallbackSparqlEndpoints?: string | string[],\n}\n\nexport const defaultFetchResourceOptions: FetchResourceOptions = {\n labelPredicates,\n descriptionPredicates,\n};\n\nexport interface CreatePropertiesTableOptions {\n propertiesField?: string | null,\n}\n\nexport interface ResourceData {\n uri: string,\n label: string | null,\n description?: string | null,\n}\n\nconst fetchResourceCache: { [uri: string]: Promise<ResourceData> } = {};\nconst requestCache: { [url: string]: Promise<N3.Store | null> } = {};\n\nconst N3_CONTENT_TYPES = new Set([\n 'text/turtle',\n 'text/n3',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'text/anot+turtle',\n]);\n\nconst ACCEPT_HEADER = [\n 'text/turtle',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'application/ld+json',\n 'application/rdf+xml',\n].join(', ');\n\nfunction findInStore(store: N3.Store, subjectUri: string, predicates: string[]): string | null {\n const subj = N3.DataFactory.namedNode(subjectUri);\n for (const predUri of predicates) {\n const quads = store\n .getQuads(subj, N3.DataFactory.namedNode(predUri), null, null)\n .filter(q => q.object.termType === 'Literal');\n if (!quads.length) {\n continue;\n }\n const en = quads.find(q => (q.object as N3.Literal).language === 'en');\n const noLang = quads.find(q => !(q.object as N3.Literal).language);\n return (en ?? noLang ?? quads[0]).object.value;\n }\n return null;\n}\n\nfunction parseTurtle(text: string, baseIRI: string, contentType: string): Promise<N3.Store> {\n const store = new N3.Store();\n const format = contentType === 'text/anot+turtle' ? 'text/turtle' : contentType as any;\n const parser = new N3.Parser({baseIRI, format});\n return new Promise((resolve, reject) => {\n parser.parse(text, (err, quad) => {\n if (err) {\n return reject(err);\n }\n if (quad) {\n store.addQuad(quad);\n }\n else {\n resolve(store);\n }\n });\n });\n}\n\nasync function parseJsonLd(text: string, baseIRI: string): Promise<N3.Store> {\n const jsonldMod = await import('jsonld') as any;\n if (!jsonldMod) {\n throw new Error('jsonld peer dependency is not available');\n }\n const doc = JSON.parse(text);\n const nquads = await jsonldMod.toRDF(doc, {format: 'application/n-quads', base: baseIRI});\n return parseTurtle(nquads, baseIRI, 'application/n-quads');\n}\n\nasync function parseRdfXml(text: string, baseIRI: string): Promise<N3.Store> {\n const store = new N3.Store();\n return new Promise((resolve, reject) => {\n const parser = new RdfXmlParser({baseIRI});\n parser.on('data', (quad: any) => store.addQuad(quad));\n parser.on('error', reject);\n parser.on('end', () => resolve(store));\n parser.write(text);\n parser.end();\n });\n}\n\nconst toArray = (val?: string | string[]): string[] =>\n !val ? [] : Array.isArray(val) ? val : [val];\n\nconst getSparqlQuery = (uri: string) => `DESCRIBE <${uri}>`;\n\nconst fetchAndParse = async (fetchFn: () => Promise<Response>, baseIRI: string): Promise<N3.Store | null> => {\n let response: Response;\n try {\n response = await fetchFn();\n if (!response.ok) {\n return null;\n }\n } catch {\n return null;\n }\n const contentType = response.headers.get('content-type')?.split(';')[0].trim() || 'text/turtle';\n const text = await response.text();\n try {\n if (N3_CONTENT_TYPES.has(contentType)) {\n return parseTurtle(text, baseIRI, contentType);\n }\n if (contentType === 'application/ld+json') {\n return parseJsonLd(text, baseIRI);\n }\n if (contentType === 'application/rdf+xml') {\n return parseRdfXml(text, baseIRI);\n }\n } catch {\n }\n return null;\n};\n\nconst fetchAndParseDocument = (docUrl: string, fetchFn: () => Promise<Response>): Promise<N3.Store | null> => {\n if (!(docUrl in requestCache)) {\n requestCache[docUrl] = fetchAndParse(fetchFn, docUrl);\n }\n return requestCache[docUrl];\n};\n\nconst findResourceInStore = async (storePromise: Promise<N3.Store | null>, uri: string, options: FetchResourceOptions): Promise<ResourceData | null> => {\n const store = await storePromise;\n if (!store) {\n return null;\n }\n const label = findInStore(store, uri, options.labelPredicates);\n if (!label) {\n return null;\n }\n return {uri, label, description: findInStore(store, uri, options.descriptionPredicates)};\n};\n\nconst actualFetchResource = async (uri: string, options: FetchResourceOptions): Promise<ResourceData> => {\n const docUrl = uri.includes('#') ? uri.split('#')[0] : uri;\n\n // 1. Direct (cached by document URL so hash siblings share one request)\n let result = await findResourceInStore(\n fetchAndParseDocument(docUrl, () => fetch(docUrl, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n\n // 2. Rainbow proxies (in order) — not supported for hash URIs\n const isHashUri = uri.includes('#');\n for (const instance of [...toArray(options.fallbackRainbowInstances), ...toArray(options.fallbackRainbowInstance)]) {\n if (result || isHashUri) {\n break;\n }\n const rainbowURL = new URL(instance);\n rainbowURL.searchParams.set('uri', uri);\n const rainbowUrlStr = rainbowURL.toString();\n result = await findResourceInStore(\n fetchAndParseDocument(rainbowUrlStr, () => fetch(rainbowUrlStr, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n }\n\n // 3. SPARQL endpoints (in order) — each DESCRIBE is unique per URI, no request cache\n for (const endpoint of [...toArray(options.fallbackSparqlEndpoints), ...toArray(options.fallbackSparqlEndpoint)]) {\n if (result) {\n break;\n }\n const formBody = new URLSearchParams({query: getSparqlQuery(uri)});\n result = await findResourceInStore(\n fetchAndParse(() => fetch(endpoint, {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/turtle, application/n-triples'},\n body: formBody.toString(),\n }), uri),\n uri, options,\n );\n }\n\n if (!result) {\n throw new Error(`No label data found for <${uri}>`);\n }\n return result;\n};\n\nexport async function fetchResource(uri: string, options: Partial<FetchResourceOptions> = {}) {\n const mergedOptions: FetchResourceOptions = {...defaultFetchResourceOptions, ...options};\n if (!(uri in fetchResourceCache)) {\n fetchResourceCache[uri] = actualFetchResource(uri, mergedOptions);\n }\n return fetchResourceCache[uri];\n}\n\nexport async function loadFeature(url: string) {\n const response = await fetch(url, {\n headers: {\n 'Accept': 'application/ld+json, application/json;q=0.9, */*;q=0.1',\n },\n });\n if (!response.ok) {\n throw new Error(`Could not load feature ${url}: ${response.status} - ${response.statusText}`);\n }\n const feature = await response.json();\n const context = await loadContext(feature);\n return {\n feature,\n context,\n };\n}","import {\n CreatePropertiesTableOptions,\n defaultFetchResourceOptions,\n fetchResource,\n FetchResourceOptions,\n} from \"./resource\";\nimport {ContextDefinition, ExpandedTermDefinition} from \"jsonld\";\n\nexport interface AugmentOptions extends FetchResourceOptions {\n replaceElements: boolean,\n}\n\nconst defaultAugmentOptions: AugmentOptions = {\n replaceElements: true,\n ...defaultFetchResourceOptions,\n};\n\nexport function createPropertiesTable(feature: { [index: string]: any }, container: HTMLElement,\n options: CreatePropertiesTableOptions = {\n propertiesField: 'properties',\n }) {\n const createLevel = (parent: HTMLElement, value: any, addHeaders = false) => {\n if (Array.isArray(value)) {\n for (const entry of value) {\n const newElem = createLevel(parent, entry);\n newElem.classList.add('array-entry');\n }\n return parent;\n } else if (value === null || typeof value === 'undefined' || typeof value !== 'object') {\n const span = document.createElement('span');\n span.classList.add('literal-value');\n span.textContent = '' + value;\n parent.appendChild(span);\n return span;\n } else {\n const table = document.createElement('table');\n table.classList.add('object-table');\n if (addHeaders) {\n table.innerHTML = '<thead><tr><th>Property</th><th>Value</th></tr></thead>';\n }\n const tbody = document.createElement('tbody');\n Object.entries(value).forEach(([k, v]) => {\n const row = document.createElement('tr');\n const keyCell = document.createElement('td');\n keyCell.classList.add('object-property');\n keyCell.setAttribute('data-property', k);\n keyCell.textContent = k;\n row.appendChild(keyCell);\n const valueCell = document.createElement('td');\n valueCell.classList.add('object-value');\n createLevel(valueCell, v);\n row.appendChild(valueCell);\n tbody.appendChild(row);\n });\n table.appendChild(tbody);\n parent.appendChild(table);\n return table;\n }\n };\n const wrapper = document.createElement('div');\n wrapper.classList.add('object-properties');\n container.appendChild(wrapper);\n if (options.propertiesField) {\n createLevel(wrapper, feature[options.propertiesField], true);\n } else {\n createLevel(wrapper, feature, true);\n }\n}\n\nexport async function augment(rootElem: HTMLElement, context: ContextDefinition, options: Partial<AugmentOptions> = {}) {\n\n const mergedOptions = {...defaultAugmentOptions, ...options};\n\n const resolveTerm = (term: string, contextStack: ContextDefinition[],\n useVocab = true, useBase = false): ExpandedTermDefinition | null => {\n if (term.indexOf('://') !== -1) {\n return {'@id': term};\n }\n let closestVocab: string | null = null;\n let closestBase: string | null = null;\n for (let i = contextStack.length - 1; i >= 0; i--) {\n if (term in contextStack[i]) {\n let resolvedTerm = contextStack[i][term];\n let resolvedId: string;\n if (resolvedTerm === null || typeof resolvedTerm === 'undefined' || typeof resolvedTerm === 'boolean'\n || Array.isArray(resolvedTerm)) {\n continue;\n }\n if (typeof resolvedTerm === 'string') {\n if (resolvedTerm === '@type') {\n return {'@id': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'};\n }\n resolvedId = resolvedTerm;\n resolvedTerm = {'@id': resolvedTerm};\n } else if (typeof resolvedTerm === 'object' && '@id' in resolvedTerm && typeof resolvedTerm['@id'] === 'string') {\n resolvedId = resolvedTerm['@id'];\n } else {\n continue;\n }\n const idx = resolvedId.indexOf(':');\n if (idx > -1) {\n const prefix = resolvedId.substring(0, idx);\n const localPart = resolvedId.substring(idx + 1);\n if (localPart.startsWith('//')) {\n // Full URI -> return\n return resolvedTerm;\n }\n const resolvedPrefix = resolveTerm(prefix, contextStack);\n if (resolvedPrefix !== null && '@id' in resolvedPrefix && typeof resolvedPrefix['@id'] === 'string') {\n // Prefix found and resolved\n resolvedTerm['@id'] = `${resolvedPrefix['@id']}${localPart}`;\n }\n return resolvedTerm;\n }\n }\n if (closestVocab === null && contextStack[i]['@vocab']) {\n closestVocab = contextStack[i]['@vocab']!;\n }\n if (closestBase === null && contextStack[i]['@base']) {\n closestBase = contextStack[i]['@base']!;\n }\n }\n if (term.indexOf(':') === -1) {\n if (useVocab && closestVocab) {\n return {'@id': `${closestVocab}${term}`};\n }\n if (useBase && closestBase) {\n return {'@id': `${closestBase}${term}`};\n }\n }\n return null;\n };\n\n const findPropertyChildren = (elem: HTMLElement) => {\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (node !== elem && nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('object-property')) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n const result: HTMLElement[] = [];\n let cur;\n while ((cur = walker.nextNode())) {\n result.push(cur as HTMLElement);\n }\n return result;\n };\n\n const findLiteralChildren = (elem: HTMLElement) => {\n const result: HTMLElement[] = [];\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (nodeElem.classList.contains('object-property') || nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('literal-value')) {\n result.push(nodeElem);\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) {\n }\n return result;\n };\n\n const updateElement = (elem: HTMLElement, resourceUri: string,\n replaceElements = true) => {\n elem.setAttribute('data-uri', resourceUri);\n elem.classList.add('resource-loading');\n fetchResource(resourceUri, mergedOptions)\n .then(resourceData => {\n let elemToUpdate = elem.querySelector('.resource-link') as HTMLElement || elem;\n if (resourceData.label) {\n elem.setAttribute('data-label', resourceData.label);\n if (mergedOptions.replaceElements) {\n elemToUpdate.textContent = resourceData.label;\n }\n }\n if (resourceData.description) {\n elem.setAttribute('data-description', resourceData.description);\n if (mergedOptions.replaceElements) {\n elemToUpdate.title = resourceData.description;\n }\n }\n elem.classList.add('resource-resolved');\n })\n .catch(e => {\n console.error(`Error resolving URI ${resourceUri}: ${e}`, {cause: e});\n elem.classList.add('resource-error');\n })\n .finally(() => {\n elem.classList.remove('resource-loading');\n });\n if (replaceElements) {\n const link = document.createElement(\"a\");\n link.href = resourceUri;\n link.target = '_blank';\n link.classList.add('resource-link');\n while (elem.firstChild) {\n link.appendChild(elem.firstChild);\n }\n elem.appendChild(link);\n }\n };\n\n const augmentInner = (elem: HTMLElement, contextStack: ContextDefinition[]) => {\n const propElems = findPropertyChildren(elem);\n for (const propElem of propElems) {\n let propertyName: string | null = null;\n propertyName = propElem.getAttribute('data-property');\n if (!propertyName) {\n propertyName = propElem.textContent.trim();\n }\n const resolvedProperty = resolveTerm(propertyName, contextStack);\n let newContextStack = contextStack;\n const valueElem = propElem.parentElement?.querySelector('.object-value') as HTMLElement;\n if (resolvedProperty && '@id' in resolvedProperty && typeof resolvedProperty['@id'] === 'string') {\n const propertyUri = resolvedProperty['@id'];\n updateElement(propElem, propertyUri, mergedOptions.replaceElements);\n if ('@context' in resolvedProperty) {\n newContextStack = [...contextStack, resolvedProperty['@context']!];\n }\n if (resolvedProperty['@type'] === '@id' && valueElem) {\n const literalElems = findLiteralChildren(valueElem);\n literalElems.forEach(literalElem => {\n const resolvedLiteral = resolveTerm(literalElem.textContent.trim(),\n newContextStack, false, true);\n if (resolvedLiteral && '@id' in resolvedLiteral && typeof resolvedLiteral['@id'] === 'string') {\n const resourceUri = resolvedLiteral['@id'];\n updateElement(literalElem, resourceUri, mergedOptions.replaceElements);\n }\n });\n }\n }\n if (valueElem) {\n augmentInner(valueElem as HTMLElement, newContextStack);\n }\n }\n };\n augmentInner(rootElem, [context]);\n}\n","export * from './resource';\nexport * from './jsonld';\nexport * from './augment';\n\nimport * as resource from './resource';\nimport * as jsonld from './jsonld';\nimport * as augment from './augment';\n\nexport default {\n ...resource,\n ...jsonld,\n ...augment,\n}"],"names":["augment"],"mappings":";;;AAUA,MAAM,SAAS,GAAG,OAAO,GAAW,KAAI;AACtC,IAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AAChC,QAAA,OAAO,EAAE,EAAC,QAAQ,EAAE,kBAAkB,EAAC;AACxC,KAAA,CAAC;AACF,IAAA,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAmB;AAC/C,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,WAAgC,KAAI;AACzD,IAAA,MAAM,SAAS,GAAG,CAAC,CAAuC,EACvC,CAAoB,KAAuB;AAC5D,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAChC,YAAA,OAAO,CAAC;QACV;AACA,QAAA,MAAM,MAAM,GAAG,EAAC,GAAG,CAAC,EAAC;AACrB,QAAA,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACtC,YAAA,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;QACf;AACA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AAED,IAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACvB,QAAA,OAAO,EAAE;IACX;AACA,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,QAAA,OAAO,WAAW,CAAC,CAAC,CAAC;IACvB;AACA,IAAA,IAAI,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC;AACnC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,cAAc,GAAG,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAC5D;AACA,IAAA,OAAO,cAAc;AACvB,CAAC;AAGM,eAAe,WAAW,CAAC,OAAgC,EAAA;AAChE,IAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB;IAEnD,MAAM,IAAI,GAAG,OAAO,UAAkB,EAAE,QAAmB,KAAI;AAC7D,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACrD,YAAA,IAAI,GAAG,KAAK,UAAU,EAAE;;gBAEtB,UAAU,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,KAAgB,EAAE,QAAQ,CAAC;YAC1D;iBAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AACtD,gBAAA,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC7B;QACF;AACF,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,OAAgB,EAAE,QAAmB,KAAgC;QACvF,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;AACtD,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;YAE1B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7E,YAAA,OAAO,aAAa,CAAC,cAAc,CAAC;QACtC;AAAO,aAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;AACtC,YAAA,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7B,YAAA,OAAO,OAAO;QAChB;aAAO;YACL,IAAI,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,QAAQ,CAAC,OAAO,CAAC,EAAE;AAC/B,gBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;YAC7F;YACA,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,KAAK,EAAE,GAAG,EAAE;AACpE,YAAA,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AACzB,YAAA,IAAI,UAAyB;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAC5B,gBAAA,UAAU,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;AACrC,gBAAA,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC;YACrC;iBAAO;AACL,gBAAA,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAkB;YACvD;YACA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC;QAClD;AACF,IAAA,CAAC;AAED,IAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,UAAU,IAAI,OAAO,EAAE;AAC5E,QAAA,OAAO,IAAI,CAAE,OAAyB,CAAC,UAAU,CAAC,CAAC;IACrD;SAAO;AACL,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB;AACF;;;;;;;AC3FA,MAAM,EAAE,GAAG,CAAC,IAAY,KAAK,CAAC,KAAa,KAAa,CAAA,EAAG,IAAI,CAAA,EAAG,KAAK,EAAE;AAElE,MAAM,IAAI,GAAG,EAAE,CAAC,sCAAsC,CAAC;AACvD,MAAM,IAAI,GAAG,EAAE,CAAC,uCAAuC,CAAC;AAExD,MAAM,GAAG,GAAI,EAAE,CAAC,2BAA2B,CAAC;AAC5C,MAAM,EAAE,GAAK,EAAE,CAAC,kCAAkC,CAAC;AACnD,MAAM,GAAG,GAAI,EAAE,CAAC,qBAAqB,CAAC;AACtC,MAAM,IAAI,GAAG,EAAE,CAAC,4BAA4B,CAAC;AAE7C,MAAM,eAAe,GAAa;IACvC,IAAI,CAAC,WAAW,CAAC;IACjB,GAAG,CAAC,OAAO,CAAC;IACZ,EAAE,CAAC,OAAO,CAAC;IACX,GAAG,CAAC,MAAM,CAAC;IACX,IAAI,CAAC,MAAM,CAAC;IACZ,IAAI,CAAC,OAAO,CAAC;CACd;AAEM,MAAM,qBAAqB,GAAa;IAC7C,IAAI,CAAC,YAAY,CAAC;IAClB,GAAG,CAAC,aAAa,CAAC;IAClB,EAAE,CAAC,aAAa,CAAC;IACjB,IAAI,CAAC,SAAS,CAAC;CAChB;;ACVM,MAAM,2BAA2B,GAAyB;IAC/D,eAAe;IACf,qBAAqB;;AAavB,MAAM,kBAAkB,GAA6C,EAAE;AACvE,MAAM,YAAY,GAAgD,EAAE;AAEpE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,aAAa;IACb,SAAS;IACT,uBAAuB;IACvB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;AACnB,CAAA,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,aAAa;IACb,uBAAuB;IACvB,qBAAqB;IACrB,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;AACtB,CAAA,CAAC,IAAI,CAAC,IAAI,CAAC;AAEZ,SAAS,WAAW,CAAC,KAAe,EAAE,UAAkB,EAAE,UAAoB,EAAA;;IAC5E,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC;AACjD,IAAA,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;QAChC,MAAM,KAAK,GAAG;AACX,aAAA,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI;AAC5D,aAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC;AAC/C,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACjB;QACF;AACA,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAK,CAAC,CAAC,MAAqB,CAAC,QAAQ,KAAK,IAAI,CAAC;AACtE,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC,MAAqB,CAAC,QAAQ,CAAC;AAClE,QAAA,OAAO,CAAC,CAAA,EAAA,GAAA,EAAE,aAAF,EAAE,KAAA,MAAA,GAAF,EAAE,GAAI,MAAM,mCAAI,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK;IAChD;AACA,IAAA,OAAO,IAAI;AACb;AAEA,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE,WAAmB,EAAA;AACrE,IAAA,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE;AAC5B,IAAA,MAAM,MAAM,GAAG,WAAW,KAAK,kBAAkB,GAAG,aAAa,GAAG,WAAkB;AACtF,IAAA,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC,OAAO,EAAE,MAAM,EAAC,CAAC;IAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QACrC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,KAAI;YAC/B,IAAI,GAAG,EAAE;AACP,gBAAA,OAAO,MAAM,CAAC,GAAG,CAAC;YACpB;YACA,IAAI,IAAI,EAAE;AACR,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YACrB;iBACK;gBACH,OAAO,CAAC,KAAK,CAAC;YAChB;AACF,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;AAEA,eAAe,WAAW,CAAC,IAAY,EAAE,OAAe,EAAA;AACtD,IAAA,MAAM,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAQ;IAC/C,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;IAC5D;IACA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAC5B,IAAA,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,EAAC,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;IACzF,OAAO,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC;AAC5D;AAEA,eAAe,WAAW,CAAC,IAAY,EAAE,OAAe,EAAA;AACtD,IAAA,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;QACrC,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAC,OAAO,EAAC,CAAC;AAC1C,QAAA,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAS,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AAC1B,QAAA,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QAClB,MAAM,CAAC,GAAG,EAAE;AACd,IAAA,CAAC,CAAC;AACJ;AAEA,MAAM,OAAO,GAAG,CAAC,GAAuB,KACtC,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAE9C,MAAM,cAAc,GAAG,CAAC,GAAW,KAAK,CAAA,UAAA,EAAa,GAAG,CAAA,CAAA,CAAG;AAE3D,MAAM,aAAa,GAAG,OAAO,OAAgC,EAAE,OAAe,KAA8B;;AAC1G,IAAA,IAAI,QAAkB;AACtB,IAAA,IAAI;AACF,QAAA,QAAQ,GAAG,MAAM,OAAO,EAAE;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;IACF;AAAE,IAAA,OAAA,EAAA,EAAM;AACN,QAAA,OAAO,IAAI;IACb;IACA,MAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,CAAC,GAAG,CAAA,CAAE,CAAC,EAAE,IAAI,EAAE,KAAI,aAAa;AAC/F,IAAA,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AAClC,IAAA,IAAI;AACF,QAAA,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YACrC,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;QAChD;AACA,QAAA,IAAI,WAAW,KAAK,qBAAqB,EAAE;AACzC,YAAA,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;QACnC;AACA,QAAA,IAAI,WAAW,KAAK,qBAAqB,EAAE;AACzC,YAAA,OAAO,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC;QACnC;IACF;AAAE,IAAA,OAAA,EAAA,EAAM;IACR;AACA,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,OAAgC,KAA8B;AAC3G,IAAA,IAAI,EAAE,MAAM,IAAI,YAAY,CAAC,EAAE;QAC7B,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC;IACvD;AACA,IAAA,OAAO,YAAY,CAAC,MAAM,CAAC;AAC7B,CAAC;AAED,MAAM,mBAAmB,GAAG,OAAO,YAAsC,EAAE,GAAW,EAAE,OAA6B,KAAkC;AACrJ,IAAA,MAAM,KAAK,GAAG,MAAM,YAAY;IAChC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AACA,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC;IAC9D,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,EAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAAC;AAC1F,CAAC;AAED,MAAM,mBAAmB,GAAG,OAAO,GAAW,EAAE,OAA6B,KAA2B;IACtG,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;;AAG1D,IAAA,IAAI,MAAM,GAAG,MAAM,mBAAmB,CACpC,qBAAqB,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,MAAM,EAAE,EAAC,OAAO,EAAE,EAAC,QAAQ,EAAE,aAAa,EAAC,EAAC,CAAC,CAAC,EACxF,GAAG,EAAE,OAAO,CACb;;IAGD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;IACnC,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,EAAE;AAClH,QAAA,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB;QACF;AACA,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;QACpC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC;AACvC,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE;AAC3C,QAAA,MAAM,GAAG,MAAM,mBAAmB,CAChC,qBAAqB,CAAC,aAAa,EAAE,MAAM,KAAK,CAAC,aAAa,EAAE,EAAC,OAAO,EAAE,EAAC,QAAQ,EAAE,aAAa,EAAC,EAAC,CAAC,CAAC,EACtG,GAAG,EAAE,OAAO,CACb;IACH;;IAGA,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,EAAE;QAChH,IAAI,MAAM,EAAE;YACV;QACF;AACA,QAAA,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAC,KAAK,EAAE,cAAc,CAAC,GAAG,CAAC,EAAC,CAAC;AAClE,QAAA,MAAM,GAAG,MAAM,mBAAmB,CAChC,aAAa,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE;AAClC,YAAA,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAC,cAAc,EAAE,mCAAmC,EAAE,QAAQ,EAAE,oCAAoC,EAAC;AAC9G,YAAA,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE;SAC1B,CAAC,EAAE,GAAG,CAAC,EACR,GAAG,EAAE,OAAO,CACb;IACH;IAEA,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,CAAA,CAAA,CAAG,CAAC;IACrD;AACA,IAAA,OAAO,MAAM;AACf,CAAC;AAEM,eAAe,aAAa,CAAC,GAAW,EAAE,UAAyC,EAAE,EAAA;IAC1F,MAAM,aAAa,GAAyB,EAAC,GAAG,2BAA2B,EAAE,GAAG,OAAO,EAAC;AACxF,IAAA,IAAI,EAAE,GAAG,IAAI,kBAAkB,CAAC,EAAE;QAChC,kBAAkB,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,aAAa,CAAC;IACnE;AACA,IAAA,OAAO,kBAAkB,CAAC,GAAG,CAAC;AAChC;AAEO,eAAe,WAAW,CAAC,GAAW,EAAA;AAC3C,IAAA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;AAChC,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,wDAAwD;AACnE,SAAA;AACF,KAAA,CAAC;AACF,IAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;AAChB,QAAA,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,GAAG,CAAA,EAAA,EAAK,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,CAAA,CAAE,CAAC;IAC/F;AACA,IAAA,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;AACrC,IAAA,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC;IAC1C,OAAO;QACL,OAAO;QACP,OAAO;KACR;AACH;;;;;;;;;ACvNA,MAAM,qBAAqB,GAAmB;AAC5C,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,GAAG,2BAA2B;CAC/B;SAEe,qBAAqB,CAAC,OAAiC,EAAE,SAAsB,EACzD,OAAA,GAAwC;AACtC,IAAA,eAAe,EAAE,YAAY;AAC9B,CAAA,EAAA;IACrC,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,KAAU,EAAE,UAAU,GAAG,KAAK,KAAI;AAC1E,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE;gBACzB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC;AAC1C,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;YACtC;AACA,YAAA,OAAO,MAAM;QACf;AAAO,aAAA,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AAC3C,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,KAAK;AAC7B,YAAA,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;AACxB,YAAA,OAAO,IAAI;QACb;aAAO;YACL,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,YAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;YACnC,IAAI,UAAU,EAAE;AACd,gBAAA,KAAK,CAAC,SAAS,GAAG,yDAAyD;YAC7E;YACA,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,YAAA,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAI;gBACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5C,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC;AACxC,gBAAA,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC;AACxC,gBAAA,OAAO,CAAC,WAAW,GAAG,CAAC;AACvB,gBAAA,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;gBACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC9C,gBAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AACvC,gBAAA,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;AACzB,gBAAA,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC;AAC1B,gBAAA,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;AACxB,YAAA,CAAC,CAAC;AACF,YAAA,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;AACxB,YAAA,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;AACzB,YAAA,OAAO,KAAK;QACd;AACF,IAAA,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC7C,IAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC1C,IAAA,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC;AAC9B,IAAA,IAAI,OAAO,CAAC,eAAe,EAAE;AAC3B,QAAA,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC;IAC9D;SAAO;AACL,QAAA,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IACrC;AACF;AAEO,eAAe,OAAO,CAAC,QAAqB,EAAE,OAA0B,EAAE,OAAA,GAAmC,EAAE,EAAA;IAEpH,MAAM,aAAa,GAAG,EAAC,GAAG,qBAAqB,EAAE,GAAG,OAAO,EAAC;AAE5D,IAAA,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,YAAiC,EAC/C,QAAQ,GAAG,IAAI,EAAE,OAAO,GAAG,KAAK,KAAmC;QACtF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE;AAC9B,YAAA,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC;QACtB;QACA,IAAI,YAAY,GAAkB,IAAI;QACtC,IAAI,WAAW,GAAkB,IAAI;AACrC,QAAA,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACjD,YAAA,IAAI,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;gBAC3B,IAAI,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,gBAAA,IAAI,UAAkB;AACtB,gBAAA,IAAI,YAAY,KAAK,IAAI,IAAI,OAAO,YAAY,KAAK,WAAW,IAAI,OAAO,YAAY,KAAK;AACvF,uBAAA,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;oBAChC;gBACF;AACA,gBAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACpC,oBAAA,IAAI,YAAY,KAAK,OAAO,EAAE;AAC5B,wBAAA,OAAO,EAAC,KAAK,EAAE,iDAAiD,EAAC;oBACnE;oBACA,UAAU,GAAG,YAAY;AACzB,oBAAA,YAAY,GAAG,EAAC,KAAK,EAAE,YAAY,EAAC;gBACtC;AAAO,qBAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,KAAK,IAAI,YAAY,IAAI,OAAO,YAAY,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC/G,oBAAA,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;gBAClC;qBAAO;oBACL;gBACF;gBACA,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,gBAAA,IAAI,GAAG,GAAG,EAAE,EAAE;oBACZ,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;oBAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/C,oBAAA,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;;AAE9B,wBAAA,OAAO,YAAY;oBACrB;oBACA,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC;AACxD,oBAAA,IAAI,cAAc,KAAK,IAAI,IAAI,KAAK,IAAI,cAAc,IAAI,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;;AAEnG,wBAAA,YAAY,CAAC,KAAK,CAAC,GAAG,CAAA,EAAG,cAAc,CAAC,KAAK,CAAC,CAAA,EAAG,SAAS,CAAA,CAAE;oBAC9D;AACA,oBAAA,OAAO,YAAY;gBACrB;YACF;AACA,YAAA,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;gBACtD,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAE;YAC3C;AACA,YAAA,IAAI,WAAW,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;gBACpD,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAE;YACzC;QACF;QACA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;AAC5B,YAAA,IAAI,QAAQ,IAAI,YAAY,EAAE;gBAC5B,OAAO,EAAC,KAAK,EAAE,CAAA,EAAG,YAAY,CAAA,EAAG,IAAI,CAAA,CAAE,EAAC;YAC1C;AACA,YAAA,IAAI,OAAO,IAAI,WAAW,EAAE;gBAC1B,OAAO,EAAC,KAAK,EAAE,CAAA,EAAG,WAAW,CAAA,EAAG,IAAI,CAAA,CAAE,EAAC;YACzC;QACF;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,IAAiB,KAAI;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE;AACtE,YAAA,UAAU,CAAC,IAAU,EAAA;gBACnB,MAAM,QAAQ,GAAG,IAAmB;AACpC,gBAAA,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;oBAChE,OAAO,UAAU,CAAC,aAAa;gBACjC;gBACA,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;oBAClD,OAAO,UAAU,CAAC,aAAa;gBACjC;gBACA,OAAO,UAAU,CAAC,WAAW;YAC/B,CAAC;AACF,SAAA,CAAC;QACF,MAAM,MAAM,GAAkB,EAAE;AAChC,QAAA,IAAI,GAAG;QACP,QAAQ,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG;AAChC,YAAA,MAAM,CAAC,IAAI,CAAC,GAAkB,CAAC;QACjC;AACA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;AAED,IAAA,MAAM,mBAAmB,GAAG,CAAC,IAAiB,KAAI;QAChD,MAAM,MAAM,GAAkB,EAAE;QAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE;AACtE,YAAA,UAAU,CAAC,IAAU,EAAA;gBACnB,MAAM,QAAQ,GAAG,IAAmB;AACpC,gBAAA,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;oBACjG,OAAO,UAAU,CAAC,aAAa;gBACjC;gBACA,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;AAChD,oBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACrB,OAAO,UAAU,CAAC,aAAa;gBACjC;gBACA,OAAO,UAAU,CAAC,WAAW;YAC/B,CAAC;AACF,SAAA,CAAC;AACF,QAAA,OAAO,MAAM,CAAC,QAAQ,EAAE,EAAE;QAC1B;AACA,QAAA,OAAO,MAAM;AACf,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAE,WAAmB,EACtC,eAAe,GAAG,IAAI,KAAI;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC;AAC1C,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACtC,QAAA,aAAa,CAAC,WAAW,EAAE,aAAa;aACrC,IAAI,CAAC,YAAY,IAAG;YACnB,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAgB,IAAI,IAAI;AAC9E,YAAA,IAAI,YAAY,CAAC,KAAK,EAAE;gBACtB,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC;AACnD,gBAAA,IAAI,aAAa,CAAC,eAAe,EAAE;AACjC,oBAAA,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,KAAK;gBAC/C;YACF;AACA,YAAA,IAAI,YAAY,CAAC,WAAW,EAAE;gBAC5B,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC,WAAW,CAAC;AAC/D,gBAAA,IAAI,aAAa,CAAC,eAAe,EAAE;AACjC,oBAAA,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,WAAW;gBAC/C;YACF;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACzC,QAAA,CAAC;aACA,KAAK,CAAC,CAAC,IAAG;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,CAAA,oBAAA,EAAuB,WAAW,CAAA,EAAA,EAAK,CAAC,CAAA,CAAE,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC;AACrE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtC,QAAA,CAAC;aACA,OAAO,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAC3C,QAAA,CAAC,CAAC;QACJ,IAAI,eAAe,EAAE;YACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACxC,YAAA,IAAI,CAAC,IAAI,GAAG,WAAW;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;AACtB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;AACnC,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;YACnC;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACxB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,IAAiB,EAAE,YAAiC,KAAI;;AAC5E,QAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAC5C,QAAA,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,YAAY,GAAkB,IAAI;AACtC,YAAA,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,eAAe,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE;AACjB,gBAAA,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;YAC5C;YACA,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC;YAChE,IAAI,eAAe,GAAG,YAAY;YAClC,MAAM,SAAS,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,aAAa,CAAC,eAAe,CAAgB;AACvF,YAAA,IAAI,gBAAgB,IAAI,KAAK,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;AAChG,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBAC3C,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC;AACnE,gBAAA,IAAI,UAAU,IAAI,gBAAgB,EAAE;oBAClC,eAAe,GAAG,CAAC,GAAG,YAAY,EAAE,gBAAgB,CAAC,UAAU,CAAE,CAAC;gBACpE;gBACA,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,SAAS,EAAE;AACpD,oBAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC;AACnD,oBAAA,YAAY,CAAC,OAAO,CAAC,WAAW,IAAG;AACjC,wBAAA,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,EAChE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC;AAC/B,wBAAA,IAAI,eAAe,IAAI,KAAK,IAAI,eAAe,IAAI,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;AAC7F,4BAAA,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;4BAC1C,aAAa,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,eAAe,CAAC;wBACxE;AACF,oBAAA,CAAC,CAAC;gBACJ;YACF;YACA,IAAI,SAAS,EAAE;AACb,gBAAA,YAAY,CAAC,SAAwB,EAAE,eAAe,CAAC;YACzD;QACF;AACF,IAAA,CAAC;AACD,IAAA,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;AACnC;;;;;;;;ACjPA,YAAe;AACb,IAAA,GAAG,QAAQ;AACX,IAAA,GAAG,MAAM;AACT,IAAA,GAAGA,SAAO;CACX;;;;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/jsonld.ts","../src/constants.ts","../src/resource.ts","../src/augment.ts","../src/index.ts"],"sourcesContent":["import {ContextDefinition} from 'jsonld';\n\ntype OrArray<T> = T | T[];\n\nexport type Context = OrArray<null | string | ContextDefinition>;\n\nexport type ContextObject = {\n \"@context\": Context;\n}\n\nconst jsonFetch = async (url: string) => {\n const response = await fetch(url, {\n headers: {'Accept': 'application/json'},\n });\n return await response.json() as ContextObject;\n};\n\nconst mergeContexts = (definitions: ContextDefinition[]) => {\n const mergePair = (a: ContextDefinition | null | undefined,\n b: ContextDefinition): ContextDefinition => {\n if (!a || !Object.keys(a).length) {\n return b;\n }\n const result = {...a};\n for (const [k, v] of Object.entries(b)) {\n result[k] = v;\n }\n return result;\n };\n\n if (!definitions.length) {\n return {};\n }\n if (definitions.length === 1) {\n return definitions[0];\n }\n let currentContext = definitions[0];\n for (let i = 1; i < definitions.length; i++) {\n currentContext = mergePair(currentContext, definitions[i]);\n }\n return currentContext;\n};\n\n\nexport async function loadContext(context: Context | ContextObject) {\n const loadedUrls = new Map<string, ContextObject>();\n\n const walk = async (definition: object, refChain?: string[]) => {\n for (const [key, value] of Object.entries(definition)) {\n if (key === '@context') {\n // @ts-ignore\n definition[key] = await load(value as Context, refChain);\n } else if (typeof value === 'object' && value !== null) {\n await walk(value, refChain);\n }\n }\n };\n\n const load = async (context: Context, refChain?: string[]): Promise<ContextDefinition> => {\n if (context === null || typeof context === 'undefined') {\n return {};\n }\n if (Array.isArray(context)) {\n // fetch and merge\n const contextEntries = await Promise.all(context.map(e => load(e, refChain)));\n return mergeContexts(contextEntries);\n } else if (typeof context === 'object') {\n await walk(context, refChain);\n return context;\n } else {\n if (refChain?.includes(context)) {\n throw new Error('Circular dependencies found: ' + refChain.join(' -> ') + ' -> ' + context);\n }\n const newRefChain = Array.isArray(refChain) ? refChain?.slice() : [];\n newRefChain.push(context);\n let newContext: ContextObject;\n if (!loadedUrls.has(context)) {\n newContext = await jsonFetch(context);\n loadedUrls.set(context, newContext);\n } else {\n newContext = loadedUrls.get(context) as ContextObject;\n }\n return load(newContext['@context'], newRefChain);\n }\n };\n\n if (typeof context === 'object' && context !== null && '@context' in context) {\n return load((context as ContextObject)['@context']);\n } else {\n return load(context);\n }\n}","const ns = (base: string) => (local: string): string => `${base}${local}`;\n\nexport const SKOS = ns('http://www.w3.org/2004/02/skos/core#');\nexport const RDFS = ns('http://www.w3.org/2000/01/rdf-schema#');\nexport const RDF = ns('http://www.w3.org/1999/02/22-rdf-syntax-ns#');\nexport const DCT = ns('http://purl.org/dc/terms/');\nexport const DC = ns('http://purl.org/dc/elements/1.1/');\nexport const SDO = ns('https://schema.org/');\nexport const FOAF = ns('http://xmlns.com/foaf/0.1/');\n\nexport const labelPredicates: string[] = [\n SKOS('prefLabel'),\n DCT('title'),\n DC('title'),\n SDO('name'),\n FOAF('name'),\n RDFS('label'),\n];\n\nexport const descriptionPredicates: string[] = [\n SKOS('definition'),\n DCT('description'),\n DC('description'),\n RDFS('comment'),\n];","import {loadContext} from \"./jsonld\";\nimport {descriptionPredicates, labelPredicates} from \"./constants\";\nimport * as N3 from 'n3';\nimport {RdfXmlParser} from 'rdfxml-streaming-parser';\n\nexport interface FetchResourceOptions {\n labelPredicates: string[],\n descriptionPredicates: string[],\n fallbackRainbowInstance?: string, // deprecated: use fallbackRainbowInstances\n fallbackRainbowInstances?: string | string[],\n fallbackSparqlEndpoint?: string, // deprecated: use fallbackSparqlEndpoints\n fallbackSparqlEndpoints?: string | string[],\n}\n\nexport const defaultFetchResourceOptions: FetchResourceOptions = {\n labelPredicates,\n descriptionPredicates,\n};\n\nexport interface CreatePropertiesTableOptions {\n propertiesField?: string | null,\n}\n\nexport interface ResourceData {\n uri: string,\n label: string | null,\n description?: string | null,\n}\n\nconst fetchResourceCache: { [uri: string]: Promise<ResourceData> } = {};\nconst requestCache: { [url: string]: Promise<N3.Store | null> } = {};\n\nconst N3_CONTENT_TYPES = new Set([\n 'text/turtle',\n 'text/n3',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'text/anot+turtle',\n]);\n\nconst ACCEPT_HEADER = [\n 'text/turtle',\n 'application/n-triples',\n 'application/n-quads',\n 'application/trig',\n 'application/ld+json',\n 'application/rdf+xml',\n].join(', ');\n\nfunction getUserLanguages(): string[] {\n if (typeof navigator !== 'undefined' && navigator.languages?.length) {\n return Array.from(navigator.languages);\n }\n try {\n return [Intl.DateTimeFormat().resolvedOptions().locale];\n } catch {\n return [];\n }\n}\n\nexport function findInStore(store: N3.Store, subjectUri: string, predicates: string[], userLangs = getUserLanguages()): string | null {\n const subj = N3.DataFactory.namedNode(subjectUri);\n for (const predUri of predicates) {\n const quads = store\n .getQuads(subj, N3.DataFactory.namedNode(predUri), null, null)\n .filter(q => q.object.termType === 'Literal');\n if (!quads.length) {\n continue;\n }\n for (const lang of userLangs) {\n const base = lang.split('-')[0].toLowerCase();\n const match = quads.find(q => {\n const qLang = (q.object as N3.Literal).language?.toLowerCase();\n return qLang === lang.toLowerCase() || qLang?.split('-')[0] === base;\n });\n if (match) {\n return match.object.value;\n }\n }\n const noLang = quads.find(q => !(q.object as N3.Literal).language);\n if (noLang) {\n return noLang.object.value;\n }\n const en = quads.find(q => (q.object as N3.Literal).language?.toLowerCase() === 'en');\n return (en ?? quads[0]).object.value;\n }\n return null;\n}\n\nfunction parseTurtle(text: string, baseIRI: string, contentType: string): Promise<N3.Store> {\n const store = new N3.Store();\n const format = contentType === 'text/anot+turtle' ? 'text/turtle' : contentType as any;\n const parser = new N3.Parser({baseIRI, format});\n return new Promise((resolve, reject) => {\n parser.parse(text, (err, quad) => {\n if (err) {\n return reject(err);\n }\n if (quad) {\n store.addQuad(quad);\n }\n else {\n resolve(store);\n }\n });\n });\n}\n\nasync function parseJsonLd(text: string, baseIRI: string): Promise<N3.Store> {\n const jsonldMod = await import('jsonld') as any;\n if (!jsonldMod) {\n throw new Error('jsonld peer dependency is not available');\n }\n const doc = JSON.parse(text);\n const nquads = await jsonldMod.toRDF(doc, {format: 'application/n-quads', base: baseIRI});\n return parseTurtle(nquads, baseIRI, 'application/n-quads');\n}\n\nasync function parseRdfXml(text: string, baseIRI: string): Promise<N3.Store> {\n const store = new N3.Store();\n return new Promise((resolve, reject) => {\n const parser = new RdfXmlParser({baseIRI});\n parser.on('data', (quad: any) => store.addQuad(quad));\n parser.on('error', reject);\n parser.on('end', () => resolve(store));\n parser.write(text);\n parser.end();\n });\n}\n\nconst toArray = (val?: string | string[]): string[] =>\n !val ? [] : Array.isArray(val) ? val : [val];\n\nconst getSparqlQuery = (uri: string) => `DESCRIBE <${uri}>`;\n\nconst fetchAndParse = async (fetchFn: () => Promise<Response>, baseIRI: string): Promise<N3.Store | null> => {\n let response: Response;\n try {\n response = await fetchFn();\n if (!response.ok) {\n return null;\n }\n } catch {\n return null;\n }\n const contentType = response.headers.get('content-type')?.split(';')[0].trim() || 'text/turtle';\n const text = await response.text();\n try {\n if (N3_CONTENT_TYPES.has(contentType)) {\n return parseTurtle(text, baseIRI, contentType);\n }\n if (contentType === 'application/ld+json') {\n return parseJsonLd(text, baseIRI);\n }\n if (contentType === 'application/rdf+xml') {\n return parseRdfXml(text, baseIRI);\n }\n } catch {\n }\n return null;\n};\n\nconst fetchAndParseDocument = (docUrl: string, fetchFn: () => Promise<Response>): Promise<N3.Store | null> => {\n if (!(docUrl in requestCache)) {\n requestCache[docUrl] = fetchAndParse(fetchFn, docUrl);\n }\n return requestCache[docUrl];\n};\n\nconst findResourceInStore = async (storePromise: Promise<N3.Store | null>, uri: string, options: FetchResourceOptions): Promise<ResourceData | null> => {\n const store = await storePromise;\n if (!store) {\n return null;\n }\n const label = findInStore(store, uri, options.labelPredicates);\n if (!label) {\n return null;\n }\n return {uri, label, description: findInStore(store, uri, options.descriptionPredicates)};\n};\n\nconst actualFetchResource = async (uri: string, options: FetchResourceOptions): Promise<ResourceData> => {\n const docUrl = uri.includes('#') ? uri.split('#')[0] : uri;\n\n // 1. Direct (cached by document URL so hash siblings share one request)\n let result = await findResourceInStore(\n fetchAndParseDocument(docUrl, () => fetch(docUrl, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n\n // 2. Rainbow proxies (in order) — not supported for hash URIs\n const isHashUri = uri.includes('#');\n for (const instance of [...toArray(options.fallbackRainbowInstances), ...toArray(options.fallbackRainbowInstance)]) {\n if (result || isHashUri) {\n break;\n }\n const rainbowURL = new URL(instance);\n rainbowURL.searchParams.set('uri', uri);\n const rainbowUrlStr = rainbowURL.toString();\n result = await findResourceInStore(\n fetchAndParseDocument(rainbowUrlStr, () => fetch(rainbowUrlStr, {headers: {'Accept': ACCEPT_HEADER}})),\n uri, options,\n );\n }\n\n // 3. SPARQL endpoints (in order) — each DESCRIBE is unique per URI, no request cache\n for (const endpoint of [...toArray(options.fallbackSparqlEndpoints), ...toArray(options.fallbackSparqlEndpoint)]) {\n if (result) {\n break;\n }\n const formBody = new URLSearchParams({query: getSparqlQuery(uri)});\n result = await findResourceInStore(\n fetchAndParse(() => fetch(endpoint, {\n method: 'POST',\n headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'text/turtle, application/n-triples'},\n body: formBody.toString(),\n }), uri),\n uri, options,\n );\n }\n\n if (!result) {\n throw new Error(`No label data found for <${uri}>`);\n }\n return result;\n};\n\nexport async function fetchResource(uri: string, options: Partial<FetchResourceOptions> = {}) {\n const mergedOptions: FetchResourceOptions = {...defaultFetchResourceOptions, ...options};\n if (!(uri in fetchResourceCache)) {\n fetchResourceCache[uri] = actualFetchResource(uri, mergedOptions);\n }\n return fetchResourceCache[uri];\n}\n\nexport async function loadFeature(url: string) {\n const response = await fetch(url, {\n headers: {\n 'Accept': 'application/ld+json, application/json;q=0.9, */*;q=0.1',\n },\n });\n if (!response.ok) {\n throw new Error(`Could not load feature ${url}: ${response.status} - ${response.statusText}`);\n }\n const feature = await response.json();\n const context = await loadContext(feature);\n return {\n feature,\n context,\n };\n}","import {\n CreatePropertiesTableOptions,\n defaultFetchResourceOptions,\n fetchResource,\n FetchResourceOptions,\n} from \"./resource\";\nimport {ContextDefinition, ExpandedTermDefinition} from \"jsonld\";\n\nexport interface AugmentOptions extends FetchResourceOptions {\n replaceElements: boolean,\n}\n\nconst defaultAugmentOptions: AugmentOptions = {\n replaceElements: true,\n ...defaultFetchResourceOptions,\n};\n\nexport function createPropertiesTable(feature: { [index: string]: any }, container: HTMLElement,\n options: CreatePropertiesTableOptions = {\n propertiesField: 'properties',\n }) {\n const createLevel = (parent: HTMLElement, value: any, addHeaders = false) => {\n if (Array.isArray(value)) {\n for (const entry of value) {\n const newElem = createLevel(parent, entry);\n newElem.classList.add('array-entry');\n }\n return parent;\n } else if (value === null || typeof value === 'undefined' || typeof value !== 'object') {\n const span = document.createElement('span');\n span.classList.add('literal-value');\n span.textContent = '' + value;\n parent.appendChild(span);\n return span;\n } else {\n const table = document.createElement('table');\n table.classList.add('object-table');\n if (addHeaders) {\n table.innerHTML = '<thead><tr><th>Property</th><th>Value</th></tr></thead>';\n }\n const tbody = document.createElement('tbody');\n Object.entries(value).forEach(([k, v]) => {\n const row = document.createElement('tr');\n const keyCell = document.createElement('td');\n keyCell.classList.add('object-property');\n keyCell.setAttribute('data-property', k);\n keyCell.textContent = k;\n row.appendChild(keyCell);\n const valueCell = document.createElement('td');\n valueCell.classList.add('object-value');\n createLevel(valueCell, v);\n row.appendChild(valueCell);\n tbody.appendChild(row);\n });\n table.appendChild(tbody);\n parent.appendChild(table);\n return table;\n }\n };\n const wrapper = document.createElement('div');\n wrapper.classList.add('object-properties');\n container.appendChild(wrapper);\n if (options.propertiesField) {\n createLevel(wrapper, feature[options.propertiesField], true);\n } else {\n createLevel(wrapper, feature, true);\n }\n}\n\nexport async function augment(rootElem: HTMLElement, context: ContextDefinition, options: Partial<AugmentOptions> = {}) {\n\n const mergedOptions = {...defaultAugmentOptions, ...options};\n\n const resolveTerm = (term: string, contextStack: ContextDefinition[],\n useVocab = true, useBase = false): ExpandedTermDefinition | null => {\n if (term.indexOf('://') !== -1) {\n return {'@id': term};\n }\n let closestVocab: string | null = null;\n let closestBase: string | null = null;\n for (let i = contextStack.length - 1; i >= 0; i--) {\n if (term in contextStack[i]) {\n let resolvedTerm = contextStack[i][term];\n let resolvedId: string;\n if (resolvedTerm === null || typeof resolvedTerm === 'undefined' || typeof resolvedTerm === 'boolean'\n || Array.isArray(resolvedTerm)) {\n continue;\n }\n if (typeof resolvedTerm === 'string') {\n if (resolvedTerm === '@type') {\n return {'@id': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'};\n }\n resolvedId = resolvedTerm;\n resolvedTerm = {'@id': resolvedTerm};\n } else if (typeof resolvedTerm === 'object' && '@id' in resolvedTerm && typeof resolvedTerm['@id'] === 'string') {\n resolvedId = resolvedTerm['@id'];\n } else {\n continue;\n }\n const idx = resolvedId.indexOf(':');\n if (idx > -1) {\n const prefix = resolvedId.substring(0, idx);\n const localPart = resolvedId.substring(idx + 1);\n if (localPart.startsWith('//')) {\n // Full URI -> return\n return resolvedTerm;\n }\n const resolvedPrefix = resolveTerm(prefix, contextStack);\n if (resolvedPrefix !== null && '@id' in resolvedPrefix && typeof resolvedPrefix['@id'] === 'string') {\n // Prefix found and resolved\n resolvedTerm['@id'] = `${resolvedPrefix['@id']}${localPart}`;\n }\n return resolvedTerm;\n }\n }\n if (closestVocab === null && contextStack[i]['@vocab']) {\n closestVocab = contextStack[i]['@vocab']!;\n }\n if (closestBase === null && contextStack[i]['@base']) {\n closestBase = contextStack[i]['@base']!;\n }\n }\n if (term.indexOf(':') === -1) {\n if (useVocab && closestVocab) {\n return {'@id': `${closestVocab}${term}`};\n }\n if (useBase && closestBase) {\n return {'@id': `${closestBase}${term}`};\n }\n }\n return null;\n };\n\n const findPropertyChildren = (elem: HTMLElement) => {\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (node !== elem && nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('object-property')) {\n return NodeFilter.FILTER_ACCEPT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n const result: HTMLElement[] = [];\n let cur;\n while ((cur = walker.nextNode())) {\n result.push(cur as HTMLElement);\n }\n return result;\n };\n\n const findLiteralChildren = (elem: HTMLElement) => {\n const result: HTMLElement[] = [];\n const walker = document.createTreeWalker(elem, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node): number {\n const nodeElem = node as HTMLElement;\n if (nodeElem.classList.contains('object-property') || nodeElem.classList.contains('object-value')) {\n return NodeFilter.FILTER_REJECT;\n }\n if (nodeElem.classList.contains('literal-value')) {\n result.push(nodeElem);\n return NodeFilter.FILTER_REJECT;\n }\n return NodeFilter.FILTER_SKIP;\n },\n });\n while (walker.nextNode()) {\n }\n return result;\n };\n\n const updateElement = (elem: HTMLElement, resourceUri: string,\n replaceElements = true) => {\n elem.setAttribute('data-uri', resourceUri);\n elem.classList.add('resource-loading');\n fetchResource(resourceUri, mergedOptions)\n .then(resourceData => {\n let elemToUpdate = elem.querySelector('.resource-link') as HTMLElement || elem;\n if (resourceData.label) {\n elem.setAttribute('data-label', resourceData.label);\n if (mergedOptions.replaceElements) {\n elemToUpdate.textContent = resourceData.label;\n }\n }\n if (resourceData.description) {\n elem.setAttribute('data-description', resourceData.description);\n if (mergedOptions.replaceElements) {\n elemToUpdate.title = resourceData.description;\n }\n }\n elem.classList.add('resource-resolved');\n })\n .catch(e => {\n console.error(`Error resolving URI ${resourceUri}: ${e}`, {cause: e});\n elem.classList.add('resource-error');\n })\n .finally(() => {\n elem.classList.remove('resource-loading');\n });\n if (replaceElements) {\n const link = document.createElement(\"a\");\n link.href = resourceUri;\n link.target = '_blank';\n link.classList.add('resource-link');\n while (elem.firstChild) {\n link.appendChild(elem.firstChild);\n }\n elem.appendChild(link);\n }\n };\n\n const augmentInner = (elem: HTMLElement, contextStack: ContextDefinition[]) => {\n const propElems = findPropertyChildren(elem);\n for (const propElem of propElems) {\n let propertyName: string | null = null;\n propertyName = propElem.getAttribute('data-property');\n if (!propertyName) {\n propertyName = propElem.textContent.trim();\n }\n const resolvedProperty = resolveTerm(propertyName, contextStack);\n let newContextStack = contextStack;\n const valueElem = propElem.parentElement?.querySelector('.object-value') as HTMLElement;\n if (resolvedProperty && '@id' in resolvedProperty && typeof resolvedProperty['@id'] === 'string') {\n const propertyUri = resolvedProperty['@id'];\n updateElement(propElem, propertyUri, mergedOptions.replaceElements);\n if ('@context' in resolvedProperty) {\n newContextStack = [...contextStack, resolvedProperty['@context']!];\n }\n if (resolvedProperty['@type'] === '@id' && valueElem) {\n const literalElems = findLiteralChildren(valueElem);\n literalElems.forEach(literalElem => {\n const resolvedLiteral = resolveTerm(literalElem.textContent.trim(),\n newContextStack, false, true);\n if (resolvedLiteral && '@id' in resolvedLiteral && typeof resolvedLiteral['@id'] === 'string') {\n const resourceUri = resolvedLiteral['@id'];\n updateElement(literalElem, resourceUri, mergedOptions.replaceElements);\n }\n });\n }\n }\n if (valueElem) {\n augmentInner(valueElem as HTMLElement, newContextStack);\n }\n }\n };\n augmentInner(rootElem, [context]);\n}\n","export * from './resource';\nexport * from './jsonld';\nexport * from './augment';\n\nimport * as resource from './resource';\nimport * as jsonld from './jsonld';\nimport * as augment from './augment';\n\nexport default {\n ...resource,\n ...jsonld,\n ...augment,\n}"],"names":["augment"],"mappings":"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"}
|