@lix-js/sdk 0.5.0-preview.1 → 0.5.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 (3050) hide show
  1. package/README.md +38 -289
  2. package/dist/account/create-account.d.ts +2 -3
  3. package/dist/account/create-account.d.ts.map +1 -1
  4. package/dist/account/create-account.js +7 -9
  5. package/dist/account/create-account.js.map +1 -1
  6. package/dist/account/create-account.test.js +5 -17
  7. package/dist/account/create-account.test.js.map +1 -1
  8. package/dist/account/index.d.ts +1 -1
  9. package/dist/account/index.d.ts.map +1 -1
  10. package/dist/account/index.js +1 -1
  11. package/dist/account/index.js.map +1 -1
  12. package/dist/account/schema-definition.d.ts +53 -0
  13. package/dist/account/schema-definition.d.ts.map +1 -0
  14. package/dist/account/schema-definition.js +50 -0
  15. package/dist/account/schema-definition.js.map +1 -0
  16. package/dist/account/schema.test.js +91 -64
  17. package/dist/account/schema.test.js.map +1 -1
  18. package/dist/account/switch-account.d.ts +1 -1
  19. package/dist/account/switch-account.d.ts.map +1 -1
  20. package/dist/account/switch-account.test.js +5 -15
  21. package/dist/account/switch-account.test.js.map +1 -1
  22. package/dist/change/index.d.ts +1 -1
  23. package/dist/change/index.d.ts.map +1 -1
  24. package/dist/change/index.js +1 -1
  25. package/dist/change/index.js.map +1 -1
  26. package/dist/change/schema-definition.d.ts +82 -0
  27. package/dist/change/schema-definition.d.ts.map +1 -0
  28. package/dist/change/schema-definition.js +36 -0
  29. package/dist/change/schema-definition.js.map +1 -0
  30. package/dist/change/schema.bench.d.ts +2 -0
  31. package/dist/change/schema.bench.d.ts.map +1 -0
  32. package/dist/change/schema.bench.js +334 -0
  33. package/dist/change/schema.bench.js.map +1 -0
  34. package/dist/change/schema.d.ts +3 -54
  35. package/dist/change/schema.d.ts.map +1 -1
  36. package/dist/change/schema.js +27 -39
  37. package/dist/change/schema.js.map +1 -1
  38. package/dist/change/schema.test.js +85 -9
  39. package/dist/change/schema.test.js.map +1 -1
  40. package/dist/change-author/index.d.ts +1 -1
  41. package/dist/change-author/index.d.ts.map +1 -1
  42. package/dist/change-author/index.js +1 -1
  43. package/dist/change-author/index.js.map +1 -1
  44. package/dist/change-author/schema-definition.d.ts +37 -0
  45. package/dist/change-author/schema-definition.d.ts.map +1 -0
  46. package/dist/change-author/schema-definition.js +35 -0
  47. package/dist/change-author/schema-definition.js.map +1 -0
  48. package/dist/change-author/schema.test.js +132 -17
  49. package/dist/change-author/schema.test.js.map +1 -1
  50. package/dist/change-proposal/accept-change-proposal.d.ts +7 -0
  51. package/dist/change-proposal/accept-change-proposal.d.ts.map +1 -0
  52. package/dist/change-proposal/accept-change-proposal.js +36 -0
  53. package/dist/change-proposal/accept-change-proposal.js.map +1 -0
  54. package/dist/change-proposal/accept-change-proposal.test.d.ts +2 -0
  55. package/dist/change-proposal/accept-change-proposal.test.d.ts.map +1 -0
  56. package/dist/change-proposal/accept-change-proposal.test.js +55 -0
  57. package/dist/change-proposal/accept-change-proposal.test.js.map +1 -0
  58. package/dist/change-proposal/create-change-proposal.d.ts +11 -9
  59. package/dist/change-proposal/create-change-proposal.d.ts.map +1 -1
  60. package/dist/change-proposal/create-change-proposal.js +28 -43
  61. package/dist/change-proposal/create-change-proposal.js.map +1 -1
  62. package/dist/change-proposal/create-change-proposal.test.js +61 -82
  63. package/dist/change-proposal/create-change-proposal.test.js.map +1 -1
  64. package/dist/change-proposal/index.d.ts +4 -2
  65. package/dist/change-proposal/index.d.ts.map +1 -1
  66. package/dist/change-proposal/index.js +4 -2
  67. package/dist/change-proposal/index.js.map +1 -1
  68. package/dist/change-proposal/reject-change-proposal.d.ts +7 -0
  69. package/dist/change-proposal/reject-change-proposal.d.ts.map +1 -0
  70. package/dist/change-proposal/reject-change-proposal.js +15 -0
  71. package/dist/change-proposal/reject-change-proposal.js.map +1 -0
  72. package/dist/change-proposal/reject-change-proposal.test.d.ts +2 -0
  73. package/dist/change-proposal/reject-change-proposal.test.d.ts.map +1 -0
  74. package/dist/change-proposal/reject-change-proposal.test.js +28 -0
  75. package/dist/change-proposal/reject-change-proposal.test.js.map +1 -0
  76. package/dist/change-proposal/schema-definition.d.ts +45 -0
  77. package/dist/change-proposal/schema-definition.d.ts.map +1 -0
  78. package/dist/change-proposal/schema-definition.js +34 -0
  79. package/dist/change-proposal/schema-definition.js.map +1 -0
  80. package/dist/change-proposal/schema.test.d.ts.map +1 -0
  81. package/dist/change-proposal/schema.test.js +103 -0
  82. package/dist/change-proposal/schema.test.js.map +1 -0
  83. package/dist/change-set/apply-change-set.d.ts +1 -1
  84. package/dist/change-set/apply-change-set.d.ts.map +1 -1
  85. package/dist/change-set/apply-change-set.js +29 -41
  86. package/dist/change-set/apply-change-set.js.map +1 -1
  87. package/dist/change-set/apply-change-set.test.js +4 -3
  88. package/dist/change-set/apply-change-set.test.js.map +1 -1
  89. package/dist/change-set/create-change-set.d.ts +3 -5
  90. package/dist/change-set/create-change-set.d.ts.map +1 -1
  91. package/dist/change-set/create-change-set.js +5 -27
  92. package/dist/change-set/create-change-set.js.map +1 -1
  93. package/dist/change-set/create-change-set.test.js +5 -43
  94. package/dist/change-set/create-change-set.test.js.map +1 -1
  95. package/dist/change-set/index.d.ts +1 -1
  96. package/dist/change-set/index.d.ts.map +1 -1
  97. package/dist/change-set/index.js +1 -1
  98. package/dist/change-set/index.js.map +1 -1
  99. package/dist/change-set/schema-definition.d.ts +73 -0
  100. package/dist/change-set/schema-definition.d.ts.map +1 -0
  101. package/dist/change-set/schema-definition.js +72 -0
  102. package/dist/change-set/schema-definition.js.map +1 -0
  103. package/dist/change-set/schema.test.js +12 -154
  104. package/dist/change-set/schema.test.js.map +1 -1
  105. package/dist/commit/index.d.ts +1 -5
  106. package/dist/commit/index.d.ts.map +1 -1
  107. package/dist/commit/index.js +1 -5
  108. package/dist/commit/index.js.map +1 -1
  109. package/dist/commit/schema-definition.d.ts +97 -0
  110. package/dist/commit/schema-definition.d.ts.map +1 -0
  111. package/dist/commit/schema-definition.js +89 -0
  112. package/dist/commit/schema-definition.js.map +1 -0
  113. package/dist/commit/schema.test.js +116 -37
  114. package/dist/commit/schema.test.js.map +1 -1
  115. package/dist/conversation/create-conversation-message.d.ts +11 -0
  116. package/dist/conversation/create-conversation-message.d.ts.map +1 -0
  117. package/dist/conversation/create-conversation-message.js +59 -0
  118. package/dist/conversation/create-conversation-message.js.map +1 -0
  119. package/dist/conversation/create-conversation-message.test.d.ts +2 -0
  120. package/dist/conversation/create-conversation-message.test.d.ts.map +1 -0
  121. package/dist/conversation/create-conversation-message.test.js +98 -0
  122. package/dist/conversation/create-conversation-message.test.js.map +1 -0
  123. package/dist/conversation/create-conversation.d.ts +39 -0
  124. package/dist/conversation/create-conversation.d.ts.map +1 -0
  125. package/dist/conversation/create-conversation.js +80 -0
  126. package/dist/conversation/create-conversation.js.map +1 -0
  127. package/dist/conversation/create-conversation.test.d.ts +2 -0
  128. package/dist/conversation/create-conversation.test.d.ts.map +1 -0
  129. package/dist/conversation/create-conversation.test.js +157 -0
  130. package/dist/conversation/create-conversation.test.js.map +1 -0
  131. package/dist/conversation/index.d.ts +4 -0
  132. package/dist/conversation/index.d.ts.map +1 -0
  133. package/dist/conversation/index.js +4 -0
  134. package/dist/conversation/index.js.map +1 -0
  135. package/dist/conversation/schema-definition.d.ts +64 -0
  136. package/dist/conversation/schema-definition.d.ts.map +1 -0
  137. package/dist/conversation/schema-definition.js +59 -0
  138. package/dist/conversation/schema-definition.js.map +1 -0
  139. package/dist/database/index.d.ts +0 -1
  140. package/dist/database/index.d.ts.map +1 -1
  141. package/dist/database/index.js +0 -1
  142. package/dist/database/index.js.map +1 -1
  143. package/dist/database/init-db.d.ts +30 -4
  144. package/dist/database/init-db.d.ts.map +1 -1
  145. package/dist/database/init-db.js +71 -91
  146. package/dist/database/init-db.js.map +1 -1
  147. package/dist/database/kysely/index.d.ts +2 -0
  148. package/dist/database/kysely/index.d.ts.map +1 -0
  149. package/dist/database/kysely/index.js +2 -0
  150. package/dist/database/kysely/index.js.map +1 -0
  151. package/dist/database/kysely/json-column-config.d.ts +6 -0
  152. package/dist/database/kysely/json-column-config.d.ts.map +1 -0
  153. package/dist/database/kysely/json-column-config.js +55 -0
  154. package/dist/database/kysely/json-column-config.js.map +1 -0
  155. package/dist/database/kysely/plugins/json-column-plugin.d.ts.map +1 -0
  156. package/dist/database/kysely/plugins/json-column-plugin.js +216 -0
  157. package/dist/database/kysely/plugins/json-column-plugin.js.map +1 -0
  158. package/dist/database/kysely/plugins/json-column-plugin.test.d.ts.map +1 -0
  159. package/dist/database/kysely/plugins/json-column-plugin.test.js +441 -0
  160. package/dist/database/kysely/plugins/json-column-plugin.test.js.map +1 -0
  161. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.d.ts.map +1 -0
  162. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.js.map +1 -0
  163. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.d.ts.map +1 -0
  164. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.js +51 -0
  165. package/dist/database/kysely/plugins/view-insert-returning-error-plugin.test.js.map +1 -0
  166. package/dist/database/kysely/plugins.d.ts +3 -0
  167. package/dist/database/kysely/plugins.d.ts.map +1 -0
  168. package/dist/database/kysely/plugins.js +15 -0
  169. package/dist/database/kysely/plugins.js.map +1 -0
  170. package/dist/database/nano-id.test.js +1 -1
  171. package/dist/database/nano-id.test.js.map +1 -1
  172. package/dist/database/schema-view-map.d.ts +3 -0
  173. package/dist/database/schema-view-map.d.ts.map +1 -0
  174. package/dist/database/schema-view-map.js +35 -0
  175. package/dist/database/schema-view-map.js.map +1 -0
  176. package/dist/database/schema.d.ts +70 -34
  177. package/dist/database/schema.d.ts.map +1 -1
  178. package/dist/database/schema.js +15 -34
  179. package/dist/database/schema.js.map +1 -1
  180. package/dist/database/sqlite/content-from-database.d.ts +10 -0
  181. package/dist/database/sqlite/content-from-database.d.ts.map +1 -0
  182. package/dist/database/sqlite/content-from-database.js +11 -0
  183. package/dist/database/sqlite/content-from-database.js.map +1 -0
  184. package/dist/database/sqlite/create-in-memory-database.d.ts +23 -0
  185. package/dist/database/sqlite/create-in-memory-database.d.ts.map +1 -0
  186. package/dist/database/sqlite/create-in-memory-database.js +44 -0
  187. package/dist/database/sqlite/create-in-memory-database.js.map +1 -0
  188. package/dist/database/sqlite/environment-dialect.d.ts +21 -0
  189. package/dist/database/sqlite/environment-dialect.d.ts.map +1 -0
  190. package/dist/database/sqlite/environment-dialect.js +198 -0
  191. package/dist/database/sqlite/environment-dialect.js.map +1 -0
  192. package/dist/database/sqlite/environment-dialect.test.d.ts +2 -0
  193. package/dist/database/sqlite/environment-dialect.test.d.ts.map +1 -0
  194. package/dist/database/sqlite/environment-dialect.test.js +66 -0
  195. package/dist/database/sqlite/environment-dialect.test.js.map +1 -0
  196. package/dist/database/sqlite/import-database.d.ts +18 -0
  197. package/dist/database/sqlite/import-database.d.ts.map +1 -0
  198. package/dist/database/sqlite/import-database.js +24 -0
  199. package/dist/database/sqlite/import-database.js.map +1 -0
  200. package/dist/database/sqlite/index.d.ts +8 -0
  201. package/dist/database/sqlite/index.d.ts.map +1 -0
  202. package/dist/database/sqlite/index.js +7 -0
  203. package/dist/database/sqlite/index.js.map +1 -0
  204. package/dist/database/sqlite/kysely-driver/connection-mutex.d.ts +6 -0
  205. package/dist/database/sqlite/kysely-driver/connection-mutex.d.ts.map +1 -0
  206. package/dist/database/sqlite/kysely-driver/connection-mutex.js +19 -0
  207. package/dist/database/sqlite/kysely-driver/connection-mutex.js.map +1 -0
  208. package/dist/database/sqlite/kysely-driver/index.d.ts +5 -0
  209. package/dist/database/sqlite/kysely-driver/index.d.ts.map +1 -0
  210. package/dist/database/sqlite/kysely-driver/index.js +4 -0
  211. package/dist/database/sqlite/kysely-driver/index.js.map +1 -0
  212. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.d.ts +9 -0
  213. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.d.ts.map +1 -0
  214. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.js +43 -0
  215. package/dist/database/sqlite/kysely-driver/sqlite-wasm-connection.js.map +1 -0
  216. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.d.ts +19 -0
  217. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.d.ts.map +1 -0
  218. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.js +2 -0
  219. package/dist/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.js.map +1 -0
  220. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.d.ts +14 -0
  221. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.d.ts.map +1 -0
  222. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.js +45 -0
  223. package/dist/database/sqlite/kysely-driver/sqlite-wasm-driver.js.map +1 -0
  224. package/dist/database/sqlite/lix-dialect.d.ts +23 -0
  225. package/dist/database/sqlite/lix-dialect.d.ts.map +1 -0
  226. package/dist/database/sqlite/lix-dialect.js +24 -0
  227. package/dist/database/sqlite/lix-dialect.js.map +1 -0
  228. package/dist/database/sqlite/load-database-in-memory.d.ts +13 -0
  229. package/dist/database/sqlite/load-database-in-memory.d.ts.map +1 -0
  230. package/dist/database/sqlite/load-database-in-memory.js +23 -0
  231. package/dist/database/sqlite/load-database-in-memory.js.map +1 -0
  232. package/dist/database/sqlite/sqlite-wasm-binary.d.ts +2 -0
  233. package/dist/database/sqlite/sqlite-wasm-binary.js +42835 -0
  234. package/dist/dependency/kysely/helpers/sqlite.d.ts +5 -0
  235. package/dist/dependency/kysely/helpers/sqlite.d.ts.map +1 -0
  236. package/dist/dependency/kysely/helpers/sqlite.js +5 -0
  237. package/dist/dependency/kysely/helpers/sqlite.js.map +1 -0
  238. package/dist/dependency/kysely/index.d.ts +9 -0
  239. package/dist/dependency/kysely/index.d.ts.map +1 -0
  240. package/dist/dependency/kysely/index.js +9 -0
  241. package/dist/dependency/kysely/index.js.map +1 -0
  242. package/dist/dependency/zettel-ast/index.d.ts.map +1 -0
  243. package/dist/dependency/zettel-ast/index.js.map +1 -0
  244. package/dist/diff/index.d.ts +3 -0
  245. package/dist/diff/index.d.ts.map +1 -0
  246. package/dist/diff/index.js +3 -0
  247. package/dist/diff/index.js.map +1 -0
  248. package/dist/diff/select-commit-diff.bench.d.ts +2 -0
  249. package/dist/diff/select-commit-diff.bench.d.ts.map +1 -0
  250. package/dist/diff/select-commit-diff.bench.js +136 -0
  251. package/dist/diff/select-commit-diff.bench.js.map +1 -0
  252. package/dist/diff/select-commit-diff.d.ts +56 -0
  253. package/dist/diff/select-commit-diff.d.ts.map +1 -0
  254. package/dist/diff/select-commit-diff.js +212 -0
  255. package/dist/diff/select-commit-diff.js.map +1 -0
  256. package/dist/diff/select-commit-diff.test.d.ts +2 -0
  257. package/dist/diff/select-commit-diff.test.d.ts.map +1 -0
  258. package/dist/diff/select-commit-diff.test.js +52 -0
  259. package/dist/diff/select-commit-diff.test.js.map +1 -0
  260. package/dist/diff/select-working-diff.bench.d.ts +2 -0
  261. package/dist/diff/select-working-diff.bench.d.ts.map +1 -0
  262. package/dist/diff/select-working-diff.bench.js +82 -0
  263. package/dist/diff/select-working-diff.bench.js.map +1 -0
  264. package/dist/diff/select-working-diff.d.ts +105 -0
  265. package/dist/diff/select-working-diff.d.ts.map +1 -0
  266. package/dist/diff/select-working-diff.js +95 -0
  267. package/dist/diff/select-working-diff.js.map +1 -0
  268. package/dist/diff/select-working-diff.test.d.ts +2 -0
  269. package/dist/diff/select-working-diff.test.d.ts.map +1 -0
  270. package/dist/diff/select-working-diff.test.js +231 -0
  271. package/dist/diff/select-working-diff.test.js.map +1 -0
  272. package/dist/engine/boot.d.ts +90 -0
  273. package/dist/engine/boot.d.ts.map +1 -0
  274. package/dist/engine/boot.js +149 -0
  275. package/dist/engine/boot.js.map +1 -0
  276. package/dist/engine/boot.test.d.ts +2 -0
  277. package/dist/engine/boot.test.d.ts.map +1 -0
  278. package/dist/engine/boot.test.js +75 -0
  279. package/dist/engine/boot.test.js.map +1 -0
  280. package/dist/engine/cel-environment/cel-environment.d.ts +17 -0
  281. package/dist/engine/cel-environment/cel-environment.d.ts.map +1 -0
  282. package/dist/engine/cel-environment/cel-environment.js +54 -0
  283. package/dist/engine/cel-environment/cel-environment.js.map +1 -0
  284. package/dist/engine/cel-environment/cel-environment.test.d.ts +2 -0
  285. package/dist/engine/cel-environment/cel-environment.test.d.ts.map +1 -0
  286. package/dist/engine/cel-environment/cel-environment.test.js +19 -0
  287. package/dist/engine/cel-environment/cel-environment.test.js.map +1 -0
  288. package/dist/engine/deterministic-mode/is-deterministic-mode.d.ts +36 -0
  289. package/dist/engine/deterministic-mode/is-deterministic-mode.d.ts.map +1 -0
  290. package/dist/engine/deterministic-mode/is-deterministic-mode.js +80 -0
  291. package/dist/engine/deterministic-mode/is-deterministic-mode.js.map +1 -0
  292. package/dist/engine/deterministic-mode/is-deterministic-mode.test.d.ts.map +1 -0
  293. package/dist/engine/deterministic-mode/is-deterministic-mode.test.js +95 -0
  294. package/dist/engine/deterministic-mode/is-deterministic-mode.test.js.map +1 -0
  295. package/dist/engine/deterministic-mode/options.d.ts +48 -0
  296. package/dist/engine/deterministic-mode/options.d.ts.map +1 -0
  297. package/dist/engine/deterministic-mode/options.js +47 -0
  298. package/dist/engine/deterministic-mode/options.js.map +1 -0
  299. package/dist/engine/deterministic-mode/options.test.d.ts.map +1 -0
  300. package/dist/engine/deterministic-mode/options.test.js +111 -0
  301. package/dist/engine/deterministic-mode/options.test.js.map +1 -0
  302. package/dist/engine/entity-views/build-json-object-entries.d.ts +12 -0
  303. package/dist/engine/entity-views/build-json-object-entries.d.ts.map +1 -0
  304. package/dist/engine/entity-views/build-json-object-entries.js +37 -0
  305. package/dist/engine/entity-views/build-json-object-entries.js.map +1 -0
  306. package/dist/engine/entity-views/build-json-object-entries.test.d.ts +2 -0
  307. package/dist/engine/entity-views/build-json-object-entries.test.d.ts.map +1 -0
  308. package/dist/engine/entity-views/build-json-object-entries.test.js +35 -0
  309. package/dist/engine/entity-views/build-json-object-entries.test.js.map +1 -0
  310. package/dist/engine/entity-views/entity-state-by-version.d.ts +238 -0
  311. package/dist/engine/entity-views/entity-state-by-version.d.ts.map +1 -0
  312. package/dist/engine/entity-views/entity-state-by-version.js +2 -0
  313. package/dist/engine/entity-views/entity-state-by-version.js.map +1 -0
  314. package/dist/engine/entity-views/entity-state-history.d.ts +189 -0
  315. package/dist/engine/entity-views/entity-state-history.d.ts.map +1 -0
  316. package/dist/engine/entity-views/entity-state-history.js +2 -0
  317. package/dist/engine/entity-views/entity-state-history.js.map +1 -0
  318. package/dist/engine/entity-views/entity-state.d.ts +218 -0
  319. package/dist/engine/entity-views/entity-state.d.ts.map +1 -0
  320. package/dist/engine/entity-views/entity-state.js +2 -0
  321. package/dist/engine/entity-views/entity-state.js.map +1 -0
  322. package/dist/engine/entity-views/entity-view-builder.d.ts +34 -0
  323. package/dist/engine/entity-views/entity-view-builder.d.ts.map +1 -0
  324. package/dist/engine/entity-views/entity-view-builder.js +4 -0
  325. package/dist/engine/entity-views/entity-view-builder.js.map +1 -0
  326. package/dist/engine/entity-views/index.d.ts.map +1 -0
  327. package/dist/engine/entity-views/index.js.map +1 -0
  328. package/dist/engine/entity-views/types.d.ts +309 -0
  329. package/dist/engine/entity-views/types.d.ts.map +1 -0
  330. package/dist/engine/entity-views/types.js.map +1 -0
  331. package/dist/engine/entity-views/types.test.d.ts.map +1 -0
  332. package/dist/engine/entity-views/types.test.js +62 -0
  333. package/dist/engine/entity-views/types.test.js.map +1 -0
  334. package/dist/engine/execute-sync.d.ts +5 -0
  335. package/dist/engine/execute-sync.d.ts.map +1 -0
  336. package/dist/engine/execute-sync.js +38 -0
  337. package/dist/engine/execute-sync.js.map +1 -0
  338. package/dist/engine/execute-sync.test.d.ts.map +1 -0
  339. package/dist/engine/execute-sync.test.js +64 -0
  340. package/dist/engine/execute-sync.test.js.map +1 -0
  341. package/dist/engine/explain-query.d.ts +15 -0
  342. package/dist/engine/explain-query.d.ts.map +1 -0
  343. package/dist/engine/explain-query.js +66 -0
  344. package/dist/engine/explain-query.js.map +1 -0
  345. package/dist/engine/explain-query.test.d.ts +2 -0
  346. package/dist/engine/explain-query.test.d.ts.map +1 -0
  347. package/dist/engine/explain-query.test.js +17 -0
  348. package/dist/engine/explain-query.test.js.map +1 -0
  349. package/dist/engine/functions/function-registry.d.ts +20 -0
  350. package/dist/engine/functions/function-registry.d.ts.map +1 -0
  351. package/dist/engine/functions/function-registry.js +25 -0
  352. package/dist/engine/functions/function-registry.js.map +1 -0
  353. package/dist/engine/functions/generate-human-id.d.ts +43 -0
  354. package/dist/engine/functions/generate-human-id.d.ts.map +1 -0
  355. package/dist/engine/functions/generate-human-id.js +335 -0
  356. package/dist/engine/functions/generate-human-id.js.map +1 -0
  357. package/dist/engine/functions/generate-human-id.test.d.ts.map +1 -0
  358. package/dist/engine/functions/generate-human-id.test.js +156 -0
  359. package/dist/engine/functions/generate-human-id.test.js.map +1 -0
  360. package/dist/engine/functions/index.d.ts +7 -0
  361. package/dist/engine/functions/index.d.ts.map +1 -0
  362. package/dist/engine/functions/index.js +7 -0
  363. package/dist/engine/functions/index.js.map +1 -0
  364. package/dist/engine/functions/nano-id.bench.d.ts +2 -0
  365. package/dist/engine/functions/nano-id.bench.d.ts.map +1 -0
  366. package/dist/engine/functions/nano-id.bench.js +48 -0
  367. package/dist/engine/functions/nano-id.bench.js.map +1 -0
  368. package/dist/engine/functions/nano-id.d.ts +69 -0
  369. package/dist/engine/functions/nano-id.d.ts.map +1 -0
  370. package/dist/engine/functions/nano-id.js +170 -0
  371. package/dist/engine/functions/nano-id.js.map +1 -0
  372. package/dist/engine/functions/nano-id.test.d.ts.map +1 -0
  373. package/dist/engine/functions/nano-id.test.js +163 -0
  374. package/dist/engine/functions/nano-id.test.js.map +1 -0
  375. package/dist/engine/functions/random.d.ts +57 -0
  376. package/dist/engine/functions/random.d.ts.map +1 -0
  377. package/dist/engine/functions/random.js +214 -0
  378. package/dist/engine/functions/random.js.map +1 -0
  379. package/dist/engine/functions/random.test.d.ts.map +1 -0
  380. package/dist/engine/functions/random.test.js +244 -0
  381. package/dist/engine/functions/random.test.js.map +1 -0
  382. package/dist/engine/functions/register-builtins.d.ts +9 -0
  383. package/dist/engine/functions/register-builtins.d.ts.map +1 -0
  384. package/dist/engine/functions/register-builtins.js +110 -0
  385. package/dist/engine/functions/register-builtins.js.map +1 -0
  386. package/dist/engine/functions/sequence.d.ts +77 -0
  387. package/dist/engine/functions/sequence.d.ts.map +1 -0
  388. package/dist/engine/functions/sequence.js +136 -0
  389. package/dist/engine/functions/sequence.js.map +1 -0
  390. package/dist/engine/functions/sequence.test.d.ts.map +1 -0
  391. package/dist/engine/functions/sequence.test.js +77 -0
  392. package/dist/engine/functions/sequence.test.js.map +1 -0
  393. package/dist/engine/functions/timestamp.d.ts +44 -0
  394. package/dist/engine/functions/timestamp.d.ts.map +1 -0
  395. package/dist/engine/functions/timestamp.js +70 -0
  396. package/dist/engine/functions/timestamp.js.map +1 -0
  397. package/dist/engine/functions/timestamp.test.d.ts.map +1 -0
  398. package/dist/engine/functions/timestamp.test.js +147 -0
  399. package/dist/engine/functions/timestamp.test.js.map +1 -0
  400. package/dist/engine/functions/uuid-v7.d.ts +50 -0
  401. package/dist/engine/functions/uuid-v7.d.ts.map +1 -0
  402. package/dist/engine/functions/uuid-v7.js +75 -0
  403. package/dist/engine/functions/uuid-v7.js.map +1 -0
  404. package/dist/engine/functions/uuid-v7.test.d.ts.map +1 -0
  405. package/dist/engine/functions/uuid-v7.test.js +114 -0
  406. package/dist/engine/functions/uuid-v7.test.js.map +1 -0
  407. package/dist/engine/index.d.ts +2 -0
  408. package/dist/engine/index.d.ts.map +1 -0
  409. package/dist/engine/index.js +2 -0
  410. package/dist/engine/index.js.map +1 -0
  411. package/dist/engine/internal-query-builder.d.ts +26 -0
  412. package/dist/engine/internal-query-builder.d.ts.map +1 -0
  413. package/dist/engine/internal-query-builder.js +34 -0
  414. package/dist/engine/internal-query-builder.js.map +1 -0
  415. package/dist/engine/preprocessor/create-preprocessor.d.ts +18 -0
  416. package/dist/engine/preprocessor/create-preprocessor.d.ts.map +1 -0
  417. package/dist/engine/preprocessor/create-preprocessor.js +217 -0
  418. package/dist/engine/preprocessor/create-preprocessor.js.map +1 -0
  419. package/dist/engine/preprocessor/create-preprocessor.test.d.ts +2 -0
  420. package/dist/engine/preprocessor/create-preprocessor.test.d.ts.map +1 -0
  421. package/dist/engine/preprocessor/create-preprocessor.test.js +216 -0
  422. package/dist/engine/preprocessor/create-preprocessor.test.js.map +1 -0
  423. package/dist/engine/preprocessor/entity-views/delete.d.ts +3 -0
  424. package/dist/engine/preprocessor/entity-views/delete.d.ts.map +1 -0
  425. package/dist/engine/preprocessor/entity-views/delete.js +235 -0
  426. package/dist/engine/preprocessor/entity-views/delete.js.map +1 -0
  427. package/dist/engine/preprocessor/entity-views/delete.test.d.ts +2 -0
  428. package/dist/engine/preprocessor/entity-views/delete.test.d.ts.map +1 -0
  429. package/dist/engine/preprocessor/entity-views/delete.test.js +700 -0
  430. package/dist/engine/preprocessor/entity-views/delete.test.js.map +1 -0
  431. package/dist/engine/preprocessor/entity-views/insert.d.ts +3 -0
  432. package/dist/engine/preprocessor/entity-views/insert.d.ts.map +1 -0
  433. package/dist/engine/preprocessor/entity-views/insert.js +675 -0
  434. package/dist/engine/preprocessor/entity-views/insert.js.map +1 -0
  435. package/dist/engine/preprocessor/entity-views/insert.test.d.ts +2 -0
  436. package/dist/engine/preprocessor/entity-views/insert.test.d.ts.map +1 -0
  437. package/dist/engine/preprocessor/entity-views/insert.test.js +1014 -0
  438. package/dist/engine/preprocessor/entity-views/insert.test.js.map +1 -0
  439. package/dist/engine/preprocessor/entity-views/select.bench.d.ts +2 -0
  440. package/dist/engine/preprocessor/entity-views/select.bench.d.ts.map +1 -0
  441. package/dist/engine/preprocessor/entity-views/select.bench.js +145 -0
  442. package/dist/engine/preprocessor/entity-views/select.bench.js.map +1 -0
  443. package/dist/engine/preprocessor/entity-views/select.d.ts +6 -0
  444. package/dist/engine/preprocessor/entity-views/select.d.ts.map +1 -0
  445. package/dist/engine/preprocessor/entity-views/select.js +1306 -0
  446. package/dist/engine/preprocessor/entity-views/select.js.map +1 -0
  447. package/dist/engine/preprocessor/entity-views/select.test.d.ts +2 -0
  448. package/dist/engine/preprocessor/entity-views/select.test.d.ts.map +1 -0
  449. package/dist/engine/preprocessor/entity-views/select.test.js +320 -0
  450. package/dist/engine/preprocessor/entity-views/select.test.js.map +1 -0
  451. package/dist/engine/preprocessor/entity-views/shared.d.ts +165 -0
  452. package/dist/engine/preprocessor/entity-views/shared.d.ts.map +1 -0
  453. package/dist/engine/preprocessor/entity-views/shared.js +1080 -0
  454. package/dist/engine/preprocessor/entity-views/shared.js.map +1 -0
  455. package/dist/engine/preprocessor/entity-views/update.d.ts +3 -0
  456. package/dist/engine/preprocessor/entity-views/update.d.ts.map +1 -0
  457. package/dist/engine/preprocessor/entity-views/update.js +527 -0
  458. package/dist/engine/preprocessor/entity-views/update.js.map +1 -0
  459. package/dist/engine/preprocessor/entity-views/update.test.d.ts +2 -0
  460. package/dist/engine/preprocessor/entity-views/update.test.d.ts.map +1 -0
  461. package/dist/engine/preprocessor/entity-views/update.test.js +356 -0
  462. package/dist/engine/preprocessor/entity-views/update.test.js.map +1 -0
  463. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.d.ts +38 -0
  464. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.d.ts.map +1 -0
  465. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.js +296 -0
  466. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.js.map +1 -0
  467. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.d.ts +2 -0
  468. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.d.ts.map +1 -0
  469. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.js +80 -0
  470. package/dist/engine/preprocessor/inheritance/version-inheritance-cache.test.js.map +1 -0
  471. package/dist/engine/preprocessor/sql-parser/ast-helpers.d.ts +110 -0
  472. package/dist/engine/preprocessor/sql-parser/ast-helpers.d.ts.map +1 -0
  473. package/dist/engine/preprocessor/sql-parser/ast-helpers.js +196 -0
  474. package/dist/engine/preprocessor/sql-parser/ast-helpers.js.map +1 -0
  475. package/dist/engine/preprocessor/sql-parser/column-usage.d.ts +14 -0
  476. package/dist/engine/preprocessor/sql-parser/column-usage.d.ts.map +1 -0
  477. package/dist/engine/preprocessor/sql-parser/column-usage.js +300 -0
  478. package/dist/engine/preprocessor/sql-parser/column-usage.js.map +1 -0
  479. package/dist/engine/preprocessor/sql-parser/compile.d.ts +30 -0
  480. package/dist/engine/preprocessor/sql-parser/compile.d.ts.map +1 -0
  481. package/dist/engine/preprocessor/sql-parser/compile.js +719 -0
  482. package/dist/engine/preprocessor/sql-parser/compile.js.map +1 -0
  483. package/dist/engine/preprocessor/sql-parser/compile.test.d.ts +2 -0
  484. package/dist/engine/preprocessor/sql-parser/compile.test.d.ts.map +1 -0
  485. package/dist/engine/preprocessor/sql-parser/compile.test.js +100 -0
  486. package/dist/engine/preprocessor/sql-parser/compile.test.js.map +1 -0
  487. package/dist/engine/preprocessor/sql-parser/cst.d.ts +49 -0
  488. package/dist/engine/preprocessor/sql-parser/cst.d.ts.map +1 -0
  489. package/dist/engine/preprocessor/sql-parser/cst.js +768 -0
  490. package/dist/engine/preprocessor/sql-parser/cst.js.map +1 -0
  491. package/dist/engine/preprocessor/sql-parser/lexer.d.ts +93 -0
  492. package/dist/engine/preprocessor/sql-parser/lexer.d.ts.map +1 -0
  493. package/dist/engine/preprocessor/sql-parser/lexer.js +517 -0
  494. package/dist/engine/preprocessor/sql-parser/lexer.js.map +1 -0
  495. package/dist/engine/preprocessor/sql-parser/nodes.d.ts +268 -0
  496. package/dist/engine/preprocessor/sql-parser/nodes.d.ts.map +1 -0
  497. package/dist/engine/preprocessor/sql-parser/nodes.js +20 -0
  498. package/dist/engine/preprocessor/sql-parser/nodes.js.map +1 -0
  499. package/dist/engine/preprocessor/sql-parser/parse.d.ts +15 -0
  500. package/dist/engine/preprocessor/sql-parser/parse.d.ts.map +1 -0
  501. package/dist/engine/preprocessor/sql-parser/parse.js +1503 -0
  502. package/dist/engine/preprocessor/sql-parser/parse.js.map +1 -0
  503. package/dist/engine/preprocessor/sql-parser/parse.test.d.ts +2 -0
  504. package/dist/engine/preprocessor/sql-parser/parse.test.d.ts.map +1 -0
  505. package/dist/engine/preprocessor/sql-parser/parse.test.js +1483 -0
  506. package/dist/engine/preprocessor/sql-parser/parse.test.js.map +1 -0
  507. package/dist/engine/preprocessor/sql-parser/visitor.d.ts +80 -0
  508. package/dist/engine/preprocessor/sql-parser/visitor.d.ts.map +1 -0
  509. package/dist/engine/preprocessor/sql-parser/visitor.js +875 -0
  510. package/dist/engine/preprocessor/sql-parser/visitor.js.map +1 -0
  511. package/dist/engine/preprocessor/sql-parser/visitor.test.d.ts +2 -0
  512. package/dist/engine/preprocessor/sql-parser/visitor.test.d.ts.map +1 -0
  513. package/dist/engine/preprocessor/sql-parser/visitor.test.js +142 -0
  514. package/dist/engine/preprocessor/sql-parser/visitor.test.js.map +1 -0
  515. package/dist/engine/preprocessor/steps/cache-populator.d.ts +12 -0
  516. package/dist/engine/preprocessor/steps/cache-populator.d.ts.map +1 -0
  517. package/dist/engine/preprocessor/steps/cache-populator.js +603 -0
  518. package/dist/engine/preprocessor/steps/cache-populator.js.map +1 -0
  519. package/dist/engine/preprocessor/steps/cache-populator.test.d.ts +2 -0
  520. package/dist/engine/preprocessor/steps/cache-populator.test.d.ts.map +1 -0
  521. package/dist/engine/preprocessor/steps/cache-populator.test.js +95 -0
  522. package/dist/engine/preprocessor/steps/cache-populator.test.js.map +1 -0
  523. package/dist/engine/preprocessor/steps/expand-sql-views.d.ts +13 -0
  524. package/dist/engine/preprocessor/steps/expand-sql-views.d.ts.map +1 -0
  525. package/dist/engine/preprocessor/steps/expand-sql-views.js +894 -0
  526. package/dist/engine/preprocessor/steps/expand-sql-views.js.map +1 -0
  527. package/dist/engine/preprocessor/steps/expand-sql-views.test.d.ts +2 -0
  528. package/dist/engine/preprocessor/steps/expand-sql-views.test.d.ts.map +1 -0
  529. package/dist/engine/preprocessor/steps/expand-sql-views.test.js +1177 -0
  530. package/dist/engine/preprocessor/steps/expand-sql-views.test.js.map +1 -0
  531. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.d.ts +7 -0
  532. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.d.ts.map +1 -0
  533. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.js +190 -0
  534. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.js.map +1 -0
  535. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.d.ts +2 -0
  536. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.d.ts.map +1 -0
  537. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.js +74 -0
  538. package/dist/engine/preprocessor/steps/rewrite-active-version-subquery.test.js.map +1 -0
  539. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.d.ts +2 -0
  540. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.d.ts.map +1 -0
  541. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.js +64 -0
  542. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.bench.js.map +1 -0
  543. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.d.ts +16 -0
  544. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.d.ts.map +1 -0
  545. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.js +2305 -0
  546. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.js.map +1 -0
  547. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.d.ts +2 -0
  548. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.d.ts.map +1 -0
  549. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.js +975 -0
  550. package/dist/engine/preprocessor/steps/rewrite-vtable-selects.test.js.map +1 -0
  551. package/dist/engine/preprocessor/types.d.ts +93 -0
  552. package/dist/engine/preprocessor/types.d.ts.map +1 -0
  553. package/dist/engine/preprocessor/types.js.map +1 -0
  554. package/dist/engine/sql-parser/tokenizer.d.ts +60 -0
  555. package/dist/engine/sql-parser/tokenizer.d.ts.map +1 -0
  556. package/dist/engine/sql-parser/tokenizer.js +188 -0
  557. package/dist/engine/sql-parser/tokenizer.js.map +1 -0
  558. package/dist/engine/sql-parser/tokenizer.test.d.ts +2 -0
  559. package/dist/engine/sql-parser/tokenizer.test.d.ts.map +1 -0
  560. package/dist/engine/sql-parser/tokenizer.test.js +252 -0
  561. package/dist/engine/sql-parser/tokenizer.test.js.map +1 -0
  562. package/dist/engine/with-runtime-cache.d.ts +27 -0
  563. package/dist/engine/with-runtime-cache.d.ts.map +1 -0
  564. package/dist/engine/with-runtime-cache.js +140 -0
  565. package/dist/engine/with-runtime-cache.js.map +1 -0
  566. package/dist/engine/with-runtime-cache.test.d.ts +2 -0
  567. package/dist/engine/with-runtime-cache.test.d.ts.map +1 -0
  568. package/dist/engine/with-runtime-cache.test.js +129 -0
  569. package/dist/engine/with-runtime-cache.test.js.map +1 -0
  570. package/dist/entity/conversation/attach-conversation.d.ts +49 -0
  571. package/dist/entity/conversation/attach-conversation.d.ts.map +1 -0
  572. package/dist/entity/conversation/attach-conversation.js +74 -0
  573. package/dist/entity/conversation/attach-conversation.js.map +1 -0
  574. package/dist/entity/conversation/attach-conversation.test.d.ts +2 -0
  575. package/dist/entity/conversation/attach-conversation.test.d.ts.map +1 -0
  576. package/dist/entity/conversation/attach-conversation.test.js +220 -0
  577. package/dist/entity/conversation/attach-conversation.test.js.map +1 -0
  578. package/dist/entity/conversation/schema-definition.d.ts +43 -0
  579. package/dist/entity/conversation/schema-definition.d.ts.map +1 -0
  580. package/dist/entity/conversation/schema-definition.js +44 -0
  581. package/dist/entity/conversation/schema-definition.js.map +1 -0
  582. package/dist/entity/conversation/schema.test.d.ts.map +1 -0
  583. package/dist/entity/conversation/schema.test.js +91 -0
  584. package/dist/entity/conversation/schema.test.js.map +1 -0
  585. package/dist/entity/eb-entity.d.ts +4 -4
  586. package/dist/entity/eb-entity.d.ts.map +1 -1
  587. package/dist/entity/eb-entity.js +6 -6
  588. package/dist/entity/eb-entity.js.map +1 -1
  589. package/dist/entity/eb-entity.test.js +143 -66
  590. package/dist/entity/eb-entity.test.js.map +1 -1
  591. package/dist/entity/index.d.ts +5 -5
  592. package/dist/entity/index.d.ts.map +1 -1
  593. package/dist/entity/index.js +2 -2
  594. package/dist/entity/index.js.map +1 -1
  595. package/dist/entity/label/attach-label.d.ts +79 -0
  596. package/dist/entity/label/attach-label.d.ts.map +1 -0
  597. package/dist/entity/label/attach-label.js +144 -0
  598. package/dist/entity/label/attach-label.js.map +1 -0
  599. package/dist/entity/label/attach-label.test.d.ts +2 -0
  600. package/dist/entity/label/attach-label.test.d.ts.map +1 -0
  601. package/dist/entity/label/attach-label.test.js +295 -0
  602. package/dist/entity/label/attach-label.test.js.map +1 -0
  603. package/dist/entity/label/schema-definition.d.ts +43 -0
  604. package/dist/entity/label/schema-definition.d.ts.map +1 -0
  605. package/dist/entity/label/schema-definition.js +39 -0
  606. package/dist/entity/label/schema-definition.js.map +1 -0
  607. package/dist/entity/label/schema.test.js +266 -33
  608. package/dist/entity/label/schema.test.js.map +1 -1
  609. package/dist/entity/types.d.ts +11 -0
  610. package/dist/entity/types.d.ts.map +1 -0
  611. package/dist/entity/types.js +2 -0
  612. package/dist/entity/types.js.map +1 -0
  613. package/dist/environment/api.d.ts +38 -0
  614. package/dist/environment/api.d.ts.map +1 -0
  615. package/dist/environment/api.js +2 -0
  616. package/dist/environment/api.js.map +1 -0
  617. package/dist/environment/api.test.d.ts +2 -0
  618. package/dist/environment/api.test.d.ts.map +1 -0
  619. package/dist/environment/api.test.js +76 -0
  620. package/dist/environment/api.test.js.map +1 -0
  621. package/dist/environment/in-memory.d.ts +22 -0
  622. package/dist/environment/in-memory.d.ts.map +1 -0
  623. package/dist/environment/in-memory.js +55 -0
  624. package/dist/environment/in-memory.js.map +1 -0
  625. package/dist/environment/in-memory.test.d.ts.map +1 -0
  626. package/dist/environment/in-memory.test.js +69 -0
  627. package/dist/environment/in-memory.test.js.map +1 -0
  628. package/dist/environment/index.d.ts +4 -0
  629. package/dist/environment/index.d.ts.map +1 -0
  630. package/dist/environment/index.js +3 -0
  631. package/dist/environment/index.js.map +1 -0
  632. package/dist/environment/kysely/kysely-driver.test.d.ts +2 -0
  633. package/dist/environment/kysely/kysely-driver.test.d.ts.map +1 -0
  634. package/dist/environment/kysely/kysely-driver.test.js +26 -0
  635. package/dist/environment/kysely/kysely-driver.test.js.map +1 -0
  636. package/dist/environment/load-from-string.d.ts +3 -0
  637. package/dist/environment/load-from-string.d.ts.map +1 -0
  638. package/dist/environment/load-from-string.js +71 -0
  639. package/dist/environment/load-from-string.js.map +1 -0
  640. package/dist/environment/load-from-string.test.d.ts +2 -0
  641. package/dist/environment/load-from-string.test.d.ts.map +1 -0
  642. package/dist/environment/load-from-string.test.js +16 -0
  643. package/dist/environment/load-from-string.test.js.map +1 -0
  644. package/dist/environment/opfs-sah.browser.test.d.ts +2 -0
  645. package/dist/environment/opfs-sah.browser.test.d.ts.map +1 -0
  646. package/dist/environment/opfs-sah.browser.test.js +309 -0
  647. package/dist/environment/opfs-sah.browser.test.js.map +1 -0
  648. package/dist/environment/opfs-sah.d.ts +63 -0
  649. package/dist/environment/opfs-sah.d.ts.map +1 -0
  650. package/dist/environment/opfs-sah.js +240 -0
  651. package/dist/environment/opfs-sah.js.map +1 -0
  652. package/dist/environment/opfs-sah.worker.d.ts +2 -0
  653. package/dist/environment/opfs-sah.worker.d.ts.map +1 -0
  654. package/dist/environment/opfs-sah.worker.js +212 -0
  655. package/dist/environment/opfs-sah.worker.js.map +1 -0
  656. package/dist/environment/test-actors/echo.actor.d.ts +2 -0
  657. package/dist/environment/test-actors/echo.actor.d.ts.map +1 -0
  658. package/dist/environment/test-actors/echo.actor.js +7 -0
  659. package/dist/environment/test-actors/echo.actor.js.map +1 -0
  660. package/dist/filesystem/directory/ensure-directories.d.ts +48 -0
  661. package/dist/filesystem/directory/ensure-directories.d.ts.map +1 -0
  662. package/dist/filesystem/directory/ensure-directories.js +223 -0
  663. package/dist/filesystem/directory/ensure-directories.js.map +1 -0
  664. package/dist/filesystem/directory/schema-definition.d.ts +36 -0
  665. package/dist/filesystem/directory/schema-definition.d.ts.map +1 -0
  666. package/dist/filesystem/directory/schema-definition.js +35 -0
  667. package/dist/filesystem/directory/schema-definition.js.map +1 -0
  668. package/dist/filesystem/directory/schema.d.ts +11 -0
  669. package/dist/filesystem/directory/schema.d.ts.map +1 -0
  670. package/dist/filesystem/directory/schema.js +494 -0
  671. package/dist/filesystem/directory/schema.js.map +1 -0
  672. package/dist/filesystem/directory/schema.test.d.ts.map +1 -0
  673. package/dist/filesystem/directory/schema.test.js +93 -0
  674. package/dist/filesystem/directory/schema.test.js.map +1 -0
  675. package/dist/filesystem/file/cache/clear-file-data-cache.d.ts +17 -0
  676. package/dist/filesystem/file/cache/clear-file-data-cache.d.ts.map +1 -0
  677. package/dist/filesystem/file/cache/clear-file-data-cache.js +54 -0
  678. package/dist/filesystem/file/cache/clear-file-data-cache.js.map +1 -0
  679. package/dist/filesystem/file/cache/lixcol-schema.d.ts +27 -0
  680. package/dist/filesystem/file/cache/lixcol-schema.d.ts.map +1 -0
  681. package/dist/filesystem/file/cache/lixcol-schema.js +31 -0
  682. package/dist/filesystem/file/cache/lixcol-schema.js.map +1 -0
  683. package/dist/filesystem/file/cache/path-cache-schema.d.ts +25 -0
  684. package/dist/filesystem/file/cache/path-cache-schema.d.ts.map +1 -0
  685. package/dist/filesystem/file/cache/path-cache-schema.js +30 -0
  686. package/dist/filesystem/file/cache/path-cache-schema.js.map +1 -0
  687. package/dist/filesystem/file/cache/schema.d.ts +21 -0
  688. package/dist/filesystem/file/cache/schema.d.ts.map +1 -0
  689. package/dist/filesystem/file/cache/schema.js +24 -0
  690. package/dist/filesystem/file/cache/schema.js.map +1 -0
  691. package/dist/filesystem/file/cache/schema.test.d.ts.map +1 -0
  692. package/dist/filesystem/file/cache/schema.test.js +264 -0
  693. package/dist/filesystem/file/cache/schema.test.js.map +1 -0
  694. package/dist/filesystem/file/cache/update-file-data-cache.d.ts +20 -0
  695. package/dist/filesystem/file/cache/update-file-data-cache.d.ts.map +1 -0
  696. package/dist/filesystem/file/cache/update-file-data-cache.js +25 -0
  697. package/dist/filesystem/file/cache/update-file-data-cache.js.map +1 -0
  698. package/dist/filesystem/file/cache/update-file-lixcol-cache.d.ts +21 -0
  699. package/dist/filesystem/file/cache/update-file-lixcol-cache.d.ts.map +1 -0
  700. package/dist/filesystem/file/cache/update-file-lixcol-cache.js +78 -0
  701. package/dist/filesystem/file/cache/update-file-lixcol-cache.js.map +1 -0
  702. package/dist/filesystem/file/cache/update-file-path-cache.d.ts +25 -0
  703. package/dist/filesystem/file/cache/update-file-path-cache.d.ts.map +1 -0
  704. package/dist/filesystem/file/cache/update-file-path-cache.js +38 -0
  705. package/dist/filesystem/file/cache/update-file-path-cache.js.map +1 -0
  706. package/dist/filesystem/file/descriptor-utils.d.ts +70 -0
  707. package/dist/filesystem/file/descriptor-utils.d.ts.map +1 -0
  708. package/dist/filesystem/file/descriptor-utils.js +218 -0
  709. package/dist/filesystem/file/descriptor-utils.js.map +1 -0
  710. package/dist/filesystem/file/file-handlers.d.ts +22 -0
  711. package/dist/filesystem/file/file-handlers.d.ts.map +1 -0
  712. package/dist/filesystem/file/file-handlers.js +540 -0
  713. package/dist/filesystem/file/file-handlers.js.map +1 -0
  714. package/dist/filesystem/file/file-handlers.test.d.ts.map +1 -0
  715. package/dist/filesystem/file/file-handlers.test.js +344 -0
  716. package/dist/filesystem/file/file-handlers.test.js.map +1 -0
  717. package/dist/filesystem/file/materialize-file-data-at-commit.d.ts +9 -0
  718. package/dist/filesystem/file/materialize-file-data-at-commit.d.ts.map +1 -0
  719. package/dist/filesystem/file/materialize-file-data-at-commit.js +156 -0
  720. package/dist/filesystem/file/materialize-file-data-at-commit.js.map +1 -0
  721. package/dist/filesystem/file/materialize-file-data.d.ts +8 -0
  722. package/dist/filesystem/file/materialize-file-data.d.ts.map +1 -0
  723. package/dist/filesystem/file/materialize-file-data.js +111 -0
  724. package/dist/filesystem/file/materialize-file-data.js.map +1 -0
  725. package/dist/filesystem/file/materialize-file-data.test.d.ts.map +1 -0
  726. package/dist/filesystem/file/materialize-file-data.test.js +104 -0
  727. package/dist/filesystem/file/materialize-file-data.test.js.map +1 -0
  728. package/dist/filesystem/file/schema-definition.d.ts +46 -0
  729. package/dist/filesystem/file/schema-definition.d.ts.map +1 -0
  730. package/dist/filesystem/file/schema-definition.js +39 -0
  731. package/dist/filesystem/file/schema-definition.js.map +1 -0
  732. package/dist/filesystem/file/schema.d.ts +54 -0
  733. package/dist/filesystem/file/schema.d.ts.map +1 -0
  734. package/dist/filesystem/file/schema.js +620 -0
  735. package/dist/filesystem/file/schema.js.map +1 -0
  736. package/dist/filesystem/file/schema.test.d.ts.map +1 -0
  737. package/dist/filesystem/file/schema.test.js +1885 -0
  738. package/dist/filesystem/file/schema.test.js.map +1 -0
  739. package/dist/filesystem/file/select-file-data.d.ts +21 -0
  740. package/dist/filesystem/file/select-file-data.d.ts.map +1 -0
  741. package/dist/filesystem/file/select-file-data.js +48 -0
  742. package/dist/filesystem/file/select-file-data.js.map +1 -0
  743. package/dist/filesystem/file/select-file-lixcol.d.ts +27 -0
  744. package/dist/filesystem/file/select-file-lixcol.d.ts.map +1 -0
  745. package/dist/filesystem/file/select-file-lixcol.js +120 -0
  746. package/dist/filesystem/file/select-file-lixcol.js.map +1 -0
  747. package/dist/filesystem/file/store-detected-change-schema.d.ts +8 -0
  748. package/dist/filesystem/file/store-detected-change-schema.d.ts.map +1 -0
  749. package/dist/filesystem/file/store-detected-change-schema.js +38 -0
  750. package/dist/filesystem/file/store-detected-change-schema.js.map +1 -0
  751. package/dist/filesystem/file/store-detected-change-schema.test.d.ts.map +1 -0
  752. package/dist/filesystem/file/store-detected-change-schema.test.js +222 -0
  753. package/dist/filesystem/file/store-detected-change-schema.test.js.map +1 -0
  754. package/dist/filesystem/file/unknown-file-fallback-plugin.d.ts +23 -0
  755. package/dist/filesystem/file/unknown-file-fallback-plugin.d.ts.map +1 -0
  756. package/dist/filesystem/file/unknown-file-fallback-plugin.js +74 -0
  757. package/dist/filesystem/file/unknown-file-fallback-plugin.js.map +1 -0
  758. package/dist/filesystem/file/unknown-file-fallback-plugin.test.d.ts.map +1 -0
  759. package/dist/filesystem/file/unknown-file-fallback-plugin.test.js +319 -0
  760. package/dist/filesystem/file/unknown-file-fallback-plugin.test.js.map +1 -0
  761. package/dist/filesystem/fs.bench.d.ts +2 -0
  762. package/dist/filesystem/fs.bench.d.ts.map +1 -0
  763. package/dist/filesystem/fs.bench.js +534 -0
  764. package/dist/filesystem/fs.bench.js.map +1 -0
  765. package/dist/filesystem/index.d.ts +5 -0
  766. package/dist/filesystem/index.d.ts.map +1 -0
  767. package/dist/filesystem/index.js +4 -0
  768. package/dist/filesystem/index.js.map +1 -0
  769. package/dist/filesystem/path.d.ts +37 -0
  770. package/dist/filesystem/path.d.ts.map +1 -0
  771. package/dist/filesystem/path.js +94 -0
  772. package/dist/filesystem/path.js.map +1 -0
  773. package/dist/filesystem/path.test.d.ts +2 -0
  774. package/dist/filesystem/path.test.d.ts.map +1 -0
  775. package/dist/filesystem/path.test.js +102 -0
  776. package/dist/filesystem/path.test.js.map +1 -0
  777. package/dist/filesystem/schema.d.ts +11 -0
  778. package/dist/filesystem/schema.d.ts.map +1 -0
  779. package/dist/filesystem/schema.js +13 -0
  780. package/dist/filesystem/schema.js.map +1 -0
  781. package/dist/filesystem/schema.test.d.ts.map +1 -0
  782. package/dist/filesystem/schema.test.js +502 -0
  783. package/dist/filesystem/schema.test.js.map +1 -0
  784. package/dist/filesystem/util/glob.d.ts +18 -0
  785. package/dist/filesystem/util/glob.d.ts.map +1 -0
  786. package/dist/filesystem/util/glob.js +26 -0
  787. package/dist/filesystem/util/glob.js.map +1 -0
  788. package/dist/hooks/create-hooks.d.ts +66 -11
  789. package/dist/hooks/create-hooks.d.ts.map +1 -1
  790. package/dist/hooks/create-hooks.js +15 -0
  791. package/dist/hooks/create-hooks.js.map +1 -1
  792. package/dist/hooks/create-hooks.test.js +114 -17
  793. package/dist/hooks/create-hooks.test.js.map +1 -1
  794. package/dist/index.d.ts +9 -5
  795. package/dist/index.d.ts.map +1 -1
  796. package/dist/index.js +9 -5
  797. package/dist/index.js.map +1 -1
  798. package/dist/key-value/index.d.ts +1 -1
  799. package/dist/key-value/index.d.ts.map +1 -1
  800. package/dist/key-value/index.js +1 -1
  801. package/dist/key-value/index.js.map +1 -1
  802. package/dist/key-value/schema-definition.d.ts +74 -0
  803. package/dist/key-value/schema-definition.d.ts.map +1 -0
  804. package/dist/key-value/schema-definition.js +19 -0
  805. package/dist/key-value/schema-definition.js.map +1 -0
  806. package/dist/key-value/schema.test.js +113 -12
  807. package/dist/key-value/schema.test.js.map +1 -1
  808. package/dist/label/create-label.d.ts +2 -2
  809. package/dist/label/create-label.d.ts.map +1 -1
  810. package/dist/label/create-label.js +7 -4
  811. package/dist/label/create-label.js.map +1 -1
  812. package/dist/label/create-label.test.js +2 -2
  813. package/dist/label/create-label.test.js.map +1 -1
  814. package/dist/label/index.d.ts +1 -1
  815. package/dist/label/index.d.ts.map +1 -1
  816. package/dist/label/index.js +1 -1
  817. package/dist/label/index.js.map +1 -1
  818. package/dist/label/schema-definition.d.ts +24 -0
  819. package/dist/label/schema-definition.d.ts.map +1 -0
  820. package/dist/label/schema-definition.js +21 -0
  821. package/dist/label/schema-definition.js.map +1 -0
  822. package/dist/lix/index.d.ts +0 -3
  823. package/dist/lix/index.d.ts.map +1 -1
  824. package/dist/lix/index.js +0 -3
  825. package/dist/lix/index.js.map +1 -1
  826. package/dist/lix/new-lix.d.ts +3 -3
  827. package/dist/lix/new-lix.d.ts.map +1 -1
  828. package/dist/lix/new-lix.js +208 -83
  829. package/dist/lix/new-lix.js.map +1 -1
  830. package/dist/lix/new-lix.test.js +77 -23
  831. package/dist/lix/new-lix.test.js.map +1 -1
  832. package/dist/lix/open-lix.bench.d.ts +2 -0
  833. package/dist/lix/open-lix.bench.d.ts.map +1 -0
  834. package/dist/lix/open-lix.bench.js +22 -0
  835. package/dist/lix/open-lix.bench.js.map +1 -0
  836. package/dist/lix/open-lix.d.ts +103 -37
  837. package/dist/lix/open-lix.d.ts.map +1 -1
  838. package/dist/lix/open-lix.js +66 -158
  839. package/dist/lix/open-lix.js.map +1 -1
  840. package/dist/lix/open-lix.test.js +93 -18
  841. package/dist/lix/open-lix.test.js.map +1 -1
  842. package/dist/log/create-lix-own-log.d.ts +18 -19
  843. package/dist/log/create-lix-own-log.d.ts.map +1 -1
  844. package/dist/log/create-lix-own-log.js +28 -29
  845. package/dist/log/create-lix-own-log.js.map +1 -1
  846. package/dist/log/create-lix-own-log.test.js +40 -12
  847. package/dist/log/create-lix-own-log.test.js.map +1 -1
  848. package/dist/log/create-log.d.ts +22 -12
  849. package/dist/log/create-log.d.ts.map +1 -1
  850. package/dist/log/create-log.js +20 -11
  851. package/dist/log/create-log.js.map +1 -1
  852. package/dist/log/index.d.ts +1 -1
  853. package/dist/log/index.d.ts.map +1 -1
  854. package/dist/log/index.js +1 -1
  855. package/dist/log/index.js.map +1 -1
  856. package/dist/log/schema-definition.d.ts +36 -0
  857. package/dist/log/schema-definition.d.ts.map +1 -0
  858. package/dist/log/schema-definition.js +39 -0
  859. package/dist/log/schema-definition.js.map +1 -0
  860. package/dist/log/schema.test.js +51 -18
  861. package/dist/log/schema.test.js.map +1 -1
  862. package/dist/observe/create-observe.d.ts.map +1 -1
  863. package/dist/observe/create-observe.js +212 -96
  864. package/dist/observe/create-observe.js.map +1 -1
  865. package/dist/observe/create-observe.test.js +482 -19
  866. package/dist/observe/create-observe.test.js.map +1 -1
  867. package/dist/observe/determine-schema-keys.d.ts +9 -0
  868. package/dist/observe/determine-schema-keys.d.ts.map +1 -1
  869. package/dist/observe/determine-schema-keys.js +328 -13
  870. package/dist/observe/determine-schema-keys.js.map +1 -1
  871. package/dist/observe/determine-schema-keys.test.js +92 -27
  872. package/dist/observe/determine-schema-keys.test.js.map +1 -1
  873. package/dist/plugin/index.d.ts +2 -1
  874. package/dist/plugin/index.d.ts.map +1 -1
  875. package/dist/plugin/index.js +1 -0
  876. package/dist/plugin/index.js.map +1 -1
  877. package/dist/plugin/lix-plugin.d.ts +46 -7
  878. package/dist/plugin/lix-plugin.d.ts.map +1 -1
  879. package/dist/plugin/lix-plugin.test-d.js +1 -0
  880. package/dist/plugin/lix-plugin.test-d.js.map +1 -1
  881. package/dist/plugin/lix-plugin.test.d.ts +2 -0
  882. package/dist/plugin/lix-plugin.test.d.ts.map +1 -0
  883. package/dist/plugin/lix-plugin.test.js +49 -0
  884. package/dist/plugin/lix-plugin.test.js.map +1 -0
  885. package/dist/plugin/mock-json-plugin.d.ts.map +1 -1
  886. package/dist/plugin/mock-json-plugin.js +1 -0
  887. package/dist/plugin/mock-json-plugin.js.map +1 -1
  888. package/dist/plugin/mock-json-plugin.test.js +14 -4
  889. package/dist/plugin/mock-json-plugin.test.js.map +1 -1
  890. package/dist/plugin/query-sync.d.ts +85 -0
  891. package/dist/plugin/query-sync.d.ts.map +1 -0
  892. package/dist/plugin/query-sync.js +110 -0
  893. package/dist/plugin/query-sync.js.map +1 -0
  894. package/dist/plugin/query-sync.test.d.ts +2 -0
  895. package/dist/plugin/query-sync.test.d.ts.map +1 -0
  896. package/dist/plugin/query-sync.test.js +110 -0
  897. package/dist/plugin/query-sync.test.js.map +1 -0
  898. package/dist/query-filter/commit-is-ancestor-of.d.ts +1 -1
  899. package/dist/query-filter/commit-is-ancestor-of.d.ts.map +1 -1
  900. package/dist/query-filter/commit-is-ancestor-of.test.js +77 -167
  901. package/dist/query-filter/commit-is-ancestor-of.test.js.map +1 -1
  902. package/dist/query-filter/commit-is-descendant-of.d.ts +1 -1
  903. package/dist/query-filter/commit-is-descendant-of.d.ts.map +1 -1
  904. package/dist/query-filter/commit-is-descendant-of.test.js +96 -203
  905. package/dist/query-filter/commit-is-descendant-of.test.js.map +1 -1
  906. package/dist/query-filter/index.d.ts +0 -3
  907. package/dist/query-filter/index.d.ts.map +1 -1
  908. package/dist/query-filter/index.js +0 -3
  909. package/dist/query-filter/index.js.map +1 -1
  910. package/dist/schema-definition/definition.d.ts +135 -29
  911. package/dist/schema-definition/definition.d.ts.map +1 -1
  912. package/dist/schema-definition/definition.js +68 -8
  913. package/dist/schema-definition/definition.js.map +1 -1
  914. package/dist/schema-definition/definition.test-d.js +78 -10
  915. package/dist/schema-definition/definition.test-d.js.map +1 -1
  916. package/dist/schema-definition/definition.test.js +334 -98
  917. package/dist/schema-definition/definition.test.js.map +1 -1
  918. package/dist/schema-definition/json-pointer.d.ts +51 -0
  919. package/dist/schema-definition/json-pointer.d.ts.map +1 -0
  920. package/dist/schema-definition/json-pointer.js +143 -0
  921. package/dist/schema-definition/json-pointer.js.map +1 -0
  922. package/dist/schema-definition/json-pointer.test.d.ts +2 -0
  923. package/dist/schema-definition/json-pointer.test.d.ts.map +1 -0
  924. package/dist/schema-definition/json-pointer.test.js +72 -0
  925. package/dist/schema-definition/json-pointer.test.js.map +1 -0
  926. package/dist/schema-definition/validate-lix-schema.d.ts.map +1 -1
  927. package/dist/schema-definition/validate-lix-schema.js +73 -0
  928. package/dist/schema-definition/validate-lix-schema.js.map +1 -1
  929. package/dist/schema-definition/validate-lix-schema.test.js +77 -0
  930. package/dist/schema-definition/validate-lix-schema.test.js.map +1 -1
  931. package/dist/server-protocol-handler/environment/create-in-memory-environment.js +1 -1
  932. package/dist/server-protocol-handler/environment/create-in-memory-environment.js.map +1 -1
  933. package/dist/server-protocol-handler/routes/get-v1.d.ts.map +1 -1
  934. package/dist/server-protocol-handler/routes/get-v1.js +4 -2
  935. package/dist/server-protocol-handler/routes/get-v1.js.map +1 -1
  936. package/dist/server-protocol-handler/routes/push-v1.test.js +1 -1
  937. package/dist/server-protocol-handler/routes/push-v1.test.js.map +1 -1
  938. package/dist/services/env-variables/index.js +1 -1
  939. package/dist/services/env-variables/index.js.map +1 -1
  940. package/dist/services/telemetry/capture.test.js +4 -4
  941. package/dist/services/telemetry/capture.test.js.map +1 -1
  942. package/dist/snapshot/schema.d.ts +1 -1
  943. package/dist/snapshot/schema.d.ts.map +1 -1
  944. package/dist/snapshot/schema.js +6 -2
  945. package/dist/snapshot/schema.js.map +1 -1
  946. package/dist/snapshot/schema.test.js +26 -26
  947. package/dist/snapshot/schema.test.js.map +1 -1
  948. package/dist/state/cache/builtin-schemas.d.ts +3 -0
  949. package/dist/state/cache/builtin-schemas.d.ts.map +1 -0
  950. package/dist/state/cache/builtin-schemas.js +16 -0
  951. package/dist/state/cache/builtin-schemas.js.map +1 -0
  952. package/dist/state/cache/clear-state-cache.d.ts +12 -3
  953. package/dist/state/cache/clear-state-cache.d.ts.map +1 -1
  954. package/dist/state/cache/clear-state-cache.js +34 -5
  955. package/dist/state/cache/clear-state-cache.js.map +1 -1
  956. package/dist/state/cache/clear-state-cache.test.js +18 -14
  957. package/dist/state/cache/clear-state-cache.test.js.map +1 -1
  958. package/dist/state/cache/create-schema-cache-table.d.ts +37 -0
  959. package/dist/state/cache/create-schema-cache-table.d.ts.map +1 -0
  960. package/dist/state/cache/create-schema-cache-table.js +137 -0
  961. package/dist/state/cache/create-schema-cache-table.js.map +1 -0
  962. package/dist/state/cache/create-schema-cache-table.test.d.ts +2 -0
  963. package/dist/state/cache/create-schema-cache-table.test.d.ts.map +1 -0
  964. package/dist/state/cache/create-schema-cache-table.test.js +49 -0
  965. package/dist/state/cache/create-schema-cache-table.test.js.map +1 -0
  966. package/dist/state/cache/is-stale-state-cache.d.ts +24 -2
  967. package/dist/state/cache/is-stale-state-cache.d.ts.map +1 -1
  968. package/dist/state/cache/is-stale-state-cache.js +56 -14
  969. package/dist/state/cache/is-stale-state-cache.js.map +1 -1
  970. package/dist/state/cache/is-stale-state-cache.test.js +22 -19
  971. package/dist/state/cache/is-stale-state-cache.test.js.map +1 -1
  972. package/dist/state/cache/mark-state-cache-as-stale.d.ts +3 -3
  973. package/dist/state/cache/mark-state-cache-as-stale.d.ts.map +1 -1
  974. package/dist/state/cache/mark-state-cache-as-stale.js +39 -31
  975. package/dist/state/cache/mark-state-cache-as-stale.js.map +1 -1
  976. package/dist/state/cache/populate-state-cache.d.ts +16 -6
  977. package/dist/state/cache/populate-state-cache.d.ts.map +1 -1
  978. package/dist/state/cache/populate-state-cache.js +172 -82
  979. package/dist/state/cache/populate-state-cache.js.map +1 -1
  980. package/dist/state/cache/populate-state-cache.test.js +478 -156
  981. package/dist/state/cache/populate-state-cache.test.js.map +1 -1
  982. package/dist/state/cache/schema-indexes.d.ts +19 -0
  983. package/dist/state/cache/schema-indexes.d.ts.map +1 -0
  984. package/dist/state/cache/schema-indexes.js +137 -0
  985. package/dist/state/cache/schema-indexes.js.map +1 -0
  986. package/dist/state/cache/schema-indexes.test.d.ts +2 -0
  987. package/dist/state/cache/schema-indexes.test.d.ts.map +1 -0
  988. package/dist/state/cache/schema-indexes.test.js +124 -0
  989. package/dist/state/cache/schema-indexes.test.js.map +1 -0
  990. package/dist/state/cache/schema-resolver.d.ts +34 -0
  991. package/dist/state/cache/schema-resolver.d.ts.map +1 -0
  992. package/dist/state/cache/schema-resolver.js +49 -0
  993. package/dist/state/cache/schema-resolver.js.map +1 -0
  994. package/dist/state/cache/schema.bench.d.ts +2 -0
  995. package/dist/state/cache/schema.bench.d.ts.map +1 -0
  996. package/dist/state/cache/schema.bench.js +305 -0
  997. package/dist/state/cache/schema.bench.js.map +1 -0
  998. package/dist/state/cache/schema.d.ts +10 -7
  999. package/dist/state/cache/schema.d.ts.map +1 -1
  1000. package/dist/state/cache/schema.js +39 -19
  1001. package/dist/state/cache/schema.js.map +1 -1
  1002. package/dist/state/cache/schema.test.d.ts +2 -0
  1003. package/dist/state/cache/schema.test.d.ts.map +1 -0
  1004. package/dist/state/cache/schema.test.js +126 -0
  1005. package/dist/state/cache/schema.test.js.map +1 -0
  1006. package/dist/state/cache/select-from-state-cache.d.ts +11 -0
  1007. package/dist/state/cache/select-from-state-cache.d.ts.map +1 -0
  1008. package/dist/state/cache/select-from-state-cache.js +50 -0
  1009. package/dist/state/cache/select-from-state-cache.js.map +1 -0
  1010. package/dist/state/cache/select-from-state-cache.test.d.ts +2 -0
  1011. package/dist/state/cache/select-from-state-cache.test.d.ts.map +1 -0
  1012. package/dist/state/cache/select-from-state-cache.test.js +49 -0
  1013. package/dist/state/cache/select-from-state-cache.test.js.map +1 -0
  1014. package/dist/state/cache/update-state-cache.bench.d.ts +2 -0
  1015. package/dist/state/cache/update-state-cache.bench.d.ts.map +1 -0
  1016. package/dist/state/cache/update-state-cache.bench.js +129 -0
  1017. package/dist/state/cache/update-state-cache.bench.js.map +1 -0
  1018. package/dist/state/cache/update-state-cache.d.ts +33 -14
  1019. package/dist/state/cache/update-state-cache.d.ts.map +1 -1
  1020. package/dist/state/cache/update-state-cache.js +358 -274
  1021. package/dist/state/cache/update-state-cache.js.map +1 -1
  1022. package/dist/state/cache/update-state-cache.test.js +761 -231
  1023. package/dist/state/cache/update-state-cache.test.js.map +1 -1
  1024. package/dist/state/cache-v2/cache-columns.d.ts +3 -0
  1025. package/dist/state/cache-v2/cache-columns.d.ts.map +1 -0
  1026. package/dist/state/cache-v2/cache-columns.js +20 -0
  1027. package/dist/state/cache-v2/cache-columns.js.map +1 -0
  1028. package/dist/state/cache-v2/clear-state-cache.d.ts +17 -0
  1029. package/dist/state/cache-v2/clear-state-cache.d.ts.map +1 -0
  1030. package/dist/state/cache-v2/clear-state-cache.js +42 -0
  1031. package/dist/state/cache-v2/clear-state-cache.js.map +1 -0
  1032. package/dist/state/cache-v2/clear-state-cache.test.d.ts +2 -0
  1033. package/dist/state/cache-v2/clear-state-cache.test.d.ts.map +1 -0
  1034. package/dist/state/cache-v2/clear-state-cache.test.js +87 -0
  1035. package/dist/state/cache-v2/clear-state-cache.test.js.map +1 -0
  1036. package/dist/state/cache-v2/create-schema-cache-table.d.ts +48 -0
  1037. package/dist/state/cache-v2/create-schema-cache-table.d.ts.map +1 -0
  1038. package/dist/state/cache-v2/create-schema-cache-table.js +152 -0
  1039. package/dist/state/cache-v2/create-schema-cache-table.js.map +1 -0
  1040. package/dist/state/cache-v2/create-schema-cache-table.test.d.ts +2 -0
  1041. package/dist/state/cache-v2/create-schema-cache-table.test.d.ts.map +1 -0
  1042. package/dist/state/cache-v2/create-schema-cache-table.test.js +76 -0
  1043. package/dist/state/cache-v2/create-schema-cache-table.test.js.map +1 -0
  1044. package/dist/state/cache-v2/is-stale-state-cache.d.ts +27 -0
  1045. package/dist/state/cache-v2/is-stale-state-cache.d.ts.map +1 -0
  1046. package/dist/state/cache-v2/is-stale-state-cache.js +64 -0
  1047. package/dist/state/cache-v2/is-stale-state-cache.js.map +1 -0
  1048. package/dist/state/cache-v2/is-stale-state-cache.test.d.ts +2 -0
  1049. package/dist/state/cache-v2/is-stale-state-cache.test.d.ts.map +1 -0
  1050. package/dist/state/cache-v2/is-stale-state-cache.test.js +30 -0
  1051. package/dist/state/cache-v2/is-stale-state-cache.test.js.map +1 -0
  1052. package/dist/state/cache-v2/mark-state-cache-as-stale.d.ts +22 -0
  1053. package/dist/state/cache-v2/mark-state-cache-as-stale.d.ts.map +1 -0
  1054. package/dist/state/cache-v2/mark-state-cache-as-stale.js +62 -0
  1055. package/dist/state/cache-v2/mark-state-cache-as-stale.js.map +1 -0
  1056. package/dist/state/cache-v2/populate-state-cache.d.ts +22 -0
  1057. package/dist/state/cache-v2/populate-state-cache.d.ts.map +1 -0
  1058. package/dist/state/cache-v2/populate-state-cache.js +143 -0
  1059. package/dist/state/cache-v2/populate-state-cache.js.map +1 -0
  1060. package/dist/state/cache-v2/populate-state-cache.test.d.ts +2 -0
  1061. package/dist/state/cache-v2/populate-state-cache.test.d.ts.map +1 -0
  1062. package/dist/state/cache-v2/populate-state-cache.test.js +102 -0
  1063. package/dist/state/cache-v2/populate-state-cache.test.js.map +1 -0
  1064. package/dist/state/cache-v2/schema-metadata.d.ts +20 -0
  1065. package/dist/state/cache-v2/schema-metadata.d.ts.map +1 -0
  1066. package/dist/state/cache-v2/schema-metadata.js +18 -0
  1067. package/dist/state/cache-v2/schema-metadata.js.map +1 -0
  1068. package/dist/state/cache-v2/schema.bench.d.ts +2 -0
  1069. package/dist/state/cache-v2/schema.bench.d.ts.map +1 -0
  1070. package/dist/state/cache-v2/schema.bench.js +194 -0
  1071. package/dist/state/cache-v2/schema.bench.js.map +1 -0
  1072. package/dist/state/cache-v2/schema.d.ts +30 -0
  1073. package/dist/state/cache-v2/schema.d.ts.map +1 -0
  1074. package/dist/state/cache-v2/schema.js +72 -0
  1075. package/dist/state/cache-v2/schema.js.map +1 -0
  1076. package/dist/state/cache-v2/schema.test.d.ts +2 -0
  1077. package/dist/state/cache-v2/schema.test.d.ts.map +1 -0
  1078. package/dist/state/cache-v2/schema.test.js +246 -0
  1079. package/dist/state/cache-v2/schema.test.js.map +1 -0
  1080. package/dist/state/cache-v2/select-from-state-cache.d.ts +19 -0
  1081. package/dist/state/cache-v2/select-from-state-cache.d.ts.map +1 -0
  1082. package/dist/state/cache-v2/select-from-state-cache.js +141 -0
  1083. package/dist/state/cache-v2/select-from-state-cache.js.map +1 -0
  1084. package/dist/state/cache-v2/select-from-state-cache.test.d.ts +2 -0
  1085. package/dist/state/cache-v2/select-from-state-cache.test.d.ts.map +1 -0
  1086. package/dist/state/cache-v2/select-from-state-cache.test.js +72 -0
  1087. package/dist/state/cache-v2/select-from-state-cache.test.js.map +1 -0
  1088. package/dist/state/cache-v2/sqlite-type-mapper.d.ts +6 -0
  1089. package/dist/state/cache-v2/sqlite-type-mapper.d.ts.map +1 -0
  1090. package/dist/state/cache-v2/sqlite-type-mapper.js +50 -0
  1091. package/dist/state/cache-v2/sqlite-type-mapper.js.map +1 -0
  1092. package/dist/state/cache-v2/sqlite-type-mapper.test.d.ts +2 -0
  1093. package/dist/state/cache-v2/sqlite-type-mapper.test.d.ts.map +1 -0
  1094. package/dist/state/cache-v2/sqlite-type-mapper.test.js +41 -0
  1095. package/dist/state/cache-v2/sqlite-type-mapper.test.js.map +1 -0
  1096. package/dist/state/cache-v2/update-state-cache.bench.d.ts +2 -0
  1097. package/dist/state/cache-v2/update-state-cache.bench.d.ts.map +1 -0
  1098. package/dist/state/cache-v2/update-state-cache.bench.js +165 -0
  1099. package/dist/state/cache-v2/update-state-cache.bench.js.map +1 -0
  1100. package/dist/state/cache-v2/update-state-cache.d.ts +23 -0
  1101. package/dist/state/cache-v2/update-state-cache.d.ts.map +1 -0
  1102. package/dist/state/cache-v2/update-state-cache.js +403 -0
  1103. package/dist/state/cache-v2/update-state-cache.js.map +1 -0
  1104. package/dist/state/cache-v2/update-state-cache.test.d.ts +2 -0
  1105. package/dist/state/cache-v2/update-state-cache.test.d.ts.map +1 -0
  1106. package/dist/state/cache-v2/update-state-cache.test.js +281 -0
  1107. package/dist/state/cache-v2/update-state-cache.test.js.map +1 -0
  1108. package/dist/state/create-checkpoint.d.ts +22 -0
  1109. package/dist/state/create-checkpoint.d.ts.map +1 -0
  1110. package/dist/state/create-checkpoint.js +226 -0
  1111. package/dist/state/create-checkpoint.js.map +1 -0
  1112. package/dist/state/create-checkpoint.test.d.ts.map +1 -0
  1113. package/dist/state/create-checkpoint.test.js +649 -0
  1114. package/dist/state/create-checkpoint.test.js.map +1 -0
  1115. package/dist/state/index.d.ts +7 -0
  1116. package/dist/state/index.d.ts.map +1 -0
  1117. package/dist/state/index.js +5 -0
  1118. package/dist/state/index.js.map +1 -0
  1119. package/dist/state/materialize-state.bench.d.ts +2 -0
  1120. package/dist/state/materialize-state.bench.d.ts.map +1 -0
  1121. package/dist/state/materialize-state.bench.js +196 -0
  1122. package/dist/state/materialize-state.bench.js.map +1 -0
  1123. package/dist/state/materialize-state.d.ts +4 -2
  1124. package/dist/state/materialize-state.d.ts.map +1 -1
  1125. package/dist/state/materialize-state.js +450 -119
  1126. package/dist/state/materialize-state.js.map +1 -1
  1127. package/dist/state/materialize-state.test.js +625 -245
  1128. package/dist/state/materialize-state.test.js.map +1 -1
  1129. package/dist/state/schema.bench.js +100 -28
  1130. package/dist/state/schema.bench.js.map +1 -1
  1131. package/dist/state/schema.d.ts +4 -42
  1132. package/dist/state/schema.d.ts.map +1 -1
  1133. package/dist/state/schema.js +29 -783
  1134. package/dist/state/schema.js.map +1 -1
  1135. package/dist/state/transaction/insert-transaction-state.d.ts +65 -0
  1136. package/dist/state/transaction/insert-transaction-state.d.ts.map +1 -0
  1137. package/dist/state/transaction/insert-transaction-state.js +116 -0
  1138. package/dist/state/transaction/insert-transaction-state.js.map +1 -0
  1139. package/dist/state/transaction/insert-transaction-state.test.d.ts.map +1 -0
  1140. package/dist/state/transaction/insert-transaction-state.test.js +946 -0
  1141. package/dist/state/transaction/insert-transaction-state.test.js.map +1 -0
  1142. package/dist/state/transaction/schema.d.ts +22 -0
  1143. package/dist/state/transaction/schema.d.ts.map +1 -0
  1144. package/dist/state/transaction/schema.js +25 -0
  1145. package/dist/state/transaction/schema.js.map +1 -0
  1146. package/dist/state/transition.bench.d.ts +2 -0
  1147. package/dist/state/transition.bench.d.ts.map +1 -0
  1148. package/dist/state/transition.bench.js +215 -0
  1149. package/dist/state/transition.bench.js.map +1 -0
  1150. package/dist/state/transition.d.ts +21 -0
  1151. package/dist/state/transition.d.ts.map +1 -0
  1152. package/dist/state/transition.js +336 -0
  1153. package/dist/state/transition.js.map +1 -0
  1154. package/dist/state/transition.test.d.ts +2 -0
  1155. package/dist/state/transition.test.d.ts.map +1 -0
  1156. package/dist/state/transition.test.js +226 -0
  1157. package/dist/state/transition.test.js.map +1 -0
  1158. package/dist/state/untracked/schema.d.ts +3 -3
  1159. package/dist/state/untracked/schema.d.ts.map +1 -1
  1160. package/dist/state/untracked/schema.js +13 -6
  1161. package/dist/state/untracked/schema.js.map +1 -1
  1162. package/dist/state/untracked/schema.test.js +36 -36
  1163. package/dist/state/untracked/schema.test.js.map +1 -1
  1164. package/dist/state/untracked/update-untracked-state.d.ts +8 -8
  1165. package/dist/state/untracked/update-untracked-state.d.ts.map +1 -1
  1166. package/dist/state/untracked/update-untracked-state.js +111 -80
  1167. package/dist/state/untracked/update-untracked-state.js.map +1 -1
  1168. package/dist/state/untracked/update-untracked-state.test.js +170 -152
  1169. package/dist/state/untracked/update-untracked-state.test.js.map +1 -1
  1170. package/dist/state/views/state-by-version.d.ts +30 -0
  1171. package/dist/state/views/state-by-version.d.ts.map +1 -0
  1172. package/dist/state/views/state-by-version.js +94 -0
  1173. package/dist/state/views/state-by-version.js.map +1 -0
  1174. package/dist/state/views/state-with-tombstones.d.ts +34 -0
  1175. package/dist/state/views/state-with-tombstones.d.ts.map +1 -0
  1176. package/dist/state/views/state-with-tombstones.js +37 -0
  1177. package/dist/state/views/state-with-tombstones.js.map +1 -0
  1178. package/dist/state/views/state-with-tombstones.test.d.ts +2 -0
  1179. package/dist/state/views/state-with-tombstones.test.d.ts.map +1 -0
  1180. package/dist/state/views/state-with-tombstones.test.js +148 -0
  1181. package/dist/state/views/state-with-tombstones.test.js.map +1 -0
  1182. package/dist/state/views/state.bench.d.ts +2 -0
  1183. package/dist/state/views/state.bench.d.ts.map +1 -0
  1184. package/dist/state/views/state.bench.js +308 -0
  1185. package/dist/state/views/state.bench.js.map +1 -0
  1186. package/dist/state/views/state.d.ts +15 -0
  1187. package/dist/state/views/state.d.ts.map +1 -0
  1188. package/dist/state/views/state.js +85 -0
  1189. package/dist/state/views/state.js.map +1 -0
  1190. package/dist/state/views/state.test.d.ts +2 -0
  1191. package/dist/state/views/state.test.d.ts.map +1 -0
  1192. package/dist/state/views/state.test.js +340 -0
  1193. package/dist/state/views/state.test.js.map +1 -0
  1194. package/dist/state/vtable/commit.bench.d.ts +2 -0
  1195. package/dist/state/vtable/commit.bench.d.ts.map +1 -0
  1196. package/dist/state/vtable/commit.bench.js +287 -0
  1197. package/dist/state/vtable/commit.bench.js.map +1 -0
  1198. package/dist/state/vtable/commit.d.ts +18 -0
  1199. package/dist/state/vtable/commit.d.ts.map +1 -0
  1200. package/dist/state/vtable/commit.js +426 -0
  1201. package/dist/state/vtable/commit.js.map +1 -0
  1202. package/dist/state/vtable/commit.test.d.ts.map +1 -0
  1203. package/dist/state/vtable/commit.test.js +1644 -0
  1204. package/dist/state/vtable/commit.test.js.map +1 -0
  1205. package/dist/state/vtable/generate-commit.d.ts +33 -0
  1206. package/dist/state/vtable/generate-commit.d.ts.map +1 -0
  1207. package/dist/state/vtable/generate-commit.js +277 -0
  1208. package/dist/state/vtable/generate-commit.js.map +1 -0
  1209. package/dist/state/vtable/generate-commit.test.d.ts +2 -0
  1210. package/dist/state/vtable/generate-commit.test.d.ts.map +1 -0
  1211. package/dist/state/vtable/generate-commit.test.js +377 -0
  1212. package/dist/state/vtable/generate-commit.test.js.map +1 -0
  1213. package/dist/state/vtable/index.d.ts +3 -0
  1214. package/dist/state/vtable/index.d.ts.map +1 -0
  1215. package/dist/state/vtable/index.js +3 -0
  1216. package/dist/state/vtable/index.js.map +1 -0
  1217. package/dist/state/vtable/insert-vtable-log.d.ts +18 -0
  1218. package/dist/state/vtable/insert-vtable-log.d.ts.map +1 -0
  1219. package/dist/state/vtable/insert-vtable-log.js +49 -0
  1220. package/dist/state/vtable/insert-vtable-log.js.map +1 -0
  1221. package/dist/state/vtable/primary-key.d.ts +41 -0
  1222. package/dist/state/vtable/primary-key.d.ts.map +1 -0
  1223. package/dist/state/vtable/primary-key.js +64 -0
  1224. package/dist/state/vtable/primary-key.js.map +1 -0
  1225. package/dist/state/vtable/primary-key.test.d.ts.map +1 -0
  1226. package/dist/state/vtable/primary-key.test.js +32 -0
  1227. package/dist/state/vtable/primary-key.test.js.map +1 -0
  1228. package/dist/state/vtable/validate-state-mutation.bench.d.ts +2 -0
  1229. package/dist/state/vtable/validate-state-mutation.bench.d.ts.map +1 -0
  1230. package/dist/state/vtable/validate-state-mutation.bench.js +284 -0
  1231. package/dist/state/vtable/validate-state-mutation.bench.js.map +1 -0
  1232. package/dist/state/vtable/validate-state-mutation.d.ts +21 -0
  1233. package/dist/state/vtable/validate-state-mutation.d.ts.map +1 -0
  1234. package/dist/state/vtable/validate-state-mutation.js +886 -0
  1235. package/dist/state/vtable/validate-state-mutation.js.map +1 -0
  1236. package/dist/state/vtable/validate-state-mutation.playground.test.d.ts +2 -0
  1237. package/dist/state/vtable/validate-state-mutation.playground.test.d.ts.map +1 -0
  1238. package/dist/state/vtable/validate-state-mutation.playground.test.js +389 -0
  1239. package/dist/state/vtable/validate-state-mutation.playground.test.js.map +1 -0
  1240. package/dist/state/vtable/validate-state-mutation.test.d.ts.map +1 -0
  1241. package/dist/state/vtable/validate-state-mutation.test.js +3655 -0
  1242. package/dist/state/vtable/validate-state-mutation.test.js.map +1 -0
  1243. package/dist/state/vtable/vtable.d.ts +26 -0
  1244. package/dist/state/vtable/vtable.d.ts.map +1 -0
  1245. package/dist/state/vtable/vtable.insert.bench.d.ts +2 -0
  1246. package/dist/state/vtable/vtable.insert.bench.d.ts.map +1 -0
  1247. package/dist/state/vtable/vtable.insert.bench.js +100 -0
  1248. package/dist/state/vtable/vtable.insert.bench.js.map +1 -0
  1249. package/dist/state/vtable/vtable.js +951 -0
  1250. package/dist/state/vtable/vtable.js.map +1 -0
  1251. package/dist/state/vtable/vtable.select.bench.d.ts +2 -0
  1252. package/dist/state/vtable/vtable.select.bench.d.ts.map +1 -0
  1253. package/dist/state/vtable/vtable.select.bench.js +334 -0
  1254. package/dist/state/vtable/vtable.select.bench.js.map +1 -0
  1255. package/dist/state/vtable/vtable.test.d.ts +2 -0
  1256. package/dist/state/vtable/vtable.test.d.ts.map +1 -0
  1257. package/dist/state/vtable/vtable.test.js +3516 -0
  1258. package/dist/state/vtable/vtable.test.js.map +1 -0
  1259. package/dist/state/working-change-set/refresh-working-change-set.d.ts +21 -0
  1260. package/dist/state/working-change-set/refresh-working-change-set.d.ts.map +1 -0
  1261. package/dist/state/working-change-set/refresh-working-change-set.js +185 -0
  1262. package/dist/state/working-change-set/refresh-working-change-set.js.map +1 -0
  1263. package/dist/state/working-change-set/refresh-working-change-set.test.d.ts +2 -0
  1264. package/dist/state/working-change-set/refresh-working-change-set.test.d.ts.map +1 -0
  1265. package/dist/state/working-change-set/refresh-working-change-set.test.js +89 -0
  1266. package/dist/state/working-change-set/refresh-working-change-set.test.js.map +1 -0
  1267. package/dist/state/writer.d.ts +42 -0
  1268. package/dist/state/writer.d.ts.map +1 -0
  1269. package/dist/state/writer.js +62 -0
  1270. package/dist/state/writer.js.map +1 -0
  1271. package/dist/state-history/schema.d.ts +7 -3
  1272. package/dist/state-history/schema.d.ts.map +1 -1
  1273. package/dist/state-history/schema.js +95 -31
  1274. package/dist/state-history/schema.js.map +1 -1
  1275. package/dist/state-history/schema.test.js +31 -31
  1276. package/dist/state-history/schema.test.js.map +1 -1
  1277. package/dist/stored-schema/get-stored-schema.d.ts +27 -0
  1278. package/dist/stored-schema/get-stored-schema.d.ts.map +1 -0
  1279. package/dist/stored-schema/get-stored-schema.js +129 -0
  1280. package/dist/stored-schema/get-stored-schema.js.map +1 -0
  1281. package/dist/stored-schema/get-stored-schema.test.d.ts +2 -0
  1282. package/dist/stored-schema/get-stored-schema.test.d.ts.map +1 -0
  1283. package/dist/stored-schema/get-stored-schema.test.js +259 -0
  1284. package/dist/stored-schema/get-stored-schema.test.js.map +1 -0
  1285. package/dist/stored-schema/index.d.ts +1 -1
  1286. package/dist/stored-schema/index.d.ts.map +1 -1
  1287. package/dist/stored-schema/index.js +1 -1
  1288. package/dist/stored-schema/index.js.map +1 -1
  1289. package/dist/stored-schema/schema-definition.d.ts +22 -0
  1290. package/dist/stored-schema/schema-definition.d.ts.map +1 -0
  1291. package/dist/stored-schema/schema-definition.js +20 -0
  1292. package/dist/stored-schema/schema-definition.js.map +1 -0
  1293. package/dist/stored-schema/schema.test.js +34 -91
  1294. package/dist/stored-schema/schema.test.js.map +1 -1
  1295. package/dist/sync/pull-from-server.test.js +6 -6
  1296. package/dist/sync/pull-from-server.test.js.map +1 -1
  1297. package/dist/sync/push-to-server.test.js +4 -4
  1298. package/dist/sync/push-to-server.test.js.map +1 -1
  1299. package/dist/sync/sync-process.d.ts +1 -1
  1300. package/dist/sync/sync-process.d.ts.map +1 -1
  1301. package/dist/sync/sync-process.js +18 -9
  1302. package/dist/sync/sync-process.js.map +1 -1
  1303. package/dist/sync/sync-process.test.js +3 -6
  1304. package/dist/sync/sync-process.test.js.map +1 -1
  1305. package/dist/test-utilities/simulation-test/cache-miss-simulation.d.ts.map +1 -1
  1306. package/dist/test-utilities/simulation-test/cache-miss-simulation.js +49 -49
  1307. package/dist/test-utilities/simulation-test/cache-miss-simulation.js.map +1 -1
  1308. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js +53 -30
  1309. package/dist/test-utilities/simulation-test/cache-miss-simulation.test.js.map +1 -1
  1310. package/dist/test-utilities/simulation-test/engine-boundary-simulation.d.ts +3 -0
  1311. package/dist/test-utilities/simulation-test/engine-boundary-simulation.d.ts.map +1 -0
  1312. package/dist/test-utilities/simulation-test/engine-boundary-simulation.js +52 -0
  1313. package/dist/test-utilities/simulation-test/engine-boundary-simulation.js.map +1 -0
  1314. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.d.ts +2 -0
  1315. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.d.ts.map +1 -0
  1316. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.js +10 -0
  1317. package/dist/test-utilities/simulation-test/engine-boundary-simulation.test.js.map +1 -0
  1318. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.d.ts.map +1 -1
  1319. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js +6 -8
  1320. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.js.map +1 -1
  1321. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js +5 -5
  1322. package/dist/test-utilities/simulation-test/out-of-order-sequence-simulation.test.js.map +1 -1
  1323. package/dist/test-utilities/simulation-test/simulation-test.d.ts +7 -2
  1324. package/dist/test-utilities/simulation-test/simulation-test.d.ts.map +1 -1
  1325. package/dist/test-utilities/simulation-test/simulation-test.js +7 -3
  1326. package/dist/test-utilities/simulation-test/simulation-test.js.map +1 -1
  1327. package/dist/test-utilities/simulation-test/simulation-test.test.js +12 -14
  1328. package/dist/test-utilities/simulation-test/simulation-test.test.js.map +1 -1
  1329. package/dist/version/create-version-from-commit.d.ts +44 -0
  1330. package/dist/version/create-version-from-commit.d.ts.map +1 -0
  1331. package/dist/version/create-version-from-commit.js +119 -0
  1332. package/dist/version/create-version-from-commit.js.map +1 -0
  1333. package/dist/version/create-version-from-commit.test.d.ts +2 -0
  1334. package/dist/version/create-version-from-commit.test.d.ts.map +1 -0
  1335. package/dist/version/create-version-from-commit.test.js +166 -0
  1336. package/dist/version/create-version-from-commit.test.js.map +1 -0
  1337. package/dist/version/create-version.d.ts +5 -14
  1338. package/dist/version/create-version.d.ts.map +1 -1
  1339. package/dist/version/create-version.js +20 -53
  1340. package/dist/version/create-version.js.map +1 -1
  1341. package/dist/version/create-version.test.js +56 -16
  1342. package/dist/version/create-version.test.js.map +1 -1
  1343. package/dist/version/index.d.ts +4 -1
  1344. package/dist/version/index.d.ts.map +1 -1
  1345. package/dist/version/index.js +4 -1
  1346. package/dist/version/index.js.map +1 -1
  1347. package/dist/version/merge-version.d.ts +3 -6
  1348. package/dist/version/merge-version.d.ts.map +1 -1
  1349. package/dist/version/merge-version.js +472 -57
  1350. package/dist/version/merge-version.js.map +1 -1
  1351. package/dist/version/merge-version.test.js +783 -378
  1352. package/dist/version/merge-version.test.js.map +1 -1
  1353. package/dist/version/schema-definition.d.ts +107 -0
  1354. package/dist/version/schema-definition.d.ts.map +1 -0
  1355. package/dist/version/schema-definition.js +93 -0
  1356. package/dist/version/schema-definition.js.map +1 -0
  1357. package/dist/version/schema.d.ts +5 -77
  1358. package/dist/version/schema.d.ts.map +1 -1
  1359. package/dist/version/schema.js +433 -128
  1360. package/dist/version/schema.js.map +1 -1
  1361. package/dist/version/schema.test.js +319 -132
  1362. package/dist/version/schema.test.js.map +1 -1
  1363. package/dist/version/select-active-version.d.ts +2 -2
  1364. package/dist/version/select-active-version.d.ts.map +1 -1
  1365. package/dist/version/select-version-diff.bench.d.ts +2 -0
  1366. package/dist/version/select-version-diff.bench.d.ts.map +1 -0
  1367. package/dist/version/select-version-diff.bench.js +126 -0
  1368. package/dist/version/select-version-diff.bench.js.map +1 -0
  1369. package/dist/version/select-version-diff.d.ts +121 -0
  1370. package/dist/version/select-version-diff.d.ts.map +1 -0
  1371. package/dist/version/select-version-diff.js +179 -0
  1372. package/dist/version/select-version-diff.js.map +1 -0
  1373. package/dist/version/select-version-diff.playground.test.d.ts +2 -0
  1374. package/dist/version/select-version-diff.playground.test.d.ts.map +1 -0
  1375. package/dist/version/select-version-diff.playground.test.js +114 -0
  1376. package/dist/version/select-version-diff.playground.test.js.map +1 -0
  1377. package/dist/version/select-version-diff.test.d.ts +2 -0
  1378. package/dist/version/select-version-diff.test.d.ts.map +1 -0
  1379. package/dist/version/select-version-diff.test.js +689 -0
  1380. package/dist/version/select-version-diff.test.js.map +1 -0
  1381. package/dist/version/switch-version.d.ts +2 -2
  1382. package/dist/version/switch-version.d.ts.map +1 -1
  1383. package/dist/version/switch-version.js +1 -1
  1384. package/dist/version/switch-version.test.js +2 -2
  1385. package/dist/version/switch-version.test.js.map +1 -1
  1386. package/package.json +52 -23
  1387. package/src/account/create-account.test.ts +5 -19
  1388. package/src/account/create-account.ts +11 -14
  1389. package/src/account/index.ts +2 -1
  1390. package/src/account/schema-definition.ts +60 -0
  1391. package/src/account/schema.test.ts +105 -66
  1392. package/src/account/switch-account.test.ts +5 -17
  1393. package/src/account/switch-account.ts +1 -1
  1394. package/src/change/index.ts +1 -1
  1395. package/src/change/schema-definition.ts +84 -0
  1396. package/src/change/schema.bench.ts +411 -0
  1397. package/src/change/schema.test.ts +100 -9
  1398. package/src/change/schema.ts +30 -95
  1399. package/src/change-author/index.ts +1 -1
  1400. package/src/change-author/schema-definition.ts +43 -0
  1401. package/src/change-author/schema.test.ts +383 -237
  1402. package/src/change-proposal/accept-change-proposal.test.ts +64 -0
  1403. package/src/change-proposal/accept-change-proposal.ts +46 -0
  1404. package/src/change-proposal/create-change-proposal.test.ts +64 -89
  1405. package/src/change-proposal/create-change-proposal.ts +33 -58
  1406. package/src/change-proposal/index.ts +7 -2
  1407. package/src/change-proposal/reject-change-proposal.test.ts +34 -0
  1408. package/src/change-proposal/reject-change-proposal.ts +22 -0
  1409. package/src/change-proposal/schema-definition.ts +42 -0
  1410. package/src/change-proposal/schema.test.ts +124 -0
  1411. package/src/change-set/apply-change-set.test.ts +6 -5
  1412. package/src/change-set/apply-change-set.ts +37 -45
  1413. package/src/change-set/create-change-set.test.ts +5 -53
  1414. package/src/change-set/create-change-set.ts +8 -36
  1415. package/src/change-set/index.ts +1 -3
  1416. package/src/change-set/schema-definition.ts +83 -0
  1417. package/src/change-set/schema.test.ts +13 -187
  1418. package/src/commit/index.ts +1 -6
  1419. package/src/commit/schema-definition.ts +103 -0
  1420. package/src/commit/schema.test.ts +133 -37
  1421. package/src/conversation/create-conversation-message.test.ts +118 -0
  1422. package/src/conversation/create-conversation-message.ts +82 -0
  1423. package/src/conversation/create-conversation.test.ts +194 -0
  1424. package/src/conversation/create-conversation.ts +110 -0
  1425. package/src/conversation/index.ts +8 -0
  1426. package/src/conversation/schema-definition.ts +74 -0
  1427. package/src/database/index.ts +0 -1
  1428. package/src/database/init-db.ts +91 -128
  1429. package/src/database/kysely/index.ts +1 -0
  1430. package/src/database/kysely/json-column-config.ts +63 -0
  1431. package/src/database/kysely/plugins/json-column-plugin.test.ts +533 -0
  1432. package/src/database/kysely/plugins/json-column-plugin.ts +286 -0
  1433. package/src/database/kysely/plugins/view-insert-returning-error-plugin.test.ts +62 -0
  1434. package/src/database/kysely/plugins.ts +16 -0
  1435. package/src/database/nano-id.test.ts +1 -1
  1436. package/src/database/schema-view-map.ts +48 -0
  1437. package/src/database/schema.ts +119 -62
  1438. package/src/database/sqlite/content-from-database.ts +12 -0
  1439. package/src/database/sqlite/create-in-memory-database.ts +61 -0
  1440. package/src/database/sqlite/environment-dialect.test.ts +84 -0
  1441. package/src/database/sqlite/environment-dialect.ts +227 -0
  1442. package/src/database/sqlite/import-database.ts +43 -0
  1443. package/src/database/sqlite/index.ts +7 -0
  1444. package/src/database/sqlite/kysely-driver/connection-mutex.ts +23 -0
  1445. package/src/database/sqlite/kysely-driver/index.ts +4 -0
  1446. package/src/database/sqlite/kysely-driver/sqlite-wasm-connection.ts +58 -0
  1447. package/src/database/sqlite/kysely-driver/sqlite-wasm-dialect-config.ts +19 -0
  1448. package/src/database/sqlite/kysely-driver/sqlite-wasm-driver.ts +59 -0
  1449. package/src/database/sqlite/lix-dialect.ts +27 -0
  1450. package/src/database/sqlite/load-database-in-memory.ts +28 -0
  1451. package/src/database/sqlite/sqlite-wasm-binary.d.ts +2 -0
  1452. package/src/dependency/kysely/helpers/sqlite.ts +4 -0
  1453. package/src/dependency/kysely/index.ts +8 -0
  1454. package/src/diff/index.ts +2 -0
  1455. package/src/diff/select-commit-diff.bench.ts +156 -0
  1456. package/src/diff/select-commit-diff.test.ts +65 -0
  1457. package/src/diff/select-commit-diff.ts +234 -0
  1458. package/src/diff/select-working-diff.bench.ts +99 -0
  1459. package/src/diff/select-working-diff.test.ts +275 -0
  1460. package/src/diff/select-working-diff.ts +233 -0
  1461. package/src/engine/boot.test.ts +88 -0
  1462. package/src/engine/boot.ts +280 -0
  1463. package/src/engine/cel-environment/cel-environment.test.ts +20 -0
  1464. package/src/engine/cel-environment/cel-environment.ts +85 -0
  1465. package/src/engine/deterministic-mode/is-deterministic-mode.test.ts +121 -0
  1466. package/src/engine/deterministic-mode/is-deterministic-mode.ts +105 -0
  1467. package/src/engine/deterministic-mode/options.test.ts +159 -0
  1468. package/src/engine/deterministic-mode/options.ts +57 -0
  1469. package/src/engine/entity-views/README.md +214 -0
  1470. package/src/engine/entity-views/build-json-object-entries.test.ts +42 -0
  1471. package/src/engine/entity-views/build-json-object-entries.ts +43 -0
  1472. package/src/engine/entity-views/entity-state-by-version.ts +263 -0
  1473. package/src/engine/entity-views/entity-state-history.ts +208 -0
  1474. package/src/engine/entity-views/entity-state.ts +239 -0
  1475. package/src/engine/entity-views/entity-view-builder.ts +58 -0
  1476. package/src/engine/entity-views/types.test.ts +99 -0
  1477. package/src/engine/entity-views/types.ts +330 -0
  1478. package/src/engine/execute-sync.test.ts +90 -0
  1479. package/src/engine/execute-sync.ts +47 -0
  1480. package/src/engine/explain-query.test.ts +21 -0
  1481. package/src/engine/explain-query.ts +89 -0
  1482. package/src/engine/functions/function-registry.ts +69 -0
  1483. package/src/engine/functions/generate-human-id.test.ts +199 -0
  1484. package/src/engine/functions/generate-human-id.ts +383 -0
  1485. package/src/engine/functions/index.ts +6 -0
  1486. package/src/engine/functions/nano-id.bench.ts +57 -0
  1487. package/src/engine/functions/nano-id.test.ts +200 -0
  1488. package/src/engine/functions/nano-id.ts +205 -0
  1489. package/src/engine/functions/random.test.ts +293 -0
  1490. package/src/engine/functions/random.ts +267 -0
  1491. package/src/engine/functions/register-builtins.ts +154 -0
  1492. package/src/engine/functions/sequence.test.ts +99 -0
  1493. package/src/engine/functions/sequence.ts +165 -0
  1494. package/src/engine/functions/timestamp.test.ts +172 -0
  1495. package/src/engine/functions/timestamp.ts +86 -0
  1496. package/src/engine/functions/uuid-v7.test.ts +144 -0
  1497. package/src/engine/functions/uuid-v7.ts +88 -0
  1498. package/src/engine/index.ts +1 -0
  1499. package/src/engine/internal-query-builder.ts +42 -0
  1500. package/src/engine/preprocessor/create-preprocessor.test.ts +275 -0
  1501. package/src/engine/preprocessor/create-preprocessor.ts +267 -0
  1502. package/src/engine/preprocessor/entity-views/__bench__/entity-view-select-all-rows.explain.txt +287 -0
  1503. package/src/engine/preprocessor/entity-views/__bench__/entity-view-select-id-filter.explain.txt +290 -0
  1504. package/src/engine/preprocessor/entity-views/delete.test.ts +994 -0
  1505. package/src/engine/preprocessor/entity-views/delete.ts +359 -0
  1506. package/src/engine/preprocessor/entity-views/insert.test.ts +1175 -0
  1507. package/src/engine/preprocessor/entity-views/insert.ts +903 -0
  1508. package/src/engine/preprocessor/entity-views/select.bench.ts +168 -0
  1509. package/src/engine/preprocessor/entity-views/select.test.ts +385 -0
  1510. package/src/engine/preprocessor/entity-views/select.ts +2079 -0
  1511. package/src/engine/preprocessor/entity-views/shared.ts +1560 -0
  1512. package/src/engine/preprocessor/entity-views/update.test.ts +424 -0
  1513. package/src/engine/preprocessor/entity-views/update.ts +753 -0
  1514. package/src/engine/preprocessor/inheritance/version-inheritance-cache.test.ts +128 -0
  1515. package/src/engine/preprocessor/inheritance/version-inheritance-cache.ts +385 -0
  1516. package/src/engine/preprocessor/sql-parser/ast-helpers.ts +235 -0
  1517. package/src/engine/preprocessor/sql-parser/column-usage.ts +504 -0
  1518. package/src/engine/preprocessor/sql-parser/compile.test.ts +147 -0
  1519. package/src/engine/preprocessor/sql-parser/compile.ts +898 -0
  1520. package/src/engine/preprocessor/sql-parser/cst.ts +1012 -0
  1521. package/src/engine/preprocessor/sql-parser/lexer.ts +608 -0
  1522. package/src/engine/preprocessor/sql-parser/nodes.ts +395 -0
  1523. package/src/engine/preprocessor/sql-parser/parse.test.ts +1646 -0
  1524. package/src/engine/preprocessor/sql-parser/parse.ts +1984 -0
  1525. package/src/engine/preprocessor/sql-parser/visitor.test.ts +173 -0
  1526. package/src/engine/preprocessor/sql-parser/visitor.ts +1403 -0
  1527. package/src/engine/preprocessor/steps/cache-populator.test.ts +128 -0
  1528. package/src/engine/preprocessor/steps/cache-populator.ts +797 -0
  1529. package/src/engine/preprocessor/steps/expand-sql-views.test.ts +1353 -0
  1530. package/src/engine/preprocessor/steps/expand-sql-views.ts +1167 -0
  1531. package/src/engine/preprocessor/steps/rewrite-active-version-subquery.test.ts +83 -0
  1532. package/src/engine/preprocessor/steps/rewrite-active-version-subquery.ts +251 -0
  1533. package/src/engine/preprocessor/steps/rewrite-vtable-selects.bench.ts +68 -0
  1534. package/src/engine/preprocessor/steps/rewrite-vtable-selects.test.ts +1326 -0
  1535. package/src/engine/preprocessor/steps/rewrite-vtable-selects.ts +3751 -0
  1536. package/src/engine/preprocessor/types.ts +103 -0
  1537. package/src/engine/sql-parser/tokenizer.test.ts +408 -0
  1538. package/src/engine/sql-parser/tokenizer.ts +205 -0
  1539. package/src/engine/with-runtime-cache.test.ts +173 -0
  1540. package/src/engine/with-runtime-cache.ts +206 -0
  1541. package/src/entity/conversation/attach-conversation.test.ts +251 -0
  1542. package/src/entity/conversation/attach-conversation.ts +98 -0
  1543. package/src/entity/conversation/schema-definition.ts +52 -0
  1544. package/src/entity/conversation/schema.test.ts +105 -0
  1545. package/src/entity/eb-entity.test.ts +149 -67
  1546. package/src/entity/eb-entity.ts +7 -7
  1547. package/src/entity/index.ts +7 -10
  1548. package/src/entity/label/attach-label.test.ts +356 -0
  1549. package/src/entity/label/attach-label.ts +165 -0
  1550. package/src/entity/label/schema-definition.ts +47 -0
  1551. package/src/entity/label/schema.test.ts +286 -33
  1552. package/src/entity/types.ts +13 -0
  1553. package/src/environment/api.test.ts +102 -0
  1554. package/src/environment/api.ts +39 -0
  1555. package/src/environment/in-memory.test.ts +100 -0
  1556. package/src/environment/in-memory.ts +68 -0
  1557. package/src/environment/index.ts +7 -0
  1558. package/src/environment/kysely/kysely-driver.test.ts +29 -0
  1559. package/src/environment/load-from-string.test.ts +17 -0
  1560. package/src/environment/load-from-string.ts +86 -0
  1561. package/src/environment/opfs-sah.browser.test.ts +352 -0
  1562. package/src/environment/opfs-sah.ts +279 -0
  1563. package/src/environment/opfs-sah.worker.ts +271 -0
  1564. package/src/environment/test-actors/echo.actor.ts +6 -0
  1565. package/src/filesystem/__bench__/batch-file-reads-select-multiple-files.explain.txt +523 -0
  1566. package/src/filesystem/__bench__/file-delete-operations-delete.explain.txt +90 -0
  1567. package/src/filesystem/__bench__/file-delete-operations-insert.explain.txt +11 -0
  1568. package/src/filesystem/__bench__/file-insert-operations.explain.txt +11 -0
  1569. package/src/filesystem/__bench__/file-read-by-exact-path.explain.txt +523 -0
  1570. package/src/filesystem/__bench__/file-read-excluding-file-path-via-not-like.explain.txt +458 -0
  1571. package/src/filesystem/__bench__/file-read-with-path-based-like.explain.txt +523 -0
  1572. package/src/filesystem/__bench__/file-reads-with-varying-sizes.explain.txt +523 -0
  1573. package/src/filesystem/__bench__/file-table-full-scan.explain.txt +522 -0
  1574. package/src/filesystem/__bench__/file-update-by-path.explain.txt +90 -0
  1575. package/src/filesystem/__bench__/mixed-file-read-pattern-80-20-distribution.explain.txt +523 -0
  1576. package/src/filesystem/__bench__/repeated-file-reads-same-file-cache-hit-scenario.explain.txt +523 -0
  1577. package/src/filesystem/__bench__/sequential-file-reads-unique-files.explain.txt +523 -0
  1578. package/src/filesystem/directory/ensure-directories.ts +311 -0
  1579. package/src/filesystem/directory/schema-definition.ts +44 -0
  1580. package/src/filesystem/directory/schema.test.ts +119 -0
  1581. package/src/filesystem/directory/schema.ts +577 -0
  1582. package/src/filesystem/file/cache/clear-file-data-cache.ts +56 -0
  1583. package/src/filesystem/file/cache/lixcol-schema.ts +48 -0
  1584. package/src/filesystem/file/cache/path-cache-schema.ts +45 -0
  1585. package/src/filesystem/file/cache/schema.test.ts +326 -0
  1586. package/src/filesystem/file/cache/schema.ts +36 -0
  1587. package/src/filesystem/file/cache/update-file-data-cache.ts +31 -0
  1588. package/src/filesystem/file/cache/update-file-lixcol-cache.ts +88 -0
  1589. package/src/filesystem/file/cache/update-file-path-cache.ts +47 -0
  1590. package/src/filesystem/file/descriptor-utils.ts +356 -0
  1591. package/src/filesystem/file/file-handlers.test.ts +390 -0
  1592. package/src/filesystem/file/file-handlers.ts +670 -0
  1593. package/src/filesystem/file/materialize-file-data-at-commit.ts +203 -0
  1594. package/src/filesystem/file/materialize-file-data.test.ts +123 -0
  1595. package/src/filesystem/file/materialize-file-data.ts +140 -0
  1596. package/src/filesystem/file/schema-definition.ts +49 -0
  1597. package/src/filesystem/file/schema.test.ts +2452 -0
  1598. package/src/filesystem/file/schema.ts +681 -0
  1599. package/src/filesystem/file/select-file-data.ts +59 -0
  1600. package/src/filesystem/file/select-file-lixcol.ts +144 -0
  1601. package/src/filesystem/file/store-detected-change-schema.test.ts +285 -0
  1602. package/src/filesystem/file/store-detected-change-schema.ts +62 -0
  1603. package/src/filesystem/file/unknown-file-fallback-plugin.test.ts +383 -0
  1604. package/src/filesystem/file/unknown-file-fallback-plugin.ts +96 -0
  1605. package/src/filesystem/fs.bench.ts +661 -0
  1606. package/src/filesystem/index.ts +15 -0
  1607. package/src/filesystem/path.test.ts +130 -0
  1608. package/src/filesystem/path.ts +127 -0
  1609. package/src/filesystem/schema.test.ts +656 -0
  1610. package/src/filesystem/schema.ts +14 -0
  1611. package/src/filesystem/util/glob.ts +31 -0
  1612. package/src/hooks/create-hooks.test.ts +135 -20
  1613. package/src/hooks/create-hooks.ts +92 -5
  1614. package/src/index.ts +9 -5
  1615. package/src/key-value/index.ts +1 -1
  1616. package/src/key-value/schema-definition.ts +78 -0
  1617. package/src/key-value/schema.test.ts +138 -13
  1618. package/src/label/create-label.test.ts +2 -2
  1619. package/src/label/create-label.ts +10 -6
  1620. package/src/label/index.ts +1 -1
  1621. package/src/label/schema-definition.ts +27 -0
  1622. package/src/lix/index.ts +0 -3
  1623. package/src/lix/new-lix.test.ts +90 -23
  1624. package/src/lix/new-lix.ts +239 -92
  1625. package/src/lix/open-lix.bench.ts +23 -0
  1626. package/src/lix/open-lix.test.ts +99 -19
  1627. package/src/lix/open-lix.ts +181 -209
  1628. package/src/log/create-lix-own-log.test.ts +41 -17
  1629. package/src/log/create-lix-own-log.ts +35 -36
  1630. package/src/log/create-log.ts +26 -15
  1631. package/src/log/index.ts +1 -1
  1632. package/src/log/schema-definition.ts +45 -0
  1633. package/src/log/schema.test.ts +57 -18
  1634. package/src/observe/create-observe.test.ts +604 -20
  1635. package/src/observe/create-observe.ts +239 -97
  1636. package/src/observe/determine-schema-keys.test.ts +121 -31
  1637. package/src/observe/determine-schema-keys.ts +372 -14
  1638. package/src/plugin/index.ts +2 -1
  1639. package/src/plugin/lix-plugin.test-d.ts +1 -0
  1640. package/src/plugin/lix-plugin.test.ts +57 -0
  1641. package/src/plugin/lix-plugin.ts +46 -7
  1642. package/src/plugin/mock-json-plugin.test.ts +15 -4
  1643. package/src/plugin/mock-json-plugin.ts +1 -0
  1644. package/src/plugin/query-sync.test.ts +132 -0
  1645. package/src/plugin/query-sync.ts +170 -0
  1646. package/src/query-filter/commit-is-ancestor-of.test.ts +87 -186
  1647. package/src/query-filter/commit-is-ancestor-of.ts +1 -1
  1648. package/src/query-filter/commit-is-descendant-of.test.ts +108 -224
  1649. package/src/query-filter/commit-is-descendant-of.ts +1 -1
  1650. package/src/query-filter/index.ts +0 -3
  1651. package/src/schema-definition/definition.test-d.ts +98 -13
  1652. package/src/schema-definition/definition.test.ts +367 -115
  1653. package/src/schema-definition/definition.ts +164 -29
  1654. package/src/schema-definition/json-pointer.test.ts +101 -0
  1655. package/src/schema-definition/json-pointer.ts +168 -0
  1656. package/src/schema-definition/validate-lix-schema.test.ts +99 -0
  1657. package/src/schema-definition/validate-lix-schema.ts +72 -0
  1658. package/src/server-protocol-handler/environment/create-in-memory-environment.ts +1 -1
  1659. package/src/server-protocol-handler/routes/get-v1.ts +4 -2
  1660. package/src/server-protocol-handler/routes/pull-v1.test.ts +1 -1
  1661. package/src/server-protocol-handler/routes/pull-v1.ts +1 -1
  1662. package/src/server-protocol-handler/routes/push-v1.test.ts +2 -2
  1663. package/src/server-protocol-handler/routes/push-v1.ts +1 -1
  1664. package/src/services/env-variables/index.d.ts +1 -1
  1665. package/src/services/telemetry/capture.test.ts +4 -4
  1666. package/src/snapshot/schema.test.ts +26 -26
  1667. package/src/snapshot/schema.ts +7 -3
  1668. package/src/state/README.md +6 -6
  1669. package/src/state/cache/builtin-schemas.ts +25 -0
  1670. package/src/state/cache/clear-state-cache.test.ts +19 -18
  1671. package/src/state/cache/clear-state-cache.ts +44 -8
  1672. package/src/state/cache/create-schema-cache-table.test.ts +67 -0
  1673. package/src/state/cache/create-schema-cache-table.ts +164 -0
  1674. package/src/state/cache/is-stale-state-cache.test.ts +25 -21
  1675. package/src/state/cache/is-stale-state-cache.ts +74 -17
  1676. package/src/state/cache/mark-state-cache-as-stale.ts +47 -34
  1677. package/src/state/cache/populate-state-cache.test.ts +523 -177
  1678. package/src/state/cache/populate-state-cache.ts +195 -92
  1679. package/src/state/cache/schema-indexes.test.ts +144 -0
  1680. package/src/state/cache/schema-indexes.ts +191 -0
  1681. package/src/state/cache/schema-resolver.ts +59 -0
  1682. package/src/state/cache/schema.bench.ts +361 -0
  1683. package/src/state/cache/schema.test.ts +143 -0
  1684. package/src/state/cache/schema.ts +60 -29
  1685. package/src/state/cache/select-from-state-cache.test.ts +72 -0
  1686. package/src/state/cache/select-from-state-cache.ts +71 -0
  1687. package/src/state/cache/update-state-cache.bench.ts +158 -0
  1688. package/src/state/cache/update-state-cache.test.ts +844 -244
  1689. package/src/state/cache/update-state-cache.ts +436 -295
  1690. package/src/state/cache-v2/cache-columns.ts +20 -0
  1691. package/src/state/cache-v2/clear-state-cache.test.ts +101 -0
  1692. package/src/state/cache-v2/clear-state-cache.ts +51 -0
  1693. package/src/state/cache-v2/create-schema-cache-table.test.ts +96 -0
  1694. package/src/state/cache-v2/create-schema-cache-table.ts +205 -0
  1695. package/src/state/cache-v2/is-stale-state-cache.test.ts +39 -0
  1696. package/src/state/cache-v2/is-stale-state-cache.ts +86 -0
  1697. package/src/state/cache-v2/mark-state-cache-as-stale.ts +78 -0
  1698. package/src/state/cache-v2/populate-state-cache.test.ts +124 -0
  1699. package/src/state/cache-v2/populate-state-cache.ts +178 -0
  1700. package/src/state/cache-v2/schema-metadata.ts +46 -0
  1701. package/src/state/cache-v2/schema.bench.ts +238 -0
  1702. package/src/state/cache-v2/schema.test.ts +330 -0
  1703. package/src/state/cache-v2/schema.ts +114 -0
  1704. package/src/state/cache-v2/select-from-state-cache.test.ts +109 -0
  1705. package/src/state/cache-v2/select-from-state-cache.ts +201 -0
  1706. package/src/state/cache-v2/sqlite-type-mapper.test.ts +56 -0
  1707. package/src/state/cache-v2/sqlite-type-mapper.ts +64 -0
  1708. package/src/state/cache-v2/update-state-cache.bench.ts +198 -0
  1709. package/src/state/cache-v2/update-state-cache.test.ts +344 -0
  1710. package/src/state/cache-v2/update-state-cache.ts +607 -0
  1711. package/src/state/create-checkpoint.test.ts +848 -0
  1712. package/src/state/create-checkpoint.ts +278 -0
  1713. package/src/state/index.ts +24 -0
  1714. package/src/state/materialize-state.bench.ts +231 -0
  1715. package/src/state/materialize-state.test.ts +728 -249
  1716. package/src/state/materialize-state.ts +454 -120
  1717. package/src/state/schema.bench.ts +128 -39
  1718. package/src/state/schema.ts +38 -986
  1719. package/src/state/transaction/insert-transaction-state.test.ts +1119 -0
  1720. package/src/state/transaction/insert-transaction-state.ts +149 -0
  1721. package/src/state/transaction/schema.ts +49 -0
  1722. package/src/state/transition.bench.ts +271 -0
  1723. package/src/state/transition.test.ts +295 -0
  1724. package/src/state/transition.ts +413 -0
  1725. package/src/state/untracked/schema.test.ts +36 -36
  1726. package/src/state/untracked/schema.ts +16 -9
  1727. package/src/state/untracked/update-untracked-state.test.ts +170 -152
  1728. package/src/state/untracked/update-untracked-state.ts +139 -91
  1729. package/src/state/views/__bench__/state-delete-tracked-row.explain.txt +79 -0
  1730. package/src/state/views/__bench__/state-insert-tracked-row.explain.txt +20 -0
  1731. package/src/state/views/__bench__/state-insert-untracked-row.explain.txt +20 -0
  1732. package/src/state/views/__bench__/state-select-recent-file-scan.explain.txt +1133 -0
  1733. package/src/state/views/__bench__/state-select-tracked-entity.explain.txt +296 -0
  1734. package/src/state/views/__bench__/state-select-untracked-filter.explain.txt +301 -0
  1735. package/src/state/views/__bench__/state-update-tracked-row.explain.txt +80 -0
  1736. package/src/state/views/state-by-version.ts +121 -0
  1737. package/src/state/views/state-with-tombstones.test.ts +166 -0
  1738. package/src/state/views/state-with-tombstones.ts +61 -0
  1739. package/src/state/views/state.bench.1_base.json +189 -0
  1740. package/src/state/views/state.bench.2_dml.json +189 -0
  1741. package/src/state/views/state.bench.ts +382 -0
  1742. package/src/state/views/state.test.ts +417 -0
  1743. package/src/state/views/state.ts +97 -0
  1744. package/src/state/vtable/__bench__/cache-entity-version-file-plugin.explain.txt +237 -0
  1745. package/src/state/vtable/__bench__/cache-entity-version-file.explain.txt +236 -0
  1746. package/src/state/vtable/__bench__/cache-entity-version.explain.txt +235 -0
  1747. package/src/state/vtable/__bench__/inherited-cache-entity-version-file-plugin.explain.txt +363 -0
  1748. package/src/state/vtable/__bench__/inherited-cache-entity-version-file.explain.txt +362 -0
  1749. package/src/state/vtable/__bench__/inherited-cache-entity-version.explain.txt +367 -0
  1750. package/src/state/vtable/__bench__/inherited-untracked-entity-version-file-plugin.explain.txt +363 -0
  1751. package/src/state/vtable/__bench__/inherited-untracked-entity-version-file.explain.txt +362 -0
  1752. package/src/state/vtable/__bench__/inherited-untracked-entity-version.explain.txt +367 -0
  1753. package/src/state/vtable/__bench__/transaction-entity-version-file-plugin.explain.txt +237 -0
  1754. package/src/state/vtable/__bench__/transaction-entity-version-file.explain.txt +236 -0
  1755. package/src/state/vtable/__bench__/transaction-entity-version.explain.txt +235 -0
  1756. package/src/state/vtable/__bench__/untracked-entity-version-file-plugin.explain.txt +237 -0
  1757. package/src/state/vtable/__bench__/untracked-entity-version-file.explain.txt +236 -0
  1758. package/src/state/vtable/__bench__/untracked-entity-version.explain.txt +235 -0
  1759. package/src/state/vtable/__playground__/validate-state-mutation.foreign-key.explain.txt +173 -0
  1760. package/src/state/vtable/__playground__/validate-state-mutation.primary-key.explain.txt +173 -0
  1761. package/src/state/vtable/__playground__/validate-state-mutation.unique-nested.explain.txt +173 -0
  1762. package/src/state/vtable/commit.bench.ts +339 -0
  1763. package/src/state/vtable/commit.test.ts +1924 -0
  1764. package/src/state/vtable/commit.ts +508 -0
  1765. package/src/state/vtable/generate-commit.test.ts +417 -0
  1766. package/src/state/vtable/generate-commit.ts +346 -0
  1767. package/src/state/vtable/index.ts +5 -0
  1768. package/src/state/vtable/insert-vtable-log.ts +64 -0
  1769. package/src/state/vtable/primary-key.test.ts +44 -0
  1770. package/src/state/vtable/primary-key.ts +82 -0
  1771. package/src/state/vtable/validate-state-mutation.bench.ts +326 -0
  1772. package/src/state/vtable/validate-state-mutation.playground.test.ts +456 -0
  1773. package/src/state/vtable/validate-state-mutation.test.ts +4265 -0
  1774. package/src/state/vtable/validate-state-mutation.ts +1236 -0
  1775. package/src/state/vtable/vtable.insert.bench.ts +127 -0
  1776. package/src/state/vtable/vtable.select.bench.ts +439 -0
  1777. package/src/state/vtable/vtable.test.ts +4211 -0
  1778. package/src/state/vtable/vtable.ts +1223 -0
  1779. package/src/state/working-change-set/refresh-working-change-set.test.ts +116 -0
  1780. package/src/state/working-change-set/refresh-working-change-set.ts +290 -0
  1781. package/src/state/writer.ts +71 -0
  1782. package/src/state-history/schema.test.ts +31 -31
  1783. package/src/state-history/schema.ts +101 -34
  1784. package/src/stored-schema/get-stored-schema.test.ts +352 -0
  1785. package/src/stored-schema/get-stored-schema.ts +163 -0
  1786. package/src/stored-schema/index.ts +1 -1
  1787. package/src/stored-schema/schema-definition.ts +30 -0
  1788. package/src/stored-schema/schema.test.ts +72 -114
  1789. package/src/sync/pull-from-server.test.ts +6 -6
  1790. package/src/sync/pull-from-server.ts +1 -1
  1791. package/src/sync/push-to-server.test.ts +6 -6
  1792. package/src/sync/push-to-server.ts +1 -1
  1793. package/src/sync/sync-process.test.ts +3 -6
  1794. package/src/sync/sync-process.ts +24 -11
  1795. package/src/test-utilities/simulation-test/cache-miss-simulation.test.ts +67 -31
  1796. package/src/test-utilities/simulation-test/cache-miss-simulation.ts +52 -55
  1797. package/src/test-utilities/simulation-test/engine-boundary-simulation.test.ts +14 -0
  1798. package/src/test-utilities/simulation-test/engine-boundary-simulation.ts +65 -0
  1799. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.test.ts +5 -5
  1800. package/src/test-utilities/simulation-test/out-of-order-sequence-simulation.ts +6 -14
  1801. package/src/test-utilities/simulation-test/simulation-test.test.ts +42 -38
  1802. package/src/test-utilities/simulation-test/simulation-test.ts +78 -60
  1803. package/src/types/fs.d.ts +11 -0
  1804. package/src/version/create-version-from-commit.test.ts +211 -0
  1805. package/src/version/create-version-from-commit.ts +141 -0
  1806. package/src/version/create-version.test.ts +62 -15
  1807. package/src/version/create-version.ts +24 -65
  1808. package/src/version/index.ts +12 -4
  1809. package/src/version/merge-version.test.ts +1051 -0
  1810. package/src/version/merge-version.ts +583 -0
  1811. package/src/version/schema-definition.ts +111 -0
  1812. package/src/version/schema.test.ts +367 -141
  1813. package/src/version/schema.ts +456 -144
  1814. package/src/version/select-active-version.ts +2 -2
  1815. package/src/version/select-version-diff.bench.ts +145 -0
  1816. package/src/version/select-version-diff.playground-plan.txt +3837 -0
  1817. package/src/version/select-version-diff.playground.test.ts +129 -0
  1818. package/src/version/select-version-diff.test.ts +805 -0
  1819. package/src/version/select-version-diff.ts +201 -0
  1820. package/src/version/switch-version.test.ts +2 -2
  1821. package/src/version/switch-version.ts +2 -2
  1822. package/dist/account/database-schema.d.ts +0 -18
  1823. package/dist/account/database-schema.d.ts.map +0 -1
  1824. package/dist/account/database-schema.js +0 -32
  1825. package/dist/account/database-schema.js.map +0 -1
  1826. package/dist/account/database-schema.test.d.ts +0 -2
  1827. package/dist/account/database-schema.test.d.ts.map +0 -1
  1828. package/dist/account/database-schema.test.js +0 -135
  1829. package/dist/account/database-schema.test.js.map +0 -1
  1830. package/dist/account/schema.d.ts +0 -44
  1831. package/dist/account/schema.d.ts.map +0 -1
  1832. package/dist/account/schema.js +0 -112
  1833. package/dist/account/schema.js.map +0 -1
  1834. package/dist/change/apply-changes.d.ts +0 -38
  1835. package/dist/change/apply-changes.d.ts.map +0 -1
  1836. package/dist/change/apply-changes.js +0 -108
  1837. package/dist/change/apply-changes.js.map +0 -1
  1838. package/dist/change/apply-changes.test.d.ts +0 -2
  1839. package/dist/change/apply-changes.test.d.ts.map +0 -1
  1840. package/dist/change/apply-changes.test.js +0 -312
  1841. package/dist/change/apply-changes.test.js.map +0 -1
  1842. package/dist/change/create-change-v2.d.ts +0 -11
  1843. package/dist/change/create-change-v2.d.ts.map +0 -1
  1844. package/dist/change/create-change-v2.js +0 -31
  1845. package/dist/change/create-change-v2.js.map +0 -1
  1846. package/dist/change/create-change-v2.test.d.ts +0 -2
  1847. package/dist/change/create-change-v2.test.d.ts.map +0 -1
  1848. package/dist/change/create-change-v2.test.js +0 -39
  1849. package/dist/change/create-change-v2.test.js.map +0 -1
  1850. package/dist/change/create-change.d.ts +0 -16
  1851. package/dist/change/create-change.d.ts.map +0 -1
  1852. package/dist/change/create-change.js +0 -45
  1853. package/dist/change/create-change.js.map +0 -1
  1854. package/dist/change/create-change.test.d.ts +0 -2
  1855. package/dist/change/create-change.test.d.ts.map +0 -1
  1856. package/dist/change/create-change.test.js +0 -186
  1857. package/dist/change/create-change.test.js.map +0 -1
  1858. package/dist/change/mock-change.d.ts +0 -10
  1859. package/dist/change/mock-change.d.ts.map +0 -1
  1860. package/dist/change/mock-change.js +0 -21
  1861. package/dist/change/mock-change.js.map +0 -1
  1862. package/dist/change-author/schema.d.ts +0 -34
  1863. package/dist/change-author/schema.d.ts.map +0 -1
  1864. package/dist/change-author/schema.js +0 -41
  1865. package/dist/change-author/schema.js.map +0 -1
  1866. package/dist/change-proposal/database-schema.d.ts +0 -13
  1867. package/dist/change-proposal/database-schema.d.ts.map +0 -1
  1868. package/dist/change-proposal/database-schema.js +0 -17
  1869. package/dist/change-proposal/database-schema.js.map +0 -1
  1870. package/dist/change-proposal/database-schema.test.d.ts +0 -2
  1871. package/dist/change-proposal/database-schema.test.d.ts.map +0 -1
  1872. package/dist/change-proposal/database-schema.test.js +0 -159
  1873. package/dist/change-proposal/database-schema.test.js.map +0 -1
  1874. package/dist/change-schema/index.d.ts +0 -2
  1875. package/dist/change-schema/index.d.ts.map +0 -1
  1876. package/dist/change-schema/index.js +0 -2
  1877. package/dist/change-schema/index.js.map +0 -1
  1878. package/dist/change-schema/types.d.ts +0 -40
  1879. package/dist/change-schema/types.d.ts.map +0 -1
  1880. package/dist/change-schema/types.js.map +0 -1
  1881. package/dist/change-schema/types.test-d.d.ts +0 -2
  1882. package/dist/change-schema/types.test-d.d.ts.map +0 -1
  1883. package/dist/change-schema/types.test-d.js +0 -34
  1884. package/dist/change-schema/types.test-d.js.map +0 -1
  1885. package/dist/change-set/before-after-of-file.d.ts +0 -31
  1886. package/dist/change-set/before-after-of-file.d.ts.map +0 -1
  1887. package/dist/change-set/before-after-of-file.js +0 -191
  1888. package/dist/change-set/before-after-of-file.js.map +0 -1
  1889. package/dist/change-set/before-after-of-file.test.d.ts +0 -2
  1890. package/dist/change-set/before-after-of-file.test.d.ts.map +0 -1
  1891. package/dist/change-set/before-after-of-file.test.js +0 -221
  1892. package/dist/change-set/before-after-of-file.test.js.map +0 -1
  1893. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts +0 -20
  1894. package/dist/change-set/change-set-element-in-symmetric-difference.d.ts.map +0 -1
  1895. package/dist/change-set/change-set-element-in-symmetric-difference.js +0 -36
  1896. package/dist/change-set/change-set-element-in-symmetric-difference.js.map +0 -1
  1897. package/dist/change-set/change-set-element-in-symmetric-difference.test.d.ts +0 -2
  1898. package/dist/change-set/change-set-element-in-symmetric-difference.test.d.ts.map +0 -1
  1899. package/dist/change-set/change-set-element-in-symmetric-difference.test.js +0 -276
  1900. package/dist/change-set/change-set-element-in-symmetric-difference.test.js.map +0 -1
  1901. package/dist/change-set/checkout-change-set.d.ts +0 -15
  1902. package/dist/change-set/checkout-change-set.d.ts.map +0 -1
  1903. package/dist/change-set/checkout-change-set.js +0 -64
  1904. package/dist/change-set/checkout-change-set.js.map +0 -1
  1905. package/dist/change-set/checkout-change-set.test.d.ts +0 -2
  1906. package/dist/change-set/checkout-change-set.test.d.ts.map +0 -1
  1907. package/dist/change-set/checkout-change-set.test.js +0 -127
  1908. package/dist/change-set/checkout-change-set.test.js.map +0 -1
  1909. package/dist/change-set/create-checkpoint.d.ts +0 -19
  1910. package/dist/change-set/create-checkpoint.d.ts.map +0 -1
  1911. package/dist/change-set/create-checkpoint.js +0 -95
  1912. package/dist/change-set/create-checkpoint.js.map +0 -1
  1913. package/dist/change-set/create-checkpoint.test.d.ts +0 -2
  1914. package/dist/change-set/create-checkpoint.test.d.ts.map +0 -1
  1915. package/dist/change-set/create-checkpoint.test.js +0 -347
  1916. package/dist/change-set/create-checkpoint.test.js.map +0 -1
  1917. package/dist/change-set/create-merge-change-set.d.ts +0 -23
  1918. package/dist/change-set/create-merge-change-set.d.ts.map +0 -1
  1919. package/dist/change-set/create-merge-change-set.js +0 -68
  1920. package/dist/change-set/create-merge-change-set.js.map +0 -1
  1921. package/dist/change-set/create-merge-change-set.test.d.ts +0 -2
  1922. package/dist/change-set/create-merge-change-set.test.d.ts.map +0 -1
  1923. package/dist/change-set/create-merge-change-set.test.js +0 -211
  1924. package/dist/change-set/create-merge-change-set.test.js.map +0 -1
  1925. package/dist/change-set/create-transition-change-set.d.ts +0 -18
  1926. package/dist/change-set/create-transition-change-set.d.ts.map +0 -1
  1927. package/dist/change-set/create-transition-change-set.js +0 -102
  1928. package/dist/change-set/create-transition-change-set.js.map +0 -1
  1929. package/dist/change-set/create-transition-change-set.test.d.ts +0 -2
  1930. package/dist/change-set/create-transition-change-set.test.d.ts.map +0 -1
  1931. package/dist/change-set/create-transition-change-set.test.js +0 -211
  1932. package/dist/change-set/create-transition-change-set.test.js.map +0 -1
  1933. package/dist/change-set/create-undo-change-set.d.ts +0 -27
  1934. package/dist/change-set/create-undo-change-set.d.ts.map +0 -1
  1935. package/dist/change-set/create-undo-change-set.js +0 -122
  1936. package/dist/change-set/create-undo-change-set.js.map +0 -1
  1937. package/dist/change-set/create-undo-change-set.test.d.ts +0 -2
  1938. package/dist/change-set/create-undo-change-set.test.d.ts.map +0 -1
  1939. package/dist/change-set/create-undo-change-set.test.js +0 -273
  1940. package/dist/change-set/create-undo-change-set.test.js.map +0 -1
  1941. package/dist/change-set/database-schema.d.ts +0 -39
  1942. package/dist/change-set/database-schema.d.ts.map +0 -1
  1943. package/dist/change-set/database-schema.js +0 -86
  1944. package/dist/change-set/database-schema.js.map +0 -1
  1945. package/dist/change-set/database-schema.test.d.ts +0 -2
  1946. package/dist/change-set/database-schema.test.d.ts.map +0 -1
  1947. package/dist/change-set/database-schema.test.js +0 -547
  1948. package/dist/change-set/database-schema.test.js.map +0 -1
  1949. package/dist/change-set/diff-for-file.d.ts +0 -29
  1950. package/dist/change-set/diff-for-file.d.ts.map +0 -1
  1951. package/dist/change-set/diff-for-file.js +0 -19
  1952. package/dist/change-set/diff-for-file.js.map +0 -1
  1953. package/dist/change-set/get-before-after-of-file.d.ts +0 -31
  1954. package/dist/change-set/get-before-after-of-file.d.ts.map +0 -1
  1955. package/dist/change-set/get-before-after-of-file.js +0 -189
  1956. package/dist/change-set/get-before-after-of-file.js.map +0 -1
  1957. package/dist/change-set/get-before-after-of-file.test.d.ts +0 -2
  1958. package/dist/change-set/get-before-after-of-file.test.d.ts.map +0 -1
  1959. package/dist/change-set/get-before-after-of-file.test.js +0 -220
  1960. package/dist/change-set/get-before-after-of-file.test.js.map +0 -1
  1961. package/dist/change-set/merge-change-sets.d.ts +0 -23
  1962. package/dist/change-set/merge-change-sets.d.ts.map +0 -1
  1963. package/dist/change-set/merge-change-sets.js +0 -69
  1964. package/dist/change-set/merge-change-sets.js.map +0 -1
  1965. package/dist/change-set/merge-change-sets.test.d.ts +0 -2
  1966. package/dist/change-set/merge-change-sets.test.d.ts.map +0 -1
  1967. package/dist/change-set/merge-change-sets.test.js +0 -184
  1968. package/dist/change-set/merge-change-sets.test.js.map +0 -1
  1969. package/dist/change-set/restore-change-set.d.ts +0 -14
  1970. package/dist/change-set/restore-change-set.d.ts.map +0 -1
  1971. package/dist/change-set/restore-change-set.js +0 -98
  1972. package/dist/change-set/restore-change-set.js.map +0 -1
  1973. package/dist/change-set/restore-change-set.test.d.ts +0 -2
  1974. package/dist/change-set/restore-change-set.test.d.ts.map +0 -1
  1975. package/dist/change-set/restore-change-set.test.js +0 -238
  1976. package/dist/change-set/restore-change-set.test.js.map +0 -1
  1977. package/dist/change-set/schema.d.ts +0 -105
  1978. package/dist/change-set/schema.d.ts.map +0 -1
  1979. package/dist/change-set/schema.js +0 -122
  1980. package/dist/change-set/schema.js.map +0 -1
  1981. package/dist/change-set-edge/database-schema.d.ts +0 -11
  1982. package/dist/change-set-edge/database-schema.d.ts.map +0 -1
  1983. package/dist/change-set-edge/database-schema.js +0 -29
  1984. package/dist/change-set-edge/database-schema.js.map +0 -1
  1985. package/dist/change-set-edge/database-schema.test.d.ts +0 -2
  1986. package/dist/change-set-edge/database-schema.test.d.ts.map +0 -1
  1987. package/dist/change-set-edge/database-schema.test.js +0 -166
  1988. package/dist/change-set-edge/database-schema.test.js.map +0 -1
  1989. package/dist/change-set-edge/index.d.ts +0 -2
  1990. package/dist/change-set-edge/index.d.ts.map +0 -1
  1991. package/dist/change-set-edge/index.js +0 -2
  1992. package/dist/change-set-edge/index.js.map +0 -1
  1993. package/dist/change-set-v2/apply-change-set.d.ts +0 -10
  1994. package/dist/change-set-v2/apply-change-set.d.ts.map +0 -1
  1995. package/dist/change-set-v2/apply-change-set.js +0 -147
  1996. package/dist/change-set-v2/apply-change-set.js.map +0 -1
  1997. package/dist/change-set-v2/apply-change-set.test.d.ts +0 -2
  1998. package/dist/change-set-v2/apply-change-set.test.d.ts.map +0 -1
  1999. package/dist/change-set-v2/apply-change-set.test.js +0 -270
  2000. package/dist/change-set-v2/apply-change-set.test.js.map +0 -1
  2001. package/dist/change-set-v2/create-change-set.d.ts +0 -10
  2002. package/dist/change-set-v2/create-change-set.d.ts.map +0 -1
  2003. package/dist/change-set-v2/create-change-set.js +0 -57
  2004. package/dist/change-set-v2/create-change-set.js.map +0 -1
  2005. package/dist/change-set-v2/create-change-set.test.d.ts +0 -2
  2006. package/dist/change-set-v2/create-change-set.test.d.ts.map +0 -1
  2007. package/dist/change-set-v2/create-change-set.test.js +0 -59
  2008. package/dist/change-set-v2/create-change-set.test.js.map +0 -1
  2009. package/dist/change-set-v2/create-checkpoint.d.ts +0 -7
  2010. package/dist/change-set-v2/create-checkpoint.d.ts.map +0 -1
  2011. package/dist/change-set-v2/create-checkpoint.js +0 -79
  2012. package/dist/change-set-v2/create-checkpoint.js.map +0 -1
  2013. package/dist/change-set-v2/create-checkpoint.test.d.ts.map +0 -1
  2014. package/dist/change-set-v2/create-checkpoint.test.js +0 -289
  2015. package/dist/change-set-v2/create-checkpoint.test.js.map +0 -1
  2016. package/dist/change-set-v2/create-merge-change-set.d.ts +0 -23
  2017. package/dist/change-set-v2/create-merge-change-set.d.ts.map +0 -1
  2018. package/dist/change-set-v2/create-merge-change-set.js +0 -68
  2019. package/dist/change-set-v2/create-merge-change-set.js.map +0 -1
  2020. package/dist/change-set-v2/create-merge-change-set.test.d.ts +0 -2
  2021. package/dist/change-set-v2/create-merge-change-set.test.d.ts.map +0 -1
  2022. package/dist/change-set-v2/create-merge-change-set.test.js +0 -223
  2023. package/dist/change-set-v2/create-merge-change-set.test.js.map +0 -1
  2024. package/dist/change-set-v2/index.d.ts +0 -5
  2025. package/dist/change-set-v2/index.d.ts.map +0 -1
  2026. package/dist/change-set-v2/index.js +0 -5
  2027. package/dist/change-set-v2/index.js.map +0 -1
  2028. package/dist/change-set-v2/schema.d.ts +0 -50
  2029. package/dist/change-set-v2/schema.d.ts.map +0 -1
  2030. package/dist/change-set-v2/schema.js +0 -347
  2031. package/dist/change-set-v2/schema.js.map +0 -1
  2032. package/dist/change-set-v2/schema.test.d.ts.map +0 -1
  2033. package/dist/change-set-v2/schema.test.js +0 -713
  2034. package/dist/change-set-v2/schema.test.js.map +0 -1
  2035. package/dist/commit/apply-commit.d.ts +0 -32
  2036. package/dist/commit/apply-commit.d.ts.map +0 -1
  2037. package/dist/commit/apply-commit.js +0 -63
  2038. package/dist/commit/apply-commit.js.map +0 -1
  2039. package/dist/commit/apply-commit.test.d.ts +0 -2
  2040. package/dist/commit/apply-commit.test.d.ts.map +0 -1
  2041. package/dist/commit/apply-commit.test.js +0 -367
  2042. package/dist/commit/apply-commit.test.js.map +0 -1
  2043. package/dist/commit/create-checkpoint.d.ts +0 -19
  2044. package/dist/commit/create-checkpoint.d.ts.map +0 -1
  2045. package/dist/commit/create-checkpoint.js +0 -118
  2046. package/dist/commit/create-checkpoint.js.map +0 -1
  2047. package/dist/commit/create-checkpoint.test.d.ts +0 -2
  2048. package/dist/commit/create-checkpoint.test.d.ts.map +0 -1
  2049. package/dist/commit/create-checkpoint.test.js +0 -472
  2050. package/dist/commit/create-checkpoint.test.js.map +0 -1
  2051. package/dist/commit/create-commit.d.ts +0 -38
  2052. package/dist/commit/create-commit.d.ts.map +0 -1
  2053. package/dist/commit/create-commit.js +0 -68
  2054. package/dist/commit/create-commit.js.map +0 -1
  2055. package/dist/commit/create-merge-commit.d.ts +0 -24
  2056. package/dist/commit/create-merge-commit.d.ts.map +0 -1
  2057. package/dist/commit/create-merge-commit.js +0 -103
  2058. package/dist/commit/create-merge-commit.js.map +0 -1
  2059. package/dist/commit/create-merge-commit.test.d.ts +0 -2
  2060. package/dist/commit/create-merge-commit.test.d.ts.map +0 -1
  2061. package/dist/commit/create-merge-commit.test.js +0 -242
  2062. package/dist/commit/create-merge-commit.test.js.map +0 -1
  2063. package/dist/commit/create-transition-commit.d.ts +0 -18
  2064. package/dist/commit/create-transition-commit.d.ts.map +0 -1
  2065. package/dist/commit/create-transition-commit.js +0 -136
  2066. package/dist/commit/create-transition-commit.js.map +0 -1
  2067. package/dist/commit/create-transition-commit.test.d.ts +0 -2
  2068. package/dist/commit/create-transition-commit.test.d.ts.map +0 -1
  2069. package/dist/commit/create-transition-commit.test.js +0 -221
  2070. package/dist/commit/create-transition-commit.test.js.map +0 -1
  2071. package/dist/commit/create-undo-commit.d.ts +0 -27
  2072. package/dist/commit/create-undo-commit.d.ts.map +0 -1
  2073. package/dist/commit/create-undo-commit.js +0 -143
  2074. package/dist/commit/create-undo-commit.js.map +0 -1
  2075. package/dist/commit/create-undo-commit.test.d.ts +0 -2
  2076. package/dist/commit/create-undo-commit.test.d.ts.map +0 -1
  2077. package/dist/commit/create-undo-commit.test.js +0 -298
  2078. package/dist/commit/create-undo-commit.test.js.map +0 -1
  2079. package/dist/commit/schema.d.ts +0 -73
  2080. package/dist/commit/schema.d.ts.map +0 -1
  2081. package/dist/commit/schema.js +0 -90
  2082. package/dist/commit/schema.js.map +0 -1
  2083. package/dist/database/apply-schema.d.ts +0 -11
  2084. package/dist/database/apply-schema.d.ts.map +0 -1
  2085. package/dist/database/apply-schema.js +0 -99
  2086. package/dist/database/apply-schema.js.map +0 -1
  2087. package/dist/database/execute-sync.d.ts +0 -24
  2088. package/dist/database/execute-sync.d.ts.map +0 -1
  2089. package/dist/database/execute-sync.js +0 -37
  2090. package/dist/database/execute-sync.js.map +0 -1
  2091. package/dist/database/execute-sync.test.d.ts.map +0 -1
  2092. package/dist/database/execute-sync.test.js +0 -111
  2093. package/dist/database/execute-sync.test.js.map +0 -1
  2094. package/dist/database/init-db.test.d.ts +0 -2
  2095. package/dist/database/init-db.test.d.ts.map +0 -1
  2096. package/dist/database/init-db.test.js +0 -19
  2097. package/dist/database/init-db.test.js.map +0 -1
  2098. package/dist/database/kysely-plugin/json-column-plugin.d.ts.map +0 -1
  2099. package/dist/database/kysely-plugin/json-column-plugin.js +0 -210
  2100. package/dist/database/kysely-plugin/json-column-plugin.js.map +0 -1
  2101. package/dist/database/kysely-plugin/json-column-plugin.test.d.ts.map +0 -1
  2102. package/dist/database/kysely-plugin/json-column-plugin.test.js +0 -329
  2103. package/dist/database/kysely-plugin/json-column-plugin.test.js.map +0 -1
  2104. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts +0 -3
  2105. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.d.ts.map +0 -1
  2106. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js +0 -39
  2107. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.js.map +0 -1
  2108. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.d.ts +0 -2
  2109. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.d.ts.map +0 -1
  2110. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.js +0 -162
  2111. package/dist/database/kysely-plugin/parse-jsonb-plugin-v1.test.js.map +0 -1
  2112. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.d.ts +0 -12
  2113. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.d.ts.map +0 -1
  2114. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js +0 -149
  2115. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.js.map +0 -1
  2116. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.d.ts +0 -2
  2117. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.d.ts.map +0 -1
  2118. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.js +0 -162
  2119. package/dist/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.js.map +0 -1
  2120. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts +0 -15
  2121. package/dist/database/kysely-plugin/serialize-jsonb-plugin.d.ts.map +0 -1
  2122. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js +0 -171
  2123. package/dist/database/kysely-plugin/serialize-jsonb-plugin.js.map +0 -1
  2124. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.d.ts +0 -2
  2125. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.d.ts.map +0 -1
  2126. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js +0 -251
  2127. package/dist/database/kysely-plugin/serialize-jsonb-plugin.test.js.map +0 -1
  2128. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.d.ts.map +0 -1
  2129. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.js.map +0 -1
  2130. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.d.ts.map +0 -1
  2131. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.js +0 -51
  2132. package/dist/database/kysely-plugin/view-insert-returning-error-plugin.test.js.map +0 -1
  2133. package/dist/database/mutation-log/database-schema.d.ts +0 -16
  2134. package/dist/database/mutation-log/database-schema.d.ts.map +0 -1
  2135. package/dist/database/mutation-log/database-schema.js +0 -97
  2136. package/dist/database/mutation-log/database-schema.js.map +0 -1
  2137. package/dist/database/mutation-log/lix-session.d.ts +0 -8
  2138. package/dist/database/mutation-log/lix-session.d.ts.map +0 -1
  2139. package/dist/database/mutation-log/lix-session.js +0 -18
  2140. package/dist/database/mutation-log/lix-session.js.map +0 -1
  2141. package/dist/deterministic/generate-human-id.d.ts +0 -20
  2142. package/dist/deterministic/generate-human-id.d.ts.map +0 -1
  2143. package/dist/deterministic/generate-human-id.js +0 -86
  2144. package/dist/deterministic/generate-human-id.js.map +0 -1
  2145. package/dist/deterministic/generate-human-id.test.d.ts.map +0 -1
  2146. package/dist/deterministic/generate-human-id.test.js +0 -123
  2147. package/dist/deterministic/generate-human-id.test.js.map +0 -1
  2148. package/dist/deterministic/index.d.ts +0 -8
  2149. package/dist/deterministic/index.d.ts.map +0 -1
  2150. package/dist/deterministic/index.js +0 -8
  2151. package/dist/deterministic/index.js.map +0 -1
  2152. package/dist/deterministic/is-deterministic-mode.d.ts +0 -14
  2153. package/dist/deterministic/is-deterministic-mode.d.ts.map +0 -1
  2154. package/dist/deterministic/is-deterministic-mode.js +0 -25
  2155. package/dist/deterministic/is-deterministic-mode.js.map +0 -1
  2156. package/dist/deterministic/is-deterministic-mode.test.d.ts.map +0 -1
  2157. package/dist/deterministic/is-deterministic-mode.test.js +0 -103
  2158. package/dist/deterministic/is-deterministic-mode.test.js.map +0 -1
  2159. package/dist/deterministic/nano-id.d.ts +0 -61
  2160. package/dist/deterministic/nano-id.d.ts.map +0 -1
  2161. package/dist/deterministic/nano-id.js +0 -161
  2162. package/dist/deterministic/nano-id.js.map +0 -1
  2163. package/dist/deterministic/nano-id.test.d.ts.map +0 -1
  2164. package/dist/deterministic/nano-id.test.js +0 -163
  2165. package/dist/deterministic/nano-id.test.js.map +0 -1
  2166. package/dist/deterministic/options.d.ts +0 -53
  2167. package/dist/deterministic/options.d.ts.map +0 -1
  2168. package/dist/deterministic/options.js +0 -52
  2169. package/dist/deterministic/options.js.map +0 -1
  2170. package/dist/deterministic/options.test.d.ts.map +0 -1
  2171. package/dist/deterministic/options.test.js +0 -111
  2172. package/dist/deterministic/options.test.js.map +0 -1
  2173. package/dist/deterministic/random.d.ts +0 -68
  2174. package/dist/deterministic/random.d.ts.map +0 -1
  2175. package/dist/deterministic/random.js +0 -225
  2176. package/dist/deterministic/random.js.map +0 -1
  2177. package/dist/deterministic/random.test.d.ts.map +0 -1
  2178. package/dist/deterministic/random.test.js +0 -244
  2179. package/dist/deterministic/random.test.js.map +0 -1
  2180. package/dist/deterministic/sequence.d.ts +0 -56
  2181. package/dist/deterministic/sequence.d.ts.map +0 -1
  2182. package/dist/deterministic/sequence.js +0 -107
  2183. package/dist/deterministic/sequence.js.map +0 -1
  2184. package/dist/deterministic/sequence.test.d.ts.map +0 -1
  2185. package/dist/deterministic/sequence.test.js +0 -71
  2186. package/dist/deterministic/sequence.test.js.map +0 -1
  2187. package/dist/deterministic/timestamp.d.ts +0 -47
  2188. package/dist/deterministic/timestamp.d.ts.map +0 -1
  2189. package/dist/deterministic/timestamp.js +0 -74
  2190. package/dist/deterministic/timestamp.js.map +0 -1
  2191. package/dist/deterministic/timestamp.test.d.ts.map +0 -1
  2192. package/dist/deterministic/timestamp.test.js +0 -145
  2193. package/dist/deterministic/timestamp.test.js.map +0 -1
  2194. package/dist/deterministic/uuid-v7.d.ts +0 -49
  2195. package/dist/deterministic/uuid-v7.d.ts.map +0 -1
  2196. package/dist/deterministic/uuid-v7.js +0 -75
  2197. package/dist/deterministic/uuid-v7.js.map +0 -1
  2198. package/dist/deterministic/uuid-v7.test.d.ts.map +0 -1
  2199. package/dist/deterministic/uuid-v7.test.js +0 -114
  2200. package/dist/deterministic/uuid-v7.test.js.map +0 -1
  2201. package/dist/discussion/create-comment.d.ts +0 -8
  2202. package/dist/discussion/create-comment.d.ts.map +0 -1
  2203. package/dist/discussion/create-comment.js +0 -12
  2204. package/dist/discussion/create-comment.js.map +0 -1
  2205. package/dist/discussion/create-discussion.d.ts +0 -22
  2206. package/dist/discussion/create-discussion.d.ts.map +0 -1
  2207. package/dist/discussion/create-discussion.js +0 -40
  2208. package/dist/discussion/create-discussion.js.map +0 -1
  2209. package/dist/discussion/create-discussion.test.d.ts +0 -2
  2210. package/dist/discussion/create-discussion.test.d.ts.map +0 -1
  2211. package/dist/discussion/create-discussion.test.js +0 -49
  2212. package/dist/discussion/create-discussion.test.js.map +0 -1
  2213. package/dist/discussion/index.d.ts +0 -3
  2214. package/dist/discussion/index.d.ts.map +0 -1
  2215. package/dist/discussion/index.js +0 -3
  2216. package/dist/discussion/index.js.map +0 -1
  2217. package/dist/entity/label/create-entity-label.d.ts +0 -61
  2218. package/dist/entity/label/create-entity-label.d.ts.map +0 -1
  2219. package/dist/entity/label/create-entity-label.js +0 -92
  2220. package/dist/entity/label/create-entity-label.js.map +0 -1
  2221. package/dist/entity/label/create-entity-label.test.d.ts +0 -2
  2222. package/dist/entity/label/create-entity-label.test.d.ts.map +0 -1
  2223. package/dist/entity/label/create-entity-label.test.js +0 -261
  2224. package/dist/entity/label/create-entity-label.test.js.map +0 -1
  2225. package/dist/entity/label/schema.d.ts +0 -40
  2226. package/dist/entity/label/schema.d.ts.map +0 -1
  2227. package/dist/entity/label/schema.js +0 -42
  2228. package/dist/entity/label/schema.js.map +0 -1
  2229. package/dist/entity/schema.d.ts +0 -13
  2230. package/dist/entity/schema.d.ts.map +0 -1
  2231. package/dist/entity/schema.js +0 -5
  2232. package/dist/entity/schema.js.map +0 -1
  2233. package/dist/entity/thread/create-entity-thread.d.ts +0 -75
  2234. package/dist/entity/thread/create-entity-thread.d.ts.map +0 -1
  2235. package/dist/entity/thread/create-entity-thread.js +0 -109
  2236. package/dist/entity/thread/create-entity-thread.js.map +0 -1
  2237. package/dist/entity/thread/create-entity-thread.test.d.ts +0 -2
  2238. package/dist/entity/thread/create-entity-thread.test.d.ts.map +0 -1
  2239. package/dist/entity/thread/create-entity-thread.test.js +0 -240
  2240. package/dist/entity/thread/create-entity-thread.test.js.map +0 -1
  2241. package/dist/entity/thread/query-threads.test.d.ts +0 -2
  2242. package/dist/entity/thread/query-threads.test.d.ts.map +0 -1
  2243. package/dist/entity/thread/query-threads.test.js +0 -330
  2244. package/dist/entity/thread/query-threads.test.js.map +0 -1
  2245. package/dist/entity/thread/schema.d.ts +0 -40
  2246. package/dist/entity/thread/schema.d.ts.map +0 -1
  2247. package/dist/entity/thread/schema.js +0 -42
  2248. package/dist/entity/thread/schema.js.map +0 -1
  2249. package/dist/entity/thread/schema.test.d.ts.map +0 -1
  2250. package/dist/entity/thread/schema.test.js +0 -144
  2251. package/dist/entity/thread/schema.test.js.map +0 -1
  2252. package/dist/entity-views/entity-state-all.d.ts +0 -269
  2253. package/dist/entity-views/entity-state-all.d.ts.map +0 -1
  2254. package/dist/entity-views/entity-state-all.js +0 -254
  2255. package/dist/entity-views/entity-state-all.js.map +0 -1
  2256. package/dist/entity-views/entity-state-all.test.d.ts +0 -2
  2257. package/dist/entity-views/entity-state-all.test.d.ts.map +0 -1
  2258. package/dist/entity-views/entity-state-all.test.js +0 -544
  2259. package/dist/entity-views/entity-state-all.test.js.map +0 -1
  2260. package/dist/entity-views/entity-state-history.d.ts +0 -218
  2261. package/dist/entity-views/entity-state-history.d.ts.map +0 -1
  2262. package/dist/entity-views/entity-state-history.js +0 -61
  2263. package/dist/entity-views/entity-state-history.js.map +0 -1
  2264. package/dist/entity-views/entity-state-history.test.d.ts +0 -2
  2265. package/dist/entity-views/entity-state-history.test.d.ts.map +0 -1
  2266. package/dist/entity-views/entity-state-history.test.js +0 -329
  2267. package/dist/entity-views/entity-state-history.test.js.map +0 -1
  2268. package/dist/entity-views/entity-state.d.ts +0 -269
  2269. package/dist/entity-views/entity-state.d.ts.map +0 -1
  2270. package/dist/entity-views/entity-state.js +0 -251
  2271. package/dist/entity-views/entity-state.js.map +0 -1
  2272. package/dist/entity-views/entity-state.test.d.ts +0 -2
  2273. package/dist/entity-views/entity-state.test.d.ts.map +0 -1
  2274. package/dist/entity-views/entity-state.test.js +0 -616
  2275. package/dist/entity-views/entity-state.test.js.map +0 -1
  2276. package/dist/entity-views/entity-view-builder.d.ts +0 -92
  2277. package/dist/entity-views/entity-view-builder.d.ts.map +0 -1
  2278. package/dist/entity-views/entity-view-builder.js +0 -63
  2279. package/dist/entity-views/entity-view-builder.js.map +0 -1
  2280. package/dist/entity-views/entity-view-builder.test.d.ts +0 -2
  2281. package/dist/entity-views/entity-view-builder.test.d.ts.map +0 -1
  2282. package/dist/entity-views/entity-view-builder.test.js +0 -247
  2283. package/dist/entity-views/entity-view-builder.test.js.map +0 -1
  2284. package/dist/entity-views/index.d.ts.map +0 -1
  2285. package/dist/entity-views/index.js.map +0 -1
  2286. package/dist/entity-views/types.d.ts +0 -309
  2287. package/dist/entity-views/types.d.ts.map +0 -1
  2288. package/dist/entity-views/types.js.map +0 -1
  2289. package/dist/entity-views/types.test.d.ts.map +0 -1
  2290. package/dist/entity-views/types.test.js +0 -62
  2291. package/dist/entity-views/types.test.js.map +0 -1
  2292. package/dist/file/database-schema.d.ts +0 -25
  2293. package/dist/file/database-schema.d.ts.map +0 -1
  2294. package/dist/file/database-schema.js +0 -26
  2295. package/dist/file/database-schema.js.map +0 -1
  2296. package/dist/file/database-schema.test.d.ts +0 -2
  2297. package/dist/file/database-schema.test.d.ts.map +0 -1
  2298. package/dist/file/database-schema.test.js +0 -60
  2299. package/dist/file/database-schema.test.js.map +0 -1
  2300. package/dist/file/file-handlers.d.ts +0 -15
  2301. package/dist/file/file-handlers.d.ts.map +0 -1
  2302. package/dist/file/file-handlers.js +0 -354
  2303. package/dist/file/file-handlers.js.map +0 -1
  2304. package/dist/file/file-handlers.test.d.ts.map +0 -1
  2305. package/dist/file/file-handlers.test.js +0 -151
  2306. package/dist/file/file-handlers.test.js.map +0 -1
  2307. package/dist/file/index.d.ts +0 -2
  2308. package/dist/file/index.d.ts.map +0 -1
  2309. package/dist/file/index.js +0 -2
  2310. package/dist/file/index.js.map +0 -1
  2311. package/dist/file/materialize-file-data-at-changeset.d.ts +0 -9
  2312. package/dist/file/materialize-file-data-at-changeset.d.ts.map +0 -1
  2313. package/dist/file/materialize-file-data-at-changeset.js +0 -119
  2314. package/dist/file/materialize-file-data-at-changeset.js.map +0 -1
  2315. package/dist/file/materialize-file-data-at-commit.d.ts +0 -9
  2316. package/dist/file/materialize-file-data-at-commit.d.ts.map +0 -1
  2317. package/dist/file/materialize-file-data-at-commit.js +0 -119
  2318. package/dist/file/materialize-file-data-at-commit.js.map +0 -1
  2319. package/dist/file/materialize-file-data.d.ts +0 -8
  2320. package/dist/file/materialize-file-data.d.ts.map +0 -1
  2321. package/dist/file/materialize-file-data.js +0 -91
  2322. package/dist/file/materialize-file-data.js.map +0 -1
  2323. package/dist/file/materialize-file-data.test.d.ts.map +0 -1
  2324. package/dist/file/materialize-file-data.test.js +0 -90
  2325. package/dist/file/materialize-file-data.test.js.map +0 -1
  2326. package/dist/file/schema.d.ts +0 -109
  2327. package/dist/file/schema.d.ts.map +0 -1
  2328. package/dist/file/schema.js +0 -333
  2329. package/dist/file/schema.js.map +0 -1
  2330. package/dist/file/schema.test.d.ts.map +0 -1
  2331. package/dist/file/schema.test.js +0 -1313
  2332. package/dist/file/schema.test.js.map +0 -1
  2333. package/dist/file/store-detected-change-schema.d.ts +0 -8
  2334. package/dist/file/store-detected-change-schema.d.ts.map +0 -1
  2335. package/dist/file/store-detected-change-schema.js +0 -41
  2336. package/dist/file/store-detected-change-schema.js.map +0 -1
  2337. package/dist/file/store-detected-change-schema.test.d.ts.map +0 -1
  2338. package/dist/file/store-detected-change-schema.test.js +0 -211
  2339. package/dist/file/store-detected-change-schema.test.js.map +0 -1
  2340. package/dist/file/unknown-file-fallback-plugin.d.ts +0 -22
  2341. package/dist/file/unknown-file-fallback-plugin.d.ts.map +0 -1
  2342. package/dist/file/unknown-file-fallback-plugin.js +0 -73
  2343. package/dist/file/unknown-file-fallback-plugin.js.map +0 -1
  2344. package/dist/file/unknown-file-fallback-plugin.test.d.ts.map +0 -1
  2345. package/dist/file/unknown-file-fallback-plugin.test.js +0 -305
  2346. package/dist/file/unknown-file-fallback-plugin.test.js.map +0 -1
  2347. package/dist/file/validate-file-path.d.ts +0 -16
  2348. package/dist/file/validate-file-path.d.ts.map +0 -1
  2349. package/dist/file/validate-file-path.js +0 -44
  2350. package/dist/file/validate-file-path.js.map +0 -1
  2351. package/dist/file/validate-file-path.test.d.ts +0 -2
  2352. package/dist/file/validate-file-path.test.d.ts.map +0 -1
  2353. package/dist/file/validate-file-path.test.js +0 -36
  2354. package/dist/file/validate-file-path.test.js.map +0 -1
  2355. package/dist/file-queue/database-schema.d.ts +0 -17
  2356. package/dist/file-queue/database-schema.d.ts.map +0 -1
  2357. package/dist/file-queue/database-schema.js +0 -53
  2358. package/dist/file-queue/database-schema.js.map +0 -1
  2359. package/dist/file-queue/file-handlers.d.ts +0 -24
  2360. package/dist/file-queue/file-handlers.d.ts.map +0 -1
  2361. package/dist/file-queue/file-handlers.js +0 -235
  2362. package/dist/file-queue/file-handlers.js.map +0 -1
  2363. package/dist/file-queue/file-queue-process.d.ts +0 -5
  2364. package/dist/file-queue/file-queue-process.d.ts.map +0 -1
  2365. package/dist/file-queue/file-queue-process.js +0 -100
  2366. package/dist/file-queue/file-queue-process.js.map +0 -1
  2367. package/dist/file-queue/file-queue-process.test.d.ts +0 -2
  2368. package/dist/file-queue/file-queue-process.test.d.ts.map +0 -1
  2369. package/dist/file-queue/file-queue-process.test.js +0 -462
  2370. package/dist/file-queue/file-queue-process.test.js.map +0 -1
  2371. package/dist/file-queue/file-queue-settled.d.ts +0 -13
  2372. package/dist/file-queue/file-queue-settled.d.ts.map +0 -1
  2373. package/dist/file-queue/file-queue-settled.js +0 -25
  2374. package/dist/file-queue/file-queue-settled.js.map +0 -1
  2375. package/dist/file-queue/file-queue-settled.test.d.ts +0 -2
  2376. package/dist/file-queue/file-queue-settled.test.d.ts.map +0 -1
  2377. package/dist/file-queue/file-queue-settled.test.js +0 -47
  2378. package/dist/file-queue/file-queue-settled.test.js.map +0 -1
  2379. package/dist/file-queue/index.d.ts +0 -2
  2380. package/dist/file-queue/index.d.ts.map +0 -1
  2381. package/dist/file-queue/index.js +0 -2
  2382. package/dist/file-queue/index.js.map +0 -1
  2383. package/dist/file-queue/with-skip-file-queue.d.ts +0 -21
  2384. package/dist/file-queue/with-skip-file-queue.d.ts.map +0 -1
  2385. package/dist/file-queue/with-skip-file-queue.js +0 -72
  2386. package/dist/file-queue/with-skip-file-queue.js.map +0 -1
  2387. package/dist/file-queue/with-skip-file-queue.test.d.ts +0 -2
  2388. package/dist/file-queue/with-skip-file-queue.test.d.ts.map +0 -1
  2389. package/dist/file-queue/with-skip-file-queue.test.js +0 -154
  2390. package/dist/file-queue/with-skip-file-queue.test.js.map +0 -1
  2391. package/dist/key-value/database-schema.d.ts +0 -43
  2392. package/dist/key-value/database-schema.d.ts.map +0 -1
  2393. package/dist/key-value/database-schema.js +0 -21
  2394. package/dist/key-value/database-schema.js.map +0 -1
  2395. package/dist/key-value/database-schema.test.d.ts +0 -2
  2396. package/dist/key-value/database-schema.test.d.ts.map +0 -1
  2397. package/dist/key-value/database-schema.test.js +0 -123
  2398. package/dist/key-value/database-schema.test.js.map +0 -1
  2399. package/dist/key-value/schema.d.ts +0 -81
  2400. package/dist/key-value/schema.d.ts.map +0 -1
  2401. package/dist/key-value/schema.js +0 -31
  2402. package/dist/key-value/schema.js.map +0 -1
  2403. package/dist/key-value-v2/schema.d.ts +0 -27
  2404. package/dist/key-value-v2/schema.d.ts.map +0 -1
  2405. package/dist/key-value-v2/schema.js +0 -73
  2406. package/dist/key-value-v2/schema.js.map +0 -1
  2407. package/dist/key-value-v2/schema.test.d.ts.map +0 -1
  2408. package/dist/key-value-v2/schema.test.js +0 -144
  2409. package/dist/key-value-v2/schema.test.js.map +0 -1
  2410. package/dist/label/schema.d.ts +0 -22
  2411. package/dist/label/schema.d.ts.map +0 -1
  2412. package/dist/label/schema.js +0 -26
  2413. package/dist/label/schema.js.map +0 -1
  2414. package/dist/lix/close-lix.d.ts +0 -8
  2415. package/dist/lix/close-lix.d.ts.map +0 -1
  2416. package/dist/lix/close-lix.js +0 -7
  2417. package/dist/lix/close-lix.js.map +0 -1
  2418. package/dist/lix/merge.d.ts +0 -9
  2419. package/dist/lix/merge.d.ts.map +0 -1
  2420. package/dist/lix/merge.get-leaf-changes-only-in-source.d.ts +0 -15
  2421. package/dist/lix/merge.get-leaf-changes-only-in-source.d.ts.map +0 -1
  2422. package/dist/lix/merge.get-leaf-changes-only-in-source.js +0 -34
  2423. package/dist/lix/merge.get-leaf-changes-only-in-source.js.map +0 -1
  2424. package/dist/lix/merge.get-leaf-changes-only-in-source.test.d.ts +0 -2
  2425. package/dist/lix/merge.get-leaf-changes-only-in-source.test.d.ts.map +0 -1
  2426. package/dist/lix/merge.get-leaf-changes-only-in-source.test.js +0 -121
  2427. package/dist/lix/merge.get-leaf-changes-only-in-source.test.js.map +0 -1
  2428. package/dist/lix/merge.js +0 -195
  2429. package/dist/lix/merge.js.map +0 -1
  2430. package/dist/lix/merge.test.d.ts +0 -2
  2431. package/dist/lix/merge.test.d.ts.map +0 -1
  2432. package/dist/lix/merge.test.js +0 -692
  2433. package/dist/lix/merge.test.js.map +0 -1
  2434. package/dist/lix/open-lix-in-memory.d.ts +0 -12
  2435. package/dist/lix/open-lix-in-memory.d.ts.map +0 -1
  2436. package/dist/lix/open-lix-in-memory.js +0 -19
  2437. package/dist/lix/open-lix-in-memory.js.map +0 -1
  2438. package/dist/lix/open-lix-in-memory.test.d.ts +0 -2
  2439. package/dist/lix/open-lix-in-memory.test.d.ts.map +0 -1
  2440. package/dist/lix/open-lix-in-memory.test.js +0 -25
  2441. package/dist/lix/open-lix-in-memory.test.js.map +0 -1
  2442. package/dist/lix/storage/in-memory.d.ts +0 -35
  2443. package/dist/lix/storage/in-memory.d.ts.map +0 -1
  2444. package/dist/lix/storage/in-memory.js +0 -50
  2445. package/dist/lix/storage/in-memory.js.map +0 -1
  2446. package/dist/lix/storage/in-memory.test.d.ts.map +0 -1
  2447. package/dist/lix/storage/in-memory.test.js +0 -85
  2448. package/dist/lix/storage/in-memory.test.js.map +0 -1
  2449. package/dist/lix/storage/lix-storage-adapter.d.ts +0 -46
  2450. package/dist/lix/storage/lix-storage-adapter.d.ts.map +0 -1
  2451. package/dist/lix/storage/lix-storage-adapter.js +0 -2
  2452. package/dist/lix/storage/lix-storage-adapter.js.map +0 -1
  2453. package/dist/lix/storage/opfs.d.ts +0 -95
  2454. package/dist/lix/storage/opfs.d.ts.map +0 -1
  2455. package/dist/lix/storage/opfs.js +0 -263
  2456. package/dist/lix/storage/opfs.js.map +0 -1
  2457. package/dist/lix/storage/opfs.test.d.ts +0 -2
  2458. package/dist/lix/storage/opfs.test.d.ts.map +0 -1
  2459. package/dist/lix/storage/opfs.test.js +0 -350
  2460. package/dist/lix/storage/opfs.test.js.map +0 -1
  2461. package/dist/lix/to-blob.d.ts +0 -11
  2462. package/dist/lix/to-blob.d.ts.map +0 -1
  2463. package/dist/lix/to-blob.js +0 -11
  2464. package/dist/lix/to-blob.js.map +0 -1
  2465. package/dist/log/database-schema.d.ts +0 -33
  2466. package/dist/log/database-schema.d.ts.map +0 -1
  2467. package/dist/log/database-schema.js +0 -14
  2468. package/dist/log/database-schema.js.map +0 -1
  2469. package/dist/log/database-schema.test.d.ts +0 -2
  2470. package/dist/log/database-schema.test.d.ts.map +0 -1
  2471. package/dist/log/database-schema.test.js +0 -22
  2472. package/dist/log/database-schema.test.js.map +0 -1
  2473. package/dist/log/schema.d.ts +0 -32
  2474. package/dist/log/schema.d.ts.map +0 -1
  2475. package/dist/log/schema.js +0 -42
  2476. package/dist/log/schema.js.map +0 -1
  2477. package/dist/own-change-control/apply-own-change.d.ts +0 -14
  2478. package/dist/own-change-control/apply-own-change.d.ts.map +0 -1
  2479. package/dist/own-change-control/apply-own-change.js +0 -83
  2480. package/dist/own-change-control/apply-own-change.js.map +0 -1
  2481. package/dist/own-change-control/apply-own-change.test.d.ts +0 -2
  2482. package/dist/own-change-control/apply-own-change.test.d.ts.map +0 -1
  2483. package/dist/own-change-control/apply-own-change.test.js +0 -335
  2484. package/dist/own-change-control/apply-own-change.test.js.map +0 -1
  2485. package/dist/own-change-control/change-controlled-tables.d.ts +0 -58
  2486. package/dist/own-change-control/change-controlled-tables.d.ts.map +0 -1
  2487. package/dist/own-change-control/change-controlled-tables.js +0 -76
  2488. package/dist/own-change-control/change-controlled-tables.js.map +0 -1
  2489. package/dist/own-change-control/change-controlled-tables.test.d.ts +0 -2
  2490. package/dist/own-change-control/change-controlled-tables.test.d.ts.map +0 -1
  2491. package/dist/own-change-control/change-controlled-tables.test.js +0 -78
  2492. package/dist/own-change-control/change-controlled-tables.test.js.map +0 -1
  2493. package/dist/own-change-control/database-triggers.d.ts +0 -6
  2494. package/dist/own-change-control/database-triggers.d.ts.map +0 -1
  2495. package/dist/own-change-control/database-triggers.js +0 -277
  2496. package/dist/own-change-control/database-triggers.js.map +0 -1
  2497. package/dist/own-change-control/database-triggers.test.d.ts +0 -2
  2498. package/dist/own-change-control/database-triggers.test.d.ts.map +0 -1
  2499. package/dist/own-change-control/database-triggers.test.js +0 -345
  2500. package/dist/own-change-control/database-triggers.test.js.map +0 -1
  2501. package/dist/own-change-control/index.d.ts +0 -2
  2502. package/dist/own-change-control/index.d.ts.map +0 -1
  2503. package/dist/own-change-control/index.js +0 -2
  2504. package/dist/own-change-control/index.js.map +0 -1
  2505. package/dist/own-change-control/with-skip-own-change-control.d.ts +0 -3
  2506. package/dist/own-change-control/with-skip-own-change-control.d.ts.map +0 -1
  2507. package/dist/own-change-control/with-skip-own-change-control.js +0 -50
  2508. package/dist/own-change-control/with-skip-own-change-control.js.map +0 -1
  2509. package/dist/own-change-control/with-skip-own-change-control.test.d.ts +0 -2
  2510. package/dist/own-change-control/with-skip-own-change-control.test.d.ts.map +0 -1
  2511. package/dist/own-change-control/with-skip-own-change-control.test.js +0 -86
  2512. package/dist/own-change-control/with-skip-own-change-control.test.js.map +0 -1
  2513. package/dist/plugin/load-plugin.d.ts +0 -5
  2514. package/dist/plugin/load-plugin.d.ts.map +0 -1
  2515. package/dist/plugin/load-plugin.js +0 -27
  2516. package/dist/plugin/load-plugin.js.map +0 -1
  2517. package/dist/plugin/with-transaction.d.ts +0 -11
  2518. package/dist/plugin/with-transaction.d.ts.map +0 -1
  2519. package/dist/plugin/with-transaction.js +0 -15
  2520. package/dist/plugin/with-transaction.js.map +0 -1
  2521. package/dist/prototype/database-schema.d.ts +0 -43
  2522. package/dist/prototype/database-schema.d.ts.map +0 -1
  2523. package/dist/prototype/database-schema.js +0 -72
  2524. package/dist/prototype/database-schema.js.map +0 -1
  2525. package/dist/prototype/file-handlers.d.ts +0 -24
  2526. package/dist/prototype/file-handlers.d.ts.map +0 -1
  2527. package/dist/prototype/file-handlers.js +0 -129
  2528. package/dist/prototype/file-handlers.js.map +0 -1
  2529. package/dist/prototype/file-schema.d.ts +0 -47
  2530. package/dist/prototype/file-schema.d.ts.map +0 -1
  2531. package/dist/prototype/file-schema.js +0 -135
  2532. package/dist/prototype/file-schema.js.map +0 -1
  2533. package/dist/prototype/file-schema.test.d.ts +0 -2
  2534. package/dist/prototype/file-schema.test.d.ts.map +0 -1
  2535. package/dist/prototype/file-schema.test.js +0 -146
  2536. package/dist/prototype/file-schema.test.js.map +0 -1
  2537. package/dist/prototype/get-and-materialize-row.d.ts +0 -5
  2538. package/dist/prototype/get-and-materialize-row.d.ts.map +0 -1
  2539. package/dist/prototype/get-and-materialize-row.js +0 -99
  2540. package/dist/prototype/get-and-materialize-row.js.map +0 -1
  2541. package/dist/prototype/json-plugin.d.ts +0 -49
  2542. package/dist/prototype/json-plugin.d.ts.map +0 -1
  2543. package/dist/prototype/json-plugin.js +0 -104
  2544. package/dist/prototype/json-plugin.js.map +0 -1
  2545. package/dist/prototype/validate-file-path.d.ts +0 -16
  2546. package/dist/prototype/validate-file-path.d.ts.map +0 -1
  2547. package/dist/prototype/validate-file-path.js +0 -44
  2548. package/dist/prototype/validate-file-path.js.map +0 -1
  2549. package/dist/prototype/validate-file-path.test.d.ts +0 -2
  2550. package/dist/prototype/validate-file-path.test.d.ts.map +0 -1
  2551. package/dist/prototype/validate-file-path.test.js +0 -36
  2552. package/dist/prototype/validate-file-path.test.js.map +0 -1
  2553. package/dist/prototype/version-schema.d.ts +0 -34
  2554. package/dist/prototype/version-schema.d.ts.map +0 -1
  2555. package/dist/prototype/version-schema.js +0 -86
  2556. package/dist/prototype/version-schema.js.map +0 -1
  2557. package/dist/prototype/version-schema.test.d.ts +0 -2
  2558. package/dist/prototype/version-schema.test.d.ts.map +0 -1
  2559. package/dist/prototype/version-schema.test.js +0 -114
  2560. package/dist/prototype/version-schema.test.js.map +0 -1
  2561. package/dist/query-filter/change-conflict-in-version.d.ts +0 -17
  2562. package/dist/query-filter/change-conflict-in-version.d.ts.map +0 -1
  2563. package/dist/query-filter/change-conflict-in-version.js +0 -20
  2564. package/dist/query-filter/change-conflict-in-version.js.map +0 -1
  2565. package/dist/query-filter/change-conflict-in-version.test.d.ts +0 -2
  2566. package/dist/query-filter/change-conflict-in-version.test.d.ts.map +0 -1
  2567. package/dist/query-filter/change-conflict-in-version.test.js +0 -55
  2568. package/dist/query-filter/change-conflict-in-version.test.js.map +0 -1
  2569. package/dist/query-filter/change-has-label.d.ts +0 -31
  2570. package/dist/query-filter/change-has-label.d.ts.map +0 -1
  2571. package/dist/query-filter/change-has-label.js +0 -33
  2572. package/dist/query-filter/change-has-label.js.map +0 -1
  2573. package/dist/query-filter/change-has-label.test.d.ts +0 -2
  2574. package/dist/query-filter/change-has-label.test.d.ts.map +0 -1
  2575. package/dist/query-filter/change-has-label.test.js +0 -71
  2576. package/dist/query-filter/change-has-label.test.js.map +0 -1
  2577. package/dist/query-filter/change-in-version.d.ts +0 -18
  2578. package/dist/query-filter/change-in-version.d.ts.map +0 -1
  2579. package/dist/query-filter/change-in-version.js +0 -31
  2580. package/dist/query-filter/change-in-version.js.map +0 -1
  2581. package/dist/query-filter/change-in-version.test.d.ts +0 -2
  2582. package/dist/query-filter/change-in-version.test.d.ts.map +0 -1
  2583. package/dist/query-filter/change-in-version.test.js +0 -75
  2584. package/dist/query-filter/change-in-version.test.js.map +0 -1
  2585. package/dist/query-filter/change-is-leaf-in-version.d.ts +0 -17
  2586. package/dist/query-filter/change-is-leaf-in-version.d.ts.map +0 -1
  2587. package/dist/query-filter/change-is-leaf-in-version.js +0 -36
  2588. package/dist/query-filter/change-is-leaf-in-version.js.map +0 -1
  2589. package/dist/query-filter/change-is-leaf-in-version.test.d.ts +0 -2
  2590. package/dist/query-filter/change-is-leaf-in-version.test.d.ts.map +0 -1
  2591. package/dist/query-filter/change-is-leaf-in-version.test.js +0 -70
  2592. package/dist/query-filter/change-is-leaf-in-version.test.js.map +0 -1
  2593. package/dist/query-filter/change-is-leaf-of.bench.d.ts +0 -2
  2594. package/dist/query-filter/change-is-leaf-of.bench.d.ts.map +0 -1
  2595. package/dist/query-filter/change-is-leaf-of.bench.js +0 -132
  2596. package/dist/query-filter/change-is-leaf-of.bench.js.map +0 -1
  2597. package/dist/query-filter/change-is-leaf-of.d.ts +0 -31
  2598. package/dist/query-filter/change-is-leaf-of.d.ts.map +0 -1
  2599. package/dist/query-filter/change-is-leaf-of.js +0 -46
  2600. package/dist/query-filter/change-is-leaf-of.js.map +0 -1
  2601. package/dist/query-filter/change-is-leaf-of.test.d.ts +0 -2
  2602. package/dist/query-filter/change-is-leaf-of.test.d.ts.map +0 -1
  2603. package/dist/query-filter/change-is-leaf-of.test.js +0 -71
  2604. package/dist/query-filter/change-is-leaf-of.test.js.map +0 -1
  2605. package/dist/query-filter/change-is-leaf-v2.d.ts +0 -69
  2606. package/dist/query-filter/change-is-leaf-v2.d.ts.map +0 -1
  2607. package/dist/query-filter/change-is-leaf-v2.js +0 -116
  2608. package/dist/query-filter/change-is-leaf-v2.js.map +0 -1
  2609. package/dist/query-filter/change-is-leaf-v2.test.d.ts +0 -2
  2610. package/dist/query-filter/change-is-leaf-v2.test.d.ts.map +0 -1
  2611. package/dist/query-filter/change-is-leaf-v2.test.js +0 -237
  2612. package/dist/query-filter/change-is-leaf-v2.test.js.map +0 -1
  2613. package/dist/query-filter/change-is-leaf.d.ts +0 -20
  2614. package/dist/query-filter/change-is-leaf.d.ts.map +0 -1
  2615. package/dist/query-filter/change-is-leaf.js +0 -20
  2616. package/dist/query-filter/change-is-leaf.js.map +0 -1
  2617. package/dist/query-filter/change-is-leaf.test.d.ts +0 -2
  2618. package/dist/query-filter/change-is-leaf.test.d.ts.map +0 -1
  2619. package/dist/query-filter/change-is-leaf.test.js +0 -122
  2620. package/dist/query-filter/change-is-leaf.test.js.map +0 -1
  2621. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts +0 -18
  2622. package/dist/query-filter/change-is-lowest-common-ancestor-of.d.ts.map +0 -1
  2623. package/dist/query-filter/change-is-lowest-common-ancestor-of.js +0 -59
  2624. package/dist/query-filter/change-is-lowest-common-ancestor-of.js.map +0 -1
  2625. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.d.ts +0 -2
  2626. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.d.ts.map +0 -1
  2627. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js +0 -157
  2628. package/dist/query-filter/change-is-lowest-common-ancestor-of.test.js.map +0 -1
  2629. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts +0 -30
  2630. package/dist/query-filter/change-set-element-in-ancestry-of.d.ts.map +0 -1
  2631. package/dist/query-filter/change-set-element-in-ancestry-of.js +0 -51
  2632. package/dist/query-filter/change-set-element-in-ancestry-of.js.map +0 -1
  2633. package/dist/query-filter/change-set-element-in-ancestry-of.test.d.ts +0 -2
  2634. package/dist/query-filter/change-set-element-in-ancestry-of.test.d.ts.map +0 -1
  2635. package/dist/query-filter/change-set-element-in-ancestry-of.test.js +0 -396
  2636. package/dist/query-filter/change-set-element-in-ancestry-of.test.js.map +0 -1
  2637. package/dist/query-filter/change-set-element-in-symmetric-difference-of.d.ts +0 -21
  2638. package/dist/query-filter/change-set-element-in-symmetric-difference-of.d.ts.map +0 -1
  2639. package/dist/query-filter/change-set-element-in-symmetric-difference-of.js +0 -37
  2640. package/dist/query-filter/change-set-element-in-symmetric-difference-of.js.map +0 -1
  2641. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.d.ts +0 -2
  2642. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.d.ts.map +0 -1
  2643. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.js +0 -276
  2644. package/dist/query-filter/change-set-element-in-symmetric-difference-of.test.js.map +0 -1
  2645. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts +0 -20
  2646. package/dist/query-filter/change-set-element-in-symmetric-difference.d.ts.map +0 -1
  2647. package/dist/query-filter/change-set-element-in-symmetric-difference.js +0 -36
  2648. package/dist/query-filter/change-set-element-in-symmetric-difference.js.map +0 -1
  2649. package/dist/query-filter/change-set-element-in-symmetric-difference.test.d.ts +0 -2
  2650. package/dist/query-filter/change-set-element-in-symmetric-difference.test.d.ts.map +0 -1
  2651. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js +0 -369
  2652. package/dist/query-filter/change-set-element-in-symmetric-difference.test.js.map +0 -1
  2653. package/dist/query-filter/change-set-element-is-leaf-of.d.ts +0 -29
  2654. package/dist/query-filter/change-set-element-is-leaf-of.d.ts.map +0 -1
  2655. package/dist/query-filter/change-set-element-is-leaf-of.js +0 -113
  2656. package/dist/query-filter/change-set-element-is-leaf-of.js.map +0 -1
  2657. package/dist/query-filter/change-set-element-is-leaf-of.test.d.ts +0 -2
  2658. package/dist/query-filter/change-set-element-is-leaf-of.test.d.ts.map +0 -1
  2659. package/dist/query-filter/change-set-element-is-leaf-of.test.js +0 -574
  2660. package/dist/query-filter/change-set-element-is-leaf-of.test.js.map +0 -1
  2661. package/dist/query-filter/change-set-has-label.d.ts +0 -41
  2662. package/dist/query-filter/change-set-has-label.d.ts.map +0 -1
  2663. package/dist/query-filter/change-set-has-label.js +0 -42
  2664. package/dist/query-filter/change-set-has-label.js.map +0 -1
  2665. package/dist/query-filter/change-set-has-label.test.d.ts +0 -2
  2666. package/dist/query-filter/change-set-has-label.test.d.ts.map +0 -1
  2667. package/dist/query-filter/change-set-has-label.test.js +0 -36
  2668. package/dist/query-filter/change-set-has-label.test.js.map +0 -1
  2669. package/dist/query-filter/change-set-is-ancestor-of.d.ts +0 -51
  2670. package/dist/query-filter/change-set-is-ancestor-of.d.ts.map +0 -1
  2671. package/dist/query-filter/change-set-is-ancestor-of.js +0 -63
  2672. package/dist/query-filter/change-set-is-ancestor-of.js.map +0 -1
  2673. package/dist/query-filter/change-set-is-ancestor-of.test.d.ts +0 -2
  2674. package/dist/query-filter/change-set-is-ancestor-of.test.d.ts.map +0 -1
  2675. package/dist/query-filter/change-set-is-ancestor-of.test.js +0 -153
  2676. package/dist/query-filter/change-set-is-ancestor-of.test.js.map +0 -1
  2677. package/dist/query-filter/change-set-is-descendant-of.d.ts +0 -44
  2678. package/dist/query-filter/change-set-is-descendant-of.d.ts.map +0 -1
  2679. package/dist/query-filter/change-set-is-descendant-of.js +0 -56
  2680. package/dist/query-filter/change-set-is-descendant-of.js.map +0 -1
  2681. package/dist/query-filter/change-set-is-descendant-of.test.d.ts +0 -2
  2682. package/dist/query-filter/change-set-is-descendant-of.test.d.ts.map +0 -1
  2683. package/dist/query-filter/change-set-is-descendant-of.test.js +0 -137
  2684. package/dist/query-filter/change-set-is-descendant-of.test.js.map +0 -1
  2685. package/dist/query-filter/version-change-in-difference.d.ts +0 -20
  2686. package/dist/query-filter/version-change-in-difference.d.ts.map +0 -1
  2687. package/dist/query-filter/version-change-in-difference.js +0 -27
  2688. package/dist/query-filter/version-change-in-difference.js.map +0 -1
  2689. package/dist/query-filter/version-change-in-difference.test.d.ts +0 -2
  2690. package/dist/query-filter/version-change-in-difference.test.d.ts.map +0 -1
  2691. package/dist/query-filter/version-change-in-difference.test.js +0 -85
  2692. package/dist/query-filter/version-change-in-difference.test.js.map +0 -1
  2693. package/dist/query-filter/version-change-in-symmetric-difference.d.ts +0 -21
  2694. package/dist/query-filter/version-change-in-symmetric-difference.d.ts.map +0 -1
  2695. package/dist/query-filter/version-change-in-symmetric-difference.js +0 -38
  2696. package/dist/query-filter/version-change-in-symmetric-difference.js.map +0 -1
  2697. package/dist/query-filter/version-change-in-symmetric-difference.test.d.ts +0 -2
  2698. package/dist/query-filter/version-change-in-symmetric-difference.test.d.ts.map +0 -1
  2699. package/dist/query-filter/version-change-in-symmetric-difference.test.js +0 -84
  2700. package/dist/query-filter/version-change-in-symmetric-difference.test.js.map +0 -1
  2701. package/dist/snapshot/create-snapshot.d.ts +0 -7
  2702. package/dist/snapshot/create-snapshot.d.ts.map +0 -1
  2703. package/dist/snapshot/create-snapshot.js +0 -28
  2704. package/dist/snapshot/create-snapshot.js.map +0 -1
  2705. package/dist/snapshot/create-snapshot.test.d.ts +0 -2
  2706. package/dist/snapshot/create-snapshot.test.d.ts.map +0 -1
  2707. package/dist/snapshot/create-snapshot.test.js +0 -83
  2708. package/dist/snapshot/create-snapshot.test.js.map +0 -1
  2709. package/dist/snapshot/database-schema.d.ts +0 -19
  2710. package/dist/snapshot/database-schema.d.ts.map +0 -1
  2711. package/dist/snapshot/database-schema.js +0 -33
  2712. package/dist/snapshot/database-schema.js.map +0 -1
  2713. package/dist/snapshot/database-schema.test.d.ts +0 -2
  2714. package/dist/snapshot/database-schema.test.d.ts.map +0 -1
  2715. package/dist/snapshot/database-schema.test.js +0 -58
  2716. package/dist/snapshot/database-schema.test.js.map +0 -1
  2717. package/dist/snapshot/index.d.ts +0 -4
  2718. package/dist/snapshot/index.d.ts.map +0 -1
  2719. package/dist/snapshot/index.js +0 -4
  2720. package/dist/snapshot/index.js.map +0 -1
  2721. package/dist/snapshot/json-sha-256.d.ts +0 -9
  2722. package/dist/snapshot/json-sha-256.d.ts.map +0 -1
  2723. package/dist/snapshot/json-sha-256.js +0 -27
  2724. package/dist/snapshot/json-sha-256.js.map +0 -1
  2725. package/dist/snapshot/json-sha-256.test.d.ts +0 -2
  2726. package/dist/snapshot/json-sha-256.test.d.ts.map +0 -1
  2727. package/dist/snapshot/json-sha-256.test.js +0 -48
  2728. package/dist/snapshot/json-sha-256.test.js.map +0 -1
  2729. package/dist/snapshot/mock-json-snapshot.d.ts +0 -8
  2730. package/dist/snapshot/mock-json-snapshot.d.ts.map +0 -1
  2731. package/dist/snapshot/mock-json-snapshot.js +0 -13
  2732. package/dist/snapshot/mock-json-snapshot.js.map +0 -1
  2733. package/dist/state/commit.d.ts +0 -18
  2734. package/dist/state/commit.d.ts.map +0 -1
  2735. package/dist/state/commit.js +0 -457
  2736. package/dist/state/commit.js.map +0 -1
  2737. package/dist/state/commit.test.d.ts.map +0 -1
  2738. package/dist/state/commit.test.js +0 -1173
  2739. package/dist/state/commit.test.js.map +0 -1
  2740. package/dist/state/create-changeset-for-transaction.d.ts +0 -15
  2741. package/dist/state/create-changeset-for-transaction.d.ts.map +0 -1
  2742. package/dist/state/create-changeset-for-transaction.js +0 -237
  2743. package/dist/state/create-changeset-for-transaction.js.map +0 -1
  2744. package/dist/state/get-version-record-by-id-or-throw.d.ts +0 -6
  2745. package/dist/state/get-version-record-by-id-or-throw.d.ts.map +0 -1
  2746. package/dist/state/get-version-record-by-id-or-throw.js +0 -36
  2747. package/dist/state/get-version-record-by-id-or-throw.js.map +0 -1
  2748. package/dist/state/handle-state-mutation.d.ts +0 -6
  2749. package/dist/state/handle-state-mutation.d.ts.map +0 -1
  2750. package/dist/state/handle-state-mutation.js +0 -157
  2751. package/dist/state/handle-state-mutation.js.map +0 -1
  2752. package/dist/state/handle-state-mutation.test.d.ts +0 -2
  2753. package/dist/state/handle-state-mutation.test.d.ts.map +0 -1
  2754. package/dist/state/handle-state-mutation.test.js +0 -686
  2755. package/dist/state/handle-state-mutation.test.js.map +0 -1
  2756. package/dist/state/insert-transaction-state.d.ts +0 -71
  2757. package/dist/state/insert-transaction-state.d.ts.map +0 -1
  2758. package/dist/state/insert-transaction-state.js +0 -272
  2759. package/dist/state/insert-transaction-state.js.map +0 -1
  2760. package/dist/state/insert-transaction-state.test.d.ts.map +0 -1
  2761. package/dist/state/insert-transaction-state.test.js +0 -789
  2762. package/dist/state/insert-transaction-state.test.js.map +0 -1
  2763. package/dist/state/primary-key.d.ts +0 -39
  2764. package/dist/state/primary-key.d.ts.map +0 -1
  2765. package/dist/state/primary-key.js +0 -62
  2766. package/dist/state/primary-key.js.map +0 -1
  2767. package/dist/state/primary-key.test.d.ts.map +0 -1
  2768. package/dist/state/primary-key.test.js +0 -114
  2769. package/dist/state/primary-key.test.js.map +0 -1
  2770. package/dist/state/resolved-state-view.d.ts +0 -33
  2771. package/dist/state/resolved-state-view.d.ts.map +0 -1
  2772. package/dist/state/resolved-state-view.js +0 -182
  2773. package/dist/state/resolved-state-view.js.map +0 -1
  2774. package/dist/state/resolved-state-view.test.d.ts +0 -2
  2775. package/dist/state/resolved-state-view.test.d.ts.map +0 -1
  2776. package/dist/state/resolved-state-view.test.js +0 -433
  2777. package/dist/state/resolved-state-view.test.js.map +0 -1
  2778. package/dist/state/schema.test.d.ts.map +0 -1
  2779. package/dist/state/schema.test.js +0 -2701
  2780. package/dist/state/schema.test.js.map +0 -1
  2781. package/dist/state/validate-snapshot-content.d.ts +0 -9
  2782. package/dist/state/validate-snapshot-content.d.ts.map +0 -1
  2783. package/dist/state/validate-snapshot-content.js +0 -42
  2784. package/dist/state/validate-snapshot-content.js.map +0 -1
  2785. package/dist/state/validate-snapshot-content.test.d.ts +0 -2
  2786. package/dist/state/validate-snapshot-content.test.d.ts.map +0 -1
  2787. package/dist/state/validate-snapshot-content.test.js +0 -67
  2788. package/dist/state/validate-snapshot-content.test.js.map +0 -1
  2789. package/dist/state/validate-state-mutation.d.ts +0 -13
  2790. package/dist/state/validate-state-mutation.d.ts.map +0 -1
  2791. package/dist/state/validate-state-mutation.js +0 -645
  2792. package/dist/state/validate-state-mutation.js.map +0 -1
  2793. package/dist/state/validate-state-mutation.test.d.ts.map +0 -1
  2794. package/dist/state/validate-state-mutation.test.js +0 -2859
  2795. package/dist/state/validate-state-mutation.test.js.map +0 -1
  2796. package/dist/stored-schema/schema.d.ts +0 -25
  2797. package/dist/stored-schema/schema.d.ts.map +0 -1
  2798. package/dist/stored-schema/schema.js +0 -48
  2799. package/dist/stored-schema/schema.js.map +0 -1
  2800. package/dist/thread/comment-utils.d.ts +0 -2
  2801. package/dist/thread/comment-utils.d.ts.map +0 -1
  2802. package/dist/thread/comment-utils.js +0 -2
  2803. package/dist/thread/comment-utils.js.map +0 -1
  2804. package/dist/thread/comment.d.ts +0 -24
  2805. package/dist/thread/comment.d.ts.map +0 -1
  2806. package/dist/thread/comment.js +0 -43
  2807. package/dist/thread/comment.js.map +0 -1
  2808. package/dist/thread/create-thread-comment.d.ts +0 -18
  2809. package/dist/thread/create-thread-comment.d.ts.map +0 -1
  2810. package/dist/thread/create-thread-comment.js +0 -64
  2811. package/dist/thread/create-thread-comment.js.map +0 -1
  2812. package/dist/thread/create-thread-comment.test.d.ts +0 -2
  2813. package/dist/thread/create-thread-comment.test.d.ts.map +0 -1
  2814. package/dist/thread/create-thread-comment.test.js +0 -97
  2815. package/dist/thread/create-thread-comment.test.js.map +0 -1
  2816. package/dist/thread/create-thread.d.ts +0 -42
  2817. package/dist/thread/create-thread.d.ts.map +0 -1
  2818. package/dist/thread/create-thread.js +0 -79
  2819. package/dist/thread/create-thread.js.map +0 -1
  2820. package/dist/thread/create-thread.test.d.ts +0 -2
  2821. package/dist/thread/create-thread.test.d.ts.map +0 -1
  2822. package/dist/thread/create-thread.test.js +0 -175
  2823. package/dist/thread/create-thread.test.js.map +0 -1
  2824. package/dist/thread/database-schema.d.ts +0 -20
  2825. package/dist/thread/database-schema.d.ts.map +0 -1
  2826. package/dist/thread/database-schema.js +0 -57
  2827. package/dist/thread/database-schema.js.map +0 -1
  2828. package/dist/thread/database-schema.test.d.ts +0 -2
  2829. package/dist/thread/database-schema.test.d.ts.map +0 -1
  2830. package/dist/thread/database-schema.test.js +0 -59
  2831. package/dist/thread/database-schema.test.js.map +0 -1
  2832. package/dist/thread/index.d.ts +0 -5
  2833. package/dist/thread/index.d.ts.map +0 -1
  2834. package/dist/thread/index.js +0 -4
  2835. package/dist/thread/index.js.map +0 -1
  2836. package/dist/thread/schema.d.ts +0 -62
  2837. package/dist/thread/schema.d.ts.map +0 -1
  2838. package/dist/thread/schema.js +0 -72
  2839. package/dist/thread/schema.js.map +0 -1
  2840. package/dist/thread/schema.test.d.ts.map +0 -1
  2841. package/dist/thread/schema.test.js +0 -125
  2842. package/dist/thread/schema.test.js.map +0 -1
  2843. package/dist/version/database-schema.d.ts +0 -21
  2844. package/dist/version/database-schema.d.ts.map +0 -1
  2845. package/dist/version/database-schema.js +0 -169
  2846. package/dist/version/database-schema.js.map +0 -1
  2847. package/dist/version/database-schema.test.d.ts +0 -2
  2848. package/dist/version/database-schema.test.d.ts.map +0 -1
  2849. package/dist/version/database-schema.test.js +0 -625
  2850. package/dist/version/database-schema.test.js.map +0 -1
  2851. package/dist/version/update-changes-in-version.d.ts +0 -15
  2852. package/dist/version/update-changes-in-version.d.ts.map +0 -1
  2853. package/dist/version/update-changes-in-version.js +0 -38
  2854. package/dist/version/update-changes-in-version.js.map +0 -1
  2855. package/dist/version/update-changes-in-version.test.d.ts +0 -2
  2856. package/dist/version/update-changes-in-version.test.d.ts.map +0 -1
  2857. package/dist/version/update-changes-in-version.test.js +0 -323
  2858. package/dist/version/update-changes-in-version.test.js.map +0 -1
  2859. package/dist/version-v2/create-version.d.ts +0 -18
  2860. package/dist/version-v2/create-version.d.ts.map +0 -1
  2861. package/dist/version-v2/create-version.js +0 -35
  2862. package/dist/version-v2/create-version.js.map +0 -1
  2863. package/dist/version-v2/create-version.test.d.ts +0 -2
  2864. package/dist/version-v2/create-version.test.d.ts.map +0 -1
  2865. package/dist/version-v2/create-version.test.js +0 -88
  2866. package/dist/version-v2/create-version.test.js.map +0 -1
  2867. package/dist/version-v2/database-schema.d.ts +0 -21
  2868. package/dist/version-v2/database-schema.d.ts.map +0 -1
  2869. package/dist/version-v2/database-schema.js +0 -169
  2870. package/dist/version-v2/database-schema.js.map +0 -1
  2871. package/dist/version-v2/database-schema.test.d.ts +0 -2
  2872. package/dist/version-v2/database-schema.test.d.ts.map +0 -1
  2873. package/dist/version-v2/database-schema.test.js +0 -625
  2874. package/dist/version-v2/database-schema.test.js.map +0 -1
  2875. package/dist/version-v2/index.d.ts +0 -2
  2876. package/dist/version-v2/index.d.ts.map +0 -1
  2877. package/dist/version-v2/index.js +0 -2
  2878. package/dist/version-v2/index.js.map +0 -1
  2879. package/dist/version-v2/swich-version.d.ts +0 -27
  2880. package/dist/version-v2/swich-version.d.ts.map +0 -1
  2881. package/dist/version-v2/swich-version.js +0 -46
  2882. package/dist/version-v2/swich-version.js.map +0 -1
  2883. package/dist/version-v2/switch-version.d.ts +0 -27
  2884. package/dist/version-v2/switch-version.d.ts.map +0 -1
  2885. package/dist/version-v2/switch-version.js +0 -91
  2886. package/dist/version-v2/switch-version.js.map +0 -1
  2887. package/dist/version-v2/switch-version.test.d.ts +0 -2
  2888. package/dist/version-v2/switch-version.test.d.ts.map +0 -1
  2889. package/dist/version-v2/switch-version.test.js +0 -110
  2890. package/dist/version-v2/switch-version.test.js.map +0 -1
  2891. package/dist/version-v2/with-skip-update-working-change-set.d.ts +0 -3
  2892. package/dist/version-v2/with-skip-update-working-change-set.d.ts.map +0 -1
  2893. package/dist/version-v2/with-skip-update-working-change-set.js +0 -50
  2894. package/dist/version-v2/with-skip-update-working-change-set.js.map +0 -1
  2895. package/dist/version-v2/with-skip-update-working-change-set.test.d.ts +0 -2
  2896. package/dist/version-v2/with-skip-update-working-change-set.test.d.ts.map +0 -1
  2897. package/dist/version-v2/with-skip-update-working-change-set.test.js +0 -49
  2898. package/dist/version-v2/with-skip-update-working-change-set.test.js.map +0 -1
  2899. package/dist/zettel-ast/index.d.ts.map +0 -1
  2900. package/dist/zettel-ast/index.js.map +0 -1
  2901. package/src/account/schema.ts +0 -132
  2902. package/src/change-author/schema.ts +0 -54
  2903. package/src/change-proposal/database-schema.test.ts +0 -180
  2904. package/src/change-proposal/database-schema.ts +0 -32
  2905. package/src/change-set/schema.ts +0 -150
  2906. package/src/commit/apply-commit.test.ts +0 -426
  2907. package/src/commit/apply-commit.ts +0 -74
  2908. package/src/commit/create-checkpoint.test.ts +0 -605
  2909. package/src/commit/create-checkpoint.ts +0 -140
  2910. package/src/commit/create-commit.ts +0 -80
  2911. package/src/commit/create-merge-commit.test.ts +0 -268
  2912. package/src/commit/create-merge-commit.ts +0 -138
  2913. package/src/commit/create-transition-commit.test.ts +0 -256
  2914. package/src/commit/create-transition-commit.ts +0 -187
  2915. package/src/commit/create-undo-commit.test.ts +0 -358
  2916. package/src/commit/create-undo-commit.ts +0 -180
  2917. package/src/commit/schema.ts +0 -104
  2918. package/src/database/execute-sync.test.ts +0 -140
  2919. package/src/database/execute-sync.ts +0 -46
  2920. package/src/database/kysely-plugin/json-column-plugin.test.ts +0 -404
  2921. package/src/database/kysely-plugin/json-column-plugin.ts +0 -280
  2922. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.test.ts +0 -204
  2923. package/src/database/kysely-plugin/parse-jsonb-plugin-v1.ts +0 -50
  2924. package/src/database/kysely-plugin/parse-jsonb-plugin-v2.no_test.ts +0 -204
  2925. package/src/database/kysely-plugin/parse-jsonb-plugin-v2.ts +0 -194
  2926. package/src/database/kysely-plugin/serialize-jsonb-plugin.test.ts +0 -307
  2927. package/src/database/kysely-plugin/serialize-jsonb-plugin.ts +0 -221
  2928. package/src/database/kysely-plugin/view-insert-returning-error-plugin.test.ts +0 -62
  2929. package/src/deterministic/generate-human-id.test.ts +0 -154
  2930. package/src/deterministic/generate-human-id.ts +0 -94
  2931. package/src/deterministic/index.ts +0 -7
  2932. package/src/deterministic/is-deterministic-mode.test.ts +0 -133
  2933. package/src/deterministic/is-deterministic-mode.ts +0 -32
  2934. package/src/deterministic/nano-id.test.ts +0 -200
  2935. package/src/deterministic/nano-id.ts +0 -188
  2936. package/src/deterministic/options.test.ts +0 -157
  2937. package/src/deterministic/options.ts +0 -62
  2938. package/src/deterministic/random.test.ts +0 -293
  2939. package/src/deterministic/random.ts +0 -261
  2940. package/src/deterministic/sequence.test.ts +0 -93
  2941. package/src/deterministic/sequence.ts +0 -132
  2942. package/src/deterministic/timestamp.test.ts +0 -170
  2943. package/src/deterministic/timestamp.ts +0 -83
  2944. package/src/deterministic/uuid-v7.test.ts +0 -144
  2945. package/src/deterministic/uuid-v7.ts +0 -82
  2946. package/src/entity/label/create-entity-label.test.ts +0 -316
  2947. package/src/entity/label/create-entity-label.ts +0 -113
  2948. package/src/entity/label/schema.ts +0 -55
  2949. package/src/entity/schema.ts +0 -22
  2950. package/src/entity/thread/create-entity-thread.test.ts +0 -282
  2951. package/src/entity/thread/create-entity-thread.ts +0 -134
  2952. package/src/entity/thread/query-threads.test.ts +0 -394
  2953. package/src/entity/thread/schema.test.ts +0 -170
  2954. package/src/entity/thread/schema.ts +0 -55
  2955. package/src/entity-views/README.md +0 -214
  2956. package/src/entity-views/entity-state-all.test.ts +0 -647
  2957. package/src/entity-views/entity-state-all.ts +0 -575
  2958. package/src/entity-views/entity-state-history.test.ts +0 -387
  2959. package/src/entity-views/entity-state-history.ts +0 -275
  2960. package/src/entity-views/entity-state.test.ts +0 -732
  2961. package/src/entity-views/entity-state.ts +0 -571
  2962. package/src/entity-views/entity-view-builder.test.ts +0 -293
  2963. package/src/entity-views/entity-view-builder.ts +0 -148
  2964. package/src/entity-views/types.test.ts +0 -99
  2965. package/src/entity-views/types.ts +0 -328
  2966. package/src/file/file-handlers.test.ts +0 -174
  2967. package/src/file/file-handlers.ts +0 -404
  2968. package/src/file/index.ts +0 -5
  2969. package/src/file/materialize-file-data-at-commit.ts +0 -157
  2970. package/src/file/materialize-file-data.test.ts +0 -107
  2971. package/src/file/materialize-file-data.ts +0 -120
  2972. package/src/file/schema.test.ts +0 -1646
  2973. package/src/file/schema.ts +0 -427
  2974. package/src/file/store-detected-change-schema.test.ts +0 -248
  2975. package/src/file/store-detected-change-schema.ts +0 -52
  2976. package/src/file/unknown-file-fallback-plugin.test.ts +0 -368
  2977. package/src/file/unknown-file-fallback-plugin.ts +0 -95
  2978. package/src/key-value/schema.ts +0 -98
  2979. package/src/label/schema.ts +0 -37
  2980. package/src/lix/storage/in-memory.test.ts +0 -106
  2981. package/src/lix/storage/in-memory.ts +0 -64
  2982. package/src/lix/storage/lix-storage-adapter.ts +0 -52
  2983. package/src/lix/storage/opfs.test.ts +0 -438
  2984. package/src/lix/storage/opfs.ts +0 -313
  2985. package/src/log/schema.ts +0 -51
  2986. package/src/query-filter/change-set-element-in-ancestry-of.test.ts +0 -440
  2987. package/src/query-filter/change-set-element-in-ancestry-of.ts +0 -69
  2988. package/src/query-filter/change-set-element-in-symmetric-difference.test.ts +0 -410
  2989. package/src/query-filter/change-set-element-in-symmetric-difference.ts +0 -53
  2990. package/src/query-filter/change-set-element-is-leaf-of.test.ts +0 -623
  2991. package/src/query-filter/change-set-element-is-leaf-of.ts +0 -132
  2992. package/src/state/commit.test.ts +0 -1402
  2993. package/src/state/commit.ts +0 -587
  2994. package/src/state/insert-transaction-state.test.ts +0 -928
  2995. package/src/state/insert-transaction-state.ts +0 -306
  2996. package/src/state/primary-key.test.ts +0 -158
  2997. package/src/state/primary-key.ts +0 -80
  2998. package/src/state/resolved-state-view.test.ts +0 -521
  2999. package/src/state/resolved-state-view.ts +0 -202
  3000. package/src/state/schema.test.ts +0 -3260
  3001. package/src/state/validate-state-mutation.test.ts +0 -3308
  3002. package/src/state/validate-state-mutation.ts +0 -866
  3003. package/src/stored-schema/schema.ts +0 -67
  3004. package/src/thread/create-thread-comment.test.ts +0 -122
  3005. package/src/thread/create-thread-comment.ts +0 -84
  3006. package/src/thread/create-thread.test.ts +0 -212
  3007. package/src/thread/create-thread.ts +0 -108
  3008. package/src/thread/index.ts +0 -9
  3009. package/src/thread/schema.test.ts +0 -157
  3010. package/src/thread/schema.ts +0 -90
  3011. /package/dist/{change-set-v2 → change-proposal}/schema.test.d.ts +0 -0
  3012. /package/dist/database/{kysely-plugin → kysely/plugins}/json-column-plugin.d.ts +0 -0
  3013. /package/dist/database/{kysely-plugin → kysely/plugins}/json-column-plugin.test.d.ts +0 -0
  3014. /package/dist/database/{kysely-plugin → kysely/plugins}/view-insert-returning-error-plugin.d.ts +0 -0
  3015. /package/dist/database/{kysely-plugin → kysely/plugins}/view-insert-returning-error-plugin.js +0 -0
  3016. /package/dist/database/{kysely-plugin → kysely/plugins}/view-insert-returning-error-plugin.test.d.ts +0 -0
  3017. /package/dist/{zettel-ast → dependency/zettel-ast}/index.d.ts +0 -0
  3018. /package/dist/{zettel-ast → dependency/zettel-ast}/index.js +0 -0
  3019. /package/dist/{deterministic → engine/deterministic-mode}/is-deterministic-mode.test.d.ts +0 -0
  3020. /package/dist/{deterministic → engine/deterministic-mode}/options.test.d.ts +0 -0
  3021. /package/dist/{entity-views → engine/entity-views}/index.d.ts +0 -0
  3022. /package/dist/{entity-views → engine/entity-views}/index.js +0 -0
  3023. /package/dist/{change-schema → engine/entity-views}/types.js +0 -0
  3024. /package/dist/{entity-views → engine/entity-views}/types.test.d.ts +0 -0
  3025. /package/dist/{database → engine}/execute-sync.test.d.ts +0 -0
  3026. /package/dist/{deterministic → engine/functions}/generate-human-id.test.d.ts +0 -0
  3027. /package/dist/{deterministic → engine/functions}/nano-id.test.d.ts +0 -0
  3028. /package/dist/{deterministic → engine/functions}/random.test.d.ts +0 -0
  3029. /package/dist/{deterministic → engine/functions}/sequence.test.d.ts +0 -0
  3030. /package/dist/{deterministic → engine/functions}/timestamp.test.d.ts +0 -0
  3031. /package/dist/{deterministic → engine/functions}/uuid-v7.test.d.ts +0 -0
  3032. /package/dist/{entity-views → engine/preprocessor}/types.js +0 -0
  3033. /package/dist/entity/{thread → conversation}/schema.test.d.ts +0 -0
  3034. /package/dist/{lix/storage → environment}/in-memory.test.d.ts +0 -0
  3035. /package/dist/{file → filesystem/directory}/schema.test.d.ts +0 -0
  3036. /package/dist/{key-value-v2 → filesystem/file/cache}/schema.test.d.ts +0 -0
  3037. /package/dist/{file → filesystem/file}/file-handlers.test.d.ts +0 -0
  3038. /package/dist/{file → filesystem/file}/materialize-file-data.test.d.ts +0 -0
  3039. /package/dist/{state → filesystem/file}/schema.test.d.ts +0 -0
  3040. /package/dist/{file → filesystem/file}/store-detected-change-schema.test.d.ts +0 -0
  3041. /package/dist/{file → filesystem/file}/unknown-file-fallback-plugin.test.d.ts +0 -0
  3042. /package/dist/{thread → filesystem}/schema.test.d.ts +0 -0
  3043. /package/dist/{change-set-v2 → state}/create-checkpoint.test.d.ts +0 -0
  3044. /package/dist/state/{insert-transaction-state.test.d.ts → transaction/insert-transaction-state.test.d.ts} +0 -0
  3045. /package/dist/state/{commit.test.d.ts → vtable/commit.test.d.ts} +0 -0
  3046. /package/dist/state/{primary-key.test.d.ts → vtable/primary-key.test.d.ts} +0 -0
  3047. /package/dist/state/{validate-state-mutation.test.d.ts → vtable/validate-state-mutation.test.d.ts} +0 -0
  3048. /package/src/database/{kysely-plugin → kysely/plugins}/view-insert-returning-error-plugin.ts +0 -0
  3049. /package/src/{zettel-ast → dependency/zettel-ast}/index.ts +0 -0
  3050. /package/src/{entity-views → engine/entity-views}/index.ts +0 -0
@@ -0,0 +1,3751 @@
1
+ import {
2
+ type BetweenExpressionNode,
3
+ type BinaryExpressionNode,
4
+ type CompoundSelectNode,
5
+ type ExpressionNode,
6
+ type IdentifierNode,
7
+ type InListExpressionNode,
8
+ type ObjectNameNode,
9
+ type ParameterExpressionNode,
10
+ type RawFragmentNode,
11
+ type SegmentedStatementNode,
12
+ type SelectItemNode,
13
+ type SelectStatementNode,
14
+ type TableReferenceNode,
15
+ type RelationNode,
16
+ type WithClauseNode,
17
+ } from "../sql-parser/nodes.js";
18
+ import type {
19
+ PreprocessorStep,
20
+ PreprocessorStepContext,
21
+ PreprocessorTraceEntry,
22
+ } from "../types.js";
23
+ import { internalQueryBuilder } from "../../internal-query-builder.js";
24
+ import {
25
+ getColumnName,
26
+ getColumnQualifier,
27
+ getIdentifierValue,
28
+ isSelectAllForTable,
29
+ normalizeIdentifierValue,
30
+ objectNameMatches,
31
+ } from "../sql-parser/ast-helpers.js";
32
+ import {
33
+ visitSelectStatement,
34
+ type AstVisitor,
35
+ } from "../sql-parser/visitor.js";
36
+ import { normalizeSegmentedStatement } from "../sql-parser/parse.js";
37
+ import {
38
+ cacheTableNameToSchemaKey,
39
+ schemaKeyToCacheTableName,
40
+ } from "../../../state/cache/create-schema-cache-table.js";
41
+ import type {
42
+ VersionInheritanceMap,
43
+ VersionInheritanceNode,
44
+ } from "../inheritance/version-inheritance-cache.js";
45
+
46
+ export const INTERNAL_STATE_VTABLE = "lix_internal_state_vtable";
47
+ const DEFAULT_ALIAS_KEY = normalizeIdentifierValue(INTERNAL_STATE_VTABLE);
48
+ const ORIGINAL_TABLE_KEY = DEFAULT_ALIAS_KEY;
49
+ const HIDDEN_SEGMENT_COLUMNS = ["_pk"] as const;
50
+ const HIDDEN_SEGMENT_COLUMN_SET = new Set<string>(HIDDEN_SEGMENT_COLUMNS);
51
+ const SNAPSHOT_JSON_ENTITY_PATHS = new Set<string>(["$.id", "$.entity_id"]);
52
+ // Guarded until we can reliably map JSON paths to concrete entity identifiers.
53
+ const SNAPSHOT_ENTITY_FILTER_PUSH_ENABLED = false;
54
+
55
+ type SelectedProjection = {
56
+ column: string;
57
+ alias: string | null;
58
+ };
59
+
60
+ type ColumnSelectionSummary = {
61
+ selectedColumns: SelectedProjection[] | null;
62
+ requestedHiddenColumns: ReadonlySet<string>;
63
+ supportColumns: ReadonlySet<string>;
64
+ };
65
+
66
+ type SnapshotJsonPredicate = {
67
+ path: string;
68
+ values: readonly string[];
69
+ };
70
+
71
+ type ColumnPredicateSummary = {
72
+ count: number;
73
+ literals: string[];
74
+ };
75
+
76
+ type PredicateVisitContext = {
77
+ tableNames: Set<string>;
78
+ parameters: ReadonlyArray<unknown>;
79
+ allowUnqualified: boolean;
80
+ };
81
+
82
+ type SnapshotPredicateAccumulator = Map<string, Set<string>>;
83
+
84
+ type TableReferenceInfo = {
85
+ relation: TableReferenceNode;
86
+ alias: string | null;
87
+ normalizedAlias: string | null;
88
+ };
89
+
90
+ type InlineRewriteMetadata = {
91
+ schemaKeys: readonly string[];
92
+ fileIds: readonly string[];
93
+ entityIds: readonly string[];
94
+ snapshotFilters: readonly SnapshotJsonPredicate[];
95
+ versionIds: readonly string[];
96
+ selectedColumns: SelectedProjection[] | null;
97
+ hiddenColumns: ReadonlySet<string>;
98
+ supportColumns: ReadonlySet<string>;
99
+ pruneInheritance: boolean;
100
+ pruneTransactionSegment: boolean;
101
+ };
102
+
103
+ type SubqueryPredicateMetadata = {
104
+ schemaKeys: readonly string[];
105
+ fileIds: readonly string[];
106
+ entityIds: readonly string[];
107
+ snapshotFilters: readonly SnapshotJsonPredicate[];
108
+ versionIds: readonly string[];
109
+ pruneInheritance: boolean;
110
+ pruneTransactionSegment: boolean;
111
+ };
112
+
113
+ /**
114
+ * Rewrites internal state vtable references into inline union subqueries.
115
+ *
116
+ * @example
117
+ * ```ts
118
+ * const rewritten = rewriteVtableSelects({
119
+ * node: statement,
120
+ * getCacheTables,
121
+ * hasOpenTransaction,
122
+ * });
123
+ * ```
124
+ */
125
+ export const rewriteVtableSelects: PreprocessorStep = (context) => {
126
+ let anyChanges = false;
127
+ const rewrittenStatements = context.statements.map((statement) => {
128
+ const rewritten = rewriteSegmentedStatement(statement, context);
129
+ if (rewritten !== statement) {
130
+ anyChanges = true;
131
+ }
132
+ return rewritten;
133
+ });
134
+
135
+ return anyChanges ? rewrittenStatements : context.statements;
136
+ };
137
+
138
+ function rewriteSegmentedStatement(
139
+ statement: SegmentedStatementNode,
140
+ context: PreprocessorStepContext
141
+ ): SegmentedStatementNode {
142
+ let changed = false;
143
+ const segments = statement.segments.map((segment) => {
144
+ if (segment.node_kind === "select_statement") {
145
+ const rewritten = rewriteSelectStatement(segment, context);
146
+ if (rewritten !== segment) {
147
+ changed = true;
148
+ }
149
+ return rewritten;
150
+ }
151
+ if (segment.node_kind === "compound_select") {
152
+ const rewritten = rewriteCompoundSelect(segment, context);
153
+ if (rewritten !== segment) {
154
+ changed = true;
155
+ }
156
+ return rewritten;
157
+ }
158
+ return segment;
159
+ });
160
+
161
+ if (!changed) {
162
+ return statement;
163
+ }
164
+
165
+ return normalizeSegmentedStatement({
166
+ ...statement,
167
+ segments,
168
+ });
169
+ }
170
+
171
+ function rewriteSelectStatement(
172
+ select: SelectStatementNode,
173
+ context: PreprocessorStepContext,
174
+ pushdownSchemaKeys: readonly string[] = [],
175
+ pushdownPruneInheritance = false,
176
+ pushdownPruneTransactions = false,
177
+ pushdownFileIds: readonly string[] = [],
178
+ pushdownEntityIds: readonly string[] = [],
179
+ pushdownVersionIds: readonly string[] = [],
180
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[] = []
181
+ ): SelectStatementNode {
182
+ const parameters = context.parameters ?? [];
183
+ const ctePredicateMap = collectCtePredicateMap(
184
+ select,
185
+ parameters,
186
+ pushdownSchemaKeys,
187
+ pushdownPruneInheritance,
188
+ pushdownPruneTransactions,
189
+ pushdownFileIds,
190
+ pushdownEntityIds,
191
+ pushdownVersionIds,
192
+ pushdownSnapshotFilters
193
+ );
194
+ const selectWithRewrittenCtes = rewriteSelectWithClause(
195
+ select,
196
+ context,
197
+ ctePredicateMap,
198
+ pushdownSchemaKeys,
199
+ pushdownPruneInheritance,
200
+ pushdownPruneTransactions,
201
+ pushdownFileIds,
202
+ pushdownEntityIds,
203
+ pushdownVersionIds,
204
+ pushdownSnapshotFilters
205
+ );
206
+ const fallbackAliasNames = collectRelationAliasNames(selectWithRewrittenCtes);
207
+ const fallbackSchemaSummary = collectSchemaKeyPredicates(
208
+ selectWithRewrittenCtes.where_clause,
209
+ fallbackAliasNames,
210
+ parameters
211
+ );
212
+ const fallbackSchemaKeys = mergeStringLiterals(
213
+ pushdownSchemaKeys,
214
+ fallbackSchemaSummary.literals
215
+ );
216
+ const fallbackFileSummary = collectFileIdPredicates(
217
+ selectWithRewrittenCtes.where_clause,
218
+ fallbackAliasNames,
219
+ parameters
220
+ );
221
+ const fallbackFileIds = mergeStringLiterals(
222
+ pushdownFileIds,
223
+ fallbackFileSummary.literals
224
+ );
225
+ const fallbackEntitySummary = collectEntityIdPredicates(
226
+ selectWithRewrittenCtes.where_clause,
227
+ fallbackAliasNames,
228
+ parameters
229
+ );
230
+ const fallbackEntityIds = mergeStringLiterals(
231
+ pushdownEntityIds,
232
+ fallbackEntitySummary.literals
233
+ );
234
+ const fallbackVersionSummary = collectVersionIdPredicates(
235
+ selectWithRewrittenCtes.where_clause,
236
+ fallbackAliasNames,
237
+ parameters
238
+ );
239
+ const fallbackVersionIds = mergeStringLiterals(
240
+ pushdownVersionIds,
241
+ fallbackVersionSummary.literals
242
+ );
243
+ const fallbackSnapshotSummary = collectSnapshotJsonPredicates(
244
+ selectWithRewrittenCtes.where_clause,
245
+ fallbackAliasNames,
246
+ parameters
247
+ );
248
+ const fallbackSnapshotFilters = mergeSnapshotFilters(
249
+ pushdownSnapshotFilters,
250
+ fallbackSnapshotSummary
251
+ );
252
+ const fallbackPruneInheritance =
253
+ pushdownPruneInheritance ||
254
+ shouldPruneInheritance(
255
+ selectWithRewrittenCtes.where_clause,
256
+ fallbackAliasNames,
257
+ parameters
258
+ );
259
+ const fallbackPruneTransactions =
260
+ pushdownPruneTransactions ||
261
+ shouldPruneTransactionSegment(
262
+ selectWithRewrittenCtes.where_clause,
263
+ fallbackAliasNames,
264
+ parameters
265
+ );
266
+ const subqueryPredicateMap = collectSubqueryPredicateMap(
267
+ selectWithRewrittenCtes,
268
+ parameters,
269
+ pushdownSchemaKeys,
270
+ pushdownPruneInheritance,
271
+ pushdownPruneTransactions,
272
+ pushdownFileIds,
273
+ pushdownEntityIds,
274
+ pushdownVersionIds,
275
+ pushdownSnapshotFilters
276
+ );
277
+ const withRewrittenSubqueries = visitSelectStatement(
278
+ selectWithRewrittenCtes,
279
+ {
280
+ subquery(node, visitContext) {
281
+ const parentKind = visitContext.parent?.node_kind;
282
+ const aliasValue = getIdentifierValue(node.alias);
283
+ const normalizedAlias = aliasValue
284
+ ? normalizeIdentifierValue(aliasValue)
285
+ : DEFAULT_ALIAS_KEY;
286
+ const predicateMetadata =
287
+ parentKind === "from_clause" || parentKind === "join_clause"
288
+ ? subqueryPredicateMap.get(normalizedAlias)
289
+ : undefined;
290
+ const nextSchemaKeys =
291
+ predicateMetadata?.schemaKeys ?? fallbackSchemaKeys;
292
+ const nextPrune =
293
+ predicateMetadata?.pruneInheritance ?? fallbackPruneInheritance;
294
+ const nextPruneTransactions =
295
+ predicateMetadata?.pruneTransactionSegment ??
296
+ fallbackPruneTransactions;
297
+ const nextFileIds = predicateMetadata?.fileIds ?? fallbackFileIds;
298
+ const nextEntityIds = predicateMetadata?.entityIds ?? fallbackEntityIds;
299
+ const nextVersionIds =
300
+ predicateMetadata?.versionIds ?? fallbackVersionIds;
301
+ const nextSnapshotFilters =
302
+ predicateMetadata?.snapshotFilters ?? fallbackSnapshotFilters;
303
+ const rewrittenStatement =
304
+ node.statement.node_kind === "compound_select"
305
+ ? rewriteCompoundSelect(
306
+ node.statement,
307
+ context,
308
+ nextSchemaKeys,
309
+ nextPrune,
310
+ nextPruneTransactions,
311
+ nextFileIds,
312
+ nextEntityIds,
313
+ nextVersionIds,
314
+ nextSnapshotFilters
315
+ )
316
+ : rewriteSelectStatement(
317
+ node.statement,
318
+ context,
319
+ nextSchemaKeys,
320
+ nextPrune,
321
+ nextPruneTransactions,
322
+ nextFileIds,
323
+ nextEntityIds,
324
+ nextVersionIds,
325
+ nextSnapshotFilters
326
+ );
327
+ if (rewrittenStatement !== node.statement) {
328
+ return {
329
+ ...node,
330
+ statement: rewrittenStatement,
331
+ };
332
+ }
333
+ return node;
334
+ },
335
+ }
336
+ );
337
+
338
+ const references = collectInternalStateReferences(withRewrittenSubqueries);
339
+ if (references.length === 0) {
340
+ return withRewrittenSubqueries;
341
+ }
342
+
343
+ const aliasList = references
344
+ .map((reference) => reference.alias)
345
+ .filter((alias): alias is string => alias !== null);
346
+
347
+ const tableNamesForTrace = new Set<string>([
348
+ DEFAULT_ALIAS_KEY,
349
+ ORIGINAL_TABLE_KEY,
350
+ ...references
351
+ .map((reference) => reference.normalizedAlias)
352
+ .filter((alias): alias is string => alias !== null),
353
+ ]);
354
+
355
+ const schemaSummary = collectSchemaKeyPredicates(
356
+ withRewrittenSubqueries.where_clause,
357
+ tableNamesForTrace,
358
+ parameters
359
+ );
360
+ const mergedSchemaKeys = mergeStringLiterals(
361
+ pushdownSchemaKeys,
362
+ schemaSummary.literals
363
+ );
364
+ const schemaSummaryForTrace: ColumnPredicateSummary = {
365
+ count: schemaSummary.count,
366
+ literals: mergedSchemaKeys,
367
+ };
368
+
369
+ const projectionKind = determineProjectionKind(
370
+ withRewrittenSubqueries.projection,
371
+ tableNamesForTrace
372
+ );
373
+ const selectedColumnsSummaryForTrace = collectSelectedColumns(
374
+ withRewrittenSubqueries,
375
+ tableNamesForTrace
376
+ );
377
+
378
+ const metadata = buildInlineMetadata(
379
+ withRewrittenSubqueries,
380
+ references,
381
+ parameters,
382
+ pushdownSchemaKeys,
383
+ pushdownPruneInheritance,
384
+ pushdownPruneTransactions,
385
+ pushdownFileIds,
386
+ pushdownEntityIds,
387
+ pushdownVersionIds,
388
+ pushdownSnapshotFilters
389
+ );
390
+
391
+ const rewritten = visitSelectStatement(
392
+ withRewrittenSubqueries,
393
+ createInlineVisitor(metadata, context)
394
+ );
395
+
396
+ if (context.trace) {
397
+ const entry = buildTraceEntry({
398
+ aliasList,
399
+ projectionKind,
400
+ schemaSummary: schemaSummaryForTrace,
401
+ selectedColumns: selectedColumnsSummaryForTrace.selectedColumns,
402
+ });
403
+ context.trace.push(entry);
404
+ }
405
+
406
+ return rewritten;
407
+ }
408
+
409
+ function rewriteCompoundSelect(
410
+ compound: CompoundSelectNode,
411
+ context: PreprocessorStepContext,
412
+ pushdownSchemaKeys: readonly string[] = [],
413
+ pushdownPruneInheritance = false,
414
+ pushdownPruneTransactions = false,
415
+ pushdownFileIds: readonly string[] = [],
416
+ pushdownEntityIds: readonly string[] = [],
417
+ pushdownVersionIds: readonly string[] = [],
418
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[] = []
419
+ ): CompoundSelectNode {
420
+ const rewrittenWithClause = compound.with_clause
421
+ ? rewriteWithClauseNode(
422
+ compound.with_clause,
423
+ context,
424
+ new Map(),
425
+ pushdownSchemaKeys,
426
+ pushdownPruneInheritance,
427
+ pushdownPruneTransactions,
428
+ pushdownFileIds,
429
+ pushdownEntityIds,
430
+ pushdownVersionIds,
431
+ pushdownSnapshotFilters
432
+ )
433
+ : null;
434
+ let changed = false;
435
+ const first = rewriteSelectStatement(
436
+ compound.first,
437
+ context,
438
+ pushdownSchemaKeys,
439
+ pushdownPruneInheritance,
440
+ pushdownPruneTransactions,
441
+ pushdownFileIds,
442
+ pushdownEntityIds,
443
+ pushdownVersionIds,
444
+ pushdownSnapshotFilters
445
+ );
446
+ if (first !== compound.first) {
447
+ changed = true;
448
+ }
449
+
450
+ const branches = compound.compounds.map((branch) => {
451
+ const rewritten = rewriteSelectStatement(
452
+ branch.select,
453
+ context,
454
+ pushdownSchemaKeys,
455
+ pushdownPruneInheritance,
456
+ pushdownPruneTransactions,
457
+ pushdownFileIds,
458
+ pushdownEntityIds,
459
+ pushdownVersionIds,
460
+ pushdownSnapshotFilters
461
+ );
462
+ if (rewritten !== branch.select) {
463
+ changed = true;
464
+ return {
465
+ ...branch,
466
+ select: rewritten,
467
+ };
468
+ }
469
+ return branch;
470
+ });
471
+
472
+ if (!changed) {
473
+ return rewrittenWithClause === compound.with_clause
474
+ ? compound
475
+ : {
476
+ ...compound,
477
+ with_clause: rewrittenWithClause,
478
+ };
479
+ }
480
+
481
+ return {
482
+ ...compound,
483
+ first,
484
+ compounds: branches,
485
+ with_clause: rewrittenWithClause ?? compound.with_clause,
486
+ };
487
+ }
488
+
489
+ function collectInternalStateReferences(
490
+ select: SelectStatementNode
491
+ ): TableReferenceInfo[] {
492
+ const references: TableReferenceInfo[] = [];
493
+ for (const clause of select.from_clauses) {
494
+ const relation = clause.relation;
495
+ if (relation.node_kind === "table_reference") {
496
+ if (isInternalStateTable(relation)) {
497
+ references.push({
498
+ relation,
499
+ alias: getIdentifierValue(relation.alias),
500
+ normalizedAlias: normalizeAlias(relation.alias),
501
+ });
502
+ }
503
+ }
504
+ for (const join of clause.joins) {
505
+ const joinRelation = join.relation;
506
+ if (
507
+ joinRelation.node_kind === "table_reference" &&
508
+ isInternalStateTable(joinRelation)
509
+ ) {
510
+ references.push({
511
+ relation: joinRelation,
512
+ alias: getIdentifierValue(joinRelation.alias),
513
+ normalizedAlias: normalizeAlias(joinRelation.alias),
514
+ });
515
+ }
516
+ }
517
+ }
518
+ return references;
519
+ }
520
+
521
+ function isInternalStateTable(table: TableReferenceNode): boolean {
522
+ return objectNameMatches(table.name, INTERNAL_STATE_VTABLE);
523
+ }
524
+
525
+ function normalizeAlias(alias: IdentifierNode | null): string | null {
526
+ const value = getIdentifierValue(alias);
527
+ return value ? normalizeIdentifierValue(value) : null;
528
+ }
529
+
530
+ function collectSubqueryPredicateMap(
531
+ select: SelectStatementNode,
532
+ parameters: ReadonlyArray<unknown>,
533
+ pushdownSchemaKeys: readonly string[],
534
+ pushdownPruneInheritance: boolean,
535
+ pushdownPruneTransactions: boolean,
536
+ pushdownFileIds: readonly string[],
537
+ pushdownEntityIds: readonly string[],
538
+ pushdownVersionIds: readonly string[],
539
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[]
540
+ ): Map<string, SubqueryPredicateMetadata> {
541
+ const map = new Map<string, SubqueryPredicateMetadata>();
542
+ const register = (
543
+ relation: RelationNode,
544
+ joinFilter: ExpressionNode | RawFragmentNode | null
545
+ ) => {
546
+ if (relation.node_kind !== "subquery") {
547
+ return;
548
+ }
549
+ const aliasValue = getIdentifierValue(relation.alias);
550
+ if (!aliasValue) {
551
+ return;
552
+ }
553
+ const normalizedAlias = normalizeIdentifierValue(aliasValue);
554
+ const tableNames = new Set<string>([
555
+ normalizedAlias,
556
+ DEFAULT_ALIAS_KEY,
557
+ ORIGINAL_TABLE_KEY,
558
+ ]);
559
+ const whereSummary = collectSchemaKeyPredicates(
560
+ select.where_clause,
561
+ tableNames,
562
+ parameters
563
+ );
564
+ const joinSummary = collectSchemaKeyPredicatesFromExpression(
565
+ joinFilter,
566
+ tableNames,
567
+ parameters,
568
+ false
569
+ );
570
+ const localKeys = mergeStringLiterals(
571
+ whereSummary.literals,
572
+ joinSummary.literals
573
+ );
574
+ const fileWhereSummary = collectFileIdPredicates(
575
+ select.where_clause,
576
+ tableNames,
577
+ parameters
578
+ );
579
+ const fileJoinSummary = collectFileIdPredicatesFromExpression(
580
+ joinFilter,
581
+ tableNames,
582
+ parameters,
583
+ false
584
+ );
585
+ const localFileIds = mergeStringLiterals(
586
+ fileWhereSummary.literals,
587
+ fileJoinSummary.literals
588
+ );
589
+ const entityWhereSummary = collectEntityIdPredicates(
590
+ select.where_clause,
591
+ tableNames,
592
+ parameters
593
+ );
594
+ const entityJoinSummary = collectEntityIdPredicatesFromExpression(
595
+ joinFilter,
596
+ tableNames,
597
+ parameters,
598
+ false
599
+ );
600
+ const localEntityIds = mergeStringLiterals(
601
+ entityWhereSummary.literals,
602
+ entityJoinSummary.literals
603
+ );
604
+ const snapshotWhereSummary = collectSnapshotJsonPredicates(
605
+ select.where_clause,
606
+ tableNames,
607
+ parameters
608
+ );
609
+ const snapshotJoinSummary = collectSnapshotJsonPredicatesFromExpression(
610
+ joinFilter,
611
+ tableNames,
612
+ parameters,
613
+ false
614
+ );
615
+ const localSnapshotFilters = mergeSnapshotFilters(
616
+ snapshotWhereSummary,
617
+ snapshotJoinSummary
618
+ );
619
+
620
+ const versionWhereSummary = collectVersionIdPredicates(
621
+ select.where_clause,
622
+ tableNames,
623
+ parameters
624
+ );
625
+ const versionJoinSummary = collectVersionIdPredicatesFromExpression(
626
+ joinFilter,
627
+ tableNames,
628
+ parameters,
629
+ false
630
+ );
631
+ const localVersionIds = mergeStringLiterals(
632
+ versionWhereSummary.literals,
633
+ versionJoinSummary.literals
634
+ );
635
+
636
+ const existing = map.get(normalizedAlias);
637
+ const merged = mergeStringLiterals(
638
+ existing?.schemaKeys ?? [],
639
+ pushdownSchemaKeys,
640
+ localKeys
641
+ );
642
+ const mergedFileIds = mergeStringLiterals(
643
+ existing?.fileIds ?? [],
644
+ pushdownFileIds,
645
+ localFileIds
646
+ );
647
+ const mergedEntityIds = mergeStringLiterals(
648
+ existing?.entityIds ?? [],
649
+ pushdownEntityIds,
650
+ localEntityIds
651
+ );
652
+ const mergedSnapshotFilters = mergeSnapshotFilters(
653
+ existing?.snapshotFilters ?? [],
654
+ pushdownSnapshotFilters,
655
+ localSnapshotFilters
656
+ );
657
+ const mergedVersionIds = mergeStringLiterals(
658
+ existing?.versionIds ?? [],
659
+ pushdownVersionIds,
660
+ localVersionIds
661
+ );
662
+ const pruneFromWhere = requiresNullPredicateForColumn(
663
+ select.where_clause,
664
+ tableNames,
665
+ parameters,
666
+ true
667
+ );
668
+ const pruneFromJoin = requiresNullPredicateForColumn(
669
+ joinFilter,
670
+ tableNames,
671
+ parameters,
672
+ false
673
+ );
674
+ const combinedPrune =
675
+ (existing?.pruneInheritance ?? false) ||
676
+ pushdownPruneInheritance ||
677
+ pruneFromWhere ||
678
+ pruneFromJoin;
679
+ const pruneTxnFromWhere = excludesColumnLiteralFromExpression(
680
+ select.where_clause,
681
+ tableNames,
682
+ parameters,
683
+ "source_tag",
684
+ "T",
685
+ true
686
+ );
687
+ const pruneTxnFromJoin = excludesColumnLiteralFromExpression(
688
+ joinFilter,
689
+ tableNames,
690
+ parameters,
691
+ "source_tag",
692
+ "T",
693
+ false
694
+ );
695
+ const combinedTxnPrune =
696
+ (existing?.pruneTransactionSegment ?? false) ||
697
+ pushdownPruneTransactions ||
698
+ pruneTxnFromWhere ||
699
+ pruneTxnFromJoin;
700
+ const finalFileIds = shouldPushFileFilter(merged, mergedFileIds)
701
+ ? mergedFileIds
702
+ : [];
703
+ const finalEntityIds = shouldPushEntityFilter(merged, mergedEntityIds)
704
+ ? mergedEntityIds
705
+ : [];
706
+ const finalSnapshotFilters = shouldPushSnapshotFilters(
707
+ merged,
708
+ mergedSnapshotFilters
709
+ )
710
+ ? mergedSnapshotFilters
711
+ : [];
712
+ if (
713
+ merged.length > 0 ||
714
+ finalFileIds.length > 0 ||
715
+ finalEntityIds.length > 0 ||
716
+ finalSnapshotFilters.length > 0 ||
717
+ mergedVersionIds.length > 0 ||
718
+ combinedPrune ||
719
+ combinedTxnPrune
720
+ ) {
721
+ map.set(normalizedAlias, {
722
+ schemaKeys: merged,
723
+ fileIds: finalFileIds,
724
+ entityIds: finalEntityIds,
725
+ snapshotFilters: finalSnapshotFilters,
726
+ versionIds: mergedVersionIds,
727
+ pruneInheritance: combinedPrune,
728
+ pruneTransactionSegment: combinedTxnPrune,
729
+ });
730
+ }
731
+ };
732
+
733
+ for (const clause of select.from_clauses) {
734
+ register(clause.relation, null);
735
+ for (const join of clause.joins) {
736
+ register(join.relation, join.on_expression);
737
+ }
738
+ }
739
+
740
+ return map;
741
+ }
742
+
743
+ function collectRelationAliasNames(select: SelectStatementNode): Set<string> {
744
+ const aliases = new Set<string>([DEFAULT_ALIAS_KEY, ORIGINAL_TABLE_KEY]);
745
+ const addAlias = (alias: IdentifierNode | null) => {
746
+ const value = getIdentifierValue(alias);
747
+ if (value) {
748
+ aliases.add(normalizeIdentifierValue(value));
749
+ }
750
+ };
751
+ for (const clause of select.from_clauses) {
752
+ addAlias(extractRelationAlias(clause.relation));
753
+ for (const join of clause.joins) {
754
+ addAlias(extractRelationAlias(join.relation));
755
+ }
756
+ }
757
+ return aliases;
758
+ }
759
+
760
+ function extractRelationAlias(relation: RelationNode): IdentifierNode | null {
761
+ if ("alias" in relation) {
762
+ const alias = (
763
+ relation as Extract<RelationNode, { alias?: IdentifierNode | null }>
764
+ ).alias;
765
+ return alias ?? null;
766
+ }
767
+ return null;
768
+ }
769
+
770
+ function collectCtePredicateMap(
771
+ select: SelectStatementNode,
772
+ parameters: ReadonlyArray<unknown>,
773
+ pushdownSchemaKeys: readonly string[],
774
+ pushdownPruneInheritance: boolean,
775
+ pushdownPruneTransactions: boolean,
776
+ pushdownFileIds: readonly string[],
777
+ pushdownEntityIds: readonly string[],
778
+ pushdownVersionIds: readonly string[],
779
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[]
780
+ ): Map<string, SubqueryPredicateMetadata> {
781
+ const withClause = select.with_clause;
782
+ if (!withClause || withClause.ctes.length === 0) {
783
+ return new Map();
784
+ }
785
+ const cteNames = new Set(
786
+ withClause.ctes
787
+ .map((cte) => normalizeIdentifierValue(cte.name.value))
788
+ .filter((name): name is string => !!name)
789
+ );
790
+ if (cteNames.size === 0) {
791
+ return new Map();
792
+ }
793
+ const map = new Map<string, SubqueryPredicateMetadata>();
794
+ const register = (
795
+ table: TableReferenceNode,
796
+ joinFilter: ExpressionNode | RawFragmentNode | null
797
+ ) => {
798
+ const normalizedName = normalizeObjectName(table.name);
799
+ if (!normalizedName || !cteNames.has(normalizedName)) {
800
+ return;
801
+ }
802
+ const aliasValue = getIdentifierValue(table.alias);
803
+ const tableNames = new Set<string>([
804
+ normalizedName,
805
+ DEFAULT_ALIAS_KEY,
806
+ ORIGINAL_TABLE_KEY,
807
+ ]);
808
+ if (aliasValue) {
809
+ tableNames.add(normalizeIdentifierValue(aliasValue));
810
+ }
811
+ const whereSummary = collectSchemaKeyPredicates(
812
+ select.where_clause,
813
+ tableNames,
814
+ parameters
815
+ );
816
+ const joinSummary = collectSchemaKeyPredicatesFromExpression(
817
+ joinFilter,
818
+ tableNames,
819
+ parameters,
820
+ false
821
+ );
822
+ const localKeys = mergeStringLiterals(
823
+ whereSummary.literals,
824
+ joinSummary.literals
825
+ );
826
+ const fileWhereSummary = collectFileIdPredicates(
827
+ select.where_clause,
828
+ tableNames,
829
+ parameters
830
+ );
831
+ const fileJoinSummary = collectFileIdPredicatesFromExpression(
832
+ joinFilter,
833
+ tableNames,
834
+ parameters,
835
+ false
836
+ );
837
+ const localFileIds = mergeStringLiterals(
838
+ fileWhereSummary.literals,
839
+ fileJoinSummary.literals
840
+ );
841
+ const entityWhereSummary = collectEntityIdPredicates(
842
+ select.where_clause,
843
+ tableNames,
844
+ parameters
845
+ );
846
+ const entityJoinSummary = collectEntityIdPredicatesFromExpression(
847
+ joinFilter,
848
+ tableNames,
849
+ parameters,
850
+ false
851
+ );
852
+ const localEntityIds = mergeStringLiterals(
853
+ entityWhereSummary.literals,
854
+ entityJoinSummary.literals
855
+ );
856
+ const snapshotWhereSummary = collectSnapshotJsonPredicates(
857
+ select.where_clause,
858
+ tableNames,
859
+ parameters
860
+ );
861
+ const snapshotJoinSummary = collectSnapshotJsonPredicatesFromExpression(
862
+ joinFilter,
863
+ tableNames,
864
+ parameters,
865
+ false
866
+ );
867
+ const localSnapshotFilters = mergeSnapshotFilters(
868
+ snapshotWhereSummary,
869
+ snapshotJoinSummary
870
+ );
871
+ const versionWhereSummary = collectVersionIdPredicates(
872
+ select.where_clause,
873
+ tableNames,
874
+ parameters
875
+ );
876
+ const versionJoinSummary = collectVersionIdPredicatesFromExpression(
877
+ joinFilter,
878
+ tableNames,
879
+ parameters,
880
+ false
881
+ );
882
+ const localVersionIds = mergeStringLiterals(
883
+ versionWhereSummary.literals,
884
+ versionJoinSummary.literals
885
+ );
886
+ const existing = map.get(normalizedName);
887
+ const mergedSchemaKeys = mergeStringLiterals(
888
+ existing?.schemaKeys ?? [],
889
+ pushdownSchemaKeys,
890
+ localKeys
891
+ );
892
+ const mergedFileIds = mergeStringLiterals(
893
+ existing?.fileIds ?? [],
894
+ pushdownFileIds,
895
+ localFileIds
896
+ );
897
+ const mergedEntityIds = mergeStringLiterals(
898
+ existing?.entityIds ?? [],
899
+ pushdownEntityIds,
900
+ localEntityIds
901
+ );
902
+ const mergedSnapshotFilters = mergeSnapshotFilters(
903
+ existing?.snapshotFilters ?? [],
904
+ pushdownSnapshotFilters,
905
+ localSnapshotFilters
906
+ );
907
+ const mergedVersionIds = mergeStringLiterals(
908
+ existing?.versionIds ?? [],
909
+ pushdownVersionIds,
910
+ localVersionIds
911
+ );
912
+ const pruneFromWhere = requiresNullPredicateForColumn(
913
+ select.where_clause,
914
+ tableNames,
915
+ parameters,
916
+ true
917
+ );
918
+ const pruneFromJoin = requiresNullPredicateForColumn(
919
+ joinFilter,
920
+ tableNames,
921
+ parameters,
922
+ false
923
+ );
924
+ const combinedPrune =
925
+ (existing?.pruneInheritance ?? false) ||
926
+ pushdownPruneInheritance ||
927
+ pruneFromWhere ||
928
+ pruneFromJoin;
929
+ const pruneTxnFromWhere = excludesColumnLiteralFromExpression(
930
+ select.where_clause,
931
+ tableNames,
932
+ parameters,
933
+ "source_tag",
934
+ "T",
935
+ true
936
+ );
937
+ const pruneTxnFromJoin = excludesColumnLiteralFromExpression(
938
+ joinFilter,
939
+ tableNames,
940
+ parameters,
941
+ "source_tag",
942
+ "T",
943
+ false
944
+ );
945
+ const combinedTxnPrune =
946
+ (existing?.pruneTransactionSegment ?? false) ||
947
+ pushdownPruneTransactions ||
948
+ pruneTxnFromWhere ||
949
+ pruneTxnFromJoin;
950
+ const finalFileIds = shouldPushFileFilter(mergedSchemaKeys, mergedFileIds)
951
+ ? mergedFileIds
952
+ : [];
953
+ const finalEntityIds = shouldPushEntityFilter(
954
+ mergedSchemaKeys,
955
+ mergedEntityIds
956
+ )
957
+ ? mergedEntityIds
958
+ : [];
959
+ const finalSnapshotFilters = shouldPushSnapshotFilters(
960
+ mergedSchemaKeys,
961
+ mergedSnapshotFilters
962
+ )
963
+ ? mergedSnapshotFilters
964
+ : [];
965
+ const entry = {
966
+ schemaKeys: mergedSchemaKeys,
967
+ fileIds: finalFileIds,
968
+ entityIds: finalEntityIds,
969
+ snapshotFilters: finalSnapshotFilters,
970
+ versionIds: mergedVersionIds,
971
+ pruneInheritance: combinedPrune,
972
+ pruneTransactionSegment: combinedTxnPrune,
973
+ };
974
+ map.set(normalizedName, entry);
975
+ };
976
+
977
+ for (const clause of select.from_clauses) {
978
+ if (clause.relation.node_kind === "table_reference") {
979
+ register(clause.relation, null);
980
+ }
981
+ for (const join of clause.joins) {
982
+ if (join.relation.node_kind === "table_reference") {
983
+ register(join.relation, join.on_expression);
984
+ }
985
+ }
986
+ }
987
+
988
+ return map;
989
+ }
990
+
991
+ function rewriteSelectWithClause(
992
+ select: SelectStatementNode,
993
+ context: PreprocessorStepContext,
994
+ predicateMap: Map<string, SubqueryPredicateMetadata>,
995
+ pushdownSchemaKeys: readonly string[],
996
+ pushdownPruneInheritance: boolean,
997
+ pushdownPruneTransactions: boolean,
998
+ pushdownFileIds: readonly string[],
999
+ pushdownEntityIds: readonly string[],
1000
+ pushdownVersionIds: readonly string[],
1001
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[]
1002
+ ): SelectStatementNode {
1003
+ if (!select.with_clause) {
1004
+ return select;
1005
+ }
1006
+ const rewritten = rewriteWithClauseNode(
1007
+ select.with_clause,
1008
+ context,
1009
+ predicateMap,
1010
+ pushdownSchemaKeys,
1011
+ pushdownPruneInheritance,
1012
+ pushdownPruneTransactions,
1013
+ pushdownFileIds,
1014
+ pushdownEntityIds,
1015
+ pushdownVersionIds,
1016
+ pushdownSnapshotFilters
1017
+ );
1018
+ if (rewritten === select.with_clause) {
1019
+ return select;
1020
+ }
1021
+ return {
1022
+ ...select,
1023
+ with_clause: rewritten,
1024
+ };
1025
+ }
1026
+
1027
+ function rewriteWithClauseNode(
1028
+ withClause: WithClauseNode,
1029
+ context: PreprocessorStepContext,
1030
+ predicateMap: Map<string, SubqueryPredicateMetadata>,
1031
+ pushdownSchemaKeys: readonly string[],
1032
+ pushdownPruneInheritance: boolean,
1033
+ pushdownPruneTransactions: boolean,
1034
+ pushdownFileIds: readonly string[],
1035
+ pushdownEntityIds: readonly string[],
1036
+ pushdownVersionIds: readonly string[],
1037
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[]
1038
+ ): WithClauseNode {
1039
+ let changed = false;
1040
+ const rewrittenCtes = withClause.ctes.map((cte) => {
1041
+ const cteName = normalizeIdentifierValue(cte.name.value);
1042
+ const metadata = cteName ? predicateMap.get(cteName) : undefined;
1043
+ const nextSchemaKeys = metadata?.schemaKeys ?? pushdownSchemaKeys;
1044
+ const nextPrune = metadata?.pruneInheritance ?? pushdownPruneInheritance;
1045
+ const nextPruneTransactions =
1046
+ metadata?.pruneTransactionSegment ?? pushdownPruneTransactions;
1047
+ const nextFileIds = metadata?.fileIds ?? pushdownFileIds;
1048
+ const nextEntityIds = metadata?.entityIds ?? pushdownEntityIds;
1049
+ const nextVersionIds = metadata?.versionIds ?? pushdownVersionIds;
1050
+ const nextSnapshotFilters =
1051
+ metadata?.snapshotFilters ?? pushdownSnapshotFilters;
1052
+ const statement =
1053
+ cte.statement.node_kind === "compound_select"
1054
+ ? rewriteCompoundSelect(
1055
+ cte.statement,
1056
+ context,
1057
+ nextSchemaKeys,
1058
+ nextPrune,
1059
+ nextPruneTransactions,
1060
+ nextFileIds,
1061
+ nextEntityIds,
1062
+ nextVersionIds,
1063
+ nextSnapshotFilters
1064
+ )
1065
+ : rewriteSelectStatement(
1066
+ cte.statement,
1067
+ context,
1068
+ nextSchemaKeys,
1069
+ nextPrune,
1070
+ nextPruneTransactions,
1071
+ nextFileIds,
1072
+ nextEntityIds,
1073
+ nextVersionIds,
1074
+ nextSnapshotFilters
1075
+ );
1076
+ if (statement !== cte.statement) {
1077
+ changed = true;
1078
+ return {
1079
+ ...cte,
1080
+ statement,
1081
+ };
1082
+ }
1083
+ return cte;
1084
+ });
1085
+ if (!changed) {
1086
+ return withClause;
1087
+ }
1088
+ return {
1089
+ ...withClause,
1090
+ ctes: rewrittenCtes,
1091
+ };
1092
+ }
1093
+
1094
+ function buildInlineMetadata(
1095
+ select: SelectStatementNode,
1096
+ references: readonly TableReferenceInfo[],
1097
+ parameters: ReadonlyArray<unknown>,
1098
+ pushdownSchemaKeys: readonly string[],
1099
+ pushdownPruneInheritance: boolean,
1100
+ pushdownPruneTransactions: boolean,
1101
+ pushdownFileIds: readonly string[],
1102
+ pushdownEntityIds: readonly string[],
1103
+ pushdownVersionIds: readonly string[],
1104
+ pushdownSnapshotFilters: readonly SnapshotJsonPredicate[]
1105
+ ): Map<string, InlineRewriteMetadata> {
1106
+ const metadata = new Map<string, InlineRewriteMetadata>();
1107
+ for (const reference of references) {
1108
+ const aliasKey = reference.normalizedAlias ?? DEFAULT_ALIAS_KEY;
1109
+ if (metadata.has(aliasKey)) {
1110
+ continue;
1111
+ }
1112
+ const tableNames = new Set<string>([
1113
+ aliasKey,
1114
+ DEFAULT_ALIAS_KEY,
1115
+ ORIGINAL_TABLE_KEY,
1116
+ ]);
1117
+ const summary = collectSchemaKeyPredicates(
1118
+ select.where_clause,
1119
+ tableNames,
1120
+ parameters
1121
+ );
1122
+ const schemaKeys = mergeStringLiterals(
1123
+ pushdownSchemaKeys,
1124
+ summary.literals
1125
+ );
1126
+ const fileSummary = collectFileIdPredicates(
1127
+ select.where_clause,
1128
+ tableNames,
1129
+ parameters
1130
+ );
1131
+ const mergedFileIds = mergeStringLiterals(
1132
+ pushdownFileIds,
1133
+ fileSummary.literals
1134
+ );
1135
+ const entitySummary = collectEntityIdPredicates(
1136
+ select.where_clause,
1137
+ tableNames,
1138
+ parameters
1139
+ );
1140
+ const mergedEntityIds = mergeStringLiterals(
1141
+ pushdownEntityIds,
1142
+ entitySummary.literals
1143
+ );
1144
+ const versionSummary = collectVersionIdPredicates(
1145
+ select.where_clause,
1146
+ tableNames,
1147
+ parameters
1148
+ );
1149
+ const mergedVersionIds = mergeStringLiterals(
1150
+ pushdownVersionIds,
1151
+ versionSummary.literals
1152
+ );
1153
+ const snapshotSummary = collectSnapshotJsonPredicates(
1154
+ select.where_clause,
1155
+ tableNames,
1156
+ parameters
1157
+ );
1158
+ const mergedSnapshotFilters = mergeSnapshotFilters(
1159
+ pushdownSnapshotFilters,
1160
+ snapshotSummary
1161
+ );
1162
+ const fileIds = shouldPushFileFilter(schemaKeys, mergedFileIds)
1163
+ ? mergedFileIds
1164
+ : [];
1165
+ const entityIds = shouldPushEntityFilter(schemaKeys, mergedEntityIds)
1166
+ ? mergedEntityIds
1167
+ : [];
1168
+ const columnSummary = collectSelectedColumns(select, tableNames);
1169
+ const snapshotFilters = shouldPushSnapshotFilters(
1170
+ schemaKeys,
1171
+ mergedSnapshotFilters
1172
+ )
1173
+ ? mergedSnapshotFilters
1174
+ : [];
1175
+ const pruneInheritance =
1176
+ pushdownPruneInheritance ||
1177
+ shouldPruneInheritance(select.where_clause, tableNames, parameters);
1178
+ const pruneTransactionSegment =
1179
+ pushdownPruneTransactions ||
1180
+ shouldPruneTransactionSegment(
1181
+ select.where_clause,
1182
+ tableNames,
1183
+ parameters
1184
+ );
1185
+ metadata.set(aliasKey, {
1186
+ schemaKeys,
1187
+ fileIds,
1188
+ entityIds,
1189
+ snapshotFilters,
1190
+ versionIds: mergedVersionIds,
1191
+ selectedColumns: columnSummary.selectedColumns,
1192
+ hiddenColumns: new Set(columnSummary.requestedHiddenColumns),
1193
+ supportColumns: new Set(columnSummary.supportColumns),
1194
+ pruneInheritance,
1195
+ pruneTransactionSegment,
1196
+ });
1197
+ }
1198
+ return metadata;
1199
+ }
1200
+
1201
+ function shouldPruneInheritance(
1202
+ whereClause: SelectStatementNode["where_clause"],
1203
+ tableNames: Set<string>,
1204
+ parameters: ReadonlyArray<unknown>
1205
+ ): boolean {
1206
+ return requiresNullPredicateForColumn(
1207
+ whereClause,
1208
+ tableNames,
1209
+ parameters,
1210
+ true
1211
+ );
1212
+ }
1213
+
1214
+ function shouldPruneTransactionSegment(
1215
+ whereClause: SelectStatementNode["where_clause"],
1216
+ tableNames: Set<string>,
1217
+ parameters: ReadonlyArray<unknown>
1218
+ ): boolean {
1219
+ return excludesColumnLiteralFromExpression(
1220
+ whereClause,
1221
+ tableNames,
1222
+ parameters,
1223
+ "source_tag",
1224
+ "T",
1225
+ true
1226
+ );
1227
+ }
1228
+
1229
+ function requiresNullPredicateForColumn(
1230
+ expression: ExpressionNode | RawFragmentNode | null,
1231
+ tableNames: Set<string>,
1232
+ parameters: ReadonlyArray<unknown>,
1233
+ allowUnqualified: boolean
1234
+ ): boolean {
1235
+ if (!expression) {
1236
+ return false;
1237
+ }
1238
+ const context: PredicateVisitContext = {
1239
+ tableNames,
1240
+ parameters,
1241
+ allowUnqualified,
1242
+ };
1243
+ return expressionRequiresNullForColumn(
1244
+ expression,
1245
+ "inherited_from_version_id",
1246
+ context
1247
+ );
1248
+ }
1249
+
1250
+ function excludesColumnLiteralFromExpression(
1251
+ expression: ExpressionNode | RawFragmentNode | null,
1252
+ tableNames: Set<string>,
1253
+ parameters: ReadonlyArray<unknown>,
1254
+ columnName: string,
1255
+ literal: string,
1256
+ allowUnqualified: boolean
1257
+ ): boolean {
1258
+ if (!expression) {
1259
+ return false;
1260
+ }
1261
+ const context: PredicateVisitContext = {
1262
+ tableNames,
1263
+ parameters,
1264
+ allowUnqualified,
1265
+ };
1266
+ return expressionExcludesColumnLiteral(
1267
+ expression,
1268
+ columnName,
1269
+ literal,
1270
+ context
1271
+ );
1272
+ }
1273
+
1274
+ function expressionExcludesColumnLiteral(
1275
+ expression: ExpressionNode | RawFragmentNode,
1276
+ columnName: string,
1277
+ literal: string,
1278
+ context: PredicateVisitContext
1279
+ ): boolean {
1280
+ if ("sql_text" in expression) {
1281
+ return false;
1282
+ }
1283
+ switch (expression.node_kind) {
1284
+ case "grouped_expression":
1285
+ return expressionExcludesColumnLiteral(
1286
+ expression.expression,
1287
+ columnName,
1288
+ literal,
1289
+ context
1290
+ );
1291
+ case "binary_expression":
1292
+ if (expression.operator === "and") {
1293
+ return (
1294
+ expressionExcludesColumnLiteral(
1295
+ expression.left,
1296
+ columnName,
1297
+ literal,
1298
+ context
1299
+ ) ||
1300
+ expressionExcludesColumnLiteral(
1301
+ expression.right,
1302
+ columnName,
1303
+ literal,
1304
+ context
1305
+ )
1306
+ );
1307
+ }
1308
+ if (expression.operator === "or") {
1309
+ return (
1310
+ expressionExcludesColumnLiteral(
1311
+ expression.left,
1312
+ columnName,
1313
+ literal,
1314
+ context
1315
+ ) &&
1316
+ expressionExcludesColumnLiteral(
1317
+ expression.right,
1318
+ columnName,
1319
+ literal,
1320
+ context
1321
+ )
1322
+ );
1323
+ }
1324
+ return (
1325
+ columnComparisonExcludes(
1326
+ expression,
1327
+ expression.left,
1328
+ expression.right,
1329
+ columnName,
1330
+ literal,
1331
+ context
1332
+ ) ||
1333
+ columnComparisonExcludes(
1334
+ expression,
1335
+ expression.right,
1336
+ expression.left,
1337
+ columnName,
1338
+ literal,
1339
+ context
1340
+ )
1341
+ );
1342
+ case "in_list_expression": {
1343
+ if (!isColumnReference(expression.operand, context, columnName)) {
1344
+ return false;
1345
+ }
1346
+ const values = expression.items
1347
+ .map((item) => extractStringLiteral(item, context))
1348
+ .filter((value): value is string => typeof value === "string");
1349
+ if (values.length === 0) {
1350
+ return false;
1351
+ }
1352
+ if (expression.negated) {
1353
+ return values.includes(literal);
1354
+ }
1355
+ return !values.includes(literal);
1356
+ }
1357
+ default:
1358
+ return false;
1359
+ }
1360
+ }
1361
+
1362
+ function columnComparisonExcludes(
1363
+ expression: BinaryExpressionNode,
1364
+ columnSide: ExpressionNode | RawFragmentNode,
1365
+ valueSide: ExpressionNode | RawFragmentNode,
1366
+ columnName: string,
1367
+ literal: string,
1368
+ context: PredicateVisitContext
1369
+ ): boolean {
1370
+ if (!isColumnReference(columnSide, context, columnName)) {
1371
+ return false;
1372
+ }
1373
+ const value = extractStringLiteral(valueSide, context);
1374
+ if (typeof value !== "string") {
1375
+ return false;
1376
+ }
1377
+ switch (expression.operator) {
1378
+ case "=":
1379
+ case "is":
1380
+ return value !== literal;
1381
+ case "!=":
1382
+ case "<>":
1383
+ case "is_not":
1384
+ return value === literal;
1385
+ default:
1386
+ return false;
1387
+ }
1388
+ }
1389
+
1390
+ function extractStringLiteral(
1391
+ expression: ExpressionNode | RawFragmentNode,
1392
+ context: PredicateVisitContext
1393
+ ): string | null {
1394
+ const node = unwrapExpression(expression);
1395
+ if ("sql_text" in node) {
1396
+ return null;
1397
+ }
1398
+ if (node.node_kind === "literal") {
1399
+ return typeof node.value === "string" ? node.value : null;
1400
+ }
1401
+ if (node.node_kind === "parameter") {
1402
+ return resolveParameterSchemaLiteral(node, context.parameters);
1403
+ }
1404
+ return null;
1405
+ }
1406
+
1407
+ function createInlineVisitor(
1408
+ metadata: Map<string, InlineRewriteMetadata>,
1409
+ context: PreprocessorStepContext
1410
+ ): AstVisitor {
1411
+ return {
1412
+ table_reference(node: TableReferenceNode) {
1413
+ if (!isInternalStateTable(node)) {
1414
+ return;
1415
+ }
1416
+ const aliasValue = getIdentifierValue(node.alias);
1417
+ const aliasKey = aliasValue
1418
+ ? normalizeIdentifierValue(aliasValue)
1419
+ : DEFAULT_ALIAS_KEY;
1420
+ const metadataEntry = metadata.get(aliasKey);
1421
+ if (!metadataEntry) {
1422
+ return;
1423
+ }
1424
+ const aliasForSql =
1425
+ aliasValue ??
1426
+ getIdentifierValue(node.name.parts.at(-1) ?? null) ??
1427
+ INTERNAL_STATE_VTABLE;
1428
+ const inlineSql = buildVtableSelectRewrite({
1429
+ schemaKeys: metadataEntry.schemaKeys,
1430
+ fileIds: metadataEntry.fileIds,
1431
+ entityIds: metadataEntry.entityIds,
1432
+ snapshotFilters: metadataEntry.snapshotFilters,
1433
+ versionIds: metadataEntry.versionIds,
1434
+ cacheTables: context.getCacheTables!(),
1435
+ selectedColumns: metadataEntry.selectedColumns,
1436
+ hiddenColumns: metadataEntry.hiddenColumns,
1437
+ supportColumns: metadataEntry.supportColumns,
1438
+ hasOpenTransaction: context.hasOpenTransaction!(),
1439
+ pruneInheritance: metadataEntry.pruneInheritance,
1440
+ pruneTransactionSegment: metadataEntry.pruneTransactionSegment,
1441
+ versionInheritance: context.getVersionInheritance
1442
+ ? context.getVersionInheritance()
1443
+ : undefined,
1444
+ }).trimEnd();
1445
+ const fragment: RawFragmentNode = {
1446
+ node_kind: "raw_fragment",
1447
+ sql_text: `${inlineSql} AS ${quoteIdentifier(aliasForSql)}`,
1448
+ };
1449
+ return fragment;
1450
+ },
1451
+ };
1452
+ }
1453
+
1454
+ function collectSchemaKeyPredicates(
1455
+ whereClause: SelectStatementNode["where_clause"],
1456
+ tableNames: Set<string>,
1457
+ parameters: ReadonlyArray<unknown>,
1458
+ allowUnqualified = true
1459
+ ): ColumnPredicateSummary {
1460
+ return collectColumnPredicates(
1461
+ whereClause,
1462
+ tableNames,
1463
+ parameters,
1464
+ "schema_key",
1465
+ allowUnqualified
1466
+ );
1467
+ }
1468
+
1469
+ function collectSchemaKeyPredicatesFromExpression(
1470
+ expression: ExpressionNode | RawFragmentNode | null,
1471
+ tableNames: Set<string>,
1472
+ parameters: ReadonlyArray<unknown>,
1473
+ allowUnqualified: boolean
1474
+ ): ColumnPredicateSummary {
1475
+ return collectColumnPredicatesFromExpression(
1476
+ expression,
1477
+ tableNames,
1478
+ parameters,
1479
+ "schema_key",
1480
+ allowUnqualified
1481
+ );
1482
+ }
1483
+
1484
+ function collectFileIdPredicates(
1485
+ whereClause: SelectStatementNode["where_clause"],
1486
+ tableNames: Set<string>,
1487
+ parameters: ReadonlyArray<unknown>,
1488
+ allowUnqualified = true
1489
+ ): ColumnPredicateSummary {
1490
+ return collectColumnPredicates(
1491
+ whereClause,
1492
+ tableNames,
1493
+ parameters,
1494
+ "file_id",
1495
+ allowUnqualified
1496
+ );
1497
+ }
1498
+
1499
+ function collectFileIdPredicatesFromExpression(
1500
+ expression: ExpressionNode | RawFragmentNode | null,
1501
+ tableNames: Set<string>,
1502
+ parameters: ReadonlyArray<unknown>,
1503
+ allowUnqualified: boolean
1504
+ ): ColumnPredicateSummary {
1505
+ return collectColumnPredicatesFromExpression(
1506
+ expression,
1507
+ tableNames,
1508
+ parameters,
1509
+ "file_id",
1510
+ allowUnqualified
1511
+ );
1512
+ }
1513
+
1514
+ function collectEntityIdPredicates(
1515
+ whereClause: SelectStatementNode["where_clause"],
1516
+ tableNames: Set<string>,
1517
+ parameters: ReadonlyArray<unknown>,
1518
+ allowUnqualified = true
1519
+ ): ColumnPredicateSummary {
1520
+ return collectColumnPredicates(
1521
+ whereClause,
1522
+ tableNames,
1523
+ parameters,
1524
+ "entity_id",
1525
+ allowUnqualified
1526
+ );
1527
+ }
1528
+
1529
+ function collectEntityIdPredicatesFromExpression(
1530
+ expression: ExpressionNode | RawFragmentNode | null,
1531
+ tableNames: Set<string>,
1532
+ parameters: ReadonlyArray<unknown>,
1533
+ allowUnqualified: boolean
1534
+ ): ColumnPredicateSummary {
1535
+ return collectColumnPredicatesFromExpression(
1536
+ expression,
1537
+ tableNames,
1538
+ parameters,
1539
+ "entity_id",
1540
+ allowUnqualified
1541
+ );
1542
+ }
1543
+
1544
+ function collectVersionIdPredicates(
1545
+ whereClause: SelectStatementNode["where_clause"],
1546
+ tableNames: Set<string>,
1547
+ parameters: ReadonlyArray<unknown>,
1548
+ allowUnqualified = true
1549
+ ): ColumnPredicateSummary {
1550
+ return collectColumnPredicates(
1551
+ whereClause,
1552
+ tableNames,
1553
+ parameters,
1554
+ "version_id",
1555
+ allowUnqualified
1556
+ );
1557
+ }
1558
+
1559
+ function collectVersionIdPredicatesFromExpression(
1560
+ expression: ExpressionNode | RawFragmentNode | null,
1561
+ tableNames: Set<string>,
1562
+ parameters: ReadonlyArray<unknown>,
1563
+ allowUnqualified: boolean
1564
+ ): ColumnPredicateSummary {
1565
+ return collectColumnPredicatesFromExpression(
1566
+ expression,
1567
+ tableNames,
1568
+ parameters,
1569
+ "version_id",
1570
+ allowUnqualified
1571
+ );
1572
+ }
1573
+
1574
+ function collectSnapshotJsonPredicates(
1575
+ whereClause: SelectStatementNode["where_clause"],
1576
+ tableNames: Set<string>,
1577
+ parameters: ReadonlyArray<unknown>,
1578
+ allowUnqualified = true
1579
+ ): SnapshotJsonPredicate[] {
1580
+ if (!whereClause) {
1581
+ return [];
1582
+ }
1583
+ const context: PredicateVisitContext = {
1584
+ tableNames,
1585
+ parameters,
1586
+ allowUnqualified,
1587
+ };
1588
+ const summary: SnapshotPredicateAccumulator = new Map();
1589
+ collectSnapshotPredicatesFromExpression(whereClause, context, summary);
1590
+ return snapshotSummaryToPredicates(summary);
1591
+ }
1592
+
1593
+ function collectSnapshotJsonPredicatesFromExpression(
1594
+ expression: ExpressionNode | RawFragmentNode | null,
1595
+ tableNames: Set<string>,
1596
+ parameters: ReadonlyArray<unknown>,
1597
+ allowUnqualified: boolean
1598
+ ): SnapshotJsonPredicate[] {
1599
+ if (!expression) {
1600
+ return [];
1601
+ }
1602
+ const context: PredicateVisitContext = {
1603
+ tableNames,
1604
+ parameters,
1605
+ allowUnqualified,
1606
+ };
1607
+ const summary: SnapshotPredicateAccumulator = new Map();
1608
+ collectSnapshotPredicatesFromExpression(expression, context, summary);
1609
+ return snapshotSummaryToPredicates(summary);
1610
+ }
1611
+
1612
+ function collectSnapshotPredicatesFromExpression(
1613
+ expression: ExpressionNode | RawFragmentNode,
1614
+ context: PredicateVisitContext,
1615
+ summary: SnapshotPredicateAccumulator
1616
+ ): void {
1617
+ if ("sql_text" in expression) {
1618
+ return;
1619
+ }
1620
+ switch (expression.node_kind) {
1621
+ case "grouped_expression":
1622
+ collectSnapshotPredicatesFromExpression(
1623
+ expression.expression,
1624
+ context,
1625
+ summary
1626
+ );
1627
+ return;
1628
+ case "binary_expression": {
1629
+ if (isLogicalOperator(expression.operator)) {
1630
+ collectSnapshotPredicatesFromExpression(
1631
+ expression.left,
1632
+ context,
1633
+ summary
1634
+ );
1635
+ collectSnapshotPredicatesFromExpression(
1636
+ expression.right,
1637
+ context,
1638
+ summary
1639
+ );
1640
+ return;
1641
+ }
1642
+ if (!isEqualityOperator(expression.operator)) {
1643
+ return;
1644
+ }
1645
+ const leftPath = extractSnapshotJsonPath(expression.left, context);
1646
+ if (leftPath) {
1647
+ incrementSnapshotSummaryWithOperand(
1648
+ summary,
1649
+ leftPath,
1650
+ expression.right,
1651
+ context
1652
+ );
1653
+ }
1654
+ const rightPath = extractSnapshotJsonPath(expression.right, context);
1655
+ if (rightPath) {
1656
+ incrementSnapshotSummaryWithOperand(
1657
+ summary,
1658
+ rightPath,
1659
+ expression.left,
1660
+ context
1661
+ );
1662
+ }
1663
+ return;
1664
+ }
1665
+ case "in_list_expression": {
1666
+ if (expression.negated) {
1667
+ return;
1668
+ }
1669
+ const path = extractSnapshotJsonPath(expression.operand, context);
1670
+ if (!path) {
1671
+ return;
1672
+ }
1673
+ for (const item of expression.items) {
1674
+ incrementSnapshotSummaryWithOperand(summary, path, item, context);
1675
+ }
1676
+ return;
1677
+ }
1678
+ case "unary_expression":
1679
+ collectSnapshotPredicatesFromExpression(
1680
+ expression.operand,
1681
+ context,
1682
+ summary
1683
+ );
1684
+ return;
1685
+ default:
1686
+ return;
1687
+ }
1688
+ }
1689
+
1690
+ function incrementSnapshotSummaryWithOperand(
1691
+ summary: SnapshotPredicateAccumulator,
1692
+ path: string,
1693
+ operand: ExpressionNode | RawFragmentNode,
1694
+ context: PredicateVisitContext
1695
+ ): void {
1696
+ const value = extractStringLiteral(operand, context);
1697
+ if (typeof value !== "string") {
1698
+ return;
1699
+ }
1700
+ const existing = summary.get(path) ?? new Set<string>();
1701
+ existing.add(value);
1702
+ summary.set(path, existing);
1703
+ }
1704
+
1705
+ function snapshotSummaryToPredicates(
1706
+ summary: SnapshotPredicateAccumulator
1707
+ ): SnapshotJsonPredicate[] {
1708
+ return Array.from(summary.entries()).map(([path, values]) => ({
1709
+ path,
1710
+ values: Array.from(values),
1711
+ }));
1712
+ }
1713
+
1714
+ function extractSnapshotJsonPath(
1715
+ expression: ExpressionNode | RawFragmentNode,
1716
+ context: PredicateVisitContext
1717
+ ): string | null {
1718
+ const node = unwrapExpression(expression);
1719
+ if ("sql_text" in node) {
1720
+ return null;
1721
+ }
1722
+ switch (node.node_kind) {
1723
+ case "grouped_expression":
1724
+ return extractSnapshotJsonPath(node.expression, context);
1725
+ case "function_call": {
1726
+ const functionName = node.name.value.toLowerCase();
1727
+ if (functionName !== "json_extract") {
1728
+ return null;
1729
+ }
1730
+ const [targetArg, pathArg] = node.arguments;
1731
+ if (
1732
+ !targetArg ||
1733
+ !pathArg ||
1734
+ targetArg.node_kind === "all_columns" ||
1735
+ pathArg.node_kind === "all_columns"
1736
+ ) {
1737
+ return null;
1738
+ }
1739
+ const referencedColumn = resolveReferencedColumn(
1740
+ targetArg as ExpressionNode | RawFragmentNode,
1741
+ context
1742
+ );
1743
+ if (referencedColumn !== "snapshot_content") {
1744
+ return null;
1745
+ }
1746
+ return extractLiteralString(
1747
+ pathArg as ExpressionNode | RawFragmentNode,
1748
+ context.parameters
1749
+ );
1750
+ }
1751
+ default:
1752
+ return null;
1753
+ }
1754
+ }
1755
+
1756
+ function collectColumnPredicates(
1757
+ whereClause: SelectStatementNode["where_clause"],
1758
+ tableNames: Set<string>,
1759
+ parameters: ReadonlyArray<unknown>,
1760
+ columnName: string,
1761
+ allowUnqualified = true
1762
+ ): ColumnPredicateSummary {
1763
+ if (!whereClause) {
1764
+ return { count: 0, literals: [] };
1765
+ }
1766
+ const context: PredicateVisitContext = {
1767
+ tableNames,
1768
+ parameters,
1769
+ allowUnqualified,
1770
+ };
1771
+ return visitExpression(whereClause, context, columnName);
1772
+ }
1773
+
1774
+ function collectColumnPredicatesFromExpression(
1775
+ expression: ExpressionNode | RawFragmentNode | null,
1776
+ tableNames: Set<string>,
1777
+ parameters: ReadonlyArray<unknown>,
1778
+ columnName: string,
1779
+ allowUnqualified: boolean
1780
+ ): ColumnPredicateSummary {
1781
+ if (!expression) {
1782
+ return { count: 0, literals: [] };
1783
+ }
1784
+ const context: PredicateVisitContext = {
1785
+ tableNames,
1786
+ parameters,
1787
+ allowUnqualified,
1788
+ };
1789
+ return visitExpression(expression, context, columnName);
1790
+ }
1791
+
1792
+ function expressionRequiresNullForColumn(
1793
+ expression: ExpressionNode | RawFragmentNode,
1794
+ columnName: string,
1795
+ context: PredicateVisitContext
1796
+ ): boolean {
1797
+ if ("sql_text" in expression) {
1798
+ return false;
1799
+ }
1800
+ switch (expression.node_kind) {
1801
+ case "grouped_expression":
1802
+ return expressionRequiresNullForColumn(
1803
+ expression.expression,
1804
+ columnName,
1805
+ context
1806
+ );
1807
+ case "binary_expression":
1808
+ if (expression.operator === "and") {
1809
+ return (
1810
+ expressionRequiresNullForColumn(
1811
+ expression.left,
1812
+ columnName,
1813
+ context
1814
+ ) ||
1815
+ expressionRequiresNullForColumn(expression.right, columnName, context)
1816
+ );
1817
+ }
1818
+ if (expression.operator === "or") {
1819
+ return (
1820
+ expressionRequiresNullForColumn(
1821
+ expression.left,
1822
+ columnName,
1823
+ context
1824
+ ) &&
1825
+ expressionRequiresNullForColumn(expression.right, columnName, context)
1826
+ );
1827
+ }
1828
+ if (expression.operator === "is") {
1829
+ const leftMatches = isColumnReference(
1830
+ expression.left,
1831
+ context,
1832
+ columnName
1833
+ );
1834
+ const rightMatches = isColumnReference(
1835
+ expression.right,
1836
+ context,
1837
+ columnName
1838
+ );
1839
+ if (
1840
+ (leftMatches &&
1841
+ isNullLiteralExpression(expression.right, context.parameters)) ||
1842
+ (rightMatches &&
1843
+ isNullLiteralExpression(expression.left, context.parameters))
1844
+ ) {
1845
+ return true;
1846
+ }
1847
+ }
1848
+ return false;
1849
+ default:
1850
+ return false;
1851
+ }
1852
+ }
1853
+
1854
+ function visitExpression(
1855
+ expression: ExpressionNode | RawFragmentNode,
1856
+ context: PredicateVisitContext,
1857
+ columnName: string
1858
+ ): ColumnPredicateSummary {
1859
+ if ("sql_text" in expression) {
1860
+ return { count: 0, literals: [] };
1861
+ }
1862
+
1863
+ switch (expression.node_kind) {
1864
+ case "grouped_expression":
1865
+ return visitExpression(expression.expression, context, columnName);
1866
+ case "binary_expression":
1867
+ return visitBinaryExpression(expression, context, columnName);
1868
+ case "unary_expression":
1869
+ return visitExpression(expression.operand, context, columnName);
1870
+ case "in_list_expression":
1871
+ return visitInListExpression(expression, context, columnName);
1872
+ case "between_expression":
1873
+ return visitBetweenExpression(expression, context, columnName);
1874
+ case "column_reference":
1875
+ case "literal":
1876
+ case "parameter":
1877
+ default:
1878
+ return { count: 0, literals: [] };
1879
+ }
1880
+ }
1881
+
1882
+ function visitBinaryExpression(
1883
+ expression: BinaryExpressionNode,
1884
+ context: PredicateVisitContext,
1885
+ columnName: string
1886
+ ): ColumnPredicateSummary {
1887
+ if (isLogicalOperator(expression.operator)) {
1888
+ return mergeSummaries(
1889
+ visitExpression(expression.left, context, columnName),
1890
+ visitExpression(expression.right, context, columnName)
1891
+ );
1892
+ }
1893
+
1894
+ if (!isEqualityOperator(expression.operator)) {
1895
+ return { count: 0, literals: [] };
1896
+ }
1897
+
1898
+ let summary: ColumnPredicateSummary = {
1899
+ count: 0,
1900
+ literals: [],
1901
+ };
1902
+
1903
+ const leftMatches = isColumnReference(expression.left, context, columnName);
1904
+ const rightMatches = isColumnReference(expression.right, context, columnName);
1905
+
1906
+ if (leftMatches) {
1907
+ summary = incrementSummaryWithOperand(summary, expression.right, context);
1908
+ }
1909
+ if (rightMatches) {
1910
+ summary = incrementSummaryWithOperand(summary, expression.left, context);
1911
+ }
1912
+
1913
+ return summary;
1914
+ }
1915
+
1916
+ function visitInListExpression(
1917
+ expression: InListExpressionNode,
1918
+ context: PredicateVisitContext,
1919
+ columnName: string
1920
+ ): ColumnPredicateSummary {
1921
+ if (!isColumnReference(expression.operand, context, columnName)) {
1922
+ return { count: 0, literals: [] };
1923
+ }
1924
+ let summary: ColumnPredicateSummary = {
1925
+ count: 1,
1926
+ literals: [],
1927
+ };
1928
+ for (const item of expression.items) {
1929
+ summary = incrementSummaryWithOperand(summary, item, context);
1930
+ }
1931
+ return summary;
1932
+ }
1933
+
1934
+ function visitBetweenExpression(
1935
+ expression: BetweenExpressionNode,
1936
+ context: PredicateVisitContext,
1937
+ columnName: string
1938
+ ): ColumnPredicateSummary {
1939
+ if (!isColumnReference(expression.operand, context, columnName)) {
1940
+ return { count: 0, literals: [] };
1941
+ }
1942
+ let summary: ColumnPredicateSummary = {
1943
+ count: 1,
1944
+ literals: [],
1945
+ };
1946
+ summary = incrementSummaryWithOperand(summary, expression.start, context);
1947
+ summary = incrementSummaryWithOperand(summary, expression.end, context);
1948
+ return summary;
1949
+ }
1950
+
1951
+ function incrementSummaryWithOperand(
1952
+ summary: ColumnPredicateSummary,
1953
+ operand: ExpressionNode | RawFragmentNode,
1954
+ context: PredicateVisitContext
1955
+ ): ColumnPredicateSummary {
1956
+ const next = { ...summary };
1957
+ const node = unwrapExpression(operand);
1958
+ switch (node.node_kind) {
1959
+ case "literal":
1960
+ if (typeof node.value === "string") {
1961
+ next.literals.push(node.value);
1962
+ }
1963
+ break;
1964
+ case "parameter": {
1965
+ const resolved = resolveParameterSchemaLiteral(node, context.parameters);
1966
+ if (typeof resolved === "string") {
1967
+ next.literals.push(resolved);
1968
+ }
1969
+ break;
1970
+ }
1971
+ default:
1972
+ break;
1973
+ }
1974
+ next.count += 1;
1975
+ return next;
1976
+ }
1977
+
1978
+ function isNullLiteralExpression(
1979
+ expression: ExpressionNode | RawFragmentNode,
1980
+ parameters: ReadonlyArray<unknown>
1981
+ ): boolean {
1982
+ const node = unwrapExpression(expression);
1983
+ if ("sql_text" in node) {
1984
+ return false;
1985
+ }
1986
+ if (node.node_kind === "literal") {
1987
+ return node.value === null;
1988
+ }
1989
+ if (node.node_kind === "parameter") {
1990
+ return resolveParameterValue(node, parameters) === null;
1991
+ }
1992
+ return false;
1993
+ }
1994
+
1995
+ function resolveParameterSchemaLiteral(
1996
+ parameter: ParameterExpressionNode,
1997
+ parameters: ReadonlyArray<unknown>
1998
+ ): string | null {
1999
+ const value = resolveParameterValue(parameter, parameters);
2000
+ return typeof value === "string" ? value : null;
2001
+ }
2002
+
2003
+ function resolveParameterValue(
2004
+ parameter: ParameterExpressionNode,
2005
+ parameters: ReadonlyArray<unknown>
2006
+ ): unknown {
2007
+ const index = parameter.position;
2008
+ if (typeof index === "number" && index >= 0 && index < parameters.length) {
2009
+ return parameters[index];
2010
+ }
2011
+ return undefined;
2012
+ }
2013
+
2014
+ function unwrapExpression(
2015
+ expression: ExpressionNode | RawFragmentNode
2016
+ ): ExpressionNode | RawFragmentNode {
2017
+ if ("sql_text" in expression) {
2018
+ return expression;
2019
+ }
2020
+ if (expression.node_kind === "grouped_expression") {
2021
+ return unwrapExpression(expression.expression);
2022
+ }
2023
+ return expression;
2024
+ }
2025
+
2026
+ function isColumnReference(
2027
+ expression: ExpressionNode | RawFragmentNode,
2028
+ context: PredicateVisitContext,
2029
+ expectedColumn: string
2030
+ ): boolean {
2031
+ const column = resolveReferencedColumn(expression, context);
2032
+ return column === expectedColumn;
2033
+ }
2034
+
2035
+ function resolveReferencedColumn(
2036
+ expression: ExpressionNode | RawFragmentNode,
2037
+ context: PredicateVisitContext
2038
+ ): string | null {
2039
+ if ("sql_text" in expression) {
2040
+ return null;
2041
+ }
2042
+ switch (expression.node_kind) {
2043
+ case "column_reference": {
2044
+ const qualifier = getColumnQualifier(expression);
2045
+ const columnName = getColumnName(expression);
2046
+ if (qualifier && context.tableNames.has(qualifier)) {
2047
+ return columnName;
2048
+ }
2049
+ if (!qualifier && context.allowUnqualified) {
2050
+ return columnName;
2051
+ }
2052
+ return null;
2053
+ }
2054
+ case "grouped_expression":
2055
+ return resolveReferencedColumn(expression.expression, context);
2056
+ case "function_call":
2057
+ return resolveColumnFromFunctionCall(expression, context);
2058
+ default:
2059
+ return null;
2060
+ }
2061
+ }
2062
+
2063
+ function resolveColumnFromFunctionCall(
2064
+ expression: Extract<ExpressionNode, { node_kind: "function_call" }>,
2065
+ context: PredicateVisitContext
2066
+ ): string | null {
2067
+ const functionName = expression.name.value.toLowerCase();
2068
+ if (functionName !== "json_extract") {
2069
+ return null;
2070
+ }
2071
+ const [target, pathArg] = expression.arguments;
2072
+ if (
2073
+ !target ||
2074
+ !pathArg ||
2075
+ target.node_kind === "all_columns" ||
2076
+ pathArg.node_kind === "all_columns"
2077
+ ) {
2078
+ return null;
2079
+ }
2080
+ const targetExpr = target as ExpressionNode | RawFragmentNode;
2081
+ const referencedColumn = resolveReferencedColumn(targetExpr, context);
2082
+ if (referencedColumn !== "snapshot_content") {
2083
+ return null;
2084
+ }
2085
+ if (!SNAPSHOT_ENTITY_FILTER_PUSH_ENABLED) {
2086
+ return null;
2087
+ }
2088
+ const pathExpression = pathArg as ExpressionNode | RawFragmentNode;
2089
+ const literalPath = extractLiteralString(pathExpression, context.parameters);
2090
+ if (!literalPath) {
2091
+ return null;
2092
+ }
2093
+ return mapSnapshotJsonColumnFromPath(literalPath);
2094
+ }
2095
+
2096
+ function extractLiteralString(
2097
+ expression: ExpressionNode | RawFragmentNode,
2098
+ parameters: ReadonlyArray<unknown>
2099
+ ): string | null {
2100
+ const node = unwrapExpression(expression);
2101
+ if ("sql_text" in node) {
2102
+ return null;
2103
+ }
2104
+ if (node.node_kind === "literal" && typeof node.value === "string") {
2105
+ return node.value;
2106
+ }
2107
+ if (node.node_kind === "parameter") {
2108
+ const value = resolveParameterValue(node, parameters);
2109
+ return typeof value === "string" ? value : null;
2110
+ }
2111
+ return null;
2112
+ }
2113
+
2114
+ /**
2115
+ * Maps recognized json_extract paths to their corresponding physical columns.
2116
+ *
2117
+ * @param path - JSON path literal extracted from a json_extract() call.
2118
+ * @returns The name of the backing column or null when the path is unsupported.
2119
+ *
2120
+ * @example
2121
+ * ```ts
2122
+ * mapSnapshotJsonColumnFromPath("$.id");
2123
+ * // => "entity_id"
2124
+ * ```
2125
+ */
2126
+ function mapSnapshotJsonColumnFromPath(path: string): string | null {
2127
+ const trimmed = path.trim();
2128
+ const candidates = new Set<string>([trimmed]);
2129
+ const unquoted = trimmed.replace(
2130
+ /\."([^"]+)"(?=\.|$)/g,
2131
+ (_, segment: string) => `.${segment}`
2132
+ );
2133
+ candidates.add(unquoted);
2134
+ for (const candidate of candidates) {
2135
+ if (SNAPSHOT_JSON_ENTITY_PATHS.has(candidate)) {
2136
+ return "entity_id";
2137
+ }
2138
+ }
2139
+ return null;
2140
+ }
2141
+
2142
+ function isLogicalOperator(
2143
+ operator: BinaryExpressionNode["operator"]
2144
+ ): boolean {
2145
+ return operator === "and" || operator === "or";
2146
+ }
2147
+
2148
+ function isEqualityOperator(
2149
+ operator: BinaryExpressionNode["operator"]
2150
+ ): boolean {
2151
+ return operator === "=" || operator === "is";
2152
+ }
2153
+
2154
+ function mergeSummaries(
2155
+ ...summaries: ColumnPredicateSummary[]
2156
+ ): ColumnPredicateSummary {
2157
+ return summaries.reduce<ColumnPredicateSummary>(
2158
+ (accumulator, current) => {
2159
+ accumulator.count += current.count;
2160
+ accumulator.literals.push(...current.literals);
2161
+ return accumulator;
2162
+ },
2163
+ { count: 0, literals: [] }
2164
+ );
2165
+ }
2166
+
2167
+ function mergeStringLiterals(
2168
+ ...lists: readonly (readonly string[])[]
2169
+ ): string[] {
2170
+ const seen = new Set<string>();
2171
+ const merged: string[] = [];
2172
+ for (const list of lists) {
2173
+ for (const item of list) {
2174
+ if (typeof item !== "string") {
2175
+ continue;
2176
+ }
2177
+ if (!seen.has(item)) {
2178
+ seen.add(item);
2179
+ merged.push(item);
2180
+ }
2181
+ }
2182
+ }
2183
+ return merged;
2184
+ }
2185
+
2186
+ function mergeSnapshotFilters(
2187
+ ...lists: readonly (readonly SnapshotJsonPredicate[] | undefined)[]
2188
+ ): SnapshotJsonPredicate[] {
2189
+ const merged = new Map<string, Set<string>>();
2190
+ for (const list of lists) {
2191
+ if (!list) {
2192
+ continue;
2193
+ }
2194
+ for (const entry of list) {
2195
+ if (!entry || typeof entry.path !== "string") {
2196
+ continue;
2197
+ }
2198
+ const valueSet = merged.get(entry.path) ?? new Set<string>();
2199
+ for (const value of entry.values ?? []) {
2200
+ if (typeof value === "string") {
2201
+ valueSet.add(value);
2202
+ }
2203
+ }
2204
+ if (valueSet.size > 0) {
2205
+ merged.set(entry.path, valueSet);
2206
+ }
2207
+ }
2208
+ }
2209
+ return Array.from(merged.entries()).map(([path, values]) => ({
2210
+ path,
2211
+ values: Array.from(values),
2212
+ }));
2213
+ }
2214
+
2215
+ function collectSelectedColumns(
2216
+ select: SelectStatementNode,
2217
+ tableNames: Set<string>
2218
+ ): ColumnSelectionSummary {
2219
+ const hiddenSelections = new Set<string>();
2220
+ const supportColumns = new Set<string>();
2221
+
2222
+ if (select.projection.length === 0) {
2223
+ return {
2224
+ selectedColumns: null,
2225
+ requestedHiddenColumns: hiddenSelections,
2226
+ supportColumns,
2227
+ };
2228
+ }
2229
+
2230
+ const order: string[] = [];
2231
+ const entries = new Map<string, SelectedProjection>();
2232
+ let hasUnresolvedProjection = false;
2233
+ let selectsAll = false;
2234
+
2235
+ for (const item of select.projection) {
2236
+ if (isSelectAllForTable(item, tableNames)) {
2237
+ selectsAll = true;
2238
+ continue;
2239
+ }
2240
+ if (item.node_kind !== "select_expression") {
2241
+ hasUnresolvedProjection = true;
2242
+ continue;
2243
+ }
2244
+ const columnName = extractColumnFromExpression(item.expression, tableNames);
2245
+ if (!columnName) {
2246
+ hasUnresolvedProjection = true;
2247
+ continue;
2248
+ }
2249
+ if (HIDDEN_SEGMENT_COLUMN_SET.has(columnName)) {
2250
+ hiddenSelections.add(columnName);
2251
+ }
2252
+ const alias = getIdentifierValue(item.alias);
2253
+ if (!entries.has(columnName)) {
2254
+ order.push(columnName);
2255
+ entries.set(columnName, {
2256
+ column: columnName,
2257
+ alias: alias ?? null,
2258
+ });
2259
+ } else if (alias) {
2260
+ const existing = entries.get(columnName)!;
2261
+ if (existing.alias === null) {
2262
+ entries.set(columnName, {
2263
+ column: columnName,
2264
+ alias,
2265
+ });
2266
+ }
2267
+ }
2268
+ }
2269
+
2270
+ const referenced = collectReferencedColumnSummary(select, tableNames);
2271
+ if (referenced.hasUnknownReferences) {
2272
+ hasUnresolvedProjection = true;
2273
+ }
2274
+
2275
+ for (const column of referenced.columns) {
2276
+ if (HIDDEN_SEGMENT_COLUMN_SET.has(column)) {
2277
+ hiddenSelections.add(column);
2278
+ }
2279
+ if (!entries.has(column)) {
2280
+ supportColumns.add(column);
2281
+ }
2282
+ }
2283
+
2284
+ if (hasUnresolvedProjection || selectsAll) {
2285
+ return {
2286
+ selectedColumns: null,
2287
+ requestedHiddenColumns: hiddenSelections,
2288
+ supportColumns,
2289
+ };
2290
+ }
2291
+
2292
+ return {
2293
+ selectedColumns: order.map((column) => entries.get(column)!),
2294
+ requestedHiddenColumns: hiddenSelections,
2295
+ supportColumns,
2296
+ };
2297
+ }
2298
+
2299
+ function collectReferencedColumnSummary(
2300
+ select: SelectStatementNode,
2301
+ tableNames: Set<string>
2302
+ ): {
2303
+ columns: Set<string>;
2304
+ hasUnknownReferences: boolean;
2305
+ } {
2306
+ const columns = new Set<string>();
2307
+ let hasUnknownReferences = false;
2308
+
2309
+ const visit = (expression: ExpressionNode | RawFragmentNode | null) => {
2310
+ if (hasUnknownReferences || !expression) {
2311
+ return;
2312
+ }
2313
+ if ("sql_text" in expression) {
2314
+ hasUnknownReferences = true;
2315
+ return;
2316
+ }
2317
+ switch (expression.node_kind) {
2318
+ case "column_reference": {
2319
+ const qualifier = getColumnQualifier(expression);
2320
+ if (qualifier && !tableNames.has(qualifier)) {
2321
+ return;
2322
+ }
2323
+ const columnName = getColumnName(expression);
2324
+ if (columnName) {
2325
+ columns.add(columnName);
2326
+ }
2327
+ return;
2328
+ }
2329
+ case "binary_expression":
2330
+ visit(expression.left);
2331
+ visit(expression.right);
2332
+ return;
2333
+ case "unary_expression":
2334
+ visit(expression.operand);
2335
+ return;
2336
+ case "grouped_expression":
2337
+ visit(expression.expression);
2338
+ return;
2339
+ case "function_call":
2340
+ for (const argument of expression.arguments) {
2341
+ if (argument.node_kind === "all_columns") {
2342
+ continue;
2343
+ }
2344
+ visit(argument);
2345
+ }
2346
+ return;
2347
+ case "in_list_expression":
2348
+ visit(expression.operand);
2349
+ for (const item of expression.items) {
2350
+ visit(item);
2351
+ }
2352
+ return;
2353
+ case "between_expression":
2354
+ visit(expression.operand);
2355
+ visit(expression.start);
2356
+ visit(expression.end);
2357
+ return;
2358
+ case "subquery_expression":
2359
+ hasUnknownReferences = true;
2360
+ return;
2361
+ case "literal":
2362
+ case "parameter":
2363
+ return;
2364
+ default:
2365
+ return;
2366
+ }
2367
+ };
2368
+
2369
+ visit(select.where_clause);
2370
+ for (const clause of select.from_clauses) {
2371
+ for (const join of clause.joins) {
2372
+ visit(join.on_expression);
2373
+ }
2374
+ }
2375
+ for (const order of select.order_by) {
2376
+ visit(order.expression);
2377
+ }
2378
+
2379
+ return { columns, hasUnknownReferences };
2380
+ }
2381
+
2382
+ function extractColumnFromExpression(
2383
+ expression: ExpressionNode | RawFragmentNode,
2384
+ tableNames: Set<string>
2385
+ ): string | null {
2386
+ if ("sql_text" in expression) {
2387
+ return null;
2388
+ }
2389
+ switch (expression.node_kind) {
2390
+ case "column_reference": {
2391
+ const qualifier = getColumnQualifier(expression);
2392
+ if (qualifier && !tableNames.has(qualifier)) {
2393
+ return null;
2394
+ }
2395
+ return getColumnName(expression);
2396
+ }
2397
+ case "grouped_expression":
2398
+ return extractColumnFromExpression(expression.expression, tableNames);
2399
+ case "function_call":
2400
+ return extractColumnFromFunctionCall(expression, tableNames);
2401
+ default:
2402
+ return null;
2403
+ }
2404
+ }
2405
+
2406
+ function extractColumnFromFunctionCall(
2407
+ expression: Extract<ExpressionNode, { node_kind: "function_call" }>,
2408
+ tableNames: Set<string>
2409
+ ): string | null {
2410
+ let referencedColumn: string | null = null;
2411
+ for (const argument of expression.arguments) {
2412
+ if (argument.node_kind === "all_columns") {
2413
+ return null;
2414
+ }
2415
+ const extracted = extractColumnFromExpression(argument, tableNames);
2416
+ if (extracted) {
2417
+ if (referencedColumn && referencedColumn !== extracted) {
2418
+ return null;
2419
+ }
2420
+ referencedColumn = extracted;
2421
+ continue;
2422
+ }
2423
+ if (!isLiteralOrParameter(argument)) {
2424
+ return null;
2425
+ }
2426
+ }
2427
+ return referencedColumn;
2428
+ }
2429
+
2430
+ function isLiteralOrParameter(
2431
+ expression: ExpressionNode | RawFragmentNode
2432
+ ): boolean {
2433
+ if ("sql_text" in expression) {
2434
+ return false;
2435
+ }
2436
+ switch (expression.node_kind) {
2437
+ case "literal":
2438
+ case "parameter":
2439
+ return true;
2440
+ case "grouped_expression":
2441
+ return isLiteralOrParameter(expression.expression);
2442
+ default:
2443
+ return false;
2444
+ }
2445
+ }
2446
+
2447
+ function determineProjectionKind(
2448
+ projection: readonly SelectItemNode[],
2449
+ tableNames: Set<string>
2450
+ ): "selectAll" | "partial" {
2451
+ for (const item of projection) {
2452
+ if (isSelectAllForTable(item, tableNames)) {
2453
+ return "selectAll";
2454
+ }
2455
+ }
2456
+ return "partial";
2457
+ }
2458
+
2459
+ function buildTraceEntry(args: {
2460
+ aliasList: readonly string[];
2461
+ projectionKind: "selectAll" | "partial";
2462
+ schemaSummary: ColumnPredicateSummary;
2463
+ selectedColumns: SelectedProjection[] | null;
2464
+ }): PreprocessorTraceEntry {
2465
+ const { aliasList, schemaSummary, projectionKind, selectedColumns } = args;
2466
+ const referenceCount = aliasList.length === 0 ? 1 : aliasList.length;
2467
+ return {
2468
+ step: "rewrite_vtable_selects",
2469
+ payload: {
2470
+ reference_count: referenceCount,
2471
+ aliases: aliasList,
2472
+ projection: projectionKind,
2473
+ schema_key_predicates: schemaSummary.count,
2474
+ schema_key_literals: schemaSummary.literals,
2475
+ selected_columns: selectedColumns
2476
+ ? selectedColumns.map((entry) => entry.column)
2477
+ : null,
2478
+ },
2479
+ };
2480
+ }
2481
+
2482
+ function buildVtableSelectRewrite(options: {
2483
+ schemaKeys: readonly string[];
2484
+ fileIds: readonly string[];
2485
+ entityIds: readonly string[];
2486
+ snapshotFilters: readonly SnapshotJsonPredicate[];
2487
+ versionIds: readonly string[];
2488
+ cacheTables: Map<string, unknown>;
2489
+ selectedColumns: SelectedProjection[] | null;
2490
+ hiddenColumns: ReadonlySet<string>;
2491
+ supportColumns: ReadonlySet<string>;
2492
+ hasOpenTransaction: boolean;
2493
+ pruneInheritance: boolean;
2494
+ pruneTransactionSegment: boolean;
2495
+ versionInheritance?: VersionInheritanceMap;
2496
+ }): string {
2497
+ const schemaFilterList = options.schemaKeys ?? [];
2498
+ const requestedVersionIds = Array.from(new Set(options.versionIds ?? []));
2499
+ const wantedVersionsCteName =
2500
+ requestedVersionIds.length > 0 ? "wanted_versions" : null;
2501
+ const { candidateColumns, rankedColumns } = buildProjectionColumnSet(
2502
+ options.selectedColumns,
2503
+ options.hiddenColumns,
2504
+ options.supportColumns
2505
+ );
2506
+ candidateColumns.add("priority");
2507
+ rankedColumns.add("priority");
2508
+ const inheritancePlan = determineInheritancePlan({
2509
+ requestedVersionIds: options.versionIds,
2510
+ versionInheritance: options.versionInheritance,
2511
+ forcedPrune: options.pruneInheritance,
2512
+ });
2513
+ const schemaFilter = buildSchemaFilter(schemaFilterList);
2514
+ const fileFilter =
2515
+ options.fileIds && options.fileIds.length > 0
2516
+ ? buildFileFilter(options.fileIds)
2517
+ : null;
2518
+ const entityFilter =
2519
+ options.entityIds && options.entityIds.length > 0
2520
+ ? buildEntityFilter(options.entityIds)
2521
+ : null;
2522
+ const snapshotFilter = buildSnapshotContentFilter(options.snapshotFilters);
2523
+ const txnFilter = combineFilters(
2524
+ schemaFilter,
2525
+ fileFilter,
2526
+ entityFilter,
2527
+ snapshotFilter
2528
+ );
2529
+ const inheritedFilter = combineFilters(
2530
+ schemaFilter,
2531
+ fileFilter,
2532
+ entityFilter,
2533
+ snapshotFilter
2534
+ );
2535
+ const buildVersionJoin = (alias: string, joinAlias: string) =>
2536
+ buildWantedVersionJoinClause(wantedVersionsCteName, alias, joinAlias);
2537
+ const txnVersionJoin = buildVersionJoin("txn", "wv_txn");
2538
+ const untrackedVersionJoin = buildVersionJoin("unt", "wv_unt");
2539
+ const cacheVersionJoin = buildVersionJoin("cache", "wv_cache");
2540
+ const inheritanceVersionJoin = buildVersionJoin("vi", "wv_vi");
2541
+ const parentVersionJoin = buildVersionJoin("vi", "wv_parent");
2542
+ const needsWriterJoin = candidateColumns.has("writer_key");
2543
+ if (needsWriterJoin) {
2544
+ candidateColumns.add("inherited_from_version_id");
2545
+ rankedColumns.add("inherited_from_version_id");
2546
+ }
2547
+ const needsChangeJoin = candidateColumns.has("metadata");
2548
+ const projectionSql = buildRewriteProjectionSql(options.selectedColumns, {
2549
+ supportColumns: options.supportColumns,
2550
+ needsWriterJoin,
2551
+ candidateColumns,
2552
+ });
2553
+ const cacheSource = buildCacheSource(
2554
+ schemaFilterList,
2555
+ options.cacheTables,
2556
+ candidateColumns
2557
+ );
2558
+ const rankingOrder = [
2559
+ "c.priority",
2560
+ "c.created_at DESC",
2561
+ "c.file_id",
2562
+ "c.schema_key",
2563
+ "c.entity_id",
2564
+ "c.version_id",
2565
+ "c.change_id",
2566
+ ];
2567
+ const segments: string[] = [];
2568
+ if (
2569
+ options.hasOpenTransaction !== false &&
2570
+ !options.pruneTransactionSegment
2571
+ ) {
2572
+ segments.push(
2573
+ buildTransactionSegment(txnFilter, candidateColumns, txnVersionJoin)
2574
+ );
2575
+ }
2576
+ segments.push(
2577
+ buildUntrackedSegment(txnFilter, candidateColumns, untrackedVersionJoin)
2578
+ );
2579
+ const cacheSegment = buildCacheSegment(
2580
+ cacheSource,
2581
+ txnFilter,
2582
+ candidateColumns,
2583
+ cacheVersionJoin
2584
+ );
2585
+ if (cacheSegment) {
2586
+ segments.push(cacheSegment);
2587
+ }
2588
+ const shouldPruneInheritance = inheritancePlan.mode === "pruned";
2589
+ let inheritanceJoinSource = "version_inheritance vi";
2590
+ let parentJoinSource = "version_parent vi";
2591
+ if (inheritancePlan.mode === "inline") {
2592
+ inheritanceJoinSource = buildInlineInheritanceSource(
2593
+ inheritancePlan.versionAncestorPairs
2594
+ );
2595
+ parentJoinSource = buildInlineParentSource(inheritancePlan.parentPairs);
2596
+ }
2597
+ let allSegments = segments;
2598
+ if (!shouldPruneInheritance) {
2599
+ const inheritedSegments: string[] = [];
2600
+ if (cacheSegment) {
2601
+ const inheritedCache = buildInheritedCacheSegment(
2602
+ cacheSource,
2603
+ inheritedFilter,
2604
+ candidateColumns,
2605
+ inheritanceJoinSource,
2606
+ inheritanceVersionJoin
2607
+ );
2608
+ if (inheritedCache) {
2609
+ inheritedSegments.push(inheritedCache);
2610
+ }
2611
+ }
2612
+ inheritedSegments.push(
2613
+ buildInheritedUntrackedSegment(
2614
+ inheritedFilter,
2615
+ candidateColumns,
2616
+ inheritanceJoinSource,
2617
+ inheritanceVersionJoin
2618
+ )
2619
+ );
2620
+ if (options.hasOpenTransaction !== false) {
2621
+ inheritedSegments.push(
2622
+ buildInheritedTransactionSegment(
2623
+ inheritedFilter,
2624
+ candidateColumns,
2625
+ parentJoinSource,
2626
+ parentVersionJoin
2627
+ )
2628
+ );
2629
+ }
2630
+ allSegments = segments.concat(inheritedSegments);
2631
+ }
2632
+ const candidates = allSegments.join(`\n\n UNION ALL\n\n`);
2633
+
2634
+ const writerJoinSql = needsWriterJoin
2635
+ ? `
2636
+ LEFT JOIN lix_internal_state_writer ws_dst ON
2637
+ ws_dst.file_id = w.file_id AND
2638
+ ws_dst.entity_id = w.entity_id AND
2639
+ ws_dst.schema_key = w.schema_key AND
2640
+ ws_dst.version_id = w.version_id
2641
+ LEFT JOIN lix_internal_state_writer ws_src ON
2642
+ ws_src.file_id = w.file_id AND
2643
+ ws_src.entity_id = w.entity_id AND
2644
+ ws_src.schema_key = w.schema_key AND
2645
+ ws_src.version_id = w.inherited_from_version_id`
2646
+ : "";
2647
+ const changeJoinSql = needsChangeJoin
2648
+ ? `
2649
+ LEFT JOIN lix_internal_change chc ON chc.id = w.change_id`
2650
+ : "";
2651
+ const transactionJoinSql =
2652
+ options.hasOpenTransaction !== false
2653
+ ? `
2654
+ LEFT JOIN lix_internal_transaction_state itx ON itx.id = w.change_id`
2655
+ : "";
2656
+ const rankedSql = buildRankedSegment({
2657
+ projectionColumns: rankedColumns,
2658
+ rankingOrder,
2659
+ candidatesSql: candidates,
2660
+ });
2661
+ const withClauses: string[] = [];
2662
+ if (wantedVersionsCteName) {
2663
+ withClauses.push(
2664
+ buildWantedVersionsCte(wantedVersionsCteName, requestedVersionIds)
2665
+ );
2666
+ }
2667
+ if (inheritancePlan.mode === "recursive") {
2668
+ withClauses.push(buildVersionDescriptorCte());
2669
+ withClauses.push(buildVersionInheritanceCte(wantedVersionsCteName));
2670
+ withClauses.push(buildVersionParentCte(wantedVersionsCteName));
2671
+ }
2672
+ const withPrefix =
2673
+ withClauses.length > 0
2674
+ ? `WITH
2675
+ ${withClauses.map((clause) => indent(clause, 2)).join(",\n")}
2676
+ `
2677
+ : "";
2678
+
2679
+ const body = `${withPrefix}SELECT
2680
+ ${indent(projectionSql, 2)}
2681
+ FROM (
2682
+ ${indent(rankedSql, 2)}
2683
+ ) AS w
2684
+ ${writerJoinSql}
2685
+ ${changeJoinSql}
2686
+ ${transactionJoinSql}
2687
+ WHERE w.rn = 1`;
2688
+
2689
+ return `(\n${body}\n)\n`;
2690
+ }
2691
+
2692
+ function buildRewriteProjectionSql(
2693
+ selectedColumns: SelectedProjection[] | null,
2694
+ options: {
2695
+ needsWriterJoin: boolean;
2696
+ supportColumns: ReadonlySet<string>;
2697
+ candidateColumns: ReadonlySet<string>;
2698
+ }
2699
+ ): string {
2700
+ const builder = internalQueryBuilder as unknown as {
2701
+ selectFrom: (table: string) => {
2702
+ selectAll: (table: string) => { compile: () => { sql: string } };
2703
+ select: (
2704
+ callback: (eb: {
2705
+ ref: (reference: string) => {
2706
+ as: (alias: string) => unknown;
2707
+ };
2708
+ fn: any;
2709
+ }) => unknown[]
2710
+ ) => { compile: () => { sql: string } };
2711
+ };
2712
+ };
2713
+
2714
+ const baseQuery = builder.selectFrom(`${INTERNAL_STATE_VTABLE} as w`);
2715
+ const supportEntries =
2716
+ selectedColumns === null
2717
+ ? []
2718
+ : Array.from(options.supportColumns)
2719
+ .filter(
2720
+ (column) =>
2721
+ !selectedColumns.some((entry) => entry.column === column) &&
2722
+ !INTERNAL_ONLY_COLUMN_SET.has(column)
2723
+ )
2724
+ .map<SelectedProjection>((column) => ({
2725
+ column,
2726
+ alias: null,
2727
+ }));
2728
+ const combinedEntries =
2729
+ selectedColumns === null ? null : [...selectedColumns, ...supportEntries];
2730
+ const query =
2731
+ combinedEntries === null || combinedEntries.length === 0
2732
+ ? undefined
2733
+ : baseQuery.select((eb) =>
2734
+ combinedEntries.map((entry) => {
2735
+ if (options.needsWriterJoin && entry.column === "writer_key") {
2736
+ return eb.fn
2737
+ .coalesce(
2738
+ eb.ref("ws_dst.writer_key"),
2739
+ eb.ref("ws_src.writer_key"),
2740
+ eb.ref("w.writer_key")
2741
+ )
2742
+ .as(entry.column) as unknown as any;
2743
+ }
2744
+ return eb.ref(`w.${entry.column}`).as(entry.column);
2745
+ })
2746
+ );
2747
+
2748
+ if (!query) {
2749
+ const defaultColumns = buildDefaultProjectionColumns(
2750
+ options.candidateColumns
2751
+ );
2752
+ return defaultColumns
2753
+ .map((column) =>
2754
+ options.needsWriterJoin && column === "writer_key"
2755
+ ? `COALESCE(ws_dst.writer_key, ws_src.writer_key, w.writer_key) AS ${quoteIdentifier(
2756
+ column
2757
+ )}`
2758
+ : `w.${quoteIdentifier(column)} AS ${quoteIdentifier(column)}`
2759
+ )
2760
+ .join(",\n");
2761
+ }
2762
+
2763
+ const { sql } = query.compile();
2764
+ const match = sql.match(/^select\s+(?<projection>[\s\S]+?)\s+from\s+/i);
2765
+ return match?.groups?.projection?.trim() ?? sql;
2766
+ }
2767
+
2768
+ function buildDefaultProjectionColumns(
2769
+ candidateColumns: ReadonlySet<string>
2770
+ ): string[] {
2771
+ const ordered = PROJECTION_COLUMN_ORDER.filter(
2772
+ (column) =>
2773
+ !INTERNAL_ONLY_COLUMN_SET.has(column) && candidateColumns.has(column)
2774
+ ) as string[];
2775
+ const additional = Array.from(candidateColumns).filter(
2776
+ (column) =>
2777
+ !INTERNAL_ONLY_COLUMN_SET.has(column) && !ordered.includes(column)
2778
+ );
2779
+ return ordered.concat(additional.sort());
2780
+ }
2781
+
2782
+ function buildProjectionColumnSet(
2783
+ selectedColumns: SelectedProjection[] | null,
2784
+ hiddenColumns: ReadonlySet<string>,
2785
+ supportColumns: ReadonlySet<string>
2786
+ ): {
2787
+ candidateColumns: Set<string>;
2788
+ rankedColumns: Set<string>;
2789
+ } {
2790
+ const requestedHiddenColumns = new Set(hiddenColumns);
2791
+ const seedColumns =
2792
+ selectedColumns === null
2793
+ ? ALL_SEGMENT_COLUMNS
2794
+ : Array.from(BASE_SEGMENT_COLUMNS);
2795
+ const candidateColumns = new Set<string>();
2796
+ const rankedColumns = new Set<string>();
2797
+
2798
+ for (const column of seedColumns) {
2799
+ if (
2800
+ HIDDEN_SEGMENT_COLUMN_SET.has(column) &&
2801
+ !requestedHiddenColumns.has(column)
2802
+ ) {
2803
+ continue;
2804
+ }
2805
+ candidateColumns.add(column);
2806
+ rankedColumns.add(column);
2807
+ }
2808
+
2809
+ if (selectedColumns && selectedColumns.length > 0) {
2810
+ for (const entry of selectedColumns) {
2811
+ candidateColumns.add(entry.column);
2812
+ rankedColumns.add(entry.column);
2813
+ }
2814
+ }
2815
+
2816
+ for (const column of supportColumns) {
2817
+ candidateColumns.add(column);
2818
+ rankedColumns.add(column);
2819
+ }
2820
+
2821
+ for (const hiddenColumn of requestedHiddenColumns) {
2822
+ candidateColumns.add(hiddenColumn);
2823
+ rankedColumns.add(hiddenColumn);
2824
+ }
2825
+
2826
+ for (const hiddenColumn of HIDDEN_SEGMENT_COLUMN_SET) {
2827
+ if (!requestedHiddenColumns.has(hiddenColumn)) {
2828
+ candidateColumns.delete(hiddenColumn);
2829
+ rankedColumns.delete(hiddenColumn);
2830
+ }
2831
+ }
2832
+
2833
+ // Internal rewrites rely on snapshot_content for JSON decoding and cache filtering.
2834
+ candidateColumns.add("snapshot_content");
2835
+ rankedColumns.add("snapshot_content");
2836
+
2837
+ return { candidateColumns, rankedColumns };
2838
+ }
2839
+
2840
+ const NEWLINE = "\n";
2841
+
2842
+ const ALL_SEGMENT_COLUMNS = [
2843
+ "_pk",
2844
+ "source_tag",
2845
+ "entity_id",
2846
+ "schema_key",
2847
+ "file_id",
2848
+ "plugin_key",
2849
+ "snapshot_content",
2850
+ "schema_version",
2851
+ "version_id",
2852
+ "created_at",
2853
+ "updated_at",
2854
+ "inherited_from_version_id",
2855
+ "change_id",
2856
+ "untracked",
2857
+ "commit_id",
2858
+ "metadata",
2859
+ "writer_key",
2860
+ "priority",
2861
+ ] as const;
2862
+
2863
+ const BASE_SEGMENT_COLUMNS = new Set<string>([
2864
+ "entity_id",
2865
+ "schema_key",
2866
+ "file_id",
2867
+ "version_id",
2868
+ "created_at",
2869
+ "change_id",
2870
+ "priority",
2871
+ ]);
2872
+
2873
+ const CACHE_COLUMNS = [
2874
+ "entity_id",
2875
+ "schema_key",
2876
+ "file_id",
2877
+ "plugin_key",
2878
+ "snapshot_content",
2879
+ "schema_version",
2880
+ "version_id",
2881
+ "created_at",
2882
+ "updated_at",
2883
+ "inherited_from_version_id",
2884
+ "change_id",
2885
+ "commit_id",
2886
+ "is_tombstone",
2887
+ ] as const;
2888
+
2889
+ const PROJECTION_COLUMN_ORDER = ALL_SEGMENT_COLUMNS.filter(
2890
+ (column) => column !== "priority"
2891
+ );
2892
+
2893
+ const INTERNAL_ONLY_COLUMN_SET = new Set<string>(["priority", "rn"]);
2894
+
2895
+ function buildTransactionSegment(
2896
+ segmentFilter: string | null,
2897
+ projectionColumns: Set<string>,
2898
+ versionJoinClause: string
2899
+ ): string {
2900
+ const rewrittenFilter = rewriteFilterForAlias(segmentFilter, "txn");
2901
+ const filterClause = rewrittenFilter ? `WHERE ${rewrittenFilter}` : "";
2902
+ const columns: Array<[string, string]> = [
2903
+ [
2904
+ "_pk",
2905
+ `'T' || '~' || lix_encode_pk_part(txn.file_id) || '~' || lix_encode_pk_part(txn.entity_id) || '~' || lix_encode_pk_part(txn.version_id) AS _pk`,
2906
+ ],
2907
+ ["source_tag", "'T' AS source_tag"],
2908
+ ["entity_id", "txn.entity_id AS entity_id"],
2909
+ ["schema_key", "txn.schema_key AS schema_key"],
2910
+ ["file_id", "txn.file_id AS file_id"],
2911
+ ["plugin_key", "txn.plugin_key AS plugin_key"],
2912
+ ["snapshot_content", "json(txn.snapshot_content) AS snapshot_content"],
2913
+ ["schema_version", "txn.schema_version AS schema_version"],
2914
+ ["version_id", "txn.version_id AS version_id"],
2915
+ ["created_at", "txn.created_at AS created_at"],
2916
+ ["updated_at", "txn.created_at AS updated_at"],
2917
+ ["inherited_from_version_id", "NULL AS inherited_from_version_id"],
2918
+ ["change_id", "txn.id AS change_id"],
2919
+ ["untracked", "txn.untracked AS untracked"],
2920
+ ["commit_id", "'pending' AS commit_id"],
2921
+ ["metadata", "json(txn.metadata) AS metadata"],
2922
+ ["writer_key", "txn.writer_key AS writer_key"],
2923
+ ["priority", "1 AS priority"],
2924
+ ];
2925
+ const columnSql = columns
2926
+ .filter(([column]) => projectionColumns.has(column))
2927
+ .map(([, sql]) => sql)
2928
+ .join(",\n");
2929
+ const joinClause = versionJoinClause ? `\n\t\t${versionJoinClause}` : "";
2930
+ return stripIndent(`
2931
+ SELECT
2932
+ ${indent(columnSql, 4)}
2933
+ FROM lix_internal_transaction_state txn${joinClause}
2934
+ ${filterClause}
2935
+ `).trimEnd();
2936
+ }
2937
+
2938
+ function buildUntrackedSegment(
2939
+ segmentFilter: string | null,
2940
+ projectionColumns: Set<string>,
2941
+ versionJoinClause: string
2942
+ ): string {
2943
+ const rewrittenFilter = rewriteFilterForAlias(segmentFilter, "unt");
2944
+ const columns: Array<[string, string]> = [
2945
+ [
2946
+ "_pk",
2947
+ `'U' || '~' || lix_encode_pk_part(unt.file_id) || '~' || lix_encode_pk_part(unt.entity_id) || '~' || lix_encode_pk_part(unt.version_id) AS _pk`,
2948
+ ],
2949
+ ["source_tag", "'U' AS source_tag"],
2950
+ ["entity_id", "unt.entity_id AS entity_id"],
2951
+ ["schema_key", "unt.schema_key AS schema_key"],
2952
+ ["file_id", "unt.file_id AS file_id"],
2953
+ ["plugin_key", "unt.plugin_key AS plugin_key"],
2954
+ ["snapshot_content", "json(unt.snapshot_content) AS snapshot_content"],
2955
+ ["schema_version", "unt.schema_version AS schema_version"],
2956
+ ["version_id", "unt.version_id AS version_id"],
2957
+ ["created_at", "unt.created_at AS created_at"],
2958
+ ["updated_at", "unt.updated_at AS updated_at"],
2959
+ ["inherited_from_version_id", "NULL AS inherited_from_version_id"],
2960
+ ["change_id", "'untracked' AS change_id"],
2961
+ ["untracked", "1 AS untracked"],
2962
+ ["commit_id", "'untracked' AS commit_id"],
2963
+ ["metadata", "NULL AS metadata"],
2964
+ ["writer_key", "NULL AS writer_key"],
2965
+ ["priority", "2 AS priority"],
2966
+ ];
2967
+ const columnSql = columns
2968
+ .filter(([column]) => projectionColumns.has(column))
2969
+ .map(([, sql]) => sql)
2970
+ .join(",\n");
2971
+ const joinClause = versionJoinClause ? `\n\t\t${versionJoinClause}` : "";
2972
+ return stripIndent(`
2973
+ SELECT
2974
+ ${indent(columnSql, 4)}
2975
+ FROM lix_internal_state_all_untracked unt${joinClause}
2976
+ ${rewrittenFilter ? `WHERE ${rewrittenFilter}` : ""}
2977
+ `).trimEnd();
2978
+ }
2979
+
2980
+ function buildCacheSegment(
2981
+ cacheSource: string | null,
2982
+ segmentFilter: string | null,
2983
+ projectionColumns: Set<string>,
2984
+ versionJoinClause: string
2985
+ ): string | null {
2986
+ if (!cacheSource) {
2987
+ return null;
2988
+ }
2989
+ const rewrittenFilter = rewriteFilterForAlias(segmentFilter, "cache");
2990
+ const sourceKeyword = cacheSource.trim().toLowerCase();
2991
+ const sourceSql = sourceKeyword.startsWith("select")
2992
+ ? `(${cacheSource})`
2993
+ : cacheSource;
2994
+ const columns: Array<[string, string]> = [
2995
+ [
2996
+ "_pk",
2997
+ `'C' || '~' || lix_encode_pk_part(cache.file_id) || '~' || lix_encode_pk_part(cache.entity_id) || '~' || lix_encode_pk_part(cache.version_id) AS _pk`,
2998
+ ],
2999
+ ["source_tag", "'C' AS source_tag"],
3000
+ ["entity_id", "cache.entity_id AS entity_id"],
3001
+ ["schema_key", "cache.schema_key AS schema_key"],
3002
+ ["file_id", "cache.file_id AS file_id"],
3003
+ ["plugin_key", "cache.plugin_key AS plugin_key"],
3004
+ ["snapshot_content", "json(cache.snapshot_content) AS snapshot_content"],
3005
+ ["schema_version", "cache.schema_version AS schema_version"],
3006
+ ["version_id", "cache.version_id AS version_id"],
3007
+ ["created_at", "cache.created_at AS created_at"],
3008
+ ["updated_at", "cache.updated_at AS updated_at"],
3009
+ [
3010
+ "inherited_from_version_id",
3011
+ "cache.inherited_from_version_id AS inherited_from_version_id",
3012
+ ],
3013
+ ["change_id", "cache.change_id AS change_id"],
3014
+ ["untracked", "0 AS untracked"],
3015
+ ["commit_id", "cache.commit_id AS commit_id"],
3016
+ ["metadata", "NULL AS metadata"],
3017
+ ["writer_key", "NULL AS writer_key"],
3018
+ ["priority", "3 AS priority"],
3019
+ ];
3020
+ const columnSql = columns
3021
+ .filter(([column]) => projectionColumns.has(column))
3022
+ .map(([, sql]) => sql)
3023
+ .join(",\n");
3024
+ const whereClause = rewrittenFilter ? `\n\t\tWHERE ${rewrittenFilter}` : "";
3025
+ const joinClause = versionJoinClause ? `\n\t\t${versionJoinClause}` : "";
3026
+ return stripIndent(`
3027
+ SELECT
3028
+ ${indent(columnSql, 4)}
3029
+ FROM ${sourceSql} cache${joinClause}${whereClause}
3030
+ `).trimEnd();
3031
+ }
3032
+
3033
+ /**
3034
+ * Builds the base CTE extracting version descriptors for inheritance lookups.
3035
+ *
3036
+ * @returns SQL fragment for the version descriptor base CTE.
3037
+ *
3038
+ * @example
3039
+ * ```ts
3040
+ * const sql = buildVersionDescriptorCte();
3041
+ * ```
3042
+ */
3043
+ function buildVersionDescriptorCte(): string {
3044
+ return stripIndent(`
3045
+ version_descriptor_base AS (
3046
+ SELECT
3047
+ json_extract(desc.snapshot_content, '$.id') AS version_id,
3048
+ json_extract(desc.snapshot_content, '$.inherits_from_version_id') AS inherits_from_version_id
3049
+ FROM "lix_internal_state_cache_v1_lix_version_descriptor" desc
3050
+ WHERE desc.is_tombstone = 0
3051
+ AND desc.snapshot_content IS NOT NULL
3052
+ )`).trim();
3053
+ }
3054
+
3055
+ /**
3056
+ * Builds the recursive CTE that unfolds the full inheritance chain.
3057
+ *
3058
+ * @param seedCteName - Optional wanted version CTE that limits recursion seeds.
3059
+ * @returns SQL fragment for the version inheritance CTE.
3060
+ *
3061
+ * @example
3062
+ * ```ts
3063
+ * const sql = buildVersionInheritanceCte("wanted_versions");
3064
+ * ```
3065
+ */
3066
+ function buildVersionInheritanceCte(seedCteName: string | null): string {
3067
+ const seedJoin = seedCteName
3068
+ ? `
3069
+ JOIN ${seedCteName} wv ON wv.version_id = vdb.version_id`
3070
+ : "";
3071
+ return stripIndent(`
3072
+ version_inheritance(version_id, ancestor_version_id) AS (
3073
+ SELECT
3074
+ vdb.version_id,
3075
+ vdb.inherits_from_version_id
3076
+ FROM version_descriptor_base vdb${seedJoin}
3077
+ WHERE vdb.inherits_from_version_id IS NOT NULL
3078
+
3079
+ UNION ALL
3080
+
3081
+ SELECT
3082
+ vi.version_id,
3083
+ vdb.inherits_from_version_id
3084
+ FROM version_inheritance vi
3085
+ JOIN version_descriptor_base vdb ON vdb.version_id = vi.ancestor_version_id
3086
+ WHERE vdb.inherits_from_version_id IS NOT NULL
3087
+ )`).trim();
3088
+ }
3089
+
3090
+ /**
3091
+ * Builds the CTE mapping each version to its direct parent version.
3092
+ *
3093
+ * @param seedCteName - Optional wanted version CTE limiting descriptors.
3094
+ * @returns SQL fragment for the version parent CTE.
3095
+ *
3096
+ * @example
3097
+ * ```ts
3098
+ * const sql = buildVersionParentCte("wanted_versions");
3099
+ * ```
3100
+ */
3101
+ function buildVersionParentCte(seedCteName: string | null): string {
3102
+ const seedJoin = seedCteName
3103
+ ? `
3104
+ JOIN ${seedCteName} wv ON wv.version_id = vdb.version_id`
3105
+ : "";
3106
+ return stripIndent(`
3107
+ version_parent AS (
3108
+ SELECT
3109
+ vdb.version_id,
3110
+ vdb.inherits_from_version_id AS parent_version_id
3111
+ FROM version_descriptor_base vdb${seedJoin}
3112
+ WHERE vdb.inherits_from_version_id IS NOT NULL
3113
+ )`).trim();
3114
+ }
3115
+
3116
+ /**
3117
+ * Builds a CTE enumerating the requested versions for join-based filters.
3118
+ *
3119
+ * @param cteName - The identifier assigned to the CTE.
3120
+ * @param versionIds - Ordered list of version identifiers to include.
3121
+ * @returns SQL fragment for the wanted versions CTE.
3122
+ *
3123
+ * @example
3124
+ * ```ts
3125
+ * const sql = buildWantedVersionsCte("wanted_versions", ["v1", "v2"]);
3126
+ * ```
3127
+ */
3128
+ function buildWantedVersionsCte(
3129
+ cteName: string,
3130
+ versionIds: readonly string[]
3131
+ ): string {
3132
+ const selects = versionIds
3133
+ .map((versionId) => `SELECT '${escapeSqlLiteral(versionId)}' AS version_id`)
3134
+ .join("\nUNION ALL\n");
3135
+ return stripIndent(`
3136
+ ${cteName} AS (
3137
+ ${indent(selects, 2)}
3138
+ )`).trim();
3139
+ }
3140
+
3141
+ /**
3142
+ * Builds the inherited cache candidate segment that maps ancestor versions onto
3143
+ * the target schema version.
3144
+ *
3145
+ * @param cacheSource - The SQL producing the cache rows.
3146
+ * @param segmentFilter - Optional predicate scoped to the cache alias.
3147
+ * @param projectionColumns - Columns required for the projection.
3148
+ * @param versionJoinClause - SQL equi-join tying descendants to wanted versions.
3149
+ * @returns SQL fragment or null when no cache source exists.
3150
+ *
3151
+ * @example
3152
+ * ```ts
3153
+ * const sql = buildInheritedCacheSegment(
3154
+ * '"cache_table"',
3155
+ * "txn.schema_key = 'demo'",
3156
+ * new Set(),
3157
+ * "version_inheritance vi",
3158
+ * "JOIN wanted_versions wv ON wv.version_id = vi.version_id"
3159
+ * );
3160
+ * ```
3161
+ */
3162
+ function buildInheritedCacheSegment(
3163
+ cacheSource: string | null,
3164
+ segmentFilter: string | null,
3165
+ projectionColumns: Set<string>,
3166
+ inheritanceJoin: string,
3167
+ versionJoinClause: string
3168
+ ): string | null {
3169
+ if (!cacheSource) {
3170
+ return null;
3171
+ }
3172
+ const rewrittenFilter = rewriteFilterForAlias(segmentFilter, "cache");
3173
+ const sourceKeyword = cacheSource.trim().toLowerCase();
3174
+ const sourceSql = sourceKeyword.startsWith("select")
3175
+ ? `(${cacheSource})`
3176
+ : cacheSource;
3177
+ const columns: Array<[string, string]> = [
3178
+ [
3179
+ "_pk",
3180
+ `'CI' || '~' || lix_encode_pk_part(cache.file_id) || '~' || lix_encode_pk_part(cache.entity_id) || '~' || lix_encode_pk_part(vi.version_id) AS _pk`,
3181
+ ],
3182
+ ["source_tag", "'CI' AS source_tag"],
3183
+ ["entity_id", "cache.entity_id AS entity_id"],
3184
+ ["schema_key", "cache.schema_key AS schema_key"],
3185
+ ["file_id", "cache.file_id AS file_id"],
3186
+ ["plugin_key", "cache.plugin_key AS plugin_key"],
3187
+ ["snapshot_content", "json(cache.snapshot_content) AS snapshot_content"],
3188
+ ["schema_version", "cache.schema_version AS schema_version"],
3189
+ ["version_id", "vi.version_id AS version_id"],
3190
+ ["created_at", "cache.created_at AS created_at"],
3191
+ ["updated_at", "cache.updated_at AS updated_at"],
3192
+ [
3193
+ "inherited_from_version_id",
3194
+ "cache.version_id AS inherited_from_version_id",
3195
+ ],
3196
+ ["change_id", "cache.change_id AS change_id"],
3197
+ ["untracked", "0 AS untracked"],
3198
+ ["commit_id", "cache.commit_id AS commit_id"],
3199
+ ["metadata", "NULL AS metadata"],
3200
+ ["writer_key", "NULL AS writer_key"],
3201
+ ["priority", "4 AS priority"],
3202
+ ];
3203
+ const columnSql = columns
3204
+ .filter(([column]) => projectionColumns.has(column))
3205
+ .map(([, sql]) => sql)
3206
+ .join(",\n");
3207
+ const joinClause = versionJoinClause ? `\n\t\t${versionJoinClause}` : "";
3208
+ return stripIndent(`
3209
+ SELECT
3210
+ ${indent(columnSql, 4)}
3211
+ FROM ${inheritanceJoin}${joinClause}
3212
+ JOIN ${sourceSql} cache ON cache.version_id = vi.ancestor_version_id
3213
+ WHERE cache.is_tombstone = 0
3214
+ AND cache.snapshot_content IS NOT NULL${
3215
+ rewrittenFilter ? ` AND ${rewrittenFilter}` : ""
3216
+ }
3217
+ `).trimEnd();
3218
+ }
3219
+
3220
+ /**
3221
+ * Builds the inherited segment sourcing data from `lix_internal_state_all_untracked`.
3222
+ *
3223
+ * @param segmentFilter - Optional predicate scoped to the untracked alias.
3224
+ * @param projectionColumns - Columns required for the projection.
3225
+ * @param versionJoinClause - SQL equi-join tying descendants to wanted versions.
3226
+ * @returns SQL fragment selecting inherited untracked rows.
3227
+ *
3228
+ * @example
3229
+ * ```ts
3230
+ * const sql = buildInheritedUntrackedSegment(
3231
+ * null,
3232
+ * new Set(["entity_id"]),
3233
+ * "version_inheritance vi",
3234
+ * "JOIN wanted_versions wv ON wv.version_id = vi.version_id"
3235
+ * );
3236
+ * ```
3237
+ */
3238
+ function buildInheritedUntrackedSegment(
3239
+ segmentFilter: string | null,
3240
+ projectionColumns: Set<string>,
3241
+ inheritanceJoin: string,
3242
+ versionJoinClause: string
3243
+ ): string {
3244
+ const rewrittenFilter = rewriteFilterForAlias(segmentFilter, "unt");
3245
+ const columns: Array<[string, string]> = [
3246
+ [
3247
+ "_pk",
3248
+ `'UI' || '~' || lix_encode_pk_part(unt.file_id) || '~' || lix_encode_pk_part(unt.entity_id) || '~' || lix_encode_pk_part(vi.version_id) AS _pk`,
3249
+ ],
3250
+ ["source_tag", "'UI' AS source_tag"],
3251
+ ["entity_id", "unt.entity_id AS entity_id"],
3252
+ ["schema_key", "unt.schema_key AS schema_key"],
3253
+ ["file_id", "unt.file_id AS file_id"],
3254
+ ["plugin_key", "unt.plugin_key AS plugin_key"],
3255
+ ["snapshot_content", "json(unt.snapshot_content) AS snapshot_content"],
3256
+ ["schema_version", "unt.schema_version AS schema_version"],
3257
+ ["version_id", "vi.version_id AS version_id"],
3258
+ ["created_at", "unt.created_at AS created_at"],
3259
+ ["updated_at", "unt.updated_at AS updated_at"],
3260
+ [
3261
+ "inherited_from_version_id",
3262
+ "unt.version_id AS inherited_from_version_id",
3263
+ ],
3264
+ ["change_id", "'untracked' AS change_id"],
3265
+ ["untracked", "1 AS untracked"],
3266
+ ["commit_id", "'untracked' AS commit_id"],
3267
+ ["metadata", "NULL AS metadata"],
3268
+ ["writer_key", "NULL AS writer_key"],
3269
+ ["priority", "5 AS priority"],
3270
+ ];
3271
+ const columnSql = columns
3272
+ .filter(([column]) => projectionColumns.has(column))
3273
+ .map(([, sql]) => sql)
3274
+ .join(",\n");
3275
+ const joinClause = versionJoinClause ? `\n\t\t${versionJoinClause}` : "";
3276
+ return stripIndent(`
3277
+ SELECT
3278
+ ${indent(columnSql, 4)}
3279
+ FROM ${inheritanceJoin}${joinClause}
3280
+ JOIN lix_internal_state_all_untracked unt ON unt.version_id = vi.ancestor_version_id
3281
+ WHERE unt.is_tombstone = 0
3282
+ AND unt.snapshot_content IS NOT NULL${
3283
+ rewrittenFilter ? ` AND ${rewrittenFilter}` : ""
3284
+ }
3285
+ `).trimEnd();
3286
+ }
3287
+
3288
+ /**
3289
+ * Builds the inherited segment that projects transaction rows onto descendant
3290
+ * versions.
3291
+ *
3292
+ * @param segmentFilter - Optional predicate scoped to the transaction alias.
3293
+ * @param projectionColumns - Columns required for the projection.
3294
+ * @param versionJoinClause - SQL equi-join tying descendants to wanted versions.
3295
+ * @returns SQL fragment selecting inherited transaction rows.
3296
+ *
3297
+ * @example
3298
+ * ```ts
3299
+ * const sql = buildInheritedTransactionSegment(
3300
+ * "txn.schema_key = 'demo'",
3301
+ * new Set(["change_id"]),
3302
+ * "version_parent vi",
3303
+ * "JOIN wanted_versions wv ON wv.version_id = vi.version_id"
3304
+ * );
3305
+ * ```
3306
+ */
3307
+ function buildInheritedTransactionSegment(
3308
+ segmentFilter: string | null,
3309
+ projectionColumns: Set<string>,
3310
+ parentJoinSource: string,
3311
+ versionJoinClause: string
3312
+ ): string {
3313
+ const columns: Array<[string, string]> = [
3314
+ [
3315
+ "_pk",
3316
+ `'TI' || '~' || lix_encode_pk_part(txn.file_id) || '~' || lix_encode_pk_part(txn.entity_id) || '~' || lix_encode_pk_part(vi.version_id) AS _pk`,
3317
+ ],
3318
+ ["source_tag", "'TI' AS source_tag"],
3319
+ ["entity_id", "txn.entity_id AS entity_id"],
3320
+ ["schema_key", "txn.schema_key AS schema_key"],
3321
+ ["file_id", "txn.file_id AS file_id"],
3322
+ ["plugin_key", "txn.plugin_key AS plugin_key"],
3323
+ ["snapshot_content", "json(txn.snapshot_content) AS snapshot_content"],
3324
+ ["schema_version", "txn.schema_version AS schema_version"],
3325
+ ["version_id", "vi.version_id AS version_id"],
3326
+ ["created_at", "txn.created_at AS created_at"],
3327
+ ["updated_at", "txn.created_at AS updated_at"],
3328
+ [
3329
+ "inherited_from_version_id",
3330
+ "vi.parent_version_id AS inherited_from_version_id",
3331
+ ],
3332
+ ["change_id", "txn.id AS change_id"],
3333
+ ["untracked", "txn.untracked AS untracked"],
3334
+ ["commit_id", "'pending' AS commit_id"],
3335
+ ["metadata", "json(txn.metadata) AS metadata"],
3336
+ ["writer_key", "txn.writer_key AS writer_key"],
3337
+ ["priority", "6 AS priority"],
3338
+ ];
3339
+ const columnSql = columns
3340
+ .filter(([column]) => projectionColumns.has(column))
3341
+ .map(([, sql]) => sql)
3342
+ .join(",\n");
3343
+ const rewrittenFilter = rewriteFilterForAlias(segmentFilter, "txn");
3344
+ const joinClause = versionJoinClause ? `\n\t\t${versionJoinClause}` : "";
3345
+ return stripIndent(`
3346
+ SELECT
3347
+ ${indent(columnSql, 4)}
3348
+ FROM ${parentJoinSource}${joinClause}
3349
+ JOIN lix_internal_transaction_state txn ON txn.version_id = vi.parent_version_id
3350
+ WHERE vi.parent_version_id IS NOT NULL
3351
+ AND txn.snapshot_content IS NOT NULL${
3352
+ rewrittenFilter ? ` AND ${rewrittenFilter}` : ""
3353
+ }
3354
+ `).trimEnd();
3355
+ }
3356
+
3357
+ function buildRankedSegment(options: {
3358
+ projectionColumns: Set<string>;
3359
+ rankingOrder: string[];
3360
+ candidatesSql: string;
3361
+ }): string {
3362
+ const columns = ALL_SEGMENT_COLUMNS.filter((column) =>
3363
+ options.projectionColumns.has(column)
3364
+ ).map((column) => `c.${column} AS ${column}`);
3365
+ const orderClause = options.rankingOrder.join(", ");
3366
+ const selectEntries = [
3367
+ ...columns,
3368
+ `ROW_NUMBER() OVER (
3369
+ PARTITION BY c.file_id, c.schema_key, c.entity_id, c.version_id
3370
+ ORDER BY ${orderClause}
3371
+ ) AS rn`,
3372
+ ];
3373
+ return stripIndent(`
3374
+ SELECT
3375
+ ${indent(selectEntries.join(",\n"), 4)}
3376
+ FROM (
3377
+ ${indent(options.candidatesSql, 6)}
3378
+ ) AS c
3379
+ `).trimEnd();
3380
+ }
3381
+
3382
+ function buildSchemaFilter(schemaKeys: readonly string[]): string | null {
3383
+ if (!schemaKeys || schemaKeys.length === 0) {
3384
+ return null;
3385
+ }
3386
+ const values = schemaKeys.map((key) => `'${key}'`).join(", ");
3387
+ return `txn.schema_key IN (${values})`;
3388
+ }
3389
+
3390
+ function buildFileFilter(fileIds: readonly string[]): string | null {
3391
+ if (!fileIds || fileIds.length === 0) {
3392
+ return null;
3393
+ }
3394
+ const values = fileIds
3395
+ .map((fileId) => `'${escapeSqlLiteral(fileId)}'`)
3396
+ .join(", ");
3397
+ return `txn.file_id IN (${values})`;
3398
+ }
3399
+
3400
+ function buildEntityFilter(entityIds: readonly string[]): string | null {
3401
+ if (!entityIds || entityIds.length === 0) {
3402
+ return null;
3403
+ }
3404
+ const values = entityIds
3405
+ .map((entityId) => `'${escapeSqlLiteral(entityId)}'`)
3406
+ .join(", ");
3407
+ return `txn.entity_id IN (${values})`;
3408
+ }
3409
+
3410
+ function buildSnapshotContentFilter(
3411
+ filters: readonly SnapshotJsonPredicate[]
3412
+ ): string | null {
3413
+ if (!filters || filters.length === 0) {
3414
+ return null;
3415
+ }
3416
+ const clauses = filters
3417
+ .map((filter) => buildSnapshotPredicateClause(filter))
3418
+ .filter((clause): clause is string => typeof clause === "string");
3419
+ if (clauses.length === 0) {
3420
+ return null;
3421
+ }
3422
+ return clauses.map((clause) => `(${clause})`).join(" AND ");
3423
+ }
3424
+
3425
+ function buildSnapshotPredicateClause(
3426
+ filter: SnapshotJsonPredicate
3427
+ ): string | null {
3428
+ const uniqueValues = Array.from(new Set(filter.values));
3429
+ if (uniqueValues.length === 0) {
3430
+ return null;
3431
+ }
3432
+ const pathLiteral = `'${escapeSqlLiteral(filter.path)}'`;
3433
+ if (uniqueValues.length === 1) {
3434
+ const value = escapeSqlLiteral(uniqueValues[0]!);
3435
+ return `json_extract(txn.snapshot_content, ${pathLiteral}) = '${value}'`;
3436
+ }
3437
+ const valueList = uniqueValues
3438
+ .map((value) => `'${escapeSqlLiteral(value)}'`)
3439
+ .join(", ");
3440
+ return `json_extract(txn.snapshot_content, ${pathLiteral}) IN (${valueList})`;
3441
+ }
3442
+
3443
+ /**
3444
+ * Builds an equi-join clause tying a table alias to the wanted versions CTE.
3445
+ *
3446
+ * @param cteName - Name of the wanted versions CTE.
3447
+ * @param targetAlias - Table alias exposing a `version_id` column.
3448
+ * @param joinAlias - Alias assigned to the join for readability.
3449
+ * @returns SQL JOIN clause or an empty string when no CTE is provided.
3450
+ *
3451
+ * @example
3452
+ * ```ts
3453
+ * const joinSql = buildWantedVersionJoinClause("wanted_versions", "txn", "wv_txn");
3454
+ * ```
3455
+ */
3456
+ function buildWantedVersionJoinClause(
3457
+ cteName: string | null,
3458
+ targetAlias: string,
3459
+ joinAlias: string
3460
+ ): string {
3461
+ if (!cteName) {
3462
+ return "";
3463
+ }
3464
+ return `JOIN ${cteName} ${joinAlias} ON ${joinAlias}.version_id = ${targetAlias}.version_id`;
3465
+ }
3466
+
3467
+ function buildCacheSource(
3468
+ schemaKeys: readonly string[],
3469
+ cacheTables: Map<string, unknown>,
3470
+ projectionColumns: Set<string>
3471
+ ): string | null {
3472
+ const requiredColumns = new Set(projectionColumns);
3473
+ // Always keep structural columns that power tombstone filtering and ranking.
3474
+ requiredColumns.add("snapshot_content");
3475
+ requiredColumns.add("is_tombstone");
3476
+ requiredColumns.add("file_id");
3477
+ requiredColumns.add("entity_id");
3478
+ requiredColumns.add("schema_key");
3479
+ requiredColumns.add("version_id");
3480
+ requiredColumns.add("change_id");
3481
+ requiredColumns.add("created_at");
3482
+ const uniqueKeys =
3483
+ schemaKeys && schemaKeys.length > 0
3484
+ ? Array.from(new Set(schemaKeys))
3485
+ : Array.from(cacheTables.keys());
3486
+ const seenTables = new Set<string>();
3487
+ const entries = uniqueKeys
3488
+ .map((key) => {
3489
+ const lookupKeys = new Set<string>([key]);
3490
+ const sanitizedKey = cacheTableNameToSchemaKey(
3491
+ schemaKeyToCacheTableName(key)
3492
+ );
3493
+ if (sanitizedKey !== key) {
3494
+ lookupKeys.add(sanitizedKey);
3495
+ }
3496
+ for (const lookupKey of lookupKeys) {
3497
+ const tableName = cacheTables.get(lookupKey);
3498
+ if (
3499
+ typeof tableName === "string" &&
3500
+ tableName.length > 0 &&
3501
+ !seenTables.has(tableName)
3502
+ ) {
3503
+ seenTables.add(tableName);
3504
+ return {
3505
+ tableName,
3506
+ sql: buildPhysicalCacheSelect(tableName, requiredColumns),
3507
+ };
3508
+ }
3509
+ }
3510
+ return null;
3511
+ })
3512
+ .filter(
3513
+ (value): value is { tableName: string; sql: string } => value !== null
3514
+ );
3515
+
3516
+ if (entries.length === 0) {
3517
+ return null;
3518
+ }
3519
+ if (entries.length === 1) {
3520
+ return quoteIdentifier(entries[0]!.tableName);
3521
+ }
3522
+ return entries.map((entry) => entry.sql).join(`\nUNION ALL\n`);
3523
+ }
3524
+
3525
+ function buildPhysicalCacheSelect(
3526
+ tableName: string,
3527
+ requiredColumns: Set<string>
3528
+ ): string {
3529
+ const projection = CACHE_COLUMNS.filter((column) =>
3530
+ requiredColumns.has(column)
3531
+ )
3532
+ .map((column) => quoteIdentifier(column))
3533
+ .join(",\n ");
3534
+ return `SELECT
3535
+ ${projection}
3536
+ FROM ${quoteIdentifier(tableName)}`;
3537
+ }
3538
+
3539
+ /**
3540
+ * Resolves the cache table name for the provided schema key, falling back to its sanitized form.
3541
+ *
3542
+ * @example
3543
+ * ```ts
3544
+ * resolveCacheTableName(new Map([["delete_cache_schema", "cache_table"]]), "delete_cache_schema");
3545
+ * // "cache_table"
3546
+ * ```
3547
+ */
3548
+ function stripIndent(value: string): string {
3549
+ const trimmed = value.replace(/^\n+/, "").replace(/\n+$/, "");
3550
+ const lines = trimmed.split(NEWLINE);
3551
+ const indents = lines
3552
+ .filter((line) => line.trim().length > 0)
3553
+ .map((line) => line.match(/^\s*/)?.[0]?.length ?? 0);
3554
+ const minIndent = indents.length > 0 ? Math.min(...indents) : 0;
3555
+ return lines.map((line) => line.slice(minIndent)).join(NEWLINE);
3556
+ }
3557
+
3558
+ function indent(value: string, spaces: number): string {
3559
+ const pad = " ".repeat(spaces);
3560
+ return value
3561
+ .split(NEWLINE)
3562
+ .map((line) => (line.length > 0 ? pad + line : line))
3563
+ .join(NEWLINE);
3564
+ }
3565
+
3566
+ function quoteIdentifier(identifier: string): string {
3567
+ return `"${identifier.replace(/"/g, '""')}"`;
3568
+ }
3569
+
3570
+ function shouldPushFileFilter(
3571
+ schemaKeys: readonly string[],
3572
+ fileIds: readonly string[]
3573
+ ): boolean {
3574
+ if (!schemaKeys || schemaKeys.length === 0) return false;
3575
+ if (!fileIds || fileIds.length === 0) return false;
3576
+ return schemaKeys.every(
3577
+ (key) => typeof key === "string" && !key.startsWith("lix_")
3578
+ );
3579
+ }
3580
+
3581
+ function shouldPushEntityFilter(
3582
+ schemaKeys: readonly string[],
3583
+ entityIds: readonly string[]
3584
+ ): boolean {
3585
+ if (!schemaKeys || schemaKeys.length === 0) return false;
3586
+ if (!entityIds || entityIds.length === 0) return false;
3587
+ return schemaKeys.every(
3588
+ (key) => typeof key === "string" && !key.startsWith("lix_")
3589
+ );
3590
+ }
3591
+
3592
+ function shouldPushSnapshotFilters(
3593
+ schemaKeys: readonly string[],
3594
+ filters: readonly SnapshotJsonPredicate[]
3595
+ ): boolean {
3596
+ if (!schemaKeys || schemaKeys.length === 0) return false;
3597
+ if (!filters || filters.length === 0) return false;
3598
+ return schemaKeys.every(
3599
+ (key) => typeof key === "string" && !key.startsWith("lix_")
3600
+ );
3601
+ }
3602
+
3603
+ function combineFilters(
3604
+ ...filters: Array<string | null | undefined>
3605
+ ): string | null {
3606
+ const active = filters.filter(
3607
+ (filter): filter is string =>
3608
+ typeof filter === "string" && filter.length > 0
3609
+ );
3610
+ if (active.length === 0) {
3611
+ return null;
3612
+ }
3613
+ if (active.length === 1) {
3614
+ return active[0]!;
3615
+ }
3616
+ return active.map((filter) => `(${filter})`).join(" AND ");
3617
+ }
3618
+
3619
+ function rewriteFilterForAlias(
3620
+ filter: string | null,
3621
+ alias: string
3622
+ ): string | null {
3623
+ if (!filter) {
3624
+ return null;
3625
+ }
3626
+ return filter.replace(/txn\./g, `${alias}.`);
3627
+ }
3628
+
3629
+ function normalizeObjectName(objectName: ObjectNameNode): string | null {
3630
+ if (objectName.parts.length === 0) {
3631
+ return null;
3632
+ }
3633
+ const last = objectName.parts[objectName.parts.length - 1]!;
3634
+ return normalizeIdentifierValue(last.value);
3635
+ }
3636
+
3637
+ function escapeSqlLiteral(value: string): string {
3638
+ return value.replace(/'/g, "''");
3639
+ }
3640
+
3641
+ type InheritancePlan =
3642
+ | { mode: "pruned" }
3643
+ | { mode: "recursive" }
3644
+ | {
3645
+ mode: "inline";
3646
+ versionAncestorPairs: Array<{ versionId: string; ancestorId: string }>;
3647
+ parentPairs: Array<{ versionId: string; parentId: string }>;
3648
+ };
3649
+
3650
+ function determineInheritancePlan(args: {
3651
+ requestedVersionIds: readonly string[];
3652
+ versionInheritance?: VersionInheritanceMap;
3653
+ forcedPrune: boolean;
3654
+ }): InheritancePlan {
3655
+ const requested = Array.from(new Set(args.requestedVersionIds ?? []));
3656
+
3657
+ if (args.forcedPrune) {
3658
+ return { mode: "pruned" };
3659
+ }
3660
+
3661
+ if (requested.length === 0) {
3662
+ return args.versionInheritance ? { mode: "recursive" } : { mode: "pruned" };
3663
+ }
3664
+
3665
+ if (!args.versionInheritance || args.versionInheritance.size === 0) {
3666
+ return { mode: "pruned" };
3667
+ }
3668
+
3669
+ const ancestorPairs: Array<{ versionId: string; ancestorId: string }> = [];
3670
+ const parentPairs: Array<{ versionId: string; parentId: string }> = [];
3671
+ const ancestorSeen = new Set<string>();
3672
+ const parentSeen = new Set<string>();
3673
+
3674
+ for (const versionId of requested) {
3675
+ let current = versionId;
3676
+ const chainVisited = new Set<string>([current]);
3677
+ while (true) {
3678
+ const node = args.versionInheritance.get(current);
3679
+ if (!node) {
3680
+ return {
3681
+ mode: "recursive",
3682
+ };
3683
+ }
3684
+ const parentId = node.inheritsFromVersionId;
3685
+ if (!parentId) {
3686
+ break;
3687
+ }
3688
+ if (chainVisited.has(parentId)) {
3689
+ return {
3690
+ mode: "recursive",
3691
+ };
3692
+ }
3693
+ chainVisited.add(parentId);
3694
+
3695
+ const ancestorKey = `${versionId}::${parentId}`;
3696
+ if (!ancestorSeen.has(ancestorKey)) {
3697
+ ancestorSeen.add(ancestorKey);
3698
+ ancestorPairs.push({ versionId, ancestorId: parentId });
3699
+ }
3700
+
3701
+ const parentKey = `${current}::${parentId}`;
3702
+ if (!parentSeen.has(parentKey)) {
3703
+ parentSeen.add(parentKey);
3704
+ parentPairs.push({ versionId: current, parentId });
3705
+ }
3706
+
3707
+ current = parentId;
3708
+ }
3709
+ }
3710
+
3711
+ if (ancestorPairs.length === 0) {
3712
+ return { mode: "pruned" };
3713
+ }
3714
+
3715
+ return {
3716
+ mode: "inline",
3717
+ versionAncestorPairs: ancestorPairs,
3718
+ parentPairs,
3719
+ };
3720
+ }
3721
+
3722
+ function buildInlineInheritanceSource(
3723
+ pairs: Array<{ versionId: string; ancestorId: string }>
3724
+ ): string {
3725
+ return buildInlineValueSource(
3726
+ pairs.map(({ versionId, ancestorId }) => [versionId, ancestorId]),
3727
+ ["version_id", "ancestor_version_id"]
3728
+ );
3729
+ }
3730
+
3731
+ function buildInlineParentSource(
3732
+ pairs: Array<{ versionId: string; parentId: string }>
3733
+ ): string {
3734
+ return buildInlineValueSource(
3735
+ pairs.map(({ versionId, parentId }) => [versionId, parentId]),
3736
+ ["version_id", "parent_version_id"]
3737
+ );
3738
+ }
3739
+
3740
+ function buildInlineValueSource(
3741
+ rows: Array<[string, string]>,
3742
+ columns: [string, string]
3743
+ ): string {
3744
+ const selects = rows
3745
+ .map(
3746
+ ([left, right]) =>
3747
+ `SELECT '${escapeSqlLiteral(left)}' AS ${columns[0]}, '${escapeSqlLiteral(right)}' AS ${columns[1]}`
3748
+ )
3749
+ .join("\nUNION ALL\n");
3750
+ return `(\n${selects}\n) AS vi`;
3751
+ }