@fragno-dev/db 0.1.15 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/.turbo/turbo-build.log +242 -179
  2. package/CHANGELOG.md +40 -0
  3. package/README.md +123 -8
  4. package/dist/adapters/adapters.d.ts +5 -5
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/drizzle/drizzle-adapter.d.ts +6 -21
  8. package/dist/adapters/drizzle/drizzle-adapter.d.ts.map +1 -1
  9. package/dist/adapters/drizzle/drizzle-adapter.js +7 -54
  10. package/dist/adapters/drizzle/drizzle-adapter.js.map +1 -1
  11. package/dist/adapters/drizzle/generate.d.ts +3 -0
  12. package/dist/adapters/drizzle/generate.d.ts.map +1 -1
  13. package/dist/adapters/drizzle/generate.js +36 -28
  14. package/dist/adapters/drizzle/generate.js.map +1 -1
  15. package/dist/adapters/generic-sql/driver-config.d.ts +74 -0
  16. package/dist/adapters/generic-sql/driver-config.d.ts.map +1 -0
  17. package/dist/adapters/generic-sql/driver-config.js +94 -0
  18. package/dist/adapters/generic-sql/driver-config.js.map +1 -0
  19. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +43 -0
  20. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -0
  21. package/dist/adapters/generic-sql/generic-sql-adapter.js +87 -0
  22. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -0
  23. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +67 -0
  24. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -0
  25. package/dist/adapters/generic-sql/migration/cold-kysely.js +33 -0
  26. package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -0
  27. package/dist/adapters/generic-sql/migration/dialect/mysql.js +60 -0
  28. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -0
  29. package/dist/adapters/generic-sql/migration/dialect/postgres.js +59 -0
  30. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -0
  31. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +96 -0
  32. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -0
  33. package/dist/adapters/generic-sql/migration/executor.d.ts +15 -0
  34. package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -0
  35. package/dist/adapters/generic-sql/migration/executor.js +18 -0
  36. package/dist/adapters/generic-sql/migration/executor.js.map +1 -0
  37. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
  38. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
  39. package/dist/adapters/generic-sql/migration/prepared-migrations.js +68 -0
  40. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -0
  41. package/dist/adapters/generic-sql/migration/sql-generator.js +212 -0
  42. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -0
  43. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +32 -0
  44. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -0
  45. package/dist/adapters/generic-sql/query/cursor-utils.js +37 -0
  46. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -0
  47. package/dist/adapters/generic-sql/query/dialect/mysql.js +33 -0
  48. package/dist/adapters/generic-sql/query/dialect/mysql.js.map +1 -0
  49. package/dist/adapters/generic-sql/query/dialect/postgres.js +32 -0
  50. package/dist/adapters/generic-sql/query/dialect/postgres.js.map +1 -0
  51. package/dist/adapters/generic-sql/query/dialect/sqlite.js +32 -0
  52. package/dist/adapters/generic-sql/query/dialect/sqlite.js.map +1 -0
  53. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +152 -0
  54. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -0
  55. package/dist/adapters/generic-sql/query/select-builder.js +69 -0
  56. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -0
  57. package/dist/adapters/generic-sql/query/sql-query-compiler.js +145 -0
  58. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -0
  59. package/dist/adapters/generic-sql/query/where-builder.js +129 -0
  60. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -0
  61. package/dist/adapters/generic-sql/result-interpreter.js +74 -0
  62. package/dist/adapters/generic-sql/result-interpreter.js.map +1 -0
  63. package/dist/adapters/generic-sql/uow-decoder.js +105 -0
  64. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -0
  65. package/dist/adapters/generic-sql/uow-encoder.js +93 -0
  66. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -0
  67. package/dist/adapters/kysely/kysely-adapter.d.ts +5 -18
  68. package/dist/adapters/kysely/kysely-adapter.d.ts.map +1 -1
  69. package/dist/adapters/kysely/kysely-adapter.js +6 -165
  70. package/dist/adapters/kysely/kysely-adapter.js.map +1 -1
  71. package/dist/adapters/{drizzle/drizzle-query.js → shared/from-unit-of-work-compiler.js} +47 -61
  72. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -0
  73. package/dist/adapters/{drizzle/shared.d.ts → shared/table-name-mapper.d.ts} +2 -4
  74. package/dist/adapters/shared/table-name-mapper.d.ts.map +1 -0
  75. package/dist/adapters/shared/table-name-mapper.js +43 -0
  76. package/dist/adapters/shared/table-name-mapper.js.map +1 -0
  77. package/dist/adapters/shared/uow-operation-compiler.js +105 -0
  78. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -0
  79. package/dist/db-fragment-definition-builder.d.ts +107 -19
  80. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  81. package/dist/db-fragment-definition-builder.js +134 -20
  82. package/dist/db-fragment-definition-builder.js.map +1 -1
  83. package/dist/fragments/internal-fragment.d.ts +39 -5
  84. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  85. package/dist/fragments/internal-fragment.js +82 -10
  86. package/dist/fragments/internal-fragment.js.map +1 -1
  87. package/dist/hooks/hooks.d.ts +51 -0
  88. package/dist/hooks/hooks.d.ts.map +1 -0
  89. package/dist/hooks/hooks.js +88 -0
  90. package/dist/hooks/hooks.js.map +1 -0
  91. package/dist/migration-engine/generation-engine.d.ts +0 -2
  92. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  93. package/dist/migration-engine/generation-engine.js +23 -61
  94. package/dist/migration-engine/generation-engine.js.map +1 -1
  95. package/dist/mod.d.ts +34 -10
  96. package/dist/mod.d.ts.map +1 -1
  97. package/dist/mod.js +47 -16
  98. package/dist/mod.js.map +1 -1
  99. package/dist/node_modules/.pnpm/{rou3@0.7.8 → rou3@0.7.10}/node_modules/rou3/dist/index.js +1 -1
  100. package/dist/node_modules/.pnpm/rou3@0.7.10/node_modules/rou3/dist/index.js.map +1 -0
  101. package/dist/packages/fragno/dist/api/fragment-instantiator.js +69 -31
  102. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +1 -1
  103. package/dist/query/column-defaults.js +27 -0
  104. package/dist/query/column-defaults.js.map +1 -0
  105. package/dist/query/cursor.d.ts +4 -4
  106. package/dist/query/cursor.d.ts.map +1 -1
  107. package/dist/query/cursor.js +8 -6
  108. package/dist/query/cursor.js.map +1 -1
  109. package/dist/query/orm/orm.d.ts +1 -1
  110. package/dist/query/orm/orm.js.map +1 -1
  111. package/dist/query/serialize/create-sql-serializer.js +30 -0
  112. package/dist/query/serialize/create-sql-serializer.js.map +1 -0
  113. package/dist/query/serialize/dialect/mysql-serializer.js +87 -0
  114. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -0
  115. package/dist/query/serialize/dialect/postgres-serializer.js +80 -0
  116. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -0
  117. package/dist/query/serialize/dialect/sqlite-serializer.js +93 -0
  118. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -0
  119. package/dist/query/serialize/sql-serializer.js +67 -0
  120. package/dist/query/serialize/sql-serializer.js.map +1 -0
  121. package/dist/query/{query.d.ts → simple-query-interface.d.ts} +5 -5
  122. package/dist/query/simple-query-interface.d.ts.map +1 -0
  123. package/dist/query/{execute-unit-of-work.d.ts → unit-of-work/execute-unit-of-work.d.ts} +50 -4
  124. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
  125. package/dist/query/{execute-unit-of-work.js → unit-of-work/execute-unit-of-work.js} +150 -5
  126. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -0
  127. package/dist/query/{retry-policy.d.ts → unit-of-work/retry-policy.d.ts} +1 -1
  128. package/dist/query/unit-of-work/retry-policy.d.ts.map +1 -0
  129. package/dist/query/{retry-policy.js → unit-of-work/retry-policy.js} +1 -1
  130. package/dist/query/unit-of-work/retry-policy.js.map +1 -0
  131. package/dist/query/{unit-of-work.d.ts → unit-of-work/unit-of-work.d.ts} +69 -21
  132. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -0
  133. package/dist/query/{unit-of-work.js → unit-of-work/unit-of-work.js} +83 -22
  134. package/dist/query/unit-of-work/unit-of-work.js.map +1 -0
  135. package/dist/query/value-decoding.js +71 -0
  136. package/dist/query/value-decoding.js.map +1 -0
  137. package/dist/query/value-encoding.js +124 -0
  138. package/dist/query/value-encoding.js.map +1 -0
  139. package/dist/schema/type-conversion/create-sql-type-mapper.js +29 -0
  140. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -0
  141. package/dist/schema/type-conversion/dialect/mysql.js +57 -0
  142. package/dist/schema/type-conversion/dialect/mysql.js.map +1 -0
  143. package/dist/schema/type-conversion/dialect/postgres.js +56 -0
  144. package/dist/schema/type-conversion/dialect/postgres.js.map +1 -0
  145. package/dist/schema/type-conversion/dialect/sqlite.js +52 -0
  146. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -0
  147. package/dist/schema/type-conversion/type-mapping.js +63 -0
  148. package/dist/schema/type-conversion/type-mapping.js.map +1 -0
  149. package/dist/sql-driver/connection/connection-provider.d.ts +13 -0
  150. package/dist/sql-driver/connection/connection-provider.d.ts.map +1 -0
  151. package/dist/sql-driver/connection/connection-provider.js +19 -0
  152. package/dist/sql-driver/connection/connection-provider.js.map +1 -0
  153. package/dist/sql-driver/connection/single-connection-provider.js +23 -0
  154. package/dist/sql-driver/connection/single-connection-provider.js.map +1 -0
  155. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
  156. package/dist/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
  157. package/dist/sql-driver/dialects/dialects.d.ts +2 -0
  158. package/dist/sql-driver/dialects/dialects.js +3 -0
  159. package/dist/sql-driver/dialects/durable-object-dialect.d.ts +72 -0
  160. package/dist/sql-driver/dialects/durable-object-dialect.d.ts.map +1 -0
  161. package/dist/sql-driver/dialects/durable-object-dialect.js +130 -0
  162. package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -0
  163. package/dist/sql-driver/driver/runtime-driver.d.ts +23 -0
  164. package/dist/sql-driver/driver/runtime-driver.d.ts.map +1 -0
  165. package/dist/sql-driver/driver/runtime-driver.js +56 -0
  166. package/dist/sql-driver/driver/runtime-driver.js.map +1 -0
  167. package/dist/sql-driver/query-executor/default-query-executor.js +26 -0
  168. package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -0
  169. package/dist/sql-driver/query-executor/plugin.d.ts +17 -0
  170. package/dist/sql-driver/query-executor/plugin.d.ts.map +1 -0
  171. package/dist/sql-driver/query-executor/query-executor-base.js +25 -0
  172. package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -0
  173. package/dist/sql-driver/query-executor/query-executor.d.ts +36 -0
  174. package/dist/sql-driver/query-executor/query-executor.d.ts.map +1 -0
  175. package/dist/sql-driver/sql-driver-adapter.d.ts +29 -0
  176. package/dist/sql-driver/sql-driver-adapter.d.ts.map +1 -0
  177. package/dist/sql-driver/sql-driver-adapter.js +68 -0
  178. package/dist/sql-driver/sql-driver-adapter.js.map +1 -0
  179. package/dist/sql-driver/sql-driver.d.ts +38 -0
  180. package/dist/sql-driver/sql-driver.d.ts.map +1 -0
  181. package/dist/sql-driver/sql-driver.js +1 -0
  182. package/dist/sql-driver/sql.js +50 -0
  183. package/dist/sql-driver/sql.js.map +1 -0
  184. package/dist/with-database.d.ts +6 -2
  185. package/dist/with-database.d.ts.map +1 -1
  186. package/dist/with-database.js +1 -1
  187. package/dist/with-database.js.map +1 -1
  188. package/package.json +39 -12
  189. package/src/adapters/adapters.ts +8 -5
  190. package/src/adapters/drizzle/drizzle-adapter-pglite.test.ts +61 -169
  191. package/src/adapters/drizzle/{drizzle-adapter-sqlite.test.ts → drizzle-adapter-sqlite3.test.ts} +31 -55
  192. package/src/adapters/drizzle/drizzle-adapter.ts +15 -107
  193. package/src/adapters/drizzle/generate.test.ts +2 -2
  194. package/src/adapters/drizzle/generate.ts +78 -34
  195. package/src/adapters/drizzle/migrate-drizzle.test.ts +19 -0
  196. package/src/adapters/drizzle/shared.ts +0 -34
  197. package/src/adapters/drizzle/test-utils.ts +3 -3
  198. package/src/adapters/generic-sql/README.md +14 -0
  199. package/src/adapters/generic-sql/driver-config.ts +144 -0
  200. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +50 -0
  201. package/src/adapters/generic-sql/generic-sql-adapter.ts +146 -0
  202. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +130 -0
  203. package/src/adapters/generic-sql/migration/cold-kysely.ts +55 -0
  204. package/src/adapters/{kysely/migration/execute-mysql.test.ts → generic-sql/migration/dialect/mysql.test.ts} +342 -484
  205. package/src/adapters/generic-sql/migration/dialect/mysql.ts +104 -0
  206. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +1008 -0
  207. package/src/adapters/generic-sql/migration/dialect/postgres.ts +113 -0
  208. package/src/adapters/{kysely/migration/execute-sqlite.test.ts → generic-sql/migration/dialect/sqlite.test.ts} +307 -510
  209. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +189 -0
  210. package/src/adapters/generic-sql/migration/executor.ts +33 -0
  211. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +661 -0
  212. package/src/adapters/generic-sql/migration/prepared-migrations.ts +214 -0
  213. package/src/adapters/generic-sql/migration/sql-generator.ts +413 -0
  214. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +36 -0
  215. package/src/adapters/generic-sql/query/cursor-utils.ts +56 -0
  216. package/src/adapters/generic-sql/query/dialect/mysql.ts +34 -0
  217. package/src/adapters/generic-sql/query/dialect/postgres.ts +32 -0
  218. package/src/adapters/generic-sql/query/dialect/sqlite.ts +32 -0
  219. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +1568 -0
  220. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +314 -0
  221. package/src/adapters/generic-sql/query/select-builder.test.ts +256 -0
  222. package/src/adapters/generic-sql/query/select-builder.ts +137 -0
  223. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +195 -0
  224. package/src/adapters/generic-sql/query/sql-query-compiler.ts +367 -0
  225. package/src/adapters/generic-sql/query/where-builder.test.ts +744 -0
  226. package/src/adapters/generic-sql/query/where-builder.ts +211 -0
  227. package/src/adapters/generic-sql/result-interpreter.ts +102 -0
  228. package/src/adapters/generic-sql/test/generic-drizzle-adapter-sqlite3.test.ts +899 -0
  229. package/src/adapters/generic-sql/uow-decoder.test.ts +399 -0
  230. package/src/adapters/generic-sql/uow-decoder.ts +152 -0
  231. package/src/adapters/generic-sql/uow-encoder.test.ts +183 -0
  232. package/src/adapters/generic-sql/uow-encoder.ts +131 -0
  233. package/src/adapters/kysely/kysely-adapter-pglite.test.ts +26 -76
  234. package/src/adapters/kysely/{kysely-adapter-sqlite.test.ts → kysely-adapter-sqlocal.test.ts} +76 -17
  235. package/src/adapters/kysely/kysely-adapter.ts +10 -250
  236. package/src/adapters/{drizzle/drizzle-query.ts → shared/from-unit-of-work-compiler.ts} +110 -104
  237. package/src/adapters/shared/table-name-mapper.ts +50 -0
  238. package/src/adapters/shared/uow-operation-compiler.ts +211 -0
  239. package/src/db-fragment-definition-builder.test.ts +2 -2
  240. package/src/db-fragment-definition-builder.ts +461 -50
  241. package/src/db-fragment-instantiator.test.ts +78 -2
  242. package/src/db-fragment-integration.test.ts +14 -16
  243. package/src/fragments/internal-fragment.test.ts +434 -45
  244. package/src/fragments/internal-fragment.ts +183 -20
  245. package/src/hooks/hooks.test.ts +587 -0
  246. package/src/hooks/hooks.ts +179 -0
  247. package/src/migration-engine/generation-engine.test.ts +44 -54
  248. package/src/migration-engine/generation-engine.ts +48 -94
  249. package/src/mod.ts +117 -29
  250. package/src/query/column-defaults.ts +49 -0
  251. package/src/query/cursor.test.ts +31 -6
  252. package/src/query/cursor.ts +11 -7
  253. package/src/query/orm/orm.ts +1 -1
  254. package/src/query/query-type.test.ts +9 -9
  255. package/src/query/serialize/create-sql-serializer.ts +34 -0
  256. package/src/query/serialize/dialect/mysql-serializer.ts +142 -0
  257. package/src/query/serialize/dialect/postgres-serializer.ts +129 -0
  258. package/src/query/serialize/dialect/sqlite-serializer.test.ts +251 -0
  259. package/src/query/serialize/dialect/sqlite-serializer.ts +156 -0
  260. package/src/query/serialize/sql-serializer.ts +143 -0
  261. package/src/query/{query.ts → simple-query-interface.ts} +2 -2
  262. package/src/query/{execute-unit-of-work.test.ts → unit-of-work/execute-unit-of-work.test.ts} +571 -17
  263. package/src/query/{execute-unit-of-work.ts → unit-of-work/execute-unit-of-work.ts} +361 -12
  264. package/src/query/{unit-of-work-coordinator.test.ts → unit-of-work/unit-of-work-coordinator.test.ts} +290 -44
  265. package/src/query/{unit-of-work-types.test.ts → unit-of-work/unit-of-work-types.test.ts} +5 -3
  266. package/src/query/{unit-of-work.test.ts → unit-of-work/unit-of-work.test.ts} +100 -9
  267. package/src/query/{unit-of-work.ts → unit-of-work/unit-of-work.ts} +174 -49
  268. package/src/query/{result-transform.test.ts → value-decoding.test.ts} +45 -427
  269. package/src/query/value-decoding.ts +113 -0
  270. package/src/query/value-encoding.test.ts +390 -0
  271. package/src/query/value-encoding.ts +168 -0
  272. package/src/schema/create.test.ts +5 -1
  273. package/src/schema/serialize.test.ts +165 -407
  274. package/src/schema/type-conversion/create-sql-type-mapper.ts +28 -0
  275. package/src/schema/type-conversion/dialect/mysql.ts +64 -0
  276. package/src/schema/type-conversion/dialect/postgres.ts +62 -0
  277. package/src/schema/type-conversion/dialect/sqlite.ts +63 -0
  278. package/src/schema/type-conversion/type-mapping.test.ts +137 -0
  279. package/src/schema/type-conversion/type-mapping.ts +153 -0
  280. package/src/shared/connection-pool.ts +5 -5
  281. package/src/sql-driver/better-sqlite3.test.ts +126 -0
  282. package/src/sql-driver/connection/connection-provider.ts +27 -0
  283. package/src/sql-driver/connection/single-connection-provider.ts +42 -0
  284. package/src/sql-driver/dialect-adapter/dialect-adapter.ts +9 -0
  285. package/src/sql-driver/dialect-adapter/sqlite-dialect-adapter.ts +7 -0
  286. package/src/sql-driver/dialects/dialects.ts +1 -0
  287. package/src/sql-driver/dialects/durable-object-dialect.ts +260 -0
  288. package/src/sql-driver/driver/runtime-driver.ts +91 -0
  289. package/src/sql-driver/query-executor/default-query-executor.ts +38 -0
  290. package/src/sql-driver/query-executor/plugin.ts +22 -0
  291. package/src/sql-driver/query-executor/query-executor-base.ts +53 -0
  292. package/src/sql-driver/query-executor/query-executor.ts +44 -0
  293. package/src/sql-driver/sql-driver-adapter.ts +96 -0
  294. package/src/sql-driver/sql-driver.ts +53 -0
  295. package/src/sql-driver/sql.ts +57 -0
  296. package/src/sql-driver/sqlocal.test.ts +117 -0
  297. package/src/with-database.ts +35 -23
  298. package/tsdown.config.ts +7 -2
  299. package/dist/adapters/drizzle/drizzle-connection-pool.js +0 -40
  300. package/dist/adapters/drizzle/drizzle-connection-pool.js.map +0 -1
  301. package/dist/adapters/drizzle/drizzle-query.d.ts +0 -23
  302. package/dist/adapters/drizzle/drizzle-query.d.ts.map +0 -1
  303. package/dist/adapters/drizzle/drizzle-query.js.map +0 -1
  304. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts +0 -10
  305. package/dist/adapters/drizzle/drizzle-uow-compiler.d.ts.map +0 -1
  306. package/dist/adapters/drizzle/drizzle-uow-compiler.js +0 -334
  307. package/dist/adapters/drizzle/drizzle-uow-compiler.js.map +0 -1
  308. package/dist/adapters/drizzle/drizzle-uow-decoder.js +0 -123
  309. package/dist/adapters/drizzle/drizzle-uow-decoder.js.map +0 -1
  310. package/dist/adapters/drizzle/drizzle-uow-executor.js +0 -160
  311. package/dist/adapters/drizzle/drizzle-uow-executor.js.map +0 -1
  312. package/dist/adapters/drizzle/join-column-utils.js +0 -28
  313. package/dist/adapters/drizzle/join-column-utils.js.map +0 -1
  314. package/dist/adapters/drizzle/shared.d.ts.map +0 -1
  315. package/dist/adapters/drizzle/shared.js +0 -35
  316. package/dist/adapters/drizzle/shared.js.map +0 -1
  317. package/dist/adapters/kysely/kysely-connection-pool.js +0 -41
  318. package/dist/adapters/kysely/kysely-connection-pool.js.map +0 -1
  319. package/dist/adapters/kysely/kysely-query-builder.js +0 -321
  320. package/dist/adapters/kysely/kysely-query-builder.js.map +0 -1
  321. package/dist/adapters/kysely/kysely-query-compiler.js +0 -67
  322. package/dist/adapters/kysely/kysely-query-compiler.js.map +0 -1
  323. package/dist/adapters/kysely/kysely-query.d.ts +0 -23
  324. package/dist/adapters/kysely/kysely-query.d.ts.map +0 -1
  325. package/dist/adapters/kysely/kysely-query.js +0 -230
  326. package/dist/adapters/kysely/kysely-query.js.map +0 -1
  327. package/dist/adapters/kysely/kysely-shared.d.ts +0 -14
  328. package/dist/adapters/kysely/kysely-shared.d.ts.map +0 -1
  329. package/dist/adapters/kysely/kysely-shared.js +0 -33
  330. package/dist/adapters/kysely/kysely-shared.js.map +0 -1
  331. package/dist/adapters/kysely/kysely-uow-compiler.js +0 -193
  332. package/dist/adapters/kysely/kysely-uow-compiler.js.map +0 -1
  333. package/dist/adapters/kysely/kysely-uow-executor.js +0 -93
  334. package/dist/adapters/kysely/kysely-uow-executor.js.map +0 -1
  335. package/dist/adapters/kysely/migration/execute-base.js +0 -128
  336. package/dist/adapters/kysely/migration/execute-base.js.map +0 -1
  337. package/dist/adapters/kysely/migration/execute-factory.js +0 -34
  338. package/dist/adapters/kysely/migration/execute-factory.js.map +0 -1
  339. package/dist/adapters/kysely/migration/execute-mssql.js +0 -112
  340. package/dist/adapters/kysely/migration/execute-mssql.js.map +0 -1
  341. package/dist/adapters/kysely/migration/execute-mysql.js +0 -93
  342. package/dist/adapters/kysely/migration/execute-mysql.js.map +0 -1
  343. package/dist/adapters/kysely/migration/execute-postgres.js +0 -104
  344. package/dist/adapters/kysely/migration/execute-postgres.js.map +0 -1
  345. package/dist/adapters/kysely/migration/execute-sqlite.js +0 -123
  346. package/dist/adapters/kysely/migration/execute-sqlite.js.map +0 -1
  347. package/dist/adapters/kysely/migration/execute.js +0 -34
  348. package/dist/adapters/kysely/migration/execute.js.map +0 -1
  349. package/dist/migration-engine/create.d.ts +0 -37
  350. package/dist/migration-engine/create.d.ts.map +0 -1
  351. package/dist/migration-engine/create.js +0 -58
  352. package/dist/migration-engine/create.js.map +0 -1
  353. package/dist/migration-engine/shared.d.ts +0 -112
  354. package/dist/migration-engine/shared.d.ts.map +0 -1
  355. package/dist/node_modules/.pnpm/rou3@0.7.8/node_modules/rou3/dist/index.js.map +0 -1
  356. package/dist/query/execute-unit-of-work.d.ts.map +0 -1
  357. package/dist/query/execute-unit-of-work.js.map +0 -1
  358. package/dist/query/query.d.ts.map +0 -1
  359. package/dist/query/result-transform.js +0 -170
  360. package/dist/query/result-transform.js.map +0 -1
  361. package/dist/query/retry-policy.d.ts.map +0 -1
  362. package/dist/query/retry-policy.js.map +0 -1
  363. package/dist/query/unit-of-work.d.ts.map +0 -1
  364. package/dist/query/unit-of-work.js.map +0 -1
  365. package/dist/schema/serialize.js +0 -111
  366. package/dist/schema/serialize.js.map +0 -1
  367. package/src/adapters/drizzle/drizzle-adapter.test.ts +0 -122
  368. package/src/adapters/drizzle/drizzle-connection-pool.ts +0 -66
  369. package/src/adapters/drizzle/drizzle-query.test.ts +0 -499
  370. package/src/adapters/drizzle/drizzle-uow-compiler-mysql.test.ts +0 -1442
  371. package/src/adapters/drizzle/drizzle-uow-compiler-sqlite.test.ts +0 -1414
  372. package/src/adapters/drizzle/drizzle-uow-compiler.test.ts +0 -1400
  373. package/src/adapters/drizzle/drizzle-uow-compiler.ts +0 -677
  374. package/src/adapters/drizzle/drizzle-uow-decoder.ts +0 -228
  375. package/src/adapters/drizzle/drizzle-uow-executor.ts +0 -309
  376. package/src/adapters/drizzle/join-column-utils.test.ts +0 -79
  377. package/src/adapters/drizzle/join-column-utils.ts +0 -39
  378. package/src/adapters/kysely/kysely-connection-pool.ts +0 -70
  379. package/src/adapters/kysely/kysely-query-builder.test.ts +0 -1344
  380. package/src/adapters/kysely/kysely-query-builder.ts +0 -666
  381. package/src/adapters/kysely/kysely-query-compiler.ts +0 -127
  382. package/src/adapters/kysely/kysely-query.test.ts +0 -498
  383. package/src/adapters/kysely/kysely-query.ts +0 -399
  384. package/src/adapters/kysely/kysely-shared.ts +0 -57
  385. package/src/adapters/kysely/kysely-uow-compiler.test.ts +0 -986
  386. package/src/adapters/kysely/kysely-uow-compiler.ts +0 -350
  387. package/src/adapters/kysely/kysely-uow-executor.ts +0 -164
  388. package/src/adapters/kysely/kysely-uow-joins.test.ts +0 -794
  389. package/src/adapters/kysely/migration/execute-base.ts +0 -256
  390. package/src/adapters/kysely/migration/execute-factory.ts +0 -53
  391. package/src/adapters/kysely/migration/execute-mssql.ts +0 -250
  392. package/src/adapters/kysely/migration/execute-mysql.ts +0 -211
  393. package/src/adapters/kysely/migration/execute-postgres.test.ts +0 -2657
  394. package/src/adapters/kysely/migration/execute-postgres.ts +0 -234
  395. package/src/adapters/kysely/migration/execute-sqlite.ts +0 -247
  396. package/src/adapters/kysely/migration/execute.ts +0 -50
  397. package/src/adapters/kysely/migration/kysely-migrator.test.ts +0 -261
  398. package/src/query/result-transform.ts +0 -274
  399. package/src/schema/serialize.ts +0 -407
  400. /package/dist/query/{query.js → simple-query-interface.js} +0 -0
  401. /package/src/query/{retry-policy.test.ts → unit-of-work/retry-policy.test.ts} +0 -0
  402. /package/src/query/{retry-policy.ts → unit-of-work/retry-policy.ts} +0 -0
