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

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