@undefineds.co/drizzle-solid 0.2.13 → 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.
Files changed (180) hide show
  1. package/README.md +141 -250
  2. package/dist/core/ast-to-sparql.d.ts +1 -1
  3. package/dist/core/ast-to-sparql.js +1 -1
  4. package/dist/core/comunica-patch.d.ts +1 -6
  5. package/dist/core/comunica-patch.d.ts.map +1 -1
  6. package/dist/core/comunica-patch.js +16 -19
  7. package/dist/core/comunica-patch.js.map +1 -1
  8. package/dist/core/execution/sparql-strategy.d.ts +9 -37
  9. package/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  10. package/dist/core/execution/sparql-strategy.js +44 -148
  11. package/dist/core/execution/sparql-strategy.js.map +1 -1
  12. package/dist/core/execution/strategy-factory.d.ts +7 -20
  13. package/dist/core/execution/strategy-factory.d.ts.map +1 -1
  14. package/dist/core/execution/strategy-factory.js +2 -17
  15. package/dist/core/execution/strategy-factory.js.map +1 -1
  16. package/dist/core/pod-database.d.ts +3 -3
  17. package/dist/core/pod-database.d.ts.map +1 -1
  18. package/dist/core/pod-database.js +37 -37
  19. package/dist/core/pod-database.js.map +1 -1
  20. package/dist/core/pod-dialect.d.ts +2 -0
  21. package/dist/core/pod-dialect.d.ts.map +1 -1
  22. package/dist/core/pod-dialect.js +4 -2
  23. package/dist/core/pod-dialect.js.map +1 -1
  24. package/dist/core/query-builders/select-query-builder.d.ts +2 -2
  25. package/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  26. package/dist/core/query-builders/select-query-builder.js +10 -10
  27. package/dist/core/query-builders/select-query-builder.js.map +1 -1
  28. package/dist/core/schema/columns.d.ts +6 -6
  29. package/dist/core/schema/columns.d.ts.map +1 -1
  30. package/dist/core/schema/columns.js +18 -18
  31. package/dist/core/schema/columns.js.map +1 -1
  32. package/dist/core/schema/defs.d.ts +4 -4
  33. package/dist/core/schema/defs.d.ts.map +1 -1
  34. package/dist/core/schema/pod-table.js +2 -2
  35. package/dist/core/schema/pod-table.js.map +1 -1
  36. package/dist/core/services/pod-services.d.ts +7 -5
  37. package/dist/core/services/pod-services.d.ts.map +1 -1
  38. package/dist/core/services/pod-services.js +7 -5
  39. package/dist/core/services/pod-services.js.map +1 -1
  40. package/dist/core/shape/generator.js +3 -3
  41. package/dist/core/shape/generator.js.map +1 -1
  42. package/dist/core/shape/manager.js +5 -5
  43. package/dist/core/shape/manager.js.map +1 -1
  44. package/dist/core/sparql/builder/expression-builder.d.ts +5 -5
  45. package/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  46. package/dist/core/sparql/builder/expression-builder.js +15 -15
  47. package/dist/core/sparql/builder/expression-builder.js.map +1 -1
  48. package/dist/core/sparql/builder/select-builder.d.ts +1 -1
  49. package/dist/core/sparql/builder/select-builder.js +1 -1
  50. package/dist/core/sparql/builder/update-builder.d.ts +1 -1
  51. package/dist/core/sparql/builder/update-builder.d.ts.map +1 -1
  52. package/dist/core/sparql/builder/update-builder.js +4 -4
  53. package/dist/core/sparql/builder/update-builder.js.map +1 -1
  54. package/dist/core/sparql/helpers.js +3 -3
  55. package/dist/core/sparql/helpers.js.map +1 -1
  56. package/dist/core/sparql-engine.d.ts +16 -0
  57. package/dist/core/sparql-engine.d.ts.map +1 -0
  58. package/dist/core/sparql-engine.js +128 -0
  59. package/dist/core/sparql-engine.js.map +1 -0
  60. package/dist/core/sparql-executor.d.ts +3 -1
  61. package/dist/core/sparql-executor.d.ts.map +1 -1
  62. package/dist/core/sparql-executor.js +3 -4
  63. package/dist/core/sparql-executor.js.map +1 -1
  64. package/dist/core/triple/handlers/inverse.js +4 -4
  65. package/dist/core/triple/handlers/inverse.js.map +1 -1
  66. package/dist/core/triple/handlers/uri.d.ts +1 -1
  67. package/dist/core/triple/handlers/uri.js +3 -3
  68. package/dist/core/triple/handlers/uri.js.map +1 -1
  69. package/dist/core/uri/resolver.d.ts +9 -9
  70. package/dist/core/uri/resolver.d.ts.map +1 -1
  71. package/dist/core/uri/resolver.js +51 -51
  72. package/dist/core/uri/resolver.js.map +1 -1
  73. package/dist/core/uri/types.d.ts +10 -10
  74. package/dist/core/uri/types.d.ts.map +1 -1
  75. package/dist/driver.d.ts +10 -1
  76. package/dist/driver.d.ts.map +1 -1
  77. package/dist/driver.js +1 -5
  78. package/dist/driver.js.map +1 -1
  79. package/dist/esm/core/ast-to-sparql.d.ts +1 -1
  80. package/dist/esm/core/ast-to-sparql.js +1 -1
  81. package/dist/esm/core/comunica-patch.d.ts +1 -6
  82. package/dist/esm/core/comunica-patch.d.ts.map +1 -1
  83. package/dist/esm/core/comunica-patch.js +13 -20
  84. package/dist/esm/core/comunica-patch.js.map +1 -1
  85. package/dist/esm/core/execution/sparql-strategy.d.ts +9 -37
  86. package/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  87. package/dist/esm/core/execution/sparql-strategy.js +44 -148
  88. package/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  89. package/dist/esm/core/execution/strategy-factory.d.ts +7 -20
  90. package/dist/esm/core/execution/strategy-factory.d.ts.map +1 -1
  91. package/dist/esm/core/execution/strategy-factory.js +2 -17
  92. package/dist/esm/core/execution/strategy-factory.js.map +1 -1
  93. package/dist/esm/core/pod-database.d.ts +3 -3
  94. package/dist/esm/core/pod-database.d.ts.map +1 -1
  95. package/dist/esm/core/pod-database.js +37 -37
  96. package/dist/esm/core/pod-database.js.map +1 -1
  97. package/dist/esm/core/pod-dialect.d.ts +2 -0
  98. package/dist/esm/core/pod-dialect.d.ts.map +1 -1
  99. package/dist/esm/core/pod-dialect.js +4 -2
  100. package/dist/esm/core/pod-dialect.js.map +1 -1
  101. package/dist/esm/core/query-builders/select-query-builder.d.ts +2 -2
  102. package/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  103. package/dist/esm/core/query-builders/select-query-builder.js +10 -10
  104. package/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  105. package/dist/esm/core/schema/columns.d.ts +6 -6
  106. package/dist/esm/core/schema/columns.d.ts.map +1 -1
  107. package/dist/esm/core/schema/columns.js +18 -18
  108. package/dist/esm/core/schema/columns.js.map +1 -1
  109. package/dist/esm/core/schema/defs.d.ts +4 -4
  110. package/dist/esm/core/schema/defs.d.ts.map +1 -1
  111. package/dist/esm/core/schema/pod-table.js +2 -2
  112. package/dist/esm/core/schema/pod-table.js.map +1 -1
  113. package/dist/esm/core/services/pod-services.d.ts +7 -5
  114. package/dist/esm/core/services/pod-services.d.ts.map +1 -1
  115. package/dist/esm/core/services/pod-services.js +7 -5
  116. package/dist/esm/core/services/pod-services.js.map +1 -1
  117. package/dist/esm/core/shape/generator.js +3 -3
  118. package/dist/esm/core/shape/generator.js.map +1 -1
  119. package/dist/esm/core/shape/manager.js +5 -5
  120. package/dist/esm/core/shape/manager.js.map +1 -1
  121. package/dist/esm/core/sparql/builder/expression-builder.d.ts +5 -5
  122. package/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  123. package/dist/esm/core/sparql/builder/expression-builder.js +15 -15
  124. package/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  125. package/dist/esm/core/sparql/builder/select-builder.d.ts +1 -1
  126. package/dist/esm/core/sparql/builder/select-builder.js +1 -1
  127. package/dist/esm/core/sparql/builder/update-builder.d.ts +1 -1
  128. package/dist/esm/core/sparql/builder/update-builder.d.ts.map +1 -1
  129. package/dist/esm/core/sparql/builder/update-builder.js +4 -4
  130. package/dist/esm/core/sparql/builder/update-builder.js.map +1 -1
  131. package/dist/esm/core/sparql/helpers.js +3 -3
  132. package/dist/esm/core/sparql/helpers.js.map +1 -1
  133. package/dist/esm/core/sparql-engine.d.ts +16 -0
  134. package/dist/esm/core/sparql-engine.d.ts.map +1 -0
  135. package/dist/esm/core/sparql-engine.js +89 -0
  136. package/dist/esm/core/sparql-engine.js.map +1 -0
  137. package/dist/esm/core/sparql-executor.d.ts +3 -1
  138. package/dist/esm/core/sparql-executor.d.ts.map +1 -1
  139. package/dist/esm/core/sparql-executor.js +3 -4
  140. package/dist/esm/core/sparql-executor.js.map +1 -1
  141. package/dist/esm/core/triple/handlers/inverse.js +4 -4
  142. package/dist/esm/core/triple/handlers/inverse.js.map +1 -1
  143. package/dist/esm/core/triple/handlers/uri.d.ts +1 -1
  144. package/dist/esm/core/triple/handlers/uri.js +3 -3
  145. package/dist/esm/core/triple/handlers/uri.js.map +1 -1
  146. package/dist/esm/core/uri/resolver.d.ts +9 -9
  147. package/dist/esm/core/uri/resolver.d.ts.map +1 -1
  148. package/dist/esm/core/uri/resolver.js +51 -51
  149. package/dist/esm/core/uri/resolver.js.map +1 -1
  150. package/dist/esm/core/uri/types.d.ts +10 -10
  151. package/dist/esm/core/uri/types.d.ts.map +1 -1
  152. package/dist/esm/driver.d.ts +10 -1
  153. package/dist/esm/driver.d.ts.map +1 -1
  154. package/dist/esm/driver.js +1 -5
  155. package/dist/esm/driver.js.map +1 -1
  156. package/dist/esm/index.d.ts +2 -0
  157. package/dist/esm/index.d.ts.map +1 -1
  158. package/dist/esm/index.js +3 -1
  159. package/dist/esm/index.js.map +1 -1
  160. package/dist/esm/pod.d.ts +68 -0
  161. package/dist/esm/pod.d.ts.map +1 -0
  162. package/dist/esm/pod.js +146 -0
  163. package/dist/esm/pod.js.map +1 -0
  164. package/dist/esm/utils/webid-resolver.d.ts +1 -2
  165. package/dist/esm/utils/webid-resolver.d.ts.map +1 -1
  166. package/dist/esm/utils/webid-resolver.js +36 -30
  167. package/dist/esm/utils/webid-resolver.js.map +1 -1
  168. package/dist/index.d.ts +2 -0
  169. package/dist/index.d.ts.map +1 -1
  170. package/dist/index.js +12 -4
  171. package/dist/index.js.map +1 -1
  172. package/dist/pod.d.ts +68 -0
  173. package/dist/pod.d.ts.map +1 -0
  174. package/dist/pod.js +153 -0
  175. package/dist/pod.js.map +1 -0
  176. package/dist/utils/webid-resolver.d.ts +1 -2
  177. package/dist/utils/webid-resolver.d.ts.map +1 -1
  178. package/dist/utils/webid-resolver.js +36 -30
  179. package/dist/utils/webid-resolver.js.map +1 -1
  180. package/package.json +11 -3