@@ -1,11 +1,12 @@
1
- import { AnySchema, AnyTable, FragnoId, IdColumn, Index, Relation } from "../schema/create.js";
2
- import { Condition, ConditionBuilder } from "./condition-builder.js";
3
- import { CompiledJoin } from "./orm/orm.js";
4
- import { Cursor, CursorResult } from "./cursor.js";
5
- import { Prettify } from "../util/types.js";
6
- import { ExtractJoinOut, ExtractSelect, SelectClause, SelectResult, TableToInsertValues, TableToUpdateValues } from "./query.js";
1
+ import { AnySchema, AnyTable, FragnoId, IdColumn, Index, Relation } from "../../schema/create.js";
2
+ import { Condition, ConditionBuilder } from "../condition-builder.js";
3
+ import { CompiledJoin } from "../orm/orm.js";
4
+ import { Cursor, CursorResult } from "../cursor.js";
5
+ import { Prettify } from "../../util/types.js";
6
+ import { HookPayload, HooksMap, TriggerHookOptions, TriggeredHook } from "../../hooks/hooks.js";
7
+ import { ExtractJoinOut, ExtractSelect, SelectClause, SelectResult, TableToInsertValues, TableToUpdateValues } from "../simple-query-interface.js";
7
8
 
8
- //#region src/query/unit-of-work.d.ts
9
+ //#region src/query/unit-of-work/unit-of-work.d.ts
9
10
 
