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,112 @@
1
+ /**
2
+ * Shared query-builder state and cloning helpers.
3
+ */
4
+ /** @internal — internal builder state */
5
+ export class QueryState {
6
+ tableName;
7
+ columnNames;
8
+ qe;
9
+ pkColumns;
10
+ whereIr;
11
+ whereParams;
12
+ subqueryParams;
13
+ orderBy;
14
+ limitNum;
15
+ offsetNum;
16
+ selectIr;
17
+ inlineParams;
18
+ relations;
19
+ hydrate;
20
+ resolveRelationTarget;
21
+ joinHints;
22
+ entityJoinHints;
23
+ havingIr;
24
+ havingParams;
25
+ entity;
26
+ unionAll;
27
+ ctes;
28
+ inScopeRegisteredCteNames;
29
+ fromSource;
30
+ updateSetIr;
31
+ insertIr;
32
+ constructor(init) {
33
+ this.tableName = init.tableName;
34
+ this.columnNames = init.columnNames;
35
+ this.qe = init.qe;
36
+ this.pkColumns = init.pkColumns;
37
+ this.whereIr = init.whereIr;
38
+ this.whereParams = init.whereParams;
39
+ this.subqueryParams = init.subqueryParams;
40
+ this.orderBy = init.orderBy;
41
+ this.limitNum = init.limitNum;
42
+ this.offsetNum = init.offsetNum;
43
+ this.selectIr = init.selectIr;
44
+ this.inlineParams = init.inlineParams;
45
+ this.relations = init.relations;
46
+ this.hydrate = init.hydrate;
47
+ this.resolveRelationTarget = init.resolveRelationTarget;
48
+ this.joinHints = init.joinHints;
49
+ this.entityJoinHints = init.entityJoinHints;
50
+ this.havingIr = init.havingIr;
51
+ this.havingParams = init.havingParams;
52
+ this.entity = init.entity;
53
+ this.unionAll = init.unionAll;
54
+ this.ctes = init.ctes;
55
+ this.inScopeRegisteredCteNames = init.inScopeRegisteredCteNames;
56
+ this.fromSource = init.fromSource;
57
+ this.updateSetIr = init.updateSetIr;
58
+ this.insertIr = init.insertIr;
59
+ }
60
+ /** Deep-clone mutable query state bags and nested CTE / subquery bodies. */
61
+ clone() {
62
+ const subqueryParams = {};
63
+ for (const [key, captured] of Object.entries(this.subqueryParams)) {
64
+ subqueryParams[key] = { state: captured.state.clone() };
65
+ }
66
+ return new QueryState({
67
+ tableName: this.tableName,
68
+ columnNames: [...this.columnNames],
69
+ qe: this.qe,
70
+ pkColumns: [...this.pkColumns],
71
+ whereIr: this.whereIr,
72
+ whereParams: { ...this.whereParams },
73
+ subqueryParams,
74
+ orderBy: [...this.orderBy],
75
+ limitNum: this.limitNum,
76
+ offsetNum: this.offsetNum,
77
+ selectIr: this.selectIr,
78
+ inlineParams: this.inlineParams ? { ...this.inlineParams } : undefined,
79
+ relations: this.relations,
80
+ hydrate: this.hydrate,
81
+ resolveRelationTarget: this.resolveRelationTarget,
82
+ joinHints: this.joinHints ? [...this.joinHints] : undefined,
83
+ entityJoinHints: this.entityJoinHints?.map((h) => ({
84
+ joinType: h.joinType,
85
+ entity: h.entity,
86
+ onIr: h.onIr,
87
+ })),
88
+ havingIr: this.havingIr,
89
+ havingParams: { ...this.havingParams },
90
+ entity: this.entity,
91
+ unionAll: this.unionAll?.clone(),
92
+ ctes: this.ctes?.map((c) => ({
93
+ name: c.name,
94
+ kind: c.kind,
95
+ inner: c.inner.clone(),
96
+ })),
97
+ inScopeRegisteredCteNames: this.inScopeRegisteredCteNames
98
+ ? [...this.inScopeRegisteredCteNames]
99
+ : undefined,
100
+ fromSource: QueryState.cloneFromSource(this.fromSource),
101
+ });
102
+ }
103
+ static cloneFromSource(source) {
104
+ if (!source)
105
+ return undefined;
106
+ if (source.kind === "subquery") {
107
+ return { kind: "subquery", state: source.state.clone() };
108
+ }
109
+ return source;
110
+ }
111
+ }
112
+ //# sourceMappingURL=query-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-state.js","sourceRoot":"","sources":["../../src/orm/query-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Single-row query builder: save(), delete(), patch() for an entity instance.
3
+ * No _dirty tracking: save() inserts if no pk, else updates all current column values.
4
+ */
5
+ export declare class SingleRowQueryBuilder<T = unknown> {
6
+ private readonly instance;
7
+ private readonly state;
8
+ private readonly runHook;
9
+ private readonly pkColumns;
10
+ private readonly columnNames;
11
+ /** Insert if instance has no complete pk, else update all column values. No _dirty; uses current instance state. */
12
+ save(): Promise<void>;
13
+ /** Delete the row by pk. */
14
+ delete(): Promise<void>;
15
+ /** Update the row by pk with the given set, then assign set onto the instance. */
16
+ patch(set: Record<string, unknown>): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=single-row-query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-row-query-builder.d.ts","sourceRoot":"","sources":["../../src/orm/single-row-query-builder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,qBAAa,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqD;IAC7E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IAiBvC,oHAAoH;IAC9G,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC3B,4BAA4B;IACtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB7B,kFAAkF;IAC5E,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAUzD"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Single-row query builder: save(), delete(), patch() for an entity instance.
3
+ * No _dirty tracking: save() inserts if no pk, else updates all current column values.
4
+ */
5
+ import { QueryBuilder } from "./query-builder.js";
6
+ import { buildFindByIdIr } from "./query-helpers.js";
7
+ export class SingleRowQueryBuilder {
8
+ instance;
9
+ state;
10
+ runHook;
11
+ pkColumns;
12
+ columnNames;
13
+ /** @internal */
14
+ constructor(instance, state, runHook, pkColumns, columnNames) {
15
+ this.instance = instance;
16
+ this.state = state;
17
+ this.runHook = runHook;
18
+ this.pkColumns = pkColumns;
19
+ this.columnNames = columnNames;
20
+ }
21
+ /** Insert if instance has no complete pk, else update all column values. No _dirty; uses current instance state. */
22
+ async save() {
23
+ const self = this.instance;
24
+ await this.runHook(self, "beforeSave");
25
+ const hasAllPk = this.pkColumns.every((c) => this.instance[c] !== undefined);
26
+ if (!hasAllPk) {
27
+ await this.runHook(self, "beforeCreate");
28
+ const row = {};
29
+ for (const c of this.columnNames) {
30
+ if (this.instance[c] !== undefined)
31
+ row[c] = this.instance[c];
32
+ }
33
+ const inserted = (await new QueryBuilder({ ...this.state }).insert(row));
34
+ for (const c of this.columnNames) {
35
+ if (inserted[c] !== undefined)
36
+ this.instance[c] = inserted[c];
37
+ }
38
+ if (typeof self._isNew === "boolean")
39
+ self._isNew = false;
40
+ await this.runHook(self, "afterCreate");
41
+ }
42
+ else {
43
+ await this.runHook(self, "beforeUpdate");
44
+ const set = {};
45
+ for (const c of this.columnNames) {
46
+ if (!this.pkColumns.includes(c) && this.instance[c] !== undefined)
47
+ set[c] = this.instance[c];
48
+ }
49
+ if (Object.keys(set).length > 0) {
50
+ await new QueryBuilder({
51
+ ...this.state,
52
+ whereIr: buildFindByIdIr(this.pkColumns, this.instance),
53
+ whereParams: {},
54
+ }).update(set);
55
+ }
56
+ await this.runHook(self, "afterUpdate");
57
+ }
58
+ await this.runHook(self, "afterSave");
59
+ }
60
+ /** Delete the row by pk. */
61
+ async delete() {
62
+ const self = this.instance;
63
+ await this.runHook(self, "beforeDelete");
64
+ const hasAllPk = this.pkColumns.every((c) => this.instance[c] !== undefined);
65
+ if (!hasAllPk) {
66
+ await this.runHook(self, "afterDelete");
67
+ return;
68
+ }
69
+ await new QueryBuilder({
70
+ ...this.state,
71
+ whereIr: buildFindByIdIr(this.pkColumns, this.instance),
72
+ whereParams: {},
73
+ }).delete();
74
+ await this.runHook(self, "afterDelete");
75
+ }
76
+ /** Update the row by pk with the given set, then assign set onto the instance. */
77
+ async patch(set) {
78
+ const hasAllPk = this.pkColumns.every((c) => this.instance[c] !== undefined);
79
+ if (!hasAllPk)
80
+ return;
81
+ await new QueryBuilder({
82
+ ...this.state,
83
+ whereIr: buildFindByIdIr(this.pkColumns, this.instance),
84
+ whereParams: {},
85
+ }).update(set);
86
+ for (const k of Object.keys(set))
87
+ this.instance[k] = set[k];
88
+ }
89
+ }
90
+ //# sourceMappingURL=single-row-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-row-query-builder.js","sourceRoot":"","sources":["../../src/orm/single-row-query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Base Trx class and active-transaction storage.
3
+ * QueryExecutor interface lives in db.ts.
4
+ * Kept in its own file to avoid circular imports:
5
+ * dialect trx subclasses → this file (no orm/db.ts dependency).
6
+ */
7
+ import type { DialectInfo, TransactionOptions } from "../driver/types.js";
8
+ export declare function getActiveTrx(): Trx | undefined;
9
+ export declare function runInTrxStorage<T>(trx: Trx, fn: () => Promise<T>): Promise<T>;
10
+ /** Base transaction class. Use `Db.transaction()` or `Db.beginTrx()` to obtain a `Trx` instance. */
11
+ export declare abstract class Trx {
12
+ /** Dialect-level defaults merged with user-provided options. Override in subclasses. */
13
+ static readonly defaultOptions: TransactionOptions;
14
+ /** The SQL dialect in use. */
15
+ get dialect(): DialectInfo;
16
+ /** Runs a SQL query within this transaction. */
17
+ query(sql: string, params?: unknown[]): Promise<unknown[]>;
18
+ /** Executes a SQL statement within this transaction. */
19
+ run(sql: string, params?: unknown[]): Promise<{
20
+ lastID?: number;
21
+ changes: number;
22
+ }>;
23
+ /** Opens a nested savepoint transaction if already inside a transaction, otherwise begins a root transaction. */
24
+ transaction<T>(fn: (trx: Trx) => Promise<T>): Promise<T>;
25
+ /** Create a savepoint-scoped child Trx and begin it. */
26
+ beginTrx(): Promise<Trx>;
27
+ /** Commit this transaction (COMMIT) or release the savepoint (RELEASE SAVEPOINT). */
28
+ abstract commit(): Promise<void>;
29
+ /** Roll back this transaction (ROLLBACK) or the savepoint (ROLLBACK TO SAVEPOINT). */
30
+ abstract rollback(): Promise<void>;
31
+ /**
32
+ * Validate options before beginning a root transaction.
33
+ * Dialect subclasses override this to reject options that are unsupported or contradictory.
34
+ * Only called for root transactions, not savepoints.
35
+ */
36
+ protected validateOptions(): void;
37
+ /** Issue BEGIN (root) or SAVEPOINT (nested). */
38
+ protected abstract begin(): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=trx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trx.d.ts","sourceRoot":"","sources":["../../src/orm/trx.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAsB,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG9F,wBAAgB,YAAY,IAAI,GAAG,GAAG,SAAS,CAE9C;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAE7E;AAQD,oGAAoG;AACpG,8BAAsB,GAAG;IACvB,wFAAwF;IACxF,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,kBAAkB,CAAM;IA+BxD,8BAA8B;IAC9B,IAAI,OAAO,IAAI,WAAW,CAEzB;IAED,gDAAgD;IAChD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI1D,wDAAwD;IACxD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMnF,iHAAiH;IAC3G,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAwC9D,wDAAwD;IAClD,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC;IAW9B,qFAAqF;IACrF,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAEhC,sFAAsF;IACtF,QAAQ,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC;;;;OAIG;IACH,SAAS,CAAC,eAAe,IAAI,IAAI;IAEjC,gDAAgD;IAChD,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAC1C"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Base Trx class and active-transaction storage.
3
+ * QueryExecutor interface lives in db.ts.
4
+ * Kept in its own file to avoid circular imports:
5
+ * dialect trx subclasses → this file (no orm/db.ts dependency).
6
+ */
7
+ import { AsyncLocalStorage } from "node:async_hooks";
8
+ const _txStorage = new AsyncLocalStorage();
9
+ export function getActiveTrx() {
10
+ return _txStorage.getStore();
11
+ }
12
+ export function runInTrxStorage(trx, fn) {
13
+ return _txStorage.run(trx, fn);
14
+ }
15
+ /** Base transaction class. Use `Db.transaction()` or `Db.beginTrx()` to obtain a `Trx` instance. */
16
+ export class Trx {
17
+ _conn;
18
+ /** Dialect-level defaults merged with user-provided options. Override in subclasses. */
19
+ static defaultOptions = {};
20
+ /** @internal */
21
+ _depth = 0;
22
+ /** @internal */
23
+ _spRoot;
24
+ /** @internal */
25
+ _savepointName;
26
+ /** @internal */
27
+ _cleanup;
28
+ /** @internal */
29
+ _isNested;
30
+ /** @internal */
31
+ _options;
32
+ /** @internal — Trx instances are created by `Db.transaction()` */
33
+ constructor(
34
+ /** @internal */
35
+ _conn, options, ctx) {
36
+ this._conn = _conn;
37
+ this._spRoot = ctx?.spRoot ?? { n: 0 };
38
+ this._isNested = ctx?.isNested ?? false;
39
+ this._savepointName = this._isNested ? `sp_${++this._spRoot.n}` : undefined;
40
+ this._options = { ...this.constructor.defaultOptions, ...options };
41
+ this.validateOptions();
42
+ }
43
+ // ── QueryExecutor ──────────────────────────────────────────────────────────
44
+ /** The SQL dialect in use. */
45
+ get dialect() {
46
+ return this._conn.dialect;
47
+ }
48
+ /** Runs a SQL query within this transaction. */
49
+ query(sql, params) {
50
+ return this._conn.execute(sql, params).then((r) => r.rows);
51
+ }
52
+ /** Executes a SQL statement within this transaction. */
53
+ run(sql, params) {
54
+ return this._conn.execute(sql, params).then((r) => ({ lastID: r.lastID, changes: r.changes }));
55
+ }
56
+ // ── Callback API ───────────────────────────────────────────────────────────
57
+ /** Opens a nested savepoint transaction if already inside a transaction, otherwise begins a root transaction. */
58
+ async transaction(fn) {
59
+ return !this._isNested && this._depth === 0
60
+ ? this._beginTransaction(fn)
61
+ : this._nestedTransaction(fn);
62
+ }
63
+ /** @internal */
64
+ async _beginTransaction(fn) {
65
+ await this.begin();
66
+ try {
67
+ const result = await fn(this);
68
+ await this.commit();
69
+ return result;
70
+ }
71
+ catch (e) {
72
+ try {
73
+ await this.rollback();
74
+ }
75
+ catch {
76
+ /* ignore */
77
+ }
78
+ throw e;
79
+ }
80
+ finally {
81
+ this._depth = 0;
82
+ }
83
+ }
84
+ /** @internal */
85
+ async _nestedTransaction(fn) {
86
+ const nested = await this.beginTrx();
87
+ try {
88
+ const result = await fn(nested);
89
+ await nested.commit();
90
+ return result;
91
+ }
92
+ catch (e) {
93
+ await nested.rollback();
94
+ throw e;
95
+ }
96
+ }
97
+ // ── Explicit API ───────────────────────────────────────────────────────────
98
+ /** Create a savepoint-scoped child Trx and begin it. */
99
+ async beginTrx() {
100
+ const Ctor = this.constructor;
101
+ const nested = new Ctor(this._conn, this._options, { spRoot: this._spRoot, isNested: true });
102
+ await nested.begin();
103
+ return nested;
104
+ }
105
+ // ── Internals ─────────────────────────────────────────────────────────────
106
+ /** @internal — set the connection-release callback and issue BEGIN. Called by Db.beginTrx(). */
107
+ async _initRoot(cleanup) {
108
+ this._cleanup = cleanup;
109
+ await this.begin();
110
+ }
111
+ /**
112
+ * Validate options before beginning a root transaction.
113
+ * Dialect subclasses override this to reject options that are unsupported or contradictory.
114
+ * Only called for root transactions, not savepoints.
115
+ */
116
+ validateOptions() { }
117
+ }
118
+ //# sourceMappingURL=trx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trx.js","sourceRoot":"","sources":["../../src/orm/trx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * ESTree type guards and small accessors used across predicate walking,
3
+ * group-by, select, and update parsing.
4
+ */
5
+ import type * as ESTree from "estree";
6
+ import type { AcornExpr, AcornFunctionBody, AcornNode } from "./acorn-types.js";
7
+ /** True when a node is an expression shape (excludes spread, patterns, super, etc.). */
8
+ export declare function isExpressionNode(node: AcornNode): node is AcornExpr;
9
+ export declare function isIdentifier(node: AcornNode | null | undefined): node is ESTree.Identifier;
10
+ /** True if `node` is an Identifier; if `name` is given, also checks it matches. */
11
+ export declare function isIdent(node: AcornNode | null | undefined, name?: string): node is ESTree.Identifier;
12
+ export declare function isLiteral(node: AcornNode | null | undefined): node is ESTree.Literal;
13
+ /** True if `node` is a string literal. */
14
+ export declare function isStringLiteral(node: AcornNode): node is ESTree.Literal & {
15
+ value: string;
16
+ };
17
+ /** True if `node` is a numeric literal. */
18
+ export declare function isNumberLiteral(node: AcornNode): node is ESTree.Literal & {
19
+ value: number;
20
+ };
21
+ export declare function isMemberExpression(node: AcornNode | null | undefined): node is ESTree.MemberExpression;
22
+ /** MemberExpression.object when it is a normal expression (not `super`). */
23
+ export declare function memberObjectExpr(node: ESTree.MemberExpression): AcornExpr | null;
24
+ export declare function isCallExpression(node: AcornNode | null | undefined): node is ESTree.CallExpression;
25
+ export declare function isObjectExpression(node: AcornNode | null | undefined): node is ESTree.ObjectExpression;
26
+ export declare function isArrayExpression(node: AcornNode | null | undefined): node is ESTree.ArrayExpression;
27
+ export declare function isProperty(node: AcornNode | null | undefined): node is ESTree.Property;
28
+ export declare function isSpreadElement(node: AcornNode | null | undefined): node is ESTree.SpreadElement;
29
+ export declare function isReturnStatement(node: AcornNode | null | undefined): node is ESTree.ReturnStatement;
30
+ export declare function isBlockStatement(node: AcornNode | null | undefined): node is ESTree.BlockStatement;
31
+ export declare function isArrowFunctionExpression(node: AcornNode | null | undefined): node is ESTree.ArrowFunctionExpression;
32
+ export declare function isFunctionExpression(node: AcornNode | null | undefined): node is ESTree.FunctionExpression;
33
+ export declare function isBinaryOrLogicalExpression(node: AcornNode): node is ESTree.BinaryExpression | ESTree.LogicalExpression;
34
+ export declare function isUnaryExpression(node: AcornNode): node is ESTree.UnaryExpression;
35
+ /** Resolve a non-computed object property key to its string name. */
36
+ export declare function propertyKeyName(key: ESTree.Expression | ESTree.PrivateIdentifier): string | null;
37
+ /** Object-literal property value — excludes destructuring patterns. */
38
+ export declare function objectPropertyValue(value: ESTree.Expression | ESTree.Pattern): AcornExpr | null;
39
+ /** First identifier param name from an arrow/function callback, or null. */
40
+ export declare function firstParamName(params: ESTree.Pattern[]): string | null;
41
+ /** Expression body of a relation callback: expression body or single `return`. */
42
+ export declare function extractCallbackExpression(body: AcornFunctionBody, method: string): AcornExpr;
43
+ //# sourceMappingURL=acorn-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-helpers.d.ts","sourceRoot":"","sources":["../../src/parser/acorn-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * ESTree type guards and small accessors used across predicate walking,
3
+ * group-by, select, and update parsing.
4
+ */
5
+ const NON_EXPRESSION_NODE_TYPES = new Set([
6
+ "SpreadElement",
7
+ "PrivateIdentifier",
8
+ "Super",
9
+ "ObjectPattern",
10
+ "ArrayPattern",
11
+ "RestElement",
12
+ "AssignmentPattern",
13
+ ]);
14
+ /** True when a node is an expression shape (excludes spread, patterns, super, etc.). */
15
+ export function isExpressionNode(node) {
16
+ return !NON_EXPRESSION_NODE_TYPES.has(node.type);
17
+ }
18
+ export function isIdentifier(node) {
19
+ return !!node && node.type === "Identifier";
20
+ }
21
+ /** True if `node` is an Identifier; if `name` is given, also checks it matches. */
22
+ export function isIdent(node, name) {
23
+ return isIdentifier(node) && (name === undefined || node.name === name);
24
+ }
25
+ export function isLiteral(node) {
26
+ return !!node && node.type === "Literal";
27
+ }
28
+ /** True if `node` is a string literal. */
29
+ export function isStringLiteral(node) {
30
+ return isLiteral(node) && typeof node.value === "string";
31
+ }
32
+ /** True if `node` is a numeric literal. */
33
+ export function isNumberLiteral(node) {
34
+ return isLiteral(node) && typeof node.value === "number";
35
+ }
36
+ export function isMemberExpression(node) {
37
+ return !!node && node.type === "MemberExpression";
38
+ }
39
+ /** MemberExpression.object when it is a normal expression (not `super`). */
40
+ export function memberObjectExpr(node) {
41
+ return node.object.type === "Super" ? null : node.object;
42
+ }
43
+ export function isCallExpression(node) {
44
+ return !!node && node.type === "CallExpression";
45
+ }
46
+ export function isObjectExpression(node) {
47
+ return !!node && node.type === "ObjectExpression";
48
+ }
49
+ export function isArrayExpression(node) {
50
+ return !!node && node.type === "ArrayExpression";
51
+ }
52
+ export function isProperty(node) {
53
+ return !!node && node.type === "Property";
54
+ }
55
+ export function isSpreadElement(node) {
56
+ return !!node && node.type === "SpreadElement";
57
+ }
58
+ export function isReturnStatement(node) {
59
+ return !!node && node.type === "ReturnStatement";
60
+ }
61
+ export function isBlockStatement(node) {
62
+ return !!node && node.type === "BlockStatement";
63
+ }
64
+ export function isArrowFunctionExpression(node) {
65
+ return !!node && node.type === "ArrowFunctionExpression";
66
+ }
67
+ export function isFunctionExpression(node) {
68
+ return !!node && node.type === "FunctionExpression";
69
+ }
70
+ export function isBinaryOrLogicalExpression(node) {
71
+ return node.type === "BinaryExpression" || node.type === "LogicalExpression";
72
+ }
73
+ export function isUnaryExpression(node) {
74
+ return node.type === "UnaryExpression";
75
+ }
76
+ /** Resolve a non-computed object property key to its string name. */
77
+ export function propertyKeyName(key) {
78
+ if (isIdentifier(key))
79
+ return key.name;
80
+ if (isLiteral(key) && typeof key.value === "string")
81
+ return key.value;
82
+ return null;
83
+ }
84
+ /** Object-literal property value — excludes destructuring patterns. */
85
+ export function objectPropertyValue(value) {
86
+ return isExpressionNode(value) ? value : null;
87
+ }
88
+ /** First identifier param name from an arrow/function callback, or null. */
89
+ export function firstParamName(params) {
90
+ const param = params[0];
91
+ return isIdentifier(param) ? param.name : null;
92
+ }
93
+ /** Expression body of a relation callback: expression body or single `return`. */
94
+ export function extractCallbackExpression(body, method) {
95
+ if (isBlockStatement(body)) {
96
+ const first = body.body[0];
97
+ if (!isReturnStatement(first) || !first.argument) {
98
+ throw new Error(`Unsupported .${method}() callback: need return`);
99
+ }
100
+ return first.argument;
101
+ }
102
+ return body;
103
+ }
104
+ //# sourceMappingURL=acorn-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-helpers.js","sourceRoot":"","sources":["../../src/parser/acorn-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Member-path resolution for acorn ASTs: `u.author.name` → { param, path }.
3
+ */
4
+ import type { AcornExpr } from "./acorn-types.js";
5
+ /**
6
+ * Walk a MemberExpression chain rooted at one of `params` and return the
7
+ * parameter name and the property path. Returns null if the chain isn't
8
+ * rooted at a known parameter or uses computed/non-identifier accesses.
9
+ */
10
+ export declare function resolveMemberPath(node: AcornExpr, params: string[]): {
11
+ param: string;
12
+ path: string[];
13
+ } | null;
14
+ /** Same as resolveMemberPath but constrained to a single parameter name. */
15
+ export declare function resolvePathFromParam(node: AcornExpr, paramName: string): string[] | null;
16
+ //# sourceMappingURL=acorn-member.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-member.d.ts","sourceRoot":"","sources":["../../src/parser/acorn-member.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EAAE,GACf;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAa1C;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAGxF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Member-path resolution for acorn ASTs: `u.author.name` → { param, path }.
3
+ */
4
+ import { isIdentifier, isMemberExpression, memberObjectExpr } from "./acorn-helpers.js";
5
+ /**
6
+ * Walk a MemberExpression chain rooted at one of `params` and return the
7
+ * parameter name and the property path. Returns null if the chain isn't
8
+ * rooted at a known parameter or uses computed/non-identifier accesses.
9
+ */
10
+ export function resolveMemberPath(node, params) {
11
+ if (isIdentifier(node) && params.includes(node.name)) {
12
+ return { param: node.name, path: [] };
13
+ }
14
+ if (!isMemberExpression(node) || node.computed)
15
+ return null;
16
+ if (!isIdentifier(node.property))
17
+ return null;
18
+ const object = memberObjectExpr(node);
19
+ if (!object)
20
+ return null;
21
+ const parent = resolveMemberPath(object, params);
22
+ if (!parent)
23
+ return null;
24
+ return { param: parent.param, path: [...parent.path, node.property.name] };
25
+ }
26
+ /** Same as resolveMemberPath but constrained to a single parameter name. */
27
+ export function resolvePathFromParam(node, paramName) {
28
+ const resolved = resolveMemberPath(node, [paramName]);
29
+ return resolved ? resolved.path : null;
30
+ }
31
+ //# sourceMappingURL=acorn-member.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-member.js","sourceRoot":"","sources":["../../src/parser/acorn-member.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExF;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAe,EACf,MAAgB;IAEhB,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB,CAAC,IAAe,EAAE,SAAiB;IACrE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}