@undefineds.co/drizzle-solid 0.2.13 → 0.3.1

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 (339) hide show
  1. package/CHANGELOG-DRAFT.md +1 -1
  2. package/README.md +163 -248
  3. package/dist/core/ast-to-sparql.d.ts +32 -25
  4. package/dist/core/ast-to-sparql.d.ts.map +1 -1
  5. package/dist/core/ast-to-sparql.js +1 -1
  6. package/dist/core/ast-to-sparql.js.map +1 -1
  7. package/dist/core/compile-time-types.d.ts +10 -7
  8. package/dist/core/compile-time-types.d.ts.map +1 -1
  9. package/dist/core/compile-time-types.js +6 -4
  10. package/dist/core/compile-time-types.js.map +1 -1
  11. package/dist/core/comunica-patch.d.ts +1 -6
  12. package/dist/core/comunica-patch.d.ts.map +1 -1
  13. package/dist/core/comunica-patch.js +16 -20
  14. package/dist/core/comunica-patch.js.map +1 -1
  15. package/dist/core/conflict-resolution.d.ts.map +1 -1
  16. package/dist/core/conflict-resolution.js +3 -2
  17. package/dist/core/conflict-resolution.js.map +1 -1
  18. package/dist/core/discovery/typeindex-discovery.d.ts.map +1 -1
  19. package/dist/core/discovery/typeindex-discovery.js +0 -2
  20. package/dist/core/discovery/typeindex-discovery.js.map +1 -1
  21. package/dist/core/execution/ldp-executor.d.ts.map +1 -1
  22. package/dist/core/execution/ldp-executor.js +2 -21
  23. package/dist/core/execution/ldp-executor.js.map +1 -1
  24. package/dist/core/execution/pod-executor.d.ts.map +1 -1
  25. package/dist/core/execution/pod-executor.js +2 -4
  26. package/dist/core/execution/pod-executor.js.map +1 -1
  27. package/dist/core/execution/sparql-strategy.d.ts +8 -40
  28. package/dist/core/execution/sparql-strategy.d.ts.map +1 -1
  29. package/dist/core/execution/sparql-strategy.js +24 -186
  30. package/dist/core/execution/sparql-strategy.js.map +1 -1
  31. package/dist/core/execution/strategy-factory.d.ts +7 -20
  32. package/dist/core/execution/strategy-factory.d.ts.map +1 -1
  33. package/dist/core/execution/strategy-factory.js +2 -17
  34. package/dist/core/execution/strategy-factory.js.map +1 -1
  35. package/dist/core/expressions.d.ts +10 -9
  36. package/dist/core/expressions.d.ts.map +1 -1
  37. package/dist/core/expressions.js.map +1 -1
  38. package/dist/core/pod-database.d.ts +62 -18
  39. package/dist/core/pod-database.d.ts.map +1 -1
  40. package/dist/core/pod-database.js +136 -72
  41. package/dist/core/pod-database.js.map +1 -1
  42. package/dist/core/pod-dialect.d.ts +7 -1
  43. package/dist/core/pod-dialect.d.ts.map +1 -1
  44. package/dist/core/pod-dialect.js +36 -29
  45. package/dist/core/pod-dialect.js.map +1 -1
  46. package/dist/core/pod-session.d.ts +10 -9
  47. package/dist/core/pod-session.d.ts.map +1 -1
  48. package/dist/core/pod-session.js.map +1 -1
  49. package/dist/core/query-builders/delete-query-builder.d.ts +2 -2
  50. package/dist/core/query-builders/delete-query-builder.d.ts.map +1 -1
  51. package/dist/core/query-builders/delete-query-builder.js +8 -6
  52. package/dist/core/query-builders/delete-query-builder.js.map +1 -1
  53. package/dist/core/query-builders/select-query-builder.d.ts +15 -6
  54. package/dist/core/query-builders/select-query-builder.d.ts.map +1 -1
  55. package/dist/core/query-builders/select-query-builder.js +217 -31
  56. package/dist/core/query-builders/select-query-builder.js.map +1 -1
  57. package/dist/core/query-builders/update-query-builder.d.ts +2 -2
  58. package/dist/core/query-builders/update-query-builder.d.ts.map +1 -1
  59. package/dist/core/query-builders/update-query-builder.js +7 -5
  60. package/dist/core/query-builders/update-query-builder.js.map +1 -1
  61. package/dist/core/query-conditions.d.ts +18 -11
  62. package/dist/core/query-conditions.d.ts.map +1 -1
  63. package/dist/core/query-conditions.js.map +1 -1
  64. package/dist/core/query-where-policy.d.ts +7 -0
  65. package/dist/core/query-where-policy.d.ts.map +1 -0
  66. package/dist/core/query-where-policy.js +83 -0
  67. package/dist/core/query-where-policy.js.map +1 -0
  68. package/dist/core/resource-resolver/base-resolver.d.ts +1 -0
  69. package/dist/core/resource-resolver/base-resolver.d.ts.map +1 -1
  70. package/dist/core/resource-resolver/base-resolver.js +33 -39
  71. package/dist/core/resource-resolver/base-resolver.js.map +1 -1
  72. package/dist/core/resource-resolver/document-resolver.d.ts +2 -1
  73. package/dist/core/resource-resolver/document-resolver.d.ts.map +1 -1
  74. package/dist/core/resource-resolver/document-resolver.js +17 -46
  75. package/dist/core/resource-resolver/document-resolver.js.map +1 -1
  76. package/dist/core/runtime/pod-runtime.d.ts.map +1 -1
  77. package/dist/core/runtime/pod-runtime.js +0 -6
  78. package/dist/core/runtime/pod-runtime.js.map +1 -1
  79. package/dist/core/schema/columns.d.ts +6 -6
  80. package/dist/core/schema/columns.d.ts.map +1 -1
  81. package/dist/core/schema/columns.js +18 -18
  82. package/dist/core/schema/columns.js.map +1 -1
  83. package/dist/core/schema/defs.d.ts +4 -4
  84. package/dist/core/schema/defs.d.ts.map +1 -1
  85. package/dist/core/schema/pod-table.js +2 -2
  86. package/dist/core/schema/pod-table.js.map +1 -1
  87. package/dist/core/select-plan.d.ts +9 -7
  88. package/dist/core/select-plan.d.ts.map +1 -1
  89. package/dist/core/services/pod-services.d.ts +7 -5
  90. package/dist/core/services/pod-services.d.ts.map +1 -1
  91. package/dist/core/services/pod-services.js +7 -5
  92. package/dist/core/services/pod-services.js.map +1 -1
  93. package/dist/core/shape/generator.js +3 -3
  94. package/dist/core/shape/generator.js.map +1 -1
  95. package/dist/core/shape/manager.js +5 -5
  96. package/dist/core/shape/manager.js.map +1 -1
  97. package/dist/core/solid-n3-client.d.ts.map +1 -1
  98. package/dist/core/solid-n3-client.js +20 -9
  99. package/dist/core/solid-n3-client.js.map +1 -1
  100. package/dist/core/sparql/builder/expression-builder.d.ts +14 -16
  101. package/dist/core/sparql/builder/expression-builder.d.ts.map +1 -1
  102. package/dist/core/sparql/builder/expression-builder.js +177 -74
  103. package/dist/core/sparql/builder/expression-builder.js.map +1 -1
  104. package/dist/core/sparql/builder/select-builder.d.ts +1 -1
  105. package/dist/core/sparql/builder/select-builder.d.ts.map +1 -1
  106. package/dist/core/sparql/builder/select-builder.js +19 -5
  107. package/dist/core/sparql/builder/select-builder.js.map +1 -1
  108. package/dist/core/sparql/builder/update-builder.d.ts +1 -1
  109. package/dist/core/sparql/builder/update-builder.d.ts.map +1 -1
  110. package/dist/core/sparql/builder/update-builder.js +4 -15
  111. package/dist/core/sparql/builder/update-builder.js.map +1 -1
  112. package/dist/core/sparql/helpers.js +3 -3
  113. package/dist/core/sparql/helpers.js.map +1 -1
  114. package/dist/core/sparql-engine.d.ts +16 -0
  115. package/dist/core/sparql-engine.d.ts.map +1 -0
  116. package/dist/core/sparql-engine.js +128 -0
  117. package/dist/core/sparql-engine.js.map +1 -0
  118. package/dist/core/sparql-executor.d.ts +12 -7
  119. package/dist/core/sparql-executor.d.ts.map +1 -1
  120. package/dist/core/sparql-executor.js +56 -47
  121. package/dist/core/sparql-executor.js.map +1 -1
  122. package/dist/core/triple/handlers/inverse.js +4 -4
  123. package/dist/core/triple/handlers/inverse.js.map +1 -1
  124. package/dist/core/triple/handlers/uri.d.ts +1 -1
  125. package/dist/core/triple/handlers/uri.js +3 -3
  126. package/dist/core/triple/handlers/uri.js.map +1 -1
  127. package/dist/core/typeindex-manager.d.ts.map +1 -1
  128. package/dist/core/typeindex-manager.js +3 -0
  129. package/dist/core/typeindex-manager.js.map +1 -1
  130. package/dist/core/types.d.ts +3 -3
  131. package/dist/core/types.d.ts.map +1 -1
  132. package/dist/core/uri/resolver.d.ts +9 -9
  133. package/dist/core/uri/resolver.d.ts.map +1 -1
  134. package/dist/core/uri/resolver.js +51 -51
  135. package/dist/core/uri/resolver.js.map +1 -1
  136. package/dist/core/uri/types.d.ts +10 -10
  137. package/dist/core/uri/types.d.ts.map +1 -1
  138. package/dist/core/zod-integration.d.ts +9 -7
  139. package/dist/core/zod-integration.d.ts.map +1 -1
  140. package/dist/core/zod-integration.js.map +1 -1
  141. package/dist/driver.d.ts +10 -1
  142. package/dist/driver.d.ts.map +1 -1
  143. package/dist/driver.js +1 -5
  144. package/dist/driver.js.map +1 -1
  145. package/dist/esm/core/ast-to-sparql.d.ts +32 -25
  146. package/dist/esm/core/ast-to-sparql.d.ts.map +1 -1
  147. package/dist/esm/core/ast-to-sparql.js +1 -1
  148. package/dist/esm/core/ast-to-sparql.js.map +1 -1
  149. package/dist/esm/core/compile-time-types.d.ts +10 -7
  150. package/dist/esm/core/compile-time-types.d.ts.map +1 -1
  151. package/dist/esm/core/compile-time-types.js +6 -4
  152. package/dist/esm/core/compile-time-types.js.map +1 -1
  153. package/dist/esm/core/comunica-patch.d.ts +1 -6
  154. package/dist/esm/core/comunica-patch.d.ts.map +1 -1
  155. package/dist/esm/core/comunica-patch.js +13 -21
  156. package/dist/esm/core/comunica-patch.js.map +1 -1
  157. package/dist/esm/core/conflict-resolution.d.ts.map +1 -1
  158. package/dist/esm/core/conflict-resolution.js +3 -2
  159. package/dist/esm/core/conflict-resolution.js.map +1 -1
  160. package/dist/esm/core/discovery/typeindex-discovery.d.ts.map +1 -1
  161. package/dist/esm/core/discovery/typeindex-discovery.js +0 -2
  162. package/dist/esm/core/discovery/typeindex-discovery.js.map +1 -1
  163. package/dist/esm/core/execution/ldp-executor.d.ts.map +1 -1
  164. package/dist/esm/core/execution/ldp-executor.js +2 -21
  165. package/dist/esm/core/execution/ldp-executor.js.map +1 -1
  166. package/dist/esm/core/execution/pod-executor.d.ts.map +1 -1
  167. package/dist/esm/core/execution/pod-executor.js +2 -4
  168. package/dist/esm/core/execution/pod-executor.js.map +1 -1
  169. package/dist/esm/core/execution/sparql-strategy.d.ts +8 -40
  170. package/dist/esm/core/execution/sparql-strategy.d.ts.map +1 -1
  171. package/dist/esm/core/execution/sparql-strategy.js +25 -187
  172. package/dist/esm/core/execution/sparql-strategy.js.map +1 -1
  173. package/dist/esm/core/execution/strategy-factory.d.ts +7 -20
  174. package/dist/esm/core/execution/strategy-factory.d.ts.map +1 -1
  175. package/dist/esm/core/execution/strategy-factory.js +2 -17
  176. package/dist/esm/core/execution/strategy-factory.js.map +1 -1
  177. package/dist/esm/core/expressions.d.ts +10 -9
  178. package/dist/esm/core/expressions.d.ts.map +1 -1
  179. package/dist/esm/core/expressions.js.map +1 -1
  180. package/dist/esm/core/pod-database.d.ts +62 -18
  181. package/dist/esm/core/pod-database.d.ts.map +1 -1
  182. package/dist/esm/core/pod-database.js +136 -72
  183. package/dist/esm/core/pod-database.js.map +1 -1
  184. package/dist/esm/core/pod-dialect.d.ts +7 -1
  185. package/dist/esm/core/pod-dialect.d.ts.map +1 -1
  186. package/dist/esm/core/pod-dialect.js +37 -30
  187. package/dist/esm/core/pod-dialect.js.map +1 -1
  188. package/dist/esm/core/pod-session.d.ts +10 -9
  189. package/dist/esm/core/pod-session.d.ts.map +1 -1
  190. package/dist/esm/core/pod-session.js.map +1 -1
  191. package/dist/esm/core/query-builders/delete-query-builder.d.ts +2 -2
  192. package/dist/esm/core/query-builders/delete-query-builder.d.ts.map +1 -1
  193. package/dist/esm/core/query-builders/delete-query-builder.js +8 -6
  194. package/dist/esm/core/query-builders/delete-query-builder.js.map +1 -1
  195. package/dist/esm/core/query-builders/select-query-builder.d.ts +15 -6
  196. package/dist/esm/core/query-builders/select-query-builder.d.ts.map +1 -1
  197. package/dist/esm/core/query-builders/select-query-builder.js +218 -32
  198. package/dist/esm/core/query-builders/select-query-builder.js.map +1 -1
  199. package/dist/esm/core/query-builders/update-query-builder.d.ts +2 -2
  200. package/dist/esm/core/query-builders/update-query-builder.d.ts.map +1 -1
  201. package/dist/esm/core/query-builders/update-query-builder.js +7 -5
  202. package/dist/esm/core/query-builders/update-query-builder.js.map +1 -1
  203. package/dist/esm/core/query-conditions.d.ts +18 -11
  204. package/dist/esm/core/query-conditions.d.ts.map +1 -1
  205. package/dist/esm/core/query-conditions.js.map +1 -1
  206. package/dist/esm/core/query-where-policy.d.ts +7 -0
  207. package/dist/esm/core/query-where-policy.d.ts.map +1 -0
  208. package/dist/esm/core/query-where-policy.js +78 -0
  209. package/dist/esm/core/query-where-policy.js.map +1 -0
  210. package/dist/esm/core/resource-resolver/base-resolver.d.ts +1 -0
  211. package/dist/esm/core/resource-resolver/base-resolver.d.ts.map +1 -1
  212. package/dist/esm/core/resource-resolver/base-resolver.js +33 -39
  213. package/dist/esm/core/resource-resolver/base-resolver.js.map +1 -1
  214. package/dist/esm/core/resource-resolver/document-resolver.d.ts +2 -1
  215. package/dist/esm/core/resource-resolver/document-resolver.d.ts.map +1 -1
  216. package/dist/esm/core/resource-resolver/document-resolver.js +17 -46
  217. package/dist/esm/core/resource-resolver/document-resolver.js.map +1 -1
  218. package/dist/esm/core/runtime/pod-runtime.d.ts.map +1 -1
  219. package/dist/esm/core/runtime/pod-runtime.js +0 -6
  220. package/dist/esm/core/runtime/pod-runtime.js.map +1 -1
  221. package/dist/esm/core/schema/columns.d.ts +6 -6
  222. package/dist/esm/core/schema/columns.d.ts.map +1 -1
  223. package/dist/esm/core/schema/columns.js +18 -18
  224. package/dist/esm/core/schema/columns.js.map +1 -1
  225. package/dist/esm/core/schema/defs.d.ts +4 -4
  226. package/dist/esm/core/schema/defs.d.ts.map +1 -1
  227. package/dist/esm/core/schema/pod-table.js +2 -2
  228. package/dist/esm/core/schema/pod-table.js.map +1 -1
  229. package/dist/esm/core/select-plan.d.ts +9 -7
  230. package/dist/esm/core/select-plan.d.ts.map +1 -1
  231. package/dist/esm/core/services/pod-services.d.ts +7 -5
  232. package/dist/esm/core/services/pod-services.d.ts.map +1 -1
  233. package/dist/esm/core/services/pod-services.js +7 -5
  234. package/dist/esm/core/services/pod-services.js.map +1 -1
  235. package/dist/esm/core/shape/generator.js +3 -3
  236. package/dist/esm/core/shape/generator.js.map +1 -1
  237. package/dist/esm/core/shape/manager.js +5 -5
  238. package/dist/esm/core/shape/manager.js.map +1 -1
  239. package/dist/esm/core/solid-n3-client.d.ts.map +1 -1
  240. package/dist/esm/core/solid-n3-client.js +20 -9
  241. package/dist/esm/core/solid-n3-client.js.map +1 -1
  242. package/dist/esm/core/sparql/builder/expression-builder.d.ts +14 -16
  243. package/dist/esm/core/sparql/builder/expression-builder.d.ts.map +1 -1
  244. package/dist/esm/core/sparql/builder/expression-builder.js +177 -74
  245. package/dist/esm/core/sparql/builder/expression-builder.js.map +1 -1
  246. package/dist/esm/core/sparql/builder/select-builder.d.ts +1 -1
  247. package/dist/esm/core/sparql/builder/select-builder.d.ts.map +1 -1
  248. package/dist/esm/core/sparql/builder/select-builder.js +19 -5
  249. package/dist/esm/core/sparql/builder/select-builder.js.map +1 -1
  250. package/dist/esm/core/sparql/builder/update-builder.d.ts +1 -1
  251. package/dist/esm/core/sparql/builder/update-builder.d.ts.map +1 -1
  252. package/dist/esm/core/sparql/builder/update-builder.js +4 -15
  253. package/dist/esm/core/sparql/builder/update-builder.js.map +1 -1
  254. package/dist/esm/core/sparql/helpers.js +3 -3
  255. package/dist/esm/core/sparql/helpers.js.map +1 -1
  256. package/dist/esm/core/sparql-engine.d.ts +16 -0
  257. package/dist/esm/core/sparql-engine.d.ts.map +1 -0
  258. package/dist/esm/core/sparql-engine.js +89 -0
  259. package/dist/esm/core/sparql-engine.js.map +1 -0
  260. package/dist/esm/core/sparql-executor.d.ts +12 -7
  261. package/dist/esm/core/sparql-executor.d.ts.map +1 -1
  262. package/dist/esm/core/sparql-executor.js +56 -47
  263. package/dist/esm/core/sparql-executor.js.map +1 -1
  264. package/dist/esm/core/triple/handlers/inverse.js +4 -4
  265. package/dist/esm/core/triple/handlers/inverse.js.map +1 -1
  266. package/dist/esm/core/triple/handlers/uri.d.ts +1 -1
  267. package/dist/esm/core/triple/handlers/uri.js +3 -3
  268. package/dist/esm/core/triple/handlers/uri.js.map +1 -1
  269. package/dist/esm/core/typeindex-manager.d.ts.map +1 -1
  270. package/dist/esm/core/typeindex-manager.js +3 -0
  271. package/dist/esm/core/typeindex-manager.js.map +1 -1
  272. package/dist/esm/core/types.d.ts +3 -3
  273. package/dist/esm/core/types.d.ts.map +1 -1
  274. package/dist/esm/core/uri/resolver.d.ts +9 -9
  275. package/dist/esm/core/uri/resolver.d.ts.map +1 -1
  276. package/dist/esm/core/uri/resolver.js +51 -51
  277. package/dist/esm/core/uri/resolver.js.map +1 -1
  278. package/dist/esm/core/uri/types.d.ts +10 -10
  279. package/dist/esm/core/uri/types.d.ts.map +1 -1
  280. package/dist/esm/core/zod-integration.d.ts +9 -7
  281. package/dist/esm/core/zod-integration.d.ts.map +1 -1
  282. package/dist/esm/core/zod-integration.js.map +1 -1
  283. package/dist/esm/driver.d.ts +10 -1
  284. package/dist/esm/driver.d.ts.map +1 -1
  285. package/dist/esm/driver.js +1 -5
  286. package/dist/esm/driver.js.map +1 -1
  287. package/dist/esm/index.d.ts +3 -1
  288. package/dist/esm/index.d.ts.map +1 -1
  289. package/dist/esm/index.js +4 -2
  290. package/dist/esm/index.js.map +1 -1
  291. package/dist/esm/pod.d.ts +118 -0
  292. package/dist/esm/pod.d.ts.map +1 -0
  293. package/dist/esm/pod.js +146 -0
  294. package/dist/esm/pod.js.map +1 -0
  295. package/dist/esm/utils/find-by-iri.d.ts +4 -2
  296. package/dist/esm/utils/find-by-iri.d.ts.map +1 -1
  297. package/dist/esm/utils/find-by-iri.js +8 -8
  298. package/dist/esm/utils/find-by-iri.js.map +1 -1
  299. package/dist/esm/utils/helpers.d.ts +2 -2
  300. package/dist/esm/utils/helpers.d.ts.map +1 -1
  301. package/dist/esm/utils/rdf-helpers.d.ts +2 -2
  302. package/dist/esm/utils/rdf-helpers.d.ts.map +1 -1
  303. package/dist/esm/utils/rdf-helpers.js +9 -6
  304. package/dist/esm/utils/rdf-helpers.js.map +1 -1
  305. package/dist/esm/utils/rdf-validation.d.ts +5 -3
  306. package/dist/esm/utils/rdf-validation.d.ts.map +1 -1
  307. package/dist/esm/utils/rdf-validation.js +47 -8
  308. package/dist/esm/utils/rdf-validation.js.map +1 -1
  309. package/dist/esm/utils/webid-resolver.d.ts +1 -2
  310. package/dist/esm/utils/webid-resolver.d.ts.map +1 -1
  311. package/dist/esm/utils/webid-resolver.js +37 -31
  312. package/dist/esm/utils/webid-resolver.js.map +1 -1
  313. package/dist/index.d.ts +3 -1
  314. package/dist/index.d.ts.map +1 -1
  315. package/dist/index.js +12 -4
  316. package/dist/index.js.map +1 -1
  317. package/dist/pod.d.ts +118 -0
  318. package/dist/pod.d.ts.map +1 -0
  319. package/dist/pod.js +153 -0
  320. package/dist/pod.js.map +1 -0
  321. package/dist/utils/find-by-iri.d.ts +4 -2
  322. package/dist/utils/find-by-iri.d.ts.map +1 -1
  323. package/dist/utils/find-by-iri.js +8 -8
  324. package/dist/utils/find-by-iri.js.map +1 -1
  325. package/dist/utils/helpers.d.ts +2 -2
  326. package/dist/utils/helpers.d.ts.map +1 -1
  327. package/dist/utils/rdf-helpers.d.ts +2 -2
  328. package/dist/utils/rdf-helpers.d.ts.map +1 -1
  329. package/dist/utils/rdf-helpers.js +9 -6
  330. package/dist/utils/rdf-helpers.js.map +1 -1
  331. package/dist/utils/rdf-validation.d.ts +5 -3
  332. package/dist/utils/rdf-validation.d.ts.map +1 -1
  333. package/dist/utils/rdf-validation.js +47 -8
  334. package/dist/utils/rdf-validation.js.map +1 -1
  335. package/dist/utils/webid-resolver.d.ts +1 -2
  336. package/dist/utils/webid-resolver.d.ts.map +1 -1
  337. package/dist/utils/webid-resolver.js +37 -31
  338. package/dist/utils/webid-resolver.js.map +1 -1
  339. package/package.json +13 -4