10
11
  /**
11
12
  * Builder for updateMany operations that supports both whereIndex and set chaining
@@ -149,12 +150,16 @@ type MutationOperation<TSchema extends AnySchema, TTable extends AnyTable = TSch
149
150
  */
150
151
  interface CompiledMutation<TOutput> {
151
152
  query: TOutput;
153
+ /**
154
+ * The type of mutation operation (create, update, delete, or check).
155
+ */
156
+ op: "create" | "update" | "delete" | "check";
152
157
  /**
153
158
  * Number of rows this operation must affect for the transaction to succeed.
154
159
  * If actual affected rows doesn't match, it indicates a version conflict.
155
160
  * null means don't check affected rows (e.g., for create operations).
156
161
  */
157
- expectedAffectedRows: number | null;
162
+ expectedAffectedRows: bigint | null;
158
163
  /**
159
164
  * Number of rows this SELECT query must return for the transaction to succeed.
160
165
  * Used for check operations to verify version without modifying data.
@@ -210,7 +215,7 @@ interface UOWDecoder<TRawInput = unknown> {
210
215
  * @param operations - Array of retrieval operations that produced these results
211
216
  * @returns Decoded results in application format
212
217
  */
213
- (rawResults: TRawInput[], operations: RetrievalOperation<AnySchema>[]): unknown[];
218
+ decode(rawResults: TRawInput[], operations: RetrievalOperation<AnySchema>[]): unknown[];
214
219
  }
