@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
@@ -1 +1 @@
1
- {"version":3,"file":"with-database.d.ts","names":[],"sources":["../src/with-database.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA8CA;;;;;;;;;;;;;;;;;AAyBI,iBAzBY,YAyBZ,CAAA,gBAzByC,SAyBzC,CAAA,CAAA,MAAA,EAxBM,OAwBN,CAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,4BAhB0B,kBAgB1B,EAAA,4BAf0B,kBAe1B,EAAA,eAAA,EAAA,yBAbuB,MAavB,CAAA,MAAA,EAbsC,6BAatC,CAAA,CAAA,CAAA,OAAA,EAXO,yBAWP,CAVA,OAUA,EATA,kBASA,EARA,KAQA,EAPA,aAOA,EANA,SAMA,EALA,YAKA,EAJA,gBAIA,EAHA,mBAGA,EAFA,mBAEA,EADA,eACA,EAAA,gBAAA,CAAA,EAAA,GAEC,iCAFD,CAGF,OAHE,EAIF,OAJE,EAKF,KALE,GAKM,4BALN,CAKmC,OALnC,CAAA,EAMF,aANE,EAOF,SAPE,EAQF,YARE,EASF,gBATE,EAUF,QAVE,EAWF,sBAXE,CAWqB,QAXrB,CAAA,EAYF,sBAZE,EAaF,gBAbE,GAAA;EAXO,gBAAA,EAwB8B,wBAxB9B;CAcT,CAAA"}
1
+ {"version":3,"file":"with-database.d.ts","names":[],"sources":["../src/with-database.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAiCA;;;;;;;;;;;;;;;;;AAcW,iBAdK,YAcL,CAAA,gBAdkC,SAclC,CAAA,CAAA,MAAA,EAbD,OAaC,CAAA,EAAA,CAAA,OAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,4BALmB,kBAKnB,EAAA,4BAJmB,kBAInB,EAAA,eAAA,EAAA,wBAAA,SAFwB,iBAExB,EAAA,CAAA,CAAA,OAAA,EAAA,yBAAA,CACP,OADO,EAEP,kBAFO,EAGP,KAHO,EAIP,aAJO,EAKP,SALO,EAMP,YANO,EAOP,gBAPO,EAQP,mBARO,EASP,mBATO,EAUP,eAVO,EAWP,eAXO,CAAA,EAAA,GAaN,iCAbM,CAcT,OAdS,EAeT,OAfS,EAgBT,KAhBS,GAgBD,4BAhBC,CAgB4B,OAhB5B,CAAA,EAiBT,aAjBS,EAkBT,SAlBS,EAmBT,YAnBS,EAoBT,gBApBS,EAqBT,QArBS,EAsBT,sBAtBS,CAsBc,QAtBd,CAAA,EAuBT,sBAvBS,EAwBT,eAxBS,CAAA"}
@@ -1,16 +1,11 @@
1
- import { instantiate } from "./packages/fragno/dist/api/fragment-instantiator.js";
2
- import { resolveDatabaseAdapter } from "./util/default-database-adapter.js";
3
1
  import { DatabaseFragmentDefinitionBuilder } from "./db-fragment-definition-builder.js";
4
- import { internalFragmentDef } from "./fragments/internal-fragment.js";
5
- import { internalFragmentRoutes } from "./fragments/internal-fragment.routes.js";
2
+ import { getInternalFragment, getRegistryForAdapterSync } from "./internal/adapter-registry.js";
3
+ import { FragmentDefinitionBuilder } from "@fragno-dev/core";
6
4
 
7
5
  //#region src/with-database.ts
8
- function shouldExposeOutboxRoutes(options, schema) {
9
- return resolveDatabaseAdapter(options, schema).outbox?.enabled ?? false;
10
- }
11
6
  /**
12
7
  * Helper to add database support to a fragment builder.
13
- * Automatically links the internal fragment and adds ImplicitDatabaseDependencies to the TDeps type.
8
+ * Registers the schema with the adapter registry and adds ImplicitDatabaseDependencies to the TDeps type.
14
9
  *
15
10
  * @example
16
11
  * ```typescript
@@ -28,13 +23,10 @@ function shouldExposeOutboxRoutes(options, schema) {
28
23
  */
29
24
  function withDatabase(schema) {
30
25
  return (builder) => {
31
- return new DatabaseFragmentDefinitionBuilder(builder.withLinkedFragment("_fragno_internal", ({ config, options }) => {
32
- const internalRoutes = shouldExposeOutboxRoutes(options, schema) ? [internalFragmentRoutes] : [];
33
- return instantiate(internalFragmentDef).withConfig(config).withOptions({
34
- ...options,
35
- databaseNamespace: null
36
- }).withRoutes(internalRoutes).build();
37
- }), schema);
26
+ return new DatabaseFragmentDefinitionBuilder(builder, schema, void 0, void 0, {
27
+ getRegistryForAdapterSync,
28
+ getInternalFragment
29
+ });
38
30
  };
39
31
  }
40
32
 
@@ -1 +1 @@
1
- {"version":3,"file":"with-database.js","names":[],"sources":["../src/with-database.ts"],"sourcesContent":["import type { AnySchema } from \"./schema/create\";\nimport type {\n RequestThisContext,\n FragnoPublicConfig,\n AnyFragnoInstantiatedFragment,\n} from \"@fragno-dev/core\";\nimport { FragmentDefinitionBuilder, instantiate } from \"@fragno-dev/core\";\nimport {\n DatabaseFragmentDefinitionBuilder,\n type DatabaseServiceContext,\n type DatabaseHandlerContext,\n type ImplicitDatabaseDependencies,\n type FragnoPublicConfigWithDatabase,\n type DatabaseRequestStorage,\n} from \"./db-fragment-definition-builder\";\nimport { internalFragmentDef, type InternalFragmentInstance } from \"./fragments/internal-fragment\";\nimport { internalFragmentRoutes } from \"./fragments/internal-fragment.routes\";\nimport type { HooksMap } from \"./hooks/hooks\";\nimport { resolveDatabaseAdapter } from \"./util/default-database-adapter\";\n\nfunction shouldExposeOutboxRoutes(\n options: FragnoPublicConfigWithDatabase,\n schema: AnySchema,\n): boolean {\n const adapter = resolveDatabaseAdapter(options, schema) as { outbox?: { enabled?: boolean } };\n return adapter.outbox?.enabled ?? false;\n}\n\n/**\n * Helper to add database support to a fragment builder.\n * Automatically links the internal fragment and adds ImplicitDatabaseDependencies to the TDeps type.\n *\n * @example\n * ```typescript\n * // With .extend() - recommended\n * const def = defineFragment(\"my-frag\")\n * .extend(withDatabase(mySchema))\n * .withDependencies(...)\n * .build();\n *\n * // Or as a function wrapper\n * const def = withDatabase(mySchema)(defineFragment(\"my-frag\"))\n * .withDependencies(...)\n * .build();\n * ```\n */\nexport function withDatabase<TSchema extends AnySchema>(\n schema: TSchema,\n): <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>,\n>(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >,\n) => DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n HooksMap,\n DatabaseServiceContext<HooksMap>,\n DatabaseHandlerContext,\n TLinkedFragments & { _fragno_internal: InternalFragmentInstance }\n> {\n return <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TLinkedFragments extends Record<string, AnyFragnoInstantiatedFragment>,\n >(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TLinkedFragments\n >,\n ) => {\n const builderWithInternal = builder.withLinkedFragment(\n \"_fragno_internal\",\n ({ config, options }) => {\n const internalRoutes = shouldExposeOutboxRoutes(\n options as FragnoPublicConfigWithDatabase,\n schema,\n )\n ? [internalFragmentRoutes]\n : [];\n\n // Cast is safe: by the time this callback is invoked during fragment instantiation,\n // the options will be FragnoPublicConfigWithDatabase (enforced by DatabaseFragmentDefinitionBuilder)\n return instantiate(internalFragmentDef)\n .withConfig(config as {})\n .withOptions({\n ...(options as FragnoPublicConfigWithDatabase),\n databaseNamespace: null,\n })\n .withRoutes(internalRoutes)\n .build();\n },\n );\n\n // Cast is safe: we're creating a DatabaseFragmentDefinitionBuilder which internally uses\n // FragnoPublicConfigWithDatabase, but the input builder uses FragnoPublicConfig.\n // The database builder's build() method will enforce FragnoPublicConfigWithDatabase at the end.\n // We also add ImplicitDatabaseDependencies to TDeps so they're available in service constructors.\n // Note: We discard TRequestStorage here because database fragments manage their own storage (DatabaseRequestStorage).\n // We set TServiceThisContext to DatabaseServiceContext (restricted) and THandlerThisContext to DatabaseHandlerContext (full).\n return new DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n {}, // Start with empty hooks, provideHooks() will update this\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n TLinkedFragments & { _fragno_internal: InternalFragmentInstance }\n >(\n builderWithInternal as unknown as FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfigWithDatabase,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n DatabaseRequestStorage,\n TLinkedFragments & { _fragno_internal: InternalFragmentInstance }\n >,\n schema,\n );\n };\n}\n"],"mappings":";;;;;;;AAoBA,SAAS,yBACP,SACA,QACS;AAET,QADgB,uBAAuB,SAAS,OAAO,CACxC,QAAQ,WAAW;;;;;;;;;;;;;;;;;;;;AAqBpC,SAAgB,aACd,QAsCA;AACA,SAYE,YAaG;AA8BH,SAAO,IAAI,kCA7BiB,QAAQ,mBAClC,qBACC,EAAE,QAAQ,cAAc;GACvB,MAAM,iBAAiB,yBACrB,SACA,OACD,GACG,CAAC,uBAAuB,GACxB,EAAE;AAIN,UAAO,YAAY,oBAAoB,CACpC,WAAW,OAAa,CACxB,YAAY;IACX,GAAI;IACJ,mBAAmB;IACpB,CAAC,CACD,WAAW,eAAe,CAC1B,OAAO;IAEb,EAkCC,OACD"}
1
+ {"version":3,"file":"with-database.js","names":[],"sources":["../src/with-database.ts"],"sourcesContent":["import type { RequestThisContext, FragnoPublicConfig, AnyRouteOrFactory } from \"@fragno-dev/core\";\nimport { FragmentDefinitionBuilder } from \"@fragno-dev/core\";\n\nimport {\n DatabaseFragmentDefinitionBuilder,\n type DatabaseServiceContext,\n type DatabaseHandlerContext,\n type ImplicitDatabaseDependencies,\n type FragnoPublicConfigWithDatabase,\n type DatabaseRequestStorage,\n} from \"./db-fragment-definition-builder\";\nimport type { HooksMap } from \"./hooks/hooks\";\nimport { getInternalFragment, getRegistryForAdapterSync } from \"./internal/adapter-registry\";\nimport type { AnySchema } from \"./schema/create\";\n\n/**\n * Helper to add database support to a fragment builder.\n * Registers the schema with the adapter registry and adds ImplicitDatabaseDependencies to the TDeps type.\n *\n * @example\n * ```typescript\n * // With .extend() - recommended\n * const def = defineFragment(\"my-frag\")\n * .extend(withDatabase(mySchema))\n * .withDependencies(...)\n * .build();\n *\n * // Or as a function wrapper\n * const def = withDatabase(mySchema)(defineFragment(\"my-frag\"))\n * .withDependencies(...)\n * .build();\n * ```\n */\nexport function withDatabase<TSchema extends AnySchema>(\n schema: TSchema,\n): <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TInternalRoutes extends readonly AnyRouteOrFactory[],\n>(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TInternalRoutes\n >,\n) => DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n HooksMap,\n DatabaseServiceContext<HooksMap>,\n DatabaseHandlerContext,\n TInternalRoutes\n> {\n return <\n TConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext extends RequestThisContext,\n THandlerThisContext extends RequestThisContext,\n TRequestStorage,\n TInternalRoutes extends readonly AnyRouteOrFactory[],\n >(\n builder: FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfig,\n TDeps,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n TServiceThisContext,\n THandlerThisContext,\n TRequestStorage,\n TInternalRoutes\n >,\n ) => {\n // Cast is safe: we're creating a DatabaseFragmentDefinitionBuilder which internally uses\n // FragnoPublicConfigWithDatabase, but the input builder uses FragnoPublicConfig.\n // The database builder's build() method will enforce FragnoPublicConfigWithDatabase at the end.\n // We also add ImplicitDatabaseDependencies to TDeps so they're available in service constructors.\n // Note: We discard TRequestStorage here because database fragments manage their own storage (DatabaseRequestStorage).\n // We set TServiceThisContext to DatabaseServiceContext (restricted) and THandlerThisContext to DatabaseHandlerContext (full).\n return new DatabaseFragmentDefinitionBuilder<\n TSchema,\n TConfig,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n {}, // Start with empty hooks, provideHooks() will update this\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n TInternalRoutes\n >(\n builder as unknown as FragmentDefinitionBuilder<\n TConfig,\n FragnoPublicConfigWithDatabase,\n TDeps & ImplicitDatabaseDependencies<TSchema>,\n TBaseServices,\n TServices,\n TServiceDeps,\n TPrivateServices,\n DatabaseServiceContext<{}>,\n DatabaseHandlerContext,\n DatabaseRequestStorage,\n TInternalRoutes\n >,\n schema,\n undefined,\n undefined,\n {\n getRegistryForAdapterSync,\n getInternalFragment,\n },\n );\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,aACd,QAsCA;AACA,SAYE,YAaG;AAOH,SAAO,IAAI,kCAaT,SAaA,QACA,QACA,QACA;GACE;GACA;GACD,CACF"}
package/package.json CHANGED
@@ -1,143 +1,135 @@
1
1
  {
2
2
  "name": "@fragno-dev/db",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
+ "homepage": "https://fragno.dev",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/rejot-dev/fragno.git",
9
+ "directory": "packages/fragno-db"
10
+ },
4
11
  "type": "module",
5
12
  "exports": {
6
13
  ".": {
7
- "development": "./src/mod.ts",
14
+ "workerd": "./dist/mod.js",
15
+ "worker": "./dist/mod.js",
16
+ "browser": "./dist/browser/mod.js",
8
17
  "types": "./dist/mod.d.ts",
9
18
  "default": "./dist/mod.js"
10
19
  },
11
20
  "./id": {
12
- "development": "./src/id.ts",
13
21
  "types": "./dist/id.d.ts",
14
22
  "default": "./dist/id.js"
15
23
  },
16
24
  "./schema": {
17
- "development": "./src/schema/create.ts",
18
25
  "types": "./dist/schema/create.d.ts",
19
26
  "default": "./dist/schema/create.js"
20
27
  },
21
28
  "./drivers": {
22
- "development": "./src/adapters/generic-sql/driver-config.ts",
23
29
  "types": "./dist/adapters/generic-sql/driver-config.d.ts",
24
30
  "default": "./dist/adapters/generic-sql/driver-config.js"
25
31
  },
26
32
  "./sql-driver": {
27
- "development": "./src/sql-driver/sql-driver.ts",
28
33
  "types": "./dist/sql-driver/sql-driver.d.ts",
29
34
  "default": "./dist/sql-driver/sql-driver.js"
30
35
  },
31
36
  "./dialects": {
32
- "development": "./src/sql-driver/dialects/dialects.ts",
33
37
  "types": "./dist/sql-driver/dialects/dialects.d.ts",
34
38
  "default": "./dist/sql-driver/dialects/dialects.js"
35
39
  },
36
40
  "./dialects/durable-object": {
37
- "development": "./src/sql-driver/dialects/durable-object-dialect.ts",
38
41
  "types": "./dist/sql-driver/dialects/durable-object-dialect.d.ts",
39
42
  "default": "./dist/sql-driver/dialects/durable-object-dialect.js"
40
43
  },
41
44
  "./query": {
42
- "development": "./src/query/simple-query-interface.ts",
43
45
  "types": "./dist/query/simple-query-interface.d.ts",
44
46
  "default": "./dist/query/simple-query-interface.js"
45
47
  },
46
48
  "./adapters": {
47
- "development": "./src/adapters/adapters.ts",
48
49
  "types": "./dist/adapters/adapters.d.ts",
49
50
  "default": "./dist/adapters/adapters.js"
50
51
  },
51
52
  "./adapters/in-memory": {
52
- "development": "./src/adapters/in-memory/index.ts",
53
53
  "types": "./dist/adapters/in-memory/index.d.ts",
54
54
  "default": "./dist/adapters/in-memory/index.js"
55
55
  },
56
56
  "./adapters/sql": {
57
- "development": "./src/adapters/sql/index.ts",
58
57
  "types": "./dist/adapters/sql/index.d.ts",
59
58
  "default": "./dist/adapters/sql/index.js"
60
59
  },
61
60
  "./schema-output/drizzle": {
62
- "development": "./src/schema-output/drizzle.ts",
63
61
  "types": "./dist/schema-output/drizzle.d.ts",
64
62
  "default": "./dist/schema-output/drizzle.js"
65
63
  },
66
64
  "./schema-output/prisma": {
67
- "development": "./src/schema-output/prisma.ts",
68
65
  "types": "./dist/schema-output/prisma.d.ts",
69
66
  "default": "./dist/schema-output/prisma.js"
70
67
  },
68
+ "./client": {
69
+ "types": "./dist/client.d.ts",
70
+ "default": "./dist/client.js"
71
+ },
72
+ "./sync": {
73
+ "browser": "./dist/browser/mod.js",
74
+ "types": "./dist/sync/index.d.ts",
75
+ "default": "./dist/sync/index.js"
76
+ },
71
77
  "./unit-of-work": {
72
- "development": "./src/query/unit-of-work/unit-of-work.ts",
73
78
  "types": "./dist/query/unit-of-work/unit-of-work.d.ts",
74
79
  "default": "./dist/query/unit-of-work/unit-of-work.js"
75
80
  },
76
81
  "./cursor": {
77
- "development": "./src/query/cursor.ts",
78
82
  "types": "./dist/query/cursor.d.ts",
79
83
  "default": "./dist/query/cursor.js"
80
84
  },
81
85
  "./fragment": {
82
- "development": "./src/fragment.ts",
83
86
  "types": "./dist/fragment.d.ts",
84
87
  "default": "./dist/fragment.js"
85
88
  },
86
89
  "./fragment-definition-builder": {
87
- "development": "./src/db-fragment-definition-builder.ts",
88
90
  "types": "./dist/db-fragment-definition-builder.d.ts",
89
91
  "default": "./dist/db-fragment-definition-builder.js"
90
92
  },
93
+ "./durable-hooks": {
94
+ "types": "./dist/durable-hooks.d.ts",
95
+ "default": "./dist/durable-hooks.js"
96
+ },
91
97
  "./dispatchers/node": {
92
- "development": "./src/dispatchers/node/index.ts",
93
98
  "types": "./dist/dispatchers/node/index.d.ts",
94
99
  "default": "./dist/dispatchers/node/index.js"
95
100
  },
96
101
  "./dispatchers/cloudflare-do": {
97
- "development": "./src/dispatchers/cloudflare-do/index.ts",
98
102
  "types": "./dist/dispatchers/cloudflare-do/index.d.ts",
99
103
  "default": "./dist/dispatchers/cloudflare-do/index.js"
100
104
  },
101
105
  "./generation-engine": {
102
- "development": "./src/migration-engine/generation-engine.ts",
103
106
  "types": "./dist/migration-engine/generation-engine.d.ts",
104
107
  "default": "./dist/migration-engine/generation-engine.js"
105
108
  }
106
109
  },
110
+ "dependencies": {
111
+ "@standard-schema/spec": "^1.1.0",
112
+ "kysely": "^0.28.10",
113
+ "superjson": "^2.2.1",
114
+ "@fragno-dev/core": "0.2.2"
115
+ },
107
116
  "devDependencies": {
108
117
  "@electric-sql/pglite": "^0.3.15",
109
118
  "@libsql/client": "^0.15.15",
110
119
  "@types/better-sqlite3": "^7.6.13",
111
120
  "@types/node": "^22.19.7",
112
- "@vitest/coverage-istanbul": "^3.2.4",
121
+ "@vitest/coverage-istanbul": "^4.1.0",
113
122
  "better-sqlite3": "^12.6.2",
114
123
  "drizzle-kit": "^0.31.8",
115
124
  "drizzle-orm": "^0.44.7",
116
125
  "kysely-pglite": "^0.6.1",
117
126
  "mysql2": "^3.16.1",
118
127
  "sqlocal": "^0.15.2",
119
- "vitest": "^3.2.4",
128
+ "vitest": "^4.1.4",
120
129
  "zod": "^4.3.5",
121
- "@fragno-dev/core": "0.2.0",
122
130
  "@fragno-private/typescript-config": "0.0.1",
123
131
  "@fragno-private/vitest-config": "0.0.0"
124
132
  },
125
- "repository": {
126
- "type": "git",
127
- "url": "https://github.com/rejot-dev/fragno.git",
128
- "directory": "packages/fragno-db"
129
- },
130
- "homepage": "https://fragno.dev",
131
- "license": "MIT",
132
- "dependencies": {
133
- "@paralleldrive/cuid2": "^2.3.1",
134
- "@standard-schema/spec": "^1.1.0",
135
- "kysely": "^0.28.10",
136
- "superjson": "^2.2.1"
137
- },
138
- "optionalDependencies": {
139
- "better-sqlite3": "^12.6.2"
140
- },
141
133
  "peerDependencies": {
142
134
  "drizzle-orm": "^0.44.6"
143
135
  },
@@ -149,7 +141,7 @@
149
141
  "scripts": {
150
142
  "build": "tsdown",
151
143
  "build:watch": "tsdown --watch",
152
- "types:check": "tsc --noEmit",
144
+ "types:check": "tsgo --noEmit",
153
145
  "test": "vitest run",
154
146
  "test:watch": "vitest --watch"
155
147
  }
@@ -1,11 +1,12 @@
1
- import type { SimpleQueryInterface } from "../query/simple-query-interface";
2
- import type { AnySchema } from "../schema/create";
3
1
  import type { RequestContextStorage } from "@fragno-dev/core/internal/request-context-storage";
2
+
3
+ import type { SqlNamingStrategy } from "../naming/sql-naming";
4
+ import type { SimpleQueryInterface } from "../query/simple-query-interface";
4
5
  import type { IUnitOfWork } from "../query/unit-of-work/unit-of-work";
5
- import type { PreparedMigrations } from "./generic-sql/migration/prepared-migrations";
6
+ import type { AnySchema } from "../schema/create";
6
7
  import type { SQLProvider } from "../shared/providers";
8
+ import type { PreparedMigrations } from "./generic-sql/migration/prepared-migrations";
7
9
  import type { SQLiteStorageMode } from "./generic-sql/sqlite-storage";
8
- import type { SqlNamingStrategy } from "../naming/sql-naming";
9
10
 
10
11
  export const fragnoDatabaseAdapterNameFakeSymbol = "$fragno-database-adapter-name" as const;
11
12
  export const fragnoDatabaseAdapterVersionFakeSymbol = "$fragno-database-adapter-version" as const;
@@ -1,6 +1,8 @@
1
1
  import { beforeAll, describe, expect, it } from "vitest";
2
- import { column, idColumn, referenceColumn, schema } from "../../schema/create";
2
+
3
3
  import { createRequire } from "node:module";
4
+
5
+ import { column, idColumn, referenceColumn, schema } from "../../schema/create";
4
6
  import { writeAndLoadSchema } from "./test-utils";
5
7
 
6
8
  // I dunno
@@ -151,7 +153,7 @@ describe("generateSchema and migrate", () => {
151
153
 
152
154
  expect(migrationStatements.join("\n")).toMatchInlineSnapshot(`
153
155
  "CREATE TABLE "fragno_db_settings" (
154
- "id" varchar(30) NOT NULL,
156
+ "id" varchar(128) NOT NULL,
155
157
  "key" text NOT NULL,
156
158
  "value" text NOT NULL,
157
159
  "_internalId" bigserial PRIMARY KEY NOT NULL,
@@ -160,7 +162,7 @@ describe("generateSchema and migrate", () => {
160
162
  );
161
163
 
162
164
  CREATE TABLE "fragno_hooks" (
163
- "id" varchar(30) NOT NULL,
165
+ "id" varchar(128) NOT NULL,
164
166
  "namespace" text NOT NULL,
165
167
  "hookName" text NOT NULL,
166
168
  "payload" json NOT NULL,
@@ -178,7 +180,7 @@ describe("generateSchema and migrate", () => {
178
180
  );
179
181
 
180
182
  CREATE TABLE "fragno_db_outbox" (
181
- "id" varchar(30) NOT NULL,
183
+ "id" varchar(128) NOT NULL,
182
184
  "versionstamp" text NOT NULL,
183
185
  "uowId" text NOT NULL,
184
186
  "payload" json NOT NULL,
@@ -189,8 +191,37 @@ describe("generateSchema and migrate", () => {
189
191
  CONSTRAINT "fragno_db_outbox_id_unique" UNIQUE("id")
190
192
  );
191
193
 
194
+ CREATE TABLE "fragno_db_outbox_mutations" (
195
+ "id" varchar(128) NOT NULL,
196
+ "entryVersionstamp" text NOT NULL,
197
+ "mutationVersionstamp" text NOT NULL,
198
+ "uowId" text NOT NULL,
199
+ "schema" text NOT NULL,
200
+ "table" text NOT NULL,
201
+ "externalId" text NOT NULL,
202
+ "op" text NOT NULL,
203
+ "createdAt" timestamp DEFAULT now() NOT NULL,
204
+ "_internalId" bigserial PRIMARY KEY NOT NULL,
205
+ "_version" integer DEFAULT 0 NOT NULL,
206
+ CONSTRAINT "fragno_db_outbox_mutations_id_unique" UNIQUE("id")
207
+ );
208
+
209
+ CREATE TABLE "fragno_db_sync_requests" (
210
+ "id" varchar(128) NOT NULL,
211
+ "requestId" text NOT NULL,
212
+ "status" text NOT NULL,
213
+ "confirmedCommandIds" json NOT NULL,
214
+ "conflictCommandId" text,
215
+ "baseVersionstamp" text,
216
+ "lastVersionstamp" text,
217
+ "createdAt" timestamp DEFAULT now() NOT NULL,
218
+ "_internalId" bigserial PRIMARY KEY NOT NULL,
219
+ "_version" integer DEFAULT 0 NOT NULL,
220
+ CONSTRAINT "fragno_db_sync_requests_id_unique" UNIQUE("id")
221
+ );
222
+
192
223
  CREATE TABLE "test"."users" (
193
- "id" varchar(30) NOT NULL,
224
+ "id" varchar(128) NOT NULL,
194
225
  "name" text NOT NULL,
195
226
  "email" text NOT NULL,
196
227
  "age" integer,
@@ -204,7 +235,7 @@ describe("generateSchema and migrate", () => {
204
235
  );
205
236
 
206
237
  CREATE TABLE "test"."posts" (
207
- "id" varchar(30) NOT NULL,
238
+ "id" varchar(128) NOT NULL,
208
239
  "title" text NOT NULL,
209
240
  "slug" varchar(255) NOT NULL,
210
241
  "content" text NOT NULL,
@@ -224,7 +255,7 @@ describe("generateSchema and migrate", () => {
224
255
  );
225
256
 
226
257
  CREATE TABLE "test"."comments" (
227
- "id" varchar(30) NOT NULL,
258
+ "id" varchar(128) NOT NULL,
228
259
  "content" text NOT NULL,
229
260
  "postId" bigint NOT NULL,
230
261
  "userId" bigint NOT NULL,
@@ -238,7 +269,7 @@ describe("generateSchema and migrate", () => {
238
269
  );
239
270
 
240
271
  CREATE TABLE "test"."tags" (
241
- "id" varchar(30) NOT NULL,
272
+ "id" varchar(128) NOT NULL,
242
273
  "name" text NOT NULL,
243
274
  "slug" varchar(100) NOT NULL,
244
275
  "description" text,
@@ -250,7 +281,7 @@ describe("generateSchema and migrate", () => {
250
281
  );
251
282
 
252
283
  CREATE TABLE "test"."postTags" (
253
- "id" varchar(30) NOT NULL,
284
+ "id" varchar(128) NOT NULL,
254
285
  "postId" bigint NOT NULL,
255
286
  "tagId" bigint NOT NULL,
256
287
  "order" integer DEFAULT 0 NOT NULL,
@@ -269,8 +300,14 @@ describe("generateSchema and migrate", () => {
269
300
  CREATE UNIQUE INDEX "unique_key" ON "fragno_db_settings" USING btree ("key");
270
301
  CREATE INDEX "idx_namespace_status_retry" ON "fragno_hooks" USING btree ("namespace","status","nextRetryAt");
271
302
  CREATE INDEX "idx_nonce" ON "fragno_hooks" USING btree ("nonce");
303
+ CREATE INDEX "idx_namespace_status_last_attempt" ON "fragno_hooks" USING btree ("namespace","status","lastAttemptAt");
304
+ CREATE INDEX "idx_namespace_created_at" ON "fragno_hooks" USING btree ("namespace","createdAt","id");
272
305
  CREATE UNIQUE INDEX "idx_outbox_versionstamp" ON "fragno_db_outbox" USING btree ("versionstamp");
273
306
  CREATE INDEX "idx_outbox_uow" ON "fragno_db_outbox" USING btree ("uowId");
307
+ CREATE INDEX "idx_outbox_mutations_entry" ON "fragno_db_outbox_mutations" USING btree ("entryVersionstamp");
308
+ CREATE INDEX "idx_outbox_mutations_key" ON "fragno_db_outbox_mutations" USING btree ("schema","table","externalId","entryVersionstamp");
309
+ CREATE INDEX "idx_outbox_mutations_uow" ON "fragno_db_outbox_mutations" USING btree ("uowId");
310
+ CREATE UNIQUE INDEX "idx_sync_request_id" ON "fragno_db_sync_requests" USING btree ("requestId");
274
311
  CREATE UNIQUE INDEX "idx_users_email" ON "test"."users" USING btree ("email");
275
312
  CREATE INDEX "idx_users_name" ON "test"."users" USING btree ("name");
276
313
  CREATE INDEX "idx_users_active" ON "test"."users" USING btree ("isActive");
@@ -1,10 +1,12 @@
1
1
  import { describe, expect, it } from "vitest";
2
+
2
3
  import { createRequire } from "node:module";
3
- import { column, idColumn, referenceColumn, schema } from "../../schema/create";
4
- import { writeAndLoadSchema } from "./test-utils";
5
- import { createPreparedMigrations } from "../generic-sql/migration/prepared-migrations";
4
+
6
5
  import { createNamingResolver } from "../../naming/sql-naming";
6
+ import { column, idColumn, referenceColumn, schema } from "../../schema/create";
7
7
  import { defaultNamingStrategyForDatabase } from "../generic-sql/driver-config";
8
+ import { createPreparedMigrations } from "../generic-sql/migration/prepared-migrations";
9
+ import { writeAndLoadSchema } from "./test-utils";
8
10
 
9
11
  const require = createRequire(import.meta.url);
10
12
  const {
@@ -1,8 +1,9 @@
1
1
  import { mkdir, writeFile, rm, access } from "node:fs/promises";
2
2
  import { join } from "node:path";
3
+
4
+ import { internalSchema } from "../../fragments/internal-fragment.schema";
3
5
  import { generateDrizzleSchema, type SupportedProvider } from "../../schema-output/drizzle";
4
6
  import type { Schema } from "../../schema/create";
5
- import { internalSchema } from "../../fragments/internal-fragment.schema";
6
7
 
7
8
  /**
8
9
  * Writes a Fragno schema to a temporary TypeScript file and dynamically imports it.
@@ -1,9 +1,11 @@
1
- import { SQLocalKysely } from "sqlocal/kysely";
2
1
  import { assert, describe, expect, it } from "vitest";
2
+
3
+ import { SQLocalKysely } from "sqlocal/kysely";
4
+
5
+ import { internalSchema } from "../../fragments/internal-fragment";
6
+ import { column, idColumn, schema } from "../../schema/create";
3
7
  import { SQLocalDriverConfig } from "./driver-config";
4
8
  import { SqlAdapter } from "./generic-sql-adapter";
5
- import { column, idColumn, schema } from "../../schema/create";
6
- import { internalSchema } from "../../fragments/internal-fragment";
7
9
 
8
10
  describe("SqlAdapter", () => {
9
11
  const testSchema = schema("test", (s) => {
@@ -1,4 +1,18 @@
1
1
  import { RequestContextStorage } from "@fragno-dev/core/internal/request-context-storage";
2
+
3
+ import { getOutboxConfigForAdapter } from "../../internal/outbox-state";
4
+ import {
5
+ createNamingResolver,
6
+ type NamingResolver,
7
+ type SqlNamingStrategy,
8
+ } from "../../naming/sql-naming";
9
+ import { createSQLSerializer } from "../../query/serialize/create-sql-serializer";
10
+ import type { SimpleQueryInterface } from "../../query/simple-query-interface";
11
+ import type { UOWInstrumentation } from "../../query/unit-of-work/unit-of-work";
12
+ import type { AnyColumn, AnySchema } from "../../schema/create";
13
+ import { sql } from "../../sql-driver/sql";
14
+ import type { CompiledQuery, Dialect, QueryResult } from "../../sql-driver/sql-driver";
15
+ import { SqlDriverAdapter } from "../../sql-driver/sql-driver-adapter";
2
16
  import {
3
17
  fragnoDatabaseAdapterNameFakeSymbol,
4
18
  fragnoDatabaseAdapterVersionFakeSymbol,
@@ -7,31 +21,18 @@ import {
7
21
  type DatabaseAdapterMetadata,
8
22
  type SQLiteProfile,
9
23
  } from "../adapters";
10
- import type { CompiledQuery, Dialect, QueryResult } from "../../sql-driver/sql-driver";
11
- import { SqlDriverAdapter } from "../../sql-driver/sql-driver-adapter";
12
- import { sql } from "../../sql-driver/sql";
13
- import type { AnyColumn, AnySchema } from "../../schema/create";
14
- import type { SimpleQueryInterface } from "../../query/simple-query-interface";
15
- import { createExecutor } from "./generic-sql-uow-executor";
16
- import { UnitOfWorkDecoder } from "./uow-decoder";
17
- import { createPreparedMigrations, type PreparedMigrations } from "./migration/prepared-migrations";
18
- import type { DriverConfig } from "./driver-config";
19
- import { GenericSQLUOWOperationCompiler } from "./query/generic-sql-uow-operation-compiler";
20
- import { createUOWCompilerFromOperationCompiler } from "../shared/uow-operation-compiler";
21
24
  import {
22
25
  fromUnitOfWorkCompiler,
23
26
  type UnitOfWorkFactory,
24
27
  } from "../shared/from-unit-of-work-compiler";
25
- import type { UOWInstrumentation } from "../../query/unit-of-work/unit-of-work";
28
+ import { createUOWCompilerFromOperationCompiler } from "../shared/uow-operation-compiler";
29
+ import type { DriverConfig } from "./driver-config";
30
+ import { createExecutor } from "./generic-sql-uow-executor";
31
+ import { createPreparedMigrations, type PreparedMigrations } from "./migration/prepared-migrations";
32
+ import { GenericSQLUOWOperationCompiler } from "./query/generic-sql-uow-operation-compiler";
26
33
  import type { SQLiteStorageMode } from "./sqlite-storage";
27
34
  import { sqliteStorageDefault, sqliteStoragePrisma } from "./sqlite-storage";
28
- import type { OutboxConfig } from "../../outbox/outbox";
29
- import { createSQLSerializer } from "../../query/serialize/create-sql-serializer";
30
- import {
31
- createNamingResolver,
32
- type NamingResolver,
33
- type SqlNamingStrategy,
34
- } from "../../naming/sql-naming";
35
+ import { UnitOfWorkDecoder } from "./uow-decoder";
35
36
 
36
37
  export interface UnitOfWorkConfig {
37
38
  onQuery?: (query: CompiledQuery) => void;
@@ -43,7 +44,6 @@ export interface SqlAdapterOptions {
43
44
  dialect: Dialect;
44
45
  driverConfig: DriverConfig;
45
46
  uowConfig?: UnitOfWorkConfig;
46
- outbox?: OutboxConfig;
47
47
  sqliteProfile?: SQLiteProfile;
48
48
  sqliteStorageMode?: SQLiteStorageMode;
49
49
  namingStrategy?: SqlNamingStrategy;
@@ -58,7 +58,6 @@ export class SqlAdapter implements DatabaseAdapter<UnitOfWorkConfig> {
58
58
  readonly dialect: Dialect;
59
59
  readonly driverConfig: DriverConfig;
60
60
  readonly uowConfig?: UnitOfWorkConfig;
61
- readonly outbox?: OutboxConfig;
62
61
  readonly sqliteStorageMode?: SQLiteStorageMode;
63
62
  readonly sqliteProfile?: SQLiteProfile;
64
63
  readonly adapterMetadata: DatabaseAdapterMetadata;
@@ -73,7 +72,6 @@ export class SqlAdapter implements DatabaseAdapter<UnitOfWorkConfig> {
73
72
  dialect,
74
73
  driverConfig,
75
74
  uowConfig,
76
- outbox,
77
75
  sqliteProfile,
78
76
  sqliteStorageMode,
79
77
  namingStrategy,
@@ -81,7 +79,6 @@ export class SqlAdapter implements DatabaseAdapter<UnitOfWorkConfig> {
81
79
  this.dialect = dialect;
82
80
  this.driverConfig = driverConfig;
83
81
  this.uowConfig = uowConfig;
84
- this.outbox = outbox;
85
82
  this.namingStrategy = namingStrategy ?? driverConfig.defaultNamingStrategy;
86
83
  const resolvedProfile = sqliteProfile ?? "default";
87
84
 
@@ -195,7 +192,7 @@ export class SqlAdapter implements DatabaseAdapter<UnitOfWorkConfig> {
195
192
  executor: createExecutor(this.#driver, this.driverConfig, {
196
193
  dialect: this.dialect,
197
194
  dryRun: false,
198
- outbox: this.outbox,
195
+ outbox: getOutboxConfigForAdapter(this),
199
196
  namingStrategy: this.namingStrategy,
200
197
  }),
201
198
  decoder: new UnitOfWorkDecoder(this.driverConfig, this.sqliteStorageMode, resolver),
@@ -1,4 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
+
2
3
  import type { CompiledMutation } from "../../query/unit-of-work/unit-of-work";
3
4
  import type { CompiledQuery, Dialect } from "../../sql-driver/sql-driver";
4
5
  import type { SqlDriverAdapter } from "../../sql-driver/sql-driver-adapter";