@undefineds.co/drizzle-solid 0.2.6

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 (900) hide show
  1. package/CHANGELOG-DRAFT.md +444 -0
  2. package/LICENSE +21 -0
  3. package/README.md +563 -0
  4. package/dist/core/aggregates.d.ts +19 -0
  5. package/dist/core/aggregates.d.ts.map +1 -0
  6. package/dist/core/aggregates.js +51 -0
  7. package/dist/core/aggregates.js.map +1 -0
  8. package/dist/core/ast-to-sparql.d.ts +62 -0
  9. package/dist/core/ast-to-sparql.d.ts.map +1 -0
  10. package/dist/core/ast-to-sparql.js +107 -0
  11. package/dist/core/ast-to-sparql.js.map +1 -0
  12. package/dist/core/compile-time-types.d.ts +37 -0
  13. package/dist/core/compile-time-types.d.ts.map +1 -0
  14. package/dist/core/compile-time-types.js +71 -0
  15. package/dist/core/compile-time-types.js.map +1 -0
  16. package/dist/core/comunica-patch.d.ts +7 -0
  17. package/dist/core/comunica-patch.d.ts.map +1 -0
  18. package/dist/core/comunica-patch.js +76 -0
  19. package/dist/core/comunica-patch.js.map +1 -0
  20. package/dist/core/conflict-resolution.d.ts +110 -0
  21. package/dist/core/conflict-resolution.d.ts.map +1 -0
  22. package/dist/core/conflict-resolution.js +251 -0
  23. package/dist/core/conflict-resolution.js.map +1 -0
  24. package/dist/core/discovery/composite-discovery.d.ts +18 -0
  25. package/dist/core/discovery/composite-discovery.d.ts.map +1 -0
  26. package/dist/core/discovery/composite-discovery.js +118 -0
  27. package/dist/core/discovery/composite-discovery.js.map +1 -0
  28. package/dist/core/discovery/index.d.ts +7 -0
  29. package/dist/core/discovery/index.d.ts.map +1 -0
  30. package/dist/core/discovery/index.js +23 -0
  31. package/dist/core/discovery/index.js.map +1 -0
  32. package/dist/core/discovery/interop-discovery.d.ts +36 -0
  33. package/dist/core/discovery/interop-discovery.d.ts.map +1 -0
  34. package/dist/core/discovery/interop-discovery.js +646 -0
  35. package/dist/core/discovery/interop-discovery.js.map +1 -0
  36. package/dist/core/discovery/interop-tables.d.ts +37 -0
  37. package/dist/core/discovery/interop-tables.d.ts.map +1 -0
  38. package/dist/core/discovery/interop-tables.js +68 -0
  39. package/dist/core/discovery/interop-tables.js.map +1 -0
  40. package/dist/core/discovery/interop-types.d.ts +36 -0
  41. package/dist/core/discovery/interop-types.d.ts.map +1 -0
  42. package/dist/core/discovery/interop-types.js +42 -0
  43. package/dist/core/discovery/interop-types.js.map +1 -0
  44. package/dist/core/discovery/provider-cache.d.ts +99 -0
  45. package/dist/core/discovery/provider-cache.d.ts.map +1 -0
  46. package/dist/core/discovery/provider-cache.js +296 -0
  47. package/dist/core/discovery/provider-cache.js.map +1 -0
  48. package/dist/core/discovery/typeindex-discovery.d.ts +30 -0
  49. package/dist/core/discovery/typeindex-discovery.d.ts.map +1 -0
  50. package/dist/core/discovery/typeindex-discovery.js +136 -0
  51. package/dist/core/discovery/typeindex-discovery.js.map +1 -0
  52. package/dist/core/discovery/types.d.ts +128 -0
  53. package/dist/core/discovery/types.d.ts.map +1 -0
  54. package/dist/core/discovery/types.js +3 -0
  55. package/dist/core/discovery/types.js.map +1 -0
  56. package/dist/core/execution/index.d.ts +14 -0
  57. package/dist/core/execution/index.d.ts.map +1 -0
  58. package/dist/core/execution/index.js +20 -0
  59. package/dist/core/execution/index.js.map +1 -0
  60. package/dist/core/execution/ldp-executor.d.ts +66 -0
  61. package/dist/core/execution/ldp-executor.d.ts.map +1 -0
  62. package/dist/core/execution/ldp-executor.js +584 -0
  63. package/dist/core/execution/ldp-executor.js.map +1 -0
  64. package/dist/core/execution/ldp-strategy.d.ts +53 -0
  65. package/dist/core/execution/ldp-strategy.d.ts.map +1 -0
  66. package/dist/core/execution/ldp-strategy.js +104 -0
  67. package/dist/core/execution/ldp-strategy.js.map +1 -0
  68. package/dist/core/execution/pod-executor-types.d.ts +9 -0
  69. package/dist/core/execution/pod-executor-types.d.ts.map +1 -0
  70. package/dist/core/execution/pod-executor-types.js +3 -0
  71. package/dist/core/execution/pod-executor-types.js.map +1 -0
  72. package/dist/core/execution/pod-executor.d.ts +59 -0
  73. package/dist/core/execution/pod-executor.d.ts.map +1 -0
  74. package/dist/core/execution/pod-executor.js +221 -0
  75. package/dist/core/execution/pod-executor.js.map +1 -0
  76. package/dist/core/execution/sparql-strategy.d.ts +80 -0
  77. package/dist/core/execution/sparql-strategy.d.ts.map +1 -0
  78. package/dist/core/execution/sparql-strategy.js +306 -0
  79. package/dist/core/execution/sparql-strategy.js.map +1 -0
  80. package/dist/core/execution/strategy-factory.d.ts +54 -0
  81. package/dist/core/execution/strategy-factory.d.ts.map +1 -0
  82. package/dist/core/execution/strategy-factory.js +78 -0
  83. package/dist/core/execution/strategy-factory.js.map +1 -0
  84. package/dist/core/execution/types.d.ts +80 -0
  85. package/dist/core/execution/types.d.ts.map +1 -0
  86. package/dist/core/execution/types.js +8 -0
  87. package/dist/core/execution/types.js.map +1 -0
  88. package/dist/core/expressions.d.ts +35 -0
  89. package/dist/core/expressions.d.ts.map +1 -0
  90. package/dist/core/expressions.js +53 -0
  91. package/dist/core/expressions.js.map +1 -0
  92. package/dist/core/federated/executor.d.ts +95 -0
  93. package/dist/core/federated/executor.d.ts.map +1 -0
  94. package/dist/core/federated/executor.js +425 -0
  95. package/dist/core/federated/executor.js.map +1 -0
  96. package/dist/core/federated/index.d.ts +3 -0
  97. package/dist/core/federated/index.d.ts.map +1 -0
  98. package/dist/core/federated/index.js +19 -0
  99. package/dist/core/federated/index.js.map +1 -0
  100. package/dist/core/federated/types.d.ts +69 -0
  101. package/dist/core/federated/types.d.ts.map +1 -0
  102. package/dist/core/federated/types.js +8 -0
  103. package/dist/core/federated/types.js.map +1 -0
  104. package/dist/core/notifications/channels/base-channel.d.ts +29 -0
  105. package/dist/core/notifications/channels/base-channel.d.ts.map +1 -0
  106. package/dist/core/notifications/channels/base-channel.js +63 -0
  107. package/dist/core/notifications/channels/base-channel.js.map +1 -0
  108. package/dist/core/notifications/channels/index.d.ts +4 -0
  109. package/dist/core/notifications/channels/index.d.ts.map +1 -0
  110. package/dist/core/notifications/channels/index.js +11 -0
  111. package/dist/core/notifications/channels/index.js.map +1 -0
  112. package/dist/core/notifications/channels/sse-channel.d.ts +50 -0
  113. package/dist/core/notifications/channels/sse-channel.d.ts.map +1 -0
  114. package/dist/core/notifications/channels/sse-channel.js +210 -0
  115. package/dist/core/notifications/channels/sse-channel.js.map +1 -0
  116. package/dist/core/notifications/channels/websocket-channel.d.ts +16 -0
  117. package/dist/core/notifications/channels/websocket-channel.d.ts.map +1 -0
  118. package/dist/core/notifications/channels/websocket-channel.js +87 -0
  119. package/dist/core/notifications/channels/websocket-channel.js.map +1 -0
  120. package/dist/core/notifications/index.d.ts +3 -0
  121. package/dist/core/notifications/index.d.ts.map +1 -0
  122. package/dist/core/notifications/index.js +6 -0
  123. package/dist/core/notifications/index.js.map +1 -0
  124. package/dist/core/notifications/notifications-client.d.ts +87 -0
  125. package/dist/core/notifications/notifications-client.d.ts.map +1 -0
  126. package/dist/core/notifications/notifications-client.js +460 -0
  127. package/dist/core/notifications/notifications-client.js.map +1 -0
  128. package/dist/core/notifications/types.d.ts +228 -0
  129. package/dist/core/notifications/types.d.ts.map +1 -0
  130. package/dist/core/notifications/types.js +7 -0
  131. package/dist/core/notifications/types.js.map +1 -0
  132. package/dist/core/pod-database.d.ts +383 -0
  133. package/dist/core/pod-database.d.ts.map +1 -0
  134. package/dist/core/pod-database.js +1212 -0
  135. package/dist/core/pod-database.js.map +1 -0
  136. package/dist/core/pod-dialect.d.ts +294 -0
  137. package/dist/core/pod-dialect.d.ts.map +1 -0
  138. package/dist/core/pod-dialect.js +1300 -0
  139. package/dist/core/pod-dialect.js.map +1 -0
  140. package/dist/core/pod-discovery.d.ts +20 -0
  141. package/dist/core/pod-discovery.d.ts.map +1 -0
  142. package/dist/core/pod-discovery.js +115 -0
  143. package/dist/core/pod-discovery.js.map +1 -0
  144. package/dist/core/pod-session.d.ts +44 -0
  145. package/dist/core/pod-session.d.ts.map +1 -0
  146. package/dist/core/pod-session.js +116 -0
  147. package/dist/core/pod-session.js.map +1 -0
  148. package/dist/core/pod-table.d.ts +710 -0
  149. package/dist/core/pod-table.d.ts.map +1 -0
  150. package/dist/core/pod-table.js +1300 -0
  151. package/dist/core/pod-table.js.map +1 -0
  152. package/dist/core/profile-manager.d.ts +90 -0
  153. package/dist/core/profile-manager.d.ts.map +1 -0
  154. package/dist/core/profile-manager.js +168 -0
  155. package/dist/core/profile-manager.js.map +1 -0
  156. package/dist/core/publish-manager.d.ts +90 -0
  157. package/dist/core/publish-manager.d.ts.map +1 -0
  158. package/dist/core/publish-manager.js +147 -0
  159. package/dist/core/publish-manager.js.map +1 -0
  160. package/dist/core/query-builders/delete-query-builder.d.ts +36 -0
  161. package/dist/core/query-builders/delete-query-builder.d.ts.map +1 -0
  162. package/dist/core/query-builders/delete-query-builder.js +144 -0
  163. package/dist/core/query-builders/delete-query-builder.js.map +1 -0
  164. package/dist/core/query-builders/helpers.d.ts +4 -0
  165. package/dist/core/query-builders/helpers.d.ts.map +1 -0
  166. package/dist/core/query-builders/helpers.js +30 -0
  167. package/dist/core/query-builders/helpers.js.map +1 -0
  168. package/dist/core/query-builders/index.d.ts +6 -0
  169. package/dist/core/query-builders/index.d.ts.map +1 -0
  170. package/dist/core/query-builders/index.js +12 -0
  171. package/dist/core/query-builders/index.js.map +1 -0
  172. package/dist/core/query-builders/insert-query-builder.d.ts +27 -0
  173. package/dist/core/query-builders/insert-query-builder.d.ts.map +1 -0
  174. package/dist/core/query-builders/insert-query-builder.js +128 -0
  175. package/dist/core/query-builders/insert-query-builder.js.map +1 -0
  176. package/dist/core/query-builders/select-query-builder.d.ts +106 -0
  177. package/dist/core/query-builders/select-query-builder.d.ts.map +1 -0
  178. package/dist/core/query-builders/select-query-builder.js +1264 -0
  179. package/dist/core/query-builders/select-query-builder.js.map +1 -0
  180. package/dist/core/query-builders/types.d.ts +37 -0
  181. package/dist/core/query-builders/types.d.ts.map +1 -0
  182. package/dist/core/query-builders/types.js +3 -0
  183. package/dist/core/query-builders/types.js.map +1 -0
  184. package/dist/core/query-builders/update-query-builder.d.ts +38 -0
  185. package/dist/core/query-builders/update-query-builder.d.ts.map +1 -0
  186. package/dist/core/query-builders/update-query-builder.js +168 -0
  187. package/dist/core/query-builders/update-query-builder.js.map +1 -0
  188. package/dist/core/query-conditions.d.ts +52 -0
  189. package/dist/core/query-conditions.d.ts.map +1 -0
  190. package/dist/core/query-conditions.js +134 -0
  191. package/dist/core/query-conditions.js.map +1 -0
  192. package/dist/core/rdf-constants.d.ts +16 -0
  193. package/dist/core/rdf-constants.d.ts.map +1 -0
  194. package/dist/core/rdf-constants.js +38 -0
  195. package/dist/core/rdf-constants.js.map +1 -0
  196. package/dist/core/rdf-schema-parser.d.ts +34 -0
  197. package/dist/core/rdf-schema-parser.d.ts.map +1 -0
  198. package/dist/core/rdf-schema-parser.js +143 -0
  199. package/dist/core/rdf-schema-parser.js.map +1 -0
  200. package/dist/core/resource-resolver/base-resolver.d.ts +29 -0
  201. package/dist/core/resource-resolver/base-resolver.d.ts.map +1 -0
  202. package/dist/core/resource-resolver/base-resolver.js +82 -0
  203. package/dist/core/resource-resolver/base-resolver.js.map +1 -0
  204. package/dist/core/resource-resolver/document-resolver.d.ts +20 -0
  205. package/dist/core/resource-resolver/document-resolver.d.ts.map +1 -0
  206. package/dist/core/resource-resolver/document-resolver.js +105 -0
  207. package/dist/core/resource-resolver/document-resolver.js.map +1 -0
  208. package/dist/core/resource-resolver/factory.d.ts +27 -0
  209. package/dist/core/resource-resolver/factory.d.ts.map +1 -0
  210. package/dist/core/resource-resolver/factory.js +58 -0
  211. package/dist/core/resource-resolver/factory.js.map +1 -0
  212. package/dist/core/resource-resolver/fragment-resolver.d.ts +20 -0
  213. package/dist/core/resource-resolver/fragment-resolver.d.ts.map +1 -0
  214. package/dist/core/resource-resolver/fragment-resolver.js +60 -0
  215. package/dist/core/resource-resolver/fragment-resolver.js.map +1 -0
  216. package/dist/core/resource-resolver/index.d.ts +11 -0
  217. package/dist/core/resource-resolver/index.d.ts.map +1 -0
  218. package/dist/core/resource-resolver/index.js +18 -0
  219. package/dist/core/resource-resolver/index.js.map +1 -0
  220. package/dist/core/resource-resolver/types.d.ts +57 -0
  221. package/dist/core/resource-resolver/types.d.ts.map +1 -0
  222. package/dist/core/resource-resolver/types.js +9 -0
  223. package/dist/core/resource-resolver/types.js.map +1 -0
  224. package/dist/core/runtime/pod-runtime.d.ts +34 -0
  225. package/dist/core/runtime/pod-runtime.d.ts.map +1 -0
  226. package/dist/core/runtime/pod-runtime.js +125 -0
  227. package/dist/core/runtime/pod-runtime.js.map +1 -0
  228. package/dist/core/schema/columns.d.ts +74 -0
  229. package/dist/core/schema/columns.d.ts.map +1 -0
  230. package/dist/core/schema/columns.js +295 -0
  231. package/dist/core/schema/columns.js.map +1 -0
  232. package/dist/core/schema/defs.d.ts +92 -0
  233. package/dist/core/schema/defs.d.ts.map +1 -0
  234. package/dist/core/schema/defs.js +43 -0
  235. package/dist/core/schema/defs.js.map +1 -0
  236. package/dist/core/schema/factories.d.ts +29 -0
  237. package/dist/core/schema/factories.d.ts.map +1 -0
  238. package/dist/core/schema/factories.js +117 -0
  239. package/dist/core/schema/factories.js.map +1 -0
  240. package/dist/core/schema/index.d.ts +9 -0
  241. package/dist/core/schema/index.d.ts.map +1 -0
  242. package/dist/core/schema/index.js +25 -0
  243. package/dist/core/schema/index.js.map +1 -0
  244. package/dist/core/schema/pod-table.d.ts +93 -0
  245. package/dist/core/schema/pod-table.d.ts.map +1 -0
  246. package/dist/core/schema/pod-table.js +294 -0
  247. package/dist/core/schema/pod-table.js.map +1 -0
  248. package/dist/core/schema/relations.d.ts +26 -0
  249. package/dist/core/schema/relations.d.ts.map +1 -0
  250. package/dist/core/schema/relations.js +36 -0
  251. package/dist/core/schema/relations.js.map +1 -0
  252. package/dist/core/schema/solid-schema.d.ts +19 -0
  253. package/dist/core/schema/solid-schema.d.ts.map +1 -0
  254. package/dist/core/schema/solid-schema.js +93 -0
  255. package/dist/core/schema/solid-schema.js.map +1 -0
  256. package/dist/core/schema/types.d.ts +45 -0
  257. package/dist/core/schema/types.d.ts.map +1 -0
  258. package/dist/core/schema/types.js +3 -0
  259. package/dist/core/schema/types.js.map +1 -0
  260. package/dist/core/schema/utils.d.ts +15 -0
  261. package/dist/core/schema/utils.d.ts.map +1 -0
  262. package/dist/core/schema/utils.js +44 -0
  263. package/dist/core/schema/utils.js.map +1 -0
  264. package/dist/core/select-plan.d.ts +45 -0
  265. package/dist/core/select-plan.d.ts.map +1 -0
  266. package/dist/core/select-plan.js +3 -0
  267. package/dist/core/select-plan.js.map +1 -0
  268. package/dist/core/services/pod-services.d.ts +41 -0
  269. package/dist/core/services/pod-services.d.ts.map +1 -0
  270. package/dist/core/services/pod-services.js +79 -0
  271. package/dist/core/services/pod-services.js.map +1 -0
  272. package/dist/core/shape/generator.d.ts +12 -0
  273. package/dist/core/shape/generator.d.ts.map +1 -0
  274. package/dist/core/shape/generator.js +109 -0
  275. package/dist/core/shape/generator.js.map +1 -0
  276. package/dist/core/shape/index.d.ts +4 -0
  277. package/dist/core/shape/index.d.ts.map +1 -0
  278. package/dist/core/shape/index.js +20 -0
  279. package/dist/core/shape/index.js.map +1 -0
  280. package/dist/core/shape/manager.d.ts +45 -0
  281. package/dist/core/shape/manager.d.ts.map +1 -0
  282. package/dist/core/shape/manager.js +393 -0
  283. package/dist/core/shape/manager.js.map +1 -0
  284. package/dist/core/shape/shacl-parser.d.ts +19 -0
  285. package/dist/core/shape/shacl-parser.d.ts.map +1 -0
  286. package/dist/core/shape/shacl-parser.js +215 -0
  287. package/dist/core/shape/shacl-parser.js.map +1 -0
  288. package/dist/core/shape/shacl.d.ts +11 -0
  289. package/dist/core/shape/shacl.d.ts.map +1 -0
  290. package/dist/core/shape/shacl.js +130 -0
  291. package/dist/core/shape/shacl.js.map +1 -0
  292. package/dist/core/shape/types.d.ts +149 -0
  293. package/dist/core/shape/types.d.ts.map +1 -0
  294. package/dist/core/shape/types.js +45 -0
  295. package/dist/core/shape/types.js.map +1 -0
  296. package/dist/core/shape/validator.d.ts +11 -0
  297. package/dist/core/shape/validator.d.ts.map +1 -0
  298. package/dist/core/shape/validator.js +232 -0
  299. package/dist/core/shape/validator.js.map +1 -0
  300. package/dist/core/solid-n3-client.d.ts +86 -0
  301. package/dist/core/solid-n3-client.d.ts.map +1 -0
  302. package/dist/core/solid-n3-client.js +279 -0
  303. package/dist/core/solid-n3-client.js.map +1 -0
  304. package/dist/core/sparql/builder/expression-builder.d.ts +42 -0
  305. package/dist/core/sparql/builder/expression-builder.d.ts.map +1 -0
  306. package/dist/core/sparql/builder/expression-builder.js +259 -0
  307. package/dist/core/sparql/builder/expression-builder.js.map +1 -0
  308. package/dist/core/sparql/builder/select-builder.d.ts +35 -0
  309. package/dist/core/sparql/builder/select-builder.d.ts.map +1 -0
  310. package/dist/core/sparql/builder/select-builder.js +446 -0
  311. package/dist/core/sparql/builder/select-builder.js.map +1 -0
  312. package/dist/core/sparql/builder/update-builder.d.ts +33 -0
  313. package/dist/core/sparql/builder/update-builder.d.ts.map +1 -0
  314. package/dist/core/sparql/builder/update-builder.js +523 -0
  315. package/dist/core/sparql/builder/update-builder.js.map +1 -0
  316. package/dist/core/sparql/helpers.d.ts +19 -0
  317. package/dist/core/sparql/helpers.d.ts.map +1 -0
  318. package/dist/core/sparql/helpers.js +172 -0
  319. package/dist/core/sparql/helpers.js.map +1 -0
  320. package/dist/core/sparql/types.d.ts +10 -0
  321. package/dist/core/sparql/types.d.ts.map +1 -0
  322. package/dist/core/sparql/types.js +3 -0
  323. package/dist/core/sparql/types.js.map +1 -0
  324. package/dist/core/sparql-executor.d.ts +34 -0
  325. package/dist/core/sparql-executor.d.ts.map +1 -0
  326. package/dist/core/sparql-executor.js +712 -0
  327. package/dist/core/sparql-executor.js.map +1 -0
  328. package/dist/core/subject/index.d.ts +29 -0
  329. package/dist/core/subject/index.d.ts.map +1 -0
  330. package/dist/core/subject/index.js +51 -0
  331. package/dist/core/subject/index.js.map +1 -0
  332. package/dist/core/subject/resolver.d.ts +92 -0
  333. package/dist/core/subject/resolver.d.ts.map +1 -0
  334. package/dist/core/subject/resolver.js +359 -0
  335. package/dist/core/subject/resolver.js.map +1 -0
  336. package/dist/core/subject/types.d.ts +90 -0
  337. package/dist/core/subject/types.d.ts.map +1 -0
  338. package/dist/core/subject/types.js +8 -0
  339. package/dist/core/subject/types.js.map +1 -0
  340. package/dist/core/triple/builder.d.ts +86 -0
  341. package/dist/core/triple/builder.d.ts.map +1 -0
  342. package/dist/core/triple/builder.js +304 -0
  343. package/dist/core/triple/builder.js.map +1 -0
  344. package/dist/core/triple/handlers/array.d.ts +23 -0
  345. package/dist/core/triple/handlers/array.d.ts.map +1 -0
  346. package/dist/core/triple/handlers/array.js +119 -0
  347. package/dist/core/triple/handlers/array.js.map +1 -0
  348. package/dist/core/triple/handlers/default.d.ts +20 -0
  349. package/dist/core/triple/handlers/default.d.ts.map +1 -0
  350. package/dist/core/triple/handlers/default.js +96 -0
  351. package/dist/core/triple/handlers/default.js.map +1 -0
  352. package/dist/core/triple/handlers/index.d.ts +35 -0
  353. package/dist/core/triple/handlers/index.d.ts.map +1 -0
  354. package/dist/core/triple/handlers/index.js +67 -0
  355. package/dist/core/triple/handlers/index.js.map +1 -0
  356. package/dist/core/triple/handlers/inline.d.ts +35 -0
  357. package/dist/core/triple/handlers/inline.d.ts.map +1 -0
  358. package/dist/core/triple/handlers/inline.js +190 -0
  359. package/dist/core/triple/handlers/inline.js.map +1 -0
  360. package/dist/core/triple/handlers/inverse.d.ts +22 -0
  361. package/dist/core/triple/handlers/inverse.d.ts.map +1 -0
  362. package/dist/core/triple/handlers/inverse.js +68 -0
  363. package/dist/core/triple/handlers/inverse.js.map +1 -0
  364. package/dist/core/triple/handlers/uri.d.ts +28 -0
  365. package/dist/core/triple/handlers/uri.d.ts.map +1 -0
  366. package/dist/core/triple/handlers/uri.js +66 -0
  367. package/dist/core/triple/handlers/uri.js.map +1 -0
  368. package/dist/core/triple/index.d.ts +9 -0
  369. package/dist/core/triple/index.d.ts.map +1 -0
  370. package/dist/core/triple/index.js +21 -0
  371. package/dist/core/triple/index.js.map +1 -0
  372. package/dist/core/triple/types.d.ts +152 -0
  373. package/dist/core/triple/types.d.ts.map +1 -0
  374. package/dist/core/triple/types.js +8 -0
  375. package/dist/core/triple/types.js.map +1 -0
  376. package/dist/core/typeindex-manager.d.ts +124 -0
  377. package/dist/core/typeindex-manager.d.ts.map +1 -0
  378. package/dist/core/typeindex-manager.js +662 -0
  379. package/dist/core/typeindex-manager.js.map +1 -0
  380. package/dist/core/types.d.ts +57 -0
  381. package/dist/core/types.d.ts.map +1 -0
  382. package/dist/core/types.js +4 -0
  383. package/dist/core/types.js.map +1 -0
  384. package/dist/core/uri/index.d.ts +8 -0
  385. package/dist/core/uri/index.d.ts.map +1 -0
  386. package/dist/core/uri/index.js +12 -0
  387. package/dist/core/uri/index.js.map +1 -0
  388. package/dist/core/uri/resolver.d.ts +79 -0
  389. package/dist/core/uri/resolver.d.ts.map +1 -0
  390. package/dist/core/uri/resolver.js +458 -0
  391. package/dist/core/uri/resolver.js.map +1 -0
  392. package/dist/core/uri/types.d.ts +143 -0
  393. package/dist/core/uri/types.d.ts.map +1 -0
  394. package/dist/core/uri/types.js +8 -0
  395. package/dist/core/uri/types.js.map +1 -0
  396. package/dist/core/utils/origin-auth.d.ts +28 -0
  397. package/dist/core/utils/origin-auth.d.ts.map +1 -0
  398. package/dist/core/utils/origin-auth.js +46 -0
  399. package/dist/core/utils/origin-auth.js.map +1 -0
  400. package/dist/core/utils/pod-root.d.ts +15 -0
  401. package/dist/core/utils/pod-root.d.ts.map +1 -0
  402. package/dist/core/utils/pod-root.js +72 -0
  403. package/dist/core/utils/pod-root.js.map +1 -0
  404. package/dist/core/zod-integration.d.ts +95 -0
  405. package/dist/core/zod-integration.d.ts.map +1 -0
  406. package/dist/core/zod-integration.js +236 -0
  407. package/dist/core/zod-integration.js.map +1 -0
  408. package/dist/driver.d.ts +23 -0
  409. package/dist/driver.d.ts.map +1 -0
  410. package/dist/driver.js +34 -0
  411. package/dist/driver.js.map +1 -0
  412. package/dist/esm/core/aggregates.d.ts +19 -0
  413. package/dist/esm/core/aggregates.d.ts.map +1 -0
  414. package/dist/esm/core/aggregates.js +43 -0
  415. package/dist/esm/core/aggregates.js.map +1 -0
  416. package/dist/esm/core/ast-to-sparql.d.ts +62 -0
  417. package/dist/esm/core/ast-to-sparql.d.ts.map +1 -0
  418. package/dist/esm/core/ast-to-sparql.js +103 -0
  419. package/dist/esm/core/ast-to-sparql.js.map +1 -0
  420. package/dist/esm/core/compile-time-types.d.ts +37 -0
  421. package/dist/esm/core/compile-time-types.d.ts.map +1 -0
  422. package/dist/esm/core/compile-time-types.js +64 -0
  423. package/dist/esm/core/compile-time-types.js.map +1 -0
  424. package/dist/esm/core/comunica-patch.d.ts +7 -0
  425. package/dist/esm/core/comunica-patch.d.ts.map +1 -0
  426. package/dist/esm/core/comunica-patch.js +76 -0
  427. package/dist/esm/core/comunica-patch.js.map +1 -0
  428. package/dist/esm/core/conflict-resolution.d.ts +110 -0
  429. package/dist/esm/core/conflict-resolution.d.ts.map +1 -0
  430. package/dist/esm/core/conflict-resolution.js +245 -0
  431. package/dist/esm/core/conflict-resolution.js.map +1 -0
  432. package/dist/esm/core/discovery/composite-discovery.d.ts +18 -0
  433. package/dist/esm/core/discovery/composite-discovery.d.ts.map +1 -0
  434. package/dist/esm/core/discovery/composite-discovery.js +114 -0
  435. package/dist/esm/core/discovery/composite-discovery.js.map +1 -0
  436. package/dist/esm/core/discovery/index.d.ts +7 -0
  437. package/dist/esm/core/discovery/index.d.ts.map +1 -0
  438. package/dist/esm/core/discovery/index.js +7 -0
  439. package/dist/esm/core/discovery/index.js.map +1 -0
  440. package/dist/esm/core/discovery/interop-discovery.d.ts +36 -0
  441. package/dist/esm/core/discovery/interop-discovery.d.ts.map +1 -0
  442. package/dist/esm/core/discovery/interop-discovery.js +642 -0
  443. package/dist/esm/core/discovery/interop-discovery.js.map +1 -0
  444. package/dist/esm/core/discovery/interop-tables.d.ts +37 -0
  445. package/dist/esm/core/discovery/interop-tables.d.ts.map +1 -0
  446. package/dist/esm/core/discovery/interop-tables.js +65 -0
  447. package/dist/esm/core/discovery/interop-tables.js.map +1 -0
  448. package/dist/esm/core/discovery/interop-types.d.ts +36 -0
  449. package/dist/esm/core/discovery/interop-types.d.ts.map +1 -0
  450. package/dist/esm/core/discovery/interop-types.js +39 -0
  451. package/dist/esm/core/discovery/interop-types.js.map +1 -0
  452. package/dist/esm/core/discovery/provider-cache.d.ts +99 -0
  453. package/dist/esm/core/discovery/provider-cache.d.ts.map +1 -0
  454. package/dist/esm/core/discovery/provider-cache.js +292 -0
  455. package/dist/esm/core/discovery/provider-cache.js.map +1 -0
  456. package/dist/esm/core/discovery/typeindex-discovery.d.ts +30 -0
  457. package/dist/esm/core/discovery/typeindex-discovery.d.ts.map +1 -0
  458. package/dist/esm/core/discovery/typeindex-discovery.js +132 -0
  459. package/dist/esm/core/discovery/typeindex-discovery.js.map +1 -0
  460. package/dist/esm/core/discovery/types.d.ts +128 -0
  461. package/dist/esm/core/discovery/types.d.ts.map +1 -0
  462. package/dist/esm/core/discovery/types.js +2 -0
  463. package/dist/esm/core/discovery/types.js.map +1 -0
  464. package/dist/esm/core/execution/index.d.ts +14 -0
  465. package/dist/esm/core/execution/index.d.ts.map +1 -0
  466. package/dist/esm/core/execution/index.js +13 -0
  467. package/dist/esm/core/execution/index.js.map +1 -0
  468. package/dist/esm/core/execution/ldp-executor.d.ts +66 -0
  469. package/dist/esm/core/execution/ldp-executor.d.ts.map +1 -0
  470. package/dist/esm/core/execution/ldp-executor.js +580 -0
  471. package/dist/esm/core/execution/ldp-executor.js.map +1 -0
  472. package/dist/esm/core/execution/ldp-strategy.d.ts +53 -0
  473. package/dist/esm/core/execution/ldp-strategy.d.ts.map +1 -0
  474. package/dist/esm/core/execution/ldp-strategy.js +100 -0
  475. package/dist/esm/core/execution/ldp-strategy.js.map +1 -0
  476. package/dist/esm/core/execution/pod-executor-types.d.ts +9 -0
  477. package/dist/esm/core/execution/pod-executor-types.d.ts.map +1 -0
  478. package/dist/esm/core/execution/pod-executor-types.js +2 -0
  479. package/dist/esm/core/execution/pod-executor-types.js.map +1 -0
  480. package/dist/esm/core/execution/pod-executor.d.ts +59 -0
  481. package/dist/esm/core/execution/pod-executor.d.ts.map +1 -0
  482. package/dist/esm/core/execution/pod-executor.js +217 -0
  483. package/dist/esm/core/execution/pod-executor.js.map +1 -0
  484. package/dist/esm/core/execution/sparql-strategy.d.ts +80 -0
  485. package/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -0
  486. package/dist/esm/core/execution/sparql-strategy.js +269 -0
  487. package/dist/esm/core/execution/sparql-strategy.js.map +1 -0
  488. package/dist/esm/core/execution/strategy-factory.d.ts +54 -0
  489. package/dist/esm/core/execution/strategy-factory.d.ts.map +1 -0
  490. package/dist/esm/core/execution/strategy-factory.js +74 -0
  491. package/dist/esm/core/execution/strategy-factory.js.map +1 -0
  492. package/dist/esm/core/execution/types.d.ts +80 -0
  493. package/dist/esm/core/execution/types.d.ts.map +1 -0
  494. package/dist/esm/core/execution/types.js +7 -0
  495. package/dist/esm/core/execution/types.js.map +1 -0
  496. package/dist/esm/core/expressions.d.ts +35 -0
  497. package/dist/esm/core/expressions.d.ts.map +1 -0
  498. package/dist/esm/core/expressions.js +45 -0
  499. package/dist/esm/core/expressions.js.map +1 -0
  500. package/dist/esm/core/federated/executor.d.ts +95 -0
  501. package/dist/esm/core/federated/executor.d.ts.map +1 -0
  502. package/dist/esm/core/federated/executor.js +421 -0
  503. package/dist/esm/core/federated/executor.js.map +1 -0
  504. package/dist/esm/core/federated/index.d.ts +3 -0
  505. package/dist/esm/core/federated/index.d.ts.map +1 -0
  506. package/dist/esm/core/federated/index.js +3 -0
  507. package/dist/esm/core/federated/index.js.map +1 -0
  508. package/dist/esm/core/federated/types.d.ts +69 -0
  509. package/dist/esm/core/federated/types.d.ts.map +1 -0
  510. package/dist/esm/core/federated/types.js +7 -0
  511. package/dist/esm/core/federated/types.js.map +1 -0
  512. package/dist/esm/core/notifications/channels/base-channel.d.ts +29 -0
  513. package/dist/esm/core/notifications/channels/base-channel.d.ts.map +1 -0
  514. package/dist/esm/core/notifications/channels/base-channel.js +58 -0
  515. package/dist/esm/core/notifications/channels/base-channel.js.map +1 -0
  516. package/dist/esm/core/notifications/channels/index.d.ts +4 -0
  517. package/dist/esm/core/notifications/channels/index.d.ts.map +1 -0
  518. package/dist/esm/core/notifications/channels/index.js +4 -0
  519. package/dist/esm/core/notifications/channels/index.js.map +1 -0
  520. package/dist/esm/core/notifications/channels/sse-channel.d.ts +50 -0
  521. package/dist/esm/core/notifications/channels/sse-channel.d.ts.map +1 -0
  522. package/dist/esm/core/notifications/channels/sse-channel.js +206 -0
  523. package/dist/esm/core/notifications/channels/sse-channel.js.map +1 -0
  524. package/dist/esm/core/notifications/channels/websocket-channel.d.ts +16 -0
  525. package/dist/esm/core/notifications/channels/websocket-channel.d.ts.map +1 -0
  526. package/dist/esm/core/notifications/channels/websocket-channel.js +83 -0
  527. package/dist/esm/core/notifications/channels/websocket-channel.js.map +1 -0
  528. package/dist/esm/core/notifications/index.d.ts +3 -0
  529. package/dist/esm/core/notifications/index.d.ts.map +1 -0
  530. package/dist/esm/core/notifications/index.js +2 -0
  531. package/dist/esm/core/notifications/index.js.map +1 -0
  532. package/dist/esm/core/notifications/notifications-client.d.ts +87 -0
  533. package/dist/esm/core/notifications/notifications-client.d.ts.map +1 -0
  534. package/dist/esm/core/notifications/notifications-client.js +456 -0
  535. package/dist/esm/core/notifications/notifications-client.js.map +1 -0
  536. package/dist/esm/core/notifications/types.d.ts +228 -0
  537. package/dist/esm/core/notifications/types.d.ts.map +1 -0
  538. package/dist/esm/core/notifications/types.js +6 -0
  539. package/dist/esm/core/notifications/types.js.map +1 -0
  540. package/dist/esm/core/pod-database.d.ts +383 -0
  541. package/dist/esm/core/pod-database.d.ts.map +1 -0
  542. package/dist/esm/core/pod-database.js +1175 -0
  543. package/dist/esm/core/pod-database.js.map +1 -0
  544. package/dist/esm/core/pod-dialect.d.ts +294 -0
  545. package/dist/esm/core/pod-dialect.d.ts.map +1 -0
  546. package/dist/esm/core/pod-dialect.js +1296 -0
  547. package/dist/esm/core/pod-dialect.js.map +1 -0
  548. package/dist/esm/core/pod-discovery.d.ts +20 -0
  549. package/dist/esm/core/pod-discovery.d.ts.map +1 -0
  550. package/dist/esm/core/pod-discovery.js +109 -0
  551. package/dist/esm/core/pod-discovery.js.map +1 -0
  552. package/dist/esm/core/pod-session.d.ts +44 -0
  553. package/dist/esm/core/pod-session.d.ts.map +1 -0
  554. package/dist/esm/core/pod-session.js +109 -0
  555. package/dist/esm/core/pod-session.js.map +1 -0
  556. package/dist/esm/core/pod-table.d.ts +710 -0
  557. package/dist/esm/core/pod-table.d.ts.map +1 -0
  558. package/dist/esm/core/pod-table.js +1249 -0
  559. package/dist/esm/core/pod-table.js.map +1 -0
  560. package/dist/esm/core/profile-manager.d.ts +90 -0
  561. package/dist/esm/core/profile-manager.d.ts.map +1 -0
  562. package/dist/esm/core/profile-manager.js +164 -0
  563. package/dist/esm/core/profile-manager.js.map +1 -0
  564. package/dist/esm/core/publish-manager.d.ts +90 -0
  565. package/dist/esm/core/publish-manager.d.ts.map +1 -0
  566. package/dist/esm/core/publish-manager.js +143 -0
  567. package/dist/esm/core/publish-manager.js.map +1 -0
  568. package/dist/esm/core/query-builders/delete-query-builder.d.ts +36 -0
  569. package/dist/esm/core/query-builders/delete-query-builder.d.ts.map +1 -0
  570. package/dist/esm/core/query-builders/delete-query-builder.js +140 -0
  571. package/dist/esm/core/query-builders/delete-query-builder.js.map +1 -0
  572. package/dist/esm/core/query-builders/helpers.d.ts +4 -0
  573. package/dist/esm/core/query-builders/helpers.d.ts.map +1 -0
  574. package/dist/esm/core/query-builders/helpers.js +26 -0
  575. package/dist/esm/core/query-builders/helpers.js.map +1 -0
  576. package/dist/esm/core/query-builders/index.d.ts +6 -0
  577. package/dist/esm/core/query-builders/index.d.ts.map +1 -0
  578. package/dist/esm/core/query-builders/index.js +5 -0
  579. package/dist/esm/core/query-builders/index.js.map +1 -0
  580. package/dist/esm/core/query-builders/insert-query-builder.d.ts +27 -0
  581. package/dist/esm/core/query-builders/insert-query-builder.d.ts.map +1 -0
  582. package/dist/esm/core/query-builders/insert-query-builder.js +124 -0
  583. package/dist/esm/core/query-builders/insert-query-builder.js.map +1 -0
  584. package/dist/esm/core/query-builders/select-query-builder.d.ts +106 -0
  585. package/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -0
  586. package/dist/esm/core/query-builders/select-query-builder.js +1260 -0
  587. package/dist/esm/core/query-builders/select-query-builder.js.map +1 -0
  588. package/dist/esm/core/query-builders/types.d.ts +37 -0
  589. package/dist/esm/core/query-builders/types.d.ts.map +1 -0
  590. package/dist/esm/core/query-builders/types.js +2 -0
  591. package/dist/esm/core/query-builders/types.js.map +1 -0
  592. package/dist/esm/core/query-builders/update-query-builder.d.ts +38 -0
  593. package/dist/esm/core/query-builders/update-query-builder.d.ts.map +1 -0
  594. package/dist/esm/core/query-builders/update-query-builder.js +164 -0
  595. package/dist/esm/core/query-builders/update-query-builder.js.map +1 -0
  596. package/dist/esm/core/query-conditions.d.ts +52 -0
  597. package/dist/esm/core/query-conditions.d.ts.map +1 -0
  598. package/dist/esm/core/query-conditions.js +111 -0
  599. package/dist/esm/core/query-conditions.js.map +1 -0
  600. package/dist/esm/core/rdf-constants.d.ts +16 -0
  601. package/dist/esm/core/rdf-constants.d.ts.map +1 -0
  602. package/dist/esm/core/rdf-constants.js +32 -0
  603. package/dist/esm/core/rdf-constants.js.map +1 -0
  604. package/dist/esm/core/rdf-schema-parser.d.ts +34 -0
  605. package/dist/esm/core/rdf-schema-parser.d.ts.map +1 -0
  606. package/dist/esm/core/rdf-schema-parser.js +136 -0
  607. package/dist/esm/core/rdf-schema-parser.js.map +1 -0
  608. package/dist/esm/core/resource-resolver/base-resolver.d.ts +29 -0
  609. package/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -0
  610. package/dist/esm/core/resource-resolver/base-resolver.js +78 -0
  611. package/dist/esm/core/resource-resolver/base-resolver.js.map +1 -0
  612. package/dist/esm/core/resource-resolver/document-resolver.d.ts +20 -0
  613. package/dist/esm/core/resource-resolver/document-resolver.d.ts.map +1 -0
  614. package/dist/esm/core/resource-resolver/document-resolver.js +101 -0
  615. package/dist/esm/core/resource-resolver/document-resolver.js.map +1 -0
  616. package/dist/esm/core/resource-resolver/factory.d.ts +27 -0
  617. package/dist/esm/core/resource-resolver/factory.d.ts.map +1 -0
  618. package/dist/esm/core/resource-resolver/factory.js +53 -0
  619. package/dist/esm/core/resource-resolver/factory.js.map +1 -0
  620. package/dist/esm/core/resource-resolver/fragment-resolver.d.ts +20 -0
  621. package/dist/esm/core/resource-resolver/fragment-resolver.d.ts.map +1 -0
  622. package/dist/esm/core/resource-resolver/fragment-resolver.js +56 -0
  623. package/dist/esm/core/resource-resolver/fragment-resolver.js.map +1 -0
  624. package/dist/esm/core/resource-resolver/index.d.ts +11 -0
  625. package/dist/esm/core/resource-resolver/index.d.ts.map +1 -0
  626. package/dist/esm/core/resource-resolver/index.js +10 -0
  627. package/dist/esm/core/resource-resolver/index.js.map +1 -0
  628. package/dist/esm/core/resource-resolver/types.d.ts +57 -0
  629. package/dist/esm/core/resource-resolver/types.d.ts.map +1 -0
  630. package/dist/esm/core/resource-resolver/types.js +8 -0
  631. package/dist/esm/core/resource-resolver/types.js.map +1 -0
  632. package/dist/esm/core/runtime/pod-runtime.d.ts +34 -0
  633. package/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -0
  634. package/dist/esm/core/runtime/pod-runtime.js +121 -0
  635. package/dist/esm/core/runtime/pod-runtime.js.map +1 -0
  636. package/dist/esm/core/schema/columns.d.ts +74 -0
  637. package/dist/esm/core/schema/columns.d.ts.map +1 -0
  638. package/dist/esm/core/schema/columns.js +282 -0
  639. package/dist/esm/core/schema/columns.js.map +1 -0
  640. package/dist/esm/core/schema/defs.d.ts +92 -0
  641. package/dist/esm/core/schema/defs.d.ts.map +1 -0
  642. package/dist/esm/core/schema/defs.js +36 -0
  643. package/dist/esm/core/schema/defs.js.map +1 -0
  644. package/dist/esm/core/schema/factories.d.ts +29 -0
  645. package/dist/esm/core/schema/factories.d.ts.map +1 -0
  646. package/dist/esm/core/schema/factories.js +89 -0
  647. package/dist/esm/core/schema/factories.js.map +1 -0
  648. package/dist/esm/core/schema/index.d.ts +9 -0
  649. package/dist/esm/core/schema/index.d.ts.map +1 -0
  650. package/dist/esm/core/schema/index.js +9 -0
  651. package/dist/esm/core/schema/index.js.map +1 -0
  652. package/dist/esm/core/schema/pod-table.d.ts +93 -0
  653. package/dist/esm/core/schema/pod-table.d.ts.map +1 -0
  654. package/dist/esm/core/schema/pod-table.js +289 -0
  655. package/dist/esm/core/schema/pod-table.js.map +1 -0
  656. package/dist/esm/core/schema/relations.d.ts +26 -0
  657. package/dist/esm/core/schema/relations.d.ts.map +1 -0
  658. package/dist/esm/core/schema/relations.js +33 -0
  659. package/dist/esm/core/schema/relations.js.map +1 -0
  660. package/dist/esm/core/schema/solid-schema.d.ts +19 -0
  661. package/dist/esm/core/schema/solid-schema.d.ts.map +1 -0
  662. package/dist/esm/core/schema/solid-schema.js +87 -0
  663. package/dist/esm/core/schema/solid-schema.js.map +1 -0
  664. package/dist/esm/core/schema/types.d.ts +45 -0
  665. package/dist/esm/core/schema/types.d.ts.map +1 -0
  666. package/dist/esm/core/schema/types.js +2 -0
  667. package/dist/esm/core/schema/types.js.map +1 -0
  668. package/dist/esm/core/schema/utils.d.ts +15 -0
  669. package/dist/esm/core/schema/utils.d.ts.map +1 -0
  670. package/dist/esm/core/schema/utils.js +40 -0
  671. package/dist/esm/core/schema/utils.js.map +1 -0
  672. package/dist/esm/core/select-plan.d.ts +45 -0
  673. package/dist/esm/core/select-plan.d.ts.map +1 -0
  674. package/dist/esm/core/select-plan.js +2 -0
  675. package/dist/esm/core/select-plan.js.map +1 -0
  676. package/dist/esm/core/services/pod-services.d.ts +41 -0
  677. package/dist/esm/core/services/pod-services.d.ts.map +1 -0
  678. package/dist/esm/core/services/pod-services.js +75 -0
  679. package/dist/esm/core/services/pod-services.js.map +1 -0
  680. package/dist/esm/core/shape/generator.d.ts +12 -0
  681. package/dist/esm/core/shape/generator.d.ts.map +1 -0
  682. package/dist/esm/core/shape/generator.js +106 -0
  683. package/dist/esm/core/shape/generator.js.map +1 -0
  684. package/dist/esm/core/shape/index.d.ts +4 -0
  685. package/dist/esm/core/shape/index.d.ts.map +1 -0
  686. package/dist/esm/core/shape/index.js +4 -0
  687. package/dist/esm/core/shape/index.js.map +1 -0
  688. package/dist/esm/core/shape/manager.d.ts +45 -0
  689. package/dist/esm/core/shape/manager.d.ts.map +1 -0
  690. package/dist/esm/core/shape/manager.js +389 -0
  691. package/dist/esm/core/shape/manager.js.map +1 -0
  692. package/dist/esm/core/shape/shacl-parser.d.ts +19 -0
  693. package/dist/esm/core/shape/shacl-parser.d.ts.map +1 -0
  694. package/dist/esm/core/shape/shacl-parser.js +210 -0
  695. package/dist/esm/core/shape/shacl-parser.js.map +1 -0
  696. package/dist/esm/core/shape/shacl.d.ts +11 -0
  697. package/dist/esm/core/shape/shacl.d.ts.map +1 -0
  698. package/dist/esm/core/shape/shacl.js +127 -0
  699. package/dist/esm/core/shape/shacl.js.map +1 -0
  700. package/dist/esm/core/shape/types.d.ts +149 -0
  701. package/dist/esm/core/shape/types.d.ts.map +1 -0
  702. package/dist/esm/core/shape/types.js +42 -0
  703. package/dist/esm/core/shape/types.js.map +1 -0
  704. package/dist/esm/core/shape/validator.d.ts +11 -0
  705. package/dist/esm/core/shape/validator.d.ts.map +1 -0
  706. package/dist/esm/core/shape/validator.js +229 -0
  707. package/dist/esm/core/shape/validator.js.map +1 -0
  708. package/dist/esm/core/solid-n3-client.d.ts +86 -0
  709. package/dist/esm/core/solid-n3-client.d.ts.map +1 -0
  710. package/dist/esm/core/solid-n3-client.js +275 -0
  711. package/dist/esm/core/solid-n3-client.js.map +1 -0
  712. package/dist/esm/core/sparql/builder/expression-builder.d.ts +42 -0
  713. package/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -0
  714. package/dist/esm/core/sparql/builder/expression-builder.js +255 -0
  715. package/dist/esm/core/sparql/builder/expression-builder.js.map +1 -0
  716. package/dist/esm/core/sparql/builder/select-builder.d.ts +35 -0
  717. package/dist/esm/core/sparql/builder/select-builder.d.ts.map +1 -0
  718. package/dist/esm/core/sparql/builder/select-builder.js +409 -0
  719. package/dist/esm/core/sparql/builder/select-builder.js.map +1 -0
  720. package/dist/esm/core/sparql/builder/update-builder.d.ts +33 -0
  721. package/dist/esm/core/sparql/builder/update-builder.d.ts.map +1 -0
  722. package/dist/esm/core/sparql/builder/update-builder.js +486 -0
  723. package/dist/esm/core/sparql/builder/update-builder.js.map +1 -0
  724. package/dist/esm/core/sparql/helpers.d.ts +19 -0
  725. package/dist/esm/core/sparql/helpers.d.ts.map +1 -0
  726. package/dist/esm/core/sparql/helpers.js +165 -0
  727. package/dist/esm/core/sparql/helpers.js.map +1 -0
  728. package/dist/esm/core/sparql/types.d.ts +10 -0
  729. package/dist/esm/core/sparql/types.d.ts.map +1 -0
  730. package/dist/esm/core/sparql/types.js +2 -0
  731. package/dist/esm/core/sparql/types.js.map +1 -0
  732. package/dist/esm/core/sparql-executor.d.ts +34 -0
  733. package/dist/esm/core/sparql-executor.d.ts.map +1 -0
  734. package/dist/esm/core/sparql-executor.js +708 -0
  735. package/dist/esm/core/sparql-executor.js.map +1 -0
  736. package/dist/esm/core/subject/index.d.ts +29 -0
  737. package/dist/esm/core/subject/index.d.ts.map +1 -0
  738. package/dist/esm/core/subject/index.js +49 -0
  739. package/dist/esm/core/subject/index.js.map +1 -0
  740. package/dist/esm/core/subject/resolver.d.ts +92 -0
  741. package/dist/esm/core/subject/resolver.d.ts.map +1 -0
  742. package/dist/esm/core/subject/resolver.js +355 -0
  743. package/dist/esm/core/subject/resolver.js.map +1 -0
  744. package/dist/esm/core/subject/types.d.ts +90 -0
  745. package/dist/esm/core/subject/types.d.ts.map +1 -0
  746. package/dist/esm/core/subject/types.js +7 -0
  747. package/dist/esm/core/subject/types.js.map +1 -0
  748. package/dist/esm/core/triple/builder.d.ts +86 -0
  749. package/dist/esm/core/triple/builder.d.ts.map +1 -0
  750. package/dist/esm/core/triple/builder.js +300 -0
  751. package/dist/esm/core/triple/builder.js.map +1 -0
  752. package/dist/esm/core/triple/handlers/array.d.ts +23 -0
  753. package/dist/esm/core/triple/handlers/array.d.ts.map +1 -0
  754. package/dist/esm/core/triple/handlers/array.js +115 -0
  755. package/dist/esm/core/triple/handlers/array.js.map +1 -0
  756. package/dist/esm/core/triple/handlers/default.d.ts +20 -0
  757. package/dist/esm/core/triple/handlers/default.d.ts.map +1 -0
  758. package/dist/esm/core/triple/handlers/default.js +92 -0
  759. package/dist/esm/core/triple/handlers/default.js.map +1 -0
  760. package/dist/esm/core/triple/handlers/index.d.ts +35 -0
  761. package/dist/esm/core/triple/handlers/index.d.ts.map +1 -0
  762. package/dist/esm/core/triple/handlers/index.js +59 -0
  763. package/dist/esm/core/triple/handlers/index.js.map +1 -0
  764. package/dist/esm/core/triple/handlers/inline.d.ts +35 -0
  765. package/dist/esm/core/triple/handlers/inline.d.ts.map +1 -0
  766. package/dist/esm/core/triple/handlers/inline.js +186 -0
  767. package/dist/esm/core/triple/handlers/inline.js.map +1 -0
  768. package/dist/esm/core/triple/handlers/inverse.d.ts +22 -0
  769. package/dist/esm/core/triple/handlers/inverse.d.ts.map +1 -0
  770. package/dist/esm/core/triple/handlers/inverse.js +64 -0
  771. package/dist/esm/core/triple/handlers/inverse.js.map +1 -0
  772. package/dist/esm/core/triple/handlers/uri.d.ts +28 -0
  773. package/dist/esm/core/triple/handlers/uri.d.ts.map +1 -0
  774. package/dist/esm/core/triple/handlers/uri.js +62 -0
  775. package/dist/esm/core/triple/handlers/uri.js.map +1 -0
  776. package/dist/esm/core/triple/index.d.ts +9 -0
  777. package/dist/esm/core/triple/index.d.ts.map +1 -0
  778. package/dist/esm/core/triple/index.js +10 -0
  779. package/dist/esm/core/triple/index.js.map +1 -0
  780. package/dist/esm/core/triple/types.d.ts +152 -0
  781. package/dist/esm/core/triple/types.d.ts.map +1 -0
  782. package/dist/esm/core/triple/types.js +7 -0
  783. package/dist/esm/core/triple/types.js.map +1 -0
  784. package/dist/esm/core/typeindex-manager.d.ts +124 -0
  785. package/dist/esm/core/typeindex-manager.d.ts.map +1 -0
  786. package/dist/esm/core/typeindex-manager.js +658 -0
  787. package/dist/esm/core/typeindex-manager.js.map +1 -0
  788. package/dist/esm/core/types.d.ts +57 -0
  789. package/dist/esm/core/types.d.ts.map +1 -0
  790. package/dist/esm/core/types.js +3 -0
  791. package/dist/esm/core/types.js.map +1 -0
  792. package/dist/esm/core/uri/index.d.ts +8 -0
  793. package/dist/esm/core/uri/index.d.ts.map +1 -0
  794. package/dist/esm/core/uri/index.js +8 -0
  795. package/dist/esm/core/uri/index.js.map +1 -0
  796. package/dist/esm/core/uri/resolver.d.ts +79 -0
  797. package/dist/esm/core/uri/resolver.d.ts.map +1 -0
  798. package/dist/esm/core/uri/resolver.js +454 -0
  799. package/dist/esm/core/uri/resolver.js.map +1 -0
  800. package/dist/esm/core/uri/types.d.ts +143 -0
  801. package/dist/esm/core/uri/types.d.ts.map +1 -0
  802. package/dist/esm/core/uri/types.js +7 -0
  803. package/dist/esm/core/uri/types.js.map +1 -0
  804. package/dist/esm/core/utils/origin-auth.d.ts +28 -0
  805. package/dist/esm/core/utils/origin-auth.d.ts.map +1 -0
  806. package/dist/esm/core/utils/origin-auth.js +42 -0
  807. package/dist/esm/core/utils/origin-auth.js.map +1 -0
  808. package/dist/esm/core/utils/pod-root.d.ts +15 -0
  809. package/dist/esm/core/utils/pod-root.d.ts.map +1 -0
  810. package/dist/esm/core/utils/pod-root.js +69 -0
  811. package/dist/esm/core/utils/pod-root.js.map +1 -0
  812. package/dist/esm/core/zod-integration.d.ts +95 -0
  813. package/dist/esm/core/zod-integration.d.ts.map +1 -0
  814. package/dist/esm/core/zod-integration.js +227 -0
  815. package/dist/esm/core/zod-integration.js.map +1 -0
  816. package/dist/esm/driver.d.ts +23 -0
  817. package/dist/esm/driver.d.ts.map +1 -0
  818. package/dist/esm/driver.js +30 -0
  819. package/dist/esm/driver.js.map +1 -0
  820. package/dist/esm/index.d.ts +23 -0
  821. package/dist/esm/index.d.ts.map +1 -0
  822. package/dist/esm/index.js +44 -0
  823. package/dist/esm/index.js.map +1 -0
  824. package/dist/esm/solid.d.ts +21 -0
  825. package/dist/esm/solid.d.ts.map +1 -0
  826. package/dist/esm/solid.js +30 -0
  827. package/dist/esm/solid.js.map +1 -0
  828. package/dist/esm/test-utils/real-test-helpers.d.ts +5 -0
  829. package/dist/esm/test-utils/real-test-helpers.d.ts.map +1 -0
  830. package/dist/esm/test-utils/real-test-helpers.js +17 -0
  831. package/dist/esm/test-utils/real-test-helpers.js.map +1 -0
  832. package/dist/esm/types/sparql-types.d.ts +27 -0
  833. package/dist/esm/types/sparql-types.d.ts.map +1 -0
  834. package/dist/esm/types/sparql-types.js +3 -0
  835. package/dist/esm/types/sparql-types.js.map +1 -0
  836. package/dist/esm/utils/find-by-iri.d.ts +9 -0
  837. package/dist/esm/utils/find-by-iri.d.ts.map +1 -0
  838. package/dist/esm/utils/find-by-iri.js +22 -0
  839. package/dist/esm/utils/find-by-iri.js.map +1 -0
  840. package/dist/esm/utils/helpers.d.ts +17 -0
  841. package/dist/esm/utils/helpers.d.ts.map +1 -0
  842. package/dist/esm/utils/helpers.js +59 -0
  843. package/dist/esm/utils/helpers.js.map +1 -0
  844. package/dist/esm/utils/namespace.d.ts +4 -0
  845. package/dist/esm/utils/namespace.d.ts.map +1 -0
  846. package/dist/esm/utils/namespace.js +30 -0
  847. package/dist/esm/utils/namespace.js.map +1 -0
  848. package/dist/esm/utils/rdf-helpers.d.ts +17 -0
  849. package/dist/esm/utils/rdf-helpers.d.ts.map +1 -0
  850. package/dist/esm/utils/rdf-helpers.js +47 -0
  851. package/dist/esm/utils/rdf-helpers.js.map +1 -0
  852. package/dist/esm/utils/rdf-validation.d.ts +25 -0
  853. package/dist/esm/utils/rdf-validation.d.ts.map +1 -0
  854. package/dist/esm/utils/rdf-validation.js +288 -0
  855. package/dist/esm/utils/rdf-validation.js.map +1 -0
  856. package/dist/esm/utils/thing-operations.d.ts +28 -0
  857. package/dist/esm/utils/thing-operations.d.ts.map +1 -0
  858. package/dist/esm/utils/thing-operations.js +249 -0
  859. package/dist/esm/utils/thing-operations.js.map +1 -0
  860. package/dist/index.d.ts +23 -0
  861. package/dist/index.d.ts.map +1 -0
  862. package/dist/index.js +156 -0
  863. package/dist/index.js.map +1 -0
  864. package/dist/solid.d.ts +21 -0
  865. package/dist/solid.d.ts.map +1 -0
  866. package/dist/solid.js +35 -0
  867. package/dist/solid.js.map +1 -0
  868. package/dist/test-utils/real-test-helpers.d.ts +5 -0
  869. package/dist/test-utils/real-test-helpers.d.ts.map +1 -0
  870. package/dist/test-utils/real-test-helpers.js +22 -0
  871. package/dist/test-utils/real-test-helpers.js.map +1 -0
  872. package/dist/types/sparql-types.d.ts +27 -0
  873. package/dist/types/sparql-types.d.ts.map +1 -0
  874. package/dist/types/sparql-types.js +4 -0
  875. package/dist/types/sparql-types.js.map +1 -0
  876. package/dist/utils/find-by-iri.d.ts +9 -0
  877. package/dist/utils/find-by-iri.d.ts.map +1 -0
  878. package/dist/utils/find-by-iri.js +25 -0
  879. package/dist/utils/find-by-iri.js.map +1 -0
  880. package/dist/utils/helpers.d.ts +17 -0
  881. package/dist/utils/helpers.d.ts.map +1 -0
  882. package/dist/utils/helpers.js +65 -0
  883. package/dist/utils/helpers.js.map +1 -0
  884. package/dist/utils/namespace.d.ts +4 -0
  885. package/dist/utils/namespace.d.ts.map +1 -0
  886. package/dist/utils/namespace.js +33 -0
  887. package/dist/utils/namespace.js.map +1 -0
  888. package/dist/utils/rdf-helpers.d.ts +17 -0
  889. package/dist/utils/rdf-helpers.d.ts.map +1 -0
  890. package/dist/utils/rdf-helpers.js +53 -0
  891. package/dist/utils/rdf-helpers.js.map +1 -0
  892. package/dist/utils/rdf-validation.d.ts +25 -0
  893. package/dist/utils/rdf-validation.d.ts.map +1 -0
  894. package/dist/utils/rdf-validation.js +292 -0
  895. package/dist/utils/rdf-validation.js.map +1 -0
  896. package/dist/utils/thing-operations.d.ts +28 -0
  897. package/dist/utils/thing-operations.d.ts.map +1 -0
  898. package/dist/utils/thing-operations.js +256 -0
  899. package/dist/utils/thing-operations.js.map +1 -0
  900. package/package.json +98 -0