215
220
  /**
216
221
  * Builder for find operations in Unit of Work
@@ -250,6 +255,7 @@ declare class FindBuilder<TTable extends AnyTable, TSelect extends SelectClause<
250
255
  before(cursor: Cursor | string): this;
251
256
  /**
252
257
  * Set the number of results per page
258
+ * @throws {RangeError} If size is not a positive integer
253
259
  */
254
260
  pageSize(size: number): this;
255
261
  /**
@@ -334,6 +340,7 @@ declare class JoinFindBuilder<TTable extends AnyTable, TSelect extends SelectCla
334
340
  orderByIndex<TIndexName extends ValidIndexName<TTable>>(indexName: TIndexName, direction: "asc" | "desc"): this;
335
341
  /**
336
342
  * Set the number of results to return
343
+ * @throws {RangeError} If size is not a positive integer
337
344
  */
338
345
  pageSize(size: number): this;
339
346
  /**
@@ -387,9 +394,16 @@ interface IUnitOfWork {
387
394
  getRetrievalOperations(): ReadonlyArray<RetrievalOperation<AnySchema>>;
388
395
  getMutationOperations(): ReadonlyArray<MutationOperation<AnySchema>>;
389
396
  getCreatedIds(): FragnoId[];
390
- restrict(): IUnitOfWork;
397
+ restrict(options?: {
398
+ readyFor?: "mutation" | "retrieval" | "none";
399
+ }): IUnitOfWork;
400
+ signalReadyForRetrieval(): void;
401
+ signalReadyForMutation(): void;
391
402
  reset(): void;
392
- forSchema<TOtherSchema extends AnySchema>(schema: TOtherSchema): TypedUnitOfWork<TOtherSchema, [], any>;
403
+ forSchema<TOtherSchema extends AnySchema, TOtherHooks extends HooksMap = {}>(schema: TOtherSchema, hooks?: TOtherHooks): TypedUnitOfWork<TOtherSchema, [], any, TOtherHooks>;
404
+ registerSchema(schema: AnySchema, namespace: string): void;
405
+ triggerHook(hookName: string, payload: unknown, options?: TriggerHookOptions): void;
406
+ getTriggeredHooks(): readonly TriggeredHook[];
393
407
  }
394
408
  /**
395
409
  * Restricted UOW interface without execute methods.
@@ -439,18 +453,33 @@ interface UnitOfWorkConfig {
439
453
  declare class UnitOfWork<const TRawInput = unknown> implements IUnitOfWork {
440
454
  #private;
441
455
  constructor(compiler: UOWCompiler<unknown>, executor: UOWExecutor<unknown, TRawInput>, decoder: UOWDecoder<TRawInput>, name?: string, config?: UnitOfWorkConfig, schemaNamespaceMap?: WeakMap<AnySchema, string>);
456
+ /**
457
+ * Register a schema with its namespace for cross-fragment operations.
458
+ * This is used for internal fragments like hooks that need to create
459
+ * records in a different schema during the same transaction.
460
+ */
461
+ registerSchema(schema: AnySchema, namespace: string): void;
442
462
  /**
443
463
  * Get a schema-specific typed view of this UOW for type-safe operations.
444
464
  * Returns a wrapper that provides typed operations for the given schema.
445
465
  * The namespace is automatically resolved from the schema-namespace map.
466
+ * The optional hooks parameter is for type inference only - pass your hooks map
467
+ * to get proper typing for triggerHook. The value is not used at runtime.
446
468
  */
