@effect-app/infra 4.0.0-beta.22 → 4.0.0-beta.220

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 (310) hide show
  1. package/CHANGELOG.md +1640 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +7 -7
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +10 -12
  6. package/dist/Emailer/Sendgrid.d.ts +14 -14
  7. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  8. package/dist/Emailer/Sendgrid.js +16 -15
  9. package/dist/Emailer/fake.d.ts +1 -1
  10. package/dist/Emailer/service.d.ts +10 -4
  11. package/dist/Emailer/service.d.ts.map +1 -1
  12. package/dist/Emailer/service.js +3 -3
  13. package/dist/Emailer.d.ts +1 -1
  14. package/dist/MainFiberSet.d.ts +9 -9
  15. package/dist/MainFiberSet.d.ts.map +1 -1
  16. package/dist/MainFiberSet.js +3 -3
  17. package/dist/Model/Repository/Registry.d.ts +20 -0
  18. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  19. package/dist/Model/Repository/Registry.js +17 -0
  20. package/dist/Model/Repository/ext.d.ts +33 -15
  21. package/dist/Model/Repository/ext.d.ts.map +1 -1
  22. package/dist/Model/Repository/ext.js +54 -2
  23. package/dist/Model/Repository/internal/internal.d.ts +6 -6
  24. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  25. package/dist/Model/Repository/internal/internal.js +103 -51
  26. package/dist/Model/Repository/legacy.d.ts +1 -1
  27. package/dist/Model/Repository/makeRepo.d.ts +7 -6
  28. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  29. package/dist/Model/Repository/makeRepo.js +5 -1
  30. package/dist/Model/Repository/service.d.ts +28 -23
  31. package/dist/Model/Repository/service.d.ts.map +1 -1
  32. package/dist/Model/Repository/validation.d.ts +46 -17
  33. package/dist/Model/Repository/validation.d.ts.map +1 -1
  34. package/dist/Model/Repository/validation.js +5 -5
  35. package/dist/Model/Repository.d.ts +2 -1
  36. package/dist/Model/Repository.d.ts.map +1 -1
  37. package/dist/Model/Repository.js +2 -1
  38. package/dist/Model/dsl.d.ts +4 -4
  39. package/dist/Model/dsl.d.ts.map +1 -1
  40. package/dist/Model/filter/filterApi.d.ts +5 -5
  41. package/dist/Model/filter/filterApi.d.ts.map +1 -1
  42. package/dist/Model/filter/types/errors.d.ts +1 -1
  43. package/dist/Model/filter/types/fields.d.ts +1 -1
  44. package/dist/Model/filter/types/path/common.d.ts +1 -1
  45. package/dist/Model/filter/types/path/eager.d.ts +1 -1
  46. package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
  47. package/dist/Model/filter/types/path/eager.js +1 -1
  48. package/dist/Model/filter/types/path/index.d.ts +1 -1
  49. package/dist/Model/filter/types/utils.d.ts +1 -1
  50. package/dist/Model/filter/types/validator.d.ts +1 -1
  51. package/dist/Model/filter/types.d.ts +1 -1
  52. package/dist/Model/query/dsl.d.ts +139 -16
  53. package/dist/Model/query/dsl.d.ts.map +1 -1
  54. package/dist/Model/query/dsl.js +187 -1
  55. package/dist/Model/query/new-kid-interpreter.d.ts +76 -7
  56. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
  57. package/dist/Model/query/new-kid-interpreter.js +122 -6
  58. package/dist/Model/query.d.ts +1 -1
  59. package/dist/Model.d.ts +2 -1
  60. package/dist/Model.d.ts.map +1 -1
  61. package/dist/Model.js +2 -1
  62. package/dist/QueueMaker/SQLQueue.d.ts +5 -7
  63. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  64. package/dist/QueueMaker/SQLQueue.js +130 -116
  65. package/dist/QueueMaker/errors.d.ts +2 -2
  66. package/dist/QueueMaker/errors.d.ts.map +1 -1
  67. package/dist/QueueMaker/memQueue.d.ts +7 -4
  68. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  69. package/dist/QueueMaker/memQueue.js +75 -63
  70. package/dist/QueueMaker/sbqueue.d.ts +6 -3
  71. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  72. package/dist/QueueMaker/sbqueue.js +52 -53
  73. package/dist/QueueMaker/service.d.ts +1 -1
  74. package/dist/RequestContext.d.ts +74 -35
  75. package/dist/RequestContext.d.ts.map +1 -1
  76. package/dist/RequestContext.js +13 -14
  77. package/dist/RequestFiberSet.d.ts +7 -7
  78. package/dist/RequestFiberSet.d.ts.map +1 -1
  79. package/dist/RequestFiberSet.js +3 -3
  80. package/dist/Store/ContextMapContainer.d.ts +19 -3
  81. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  82. package/dist/Store/ContextMapContainer.js +13 -3
  83. package/dist/Store/Cosmos/query.d.ts +5 -1
  84. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  85. package/dist/Store/Cosmos/query.js +113 -34
  86. package/dist/Store/Cosmos.d.ts +1 -1
  87. package/dist/Store/Cosmos.d.ts.map +1 -1
  88. package/dist/Store/Cosmos.js +335 -243
  89. package/dist/Store/Disk.d.ts +2 -2
  90. package/dist/Store/Disk.d.ts.map +1 -1
  91. package/dist/Store/Disk.js +72 -35
  92. package/dist/Store/Memory.d.ts +6 -4
  93. package/dist/Store/Memory.d.ts.map +1 -1
  94. package/dist/Store/Memory.js +242 -58
  95. package/dist/Store/SQL/Pg.d.ts +4 -0
  96. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  97. package/dist/Store/SQL/Pg.js +231 -0
  98. package/dist/Store/SQL/query.d.ts +42 -0
  99. package/dist/Store/SQL/query.d.ts.map +1 -0
  100. package/dist/Store/SQL/query.js +479 -0
  101. package/dist/Store/SQL.d.ts +20 -0
  102. package/dist/Store/SQL.d.ts.map +1 -0
  103. package/dist/Store/SQL.js +446 -0
  104. package/dist/Store/codeFilter.d.ts +1 -1
  105. package/dist/Store/codeFilter.d.ts.map +1 -1
  106. package/dist/Store/codeFilter.js +4 -2
  107. package/dist/Store/index.d.ts +5 -2
  108. package/dist/Store/index.d.ts.map +1 -1
  109. package/dist/Store/index.js +15 -3
  110. package/dist/Store/service.d.ts +22 -8
  111. package/dist/Store/service.d.ts.map +1 -1
  112. package/dist/Store/service.js +24 -6
  113. package/dist/Store/utils.d.ts +1 -1
  114. package/dist/Store/utils.d.ts.map +1 -1
  115. package/dist/Store/utils.js +3 -4
  116. package/dist/Store.d.ts +1 -1
  117. package/dist/adapters/SQL/Model.d.ts +31 -42
  118. package/dist/adapters/SQL/Model.d.ts.map +1 -1
  119. package/dist/adapters/SQL/Model.js +29 -38
  120. package/dist/adapters/SQL.d.ts +1 -1
  121. package/dist/adapters/ServiceBus.d.ts +11 -11
  122. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  123. package/dist/adapters/ServiceBus.js +25 -21
  124. package/dist/adapters/cosmos-client.d.ts +3 -3
  125. package/dist/adapters/cosmos-client.d.ts.map +1 -1
  126. package/dist/adapters/cosmos-client.js +3 -3
  127. package/dist/adapters/index.d.ts +8 -2
  128. package/dist/adapters/index.d.ts.map +1 -1
  129. package/dist/adapters/index.js +8 -2
  130. package/dist/adapters/logger.d.ts +1 -1
  131. package/dist/adapters/logger.d.ts.map +1 -1
  132. package/dist/adapters/memQueue.d.ts +3 -3
  133. package/dist/adapters/memQueue.d.ts.map +1 -1
  134. package/dist/adapters/memQueue.js +3 -3
  135. package/dist/adapters/mongo-client.d.ts +3 -3
  136. package/dist/adapters/mongo-client.d.ts.map +1 -1
  137. package/dist/adapters/mongo-client.js +3 -3
  138. package/dist/adapters/redis-client.d.ts +3 -3
  139. package/dist/adapters/redis-client.d.ts.map +1 -1
  140. package/dist/adapters/redis-client.js +3 -3
  141. package/dist/api/ContextProvider.d.ts +8 -8
  142. package/dist/api/ContextProvider.d.ts.map +1 -1
  143. package/dist/api/ContextProvider.js +6 -6
  144. package/dist/api/codec.d.ts +1 -1
  145. package/dist/api/internal/RequestContextMiddleware.d.ts +2 -2
  146. package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
  147. package/dist/api/internal/RequestContextMiddleware.js +9 -6
  148. package/dist/api/internal/auth.d.ts +44 -6
  149. package/dist/api/internal/auth.d.ts.map +1 -1
  150. package/dist/api/internal/auth.js +160 -29
  151. package/dist/api/internal/events.d.ts +3 -3
  152. package/dist/api/internal/events.d.ts.map +1 -1
  153. package/dist/api/internal/events.js +10 -8
  154. package/dist/api/internal/health.d.ts +1 -1
  155. package/dist/api/layerUtils.d.ts +6 -6
  156. package/dist/api/layerUtils.d.ts.map +1 -1
  157. package/dist/api/layerUtils.js +5 -5
  158. package/dist/api/middlewares.d.ts +1 -1
  159. package/dist/api/reportError.d.ts +1 -1
  160. package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -4
  161. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  162. package/dist/api/routing/middleware/middleware.d.ts +39 -3
  163. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  164. package/dist/api/routing/middleware/middleware.js +48 -16
  165. package/dist/api/routing/middleware.d.ts +1 -2
  166. package/dist/api/routing/middleware.d.ts.map +1 -1
  167. package/dist/api/routing/middleware.js +1 -2
  168. package/dist/api/routing/schema/jwt.d.ts +1 -1
  169. package/dist/api/routing/schema/jwt.d.ts.map +1 -1
  170. package/dist/api/routing/tsort.d.ts +1 -1
  171. package/dist/api/routing/tsort.d.ts.map +1 -1
  172. package/dist/api/routing/utils.d.ts +3 -3
  173. package/dist/api/routing/utils.d.ts.map +1 -1
  174. package/dist/api/routing.d.ts +80 -37
  175. package/dist/api/routing.d.ts.map +1 -1
  176. package/dist/api/routing.js +109 -41
  177. package/dist/api/setupRequest.d.ts +8 -5
  178. package/dist/api/setupRequest.d.ts.map +1 -1
  179. package/dist/api/setupRequest.js +12 -7
  180. package/dist/api/util.d.ts +1 -1
  181. package/dist/arbs.d.ts +1 -1
  182. package/dist/arbs.d.ts.map +1 -1
  183. package/dist/arbs.js +5 -3
  184. package/dist/errorReporter.d.ts +4 -4
  185. package/dist/errorReporter.d.ts.map +1 -1
  186. package/dist/errorReporter.js +20 -25
  187. package/dist/errors.d.ts +1 -1
  188. package/dist/fileUtil.d.ts +1 -1
  189. package/dist/fileUtil.d.ts.map +1 -1
  190. package/dist/index.d.ts +1 -1
  191. package/dist/logger/jsonLogger.d.ts +1 -1
  192. package/dist/logger/logFmtLogger.d.ts +1 -1
  193. package/dist/logger/shared.d.ts +1 -1
  194. package/dist/logger/shared.js +2 -2
  195. package/dist/logger.d.ts +1 -1
  196. package/dist/logger.d.ts.map +1 -1
  197. package/dist/otel.d.ts +75 -0
  198. package/dist/otel.d.ts.map +1 -0
  199. package/dist/otel.js +65 -0
  200. package/dist/rateLimit.d.ts +9 -3
  201. package/dist/rateLimit.d.ts.map +1 -1
  202. package/dist/rateLimit.js +5 -11
  203. package/dist/test.d.ts +2 -2
  204. package/dist/test.d.ts.map +1 -1
  205. package/dist/test.js +1 -1
  206. package/dist/vitest.d.ts +1 -1
  207. package/examples/query.ts +42 -38
  208. package/package.json +46 -37
  209. package/src/CUPS.ts +9 -11
  210. package/src/Emailer/Sendgrid.ts +17 -14
  211. package/src/Emailer/service.ts +9 -3
  212. package/src/MainFiberSet.ts +5 -6
  213. package/src/Model/Repository/Registry.ts +33 -0
  214. package/src/Model/Repository/ext.ts +96 -10
  215. package/src/Model/Repository/internal/internal.ts +218 -149
  216. package/src/Model/Repository/makeRepo.ts +12 -10
  217. package/src/Model/Repository/service.ts +31 -22
  218. package/src/Model/Repository/validation.ts +4 -4
  219. package/src/Model/Repository.ts +1 -0
  220. package/src/Model/dsl.ts +3 -3
  221. package/src/Model/filter/types/path/eager.ts +1 -2
  222. package/src/Model/query/dsl.ts +348 -18
  223. package/src/Model/query/new-kid-interpreter.ts +206 -6
  224. package/src/Model.ts +1 -0
  225. package/src/QueueMaker/SQLQueue.ts +144 -152
  226. package/src/QueueMaker/memQueue.ts +104 -103
  227. package/src/QueueMaker/sbqueue.ts +70 -86
  228. package/src/RequestContext.ts +14 -16
  229. package/src/RequestFiberSet.ts +2 -2
  230. package/src/Store/ContextMapContainer.ts +41 -2
  231. package/src/Store/Cosmos/query.ts +140 -43
  232. package/src/Store/Cosmos.ts +482 -349
  233. package/src/Store/Disk.ts +102 -65
  234. package/src/Store/Memory.ts +275 -87
  235. package/src/Store/SQL/Pg.ts +361 -0
  236. package/src/Store/SQL/query.ts +539 -0
  237. package/src/Store/SQL.ts +731 -0
  238. package/src/Store/codeFilter.ts +3 -1
  239. package/src/Store/index.ts +17 -2
  240. package/src/Store/service.ts +41 -10
  241. package/src/Store/utils.ts +23 -22
  242. package/src/adapters/SQL/Model.ts +41 -40
  243. package/src/adapters/ServiceBus.ts +125 -121
  244. package/src/adapters/cosmos-client.ts +2 -2
  245. package/src/adapters/index.ts +7 -0
  246. package/src/adapters/memQueue.ts +2 -2
  247. package/src/adapters/mongo-client.ts +2 -2
  248. package/src/adapters/redis-client.ts +2 -2
  249. package/src/api/ContextProvider.ts +12 -13
  250. package/src/api/internal/RequestContextMiddleware.ts +15 -5
  251. package/src/api/internal/auth.ts +246 -44
  252. package/src/api/internal/events.ts +13 -9
  253. package/src/api/layerUtils.ts +8 -8
  254. package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
  255. package/src/api/routing/middleware/middleware.ts +55 -14
  256. package/src/api/routing/middleware.ts +0 -2
  257. package/src/api/routing.ts +296 -131
  258. package/src/api/setupRequest.ts +28 -8
  259. package/src/arbs.ts +4 -2
  260. package/src/errorReporter.ts +62 -74
  261. package/src/logger/shared.ts +1 -1
  262. package/src/otel.ts +152 -0
  263. package/src/rateLimit.ts +30 -22
  264. package/src/test.ts +1 -1
  265. package/test/auth.test.ts +101 -0
  266. package/test/contextProvider.test.ts +11 -11
  267. package/test/controller.test.ts +21 -30
  268. package/test/dist/auth.test.d.ts.map +1 -0
  269. package/test/dist/contextProvider.test.d.ts.map +1 -1
  270. package/test/dist/controller.test.d.ts.map +1 -1
  271. package/test/dist/date-query.test.d.ts.map +1 -0
  272. package/test/dist/fixtures.d.ts +26 -12
  273. package/test/dist/fixtures.d.ts.map +1 -1
  274. package/test/dist/fixtures.js +12 -10
  275. package/test/dist/query.test.d.ts.map +1 -1
  276. package/test/dist/rawQuery.test.d.ts.map +1 -1
  277. package/test/dist/repository-ext.test.d.ts.map +1 -0
  278. package/test/dist/requires.test.d.ts.map +1 -1
  279. package/test/dist/router-generator.test.d.ts.map +1 -0
  280. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  281. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  282. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  283. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  284. package/test/dist/sql-store.test.d.ts.map +1 -0
  285. package/test/fixtures.ts +11 -9
  286. package/test/query.test.ts +813 -38
  287. package/test/rawQuery.test.ts +301 -20
  288. package/test/repository-ext.test.ts +60 -0
  289. package/test/requires.test.ts +6 -6
  290. package/test/router-generator.test.ts +183 -0
  291. package/test/routing-interruptibility.test.ts +63 -0
  292. package/test/rpc-e2e-invalidation.test.ts +251 -0
  293. package/test/rpc-multi-middleware.test.ts +78 -9
  294. package/test/rpc-stream-fullstack.test.ts +300 -0
  295. package/test/sql-store.test.ts +1592 -0
  296. package/test/validateSample.test.ts +15 -12
  297. package/tsconfig.examples.json +1 -1
  298. package/tsconfig.json +0 -1
  299. package/tsconfig.json.bak +2 -2
  300. package/tsconfig.src.json +35 -35
  301. package/tsconfig.test.json +2 -2
  302. package/dist/Operations.d.ts +0 -55
  303. package/dist/Operations.d.ts.map +0 -1
  304. package/dist/Operations.js +0 -102
  305. package/dist/OperationsRepo.d.ts +0 -41
  306. package/dist/OperationsRepo.d.ts.map +0 -1
  307. package/dist/OperationsRepo.js +0 -14
  308. package/eslint.config.mjs +0 -24
  309. package/src/Operations.ts +0 -235
  310. package/src/OperationsRepo.ts +0 -16
