@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,1175 @@
1
+ var _a;
2
+ import { entityKind } from 'drizzle-orm';
3
+ import { isSolidSchema } from './schema';
4
+ import { inArray } from './query-conditions';
5
+ import { NotificationsClient } from './notifications';
6
+ import { FederatedQueryExecutor } from './federated';
7
+ /**
8
+ * 从 SolidSchema 或 PodTable 获取 type
9
+ */
10
+ function getTargetType(target) {
11
+ if (isSolidSchema(target)) {
12
+ return target.type;
13
+ }
14
+ return target.config.type;
15
+ }
16
+ export class PodDatabase {
17
+ constructor(dialect, session, schema) {
18
+ this.dialect = dialect;
19
+ this.session = session;
20
+ this.schema = schema;
21
+ this.notificationsClient = null;
22
+ this.federatedExecutor = null;
23
+ /** 最近一次联邦查询的错误(如果有) */
24
+ this.lastFederatedErrors = [];
25
+ }
26
+ /**
27
+ * 获取最近一次联邦查询的错误
28
+ * 在调用 findMany 等方法后可以检查此值
29
+ */
30
+ getLastFederatedErrors() {
31
+ return this.lastFederatedErrors;
32
+ }
33
+ /**
34
+ * 清除联邦查询错误
35
+ */
36
+ clearFederatedErrors() {
37
+ this.lastFederatedErrors = [];
38
+ }
39
+ /**
40
+ * 获取或创建 FederatedQueryExecutor
41
+ */
42
+ getFederatedExecutor() {
43
+ if (!this.federatedExecutor) {
44
+ this.federatedExecutor = new FederatedQueryExecutor({
45
+ fetch: this.dialect.getAuthenticatedFetch(),
46
+ });
47
+ }
48
+ return this.federatedExecutor;
49
+ }
50
+ /**
51
+ * Create a table from a schema with hooks
52
+ *
53
+ * This is the recommended way to create tables when you need hooks that
54
+ * can access the database instance (e.g., for cross-table operations).
55
+ *
56
+ * @param schema - The schema definition (created via solidSchema())
57
+ * @param options - Table options including base path and hooks
58
+ * @returns A PodTable instance with hooks bound to this database
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const userSchema = solidSchema('users', {
63
+ * id: id(),
64
+ * name: text('name').predicate(SCHEMA.name),
65
+ * email: text('email').predicate(SCHEMA.email),
66
+ * }, {
67
+ * type: SCHEMA.Person,
68
+ * });
69
+ *
70
+ * const userTable = db.createTable(userSchema, {
71
+ * base: '/data/users/',
72
+ * hooks: {
73
+ * afterInsert: async (ctx, record) => {
74
+ * // ctx.db is available - can query/insert other tables
75
+ * await ctx.db.insert(auditTable).values({
76
+ * action: 'user_created',
77
+ * userId: record['@id'],
78
+ * });
79
+ * },
80
+ * afterUpdate: async (ctx, record, changes) => {
81
+ * if ('email' in changes) {
82
+ * // Send verification email via another service
83
+ * await ctx.db.insert(notificationTable).values({
84
+ * type: 'email_changed',
85
+ * userId: record['@id'],
86
+ * });
87
+ * }
88
+ * },
89
+ * },
90
+ * });
91
+ * ```
92
+ */
93
+ createTable(schema, options) {
94
+ // Create table using schema.table() with the base path
95
+ const table = schema.table('default', options);
96
+ // Attach hooks if provided
97
+ if (options.hooks) {
98
+ table.config.hooks = options.hooks;
99
+ }
100
+ // Store reference to db in table for hook context
101
+ // This allows hooks to access db when invoked
102
+ table._db = this;
103
+ return table;
104
+ }
105
+ // SELECT 查询
106
+ select(fields) {
107
+ return this.session.select(fields);
108
+ }
109
+ // INSERT 查询
110
+ insert(table) {
111
+ return this.session.insert(table);
112
+ }
113
+ // UPDATE 查询
114
+ update(table) {
115
+ return this.session.update(table);
116
+ }
117
+ // DELETE 查询
118
+ delete(table) {
119
+ return this.session.delete(table);
120
+ }
121
+ // Find first matching row (LIMIT 1)
122
+ async findFirst(table, where) {
123
+ const builder = this.select().from(table).limit(1);
124
+ if (where && Object.keys(where).length > 0) {
125
+ builder.where(where);
126
+ }
127
+ const rows = await builder;
128
+ return rows.length > 0 ? rows[0] : null;
129
+ }
130
+ /**
131
+ * 通过完整 IRI 查询单个实体
132
+ *
133
+ * @param table - 表定义(用于解析 schema)
134
+ * @param iri - 完整 IRI,本地或远程
135
+ * @returns 实体数据,如果不存在则返回 null
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * // 本地 Agent
140
+ * db.findByIri(agentTable, 'https://my.pod/agents/translator')
141
+ *
142
+ * // 远程 Profile
143
+ * db.findByIri(solidProfileTable, 'https://alice.pod/profile/card#me')
144
+ *
145
+ * // 业务层不区分本地远程
146
+ * db.findByIri(agentTable, contact.entityUri)
147
+ * ```
148
+ */
149
+ async findByIri(table, iri) {
150
+ if (!iri || typeof iri !== 'string') {
151
+ throw new Error('findByIri requires a valid IRI string');
152
+ }
153
+ // 解析文档 URL(去掉 fragment)
154
+ const { documentUrl } = this.parseIri(iri);
155
+ // 用 schema.table(documentUrl) 创建指向目标位置的表
156
+ const targetTable = table.$schema.table('target', { base: documentUrl });
157
+ // 使用 whereByIri 内部方法
158
+ const rows = await this.session
159
+ .select()
160
+ .from(targetTable)
161
+ .whereByIri(iri)
162
+ .limit(1);
163
+ return (rows[0] ?? null);
164
+ }
165
+ /**
166
+ * 解析 IRI 为文档 URL 和 fragment
167
+ */
168
+ parseIri(iri) {
169
+ const hashIndex = iri.indexOf('#');
170
+ if (hashIndex >= 0) {
171
+ return {
172
+ documentUrl: iri.substring(0, hashIndex),
173
+ fragment: iri.substring(hashIndex + 1)
174
+ };
175
+ }
176
+ return { documentUrl: iri, fragment: null };
177
+ }
178
+ /**
179
+ * 通过完整 IRI 订阅单个实体的变更
180
+ *
181
+ * @param table - 表定义
182
+ * @param iri - 完整 IRI,本地或远程
183
+ * @param options - 订阅选项
184
+ * @returns 取消订阅函数
185
+ *
186
+ * @example
187
+ * ```typescript
188
+ * const unsubscribe = await db.subscribeByIri(
189
+ * solidProfileTable,
190
+ * 'https://alice.pod/profile/card#me',
191
+ * {
192
+ * onUpdate: (data) => {
193
+ * console.log('Profile updated:', data.name)
194
+ * },
195
+ * onDelete: () => {
196
+ * console.log('Profile deleted')
197
+ * },
198
+ * onError: (error) => {
199
+ * console.log('Subscription error:', error)
200
+ * }
201
+ * }
202
+ * )
203
+ *
204
+ * // 离开时取消订阅
205
+ * unsubscribe()
206
+ * ```
207
+ */
208
+ async subscribeByIri(table, iri, options) {
209
+ if (!iri || typeof iri !== 'string') {
210
+ throw new Error('subscribeByIri requires a valid IRI string');
211
+ }
212
+ if (!iri.startsWith('http://') && !iri.startsWith('https://')) {
213
+ throw new Error(`subscribeByIri requires an absolute IRI, got: ${iri}`);
214
+ }
215
+ // 懒初始化 NotificationsClient
216
+ if (!this.notificationsClient) {
217
+ const authenticatedFetch = this.dialect.getAuthenticatedFetch();
218
+ const config = {
219
+ preferredChannels: this.dialect.config.preferredChannels ?? ['streaming-http', 'websocket'],
220
+ };
221
+ this.notificationsClient = new NotificationsClient(authenticatedFetch, config);
222
+ }
223
+ // 解析文档 URL(订阅文档,而不是 fragment)
224
+ const { documentUrl } = this.parseIri(iri);
225
+ // 订阅文档变更
226
+ const subscription = await this.notificationsClient.subscribe(documentUrl, {
227
+ channel: options.channel,
228
+ features: options.features,
229
+ onNotification: async (event) => {
230
+ try {
231
+ if (event.type === 'Update') {
232
+ // 重新获取数据
233
+ const data = await this.findByIri(table, iri);
234
+ if (data) {
235
+ await options.onUpdate(data);
236
+ }
237
+ }
238
+ else if (event.type === 'Delete') {
239
+ await options.onDelete?.();
240
+ }
241
+ }
242
+ catch (error) {
243
+ options.onError?.(error);
244
+ }
245
+ },
246
+ onError: options.onError,
247
+ });
248
+ // 返回取消订阅函数
249
+ return () => subscription.unsubscribe();
250
+ }
251
+ /**
252
+ * 通过完整 IRI 更新单个实体
253
+ *
254
+ * @param table - 表定义
255
+ * @param iri - 完整 IRI
256
+ * @param data - 要更新的数据
257
+ * @returns 更新后的实体数据
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * const updated = await db.updateByIri(
262
+ * agentTable,
263
+ * 'https://my.pod/agents/translator#agent',
264
+ * { name: 'New Name', description: 'Updated description' }
265
+ * )
266
+ * ```
267
+ */
268
+ async updateByIri(table, iri, data) {
269
+ if (!iri || typeof iri !== 'string') {
270
+ throw new Error('updateByIri requires a valid IRI string');
271
+ }
272
+ if (!iri.startsWith('http://') && !iri.startsWith('https://')) {
273
+ throw new Error(`updateByIri requires an absolute IRI, got: ${iri}`);
274
+ }
275
+ // 解析文档 URL
276
+ const { documentUrl } = this.parseIri(iri);
277
+ // 用 schema.table(documentUrl) 创建指向目标位置的表
278
+ const targetTable = table.$schema.table('target', { base: documentUrl });
279
+ // 使用 whereByIri 内部方法进行更新
280
+ await this.session
281
+ .update(targetTable)
282
+ .set(data)
283
+ .whereByIri(iri);
284
+ // 返回更新后的数据
285
+ return await this.findByIri(table, iri);
286
+ }
287
+ /**
288
+ * 通过完整 IRI 删除单个实体
289
+ *
290
+ * @param table - 表定义
291
+ * @param iri - 完整 IRI
292
+ * @returns 是否删除成功
293
+ *
294
+ * @example
295
+ * ```typescript
296
+ * const deleted = await db.deleteByIri(
297
+ * agentTable,
298
+ * 'https://my.pod/agents/translator#agent'
299
+ * )
300
+ * ```
301
+ */
302
+ async deleteByIri(table, iri) {
303
+ if (!iri || typeof iri !== 'string') {
304
+ throw new Error('deleteByIri requires a valid IRI string');
305
+ }
306
+ if (!iri.startsWith('http://') && !iri.startsWith('https://')) {
307
+ throw new Error(`deleteByIri requires an absolute IRI, got: ${iri}`);
308
+ }
309
+ // 先检查实体是否存在
310
+ const existing = await this.findByIri(table, iri);
311
+ if (!existing) {
312
+ return false;
313
+ }
314
+ // 解析文档 URL
315
+ const { documentUrl } = this.parseIri(iri);
316
+ // 用 schema.table(documentUrl) 创建指向目标位置的表
317
+ const targetTable = table.$schema.table('target', { base: documentUrl });
318
+ // 使用 whereByIri 内部方法进行删除
319
+ await this.session
320
+ .delete(targetTable)
321
+ .whereByIri(iri);
322
+ return true;
323
+ }
324
+ // 事务支持
325
+ async transaction(transaction) {
326
+ return await this.session.transaction(async (txSession) => {
327
+ const txDb = new PodDatabase(this.dialect, txSession, this.schema);
328
+ return await transaction(txDb);
329
+ });
330
+ }
331
+ // 获取方言信息
332
+ getDialect() {
333
+ return this.dialect;
334
+ }
335
+ // 获取会话信息
336
+ getSession() {
337
+ return this.session;
338
+ }
339
+ // 获取模式信息
340
+ getSchema() {
341
+ return this.schema;
342
+ }
343
+ /**
344
+ * 数据发现入口(TypeIndex + SAI 组合策略)
345
+ */
346
+ get discovery() {
347
+ return this.dialect.getDiscovery();
348
+ }
349
+ // 连接状态
350
+ async connect() {
351
+ return await this.dialect.connect();
352
+ }
353
+ // 断开连接
354
+ async disconnect() {
355
+ // 取消所有订阅
356
+ if (this.notificationsClient) {
357
+ this.notificationsClient.unsubscribeAll();
358
+ }
359
+ return await this.dialect.disconnect();
360
+ }
361
+ /**
362
+ * 订阅表/资源的变化通知
363
+ *
364
+ * @param table - 要订阅的表(会订阅其容器或资源)
365
+ * @param options - 订阅选项,支持按类型分开的回调
366
+ * @returns 订阅句柄,可用于取消订阅
367
+ *
368
+ * @example
369
+ * ```typescript
370
+ * const subscription = await db.subscribe(posts, {
371
+ * onCreate: async (activity) => {
372
+ * console.log('Created:', activity.object);
373
+ * const latest = await db.select().from(posts);
374
+ * },
375
+ * onUpdate: async (activity) => {
376
+ * console.log('Updated:', activity.object);
377
+ * const latest = await db.select().from(posts);
378
+ * },
379
+ * onDelete: (activity) => {
380
+ * console.log('Deleted:', activity.object);
381
+ * },
382
+ * onError: (error) => {
383
+ * console.error('Subscription error:', error);
384
+ * }
385
+ * });
386
+ *
387
+ * // 取消订阅
388
+ * subscription.unsubscribe();
389
+ * ```
390
+ */
391
+ async subscribe(table, options) {
392
+ // 懒初始化 NotificationsClient
393
+ if (!this.notificationsClient) {
394
+ const authenticatedFetch = this.dialect.getAuthenticatedFetch();
395
+ const config = {
396
+ preferredChannels: this.dialect.config.preferredChannels ?? ['streaming-http', 'websocket'],
397
+ };
398
+ this.notificationsClient = new NotificationsClient(authenticatedFetch, config);
399
+ }
400
+ // 获取表的资源 URL(容器或文件),支持 iri 覆盖
401
+ const topic = this.resolveTableTopic(table, options.iri);
402
+ // 将 TableSubscribeOptions 转换为底层 SubscribeOptions
403
+ const subscribeOptions = {
404
+ channel: options.channel,
405
+ features: options.features,
406
+ onNotification: (event) => {
407
+ options.onNotification?.(event);
408
+ const hasTypedHandlers = Boolean(options.onCreate || options.onUpdate || options.onDelete || options.onAdd || options.onRemove);
409
+ if (hasTypedHandlers) {
410
+ // 构造 Activity 对象
411
+ const activity = {
412
+ id: event.id,
413
+ type: event.type,
414
+ object: event.object,
415
+ published: event.published,
416
+ state: event.state,
417
+ };
418
+ // 根据类型分发到对应回调
419
+ switch (event.type) {
420
+ case 'Create':
421
+ options.onCreate?.(activity);
422
+ break;
423
+ case 'Update':
424
+ options.onUpdate?.(activity);
425
+ break;
426
+ case 'Delete':
427
+ options.onDelete?.(activity);
428
+ break;
429
+ case 'Add':
430
+ options.onAdd?.(activity);
431
+ break;
432
+ case 'Remove':
433
+ options.onRemove?.(activity);
434
+ break;
435
+ }
436
+ }
437
+ },
438
+ onError: options.onError,
439
+ onClose: options.onClose,
440
+ };
441
+ return this.notificationsClient.subscribe(topic, subscribeOptions);
442
+ }
443
+ /**
444
+ * 解析表对应的订阅主题 URL
445
+ * @param table 表定义
446
+ * @param iriOverride 可选的 IRI 覆盖(用于订阅其他 Pod 的资源)
447
+ */
448
+ resolveTableTopic(table, iriOverride) {
449
+ // 如果提供了 iri 覆盖,直接使用
450
+ if (iriOverride) {
451
+ if (!iriOverride.startsWith('http://') && !iriOverride.startsWith('https://')) {
452
+ throw new Error(`iri must be an absolute URL, got: ${iriOverride}`);
453
+ }
454
+ return iriOverride;
455
+ }
456
+ const base = table.config.base || '';
457
+ // 如果 base 已经是绝对 URL,直接使用
458
+ if (base.startsWith('http://') || base.startsWith('https://')) {
459
+ return base;
460
+ }
461
+ // 使用 dialect.getPodUrl() 获取正确的 Pod 根路径
462
+ // 这确保与其他 URL 解析逻辑一致(如 TypeIndex、SPARQL endpoint 等)
463
+ const podUrl = this.dialect.getPodUrl();
464
+ const baseUrl = podUrl.endsWith('/') ? podUrl : `${podUrl}/`;
465
+ const relativeBase = base.startsWith('/') ? base.slice(1) : base;
466
+ return `${baseUrl}${relativeBase}`;
467
+ }
468
+ // 获取连接配置
469
+ getConfig() {
470
+ return this.dialect.getConfig();
471
+ }
472
+ /**
473
+ * 通过 RDF 类型自动发现并生成表定义
474
+ *
475
+ * 流程:
476
+ * 1. 通过 TypeIndex/Interop 发现数据位置
477
+ * 2. 如果有 ShapeTree/Shape,加载并解析
478
+ * 3. 从 Shape 生成 PodTable 定义
479
+ *
480
+ * @param rdfClass RDF 类型 URI (如 'http://schema.org/Person')
481
+ * @returns 生成的 PodTable,如果未发现则返回 null
482
+ *
483
+ * @example
484
+ * ```typescript
485
+ * // 自动发现 Person 类型的表
486
+ * const persons = await db.discoverTable('http://schema.org/Person');
487
+ * if (persons) {
488
+ * const data = await db.select().from(persons);
489
+ * }
490
+ * ```
491
+ */
492
+ async discoverTable(rdfClass) {
493
+ // 1. 发现数据位置
494
+ const locations = await this.dialect.discoverDataLocations(rdfClass);
495
+ if (locations.length === 0) {
496
+ console.log(`[discoverTable] No data locations found for ${rdfClass}`);
497
+ return null;
498
+ }
499
+ const location = locations[0]; // 使用第一个发现的位置
500
+ const shapeUrl = location.shapes[0]?.url;
501
+ console.log(`[discoverTable] Found location: ${location.container}, shape: ${shapeUrl || 'none'}`);
502
+ // 2. 如果有 Shape,加载并生成表
503
+ if (shapeUrl) {
504
+ const shapeManager = this.dialect.getShapeManager();
505
+ const shape = await shapeManager.loadShape(shapeUrl, this.dialect.getAuthenticatedFetch());
506
+ if (shape) {
507
+ console.log(`[discoverTable] Loaded shape with ${shape.properties.length} properties`);
508
+ const generated = shapeManager.shapeToTable(shape, location.container);
509
+ // 初始化表
510
+ await this.init(generated.table);
511
+ return generated.table;
512
+ }
513
+ }
514
+ // 3. 没有 Shape,使用基础表定义(仅 id 列)
515
+ console.log(`[discoverTable] No shape available, creating basic table`);
516
+ const { podTable, string } = await import('./schema');
517
+ const tableName = this.extractClassName(rdfClass);
518
+ const table = podTable(tableName, {
519
+ id: string('id').primaryKey()
520
+ }, {
521
+ type: rdfClass,
522
+ base: location.container
523
+ });
524
+ await this.init(table);
525
+ return table;
526
+ }
527
+ /**
528
+ * 发现多个类型的表
529
+ */
530
+ async discoverTables(rdfClasses) {
531
+ const tables = [];
532
+ for (const rdfClass of rdfClasses) {
533
+ const table = await this.discoverTable(rdfClass);
534
+ if (table) {
535
+ tables.push(table);
536
+ }
537
+ }
538
+ return tables;
539
+ }
540
+ /**
541
+ * 发现某类型数据的所有位置
542
+ * @param rdfClass RDF 类型 URI
543
+ * @param options 可选的过滤选项
544
+ * @returns 数据位置列表
545
+ *
546
+ * @example
547
+ * ```typescript
548
+ * // 发现所有 Person 类型的数据位置
549
+ * const locations = await db.discover('https://schema.org/Person');
550
+ *
551
+ * // 按 appId 过滤
552
+ * const acmeLocations = await db.discover('https://schema.org/Person', {
553
+ * appId: 'https://acme.com/app#id'
554
+ * });
555
+ * ```
556
+ */
557
+ async discover(rdfClass, options) {
558
+ return this.dialect.discoverDataLocations(rdfClass, options);
559
+ }
560
+ /**
561
+ * 获取所有数据注册信息
562
+ * @returns 所有注册的数据信息列表
563
+ *
564
+ * @example
565
+ * ```typescript
566
+ * const allRegistrations = await db.discoverAll();
567
+ * for (const reg of allRegistrations) {
568
+ * console.log(`${reg.rdfClass} at ${reg.container}`);
569
+ * console.log(` Shape: ${reg.shape}`);
570
+ * console.log(` Registered by: ${reg.registeredBy}`);
571
+ * }
572
+ * ```
573
+ */
574
+ async discoverAll() {
575
+ return this.dialect.discoverAll();
576
+ }
577
+ /**
578
+ * 按应用 ID 发现数据位置
579
+ * @param appId 应用标识符
580
+ * @returns 该应用注册的数据位置列表
581
+ *
582
+ * @example
583
+ * ```typescript
584
+ * const acmeData = await db.discoverByApp('https://acme.com/app#id');
585
+ * ```
586
+ */
587
+ async discoverByApp(appId) {
588
+ return this.dialect.discoverByApp(appId);
589
+ }
590
+ /**
591
+ * 从 DataLocation 创建 PodTable
592
+ * 如果 location 有 shape,会加载 Shape 并生成完整的表定义
593
+ *
594
+ * @param location 数据位置信息
595
+ * @param options 转换选项,可指定使用哪个 Shape
596
+ * @returns PodTable 实例
597
+ *
598
+ * @example
599
+ * ```typescript
600
+ * // 使用第一个可用的 Shape
601
+ * const table = await db.locationToTable(location);
602
+ *
603
+ * // 指定使用某个 app 注册的 Shape
604
+ * const table = await db.locationToTable(location, {
605
+ * appId: 'https://acme.com/app#id'
606
+ * });
607
+ *
608
+ * // 直接传入 ShapeInfo 对象
609
+ * const table = await db.locationToTable(location, {
610
+ * shape: location.shapes[0]
611
+ * });
612
+ *
613
+ * // 或者传入 Shape URL
614
+ * const table = await db.locationToTable(location, {
615
+ * shape: 'https://shapes.example/Person.shacl'
616
+ * });
617
+ * ```
618
+ */
619
+ async locationToTable(location, options) {
620
+ const opts = options ?? {};
621
+ // 1. 选择 Shape(按优先级:shape > appId > 默认第一个)
622
+ let selectedShape;
623
+ if (opts.shape) {
624
+ // 直接指定 Shape
625
+ if (typeof opts.shape === 'string') {
626
+ // Shape URL
627
+ selectedShape = location.shapes.find(s => s.url === opts.shape);
628
+ if (!selectedShape) {
629
+ // URL 不在 shapes 列表中,创建临时 ShapeInfo
630
+ selectedShape = { url: opts.shape, source: 'config' };
631
+ }
632
+ }
633
+ else {
634
+ // ShapeInfo 对象
635
+ selectedShape = opts.shape;
636
+ }
637
+ }
638
+ else if (opts.appId) {
639
+ // 按 appId 选择
640
+ selectedShape = location.shapes.find(s => s.registeredBy === opts.appId);
641
+ if (!selectedShape) {
642
+ throw new Error(`[locationToTable] No shape found for appId: ${opts.appId}`);
643
+ }
644
+ }
645
+ else {
646
+ // 默认使用第一个
647
+ selectedShape = location.shapes[0];
648
+ }
649
+ // 2. 如果有 Shape,加载并生成表
650
+ if (selectedShape?.url) {
651
+ const shapeManager = this.dialect.getShapeManager();
652
+ const shape = await shapeManager.loadShape(selectedShape.url, this.dialect.getAuthenticatedFetch());
653
+ if (shape) {
654
+ console.log(`[locationToTable] Loaded shape: ${selectedShape.url} (${shape.properties.length} properties)`);
655
+ if (selectedShape.registeredBy) {
656
+ console.log(`[locationToTable] -> registeredBy: ${selectedShape.registeredBy}`);
657
+ }
658
+ const generated = shapeManager.shapeToTable(shape, location.container);
659
+ // 初始化表
660
+ await this.init(generated.table);
661
+ return generated.table;
662
+ }
663
+ }
664
+ // 3. 没有 Shape,返回仅含 id 的基础表
665
+ console.log(`[locationToTable] No shape available, creating basic table for container: ${location.container}`);
666
+ const { podTable, string } = await import('./schema');
667
+ const tableName = this.extractContainerName(location.container);
668
+ const table = podTable(tableName, {
669
+ id: string('id').primaryKey()
670
+ }, {
671
+ type: 'http://www.w3.org/2000/01/rdf-schema#Resource',
672
+ base: location.container
673
+ });
674
+ await this.init(table);
675
+ return table;
676
+ }
677
+ /**
678
+ * 从容器 URL 提取表名
679
+ */
680
+ extractContainerName(containerUrl) {
681
+ // 去掉末尾斜杠
682
+ const url = containerUrl.replace(/\/$/, '');
683
+ const lastSlash = url.lastIndexOf('/');
684
+ if (lastSlash >= 0) {
685
+ return url.substring(lastSlash + 1).toLowerCase() || 'data';
686
+ }
687
+ return 'data';
688
+ }
689
+ /**
690
+ * 发现并转换为表 - 支持按 appId 过滤
691
+ *
692
+ * @param rdfClass RDF 类型 URI
693
+ * @param options 发现选项
694
+ * @param tableOptions 转表选项(指定使用哪个 Shape)
695
+ *
696
+ * @example
697
+ * ```typescript
698
+ * // 发现所有 Person 表
699
+ * const allPersonTables = await db.discoverTablesFor('schema:Person');
700
+ *
701
+ * // 只要 Acme app 的 Person 表,并使用 Acme 的 Shape
702
+ * const acmePersonTable = await db.discoverTablesFor('schema:Person',
703
+ * { appId: 'https://acme.com/app#id' },
704
+ * { appId: 'https://acme.com/app#id' }
705
+ * );
706
+ * ```
707
+ */
708
+ async discoverTablesFor(rdfClass, options, tableOptions) {
709
+ const locations = await this.discover(rdfClass, options);
710
+ const tables = [];
711
+ for (const location of locations) {
712
+ const table = await this.locationToTable(location, tableOptions);
713
+ tables.push(table);
714
+ }
715
+ return tables;
716
+ }
717
+ /**
718
+ * 从 predicate URI 提取列名
719
+ */
720
+ predicateToColumnName(predicate) {
721
+ const hashIndex = predicate.lastIndexOf('#');
722
+ if (hashIndex >= 0) {
723
+ return predicate.substring(hashIndex + 1);
724
+ }
725
+ const slashIndex = predicate.lastIndexOf('/');
726
+ if (slashIndex >= 0) {
727
+ return predicate.substring(slashIndex + 1);
728
+ }
729
+ return predicate;
730
+ }
731
+ /**
732
+ * 从 RDF 类型 URI 提取类名
733
+ */
734
+ extractClassName(rdfClass) {
735
+ const hashIndex = rdfClass.lastIndexOf('#');
736
+ if (hashIndex >= 0) {
737
+ return rdfClass.substring(hashIndex + 1).toLowerCase();
738
+ }
739
+ const slashIndex = rdfClass.lastIndexOf('/');
740
+ if (slashIndex >= 0) {
741
+ return rdfClass.substring(slashIndex + 1).toLowerCase();
742
+ }
743
+ return rdfClass.toLowerCase();
744
+ }
745
+ // 数据源管理方法
746
+ addSource(source) {
747
+ this.dialect.addSource(source);
748
+ }
749
+ removeSource(source) {
750
+ this.dialect.removeSource(source);
751
+ }
752
+ getSources() {
753
+ return this.dialect.getSources();
754
+ }
755
+ async addSourcesFromTypeIndex() {
756
+ return await this.dialect.addSourcesFromTypeIndex();
757
+ }
758
+ async init(...args) {
759
+ // 解析参数:最后一个参数可能是 options
760
+ let options;
761
+ let tableArgs;
762
+ const lastArg = args[args.length - 1];
763
+ if (lastArg && typeof lastArg === 'object' && !Array.isArray(lastArg) && !('columns' in lastArg)) {
764
+ // 最后一个参数是 options
765
+ options = lastArg;
766
+ tableArgs = args.slice(0, -1);
767
+ }
768
+ else {
769
+ tableArgs = args;
770
+ }
771
+ const flattened = [];
772
+ for (const entry of tableArgs) {
773
+ if (!entry)
774
+ continue;
775
+ if (Array.isArray(entry)) {
776
+ for (const table of entry) {
777
+ if (table) {
778
+ flattened.push(table);
779
+ }
780
+ }
781
+ }
782
+ else {
783
+ flattened.push(entry);
784
+ }
785
+ }
786
+ for (const table of flattened) {
787
+ if (typeof table.init === 'function') {
788
+ await table.init(this.dialect);
789
+ }
790
+ else {
791
+ await this.dialect.registerTable(table);
792
+ }
793
+ // 如果需要生成 Shape
794
+ if (options?.generateShape || options?.saveShape) {
795
+ const shapeManager = this.dialect.getShapeManager();
796
+ const shape = shapeManager.generateShape(table);
797
+ // 如果需要保存 Shape
798
+ if (options?.saveShape) {
799
+ const podUrl = this.dialect.getPodUrl();
800
+ let shapeLocation = options.shapeLocation;
801
+ if (!shapeLocation) {
802
+ // 默认保存到 /shapes/ 目录
803
+ shapeLocation = `${podUrl}shapes/`;
804
+ }
805
+ else if (!shapeLocation.startsWith('http')) {
806
+ // 相对路径转绝对路径
807
+ shapeLocation = `${podUrl}${shapeLocation.replace(/^\//, '')}`;
808
+ }
809
+ // 确保以 / 结尾(容器)
810
+ if (!shapeLocation.endsWith('/')) {
811
+ shapeLocation += '/';
812
+ }
813
+ const shapeUrl = `${shapeLocation}${table.config.name}Shape.ttl`;
814
+ try {
815
+ await shapeManager.saveShape(shape, shapeUrl);
816
+ console.log(`[init] Shape saved to: ${shapeUrl}`);
817
+ }
818
+ catch (error) {
819
+ console.warn(`[init] Failed to save Shape to ${shapeUrl}:`, error);
820
+ }
821
+ }
822
+ }
823
+ }
824
+ }
825
+ get query() {
826
+ if (!this.queryProxy) {
827
+ this.queryProxy = this.buildQueryProxy();
828
+ }
829
+ return this.queryProxy;
830
+ }
831
+ buildQueryProxy() {
832
+ const schemaEntries = (this.schema && typeof this.schema === 'object')
833
+ ? Object.entries(this.schema)
834
+ : [];
835
+ const tableMap = new Map();
836
+ for (const [key, value] of schemaEntries) {
837
+ if (value && typeof value === 'object' && 'columns' in value) {
838
+ tableMap.set(key, value);
839
+ }
840
+ }
841
+ const createHelper = (tableName, table) => {
842
+ const findMany = async (options) => {
843
+ // 清除之前的联邦查询错误
844
+ this.clearFederatedErrors();
845
+ let builder = this.session.select(options?.columns).from(table);
846
+ if (options?.where) {
847
+ builder = builder.where(options.where);
848
+ }
849
+ if (options?.orderBy) {
850
+ const orderItems = Array.isArray(options.orderBy) ? options.orderBy : [options.orderBy];
851
+ orderItems.forEach((item) => {
852
+ builder = builder.orderBy(item.column, item.direction ?? 'asc');
853
+ });
854
+ }
855
+ if (typeof options?.limit === 'number') {
856
+ builder = builder.limit(options.limit);
857
+ }
858
+ if (typeof options?.offset === 'number') {
859
+ builder = builder.offset(options.offset);
860
+ }
861
+ const rows = await builder;
862
+ if (options?.with && Object.keys(options.with).length > 0) {
863
+ return await this.eagerLoadWith(rows, table, options.with, tableMap);
864
+ }
865
+ return rows;
866
+ };
867
+ const findFirst = async (options) => {
868
+ const rows = await findMany({ ...options, limit: 1 });
869
+ return rows[0] ?? null;
870
+ };
871
+ const findById = async (id, options) => {
872
+ return await findFirst({ ...options, where: { ...(options?.where ?? {}), id } });
873
+ };
874
+ /**
875
+ * @deprecated Use db.findByIri(table, iri) instead
876
+ */
877
+ const findByIRI = async (iri, _options) => {
878
+ // Delegate to the main findByIri method
879
+ return await this.findByIri(table, iri);
880
+ };
881
+ const count = async (options) => {
882
+ const rows = await findMany({ where: options?.where, columns: undefined, limit: undefined, offset: undefined });
883
+ return rows.length;
884
+ };
885
+ return {
886
+ findMany,
887
+ findFirst,
888
+ findById,
889
+ findByIRI,
890
+ count
891
+ };
892
+ };
893
+ const proxyTarget = {};
894
+ return new Proxy(proxyTarget, {
895
+ get: (_, prop) => {
896
+ if (tableMap.has(prop)) {
897
+ return createHelper(prop, tableMap.get(prop));
898
+ }
899
+ return undefined;
900
+ }
901
+ });
902
+ }
903
+ async eagerLoadWith(rows, parentTable, withOption, tableMap) {
904
+ if (!rows || rows.length === 0) {
905
+ return rows;
906
+ }
907
+ const dedupedRows = this.dedupeBySubject(rows);
908
+ for (const [key, entry] of Object.entries(withOption)) {
909
+ if (!entry)
910
+ continue;
911
+ const relationDef = parentTable.relations?.[key];
912
+ const targetTable = (typeof entry === 'object' && entry.table)
913
+ ? entry.table
914
+ : relationDef?.table ?? tableMap.get(key);
915
+ if (!targetTable)
916
+ continue;
917
+ // 联邦查询:使用 FederatedQueryExecutor
918
+ if (isSolidSchema(targetTable) || relationDef?.isFederated) {
919
+ if (relationDef && relationDef.discover) {
920
+ try {
921
+ const executor = this.getFederatedExecutor();
922
+ const result = await executor.execute(dedupedRows, {
923
+ ...relationDef,
924
+ relationName: key,
925
+ });
926
+ // 收集错误
927
+ if (result.errors && result.errors.length > 0) {
928
+ this.lastFederatedErrors.push(...result.errors);
929
+ }
930
+ // 结果已经被添加到 dedupedRows 中
931
+ }
932
+ catch (error) {
933
+ console.warn(`Federated relation "${key}" failed:`, error);
934
+ // 设置空数组作为默认值
935
+ dedupedRows.forEach((row) => {
936
+ row[key] = [];
937
+ });
938
+ }
939
+ }
940
+ else {
941
+ console.warn(`Federated relation "${key}" missing discover function, skipping.`);
942
+ dedupedRows.forEach((row) => {
943
+ row[key] = [];
944
+ });
945
+ }
946
+ continue;
947
+ }
948
+ // 此时 targetTable 一定是 PodTable
949
+ const targetPodTable = targetTable;
950
+ const targetType = targetPodTable.config.type;
951
+ const candidateColumns = relationDef?.fields && relationDef.fields.length > 0
952
+ ? relationDef.fields
953
+ : Object.values(targetPodTable.columns ?? {});
954
+ const referenceColumns = relationDef?.fields && relationDef.fields.length > 0
955
+ ? candidateColumns
956
+ : candidateColumns.filter((col) => col?.options?.referenceTarget === parentTable.config.type &&
957
+ !col.isInverse?.());
958
+ if (referenceColumns.length === 0) {
959
+ const relationReferences = relationDef?.references ?? [];
960
+ const explicitInverse = relationReferences.filter((col) => Boolean(col &&
961
+ typeof col.isInverse === 'function' &&
962
+ col.isInverse() &&
963
+ col.options?.referenceTarget === targetType));
964
+ const parentColumns = Object.values(parentTable.columns ?? {});
965
+ const inverseCandidates = (explicitInverse.length > 0 ? explicitInverse : parentColumns).filter((col) => typeof col.isInverse === 'function' &&
966
+ col.isInverse() &&
967
+ col.options?.referenceTarget === targetType);
968
+ if (inverseCandidates.length === 0) {
969
+ continue;
970
+ }
971
+ const inverseValuesPerRow = dedupedRows.map((row) => this.collectInverseReferenceValues(row, inverseCandidates));
972
+ const uniqueIris = Array.from(new Set(inverseValuesPerRow
973
+ .flat()
974
+ .filter((iri) => typeof iri === 'string' && iri.length > 0)));
975
+ if (uniqueIris.length === 0) {
976
+ rows.forEach((row) => {
977
+ row[key] = [];
978
+ });
979
+ continue;
980
+ }
981
+ let childBuilder = this.session.select().from(targetPodTable);
982
+ childBuilder = childBuilder.whereByIri(uniqueIris);
983
+ const childRows = await childBuilder;
984
+ const groupedByIri = this.groupRowsByIri(childRows);
985
+ dedupedRows.forEach((row, index) => {
986
+ const iris = inverseValuesPerRow[index];
987
+ const related = [];
988
+ iris.forEach((iri) => {
989
+ const matches = groupedByIri.get(iri);
990
+ if (matches && matches.length > 0) {
991
+ related.push(...matches);
992
+ }
993
+ });
994
+ row[key] = related;
995
+ });
996
+ continue;
997
+ }
998
+ const refColumn = referenceColumns[0];
999
+ const referenceColumn = relationDef?.references && relationDef.references[0];
1000
+ const useReferenceIri = refColumn.isReference();
1001
+ const parentKeys = dedupedRows
1002
+ .map((row) => this.resolveParentKey(row, referenceColumn, useReferenceIri))
1003
+ .filter((value) => typeof value === 'string' && value.length > 0);
1004
+ if (parentKeys.length === 0) {
1005
+ continue;
1006
+ }
1007
+ let childBuilder = this.session.select().from(targetPodTable);
1008
+ if (useReferenceIri) {
1009
+ childBuilder = childBuilder.where(inArray(refColumn, parentKeys));
1010
+ }
1011
+ else {
1012
+ childBuilder = childBuilder.where({ [refColumn.name]: parentKeys });
1013
+ }
1014
+ const childRows = await childBuilder;
1015
+ const grouped = new Map();
1016
+ for (const child of childRows) {
1017
+ const fkValue = child[refColumn.name];
1018
+ const normalized = useReferenceIri
1019
+ ? this.normalizeReferenceValue(fkValue)
1020
+ : this.normalizeLiteralValue(fkValue);
1021
+ if (!normalized)
1022
+ continue;
1023
+ const arr = grouped.get(normalized) ?? [];
1024
+ arr.push(child);
1025
+ grouped.set(normalized, arr);
1026
+ }
1027
+ dedupedRows.forEach((row) => {
1028
+ const parentKey = this.resolveParentKey(row, referenceColumn, useReferenceIri);
1029
+ row[key] = parentKey ? grouped.get(parentKey) ?? [] : [];
1030
+ });
1031
+ }
1032
+ return dedupedRows;
1033
+ }
1034
+ dedupeBySubject(rows) {
1035
+ const merged = new Map();
1036
+ const order = [];
1037
+ for (const row of rows) {
1038
+ const key = this.resolveIriFromRow(row) ?? this.resolveIdFromRow(row);
1039
+ if (!key) {
1040
+ order.push(`__anon_${order.length}`);
1041
+ merged.set(order[order.length - 1], { ...row });
1042
+ continue;
1043
+ }
1044
+ if (!merged.has(key)) {
1045
+ merged.set(key, { ...row });
1046
+ order.push(key);
1047
+ continue;
1048
+ }
1049
+ const target = merged.get(key);
1050
+ for (const [col, value] of Object.entries(row)) {
1051
+ if (value === undefined)
1052
+ continue;
1053
+ const existing = target[col];
1054
+ if (existing === undefined) {
1055
+ target[col] = value;
1056
+ continue;
1057
+ }
1058
+ const existingArr = Array.isArray(existing) ? existing : [existing];
1059
+ const incomingArr = Array.isArray(value) ? value : [value];
1060
+ const mergedArr = [...existingArr];
1061
+ for (const incoming of incomingArr) {
1062
+ if (!mergedArr.some((item) => item === incoming)) {
1063
+ mergedArr.push(incoming);
1064
+ }
1065
+ }
1066
+ target[col] = mergedArr.length === 1 ? mergedArr[0] : mergedArr;
1067
+ }
1068
+ }
1069
+ return order.map((key) => merged.get(key));
1070
+ }
1071
+ resolveIdFromRow(row) {
1072
+ if (!row)
1073
+ return undefined;
1074
+ if (typeof row.id === 'string' && row.id.length > 0) {
1075
+ return row.id;
1076
+ }
1077
+ const iri = typeof row['@id'] === 'string' ? row['@id'] : undefined;
1078
+ if (iri) {
1079
+ return this.extractFragment(iri);
1080
+ }
1081
+ return undefined;
1082
+ }
1083
+ resolveParentKey(row, referenceColumn, useReferenceIri) {
1084
+ if (referenceColumn) {
1085
+ const value = row[referenceColumn.name];
1086
+ return useReferenceIri ? this.normalizeReferenceValue(value) : this.normalizeLiteralValue(value);
1087
+ }
1088
+ return useReferenceIri ? this.resolveIriFromRow(row) : this.resolveIdFromRow(row);
1089
+ }
1090
+ resolveIriFromRow(row) {
1091
+ if (!row)
1092
+ return undefined;
1093
+ if (typeof row['@id'] === 'string' && row['@id'].length > 0) {
1094
+ return row['@id'];
1095
+ }
1096
+ if (typeof row.subject === 'string' && row.subject.length > 0) {
1097
+ return row.subject;
1098
+ }
1099
+ return undefined;
1100
+ }
1101
+ normalizeReferenceValue(value) {
1102
+ if (!value)
1103
+ return undefined;
1104
+ if (typeof value === 'string') {
1105
+ return value;
1106
+ }
1107
+ if (typeof value === 'object' && typeof value.value === 'string') {
1108
+ return value.value;
1109
+ }
1110
+ return undefined;
1111
+ }
1112
+ normalizeLiteralValue(value) {
1113
+ if (value === null || value === undefined) {
1114
+ return undefined;
1115
+ }
1116
+ if (typeof value === 'string') {
1117
+ return value;
1118
+ }
1119
+ if (typeof value === 'object' && typeof value.value === 'string') {
1120
+ return value.value;
1121
+ }
1122
+ return undefined;
1123
+ }
1124
+ collectInverseReferenceValues(row, columns) {
1125
+ if (!columns.length) {
1126
+ return [];
1127
+ }
1128
+ const collected = [];
1129
+ for (const column of columns) {
1130
+ const raw = row[column.name];
1131
+ if (raw === undefined || raw === null) {
1132
+ continue;
1133
+ }
1134
+ const appendValue = (entry) => {
1135
+ const normalized = this.normalizeReferenceValue(entry) ?? (typeof entry === 'string' ? entry : undefined);
1136
+ if (normalized) {
1137
+ collected.push(normalized);
1138
+ }
1139
+ };
1140
+ if (Array.isArray(raw)) {
1141
+ raw.forEach(appendValue);
1142
+ }
1143
+ else {
1144
+ appendValue(raw);
1145
+ }
1146
+ }
1147
+ return collected;
1148
+ }
1149
+ groupRowsByIri(rows) {
1150
+ const grouped = new Map();
1151
+ for (const row of rows) {
1152
+ const iri = this.normalizeReferenceValue(row['@id']) ??
1153
+ this.normalizeReferenceValue(row.uri) ??
1154
+ (typeof row['@id'] === 'string' ? row['@id'] : undefined);
1155
+ if (!iri) {
1156
+ continue;
1157
+ }
1158
+ const bucket = grouped.get(iri) ?? [];
1159
+ bucket.push(row);
1160
+ grouped.set(iri, bucket);
1161
+ }
1162
+ return grouped;
1163
+ }
1164
+ extractFragment(value) {
1165
+ const hashPart = value.includes('#') ? value.split('#').pop() : undefined;
1166
+ if (hashPart && hashPart.length > 0) {
1167
+ return hashPart;
1168
+ }
1169
+ const parts = value.split('/');
1170
+ return parts.pop() ?? value;
1171
+ }
1172
+ }
1173
+ _a = entityKind;
1174
+ PodDatabase[_a] = 'PodDatabase';
1175
+ //# sourceMappingURL=pod-database.js.map