@@ -1 +1 @@
1
- {"version":3,"file":"sparql-strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/execution/sparql-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAe,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,sBAAsB,CAAC;IACvC,eAAe,EAAE,oBAAoB,CAAC;IACtC,YAAY,EAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,cAAe,YAAW,iBAAiB;IACtD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;gBAErB,IAAI,EAAE,0BAA0B;IAQ5C;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,eAAe,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IA4DjB;;OAEG;YACW,yBAAyB;IA2BvC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAiD9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAKhC;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAa5B"}
1
+ {"version":3,"file":"sparql-strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/execution/sparql-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAe,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,sBAAsB,CAAC;IACvC,eAAe,EAAE,oBAAoB,CAAC;IACtC,YAAY,EAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC9C;AAED,qBAAa,cAAe,YAAW,iBAAiB;IACtD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAA2B;gBAEzC,IAAI,EAAE,0BAA0B;IAS5C,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,mBAAmB;IAIrB,aAAa,CACjB,IAAI,EAAE,eAAe,EACrB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,EAAE,CAAC;YA0CH,yBAAyB;IAwCjC,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/B,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI/B,aAAa,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAIrC,OAAO,CAAC,gBAAgB;CAwBzB"}
@@ -7,54 +7,28 @@ export class SparqlStrategy {
7
7
  this.sessionFetch = deps.sessionFetch;
8
8
  this.podUrl = deps.podUrl;
9
9
  this.uriResolver = deps.uriResolver;
10
+ this.createQueryEngine = deps.createQueryEngine;
10
11
  }
