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