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
package/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ All notable changes to Typhex will be documented in this file.
4
+
5
+ Typhex follows semantic versioning for the documented public API. During the
6
+ 0.x series, APIs may still change while the package is being hardened.
7
+
8
+ ## Unreleased
9
+
10
+ ## 0.1.0-alpha.0 - 2026-06-15
11
+
12
+ - Initial public alpha preview.
13
+ - Added release hardening metadata and package verification scripts.
14
+ - Added CI quality gates for linting, formatting, API compatibility, coverage,
15
+ and package dry-runs.
16
+ - Added an explicit MIT license file.
17
+ - Added a production dependency audit gate for release checks.
18
+ - Added deterministic parser/compiler fuzz coverage across SQLite and PostgreSQL
19
+ SQL compilation.
20
+ - Upgraded Vitest and coverage tooling to remove critical dev audit findings.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ioannis Kalyvas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,417 @@
1
+ # Typhex
2
+
3
+ [![CI](https://github.com/kalyvasio/typhex/actions/workflows/ci.yml/badge.svg)](https://github.com/kalyvasio/typhex/actions/workflows/ci.yml)
4
+ [![Docs](https://github.com/kalyvasio/typhex/actions/workflows/docs.yml/badge.svg)](https://github.com/kalyvasio/typhex/actions/workflows/docs.yml)
5
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
6
+
7
+ A TypeScript/JavaScript ORM that lets you write SQL queries with arrow-function predicates:
8
+
9
+ ```ts
10
+ const adults = await User.query()
11
+ .where((u) => u.age > 18)
12
+ .toArray();
13
+ ```
14
+
15
+ Typhex compiles those predicates to safe, parameterized SQL through either a TypeScript transformer or a runtime parser.
16
+
17
+ ## Why Typhex?
18
+
19
+ - **Type-safe queries**: TypeScript understands your entity shape.
20
+ - **No SQL injection**: Generated SQL is parameterized.
21
+ - **Familiar syntax**: Write predicates like normal JavaScript/TypeScript expressions.
22
+ - **Compile-time mode**: The transformer auto-captures closure variables and avoids runtime parsing.
23
+ - **Runtime fallback**: Plain JavaScript and direct `tsx` scripts work with explicit closure variables.
24
+ - **ORM features**: Relations, aggregations, transactions, bulk inserts, upserts, and graph inserts.
25
+
26
+ ## Installation
27
+
28
+ For SQLite:
29
+
30
+ ```bash
31
+ npm install typhex better-sqlite3
32
+ ```
33
+
34
+ For PostgreSQL:
35
+
36
+ ```bash
37
+ npm install typhex pg
38
+ ```
39
+
40
+ For TypeScript projects, install the transformer tooling too:
41
+
42
+ ```bash
43
+ npm install --save-dev ts-patch
44
+ ```
45
+
46
+ `better-sqlite3` includes a native addon. If installation fails, install local build tools first: `xcode-select --install` on macOS, or `build-essential` or equivalent on Linux.
47
+
48
+ ## Quick Start
49
+
50
+ ### Define a Schema
51
+
52
+ ```ts
53
+ import { Db, Entity, createSqliteDriver } from "typhex";
54
+
55
+ const User = Entity("users", {
56
+ id: "integer primary key autoincrement",
57
+ name: "text not null",
58
+ age: "integer not null",
59
+ country: "text not null",
60
+ });
61
+ ```
62
+
63
+ ### Connect and Migrate
64
+
65
+ ```ts
66
+ const db = new Db(createSqliteDriver({ path: "./app.db" }));
67
+
68
+ await db.migrate();
69
+ ```
70
+
71
+ ### Insert Rows
72
+
73
+ ```ts
74
+ await User.query().insert({ name: "Alice", age: 30, country: "US" });
75
+ await User.query().insert({ name: "Bob", age: 25, country: "UK" });
76
+ ```
77
+
78
+ ### Query Rows
79
+
80
+ ```ts
81
+ const adults = await User.query()
82
+ .where((u) => u.age > 18)
83
+ .orderBy((u) => u.name, "asc")
84
+ .toArray();
85
+
86
+ const firstAdult = await User.query()
87
+ .where((u) => u.age > 18)
88
+ .first();
89
+
90
+ const alice = await User.query().findById(1);
91
+ const usCount = await User.query()
92
+ .where((u) => u.country === "US")
93
+ .count();
94
+ ```
95
+
96
+ ### Update, Patch, and Delete
97
+
98
+ ```ts
99
+ await User.query()
100
+ .where((u) => u.name === "Bob")
101
+ .update({ age: 26 });
102
+
103
+ const updated = await User.query()
104
+ .where((u) => u.name === "Alice")
105
+ .patch({ country: "CA" });
106
+
107
+ await User.query()
108
+ .where((u) => u.country === "UK")
109
+ .delete();
110
+ ```
111
+
112
+ `update()` returns the number of rows changed. `patch()` performs the update and returns the updated row.
113
+
114
+ ## Runtime vs Transformer Mode
115
+
116
+ Typhex has two ways to turn arrow functions into query IR.
117
+
118
+ ### Runtime Mode
119
+
120
+ Runtime mode works in JavaScript, direct `tsx` scripts, and projects without a TypeScript compiler plugin. Closure variables must be passed explicitly:
121
+
122
+ ```ts
123
+ const country = "US";
124
+
125
+ const users = await User.query()
126
+ .where((u) => u.country === country, { country })
127
+ .toArray();
128
+ ```
129
+
130
+ ### Transformer Mode
131
+
132
+ Transformer mode is recommended for TypeScript projects. It compiles predicates at build time and auto-captures closure variables.
133
+
134
+ ```json
135
+ {
136
+ "compilerOptions": {
137
+ "plugins": [{ "transform": "typhex/transformer" }]
138
+ }
139
+ }
140
+ ```
141
+
142
+ ```bash
143
+ npx ts-patch install
144
+ ```
145
+
146
+ After setup, no second argument is needed:
147
+
148
+ ```ts
149
+ const country = "US";
150
+ const minAge = 25;
151
+
152
+ const users = await User.query()
153
+ .where((u) => u.country === country && u.age >= minAge)
154
+ .toArray();
155
+ ```
156
+
157
+ See the [TypeScript transformer guide](docs/guide/typescript-transformer.md) for setup details and dev-time notes.
158
+
159
+ ## Querying
160
+
161
+ ### Filtering, Ordering, and Paging
162
+
163
+ ```ts
164
+ const users = await User.query()
165
+ .where((u) => u.age >= 18 && u.country === "US")
166
+ .orderBy((u) => u.age, "desc")
167
+ .limit(10)
168
+ .offset(20)
169
+ .toArray();
170
+ ```
171
+
172
+ ### Selecting Columns
173
+
174
+ ```ts
175
+ const names = await User.query().select(["name", "country"]).toArray();
176
+
177
+ const projected = await User.query()
178
+ .select((u) => ({ userId: u.id, displayName: u.name }))
179
+ .toArray();
180
+ ```
181
+
182
+ ### String Predicates and IN
183
+
184
+ ```ts
185
+ const matching = await User.query()
186
+ .where((u) => u.name.startsWith("A") || u.name.includes("son"))
187
+ .toArray();
188
+
189
+ const ids = [1, 2, 3];
190
+ const selected = await User.query()
191
+ .where((u) => u.id in ids, { ids })
192
+ .toArray();
193
+ ```
194
+
195
+ With the transformer enabled, captured arrays do not need the second argument.
196
+
197
+ ### Subqueries
198
+
199
+ `IN` and `NOT IN` subqueries work in runtime and transformer mode. Runtime mode passes the inner query through the params object:
200
+
201
+ ```ts
202
+ const activePostIds = Post.query()
203
+ .where((p) => p.active === 1)
204
+ .select((p) => p.id);
205
+
206
+ const authors = await Author.query()
207
+ .where((a, posts) => a.postId in posts, { posts: activePostIds })
208
+ .toArray();
209
+ ```
210
+
211
+ Transformer mode can inline the inner query:
212
+
213
+ ```ts
214
+ const authors = await Author.query()
215
+ .where(
216
+ (a) =>
217
+ a.postId in
218
+ Post.query()
219
+ .where((p) => p.active === 1)
220
+ .select((p) => p.id),
221
+ )
222
+ .toArray();
223
+ ```
224
+
225
+ Scalar subqueries in `.select()`, `.where()` comparisons, and `.orderBy()` are transformer-only. See the [Subqueries guide](docs/guide/subqueries.md) for the supported shapes.
226
+
227
+ ### CTEs and Unions
228
+
229
+ Use common table expressions when an inner query should be named and reused by an outer query:
230
+
231
+ ```ts
232
+ const adults = User.query().where((u) => u.age >= 18);
233
+
234
+ const workingAge = await User.query()
235
+ .withCte("adults", adults)
236
+ .from("adults")
237
+ .where((u) => u.age < 65)
238
+ .toArray();
239
+ ```
240
+
241
+ Typhex also supports `unionAll()`, recursive CTEs, entity-table joins for recursive branches, and CTE-correlated `update()` / `delete()`. See the [CTEs and Unions guide](docs/guide/cte-and-unions.md).
242
+
243
+ ## Supported Predicate Syntax
244
+
245
+ Runtime mode supports a practical safe subset:
246
+
247
+ - Comparisons: `===`, `!==`, `==`, `!=`, `>`, `>=`, `<`, `<=`
248
+ - Logical operators: `&&`, `||`, `!`
249
+ - Member access, literals, array literals, and the `in` operator
250
+ - String methods: `.startsWith()`, `.endsWith()`, `.includes()`
251
+ - Aggregates in `.select()` and `.having()`: `count()`, `sum()`, `avg()`, `min()`, `max()`, `distinct(...)`
252
+ - Relation predicates such as `department.employees.some((e) => e.name === "Alice")`
253
+ - Universal relation predicates such as `department.employees.every((e) => e.active === true)`
254
+ - Relation query chains in `.select()`
255
+
256
+ Computed expressions (ternaries, arithmetic, bitwise operators, null checks) are also supported — see the [Expressions guide](docs/guide/expressions.md).
257
+
258
+ Runtime mode does not support unsigned right shift (`>>>`), optional chaining, nullish coalescing, arbitrary function calls, loops, assignments, `await`, `new`, or `instanceof`.
259
+
260
+ ## Relations
261
+
262
+ Declare relations as the third argument to `Entity()`:
263
+
264
+ ```ts
265
+ import { Entity, rel } from "typhex";
266
+
267
+ const Post = Entity(
268
+ "posts",
269
+ {
270
+ id: "integer primary key autoincrement",
271
+ title: "text not null",
272
+ authorId: "integer not null",
273
+ },
274
+ {
275
+ author: rel.manyToOne(() => User, { foreignKey: "authorId" }),
276
+ },
277
+ );
278
+ ```
279
+
280
+ Then use relation properties in `select()` and `where()`:
281
+
282
+ ```ts
283
+ const posts = await Post.query()
284
+ .where((p) => p.author.country === "US")
285
+ .select((p) => ({ id: p.id, title: p.title, author: p.author }))
286
+ .toArray();
287
+ ```
288
+
289
+ Typhex supports `manyToOne`, `oneToMany`, `oneToOne`, and `manyToMany` relations. Relation selects avoid N+1 queries by batching related rows.
290
+
291
+ See [Entities & Relations](docs/guide/entities-relations.md), [Querying Relations](docs/guide/querying-relations.md), and [Filtering by Relations](docs/guide/filtering-by-relations.md).
292
+
293
+ ## Aggregations
294
+
295
+ ```ts
296
+ import { count, sum } from "typhex";
297
+
298
+ const statsByCountry = await User.query()
299
+ .select((u) => ({ country: u.country, users: count(u.id), totalAge: sum(u.age) }))
300
+ .groupBy((u) => u.country)
301
+ .having((u) => count(u.id) > 1)
302
+ .toArray();
303
+ ```
304
+
305
+ Typhex supports `GROUP BY`, `HAVING`, `distinct()`, and database-specific aggregates such as SQLite `groupConcat()` and PostgreSQL `stringAgg()`, `arrayAgg()`, and `jsonAgg()`.
306
+
307
+ See the [Aggregations guide](docs/guide/aggregations.md).
308
+
309
+ ## Bulk and Graph Operations
310
+
311
+ ### Bulk Inserts
312
+
313
+ ```ts
314
+ await Product.query().insertMany([
315
+ { sku: "W-001", name: "Widget", price: 999 },
316
+ { sku: "G-001", name: "Gadget", price: 1499 },
317
+ ]);
318
+ ```
319
+
320
+ ### Upserts
321
+
322
+ ```ts
323
+ await Product.query()
324
+ .insert({ sku: "W-001", name: "Widget v2", price: 1099 })
325
+ .onConflict(["sku"])
326
+ .doUpdate(["name", "price"]);
327
+ ```
328
+
329
+ ### Graph Inserts
330
+
331
+ ```ts
332
+ const post = await Post.query().insertGraph({
333
+ title: "Hello",
334
+ author: { name: "Alice" },
335
+ tags: [{ name: "typescript" }, { name: "orm" }],
336
+ });
337
+ ```
338
+
339
+ See the [Bulk Operations guide](docs/guide/bulk-operations.md).
340
+
341
+ ## Transactions
342
+
343
+ Use `db.transaction()` for callback-style transactions with implicit propagation:
344
+
345
+ ```ts
346
+ await db.transaction(async () => {
347
+ const user = await User.query().insert({ name: "Alice", age: 30, country: "US" });
348
+ await Post.query().insert({ title: "Hello", authorId: user.id });
349
+ });
350
+ ```
351
+
352
+ Use `db.beginTrx()` when you need to pass a transaction handle through service layers:
353
+
354
+ ```ts
355
+ const trx = await db.beginTrx();
356
+
357
+ try {
358
+ await User.query(trx).insert({ name: "Bob", age: 26, country: "UK" });
359
+ await trx.commit();
360
+ } catch {
361
+ await trx.rollback();
362
+ }
363
+ ```
364
+
365
+ Nested transactions use savepoints. Transaction options include isolation level, PostgreSQL read-only/deferrable flags, and SQLite transaction mode.
366
+
367
+ See the [Transactions guide](docs/guide/transactions.md).
368
+
369
+ ## Debugging
370
+
371
+ Set `TYPHEX_DEBUG=1` to log SQL and parameters:
372
+
373
+ ```bash
374
+ TYPHEX_DEBUG=1 npx tsx your-script.ts
375
+ ```
376
+
377
+ `true` and `yes` are also accepted.
378
+
379
+ ## Architecture
380
+
381
+ Typhex uses a query IR (Intermediate Representation) that bridges arrow-function predicates and SQL:
382
+
383
+ 1. Arrow functions are converted to IR through the runtime parser or TypeScript transformer.
384
+ 2. The SQL compiler turns IR into dialect-specific, parameterized SQL.
385
+ 3. The driver executes SQL through SQLite, PostgreSQL, or a custom backend.
386
+
387
+ See the [Architecture reference](docs/reference/architecture.md).
388
+
389
+ ## Documentation
390
+
391
+ - [Getting Started](docs/guide/getting-started.md)
392
+ - [TypeScript Transformer](docs/guide/typescript-transformer.md)
393
+ - [Entities & Relations](docs/guide/entities-relations.md)
394
+ - [Querying Relations](docs/guide/querying-relations.md)
395
+ - [Filtering by Relations](docs/guide/filtering-by-relations.md)
396
+ - [Expressions](docs/guide/expressions.md)
397
+ - [Aggregations](docs/guide/aggregations.md)
398
+ - [Subqueries](docs/guide/subqueries.md)
399
+ - [CTEs and Unions](docs/guide/cte-and-unions.md)
400
+ - [Bulk Operations](docs/guide/bulk-operations.md)
401
+ - [Transactions](docs/guide/transactions.md)
402
+ - [Migrations](docs/migrations/overview.md)
403
+ - [SQLite Driver](docs/drivers/sqlite.md)
404
+ - [PostgreSQL Driver](docs/drivers/postgres.md)
405
+ - [API Reference](docs/reference/api.md)
406
+
407
+ ## Contributing
408
+
409
+ Contributions welcome. Open areas include:
410
+
411
+ - Additional database drivers
412
+ - Broader runtime predicate syntax
413
+ - Runtime support for transformer-only scalar subquery shapes
414
+
415
+ ## License
416
+
417
+ MIT
package/SECURITY.md ADDED
@@ -0,0 +1,32 @@
1
+ # Security Policy
2
+
3
+ ## Supported versions
4
+
5
+ Security fixes are applied to the latest release on the default branch (`main`). Older versions may not receive patches.
6
+
7
+ | Version | Supported |
8
+ | ---------------- | ----------- |
9
+ | latest on `main` | yes |
10
+ | older tags | best effort |
11
+
12
+ ## Reporting a vulnerability
13
+
14
+ **Do not open a public GitHub issue for security vulnerabilities.**
15
+
16
+ Instead, report them privately using one of these options:
17
+
18
+ 1. **GitHub private vulnerability reporting** (preferred): open the [Security tab](https://github.com/kalyvasio/typhex/security) on the repository and choose **Report a vulnerability**.
19
+ 2. If private reporting is unavailable, contact the repository owner through GitHub and ask for a secure channel.
20
+
21
+ Please include:
22
+
23
+ - A description of the issue and its impact
24
+ - Steps to reproduce, or a minimal proof of concept if you have one
25
+ - Affected versions or commits
26
+ - Any suggested fix, if you have one
27
+
28
+ We will acknowledge your report as soon as possible and keep you updated on remediation progress. Please allow reasonable time for a fix before public disclosure.
29
+
30
+ ## Safe harbor
31
+
32
+ We appreciate responsible disclosure. We will not pursue legal action against researchers who report vulnerabilities in good faith and follow this policy.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Canonical aggregate function names and normalization from JS stub
3
+ * identifiers (e.g. `groupConcat`) to IR func names (`GROUP_CONCAT`).
4
+ * Shared by runtime parser and compile-time transformer.
5
+ */
6
+ /** Recognized aggregate function names in IR. */
7
+ export declare const AGGREGATE_FUNCS: Set<string>;
8
+ /** Map a JS identifier (e.g. `count`, `groupConcat`) to the canonical IR func name. */
9
+ export declare function toIrFuncName(rawName: string): string;
10
+ /** True if `name` is a known aggregate after normalization. */
11
+ export declare function isAggregateFunc(name: string): boolean;
12
+ //# sourceMappingURL=aggregates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregates.d.ts","sourceRoot":"","sources":["../../src/arrow/aggregates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iDAAiD;AACjD,eAAO,MAAM,eAAe,aAU1B,CAAC;AASH,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Canonical aggregate function names and normalization from JS stub
3
+ * identifiers (e.g. `groupConcat`) to IR func names (`GROUP_CONCAT`).
4
+ * Shared by runtime parser and compile-time transformer.
5
+ */
6
+ /** Recognized aggregate function names in IR. */
7
+ export const AGGREGATE_FUNCS = new Set([
8
+ "SUM",
9
+ "AVG",
10
+ "MIN",
11
+ "MAX",
12
+ "COUNT",
13
+ "GROUP_CONCAT",
14
+ "STRING_AGG",
15
+ "ARRAY_AGG",
16
+ "JSON_AGG",
17
+ ]);
18
+ const AGGREGATE_FUNC_MAP = {
19
+ groupconcat: "GROUP_CONCAT",
20
+ stringagg: "STRING_AGG",
21
+ arrayagg: "ARRAY_AGG",
22
+ jsonagg: "JSON_AGG",
23
+ };
24
+ /** Map a JS identifier (e.g. `count`, `groupConcat`) to the canonical IR func name. */
25
+ export function toIrFuncName(rawName) {
26
+ return AGGREGATE_FUNC_MAP[rawName.toLowerCase()] ?? rawName.toUpperCase();
27
+ }
28
+ /** True if `name` is a known aggregate after normalization. */
29
+ export function isAggregateFunc(name) {
30
+ return AGGREGATE_FUNCS.has(toIrFuncName(name));
31
+ }
32
+ //# sourceMappingURL=aggregates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../../src/arrow/aggregates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,cAAc;IACd,YAAY;IACZ,WAAW;IACX,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAA2B;IACjD,WAAW,EAAE,cAAc;IAC3B,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;AAC5E,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Shared arrow-expression rules used by both the runtime parser (acorn) and
3
+ * the compile-time TypeScript transformer. Keeps allowed methods, default
4
+ * param names, and relation-chain method names in one place.
5
+ */
6
+ import type { IrBinary } from "../ir/types.js";
7
+ /** Default row parameter when inference fails (e.g. `u => …`). */
8
+ export declare const DEFAULT_ROW_PARAM = "u";
9
+ /** String methods permitted in WHERE predicates (receiver must be a member path). */
10
+ export declare const ALLOWED_METHODS: Set<string>;
11
+ /** Methods allowed on relation query chains inside select lambdas. */
12
+ export declare const RELATION_QUERY_METHODS: Set<string>;
13
+ /** Acorn binary/logical operator strings → IR binary ops (runtime parser only). */
14
+ export declare const ACORN_BINARY_OPS: Record<string, IrBinary["op"] | undefined>;
15
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/arrow/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC,qFAAqF;AACrF,eAAO,MAAM,eAAe,aAAkD,CAAC;AAE/E,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,aAOjC,CAAC;AAEH,mFAAmF;AACnF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAqBvE,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Shared arrow-expression rules used by both the runtime parser (acorn) and
3
+ * the compile-time TypeScript transformer. Keeps allowed methods, default
4
+ * param names, and relation-chain method names in one place.
5
+ */
6
+ /** Default row parameter when inference fails (e.g. `u => …`). */
7
+ export const DEFAULT_ROW_PARAM = "u";
8
+ /** String methods permitted in WHERE predicates (receiver must be a member path). */
9
+ export const ALLOWED_METHODS = new Set(["startsWith", "endsWith", "includes"]);
10
+ /** Methods allowed on relation query chains inside select lambdas. */
11
+ export const RELATION_QUERY_METHODS = new Set([
12
+ "query",
13
+ "where",
14
+ "orderBy",
15
+ "limit",
16
+ "offset",
17
+ "select",
18
+ ]);
19
+ /** Acorn binary/logical operator strings → IR binary ops (runtime parser only). */
20
+ export const ACORN_BINARY_OPS = {
21
+ "&&": "&&",
22
+ "||": "||",
23
+ "==": "==",
24
+ "===": "===",
25
+ "!=": "!=",
26
+ "!==": "!==",
27
+ ">": ">",
28
+ ">=": ">=",
29
+ "<": "<",
30
+ "<=": "<=",
31
+ "+": "+",
32
+ "-": "-",
33
+ "*": "*",
34
+ "/": "/",
35
+ "%": "%",
36
+ "&": "&",
37
+ "|": "|",
38
+ "^": "^",
39
+ "<<": "<<",
40
+ ">>": ">>",
41
+ };
42
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/arrow/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,kEAAkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAE/E,sEAAsE;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,OAAO;IACP,OAAO;IACP,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,mFAAmF;AACnF,MAAM,CAAC,MAAM,gBAAgB,GAA+C;IAC1E,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,KAAK;IACZ,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Barrel re-export for shared arrow-expression language rules (constants,
3
+ * aggregate naming). Imported by `src/parser/*` and `src/transformer/*`.
4
+ */
5
+ export { DEFAULT_ROW_PARAM, ALLOWED_METHODS, RELATION_QUERY_METHODS, ACORN_BINARY_OPS, } from "./constants.js";
6
+ export { AGGREGATE_FUNCS, toIrFuncName, isAggregateFunc } from "./aggregates.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/arrow/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Barrel re-export for shared arrow-expression language rules (constants,
3
+ * aggregate naming). Imported by `src/parser/*` and `src/transformer/*`.
4
+ */
5
+ export { DEFAULT_ROW_PARAM, ALLOWED_METHODS, RELATION_QUERY_METHODS, ACORN_BINARY_OPS, } from "./constants.js";
6
+ export { AGGREGATE_FUNCS, toIrFuncName, isAggregateFunc } from "./aggregates.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/arrow/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export type { TyphexConfig } from "./types.js";
2
+ export { DEFAULT_CONFIG } from "./types.js";
3
+ export { loadConfig } from "./load-config.js";
4
+ export type { LoadConfigOptions } from "./load-config.js";
5
+ export { loadTyphexEnv, envToConfig } from "./load-env.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { DEFAULT_CONFIG } from "./types.js";
2
+ export { loadConfig } from "./load-config.js";
3
+ export { loadTyphexEnv, envToConfig } from "./load-env.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Load typhex config from file or discover in cwd.
3
+ * Resolution: explicit path > typhex.config.js > typhex.config.mjs > typhex.config.json
4
+ */
5
+ import type { TyphexConfig } from "./types.js";
6
+ /** Options for `loadConfig`. All fields are optional; omit to use auto-discovery. */
7
+ export interface LoadConfigOptions {
8
+ /** Explicit config file path */
9
+ configPath?: string;
10
+ /** Working directory for discovery */
11
+ cwd?: string;
12
+ /** Overrides (e.g. from CLI args) */
13
+ overrides?: Partial<TyphexConfig>;
14
+ }
15
+ /**
16
+ * Load and merge config. Order: overrides > config file > .env > defaults.
17
+ */
18
+ export declare function loadConfig(options?: LoadConfigOptions): Promise<TyphexConfig>;
19
+ //# sourceMappingURL=load-config.d.ts.map