@_linked/core 2.12.0 → 2.13.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/CHANGELOG.md +6 -0
- package/lib/esm/queries/IRPipeline.d.ts +7 -1
- package/lib/esm/queries/IRPipeline.js +20 -6
- package/lib/esm/queries/IRPipeline.js.map +1 -1
- package/lib/esm/queries/queryDispatch.js +12 -2
- package/lib/esm/queries/queryDispatch.js.map +1 -1
- package/package.json +10 -13
- package/lib/cjs/collections/CoreSet.d.ts +0 -47
- package/lib/cjs/collections/CoreSet.js +0 -136
- package/lib/cjs/collections/CoreSet.js.map +0 -1
- package/lib/cjs/collections/ShapeSet.d.ts +0 -6
- package/lib/cjs/collections/ShapeSet.js +0 -20
- package/lib/cjs/collections/ShapeSet.js.map +0 -1
- package/lib/cjs/expressions/Expr.d.ts +0 -29
- package/lib/cjs/expressions/Expr.js +0 -80
- package/lib/cjs/expressions/Expr.js.map +0 -1
- package/lib/cjs/expressions/ExpressionMethods.d.ts +0 -85
- package/lib/cjs/expressions/ExpressionMethods.js +0 -3
- package/lib/cjs/expressions/ExpressionMethods.js.map +0 -1
- package/lib/cjs/expressions/ExpressionNode.d.ts +0 -144
- package/lib/cjs/expressions/ExpressionNode.js +0 -432
- package/lib/cjs/expressions/ExpressionNode.js.map +0 -1
- package/lib/cjs/index.d.ts +0 -29
- package/lib/cjs/index.js +0 -65
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/interfaces/ICoreIterable.d.ts +0 -14
- package/lib/cjs/interfaces/ICoreIterable.js +0 -3
- package/lib/cjs/interfaces/ICoreIterable.js.map +0 -1
- package/lib/cjs/interfaces/IDataset.d.ts +0 -26
- package/lib/cjs/interfaces/IDataset.js +0 -3
- package/lib/cjs/interfaces/IDataset.js.map +0 -1
- package/lib/cjs/interfaces/IFileStore.d.ts +0 -16
- package/lib/cjs/interfaces/IFileStore.js +0 -3
- package/lib/cjs/interfaces/IFileStore.js.map +0 -1
- package/lib/cjs/ontologies/linked-core.d.ts +0 -15
- package/lib/cjs/ontologies/linked-core.js +0 -38
- package/lib/cjs/ontologies/linked-core.js.map +0 -1
- package/lib/cjs/ontologies/npm.d.ts +0 -6
- package/lib/cjs/ontologies/npm.js +0 -15
- package/lib/cjs/ontologies/npm.js.map +0 -1
- package/lib/cjs/ontologies/owl.d.ts +0 -14
- package/lib/cjs/ontologies/owl.js +0 -21
- package/lib/cjs/ontologies/owl.js.map +0 -1
- package/lib/cjs/ontologies/rdf.d.ts +0 -13
- package/lib/cjs/ontologies/rdf.js +0 -27
- package/lib/cjs/ontologies/rdf.js.map +0 -1
- package/lib/cjs/ontologies/rdfs.d.ts +0 -16
- package/lib/cjs/ontologies/rdfs.js +0 -33
- package/lib/cjs/ontologies/rdfs.js.map +0 -1
- package/lib/cjs/ontologies/shacl.d.ts +0 -103
- package/lib/cjs/ontologies/shacl.js +0 -152
- package/lib/cjs/ontologies/shacl.js.map +0 -1
- package/lib/cjs/ontologies/xsd.d.ts +0 -19
- package/lib/cjs/ontologies/xsd.js +0 -41
- package/lib/cjs/ontologies/xsd.js.map +0 -1
- package/lib/cjs/package.d.ts +0 -4
- package/lib/cjs/package.js +0 -6
- package/lib/cjs/package.js.map +0 -1
- package/lib/cjs/package.json +0 -9
- package/lib/cjs/paths/PropertyPathExpr.d.ts +0 -38
- package/lib/cjs/paths/PropertyPathExpr.js +0 -221
- package/lib/cjs/paths/PropertyPathExpr.js.map +0 -1
- package/lib/cjs/paths/normalizePropertyPath.d.ts +0 -23
- package/lib/cjs/paths/normalizePropertyPath.js +0 -75
- package/lib/cjs/paths/normalizePropertyPath.js.map +0 -1
- package/lib/cjs/paths/pathExprToSparql.d.ts +0 -14
- package/lib/cjs/paths/pathExprToSparql.js +0 -136
- package/lib/cjs/paths/pathExprToSparql.js.map +0 -1
- package/lib/cjs/queries/ContextRef.d.ts +0 -32
- package/lib/cjs/queries/ContextRef.js +0 -69
- package/lib/cjs/queries/ContextRef.js.map +0 -1
- package/lib/cjs/queries/CreateBuilder.d.ts +0 -59
- package/lib/cjs/queries/CreateBuilder.js +0 -138
- package/lib/cjs/queries/CreateBuilder.js.map +0 -1
- package/lib/cjs/queries/CreateQuery.d.ts +0 -20
- package/lib/cjs/queries/CreateQuery.js +0 -3
- package/lib/cjs/queries/CreateQuery.js.map +0 -1
- package/lib/cjs/queries/DeleteBuilder.d.ts +0 -56
- package/lib/cjs/queries/DeleteBuilder.js +0 -172
- package/lib/cjs/queries/DeleteBuilder.js.map +0 -1
- package/lib/cjs/queries/DeleteQuery.d.ts +0 -37
- package/lib/cjs/queries/DeleteQuery.js +0 -3
- package/lib/cjs/queries/DeleteQuery.js.map +0 -1
- package/lib/cjs/queries/DslJsonExpression.d.ts +0 -68
- package/lib/cjs/queries/DslJsonExpression.js +0 -427
- package/lib/cjs/queries/DslJsonExpression.js.map +0 -1
- package/lib/cjs/queries/FieldSet.d.ts +0 -310
- package/lib/cjs/queries/FieldSet.js +0 -802
- package/lib/cjs/queries/FieldSet.js.map +0 -1
- package/lib/cjs/queries/IRAliasScope.d.ts +0 -20
- package/lib/cjs/queries/IRAliasScope.js +0 -52
- package/lib/cjs/queries/IRAliasScope.js.map +0 -1
- package/lib/cjs/queries/IRCanonicalize.d.ts +0 -19
- package/lib/cjs/queries/IRCanonicalize.js +0 -19
- package/lib/cjs/queries/IRCanonicalize.js.map +0 -1
- package/lib/cjs/queries/IRDesugar.d.ts +0 -123
- package/lib/cjs/queries/IRDesugar.js +0 -261
- package/lib/cjs/queries/IRDesugar.js.map +0 -1
- package/lib/cjs/queries/IRLower.d.ts +0 -25
- package/lib/cjs/queries/IRLower.js +0 -398
- package/lib/cjs/queries/IRLower.js.map +0 -1
- package/lib/cjs/queries/IRMutation.d.ts +0 -53
- package/lib/cjs/queries/IRMutation.js +0 -130
- package/lib/cjs/queries/IRMutation.js.map +0 -1
- package/lib/cjs/queries/IRPipeline.d.ts +0 -8
- package/lib/cjs/queries/IRPipeline.js +0 -25
- package/lib/cjs/queries/IRPipeline.js.map +0 -1
- package/lib/cjs/queries/IRProjection.d.ts +0 -39
- package/lib/cjs/queries/IRProjection.js +0 -105
- package/lib/cjs/queries/IRProjection.js.map +0 -1
- package/lib/cjs/queries/IntermediateRepresentation.d.ts +0 -282
- package/lib/cjs/queries/IntermediateRepresentation.js +0 -3
- package/lib/cjs/queries/IntermediateRepresentation.js.map +0 -1
- package/lib/cjs/queries/MutationQuery.d.ts +0 -50
- package/lib/cjs/queries/MutationQuery.js +0 -334
- package/lib/cjs/queries/MutationQuery.js.map +0 -1
- package/lib/cjs/queries/MutationSerialization.d.ts +0 -102
- package/lib/cjs/queries/MutationSerialization.js +0 -207
- package/lib/cjs/queries/MutationSerialization.js.map +0 -1
- package/lib/cjs/queries/MutationThenable.d.ts +0 -18
- package/lib/cjs/queries/MutationThenable.js +0 -32
- package/lib/cjs/queries/MutationThenable.js.map +0 -1
- package/lib/cjs/queries/PropertyPath.d.ts +0 -38
- package/lib/cjs/queries/PropertyPath.js +0 -82
- package/lib/cjs/queries/PropertyPath.js.map +0 -1
- package/lib/cjs/queries/ProxiedPathBuilder.d.ts +0 -14
- package/lib/cjs/queries/ProxiedPathBuilder.js +0 -29
- package/lib/cjs/queries/ProxiedPathBuilder.js.map +0 -1
- package/lib/cjs/queries/QueryBuilder.d.ts +0 -193
- package/lib/cjs/queries/QueryBuilder.js +0 -519
- package/lib/cjs/queries/QueryBuilder.js.map +0 -1
- package/lib/cjs/queries/QueryBuilderSerialization.d.ts +0 -31
- package/lib/cjs/queries/QueryBuilderSerialization.js +0 -68
- package/lib/cjs/queries/QueryBuilderSerialization.js.map +0 -1
- package/lib/cjs/queries/QueryContext.d.ts +0 -50
- package/lib/cjs/queries/QueryContext.js +0 -147
- package/lib/cjs/queries/QueryContext.js.map +0 -1
- package/lib/cjs/queries/QueryFactory.d.ts +0 -80
- package/lib/cjs/queries/QueryFactory.js +0 -21
- package/lib/cjs/queries/QueryFactory.js.map +0 -1
- package/lib/cjs/queries/SelectQuery.d.ts +0 -302
- package/lib/cjs/queries/SelectQuery.js +0 -761
- package/lib/cjs/queries/SelectQuery.js.map +0 -1
- package/lib/cjs/queries/UpdateBuilder.d.ts +0 -69
- package/lib/cjs/queries/UpdateBuilder.js +0 -199
- package/lib/cjs/queries/UpdateBuilder.js.map +0 -1
- package/lib/cjs/queries/UpdateQuery.d.ts +0 -18
- package/lib/cjs/queries/UpdateQuery.js +0 -3
- package/lib/cjs/queries/UpdateQuery.js.map +0 -1
- package/lib/cjs/queries/fromJSON.d.ts +0 -16
- package/lib/cjs/queries/fromJSON.js +0 -41
- package/lib/cjs/queries/fromJSON.js.map +0 -1
- package/lib/cjs/queries/lower.d.ts +0 -28
- package/lib/cjs/queries/lower.js +0 -114
- package/lib/cjs/queries/lower.js.map +0 -1
- package/lib/cjs/queries/lowerMutationJSON.d.ts +0 -25
- package/lib/cjs/queries/lowerMutationJSON.js +0 -173
- package/lib/cjs/queries/lowerMutationJSON.js.map +0 -1
- package/lib/cjs/queries/mutationLowerSpec.d.ts +0 -32
- package/lib/cjs/queries/mutationLowerSpec.js +0 -8
- package/lib/cjs/queries/mutationLowerSpec.js.map +0 -1
- package/lib/cjs/queries/queryDispatch.d.ts +0 -33
- package/lib/cjs/queries/queryDispatch.js +0 -33
- package/lib/cjs/queries/queryDispatch.js.map +0 -1
- package/lib/cjs/queries/resolveShape.d.ts +0 -10
- package/lib/cjs/queries/resolveShape.js +0 -23
- package/lib/cjs/queries/resolveShape.js.map +0 -1
- package/lib/cjs/queries/wireVersion.d.ts +0 -7
- package/lib/cjs/queries/wireVersion.js +0 -25
- package/lib/cjs/queries/wireVersion.js.map +0 -1
- package/lib/cjs/shapes/List.d.ts +0 -35
- package/lib/cjs/shapes/List.js +0 -72
- package/lib/cjs/shapes/List.js.map +0 -1
- package/lib/cjs/shapes/PathNode.d.ts +0 -20
- package/lib/cjs/shapes/PathNode.js +0 -68
- package/lib/cjs/shapes/PathNode.js.map +0 -1
- package/lib/cjs/shapes/SHACL.d.ts +0 -300
- package/lib/cjs/shapes/SHACL.js +0 -612
- package/lib/cjs/shapes/SHACL.js.map +0 -1
- package/lib/cjs/shapes/Shape.d.ts +0 -74
- package/lib/cjs/shapes/Shape.js +0 -124
- package/lib/cjs/shapes/Shape.js.map +0 -1
- package/lib/cjs/shapes/serializePathToNodeData.d.ts +0 -24
- package/lib/cjs/shapes/serializePathToNodeData.js +0 -67
- package/lib/cjs/shapes/serializePathToNodeData.js.map +0 -1
- package/lib/cjs/shapes/syncShapes.d.ts +0 -38
- package/lib/cjs/shapes/syncShapes.js +0 -214
- package/lib/cjs/shapes/syncShapes.js.map +0 -1
- package/lib/cjs/sparql/SparqlAlgebra.d.ts +0 -190
- package/lib/cjs/sparql/SparqlAlgebra.js +0 -4
- package/lib/cjs/sparql/SparqlAlgebra.js.map +0 -1
- package/lib/cjs/sparql/SparqlDataset.d.ts +0 -60
- package/lib/cjs/sparql/SparqlDataset.js +0 -117
- package/lib/cjs/sparql/SparqlDataset.js.map +0 -1
- package/lib/cjs/sparql/algebraToString.d.ts +0 -13
- package/lib/cjs/sparql/algebraToString.js +0 -385
- package/lib/cjs/sparql/algebraToString.js.map +0 -1
- package/lib/cjs/sparql/index.d.ts +0 -9
- package/lib/cjs/sparql/index.js +0 -41
- package/lib/cjs/sparql/index.js.map +0 -1
- package/lib/cjs/sparql/irToAlgebra.d.ts +0 -79
- package/lib/cjs/sparql/irToAlgebra.js +0 -2042
- package/lib/cjs/sparql/irToAlgebra.js.map +0 -1
- package/lib/cjs/sparql/resultMapping.d.ts +0 -36
- package/lib/cjs/sparql/resultMapping.js +0 -563
- package/lib/cjs/sparql/resultMapping.js.map +0 -1
- package/lib/cjs/sparql/sparqlUtils.d.ts +0 -53
- package/lib/cjs/sparql/sparqlUtils.js +0 -154
- package/lib/cjs/sparql/sparqlUtils.js.map +0 -1
- package/lib/cjs/utils/LinkedErrorLogging.d.ts +0 -13
- package/lib/cjs/utils/LinkedErrorLogging.js +0 -22
- package/lib/cjs/utils/LinkedErrorLogging.js.map +0 -1
- package/lib/cjs/utils/LinkedFileStorage.d.ts +0 -23
- package/lib/cjs/utils/LinkedFileStorage.js +0 -62
- package/lib/cjs/utils/LinkedFileStorage.js.map +0 -1
- package/lib/cjs/utils/LinkedStorage.d.ts +0 -40
- package/lib/cjs/utils/LinkedStorage.js +0 -148
- package/lib/cjs/utils/LinkedStorage.js.map +0 -1
- package/lib/cjs/utils/NameSpace.d.ts +0 -2
- package/lib/cjs/utils/NameSpace.js +0 -8
- package/lib/cjs/utils/NameSpace.js.map +0 -1
- package/lib/cjs/utils/NodeReference.d.ts +0 -30
- package/lib/cjs/utils/NodeReference.js +0 -54
- package/lib/cjs/utils/NodeReference.js.map +0 -1
- package/lib/cjs/utils/Package.d.ts +0 -153
- package/lib/cjs/utils/Package.js +0 -419
- package/lib/cjs/utils/Package.js.map +0 -1
- package/lib/cjs/utils/Prefix.d.ts +0 -22
- package/lib/cjs/utils/Prefix.js +0 -104
- package/lib/cjs/utils/Prefix.js.map +0 -1
- package/lib/cjs/utils/ShapeClass.d.ts +0 -30
- package/lib/cjs/utils/ShapeClass.js +0 -180
- package/lib/cjs/utils/ShapeClass.js.map +0 -1
- package/lib/cjs/utils/URI.d.ts +0 -18
- package/lib/cjs/utils/URI.js +0 -42
- package/lib/cjs/utils/URI.js.map +0 -1
- package/lib/cjs/utils/cached.d.ts +0 -14
- package/lib/cjs/utils/cached.js +0 -71
- package/lib/cjs/utils/cached.js.map +0 -1
- package/lib/cjs/utils/loadStores.d.ts +0 -34
- package/lib/cjs/utils/loadStores.js +0 -105
- package/lib/cjs/utils/loadStores.js.map +0 -1
- package/lib/cjs/utils/parseDatasetsConfig.d.ts +0 -49
- package/lib/cjs/utils/parseDatasetsConfig.js +0 -110
- package/lib/cjs/utils/parseDatasetsConfig.js.map +0 -1
- package/lib/esm/package.json +0 -9
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.assertSafeIri = assertSafeIri;
|
|
4
|
-
exports.sanitizeVarName = sanitizeVarName;
|
|
5
|
-
exports.assertSafeCallName = assertSafeCallName;
|
|
6
|
-
exports.formatUri = formatUri;
|
|
7
|
-
exports.escapeSparqlString = escapeSparqlString;
|
|
8
|
-
exports.formatLiteral = formatLiteral;
|
|
9
|
-
exports.collectPrefixes = collectPrefixes;
|
|
10
|
-
exports.generateEntityUri = generateEntityUri;
|
|
11
|
-
const Prefix_js_1 = require("../utils/Prefix.js");
|
|
12
|
-
const ulid_1 = require("ulid");
|
|
13
|
-
// Characters that must never appear inside a SPARQL IRIREF (`<...>`) per the
|
|
14
|
-
// SPARQL 1.1 grammar: angle brackets, quote, braces, pipe, caret, backtick,
|
|
15
|
-
// backslash, and all control chars + space (U+0000–U+0020). Any of these would
|
|
16
|
-
// let a crafted `id`/IRI break out of the `<...>` and inject raw SPARQL.
|
|
17
|
-
const FORBIDDEN_IRI_CHARS = /[\x00-\x20<>"{}|^`\\]/;
|
|
18
|
-
/**
|
|
19
|
-
* Assert that a string is safe to emit as a SPARQL IRI. Throws on any character
|
|
20
|
-
* that could terminate the IRIREF and inject query text. Applied to the raw IRI
|
|
21
|
-
* before prefixing so the prefixed branch can't be used to smuggle a breakout.
|
|
22
|
-
*/
|
|
23
|
-
function assertSafeIri(uri) {
|
|
24
|
-
if (typeof uri !== 'string' || FORBIDDEN_IRI_CHARS.test(uri)) {
|
|
25
|
-
throw new Error(`Invalid IRI for SPARQL output: ${JSON.stringify(uri)}. IRIs must not contain angle brackets, quotes, braces, whitespace, or control characters.`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// SPARQL 1.1 built-in functions + aggregate names (§17.4, §18.5). Names are
|
|
29
|
-
// case-insensitive in SPARQL; we compare upper-cased. Function/aggregate names
|
|
30
|
-
// are emitted verbatim into query text, so a name from untrusted `fromJSON`
|
|
31
|
-
// input (an S-expr head that isn't a known combinator becomes a "function
|
|
32
|
-
// name") could otherwise inject raw SPARQL — this allowlist is the guard.
|
|
33
|
-
const SPARQL_CALL_NAMES = new Set([
|
|
34
|
-
// string
|
|
35
|
-
'STR', 'STRLEN', 'SUBSTR', 'UCASE', 'LCASE', 'STRSTARTS', 'STRENDS',
|
|
36
|
-
'CONTAINS', 'STRBEFORE', 'STRAFTER', 'ENCODE_FOR_URI', 'CONCAT', 'LANGMATCHES',
|
|
37
|
-
'REGEX', 'REPLACE',
|
|
38
|
-
// term / type
|
|
39
|
-
'LANG', 'DATATYPE', 'BOUND', 'IRI', 'URI', 'BNODE', 'STRDT', 'STRLANG',
|
|
40
|
-
'UUID', 'STRUUID', 'SAMETERM', 'ISIRI', 'ISURI', 'ISBLANK', 'ISLITERAL',
|
|
41
|
-
'ISNUMERIC',
|
|
42
|
-
// numeric
|
|
43
|
-
'ABS', 'CEIL', 'FLOOR', 'ROUND', 'RAND',
|
|
44
|
-
// date/time
|
|
45
|
-
'YEAR', 'MONTH', 'DAY', 'HOURS', 'MINUTES', 'SECONDS', 'TIMEZONE', 'TZ', 'NOW',
|
|
46
|
-
// hash
|
|
47
|
-
'MD5', 'SHA1', 'SHA256', 'SHA384', 'SHA512',
|
|
48
|
-
// control / conditional
|
|
49
|
-
'IF', 'COALESCE',
|
|
50
|
-
// aggregates
|
|
51
|
-
'COUNT', 'SUM', 'MIN', 'MAX', 'AVG', 'SAMPLE', 'GROUP_CONCAT',
|
|
52
|
-
]);
|
|
53
|
-
/**
|
|
54
|
-
* Sanitize a string for use as a SPARQL variable name (`?name`). Replaces any
|
|
55
|
-
* character outside `[A-Za-z0-9_]` with `_`, so an alias/projection name derived
|
|
56
|
-
* from untrusted input cannot break out of the `?...` variable position. Valid
|
|
57
|
-
* names (already `[A-Za-z0-9_]`) are returned unchanged.
|
|
58
|
-
*/
|
|
59
|
-
function sanitizeVarName(name) {
|
|
60
|
-
return String(name).replace(/[^A-Za-z0-9_]/g, '_');
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Assert that a function or aggregate name is a known SPARQL 1.1 builtin before
|
|
64
|
-
* it is emitted verbatim into query text. Throws on anything else (e.g. an
|
|
65
|
-
* attacker-supplied S-expr head), which is the SPARQL-injection guard for the
|
|
66
|
-
* `function_expr` / `aggregate_expr` serialization paths.
|
|
67
|
-
*/
|
|
68
|
-
function assertSafeCallName(name) {
|
|
69
|
-
if (typeof name !== 'string' || !SPARQL_CALL_NAMES.has(name.toUpperCase())) {
|
|
70
|
-
throw new Error(`Unsupported SPARQL function/aggregate: ${JSON.stringify(name)}. Only SPARQL 1.1 built-in functions are allowed.`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Format a URI for SPARQL output.
|
|
75
|
-
* Returns prefixed form (e.g. `rdf:type`) if a prefix is registered and the
|
|
76
|
-
* suffix doesn't contain `/`. Otherwise returns `<full-uri>`.
|
|
77
|
-
* Throws if the IRI contains characters that could break out of the IRIREF.
|
|
78
|
-
*/
|
|
79
|
-
function formatUri(uri) {
|
|
80
|
-
assertSafeIri(uri);
|
|
81
|
-
const prefixed = Prefix_js_1.Prefix.toPrefixed(uri);
|
|
82
|
-
if (prefixed)
|
|
83
|
-
return prefixed;
|
|
84
|
-
return `<${uri}>`;
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Escapes special characters in a string for use inside SPARQL double-quoted literals.
|
|
88
|
-
* Per SPARQL 1.1 §19.7 (Escape sequences in strings).
|
|
89
|
-
*/
|
|
90
|
-
function escapeSparqlString(value) {
|
|
91
|
-
return value
|
|
92
|
-
.replace(/\\/g, '\\\\')
|
|
93
|
-
.replace(/"/g, '\\"')
|
|
94
|
-
.replace(/\n/g, '\\n')
|
|
95
|
-
.replace(/\r/g, '\\r')
|
|
96
|
-
.replace(/\t/g, '\\t');
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Format a literal value for SPARQL output.
|
|
100
|
-
* Returns a quoted string with optional `^^<datatype>` suffix.
|
|
101
|
-
* Special characters in the value are escaped per SPARQL spec.
|
|
102
|
-
*/
|
|
103
|
-
function formatLiteral(value, datatype) {
|
|
104
|
-
let lexical;
|
|
105
|
-
if (value instanceof Date) {
|
|
106
|
-
lexical = value.toISOString();
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
lexical = String(value);
|
|
110
|
-
}
|
|
111
|
-
const escaped = escapeSparqlString(lexical);
|
|
112
|
-
if (datatype) {
|
|
113
|
-
return `"${escaped}"^^${formatUri(datatype)}`;
|
|
114
|
-
}
|
|
115
|
-
return `"${escaped}"`;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Collect the minimal set of prefix→URI mappings needed for a set of URIs.
|
|
119
|
-
* Only includes prefixes that are actually used (i.e. `Prefix.toPrefixed`
|
|
120
|
-
* returns a value for at least one URI in the list).
|
|
121
|
-
*/
|
|
122
|
-
function collectPrefixes(usedUris) {
|
|
123
|
-
const result = {};
|
|
124
|
-
for (const uri of usedUris) {
|
|
125
|
-
const match = Prefix_js_1.Prefix.findMatch(uri);
|
|
126
|
-
if (match.length > 0) {
|
|
127
|
-
const [ontologyUri, prefix, postFix] = match;
|
|
128
|
-
// Only include if the postfix is actually prefixable (no `/`)
|
|
129
|
-
if (!postFix.includes('/')) {
|
|
130
|
-
result[prefix] = ontologyUri;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
return result;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Generate a new entity URI for a create mutation.
|
|
138
|
-
* Format: `{dataRoot}/{lowercaseShapeLabel}_{ulid}`
|
|
139
|
-
*/
|
|
140
|
-
function generateEntityUri(shape, options) {
|
|
141
|
-
const dataRoot = (options === null || options === void 0 ? void 0 : options.dataRoot) || process.env.DATA_ROOT || 'http://example.org/data';
|
|
142
|
-
// Extract the shape label from the full URI (last segment after # or /)
|
|
143
|
-
let label;
|
|
144
|
-
const hashIdx = shape.lastIndexOf('#');
|
|
145
|
-
if (hashIdx >= 0) {
|
|
146
|
-
label = shape.substring(hashIdx + 1);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
const slashIdx = shape.lastIndexOf('/');
|
|
150
|
-
label = slashIdx >= 0 ? shape.substring(slashIdx + 1) : shape;
|
|
151
|
-
}
|
|
152
|
-
return `${dataRoot}/${label.toLowerCase()}_${(0, ulid_1.ulid)()}`;
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=sparqlUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sparqlUtils.js","sourceRoot":"","sources":["../../../src/sparql/sparqlUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface IErrorLogger {
|
|
2
|
-
log?(error: any): Promise<void>;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* Utility class to log errors.
|
|
6
|
-
* Install any error client package like lincd-sentry in your app to log errors.
|
|
7
|
-
*/
|
|
8
|
-
export declare class LinkedErrorLogging {
|
|
9
|
-
private static logger;
|
|
10
|
-
static setDefaultLogger(logger: IErrorLogger): void;
|
|
11
|
-
static hasDefaultLogger(): boolean;
|
|
12
|
-
static log(error: Error): Promise<void>;
|
|
13
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LinkedErrorLogging = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Utility class to log errors.
|
|
6
|
-
* Install any error client package like lincd-sentry in your app to log errors.
|
|
7
|
-
*/
|
|
8
|
-
class LinkedErrorLogging {
|
|
9
|
-
static setDefaultLogger(logger) {
|
|
10
|
-
this.logger = logger;
|
|
11
|
-
}
|
|
12
|
-
static hasDefaultLogger() {
|
|
13
|
-
return this.logger && true;
|
|
14
|
-
}
|
|
15
|
-
static log(error) {
|
|
16
|
-
if (this.logger) {
|
|
17
|
-
return this.logger.log(error);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.LinkedErrorLogging = LinkedErrorLogging;
|
|
22
|
-
//# sourceMappingURL=LinkedErrorLogging.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedErrorLogging.js","sourceRoot":"","sources":["../../../src/utils/LinkedErrorLogging.ts"],"names":[],"mappings":";;;AAIA;;;GAGG;AACH,MAAa,kBAAkB;IAG7B,MAAM,CAAC,gBAAgB,CAAC,MAAoB;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,gBAAgB;QACrB,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,KAAY;QACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF;AAhBD,gDAgBC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { IFileStore } from '../interfaces/IFileStore.js';
|
|
2
|
-
import type { Readable } from 'stream';
|
|
3
|
-
export declare abstract class LinkedFileStorage {
|
|
4
|
-
private static defaultDataset;
|
|
5
|
-
private static url;
|
|
6
|
-
static get accessURL(): string;
|
|
7
|
-
static setDefaultAccessURL(accessURL: string): string;
|
|
8
|
-
static getDefaultDataset(): IFileStore;
|
|
9
|
-
static setDefaultDataset(dataset: IFileStore): void;
|
|
10
|
-
static deleteFile(filePath: string): Promise<void>;
|
|
11
|
-
static fileExists(filePath: string): Promise<boolean>;
|
|
12
|
-
static getFile(filePath: string): Promise<Buffer>;
|
|
13
|
-
static listFiles(prefix?: string): Promise<string[]>;
|
|
14
|
-
static saveFile(filePath: string, fileContent: string | Uint8Array | Buffer | Readable, mimeType?: string, preventDuplicates?: boolean): Promise<string>;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Get the full path of an asset based on the way LinkedFileStorage is configured
|
|
18
|
-
* Returns accessURL + directory (/public by default) + path
|
|
19
|
-
* @param path asset path
|
|
20
|
-
* @param directory asset directory (optional, default is /public)
|
|
21
|
-
* @returns asset url. e.g. https://cdn.example.com/public/image.png
|
|
22
|
-
*/
|
|
23
|
-
export declare function asset(path: string, directory?: string): string;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LinkedFileStorage = void 0;
|
|
4
|
-
exports.asset = asset;
|
|
5
|
-
class LinkedFileStorage {
|
|
6
|
-
static get accessURL() {
|
|
7
|
-
// check if default store is not set, return default accessURL
|
|
8
|
-
if (!this.defaultDataset) {
|
|
9
|
-
return this.url;
|
|
10
|
-
}
|
|
11
|
-
return this.defaultDataset.accessURL;
|
|
12
|
-
}
|
|
13
|
-
static setDefaultAccessURL(accessURL) {
|
|
14
|
-
return (this.url = accessURL);
|
|
15
|
-
}
|
|
16
|
-
static getDefaultDataset() {
|
|
17
|
-
return this.defaultDataset;
|
|
18
|
-
}
|
|
19
|
-
static setDefaultDataset(dataset) {
|
|
20
|
-
this.defaultDataset = dataset;
|
|
21
|
-
if (this.defaultDataset.init) {
|
|
22
|
-
this.defaultDataset.init();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
static deleteFile(filePath) {
|
|
26
|
-
return this.defaultDataset.deleteFile(filePath);
|
|
27
|
-
}
|
|
28
|
-
static fileExists(filePath) {
|
|
29
|
-
return this.defaultDataset.fileExists(filePath);
|
|
30
|
-
}
|
|
31
|
-
static getFile(filePath) {
|
|
32
|
-
return this.defaultDataset.getFile(filePath);
|
|
33
|
-
}
|
|
34
|
-
static listFiles(prefix) {
|
|
35
|
-
return this.defaultDataset.listFiles(prefix);
|
|
36
|
-
}
|
|
37
|
-
static saveFile(filePath, fileContent, mimeType, preventDuplicates = false) {
|
|
38
|
-
return this.defaultDataset.saveFile(filePath, fileContent, mimeType, preventDuplicates);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.LinkedFileStorage = LinkedFileStorage;
|
|
42
|
-
/**
|
|
43
|
-
* Get the full path of an asset based on the way LinkedFileStorage is configured
|
|
44
|
-
* Returns accessURL + directory (/public by default) + path
|
|
45
|
-
* @param path asset path
|
|
46
|
-
* @param directory asset directory (optional, default is /public)
|
|
47
|
-
* @returns asset url. e.g. https://cdn.example.com/public/image.png
|
|
48
|
-
*/
|
|
49
|
-
function asset(path, directory = '/public') {
|
|
50
|
-
// Some callers pass a raw app-relative path like `/images/foo.webp`, while
|
|
51
|
-
// others may already have a fully qualified asset URL from an earlier
|
|
52
|
-
// `asset(...)` call or backend response normalization. Keep this helper
|
|
53
|
-
// idempotent so shared card/image components can safely call `asset(...)`
|
|
54
|
-
// without duplicating the access URL prefix.
|
|
55
|
-
if (/^(?:[a-z]+:)?\/\//i.test(path) || path.startsWith('data:') || path.startsWith('blob:')) {
|
|
56
|
-
return path;
|
|
57
|
-
}
|
|
58
|
-
const accessURL = LinkedFileStorage.accessURL;
|
|
59
|
-
const assetUrl = accessURL + directory + path;
|
|
60
|
-
return assetUrl;
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=LinkedFileStorage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedFileStorage.js","sourceRoot":"","sources":["../../../src/utils/LinkedFileStorage.ts"],"names":[],"mappings":";;;AAsEA,sBAaC;AAhFD,MAAsB,iBAAiB;IAIrC,MAAM,KAAK,SAAS;QAClB,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,GAAG,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,SAAiB;QAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAAmB;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAE9B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,MAAe;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,QAAgB,EAChB,WAAoD,EACpD,QAAiB,EACjB,oBAA6B,KAAK;QAElC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CACjC,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,iBAAiB,CAClB,CAAC;IACJ,CAAC;CACF;AA1DD,8CA0DC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CAAC,IAAY,EAAE,YAAoB,SAAS;IAC/D,2EAA2E;IAC3E,sEAAsE;IACtE,wEAAwE;IACxE,0EAA0E;IAC1E,6CAA6C;IAC7C,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC;IAC9C,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9C,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { CoreSet } from '../collections/CoreSet.js';
|
|
2
|
-
import type { IDataset } from '../interfaces/IDataset.js';
|
|
3
|
-
import type { SelectQuery } from '../queries/SelectQuery.js';
|
|
4
|
-
import type { CreateQuery } from '../queries/CreateQuery.js';
|
|
5
|
-
import type { UpdateQuery } from '../queries/UpdateQuery.js';
|
|
6
|
-
import type { DeleteQuery, DeleteResponse } from '../queries/DeleteQuery.js';
|
|
7
|
-
/**
|
|
8
|
-
* Primary routing layer (arch-04 §The IDataset abstraction).
|
|
9
|
-
*
|
|
10
|
-
* Resolves an incoming Linked Query to the IDataset that should handle it,
|
|
11
|
-
* based on the query's target shape. Composite IDatasets (gateways, routers,
|
|
12
|
-
* forwarders, resolvers) plug in here just like storage IDatasets do.
|
|
13
|
-
*
|
|
14
|
-
* The "Dataset" naming aligns with the IDataset contract. Earlier "Store"
|
|
15
|
-
* names were renamed in phase-1 — see docs/plans/002-phase-1-create-user-project-flow.md.
|
|
16
|
-
*/
|
|
17
|
-
export declare abstract class LinkedStorage {
|
|
18
|
-
private static defaultDataset?;
|
|
19
|
-
private static shapeToDataset;
|
|
20
|
-
/** plan-011 — how many physical copies of this module have evaluated. */
|
|
21
|
-
static getLoadedInstanceCount(): number;
|
|
22
|
-
static isInitialised(): boolean;
|
|
23
|
-
/** The catch-all IDataset for shapes with no explicit mapping. */
|
|
24
|
-
static getDefaultDataset(): IDataset;
|
|
25
|
-
/** Set the default IDataset (catch-all for shapes with no explicit mapping). */
|
|
26
|
-
static setDefaultDataset(dataset: IDataset): void;
|
|
27
|
-
/** Pin one or more shape classes to a specific IDataset implementer. */
|
|
28
|
-
static setDatasetForShapes(dataset: IDataset, ...shapeClasses: Function[]): void;
|
|
29
|
-
/** Every IDataset known to the primary router (default + all pinned). */
|
|
30
|
-
static getDatasets(): CoreSet<IDataset>;
|
|
31
|
-
/** Read-only view of the shape→IDataset map. */
|
|
32
|
-
static getShapeToDatasetMap(): Map<Function, IDataset>;
|
|
33
|
-
/** Resolve the IDataset for a given shape class. Walks the prototype chain. */
|
|
34
|
-
static getDatasetForShapeClass(shapeClass?: Function | null): IDataset | undefined;
|
|
35
|
-
private static resolveDatasetForQueryShape;
|
|
36
|
-
static selectQuery<ResultType>(query: SelectQuery): Promise<ResultType>;
|
|
37
|
-
static updateQuery<ResponseType>(query: UpdateQuery): Promise<ResponseType>;
|
|
38
|
-
static createQuery<ResponseType>(query: CreateQuery): Promise<ResponseType>;
|
|
39
|
-
static deleteQuery(query: DeleteQuery): Promise<DeleteResponse>;
|
|
40
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.LinkedStorage = void 0;
|
|
5
|
-
const CoreSet_js_1 = require("../collections/CoreSet.js");
|
|
6
|
-
const queryDispatch_js_1 = require("../queries/queryDispatch.js");
|
|
7
|
-
const ShapeClass_js_1 = require("./ShapeClass.js");
|
|
8
|
-
// plan-011 — count physical evaluations of THIS module on the one shared
|
|
9
|
-
// global object. With the single-loader fix there should be exactly one copy;
|
|
10
|
-
// the single-instance guard in backend.ts reports this count if storage config
|
|
11
|
-
// ever lands on a different copy. Deliberately avoids Date/Math.random
|
|
12
|
-
// (unavailable / non-deterministic per repo constraints).
|
|
13
|
-
const linkedStorageGlobal = typeof globalThis !== 'undefined' ? globalThis : {};
|
|
14
|
-
linkedStorageGlobal.__linkedStorageInstanceCount =
|
|
15
|
-
((_a = linkedStorageGlobal.__linkedStorageInstanceCount) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
16
|
-
/**
|
|
17
|
-
* Primary routing layer (arch-04 §The IDataset abstraction).
|
|
18
|
-
*
|
|
19
|
-
* Resolves an incoming Linked Query to the IDataset that should handle it,
|
|
20
|
-
* based on the query's target shape. Composite IDatasets (gateways, routers,
|
|
21
|
-
* forwarders, resolvers) plug in here just like storage IDatasets do.
|
|
22
|
-
*
|
|
23
|
-
* The "Dataset" naming aligns with the IDataset contract. Earlier "Store"
|
|
24
|
-
* names were renamed in phase-1 — see docs/plans/002-phase-1-create-user-project-flow.md.
|
|
25
|
-
*/
|
|
26
|
-
class LinkedStorage {
|
|
27
|
-
/** plan-011 — how many physical copies of this module have evaluated. */
|
|
28
|
-
static getLoadedInstanceCount() {
|
|
29
|
-
var _a;
|
|
30
|
-
return (_a = linkedStorageGlobal.__linkedStorageInstanceCount) !== null && _a !== void 0 ? _a : 0;
|
|
31
|
-
}
|
|
32
|
-
static isInitialised() {
|
|
33
|
-
return !!this.defaultDataset;
|
|
34
|
-
}
|
|
35
|
-
/** The catch-all IDataset for shapes with no explicit mapping. */
|
|
36
|
-
static getDefaultDataset() {
|
|
37
|
-
return this.defaultDataset;
|
|
38
|
-
}
|
|
39
|
-
/** Set the default IDataset (catch-all for shapes with no explicit mapping). */
|
|
40
|
-
static setDefaultDataset(dataset) {
|
|
41
|
-
var _a;
|
|
42
|
-
this.defaultDataset = dataset;
|
|
43
|
-
if ((_a = this.defaultDataset) === null || _a === void 0 ? void 0 : _a.init) {
|
|
44
|
-
this.defaultDataset.init();
|
|
45
|
-
}
|
|
46
|
-
(0, queryDispatch_js_1.setQueryDispatch)({
|
|
47
|
-
selectQuery: (q) => this.selectQuery(q),
|
|
48
|
-
createQuery: (q) => this.createQuery(q),
|
|
49
|
-
updateQuery: (q) => this.updateQuery(q),
|
|
50
|
-
deleteQuery: (q) => this.deleteQuery(q),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
/** Pin one or more shape classes to a specific IDataset implementer. */
|
|
54
|
-
static setDatasetForShapes(dataset, ...shapeClasses) {
|
|
55
|
-
shapeClasses.forEach((shapeClass) => {
|
|
56
|
-
this.shapeToDataset.set(shapeClass, dataset);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
/** Every IDataset known to the primary router (default + all pinned). */
|
|
60
|
-
static getDatasets() {
|
|
61
|
-
const datasets = new CoreSet_js_1.CoreSet();
|
|
62
|
-
if (this.defaultDataset) {
|
|
63
|
-
datasets.add(this.defaultDataset);
|
|
64
|
-
}
|
|
65
|
-
this.shapeToDataset.forEach((dataset) => datasets.add(dataset));
|
|
66
|
-
return datasets;
|
|
67
|
-
}
|
|
68
|
-
/** Read-only view of the shape→IDataset map. */
|
|
69
|
-
static getShapeToDatasetMap() {
|
|
70
|
-
return this.shapeToDataset;
|
|
71
|
-
}
|
|
72
|
-
/** Resolve the IDataset for a given shape class. Walks the prototype chain. */
|
|
73
|
-
static getDatasetForShapeClass(shapeClass) {
|
|
74
|
-
let current = shapeClass !== null && shapeClass !== void 0 ? shapeClass : null;
|
|
75
|
-
while (typeof current === 'function') {
|
|
76
|
-
const dataset = this.shapeToDataset.get(current);
|
|
77
|
-
if (dataset) {
|
|
78
|
-
return dataset;
|
|
79
|
-
}
|
|
80
|
-
const parent = Object.getPrototypeOf(current);
|
|
81
|
-
if (parent === Function.prototype || parent === null)
|
|
82
|
-
break;
|
|
83
|
-
current = parent;
|
|
84
|
-
}
|
|
85
|
-
return this.defaultDataset;
|
|
86
|
-
}
|
|
87
|
-
static resolveDatasetForQueryShape(shape) {
|
|
88
|
-
if (!shape) {
|
|
89
|
-
return this.defaultDataset;
|
|
90
|
-
}
|
|
91
|
-
if (typeof shape === 'function') {
|
|
92
|
-
return this.getDatasetForShapeClass(shape);
|
|
93
|
-
}
|
|
94
|
-
if (typeof shape === 'string') {
|
|
95
|
-
const shapeClass = (0, ShapeClass_js_1.getShapeClass)(shape);
|
|
96
|
-
return this.getDatasetForShapeClass(shapeClass);
|
|
97
|
-
}
|
|
98
|
-
// NodeShape (the closed query's `shape` accessor) — resolve via its IRI.
|
|
99
|
-
if (typeof shape === 'object' && 'id' in shape) {
|
|
100
|
-
const shapeClass = (0, ShapeClass_js_1.getShapeClass)(shape.id);
|
|
101
|
-
return this.getDatasetForShapeClass(shapeClass);
|
|
102
|
-
}
|
|
103
|
-
return this.defaultDataset;
|
|
104
|
-
}
|
|
105
|
-
static selectQuery(query) {
|
|
106
|
-
if (!(query === null || query === void 0 ? void 0 : query.shape)) {
|
|
107
|
-
return Promise.reject(new Error('Invalid select query passed to LinkedStorage.selectQuery(): missing shape.'));
|
|
108
|
-
}
|
|
109
|
-
const dataset = this.resolveDatasetForQueryShape(query.shape);
|
|
110
|
-
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.selectQuery)) {
|
|
111
|
-
return Promise.reject(new Error('No query dataset configured. Call LinkedStorage.setDefaultDataset().'));
|
|
112
|
-
}
|
|
113
|
-
return dataset.selectQuery(query);
|
|
114
|
-
}
|
|
115
|
-
static updateQuery(query) {
|
|
116
|
-
if (!(query === null || query === void 0 ? void 0 : query.shape)) {
|
|
117
|
-
return Promise.reject(new Error('Invalid update query passed to LinkedStorage.updateQuery(): missing shape.'));
|
|
118
|
-
}
|
|
119
|
-
const dataset = this.resolveDatasetForQueryShape(query.shape);
|
|
120
|
-
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.updateQuery)) {
|
|
121
|
-
return Promise.reject(new Error('No update handler configured on the query dataset.'));
|
|
122
|
-
}
|
|
123
|
-
return dataset.updateQuery(query);
|
|
124
|
-
}
|
|
125
|
-
static createQuery(query) {
|
|
126
|
-
if (!(query === null || query === void 0 ? void 0 : query.shape)) {
|
|
127
|
-
return Promise.reject(new Error('Invalid create query passed to LinkedStorage.createQuery(): missing shape.'));
|
|
128
|
-
}
|
|
129
|
-
const dataset = this.resolveDatasetForQueryShape(query.shape);
|
|
130
|
-
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.createQuery)) {
|
|
131
|
-
return Promise.reject(new Error('No create handler configured on the query dataset.'));
|
|
132
|
-
}
|
|
133
|
-
return dataset.createQuery(query);
|
|
134
|
-
}
|
|
135
|
-
static deleteQuery(query) {
|
|
136
|
-
if (!(query === null || query === void 0 ? void 0 : query.shape)) {
|
|
137
|
-
return Promise.reject(new Error('Invalid delete query passed to LinkedStorage.deleteQuery(): missing shape.'));
|
|
138
|
-
}
|
|
139
|
-
const dataset = this.resolveDatasetForQueryShape(query.shape);
|
|
140
|
-
if (!(dataset === null || dataset === void 0 ? void 0 : dataset.deleteQuery)) {
|
|
141
|
-
return Promise.reject(new Error('No delete handler configured on the query dataset.'));
|
|
142
|
-
}
|
|
143
|
-
return dataset.deleteQuery(query);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
exports.LinkedStorage = LinkedStorage;
|
|
147
|
-
LinkedStorage.shapeToDataset = new Map();
|
|
148
|
-
//# sourceMappingURL=LinkedStorage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedStorage.js","sourceRoot":"","sources":["../../../src/utils/LinkedStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createNameSpace = void 0;
|
|
4
|
-
const createNameSpace = (nameSpace) => {
|
|
5
|
-
return (term) => ({ id: nameSpace + term });
|
|
6
|
-
};
|
|
7
|
-
exports.createNameSpace = createNameSpace;
|
|
8
|
-
//# sourceMappingURL=NameSpace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NameSpace.js","sourceRoot":"","sources":["../../../src/utils/NameSpace.ts"],"names":[],"mappings":";;;AAEO,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAE,EAAE;IACnD,OAAO,CAAC,IAAY,EAAsB,EAAE,CAAC,CAAC,EAAC,EAAE,EAAE,SAAS,GAAG,IAAI,EAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAFW,QAAA,eAAe,mBAE1B"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export type NodeReferenceValue = {
|
|
2
|
-
id: string;
|
|
3
|
-
};
|
|
4
|
-
export type NodeReferenceInput = NodeReferenceValue | string;
|
|
5
|
-
/**
|
|
6
|
-
* Resolve a string that looks like a prefixed name (e.g. 'foaf:knows') to its full IRI.
|
|
7
|
-
* - Strings containing '://' are full IRIs — returned as-is.
|
|
8
|
-
* - Strings without ':' are plain IDs — returned as-is.
|
|
9
|
-
* - Strings matching 'prefix:local' are resolved via Prefix.toFullIfPossible()
|
|
10
|
-
* (returns original string if prefix is not registered).
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* resolvePrefixedUri('foaf:Person') // 'http://xmlns.com/foaf/0.1/Person'
|
|
14
|
-
* resolvePrefixedUri('http://example.org/x') // 'http://example.org/x' (unchanged)
|
|
15
|
-
* resolvePrefixedUri('my-id') // 'my-id' (unchanged, no colon)
|
|
16
|
-
*/
|
|
17
|
-
export declare function resolvePrefixedUri(str: string): string;
|
|
18
|
-
/**
|
|
19
|
-
* Resolve a URI string strictly: must be either a full IRI (contains '://')
|
|
20
|
-
* or a registered prefixed name ('foaf:Person'). Throws if the prefix is unknown.
|
|
21
|
-
*
|
|
22
|
-
* Use this at API boundaries where strings are always URIs (never plain IDs).
|
|
23
|
-
*/
|
|
24
|
-
export declare function resolveUriOrThrow(str: string): string;
|
|
25
|
-
/**
|
|
26
|
-
* Convert a NodeReferenceInput to a NodeReferenceValue.
|
|
27
|
-
* Simple wrap — no prefix resolution. Use resolvePrefixedUri() for that.
|
|
28
|
-
*/
|
|
29
|
-
export declare function toNodeReference(value: NodeReferenceInput): NodeReferenceValue;
|
|
30
|
-
export declare function isNodeReferenceValue(value: unknown): value is NodeReferenceValue;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolvePrefixedUri = resolvePrefixedUri;
|
|
4
|
-
exports.resolveUriOrThrow = resolveUriOrThrow;
|
|
5
|
-
exports.toNodeReference = toNodeReference;
|
|
6
|
-
exports.isNodeReferenceValue = isNodeReferenceValue;
|
|
7
|
-
const Prefix_js_1 = require("./Prefix.js");
|
|
8
|
-
/**
|
|
9
|
-
* Resolve a string that looks like a prefixed name (e.g. 'foaf:knows') to its full IRI.
|
|
10
|
-
* - Strings containing '://' are full IRIs — returned as-is.
|
|
11
|
-
* - Strings without ':' are plain IDs — returned as-is.
|
|
12
|
-
* - Strings matching 'prefix:local' are resolved via Prefix.toFullIfPossible()
|
|
13
|
-
* (returns original string if prefix is not registered).
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* resolvePrefixedUri('foaf:Person') // 'http://xmlns.com/foaf/0.1/Person'
|
|
17
|
-
* resolvePrefixedUri('http://example.org/x') // 'http://example.org/x' (unchanged)
|
|
18
|
-
* resolvePrefixedUri('my-id') // 'my-id' (unchanged, no colon)
|
|
19
|
-
*/
|
|
20
|
-
function resolvePrefixedUri(str) {
|
|
21
|
-
if (str.includes('://'))
|
|
22
|
-
return str;
|
|
23
|
-
if (!str.includes(':'))
|
|
24
|
-
return str;
|
|
25
|
-
return Prefix_js_1.Prefix.toFullIfPossible(str);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Resolve a URI string strictly: must be either a full IRI (contains '://')
|
|
29
|
-
* or a registered prefixed name ('foaf:Person'). Throws if the prefix is unknown.
|
|
30
|
-
*
|
|
31
|
-
* Use this at API boundaries where strings are always URIs (never plain IDs).
|
|
32
|
-
*/
|
|
33
|
-
function resolveUriOrThrow(str) {
|
|
34
|
-
if (str.includes('://'))
|
|
35
|
-
return str;
|
|
36
|
-
return Prefix_js_1.Prefix.toFull(str);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Convert a NodeReferenceInput to a NodeReferenceValue.
|
|
40
|
-
* Simple wrap — no prefix resolution. Use resolvePrefixedUri() for that.
|
|
41
|
-
*/
|
|
42
|
-
function toNodeReference(value) {
|
|
43
|
-
if (typeof value === 'string') {
|
|
44
|
-
return { id: value };
|
|
45
|
-
}
|
|
46
|
-
return { id: value.id };
|
|
47
|
-
}
|
|
48
|
-
function isNodeReferenceValue(value) {
|
|
49
|
-
return (typeof value === 'object' &&
|
|
50
|
-
value !== null &&
|
|
51
|
-
'id' in value &&
|
|
52
|
-
typeof value.id === 'string');
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=NodeReference.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NodeReference.js","sourceRoot":"","sources":["../../../src/utils/NodeReference.ts"],"names":[],"mappings":";;AAkBA,gDAIC;AAQD,8CAGC;AAMD,0CAKC;AAED,oDAOC;AArDD,2CAAmC;AAMnC;;;;;;;;;;;GAWG;AACH,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACnC,OAAO,kBAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,OAAO,kBAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAyB;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;IACrB,CAAC;IACD,OAAO,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC;AACxB,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,IAAI,IAAI,KAAK;QACb,OAAQ,KAA4B,CAAC,EAAE,KAAK,QAAQ,CACrD,CAAC;AACJ,CAAC"}
|