11
- /**
12
- * Resolve target graph based on resource mode
13
- * - Document Mode SELECT: undefined (let CSS auto-query container and all sub-graphs)
14
- * - Document Mode INSERT/UPDATE/DELETE: container path as graph
15
- * - Fragment Mode: base file path
16
- */
17
12
  resolveTargetGraph(table, forSelect = false) {
18
13
  if (!table)
19
14
  return undefined;
20
- // Determine resource mode to choose correct graph
21
15
  const isDocumentMode = this.uriResolver.getResourceMode(table) === 'document';
22
16
  if (isDocumentMode) {
23
- // Document Mode:
24
- // - For SELECT: no graph specified (CSS will auto-query container and all sub-graphs)
25
- // - For INSERT/UPDATE/DELETE: use container path as graph
26
17
  if (forSelect) {
27
- return undefined; // Let CSS use default behavior
18
+ return undefined;
28
19
  }
29
20
  return table.config?.containerPath ?? table.getContainerPath?.();
30
21
  }
31
- // Fragment Mode: graph = base file
32
- // e.g., /data/tags.ttl (all fragments in this file share the same graph)
33
22
  return table.config?.base;
34
23
  }
35
- /**
36
- * Get the appropriate fetch function for a SPARQL endpoint
37
- */
38
24
  getFetchForEndpoint(endpoint) {
39
25
  return getFetchForOrigin(endpoint, this.podUrl, this.sessionFetch);
40
26
  }