package/CHANGELOG.md CHANGED
@@ -1,5 +1,1645 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 4.0.0-beta.220
4
+
5
+ ### Patch Changes
6
+
7
+ - aa436d3: fix bs span
8
+ - effect-app@4.0.0-beta.220
9
+
10
+ ## 4.0.0-beta.219
11
+
12
+ ### Patch Changes
13
+
14
+ - 13c2fd9: doc span
15
+ - d738811: remove double prefix
16
+ - 724da29: replace useless span
17
+ - Updated dependencies [d738811]
18
+ - effect-app@4.0.0-beta.219
19
+
20
+ ## 4.0.0-beta.218
21
+
22
+ ### Minor Changes
23
+
24
+ - 95995d5: Add `collectFields`/`collectDistinctFields` to `relation()` DSL for collecting values from multiple fields of relation items into a single flattened array.
25
+
26
+ Example: given `T = { a: boolean, items: { x: string, y: string, z: number }[] }[]`, you can now collect all distinct `x` and `y` values into a single `string[]`:
27
+
28
+ ```ts
29
+ relation("items").collectDistinctFields(["x", "y"]);
30
+ ```
31
+
32
+ ### Patch Changes
33
+
34
+ - effect-app@4.0.0-beta.218
35
+
36
+ ## 4.0.0-beta.217
37
+
38
+ ### Patch Changes
39
+
40
+ - e3ceaba: Add computed projection expression sums with grouped and normalized variants for projectComputed relation aggregations.
41
+ - Updated dependencies [0e824ef]
42
+ - effect-app@4.0.0-beta.217
43
+
44
+ ## 4.0.0-beta.216
45
+
46
+ ### Patch Changes
47
+
48
+ - f28fce5: fix sqlite
49
+ - effect-app@4.0.0-beta.216
50
+
51
+ ## 4.0.0-beta.215
52
+
53
+ ### Patch Changes
54
+
55
+ - 24f5dd0: fix memory computation
56
+ - effect-app@4.0.0-beta.215
57
+
58
+ ## 4.0.0-beta.214
59
+
60
+ ### Minor Changes
61
+
62
+ - fb93244: Extend computed projections with additional relation operators:
63
+
64
+ - `relation(path).every(op)` — boolean, all elements match the filter (compiled as `NOT EXISTS(... WHERE NOT (filter))`).
65
+ - `relation(path).distinctCount(field, op?)` — distinct count of values at `field` within the relation.
66
+ - `relation(path).sum(field, op?)` — numeric sum over a relation field.
67
+ - `relation(path).collect(field, op?)` / `collectDistinct(field, op?)` — collect values into an array (with optional dedup).
68
+
69
+ All operators compile to native subqueries on SQL (sqlite/pg) and Cosmos, and to in-memory equivalents on the Memory store.
70
+
71
+ ### Patch Changes
72
+
73
+ - effect-app@4.0.0-beta.214
74
+
75
+ ## 4.0.0-beta.213
76
+
77
+ ### Minor Changes
78
+
79
+ - aac6308: Add computed projections for repository queries with adapter-level compilation for memory, SQL, and Cosmos stores.
80
+
81
+ ### Patch Changes
82
+
83
+ - 6613f3d: Document `Q.project` modes (`transform` / `project` / `collect`): how `select` is derived from the schema AST, the PM reverse-mapping behaviour per mode, and which decode errors surface vs `orDie`.
84
+ - effect-app@4.0.0-beta.213
85
+
86
+ ## 4.0.0-beta.212
87
+
88
+ ### Patch Changes
89
+
90
+ - Updated dependencies [8792221]
91
+ - effect-app@4.0.0-beta.212
92
+
93
+ ## 4.0.0-beta.211
94
+
95
+ ### Patch Changes
96
+
97
+ - ebbb799: Repository owns OTel span topology; store adapters annotate db._ semconv attrs on the current span instead of opening their own child spans. Eliminates 1-1 nested span chains (e.g. `Repository.query` → `Cosmos.filter`). Adds `annotateDb` helper alongside `withDbSpan` in `otel.ts`. Repo public ops (`find`, `all`, `query`, `queryRaw`, `mapped._`) get explicit `Repository.<op>` spans; internal codec steps (`encodeMany`, `parseMany`, `parseMany2`) keep bare names. `validateSample`opens per-iteration sub-spans to prevent attribute clobber. Adds WeakMap decoder cache for`parseMany2` schemas.
98
+ - e33f1eb: Drop OTel spans from ServiceBus client/sender/receiver/subscription lifecycle wrappers; keep `withLogSpan` + info logs only. Removes high-cardinality `sessionId` from log span names; promotes it to `messaging.session.id` log attribute via `Effect.annotateLogs`.
99
+ - effect-app@4.0.0-beta.211
100
+
101
+ ## 4.0.0-beta.210
102
+
103
+ ### Minor Changes
104
+
105
+ - 3a588e4: Standardize span attributes on OpenTelemetry semantic conventions.
106
+
107
+ All Store adapters (Cosmos, PostgreSQL, SQLite, Memory, Disk) and Queue adapters
108
+ (Service Bus, SQL, Memory) now emit OTel-compliant span names and attributes via
109
+ the new `@effect-app/infra/otel` helper module.
110
+
111
+ Span name convention: `<operation> <collection|destination>` (low cardinality).
112
+
113
+ Attribute key migration:
114
+
115
+ | Old | New |
116
+ | --------------------------------------------------- | --------------------------------------------------------------------------------- |
117
+ | `repository.table_name` / `repository.container_id` | `db.collection.name` |
118
+ | `repository.namespace` | `db.namespace` |
119
+ | `repository.model_name` / `itemType` | `app.entity` |
120
+ | `id` / `itemId` (entity span attr) | `app.entity.id` |
121
+ | `itemIds` | `app.entity.ids` |
122
+ | `db.cosmos.request_charge` | `azure.cosmosdb.operation.request_charge` |
123
+ | `db.cosmos.resource_count` | `db.response.returned_rows` |
124
+ | `db.cosmos.response_bytes` | `db.response.body.size` |
125
+ | `disk.file` / `disk.file_size` | `disk.file.path` / `disk.file.size` |
126
+ | `queue.name` | `messaging.destination.name` |
127
+ | `queue.sessionId` | `messaging.message.conversation_id` |
128
+ | `queue.type` | `messaging.system` |
129
+ | `queue.input` (full body) | `messaging.message.body` (+ `messaging.message.id`, `messaging.message.type`) |
130
+ | `message_tags` | `messaging.message.types` + `messaging.batch.message_count` |
131
+ | `request.name` | `code.function.name` (from `spanAttributes`) / `rpc.method` (middleware) |
132
+ | `request.locale` | `app.locale` |
133
+ | `request.namespace` | `app.tenant.id` |
134
+ | `request.source.id` | `client.id` |
135
+ | `request.user.sub` / `.roles` | `user.id` / `user.roles` |
136
+ | `requestInput` | `rpc.request.payload` |
137
+ | `connectionId` | `network.connection.id` |
138
+ | Span `Request.<module>.<method>` | Span `<module>/<method>` + `rpc.system`/`rpc.service`/`rpc.method` (kind: server) |
139
+ | `<spanPrefix>.<op>` (SQL/Model) | OTel db span via `withDbSpan`, with `dbSystem?` option |
140
+
141
+ New attributes added:
142
+
143
+ - `db.system.name` — e.g. `postgresql`, `sqlite`, `cosmosdb`, `memory`, `disk`
144
+ - `db.operation.name` — e.g. `find`, `all`, `filter`, `set`
145
+ - `db.query.text` — sanitized / parameterized SQL or Cosmos query (no bound values)
146
+ - `messaging.operation.name` — `publish`, `process`, `receive`
147
+
148
+ Breaking: dashboards/alerts keying on the previous attribute names must be
149
+ updated. Queue consumer spans no longer log raw message bodies — use
150
+ `messaging.message.id` and `messaging.message.type` instead.
151
+
152
+ ### Patch Changes
153
+
154
+ - effect-app@4.0.0-beta.210
155
+
156
+ ## 4.0.0-beta.209
157
+
158
+ ### Patch Changes
159
+
160
+ - c991be1: update packages
161
+ - Updated dependencies [c991be1]
162
+ - Updated dependencies [3bae238]
163
+ - effect-app@4.0.0-beta.209
164
+
165
+ ## 4.0.0-beta.208
166
+
167
+ ### Patch Changes
168
+
169
+ - effect-app@4.0.0-beta.208
170
+
171
+ ## 4.0.0-beta.207
172
+
173
+ ### Patch Changes
174
+
175
+ - b0db40f: Router handlers are now discriminated by `Resource[K]["stream"]`:
176
+
177
+ - Stream resources (`stream: true`) accept only `(req) => Stream<...>` handlers.
178
+ - Non-stream resources accept only `(req) => Effect<...>` (or generator yielding `Yieldable`).
179
+
180
+ Mixing — e.g. returning `Effect.fail(...)` or `Effect<Stream<...>>` from a stream handler — no longer type-checks.
181
+
182
+ The runtime `Stream.unwrap` branch that lifted `Effect`/`Effect<Stream>` returns into a `Stream` is removed; handlers for stream resources must return a `Stream` directly. Migrate `Effect.gen(...).pipe(Stream.unwrap)` patterns by returning the `Stream` directly, and convert `Effect.fail(err)` in stream handlers to `Stream.fail(err)`.
183
+
184
+ - Updated dependencies [8fffc3c]
185
+ - effect-app@4.0.0-beta.207
186
+
187
+ ## 4.0.0-beta.206
188
+
189
+ ### Patch Changes
190
+
191
+ - 54bfc59: Require middleware to flow through `makeRpcClient` and the live layer through `makeRouter`.
192
+
193
+ ### `makeRpcClient(middleware, generalErrors?)`
194
+
195
+ Signature drops the `rcs` (request-context map wrapper) parameter. `rcs` was only load-bearing on the type side for `RequestConfig` inference; that information is now derived from `middleware.requestContextMap`. `middleware` is required — the previous "rcs + optional middleware" overload is gone.
196
+
197
+ **Migration**:
198
+
199
+ ```diff
200
+ -makeRpcClient(RequestContextMap, undefined, AppMiddleware)
201
+ +makeRpcClient(AppMiddleware)
202
+ ```
203
+
204
+ For tests/clients without a real middleware, build a minimal stub (`{ requestContextMap, requestContext }`) or pass any value satisfying `ClientMiddleware<RCM>`.
205
+
206
+ ### `makeRouter(middlewareLive)`
207
+
208
+ `makeRouter()` no longer infers the live middleware layer from `meta.middleware.Default`. The Live layer is now passed explicitly to `makeRouter`, and the request classes only carry the middleware tag (schema-only). This decouples the router from any assumption that the middleware tag exposes a `Default` static.
209
+
210
+ **Migration**:
211
+
212
+ ```diff
213
+ -export const { Router, matchAll } = makeRouter()
214
+ +export const { Router, matchAll } = makeRouter(AppMiddleware.Default)
215
+ ```
216
+
217
+ - Updated dependencies [54bfc59]
218
+ - effect-app@4.0.0-beta.206
219
+
220
+ ## 4.0.0-beta.205
221
+
222
+ ### Patch Changes
223
+
224
+ - Updated dependencies [f313973]
225
+ - effect-app@4.0.0-beta.205
226
+
227
+ ## 4.0.0-beta.204
228
+
229
+ ### Patch Changes
230
+
231
+ - Updated dependencies [0a0030f]
232
+ - effect-app@4.0.0-beta.204
233
+
234
+ ## 4.0.0-beta.203
235
+
236
+ ### Patch Changes
237
+
238
+ - Updated dependencies [992d9fa]
239
+ - effect-app@4.0.0-beta.203
240
+
241
+ ## 4.0.0-beta.202
242
+
243
+ ### Patch Changes
244
+
245
+ - Updated dependencies [1186b09]
246
+ - effect-app@4.0.0-beta.202
247
+
248
+ ## 4.0.0-beta.201
249
+
250
+ ### Patch Changes
251
+
252
+ - d67d17a: Source middleware errors exclusively from the rpc middleware tag, and move command/stream invalidation wrap/unwrap entirely into the routing layer (server) and `apiClientFactory` (client). `InvalidationMiddleware` and `InvalidationMiddlewareLive` are removed.
253
+
254
+ ### Resource error schemas
255
+
256
+ Three sites that used to fold `RequestContextMap[*].error` into a request's own error schema now stop doing so:
257
+
258
+ - `makeRpcClient` / `makeRequestClass` — `failureSchema` is just `config.error` (still merged with the optional `generalErrors` parameter, which is the only remaining error mix on both type and runtime levels).
259
+ - `MiddlewareMaker.rpc()` — `error: options.error` only; the previous union with `rcm.config[*].error` is gone.
260
+ - Routing and `apiClientFactory.makeRpcGroupFromRequestsAndModuleName` — `Invalidation.makeCommandRpc` is called with `error: resource.error` (no widening with the composite middleware error union).
261
+
262
+ Middleware errors reach the client through the rpc's `middlewares[*].error` failure-union channel of `Rpc.exitSchema`, exposed by attaching the middleware tag to the rpc on both sides:
263
+
264
+ - **Server**: `makeRouter(middleware)` attaches the live composite tag (existing behavior).
265
+ - **Client**: new `middleware` option on `ClientForOptions` / `ApiClientFactory.makeFor(layer, { middleware })` attaches the same tag schema-only (no Live invoked). Threaded through `makeRpcGroupFromRequestsAndModuleName` to `RpcGroup.middleware(tag)`. Without it, stream rpcs (whose top-level `errorSchema` is forced to `Never` by effect-rpc) hit `SchemaError: Expected never | { _tag: "error", ... }` decoding middleware-thrown errors that bypass the in-stream `Stream.catch` wrap.
266
+
267
+ **Migration**: handlers that yield errors previously sourced from rcm (e.g. `yield* new UnauthorizedError()`) now require those errors to be declared explicitly on the resource — `Req.Query<T>()("...", fields, { success, error: UnauthorizedError })`. The handler error type no longer auto-includes the rcm union.
268
+
269
+ ### Invalidation wrap/unwrap
270
+
271
+ - `routing.ts` (server) provides a per-request `InvalidationSet` for commands, wraps the success value as `CommandResponseWithMetaData`, and converts handler-thrown failures into `CommandFailureWithMetaData` so accumulated invalidation keys reach the client on either path. Stream wrap (per-chunk envelope + final `done` chunk) was already in routing and is unchanged.
272
+ - `apiClientFactory.ts` (client) `unwrapCommand` strips both envelopes and forwards keys to `InvalidationKeysFromServer`.
273
+ - `InvalidationMiddleware` (the tag) and `InvalidationMiddlewareLive` (the layer) are **removed**. The middleware was the previous home of the wrap; with the wrap moved to routing/apiClientFactory, the middleware became a thin pass-through and is no longer needed. `DefaultGenericMiddlewares` and `DefaultGenericMiddlewaresLive` shrink accordingly — no migration needed for callers that used the defaults; callers that referenced `InvalidationMiddleware` / `InvalidationMiddlewareLive` directly should drop those imports.
274
+
275
+ Middleware-thrown errors are never wrapped: by definition the handler never ran, so there is nothing to invalidate. They flow raw on the Cause and the client decodes them via the middleware-tag failure-union channel described above.
276
+
277
+ - Updated dependencies [d67d17a]
278
+ - effect-app@4.0.0-beta.201
279
+
280
+ ## 4.0.0-beta.200
281
+
282
+ ### Patch Changes
283
+
284
+ - 0cff7c1: workaround middleware error issue
285
+ - Updated dependencies [8f1cf6a]
286
+ - Updated dependencies [0cff7c1]
287
+ - effect-app@4.0.0-beta.200
288
+
289
+ ## 4.0.0-beta.199
290
+
291
+ ### Patch Changes
292
+
293
+ - de9fb83: Annotate Cosmos read spans with response size, resource count, and request charge.
294
+
295
+ `Cosmos.queryRaw`, `Cosmos.all`, `Cosmos.filter`, and `Cosmos.find` now set `db.cosmos.request_charge`, `db.cosmos.response_bytes`, and (where applicable) `db.cosmos.resource_count` on the active span. Bytes are sourced from `diagnostics.clientSideRequestStatistics.totalResponsePayloadLengthInBytes` — no payload stringification.
296
+
297
+ - effect-app@4.0.0-beta.199
298
+
299
+ ## 4.0.0-beta.198
300
+
301
+ ### Patch Changes
302
+
303
+ - 32dbc54: fix stream type when no success specified
304
+ - Updated dependencies [32dbc54]
305
+ - effect-app@4.0.0-beta.198
306
+
307
+ ## 4.0.0-beta.197
308
+
309
+ ### Minor Changes
310
+
311
+ - 3dc0d2a: Add streaming as a `stream: true` config option on `Query` / `Command` instead of a separate request type.
312
+
313
+ `TaggedRequestFor` now exposes only `Query` and `Command` factories — the standalone `Stream` factory is removed. To produce a Stream of `success` values, pass `stream: true` in the request config. The request `type` field stays `"command" | "query"`; a new `stream: boolean` field carries the streaming flag (stripped from the stored handler config).
314
+
315
+ ```ts
316
+ // Query that streams results
317
+ Req.Query<T>()("Tag", {}, { stream: true, success: ... })
318
+
319
+ // Command that streams results
320
+ Req.Command<T>()("Tag", {}, { stream: true, success: ... })
321
+ ```
322
+
323
+ Vue client mapping (per-handler properties mirror the non-stream API — `.query`, `.fn`, `.mutate`):
324
+
325
+ - `query` + `stream: true` → exposes `.query` (read-only streaming, tracked Vue Query). Helper map key: `${name}Query`.
326
+ - `command` + `stream: true` → exposes `.fn` and `.mutate` (mutating streaming).
327
+ - Plain `query` / `command` unchanged.
328
+
329
+ Server routing dispatches via the new `stream` flag (`makeStreamRpc` for streaming commands/queries, `makeCommandRpc` / `Rpc.make` otherwise).
330
+
331
+ Also lifts the `Struct` / `TaggedStruct` and `Opaque` definitions in `effect-app/Schema` to use `S.Bottom` / `S.Opaque` directly, exposing `fields`, `mapFields`, and a `MakeIn` that allows `void` when all fields are optional. `TaggedRequestFor` request classes now use `Opaque(TaggedStruct(...))` instead of `TaggedClass`, and decoding/encoding services are derived from `success` / `error` rather than stored on the request.
332
+
333
+ **Migration**: replace `Req.Stream` with `Req.Query` or `Req.Command` and add `stream: true` to the config — `Query` for read-only streams, `Command` for mutating streams.
334
+
335
+ ### Patch Changes
336
+
337
+ - Updated dependencies [3dc0d2a]
338
+ - effect-app@4.0.0-beta.197
339
+
340
+ ## 4.0.0-beta.196
341
+
342
+ ### Patch Changes
343
+
344
+ - effect-app@4.0.0-beta.196
345
+
346
+ ## 4.0.0-beta.195
347
+
348
+ ### Patch Changes
349
+
350
+ - 774a9b3: `MiddlewareMaker.makeMiddlewareBasic` now derives each middleware's effective error from both the static `error` field on the tag AND the `rcm` config entry referenced by `dynamic.key`, rather than relying on the static field alone.
351
+
352
+ Middlewares declared with `dynamic: RequestContextMap.get("foo")` (instead of an explicit static `error: ...`) end up with `tag.error = Schema.Never` at runtime — `RpcMiddleware.Tag` defaults the static error to `Never` when not provided. The composite `MiddlewareMaker.Tag(...).middleware(...)` walked `make[*].error` to build its own error union, collapsing to `Union<Never, ...> ≡ Never`.
353
+
354
+ `Rpc.exitSchema` walks `rpc.middlewares[*].error` when building the wire-level failure union for every rpc kind. Empty-union meant middleware-thrown errors (`NotLoggedInError`, `UnauthorizedError`, etc.) never reached the wire schema. Query/command happened to work because their wire `errorSchema = resource.error` already covered the merge from `makeRpcClient`. Stream rpcs have `errorSchema` force-set to `Schema.Never` by effect-rpc, so the resource-level merge never reached the wire — middleware errors decoded as "Expected never, got X".
355
+
356
+ Per middleware, the new logic pushes both the static `_.error` (if non-`Never`) and `rcm[_.dynamic.key].error` (if non-`Never`) into the composite's failure union.
357
+
358
+ - Updated dependencies [774a9b3]
359
+ - effect-app@4.0.0-beta.195
360
+
361
+ ## 4.0.0-beta.194
362
+
363
+ ### Patch Changes
364
+
365
+ - effect-app@4.0.0-beta.194
366
+
367
+ ## 4.0.0-beta.193
368
+
369
+ ### Patch Changes
370
+
371
+ - 9569911: Stream resources accept `Effect.fail(...)` (and `Effect<Stream>`) from controller handlers — previously only `Stream.fail(...)` / a returned `Stream` worked. The router now lifts an Effect result to a Stream via `Stream.unwrap`, so failures from an `Effect` propagate as a failing Stream on the client, matching `Stream.fail(...)` behavior. Also removes the need for manual `.pipe(Stream.unwrap)` on generator handlers that return a `Stream`.
372
+ - effect-app@4.0.0-beta.193
373
+
374
+ ## 4.0.0-beta.192
375
+
376
+ ### Patch Changes
377
+
378
+ - dba5779: namespaces
379
+ - effect-app@4.0.0-beta.192
380
+
381
+ ## 4.0.0-beta.191
382
+
383
+ ### Patch Changes
384
+
385
+ - 50ce7e6: Replace typescript-eslint with oxlint-tsgolint for type-aware lint. Drop ESLint entirely from non-vue packages (cli, effect-app, infra) — they now use only `oxlint --type-aware`. Vue packages keep ESLint to run `@effect-app/no-await-effect` (no tsgolint equivalent) via `@typescript-eslint/parser` + `vue-eslint-parser`.
386
+ - Updated dependencies [50ce7e6]
387
+ - effect-app@4.0.0-beta.191
388
+
389
+ ## 4.0.0-beta.190
390
+
391
+ ### Patch Changes
392
+
393
+ - Updated dependencies [985176b]
394
+ - effect-app@4.0.0-beta.190
395
+
396
+ ## 4.0.0-beta.189
397
+
398
+ ### Patch Changes
399
+
400
+ - ea32222: Update to effect 4.0.0-beta.60 and use native `Rpc.custom` constructors (`makeCommandRpc`, `makeStreamRpc`) for metadata-wrapped RPC schemas instead of manually wrapping/unwrapping schemas inline.
401
+ - Updated dependencies [ea32222]
402
+ - effect-app@4.0.0-beta.189
403
+
404
+ ## 4.0.0-beta.188
405
+
406
+ ### Patch Changes
407
+
408
+ - b2e438f: Remove Operations service and repo
409
+ - Updated dependencies [b2e438f]
410
+ - effect-app@4.0.0-beta.188
411
+
412
+ ## 4.0.0-beta.187
413
+
414
+ ### Patch Changes
415
+
416
+ - Updated dependencies [0d4e0b8]
417
+ - effect-app@4.0.0-beta.187
418
+
419
+ ## 4.0.0-beta.186
420
+
421
+ ### Patch Changes
422
+
423
+ - effect-app@4.0.0-beta.186
424
+
425
+ ## 4.0.0-beta.185
426
+
427
+ ### Patch Changes
428
+
429
+ - effect-app@4.0.0-beta.185
430
+
431
+ ## 4.0.0-beta.184
432
+
433
+ ### Patch Changes
434
+
435
+ - effect-app@4.0.0-beta.184
436
+
437
+ ## 4.0.0-beta.183
438
+
439
+ ### Patch Changes
440
+
441
+ - effect-app@4.0.0-beta.183
442
+
443
+ ## 4.0.0-beta.182
444
+
445
+ ### Patch Changes
446
+
447
+ - effect-app@4.0.0-beta.182
448
+
449
+ ## 4.0.0-beta.181
450
+
451
+ ### Patch Changes
452
+
453
+ - Updated dependencies [583393f]
454
+ - effect-app@4.0.0-beta.181
455
+
456
+ ## 4.0.0-beta.180
457
+
458
+ ### Minor Changes
459
+
460
+ - 7fa3045: V1/V2/V3: stream and command requests carry invalidation metadata
461
+
462
+ **V1** – stream final response includes metadata
463
+
464
+ - `Invalidation.StreamResponseChunk` wraps each stream item as `{ _tag: "value", value }` and appends `{ _tag: "done", metadata }` at the end carrying all accumulated invalidation keys.
465
+
466
+ **V2** – invalidation keys included in failures
467
+
468
+ - `Invalidation.CommandFailureWithMetaData` and `Invalidation.StreamFailureChunk` carry keys accumulated up to the point of failure, so clients can invalidate queries even when a command or stream errors.
469
+ - `InvalidationMiddlewareLive` wraps command failures; `routing.ts` wraps stream failures.
470
+ - `apiClientFactory.ts` unwraps both on the client side, forwarding keys before re-failing with the original error.
471
+
472
+ **V3** – mid-stream metadata chunks
473
+
474
+ - `Invalidation.StreamResponseChunk` now also includes `{ _tag: "metadata", metadata }` for mid-stream invalidation.
475
+ - After each emitted value, the server drains accumulated keys and emits a "metadata" chunk if any keys were collected since the last drain (bucket reset via `InvalidationSet.drain`).
476
+ - `apiClientFactory.ts` processes "metadata" chunks the same as "done" chunks, forwarding keys to `InvalidationKeysFromServer` immediately.
477
+ - `makeInvalidationKeysService` accepts an optional `onAdded` callback that fires after each key addition, enabling `mutate.ts` to trigger query invalidation mid-stream without waiting for the stream to complete.
478
+
479
+ ### Patch Changes
480
+
481
+ - Updated dependencies [7fa3045]
482
+ - effect-app@4.0.0-beta.180
483
+
484
+ ## 4.0.0-beta.179
485
+
486
+ ### Patch Changes
487
+
488
+ - Updated dependencies [828d264]
489
+ - effect-app@4.0.0-beta.179
490
+
491
+ ## 4.0.0-beta.178
492
+
493
+ ### Patch Changes
494
+
495
+ - effect-app@4.0.0-beta.178
496
+
497
+ ## 4.0.0-beta.177
498
+
499
+ ### Minor Changes
500
+
501
+ - 89d8b3a: Add Effect RPC `Stream` support to the wrapper.
502
+
503
+ - New `Stream` request constructor on `TaggedRequestFor` parallel to `Query`/`Command`. Emits resources with `type: "stream"`.
504
+ - Server router (`@effect-app/infra` `routing.ts`) accepts stream resources whose handlers return a `Stream.Stream<A, E, R>` (or a function from input to one). Forwards `stream: true` to `Rpc.make` so `RpcSchema.Stream` wrapping is applied. Streams bypass `applyRequestTypeInterruptibility` and the `Effect.withSpan` wrapping (the RPC server adds its own span).
505
+ - Client (`apiClientFactory.ts`) detects stream resources, forwards `stream: true` when constructing `RpcGroup`, and exposes the per-request `handler` as a `Stream.Stream` (via `Stream.unwrap` over the `ManagedRuntime` context) instead of an `Effect`. `Invalidation.CommandResponseWithMetaData` continues to apply only to commands.
506
+ - New `RequestStreamHandler` / `RequestStreamHandlerWithInput` shapes in `clientFor.ts`; `RequestHandlers` dispatches on `type: "stream"`.
507
+
508
+ ### Patch Changes
509
+
510
+ - Updated dependencies [89d8b3a]
511
+ - effect-app@4.0.0-beta.177
512
+
513
+ ## 4.0.0-beta.176
514
+
515
+ ### Patch Changes
516
+
517
+ - pass options
518
+ - Updated dependencies
519
+ - effect-app@4.0.0-beta.176
520
+
521
+ ## 4.0.0-beta.175
522
+
523
+ ### Patch Changes
524
+
525
+ - effect-app@4.0.0-beta.175
526
+
527
+ ## 4.0.0-beta.174
528
+
529
+ ### Minor Changes
530
+
531
+ - 821468d: Add server-driven cache invalidation via RPC response headers.
532
+
533
+ - `effect-app/rpc`: new `Invalidation` module with `InvalidationKey` / `InvalidationKeys` schemas, `Invalidates` annotation (for declaring static invalidation on Rpc definitions), `InvalidationSet` reference (request-scoped accumulator), and `makeInvalidationSet` helper.
534
+ - `effect-app/middleware`: new `InvalidationMiddleware` RPC middleware tag; included in `DefaultGenericMiddlewares`.
535
+ - `effect-app/client`: new `InvalidationKeys` module with `InvalidationKeysFromServer` reference and `makeInvalidationKeysService` helper; `apiClientFactory` now taps HTTP responses to read the `x-invalidate` header and forward keys to `InvalidationKeysFromServer`.
536
+ - `@effect-app/infra`: new `InvalidationMiddlewareLive` RPC middleware implementation that owns the full lifecycle — creates a request-scoped `InvalidationSet` (backed by a `Ref`), pre-populates it from the `Invalidates` annotation, provides it to the handler, and after the handler completes registers an HTTP pre-response handler (via `appendPreResponseHandlerUnsafe`) to write the accumulated keys as an `x-invalidate` response header. No separate HTTP middleware is needed.
537
+ - `@effect-app/vue`: `invalidateQueries` / `useMutation` now reads server-provided invalidation keys from `InvalidationKeysFromServer` after each mutation and applies them alongside the client-side invalidation.
538
+
539
+ ### Patch Changes
540
+
541
+ - Updated dependencies [821468d]
542
+ - effect-app@4.0.0-beta.174
543
+
544
+ ## 4.0.0-beta.173
545
+
546
+ ### Patch Changes
547
+
548
+ - effect-app@4.0.0-beta.173
549
+
550
+ ## 4.0.0-beta.172
551
+
552
+ ### Patch Changes
553
+
554
+ - improve sentry
555
+ - effect-app@4.0.0-beta.172
556
+
557
+ ## 4.0.0-beta.171
558
+
559
+ ### Patch Changes
560
+
561
+ - Updated dependencies [d71d976]
562
+ - effect-app@4.0.0-beta.171
563
+
564
+ ## 4.0.0-beta.170
565
+
566
+ ### Patch Changes
567
+
568
+ - Updated dependencies [8f09f77]
569
+ - effect-app@4.0.0-beta.170
570
+
571
+ ## 4.0.0-beta.169
572
+
573
+ ### Patch Changes
574
+
575
+ - Updated dependencies [8ae8b53]
576
+ - effect-app@4.0.0-beta.169
577
+
578
+ ## 4.0.0-beta.168
579
+
580
+ ### Patch Changes
581
+
582
+ - Updated dependencies [178480a]
583
+ - effect-app@4.0.0-beta.168
584
+
585
+ ## 4.0.0-beta.167
586
+
587
+ ### Patch Changes
588
+
589
+ - Updated dependencies [140e192]
590
+ - effect-app@4.0.0-beta.167
591
+
592
+ ## 4.0.0-beta.166
593
+
594
+ ### Patch Changes
595
+
596
+ - Updated dependencies [dbcc53b]
597
+ - effect-app@4.0.0-beta.166
598
+
599
+ ## 4.0.0-beta.165
600
+
601
+ ### Patch Changes
602
+
603
+ - Updated dependencies [f88ea34]
604
+ - effect-app@4.0.0-beta.165
605
+
606
+ ## 4.0.0-beta.164
607
+
608
+ ### Patch Changes
609
+
610
+ - Updated dependencies [8cb3de4]
611
+ - effect-app@4.0.0-beta.164
612
+
613
+ ## 4.0.0-beta.163
614
+
615
+ ### Patch Changes
616
+
617
+ - Updated dependencies [b952f19]
618
+ - effect-app@4.0.0-beta.163
619
+
620
+ ## 4.0.0-beta.162
621
+
622
+ ### Patch Changes
623
+
624
+ - Updated dependencies [b52b424]
625
+ - effect-app@4.0.0-beta.162
626
+
627
+ ## 4.0.0-beta.161
628
+
629
+ ### Patch Changes
630
+
631
+ - effect-app@4.0.0-beta.161
632
+
633
+ ## 4.0.0-beta.160
634
+
635
+ ### Patch Changes
636
+
637
+ - 505bfa9: Add concurrent decode helper APIs and migrate decode callsites to use them.
638
+
639
+ - Add `withDefaultParseOptions` and keep `DefaultParseOptions` centralized.
640
+ - Export `decodeEffectConcurrently` and `decodeUnknownEffectConcurrently` from Schema and SchemaParser modules.
641
+ - Update repository, queue, client, form, and CLI decode paths to use concurrent decode helpers.
642
+ - Keep schema constructors free of hardcoded parse concurrency overrides.
643
+
644
+ - Updated dependencies [505bfa9]
645
+ - effect-app@4.0.0-beta.160
646
+
647
+ ## 4.0.0-beta.159
648
+
649
+ ### Patch Changes
650
+
651
+ - c1e73de:
652
+ - Updated dependencies [c1e73de]
653
+ - effect-app@4.0.0-beta.159
654
+
655
+ ## 4.0.0-beta.158
656
+
657
+ ### Patch Changes
658
+
659
+ - Updated dependencies [3c1f52d]
660
+ - Updated dependencies [6ae3050]
661
+ - effect-app@4.0.0-beta.158
662
+
663
+ ## 4.0.0-beta.157
664
+
665
+ ### Patch Changes
666
+
667
+ - 6fff09c: unify encoded function for when you use encodedKeys
668
+ - Updated dependencies [6fff09c]
669
+ - effect-app@4.0.0-beta.157
670
+
671
+ ## 4.0.0-beta.156
672
+
673
+ ### Patch Changes
674
+
675
+ - effect-app@4.0.0-beta.156
676
+
677
+ ## 4.0.0-beta.155
678
+
679
+ ### Patch Changes
680
+
681
+ - Updated dependencies [c215db8]
682
+ - effect-app@4.0.0-beta.155
683
+
684
+ ## 4.0.0-beta.154
685
+
686
+ ### Patch Changes
687
+
688
+ - effect-app@4.0.0-beta.154
689
+
690
+ ## 4.0.0-beta.153
691
+
692
+ ### Patch Changes
693
+
694
+ - effect-app@4.0.0-beta.153
695
+
696
+ ## 4.0.0-beta.152
697
+
698
+ ### Patch Changes
699
+
700
+ - effect-app@4.0.0-beta.152
701
+
702
+ ## 4.0.0-beta.151
703
+
704
+ ### Patch Changes
705
+
706
+ - 925214b: update packages
707
+ - effect-app@4.0.0-beta.151
708
+
709
+ ## 4.0.0-beta.150
710
+
711
+ ### Patch Changes
712
+
713
+ - Updated dependencies [85a8275]
714
+ - effect-app@4.0.0-beta.150
715
+
716
+ ## 4.0.0-beta.149
717
+
718
+ ### Patch Changes
719
+
720
+ - Updated dependencies [f317c5e]
721
+ - effect-app@4.0.0-beta.149
722
+
723
+ ## 4.0.0-beta.148
724
+
725
+ ### Patch Changes
726
+
727
+ - Updated dependencies [199e9a5]
728
+ - effect-app@4.0.0-beta.148
729
+
730
+ ## 4.0.0-beta.147
731
+
732
+ ### Patch Changes
733
+
734
+ - Updated dependencies [47e3742]
735
+ - effect-app@4.0.0-beta.147
736
+
737
+ ## 4.0.0-beta.146
738
+
739
+ ### Patch Changes
740
+
741
+ - Updated dependencies [a4dff57]
742
+ - effect-app@4.0.0-beta.146
743
+
744
+ ## 4.0.0-beta.145
745
+
746
+ ### Patch Changes
747
+
748
+ - Updated dependencies [12abb55]
749
+ - effect-app@4.0.0-beta.145
750
+
751
+ ## 4.0.0-beta.144
752
+
753
+ ### Patch Changes
754
+
755
+ - d31253f: Refactor eligible schema classes and tagged classes to Opaque schemas, and migrate constructor call sites to use `.make` for those models.
756
+ - Updated dependencies [11422f8]
757
+ - Updated dependencies [d31253f]
758
+ - effect-app@4.0.0-beta.144
759
+
760
+ ## 4.0.0-beta.143
761
+
762
+ ### Patch Changes
763
+
764
+ - Updated dependencies [79eb019]
765
+ - effect-app@4.0.0-beta.143
766
+
767
+ ## 4.0.0-beta.142
768
+
769
+ ### Patch Changes
770
+
771
+ - Updated dependencies [3436d44]
772
+ - Updated dependencies [025de47]
773
+ - effect-app@4.0.0-beta.142
774
+
775
+ ## 4.0.0-beta.141
776
+
777
+ ### Patch Changes
778
+
779
+ - Updated dependencies [7c25dbb]
780
+ - effect-app@4.0.0-beta.141
781
+
782
+ ## 4.0.0-beta.140
783
+
784
+ ### Patch Changes
785
+
786
+ - 1576688: Add configurable `fakeMailAddress` to `SendgridConfig`. Supports `{i}` placeholder for unique addresses, e.g. `"test+{i}@example.com"`.
787
+ - effect-app@4.0.0-beta.140
788
+
789
+ ## 4.0.0-beta.139
790
+
791
+ ### Patch Changes
792
+
793
+ - effect-app@4.0.0-beta.139
794
+
795
+ ## 4.0.0-beta.138
796
+
797
+ ### Patch Changes
798
+
799
+ - effect-app@4.0.0-beta.138
800
+
801
+ ## 4.0.0-beta.137
802
+
803
+ ### Patch Changes
804
+
805
+ - effect-app@4.0.0-beta.137
806
+
807
+ ## 4.0.0-beta.136
808
+
809
+ ### Patch Changes
810
+
811
+ - effect-app@4.0.0-beta.136
812
+
813
+ ## 4.0.0-beta.135
814
+
815
+ ### Patch Changes
816
+
817
+ - Updated dependencies [c7bbc41]
818
+ - effect-app@4.0.0-beta.135
819
+
820
+ ## 4.0.0-beta.134
821
+
822
+ ### Patch Changes
823
+
824
+ - eed57c6: Fix `R` inference in `OneDSL`, `OneDSLExt.modify` and `OneDSLExt.update`. The callback's effect type was annotated as `Effect<…, E, FixEnv<R, Evt, S1, S2>>`, which deadlocked inference of `R` (TS6 fell back to `never`, tsgo to `unknown`, leaking `unknown` into yielded effects in generator handlers). Now matches the existing `AllDSLExt` pattern: bare `R` in the callback, `FixEnv<R, …>` only in the return type.
825
+ - Updated dependencies [9d3495e]
826
+ - Updated dependencies [f353d48]
827
+ - effect-app@4.0.0-beta.134
828
+
829
+ ## 4.0.0-beta.133
830
+
831
+ ### Patch Changes
832
+
833
+ - 2f862a4: Apply `toCodecJson` in `SQLModel.JsonFromString` so SQL JSON string fields use the proper JSON-safe codec at the encode/decode boundary (aligns with queue, event, and gist call sites).
834
+ - c3299f7: update packages
835
+ - Updated dependencies [c3299f7]
836
+ - effect-app@4.0.0-beta.133
837
+
838
+ ## 4.0.0-beta.132
839
+
840
+ ### Patch Changes
841
+
842
+ - effect-app@4.0.0-beta.132
843
+
844
+ ## 4.0.0-beta.131
845
+
846
+ ### Patch Changes
847
+
848
+ - 4a7d95a: Use request-type RPC annotations to drive interruptibility and retry behavior, apply command uninterruptibility through the router wrapper path, and add an in-memory E2E test covering command vs query interruption behavior.
849
+ - effect-app@4.0.0-beta.131
850
+
851
+ ## 4.0.0-beta.130
852
+
853
+ ### Patch Changes
854
+
855
+ - Updated dependencies [ea1bd46]
856
+ - effect-app@4.0.0-beta.130
857
+
858
+ ## 4.0.0-beta.129
859
+
860
+ ### Patch Changes
861
+
862
+ - effect-app@4.0.0-beta.129
863
+
864
+ ## 4.0.0-beta.128
865
+
866
+ ### Patch Changes
867
+
868
+ - Updated dependencies [57db551]
869
+ - effect-app@4.0.0-beta.128
870
+
871
+ ## 4.0.0-beta.127
872
+
873
+ ### Patch Changes
874
+
875
+ - 71a0719: Merge `batchPar` into `batch`, expose `concurrency` via an optional `BatchOptions` argument, and make `batch` dual (data-first + data-last).
876
+ - 4bc3d05: Repository `save`, `remove`, and `removeById` now accept plain `ReadonlyArray` instead of `NonEmptyReadonlyArray`. Callers no longer need to narrow or guard for non-emptiness before invoking — empty inputs short-circuit to a no-op, making it ergonomic to pass through query results directly.
877
+ - effect-app@4.0.0-beta.127
878
+
879
+ ## 4.0.0-beta.126
880
+
881
+ ### Patch Changes
882
+
883
+ - Updated dependencies [458bb1b]
884
+ - effect-app@4.0.0-beta.126
885
+
886
+ ## 4.0.0-beta.125
887
+
888
+ ### Patch Changes
889
+
890
+ - 7191fc1: `removeById` now takes `id | NonEmptyReadonlyArray<id>` instead of a variadic rest, and the extended repo's `removeById` accepts a `batch` option to chunk large deletes — consistent with `save` and `remove`.
891
+ - effect-app@4.0.0-beta.125
892
+
893
+ ## 4.0.0-beta.124
894
+
895
+ ### Patch Changes
896
+
897
+ - c9e0c44: cleanup auth
898
+ - 256ae85: cleanup
899
+ - Updated dependencies [256ae85]
900
+ - effect-app@4.0.0-beta.124
901
+
902
+ ## 4.0.0-beta.123
903
+
904
+ ### Patch Changes
905
+
906
+ - Updated dependencies [14aba14]
907
+ - effect-app@4.0.0-beta.123
908
+
909
+ ## 4.0.0-beta.122
910
+
911
+ ### Patch Changes
912
+
913
+ - 27bf9b6: Fix `Repository.query` environment typing to exclude schema context provided through `makeRepo` options.
914
+ - e02a258: Add optional batching overloads for repository `save` and `remove` helpers.
915
+ - f052d38: Replace `(...) => Effect.gen` with `Effect.fnUntraced` and convert select multi-step `pipe` chains to `Effect.gen` across infra.
916
+ - Updated dependencies [f052d38]
917
+ - effect-app@4.0.0-beta.122
918
+
919
+ ## 4.0.0-beta.121
920
+
921
+ ### Patch Changes
922
+
923
+ - 1015582: Fix `Q.project` field selection with `Schema.encodeKeys` by deriving selected fields from the encoded schema shape.
924
+ - Updated dependencies [5ac46cb]
925
+ - effect-app@4.0.0-beta.121
926
+
927
+ ## 4.0.0-beta.120
928
+
929
+ ### Patch Changes
930
+
931
+ - Updated dependencies [f21190c]
932
+ - effect-app@4.0.0-beta.120
933
+
934
+ ## 4.0.0-beta.119
935
+
936
+ ### Patch Changes
937
+
938
+ - db7ba34: Filter SSE events stream by storeId namespace
939
+ - effect-app@4.0.0-beta.119
940
+
941
+ ## 4.0.0-beta.118
942
+
943
+ ### Patch Changes
944
+
945
+ - Update effect packages to 4.0.0-beta.52
946
+ - Updated dependencies [bd26832]
947
+ - Updated dependencies [08d2e70]
948
+ - Updated dependencies
949
+ - effect-app@4.0.0-beta.118
950
+
951
+ ## 4.0.0-beta.117
952
+
953
+ ### Patch Changes
954
+
955
+ - 1d85785: Wrap store seed effects with `Effect.uninterruptible` to prevent interruption during seeding
956
+ - effect-app@4.0.0-beta.117
957
+
958
+ ## 4.0.0-beta.116
959
+
960
+ ### Patch Changes
961
+
962
+ - 7d5cefc: SQL and Pg stores now scope seed migration records by namespace and table name in shared databases to avoid cross-namespace seed collisions.
963
+ - effect-app@4.0.0-beta.116
964
+
965
+ ## 4.0.0-beta.115
966
+
967
+ ### Patch Changes
968
+
969
+ - fe2caba: SQL and Pg stores: use separate `_migrations` table for seed tracking instead of inserting a marker row into the data table, preventing it from appearing in `all`/`filter` queries.
970
+ - effect-app@4.0.0-beta.115
971
+
972
+ ## 4.0.0-beta.114
973
+
974
+ ### Patch Changes
975
+
976
+ - 1ab3cf7: SQLite per-namespace adapter: use separate `_migrations` table for seed tracking instead of inserting a marker row into the data table, preventing it from appearing in `all`/`filter` queries.
977
+ - effect-app@4.0.0-beta.114
978
+
979
+ ## 4.0.0-beta.113
980
+
981
+ ### Minor Changes
982
+
983
+ - ddc5492: Add RepositoryRegistry service that tracks all repositories by modelName, with `seedNamespace` to seed all registered repos in parallel and `entries` to inspect the registry.
984
+
985
+ Make non-primary namespace seeding explicit: Store and Repository now expose `seedNamespace` instead of auto-seeding on access. Primary namespace is still seeded eagerly on initialization.
986
+
987
+ SQL stores: table creation (`CREATE TABLE IF NOT EXISTS`) is now part of `seedNamespace` instead of running eagerly at store construction, ensuring tables for non-primary namespaces are only created when explicitly seeded.
988
+
989
+ ### Patch Changes
990
+
991
+ - effect-app@4.0.0-beta.113
992
+
993
+ ## 4.0.0-beta.112
994
+
995
+ ### Patch Changes
996
+
997
+ - 8a4a6d2: fup
998
+ - effect-app@4.0.0-beta.112
999
+
1000
+ ## 4.0.0-beta.111
1001
+
1002
+ ### Patch Changes
1003
+
1004
+ - ca94edf: fix typo
1005
+ - Updated dependencies [ca94edf]
1006
+ - effect-app@4.0.0-beta.111
1007
+
1008
+ ## 4.0.0-beta.110
1009
+
1010
+ ### Minor Changes
1011
+
1012
+ - c313c07: Add per-namespace in-memory SQLite adapter via LayerMap. When `makeSqlClientLayer` option is provided to `SQLiteStoreLayer`, each namespace gets its own SQLite database instance managed by a `LayerMap`. Introduces `WithNsTransaction` service for namespace-aware SQL transactions, used by `makeSqlTransactionMiddleware`.
1013
+
1014
+ ### Patch Changes
1015
+
1016
+ - effect-app@4.0.0-beta.110
1017
+
1018
+ ## 4.0.0-beta.109
1019
+
1020
+ ### Patch Changes
1021
+
1022
+ - 82f66f1: use uninterruptiple
1023
+ - effect-app@4.0.0-beta.109
1024
+
1025
+ ## 4.0.0-beta.108
1026
+
1027
+ ### Patch Changes
1028
+
1029
+ - Updated dependencies [3e46e7b]
1030
+ - effect-app@4.0.0-beta.108
1031
+
1032
+ ## 4.0.0-beta.107
1033
+
1034
+ ### Patch Changes
1035
+
1036
+ - 902ca1b: fix
1037
+ - effect-app@4.0.0-beta.107
1038
+
1039
+ ## 4.0.0-beta.106
1040
+
1041
+ ### Patch Changes
1042
+
1043
+ - f22a026: Use `Effect.cached` in `getOrCreateStoreEffect` for proper memoization of the resolver effect.
1044
+ - effect-app@4.0.0-beta.106
1045
+
1046
+ ## 4.0.0-beta.105
1047
+
1048
+ ### Minor Changes
1049
+
1050
+ - 3d732b1: Rewrite `withRequestResolverCache` to use official `RequestResolver.withCache`, creating a cached resolver per ContextMap via `getOrCreateStoreEffect` with semaphore-guarded initialization.
1051
+
1052
+ ### Patch Changes
1053
+
1054
+ - 47e53f5: Fix `withRequestResolverCache` causing "RequestResolver did not complete request" errors by using the `preCheck` hook instead of handling cache in `runAll`. Cache hits for in-flight or completed requests are now handled before entries enter the batch, preventing uncompleted entries.
1055
+ - 5773159: Add `itemType` annotation to all repository spans
1056
+ - effect-app@4.0.0-beta.105
1057
+
1058
+ ## 4.0.0-beta.104
1059
+
1060
+ ### Patch Changes
1061
+
1062
+ - Updated dependencies [e944bca]
1063
+ - effect-app@4.0.0-beta.104
1064
+
1065
+ ## 4.0.0-beta.103
1066
+
1067
+ ### Patch Changes
1068
+
1069
+ - Updated dependencies [7119320]
1070
+ - effect-app@4.0.0-beta.103
1071
+
1072
+ ## 4.0.0-beta.102
1073
+
1074
+ ### Patch Changes
1075
+
1076
+ - 62627e9: Fix boolean handling in SQL SELECT and WHERE
1077
+ - effect-app@4.0.0-beta.102
1078
+
1079
+ ## 4.0.0-beta.101
1080
+
1081
+ ### Patch Changes
1082
+
1083
+ - effect-app@4.0.0-beta.101
1084
+
1085
+ ## 4.0.0-beta.100
1086
+
1087
+ ### Patch Changes
1088
+
1089
+ - 43611c7: enable cosmosdb large partition key hashes
1090
+ - effect-app@4.0.0-beta.100
1091
+
1092
+ ## 4.0.0-beta.99
1093
+
1094
+ ### Patch Changes
1095
+
1096
+ - 6a0e008: remove artificial Cosmos bulkSet delays
1097
+ - effect-app@4.0.0-beta.99
1098
+
1099
+ ## 4.0.0-beta.98
1100
+
1101
+ ### Patch Changes
1102
+
1103
+ - 5aed2e3: Add span to Cosmos `batchRemove` and include `namespace` attribute on all Cosmos store spans.
1104
+ - effect-app@4.0.0-beta.98
1105
+
1106
+ ## 4.0.0-beta.97
1107
+
1108
+ ### Patch Changes
1109
+
1110
+ - 3eb66e9: Fix CosmosDB store `filter` to trigger namespace seeding on first access. Previously, if `filter` was the first operation called on a namespace, seed data was never created.
1111
+ - effect-app@4.0.0-beta.97
1112
+
1113
+ ## 4.0.0-beta.96
1114
+
1115
+ ### Patch Changes
1116
+
1117
+ - Updated dependencies [5615e47]
1118
+ - effect-app@4.0.0-beta.96
1119
+
1120
+ ## 4.0.0-beta.95
1121
+
1122
+ ### Patch Changes
1123
+
1124
+ - 88838fb: Remove pick/omit customizations from Class/TaggedClass/Struct/TaggedStruct. Use `Struct.pick(X.fields, [...])` from `effect-app` instead.
1125
+ - Updated dependencies [88838fb]
1126
+ - effect-app@4.0.0-beta.95
1127
+
1128
+ ## 4.0.0-beta.94
1129
+
1130
+ ### Patch Changes
1131
+
1132
+ - effect-app@4.0.0-beta.94
1133
+
1134
+ ## 4.0.0-beta.93
1135
+
1136
+ ### Patch Changes
1137
+
1138
+ - 2d85646: fix SQL includes-any/all double-quoting values for SQLite (JSON.stringify only needed for Postgres jsonb)
1139
+ - effect-app@4.0.0-beta.93
1140
+
1141
+ ## 4.0.0-beta.92
1142
+
1143
+ ### Patch Changes
1144
+
1145
+ - b4ffee0: fix SQL whereEvery double-negation bug causing wrong query when operators like notIn are used (especially with empty arrays)
1146
+ - effect-app@4.0.0-beta.92
1147
+
1148
+ ## 4.0.0-beta.91
1149
+
1150
+ ### Patch Changes
1151
+
1152
+ - Updated dependencies [738b482]
1153
+ - effect-app@4.0.0-beta.91
1154
+
1155
+ ## 4.0.0-beta.90
1156
+
1157
+ ### Patch Changes
1158
+
1159
+ - d786b91: Fix SQL `whereSome`/`whereEvery` array relation queries using `EXISTS` with `json_each` (SQLite) / `jsonb_array_elements` (Pg).
1160
+ - effect-app@4.0.0-beta.90
1161
+
1162
+ ## 4.0.0-beta.89
1163
+
1164
+ ### Patch Changes
1165
+
1166
+ - 9a9e46c: Fix SQL select queries to read `_etag` from column instead of JSON data, preventing INSERT on update.
1167
+ - effect-app@4.0.0-beta.89
1168
+
1169
+ ## 4.0.0-beta.88
1170
+
1171
+ ### Patch Changes
1172
+
1173
+ - dfd5562: Fix SQL `IN`/`NOT IN` with null values to use `IS NULL`/`IS NOT NULL` instead of `IN (NULL, ...)`.
1174
+ - effect-app@4.0.0-beta.88
1175
+
1176
+ ## 4.0.0-beta.87
1177
+
1178
+ ### Patch Changes
1179
+
1180
+ - 5a709d1: Fix SQLite select query type coercion using `json_quote` and apply defaultValues in SQL WHERE clauses via `COALESCE`.
1181
+ - effect-app@4.0.0-beta.87
1182
+
1183
+ ## 4.0.0-beta.86
1184
+
1185
+ ### Patch Changes
1186
+
1187
+ - 70f1f27: Fix store seeding: break circular dependency where bulkSet re-entered seedNamespace, and add explicit seed markers to SQL/Pg stores using a dedicated `__seed__` namespace.
1188
+ - effect-app@4.0.0-beta.86
1189
+
1190
+ ## 4.0.0-beta.85
1191
+
1192
+ ### Patch Changes
1193
+
1194
+ - db285e9: Add per-namespace seeding to SQL (SQLite/PostgreSQL) and CosmosDB store adapters. Previously only the `primary` namespace was seeded at initialization; now each namespace is lazily seeded on first access using `Effect.cached` to guarantee at-most-once execution. Primary namespace continues to seed eagerly on initialization. CosmosDB uses namespace-specific marker documents for backward compatibility.
1195
+ - effect-app@4.0.0-beta.85
1196
+
1197
+ ## 4.0.0-beta.84
1198
+
1199
+ ### Patch Changes
1200
+
1201
+ - c80e781: Fix SQLite store namespace parameter ordering in filter queries. The `_namespace` placeholder was prepended to the WHERE clause but its value was appended to the end of the positional params array, causing it to bind to the wrong placeholder. PostgreSQL was unaffected (uses indexed `$N` placeholders).
1202
+ - effect-app@4.0.0-beta.84
1203
+
1204
+ ## 4.0.0-beta.83
1205
+
1206
+ ### Patch Changes
1207
+
1208
+ - d1fc90a: Strip `_etag` and `id` from the `data` JSON column in SQL store adapters (SQLite + PostgreSQL). These fields are already stored as dedicated columns and were redundantly duplicated inside the JSON blob. On read, `parseRow` now re-injects `id` from the row column. Backward compatible: existing rows with `_etag`/`id` in `data` continue to work as the column values take precedence.
1209
+ - effect-app@4.0.0-beta.83
1210
+
1211
+ ## 4.0.0-beta.82
1212
+
1213
+ ### Minor Changes
1214
+
1215
+ - 48f1457: Add storage namespace support to CosmosDB adapter via partition key prefixing. When `allowNamespace` is configured, the namespace from `storeId` is prepended to partition key values (e.g., `test-ns::primary`), isolating data per namespace within the same container.
1216
+ - 48f1457: Add storage namespace support to SQL adapters (SQLite and Postgres) via a `_namespace` column. When `allowNamespace` is configured, a `_namespace` column with composite primary key `(id, _namespace)` isolates data per namespace within the same table. New tables get the schema automatically; existing tables require manual migration.
1217
+ - 48f1457: Add SQL Store adapter for Effect SQL (SQLite + PostgreSQL). Table-per-repo with id/etag/data JSON columns, query DSL translation to SQL WHERE clauses, optimistic concurrency via etag.
1218
+ - 48f1457: Make `withSqlTransaction` in `setupRequest` configurable via `withTransaction` option (defaults to `false`). Add `requiresTransactionConfig` and `makeSqlTransactionMiddleware` for per-RPC transaction control as a dynamic middleware that requires `SqlClient` directly. Transactions are disabled by default; opt in with `withTransaction: true` or `requiresTransaction: true`.
1219
+
1220
+ ### Patch Changes
1221
+
1222
+ - effect-app@4.0.0-beta.82
1223
+
1224
+ ## 4.0.0-beta.81
1225
+
1226
+ ### Minor Changes
1227
+
1228
+ - fd67f0b: Add `withRequestResolverCache` to scope RequestResolver cache to the ContextMap (request-scoped). Add `getOrCreateStore` to ContextMap for generic scoped storage.
1229
+
1230
+ ### Patch Changes
1231
+
1232
+ - effect-app@4.0.0-beta.81
1233
+
1234
+ ## 4.0.0-beta.80
1235
+
1236
+ ### Patch Changes
1237
+
1238
+ - eaf0115: enforce local
1239
+ - effect-app@4.0.0-beta.80
1240
+
1241
+ ## 4.0.0-beta.79
1242
+
1243
+ ### Patch Changes
1244
+
1245
+ - d16845e: Remove `TaggedRequest` from `makeRpcClient`, now only `TaggedRequestFor` is returned. Remove all legacy `meta.moduleName` support — `id` and `moduleName` are now required on `Req` type. Remove `makeRpcGroup` (use `makeRpcGroupFromRequestsAndModuleName` instead).
1246
+ - Updated dependencies [d16845e]
1247
+ - effect-app@4.0.0-beta.79
1248
+
1249
+ ## 4.0.0-beta.78
1250
+
1251
+ ### Minor Changes
1252
+
1253
+ - 818e047: Router `matchFor` no longer requires `meta` property on resource when requests carry `moduleName` from `TaggedRequestFor`
1254
+
1255
+ ### Patch Changes
1256
+
1257
+ - effect-app@4.0.0-beta.78
1258
+
1259
+ ## 4.0.0-beta.77
1260
+
1261
+ ### Patch Changes
1262
+
1263
+ - Updated dependencies [3613e87]
1264
+ - effect-app@4.0.0-beta.77
1265
+
1266
+ ## 4.0.0-beta.76
1267
+
1268
+ ### Patch Changes
1269
+
1270
+ - fac725d: update effect to latest beta
1271
+ - Updated dependencies [a5248a9]
1272
+ - Updated dependencies [fac725d]
1273
+ - effect-app@4.0.0-beta.76
1274
+
1275
+ ## 4.0.0-beta.75
1276
+
1277
+ ### Patch Changes
1278
+
1279
+ - Updated dependencies [24f0a5a]
1280
+ - effect-app@4.0.0-beta.75
1281
+
1282
+ ## 4.0.0-beta.74
1283
+
1284
+ ### Patch Changes
1285
+
1286
+ - Updated dependencies [54ec1ef]
1287
+ - effect-app@4.0.0-beta.74
1288
+
1289
+ ## 4.0.0-beta.73
1290
+
1291
+ ### Patch Changes
1292
+
1293
+ - b53c59e: fix signature
1294
+ - effect-app@4.0.0-beta.73
1295
+
1296
+ ## 4.0.0-beta.72
1297
+
1298
+ ### Patch Changes
1299
+
1300
+ - Updated dependencies [0541f0d]
1301
+ - effect-app@4.0.0-beta.72
1302
+
1303
+ ## 4.0.0-beta.71
1304
+
1305
+ ### Patch Changes
1306
+
1307
+ - beae3a0: Remove `withDefaultConstructor` wrapper, use `S.withConstructorDefault` directly with `Effect.succeed`/`Effect.sync`.
1308
+ - Updated dependencies [beae3a0]
1309
+ - effect-app@4.0.0-beta.71
1310
+
1311
+ ## 4.0.0-beta.70
1312
+
1313
+ ### Patch Changes
1314
+
1315
+ - fdb9cb3: cleanup
1316
+ - effect-app@4.0.0-beta.70
1317
+
1318
+ ## 4.0.0-beta.69
1319
+
1320
+ ### Patch Changes
1321
+
1322
+ - dc465e3: update to latest effect beta
1323
+ - Updated dependencies [dc465e3]
1324
+ - effect-app@4.0.0-beta.69
1325
+
1326
+ ## 4.0.0-beta.68
1327
+
1328
+ ### Patch Changes
1329
+
1330
+ - Updated dependencies [e6f2341]
1331
+ - effect-app@4.0.0-beta.68
1332
+
1333
+ ## 4.0.0-beta.67
1334
+
1335
+ ### Patch Changes
1336
+
1337
+ - effect-app@4.0.0-beta.67
1338
+
1339
+ ## 4.0.0-beta.66
1340
+
1341
+ ### Patch Changes
1342
+
1343
+ - Updated dependencies [edc52e4]
1344
+ - effect-app@4.0.0-beta.66
1345
+
1346
+ ## 4.0.0-beta.65
1347
+
1348
+ ### Patch Changes
1349
+
1350
+ - Updated dependencies [31739d7]
1351
+ - Updated dependencies [1f103b2]
1352
+ - effect-app@4.0.0-beta.65
1353
+
1354
+ ## 4.0.0-beta.64
1355
+
1356
+ ### Patch Changes
1357
+
1358
+ - Updated dependencies [c1a6fdc]
1359
+ - effect-app@4.0.0-beta.64
1360
+
1361
+ ## 4.0.0-beta.63
1362
+
1363
+ ### Patch Changes
1364
+
1365
+ - 1f9d7da: fix missing toCodecJson usages
1366
+ - effect-app@4.0.0-beta.63
1367
+
1368
+ ## 4.0.0-beta.62
1369
+
1370
+ ### Patch Changes
1371
+
1372
+ - Updated dependencies [0b21a02]
1373
+ - effect-app@4.0.0-beta.62
1374
+
1375
+ ## 4.0.0-beta.61
1376
+
1377
+ ### Patch Changes
1378
+
1379
+ - effect-app@4.0.0-beta.61
1380
+
1381
+ ## 4.0.0-beta.60
1382
+
1383
+ ### Patch Changes
1384
+
1385
+ - 29c39d2: Fix repository `find` with transformed id fields in tagged union schemas
1386
+ - effect-app@4.0.0-beta.60
1387
+
1388
+ ## 4.0.0-beta.59
1389
+
1390
+ ### Patch Changes
1391
+
1392
+ - cec026d: update packages
1393
+ - Updated dependencies [cec026d]
1394
+ - effect-app@4.0.0-beta.59
1395
+
1396
+ ## 4.0.0-beta.58
1397
+
1398
+ ### Patch Changes
1399
+
1400
+ - effect-app@4.0.0-beta.58
1401
+
1402
+ ## 4.0.0-beta.57
1403
+
1404
+ ### Patch Changes
1405
+
1406
+ - fbf47b8: Fix repository `find` with transformed id fields (e.g. composite ids using `decodeTo`)
1407
+ - effect-app@4.0.0-beta.57
1408
+
1409
+ ## 4.0.0-beta.56
1410
+
1411
+ ### Patch Changes
1412
+
1413
+ - effect-app@4.0.0-beta.56
1414
+
1415
+ ## 4.0.0-beta.55
1416
+
1417
+ ### Patch Changes
1418
+
1419
+ - effect-app@4.0.0-beta.55
1420
+
1421
+ ## 4.0.0-beta.54
1422
+
1423
+ ### Patch Changes
1424
+
1425
+ - d867272: the return of `Context`
1426
+ - Updated dependencies [d867272]
1427
+ - effect-app@4.0.0-beta.54
1428
+
1429
+ ## 4.0.0-beta.53
1430
+
1431
+ ### Patch Changes
1432
+
1433
+ - Updated dependencies [ee9694e]
1434
+ - effect-app@4.0.0-beta.53
1435
+
1436
+ ## 4.0.0-beta.52
1437
+
1438
+ ### Patch Changes
1439
+
1440
+ - Updated dependencies [6252808]
1441
+ - effect-app@4.0.0-beta.52
1442
+
1443
+ ## 4.0.0-beta.51
1444
+
1445
+ ### Patch Changes
1446
+
1447
+ - effect-app@4.0.0-beta.51
1448
+
1449
+ ## 4.0.0-beta.50
1450
+
1451
+ ### Patch Changes
1452
+
1453
+ - effect-app@4.0.0-beta.50
1454
+
1455
+ ## 4.0.0-beta.49
1456
+
1457
+ ### Patch Changes
1458
+
1459
+ - Updated dependencies [e585c9c]
1460
+ - effect-app@4.0.0-beta.49
1461
+
1462
+ ## 4.0.0-beta.48
1463
+
1464
+ ### Patch Changes
1465
+
1466
+ - Updated dependencies [0c88f78]
1467
+ - effect-app@4.0.0-beta.48
1468
+
1469
+ ## 4.0.0-beta.47
1470
+
1471
+ ### Patch Changes
1472
+
1473
+ - Updated dependencies [3365758]
1474
+ - effect-app@4.0.0-beta.47
1475
+
1476
+ ## 4.0.0-beta.46
1477
+
1478
+ ### Patch Changes
1479
+
1480
+ - effect-app@4.0.0-beta.46
1481
+
1482
+ ## 4.0.0-beta.45
1483
+
1484
+ ### Patch Changes
1485
+
1486
+ - 10b55ff: update packages
1487
+ - Updated dependencies [10b55ff]
1488
+ - effect-app@4.0.0-beta.45
1489
+
1490
+ ## 4.0.0-beta.44
1491
+
1492
+ ### Patch Changes
1493
+
1494
+ - a37aa38: Update to effect beta 43
1495
+ - Updated dependencies [a37aa38]
1496
+ - effect-app@4.0.0-beta.44
1497
+
1498
+ ## 4.0.0-beta.43
1499
+
1500
+ ### Patch Changes
1501
+
1502
+ - dab6992: no need for .lock.lock
1503
+ - effect-app@4.0.0-beta.43
1504
+
1505
+ ## 4.0.0-beta.42
1506
+
1507
+ ### Patch Changes
1508
+
1509
+ - effect-app@4.0.0-beta.42
1510
+
1511
+ ## 4.0.0-beta.41
1512
+
1513
+ ### Patch Changes
1514
+
1515
+ - effect-app@4.0.0-beta.41
1516
+
1517
+ ## 4.0.0-beta.40
1518
+
1519
+ ### Patch Changes
1520
+
1521
+ - effect-app@4.0.0-beta.40
1522
+
1523
+ ## 4.0.0-beta.39
1524
+
1525
+ ### Patch Changes
1526
+
1527
+ - Updated dependencies [10e90d5]
1528
+ - effect-app@4.0.0-beta.39
1529
+
1530
+ ## 4.0.0-beta.38
1531
+
1532
+ ### Patch Changes
1533
+
1534
+ - Updated dependencies [0b3e00e]
1535
+ - effect-app@4.0.0-beta.38
1536
+
1537
+ ## 4.0.0-beta.37
1538
+
1539
+ ### Patch Changes
1540
+
1541
+ - Updated dependencies [947fe20]
1542
+ - effect-app@4.0.0-beta.37
1543
+
1544
+ ## 4.0.0-beta.36
1545
+
1546
+ ### Patch Changes
1547
+
1548
+ - effect-app@4.0.0-beta.36
1549
+
1550
+ ## 4.0.0-beta.35
1551
+
1552
+ ### Patch Changes
1553
+
1554
+ - effect-app@4.0.0-beta.35
1555
+
1556
+ ## 4.0.0-beta.34
1557
+
1558
+ ### Patch Changes
1559
+
1560
+ - 8c645d5: update to latest effect
1561
+ - Updated dependencies [8c645d5]
1562
+ - effect-app@4.0.0-beta.34
1563
+
1564
+ ## 4.0.0-beta.33
1565
+
1566
+ ### Patch Changes
1567
+
1568
+ - 4b95009: use Finite instead of Number
1569
+ - Updated dependencies [4b95009]
1570
+ - effect-app@4.0.0-beta.33
1571
+
1572
+ ## 4.0.0-beta.32
1573
+
1574
+ ### Patch Changes
1575
+
1576
+ - Updated dependencies [01d862a]
1577
+ - effect-app@4.0.0-beta.32
1578
+
1579
+ ## 4.0.0-beta.31
1580
+
1581
+ ### Patch Changes
1582
+
1583
+ - Updated dependencies [6b6d601]
1584
+ - effect-app@4.0.0-beta.31
1585
+
1586
+ ## 4.0.0-beta.30
1587
+
1588
+ ### Patch Changes
1589
+
1590
+ - Updated dependencies [5ec1f45]
1591
+ - effect-app@4.0.0-beta.30
1592
+
1593
+ ## 4.0.0-beta.29
1594
+
1595
+ ### Patch Changes
1596
+
1597
+ - Updated dependencies [a899d46]
1598
+ - effect-app@4.0.0-beta.29
1599
+
1600
+ ## 4.0.0-beta.28
1601
+
1602
+ ### Patch Changes
1603
+
1604
+ - Updated dependencies [0099208]
1605
+ - effect-app@4.0.0-beta.28
1606
+
1607
+ ## 4.0.0-beta.27
1608
+
1609
+ ### Patch Changes
1610
+
1611
+ - 601a1ff: update effect to 4.0.0-beta.37 and drop the Schema Class disableValidation workaround now that the patched effect schema covers it
1612
+ - Updated dependencies [601a1ff]
1613
+ - effect-app@4.0.0-beta.27
1614
+
1615
+ ## 4.0.0-beta.26
1616
+
1617
+ ### Patch Changes
1618
+
1619
+ - Updated dependencies [4da28e2]
1620
+ - effect-app@4.0.0-beta.26
1621
+
1622
+ ## 4.0.0-beta.25
1623
+
1624
+ ### Patch Changes
1625
+
1626
+ - Updated dependencies [6282d4b]
1627
+ - effect-app@4.0.0-beta.25
1628
+
1629
+ ## 4.0.0-beta.24
1630
+
1631
+ ### Patch Changes
1632
+
1633
+ - Updated dependencies [32f71bf]
1634
+ - effect-app@4.0.0-beta.24
1635
+
1636
+ ## 4.0.0-beta.23
1637
+
1638
+ ### Patch Changes
1639
+
1640
+ - Updated dependencies [ea08a79]
1641
+ - effect-app@4.0.0-beta.23
1642
+
3
1643
  ## 4.0.0-beta.22
4
1644
 
5
1645
  ### Patch Changes