@fragno-dev/db 0.3.0 → 0.4.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 (516) hide show
  1. package/.turbo/turbo-build.log +327 -160
  2. package/CHANGELOG.md +74 -0
  3. package/README.md +24 -0
  4. package/dist/adapters/adapters.d.ts +1 -1
  5. package/dist/adapters/adapters.d.ts.map +1 -1
  6. package/dist/adapters/adapters.js.map +1 -1
  7. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts +0 -3
  8. package/dist/adapters/generic-sql/generic-sql-adapter.d.ts.map +1 -1
  9. package/dist/adapters/generic-sql/generic-sql-adapter.js +11 -12
  10. package/dist/adapters/generic-sql/generic-sql-adapter.js.map +1 -1
  11. package/dist/adapters/generic-sql/generic-sql-uow-executor.js +46 -6
  12. package/dist/adapters/generic-sql/generic-sql-uow-executor.js.map +1 -1
  13. package/dist/adapters/generic-sql/migration/cold-kysely.js.map +1 -1
  14. package/dist/adapters/generic-sql/migration/dialect/mysql.js +1 -1
  15. package/dist/adapters/generic-sql/migration/dialect/mysql.js.map +1 -1
  16. package/dist/adapters/generic-sql/migration/dialect/postgres.js +1 -1
  17. package/dist/adapters/generic-sql/migration/dialect/postgres.js.map +1 -1
  18. package/dist/adapters/generic-sql/migration/dialect/sqlite.js +185 -19
  19. package/dist/adapters/generic-sql/migration/dialect/sqlite.js.map +1 -1
  20. package/dist/adapters/generic-sql/migration/executor.d.ts.map +1 -1
  21. package/dist/adapters/generic-sql/migration/executor.js +30 -3
  22. package/dist/adapters/generic-sql/migration/executor.js.map +1 -1
  23. package/dist/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -1
  24. package/dist/adapters/generic-sql/migration/prepared-migrations.js +3 -3
  25. package/dist/adapters/generic-sql/migration/prepared-migrations.js.map +1 -1
  26. package/dist/adapters/generic-sql/migration/sql-generator.js +1 -1
  27. package/dist/adapters/generic-sql/migration/sql-generator.js.map +1 -1
  28. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js +1 -1
  29. package/dist/adapters/generic-sql/query/create-sql-query-compiler.js.map +1 -1
  30. package/dist/adapters/generic-sql/query/cursor-utils.js.map +1 -1
  31. package/dist/adapters/generic-sql/query/db-now-sql.js +27 -0
  32. package/dist/adapters/generic-sql/query/db-now-sql.js.map +1 -0
  33. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js +9 -6
  34. package/dist/adapters/generic-sql/query/generic-sql-uow-operation-compiler.js.map +1 -1
  35. package/dist/adapters/generic-sql/query/select-builder.js.map +1 -1
  36. package/dist/adapters/generic-sql/query/sql-query-compiler.js +37 -9
  37. package/dist/adapters/generic-sql/query/sql-query-compiler.js.map +1 -1
  38. package/dist/adapters/generic-sql/query/where-builder.js +24 -20
  39. package/dist/adapters/generic-sql/query/where-builder.js.map +1 -1
  40. package/dist/adapters/generic-sql/uow-decoder.js +1 -1
  41. package/dist/adapters/generic-sql/uow-decoder.js.map +1 -1
  42. package/dist/adapters/generic-sql/uow-encoder.js +8 -9
  43. package/dist/adapters/generic-sql/uow-encoder.js.map +1 -1
  44. package/dist/adapters/in-memory/condition-evaluator.js +10 -6
  45. package/dist/adapters/in-memory/condition-evaluator.js.map +1 -1
  46. package/dist/adapters/in-memory/in-memory-adapter.d.ts.map +1 -1
  47. package/dist/adapters/in-memory/in-memory-adapter.js +45 -25
  48. package/dist/adapters/in-memory/in-memory-adapter.js.map +1 -1
  49. package/dist/adapters/in-memory/in-memory-uow.js +236 -13
  50. package/dist/adapters/in-memory/in-memory-uow.js.map +1 -1
  51. package/dist/adapters/in-memory/options.d.ts +2 -0
  52. package/dist/adapters/in-memory/options.d.ts.map +1 -1
  53. package/dist/adapters/in-memory/options.js +3 -2
  54. package/dist/adapters/in-memory/options.js.map +1 -1
  55. package/dist/adapters/in-memory/reference-resolution.js.map +1 -1
  56. package/dist/adapters/in-memory/store.js +1 -1
  57. package/dist/adapters/in-memory/store.js.map +1 -1
  58. package/dist/adapters/shared/from-unit-of-work-compiler.js +51 -24
  59. package/dist/adapters/shared/from-unit-of-work-compiler.js.map +1 -1
  60. package/dist/adapters/shared/uow-operation-compiler.js.map +1 -1
  61. package/dist/browser/adapters/adapters.d.ts +61 -0
  62. package/dist/browser/adapters/adapters.d.ts.map +1 -0
  63. package/dist/browser/adapters/generic-sql/migration/executor.d.ts +15 -0
  64. package/dist/browser/adapters/generic-sql/migration/executor.d.ts.map +1 -0
  65. package/dist/browser/adapters/generic-sql/migration/prepared-migrations.d.ts +66 -0
  66. package/dist/browser/adapters/generic-sql/migration/prepared-migrations.d.ts.map +1 -0
  67. package/dist/browser/adapters/generic-sql/sqlite-storage.d.ts +11 -0
  68. package/dist/browser/adapters/generic-sql/sqlite-storage.d.ts.map +1 -0
  69. package/dist/browser/adapters/in-memory/in-memory-adapter.d.ts +5 -0
  70. package/dist/browser/adapters/in-memory/index.d.ts +2 -0
  71. package/dist/browser/adapters/in-memory/options.d.ts +1 -0
  72. package/dist/browser/db-fragment-definition-builder.d.ts +237 -0
  73. package/dist/browser/db-fragment-definition-builder.d.ts.map +1 -0
  74. package/dist/browser/durable-hooks.d.ts +3 -0
  75. package/dist/browser/fragments/internal-fragment.d.ts +317 -0
  76. package/dist/browser/fragments/internal-fragment.d.ts.map +1 -0
  77. package/dist/browser/fragments/internal-fragment.schema.d.ts +1 -0
  78. package/dist/browser/hooks/durable-hooks-logger.d.ts +10 -0
  79. package/dist/browser/hooks/durable-hooks-logger.d.ts.map +1 -0
  80. package/dist/browser/hooks/hooks.d.ts +146 -0
  81. package/dist/browser/hooks/hooks.d.ts.map +1 -0
  82. package/dist/browser/id.js +1 -0
  83. package/dist/browser/internal/adapter-registry.d.ts +4 -0
  84. package/dist/browser/internal/outbox-state.d.ts +2 -0
  85. package/dist/browser/mod.d.ts +15 -0
  86. package/dist/browser/mod.d.ts.map +1 -0
  87. package/dist/browser/mod.js +17 -0
  88. package/dist/browser/mod.js.map +1 -0
  89. package/dist/browser/mod2.d.ts +48 -0
  90. package/dist/browser/mod2.d.ts.map +1 -0
  91. package/dist/browser/naming/sql-naming.d.ts +19 -0
  92. package/dist/browser/naming/sql-naming.d.ts.map +1 -0
  93. package/dist/browser/outbox/outbox.d.ts +21 -0
  94. package/dist/browser/outbox/outbox.d.ts.map +1 -0
  95. package/dist/browser/query/column-defaults.js +1 -0
  96. package/dist/browser/query/condition-builder.d.ts +44 -0
  97. package/dist/browser/query/condition-builder.d.ts.map +1 -0
  98. package/dist/browser/query/condition-builder.js +97 -0
  99. package/dist/browser/query/condition-builder.js.map +1 -0
  100. package/dist/browser/query/cursor.d.ts +105 -0
  101. package/dist/browser/query/cursor.d.ts.map +1 -0
  102. package/dist/browser/query/cursor.js +150 -0
  103. package/dist/browser/query/cursor.js.map +1 -0
  104. package/dist/browser/query/db-now.d.ts +22 -0
  105. package/dist/browser/query/db-now.d.ts.map +1 -0
  106. package/dist/browser/query/db-now.js +33 -0
  107. package/dist/browser/query/db-now.js.map +1 -0
  108. package/dist/browser/query/orm/orm.d.ts +18 -0
  109. package/dist/browser/query/orm/orm.d.ts.map +1 -0
  110. package/dist/browser/query/simple-query-interface.d.ts +108 -0
  111. package/dist/browser/query/simple-query-interface.d.ts.map +1 -0
  112. package/dist/browser/query/unit-of-work/execute-unit-of-work.d.ts +423 -0
  113. package/dist/browser/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -0
  114. package/dist/browser/query/unit-of-work/execute-unit-of-work.js +507 -0
  115. package/dist/browser/query/unit-of-work/execute-unit-of-work.js.map +1 -0
  116. package/dist/browser/query/unit-of-work/retry-policy.d.ts +23 -0
  117. package/dist/browser/query/unit-of-work/retry-policy.d.ts.map +1 -0
  118. package/dist/browser/query/unit-of-work/retry-policy.js +40 -0
  119. package/dist/browser/query/unit-of-work/retry-policy.js.map +1 -0
  120. package/dist/browser/query/unit-of-work/unit-of-work.d.ts +703 -0
  121. package/dist/browser/query/unit-of-work/unit-of-work.d.ts.map +1 -0
  122. package/dist/browser/query/unit-of-work/unit-of-work.js +1206 -0
  123. package/dist/browser/query/unit-of-work/unit-of-work.js.map +1 -0
  124. package/dist/browser/query/value-encoding.js +38 -0
  125. package/dist/browser/query/value-encoding.js.map +1 -0
  126. package/dist/browser/schema/create.d.ts +326 -0
  127. package/dist/browser/schema/create.d.ts.map +1 -0
  128. package/dist/browser/schema/create.js +89 -0
  129. package/dist/browser/schema/create.js.map +1 -0
  130. package/dist/browser/schema/generate-id.js +28 -0
  131. package/dist/browser/schema/generate-id.js.map +1 -0
  132. package/dist/browser/shared/providers.d.ts +6 -0
  133. package/dist/browser/shared/providers.d.ts.map +1 -0
  134. package/dist/browser/sql-driver/connection/connection-provider.d.ts +13 -0
  135. package/dist/browser/sql-driver/connection/connection-provider.d.ts.map +1 -0
  136. package/dist/browser/sql-driver/dialect-adapter/dialect-adapter.d.ts +7 -0
  137. package/dist/browser/sql-driver/dialect-adapter/dialect-adapter.d.ts.map +1 -0
  138. package/dist/browser/sql-driver/driver/runtime-driver.d.ts +23 -0
  139. package/dist/browser/sql-driver/driver/runtime-driver.d.ts.map +1 -0
  140. package/dist/browser/sql-driver/query-executor/plugin.d.ts +17 -0
  141. package/dist/browser/sql-driver/query-executor/plugin.d.ts.map +1 -0
  142. package/dist/browser/sql-driver/query-executor/query-executor.d.ts +36 -0
  143. package/dist/browser/sql-driver/query-executor/query-executor.d.ts.map +1 -0
  144. package/dist/browser/sql-driver/sql-driver-adapter.d.ts +29 -0
  145. package/dist/browser/sql-driver/sql-driver-adapter.d.ts.map +1 -0
  146. package/dist/browser/sql-driver/sql-driver.d.ts +38 -0
  147. package/dist/browser/sql-driver/sql-driver.d.ts.map +1 -0
  148. package/dist/browser/sync/commands.d.ts +15 -0
  149. package/dist/browser/sync/commands.d.ts.map +1 -0
  150. package/dist/browser/sync/commands.js +27 -0
  151. package/dist/browser/sync/commands.js.map +1 -0
  152. package/dist/browser/sync/types.d.ts +63 -0
  153. package/dist/browser/sync/types.d.ts.map +1 -0
  154. package/dist/browser/util/types.d.ts +8 -0
  155. package/dist/browser/util/types.d.ts.map +1 -0
  156. package/dist/browser/with-database.d.ts +29 -0
  157. package/dist/browser/with-database.d.ts.map +1 -0
  158. package/dist/client.d.ts +4 -0
  159. package/dist/client.js +5 -0
  160. package/dist/db-fragment-definition-builder.d.ts +85 -28
  161. package/dist/db-fragment-definition-builder.d.ts.map +1 -1
  162. package/dist/db-fragment-definition-builder.js +374 -46
  163. package/dist/db-fragment-definition-builder.js.map +1 -1
  164. package/dist/dispatchers/cloudflare-do/dispatcher.d.ts +20 -0
  165. package/dist/dispatchers/cloudflare-do/dispatcher.d.ts.map +1 -0
  166. package/dist/dispatchers/cloudflare-do/dispatcher.js +147 -0
  167. package/dist/dispatchers/cloudflare-do/dispatcher.js.map +1 -0
  168. package/dist/dispatchers/cloudflare-do/index.d.ts +5 -20
  169. package/dist/dispatchers/cloudflare-do/index.d.ts.map +1 -1
  170. package/dist/dispatchers/cloudflare-do/index.js +23 -55
  171. package/dist/dispatchers/cloudflare-do/index.js.map +1 -1
  172. package/dist/dispatchers/node/dispatcher.d.ts +14 -0
  173. package/dist/dispatchers/node/dispatcher.d.ts.map +1 -0
  174. package/dist/dispatchers/node/dispatcher.js +80 -0
  175. package/dist/dispatchers/node/dispatcher.js.map +1 -0
  176. package/dist/dispatchers/node/index.d.ts +5 -10
  177. package/dist/dispatchers/node/index.d.ts.map +1 -1
  178. package/dist/dispatchers/node/index.js +21 -53
  179. package/dist/dispatchers/node/index.js.map +1 -1
  180. package/dist/durable-hooks.d.ts +31 -0
  181. package/dist/durable-hooks.d.ts.map +1 -0
  182. package/dist/durable-hooks.js +23 -0
  183. package/dist/durable-hooks.js.map +1 -0
  184. package/dist/fragments/internal-fragment.d.ts +128 -27
  185. package/dist/fragments/internal-fragment.d.ts.map +1 -1
  186. package/dist/fragments/internal-fragment.js +125 -78
  187. package/dist/fragments/internal-fragment.js.map +1 -1
  188. package/dist/fragments/internal-fragment.routes.js +138 -3
  189. package/dist/fragments/internal-fragment.routes.js.map +1 -1
  190. package/dist/fragments/internal-fragment.schema.d.ts +7 -1
  191. package/dist/fragments/internal-fragment.schema.d.ts.map +1 -1
  192. package/dist/fragments/internal-fragment.schema.js +18 -1
  193. package/dist/fragments/internal-fragment.schema.js.map +1 -1
  194. package/dist/hooks/durable-hooks-logger.d.ts +10 -0
  195. package/dist/hooks/durable-hooks-logger.d.ts.map +1 -0
  196. package/dist/hooks/durable-hooks-logger.js +75 -0
  197. package/dist/hooks/durable-hooks-logger.js.map +1 -0
  198. package/dist/hooks/durable-hooks-processor.d.ts +1 -14
  199. package/dist/hooks/durable-hooks-processor.js +58 -10
  200. package/dist/hooks/durable-hooks-processor.js.map +1 -1
  201. package/dist/hooks/durable-hooks-runtime.js +44 -0
  202. package/dist/hooks/durable-hooks-runtime.js.map +1 -0
  203. package/dist/hooks/hooks.d.ts +60 -2
  204. package/dist/hooks/hooks.d.ts.map +1 -1
  205. package/dist/hooks/hooks.js +214 -53
  206. package/dist/hooks/hooks.js.map +1 -1
  207. package/dist/id.d.ts +2 -2
  208. package/dist/id.js +2 -2
  209. package/dist/internal/adapter-registry.d.ts +11 -0
  210. package/dist/internal/adapter-registry.d.ts.map +1 -0
  211. package/dist/internal/adapter-registry.js +135 -0
  212. package/dist/internal/adapter-registry.js.map +1 -0
  213. package/dist/internal/outbox-state.d.ts +2 -0
  214. package/dist/internal/outbox-state.js +26 -0
  215. package/dist/internal/outbox-state.js.map +1 -0
  216. package/dist/migration-engine/auto-from-schema.d.ts +33 -0
  217. package/dist/migration-engine/auto-from-schema.d.ts.map +1 -0
  218. package/dist/migration-engine/auto-from-schema.js +210 -27
  219. package/dist/migration-engine/auto-from-schema.js.map +1 -1
  220. package/dist/migration-engine/generation-engine.d.ts.map +1 -1
  221. package/dist/migration-engine/generation-engine.js +17 -5
  222. package/dist/migration-engine/generation-engine.js.map +1 -1
  223. package/dist/migration-engine/shared.d.ts +113 -0
  224. package/dist/migration-engine/shared.d.ts.map +1 -0
  225. package/dist/migration-engine/shared.js.map +1 -1
  226. package/dist/mod.d.ts +12 -11
  227. package/dist/mod.d.ts.map +1 -1
  228. package/dist/mod.js +10 -10
  229. package/dist/mod.js.map +1 -1
  230. package/dist/naming/sql-naming.d.ts.map +1 -1
  231. package/dist/naming/sql-naming.js.map +1 -1
  232. package/dist/outbox/outbox-builder.js.map +1 -1
  233. package/dist/outbox/outbox.d.ts +3 -1
  234. package/dist/outbox/outbox.d.ts.map +1 -1
  235. package/dist/outbox/outbox.js.map +1 -1
  236. package/dist/query/column-defaults.js.map +1 -1
  237. package/dist/query/condition-builder.d.ts +7 -1
  238. package/dist/query/condition-builder.d.ts.map +1 -1
  239. package/dist/query/condition-builder.js +5 -1
  240. package/dist/query/condition-builder.js.map +1 -1
  241. package/dist/query/cursor-client.d.ts +105 -0
  242. package/dist/query/cursor-client.d.ts.map +1 -0
  243. package/dist/query/cursor-client.js +165 -0
  244. package/dist/query/cursor-client.js.map +1 -0
  245. package/dist/query/cursor.d.ts.map +1 -1
  246. package/dist/query/cursor.js +7 -1
  247. package/dist/query/cursor.js.map +1 -1
  248. package/dist/query/db-now.d.ts +15 -1
  249. package/dist/query/db-now.d.ts.map +1 -1
  250. package/dist/query/db-now.js +30 -2
  251. package/dist/query/db-now.js.map +1 -1
  252. package/dist/query/orm/orm.js.map +1 -1
  253. package/dist/query/serialize/create-sql-serializer.js +2 -2
  254. package/dist/query/serialize/create-sql-serializer.js.map +1 -1
  255. package/dist/query/serialize/dialect/mysql-serializer.js.map +1 -1
  256. package/dist/query/serialize/dialect/postgres-serializer.js.map +1 -1
  257. package/dist/query/serialize/dialect/sqlite-serializer.js +6 -2
  258. package/dist/query/serialize/dialect/sqlite-serializer.js.map +1 -1
  259. package/dist/query/simple-query-interface.d.ts +7 -3
  260. package/dist/query/simple-query-interface.d.ts.map +1 -1
  261. package/dist/query/unit-of-work/execute-unit-of-work.d.ts +37 -2
  262. package/dist/query/unit-of-work/execute-unit-of-work.d.ts.map +1 -1
  263. package/dist/query/unit-of-work/execute-unit-of-work.js +39 -18
  264. package/dist/query/unit-of-work/execute-unit-of-work.js.map +1 -1
  265. package/dist/query/unit-of-work/unit-of-work.d.ts +42 -16
  266. package/dist/query/unit-of-work/unit-of-work.d.ts.map +1 -1
  267. package/dist/query/unit-of-work/unit-of-work.js +50 -6
  268. package/dist/query/unit-of-work/unit-of-work.js.map +1 -1
  269. package/dist/query/value-decoding.js +8 -1
  270. package/dist/query/value-decoding.js.map +1 -1
  271. package/dist/query/value-encoding.js.map +1 -1
  272. package/dist/schema/create.d.ts +69 -25
  273. package/dist/schema/create.d.ts.map +1 -1
  274. package/dist/schema/create.js +91 -16
  275. package/dist/schema/create.js.map +1 -1
  276. package/dist/schema/type-conversion/create-sql-type-mapper.js +1 -1
  277. package/dist/schema/type-conversion/create-sql-type-mapper.js.map +1 -1
  278. package/dist/schema/type-conversion/dialect/sqlite.js.map +1 -1
  279. package/dist/schema/validator.d.ts.map +1 -1
  280. package/dist/schema/validator.js.map +1 -1
  281. package/dist/schema-output/drizzle.d.ts.map +1 -1
  282. package/dist/schema-output/drizzle.js +8 -6
  283. package/dist/schema-output/drizzle.js.map +1 -1
  284. package/dist/schema-output/prisma.d.ts.map +1 -1
  285. package/dist/schema-output/prisma.js +21 -10
  286. package/dist/schema-output/prisma.js.map +1 -1
  287. package/dist/sql-driver/dialects/durable-object-dialect.js +3 -9
  288. package/dist/sql-driver/dialects/durable-object-dialect.js.map +1 -1
  289. package/dist/sql-driver/query-executor/default-query-executor.js.map +1 -1
  290. package/dist/sql-driver/query-executor/query-executor-base.js.map +1 -1
  291. package/dist/sql-driver/sql-driver-adapter.js.map +1 -1
  292. package/dist/sql-driver/sql.js.map +1 -1
  293. package/dist/sync/commands.d.ts +15 -0
  294. package/dist/sync/commands.d.ts.map +1 -0
  295. package/dist/sync/commands.js +27 -0
  296. package/dist/sync/commands.js.map +1 -0
  297. package/dist/sync/index.d.ts +4 -0
  298. package/dist/sync/index.js +4 -0
  299. package/dist/sync/read-tracking.d.ts +25 -0
  300. package/dist/sync/read-tracking.d.ts.map +1 -0
  301. package/dist/sync/read-tracking.js +148 -0
  302. package/dist/sync/read-tracking.js.map +1 -0
  303. package/dist/sync/submit.js +213 -0
  304. package/dist/sync/submit.js.map +1 -0
  305. package/dist/sync/types.d.ts +63 -0
  306. package/dist/sync/types.d.ts.map +1 -0
  307. package/dist/util/default-database-adapter.js +6 -1
  308. package/dist/util/default-database-adapter.js.map +1 -1
  309. package/dist/with-database.d.ts +3 -6
  310. package/dist/with-database.d.ts.map +1 -1
  311. package/dist/with-database.js +7 -15
  312. package/dist/with-database.js.map +1 -1
  313. package/package.json +33 -41
  314. package/src/adapters/adapters.ts +5 -4
  315. package/src/adapters/drizzle/migrate-drizzle.test.ts +46 -9
  316. package/src/adapters/drizzle/migration-parity-drizzle-kit.test.ts +5 -3
  317. package/src/adapters/drizzle/test-utils.ts +2 -1
  318. package/src/adapters/generic-sql/generic-sql-adapter.test.ts +5 -3
  319. package/src/adapters/generic-sql/generic-sql-adapter.ts +21 -24
  320. package/src/adapters/generic-sql/generic-sql-uow-executor.test.ts +1 -0
  321. package/src/adapters/generic-sql/generic-sql-uow-executor.ts +81 -15
  322. package/src/adapters/generic-sql/migration/adapter-migration-parity.test.ts +4 -2
  323. package/src/adapters/generic-sql/migration/cold-kysely.ts +1 -0
  324. package/src/adapters/generic-sql/migration/dialect/mysql.test.ts +3 -2
  325. package/src/adapters/generic-sql/migration/dialect/mysql.ts +1 -0
  326. package/src/adapters/generic-sql/migration/dialect/postgres.test.ts +5 -4
  327. package/src/adapters/generic-sql/migration/dialect/postgres.ts +2 -1
  328. package/src/adapters/generic-sql/migration/dialect/sqlite.test.ts +795 -3
  329. package/src/adapters/generic-sql/migration/dialect/sqlite.ts +385 -57
  330. package/src/adapters/generic-sql/migration/executor.test.ts +52 -0
  331. package/src/adapters/generic-sql/migration/executor.ts +47 -4
  332. package/src/adapters/generic-sql/migration/prepared-migrations.test.ts +117 -14
  333. package/src/adapters/generic-sql/migration/prepared-migrations.ts +9 -8
  334. package/src/adapters/generic-sql/migration/sql-generator.ts +5 -3
  335. package/src/adapters/generic-sql/query/create-sql-query-compiler.ts +3 -3
  336. package/src/adapters/generic-sql/query/cursor-utils.test.ts +3 -2
  337. package/src/adapters/generic-sql/query/cursor-utils.ts +1 -1
  338. package/src/adapters/generic-sql/query/db-now-sql.ts +49 -0
  339. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.test.ts +144 -8
  340. package/src/adapters/generic-sql/query/generic-sql-uow-operation-compiler.ts +16 -17
  341. package/src/adapters/generic-sql/query/select-builder.test.ts +1 -0
  342. package/src/adapters/generic-sql/query/select-builder.ts +2 -2
  343. package/src/adapters/generic-sql/query/sql-query-compiler.test.ts +24 -5
  344. package/src/adapters/generic-sql/query/sql-query-compiler.ts +83 -13
  345. package/src/adapters/generic-sql/query/where-builder.test.ts +7 -5
  346. package/src/adapters/generic-sql/query/where-builder.ts +48 -29
  347. package/src/adapters/generic-sql/sql-adapter-pglite-migrations.test.ts +6 -15
  348. package/src/adapters/generic-sql/sql-adapter-pglite-pagination.test.ts +52 -7
  349. package/src/adapters/generic-sql/sql-adapter-pglite-queries.test.ts +9 -6
  350. package/src/adapters/generic-sql/sql-adapter-sqlite3-driver.test.ts +273 -5
  351. package/src/adapters/generic-sql/sql-adapter-sqlite3-uow.test.ts +123 -6
  352. package/src/adapters/generic-sql/sql-adapter-sqlocal.test.ts +4 -2
  353. package/src/adapters/generic-sql/uow-decoder.test.ts +4 -3
  354. package/src/adapters/generic-sql/uow-decoder.ts +3 -3
  355. package/src/adapters/generic-sql/uow-encoder.test.ts +4 -2
  356. package/src/adapters/generic-sql/uow-encoder.ts +14 -18
  357. package/src/adapters/in-memory/condition-evaluator.test.ts +2 -1
  358. package/src/adapters/in-memory/condition-evaluator.ts +9 -4
  359. package/src/adapters/in-memory/in-memory-adapter.ts +155 -44
  360. package/src/adapters/in-memory/in-memory-uow.mutations.test.ts +50 -2
  361. package/src/adapters/in-memory/in-memory-uow.retrieval.test.ts +158 -3
  362. package/src/adapters/in-memory/in-memory-uow.ts +402 -26
  363. package/src/adapters/in-memory/options.test.ts +1 -0
  364. package/src/adapters/in-memory/options.ts +5 -1
  365. package/src/adapters/in-memory/outbox.test.ts +361 -0
  366. package/src/adapters/in-memory/reference-resolution.test.ts +3 -2
  367. package/src/adapters/in-memory/reference-resolution.ts +2 -2
  368. package/src/adapters/in-memory/sorted-array-index.test.ts +1 -0
  369. package/src/adapters/in-memory/store.test.ts +1 -0
  370. package/src/adapters/in-memory/store.ts +3 -3
  371. package/src/adapters/in-memory/value-normalization.test.ts +1 -0
  372. package/src/adapters/prisma/prisma-adapter-sqlite3.test.ts +51 -7
  373. package/src/adapters/shared/from-unit-of-work-compiler.ts +156 -46
  374. package/src/adapters/shared/uow-operation-compiler.ts +3 -3
  375. package/src/browser/mod.ts +64 -0
  376. package/src/client.ts +19 -0
  377. package/src/db-fragment-definition-builder.test.ts +821 -47
  378. package/src/db-fragment-definition-builder.ts +857 -110
  379. package/src/db-fragment-instantiator.test.ts +114 -90
  380. package/src/db-fragment-integration.test.ts +9 -6
  381. package/src/dispatchers/cloudflare-do/dispatcher.ts +204 -0
  382. package/src/dispatchers/cloudflare-do/index.test.ts +145 -12
  383. package/src/dispatchers/cloudflare-do/index.ts +49 -90
  384. package/src/dispatchers/node/dispatcher.ts +112 -0
  385. package/src/dispatchers/node/index.test.ts +43 -14
  386. package/src/dispatchers/node/index.ts +38 -75
  387. package/src/durable-hooks.test.ts +80 -0
  388. package/src/durable-hooks.ts +67 -0
  389. package/src/fragments/internal-fragment.routes.test.ts +570 -0
  390. package/src/fragments/internal-fragment.routes.ts +297 -5
  391. package/src/fragments/internal-fragment.schema.ts +45 -1
  392. package/src/fragments/internal-fragment.test.ts +223 -251
  393. package/src/fragments/internal-fragment.ts +278 -154
  394. package/src/hooks/durable-hooks-logger.ts +126 -0
  395. package/src/hooks/durable-hooks-processor.pglite.test.ts +87 -0
  396. package/src/hooks/durable-hooks-processor.test.ts +179 -14
  397. package/src/hooks/durable-hooks-processor.ts +120 -14
  398. package/src/hooks/durable-hooks-runtime.test.ts +65 -0
  399. package/src/hooks/durable-hooks-runtime.ts +81 -0
  400. package/src/hooks/hooks.test.ts +314 -53
  401. package/src/hooks/hooks.ts +360 -81
  402. package/src/id.test.ts +34 -0
  403. package/src/id.ts +1 -3
  404. package/src/internal/adapter-registry.test.ts +93 -0
  405. package/src/internal/adapter-registry.ts +239 -0
  406. package/src/internal/outbox-state.ts +43 -0
  407. package/src/migration-engine/auto-from-schema.test.ts +93 -0
  408. package/src/migration-engine/auto-from-schema.ts +360 -42
  409. package/src/migration-engine/create.test.ts +2 -1
  410. package/src/migration-engine/create.ts +1 -1
  411. package/src/migration-engine/generation-engine.test.ts +66 -9
  412. package/src/migration-engine/generation-engine.ts +31 -10
  413. package/src/migration-engine/shared.ts +13 -0
  414. package/src/mod.ts +45 -27
  415. package/src/naming/sql-naming.ts +1 -0
  416. package/src/outbox/outbox-builder.ts +2 -2
  417. package/src/outbox/outbox.test.ts +216 -45
  418. package/src/outbox/outbox.ts +3 -1
  419. package/src/query/column-defaults.ts +1 -1
  420. package/src/query/condition-builder.test.ts +15 -0
  421. package/src/query/condition-builder.ts +7 -0
  422. package/src/query/cursor-client.test.ts +70 -0
  423. package/src/query/cursor-client.ts +263 -0
  424. package/src/query/cursor.test.ts +3 -2
  425. package/src/query/cursor.ts +15 -3
  426. package/src/query/db-now.ts +69 -2
  427. package/src/query/orm/orm.ts +2 -2
  428. package/src/query/query-type.test.ts +2 -1
  429. package/src/query/serialize/create-sql-serializer.ts +3 -3
  430. package/src/query/serialize/dialect/mysql-serializer.ts +1 -1
  431. package/src/query/serialize/dialect/postgres-serializer.ts +1 -1
  432. package/src/query/serialize/dialect/sqlite-serializer.test.ts +39 -2
  433. package/src/query/serialize/dialect/sqlite-serializer.ts +18 -5
  434. package/src/query/simple-query-interface.ts +10 -4
  435. package/src/query/unit-of-work/execute-unit-of-work.test.ts +347 -9
  436. package/src/query/unit-of-work/execute-unit-of-work.ts +63 -20
  437. package/src/query/unit-of-work/retry-policy.test.ts +1 -0
  438. package/src/query/unit-of-work/tx-builder.test.ts +73 -1
  439. package/src/query/unit-of-work/unit-of-work-coordinator.test.ts +5 -4
  440. package/src/query/unit-of-work/unit-of-work-types.test.ts +41 -11
  441. package/src/query/unit-of-work/unit-of-work.test.ts +28 -2
  442. package/src/query/unit-of-work/unit-of-work.ts +105 -19
  443. package/src/query/value-decoding.test.ts +50 -2
  444. package/src/query/value-decoding.ts +17 -4
  445. package/src/query/value-encoding.test.ts +1 -0
  446. package/src/query/value-encoding.ts +1 -1
  447. package/src/schema/create.test.ts +164 -5
  448. package/src/schema/create.ts +222 -24
  449. package/src/schema/generate-id.test.ts +1 -0
  450. package/src/schema/serialize.test.ts +4 -3
  451. package/src/schema/type-conversion/create-sql-type-mapper.ts +1 -1
  452. package/src/schema/type-conversion/dialect/sqlite.ts +2 -2
  453. package/src/schema/type-conversion/type-mapping.test.ts +2 -1
  454. package/src/schema/validator.test.ts +4 -2
  455. package/src/schema/validator.ts +1 -0
  456. package/src/schema-output/drizzle.test.ts +72 -19
  457. package/src/schema-output/drizzle.ts +24 -18
  458. package/src/schema-output/prisma.test.ts +172 -14
  459. package/src/schema-output/prisma.ts +34 -14
  460. package/src/sql-driver/better-sqlite3.test.ts +5 -3
  461. package/src/sql-driver/dialects/durable-object-dialect.ts +3 -8
  462. package/src/sql-driver/query-executor/default-query-executor.ts +1 -1
  463. package/src/sql-driver/query-executor/query-executor-base.ts +1 -1
  464. package/src/sql-driver/query-executor/query-executor.ts +1 -1
  465. package/src/sql-driver/sql-driver-adapter.ts +2 -2
  466. package/src/sql-driver/sql.ts +2 -1
  467. package/src/sql-driver/sqlocal.test.ts +4 -2
  468. package/src/sync/commands.test.ts +39 -0
  469. package/src/sync/commands.ts +51 -0
  470. package/src/sync/conflict-checker.test.ts +450 -0
  471. package/src/sync/conflict-checker.ts +248 -0
  472. package/src/sync/index.ts +14 -0
  473. package/src/sync/plan.ts +9 -0
  474. package/src/sync/read-tracking.test.ts +177 -0
  475. package/src/sync/read-tracking.ts +287 -0
  476. package/src/sync/submit.test.ts +205 -0
  477. package/src/sync/submit.ts +328 -0
  478. package/src/sync/types.ts +80 -0
  479. package/src/util/default-database-adapter.ts +15 -2
  480. package/src/with-database.ts +20 -50
  481. package/tsconfig.json +1 -1
  482. package/tsdown.config.ts +38 -26
  483. package/vitest.config.ts +1 -0
  484. package/dist/hooks/durable-hooks-processor.d.ts.map +0 -1
  485. package/dist/node_modules/.pnpm/rou3@0.7.12/node_modules/rou3/dist/index.js +0 -168
  486. package/dist/node_modules/.pnpm/rou3@0.7.12/node_modules/rou3/dist/index.js.map +0 -1
  487. package/dist/packages/fragno/dist/api/bind-services.js +0 -20
  488. package/dist/packages/fragno/dist/api/bind-services.js.map +0 -1
  489. package/dist/packages/fragno/dist/api/error.js +0 -48
  490. package/dist/packages/fragno/dist/api/error.js.map +0 -1
  491. package/dist/packages/fragno/dist/api/fragment-definition-builder.js +0 -321
  492. package/dist/packages/fragno/dist/api/fragment-definition-builder.js.map +0 -1
  493. package/dist/packages/fragno/dist/api/fragment-instantiator.js +0 -669
  494. package/dist/packages/fragno/dist/api/fragment-instantiator.js.map +0 -1
  495. package/dist/packages/fragno/dist/api/fragno-response.js +0 -73
  496. package/dist/packages/fragno/dist/api/fragno-response.js.map +0 -1
  497. package/dist/packages/fragno/dist/api/internal/response-stream.js +0 -81
  498. package/dist/packages/fragno/dist/api/internal/response-stream.js.map +0 -1
  499. package/dist/packages/fragno/dist/api/internal/route.js +0 -10
  500. package/dist/packages/fragno/dist/api/internal/route.js.map +0 -1
  501. package/dist/packages/fragno/dist/api/mutable-request-state.js +0 -97
  502. package/dist/packages/fragno/dist/api/mutable-request-state.js.map +0 -1
  503. package/dist/packages/fragno/dist/api/request-context-storage.js +0 -43
  504. package/dist/packages/fragno/dist/api/request-context-storage.js.map +0 -1
  505. package/dist/packages/fragno/dist/api/request-input-context.js +0 -185
  506. package/dist/packages/fragno/dist/api/request-input-context.js.map +0 -1
  507. package/dist/packages/fragno/dist/api/request-middleware.js +0 -83
  508. package/dist/packages/fragno/dist/api/request-middleware.js.map +0 -1
  509. package/dist/packages/fragno/dist/api/request-output-context.js +0 -119
  510. package/dist/packages/fragno/dist/api/request-output-context.js.map +0 -1
  511. package/dist/packages/fragno/dist/api/route.js +0 -30
  512. package/dist/packages/fragno/dist/api/route.js.map +0 -1
  513. package/dist/packages/fragno/dist/internal/symbols.js +0 -10
  514. package/dist/packages/fragno/dist/internal/symbols.js.map +0 -1
  515. package/dist/packages/fragno/dist/internal/trace-context.js +0 -12
  516. package/dist/packages/fragno/dist/internal/trace-context.js.map +0 -1