447
- forSchema<TOtherSchema extends AnySchema, TRawInput>(schema: TOtherSchema): TypedUnitOfWork<TOtherSchema, [], TRawInput>;
469
+ forSchema<TOtherSchema extends AnySchema, TOtherHooks extends HooksMap = {}>(schema: TOtherSchema, _hooks?: TOtherHooks): TypedUnitOfWork<TOtherSchema, [], TRawInput, TOtherHooks>;
448
470
  /**
449
471
  * Create a restricted child UOW that cannot execute phases.
450
472
  * The child shares the same operation storage but must signal readiness
451
473
  * before the parent can execute each phase.
474
+ *
475
+ * @param options.readyFor - Controls automatic readiness signaling:
476
+ * - "mutation" (default): Signals ready for both retrieval and mutation immediately
477
+ * - "retrieval": Signals ready for retrieval only
478
+ * - "none": No automatic signaling, caller must signal manually
452
479
  */
453
- restrict(): UnitOfWork<TRawInput>;
480
+ restrict(options?: {
481
+ readyFor?: "mutation" | "retrieval" | "none";
482
+ }): UnitOfWork<TRawInput>;
454
483
  /**
455
484
  * Signal that this child is ready for retrieval phase execution.
456
485
  * Only valid for restricted (child) UOWs.
@@ -466,6 +495,14 @@ declare class UnitOfWork<const TRawInput = unknown> implements IUnitOfWork {
466
495
  * Clears operations, resets state, and resets phase promises.
467
496
  */