@@ -1,6 +1,6 @@
1
1
  import { entityKind, SQL } from 'drizzle-orm';
2
2
  import { PodTable, PodColumnBase, InferTableData } from '../schema';
3
- import { QueryCondition } from '../query-conditions';
3
+ import { QueryCondition, type PublicQueryCondition, type PublicWhereObject } from '../query-conditions';
4
4
  import { SelectQueryPlan } from '../select-plan';
5
5
  import { SelectFieldMap, SessionInterface } from './types';
6
6
  import { type OrderByExpression } from '../order-by';
@@ -32,10 +32,10 @@ export declare class SelectQueryBuilder<TTable extends PodTable<any> = PodTable<
32
32
  /**
33
33
  * Add WHERE conditions to the query
34
34
  *
35
- * Note: Using '@id' directly in conditions is deprecated.
36
- * Use db.findByIri(table, iri) for IRI-based lookups instead.
35
+ * Public where() is collection-oriented.
36
+ * Exact-target reads must use findByLocator()/findByIri().
37
37
  */
38
- where(conditions: Record<string, any> | SQL | QueryCondition): this;
38
+ where(conditions: PublicWhereObject | SQL | PublicQueryCondition): this;
39
39
  /**
40
40
  * Internal method that allows @id in conditions.
41
41
  * Used by *ByIri methods internally.
@@ -62,6 +62,7 @@ export declare class SelectQueryBuilder<TTable extends PodTable<any> = PodTable<
62
62
  private parseColumnReferenceString;
63
63
  private processWhereObject;
64
64
  private processQueryCondition;
65
+ private applyInternalQueryCondition;
65
66
  private normalizeWhereConditions;
66
67
  toIR(): SelectQueryPlan;
67
68
  private buildQueryPlan;
@@ -97,16 +98,17 @@ export declare class SelectQueryBuilder<TTable extends PodTable<any> = PodTable<
97
98
  private hasAggregateSelection;
98
99
  private hasMixedAggregateSelection;
99
100
  private applySubjectMetadata;
101
+ private extractSubjectValue;
100
102
  private attachSubjectMetadata;
101
103
  private normalizeBaseRows;
102
104
  private hydrateInlineColumns;
103
105
  /**
104
106
  * 处理引用字段:将 URI 转换回简单 ID
105
107
  *
106
- * 对于配置了 .reference() 的列,将存储的完整 URI 转换回用户友好的 ID
108
+ * 对于配置了 .link() 的列,将存储的完整 URI 转换回用户友好的 ID
107
109
  * 例如:http://pod/.data/chat/chat-123/index.ttl#this -> chat-123
108
110
  */