41
- /**
42
- * Execute SELECT query via SPARQL endpoint
43
- */
44
- async executeSelect(plan, _containerUrl, resourceUrl // In SPARQL mode, this is the endpoint URL
45
- ) {
27
+ async executeSelect(plan, _containerUrl, resourceUrl) {
46
28
  const table = plan.baseTable;
47
- // Determine target graph based on resource mode
48
- // - Document Mode: no graph (CSS will auto-query container and all sub-graphs)
49
- // - Fragment Mode: graph = base file
50
- const targetGraph = this.resolveTargetGraph(table, true /* forSelect */);
51
- // Convert plan to SPARQL - check for simple select options or SQL
52
- let sparqlQuery;
29
+ const targetGraph = this.resolveTargetGraph(table, true);
53
30
  const extendedPlan = plan;
54
- // For SPARQL endpoint queries (especially CSS /-/sparql), we don't need GRAPH ?g wrapper
55
- // because the endpoint is a federated query interface that automatically queries
56
- // all documents under the container. Using GRAPH ?g can cause issues with some endpoints.
57
- // Only use GRAPH when we have a specific targetGraph.
31
+ let sparqlQuery;
58
32
  const useGraphVariable = targetGraph !== undefined;
59
33
  if (extendedPlan._simpleSelectOptions) {
60
34
  sparqlQuery = this.sparqlConverter.convertSimpleSelect(extendedPlan._simpleSelectOptions, targetGraph, undefined, useGraphVariable);
@@ -68,28 +42,21 @@ export class SparqlStrategy {
68
42
  }
69
43
  console.log('DEBUG: Generated SPARQL Query for SELECT:', sparqlQuery.query);
70
44
  console.log('DEBUG: resourceUrl =', resourceUrl);
71
- // Fast path: Direct fetch to SPARQL endpoint (bypass Comunica for speed)
72
- // This is much faster than Comunica which does extra processing
73
45
  if (resourceUrl.includes('/-/sparql')) {
74
46
  return await this.executeDirectSparqlSelect(resourceUrl, sparqlQuery, plan);
75
47
  }
76
- // Fallback to Comunica for non-endpoint sources
77
48
  if (isSameOrigin(resourceUrl, this.podUrl)) {
78
49
  return await this.sparqlExecutor.executeQueryWithSource(sparqlQuery, resourceUrl);
79
50
  }
80
- else {
81
- const { ComunicaSPARQLExecutor } = await import('../sparql-executor');
82
- const unauthExecutor = new ComunicaSPARQLExecutor({
83
- sources: [resourceUrl],
84
- fetch: fetch,
85
- logging: false
86
- });
87
- return await unauthExecutor.executeQueryWithSource(sparqlQuery, resourceUrl);
88
- }
51
+ const { ComunicaSPARQLExecutor } = await import('../sparql-executor');
52
+ const unauthExecutor = new ComunicaSPARQLExecutor({
53
+ sources: [resourceUrl],
54
+ fetch: fetch,
55
+ logging: false,
56
+ createQueryEngine: this.createQueryEngine,
57
+ });
58
+ return await unauthExecutor.executeQueryWithSource(sparqlQuery, resourceUrl);
89
59
  }
90
- /**
91
- * Execute SPARQL SELECT directly via fetch (fast path, bypasses Comunica)
92
- */
93
60
  async executeDirectSparqlSelect(endpoint, sparqlQuery, plan) {
94
61
  const fetchFn = this.getFetchForEndpoint(endpoint);
95
62
  console.log('[SparqlStrategy] Direct fetch to SPARQL endpoint:', endpoint);
@@ -106,118 +73,47 @@ export class SparqlStrategy {
106
73
  throw new Error(`SPARQL SELECT failed: ${response.status} ${response.statusText} - ${text}`);
107
74
  }
108
75
  const json = await response.json();
109
- return this.parseSparqlResultsJson(json, plan);
110
- }
111
- /**
112
- * Parse SPARQL Results JSON format into row objects
113
- */
114
- parseSparqlResultsJson(json, plan) {
115
- const bindings = json?.results?.bindings || [];
116
- return bindings.map((binding) => {
76
+ const rows = (json.results?.bindings || []).map((binding) => {
117
77
  const row = {};
118
- for (const [varName, termObj] of Object.entries(binding)) {
119
- if (!termObj)
120
- continue;
121
- // Convert SPARQL result term to JS value
122
- row[varName] = this.convertSparqlTerm(termObj);
123
- }
124
- // Extract ID from subject URI if present
125
- if (row.subject && plan.baseTable) {
126
- const subjectUri = row.subject;
127
- // Preserve the full subject URI in @id for downstream processing
128
- // (hydrateInlineColumns needs full URI, not just the ID)
129
- row['@id'] = subjectUri;
130
- // Use UriResolver to properly extract ID from subject URI
131
- const parsed = this.uriResolver.parseSubject(subjectUri, plan.baseTable);
132
- if (parsed && parsed.id) {
133
- row.id = parsed.id;
134
- }
135
- // Fallback to simple extraction if resolver parsing failed
136
- if (!row.id) {
137
- const hashIndex = subjectUri.lastIndexOf('#');
138
- if (hashIndex !== -1) {
139
- row.id = subjectUri.substring(hashIndex + 1);
140
- }
141
- else {
142
- // Or from "http://pod/path/id.ttl" -> "id"
143
- const lastSlash = subjectUri.lastIndexOf('/');
144
- const filename = subjectUri.substring(lastSlash + 1);
145
- if (filename.endsWith('.ttl')) {
146
- row.id = filename.slice(0, -4);
147
- }
148
- }
149
- }
150
- delete row.subject;
78
+ for (const [key, value] of Object.entries(binding)) {
79
+ row[key] = this.parseSparqlValue(value);
151
80
  }
152
81
  return row;
153
82
  });
154
- }
155
- /**
156
- * Convert a SPARQL result term to a JavaScript value
157
- */
158
- convertSparqlTerm(term) {
159
- if (!term || !term.type)
160
- return null;
161
- const { type, value, datatype } = term;
162
- if (type === 'uri') {
163
- return value;
164
- }
165
- if (type === 'bnode') {
166
- return `_:${value}`;
167
- }
168
- if (type === 'literal' || type === 'typed-literal') {
169
- const effectiveDatatype = datatype || this.extractDatatypeFromValue(value);
170
- if (effectiveDatatype) {
171
- return this.convertTypedLiteral(value, effectiveDatatype);
172
- }
173
- return this.extractLiteralValue(value);
83
+ if (plan.limit !== undefined && rows.length > plan.limit) {
84
+ return rows.slice(0, plan.limit);
174
85
  }
175
- return value;
86
+ return rows;
176
87
  }
177
- /**
178
- * Convert a typed literal value to JavaScript type
179
- */
180
- convertTypedLiteral(value, datatype) {
181
- const literalValue = this.extractLiteralValue(value);
182
- if (datatype === 'http://www.w3.org/2001/XMLSchema#integer' ||
183
- datatype === 'http://www.w3.org/2001/XMLSchema#int') {
184
- return parseInt(literalValue, 10);
185
- }
186
- if (datatype === 'http://www.w3.org/2001/XMLSchema#decimal' ||
187
- datatype === 'http://www.w3.org/2001/XMLSchema#float' ||
188
- datatype === 'http://www.w3.org/2001/XMLSchema#double') {
189
- return parseFloat(literalValue);
190
- }
191
- if (datatype === 'http://www.w3.org/2001/XMLSchema#boolean') {
192
- return literalValue === 'true' || literalValue === '1';
193
- }
194
- if (datatype === 'http://www.w3.org/2001/XMLSchema#dateTime' ||
195
- datatype === 'http://www.w3.org/2001/XMLSchema#date') {
196
- return new Date(literalValue);
197
- }
198
- return literalValue;
88
+ async executeInsert() {
89
+ throw new Error('SPARQL mode INSERT is not supported directly; writes should route through LDP strategy');
90
+ }
91
+ async executeUpdate() {
92
+ throw new Error('SPARQL mode UPDATE is not supported directly; writes should route through LDP strategy');
199
93
  }
200
- /**
201
- * Extract datatype from a value string like "true"^^<http://...#boolean>
202
- */
203
- extractDatatypeFromValue(value) {
204
- const match = value.match(/\^\^<?([^>]+)>?$/);
205
- return match ? match[1] : undefined;
94
+ async executeDelete() {
95
+ throw new Error('SPARQL mode DELETE is not supported directly; writes should route through LDP strategy');
206
96
  }
207
- /**
208
- * Extract literal value from a typed literal string like "true"^^<...>
209
- */
210
- extractLiteralValue(value) {
211
- // Remove quotes and datatype annotation
212
- const match = value.match(/^"(.*)"\^\^/);
213
- if (match) {
214
- return match[1];
97
+ parseSparqlValue(value) {
98
+ if (!value || typeof value !== 'object') {
99
+ return value;
100
+ }
101
+ if (value.type === 'uri') {
102
+ return value.value;
215
103
  }
216
- // Remove just quotes
217
- if (value.startsWith('"') && value.endsWith('"')) {
218
- return value.slice(1, -1);
104
+ if (value.type === 'literal') {
105
+ if (value.datatype?.includes('#integer') || value.datatype?.includes('#int')) {
106
+ return Number.parseInt(value.value, 10);
107
+ }
108
+ if (value.datatype?.includes('#decimal') || value.datatype?.includes('#double')) {
109
+ return Number.parseFloat(value.value);
110
+ }
111
+ if (value.datatype?.includes('#boolean')) {
112
+ return value.value === 'true';
113
+ }
114
+ return value.value;
219
115
  }
220
- return value;
116
+ return value.value ?? value;
221
117
  }
222
118
  }
223
119
  //# sourceMappingURL=sparql-strategy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sparql-strategy.js","sourceRoot":"","sources":["../../../../src/core/execution/sparql-strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sparql-strategy.js","sourceRoot":"","sources":["../../../../src/core/execution/sparql-strategy.ts"],"names":[],"mappings":"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"}
@@ -5,20 +5,22 @@
5
5
  * - Tables with sparqlEndpoint -> SparqlStrategy
6
6
  * - Tables without sparqlEndpoint -> LdpStrategy
7
7
  */
8
- import type { PodTable } from '../schema';
9
- import type { ComunicaSPARQLExecutor } from '../sparql-executor';
10
8
  import type { ASTToSPARQLConverter } from '../ast-to-sparql';
11
- import type { ResourceResolver } from '../resource-resolver';
12
9
  import type { QueryCondition } from '../query-conditions';
13
- import type { ExecutionStrategy, ExecutionStrategyFactory } from './types';
10
+ import type { ResourceResolver } from '../resource-resolver';
11
+ import type { PodTable } from '../schema';
12
+ import type { ComunicaSPARQLExecutor } from '../sparql-executor';
13
+ import type { SPARQLQueryEngineFactory } from '../sparql-engine';
14
+ import type { UriResolver } from '../uri';
14
15
  import { LdpStrategy } from './ldp-strategy';
15
16
  import type { LdpExecutor } from './ldp-executor';
16
- import type { UriResolver } from '../uri';
17
+ import type { ExecutionStrategy, ExecutionStrategyFactory } from './types';
17
18
  export interface StrategyFactoryDependencies {
18
19
  sparqlExecutor: ComunicaSPARQLExecutor;
19
20
  sparqlConverter: ASTToSPARQLConverter;
20
21
  sessionFetch: typeof fetch;
21
22
  podUrl: string;
23
+ createQueryEngine?: SPARQLQueryEngineFactory;
22
24
  ldpExecutor: LdpExecutor;
23
25
  uriResolver: UriResolver;
24
26
  getResolver: (table: PodTable) => ResourceResolver;
@@ -30,25 +32,10 @@ export declare class ExecutionStrategyFactoryImpl implements ExecutionStrategyFa
30
32
  private ldpStrategy;
31
33
  private sparqlStrategy;
32
34
  constructor(deps: StrategyFactoryDependencies);
33
- /**
34
- * Get the appropriate execution strategy for a table
35
- */
36
35
  getStrategy(table: PodTable): ExecutionStrategy;
37
- /**
38
- * Get LDP strategy explicitly (used for write operations in SPARQL mode)
39
- */
40
36
  getLdpStrategy(): LdpStrategy;
41
- /**
42
- * Get or create LDP strategy (singleton)
43
- */
44
37
  private getLdpStrategyInternal;
45
- /**
46
- * Get or create SPARQL strategy (singleton)
47
- */
48
38
  private getSparqlStrategy;
49
- /**
50
- * Determine execution mode for a table
51
- */
52
39
  static getMode(table: PodTable): 'ldp' | 'sparql';
53
40
  }
54
41
  //# sourceMappingURL=strategy-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"strategy-factory.d.ts","sourceRoot":"","sources":["../../../../src/core/execution/strategy-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAgC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,sBAAsB,CAAC;IACvC,eAAe,EAAE,oBAAoB,CAAC;IACtC,YAAY,EAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,gBAAgB,CAAC;IACnD,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,wBAAwB,EAAE,CACxB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACxB;AAED,qBAAa,4BAA6B,YAAW,wBAAwB;IAC3E,OAAO,CAAC,IAAI,CAA8B;IAG1C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAA+B;gBAEzC,IAAI,EAAE,2BAA2B;IAI7C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB;IAU/C;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ;CAGlD"}
1
+ {"version":3,"file":"strategy-factory.d.ts","sourceRoot":"","sources":["../../../../src/core/execution/strategy-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAgC,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAE3E,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,sBAAsB,CAAC;IACvC,eAAe,EAAE,oBAAoB,CAAC;IACtC,YAAY,EAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;IAC7C,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,gBAAgB,CAAC;IACnD,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,wBAAwB,EAAE,CACxB,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,QAAQ,EACf,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACxB;AAED,qBAAa,4BAA6B,YAAW,wBAAwB;IAC3E,OAAO,CAAC,IAAI,CAA8B;IAE1C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,cAAc,CAA+B;gBAEzC,IAAI,EAAE,2BAA2B;IAI7C,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,iBAAiB;IAU/C,cAAc,IAAI,WAAW;IAI7B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,iBAAiB;IAezB,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ;CAGlD"}
@@ -9,14 +9,10 @@ import { LdpStrategy } from './ldp-strategy';
9
9
  import { SparqlStrategy } from './sparql-strategy';
10
10
  export class ExecutionStrategyFactoryImpl {
11
11
  constructor(deps) {
12
- // Cache strategies by mode to avoid recreating them
13
12
  this.ldpStrategy = null;
14
13
  this.sparqlStrategy = null;
15
14
  this.deps = deps;
16
15
  }
17
- /**
18
- * Get the appropriate execution strategy for a table
19
- */
20
16
  getStrategy(table) {
21
17
  const endpoint = table.getSparqlEndpoint?.();
22
18
  if (endpoint) {
@@ -24,15 +20,9 @@ export class ExecutionStrategyFactoryImpl {
24
20
  }
25
21
  return this.getLdpStrategy();
26
22
  }
27
- /**
28
- * Get LDP strategy explicitly (used for write operations in SPARQL mode)
29
- */
30
23
  getLdpStrategy() {
31
24
  return this.getLdpStrategyInternal();
32
25
  }
33
- /**
34
- * Get or create LDP strategy (singleton)
35
- */
36
26
  getLdpStrategyInternal() {
37
27
  if (!this.ldpStrategy) {
38
28
  const ldpDeps = {
@@ -48,9 +38,6 @@ export class ExecutionStrategyFactoryImpl {
48
38
  }
49
39
  return this.ldpStrategy;
50
40
  }
51
- /**
52
- * Get or create SPARQL strategy (singleton)
53
- */
54
41
  getSparqlStrategy() {
55
42
  if (!this.sparqlStrategy) {
56
43
  const sparqlDeps = {
@@ -58,15 +45,13 @@ export class ExecutionStrategyFactoryImpl {
58
45
  sparqlConverter: this.deps.sparqlConverter,
59
46
  sessionFetch: this.deps.sessionFetch,
60
47
  podUrl: this.deps.podUrl,
61
- uriResolver: this.deps.uriResolver
48
+ uriResolver: this.deps.uriResolver,
49
+ createQueryEngine: this.deps.createQueryEngine,
62
50
  };
63
51
  this.sparqlStrategy = new SparqlStrategy(sparqlDeps);
64
52
  }
65
53
  return this.sparqlStrategy;
66
54
  }
67
- /**
68
- * Determine execution mode for a table
69
- */
70
55
  static getMode(table) {
71
56
  return table.getSparqlEndpoint?.() ? 'sparql' : 'ldp';
72
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"strategy-factory.js","sourceRoot":"","sources":["../../../../src/core/execution/strategy-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,WAAW,EAAgC,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAmC,MAAM,mBAAmB,CAAC;AAoBpF,MAAM,OAAO,4BAA4B;IAOvC,YAAY,IAAiC;QAJ7C,oDAAoD;QAC5C,gBAAW,GAAuB,IAAI,CAAC;QACvC,mBAAc,GAA0B,IAAI,CAAC;QAGnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAe;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,OAAO,GAA4B;gBACvC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBACxC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;gBAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB;gBACxD,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB;aAC7D,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,UAAU,GAA+B;gBAC7C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBACxC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;gBAC1C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACpC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aACnC,CAAC;YACF,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"strategy-factory.js","sourceRoot":"","sources":["../../../../src/core/execution/strategy-factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,WAAW,EAAgC,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAmC,MAAM,mBAAmB,CAAC;AAqBpF,MAAM,OAAO,4BAA4B;IAMvC,YAAY,IAAiC;QAHrC,gBAAW,GAAuB,IAAI,CAAC;QACvC,mBAAc,GAA0B,IAAI,CAAC;QAGnD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvC,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,OAAO,GAA4B;gBACvC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBACxC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;gBAC1C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC,sBAAsB;gBACxD,wBAAwB,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB;aAC7D,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,UAAU,GAA+B;gBAC7C,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc;gBACxC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;gBAC1C,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;gBACpC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBAClC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB;aAC/C,CAAC;YACF,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,CAAC;CACF"}
@@ -375,10 +375,10 @@ export declare class PodDatabase<TSchema extends Record<string, unknown> = Recor
375
375
  private resolveIdFromRow;
376
376
  private resolveParentKey;
377
377
  private resolveIriFromRow;
378
- private collectReferenceLookupKeys;
379
- private normalizeReferenceValue;
378
+ private collectLinkLookupKeys;
379
+ private normalizeLinkValue;
380
380
  private normalizeLiteralValue;
381
- private collectInverseReferenceValues;
381
+ private collectInverseLinkValues;
382
382
  private groupRowsByIri;
383
383
  private extractFragment;
384
384
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pod-database.d.ts","sourceRoot":"","sources":["../../../src/core/pod-database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pod-database.d.ts","sourceRoot":"","sources":["../../../src/core/pod-database.ts"],"names":[],"mappings":"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"}
@@ -88,7 +88,7 @@ export class PodDatabase {
88
88
  if (options.hooks) {
89
89
  table.config.hooks = options.hooks;
90
90
  }
91
- // Store reference to db in table for hook context
91
+ // Store db handle in table for hook context
92
92
  // This allows hooks to access db when invoked
93
93
  table._db = this;
94
94
  return table;
@@ -986,29 +986,29 @@ export class PodDatabase {
986
986
  const candidateColumns = relationDef?.fields && relationDef.fields.length > 0
987
987
  ? relationDef.fields
988
988
  : Object.values(targetPodTable.columns ?? {});
989
- const matchesParentReference = (col) => Boolean(col && (col.options?.referenceTarget === parentTable.config.type ||
990
- col.options?.referenceTable === parentTable ||
991
- col.getReferenceTable?.() === parentTable));
992
- const matchesTargetReference = (col) => Boolean(col && (col.options?.referenceTarget === targetType ||
993
- col.options?.referenceTable === targetPodTable ||
994
- col.getReferenceTable?.() === targetPodTable));
995
- const referenceColumns = relationDef?.fields && relationDef.fields.length > 0
989
+ const matchesParentLink = (col) => Boolean(col && (col.options?.linkTarget === parentTable.config.type ||
990
+ col.options?.linkTable === parentTable ||
991
+ col.getLinkTable?.() === parentTable));
992
+ const matchesTargetLink = (col) => Boolean(col && (col.options?.linkTarget === targetType ||
993
+ col.options?.linkTable === targetPodTable ||
994
+ col.getLinkTable?.() === targetPodTable));
995
+ const linkColumns = relationDef?.fields && relationDef.fields.length > 0
996
996
  ? candidateColumns
997
- : candidateColumns.filter((col) => matchesParentReference(col) && !col.isInverse?.());
998
- if (referenceColumns.length === 0) {
999
- const relationReferences = relationDef?.references ?? [];
1000
- const explicitInverse = relationReferences.filter((col) => Boolean(col &&
997
+ : candidateColumns.filter((col) => matchesParentLink(col) && !col.isInverse?.());
998
+ if (linkColumns.length === 0) {
999
+ const relationReferenceFields = relationDef?.references ?? [];
1000
+ const explicitInverse = relationReferenceFields.filter((col) => Boolean(col &&
1001
1001
  typeof col.isInverse === 'function' &&
1002
1002
  col.isInverse() &&
1003
- matchesTargetReference(col)));
1003
+ matchesTargetLink(col)));
1004
1004
  const parentColumns = Object.values(parentTable.columns ?? {});
1005
1005
  const inverseCandidates = (explicitInverse.length > 0 ? explicitInverse : parentColumns).filter((col) => typeof col.isInverse === 'function' &&
1006
1006
  col.isInverse() &&
1007
- matchesTargetReference(col));
1007
+ matchesTargetLink(col));
1008
1008
  if (inverseCandidates.length === 0) {
1009
1009
  continue;
1010
1010
  }
1011
- const inverseValuesPerRow = dedupedRows.map((row) => this.collectInverseReferenceValues(row, inverseCandidates));
1011
+ const inverseValuesPerRow = dedupedRows.map((row) => this.collectInverseLinkValues(row, inverseCandidates));
1012
1012
  const uniqueIris = Array.from(new Set(inverseValuesPerRow
1013
1013
  .flat()
1014
1014
  .filter((iri) => typeof iri === 'string' && iri.length > 0)));
@@ -1035,17 +1035,17 @@ export class PodDatabase {
1035
1035
  });
1036
1036
  continue;
1037
1037
  }
1038
- const refColumn = referenceColumns[0];
1039
- const referenceColumn = relationDef?.references && relationDef.references[0];
1040
- const useReferenceIri = refColumn.isReference();
1038
+ const refColumn = linkColumns[0];
1039
+ const linkColumn = relationDef?.references && relationDef.references[0];
1040
+ const useLinkIri = refColumn.isLink();
1041
1041
  const parentKeys = dedupedRows
1042
- .map((row) => this.resolveParentKey(row, referenceColumn, useReferenceIri))
1042
+ .map((row) => this.resolveParentKey(row, linkColumn, useLinkIri))
1043
1043
  .filter((value) => typeof value === 'string' && value.length > 0);
1044
1044
  if (parentKeys.length === 0) {
1045
1045
  continue;
1046
1046
  }
1047
1047
  let childBuilder = this.session.select().from(targetPodTable);
1048
- if (useReferenceIri) {
1048
+ if (useLinkIri) {
1049
1049
  childBuilder = childBuilder.where(inArray(refColumn, parentKeys));
1050
1050
  }
1051
1051
  else {
@@ -1055,8 +1055,8 @@ export class PodDatabase {
1055
1055
  const grouped = new Map();
1056
1056
  for (const child of childRows) {
1057
1057
  const fkValue = child[refColumn.name];
1058
- const lookupKeys = useReferenceIri
1059
- ? this.collectReferenceLookupKeys(fkValue)
1058
+ const lookupKeys = useLinkIri
1059
+ ? this.collectLinkLookupKeys(fkValue)
1060
1060
  : (this.normalizeLiteralValue(fkValue) ? [this.normalizeLiteralValue(fkValue)] : []);
1061
1061
  for (const lookupKey of lookupKeys) {
1062
1062
  const arr = grouped.get(lookupKey) ?? [];
@@ -1065,12 +1065,12 @@ export class PodDatabase {
1065
1065
  }
1066
1066
  }
1067
1067
  dedupedRows.forEach((row) => {
1068
- const parentKeys = useReferenceIri
1068
+ const parentKeys = useLinkIri
1069
1069
  ? Array.from(new Set([
1070
- this.resolveParentKey(row, referenceColumn, true),
1070
+ this.resolveParentKey(row, linkColumn, true),
1071
1071
  this.resolveIdFromRow(row),
1072
1072
  ].filter((value) => typeof value === 'string' && value.length > 0)))
1073
- : [this.resolveParentKey(row, referenceColumn, false)].filter((value) => typeof value === 'string' && value.length > 0);
1073
+ : [this.resolveParentKey(row, linkColumn, false)].filter((value) => typeof value === 'string' && value.length > 0);
1074
1074
  const related = [];
1075
1075
  for (const parentKey of parentKeys) {
1076
1076
  const matches = grouped.get(parentKey) ?? [];
@@ -1134,12 +1134,12 @@ export class PodDatabase {
1134
1134
  }
1135
1135
  return undefined;
1136
1136
  }
1137
- resolveParentKey(row, referenceColumn, useReferenceIri) {
1138
- if (referenceColumn) {
1139
- const value = row[referenceColumn.name];
1140
- return useReferenceIri ? this.normalizeReferenceValue(value) : this.normalizeLiteralValue(value);
1137
+ resolveParentKey(row, linkColumn, useLinkIri) {
1138
+ if (linkColumn) {
1139
+ const value = row[linkColumn.name];
1140
+ return useLinkIri ? this.normalizeLinkValue(value) : this.normalizeLiteralValue(value);
1141
1141
  }
1142
- return useReferenceIri ? this.resolveIriFromRow(row) : this.resolveIdFromRow(row);
1142
+ return useLinkIri ? this.resolveIriFromRow(row) : this.resolveIdFromRow(row);
1143
1143
  }
1144
1144
  resolveIriFromRow(row) {
1145
1145
  if (!row)
@@ -1152,9 +1152,9 @@ export class PodDatabase {
1152
1152
  }
1153
1153
  return undefined;
1154
1154
  }
1155
- collectReferenceLookupKeys(value) {
1155
+ collectLinkLookupKeys(value) {
1156
1156
  const keys = [];
1157
- const normalized = this.normalizeReferenceValue(value) ?? this.normalizeLiteralValue(value);
1157
+ const normalized = this.normalizeLinkValue(value) ?? this.normalizeLiteralValue(value);
1158
1158
  if (normalized) {
1159
1159
  keys.push(normalized);
1160
1160
  const fragment = this.extractFragment(normalized);
@@ -1164,7 +1164,7 @@ export class PodDatabase {
1164
1164
  }
1165
1165
  return keys;
1166
1166
  }
1167
- normalizeReferenceValue(value) {
1167
+ normalizeLinkValue(value) {
1168
1168
  if (!value)
1169
1169
  return undefined;
1170
1170
  if (typeof value === 'string') {
@@ -1187,7 +1187,7 @@ export class PodDatabase {
1187
1187
  }
1188
1188
  return undefined;
1189
1189
  }
1190
- collectInverseReferenceValues(row, columns) {
1190
+ collectInverseLinkValues(row, columns) {
1191
1191
  if (!columns.length) {
1192
1192
  return [];
1193
1193
  }
@@ -1198,7 +1198,7 @@ export class PodDatabase {
1198
1198
  continue;
1199
1199
  }
1200
1200
  const appendValue = (entry) => {
1201
- const normalized = this.normalizeReferenceValue(entry) ?? (typeof entry === 'string' ? entry : undefined);
1201
+ const normalized = this.normalizeLinkValue(entry) ?? (typeof entry === 'string' ? entry : undefined);
1202
1202
  if (normalized) {
1203
1203
  collected.push(normalized);
1204
1204
  }
@@ -1215,8 +1215,8 @@ export class PodDatabase {
1215
1215
  groupRowsByIri(rows) {
1216
1216
  const grouped = new Map();
1217
1217
  for (const row of rows) {
1218
- const iri = this.normalizeReferenceValue(row['@id']) ??
1219
- this.normalizeReferenceValue(row.uri) ??
1218
+ const iri = this.normalizeLinkValue(row['@id']) ??
1219
+ this.normalizeLinkValue(row.uri) ??
1220
1220
  (typeof row['@id'] === 'string' ? row['@id'] : undefined);
1221
1221
  if (!iri) {
1222
1222
  continue;