468
497
  reset(): void;
498
+ /**
499
+ * Trigger a hook to be executed after the transaction commits.
500
+ */
501
+ triggerHook(hookName: string, payload: unknown, options?: TriggerHookOptions): void;
502
+ /**
503
+ * Get all triggered hooks for this UOW.
504
+ */
505
+ getTriggeredHooks(): ReadonlyArray<TriggeredHook>;
469
506
  get state(): UOWState;
470
507
  get name(): string | undefined;
471
508
  get nonce(): string;
@@ -533,7 +570,7 @@ declare class UnitOfWork<const TRawInput = unknown> implements IUnitOfWork {
533
570
  * All operations are stored in the underlying UOW, but this facade ensures type safety and
534
571
  * filters retrieval results to only include operations added through this facade.
535
572
  */
536
- declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalResults extends unknown[] = [], const TRawInput = unknown> implements IUnitOfWork {
573
+ declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalResults extends unknown[] = [], const TRawInput = unknown, const THooks extends HooksMap = {}> implements IUnitOfWork {
537
574
  #private;
538
575
  constructor(schema: TSchema, namespace: string | undefined, uow: UnitOfWork<TRawInput>);
539
576
  get $results(): Prettify<TRetrievalResults>;
@@ -550,19 +587,24 @@ declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalR
550
587
  executeMutations(): Promise<{
551
588
  success: boolean;
552
589
  }>;
553
- restrict(): IUnitOfWork;
590
+ restrict(options?: {
591
+ readyFor?: "mutation" | "retrieval" | "none";
592
+ }): IUnitOfWork;
593
+ signalReadyForRetrieval(): void;
594
+ signalReadyForMutation(): void;
554
595
  reset(): void;
555
- forSchema<TOtherSchema extends AnySchema>(schema: TOtherSchema): TypedUnitOfWork<TOtherSchema, [], TRawInput>;
596
+ forSchema<TOtherSchema extends AnySchema, TOtherHooks extends HooksMap = {}>(schema: TOtherSchema, hooks?: TOtherHooks): TypedUnitOfWork<TOtherSchema, [], TRawInput, TOtherHooks>;
597
+ registerSchema(schema: AnySchema, namespace: string): void;
556
598
  compile<TOutput>(compiler: UOWCompiler<TOutput>): {
557
599
  name?: string;
558
600
  retrievalBatch: TOutput[];
559
601
  mutationBatch: CompiledMutation<TOutput>[];
560
602
  };
561
- find<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>[]], TRawInput>;
562
- find<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true>[]], TRawInput>;
563
- findFirst<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>> | null], TRawInput>;
564
- findFirst<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true> | null], TRawInput>;
565
- findWithCursor<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, CursorResult<SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>>], TRawInput>;
603
+ find<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>[]], TRawInput, THooks>;
604
+ find<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true>[]], TRawInput, THooks>;
605
+ findFirst<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>> | null], TRawInput, THooks>;
606
+ findFirst<TTableName extends keyof TSchema["tables"] & string>(tableName: TTableName): TypedUnitOfWork<TSchema, [...TRetrievalResults, SelectResult<TSchema["tables"][TTableName], {}, true> | null], TRawInput, THooks>;
607
+ findWithCursor<TTableName extends keyof TSchema["tables"] & string, const TBuilderResult>(tableName: TTableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TTableName]>, "build">) => TBuilderResult): TypedUnitOfWork<TSchema, [...TRetrievalResults, CursorResult<SelectResult<TSchema["tables"][TTableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TTableName]>>>>], TRawInput, THooks>;
566
608
  create<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, values: TableToInsertValues<TSchema["tables"][TableName]>): FragnoId;