109
- private resolveReferenceIds;
111
+ private resolveLinkIds;
110
112
  private normalizeInlinePredicateKey;
111
113
  private normalizeInlineObjectValue;
112
114
  private normalizeInlineIri;
@@ -116,12 +118,19 @@ export declare class SelectQueryBuilder<TTable extends PodTable<any> = PodTable<
116
118
  private getOrderByValue;
117
119
  private compareOrderByValues;
118
120
  private mergeRowsBySubject;
121
+ private getColumnDefinitionForRowKey;
119
122
  private inferSourceFromChild;
120
123
  private isInlineObjectColumn;
121
124
  private applyJoinFallback;
122
125
  private fetchJoinRows;
126
+ private buildExactJoinLookupConditions;
127
+ private buildJoinLookupCondition;
128
+ private getRequiredSubjectTemplateVariables;
129
+ private isAbsoluteIri;
130
+ private buildMissingJoinLocatorError;
123
131
  private normalizeJoinRows;
124
132
  private mergeRowsWithJoin;
133
+ private joinRowMatchesAllConditions;
125
134
  private createEmptyJoinRow;
126
135
  private applyJoinFilters;
127
136
  private applyHavingFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"select-query-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/query-builders/select-query-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-query-builder.d.ts","sourceRoot":"","sources":["../../../../src/core/query-builders/select-query-builder.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  var _a;
2
2
  import { entityKind, SQL } from 'drizzle-orm';
3
3
  import { PodTable, PodColumnBase } from '../schema';
4
- import { inArray } from '../query-conditions';
4
+ import { and, eq, inArray } from '../query-conditions';
5
5
  import { isAggregateExpression } from '../aggregates';
6
6
  import { createLiteralCondition, buildConditionTreeFromObject, inferSPARQLQueryType } from './helpers';
7
7
  import { UriResolverImpl } from '../uri';
8
8
  import { isOrderByExpression } from '../order-by';
9
9
  import { SelectionAliasExpression } from '../expressions';
10
+ import { assertPublicWhereCondition, assertPublicWhereObject, conditionTargetsReservedIdentifier } from '../query-where-policy';
10
11
  export class SelectQueryBuilder {
11
12
  constructor(session, fields) {
12
13
  this.session = session;
@@ -37,23 +38,19 @@ export class SelectQueryBuilder {
37
38
  /**
38
39
  * Add WHERE conditions to the query
39
40
  *
40
- * Note: Using '@id' directly in conditions is deprecated.
41
- * Use db.findByIri(table, iri) for IRI-based lookups instead.
41
+ * Public where() is collection-oriented.
42
+ * Exact-target reads must use findByLocator()/findByIri().
42
43
  */
43
44
  where(conditions) {
44
45
  if (conditions instanceof SQL) {
45
46
  this.sql = conditions;
46
47
  }
47
48
  else if (this.isQueryCondition(conditions)) {
49
+ assertPublicWhereCondition('select', conditions);
48
50
  this.processQueryCondition(conditions);
49
51
  }
50
52
  else {
51
- // Check for @id usage and warn/reject
52
- if (conditions && typeof conditions === 'object' && '@id' in conditions) {
53
- throw new Error(`Using '@id' in where() is not supported. ` +
54
- `Use db.findByIri(table, iri) for IRI-based lookups, ` +
55
- `or use { id: 'value' } for id-based lookups.`);
56
- }
53
+ assertPublicWhereObject('select', conditions);
57
54
  this.processWhereObject(conditions);
58
55
  }
59
56
  return this;
@@ -262,7 +259,7 @@ export class SelectQueryBuilder {
262
259
  }
263
260
  return { table, alias, column };
264
261
  }
265
- throw new Error('Unsupported column reference type');
262
+ throw new Error('Unsupported column link type');
266
263
  }
267
264
  parseColumnReferenceString(reference) {
268
265
  const trimmed = reference.trim();
@@ -301,6 +298,10 @@ export class SelectQueryBuilder {
301
298
  this.whereConditions = simpleConditions;
302
299
  }
303
300
  }
301
+ applyInternalQueryCondition(condition) {
302
+ this.processQueryCondition(condition);
303
+ return this;
304
+ }
304
305
  normalizeWhereConditions() {
305
306
  if (this.conditionTree) {
306
307
  return this.conditionTree;
@@ -454,9 +455,12 @@ export class SelectQueryBuilder {
454
455
  limit: undefined,
455
456
  offset: undefined,
456
457
  orderBy: undefined,
458
+ ...(hasJoins ? { joins: undefined, joinFilters: undefined } : {}),
457
459
  ...(useAggregateFallback ? { groupBy: undefined, having: undefined } : {}),
458
460
  }
459
- : plan;
461
+ : (hasJoins
462
+ ? { ...plan, joins: undefined, joinFilters: undefined }
463
+ : plan);
460
464
  const operation = {
461
465
  type: 'select',
462
466
  table: this.selectedTable,
@@ -494,6 +498,7 @@ export class SelectQueryBuilder {
494
498
  }
495
499
  if (hasJoins) {
496
500
  intermediateRows = this.normalizeBaseRows(intermediateRows);
501
+ intermediateRows = this.mergeRowsBySubject(intermediateRows);
497
502
  intermediateRows = await this.applyJoinFallback(intermediateRows);
498
503
  intermediateRows = this.applyJoinFilters(intermediateRows);
499
504
  }
@@ -514,7 +519,7 @@ export class SelectQueryBuilder {
514
519
  if (this.selectedTable) {
515
520
  finalRows = await this.hydrateInlineColumns(finalRows, this.selectedTable, !hasJoins);
516
521
  // 处理引用字段:将 URI 转换回 ID
517
- finalRows = this.resolveReferenceIds(finalRows, this.selectedTable);
522
+ finalRows = this.resolveLinkIds(finalRows, this.selectedTable);
518
523
  }
519
524
  if (hasJoins) {
520
525
  finalRows = this.applyDeferredOrderBy(finalRows);
@@ -910,10 +915,19 @@ export class SelectQueryBuilder {
910
915
  applySubjectMetadata(rows) {
911
916
  return rows.map((row) => this.attachSubjectMetadata(row));
912
917
  }
918
+ extractSubjectValue(row) {
919
+ const candidate = row.subject ?? row['@id'] ?? row.uri;
920
+ if (typeof candidate === 'object' && candidate && 'value' in candidate) {
921
+ const value = candidate.value;
922
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
923
+ }
924
+ if (typeof candidate === 'string' && candidate.length > 0) {
925
+ return candidate;
926
+ }
927
+ return undefined;
928
+ }
913
929
  attachSubjectMetadata(row) {
914
- const subjectValue = typeof row.subject === 'object' && row.subject && 'value' in row.subject
915
- ? row.subject.value
916
- : row.subject;
930
+ const subjectValue = this.extractSubjectValue(row);
917
931
  if (typeof subjectValue === 'string' && subjectValue.length > 0) {
918
932
  if (row['@id'] === undefined) {
919
933
  row['@id'] = subjectValue;
@@ -943,7 +957,7 @@ export class SelectQueryBuilder {
943
957
  }
944
958
  result[`${alias}.${key}`] = value;
945
959
  }
946
- const subjectValue = row.subject;
960
+ const subjectValue = this.extractSubjectValue(row);
947
961
  if (subjectValue) {
948
962
  result.subject = subjectValue;
949
963
  result['@id'] = subjectValue;
@@ -1069,16 +1083,16 @@ export class SelectQueryBuilder {
1069
1083
  /**
1070
1084
  * 处理引用字段:将 URI 转换回简单 ID
1071
1085
  *
1072
- * 对于配置了 .reference() 的列,将存储的完整 URI 转换回用户友好的 ID
1086
+ * 对于配置了 .link() 的列,将存储的完整 URI 转换回用户友好的 ID
1073
1087
  * 例如:http://pod/.data/chat/chat-123/index.ttl#this -> chat-123
1074
1088
  */
1075
- resolveReferenceIds(rows, table) {
1089
+ resolveLinkIds(rows, table) {
1076
1090
  if (!rows.length)
1077
1091
  return rows;
1078
- // 找出所有引用列
1092
+ // 找出所有链接列
1079
1093
  const columns = Object.values(table.columns ?? {});
1080
- const referenceColumns = columns.filter(col => col.isReference?.());
1081
- if (referenceColumns.length === 0)
1094
+ const linkColumns = columns.filter(col => col.isLink?.());
1095
+ if (linkColumns.length === 0)
1082
1096
  return rows;
1083
1097
  // 获取 URI 解析器和上下文
1084
1098
  const dialect = this.session.getDialect?.();
@@ -1091,7 +1105,7 @@ export class SelectQueryBuilder {
1091
1105
  };
1092
1106
  return rows.map(row => {
1093
1107
  const result = { ...row };
1094
- for (const col of referenceColumns) {
1108
+ for (const col of linkColumns) {
1095
1109
  const value = row[col.name];
1096
1110
  if (!value)
1097
1111
  continue;
@@ -1099,13 +1113,13 @@ export class SelectQueryBuilder {
1099
1113
  if (Array.isArray(value)) {
1100
1114
  result[col.name] = value.map(v => {
1101
1115
  if (typeof v === 'string') {
1102
- return resolver.extractReferenceId(v, col, uriContext);
1116
+ return resolver.extractLinkId(v, col, uriContext);
1103
1117
  }
1104
1118
  return v;
1105
1119
  });
1106
1120
  }
1107
1121
  else if (typeof value === 'string') {
1108
- result[col.name] = resolver.extractReferenceId(value, col, uriContext);
1122
+ result[col.name] = resolver.extractLinkId(value, col, uriContext);
1109
1123
  }
1110
1124
  }
1111
1125
  return result;
@@ -1231,7 +1245,17 @@ export class SelectQueryBuilder {
1231
1245
  return;
1232
1246
  }
1233
1247
  if (!merged.has(key)) {
1234
- merged.set(key, { ...row });
1248
+ const normalizedRow = { ...row };
1249
+ Object.entries(normalizedRow).forEach(([col, value]) => {
1250
+ if (value === undefined)
1251
+ return;
1252
+ const colDef = this.getColumnDefinitionForRowKey(col);
1253
+ const isArrayType = colDef?.options?.isArray || colDef?.dataType === 'array';
1254
+ if (isArrayType && !Array.isArray(value)) {
1255
+ normalizedRow[col] = [value];
1256
+ }
1257
+ });
1258
+ merged.set(key, normalizedRow);
1235
1259
  order.push(key);
1236
1260
  return;
1237
1261
  }
@@ -1271,7 +1295,7 @@ export class SelectQueryBuilder {
1271
1295
  combined.push(entry);
1272
1296
  }
1273
1297
  });
1274
- const colDef = this.selectedTable?.columns[col];
1298
+ const colDef = this.getColumnDefinitionForRowKey(col);
1275
1299
  const isArrayType = colDef?.options?.isArray || colDef?.dataType === 'array';
1276
1300
  if (!isArrayType && combined.length > 1) {
1277
1301
  console.warn(`[Data Integrity] Multiple values found for single-value column '${col}' on subject '${key}'. Using first value.`);
@@ -1291,6 +1315,22 @@ export class SelectQueryBuilder {
1291
1315
  const result = order.map((key) => merged.get(key));
1292
1316
  return result;
1293
1317
  }
1318
+ getColumnDefinitionForRowKey(key) {
1319
+ if (!key) {
1320
+ return undefined;
1321
+ }
1322
+ if (!key.includes('.')) {
1323
+ return this.selectedTable?.columns[key];
1324
+ }
1325
+ const [alias, columnName] = key.split('.', 2);
1326
+ if (!alias || !columnName) {
1327
+ return undefined;
1328
+ }
1329
+ if (alias === this.primaryAlias) {
1330
+ return this.selectedTable?.columns[columnName];
1331
+ }
1332
+ return this.aliasToTable.get(alias)?.columns?.[columnName];
1333
+ }
1294
1334
  inferSourceFromChild(childIri, table) {
1295
1335
  if (!childIri) {
1296
1336
  return this.session.getDialect().getPodUrl();
@@ -1354,21 +1394,154 @@ export class SelectQueryBuilder {
1354
1394
  return [];
1355
1395
  }
1356
1396
  const valuesArray = Array.from(uniqueValues.values());
1397
+ const buildJoinQuery = () => this.session.select().from(join.table);
1357
1398
  const joinColumnInstance = join.table.getColumn(joinRef.column);
1358
- let joinQuery = this.session.select().from(join.table);
1359
- if (joinColumnInstance && joinRef.column !== 'id') {
1360
- joinQuery = joinQuery.where(inArray(joinColumnInstance, valuesArray));
1399
+ const exactJoinConditions = this.buildExactJoinLookupConditions(join, baseRows);
1400
+ if (exactJoinConditions && exactJoinConditions.length > 0) {
1401
+ const exactJoinRows = [];
1402
+ for (const joinCondition of exactJoinConditions) {
1403
+ const joinQuery = buildJoinQuery();
1404
+ const conditionedJoinQuery = conditionTargetsReservedIdentifier(joinCondition)
1405
+ ? joinQuery.applyInternalQueryCondition(joinCondition)
1406
+ : joinQuery.where(joinCondition);
1407
+ const joinRows = await conditionedJoinQuery;
1408
+ exactJoinRows.push(...joinRows);
1409
+ }
1410
+ return this.mergeRowsBySubject(this.normalizeJoinRows(join, exactJoinRows));
1411
+ }
1412
+ const joinLookupCondition = this.buildJoinLookupCondition(joinColumnInstance, valuesArray);
1413
+ if (joinLookupCondition) {
1414
+ const joinQuery = buildJoinQuery();
1415
+ const filteredJoinQuery = conditionTargetsReservedIdentifier(joinLookupCondition)
1416
+ ? joinQuery.applyInternalQueryCondition(joinLookupCondition)
1417
+ : joinQuery.where(joinLookupCondition);
1418
+ const joinRows = await filteredJoinQuery;
1419
+ return this.normalizeJoinRows(join, joinRows);
1361
1420
  }
1362
- const joinRows = await joinQuery;
1421
+ const joinRows = await buildJoinQuery();
1363
1422
  return this.normalizeJoinRows(join, joinRows);
1364
1423
  }
1424
+ buildExactJoinLookupConditions(join, baseRows) {
1425
+ const conditions = join.resolvedConditions ?? [];
1426
+ if (conditions.length === 0) {
1427
+ return undefined;
1428
+ }
1429
+ const [primaryCondition] = conditions;
1430
+ const primaryJoinRef = primaryCondition.left.alias === join.alias ? primaryCondition.left : primaryCondition.right;
1431
+ const primaryBaseRef = primaryJoinRef === primaryCondition.left ? primaryCondition.right : primaryCondition.left;
1432
+ const requiredLocatorVars = this.getRequiredSubjectTemplateVariables(join.table);
1433
+ const joinUsesTemplateScopedId = primaryJoinRef.column === 'id' && requiredLocatorVars.length > 0;
1434
+ if (!joinUsesTemplateScopedId && conditions.length === 1) {
1435
+ return undefined;
1436
+ }
1437
+ const locatorConditionMap = new Map();
1438
+ for (const condition of conditions) {
1439
+ const joinRef = condition.left.alias === join.alias ? condition.left : condition.right;
1440
+ locatorConditionMap.set(joinRef.column, condition);
1441
+ }
1442
+ const exactConditions = [];
1443
+ const seen = new Set();
1444
+ for (const baseRow of baseRows) {
1445
+ const primaryValue = this.getRowValueForColumn(baseRow, primaryBaseRef);
1446
+ if (primaryValue === undefined || primaryValue === null) {
1447
+ continue;
1448
+ }
1449
+ const primaryIsAbsoluteIri = typeof primaryValue === 'string' && this.isAbsoluteIri(primaryValue);
1450
+ const clauses = [];
1451
+ const dedupeParts = [];
1452
+ let skipRow = false;
1453
+ for (const condition of conditions) {
1454
+ const joinRef = condition.left.alias === join.alias ? condition.left : condition.right;
1455
+ const baseRef = joinRef === condition.left ? condition.right : condition.left;
1456
+ const baseValue = this.getRowValueForColumn(baseRow, baseRef);
1457
+ if (baseValue === undefined || baseValue === null) {
1458
+ if (joinUsesTemplateScopedId && !primaryIsAbsoluteIri && requiredLocatorVars.includes(joinRef.column)) {
1459
+ throw new Error(this.buildMissingJoinLocatorError(join, requiredLocatorVars.filter((variable) => {
1460
+ const variableCondition = locatorConditionMap.get(variable);
1461
+ if (!variableCondition) {
1462
+ return true;
1463
+ }
1464
+ const variableJoinRef = variableCondition.left.alias === join.alias ? variableCondition.left : variableCondition.right;
1465
+ const variableBaseRef = variableJoinRef === variableCondition.left ? variableCondition.right : variableCondition.left;
1466
+ const variableValue = this.getRowValueForColumn(baseRow, variableBaseRef);
1467
+ return variableValue === undefined || variableValue === null;
1468
+ })));
1469
+ }
1470
+ skipRow = true;
1471
+ break;
1472
+ }
1473
+ const joinColumn = join.table.getColumn(joinRef.column);
1474
+ if (!joinColumn) {
1475
+ skipRow = true;
1476
+ break;
1477
+ }
1478
+ clauses.push(eq(joinColumn, baseValue));
1479
+ dedupeParts.push(`${joinRef.column}:${this.serializeValueForKey(baseValue)}`);
1480
+ }
1481
+ if (skipRow) {
1482
+ continue;
1483
+ }
1484
+ if (joinUsesTemplateScopedId && !primaryIsAbsoluteIri) {
1485
+ const missingLocatorVars = requiredLocatorVars.filter((variable) => {
1486
+ const variableCondition = locatorConditionMap.get(variable);
1487
+ if (!variableCondition) {
1488
+ return true;
1489
+ }
1490
+ const variableJoinRef = variableCondition.left.alias === join.alias ? variableCondition.left : variableCondition.right;
1491
+ const variableBaseRef = variableJoinRef === variableCondition.left ? variableCondition.right : variableCondition.left;
1492
+ const variableValue = this.getRowValueForColumn(baseRow, variableBaseRef);
1493
+ return variableValue === undefined || variableValue === null;
1494
+ });
1495
+ if (missingLocatorVars.length > 0) {
1496
+ throw new Error(this.buildMissingJoinLocatorError(join, missingLocatorVars));
1497
+ }
1498
+ }
1499
+ if (clauses.length === 0) {
1500
+ continue;
1501
+ }
1502
+ const dedupeKey = dedupeParts.join('|');
1503
+ if (seen.has(dedupeKey)) {
1504
+ continue;
1505
+ }
1506
+ seen.add(dedupeKey);
1507
+ exactConditions.push(clauses.length === 1 ? clauses[0] : and(...clauses));
1508
+ }
1509
+ return exactConditions.length > 0 ? exactConditions : undefined;
1510
+ }
1511
+ buildJoinLookupCondition(joinColumnInstance, valuesArray) {
1512
+ if (!joinColumnInstance || valuesArray.length === 0) {
1513
+ return undefined;
1514
+ }
1515
+ if (valuesArray.length === 1) {
1516
+ return eq(joinColumnInstance, valuesArray[0]);
1517
+ }
1518
+ return inArray(joinColumnInstance, valuesArray);
1519
+ }
1520
+ getRequiredSubjectTemplateVariables(table) {
1521
+ const template = table.getSubjectTemplate?.() ?? table.config?.subjectTemplate ?? '';
1522
+ return Array.from(template.matchAll(/\{([^}]+)\}/g))
1523
+ .map((match) => match[1])
1524
+ .filter((variable) => variable !== 'id' && variable !== 'index');
1525
+ }
1526
+ isAbsoluteIri(value) {
1527
+ return /^[a-zA-Z][\w+.-]*:\/\//.test(value);
1528
+ }
1529
+ buildMissingJoinLocatorError(join, missingVariables) {
1530
+ const template = join.table.getSubjectTemplate?.() ?? join.table.config?.subjectTemplate ?? '{id}';
1531
+ const uniqueMissingVariables = Array.from(new Set(missingVariables));
1532
+ const exampleVariable = uniqueMissingVariables[0] ?? '...';
1533
+ return (`Cannot join table "${join.table.config.name ?? 'unknown'}" by id with subjectTemplate "${template}" ` +
1534
+ `because locator variable(s) [${uniqueMissingVariables.join(', ')}] are missing. ` +
1535
+ `Add join conditions for all required template variables (for example eq(base.${exampleVariable}, join.${exampleVariable})) ` +
1536
+ `or join via full IRI values.`);
1537
+ }
1365
1538
  normalizeJoinRows(join, rows) {
1366
1539
  return rows.map((row) => {
1367
1540
  const normalized = {};
1368
1541
  for (const [key, value] of Object.entries(row)) {
1369
1542
  normalized[`${join.alias}.${key}`] = value;
1370
1543
  }
1371
- const subjectValue = row.subject;
1544
+ const subjectValue = this.extractSubjectValue(row);
1372
1545
  if (subjectValue) {
1373
1546
  normalized.subject = subjectValue;
1374
1547
  normalized['@id'] = subjectValue;
@@ -1420,7 +1593,8 @@ export class SelectQueryBuilder {
1420
1593
  for (const baseRow of baseRows) {
1421
1594
  const baseValue = this.getRowValueForColumn(baseRow, baseRef);
1422
1595
  const key = this.serializeValueForKey(baseValue);
1423
- const matches = baseValue !== undefined && baseValue !== null ? joinValueMap.get(key) ?? [] : [];
1596
+ const primaryMatches = baseValue !== undefined && baseValue !== null ? joinValueMap.get(key) ?? [] : [];
1597
+ const matches = primaryMatches.filter((joinRow) => this.joinRowMatchesAllConditions(baseRow, joinRow, join.alias, conditions));
1424
1598
  if (matches.length === 0) {
1425
1599
  if (join.type === 'innerJoin') {
1426
1600
  continue;
@@ -1434,6 +1608,18 @@ export class SelectQueryBuilder {
1434
1608
  }
1435
1609
  return merged;
1436
1610
  }
1611
+ joinRowMatchesAllConditions(baseRow, joinRow, joinAlias, conditions) {
1612
+ return conditions.every((condition) => {
1613
+ const joinRef = condition.left.alias === joinAlias ? condition.left : condition.right;
1614
+ const baseRef = joinRef === condition.left ? condition.right : condition.left;
1615
+ const baseValue = this.getRowValueForColumn(baseRow, baseRef);
1616
+ const joinValue = this.getRowValueForColumn(joinRow, joinRef);
1617
+ if (baseValue === undefined || baseValue === null || joinValue === undefined || joinValue === null) {
1618
+ return false;
1619
+ }
1620
+ return this.serializeValueForKey(baseValue) === this.serializeValueForKey(joinValue);
1621
+ });
1622
+ }
1437
1623
  createEmptyJoinRow(join) {
1438
1624
  const empty = {};
1439
1625
  for (const columnName of Object.keys(join.table.columns)) {