@@ -0,0 +1,1300 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PodDialect = void 0;
5
+ const drizzle_orm_1 = require("drizzle-orm");
6
+ const expressions_1 = require("./expressions");
7
+ const sparql_executor_1 = require("./sparql-executor");
8
+ const pod_executor_1 = require("./execution/pod-executor");
9
+ const origin_auth_1 = require("./utils/origin-auth");
10
+ const pod_runtime_1 = require("./runtime/pod-runtime");
11
+ const pod_services_1 = require("./services/pod-services");
12
+ class PodDialect {
13
+ constructor(config) {
14
+ this.registeredTables = new Set();
15
+ this.preparedContainers = new Set();
16
+ this.preparedResources = new Set();
17
+ this.config = config;
18
+ const session = config.session;
19
+ // 从session中获取webId
20
+ const webId = session.info.webId;
21
+ const clientId = session.info.clientId || session.info.client_id || process.env.SOLID_CLIENT_ID;
22
+ if (!webId) {
23
+ throw new Error('Session中未找到webId');
24
+ }
25
+ this.runtime = new pod_runtime_1.PodRuntime({
26
+ session,
27
+ webId,
28
+ podUrl: config.podUrl,
29
+ });
30
+ this.webId = this.runtime.getWebId();
31
+ this.podUrl = this.runtime.getPodUrl();
32
+ this.services = new pod_services_1.PodServices({
33
+ runtime: this.runtime,
34
+ clientId,
35
+ disableInteropDiscovery: config.disableInteropDiscovery,
36
+ listContainerResources: (containerUrl) => this.listContainerResources(containerUrl),
37
+ findSubjectsForCondition: (condition, table, resourceUrl) => this.findSubjectsForCondition(condition, table, resourceUrl),
38
+ });
39
+ this.uriResolver = this.services.getUriResolver();
40
+ this.sparqlConverter = this.services.getSparqlConverter();
41
+ this.sparqlExecutor = this.services.getSparqlExecutor();
42
+ this.ldpExecutor = this.services.getLdpExecutor();
43
+ this.typeIndexManager = this.services.getTypeIndexManager();
44
+ this.discovery = this.services.getDiscovery();
45
+ this.shapeManager = this.services.getShapeManager();
46
+ this.resolverFactory = this.services.getResolverFactory();
47
+ this.strategyFactory = this.services.getStrategyFactory();
48
+ this.executor = new pod_executor_1.PodExecutor({
49
+ ensureConnected: async () => {
50
+ if (!this.runtime.isConnected()) {
51
+ await this.connect();
52
+ }
53
+ },
54
+ ensureTableResourcePath: (table) => this.ensureTableResourcePath(table),
55
+ resolveTableResource: (table) => this.resolveTableResource(table),
56
+ resolveTableUrls: (table) => this.resolveTableUrls(table),
57
+ normalizeResourceUrl: (resourceUrl) => this.normalizeResourceUrl(resourceUrl),
58
+ normalizeContainerKey: (containerUrl) => this.normalizeContainerKey(containerUrl),
59
+ normalizeResourceKey: (resourceUrl) => this.normalizeResourceKey(resourceUrl),
60
+ ensureContainerExists: (containerUrl) => this.ensureContainerExists(containerUrl),
61
+ ensureResourceExists: (resourceUrl, options) => this.ensureResourceExists(resourceUrl, options),
62
+ ensureIdentifierCondition: (condition, table, resourceUrl) => this.ensureIdentifierCondition(condition, table, resourceUrl),
63
+ resourceExists: (resourceUrl) => this.resourceExists(resourceUrl),
64
+ getStrategy: (table) => this.getStrategy(table),
65
+ getLdpStrategy: () => this.strategyFactory.getLdpStrategy(),
66
+ preparedContainers: this.preparedContainers,
67
+ preparedResources: this.preparedResources,
68
+ sparqlConverter: this.sparqlConverter,
69
+ sparqlExecutor: this.sparqlExecutor,
70
+ isSelectPlan: (plan) => this.isSelectPlan(plan),
71
+ isInsertPlan: (plan) => this.isInsertPlan(plan),
72
+ isUpdatePlan: (plan) => this.isUpdatePlan(plan),
73
+ isDeletePlan: (plan) => this.isDeletePlan(plan),
74
+ });
75
+ }
76
+ /**
77
+ * Get the ResourceResolver for a table
78
+ */
79
+ getResolver(table) {
80
+ return this.resolverFactory.getResolver(table);
81
+ }
82
+ /**
83
+ * Get the ExecutionStrategy for a table
84
+ */
85
+ getStrategy(table) {
86
+ return this.strategyFactory.getStrategy(table);
87
+ }
88
+ /**
89
+ * 获取 ShapeManager 实例
90
+ */
91
+ getShapeManager() {
92
+ return this.services.getShapeManager();
93
+ }
94
+ /**
95
+ * 获取 UriResolver 实例
96
+ */
97
+ getUriResolver() {
98
+ return this.services.getUriResolver();
99
+ }
100
+ /**
101
+ * 获取 DataDiscovery 实例
102
+ */
103
+ getDiscovery() {
104
+ return this.services.getDiscovery();
105
+ }
106
+ /**
107
+ * 设置 schema(表注册表)
108
+ * 用于 URI 引用字段的自动补全
109
+ *
110
+ * 构建两个注册表:
111
+ * - tableRegistry: rdfClass -> tables[](同一 class 可能对应多个表)
112
+ * - tableNameRegistry: tableName -> table(用于明确指定表名时查找)
113
+ */
114
+ setSchema(schema) {
115
+ const tableRegistry = new Map();
116
+ const tableNameRegistry = new Map();
117
+ for (const [key, value] of Object.entries(schema)) {
118
+ if (value && typeof value === 'object' && 'config' in value) {
119
+ const table = value;
120
+ const rdfClass = table.getType?.() || table.config?.type;
121
+ const tableName = table.config?.name || key;
122
+ // 添加到表名注册表
123
+ tableNameRegistry.set(tableName, table);
124
+ // 添加到 class 注册表(同一 class 可能对应多个表)
125
+ if (rdfClass) {
126
+ const existing = tableRegistry.get(rdfClass) || [];
127
+ existing.push(table);
128
+ tableRegistry.set(rdfClass, existing);
129
+ }
130
+ }
131
+ }
132
+ this.ldpExecutor.setTableRegistry(tableRegistry, tableNameRegistry);
133
+ this.ldpExecutor.setBaseUri(this.podUrl);
134
+ // Also set table registry for SPARQL converter (for reference URI resolution in queries)
135
+ this.sparqlConverter.setTableRegistry(tableRegistry, tableNameRegistry, this.podUrl);
136
+ }
137
+ async findSubjectsForCondition(condition, table, resourceUrl) {
138
+ const plan = this.buildSubjectLookupPlan(table, condition);
139
+ const sparqlQuery = this.sparqlConverter.convertSelectPlan(plan);
140
+ const normalizedUrl = this.normalizeResourceUrl(resourceUrl);
141
+ const rows = await this.executeOnResource(normalizedUrl, sparqlQuery);
142
+ return rows
143
+ .map((row) => this.extractSubjectFromRow(row))
144
+ .filter((value) => Boolean(value));
145
+ }
146
+ /**
147
+ * @deprecated 此方法仅被废弃的 executeComplexUpdate 使用
148
+ * 保留仅用于参考
149
+ */
150
+ buildUpdateQueryForSubject(subject, data, table, columns) {
151
+ const prefixLines = this.buildPrefixLines();
152
+ const deleteStatements = [];
153
+ const insertTriples = [];
154
+ columns.forEach((columnName, index) => {
155
+ const column = table.columns[columnName];
156
+ if (!column) {
157
+ return;
158
+ }
159
+ const predicate = this.sparqlConverter.getPredicateForColumnPublic(column, table);
160
+ deleteStatements.push(`DELETE WHERE {\n <${subject}> <${predicate}> ?value${index} .\n}`);
161
+ const newValue = data[columnName];
162
+ if (newValue === null || newValue === undefined) {
163
+ return;
164
+ }
165
+ const literal = this.sparqlConverter.formatLiteralValue(newValue, column);
166
+ if (literal === 'NULL') {
167
+ return;
168
+ }
169
+ insertTriples.push(` <${subject}> <${predicate}> ${literal} .`);
170
+ });
171
+ if (deleteStatements.length === 0 && insertTriples.length === 0) {
172
+ return null;
173
+ }
174
+ const parts = [];
175
+ if (deleteStatements.length > 0) {
176
+ parts.push(deleteStatements.join(';\n'));
177
+ }
178
+ if (insertTriples.length > 0) {
179
+ parts.push(`INSERT DATA {\n${insertTriples.join('\n')}\n}`);
180
+ }
181
+ return `${prefixLines}\n${parts.join(';\n')}`;
182
+ }
183
+ buildPrefixLines() {
184
+ const prefixes = this.sparqlConverter.getPrefixes();
185
+ return Object.entries(prefixes)
186
+ .map(([prefix, uri]) => `PREFIX ${prefix}: <${uri}>`)
187
+ .join('\n');
188
+ }
189
+ isSubjectResolutionError(error) {
190
+ if (!(error instanceof Error)) {
191
+ return false;
192
+ }
193
+ return error.message.includes('requires an id or @id condition');
194
+ }
195
+ async connect() {
196
+ await this.runtime.connect();
197
+ }
198
+ async disconnect() {
199
+ await this.runtime.disconnect();
200
+ }
201
+ isConnected() {
202
+ return this.runtime.isConnected();
203
+ }
204
+ // 从 webId 中提取用户路径
205
+ extractUserPathFromWebId() {
206
+ if (!this.webId) {
207
+ return '';
208
+ }
209
+ try {
210
+ const url = new URL(this.webId);
211
+ // 从 webId 中提取路径,例如:
212
+ // http://localhost:3000/alice/profile/card#me -> /alice/
213
+ // http://localhost:3000/bob/profile/card#me -> /bob/
214
+ const pathParts = url.pathname.split('/');
215
+ if (pathParts.length >= 2) {
216
+ const username = pathParts[1]; // 获取用户名部分
217
+ return `/${username}/`;
218
+ }
219
+ }
220
+ catch (error) {
221
+ console.warn('Failed to parse webId:', this.webId, error);
222
+ }
223
+ return '';
224
+ }
225
+ resolveTableResource(table) {
226
+ const endpointSource = table.getSparqlEndpoint?.();
227
+ if (endpointSource) {
228
+ const endpoint = this.isAbsoluteUrl(endpointSource)
229
+ ? endpointSource
230
+ : this.resolveAbsoluteUrl(endpointSource);
231
+ return { mode: 'sparql', endpoint };
232
+ }
233
+ const { containerUrl, resourceUrl } = this.resolveLdpResource(table);
234
+ return { mode: 'ldp', containerUrl, resourceUrl };
235
+ }
236
+ /**
237
+ * Resolve LDP container/resource URLs for a table.
238
+ *
239
+ * Always returns the physical LDP storage location, regardless of whether
240
+ * the table has a sparqlEndpoint configured. SPARQL strategy will resolve
241
+ * the endpoint URL separately via table.getSparqlEndpoint().
242
+ */
243
+ resolveTableUrls(table) {
244
+ return this.resolveLdpResource(table);
245
+ }
246
+ resolveLdpResource(table) {
247
+ const configuredResourcePath = typeof table.getResourcePath === 'function'
248
+ ? table.getResourcePath()
249
+ : table.config?.resourcePath;
250
+ if (configuredResourcePath) {
251
+ const absoluteResource = this.resolveAbsoluteUrl(configuredResourcePath);
252
+ // Check if this is a container path (ends with /)
253
+ const isContainer = configuredResourcePath.endsWith('/');
254
+ if (isContainer) {
255
+ // Document mode: resourceUrl is the container
256
+ // Actual resource files are determined by subjectTemplate at query time
257
+ const containerUrl = absoluteResource.endsWith('/') ? absoluteResource : `${absoluteResource}/`;
258
+ return {
259
+ containerUrl,
260
+ resourceUrl: containerUrl
261
+ };
262
+ }
263
+ // File mode (Fragment mode or explicit file path): derive container from resource path
264
+ const normalizedResource = this.normalizeResourceUrl(absoluteResource);
265
+ const lastSlash = normalizedResource.lastIndexOf('/');
266
+ const containerUrl = lastSlash >= 0 ? `${normalizedResource.slice(0, lastSlash + 1)}` : `${normalizedResource}/`;
267
+ return {
268
+ containerUrl,
269
+ resourceUrl: normalizedResource
270
+ };
271
+ }
272
+ const configuredPath = table.getContainerPath() || '/data/';
273
+ const isAbsolute = configuredPath.startsWith('http://') || configuredPath.startsWith('https://');
274
+ const ensureTrailingSlash = (value) => (value.endsWith('/') ? value : `${value}/`);
275
+ if (isAbsolute) {
276
+ if (configuredPath.endsWith('/')) {
277
+ const containerUrl = ensureTrailingSlash(configuredPath);
278
+ return {
279
+ containerUrl,
280
+ resourceUrl: `${containerUrl}${table.config.name}.ttl`
281
+ };
282
+ }
283
+ const normalizedResource = configuredPath;
284
+ const lastSlash = normalizedResource.lastIndexOf('/');
285
+ if (lastSlash === -1) {
286
+ throw new Error(`Invalid containerPath for table ${table.config.name}: ${configuredPath}`);
287
+ }
288
+ const containerUrl = ensureTrailingSlash(normalizedResource.slice(0, lastSlash + 1));
289
+ return {
290
+ containerUrl,
291
+ resourceUrl: normalizedResource
292
+ };
293
+ }
294
+ const userPath = this.extractUserPathFromWebId();
295
+ const trimmedPath = configuredPath.replace(/^\/+/, '');
296
+ const baseUrl = this.podUrl.endsWith('/') ? this.podUrl : `${this.podUrl}/`;
297
+ const userPrefix = userPath.replace(/^\/+/, '');
298
+ const trimHasUserPrefix = userPrefix && trimmedPath.startsWith(userPrefix);
299
+ if (configuredPath.endsWith('/')) {
300
+ const relativeContainer = trimHasUserPrefix ? trimmedPath : `${userPrefix}${trimmedPath}`;
301
+ const containerUrl = ensureTrailingSlash(`${baseUrl}${relativeContainer.replace(/^\/+/, '')}`);
302
+ return {
303
+ containerUrl,
304
+ resourceUrl: `${containerUrl}${table.config.name}.ttl`
305
+ };
306
+ }
307
+ const resourceRelative = trimHasUserPrefix ? trimmedPath : `${userPrefix}${trimmedPath}`;
308
+ const lastSlash = resourceRelative.lastIndexOf('/');
309
+ const containerRelative = lastSlash >= 0 ? resourceRelative.slice(0, lastSlash + 1) : userPrefix;
310
+ const containerUrl = ensureTrailingSlash(`${baseUrl}${containerRelative.replace(/^\/+/, '')}`);
311
+ const resourceUrl = `${baseUrl}${resourceRelative.replace(/^\/+/, '')}`;
312
+ return { containerUrl, resourceUrl };
313
+ }
314
+ collectSelectSources(plan) {
315
+ const tables = new Set();
316
+ if (plan.baseTable) {
317
+ tables.add(plan.baseTable);
318
+ }
319
+ if (Array.isArray(plan.joins)) {
320
+ for (const join of plan.joins) {
321
+ if (join?.table) {
322
+ tables.add(join.table);
323
+ }
324
+ }
325
+ }
326
+ if (plan.aliasToTable instanceof Map) {
327
+ for (const table of plan.aliasToTable.values()) {
328
+ if (table) {
329
+ tables.add(table);
330
+ }
331
+ }
332
+ }
333
+ const seen = new Set();
334
+ const sources = [];
335
+ for (const table of tables) {
336
+ const descriptor = this.resolveTableResource(table);
337
+ if (descriptor.mode === 'ldp') {
338
+ // Document mode: query the container, not a single file
339
+ const resourceMode = this.uriResolver.getResourceMode(table);
340
+ const sourceUrl = resourceMode === 'document'
341
+ ? descriptor.containerUrl
342
+ : descriptor.resourceUrl;
343
+ const key = `ldp:${sourceUrl}`;
344
+ if (!seen.has(key)) {
345
+ seen.add(key);
346
+ sources.push(sourceUrl);
347
+ }
348
+ }
349
+ else {
350
+ const key = `sparql:${descriptor.endpoint}`;
351
+ if (!seen.has(key)) {
352
+ seen.add(key);
353
+ sources.push({ type: 'sparql', value: descriptor.endpoint });
354
+ }
355
+ }
356
+ }
357
+ return sources;
358
+ }
359
+ async resourceExists(resourceUrl) {
360
+ const normalizedUrl = this.normalizeResourceUrl(resourceUrl);
361
+ if (this.preparedResources.has(normalizedUrl)) {
362
+ return true;
363
+ }
364
+ try {
365
+ const response = await this.runtime.getFetch()(normalizedUrl, { method: 'HEAD' });
366
+ if (response.ok || response.status === 409) {
367
+ this.markResourcePrepared(normalizedUrl);
368
+ return true;
369
+ }
370
+ if (response.status === 404) {
371
+ return false;
372
+ }
373
+ if (response.status === 405) {
374
+ const getResponse = await this.runtime.getFetch()(normalizedUrl, {
375
+ method: 'GET',
376
+ headers: { 'Accept': 'text/turtle' }
377
+ });
378
+ if (getResponse.ok) {
379
+ this.markResourcePrepared(normalizedUrl);
380
+ return true;
381
+ }
382
+ return false;
383
+ }
384
+ if (response.status === 401 || response.status === 403) {
385
+ // 无法验证是否存在,假定存在以避免破坏流程
386
+ this.markResourcePrepared(normalizedUrl);
387
+ return true;
388
+ }
389
+ return response.ok;
390
+ }
391
+ catch (error) {
392
+ console.warn('[PodDialect] Failed to check resource existence via HEAD, falling back to GET', error);
393
+ try {
394
+ const getResponse = await this.runtime.getFetch()(normalizedUrl, {
395
+ method: 'GET',
396
+ headers: { 'Accept': 'text/turtle' }
397
+ });
398
+ if (getResponse.ok) {
399
+ this.markResourcePrepared(normalizedUrl);
400
+ return true;
401
+ }
402
+ return false;
403
+ }
404
+ catch (fallbackError) {
405
+ console.warn('[PodDialect] Resource existence fallback GET failed', fallbackError);
406
+ return false;
407
+ }
408
+ }
409
+ }
410
+ normalizeResourceUrl(resourceUrl) {
411
+ if (!resourceUrl) {
412
+ return resourceUrl;
413
+ }
414
+ let normalized = resourceUrl;
415
+ while (normalized.endsWith('/') && !normalized.endsWith('://')) {
416
+ normalized = normalized.slice(0, -1);
417
+ }
418
+ return normalized;
419
+ }
420
+ normalizeContainerKey(containerUrl) {
421
+ const absoluteContainer = containerUrl.startsWith('http')
422
+ ? containerUrl
423
+ : this.resolveAbsoluteUrl(containerUrl);
424
+ return absoluteContainer.endsWith('/') ? absoluteContainer : `${absoluteContainer}/`;
425
+ }
426
+ normalizeResourceKey(resourceUrl) {
427
+ const absoluteResource = resourceUrl.startsWith('http')
428
+ ? resourceUrl
429
+ : this.resolveAbsoluteUrl(resourceUrl);
430
+ return this.normalizeResourceUrl(absoluteResource);
431
+ }
432
+ markContainerPrepared(containerUrl) {
433
+ this.preparedContainers.add(this.normalizeContainerKey(containerUrl));
434
+ }
435
+ markResourcePrepared(resourceUrl) {
436
+ this.preparedResources.add(this.normalizeResourceKey(resourceUrl));
437
+ }
438
+ isAbsoluteUrl(value) {
439
+ return /^https?:\/\//i.test(value);
440
+ }
441
+ resolveAbsoluteUrl(path) {
442
+ if (!path) {
443
+ return this.podUrl.replace(/\/$/, '');
444
+ }
445
+ if (this.isAbsoluteUrl(path)) {
446
+ return path;
447
+ }
448
+ const sanitizedPath = path.replace(/^(\.\/)+/, '');
449
+ const base = this.podUrl.endsWith('/') ? this.podUrl : `${this.podUrl}/`;
450
+ const hasTrailingSlash = sanitizedPath.endsWith('/');
451
+ const rawUserPath = this.extractUserPathFromWebId();
452
+ const normalizedUser = rawUserPath.replace(/^\/+|\/+$/g, '');
453
+ const trimmedPath = sanitizedPath.replace(/^\/+/, '');
454
+ let relativePath = trimmedPath;
455
+ const userPrefixWithSlash = normalizedUser.length > 0 ? `${normalizedUser}/` : '';
456
+ if (normalizedUser.length > 0) {
457
+ let podPathHasUser = false;
458
+ try {
459
+ const podPath = new URL(base).pathname.replace(/^\/+|\/+$/g, '');
460
+ podPathHasUser = podPath.startsWith(normalizedUser);
461
+ }
462
+ catch {
463
+ podPathHasUser = false;
464
+ }
465
+ const needsUserPrefix = (!podPathHasUser) &&
466
+ (relativePath.length === 0 ||
467
+ (relativePath !== normalizedUser && !relativePath.startsWith(userPrefixWithSlash)));
468
+ if (needsUserPrefix) {
469
+ relativePath = relativePath.length > 0
470
+ ? `${normalizedUser}/${relativePath}`
471
+ : normalizedUser;
472
+ }
473
+ }
474
+ if (hasTrailingSlash && !relativePath.endsWith('/')) {
475
+ relativePath = `${relativePath}/`;
476
+ }
477
+ const absolute = new URL(relativePath, base).toString();
478
+ if (!hasTrailingSlash && absolute.endsWith('/')) {
479
+ return absolute.replace(/\/$/, '');
480
+ }
481
+ return absolute;
482
+ }
483
+ async ensureResourceExists(resourceUrl, options = {}) {
484
+ const { createIfMissing = true } = options;
485
+ const normalizedUrl = this.normalizeResourceUrl(resourceUrl);
486
+ if (this.preparedResources.has(normalizedUrl)) {
487
+ return;
488
+ }
489
+ const exists = await this.resourceExists(normalizedUrl);
490
+ if (exists) {
491
+ this.markResourcePrepared(normalizedUrl);
492
+ return;
493
+ }
494
+ if (!createIfMissing) {
495
+ throw new Error(`Resource not found: ${normalizedUrl}`);
496
+ }
497
+ for (let i = 0; i < 3; i++) {
498
+ try {
499
+ const response = await this.runtime.getFetch()(normalizedUrl, {
500
+ method: 'PUT',
501
+ headers: {
502
+ 'Content-Type': 'text/turtle'
503
+ },
504
+ body: ''
505
+ });
506
+ if (response.ok || [201, 202, 204, 409].includes(response.status)) {
507
+ // Invalidate cache for the new resource
508
+ await this.sparqlExecutor.invalidateHttpCache(normalizedUrl);
509
+ this.markResourcePrepared(normalizedUrl);
510
+ return;
511
+ }
512
+ if (response.status >= 500) {
513
+ console.warn(`[PodDialect] ensureResourceExists attempt ${i + 1}/3 failed with ${response.status}, retrying...`);
514
+ await new Promise(r => setTimeout(r, 1000));
515
+ continue;
516
+ }
517
+ throw new Error(`Failed to create resource: ${response.status} ${response.statusText}`);
518
+ }
519
+ catch (error) {
520
+ if (i === 2) {
521
+ console.error('[PodDialect] ensureResourceExists failed after 3 attempts:', error);
522
+ throw error;
523
+ }
524
+ console.warn(`[PodDialect] ensureResourceExists attempt ${i + 1}/3 failed with error:`, error);
525
+ await new Promise(r => setTimeout(r, 1000));
526
+ }
527
+ }
528
+ }
529
+ async executeOnResource(resourceUrl, sparqlQuery, descriptor) {
530
+ const normalizedUrl = this.normalizeResourceUrl(resourceUrl);
531
+ if (descriptor?.mode === 'sparql') {
532
+ return await this.executeOnSparqlEndpoint(descriptor.endpoint, sparqlQuery);
533
+ }
534
+ // LDP 模式:仅允许 SELECT/ASK 通过 Comunica;UPDATE 走 N3 Patch
535
+ if (sparqlQuery.type === 'SELECT' || sparqlQuery.type === 'ASK') {
536
+ return await this.sparqlExecutor.queryContainer(normalizedUrl, sparqlQuery);
537
+ }
538
+ throw new Error('LDP mode does not support SPARQL UPDATE; use N3 patch helpers instead.');
539
+ }
540
+ /**
541
+ * Get the appropriate fetch function for a SPARQL endpoint
542
+ * - Same-origin endpoints (e.g., CSS SPARQL sidecar): use authenticated session.fetch
543
+ * - Cross-origin endpoints: use unauthenticated fetch (standard SPARQL endpoint behavior)
544
+ */
545
+ getFetchForEndpoint(endpoint) {
546
+ return (0, origin_auth_1.getFetchForOrigin)(endpoint, this.podUrl, this.runtime.getFetch());
547
+ }
548
+ async executeOnSparqlEndpoint(endpoint, sparqlQuery) {
549
+ const fetchFn = this.getFetchForEndpoint(endpoint);
550
+ if (sparqlQuery.type === 'SELECT' || sparqlQuery.type === 'ASK') {
551
+ // For SELECT/ASK, we need to create a temporary executor with the appropriate fetch
552
+ if ((0, origin_auth_1.isSameOrigin)(endpoint, this.podUrl)) {
553
+ // Same origin: use authenticated executor
554
+ return await this.sparqlExecutor.executeQueryWithSource(sparqlQuery, endpoint);
555
+ }
556
+ else {
557
+ // Cross-origin: create an unauthenticated executor
558
+ const unauthExecutor = new sparql_executor_1.ComunicaSPARQLExecutor({
559
+ sources: [endpoint],
560
+ fetch: fetch, // Use standard fetch without auth
561
+ logging: false
562
+ });
563
+ return await unauthExecutor.executeQueryWithSource(sparqlQuery, endpoint);
564
+ }
565
+ }
566
+ const response = await fetchFn(endpoint, {
567
+ method: 'POST',
568
+ headers: { 'Content-Type': 'application/sparql-update' },
569
+ body: sparqlQuery.query
570
+ });
571
+ if (!response.ok) {
572
+ const text = await response.text().catch(() => '');
573
+ throw new Error(`SPARQL endpoint update failed: ${response.status} ${response.statusText}${text ? ` - ${text}` : ''}`);
574
+ }
575
+ return [{ success: true, source: endpoint, status: response.status, via: 'sparql-endpoint' }];
576
+ }
577
+ /**
578
+ * 确保表有 resourcePath,如果没有则从 TypeIndex 自动发现
579
+ * 如果设置了 typeIndex,优先使用发现的位置(覆盖配置的 base)
580
+ */
581
+ async ensureTableResourcePath(table) {
582
+ const rdfClass = typeof table.config.type === 'string'
583
+ ? table.config.type
584
+ : table.config.type.value || String(table.config.type);
585
+ // 检查是否已经有 resourcePath
586
+ const configuredResourcePath = (typeof table.getResourcePath === 'function' && table.getResourcePath()) ||
587
+ table.config?.resourcePath;
588
+ // 如果没有设置 typeIndex,使用配置的 resourcePath(如果有)
589
+ if (!table.config.typeIndex) {
590
+ if (configuredResourcePath && configuredResourcePath.trim().length > 0) {
591
+ // 已经有 resourcePath,直接使用配置
592
+ return;
593
+ }
594
+ // 没有 resourcePath,使用默认容器
595
+ console.log(`[AutoDiscover] Table ${table.config.name} has no resourcePath, using default container path`);
596
+ table.config.containerPath = '/data/';
597
+ return;
598
+ }
599
+ // 设置了 typeIndex,尝试从 TypeIndex/SAI 发现位置
600
+ // 发现的位置会覆盖配置的 base,实现动态路由
601
+ console.log(`[AutoDiscover] Table ${table.config.name} has typeIndex enabled, discovering from TypeIndex/SAI...`);
602
+ try {
603
+ const locations = await this.discovery.discover(rdfClass);
604
+ const location = locations[0]; // 使用第一个发现的位置
605
+ if (location) {
606
+ // 动态设置 containerPath 和 resourcePath
607
+ // 假设 location.container 是 containerPath 或 URL
608
+ let containerPath = location.container;
609
+ // 如果返回的是绝对 URL,尝试转为相对路径(可选,但保持一致性较好)
610
+ // 这里暂时直接使用
611
+ if (!containerPath.endsWith('/')) {
612
+ containerPath += '/';
613
+ }
614
+ // 如果发现了 subjectTemplate,应用到表配置
615
+ if (location.subjectTemplate && typeof table.setSubjectTemplate === 'function') {
616
+ table.setSubjectTemplate(location.subjectTemplate);
617
+ console.log(`[AutoDiscover] ✓ Applied subjectTemplate from discovery: ${location.subjectTemplate}`);
618
+ }
619
+ // 推断 resourcePath
620
+ // 根据资源模式决定 resourcePath:
621
+ // - Document 模式:resourcePath = containerPath (每条记录独立文件,查询扫描整个容器)
622
+ // - Fragment 模式:resourcePath = containerPath + tableName.ttl (所有记录在同一文件)
623
+ const resourceMode = this.uriResolver.getResourceMode(table);
624
+ let resourcePath;
625
+ if (resourceMode === 'document') {
626
+ // Document 模式:resourcePath 就是容器本身
627
+ // SELECT 查询会扫描容器下的所有 .ttl 文件
628
+ resourcePath = containerPath;
629
+ }
630
+ else {
631
+ // Fragment 模式:resourcePath 指向单个文件
632
+ resourcePath = `${containerPath}${table.config.name}.ttl`;
633
+ }
634
+ console.log(`[AutoDiscover] ✓ Found resource path from TypeIndex: ${resourcePath} (mode: ${resourceMode})`);
635
+ // 动态注入到表配置中
636
+ // 使用 setBase 更新内部状态和 config.base,确保 SubjectResolver 能获取到正确路径
637
+ if (typeof table.setBase === 'function') {
638
+ table.setBase(resourcePath);
639
+ }
640
+ else {
641
+ // Fallback for minimal mock tables
642
+ table.config.containerPath = containerPath;
643
+ table.config.resourcePath = resourcePath;
644
+ table.config.base = resourcePath;
645
+ }
646
+ // 尝试自动发现 SPARQL endpoint
647
+ await this.tryDiscoverSparqlEndpoint(table, containerPath);
648
+ }
649
+ else {
650
+ // Discovery 没有找到位置
651
+ if (configuredResourcePath && configuredResourcePath.trim().length > 0) {
652
+ // 有配置的 resourcePath,使用它作为 fallback
653
+ console.log(`[AutoDiscover] No discovery result, using configured path: ${configuredResourcePath}`);
654
+ return;
655
+ }
656
+ // 没有配置的 resourcePath,抛出错误
657
+ throw new Error(`[AutoDiscover] No data location found for type ${rdfClass}. Please ensure the data is registered in TypeIndex or SAI Registry.`);
658
+ }
659
+ }
660
+ catch (error) {
661
+ // 发现过程出错
662
+ if (configuredResourcePath && configuredResourcePath.trim().length > 0) {
663
+ // 有配置的 resourcePath,使用它作为 fallback
664
+ console.warn('[AutoDiscover] Discovery process failed, using configured path:', configuredResourcePath);
665
+ return;
666
+ }
667
+ console.warn('[AutoDiscover] Discovery process failed:', error);
668
+ throw error; // Re-throw
669
+ }
670
+ }
671
+ /**
672
+ * 尝试自动发现 SPARQL endpoint
673
+ * 按约定:${base}/-/sparql
674
+ */
675
+ async tryDiscoverSparqlEndpoint(table, base) {
676
+ // 如果表已经配置了 sparqlEndpoint,跳过
677
+ if (table.getSparqlEndpoint()) {
678
+ return;
679
+ }
680
+ // 构建约定的 endpoint URL
681
+ const potentialEndpoint = `${base.replace(/\/$/, '')}/-/sparql`;
682
+ try {
683
+ const response = await this.runtime.getFetch()(potentialEndpoint, { method: 'HEAD' });
684
+ if (response.ok) {
685
+ console.log(`[AutoDiscover] ✓ Found SPARQL endpoint: ${potentialEndpoint}`);
686
+ if (typeof table.setSparqlEndpoint === 'function') {
687
+ table.setSparqlEndpoint(potentialEndpoint);
688
+ }
689
+ }
690
+ }
691
+ catch {
692
+ // SPARQL endpoint 不存在,继续使用 LDP 模式
693
+ }
694
+ }
695
+ // 核心查询方法 - 通过 ExecutionStrategy 执行
696
+ async query(operation) {
697
+ return this.executor.query(operation);
698
+ }
699
+ buildIdInConditionFromSubjects(subjects) {
700
+ if (!subjects || subjects.length === 0) {
701
+ return undefined;
702
+ }
703
+ return new expressions_1.BinaryExpression('@id', 'IN', subjects);
704
+ }
705
+ isInsertPlan(plan) {
706
+ return Boolean(plan && typeof plan.table !== 'undefined' && Array.isArray(plan.rows));
707
+ }
708
+ isUpdatePlan(plan) {
709
+ return Boolean(plan && typeof plan.table !== 'undefined' && 'data' in plan);
710
+ }
711
+ isDeletePlan(plan) {
712
+ if (!plan) {
713
+ return false;
714
+ }
715
+ const candidate = plan;
716
+ if (typeof candidate.table === 'undefined') {
717
+ return false;
718
+ }
719
+ return typeof candidate.rows === 'undefined' && typeof candidate.data === 'undefined';
720
+ }
721
+ isSelectPlan(plan) {
722
+ if (!plan) {
723
+ return false;
724
+ }
725
+ return typeof plan.baseTable !== 'undefined';
726
+ }
727
+ buildSubjectLookupPlan(table, condition) {
728
+ const alias = table.config.name ?? 'table';
729
+ return {
730
+ baseTable: table,
731
+ baseAlias: alias,
732
+ selectAll: true,
733
+ conditionTree: condition,
734
+ aliasToTable: new Map([[alias, table]]),
735
+ tableToAlias: new Map([[table, alias]])
736
+ };
737
+ }
738
+ buildSubjectUriFromFragment(fragment, table) {
739
+ // This method is used by rewriteWhereConditionWithSubjects and other internal logic
740
+ // Ideally we should use SubjectResolver, but for fragment building relative to base, we need this helper.
741
+ // Or delegate to SubjectResolver if it exposes parsing.
742
+ // SubjectResolver.parse handles URIs.
743
+ // For now, keep this simple helper as it was used by extractSubjectFromRow logic context.
744
+ // Wait, extractSubjectFromRow doesn't use this.
745
+ // But `rewriteWhereConditionWithSubjects` calls `findSubjectsForCondition`.
746
+ // `findSubjectsForCondition` calls `buildSubjectLookupPlan` which is also missing?
747
+ return this.sparqlConverter.generateSubjectUri({ id: fragment }, table);
748
+ }
749
+ extractSubjectFromRow(row) {
750
+ const subject = row.subject ?? row['?subject'];
751
+ if (!subject) {
752
+ return null;
753
+ }
754
+ if (typeof subject === 'string') {
755
+ return subject;
756
+ }
757
+ if (typeof subject.value === 'string') {
758
+ return subject.value;
759
+ }
760
+ return null;
761
+ }
762
+ operationHasInlineObjects(table, data) {
763
+ return Object.entries(data).some(([key, value]) => {
764
+ if (value === undefined)
765
+ return false;
766
+ const col = table.columns?.[key];
767
+ if (!col)
768
+ return false;
769
+ return this.isInlineObjectColumn(col);
770
+ });
771
+ }
772
+ isInlineObjectColumn(column) {
773
+ if (!column)
774
+ return false;
775
+ if (column.dataType === 'object')
776
+ return true;
777
+ if (column.dataType === 'array') {
778
+ const elem = column.elementType ?? column.options?.baseType;
779
+ return elem === 'object';
780
+ }
781
+ return false;
782
+ }
783
+ conditionTargetsIdentifier(condition) {
784
+ if (!condition) {
785
+ return false;
786
+ }
787
+ // BinaryExpression: check 'left' property
788
+ if (condition.type === 'binary_expr') {
789
+ const left = condition.left;
790
+ const colName = typeof left === 'string' ? left : left?.name;
791
+ if (colName === '@id' || colName === 'id') {
792
+ return true;
793
+ }
794
+ }
795
+ // LogicalExpression: check 'expressions' property
796
+ if (condition.type === 'logical_expr') {
797
+ const exprs = condition.expressions;
798
+ if (exprs) {
799
+ return exprs.some((child) => this.conditionTargetsIdentifier(child));
800
+ }
801
+ }
802
+ // UnaryExpression: check 'value' property
803
+ if (condition.type === 'unary_expr') {
804
+ const val = condition.value;
805
+ if (val && typeof val === 'object' && 'type' in val) {
806
+ return this.conditionTargetsIdentifier(val);
807
+ }
808
+ }
809
+ return false;
810
+ }
811
+ async ensureIdentifierCondition(condition, table, resourceUrl) {
812
+ if (!condition) {
813
+ return undefined;
814
+ }
815
+ if (this.conditionTargetsIdentifier(condition)) {
816
+ return condition;
817
+ }
818
+ return await this.rewriteWhereConditionWithSubjects(condition, table, resourceUrl);
819
+ }
820
+ async rewriteWhereConditionWithSubjects(condition, table, resourceUrl) {
821
+ if (!condition) {
822
+ return undefined;
823
+ }
824
+ const subjects = await this.findSubjectsForCondition(condition, table, resourceUrl);
825
+ return this.buildIdInConditionFromSubjects(subjects);
826
+ }
827
+ // 处理 Drizzle 的 SQL 对象
828
+ async executeSql(sql, table) {
829
+ // 解析 SQL 对象确定操作类型
830
+ const sqlString = sql.queryChunks.join('');
831
+ let operationType;
832
+ if (sqlString.toLowerCase().includes('select')) {
833
+ operationType = 'select';
834
+ }
835
+ else if (sqlString.toLowerCase().includes('insert')) {
836
+ operationType = 'insert';
837
+ }
838
+ else if (sqlString.toLowerCase().includes('update')) {
839
+ operationType = 'update';
840
+ }
841
+ else if (sqlString.toLowerCase().includes('delete')) {
842
+ operationType = 'delete';
843
+ }
844
+ else {
845
+ throw new Error(`Unsupported SQL operation: ${sqlString}`);
846
+ }
847
+ const operation = {
848
+ type: operationType,
849
+ table,
850
+ sql,
851
+ values: sql.params || [] // 参数作为值
852
+ };
853
+ return this.query(operation);
854
+ }
855
+ // 添加自定义命名空间到 SPARQL 转换器
856
+ addNamespace(prefix, uri) {
857
+ this.sparqlConverter.addPrefix(prefix, uri);
858
+ }
859
+ // 获取配置信息
860
+ getConfig() {
861
+ return {
862
+ podUrl: this.podUrl,
863
+ webId: this.webId,
864
+ connected: this.runtime.isConnected()
865
+ };
866
+ }
867
+ /**
868
+ * 获取认证的 fetch 函数
869
+ * 用于需要认证访问的操作(如 Notifications)
870
+ */
871
+ getAuthenticatedFetch() {
872
+ return this.runtime.getFetch();
873
+ }
874
+ // 获取 SPARQL 转换器(用于调试)
875
+ getSPARQLConverter() {
876
+ return this.sparqlConverter;
877
+ }
878
+ // 获取 SPARQL 执行器(用于调试)
879
+ getSPARQLExecutor() {
880
+ return this.sparqlExecutor;
881
+ }
882
+ getPodUrl() {
883
+ return this.runtime.getPodUrl();
884
+ }
885
+ /**
886
+ * 获取用户的 WebID
887
+ */
888
+ getWebId() {
889
+ return this.runtime.getWebId();
890
+ }
891
+ /**
892
+ * 发现特定 RDF 类型的数据位置
893
+ * 通过 TypeIndex 和 Interop 发现
894
+ *
895
+ * @param rdfClass RDF 类型 URI
896
+ * @returns 数据位置列表
897
+ */
898
+ async discoverDataLocations(rdfClass, options) {
899
+ return this.discovery.discover(rdfClass, options);
900
+ }
901
+ /**
902
+ * 获取所有数据注册信息
903
+ */
904
+ async discoverAll() {
905
+ if (this.discovery.discoverAll) {
906
+ return this.discovery.discoverAll();
907
+ }
908
+ return [];
909
+ }
910
+ /**
911
+ * 按应用 ID 发现数据位置
912
+ */
913
+ async discoverByApp(appId) {
914
+ if (this.discovery.discoverByApp) {
915
+ return this.discovery.discoverByApp(appId);
916
+ }
917
+ return [];
918
+ }
919
+ // 添加数据源进行联邦查询(高级用法)
920
+ // 注意:正常情况下不需要手动添加数据源,表定义中的 containerPath 会自动使用
921
+ addSource(source) {
922
+ console.warn('⚠️ addSource 是高级用法,通常不需要手动管理数据源。表定义中的 containerPath 会自动使用。');
923
+ this.sparqlExecutor.addSource(source);
924
+ }
925
+ // 移除数据源
926
+ removeSource(source) {
927
+ this.sparqlExecutor.removeSource(source);
928
+ }
929
+ // 获取当前数据源列表
930
+ getSources() {
931
+ return this.sparqlExecutor.getSources();
932
+ }
933
+ // 自动从 TypeIndex 添加数据源(推荐用法)
934
+ async addSourcesFromTypeIndex() {
935
+ try {
936
+ const typeIndexEntries = await this.typeIndexManager.discoverTypes();
937
+ for (const entry of typeIndexEntries) {
938
+ if (entry.instanceContainer) {
939
+ // 使用实例容器路径作为数据源
940
+ this.sparqlExecutor.addSource(entry.instanceContainer);
941
+ }
942
+ else if (entry.containerPath) {
943
+ // 使用容器路径作为数据源
944
+ const fullPath = entry.containerPath.startsWith('http')
945
+ ? entry.containerPath
946
+ : `${this.podUrl}${entry.containerPath}`;
947
+ this.sparqlExecutor.addSource(fullPath);
948
+ }
949
+ }
950
+ console.log(`✅ 从 TypeIndex 自动添加了 ${typeIndexEntries.length} 个数据源`);
951
+ }
952
+ catch (error) {
953
+ console.warn('⚠️ 无法从 TypeIndex 自动添加数据源:', error);
954
+ }
955
+ }
956
+ // 查询特定容器
957
+ async queryContainer(containerPath, sql, table) {
958
+ // Use proper AST conversion with table context
959
+ const ast = this.sparqlConverter.parseDrizzleAST(sql, table);
960
+ const sparqlQuery = this.sparqlConverter.convertSelect(ast, table);
961
+ // 使用表定义中的容器路径,如果提供了的话
962
+ const targetPath = table?.config?.containerPath || containerPath;
963
+ return this.sparqlExecutor.queryContainer(targetPath, sparqlQuery);
964
+ }
965
+ // 获取 Pod 元数据
966
+ async getPodMetadata() {
967
+ if (!this.runtime.isConnected()) {
968
+ throw new Error('Not connected to Pod');
969
+ }
970
+ return {
971
+ podUrl: this.podUrl,
972
+ webId: this.webId,
973
+ connected: this.runtime.isConnected(),
974
+ sources: this.sparqlExecutor.getSources()
975
+ };
976
+ }
977
+ // 直接执行 SPARQL 查询(高级用法)
978
+ async executeSPARQL(query) {
979
+ if (!this.runtime.isConnected()) {
980
+ throw new Error('Not connected to Pod');
981
+ }
982
+ const sparqlQuery = {
983
+ type: 'SELECT',
984
+ query,
985
+ prefixes: {}
986
+ };
987
+ return this.sparqlExecutor.executeQuery(sparqlQuery);
988
+ }
989
+ // 事务支持
990
+ async transaction(transaction) {
991
+ console.log('Starting transaction');
992
+ try {
993
+ const result = await transaction(this);
994
+ console.log('Transaction completed successfully');
995
+ return result;
996
+ }
997
+ catch (error) {
998
+ console.error('Transaction failed:', error);
999
+ throw error;
1000
+ }
1001
+ }
1002
+ // ========== TypeIndex 相关方法 ==========
1003
+ /**
1004
+ * 注册表到 TypeIndex
1005
+ */
1006
+ async registerTable(table) {
1007
+ if (table.config.autoRegister === false) {
1008
+ return;
1009
+ }
1010
+ const tableKey = table.config.name ?? JSON.stringify(table.config);
1011
+ if (this.registeredTables.has(tableKey)) {
1012
+ return;
1013
+ }
1014
+ try {
1015
+ const descriptor = this.resolveTableResource(table);
1016
+ if (descriptor.mode === 'sparql') {
1017
+ // No probe needed - if endpoint fails, the actual query will report the error
1018
+ }
1019
+ else {
1020
+ await this.ensureContainerExists(descriptor.containerUrl);
1021
+ try {
1022
+ await this.ensureResourceExists(descriptor.resourceUrl, { createIfMissing: true });
1023
+ this.markResourcePrepared(descriptor.resourceUrl);
1024
+ }
1025
+ catch (error) {
1026
+ console.warn(`[registerTable] ensureResourceExists failed for ${descriptor.resourceUrl}:`, error);
1027
+ // 不标记为已准备,让后续 INSERT 有机会重试创建
1028
+ }
1029
+ this.markContainerPrepared(descriptor.containerUrl);
1030
+ // 将表的 base 固定为已解析的绝对资源路径,避免后续重复 TypeIndex 解析
1031
+ try {
1032
+ table.setBase?.(descriptor.resourceUrl);
1033
+ }
1034
+ catch (error) {
1035
+ console.warn(`[registerTable] setBase failed for ${table.config.name}:`, error);
1036
+ }
1037
+ }
1038
+ }
1039
+ catch (error) {
1040
+ console.warn(`[registerTable] Resource preparation failed for ${table.config.name}:`, error);
1041
+ }
1042
+ this.registeredTables.add(tableKey);
1043
+ // 委托给 DataDiscovery 进行注册
1044
+ await this.discovery.register(table, {
1045
+ registryPath: table.config.saiRegistryPath,
1046
+ });
1047
+ }
1048
+ /**
1049
+ * 查找用户的 TypeIndex
1050
+ */
1051
+ async findTypeIndex() {
1052
+ return this.typeIndexManager.findTypeIndex();
1053
+ }
1054
+ /**
1055
+ * 创建 TypeIndex
1056
+ */
1057
+ async createTypeIndex() {
1058
+ return this.typeIndexManager.createTypeIndex();
1059
+ }
1060
+ /**
1061
+ * 发现已注册的类型
1062
+ */
1063
+ async discoverTypes(typeIndexUrl) {
1064
+ return this.typeIndexManager.discoverTypes(typeIndexUrl);
1065
+ }
1066
+ /**
1067
+ * 自动发现和注册类型(用于数据消费方)
1068
+ */
1069
+ async autoDiscoverAndRegister(webId) {
1070
+ return this.typeIndexManager.autoDiscoverAndRegister(webId);
1071
+ }
1072
+ /**
1073
+ * 从 Profile 中自动发现类型(不依赖 TypeIndex)
1074
+ */
1075
+ async discoverTypesFromProfile() {
1076
+ return this.typeIndexManager.discoverTypesFromProfile();
1077
+ }
1078
+ /**
1079
+ * 发现特定的类型定义(按需发现)
1080
+ * @param rdfClassUri 要发现的 RDF 类型 URI
1081
+ */
1082
+ async discoverSpecificType(rdfClassUri) {
1083
+ return this.typeIndexManager.discoverSpecificType(rdfClassUri);
1084
+ }
1085
+ /**
1086
+ * 发现多个特定类型
1087
+ * @param rdfClassUris 要发现的 RDF 类型 URI 数组
1088
+ */
1089
+ async discoverSpecificTypes(rdfClassUris) {
1090
+ return this.typeIndexManager.discoverSpecificTypes(rdfClassUris);
1091
+ }
1092
+ /**
1093
+ * 发现并创建可用的表定义
1094
+ * @param rdfClassUri 要发现的 RDF 类型 URI
1095
+ * @returns 可用的表定义,如果未找到则返回 null
1096
+ */
1097
+ async discoverTable(rdfClassUri) {
1098
+ return this.typeIndexManager.discoverTable(rdfClassUri);
1099
+ }
1100
+ /**
1101
+ * 发现并创建多个可用的表定义
1102
+ * @param rdfClassUris 要发现的 RDF 类型 URI 数组
1103
+ * @returns 可用的表定义数组
1104
+ */
1105
+ async discoverTables(rdfClassUris) {
1106
+ return this.typeIndexManager.discoverTables(rdfClassUris);
1107
+ }
1108
+ /**
1109
+ * 检查类型是否已注册
1110
+ */
1111
+ async isTypeRegistered(type, typeIndexUrl) {
1112
+ return this.typeIndexManager.isTypeRegistered(type, typeIndexUrl);
1113
+ }
1114
+ /**
1115
+ * 获取 TypeIndex 管理器
1116
+ */
1117
+ getTypeIndexManager() {
1118
+ return this.typeIndexManager;
1119
+ }
1120
+ /**
1121
+ * @deprecated 此方法已废弃,不再使用
1122
+ *
1123
+ * 原因:
1124
+ * 1. 每次 GET 整个容器内容效率极低(对于大容器可能有几 MB)
1125
+ * 2. 使用字符串匹配检查资源存在性不够可靠
1126
+ * 3. SPARQL INSERT 本身不会覆盖已存在的三元组,重复插入只会添加新的三元组
1127
+ * 4. 如果需要防止重复插入,应该由业务层处理(使用 INSERT WHERE NOT EXISTS)
1128
+ *
1129
+ * 改进的资源存在性检查 - 使用直接 HTTP 而不是 Comunica ASK
1130
+ * 这解决了 409 冲突问题:当 ASK 查询失败时,不应该继续 INSERT
1131
+ */
1132
+ async checkResourceExistence(values, table, containerUrl) {
1133
+ console.warn('[DEPRECATED] checkResourceExistence is deprecated and should not be used');
1134
+ try {
1135
+ let targetContainer = containerUrl.startsWith('http')
1136
+ ? containerUrl
1137
+ : this.resolveAbsoluteUrl(containerUrl);
1138
+ if (!targetContainer.endsWith('/')) {
1139
+ targetContainer = `${targetContainer}/`;
1140
+ }
1141
+ console.log(`🔍 检查资源存在性: ${targetContainer}`);
1142
+ // 直接读取容器内容,检查是否包含我们要插入的资源
1143
+ const response = await this.runtime.getFetch()(targetContainer, {
1144
+ method: 'GET',
1145
+ headers: {
1146
+ 'Accept': 'text/turtle'
1147
+ }
1148
+ });
1149
+ if (!response.ok) {
1150
+ if (response.status === 404) {
1151
+ // 容器不存在,资源肯定不存在
1152
+ console.log(`✅ 容器不存在,可以执行 INSERT`);
1153
+ return true; // 可以继续 INSERT
1154
+ }
1155
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
1156
+ }
1157
+ const turtleData = await response.text();
1158
+ console.log(`📖 容器内容长度: ${turtleData.length} 字符`);
1159
+ // 检查每个要插入的资源是否已存在
1160
+ for (const record of values) {
1161
+ const subjectUri = this.sparqlConverter.generateSubjectUri(record, table);
1162
+ // 检查 Turtle 数据中是否包含这个资源 URI
1163
+ if (turtleData.includes(subjectUri)) {
1164
+ console.log(`❌ 发现已存在的资源: ${subjectUri}`);
1165
+ return false; // 资源已存在,不能 INSERT
1166
+ }
1167
+ }
1168
+ console.log(`✅ 资源存在性检查通过,可以执行 INSERT`);
1169
+ return true; // 所有资源都不存在,可以 INSERT
1170
+ }
1171
+ catch (error) {
1172
+ console.error('❌ 资源存在性检查失败:', error);
1173
+ throw error;
1174
+ }
1175
+ }
1176
+ // 确保容器存在(递归创建父目录)
1177
+ async ensureContainerExists(containerUrl) {
1178
+ try {
1179
+ const targetContainer = this.normalizeContainerKey(containerUrl);
1180
+ if (this.preparedContainers.has(targetContainer)) {
1181
+ return;
1182
+ }
1183
+ const checkResponse = await this.runtime.getFetch()(targetContainer, {
1184
+ method: 'HEAD'
1185
+ });
1186
+ if (checkResponse.status === 401 || checkResponse.status === 403) {
1187
+ console.log(`[Container] ${targetContainer} 不允许 HEAD,视为已存在`);
1188
+ this.markContainerPrepared(targetContainer);
1189
+ return;
1190
+ }
1191
+ if (checkResponse.status === 404) {
1192
+ // 先递归创建父容器
1193
+ const parentContainer = this.getParentContainer(targetContainer);
1194
+ if (parentContainer && parentContainer !== targetContainer) {
1195
+ console.log(`[Container] 先创建父容器: ${parentContainer}`);
1196
+ await this.ensureContainerExists(parentContainer);
1197
+ }
1198
+ // 再创建当前容器
1199
+ console.log(`[Container] 创建容器: ${targetContainer}`);
1200
+ const createResponse = await this.runtime.getFetch()(targetContainer, {
1201
+ method: 'PUT',
1202
+ headers: {
1203
+ 'Content-Type': 'text/turtle',
1204
+ 'Link': '<http://www.w3.org/ns/ldp#BasicContainer>; rel="type"'
1205
+ }
1206
+ });
1207
+ if (createResponse.ok) {
1208
+ console.log(`[Container] 容器创建成功: ${createResponse.status}`);
1209
+ await this.sparqlExecutor.invalidateHttpCache(targetContainer);
1210
+ this.markContainerPrepared(targetContainer);
1211
+ }
1212
+ else if (createResponse.status === 409) {
1213
+ console.log(`[Container] 容器已存在(409冲突): ${targetContainer}`);
1214
+ this.markContainerPrepared(targetContainer);
1215
+ }
1216
+ else {
1217
+ throw new Error(`Failed to create container: ${createResponse.status} ${createResponse.statusText}`);
1218
+ }
1219
+ }
1220
+ else if (checkResponse.status === 200) {
1221
+ console.log(`[Container] 容器已存在: ${targetContainer}`);
1222
+ this.markContainerPrepared(targetContainer);
1223
+ }
1224
+ else if (checkResponse.status === 409) {
1225
+ console.log(`[Container] 容器已存在(409冲突): ${targetContainer}`);
1226
+ this.markContainerPrepared(targetContainer);
1227
+ }
1228
+ else if (!checkResponse.ok) {
1229
+ throw new Error(`Failed to check container: ${checkResponse.status} ${checkResponse.statusText}`);
1230
+ }
1231
+ }
1232
+ catch (error) {
1233
+ console.error('[Container] 确保容器存在时出错:', error);
1234
+ throw error;
1235
+ }
1236
+ }
1237
+ /**
1238
+ * 获取父容器 URL
1239
+ * 例如: https://pod.com/alice/data/users/ -> https://pod.com/alice/data/
1240
+ */
1241
+ getParentContainer(containerUrl) {
1242
+ try {
1243
+ const url = new URL(containerUrl);
1244
+ const pathParts = url.pathname.split('/').filter(part => part.length > 0);
1245
+ // 如果已经是根目录或只有一层,返回 null
1246
+ if (pathParts.length <= 1) {
1247
+ return null;
1248
+ }
1249
+ // 移除最后一个路径部分
1250
+ pathParts.pop();
1251
+ // 重建父容器 URL
1252
+ url.pathname = '/' + pathParts.join('/') + '/';
1253
+ return url.toString();
1254
+ }
1255
+ catch (error) {
1256
+ console.error('[Container] 解析父容器 URL 失败:', error);
1257
+ return null;
1258
+ }
1259
+ }
1260
+ /**
1261
+ * List all resources in a container
1262
+ * Uses LDP containment triples to discover resources
1263
+ */
1264
+ async listContainerResources(containerUrl) {
1265
+ const normalizedUrl = this.normalizeContainerKey(containerUrl);
1266
+ const resources = [];
1267
+ try {
1268
+ // Query the container for ldp:contains relationships via SPARQL
1269
+ // This is more reliable than parsing Turtle as it handles all serialization formats
1270
+ const sparql = {
1271
+ type: 'SELECT',
1272
+ query: `
1273
+ PREFIX ldp: <http://www.w3.org/ns/ldp#>
1274
+ SELECT ?resource WHERE {
1275
+ <${normalizedUrl}> ldp:contains ?resource .
1276
+ }
1277
+ `,
1278
+ prefixes: { ldp: 'http://www.w3.org/ns/ldp#' }
1279
+ };
1280
+ const results = await this.sparqlExecutor.queryContainer(normalizedUrl, sparql);
1281
+ for (const row of results) {
1282
+ const resource = row.resource;
1283
+ if (resource) {
1284
+ const resourceUrl = typeof resource === 'object' && resource.value
1285
+ ? resource.value
1286
+ : String(resource);
1287
+ resources.push(resourceUrl);
1288
+ }
1289
+ }
1290
+ }
1291
+ catch (e) {
1292
+ console.warn('[listContainerResources] SPARQL query failed:', e);
1293
+ }
1294
+ return resources;
1295
+ }
1296
+ }
1297
+ exports.PodDialect = PodDialect;
1298
+ _a = drizzle_orm_1.entityKind;
1299
+ PodDialect[_a] = 'PodDialect';
1300
+ //# sourceMappingURL=pod-dialect.js.map