typhex 0.1.0-alpha.0

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 (421) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +417 -0
  4. package/SECURITY.md +32 -0
  5. package/dist/arrow/aggregates.d.ts +12 -0
  6. package/dist/arrow/aggregates.d.ts.map +1 -0
  7. package/dist/arrow/aggregates.js +32 -0
  8. package/dist/arrow/aggregates.js.map +1 -0
  9. package/dist/arrow/constants.d.ts +15 -0
  10. package/dist/arrow/constants.d.ts.map +1 -0
  11. package/dist/arrow/constants.js +42 -0
  12. package/dist/arrow/constants.js.map +1 -0
  13. package/dist/arrow/index.d.ts +7 -0
  14. package/dist/arrow/index.d.ts.map +1 -0
  15. package/dist/arrow/index.js +7 -0
  16. package/dist/arrow/index.js.map +1 -0
  17. package/dist/config/index.d.ts +6 -0
  18. package/dist/config/index.d.ts.map +1 -0
  19. package/dist/config/index.js +4 -0
  20. package/dist/config/index.js.map +1 -0
  21. package/dist/config/load-config.d.ts +19 -0
  22. package/dist/config/load-config.d.ts.map +1 -0
  23. package/dist/config/load-config.js +84 -0
  24. package/dist/config/load-config.js.map +1 -0
  25. package/dist/config/load-env.d.ts +7 -0
  26. package/dist/config/load-env.d.ts.map +1 -0
  27. package/dist/config/load-env.js +62 -0
  28. package/dist/config/load-env.js.map +1 -0
  29. package/dist/config/types.d.ts +20 -0
  30. package/dist/config/types.d.ts.map +1 -0
  31. package/dist/config/types.js +10 -0
  32. package/dist/config/types.js.map +1 -0
  33. package/dist/dbs/base-migrator.d.ts +20 -0
  34. package/dist/dbs/base-migrator.d.ts.map +1 -0
  35. package/dist/dbs/base-migrator.js +112 -0
  36. package/dist/dbs/base-migrator.js.map +1 -0
  37. package/dist/dbs/index.d.ts +9 -0
  38. package/dist/dbs/index.d.ts.map +1 -0
  39. package/dist/dbs/index.js +17 -0
  40. package/dist/dbs/index.js.map +1 -0
  41. package/dist/dbs/postgres/dialect.d.ts +8 -0
  42. package/dist/dbs/postgres/dialect.d.ts.map +1 -0
  43. package/dist/dbs/postgres/dialect.js +17 -0
  44. package/dist/dbs/postgres/dialect.js.map +1 -0
  45. package/dist/dbs/postgres/driver.d.ts +42 -0
  46. package/dist/dbs/postgres/driver.d.ts.map +1 -0
  47. package/dist/dbs/postgres/driver.js +111 -0
  48. package/dist/dbs/postgres/driver.js.map +1 -0
  49. package/dist/dbs/postgres/index.d.ts +6 -0
  50. package/dist/dbs/postgres/index.d.ts.map +1 -0
  51. package/dist/dbs/postgres/index.js +5 -0
  52. package/dist/dbs/postgres/index.js.map +1 -0
  53. package/dist/dbs/postgres/migrator.d.ts +13 -0
  54. package/dist/dbs/postgres/migrator.d.ts.map +1 -0
  55. package/dist/dbs/postgres/migrator.js +22 -0
  56. package/dist/dbs/postgres/migrator.js.map +1 -0
  57. package/dist/dbs/postgres/query-compiler.d.ts +22 -0
  58. package/dist/dbs/postgres/query-compiler.d.ts.map +1 -0
  59. package/dist/dbs/postgres/query-compiler.js +140 -0
  60. package/dist/dbs/postgres/query-compiler.js.map +1 -0
  61. package/dist/dbs/postgres/trx.d.ts +16 -0
  62. package/dist/dbs/postgres/trx.d.ts.map +1 -0
  63. package/dist/dbs/postgres/trx.js +68 -0
  64. package/dist/dbs/postgres/trx.js.map +1 -0
  65. package/dist/dbs/query-compiler.d.ts +135 -0
  66. package/dist/dbs/query-compiler.d.ts.map +1 -0
  67. package/dist/dbs/query-compiler.js +775 -0
  68. package/dist/dbs/query-compiler.js.map +1 -0
  69. package/dist/dbs/sqlite/dialect.d.ts +8 -0
  70. package/dist/dbs/sqlite/dialect.d.ts.map +1 -0
  71. package/dist/dbs/sqlite/dialect.js +17 -0
  72. package/dist/dbs/sqlite/dialect.js.map +1 -0
  73. package/dist/dbs/sqlite/driver.d.ts +9 -0
  74. package/dist/dbs/sqlite/driver.d.ts.map +1 -0
  75. package/dist/dbs/sqlite/driver.js +66 -0
  76. package/dist/dbs/sqlite/driver.js.map +1 -0
  77. package/dist/dbs/sqlite/index.d.ts +6 -0
  78. package/dist/dbs/sqlite/index.d.ts.map +1 -0
  79. package/dist/dbs/sqlite/index.js +5 -0
  80. package/dist/dbs/sqlite/index.js.map +1 -0
  81. package/dist/dbs/sqlite/migrator.d.ts +13 -0
  82. package/dist/dbs/sqlite/migrator.d.ts.map +1 -0
  83. package/dist/dbs/sqlite/migrator.js +22 -0
  84. package/dist/dbs/sqlite/migrator.js.map +1 -0
  85. package/dist/dbs/sqlite/query-compiler.d.ts +26 -0
  86. package/dist/dbs/sqlite/query-compiler.d.ts.map +1 -0
  87. package/dist/dbs/sqlite/query-compiler.js +80 -0
  88. package/dist/dbs/sqlite/query-compiler.js.map +1 -0
  89. package/dist/dbs/sqlite/trx.d.ts +13 -0
  90. package/dist/dbs/sqlite/trx.d.ts.map +1 -0
  91. package/dist/dbs/sqlite/trx.js +69 -0
  92. package/dist/dbs/sqlite/trx.js.map +1 -0
  93. package/dist/dbs/types.d.ts +92 -0
  94. package/dist/dbs/types.d.ts.map +1 -0
  95. package/dist/dbs/types.js +26 -0
  96. package/dist/dbs/types.js.map +1 -0
  97. package/dist/dialect.d.ts +3 -0
  98. package/dist/dialect.d.ts.map +1 -0
  99. package/dist/dialect.js +2 -0
  100. package/dist/dialect.js.map +1 -0
  101. package/dist/driver/factory.d.ts +19 -0
  102. package/dist/driver/factory.d.ts.map +1 -0
  103. package/dist/driver/factory.js +24 -0
  104. package/dist/driver/factory.js.map +1 -0
  105. package/dist/driver/index.d.ts +6 -0
  106. package/dist/driver/index.d.ts.map +1 -0
  107. package/dist/driver/index.js +3 -0
  108. package/dist/driver/index.js.map +1 -0
  109. package/dist/driver/sqlite.d.ts +15 -0
  110. package/dist/driver/sqlite.d.ts.map +1 -0
  111. package/dist/driver/sqlite.js +74 -0
  112. package/dist/driver/sqlite.js.map +1 -0
  113. package/dist/driver/types.d.ts +75 -0
  114. package/dist/driver/types.d.ts.map +1 -0
  115. package/dist/driver/types.js +2 -0
  116. package/dist/driver/types.js.map +1 -0
  117. package/dist/entity/entity.d.ts +67 -0
  118. package/dist/entity/entity.d.ts.map +1 -0
  119. package/dist/entity/entity.js +139 -0
  120. package/dist/entity/entity.js.map +1 -0
  121. package/dist/entity/global-driver.d.ts +38 -0
  122. package/dist/entity/global-driver.d.ts.map +1 -0
  123. package/dist/entity/global-driver.js +109 -0
  124. package/dist/entity/global-driver.js.map +1 -0
  125. package/dist/entity/index.d.ts +8 -0
  126. package/dist/entity/index.d.ts.map +1 -0
  127. package/dist/entity/index.js +3 -0
  128. package/dist/entity/index.js.map +1 -0
  129. package/dist/entity/pk-columns.d.ts +5 -0
  130. package/dist/entity/pk-columns.d.ts.map +1 -0
  131. package/dist/entity/pk-columns.js +14 -0
  132. package/dist/entity/pk-columns.js.map +1 -0
  133. package/dist/entity/relations.d.ts +134 -0
  134. package/dist/entity/relations.d.ts.map +1 -0
  135. package/dist/entity/relations.js +23 -0
  136. package/dist/entity/relations.js.map +1 -0
  137. package/dist/entity/schema-inference.d.ts +77 -0
  138. package/dist/entity/schema-inference.d.ts.map +1 -0
  139. package/dist/entity/schema-inference.js +6 -0
  140. package/dist/entity/schema-inference.js.map +1 -0
  141. package/dist/entity/types.d.ts +30 -0
  142. package/dist/entity/types.d.ts.map +1 -0
  143. package/dist/entity/types.js +5 -0
  144. package/dist/entity/types.js.map +1 -0
  145. package/dist/index.d.ts +25 -0
  146. package/dist/index.d.ts.map +1 -0
  147. package/dist/index.js +12 -0
  148. package/dist/index.js.map +1 -0
  149. package/dist/ir/index.d.ts +2 -0
  150. package/dist/ir/index.d.ts.map +1 -0
  151. package/dist/ir/index.js +2 -0
  152. package/dist/ir/index.js.map +1 -0
  153. package/dist/ir/types.d.ts +148 -0
  154. package/dist/ir/types.d.ts.map +1 -0
  155. package/dist/ir/types.js +97 -0
  156. package/dist/ir/types.js.map +1 -0
  157. package/dist/migration/cli.d.ts +18 -0
  158. package/dist/migration/cli.d.ts.map +1 -0
  159. package/dist/migration/cli.js +236 -0
  160. package/dist/migration/cli.js.map +1 -0
  161. package/dist/migration/diff.d.ts +10 -0
  162. package/dist/migration/diff.d.ts.map +1 -0
  163. package/dist/migration/diff.js +10 -0
  164. package/dist/migration/diff.js.map +1 -0
  165. package/dist/migration/generator.d.ts +12 -0
  166. package/dist/migration/generator.d.ts.map +1 -0
  167. package/dist/migration/generator.js +98 -0
  168. package/dist/migration/generator.js.map +1 -0
  169. package/dist/migration/index.d.ts +7 -0
  170. package/dist/migration/index.d.ts.map +1 -0
  171. package/dist/migration/index.js +5 -0
  172. package/dist/migration/index.js.map +1 -0
  173. package/dist/migration/runner.d.ts +32 -0
  174. package/dist/migration/runner.d.ts.map +1 -0
  175. package/dist/migration/runner.js +279 -0
  176. package/dist/migration/runner.js.map +1 -0
  177. package/dist/migration/topo-sort.d.ts +12 -0
  178. package/dist/migration/topo-sort.d.ts.map +1 -0
  179. package/dist/migration/topo-sort.js +42 -0
  180. package/dist/migration/topo-sort.js.map +1 -0
  181. package/dist/migration/types.d.ts +45 -0
  182. package/dist/migration/types.d.ts.map +1 -0
  183. package/dist/migration/types.js +2 -0
  184. package/dist/migration/types.js.map +1 -0
  185. package/dist/orm/aggregates.d.ts +19 -0
  186. package/dist/orm/aggregates.d.ts.map +1 -0
  187. package/dist/orm/aggregates.js +32 -0
  188. package/dist/orm/aggregates.js.map +1 -0
  189. package/dist/orm/db.d.ts +105 -0
  190. package/dist/orm/db.d.ts.map +1 -0
  191. package/dist/orm/db.js +172 -0
  192. package/dist/orm/db.js.map +1 -0
  193. package/dist/orm/expr.d.ts +125 -0
  194. package/dist/orm/expr.d.ts.map +1 -0
  195. package/dist/orm/expr.js +10 -0
  196. package/dist/orm/expr.js.map +1 -0
  197. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.d.ts +9 -0
  198. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.d.ts.map +1 -0
  199. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.js +44 -0
  200. package/dist/orm/helpers/insert-graph/insert-graph-batch-executor.js.map +1 -0
  201. package/dist/orm/helpers/insert-graph/insert-graph-executor.d.ts +13 -0
  202. package/dist/orm/helpers/insert-graph/insert-graph-executor.d.ts.map +1 -0
  203. package/dist/orm/helpers/insert-graph/insert-graph-executor.js +42 -0
  204. package/dist/orm/helpers/insert-graph/insert-graph-executor.js.map +1 -0
  205. package/dist/orm/helpers/insert-graph/insert-graph-planner.d.ts +46 -0
  206. package/dist/orm/helpers/insert-graph/insert-graph-planner.d.ts.map +1 -0
  207. package/dist/orm/helpers/insert-graph/insert-graph-planner.js +258 -0
  208. package/dist/orm/helpers/insert-graph/insert-graph-planner.js.map +1 -0
  209. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.d.ts +7 -0
  210. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.d.ts.map +1 -0
  211. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.js +8 -0
  212. package/dist/orm/helpers/insert-graph/insert-graph-sequential-executor.js.map +1 -0
  213. package/dist/orm/helpers/insert-graph/sequence-id-assigner.d.ts +15 -0
  214. package/dist/orm/helpers/insert-graph/sequence-id-assigner.d.ts.map +1 -0
  215. package/dist/orm/helpers/insert-graph/sequence-id-assigner.js +48 -0
  216. package/dist/orm/helpers/insert-graph/sequence-id-assigner.js.map +1 -0
  217. package/dist/orm/helpers/query-plan/expr-builder.d.ts +155 -0
  218. package/dist/orm/helpers/query-plan/expr-builder.d.ts.map +1 -0
  219. package/dist/orm/helpers/query-plan/expr-builder.js +297 -0
  220. package/dist/orm/helpers/query-plan/expr-builder.js.map +1 -0
  221. package/dist/orm/helpers/query-plan/query-ir-analyzer.d.ts +48 -0
  222. package/dist/orm/helpers/query-plan/query-ir-analyzer.d.ts.map +1 -0
  223. package/dist/orm/helpers/query-plan/query-ir-analyzer.js +262 -0
  224. package/dist/orm/helpers/query-plan/query-ir-analyzer.js.map +1 -0
  225. package/dist/orm/helpers/query-plan/query-plan.d.ts +164 -0
  226. package/dist/orm/helpers/query-plan/query-plan.d.ts.map +1 -0
  227. package/dist/orm/helpers/query-plan/query-plan.js +549 -0
  228. package/dist/orm/helpers/query-plan/query-plan.js.map +1 -0
  229. package/dist/orm/helpers/query-plan/select-classifier.d.ts +161 -0
  230. package/dist/orm/helpers/query-plan/select-classifier.d.ts.map +1 -0
  231. package/dist/orm/helpers/query-plan/select-classifier.js +359 -0
  232. package/dist/orm/helpers/query-plan/select-classifier.js.map +1 -0
  233. package/dist/orm/helpers/relations/relation-assembler.d.ts +21 -0
  234. package/dist/orm/helpers/relations/relation-assembler.d.ts.map +1 -0
  235. package/dist/orm/helpers/relations/relation-assembler.js +60 -0
  236. package/dist/orm/helpers/relations/relation-assembler.js.map +1 -0
  237. package/dist/orm/helpers/relations/relation-fetcher.d.ts +30 -0
  238. package/dist/orm/helpers/relations/relation-fetcher.d.ts.map +1 -0
  239. package/dist/orm/helpers/relations/relation-fetcher.js +128 -0
  240. package/dist/orm/helpers/relations/relation-fetcher.js.map +1 -0
  241. package/dist/orm/helpers/relations/relation-joins.d.ts +74 -0
  242. package/dist/orm/helpers/relations/relation-joins.d.ts.map +1 -0
  243. package/dist/orm/helpers/relations/relation-joins.js +138 -0
  244. package/dist/orm/helpers/relations/relation-joins.js.map +1 -0
  245. package/dist/orm/helpers/relations/relation-resolver.d.ts +14 -0
  246. package/dist/orm/helpers/relations/relation-resolver.d.ts.map +1 -0
  247. package/dist/orm/helpers/relations/relation-resolver.js +25 -0
  248. package/dist/orm/helpers/relations/relation-resolver.js.map +1 -0
  249. package/dist/orm/index.d.ts +7 -0
  250. package/dist/orm/index.d.ts.map +1 -0
  251. package/dist/orm/index.js +5 -0
  252. package/dist/orm/index.js.map +1 -0
  253. package/dist/orm/query-builder.d.ts +136 -0
  254. package/dist/orm/query-builder.d.ts.map +1 -0
  255. package/dist/orm/query-builder.js +433 -0
  256. package/dist/orm/query-builder.js.map +1 -0
  257. package/dist/orm/query-helpers.d.ts +35 -0
  258. package/dist/orm/query-helpers.d.ts.map +1 -0
  259. package/dist/orm/query-helpers.js +83 -0
  260. package/dist/orm/query-helpers.js.map +1 -0
  261. package/dist/orm/query-state.d.ts +56 -0
  262. package/dist/orm/query-state.d.ts.map +1 -0
  263. package/dist/orm/query-state.js +112 -0
  264. package/dist/orm/query-state.js.map +1 -0
  265. package/dist/orm/single-row-query-builder.d.ts +18 -0
  266. package/dist/orm/single-row-query-builder.d.ts.map +1 -0
  267. package/dist/orm/single-row-query-builder.js +90 -0
  268. package/dist/orm/single-row-query-builder.js.map +1 -0
  269. package/dist/orm/trx.d.ts +40 -0
  270. package/dist/orm/trx.d.ts.map +1 -0
  271. package/dist/orm/trx.js +118 -0
  272. package/dist/orm/trx.js.map +1 -0
  273. package/dist/parser/acorn-helpers.d.ts +43 -0
  274. package/dist/parser/acorn-helpers.d.ts.map +1 -0
  275. package/dist/parser/acorn-helpers.js +104 -0
  276. package/dist/parser/acorn-helpers.js.map +1 -0
  277. package/dist/parser/acorn-member.d.ts +16 -0
  278. package/dist/parser/acorn-member.d.ts.map +1 -0
  279. package/dist/parser/acorn-member.js +31 -0
  280. package/dist/parser/acorn-member.js.map +1 -0
  281. package/dist/parser/acorn-types.d.ts +14 -0
  282. package/dist/parser/acorn-types.d.ts.map +1 -0
  283. package/dist/parser/acorn-types.js +6 -0
  284. package/dist/parser/acorn-types.js.map +1 -0
  285. package/dist/parser/arrow-source.d.ts +23 -0
  286. package/dist/parser/arrow-source.d.ts.map +1 -0
  287. package/dist/parser/arrow-source.js +70 -0
  288. package/dist/parser/arrow-source.js.map +1 -0
  289. package/dist/parser/group-by.d.ts +17 -0
  290. package/dist/parser/group-by.d.ts.map +1 -0
  291. package/dist/parser/group-by.js +62 -0
  292. package/dist/parser/group-by.js.map +1 -0
  293. package/dist/parser/index.d.ts +5 -0
  294. package/dist/parser/index.d.ts.map +1 -0
  295. package/dist/parser/index.js +3 -0
  296. package/dist/parser/index.js.map +1 -0
  297. package/dist/parser/parse-arrow.d.ts +10 -0
  298. package/dist/parser/parse-arrow.d.ts.map +1 -0
  299. package/dist/parser/parse-arrow.js +9 -0
  300. package/dist/parser/parse-arrow.js.map +1 -0
  301. package/dist/parser/predicate-walk.d.ts +24 -0
  302. package/dist/parser/predicate-walk.d.ts.map +1 -0
  303. package/dist/parser/predicate-walk.js +247 -0
  304. package/dist/parser/predicate-walk.js.map +1 -0
  305. package/dist/parser/resolve.d.ts +25 -0
  306. package/dist/parser/resolve.d.ts.map +1 -0
  307. package/dist/parser/resolve.js +134 -0
  308. package/dist/parser/resolve.js.map +1 -0
  309. package/dist/parser/select.d.ts +7 -0
  310. package/dist/parser/select.d.ts.map +1 -0
  311. package/dist/parser/select.js +333 -0
  312. package/dist/parser/select.js.map +1 -0
  313. package/dist/parser/update.d.ts +7 -0
  314. package/dist/parser/update.d.ts.map +1 -0
  315. package/dist/parser/update.js +51 -0
  316. package/dist/parser/update.js.map +1 -0
  317. package/dist/postgres/aggregates.d.ts +12 -0
  318. package/dist/postgres/aggregates.d.ts.map +1 -0
  319. package/dist/postgres/aggregates.js +19 -0
  320. package/dist/postgres/aggregates.js.map +1 -0
  321. package/dist/postgres.d.ts +6 -0
  322. package/dist/postgres.d.ts.map +1 -0
  323. package/dist/postgres.js +6 -0
  324. package/dist/postgres.js.map +1 -0
  325. package/dist/schema/index.d.ts +2 -0
  326. package/dist/schema/index.d.ts.map +1 -0
  327. package/dist/schema/index.js +2 -0
  328. package/dist/schema/index.js.map +1 -0
  329. package/dist/schema/types.d.ts +16 -0
  330. package/dist/schema/types.d.ts.map +1 -0
  331. package/dist/schema/types.js +40 -0
  332. package/dist/schema/types.js.map +1 -0
  333. package/dist/sqlite/aggregates.d.ts +8 -0
  334. package/dist/sqlite/aggregates.d.ts.map +1 -0
  335. package/dist/sqlite/aggregates.js +11 -0
  336. package/dist/sqlite/aggregates.js.map +1 -0
  337. package/dist/sqlite.d.ts +6 -0
  338. package/dist/sqlite.d.ts.map +1 -0
  339. package/dist/sqlite.js +6 -0
  340. package/dist/sqlite.js.map +1 -0
  341. package/dist/transformer/bindings.d.ts +18 -0
  342. package/dist/transformer/bindings.d.ts.map +1 -0
  343. package/dist/transformer/bindings.js +52 -0
  344. package/dist/transformer/bindings.js.map +1 -0
  345. package/dist/transformer/index.d.ts +17 -0
  346. package/dist/transformer/index.d.ts.map +1 -0
  347. package/dist/transformer/index.js +75 -0
  348. package/dist/transformer/index.js.map +1 -0
  349. package/dist/transformer/ir-emit.d.ts +12 -0
  350. package/dist/transformer/ir-emit.d.ts.map +1 -0
  351. package/dist/transformer/ir-emit.js +144 -0
  352. package/dist/transformer/ir-emit.js.map +1 -0
  353. package/dist/transformer/join-transformer.d.ts +12 -0
  354. package/dist/transformer/join-transformer.d.ts.map +1 -0
  355. package/dist/transformer/join-transformer.js +102 -0
  356. package/dist/transformer/join-transformer.js.map +1 -0
  357. package/dist/transformer/orderby-transformer.d.ts +13 -0
  358. package/dist/transformer/orderby-transformer.d.ts.map +1 -0
  359. package/dist/transformer/orderby-transformer.js +84 -0
  360. package/dist/transformer/orderby-transformer.js.map +1 -0
  361. package/dist/transformer/select-transformer.d.ts +9 -0
  362. package/dist/transformer/select-transformer.d.ts.map +1 -0
  363. package/dist/transformer/select-transformer.js +222 -0
  364. package/dist/transformer/select-transformer.js.map +1 -0
  365. package/dist/transformer/shared.d.ts +12 -0
  366. package/dist/transformer/shared.d.ts.map +1 -0
  367. package/dist/transformer/shared.js +12 -0
  368. package/dist/transformer/shared.js.map +1 -0
  369. package/dist/transformer/subquery-transformer.d.ts +15 -0
  370. package/dist/transformer/subquery-transformer.d.ts.map +1 -0
  371. package/dist/transformer/subquery-transformer.js +43 -0
  372. package/dist/transformer/subquery-transformer.js.map +1 -0
  373. package/dist/transformer/ts-aggregates.d.ts +13 -0
  374. package/dist/transformer/ts-aggregates.d.ts.map +1 -0
  375. package/dist/transformer/ts-aggregates.js +83 -0
  376. package/dist/transformer/ts-aggregates.js.map +1 -0
  377. package/dist/transformer/ts-binary.d.ts +8 -0
  378. package/dist/transformer/ts-binary.d.ts.map +1 -0
  379. package/dist/transformer/ts-binary.js +32 -0
  380. package/dist/transformer/ts-binary.js.map +1 -0
  381. package/dist/transformer/ts-member.d.ts +12 -0
  382. package/dist/transformer/ts-member.d.ts.map +1 -0
  383. package/dist/transformer/ts-member.js +22 -0
  384. package/dist/transformer/ts-member.js.map +1 -0
  385. package/dist/transformer/ts-utils.d.ts +10 -0
  386. package/dist/transformer/ts-utils.d.ts.map +1 -0
  387. package/dist/transformer/ts-utils.js +38 -0
  388. package/dist/transformer/ts-utils.js.map +1 -0
  389. package/dist/transformer/typhex-type.d.ts +8 -0
  390. package/dist/transformer/typhex-type.d.ts.map +1 -0
  391. package/dist/transformer/typhex-type.js +52 -0
  392. package/dist/transformer/typhex-type.js.map +1 -0
  393. package/dist/transformer/where-transformer.d.ts +33 -0
  394. package/dist/transformer/where-transformer.d.ts.map +1 -0
  395. package/dist/transformer/where-transformer.js +400 -0
  396. package/dist/transformer/where-transformer.js.map +1 -0
  397. package/dist/utils.d.ts +5 -0
  398. package/dist/utils.d.ts.map +1 -0
  399. package/dist/utils.js +30 -0
  400. package/dist/utils.js.map +1 -0
  401. package/docs/drivers/postgres.md +54 -0
  402. package/docs/drivers/sqlite.md +33 -0
  403. package/docs/guide/aggregations.md +272 -0
  404. package/docs/guide/bulk-operations.md +204 -0
  405. package/docs/guide/cte-and-unions.md +270 -0
  406. package/docs/guide/entities-relations.md +208 -0
  407. package/docs/guide/expressions.md +98 -0
  408. package/docs/guide/filtering-by-relations.md +166 -0
  409. package/docs/guide/getting-started.md +277 -0
  410. package/docs/guide/querying-relations.md +133 -0
  411. package/docs/guide/subqueries.md +152 -0
  412. package/docs/guide/transactions.md +146 -0
  413. package/docs/guide/typescript-transformer.md +138 -0
  414. package/docs/index.md +33 -0
  415. package/docs/migrations/overview.md +143 -0
  416. package/docs/public-api.md +133 -0
  417. package/docs/reference/api.md +665 -0
  418. package/docs/reference/architecture.md +83 -0
  419. package/docs/release-checklist.md +55 -0
  420. package/etc/typhex.api.md +774 -0
  421. package/package.json +137 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ESTree node aliases for the runtime parser. Acorn's AST conforms to ESTree;