@@ -0,0 +1,108 @@
1
+ import { Prettify } from "../util/types.js";
2
+ import { AnySchema, AnyTable, FragnoId, IdColumn, Relation } from "../schema/create.js";
3
+ import { Condition, ConditionBuilder } from "./condition-builder.js";
4
+ import { CursorResult } from "./cursor.js";
5
+ import { DeleteBuilder, FindBuilder, IUnitOfWork, TypedUnitOfWork, UpdateBuilder, UpdateManyBuilder } from "./unit-of-work/unit-of-work.js";
6
+
7
+ //#region src/query/simple-query-interface.d.ts
8
+ type AnySelectClause = SelectClause<AnyTable>;
9
+ type SelectClause<T extends AnyTable> = true | readonly (keyof T["columns"])[];
10
+ type RawColumnValues<T extends AnyTable> = { [K in keyof T["columns"] as string extends K ? never : K]: T["columns"][K]["$out"] };
11
+ type TableToColumnValues<T extends AnyTable> = Prettify<RawColumnValues<T>>;
12
+ type PickNullable<T> = { [P in keyof T as null extends T[P] ? P : never]: T[P] };
13
+ type PickNotNullable<T> = { [P in keyof T as null extends T[P] ? never : P]: T[P] };
14
+ type RawInsertValues<T extends AnyTable> = { [K in keyof T["columns"] as string extends K ? never : K]: T["columns"][K]["$in"] };
15
+ type TableToInsertValues<T extends AnyTable> = Prettify<Partial<PickNullable<RawInsertValues<T>>> & PickNotNullable<RawInsertValues<T>>>;
16
+ type TableToUpdateValues<T extends AnyTable> = { [K in keyof T["columns"] as string extends K ? never : K]?: T["columns"][K] extends IdColumn ? never : T["columns"][K]["$in"] };
17
+ type MainSelectResult<S extends SelectClause<T>, T extends AnyTable> = S extends true ? TableToColumnValues<T> : S extends readonly (keyof T["columns"])[] ? Prettify<{ [K in S[number] as string extends K ? never : K]: K extends keyof T["columns"] ? T["columns"][K]["$out"] : never }> : never;
18
+ type SelectResult<T extends AnyTable, JoinOut, Select extends SelectClause<T>> = Prettify<MainSelectResult<Select, T> & JoinOut>;
19
+ interface MapRelationType<Type$1> {
20
+ one: Type$1 | null;
21
+ many: Type$1[];
22
+ }
23
+ type JoinBuilder<T extends AnyTable, Out = {}> = { [K in keyof T["relations"]]: T["relations"][K] extends Relation<infer Type, infer Target> ? <Select extends SelectClause<Target> = true, JoinOut = {}>(options?: FindManyOptions<Target, Select, JoinOut, false>) => JoinBuilder<T, Prettify<Out & { [$K in K]: MapRelationType<SelectResult<Target, JoinOut, Select>>[Type] }>> : never };
24
+ type OrderBy<Column = string> = [columnName: Column, "asc" | "desc"];
25
+ /**
26
+ * Extract Select type parameter from a FindBuilder type (handles Omit wrapper)
27
+ * @internal
28
+ */
29
+ type ExtractSelect<T> = T extends FindBuilder<any, infer TSelect, any> ? TSelect : T extends Omit<FindBuilder<any, infer TSelect, any>, any> ? TSelect : true;
30
+ /**
31
+ * Extract JoinOut type parameter from a FindBuilder type (handles Omit wrapper)
32
+ * @internal
33
+ */
34
+ type ExtractJoinOut<T> = T extends FindBuilder<any, any, infer TJoinOut> ? TJoinOut : T extends Omit<FindBuilder<any, any, infer TJoinOut>, any> ? TJoinOut : {};
35
+ type FindManyOptions<T extends AnyTable = AnyTable, Select extends SelectClause<T> = SelectClause<T>, _JoinOut = {}, IsRoot extends boolean = true> = {
36
+ select?: Select;
37
+ where?: (eb: ConditionBuilder<T["columns"]>) => Condition | boolean;
38
+ limit?: number;
39
+ orderBy?: OrderBy<keyof T["columns"]> | OrderBy<keyof T["columns"]>[];
40
+ join?: (jb: JoinBuilder<T>) => void;
41
+ } & (IsRoot extends true ? {
42
+ offset?: number;
43
+ } : {});
44
+ interface SimpleQueryInterface<TSchema extends AnySchema, TUOWConfig = void> {
45
+ /**
46
+ * Fetch the current database timestamp.
47
+ * Optional for adapters that cannot provide DB time.
48
+ */
49
+ now?: () => Promise<Date>;
50
+ /**
51
+ * Find multiple records using a builder pattern
52
+ */
53
+ find: {
54
+ <TableName extends keyof TSchema["tables"] & string, const TBuilderResult>(table: TableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TableName]>, "build">) => TBuilderResult): Promise<SelectResult<TSchema["tables"][TableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TableName]>>>[]>;
55
+ <TableName extends keyof TSchema["tables"] & string>(table: TableName): Promise<SelectResult<TSchema["tables"][TableName], {}, true>[]>;
56
+ };
57
+ /**
58
+ * Find multiple records with cursor pagination metadata
59
+ */
60
+ findWithCursor: <TableName extends keyof TSchema["tables"] & string, const TBuilderResult>(table: TableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TableName]>, "build">) => TBuilderResult) => Promise<CursorResult<SelectResult<TSchema["tables"][TableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TableName]>>>>>;
61
+ /**
62
+ * Find the first record matching the criteria
63
+ * Implemented as a wrapper around find() with pageSize(1)
64
+ */
65
+ findFirst: {
66
+ <TableName extends keyof TSchema["tables"] & string, const TBuilderResult>(table: TableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TableName]>, "build">) => TBuilderResult): Promise<SelectResult<TSchema["tables"][TableName], ExtractJoinOut<TBuilderResult>, Extract<ExtractSelect<TBuilderResult>, SelectClause<TSchema["tables"][TableName]>>> | null>;
67
+ <TableName extends keyof TSchema["tables"] & string>(table: TableName): Promise<SelectResult<TSchema["tables"][TableName], {}, true> | null>;
68
+ };
69
+ /**
70
+ * Create a single record
71
+ * @returns The ID of the created record
72
+ */
73
+ create: <TableName extends keyof TSchema["tables"] & string>(table: TableName, values: TableToInsertValues<TSchema["tables"][TableName]>) => Promise<FragnoId>;
74
+ /**
75
+ * Create multiple records
76
+ * @returns Array of IDs of the created records
77
+ */
78
+ createMany: <TableName extends keyof TSchema["tables"] & string>(table: TableName, values: TableToInsertValues<TSchema["tables"][TableName]>[]) => Promise<FragnoId[]>;
79
+ /**
80
+ * Update a single record by ID
81
+ * Note: you cannot update the id of a row, some databases don't support that (including MongoDB).
82
+ */
83
+ update: <TableName extends keyof TSchema["tables"] & string>(table: TableName, id: FragnoId | string, builderFn: (builder: Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build">) => Omit<UpdateBuilder<TSchema["tables"][TableName]>, "build">) => Promise<void>;
84
+ /**
85
+ * Update multiple records matching a where clause
86
+ * Note: you cannot update the id of a row, some databases don't support that (including MongoDB).
87
+ */
88
+ updateMany: <TableName extends keyof TSchema["tables"] & string>(table: TableName, builderFn: (builder: UpdateManyBuilder<TSchema["tables"][TableName]>) => void) => Promise<void>;
89
+ /**
90
+ * Delete a single record by ID
91
+ */
92
+ delete: <TableName extends keyof TSchema["tables"] & string>(table: TableName, id: FragnoId | string, builderFn?: (builder: Omit<DeleteBuilder, "build">) => Omit<DeleteBuilder, "build">) => Promise<void>;
93
+ /**
94
+ * Delete multiple records matching a where clause
95
+ */
96
+ deleteMany: <TableName extends keyof TSchema["tables"] & string>(table: TableName, builderFn: (builder: Omit<FindBuilder<TSchema["tables"][TableName]>, "build" | "check">) => void) => Promise<void>;
97
+ /**
98
+ * Create a Unit of Work bound to this query engine
99
+ */
100
+ createUnitOfWork: (name?: string, config?: TUOWConfig) => TypedUnitOfWork<TSchema, [], unknown>;
101
+ /**
102
+ * Create a base Unit of Work for cross-schema operations.
103
+ */
104
+ createBaseUnitOfWork: (name?: string, config?: TUOWConfig) => IUnitOfWork;
105
+ }
106
+ //#endregion
107
+ export { AnySelectClause, ExtractJoinOut, ExtractSelect, FindManyOptions, OrderBy, SelectClause, SelectResult, SimpleQueryInterface, TableToInsertValues, TableToUpdateValues };
108
+ //# sourceMappingURL=simple-query-interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-query-interface.d.ts","names":[],"sources":["../../../src/query/simple-query-interface.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,423 @@
1
+ import { AnySchema } from "../../schema/create.js";
2
+ import { RetryPolicy } from "./retry-policy.js";
3
+ import { HooksMap } from "../../hooks/hooks.js";
4
+ import { IUnitOfWork, TypedUnitOfWork } from "./unit-of-work.js";
5
+
6
+ //#region src/query/unit-of-work/execute-unit-of-work.d.ts
7
+
8
+ /**
9
+ * Symbol to identify TxResult objects
10
+ */
11
+ declare const TX_RESULT_BRAND: unique symbol;
12
+ /**
13
+ * Check if a value is a TxResult
14
+ */
15
+
16
+ /**
17
+ * Extract the retrieve success result type from a TxResult.
18
+ * If the TxResult has retrieveSuccess, returns its return type.
19
+ * Otherwise returns the raw retrieve results type.
20
+ * Handles undefined (for optional service patterns like optionalService?.method()).
21
+ */
22
+ type ExtractTxRetrieveSuccessResult<T> = T extends undefined ? undefined : T extends TxResult<unknown, infer R> ? R : never;
23
+ /**
24
+ * Extract the final result type from a TxResult.
25
+ * Handles undefined (for optional service patterns like optionalService?.method()).
26
+ */
27
+ type ExtractTxFinalResult<T> = T extends undefined ? undefined : T extends TxResult<infer R, infer _> ? R : Awaited<T>;
28
+ /**
29
+ * Map over service calls array to extract retrieve success results from each service call.
30
+ * Preserves tuple structure while extracting the retrieve success result type from each element.
31
+ */
32
+ type ExtractServiceRetrieveResults<T extends readonly unknown[]> = { [K in keyof T]: ExtractTxRetrieveSuccessResult<T[K]> };
33
+ /**
34
+ * Map over service calls array to extract final results from each service call.
35
+ * Preserves tuple structure while extracting the final result type from each element.
36
+ */
37
+ type ExtractServiceFinalResults<T extends readonly unknown[]> = { [K in keyof T]: ExtractTxFinalResult<T[K]> };
38
+ /**
39
+ * Context passed to mutate callback for service methods
40
+ */
41
+ interface ServiceTxMutateContext<TSchema extends AnySchema, TRetrieveSuccessResult, TServiceRetrieveResults extends readonly unknown[], THooks extends HooksMap> {
42
+ /** Unit of work for scheduling mutations */
43
+ uow: TypedUnitOfWork<TSchema, [], unknown, THooks>;
44
+ /** Result from retrieveSuccess callback (or raw retrieve results if no retrieveSuccess) */
45
+ retrieveResult: TRetrieveSuccessResult;
46
+ /** Array of retrieve success results from service calls (intermediate results, not final) */
47
+ serviceIntermediateResult: TServiceRetrieveResults;
48
+ }
49
+ /**
50
+ * Context passed to success callback when mutate IS provided
51
+ */
52
+ interface TxSuccessContextWithMutate<TRetrieveSuccessResult, TMutateResult, TServiceFinalResults extends readonly unknown[], TServiceRetrieveResults extends readonly unknown[]> {
53
+ /** Result from retrieveSuccess callback (or raw retrieve results if no retrieveSuccess) */
54
+ retrieveResult: TRetrieveSuccessResult;
55
+ /** Result from mutate callback */
56
+ mutateResult: TMutateResult;
57
+ /** Array of final results from service calls */
58
+ serviceResult: TServiceFinalResults;
59
+ /** Array of retrieve success results from service calls (same as what mutate receives) */
60
+ serviceIntermediateResult: TServiceRetrieveResults;
61
+ }
62
+ /**
63
+ * Context passed to success callback when mutate is NOT provided
64
+ */
65
+ interface TxSuccessContextWithoutMutate<TRetrieveSuccessResult, TServiceFinalResults extends readonly unknown[], TServiceRetrieveResults extends readonly unknown[]> {
66
+ /** Result from retrieveSuccess callback (or raw retrieve results if no retrieveSuccess) */
67
+ retrieveResult: TRetrieveSuccessResult;
68
+ /** No mutate callback was provided */
69
+ mutateResult: undefined;
70
+ /** Array of final results from service calls */
71
+ serviceResult: TServiceFinalResults;
72
+ /** Array of retrieve success results from service calls (same as what mutate receives) */
73
+ serviceIntermediateResult: TServiceRetrieveResults;
74
+ }
75
+ /**
76
+ * Context passed to success callback.
77
+ * Union of TxSuccessContextWithMutate and TxSuccessContextWithoutMutate to handle
78
+ * both cases in a single callback signature.
79
+ */
80
+ type TxSuccessContext<TRetrieveSuccessResult, TMutateResult, TServiceFinalResults extends readonly unknown[], TServiceRetrieveResults extends readonly unknown[] = readonly unknown[]> = TxSuccessContextWithMutate<TRetrieveSuccessResult, TMutateResult, TServiceFinalResults, TServiceRetrieveResults> | TxSuccessContextWithoutMutate<TRetrieveSuccessResult, TServiceFinalResults, TServiceRetrieveResults>;
81
+ /**
82
+ * Callbacks for service-level TxResult.
83
+ *
84
+ * Return type priority:
85
+ * 1. If success exists: ReturnType<success>
86
+ * 2. Else if mutate exists: ReturnType<mutate>
87
+ * 3. Else if retrieveSuccess exists: ReturnType<retrieveSuccess>
88
+ * 4. Else if retrieve exists: TRetrieveResults
89
+ * 5. Else: serviceResult array type
90
+ */
91
+ interface ServiceTxCallbacks<TSchema extends AnySchema, TRetrieveResults extends unknown[], TRetrieveSuccessResult, TServiceCalls extends readonly (TxResult<any, any> | undefined)[], TMutateResult, TSuccessResult, THooks extends HooksMap> {
92
+ /**
93
+ * Service calls - other TxResults to execute first.
94
+ */
95
+ serviceCalls?: () => TServiceCalls;
96
+ /**
97
+ * Retrieval phase callback - schedules retrieval operations.
98
+ */
99
+ retrieve?: (uow: TypedUnitOfWork<TSchema, [], unknown, THooks>) => TypedUnitOfWork<TSchema, TRetrieveResults, unknown, THooks>;
100
+ /**
101
+ * Transform retrieve results before passing to mutate.
102
+ */
103
+ retrieveSuccess?: (retrieveResult: TRetrieveResults, serviceResult: ExtractServiceRetrieveResults<TServiceCalls>) => TRetrieveSuccessResult;
104
+ /**
105
+ * Mutation phase callback - schedules mutations based on retrieve results.
106
+ */
107
+ mutate?: (ctx: ServiceTxMutateContext<TSchema, TRetrieveSuccessResult, ExtractServiceRetrieveResults<TServiceCalls>, THooks>) => TMutateResult;
108
+ /**
109
+ * Success callback - final transformation after mutations complete.
110
+ */
111
+ success?: (ctx: TxSuccessContext<TRetrieveSuccessResult, TMutateResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>>) => TSuccessResult;
112
+ }
113
+ /**
114
+ * Internal structure storing TxResult callbacks and state.
115
+ */
116
+ interface TxResultInternal<TSchema extends AnySchema, TRetrieveResults extends unknown[], TRetrieveSuccessResult, TServiceCalls extends readonly (TxResult<unknown> | undefined)[], TMutateResult, TSuccessResult, THooks extends HooksMap> {
117
+ schema: TSchema | undefined;
118
+ callbacks: ServiceTxCallbacks<TSchema, TRetrieveResults, TRetrieveSuccessResult, TServiceCalls, TMutateResult, TSuccessResult, THooks>;
119
+ /** The typed UOW created during retrieve callback */
120
+ typedUow: TypedUnitOfWork<TSchema, TRetrieveResults, unknown, THooks> | undefined;
121
+ /** The restricted UOW for signaling (used when typedUow is undefined) */
122
+ restrictedUow: IUnitOfWork;
123
+ /** Promise that resolves when retrieve phase is complete */
124
+ retrievePhase: Promise<TRetrieveResults>;
125
+ /** Resolve function for retrievePhase */
126
+ resolveRetrievePhase: (results: TRetrieveResults) => void;
127
+ /** Reject function for retrievePhase */
128
+ rejectRetrievePhase: (error: unknown) => void;
129
+ /** Computed retrieve success result (set after retrieveSuccess runs) */
130
+ retrieveSuccessResult: TRetrieveSuccessResult | undefined;
131
+ /** Computed mutate result (set after mutate runs) */
132
+ mutateResult: TMutateResult | undefined;
133
+ /** Computed final result (set after success runs or defaults) */
134
+ finalResult: TSuccessResult | undefined;
135
+ /** Service calls resolved */
136
+ serviceCalls: TServiceCalls | undefined;
137
+ }
138
+ /**
139
+ * TxResult represents a transaction definition (not yet executed).
140
+ * It describes the work to be done: retrieve operations, transformations, and mutations.
141
+ *
142
+ * Service methods return TxResult objects, and the handler's executeTx function
143
+ * orchestrates their execution with retry support.
144
+ *
145
+ * @template TResult - The final result type (determined by return type priority)
146
+ * @template TRetrieveSuccessResult - The retrieve success result type (what serviceCalls receive).
147
+ * Defaults to TResult, meaning serviceCalls receive the same type as the final result.
148
+ */
149
+ interface TxResult<TResult, TRetrieveSuccessResult = TResult> {
150
+ /** Brand to identify TxResult objects */
151
+ readonly [TX_RESULT_BRAND]: true;
152
+ /** Internal structure - do not access directly */
153
+ readonly _internal: TxResultInternal<AnySchema, unknown[], TRetrieveSuccessResult, readonly TxResult<any, any>[], unknown, TResult, HooksMap>;
154
+ }
155
+ /**
156
+ * Options for executing transactions
157
+ */
158
+ interface ExecuteTxOptions {
159
+ /**
160
+ * Factory function that creates or resets a UOW instance for each attempt
161
+ */
162
+ createUnitOfWork: () => IUnitOfWork;
163
+ /**
164
+ * Retry policy for handling optimistic concurrency conflicts
165
+ */
166
+ retryPolicy?: RetryPolicy;
167
+ /**
168
+ * Abort signal to cancel execution
169
+ */
170
+ signal?: AbortSignal;
171
+ /**
172
+ * Callback invoked after retrieval phase completes.
173
+ * Use this to inspect retrieval operations and results (e.g., read tracking).
174
+ */
175
+ onAfterRetrieve?: (uow: IUnitOfWork, results: unknown[]) => void | Promise<void>;
176
+ /**
177
+ * Callback invoked before mutations are executed.
178
+ * Use this to add additional mutation operations (e.g., hook event records).
179
+ */
180
+ onBeforeMutate?: (uow: IUnitOfWork) => void;
181
+ /**
182
+ * Callback invoked after successful mutation phase.
183
+ * Use this for post-mutation processing like hook execution.
184
+ */
185
+ onAfterMutate?: (uow: IUnitOfWork) => Promise<void>;
186
+ /**
187
+ * Plan mode suppresses hook execution while still running serviceTx logic.
188
+ */
189
+ planMode?: boolean;
190
+ }
191
+ /**
192
+ * Type utility that unwraps promises 1 level deep in objects, arrays, or direct promises
193
+ * Handles tuples, arrays, objects, and direct promises
194
+ */
195
+ type AwaitedPromisesInObject<T> = T extends Promise<infer U> ? Awaited<U> : T extends readonly [unknown, ...unknown[]] ? { [K in keyof T]: AwaitedPromisesInObject<T[K]> } : T extends [unknown, ...unknown[]] ? { [K in keyof T]: AwaitedPromisesInObject<T[K]> } : T extends (infer U)[] ? Awaited<U>[] : T extends readonly (infer U)[] ? readonly Awaited<U>[] : T extends Record<string, unknown> ? { [K in keyof T]: T[K] extends Promise<infer U> ? Awaited<U> : T[K] } : T;
196
+ /**
197
+ * Context passed to service-level mutate callback in builder pattern.
198
+ */
199
+ interface ServiceBuilderMutateContext<TSchema extends AnySchema, TRetrieveSuccessResult, TServiceResult extends readonly unknown[], THooks extends HooksMap> {
200
+ /** Unit of work for scheduling mutations */
201
+ uow: TypedUnitOfWork<TSchema, [], unknown, THooks>;
202
+ /** Result from transformRetrieve callback (or raw retrieve results if no transformRetrieve) */
203
+ retrieveResult: TRetrieveSuccessResult;
204
+ /** Array of retrieve success results from service calls (intermediate results, not final: retrieve results if service has retrieve, mutate result if service only mutates) */
205
+ serviceIntermediateResult: TServiceResult;
206
+ }
207
+ /**
208
+ * Context passed to handler-level mutate callback in builder pattern.
209
+ */
210
+ interface HandlerBuilderMutateContext<TRetrieveSuccessResult, TServiceResult extends readonly unknown[], THooks extends HooksMap> {
211
+ /** Get a typed Unit of Work for the given schema */
212
+ forSchema: <S extends AnySchema, H extends HooksMap = THooks>(schema: S, hooks?: H) => TypedUnitOfWork<S, [], unknown, H>;
213
+ /** Unique key for this transaction (for idempotency/deduplication) */
214
+ idempotencyKey: string;
215
+ /** Current attempt number (0-based) */
216
+ currentAttempt: number;
217
+ /** Result from transformRetrieve callback (or raw retrieve results if no transformRetrieve) */
218
+ retrieveResult: TRetrieveSuccessResult;
219
+ /** Array of retrieve success results from service calls (intermediate results, not final: retrieve results if service has retrieve, mutate result if service only mutates) */
220
+ serviceIntermediateResult: TServiceResult;
221
+ }
222
+ /**
223
+ * Context passed to transform callback when mutate IS provided.
224
+ */
225
+ interface BuilderTransformContextWithMutate<TRetrieveSuccessResult, TMutateResult, TServiceFinalResult extends readonly unknown[], TServiceIntermediateResult extends readonly unknown[]> {
226
+ /** Result from transformRetrieve callback (or raw retrieve results if no transformRetrieve) */
227
+ retrieveResult: TRetrieveSuccessResult;
228
+ /** Result from mutate callback */
229
+ mutateResult: TMutateResult;
230
+ /** Array of final results from service calls (after success/transform callbacks) */
231
+ serviceResult: TServiceFinalResult;
232
+ /** Array of retrieve success results from service calls (same as what mutate receives: retrieve results if service has retrieve, mutate result if service only mutates) */
233
+ serviceIntermediateResult: TServiceIntermediateResult;
234
+ }
235
+ /**
236
+ * Context passed to transform callback when mutate is NOT provided.
237
+ */
238
+ interface BuilderTransformContextWithoutMutate<TRetrieveSuccessResult, TServiceFinalResult extends readonly unknown[], TServiceIntermediateResult extends readonly unknown[]> {
239
+ /** Result from transformRetrieve callback (or raw retrieve results if no transformRetrieve) */
240
+ retrieveResult: TRetrieveSuccessResult;
241
+ /** No mutate callback was provided */
242
+ mutateResult: undefined;
243
+ /** Array of final results from service calls (after success/transform callbacks) */
244
+ serviceResult: TServiceFinalResult;
245
+ /** Array of retrieve success results from service calls (same as what mutate receives: retrieve results if service has retrieve, mutate result if service only mutates) */
246
+ serviceIntermediateResult: TServiceIntermediateResult;
247
+ }
248
+ /**
249
+ * Infer the final result type from builder state:
250
+ * 1. transform → TTransformResult
251
+ * 2. mutate → AwaitedPromisesInObject<TMutateResult>
252
+ * 3. transformRetrieve → TRetrieveSuccessResult
253
+ * 4. retrieve → TRetrieveResults
254
+ * 5. withServiceCalls → ExtractServiceFinalResults<TServiceCalls>
255
+ */
256
+ type InferBuilderResultType<TRetrieveResults extends unknown[], TRetrieveSuccessResult, TServiceCalls extends readonly (TxResult<any, any> | undefined)[], TMutateResult, TTransformResult, HasTransform extends boolean, HasMutate extends boolean, HasTransformRetrieve extends boolean, HasRetrieve extends boolean> = HasTransform extends true ? TTransformResult : HasMutate extends true ? AwaitedPromisesInObject<TMutateResult> : HasTransformRetrieve extends true ? TRetrieveSuccessResult : HasRetrieve extends true ? TRetrieveResults : ExtractServiceFinalResults<TServiceCalls>;
257
+ /**
258
+ * Infer the retrieve success result type for the builder:
259
+ * - If transformRetrieve exists: TRetrieveSuccessResult
260
+ * - Else if retrieve exists: TRetrieveResults (raw retrieve results)
261
+ * - Else if mutate exists: AwaitedPromisesInObject<TMutateResult>
262
+ * (mutate result becomes retrieve result for dependents)
263
+ * - Else: TRetrieveResults (raw retrieve results, typically [])
264
+ */
265
+ type InferBuilderRetrieveSuccessResult<TRetrieveResults extends unknown[], TRetrieveSuccessResult, TMutateResult, HasTransformRetrieve extends boolean, HasRetrieve extends boolean, HasMutate extends boolean> = HasTransformRetrieve extends true ? TRetrieveSuccessResult : HasRetrieve extends true ? TRetrieveResults : HasMutate extends true ? AwaitedPromisesInObject<TMutateResult> : TRetrieveResults;
266
+ /**
267
+ * Internal state for ServiceTxBuilder
268
+ */
269
+ interface ServiceTxBuilderState<TSchema extends AnySchema, TServiceCalls extends readonly (TxResult<any, any> | undefined)[], TRetrieveResults extends unknown[], TRetrieveSuccessResult, TMutateResult, TTransformResult, THooks extends HooksMap> {
270
+ schema: TSchema;
271
+ baseUow: IUnitOfWork;
272
+ hooks?: THooks;
273
+ withServiceCallsFn?: () => TServiceCalls;
274
+ retrieveFn?: (uow: TypedUnitOfWork<TSchema, [], unknown, THooks>) => TypedUnitOfWork<TSchema, TRetrieveResults, unknown, THooks>;
275
+ transformRetrieveFn?: (retrieveResult: TRetrieveResults, serviceRetrieveResult: ExtractServiceRetrieveResults<TServiceCalls>) => TRetrieveSuccessResult;
276
+ mutateFn?: (ctx: ServiceBuilderMutateContext<TSchema, TRetrieveSuccessResult, ExtractServiceRetrieveResults<TServiceCalls>, THooks>) => TMutateResult;
277
+ transformFn?: (ctx: BuilderTransformContextWithMutate<TRetrieveSuccessResult, TMutateResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>> | BuilderTransformContextWithoutMutate<TRetrieveSuccessResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>>) => TTransformResult;
278
+ }
279
+ /**
280
+ * Builder for service-level transactions.
281
+ * Uses a fluent API to build up transaction callbacks with proper type inference.
282
+ *
283
+ * @example
284
+ * ```ts
285
+ * return serviceTx(schema)
286
+ * .withServiceCalls(() => [otherService.getData()])
287
+ * .retrieve((uow) => uow.find("users", ...))
288
+ * .transformRetrieve(([users], serviceResult) => users[0])
289
+ * .mutate(({ uow, retrieveResult, serviceIntermediateResult }) =>
290
+ * uow.create("records", { ... })
291
+ * )
292
+ * .transform(({ mutateResult, serviceResult, serviceIntermediateResult }) => ({ id: mutateResult }))
293
+ * .build();
294
+ * ```
295
+ */
296
+ declare class ServiceTxBuilder<TSchema extends AnySchema, TServiceCalls extends readonly (TxResult<any, any> | undefined)[], TRetrieveResults extends unknown[], TRetrieveSuccessResult, TMutateResult, TTransformResult, HasRetrieve extends boolean, HasTransformRetrieve extends boolean, HasMutate extends boolean, HasTransform extends boolean, THooks extends HooksMap> {
297
+ #private;
298
+ constructor(state: ServiceTxBuilderState<TSchema, TServiceCalls, TRetrieveResults, TRetrieveSuccessResult, TMutateResult, TTransformResult, THooks>);
299
+ /**
300
+ * Add dependencies to execute before this transaction.
301
+ */
302
+ withServiceCalls<TNewDeps extends readonly (TxResult<any, any> | undefined)[]>(fn: () => TNewDeps): ServiceTxBuilder<TSchema, TNewDeps, TRetrieveResults, TRetrieveSuccessResult, TMutateResult, TTransformResult, HasRetrieve, HasTransformRetrieve, HasMutate, HasTransform, THooks>;
303
+ /**
304
+ * Add retrieval operations to the transaction.
305
+ */
306
+ retrieve<TNewRetrieveResults extends unknown[]>(fn: (uow: TypedUnitOfWork<TSchema, [], unknown, THooks>) => TypedUnitOfWork<TSchema, TNewRetrieveResults, unknown, THooks>): ServiceTxBuilder<TSchema, TServiceCalls, TNewRetrieveResults, TNewRetrieveResults,
307
+ // Default TRetrieveSuccessResult to TNewRetrieveResults
308
+ TMutateResult, TTransformResult, true,
309
+ // HasRetrieve = true
310
+ false,
311
+ // Reset HasTransformRetrieve since retrieve results changed
312
+ HasMutate, HasTransform, THooks>;
313
+ /**
314
+ * Transform retrieve results before passing to mutate.
315
+ */
316
+ transformRetrieve<TNewRetrieveSuccessResult>(fn: (retrieveResult: TRetrieveResults, serviceResult: ExtractServiceRetrieveResults<TServiceCalls>) => TNewRetrieveSuccessResult): ServiceTxBuilder<TSchema, TServiceCalls, TRetrieveResults, TNewRetrieveSuccessResult, TMutateResult, TTransformResult, HasRetrieve, true,
317
+ // HasTransformRetrieve = true
318
+ HasMutate, HasTransform, THooks>;
319
+ /**
320
+ * Add mutation operations based on retrieve results.
321
+ */
322
+ mutate<TNewMutateResult>(fn: (ctx: ServiceBuilderMutateContext<TSchema, HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, ExtractServiceRetrieveResults<TServiceCalls>, THooks>) => TNewMutateResult): ServiceTxBuilder<TSchema, TServiceCalls, TRetrieveResults, HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, TNewMutateResult, TTransformResult, HasRetrieve, HasTransformRetrieve, true,
323
+ // HasMutate = true
324
+ HasTransform, THooks>;
325
+ /**
326
+ * Add final transformation after mutations complete.
327
+ */
328
+ transform<TNewTransformResult>(fn: (ctx: HasMutate extends true ? BuilderTransformContextWithMutate<HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, TMutateResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>> : BuilderTransformContextWithoutMutate<HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>>) => TNewTransformResult): ServiceTxBuilder<TSchema, TServiceCalls, TRetrieveResults, HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, TMutateResult, TNewTransformResult, HasRetrieve, HasTransformRetrieve, HasMutate, true,
329
+ // HasTransform = true
330
+ THooks>;
331
+ /**
332
+ * Build and return the TxResult.
333
+ */
334
+ build(): TxResult<InferBuilderResultType<TRetrieveResults, TRetrieveSuccessResult, TServiceCalls, TMutateResult, TTransformResult, HasTransform, HasMutate, HasTransformRetrieve, HasRetrieve>, InferBuilderRetrieveSuccessResult<TRetrieveResults, TRetrieveSuccessResult, TMutateResult, HasTransformRetrieve, HasRetrieve, HasMutate>>;
335
+ }
336
+ /**
337
+ * Create a new ServiceTxBuilder for the given schema.
338
+ */
339
+ declare function createServiceTxBuilder<TSchema extends AnySchema, THooks extends HooksMap = {}>(schema: TSchema, baseUow: IUnitOfWork, hooks?: THooks): ServiceTxBuilder<TSchema, readonly [], [], [], unknown, unknown, false, false, false, false, THooks>;
340
+ /**
341
+ * Internal state for HandlerTxBuilder
342
+ */
343
+ interface HandlerTxBuilderState<TServiceCalls extends readonly (TxResult<any, any> | undefined)[], TRetrieveResults extends unknown[], TRetrieveSuccessResult, TMutateResult, TTransformResult, THooks extends HooksMap> {
344
+ options: ExecuteTxOptions;
345
+ hooks?: THooks;
346
+ executeWrapper?: <T>(run: () => Promise<T>) => Promise<T>;
347
+ withServiceCallsFn?: () => TServiceCalls;
348
+ retrieveFn?: (context: {
349
+ forSchema: <S extends AnySchema, H extends HooksMap = THooks>(schema: S, hooks?: H) => TypedUnitOfWork<S, [], unknown, H>;
350
+ idempotencyKey: string;
351
+ currentAttempt: number;
352
+ }) => TypedUnitOfWork<AnySchema, TRetrieveResults, unknown, HooksMap> | void;
353
+ transformRetrieveFn?: (retrieveResult: TRetrieveResults, serviceResult: ExtractServiceRetrieveResults<TServiceCalls>) => TRetrieveSuccessResult;
354
+ mutateFn?: (ctx: HandlerBuilderMutateContext<TRetrieveSuccessResult, ExtractServiceRetrieveResults<TServiceCalls>, THooks>) => TMutateResult;
355
+ transformFn?: (ctx: BuilderTransformContextWithMutate<TRetrieveSuccessResult, TMutateResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>> | BuilderTransformContextWithoutMutate<TRetrieveSuccessResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>>) => TTransformResult;
356
+ }
357
+ /**
358
+ * Builder for handler-level transactions.
359
+ * Uses a fluent API to build up transaction callbacks with proper type inference.
360
+ *
361
+ * @example
362
+ * ```ts
363
+ * const result = await handlerTx()
364
+ * .withServiceCalls(() => [userService.getUser(id)])
365
+ * .mutate(({ forSchema, idempotencyKey, currentAttempt, serviceIntermediateResult }) => {
366
+ * return forSchema(ordersSchema).create("orders", { ... });
367
+ * })
368
+ * .transform(({ mutateResult, serviceResult }) => ({ ... }))
369
+ * .execute();
370
+ * ```
371
+ */
372
+ declare class HandlerTxBuilder<TServiceCalls extends readonly (TxResult<any, any> | undefined)[], TRetrieveResults extends unknown[], TRetrieveSuccessResult, TMutateResult, TTransformResult, HasRetrieve extends boolean, HasTransformRetrieve extends boolean, HasMutate extends boolean, HasTransform extends boolean, THooks extends HooksMap> {
373
+ #private;
374
+ constructor(state: HandlerTxBuilderState<TServiceCalls, TRetrieveResults, TRetrieveSuccessResult, TMutateResult, TTransformResult, THooks>);
375
+ /**
376
+ * Add dependencies to execute before this transaction.
377
+ */
378
+ withServiceCalls<TNewDeps extends readonly (TxResult<any, any> | undefined)[]>(fn: () => TNewDeps): HandlerTxBuilder<TNewDeps, TRetrieveResults, TRetrieveSuccessResult, TMutateResult, TTransformResult, HasRetrieve, HasTransformRetrieve, HasMutate, HasTransform, THooks>;
379
+ /**
380
+ * Add retrieval operations to the transaction.
381
+ * Return a TypedUnitOfWork from forSchema().find() to get typed results.
382
+ */
383
+ retrieve<TNewRetrieveResults extends unknown[]>(fn: (context: {
384
+ forSchema: <S extends AnySchema, H extends HooksMap = THooks>(schema: S, hooks?: H) => TypedUnitOfWork<S, [], unknown, H>;
385
+ idempotencyKey: string;
386
+ currentAttempt: number;
387
+ }) => TypedUnitOfWork<AnySchema, TNewRetrieveResults, unknown, HooksMap> | void): HandlerTxBuilder<TServiceCalls, TNewRetrieveResults, TNewRetrieveResults,
388
+ // Default TRetrieveSuccessResult to TNewRetrieveResults
389
+ TMutateResult, TTransformResult, true,
390
+ // HasRetrieve = true
391
+ false,
392
+ // Reset HasTransformRetrieve since retrieve results changed
393
+ HasMutate, HasTransform, THooks>;
394
+ /**
395
+ * Transform retrieve results before passing to mutate.
396
+ */
397
+ transformRetrieve<TNewRetrieveSuccessResult>(fn: (retrieveResult: TRetrieveResults, serviceResult: ExtractServiceRetrieveResults<TServiceCalls>) => TNewRetrieveSuccessResult): HandlerTxBuilder<TServiceCalls, TRetrieveResults, TNewRetrieveSuccessResult, TMutateResult, TTransformResult, HasRetrieve, true,
398
+ // HasTransformRetrieve = true
399
+ HasMutate, HasTransform, THooks>;
400
+ /**
401
+ * Add mutation operations based on retrieve results.
402
+ */
403
+ mutate<TNewMutateResult>(fn: (ctx: HandlerBuilderMutateContext<HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, ExtractServiceRetrieveResults<TServiceCalls>, THooks>) => TNewMutateResult): HandlerTxBuilder<TServiceCalls, TRetrieveResults, HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, TNewMutateResult, TTransformResult, HasRetrieve, HasTransformRetrieve, true,
404
+ // HasMutate = true
405
+ HasTransform, THooks>;
406
+ /**
407
+ * Add final transformation after mutations complete.
408
+ */
409
+ transform<TNewTransformResult>(fn: (ctx: HasMutate extends true ? BuilderTransformContextWithMutate<HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, TMutateResult, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>> : BuilderTransformContextWithoutMutate<HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, ExtractServiceFinalResults<TServiceCalls>, ExtractServiceRetrieveResults<TServiceCalls>>) => TNewTransformResult): HandlerTxBuilder<TServiceCalls, TRetrieveResults, HasTransformRetrieve extends true ? TRetrieveSuccessResult : TRetrieveResults, TMutateResult, TNewTransformResult, HasRetrieve, HasTransformRetrieve, HasMutate, true,
410
+ // HasTransform = true
411
+ THooks>;
412
+ /**
413
+ * Execute the transaction and return the result.
414
+ */
415
+ execute(): Promise<AwaitedPromisesInObject<InferBuilderResultType<TRetrieveResults, TRetrieveSuccessResult, TServiceCalls, TMutateResult, TTransformResult, HasTransform, HasMutate, HasTransformRetrieve, HasRetrieve>>>;
416
+ }
417
+ /**
418
+ * Create a new HandlerTxBuilder with the given options.
419
+ */
420
+ declare function createHandlerTxBuilder<THooks extends HooksMap = {}>(options: ExecuteTxOptions, hooks?: THooks, executeWrapper?: <T>(run: () => Promise<T>) => Promise<T>): HandlerTxBuilder<readonly [], [], [], unknown, unknown, false, false, false, false, THooks>;
421
+ //#endregion
422
+ export { AwaitedPromisesInObject, BuilderTransformContextWithMutate, BuilderTransformContextWithoutMutate, ExecuteTxOptions, ExtractServiceFinalResults, ExtractServiceRetrieveResults, HandlerBuilderMutateContext, HandlerTxBuilder, ServiceBuilderMutateContext, ServiceTxBuilder, TxResult, createHandlerTxBuilder, createServiceTxBuilder };
423
+ //# sourceMappingURL=execute-unit-of-work.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-unit-of-work.d.ts","names":[],"sources":["../../../../src/query/unit-of-work/execute-unit-of-work.ts"],"sourcesContent":[],"mappings":"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"}