567
609
  update<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, id: FragnoId | string, builderFn: (builder: Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build">) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build"> | void): void;
568
610
  delete<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, id: FragnoId | string, builderFn?: (builder: Omit<DeleteBuilder, "build">) => Omit<DeleteBuilder, "build"> | void): void;
@@ -583,6 +625,12 @@ declare class TypedUnitOfWork<const TSchema extends AnySchema, const TRetrievalR
583
625
  * ```
584
626
  */
585
627
  check<TableName extends keyof TSchema["tables"] & string>(tableName: TableName, id: FragnoId): void;
628
+ get $hooks(): THooks;
629
+ /**
630
+ * Trigger a hook to be executed after the transaction commits.
631
+ */
632
+ triggerHook<K$1 extends keyof THooks & string>(hookName: K$1, payload: HookPayload<THooks[K$1]>, options?: TriggerHookOptions): void;
633
+ getTriggeredHooks(): ReadonlyArray<TriggeredHook>;
586
634
  }
587
635
  //#endregion
588
636
  export { CompiledMutation, DeleteBuilder, FindBuilder, IUnitOfWork, IUnitOfWorkRestricted, IndexColumns, IndexedConditionBuilder, IndexedJoinBuilder, InferIdColumnName, JoinFindBuilder, MutationOperation, MutationResult, RetrievalOperation, TypedUnitOfWork, UOWCompiler, UOWDecoder, UOWExecutor, UOWState, UnitOfWork, UnitOfWorkConfig, UpdateBuilder, UpdateManyBuilder, ValidIndexName, buildJoinIndexed, createUnitOfWork };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-of-work.d.ts","names":[],"sources":["../../../src/query/unit-of-work/unit-of-work.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { FragnoId } from "../schema/create.js";
2
- import { buildCondition } from "./condition-builder.js";
3
- import { Cursor } from "./cursor.js";
1
+ import { FragnoId } from "../../schema/create.js";
2
+ import { buildCondition } from "../condition-builder.js";
3
+ import { Cursor } from "../cursor.js";
4
4
 
5
- //#region src/query/unit-of-work.ts
5
+ //#region src/query/unit-of-work/unit-of-work.ts
6
6
  /**
7
7
  * Builder for find operations in Unit of Work
8
8
  */
@@ -83,8 +83,10 @@ var FindBuilder = class {
83
83
  }
84
84
  /**
85
85
  * Set the number of results per page
86
+ * @throws {RangeError} If size is not a positive integer
86
87
  */
87
88
  pageSize(size) {
89
+ if (!Number.isInteger(size) || size <= 0) throw new RangeError(`pageSize must be a positive integer, received: ${size}`);
88
90
  this.#pageSizeValue = size;
89
91
  return this;
90
92
  }
@@ -260,8 +262,10 @@ var JoinFindBuilder = class {
260
262
  }
261
263
  /**
262
264
  * Set the number of results to return
265
+ * @throws {RangeError} If size is not a positive integer
263
266
  */
264
267
  pageSize(size) {
268
+ if (!Number.isInteger(size) || size <= 0) throw new RangeError(`pageSize must be a positive integer, received: ${size}`);
265
269
  this.#pageSizeValue = size;
266
270
  return this;
267
271
  }
@@ -546,36 +550,51 @@ var UnitOfWork = class UnitOfWork {
546
550
  #retrievalError = null;
547
551
  #mutationError = null;
548
552
  #coordinator = new UOWChildCoordinator();
553
+ #triggeredHooks = [];
549
554
  constructor(compiler, executor, decoder, name, config, schemaNamespaceMap) {
550
555
  this.#compiler = compiler;
551
556
  this.#executor = executor;
552
557
  this.#decoder = decoder;
553
- this.#schemaNamespaceMap = schemaNamespaceMap;
558
+ this.#schemaNamespaceMap = schemaNamespaceMap ?? /* @__PURE__ */ new WeakMap();
554
559
  this.#name = name;
555
560
  this.#config = config;
556
561
  this.#nonce = config?.nonce ?? crypto.randomUUID();
557
562
  }
558
563
  /**
564
+ * Register a schema with its namespace for cross-fragment operations.
565
+ * This is used for internal fragments like hooks that need to create
566
+ * records in a different schema during the same transaction.
567
+ */
568
+ registerSchema(schema, namespace) {
569
+ this.#schemaNamespaceMap.set(schema, namespace);
570
+ }
571
+ /**
559
572
  * Get a schema-specific typed view of this UOW for type-safe operations.
560
573
  * Returns a wrapper that provides typed operations for the given schema.
561
574
  * The namespace is automatically resolved from the schema-namespace map.
575
+ * The optional hooks parameter is for type inference only - pass your hooks map
576
+ * to get proper typing for triggerHook. The value is not used at runtime.
562
577
  */
563
- forSchema(schema) {
564
- const resolvedNamespace = this.#schemaNamespaceMap?.get(schema);
565
- return new TypedUnitOfWork(schema, resolvedNamespace, this);
578
+ forSchema(schema, _hooks) {
579
+ return new TypedUnitOfWork(schema, this.#schemaNamespaceMap.get(schema), this);
566
580
  }
567
581
  /**
568
582
  * Create a restricted child UOW that cannot execute phases.
569
583
  * The child shares the same operation storage but must signal readiness
570
584
  * before the parent can execute each phase.
585
+ *
586
+ * @param options.readyFor - Controls automatic readiness signaling:
587
+ * - "mutation" (default): Signals ready for both retrieval and mutation immediately
588
+ * - "retrieval": Signals ready for retrieval only
589
+ * - "none": No automatic signaling, caller must signal manually
571
590
  */
572
- restrict() {
591
+ restrict(options) {
592
+ const readyFor = options?.readyFor ?? "mutation";
573
593
  const child = new UnitOfWork(this.#compiler, this.#executor, this.#decoder, this.#name, {
574
594
  ...this.#config,
575
595
  nonce: this.#nonce
576
596
  }, this.#schemaNamespaceMap);
577
597
  child.#coordinator.setAsRestricted(this, this.#coordinator);
578
- child.#state = this.#state;
579
598
  child.#retrievalOps = this.#retrievalOps;
580
599
  child.#mutationOps = this.#mutationOps;
581
600
  child.#retrievalResults = this.#retrievalResults;
@@ -584,9 +603,10 @@ var UnitOfWork = class UnitOfWork {
584
603
  child.#mutationPhaseDeferred = this.#mutationPhaseDeferred;
585
604
  child.#retrievalError = this.#retrievalError;
586
605
  child.#mutationError = this.#mutationError;
606
+ child.#triggeredHooks = this.#triggeredHooks;
587
607
  this.#coordinator.addChild(child);
588
- child.signalReadyForRetrieval();
589
- child.signalReadyForMutation();
608
+ if (readyFor === "mutation" || readyFor === "retrieval") child.signalReadyForRetrieval();
609
+ if (readyFor === "mutation") child.signalReadyForMutation();
590
610
  return child;
591
611
  }
592
612
  /**
@@ -619,9 +639,26 @@ var UnitOfWork = class UnitOfWork {
619
639
  this.#retrievalPhaseDeferred.reset();
620
640
  this.#mutationPhaseDeferred.reset();
621
641
  this.#coordinator.reset();
642
+ this.#triggeredHooks = [];
643
+ }
644
+ /**
645
+ * Trigger a hook to be executed after the transaction commits.
646
+ */
647
+ triggerHook(hookName, payload, options) {
648
+ this.#triggeredHooks.push({
649
+ hookName,
650
+ payload,
651
+ options
652
+ });
653
+ }
654
+ /**
655
+ * Get all triggered hooks for this UOW.
656
+ */
657
+ getTriggeredHooks() {
658
+ return this.#triggeredHooks;
622
659
  }
623
660
  get state() {
624
- return this.#state;
661
+ return this.#coordinator.parent?.state ?? this.#state;
625
662
  }
626
663
  get name() {
627
664
  return this.#name;
@@ -673,7 +710,7 @@ var UnitOfWork = class UnitOfWork {
673
710
  return emptyResults;
674
711
  }
675
712
  const rawResults = await this.#executor.executeRetrievalPhase(retrievalBatch);
676
- this.#retrievalResults = this.#decoder(rawResults, this.#retrievalOps);
713
+ this.#retrievalResults = this.#decoder.decode(rawResults, this.#retrievalOps);
677
714
  this.#state = "building-mutation";
678
715
  this.#retrievalPhaseDeferred.resolve(this.#retrievalResults);
679
716
  return this.#retrievalResults;
@@ -706,7 +743,10 @@ var UnitOfWork = class UnitOfWork {
706
743
  }
707
744
  const result = await this.#executor.executeMutationPhase(mutationBatch);
708
745
  this.#state = "executed";
709
- if (result.success) this.#createdInternalIds = result.createdInternalIds;
746
+ if (result.success) {
747
+ this.#createdInternalIds.length = 0;
748
+ this.#createdInternalIds.push(...result.createdInternalIds);
749
+ }
710
750
  this.#mutationPhaseDeferred.resolve();
711
751
  return { success: result.success };
712
752
  } catch (error) {
@@ -731,7 +771,7 @@ var UnitOfWork = class UnitOfWork {
731
771
  * Add a retrieval operation (used by TypedUnitOfWork)
732
772
  */
733
773
  addRetrievalOperation(op) {
734
- if (this.#state !== "building-retrieval") throw new Error(`Cannot add retrieval operation in state ${this.#state}. Must be in building-retrieval state.`);
774
+ if (this.state !== "building-retrieval") throw new Error(`Cannot add retrieval operation in state ${this.state}. Must be in building-retrieval state.`);
735
775
  this.#retrievalOps.push(op);
736
776
  return this.#retrievalOps.length - 1;
737
777
  }