3
+ * these types replace the previous opaque `acorn.Node & Record<string, unknown>`.
4
+ */
5
+ import type * as ESTree from "estree";
6
+ /** ESTree node with optional acorn source offsets. */
7
+ export type AcornNode = ESTree.Node & {
8
+ start?: number;
9
+ end?: number;
10
+ };
11
+ export type AcornExpr = ESTree.Expression;
12
+ export type AcornPattern = ESTree.Pattern;
13
+ export type AcornFunctionBody = ESTree.BlockStatement | ESTree.Expression;
14
+ //# sourceMappingURL=acorn-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-types.d.ts","sourceRoot":"","sources":["../../src/parser/acorn-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEtC,sDAAsD;AACtD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACvE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;AAC1C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * ESTree node aliases for the runtime parser. Acorn's AST conforms to ESTree;
3
+ * these types replace the previous opaque `acorn.Node & Record<string, unknown>`.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=acorn-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-types.js","sourceRoot":"","sources":["../../src/parser/acorn-types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * String-level helpers for runtime arrow parsing: extract body from
3
+ * `fn.toString()`, infer parameter names, and parse expression source via acorn.
4
+ */
5
+ import type { AcornExpr, AcornNode } from "./acorn-types.js";
6
+ /** Parse a single JS expression source string into an acorn AST node; throws on failure. */
7
+ export declare function parseExpressionSource(src: string): AcornExpr;
8
+ /** Slice the original source text covered by an acorn node using its start/end offsets. */
9
+ export declare function sliceNodeSource(node: AcornNode, source: string): string | null;
10
+ /**
11
+ * Extract the body expression source from an arrow function's `toString()`.
12
+ * Supports expression bodies and single-`return` block bodies.
13
+ */
14
+ export declare function extractArrowBody(src: string): string | null;
15
+ /**
16
+ * Parse parameter names out of an arrow's source text, handling
17
+ * `async` prefixes, parenthesized lists, and inline type annotations.
18
+ * Returns `["u"]` if nothing can be inferred.
19
+ */
20
+ export declare function inferParamNames(src: string): string[];
21
+ /** Strip outer parens from `({ … })` bodies and wrap in `(…)` for expression parsing. */
22
+ export declare function normalizeSelectBodySource(body: string): string;
23
+ //# sourceMappingURL=arrow-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-source.d.ts","sourceRoot":"","sources":["../../src/parser/arrow-source.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7D,4FAA4F;AAC5F,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAQ5D;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK9E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU3D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBrD;AAED,yFAAyF;AACzF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9D"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * String-level helpers for runtime arrow parsing: extract body from
3
+ * `fn.toString()`, infer parameter names, and parse expression source via acorn.
4
+ */
5
+ import * as acorn from "acorn";
6
+ /** Parse a single JS expression source string into an acorn AST node; throws on failure. */
7
+ export function parseExpressionSource(src) {
8
+ const ast = acorn.parse(src, { ecmaVersion: "latest", locations: true });
9
+ const stmt = ast.body[0];
10
+ if (stmt?.type !== "ExpressionStatement" || !stmt.expression) {
11
+ throw new Error("Expected expression: " + src);
12
+ }
13
+ // Acorn's Expression type is ESTree-compatible; assert once at the parse boundary.
14
+ return stmt.expression;
15
+ }
16
+ /** Slice the original source text covered by an acorn node using its start/end offsets. */
17
+ export function sliceNodeSource(node, source) {
18
+ const start = node.start;
19
+ const end = node.end;
20
+ if (typeof start !== "number" || typeof end !== "number")
21
+ return null;
22
+ return source.slice(start, end);
23
+ }
24
+ /**
25
+ * Extract the body expression source from an arrow function's `toString()`.
26
+ * Supports expression bodies and single-`return` block bodies.
27
+ */
28
+ export function extractArrowBody(src) {
29
+ const idx = src.indexOf("=>");
30
+ if (idx === -1)
31
+ return null;
32
+ const body = src.slice(idx + 2).trim();
33
+ if (!body.startsWith("{"))
34
+ return body;
35
+ const inner = body.slice(1, -1).trim();
36
+ const returnMatch = inner.match(/^return\s+(.+);?\s*$/s);
37
+ if (!returnMatch)
38
+ return null;
39
+ return returnMatch[1].replace(/;\s*$/, "").trim();
40
+ }
41
+ /**
42
+ * Parse parameter names out of an arrow's source text, handling
43
+ * `async` prefixes, parenthesized lists, and inline type annotations.
44
+ * Returns `["u"]` if nothing can be inferred.
45
+ */
46
+ export function inferParamNames(src) {
47
+ const idx = src.indexOf("=>");
48
+ if (idx === -1)
49
+ return ["u"];
50
+ let before = src
51
+ .slice(0, idx)
52
+ .replace(/^\s*async\s+/, "")
53
+ .trim();
54
+ if (before.startsWith("(") && before.endsWith(")")) {
55
+ before = before.slice(1, -1);
56
+ }
57
+ if (!before)
58
+ return ["u"];
59
+ const names = before
60
+ .split(",")
61
+ .map((p) => p.trim().split(/[\s:]/)[0])
62
+ .filter(Boolean);
63
+ return names.length > 0 ? names : ["u"];
64
+ }
65
+ /** Strip outer parens from `({ … })` bodies and wrap in `(…)` for expression parsing. */
66
+ export function normalizeSelectBodySource(body) {
67
+ const inner = body.startsWith("(") && body.endsWith(")") ? body.slice(1, -1) : body;
68
+ return `(${inner})`;
69
+ }
70
+ //# sourceMappingURL=arrow-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrow-source.js","sourceRoot":"","sources":["../../src/parser/arrow-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Runtime parsing for `.groupBy(...)` arrow lambdas into member paths and/or
3
+ * positional column references.
4
+ */
5
+ /**
6
+ * Parse a `.groupBy(...)` arrow into an array of member paths and/or
7
+ * positional column references.
8
+ *
9
+ * Supported shapes:
10
+ * - `o => o.category` → `[["category"]]`
11
+ * - `o => 1` → `[1]` (positional)
12
+ * - `o => [o.a, o.b, 2]` → `[["a"], ["b"], 2]`
13
+ *
14
+ * Returns an empty array for unrecognized shapes.
15
+ */
16
+ export declare function parseArrowToGroupByPaths(fn: (...args: unknown[]) => unknown): Array<string[] | number>;
17
+ //# sourceMappingURL=group-by.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by.d.ts","sourceRoot":"","sources":["../../src/parser/group-by.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAClC,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAc1B"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Runtime parsing for `.groupBy(...)` arrow lambdas into member paths and/or
3
+ * positional column references.
4
+ */
5
+ import { extractArrowBody, inferParamNames, parseExpressionSource } from "./arrow-source.js";
6
+ import { isArrayExpression, isMemberExpression, isNumberLiteral } from "./acorn-helpers.js";
7
+ import { resolvePathFromParam } from "./acorn-member.js";
8
+ /**
9
+ * Parse a `.groupBy(...)` arrow into an array of member paths and/or
10
+ * positional column references.
11
+ *
12
+ * Supported shapes:
13
+ * - `o => o.category` → `[["category"]]`
14
+ * - `o => 1` → `[1]` (positional)
15
+ * - `o => [o.a, o.b, 2]` → `[["a"], ["b"], 2]`
16
+ *
17
+ * Returns an empty array for unrecognized shapes.
18
+ */
19
+ export function parseArrowToGroupByPaths(fn) {
20
+ const src = fn.toString();
21
+ const body = extractArrowBody(src);
22
+ if (!body)
23
+ return [];
24
+ const paramName = inferParamNames(src)[0] ?? "u";
25
+ let expr;
26
+ try {
27
+ expr = parseExpressionSource(body);
28
+ }
29
+ catch {
30
+ return [];
31
+ }
32
+ return extractGroupByEntries(expr, paramName);
33
+ }
34
+ /** Dispatch groupBy body expression to the right extractor for its shape. */
35
+ function extractGroupByEntries(expr, paramName) {
36
+ if (isNumberLiteral(expr))
37
+ return [expr.value];
38
+ if (isMemberExpression(expr)) {
39
+ const path = resolvePathFromParam(expr, paramName);
40
+ return path && path.length > 0 ? [path] : [];
41
+ }
42
+ if (isArrayExpression(expr)) {
43
+ return collectGroupByArrayElements(expr.elements, paramName);
44
+ }
45
+ return [];
46
+ }
47
+ function collectGroupByArrayElements(elements, paramName) {
48
+ const entries = [];
49
+ for (const el of elements) {
50
+ if (!el || el.type === "SpreadElement")
51
+ continue;
52
+ if (isNumberLiteral(el)) {
53
+ entries.push(el.value);
54
+ continue;
55
+ }
56
+ const path = resolvePathFromParam(el, paramName);
57
+ if (path && path.length > 0)
58
+ entries.push(path);
59
+ }
60
+ return entries;
61
+ }
62
+ //# sourceMappingURL=group-by.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by.js","sourceRoot":"","sources":["../../src/parser/group-by.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,EAAmC;IAEnC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAEjD,IAAI,IAAe,CAAC;IACpB,IAAI,CAAC;QACH,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAChD,CAAC;AAED,6EAA6E;AAC7E,SAAS,qBAAqB,CAAC,IAAe,EAAE,SAAiB;IAC/D,IAAI,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnD,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,2BAA2B,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAwD,EACxD,SAAiB;IAEjB,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe;YAAE,SAAS;QACjD,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { parseArrowToIr, parseArrowToIrPredicate, parseArrowToIrSelect, parseArrowToGroupByPaths, parseArrowToUpdateSet, } from "./parse-arrow.js";
2
+ export type { ParseOptions } from "./parse-arrow.js";
3
+ export { resolveWhereIr, resolveHavingIr, resolveOrderBy, resolveSelectIr, resolveJoinKeys, resolveUpdateSet, } from "./resolve.js";
4
+ export type { ResolvedUpdateSet } from "./resolve.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { parseArrowToIr, parseArrowToIrPredicate, parseArrowToIrSelect, parseArrowToGroupByPaths, parseArrowToUpdateSet, } from "./parse-arrow.js";
2
+ export { resolveWhereIr, resolveHavingIr, resolveOrderBy, resolveSelectIr, resolveJoinKeys, resolveUpdateSet, } from "./resolve.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Barrel re-export for runtime arrow → IR parsing. Preserves the historical
3
+ * `parse-arrow.js` import path used by tests and `src/parser/resolve.ts`.
4
+ */
5
+ export type { ParseOptions } from "./predicate-walk.js";
6
+ export { parseArrowToIr, parseArrowToIrPredicate } from "./predicate-walk.js";
7
+ export { parseArrowToGroupByPaths } from "./group-by.js";
8
+ export { parseArrowToIrSelect } from "./select.js";
9
+ export { parseArrowToUpdateSet } from "./update.js";
10
+ //# sourceMappingURL=parse-arrow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-arrow.d.ts","sourceRoot":"","sources":["../../src/parser/parse-arrow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Barrel re-export for runtime arrow → IR parsing. Preserves the historical
3
+ * `parse-arrow.js` import path used by tests and `src/parser/resolve.ts`.
4
+ */
5
+ export { parseArrowToIr, parseArrowToIrPredicate } from "./predicate-walk.js";
6
+ export { parseArrowToGroupByPaths } from "./group-by.js";
7
+ export { parseArrowToIrSelect } from "./select.js";
8
+ export { parseArrowToUpdateSet } from "./update.js";
9
+ //# sourceMappingURL=parse-arrow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-arrow.js","sourceRoot":"","sources":["../../src/parser/parse-arrow.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Runtime WHERE/HAVING predicate parsing: acorn expression walk → IR.
3
+ * Includes binary/unary/member/call handling, aggregates, and .some()/.every().
4
+ */
5
+ import type * as ESTree from "estree";
6
+ import type { IrNode, IrAggregate, IrWhere } from "../ir/types.js";
7
+ import type { AcornExpr } from "./acorn-types.js";
8
+ export interface ParseOptions {
9
+ paramNames?: string[];
10
+ paramKeys?: string[];
11
+ subqueryKeys?: string[];
12
+ }
13
+ export declare function parseExpressionToIr(expr: AcornExpr, params: string[], paramKeys: string[], subqueryKeys?: string[]): IrNode;
14
+ export declare function parseArrowToIr(fn: (...args: unknown[]) => unknown, options?: ParseOptions): IrNode;
15
+ export declare function parseArrowToIrPredicate(fn: (...args: unknown[]) => unknown, options?: ParseOptions): IrWhere;
16
+ interface AggregateParseResult {
17
+ ir: IrAggregate;
18
+ rawName: string;
19
+ }
20
+ export declare function tryParseAggregate(callNode: ESTree.CallExpression, params: string[], paramKeys: string[], opts: {
21
+ strictDistinct: boolean;
22
+ }, subqueryKeys: string[]): AggregateParseResult | null;
23
+ export {};
24
+ //# sourceMappingURL=predicate-walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate-walk.d.ts","sourceRoot":"","sources":["../../src/parser/predicate-walk.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EACV,MAAM,EAQN,WAAW,EACX,OAAO,EAER,MAAM,gBAAgB,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiBlD,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,GAAE,MAAM,EAAO,GAC1B,MAAM,CAER;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACnC,OAAO,GAAE,YAAiB,GACzB,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACnC,OAAO,GAAE,YAAiB,GACzB,OAAO,CAaT;AA2ND,UAAU,oBAAoB;IAC5B,EAAE,EAAE,WAAW,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,CAAC,cAAc,EAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,EAAE;IAAE,cAAc,EAAE,OAAO,CAAA;CAAE,EACjC,YAAY,EAAE,MAAM,EAAE,GACrB,oBAAoB,GAAG,IAAI,CA0B7B"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Runtime WHERE/HAVING predicate parsing: acorn expression walk → IR.
3
+ * Includes binary/unary/member/call handling, aggregates, and .some()/.every().
4
+ */
5
+ import { DEFAULT_ROW_PARAM, ALLOWED_METHODS, ACORN_BINARY_OPS } from "../arrow/constants.js";
6
+ import { AGGREGATE_FUNCS, toIrFuncName } from "../arrow/aggregates.js";
7
+ import { extractArrowBody, inferParamNames, parseExpressionSource } from "./arrow-source.js";
8
+ import { extractCallbackExpression, firstParamName, isArrowFunctionExpression, isCallExpression, isExpressionNode, isFunctionExpression, isIdent, isIdentifier, isMemberExpression, isStringLiteral, memberObjectExpr, } from "./acorn-helpers.js";
9
+ import { resolveMemberPath } from "./acorn-member.js";
10
+ export function parseExpressionToIr(expr, params, paramKeys, subqueryKeys = []) {
11
+ return walk(expr, params, paramKeys, subqueryKeys);
12
+ }
13
+ export function parseArrowToIr(fn, options = {}) {
14
+ return parseArrowToIrPredicate(fn, options).node;
15
+ }
16
+ export function parseArrowToIrPredicate(fn, options = {}) {
17
+ const src = fn.toString();
18
+ const body = extractArrowBody(src);
19
+ if (!body)
20
+ throw new Error("Could not extract arrow body: " + src);
21
+ const expr = parseExpressionSource(body);
22
+ const params = resolveParamsFromOptions(src, options);
23
+ return {
24
+ node: walk(expr, params, options.paramKeys ?? [], options.subqueryKeys ?? []),
25
+ rootParam: params[0] ?? DEFAULT_ROW_PARAM,
26
+ localParamNames: params,
27
+ };
28
+ }
29
+ function resolveParamsFromOptions(src, options) {
30
+ if (options.paramNames)
31
+ return options.paramNames;
32
+ return inferParamNames(src);
33
+ }
34
+ function walk(node, params, paramKeys, subqueryKeys) {
35
+ switch (node.type) {
36
+ case "BinaryExpression":
37
+ case "LogicalExpression":
38
+ return walkBinaryLike(node, params, paramKeys, subqueryKeys);
39
+ case "UnaryExpression":
40
+ return walkUnary(node, params, paramKeys, subqueryKeys);
41
+ case "MemberExpression":
42
+ return walkMember(node, params);
43
+ case "Identifier":
44
+ return walkIdentifier(node, params, paramKeys);
45
+ case "Literal":
46
+ return { kind: "const", value: node.value };
47
+ case "CallExpression":
48
+ return walkCall(node, params, paramKeys, subqueryKeys);
49
+ case "ArrayExpression":
50
+ return walkArrayLiteral(node, params, paramKeys, subqueryKeys);
51
+ case "ConditionalExpression":
52
+ return walkConditional(node, params, paramKeys, subqueryKeys);
53
+ default:
54
+ throw new Error("Unsupported node type: " + node.type);
55
+ }
56
+ }
57
+ function walkConditional(node, params, paramKeys, subqueryKeys) {
58
+ const when = walk(node.test, params, paramKeys, subqueryKeys);
59
+ const then = walk(node.consequent, params, paramKeys, subqueryKeys);
60
+ const alternate = walk(node.alternate, params, paramKeys, subqueryKeys);
61
+ if (alternate.kind === "case") {
62
+ return {
63
+ kind: "case",
64
+ branches: [{ when, then }, ...alternate.branches],
65
+ ...(alternate.else !== undefined ? { else: alternate.else } : {}),
66
+ };
67
+ }
68
+ return { kind: "case", branches: [{ when, then }], else: alternate };
69
+ }
70
+ function walkBinaryLike(node, params, paramKeys, subqueryKeys) {
71
+ if (node.operator === "in") {
72
+ if (!isExpressionNode(node.left)) {
73
+ throw new Error("Unsupported left-hand side of in operator");
74
+ }
75
+ const left = walk(node.left, params, paramKeys, subqueryKeys);
76
+ const rhs = node.right;
77
+ if (isIdentifier(rhs) && subqueryKeys.includes(rhs.name)) {
78
+ return { kind: "in", left, right: { kind: "subqueryRef", key: rhs.name } };
79
+ }
80
+ if (!isExpressionNode(rhs)) {
81
+ throw new Error("Unsupported right-hand side of in operator");
82
+ }
83
+ const right = walk(rhs, params, paramKeys, subqueryKeys);
84
+ return { kind: "in", left, right };
85
+ }
86
+ if (!isExpressionNode(node.left) || !isExpressionNode(node.right)) {
87
+ throw new Error("Unsupported binary operand");
88
+ }
89
+ const left = walk(node.left, params, paramKeys, subqueryKeys);
90
+ const right = walk(node.right, params, paramKeys, subqueryKeys);
91
+ const op = ACORN_BINARY_OPS[node.operator];
92
+ if (!op)
93
+ throw new Error("Unsupported binary operator: " + node.operator);
94
+ return { kind: "binary", op, left, right };
95
+ }
96
+ function walkUnary(node, params, paramKeys, subqueryKeys) {
97
+ const op = node.operator;
98
+ if (op !== "!" && op !== "~")
99
+ throw new Error("Unsupported unary: " + op);
100
+ const inner = walk(node.argument, params, paramKeys, subqueryKeys);
101
+ if (op === "!" && inner.kind === "in")
102
+ return { ...inner, negated: !inner.negated };
103
+ return { kind: "unary", op, operand: inner };
104
+ }
105
+ function walkMember(node, params) {
106
+ const resolved = resolveMemberPath(node, params);
107
+ if (!resolved)
108
+ throw new Error("Unsupported member expression");
109
+ return { kind: "member", param: resolved.param, path: resolved.path };
110
+ }
111
+ function walkIdentifier(node, params, paramKeys) {
112
+ if (params.includes(node.name))
113
+ return { kind: "member", param: node.name, path: [] };
114
+ if (paramKeys.includes(node.name))
115
+ return { kind: "param", key: node.name };
116
+ throw new Error("Unknown identifier (not param or entity): " + node.name);
117
+ }
118
+ function walkArrayLiteral(node, params, paramKeys, subqueryKeys) {
119
+ const values = node.elements.map((e) => {
120
+ if (!e || e.type === "SpreadElement")
121
+ throw new Error("Unsupported array element");
122
+ const ir = walk(e, params, paramKeys, subqueryKeys);
123
+ if (ir.kind !== "const")
124
+ throw new Error("IN array must contain literals");
125
+ return ir.value;
126
+ });
127
+ return { kind: "const", value: values };
128
+ }
129
+ function walkCall(node, params, paramKeys, subqueryKeys) {
130
+ const callee = node.callee;
131
+ if (isIdentifier(callee)) {
132
+ const aggregate = tryParseAggregate(node, params, paramKeys, { strictDistinct: true }, subqueryKeys);
133
+ if (aggregate)
134
+ return aggregate.ir;
135
+ throw new Error("Unsupported call expression");
136
+ }
137
+ if (!isMemberExpression(callee)) {
138
+ throw new Error("Unsupported call expression");
139
+ }
140
+ const method = isIdentifier(callee.property) ? callee.property.name : undefined;
141
+ const exists = tryParseSomeEvery(node, method, params, paramKeys, subqueryKeys);
142
+ if (exists)
143
+ return exists;
144
+ if (!method || !ALLOWED_METHODS.has(method)) {
145
+ throw new Error("Unsupported method: " + method);
146
+ }
147
+ const receiver = memberObjectExpr(callee);
148
+ if (!receiver)
149
+ throw new Error("Unsupported call receiver");
150
+ return {
151
+ kind: "call",
152
+ method,
153
+ receiver: walk(receiver, params, paramKeys, subqueryKeys),
154
+ args: node.arguments.map((a) => {
155
+ if (a.type === "SpreadElement")
156
+ throw new Error("Unsupported spread argument");
157
+ return walk(a, params, paramKeys, subqueryKeys);
158
+ }),
159
+ };
160
+ }
161
+ function tryParseSomeEvery(node, method, params, paramKeys, subqueryKeys) {
162
+ if (method !== "some" && method !== "every")
163
+ return null;
164
+ if (node.arguments.length !== 1)
165
+ return null;
166
+ if (!isMemberExpression(node.callee))
167
+ return null;
168
+ const calleeObject = memberObjectExpr(node.callee);
169
+ if (!calleeObject)
170
+ return null;
171
+ const receiver = resolveMemberPath(calleeObject, params);
172
+ if (!receiver || receiver.path.length < 1)
173
+ return null;
174
+ const cb = node.arguments[0];
175
+ if (!isArrowFunctionExpression(cb) && !isFunctionExpression(cb))
176
+ return null;
177
+ const innerParam = firstParamName(cb.params) ?? "e";
178
+ const innerExpr = extractCallbackExpression(cb.body, method);
179
+ const innerWhere = walk(innerExpr, [innerParam], paramKeys, subqueryKeys);
180
+ return {
181
+ kind: "exists",
182
+ ...(method === "every" ? { negated: true } : {}),
183
+ rootParam: receiver.param,
184
+ relationKey: receiver.path[0],
185
+ innerParam,
186
+ innerWhere,
187
+ };
188
+ }
189
+ export function tryParseAggregate(callNode, params, paramKeys, opts, subqueryKeys) {
190
+ const callee = callNode.callee;
191
+ if (!isIdentifier(callee))
192
+ return null;
193
+ const rawName = callee.name;
194
+ const funcName = toIrFuncName(rawName);
195
+ if (!AGGREGATE_FUNCS.has(funcName))
196
+ return null;
197
+ const { arg, distinct } = parseAggregateArg(callNode.arguments[0] ?? null, params, paramKeys, rawName, opts, subqueryKeys);
198
+ const separator = parseAggregateSeparator(funcName, callNode.arguments);
199
+ const ir = {
200
+ kind: "aggregate",
201
+ func: funcName,
202
+ arg,
203
+ ...(distinct ? { distinct: true } : {}),
204
+ ...(separator !== undefined ? { separator } : {}),
205
+ };
206
+ return { ir, rawName };
207
+ }
208
+ function parseAggregateArg(argNode, params, paramKeys, rawName, opts, subqueryKeys) {
209
+ if (!argNode || argNode.type === "SpreadElement")
210
+ return { arg: null, distinct: false };
211
+ if (isCallExpression(argNode) && isIdent(argNode.callee, "distinct")) {
212
+ return parseDistinctWrapper(argNode, params, paramKeys, rawName, opts, subqueryKeys);
213
+ }
214
+ try {
215
+ return { arg: walk(argNode, params, paramKeys, subqueryKeys), distinct: false };
216
+ }
217
+ catch {
218
+ return { arg: null, distinct: false };
219
+ }
220
+ }
221
+ function parseDistinctWrapper(distinctCall, params, paramKeys, rawName, opts, subqueryKeys) {
222
+ const inner = distinctCall.arguments[0];
223
+ if (!inner || inner.type === "SpreadElement") {
224
+ if (opts.strictDistinct) {
225
+ throw new Error(`Unsupported DISTINCT aggregate expression in ${rawName}(): missing inner argument`);
226
+ }
227
+ return { arg: null, distinct: false };
228
+ }
229
+ try {
230
+ return { arg: walk(inner, params, paramKeys, subqueryKeys), distinct: true };
231
+ }
232
+ catch {
233
+ if (opts.strictDistinct) {
234
+ throw new Error(`Unsupported DISTINCT aggregate expression in ${rawName}(): could not parse distinct(...) argument`);
235
+ }
236
+ return { arg: null, distinct: false };
237
+ }
238
+ }
239
+ function parseAggregateSeparator(funcName, args) {
240
+ if (funcName !== "GROUP_CONCAT" && funcName !== "STRING_AGG")
241
+ return undefined;
242
+ if (args.length < 2)
243
+ return undefined;
244
+ const sep = args[1];
245
+ return sep && sep.type !== "SpreadElement" && isStringLiteral(sep) ? sep.value : undefined;
246
+ }
247
+ //# sourceMappingURL=predicate-walk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate-walk.js","sourceRoot":"","sources":["../../src/parser/predicate-walk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Input resolvers: normalise the three QB method input shapes
3
+ * (pre-built IR | arrow function | string / string[]) to IR structures.
4
+ */
5
+ import type { IrHaving, IrNode, IrOrderBy, IrSelect, IrWhere, OrderDirection } from "../ir/types.js";
6
+ /** Resolve a where input (pre-built predicate IR or arrow fn) to an IrWhere. */
7
+ export declare function resolveWhereIr(input: IrWhere | ((entity: unknown) => boolean), paramKeys?: string[], subqueryKeys?: string[]): IrWhere;
8
+ export declare function resolveHavingIr(input: IrHaving | ((entity: unknown) => boolean), paramKeys?: string[], subqueryKeys?: string[]): IrHaving;
9
+ /** Resolve an entity-table join ON input (pre-built predicate IR or arrow fn) to an IrWhere. */
10
+ export declare function resolveJoinOnIr(joinType: string, input: IrWhere | ((joined: unknown, row: unknown) => boolean)): IrWhere;
11
+ /** Resolve an orderBy input (pre-built IrOrderBy, string, or arrow fn) to an IrOrderBy. */
12
+ export declare function resolveOrderBy(input: IrOrderBy | string | ((row: unknown) => unknown), direction?: OrderDirection, paramKeys?: string[]): IrOrderBy;
13
+ /** Resolve a select input (pre-built IrSelect, column string array, or arrow fn) to an IrSelect. */
14
+ export declare function resolveSelectIr(input: IrSelect | string[] | ((row: unknown) => Record<string, unknown>), paramKeys?: string[]): IrSelect;
15
+ /** Resolve a groupBy input (arrow fn, string/number array, or mixed) to Array<string[] | number>. */
16
+ export declare function resolveGroupByPaths(columnOrFn: string | string[] | number | number[] | ((row: unknown) => unknown), ...rest: (string | number)[]): Array<string[] | number>;
17
+ /** Resolve a join-hint input (string array or arrow fn) to relation key strings. */
18
+ export declare function resolveJoinKeys(fn: string[] | ((row: unknown) => unknown)): string[];
19
+ export interface ResolvedUpdateSet {
20
+ set?: Record<string, unknown>;
21
+ setIr?: Record<string, IrNode>;
22
+ }
23
+ /** Resolve an update input (literal map or arrow fn) for the query planner. */
24
+ export declare function resolveUpdateSet(input: Record<string, unknown> | ((row: unknown) => Record<string, unknown>)): ResolvedUpdateSet;
25
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/parser/resolve.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,QAAQ,EACR,MAAM,EACN,SAAS,EACT,QAAQ,EACR,OAAO,EACP,cAAc,EACf,MAAM,gBAAgB,CAAC;AAWxB,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,EAC/C,SAAS,GAAE,MAAM,EAAO,EACxB,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAST;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,EAChD,SAAS,GAAE,MAAM,EAAO,EACxB,YAAY,GAAE,MAAM,EAAO,GAC1B,QAAQ,CAEV;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAC5D,OAAO,CAST;AAED,2FAA2F;AAC3F,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,EACvD,SAAS,GAAE,cAAsB,EACjC,SAAS,GAAE,MAAM,EAAO,GACvB,SAAS,CAqCX;AAED,oGAAoG;AACpG,wBAAgB,eAAe,CAC7B,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxE,SAAS,GAAE,MAAM,EAAO,GACvB,QAAQ,CAaV;AAED,qGAAqG;AACrG,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,EAC/E,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC3B,KAAK,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAkB1B;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,MAAM,EAAE,CAqBpF;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC3E,iBAAiB,CAWnB"}