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,134 @@
1
+ import { isIrSelect, isIrOrderBy, isIrWhere } from "../ir/types.js";
2
+ import { parseArrowToIr, parseArrowToIrPredicate, parseArrowToIrSelect, parseArrowToGroupByPaths, parseArrowToUpdateSet, } from "./parse-arrow.js";
3
+ import { DEFAULT_ROW_PARAM } from "../orm/helpers/query-plan/query-plan.js";
4
+ /** Resolve a where input (pre-built predicate IR or arrow fn) to an IrWhere. */
5
+ export function resolveWhereIr(input, paramKeys = [], subqueryKeys = []) {
6
+ if (isIrWhere(input))
7
+ return input;
8
+ try {
9
+ return parseArrowToIrPredicate(input, { paramKeys, subqueryKeys });
10
+ }
11
+ catch (e) {
12
+ throw new Error("Failed to parse arrow predicate: " + (e instanceof Error ? e.message : String(e)));
13
+ }
14
+ }
15
+ export function resolveHavingIr(input, paramKeys = [], subqueryKeys = []) {
16
+ return resolveWhereIr(input, paramKeys, subqueryKeys);
17
+ }
18
+ /** Resolve an entity-table join ON input (pre-built predicate IR or arrow fn) to an IrWhere. */
19
+ export function resolveJoinOnIr(joinType, input) {
20
+ if (isIrWhere(input))
21
+ return input;
22
+ try {
23
+ return parseArrowToIrPredicate(input);
24
+ }
25
+ catch (e) {
26
+ throw new Error(`Failed to parse ${joinType}Join ON predicate: ${e instanceof Error ? e.message : String(e)}`);
27
+ }
28
+ }
29
+ /** Resolve an orderBy input (pre-built IrOrderBy, string, or arrow fn) to an IrOrderBy. */
30
+ export function resolveOrderBy(input, direction = "asc", paramKeys = []) {
31
+ if (isIrOrderBy(input))
32
+ return input;
33
+ if (typeof input === "function") {
34
+ try {
35
+ const ir = parseArrowToIr(input, { paramKeys });
36
+ if (ir.kind === "aggregate") {
37
+ throw new Error("[typhex] orderBy does not support aggregate functions directly. " +
38
+ "Select the aggregate with an alias first (e.g. .select(p => ({ total: sum(p.price) }))), " +
39
+ 'then orderBy the alias as a string: .orderBy("total", "desc").');
40
+ }
41
+ if (ir.kind !== "member" || ir.path.length === 0) {
42
+ if (ir.kind === "case" || ir.kind === "binary" || ir.kind === "unary") {
43
+ return { expr: ir, direction };
44
+ }
45
+ throw new Error("[typhex] orderBy lambda must select a column (e.g. u => u.name), not the whole row (e.g. u => u)");
46
+ }
47
+ return { expr: ir, direction };
48
+ }
49
+ catch (e) {
50
+ throw new Error("Failed to parse orderBy lambda: " + (e instanceof Error ? e.message : String(e)));
51
+ }
52
+ }
53
+ const segments = input.split(".").map((s) => s.trim());
54
+ if (segments.length === 0 || segments.some((s) => s.length === 0)) {
55
+ throw new Error('[typhex] orderBy column must be a non-empty dot-separated path (e.g. "company.name")');
56
+ }
57
+ return {
58
+ expr: { kind: "member", param: DEFAULT_ROW_PARAM, path: segments },
59
+ direction,
60
+ };
61
+ }
62
+ /** Resolve a select input (pre-built IrSelect, column string array, or arrow fn) to an IrSelect. */
63
+ export function resolveSelectIr(input, paramKeys = []) {
64
+ if (typeof input === "function") {
65
+ const parsed = parseArrowToIrSelect(input, paramKeys);
66
+ if (!parsed) {
67
+ throw new Error("select(): could not parse lambda at runtime. Use the Typhex transformer for complex selects, or pass column names / IrSelect.");
68
+ }
69
+ return parsed;
70
+ }
71
+ if (isIrSelect(input))
72
+ return input;
73
+ // string[] — each entry becomes a single-segment path
74
+ return { param: DEFAULT_ROW_PARAM, paths: input.map((c) => [c]), aliases: input };
75
+ }
76
+ /** Resolve a groupBy input (arrow fn, string/number array, or mixed) to Array<string[] | number>. */
77
+ export function resolveGroupByPaths(columnOrFn, ...rest) {
78
+ if (typeof columnOrFn === "function") {
79
+ const entries = parseArrowToGroupByPaths(columnOrFn);
80
+ if (entries.length === 0) {
81
+ throw new Error("[typhex] .groupBy() could not parse the provided function — no column paths were resolved.");
82
+ }
83
+ return entries;
84
+ }
85
+ const cols = Array.isArray(columnOrFn)
86
+ ? columnOrFn
87
+ : [columnOrFn, ...rest];
88
+ return cols.map((c) => {
89
+ const n = Number(c);
90
+ if (Number.isInteger(n))
91
+ return n;
92
+ return String(c).split(".");
93
+ });
94
+ }
95
+ /** Resolve a join-hint input (string array or arrow fn) to relation key strings. */
96
+ export function resolveJoinKeys(fn) {
97
+ if (Array.isArray(fn))
98
+ return [...new Set(fn)];
99
+ try {
100
+ const parsed = parseArrowToIrSelect(fn);
101
+ if (parsed) {
102
+ const keys = [];
103
+ for (const path of parsed.paths) {
104
+ if (path.length >= 1)
105
+ keys.push(path[0]);
106
+ }
107
+ for (const rel of parsed.relations ?? []) {
108
+ keys.push(rel.name);
109
+ }
110
+ return [...new Set(keys)];
111
+ }
112
+ // Fallback: single member access p => p.author
113
+ const ir = parseArrowToIr(fn, { paramKeys: [] });
114
+ if (ir.kind === "member" && ir.path.length >= 1)
115
+ return [ir.path[0]];
116
+ return [];
117
+ }
118
+ catch {
119
+ return [];
120
+ }
121
+ }
122
+ /** Resolve an update input (literal map or arrow fn) for the query planner. */
123
+ export function resolveUpdateSet(input) {
124
+ if (typeof input !== "function") {
125
+ return { set: input };
126
+ }
127
+ try {
128
+ return { setIr: parseArrowToUpdateSet(input) };
129
+ }
130
+ catch (e) {
131
+ throw new Error("Failed to parse update lambda: " + (e instanceof Error ? e.message : String(e)));
132
+ }
133
+ }
134
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/parser/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Runtime parsing for `.select()` arrow lambdas: columns, nested relations,
3
+ * aggregates, rest-spread, and relation query chains (`.query().where()`…).
4
+ */
5
+ import type { IrSelect } from "../ir/types.js";
6
+ export declare function parseArrowToIrSelect(fn: (...args: unknown[]) => unknown, paramKeys?: string[]): IrSelect | null;
7
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/parser/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAU,QAAQ,EAAiC,MAAM,gBAAgB,CAAC;AAgCtF,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EACnC,SAAS,GAAE,MAAM,EAAO,GACvB,QAAQ,GAAG,IAAI,CAgBjB"}
@@ -0,0 +1,333 @@
1
+ /**
2
+ * Runtime parsing for `.select()` arrow lambdas: columns, nested relations,
3
+ * aggregates, rest-spread, and relation query chains (`.query().where()`…).
4
+ */
5
+ import { RELATION_QUERY_METHODS } from "../arrow/constants.js";
6
+ import { extractArrowBody, inferParamNames, parseExpressionSource, normalizeSelectBodySource, sliceNodeSource, } from "./arrow-source.js";
7
+ import { isArrowFunctionExpression, isCallExpression, isIdent, isIdentifier, isLiteral, isMemberExpression, isObjectExpression, isProperty, isSpreadElement, isStringLiteral, memberObjectExpr, objectPropertyValue, propertyKeyName, } from "./acorn-helpers.js";
8
+ import { resolveMemberPath } from "./acorn-member.js";
9
+ import { parseArrowToIrPredicate, parseExpressionToIr, tryParseAggregate, } from "./predicate-walk.js";
10
+ export function parseArrowToIrSelect(fn, paramKeys = []) {
11
+ const src = fn.toString();
12
+ const body = extractArrowBody(src);
13
+ if (!body)
14
+ return null;
15
+ const paramName = inferParamNames(src)[0] ?? "u";
16
+ const fullSrc = normalizeSelectBodySource(body);
17
+ let expr;
18
+ try {
19
+ expr = parseExpressionSource(fullSrc);
20
+ }
21
+ catch {
22
+ return null;
23
+ }
24
+ return parseTopLevelSelectExpression(expr, paramName, fullSrc, paramKeys);
25
+ }
26
+ function parseTopLevelSelectExpression(expr, paramName, fullSrc, paramKeys) {
27
+ if (isIdent(expr, paramName)) {
28
+ return { param: paramName, paths: [], aliases: [], rest: true };
29
+ }
30
+ if (isMemberExpression(expr)) {
31
+ return parseSingleColumnSelect(expr, paramName);
32
+ }
33
+ if (isCallExpression(expr)) {
34
+ return parseSingleAggregateSelect(expr, paramName, paramKeys);
35
+ }
36
+ if (isObjectExpression(expr)) {
37
+ return parseSelectObjectLiteral(expr, paramName, fullSrc, paramKeys);
38
+ }
39
+ return parseSingleExpressionSelect(expr, paramName, paramKeys);
40
+ }
41
+ function parseSingleExpressionSelect(expr, paramName, paramKeys) {
42
+ try {
43
+ const ir = parseExpressionToIr(expr, [paramName], paramKeys);
44
+ if (ir.kind === "member" || ir.kind === "param")
45
+ return null;
46
+ return {
47
+ param: paramName,
48
+ paths: [],
49
+ aliases: [],
50
+ expressions: [{ expr: ir, alias: "expr" }],
51
+ };
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ }
57
+ function parseSingleColumnSelect(expr, paramName) {
58
+ const resolved = resolveMemberPath(expr, [paramName]);
59
+ if (!resolved || resolved.path.length === 0)
60
+ return null;
61
+ const alias = resolved.path[resolved.path.length - 1];
62
+ return { param: paramName, paths: [resolved.path], aliases: [alias] };
63
+ }
64
+ function parseSingleAggregateSelect(callNode, paramName, paramKeys = []) {
65
+ const parsed = safeParseAggregate(callNode, paramName, paramKeys);
66
+ if (!parsed)
67
+ return null;
68
+ const alias = parsed.rawName.toLowerCase();
69
+ return {
70
+ param: paramName,
71
+ paths: [],
72
+ aliases: [],
73
+ aggregates: [{ ...parsed.ir, alias }],
74
+ };
75
+ }
76
+ function safeParseAggregate(callNode, paramName, paramKeys = []) {
77
+ try {
78
+ return tryParseAggregate(callNode, [paramName], paramKeys, { strictDistinct: false }, []);
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ }
84
+ function parseSelectObjectLiteral(obj, paramName, fullSrc, paramKeys = []) {
85
+ const paths = [];
86
+ const aliases = [];
87
+ const relations = [];
88
+ const aggregates = [];
89
+ const expressions = [];
90
+ let rest = false;
91
+ for (const raw of obj.properties) {
92
+ if (isSpreadElement(raw)) {
93
+ if (!isIdent(raw.argument, paramName))
94
+ return null;
95
+ rest = true;
96
+ continue;
97
+ }
98
+ if (!isProperty(raw) || raw.computed)
99
+ return null;
100
+ const keyName = propertyKeyName(raw.key);
101
+ if (!keyName)
102
+ return null;
103
+ const value = objectPropertyValue(raw.value);
104
+ if (!value)
105
+ return null;
106
+ const handled = parseSelectProperty(value, keyName, paramName, fullSrc, paramKeys);
107
+ if (!handled)
108
+ return null;
109
+ applySelectPropertyResult(handled, keyName, paths, aliases, relations, aggregates, expressions);
110
+ }
111
+ if (paths.length === 0 &&
112
+ relations.length === 0 &&
113
+ aggregates.length === 0 &&
114
+ expressions.length === 0 &&
115
+ !rest) {
116
+ return null;
117
+ }
118
+ const result = { param: paramName, paths, aliases };
119
+ if (relations.length > 0)
120
+ result.relations = relations;
121
+ if (rest)
122
+ result.rest = true;
123
+ if (aggregates.length > 0)
124
+ result.aggregates = aggregates;
125
+ if (expressions.length > 0)
126
+ result.expressions = expressions;
127
+ return result;
128
+ }
129
+ function parseSelectProperty(value, keyName, paramName, fullSrc, paramKeys = []) {
130
+ if (isObjectExpression(value)) {
131
+ return parseNestedRelationProperty(value, keyName, paramName);
132
+ }
133
+ if (isCallExpression(value)) {
134
+ return parseCallSelectProperty(value, keyName, paramName, fullSrc, paramKeys);
135
+ }
136
+ const resolved = resolveMemberPath(value, [paramName]);
137
+ if (resolved && resolved.path.length > 0) {
138
+ return { kind: "path", path: resolved.path };
139
+ }
140
+ try {
141
+ const expr = parseExpressionToIr(value, [paramName], paramKeys);
142
+ if (expr.kind === "member" || expr.kind === "param")
143
+ return null;
144
+ return { kind: "expression", expr };
145
+ }
146
+ catch {
147
+ return null;
148
+ }
149
+ }
150
+ function parseNestedRelationProperty(value, keyName, paramName) {
151
+ const sub = parseRelationSubSelect(value, paramName);
152
+ if (!sub)
153
+ return null;
154
+ return {
155
+ kind: "relation",
156
+ relation: { name: sub.relation, outputKey: keyName, subPaths: sub.subPaths },
157
+ };
158
+ }
159
+ function parseCallSelectProperty(value, keyName, paramName, fullSrc, paramKeys = []) {
160
+ const parsed = safeParseAggregate(value, paramName, paramKeys);
161
+ if (parsed) {
162
+ return { kind: "aggregate", aggregate: { ...parsed.ir, alias: keyName } };
163
+ }
164
+ const relation = parseRelationQueryChain(value, paramName, keyName, fullSrc);
165
+ if (!relation)
166
+ return null;
167
+ return { kind: "relation", relation };
168
+ }
169
+ function applySelectPropertyResult(result, keyName, paths, aliases, relations, aggregates, expressions) {
170
+ switch (result.kind) {
171
+ case "path":
172
+ paths.push(result.path);
173
+ aliases.push(keyName);
174
+ return;
175
+ case "relation":
176
+ relations.push(result.relation);
177
+ return;
178
+ case "aggregate":
179
+ aggregates.push(result.aggregate);
180
+ return;
181
+ case "expression":
182
+ expressions.push({ expr: result.expr, alias: keyName });
183
+ return;
184
+ }
185
+ }
186
+ function parseRelationSubSelect(obj, paramName) {
187
+ const subPaths = [];
188
+ let relation = null;
189
+ for (const raw of obj.properties) {
190
+ if (!isProperty(raw) || raw.computed)
191
+ return null;
192
+ const keyName = propertyKeyName(raw.key);
193
+ if (!keyName)
194
+ return null;
195
+ const value = objectPropertyValue(raw.value);
196
+ if (!value)
197
+ return null;
198
+ const resolved = resolveMemberPath(value, [paramName]);
199
+ if (!resolved || resolved.path.length < 2)
200
+ return null;
201
+ const rel = resolved.path[0];
202
+ if (relation !== null && relation !== rel)
203
+ return null;
204
+ relation = rel;
205
+ subPaths.push(resolved.path.slice(1));
206
+ }
207
+ if (!relation || subPaths.length === 0)
208
+ return null;
209
+ return { relation, subPaths };
210
+ }
211
+ function parseRelationQueryChain(node, parentParamName, outputKey, source) {
212
+ const chain = collectChainMethods(node);
213
+ if (!chain)
214
+ return null;
215
+ const headPath = resolveMemberPath(chain.head, [parentParamName]);
216
+ if (!headPath || headPath.path.length !== 1)
217
+ return null;
218
+ const result = { name: headPath.path[0], outputKey };
219
+ for (const method of chain.methods) {
220
+ if (!applyChainMethod(method, result, source))
221
+ return null;
222
+ }
223
+ return result;
224
+ }
225
+ function collectChainMethods(node) {
226
+ const methods = [];
227
+ let current = node;
228
+ while (current && isCallExpression(current)) {
229
+ const callee = current.callee;
230
+ if (!isMemberExpression(callee))
231
+ return null;
232
+ const methodName = isIdentifier(callee.property) ? callee.property.name : undefined;
233
+ if (!methodName || !RELATION_QUERY_METHODS.has(methodName))
234
+ return null;
235
+ methods.push({ name: methodName, args: current.arguments });
236
+ const object = memberObjectExpr(callee);
237
+ if (!object)
238
+ return null;
239
+ current = object;
240
+ }
241
+ if (!current || !isMemberExpression(current))
242
+ return null;
243
+ return { methods, head: current };
244
+ }
245
+ function applyChainMethod(method, result, source) {
246
+ switch (method.name) {
247
+ case "query":
248
+ return method.args.length === 0;
249
+ case "where":
250
+ return applyWhereMethod(method.args, result, source);
251
+ case "orderBy":
252
+ return applyOrderByMethod(method.args, result);
253
+ case "limit":
254
+ return applyLimitOrOffsetMethod(method.args, result, "limit");
255
+ case "offset":
256
+ return applyLimitOrOffsetMethod(method.args, result, "offset");
257
+ case "select":
258
+ return applySelectMethod(method.args, result, source);
259
+ default:
260
+ return false;
261
+ }
262
+ }
263
+ function applyWhereMethod(args, result, source) {
264
+ if (args.length !== 1 || !isArrowFunctionExpression(args[0]))
265
+ return false;
266
+ const argSrc = sliceNodeSource(args[0], source);
267
+ if (!argSrc)
268
+ return false;
269
+ try {
270
+ const whereFn = new Function("return " + argSrc)();
271
+ const paramNames = inferParamNames(argSrc);
272
+ result.whereIr = parseArrowToIrPredicate(whereFn, { paramNames });
273
+ result.whereParams = {};
274
+ return true;
275
+ }
276
+ catch {
277
+ return false;
278
+ }
279
+ }
280
+ function applyOrderByMethod(args, result) {
281
+ if (args.length < 1 || args.length > 2)
282
+ return false;
283
+ const colNode = args[0];
284
+ if (!colNode || colNode.type === "SpreadElement" || !isLiteral(colNode))
285
+ return false;
286
+ const col = String(colNode.value);
287
+ if (!col)
288
+ return false;
289
+ const dirArg = args.length === 2 ? args[1] : undefined;
290
+ const dir = dirArg && dirArg.type !== "SpreadElement" && isStringLiteral(dirArg) && dirArg.value === "desc"
291
+ ? "desc"
292
+ : "asc";
293
+ result.orderBy = result.orderBy ?? [];
294
+ result.orderBy.push({
295
+ expr: { kind: "member", param: "u", path: [col] },
296
+ direction: dir,
297
+ });
298
+ return true;
299
+ }
300
+ function applyLimitOrOffsetMethod(args, result, kind) {
301
+ if (args.length !== 1)
302
+ return false;
303
+ const node = args[0];
304
+ if (!node || node.type === "SpreadElement" || !isLiteral(node))
305
+ return false;
306
+ const n = Number(node.value);
307
+ if (!Number.isFinite(n) || n < 0)
308
+ return false;
309
+ if (kind === "limit")
310
+ result.limitNum = Math.floor(n);
311
+ else
312
+ result.offsetNum = Math.floor(n);
313
+ return true;
314
+ }
315
+ function applySelectMethod(args, result, source) {
316
+ if (args.length !== 1 || !isArrowFunctionExpression(args[0]))
317
+ return false;
318
+ const argSrc = sliceNodeSource(args[0], source);
319
+ if (!argSrc)
320
+ return false;
321
+ try {
322
+ const selectFn = new Function("return " + argSrc)();
323
+ const sub = parseArrowToIrSelect(selectFn);
324
+ if (!sub || !sub.paths.length)
325
+ return false;
326
+ result.subPaths = sub.paths;
327
+ return true;
328
+ }
329
+ catch {
330
+ return false;
331
+ }
332
+ }
333
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/parser/select.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,UAAU,oBAAoB,CAClC,EAAmC,EACnC,YAAsB,EAAE;IAExB,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACjD,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEhD,IAAI,IAAe,CAAC;IACpB,IAAI,CAAC;QACH,IAAI,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,6BAA6B,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAe,EACf,SAAiB,EACjB,OAAe,EACf,SAAmB;IAEnB,IAAI,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,wBAAwB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,2BAA2B,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAe,EACf,SAAiB,EACjB,SAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAC7D,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAA6B,EAC7B,SAAiB;IAEjB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,0BAA0B,CACjC,QAA+B,EAC/B,SAAiB,EACjB,YAAsB,EAAE;IAExB,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,QAA+B,EAC/B,SAAiB,EACjB,YAAsB,EAAE;IAExB,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAA4B,EAC5B,SAAiB,EACjB,OAAe,EACf,YAAsB,EAAE;IAExB,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAuB,EAAE,CAAC;IACzC,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,MAAM,WAAW,GAA2C,EAAE,CAAC;IAC/D,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnD,IAAI,GAAG,IAAI,CAAC;YACZ,SAAS;QACX,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAElD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAClG,CAAC;IAED,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,UAAU,CAAC,MAAM,KAAK,CAAC;QACvB,WAAW,CAAC,MAAM,KAAK,CAAC;QACxB,CAAC,IAAI,EACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC9D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IACvD,IAAI,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IAC7B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IAC1D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD,SAAS,mBAAmB,CAC1B,KAAgB,EAChB,OAAe,EACf,SAAiB,EACjB,OAAe,EACf,YAAsB,EAAE;IAExB,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,2BAA2B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,KAA8B,EAC9B,OAAe,EACf,SAAiB;IAEjB,MAAM,GAAG,GAAG,sBAAsB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAA4B,EAC5B,OAAe,EACf,SAAiB,EACjB,OAAe,EACf,YAAsB,EAAE;IAExB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7E,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,yBAAyB,CAChC,MAA4B,EAC5B,OAAe,EACf,KAAiB,EACjB,OAAiB,EACjB,SAA6B,EAC7B,UAAyB,EACzB,WAAmD;IAEnD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO;QACT,KAAK,UAAU;YACb,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,WAAW;YACd,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClC,OAAO;QACT,KAAK,YAAY;YACf,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,OAAO;IACX,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAA4B,EAC5B,SAAiB;IAEjB,MAAM,QAAQ,GAAe,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAElD,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACvD,QAAQ,GAAG,GAAG,CAAC;QACf,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC;AASD,SAAS,uBAAuB,CAC9B,IAA2B,EAC3B,eAAuB,EACvB,SAAiB,EACjB,MAAc;IAEd,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzD,MAAM,MAAM,GAAqB,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;IAEvE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA2B;IAE3B,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,IAAI,OAAO,GAAqB,IAAI,CAAC;IAErC,OAAO,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,IAAI,CAAC,UAAU,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAExE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACzB,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAmB,EAAE,MAAwB,EAAE,MAAc;IACrF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACvD,KAAK,SAAS;YACZ,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjD,KAAK,OAAO;YACV,OAAO,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAChE,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACjE,KAAK,QAAQ;YACX,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxD;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAqD,EACrD,MAAwB,EACxB,MAAc;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,EAAqC,CAAC;QACtF,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAqD,EACrD,MAAwB;IAExB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAErD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,MAAM,GAAG,GACP,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM;QAC7F,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,KAAK,CAAC;IACZ,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAClB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QACjD,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAqD,EACrD,MAAwB,EACxB,IAAwB;IAExB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7E,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/C,IAAI,IAAI,KAAK,OAAO;QAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QACjD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAqD,EACrD,MAAwB,EACxB,MAAc;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,EAAqC,CAAC;QACvF,MAAM,GAAG,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Runtime parsing for `.update(e => ({ col: e.field, ... }))` arrows into
3
+ * a map of column names to IR nodes (member paths or literals).
4
+ */
5
+ import type { IrNode } from "../ir/types.js";
6
+ export declare function parseArrowToUpdateSet(fn: (...args: unknown[]) => Record<string, unknown>): Record<string, IrNode>;
7
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/parser/update.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAa7C,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA8CxB"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Runtime parsing for `.update(e => ({ col: e.field, ... }))` arrows into
3
+ * a map of column names to IR nodes (member paths or literals).
4
+ */
5
+ import { DEFAULT_ROW_PARAM } from "../arrow/constants.js";
6
+ import { extractArrowBody, inferParamNames, parseExpressionSource } from "./arrow-source.js";
7
+ import { isLiteral, isMemberExpression, isObjectExpression, isProperty, objectPropertyValue, propertyKeyName, } from "./acorn-helpers.js";
8
+ import { resolveMemberPath } from "./acorn-member.js";
9
+ export function parseArrowToUpdateSet(fn) {
10
+ const src = fn.toString();
11
+ const body = extractArrowBody(src);
12
+ if (!body)
13
+ throw new Error("update lambda must be an arrow function");
14
+ const paramNames = inferParamNames(src);
15
+ const paramName = paramNames[0] ?? DEFAULT_ROW_PARAM;
16
+ const expr = parseExpressionSource(body.startsWith("(") ? body : `(${body})`);
17
+ if (!isObjectExpression(expr)) {
18
+ throw new Error("update lambda must return an object literal");
19
+ }
20
+ const result = {};
21
+ for (const raw of expr.properties) {
22
+ if (!isProperty(raw) || raw.computed) {
23
+ throw new Error("update object keys must be identifiers");
24
+ }
25
+ const keyName = propertyKeyName(raw.key);
26
+ if (!keyName)
27
+ throw new Error("update object keys must be identifiers");
28
+ const value = objectPropertyValue(raw.value);
29
+ if (!value) {
30
+ throw new Error(`update "${keyName}": value must be a column reference or literal`);
31
+ }
32
+ if (isMemberExpression(value)) {
33
+ const resolved = resolveMemberPath(value, paramNames);
34
+ if (!resolved || resolved.path.length === 0) {
35
+ throw new Error(`update "${keyName}": expected ${paramName}.<column> or <ctes>.<cte>.<column>`);
36
+ }
37
+ result[keyName] = { kind: "member", param: resolved.param, path: resolved.path };
38
+ continue;
39
+ }
40
+ if (isLiteral(value)) {
41
+ result[keyName] = { kind: "const", value: value.value };
42
+ continue;
43
+ }
44
+ throw new Error(`update "${keyName}": value must be a column reference or literal`);
45
+ }
46
+ if (Object.keys(result).length === 0) {
47
+ throw new Error("update lambda must set at least one column");
48
+ }
49
+ return result;
50
+ }
51
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/parser/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * PostgreSQL-specific aggregate function stubs.
3
+ * Import from "typhex/postgres" to use these inside .select() and .having() lambdas.
4
+ * These are never executed — the transformer/parser reads source text instead.
5
+ */
6
+ /** Concatenates grouped strings with a required separator. Compiles to STRING_AGG. */
7
+ export declare function stringAgg(_field: unknown, _separator: string): string;
8
+ /** Collects values into a PostgreSQL array. Compiles to ARRAY_AGG. */
9
+ export declare function arrayAgg<T>(_field: T): T[];
10
+ /** Collects values into a JSON array. Compiles to JSON_AGG. */
11
+ export declare function jsonAgg(_field: unknown): unknown[];
12
+ //# sourceMappingURL=aggregates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregates.d.ts","sourceRoot":"","sources":["../../src/postgres/aggregates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAE1C;AAED,+DAA+D;AAC/D,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,EAAE,CAElD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * PostgreSQL-specific aggregate function stubs.
3
+ * Import from "typhex/postgres" to use these inside .select() and .having() lambdas.
4
+ * These are never executed — the transformer/parser reads source text instead.
5
+ */
6
+ const msg = (n) => `${n}() can only be used inside a .select() or .having() lambda`;
7
+ /** Concatenates grouped strings with a required separator. Compiles to STRING_AGG. */
8
+ export function stringAgg(_field, _separator) {
9
+ throw new Error(msg("stringAgg"));
10
+ }
11
+ /** Collects values into a PostgreSQL array. Compiles to ARRAY_AGG. */
12
+ export function arrayAgg(_field) {
13
+ throw new Error(msg("arrayAgg"));
14
+ }
15
+ /** Collects values into a JSON array. Compiles to JSON_AGG. */
16
+ export function jsonAgg(_field) {
17
+ throw new Error(msg("jsonAgg"));
18
+ }
19
+ //# sourceMappingURL=aggregates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregates.js","sourceRoot":"","sources":["../../src/postgres/aggregates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,4DAA4D,CAAC;AAE5F,sFAAsF;AACtF,MAAM,UAAU,SAAS,CAAC,MAAe,EAAE,UAAkB;IAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAI,MAAS;IACnC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,OAAO,CAAC,MAAe;IACrC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * typhex/postgres — PostgreSQL-specific aggregate functions.
3
+ * Import from "typhex/postgres" to use Postgres-only aggregates in query lambdas.
4
+ */
5
+ export { stringAgg, arrayAgg, jsonAgg } from "./postgres/aggregates.js";
6
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * typhex/postgres — PostgreSQL-specific aggregate functions.
3
+ * Import from "typhex/postgres" to use Postgres-only aggregates in query lambdas.
4
+ */
5
+ export { stringAgg, arrayAgg, jsonAgg } from "./postgres/aggregates.js";
6
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../src/postgres.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./types.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC"}