@@ -740,7 +780,7 @@ var UnitOfWork = class UnitOfWork {
740
780
  * Add a mutation operation (used by TypedUnitOfWork)
741
781
  */
742
782
  addMutationOperation(op) {
743
- if (this.#state === "executed") throw new Error(`Cannot add mutation operation in executed state.`);
783
+ if (this.state === "executed") throw new Error(`Cannot add mutation operation in executed state.`);
744
784
  this.#mutationOps.push(op);
745
785
  }
746
786
  /**
@@ -752,7 +792,7 @@ var UnitOfWork = class UnitOfWork {
752
792
  * @returns Array of FragnoIds in the same order as create() calls
753
793
  */
754
794
  getCreatedIds() {
755
- if (this.#state !== "executed") throw new Error(`getCreatedIds() can only be called after executeMutations(). Current state: ${this.#state}`);
795
+ if (this.state !== "executed") throw new Error(`getCreatedIds() can only be called after executeMutations(). Current state: ${this.state}`);
756
796
  const createdIds = [];
757
797
  let createIndex = 0;
758
798
  for (const op of this.#mutationOps) if (op.type === "create") {
@@ -849,14 +889,23 @@ var TypedUnitOfWork = class {
849
889
  async executeMutations() {
850
890
  return this.#uow.executeMutations();
851
891
  }
852
- restrict() {
853
- return this.#uow.restrict();
892
+ restrict(options) {
893
+ return this.#uow.restrict(options);
894
+ }
895
+ signalReadyForRetrieval() {
896
+ this.#uow.signalReadyForRetrieval();
897
+ }
898
+ signalReadyForMutation() {
899
+ this.#uow.signalReadyForMutation();
854
900
  }
855
901
  reset() {
856
902
  return this.#uow.reset();
857
903
  }
858
- forSchema(schema) {
859
- return this.#uow.forSchema(schema);
904
+ forSchema(schema, hooks) {
905
+ return this.#uow.forSchema(schema, hooks);
906
+ }
907
+ registerSchema(schema, namespace) {
908
+ this.#uow.registerSchema(schema, namespace);
860
909
  }
861
910
  compile(compiler) {
862
911
  return this.#uow.compile(compiler);
@@ -997,6 +1046,18 @@ var TypedUnitOfWork = class {
997
1046
  id
998
1047
  });
999
1048
  }
1049
+ get $hooks() {
1050
+ throw new Error("type only");
1051
+ }
1052
+ /**
1053
+ * Trigger a hook to be executed after the transaction commits.
1054
+ */
1055
+ triggerHook(hookName, payload, options) {
1056
+ this.#uow.triggerHook(hookName, payload, options);
1057
+ }
1058
+ getTriggeredHooks() {
1059
+ return this.#uow.getTriggeredHooks();
1060
+ }
1000
1061
  };
1001
1062
 
1002
1063
  //#endregion