@effect-app/infra 4.0.0-beta.32 → 4.0.0-beta.321

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 (480) hide show
  1. package/CHANGELOG.md +2469 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +29 -10
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +36 -15
  6. package/dist/ClusterCosmos.d.ts +70 -0
  7. package/dist/ClusterCosmos.d.ts.map +1 -0
  8. package/dist/ClusterCosmos.js +576 -0
  9. package/dist/ClusterServiceBus.d.ts +67 -0
  10. package/dist/ClusterServiceBus.d.ts.map +1 -0
  11. package/dist/ClusterServiceBus.js +84 -0
  12. package/dist/ContextProvider.d.ts +34 -0
  13. package/dist/ContextProvider.d.ts.map +1 -0
  14. package/dist/ContextProvider.js +40 -0
  15. package/dist/Emailer/Sendgrid.d.ts +110 -146
  16. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  17. package/dist/Emailer/Sendgrid.js +24 -19
  18. package/dist/Emailer/fake.d.ts +1 -1
  19. package/dist/Emailer/fake.d.ts.map +1 -1
  20. package/dist/Emailer/fake.js +4 -4
  21. package/dist/MainFiberSet.d.ts +12 -8
  22. package/dist/MainFiberSet.d.ts.map +1 -1
  23. package/dist/MainFiberSet.js +23 -7
  24. package/dist/QueueMaker/errors.d.ts +4 -2
  25. package/dist/QueueMaker/errors.d.ts.map +1 -1
  26. package/dist/QueueMaker/errors.js +4 -2
  27. package/dist/{adapters/SQL → SQL}/Model.d.ts +31 -42
  28. package/dist/SQL/Model.d.ts.map +1 -0
  29. package/dist/SQL/Model.js +469 -0
  30. package/dist/SQL.d.ts.map +1 -0
  31. package/dist/{adapters/SQL.js → SQL.js} +1 -1
  32. package/dist/Store/Cosmos/query.d.ts +16 -4
  33. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  34. package/dist/Store/Cosmos/query.js +238 -42
  35. package/dist/Store/Cosmos.d.ts +2 -2
  36. package/dist/Store/Cosmos.d.ts.map +1 -1
  37. package/dist/Store/Cosmos.js +392 -256
  38. package/dist/Store/Disk.d.ts +4 -4
  39. package/dist/Store/Disk.d.ts.map +1 -1
  40. package/dist/Store/Disk.js +87 -42
  41. package/dist/Store/Memory.d.ts +7 -10
  42. package/dist/Store/Memory.d.ts.map +1 -1
  43. package/dist/Store/Memory.js +346 -76
  44. package/dist/Store/SQL/Pg.d.ts +4 -0
  45. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  46. package/dist/Store/SQL/Pg.js +257 -0
  47. package/dist/Store/SQL/query.d.ts +53 -0
  48. package/dist/Store/SQL/query.d.ts.map +1 -0
  49. package/dist/Store/SQL/query.js +656 -0
  50. package/dist/Store/SQL.d.ts +21 -0
  51. package/dist/Store/SQL.d.ts.map +1 -0
  52. package/dist/Store/SQL.js +478 -0
  53. package/dist/Store/codeFilter.d.ts +4 -4
  54. package/dist/Store/codeFilter.d.ts.map +1 -1
  55. package/dist/Store/codeFilter.js +71 -22
  56. package/dist/Store/index.d.ts +6 -4
  57. package/dist/Store/index.d.ts.map +1 -1
  58. package/dist/Store/index.js +18 -5
  59. package/dist/Store/jsonDocument.d.ts +13 -0
  60. package/dist/Store/jsonDocument.d.ts.map +1 -0
  61. package/dist/Store/jsonDocument.js +31 -0
  62. package/dist/Store/utils.d.ts +21 -2
  63. package/dist/Store/utils.d.ts.map +1 -1
  64. package/dist/Store/utils.js +253 -10
  65. package/dist/WorkflowEngineCosmos.d.ts +29 -0
  66. package/dist/WorkflowEngineCosmos.d.ts.map +1 -0
  67. package/dist/WorkflowEngineCosmos.js +542 -0
  68. package/dist/WorkflowEngineSqlite.d.ts +24 -0
  69. package/dist/WorkflowEngineSqlite.d.ts.map +1 -0
  70. package/dist/WorkflowEngineSqlite.js +550 -0
  71. package/dist/arbs.d.ts +6 -3
  72. package/dist/arbs.d.ts.map +1 -1
  73. package/dist/arbs.js +16 -4
  74. package/dist/codec.d.ts.map +1 -0
  75. package/dist/codec.js +5 -0
  76. package/dist/{adapters/cosmos-client.d.ts → cosmos-client.d.ts} +4 -2
  77. package/dist/cosmos-client.d.ts.map +1 -0
  78. package/dist/cosmos-client.js +11 -0
  79. package/dist/errorReporter.d.ts +6 -4
  80. package/dist/errorReporter.d.ts.map +1 -1
  81. package/dist/errorReporter.js +23 -27
  82. package/dist/fileUtil.d.ts +1 -1
  83. package/dist/fileUtil.d.ts.map +1 -1
  84. package/dist/fileUtil.js +2 -2
  85. package/dist/index.d.ts +2 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +3 -2
  88. package/dist/internal/RequestContextMiddleware.d.ts +5 -0
  89. package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
  90. package/dist/internal/RequestContextMiddleware.js +45 -0
  91. package/dist/internal/auth.d.ts +53 -0
  92. package/dist/internal/auth.d.ts.map +1 -0
  93. package/dist/internal/auth.js +180 -0
  94. package/dist/internal/events.d.ts +11 -0
  95. package/dist/internal/events.d.ts.map +1 -0
  96. package/dist/internal/events.js +49 -0
  97. package/dist/internal/health.d.ts.map +1 -0
  98. package/dist/internal/health.js +5 -0
  99. package/dist/{api/layerUtils.d.ts → layerUtils.d.ts} +14 -6
  100. package/dist/layerUtils.d.ts.map +1 -0
  101. package/dist/layerUtils.js +17 -0
  102. package/dist/logger/jsonLogger.d.ts +1 -1
  103. package/dist/logger/jsonLogger.d.ts.map +1 -1
  104. package/dist/logger/jsonLogger.js +5 -3
  105. package/dist/logger/logFmtLogger.d.ts +1 -1
  106. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  107. package/dist/logger/logFmtLogger.js +3 -3
  108. package/dist/logger/shared.d.ts +2 -2
  109. package/dist/logger/shared.d.ts.map +1 -1
  110. package/dist/logger/shared.js +6 -6
  111. package/dist/logger.d.ts +4 -4
  112. package/dist/logger.d.ts.map +1 -1
  113. package/dist/middlewares.d.ts.map +1 -0
  114. package/dist/{api/middlewares.js → middlewares.js} +1 -1
  115. package/dist/{adapters/mongo-client.d.ts → mongo-client.d.ts} +3 -2
  116. package/dist/mongo-client.d.ts.map +1 -0
  117. package/dist/mongo-client.js +15 -0
  118. package/dist/otel.d.ts +75 -0
  119. package/dist/otel.d.ts.map +1 -0
  120. package/dist/otel.js +84 -0
  121. package/dist/rateLimit.d.ts +11 -3
  122. package/dist/rateLimit.d.ts.map +1 -1
  123. package/dist/rateLimit.js +7 -12
  124. package/dist/{adapters/redis-client.d.ts → redis-client.d.ts} +5 -2
  125. package/dist/redis-client.d.ts.map +1 -0
  126. package/dist/redis-client.js +98 -0
  127. package/dist/{api/reportError.d.ts → reportError.d.ts} +1 -1
  128. package/dist/reportError.d.ts.map +1 -0
  129. package/dist/reportError.js +28 -0
  130. package/dist/{api/routing → routing}/middleware/RouterMiddleware.d.ts +4 -3
  131. package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
  132. package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
  133. package/dist/routing/middleware/middleware.d.ts +48 -0
  134. package/dist/routing/middleware/middleware.d.ts.map +1 -0
  135. package/dist/routing/middleware/middleware.js +152 -0
  136. package/dist/{api/routing → routing}/middleware.d.ts +0 -1
  137. package/dist/routing/middleware.d.ts.map +1 -0
  138. package/dist/{api/routing → routing}/middleware.js +1 -2
  139. package/dist/routing/schema/jwt.d.ts.map +1 -0
  140. package/dist/routing/schema/jwt.js +12 -0
  141. package/dist/routing/tsort.d.ts.map +1 -0
  142. package/dist/routing/tsort.js +51 -0
  143. package/dist/{api/routing → routing}/utils.d.ts +3 -3
  144. package/dist/routing/utils.d.ts.map +1 -0
  145. package/dist/routing/utils.js +45 -0
  146. package/dist/routing.d.ts +182 -0
  147. package/dist/routing.d.ts.map +1 -0
  148. package/dist/routing.js +256 -0
  149. package/dist/test.d.ts +2 -2
  150. package/dist/test.d.ts.map +1 -1
  151. package/dist/test.js +5 -5
  152. package/dist/util.d.ts.map +1 -0
  153. package/dist/util.js +14 -0
  154. package/docs/cluster-storage.md +26 -0
  155. package/docs/workflow-engine.md +262 -0
  156. package/examples/query.ts +49 -41
  157. package/package.json +38 -352
  158. package/src/CUPS.ts +54 -15
  159. package/src/ClusterCosmos.ts +1154 -0
  160. package/src/ClusterServiceBus.ts +244 -0
  161. package/src/{api/ContextProvider.ts → ContextProvider.ts} +20 -17
  162. package/src/Emailer/Sendgrid.ts +83 -60
  163. package/src/Emailer/fake.ts +4 -4
  164. package/src/MainFiberSet.ts +32 -13
  165. package/src/QueueMaker/errors.ts +3 -1
  166. package/src/{adapters/SQL → SQL}/Model.ts +42 -41
  167. package/src/SQL.ts +1 -0
  168. package/src/Store/Cosmos/query.ts +275 -55
  169. package/src/Store/Cosmos.ts +537 -367
  170. package/src/Store/Disk.ts +137 -74
  171. package/src/Store/Memory.ts +402 -113
  172. package/src/Store/SQL/Pg.ts +402 -0
  173. package/src/Store/SQL/query.ts +748 -0
  174. package/src/Store/SQL.ts +786 -0
  175. package/src/Store/codeFilter.ts +78 -28
  176. package/src/Store/index.ts +25 -10
  177. package/src/Store/jsonDocument.ts +43 -0
  178. package/src/Store/utils.ts +307 -30
  179. package/src/WorkflowEngineCosmos.ts +749 -0
  180. package/src/WorkflowEngineSqlite.ts +813 -0
  181. package/src/arbs.ts +20 -5
  182. package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
  183. package/src/errorReporter.ts +68 -78
  184. package/src/fileUtil.ts +1 -1
  185. package/src/index.ts +2 -1
  186. package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
  187. package/src/internal/auth.ts +272 -0
  188. package/src/{api/internal → internal}/events.ts +22 -13
  189. package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
  190. package/src/logger/jsonLogger.ts +5 -3
  191. package/src/logger/logFmtLogger.ts +3 -3
  192. package/src/logger/shared.ts +6 -5
  193. package/src/middlewares.ts +10 -0
  194. package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
  195. package/src/otel.ts +177 -0
  196. package/src/rateLimit.ts +35 -24
  197. package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
  198. package/src/{api/reportError.ts → reportError.ts} +3 -2
  199. package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
  200. package/src/routing/middleware/middleware.ts +196 -0
  201. package/src/routing/middleware.ts +4 -0
  202. package/src/{api/routing → routing}/schema/jwt.ts +2 -2
  203. package/src/{api/routing → routing}/utils.ts +2 -1
  204. package/src/routing.ts +823 -0
  205. package/src/test.ts +6 -6
  206. package/src/vitest.ts +1 -1
  207. package/test/auth.test.ts +101 -0
  208. package/test/cluster-cosmos.test.ts +612 -0
  209. package/test/cluster-servicebus.test.ts +180 -0
  210. package/test/cluster-sqlite.test.ts +207 -0
  211. package/test/contextProvider.test.ts +15 -12
  212. package/test/controller.test.ts +28 -32
  213. package/test/cosmos-query.test.ts +323 -0
  214. package/test/dist/auth.test.d.ts.map +1 -0
  215. package/test/dist/cluster-cosmos.test.d.ts.map +1 -0
  216. package/test/dist/cluster-servicebus.test.d.ts.map +1 -0
  217. package/test/dist/cluster-sqlite.test.d.ts.map +1 -0
  218. package/test/dist/contextProvider.test.d.ts.map +1 -1
  219. package/test/dist/controller.test.d.ts.map +1 -1
  220. package/test/dist/cosmos-query.test.d.ts.map +1 -0
  221. package/test/dist/fixtures.d.ts +29 -11
  222. package/test/dist/fixtures.d.ts.map +1 -1
  223. package/test/dist/fixtures.js +17 -10
  224. package/test/dist/json-lower.test.d.ts.map +1 -0
  225. package/test/dist/query.test.d.ts.map +1 -1
  226. package/test/dist/rawQuery.test.d.ts.map +1 -1
  227. package/test/dist/repository-ext.test.d.ts.map +1 -0
  228. package/test/dist/requires.test.d.ts.map +1 -1
  229. package/test/dist/router-generator.test.d.ts.map +1 -0
  230. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  231. package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
  232. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  233. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  234. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  235. package/test/dist/sql-store.test.d.ts.map +1 -0
  236. package/test/dist/workflow-engine-cosmos.test.d.ts.map +1 -0
  237. package/test/dist/workflow-engine-sqlite.test.d.ts.map +1 -0
  238. package/test/fixtures.ts +16 -9
  239. package/test/json-lower.test.ts +115 -0
  240. package/test/layerUtils.test.ts +2 -2
  241. package/test/query.test.ts +1384 -46
  242. package/test/rawQuery.test.ts +340 -22
  243. package/test/repository-ext.test.ts +456 -0
  244. package/test/requires.test.ts +10 -5
  245. package/test/router-generator.test.ts +187 -0
  246. package/test/routing-interruptibility.test.ts +66 -0
  247. package/test/rpc-context-map-streaming.test.ts +265 -0
  248. package/test/rpc-e2e-invalidation.test.ts +421 -0
  249. package/test/rpc-multi-middleware.test.ts +85 -10
  250. package/test/rpc-stream-fullstack.test.ts +307 -0
  251. package/test/sql-store.test.ts +1905 -0
  252. package/test/validateSample.test.ts +26 -14
  253. package/test/workflow-engine-cosmos.test.ts +345 -0
  254. package/test/workflow-engine-sqlite.test.ts +297 -0
  255. package/tsconfig.examples.json +1 -1
  256. package/tsconfig.json +9 -2
  257. package/tsconfig.src.json +35 -35
  258. package/tsconfig.test.json +2 -2
  259. package/dist/Emailer/service.d.ts +0 -55
  260. package/dist/Emailer/service.d.ts.map +0 -1
  261. package/dist/Emailer/service.js +0 -6
  262. package/dist/Emailer.d.ts +0 -2
  263. package/dist/Emailer.d.ts.map +0 -1
  264. package/dist/Emailer.js +0 -2
  265. package/dist/Model/Repository/ext.d.ts +0 -41
  266. package/dist/Model/Repository/ext.d.ts.map +0 -1
  267. package/dist/Model/Repository/ext.js +0 -65
  268. package/dist/Model/Repository/internal/internal.d.ts +0 -59
  269. package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
  270. package/dist/Model/Repository/internal/internal.js +0 -316
  271. package/dist/Model/Repository/legacy.d.ts +0 -19
  272. package/dist/Model/Repository/legacy.d.ts.map +0 -1
  273. package/dist/Model/Repository/legacy.js +0 -2
  274. package/dist/Model/Repository/makeRepo.d.ts +0 -49
  275. package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
  276. package/dist/Model/Repository/makeRepo.js +0 -24
  277. package/dist/Model/Repository/service.d.ts +0 -89
  278. package/dist/Model/Repository/service.d.ts.map +0 -1
  279. package/dist/Model/Repository/service.js +0 -2
  280. package/dist/Model/Repository/validation.d.ts +0 -42
  281. package/dist/Model/Repository/validation.d.ts.map +0 -1
  282. package/dist/Model/Repository/validation.js +0 -32
  283. package/dist/Model/Repository.d.ts +0 -6
  284. package/dist/Model/Repository.d.ts.map +0 -1
  285. package/dist/Model/Repository.js +0 -6
  286. package/dist/Model/dsl.d.ts +0 -32
  287. package/dist/Model/dsl.d.ts.map +0 -1
  288. package/dist/Model/dsl.js +0 -44
  289. package/dist/Model/filter/filterApi.d.ts +0 -30
  290. package/dist/Model/filter/filterApi.d.ts.map +0 -1
  291. package/dist/Model/filter/filterApi.js +0 -2
  292. package/dist/Model/filter/types/errors.d.ts +0 -29
  293. package/dist/Model/filter/types/errors.d.ts.map +0 -1
  294. package/dist/Model/filter/types/errors.js +0 -2
  295. package/dist/Model/filter/types/fields.d.ts +0 -15
  296. package/dist/Model/filter/types/fields.d.ts.map +0 -1
  297. package/dist/Model/filter/types/fields.js +0 -2
  298. package/dist/Model/filter/types/path/common.d.ts +0 -316
  299. package/dist/Model/filter/types/path/common.d.ts.map +0 -1
  300. package/dist/Model/filter/types/path/common.js +0 -2
  301. package/dist/Model/filter/types/path/eager.d.ts +0 -95
  302. package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
  303. package/dist/Model/filter/types/path/eager.js +0 -31
  304. package/dist/Model/filter/types/path/index.d.ts +0 -4
  305. package/dist/Model/filter/types/path/index.d.ts.map +0 -1
  306. package/dist/Model/filter/types/path/index.js +0 -3
  307. package/dist/Model/filter/types/utils.d.ts +0 -79
  308. package/dist/Model/filter/types/utils.d.ts.map +0 -1
  309. package/dist/Model/filter/types/utils.js +0 -2
  310. package/dist/Model/filter/types/validator.d.ts +0 -30
  311. package/dist/Model/filter/types/validator.d.ts.map +0 -1
  312. package/dist/Model/filter/types/validator.js +0 -2
  313. package/dist/Model/filter/types.d.ts +0 -5
  314. package/dist/Model/filter/types.d.ts.map +0 -1
  315. package/dist/Model/filter/types.js +0 -7
  316. package/dist/Model/query/dsl.d.ts +0 -248
  317. package/dist/Model/query/dsl.d.ts.map +0 -1
  318. package/dist/Model/query/dsl.js +0 -104
  319. package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
  320. package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
  321. package/dist/Model/query/new-kid-interpreter.js +0 -165
  322. package/dist/Model/query.d.ts +0 -15
  323. package/dist/Model/query.d.ts.map +0 -1
  324. package/dist/Model/query.js +0 -3
  325. package/dist/Model.d.ts +0 -4
  326. package/dist/Model.d.ts.map +0 -1
  327. package/dist/Model.js +0 -4
  328. package/dist/Operations.d.ts +0 -55
  329. package/dist/Operations.d.ts.map +0 -1
  330. package/dist/Operations.js +0 -102
  331. package/dist/OperationsRepo.d.ts +0 -41
  332. package/dist/OperationsRepo.d.ts.map +0 -1
  333. package/dist/OperationsRepo.js +0 -14
  334. package/dist/QueueMaker/SQLQueue.d.ts +0 -16
  335. package/dist/QueueMaker/SQLQueue.d.ts.map +0 -1
  336. package/dist/QueueMaker/SQLQueue.js +0 -130
  337. package/dist/QueueMaker/memQueue.d.ts +0 -11
  338. package/dist/QueueMaker/memQueue.d.ts.map +0 -1
  339. package/dist/QueueMaker/memQueue.js +0 -76
  340. package/dist/QueueMaker/sbqueue.d.ts +0 -12
  341. package/dist/QueueMaker/sbqueue.d.ts.map +0 -1
  342. package/dist/QueueMaker/sbqueue.js +0 -91
  343. package/dist/QueueMaker/service.d.ts +0 -11
  344. package/dist/QueueMaker/service.d.ts.map +0 -1
  345. package/dist/QueueMaker/service.js +0 -4
  346. package/dist/RequestContext.d.ts +0 -63
  347. package/dist/RequestContext.d.ts.map +0 -1
  348. package/dist/RequestContext.js +0 -49
  349. package/dist/RequestFiberSet.d.ts +0 -36
  350. package/dist/RequestFiberSet.d.ts.map +0 -1
  351. package/dist/RequestFiberSet.js +0 -78
  352. package/dist/Store/ContextMapContainer.d.ts +0 -14
  353. package/dist/Store/ContextMapContainer.d.ts.map +0 -1
  354. package/dist/Store/ContextMapContainer.js +0 -16
  355. package/dist/Store/service.d.ts +0 -108
  356. package/dist/Store/service.d.ts.map +0 -1
  357. package/dist/Store/service.js +0 -71
  358. package/dist/Store.d.ts +0 -2
  359. package/dist/Store.d.ts.map +0 -1
  360. package/dist/Store.js +0 -2
  361. package/dist/adapters/SQL/Model.d.ts.map +0 -1
  362. package/dist/adapters/SQL/Model.js +0 -478
  363. package/dist/adapters/SQL.d.ts.map +0 -1
  364. package/dist/adapters/ServiceBus.d.ts +0 -58
  365. package/dist/adapters/ServiceBus.d.ts.map +0 -1
  366. package/dist/adapters/ServiceBus.js +0 -99
  367. package/dist/adapters/cosmos-client.d.ts.map +0 -1
  368. package/dist/adapters/cosmos-client.js +0 -9
  369. package/dist/adapters/index.d.ts +0 -2
  370. package/dist/adapters/index.d.ts.map +0 -1
  371. package/dist/adapters/index.js +0 -2
  372. package/dist/adapters/logger.d.ts +0 -9
  373. package/dist/adapters/logger.d.ts.map +0 -1
  374. package/dist/adapters/logger.js +0 -3
  375. package/dist/adapters/memQueue.d.ts +0 -13
  376. package/dist/adapters/memQueue.d.ts.map +0 -1
  377. package/dist/adapters/memQueue.js +0 -20
  378. package/dist/adapters/mongo-client.d.ts.map +0 -1
  379. package/dist/adapters/mongo-client.js +0 -13
  380. package/dist/adapters/redis-client.d.ts.map +0 -1
  381. package/dist/adapters/redis-client.js +0 -94
  382. package/dist/api/ContextProvider.d.ts +0 -31
  383. package/dist/api/ContextProvider.d.ts.map +0 -1
  384. package/dist/api/ContextProvider.js +0 -38
  385. package/dist/api/codec.d.ts.map +0 -1
  386. package/dist/api/codec.js +0 -5
  387. package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
  388. package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
  389. package/dist/api/internal/RequestContextMiddleware.js +0 -35
  390. package/dist/api/internal/auth.d.ts +0 -15
  391. package/dist/api/internal/auth.d.ts.map +0 -1
  392. package/dist/api/internal/auth.js +0 -47
  393. package/dist/api/internal/events.d.ts +0 -9
  394. package/dist/api/internal/events.d.ts.map +0 -1
  395. package/dist/api/internal/events.js +0 -42
  396. package/dist/api/internal/health.d.ts.map +0 -1
  397. package/dist/api/internal/health.js +0 -5
  398. package/dist/api/layerUtils.d.ts.map +0 -1
  399. package/dist/api/layerUtils.js +0 -16
  400. package/dist/api/middlewares.d.ts.map +0 -1
  401. package/dist/api/reportError.d.ts.map +0 -1
  402. package/dist/api/reportError.js +0 -27
  403. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
  404. package/dist/api/routing/middleware/middleware.d.ts +0 -9
  405. package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
  406. package/dist/api/routing/middleware/middleware.js +0 -92
  407. package/dist/api/routing/middleware.d.ts.map +0 -1
  408. package/dist/api/routing/schema/jwt.d.ts.map +0 -1
  409. package/dist/api/routing/schema/jwt.js +0 -12
  410. package/dist/api/routing/tsort.d.ts.map +0 -1
  411. package/dist/api/routing/tsort.js +0 -51
  412. package/dist/api/routing/utils.d.ts.map +0 -1
  413. package/dist/api/routing/utils.js +0 -44
  414. package/dist/api/routing.d.ts +0 -138
  415. package/dist/api/routing.d.ts.map +0 -1
  416. package/dist/api/routing.js +0 -166
  417. package/dist/api/setupRequest.d.ts +0 -12
  418. package/dist/api/setupRequest.d.ts.map +0 -1
  419. package/dist/api/setupRequest.js +0 -44
  420. package/dist/api/util.d.ts.map +0 -1
  421. package/dist/api/util.js +0 -14
  422. package/eslint.config.mjs +0 -24
  423. package/src/Emailer/service.ts +0 -52
  424. package/src/Emailer.ts +0 -1
  425. package/src/Model/Repository/ext.ts +0 -283
  426. package/src/Model/Repository/internal/internal.ts +0 -577
  427. package/src/Model/Repository/legacy.ts +0 -27
  428. package/src/Model/Repository/makeRepo.ts +0 -139
  429. package/src/Model/Repository/service.ts +0 -627
  430. package/src/Model/Repository/validation.ts +0 -31
  431. package/src/Model/Repository.ts +0 -5
  432. package/src/Model/dsl.ts +0 -128
  433. package/src/Model/filter/filterApi.ts +0 -60
  434. package/src/Model/filter/types/errors.ts +0 -47
  435. package/src/Model/filter/types/fields.ts +0 -50
  436. package/src/Model/filter/types/path/common.ts +0 -404
  437. package/src/Model/filter/types/path/eager.ts +0 -298
  438. package/src/Model/filter/types/path/index.ts +0 -4
  439. package/src/Model/filter/types/utils.ts +0 -128
  440. package/src/Model/filter/types/validator.ts +0 -46
  441. package/src/Model/filter/types.ts +0 -6
  442. package/src/Model/query/dsl.ts +0 -2110
  443. package/src/Model/query/new-kid-interpreter.ts +0 -210
  444. package/src/Model/query.ts +0 -13
  445. package/src/Model.ts +0 -3
  446. package/src/Operations.ts +0 -235
  447. package/src/OperationsRepo.ts +0 -16
  448. package/src/QueueMaker/SQLQueue.ts +0 -189
  449. package/src/QueueMaker/memQueue.ts +0 -130
  450. package/src/QueueMaker/sbqueue.ts +0 -137
  451. package/src/QueueMaker/service.ts +0 -17
  452. package/src/RequestContext.ts +0 -63
  453. package/src/RequestFiberSet.ts +0 -105
  454. package/src/Store/ContextMapContainer.ts +0 -20
  455. package/src/Store/index.test.ts.bak +0 -112
  456. package/src/Store/service.ts +0 -184
  457. package/src/Store.ts +0 -1
  458. package/src/adapters/SQL.ts +0 -1
  459. package/src/adapters/ServiceBus.ts +0 -209
  460. package/src/adapters/index.ts +0 -0
  461. package/src/adapters/logger.ts +0 -3
  462. package/src/adapters/memQueue.ts +0 -21
  463. package/src/api/internal/auth.ts +0 -68
  464. package/src/api/middlewares.ts +0 -10
  465. package/src/api/routing/middleware/middleware.ts +0 -128
  466. package/src/api/routing/middleware.ts +0 -6
  467. package/src/api/routing.ts +0 -598
  468. package/src/api/setupRequest.ts +0 -84
  469. package/tsconfig.json.bak +0 -12
  470. /package/dist/{adapters/SQL.d.ts → SQL.d.ts} +0 -0
  471. /package/dist/{api/codec.d.ts → codec.d.ts} +0 -0
  472. /package/dist/{api/internal → internal}/health.d.ts +0 -0
  473. /package/dist/{api/middlewares.d.ts → middlewares.d.ts} +0 -0
  474. /package/dist/{api/routing → routing}/schema/jwt.d.ts +0 -0
  475. /package/dist/{api/routing → routing}/tsort.d.ts +0 -0
  476. /package/dist/{api/util.d.ts → util.d.ts} +0 -0
  477. /package/src/{api/codec.ts → codec.ts} +0 -0
  478. /package/src/{api/internal → internal}/health.ts +0 -0
  479. /package/src/{api/routing → routing}/tsort.ts +0 -0
  480. /package/src/{api/util.ts → util.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,2474 @@
1
1
  # @effect-app/infra
2
2
 
3
+ ## 4.0.0-beta.321
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [18bae5b]
8
+ - effect-app@4.0.0-beta.321
9
+
10
+ ## 4.0.0-beta.320
11
+
12
+ ### Patch Changes
13
+
14
+ - effect-app@4.0.0-beta.320
15
+
16
+ ## 4.0.0-beta.319
17
+
18
+ ### Patch Changes
19
+
20
+ - effect-app@4.0.0-beta.319
21
+
22
+ ## 4.0.0-beta.318
23
+
24
+ ### Patch Changes
25
+
26
+ - 8bd5bfe: Update effect packages to `4.0.0-rc.112` (from `beta.107`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`. Sync `repos/effect` subtree from `Effect-TS/effect` at `effect@4.0.0-rc.112`.
27
+
28
+ API adaptations for rc.112:
29
+
30
+ - cluster encoded driver `resetAddress` → batched `resetAddresses`
31
+ - Cosmos `unprocessedMessages` honors optional `limit` / `addresses` (only claimed rows are returned)
32
+ - Service Bus `Runners.make` supplies `codecFor` for schema-aware RPC serialization
33
+ - `pnpm subtree:effect` passes `--url https://github.com/Effect-TS/effect.git` (published CLI still defaults to effect-smol)
34
+ - JSON Schema check constraints are compacted onto the parent (`minLength`/`maxLength` instead of `allOf`)
35
+
36
+ - Updated dependencies [8bd5bfe]
37
+ - effect-app@4.0.0-beta.318
38
+
39
+ ## 4.0.0-beta.317
40
+
41
+ ### Minor Changes
42
+
43
+ - 186de3a: Stop forcing Date/Map/Set Encoded shapes to JSON.
44
+
45
+ `Schema.Date` / `ReadonlySet` / `ReadonlyMap` now keep native Encoded types (`Date`, `Set`, `Map`). Use `DateFromString`, `ReadonlySetFromArray`, and `ReadonlyMapFromArray` when the Encoded form must be JSON. The query DSL accepts those native values, including array ops (`includes` / `in` / `includes-any`) on `Date[]` and `ReadonlySet` fields. Memory, Disk, SQL, and Cosmos convert Encoded Date/Map/Set through `Schema.toCodecJson` on write/read; query parameters and defaults lower the same way from the store schema. App types such as DateOnly stay native Encoded and JSON-lower via that schema — not a type registry.
46
+
47
+ - 186de3a: Query maps as JSON arrays of `[key, value]` tuples.
48
+
49
+ `where("meta", "hasKey" | "hasValue" | "hasKeyValue", ...)` (and `not*` / `*-any` / `*-all` variants) filter `ReadonlyMap` fields. Memory, Disk, SQLite, Postgres, and Cosmos compile those ops against the encoded tuple array.
50
+
51
+ - 186de3a: JSON stores lower native Encoded values (Date, Map, Set, and app types such as DateOnly) through the store's document schema.
52
+
53
+ `makeRepo` already passes that schema. Adapters encode documents, query parameters, and defaults with `Schema.toCodecJson(toEncoded(schema))` at the field path. No type registry. Schemaless stores still lower Date/Map/Set structurally.
54
+
55
+ ### Patch Changes
56
+
57
+ - 186de3a: Declare `@sentry/node` as a runtime dependency of `@effect-app/infra`. `errorReporter.ts` imports it statically, so `pnpm install --prod` of linked source (Docker) must install it next to the package, not only as a peer of the app.
58
+ - Updated dependencies [186de3a]
59
+ - Updated dependencies [186de3a]
60
+ - Updated dependencies [186de3a]
61
+ - effect-app@4.0.0-beta.317
62
+
63
+ ## 4.0.0-beta.316
64
+
65
+ ### Patch Changes
66
+
67
+ - effect-app@4.0.0-beta.316
68
+
69
+ ## 4.0.0-beta.315
70
+
71
+ ### Patch Changes
72
+
73
+ - effect-app@4.0.0-beta.315
74
+
75
+ ## 4.0.0-beta.314
76
+
77
+ ### Patch Changes
78
+
79
+ - effect-app@4.0.0-beta.314
80
+
81
+ ## 4.0.0-beta.313
82
+
83
+ ### Patch Changes
84
+
85
+ - effect-app@4.0.0-beta.313
86
+
87
+ ## 4.0.0-beta.312
88
+
89
+ ### Patch Changes
90
+
91
+ - Updated dependencies [9ea024d]
92
+ - effect-app@4.0.0-beta.312
93
+
94
+ ## 4.0.0-beta.311
95
+
96
+ ### Patch Changes
97
+
98
+ - 547e2e1: Update effect packages to `4.0.0-beta.107` (from `beta.90`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`, and `fast-check` to `^4.9.0`. Sync `repos/effect` subtree from `Effect-TS/effect` (effect-smol stopped publishing tags after beta.98).
99
+
100
+ API adaptations for beta.107:
101
+
102
+ - `concurrency: "inherit"` → `"unbounded"`
103
+ - `Schema.ErrorClass` / `TaggedErrorClass` → `Schema.Error` / `TaggedError`
104
+ - `Schema.LazyArbitrary` → `Schema.Arbitrary`
105
+ - `Schema.DateValid` / `isDateValid` removed (`Schema.Date` rejects invalid dates)
106
+ - `SchemaIssue` constructors no longer take `Option` (annotations + input)
107
+ - filter meta via `annotations.representation` instead of `annotations.meta`
108
+ - `context.defaultValue` → `context.constructorDefault` (single Link)
109
+ - Class detection via `~constructor` + static `identifier`
110
+ - Redacted detection via `representation.id`
111
+ - localized StandardSchema hooks updated for new issue/input model
112
+ - provide `NodeCrypto.layer` for cluster sqlite tests
113
+ - default `sync-effect` subtree URL → `Effect-TS/effect`
114
+
115
+ - Updated dependencies [547e2e1]
116
+ - effect-app@4.0.0-beta.311
117
+
118
+ ## 4.0.0-beta.310
119
+
120
+ ### Patch Changes
121
+
122
+ - effect-app@4.0.0-beta.310
123
+
124
+ ## 4.0.0-beta.309
125
+
126
+ ### Patch Changes
127
+
128
+ - Updated dependencies [99c43c4]
129
+ - effect-app@4.0.0-beta.309
130
+
131
+ ## 4.0.0-beta.308
132
+
133
+ ### Patch Changes
134
+
135
+ - b4d5f55: fix DatabaseError typing
136
+ - effect-app@4.0.0-beta.308
137
+
138
+ ## 4.0.0-beta.307
139
+
140
+ ### Patch Changes
141
+
142
+ - 40585ca: Keep tag-aware `ProjectableFromDomain` for `projectComputed` only; restore loose key-presence guard for `project()` so view DTOs with reshaped fields keep typechecking.
143
+ - ad0ede6: Keep tag-aware `ProjectableGuard` on both `project()` and `projectComputed` (no loose key-only paper-over).
144
+
145
+ Hardening:
146
+
147
+ - single-literal tags allow dual same-tag domain variants (KeysOfUnion of matched members)
148
+ - multi-tag / string tags still require keys on every matched member
149
+ - optional projection/domain keys checked by key presence only (not optional-assignability)
150
+
151
+ Call sites must project domain-owned fields per tagged state.
152
+
153
+ - Updated dependencies [40585ca]
154
+ - Updated dependencies [ad0ede6]
155
+ - effect-app@4.0.0-beta.307
156
+
157
+ ## 4.0.0-beta.306
158
+
159
+ ### Patch Changes
160
+
161
+ - 0fe925d: Tag-aware `ProjectableFromDomain` for `projectComputed`: projection Encoded fields must exist on the matching domain tagged state (or be computed). Prevents Overview.List SchemaErrors when cancel states omit workflow lock fields like `activeRequest`.
162
+ - Updated dependencies [0fe925d]
163
+ - effect-app@4.0.0-beta.306
164
+
165
+ ## 4.0.0-beta.305
166
+
167
+ ### Patch Changes
168
+
169
+ - 8bd9a11: Support ID-scoped signal dependencies and additive repository dependencies derived from previous and current entities.
170
+ - Updated dependencies [8bd9a11]
171
+ - effect-app@4.0.0-beta.305
172
+
173
+ ## 4.0.0-beta.304
174
+
175
+ ### Patch Changes
176
+
177
+ - Updated dependencies [412f08b]
178
+ - effect-app@4.0.0-beta.304
179
+
180
+ ## 4.0.0-beta.303
181
+
182
+ ### Patch Changes
183
+
184
+ - 33b0544: Replace repository codec child spans with parent-span timing attributes and bounded metrics, and record database operation timing for instrumented stores.
185
+ - Updated dependencies [33b0544]
186
+ - effect-app@4.0.0-beta.303
187
+
188
+ ## 4.0.0-beta.302
189
+
190
+ ### Patch Changes
191
+
192
+ - Updated dependencies [c0e5a1b]
193
+ - effect-app@4.0.0-beta.302
194
+
195
+ ## 4.0.0-beta.301
196
+
197
+ ### Patch Changes
198
+
199
+ - effect-app@4.0.0-beta.301
200
+
201
+ ## 4.0.0-beta.300
202
+
203
+ ### Patch Changes
204
+
205
+ - effect-app@4.0.0-beta.300
206
+
207
+ ## 4.0.0-beta.299
208
+
209
+ ### Patch Changes
210
+
211
+ - effect-app@4.0.0-beta.299
212
+
213
+ ## 4.0.0-beta.298
214
+
215
+ ### Patch Changes
216
+
217
+ - Updated dependencies [08d092c]
218
+ - effect-app@4.0.0-beta.298
219
+
220
+ ## 4.0.0-beta.297
221
+
222
+ ### Patch Changes
223
+
224
+ - Updated dependencies [30c512d]
225
+ - effect-app@4.0.0-beta.297
226
+
227
+ ## 4.0.0-beta.296
228
+
229
+ ### Patch Changes
230
+
231
+ - Updated dependencies [e0c4835]
232
+ - effect-app@4.0.0-beta.296
233
+
234
+ ## 4.0.0-beta.295
235
+
236
+ ### Patch Changes
237
+
238
+ - eb06b32: improve root union select
239
+ - Updated dependencies [eb06b32]
240
+ - effect-app@4.0.0-beta.295
241
+
242
+ ## 4.0.0-beta.294
243
+
244
+ ### Patch Changes
245
+
246
+ - Updated dependencies [a211c12]
247
+ - effect-app@4.0.0-beta.294
248
+
249
+ ## 4.0.0-beta.293
250
+
251
+ ### Patch Changes
252
+
253
+ - Updated dependencies [d1c15d3]
254
+ - effect-app@4.0.0-beta.293
255
+
256
+ ## 4.0.0-beta.292
257
+
258
+ ### Patch Changes
259
+
260
+ - effect-app@4.0.0-beta.292
261
+
262
+ ## 4.0.0-beta.291
263
+
264
+ ### Patch Changes
265
+
266
+ - 848d26d: Capture more of the rpc request payload in the `rpc.request.payload` span
267
+ attribute.
268
+
269
+ The summarizer was one level deep: top-level scalars were kept, but any nested
270
+ object collapsed to `Object[N]` and any array to `Array[N]`, hiding useful
271
+ inputs (carrier, packageType, dimensions, ids, per-item amounts, …).
272
+
273
+ It now recurses into nested objects up to `PAYLOAD_MAX_DEPTH` (4) and samples
274
+ arrays to their first `PAYLOAD_ARRAY_HEAD` (20) elements, appending a `…N more`
275
+ marker when longer — so item arrays stay diagnosable without dumping the whole
276
+ tail on high-frequency commands. Long strings are still snipped at 256 chars,
277
+ and `password`/`secret`/`token` keys are redacted at any depth (previously only
278
+ a top-level `password`).
279
+
280
+ - effect-app@4.0.0-beta.291
281
+
282
+ ## 4.0.0-beta.290
283
+
284
+ ### Patch Changes
285
+
286
+ - Updated dependencies [dc07df5]
287
+ - effect-app@4.0.0-beta.290
288
+
289
+ ## 4.0.0-beta.289
290
+
291
+ ### Patch Changes
292
+
293
+ - Updated dependencies [a1b59bc]
294
+ - effect-app@4.0.0-beta.289
295
+
296
+ ## 4.0.0-beta.288
297
+
298
+ ### Patch Changes
299
+
300
+ - Updated dependencies [aeb17bc]
301
+ - effect-app@4.0.0-beta.288
302
+
303
+ ## 4.0.0-beta.287
304
+
305
+ ### Patch Changes
306
+
307
+ - Updated dependencies [261470f]
308
+ - effect-app@4.0.0-beta.287
309
+
310
+ ## 4.0.0-beta.286
311
+
312
+ ### Patch Changes
313
+
314
+ - b6dda09: Update effect packages to `4.0.0-beta.90` (from `beta.88`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`. No source changes required — typecheck and tests pass unchanged.
315
+ - Updated dependencies [b6dda09]
316
+ - effect-app@4.0.0-beta.286
317
+
318
+ ## 4.0.0-beta.285
319
+
320
+ ### Patch Changes
321
+
322
+ - 7bd8234: Use set-backed data dependencies and provide request-scoped dependency services through a shared root-checked helper.
323
+ - Updated dependencies [7bd8234]
324
+ - effect-app@4.0.0-beta.285
325
+
326
+ ## 4.0.0-beta.284
327
+
328
+ ### Patch Changes
329
+
330
+ - dd239fa: fix atom invalidation
331
+ - effect-app@4.0.0-beta.284
332
+
333
+ ## 4.0.0-beta.283
334
+
335
+ ### Minor Changes
336
+
337
+ - 0054611: Derive query invalidation from repository read/write dependencies and propagate dependency metadata through RPC clients.
338
+
339
+ ### Patch Changes
340
+
341
+ - 0054611: Stream RPC: drain read/write data-dependencies per emitted value chunk instead of sending the
342
+ cumulative set on every metadata chunk. Each metadata chunk now carries only the delta recorded
343
+ since the last chunk, the bucket is cleared for the next segment, and the terminal "done"/"error"
344
+ chunks drain the remainder. The emit condition also broadens to include non-empty reads, so stream
345
+ queries forward their read-dependencies mid-stream too. The client already accumulates deltas into
346
+ its per-call recorder, so no FE change is required.
347
+ - Updated dependencies [0054611]
348
+ - Updated dependencies [0054611]
349
+ - effect-app@4.0.0-beta.283
350
+
351
+ ## 4.0.0-beta.282
352
+
353
+ ### Patch Changes
354
+
355
+ - b2df3fa: Align `Schema.Void` with TypeScript `void` return-value semantics (effect-smol PR #2475 / `b7d46ab`).
356
+
357
+ `S.Void` now accepts **any present value** at runtime and discards it to `undefined`, while keeping the decoded/encoded type as `void` — matching a `void` return whose result callers never observe. This is implemented as an override of the AST node in a new `effect-app/SchemaAST` module (`export * from "effect/SchemaAST"` plus a `Void` subclass whose parser mirrors the PR's `fromAnyToConst(undefined)`), so there is a single canonical `Void` used everywhere, including RPC success schemas.
358
+
359
+ - New `effect-app/SchemaAST` module; internal `SchemaAST` imports across the libs now route through it.
360
+ - Removed `ForceVoid` from `effect-app/client/makeClient` — use `S.Void` directly, which now carries this behaviour.
361
+ - `S.Void_` remains available as effect's original (`undefined`-only) Void.
362
+
363
+ - f150cf9: Remove obsolete queue machinery left unused after the move to cluster entities: the SB/SQLite/mem `QueueMaker` implementations (`QueueMaker/{SQLQueue,memQueue,sbqueue}.ts`), their `ServiceBus.ts`/`memQueue.ts` transports, and `RequestFiberSet.ts` (its `setRootParentSpan` helper is inlined into `MainFiberSet`). `effect-app/QueueMaker` keeps only `QueueMeta`; the `QueueBase` interface and empty `QueueMaker` ops object are dropped.
364
+ - e8842aa: Update effect packages to `4.0.0-beta.88` (from `beta.86`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`. Also bump `@effect-app/cli` to `2.1.0-beta.35`. No source changes required — typecheck and tests pass unchanged.
365
+ - Updated dependencies [b2df3fa]
366
+ - Updated dependencies [f150cf9]
367
+ - Updated dependencies [e8842aa]
368
+ - effect-app@4.0.0-beta.282
369
+
370
+ ## 4.0.0-beta.281
371
+
372
+ ### Patch Changes
373
+
374
+ - ffd140f: Update effect packages to `4.0.0-beta.86` (from `beta.84`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`. No source changes required — typecheck and tests pass unchanged.
375
+ - Updated dependencies [ffd140f]
376
+ - effect-app@4.0.0-beta.281
377
+
378
+ ## 4.0.0-beta.280
379
+
380
+ ### Patch Changes
381
+
382
+ - Updated dependencies [3eda52e]
383
+ - effect-app@4.0.0-beta.280
384
+
385
+ ## 4.0.0-beta.279
386
+
387
+ ### Patch Changes
388
+
389
+ - Updated dependencies [5f9cd6a]
390
+ - effect-app@4.0.0-beta.279
391
+
392
+ ## 4.0.0-beta.278
393
+
394
+ ### Patch Changes
395
+
396
+ - a354345: Move release tsconfig flattening from publish to pack lifecycle so package configs are restored before registry upload/auth can fail.
397
+ - a69da09: Publish from generated staging directories so release-only files are created outside the source package tree.
398
+ - Updated dependencies [a354345]
399
+ - Updated dependencies [a69da09]
400
+ - effect-app@4.0.0-beta.278
401
+
402
+ ## 4.0.0-beta.277
403
+
404
+ ### Patch Changes
405
+
406
+ - effect-app@4.0.0-beta.277
407
+
408
+ ## 4.0.0-beta.276
409
+
410
+ ### Patch Changes
411
+
412
+ - 32f05c8: Remove unused dependency declarations from package manifests.
413
+ - Updated dependencies [32f05c8]
414
+ - effect-app@4.0.0-beta.276
415
+
416
+ ## 4.0.0-beta.275
417
+
418
+ ### Patch Changes
419
+
420
+ - effect-app@4.0.0-beta.275
421
+
422
+ ## 4.0.0-beta.274
423
+
424
+ ### Patch Changes
425
+
426
+ - effect-app@4.0.0-beta.274
427
+
428
+ ## 4.0.0-beta.273
429
+
430
+ ### Patch Changes
431
+
432
+ - Updated dependencies [664e83d]
433
+ - Updated dependencies [e4ff9a6]
434
+ - effect-app@4.0.0-beta.273
435
+
436
+ ## 4.0.0-beta.272
437
+
438
+ ### Patch Changes
439
+
440
+ - Updated dependencies [21ac90a]
441
+ - effect-app@4.0.0-beta.272
442
+
443
+ ## 4.0.0-beta.271
444
+
445
+ ### Patch Changes
446
+
447
+ - Updated dependencies [939bebc]
448
+ - effect-app@4.0.0-beta.271
449
+
450
+ ## 4.0.0-beta.270
451
+
452
+ ### Patch Changes
453
+
454
+ - 78d076a: Update effect packages to `4.0.0-beta.84` (`effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`).
455
+ - Updated dependencies [78d076a]
456
+ - effect-app@4.0.0-beta.270
457
+
458
+ ## 4.0.0-beta.269
459
+
460
+ ### Patch Changes
461
+
462
+ - Updated dependencies [50b022e]
463
+ - Updated dependencies [50b022e]
464
+ - effect-app@4.0.0-beta.269
465
+
466
+ ## 4.0.0-beta.268
467
+
468
+ ### Patch Changes
469
+
470
+ - 38289e0: Break the circular dependency between the memory store and code filter modules.
471
+ - acfdc9e: Point development package exports at TypeScript sources while keeping published exports on compiled dist files.
472
+ - Updated dependencies [acfdc9e]
473
+ - effect-app@4.0.0-beta.268
474
+
475
+ ## 4.0.0-beta.267
476
+
477
+ ### Minor Changes
478
+
479
+ - 23a7167: Add a typed, serializable `DatabaseError { message, transient, cause }` for store adapter failures.
480
+
481
+ Store adapters wrapped DB calls in bare `Effect.promise` / `.orDie`, so a transient infra failure (request timeout, throttle, 5xx, dropped socket) became a raw-`Error` defect — which `Effect.retry` can't retry and which breaks JSON encoding of a workflow exit cause ("Expected JSON value, got Error"). `DatabaseError` is now exposed on all `Store` and `Repository` method error channels (writes: `OptimisticConcurrencyException | DatabaseError`) and added to `SupportedErrors` so the api/client/FE treat it as a 500-class error. Each adapter wraps its db-call failures into `DatabaseError` with a `transient` flag (timeout/throttle/5xx ⇒ retryable); the `cause` serializes via `Schema.Defect`. Construction/seed/DDL paths stay `orDie`.
482
+
483
+ ### Patch Changes
484
+
485
+ - Updated dependencies [23a7167]
486
+ - effect-app@4.0.0-beta.267
487
+
488
+ ## 4.0.0-beta.266
489
+
490
+ ### Patch Changes
491
+
492
+ - Updated dependencies [bbaa67e]
493
+ - effect-app@4.0.0-beta.266
494
+
495
+ ## 4.0.0-beta.265
496
+
497
+ ### Patch Changes
498
+
499
+ - fce6ee9: Fix machine-id allocation in the Cosmos cluster `RunnerStorage`. It derived the machine id from a 31-multiplier string hash of the runner address, so two distinct runners could hash to the same value mod 1024 — and since the machine id feeds the Snowflake generator mod 1024, those runners would emit colliding Snowflake ids (corrupting request/reply identity across the cluster).
500
+
501
+ Machine ids are now allocated from a single counter document via an atomic server-side `incr`, mirroring SQL's auto-increment `machine_id` primary key: unique across distinct runners and stable per address (a re-registering runner reuses its persisted id). Verified against a live Cosmos account.
502
+
503
+ - be3300d: Fix correctness bugs in the Cosmos `WorkflowEngine`, found by running the adapter against a real Cosmos account. The Cosmos workflow engine now passes the same conformance suite as the in-memory and SQLite engines.
504
+
505
+ - **OCC conflicts were fatal.** `replaceExec` used `Effect.promise` + a `statusCode` check, but single-item Cosmos `replace` _throws_ on 409/412/404 (only `read` and batch ops surface the code), so every conflict became an unrecoverable defect and the `OptimisticConcurrencyException` catch was dead code. It now uses `Effect.tryPromise` and matches the thrown error (mirrors `ClusterCosmos`), so lease claims, completions, and interrupts lose gracefully under contention.
506
+ - **Illegal resource ids.** Activity/deferred/clock doc ids embedded workflow/deferred names containing `/`, which Cosmos rejects. Ids are now URI-encoded via `cosmosId` (mirrors `ClusterCosmos`).
507
+ - **Interrupt could be lost under Cosmos latency.** A concurrent `interrupt` racing a suspending driver's `onComplete` could have its `interrupted` flag swallowed (OCC) or downgraded, leaving the re-drive unable to collapse the suspension. `interrupt`/`interruptUnsafe` now persist the flag with OCC retry (`markInterrupted`), and `onComplete` never downgrades a persisted `interrupted: true`.
508
+ - **`execute` now drives unconditionally** (matching SQLite), letting `drive`'s own guard short-circuit a running/completed fiber and re-drive a suspended one, instead of skipping re-drive when a stale local entry existed.
509
+
510
+ - 3e855bc: Update Effect packages to `4.0.0-beta.83` (from `beta.74`): `effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/sql-sqlite-node`, `@effect/atom-vue`, `@effect/vitest`.
511
+
512
+ Adapt the infra workflow engines to beta.83 API changes:
513
+
514
+ - `Schema.Defect` is now a constructor function — use `S.Defect()` when building the deferred-exit codec (the bare constant no longer produces a usable schema and crashed `toType`).
515
+ - `Workflow` exposes its name as `_tag` instead of `name`. `WorkflowEngineSqlite`/`WorkflowEngineCosmos` now key the registry, codec caches, and persisted `workflow_name` off `workflow._tag`, fixing crash-recovery (stale-lease re-drive previously registered under an `undefined` key and never matched).
516
+
517
+ - Updated dependencies [3e855bc]
518
+ - effect-app@4.0.0-beta.265
519
+
520
+ ## 4.0.0-beta.264
521
+
522
+ ### Patch Changes
523
+
524
+ - 1587bfc: Batch more Cosmos cluster storage updates.
525
+ - effect-app@4.0.0-beta.264
526
+
527
+ ## 4.0.0-beta.263
528
+
529
+ ### Patch Changes
530
+
531
+ - abb9c99: Batch Cosmos ack message processing updates.
532
+ - effect-app@4.0.0-beta.263
533
+
534
+ ## 4.0.0-beta.262
535
+
536
+ ### Patch Changes
537
+
538
+ - 55c6572: update packages
539
+ - Updated dependencies [55c6572]
540
+ - effect-app@4.0.0-beta.262
541
+
542
+ ## 4.0.0-beta.261
543
+
544
+ ### Patch Changes
545
+
546
+ - c31c673: Tighten Cosmos cluster OCC handling for concurrent node polling.
547
+ - effect-app@4.0.0-beta.261
548
+
549
+ ## 4.0.0-beta.260
550
+
551
+ ### Patch Changes
552
+
553
+ - bogus
554
+ - Updated dependencies
555
+ - effect-app@4.0.0-beta.260
556
+
557
+ ## 4.0.0-beta.259
558
+
559
+ ### Minor Changes
560
+
561
+ - 6884a32: Add Azure Service Bus topic notifications for persisted cluster storage polling.
562
+
563
+ ### Patch Changes
564
+
565
+ - 6821fc5: Add Cosmos DB backed storage layers for Effect Cluster message and runner state.
566
+ - b6cb25b: Fix Cosmos cluster workflow resume after durable deferred completion.
567
+ - effect-app@4.0.0-beta.259
568
+
569
+ ## 4.0.0-beta.258
570
+
571
+ ### Minor Changes
572
+
573
+ - 0520dd4: Add Cosmos DB backed `WorkflowEngine` adapter (`layerCosmos` in `WorkflowEngineCosmos.ts`). Persists workflow state in a single container partitioned by `executionId` so per-execution writes share a partition key (TransactionalBatch-eligible). Optimistic concurrency via `_etag` + `IfMatch` on Replace; first-writer-wins via create-only batch ops for activity results and durable-deferred completions; a persisted _suspended_ activity is overwritten via upsert on resume. Values crossing the storage boundary round-trip through `Schema` codecs (`S.fromJsonString(S.toCodecJson(...))`) using the workflow's own `payloadSchema` / `successSchema` / `errorSchema` for typed values, and the cluster engine's opaque `AnyOrVoid` codec for activity / deferred payloads. Includes time-bound lease + heartbeat fiber, scope-bound recovery poller for crashed-driver takeover, and cross-partition clock poller for restart-survivable durable timers.
574
+ - 0ddda6f: Add SQLite backed `WorkflowEngine` adapter (`layerSqlite` in `WorkflowEngineSqlite.ts`). Persists workflow state across `workflow_exec` / `workflow_activity` / `workflow_deferred` / `workflow_clock` tables via `SqlClient`. Uses `sql.withTransaction` for atomicity, etag-based optimistic concurrency (`UPDATE ... WHERE etag = ? RETURNING etag`), and `INSERT ... ON CONFLICT DO NOTHING RETURNING` for first-writer-wins on activity / deferred / clock writes. Values crossing the storage boundary round-trip through `Schema` codecs (`S.fromJsonString(S.toCodecJson(...))`) using the workflow's own `payloadSchema` / `successSchema` / `errorSchema` for typed values, and the cluster engine's opaque `AnyOrVoid` codec for activity / deferred payloads. Includes time-bound lease + heartbeat fiber, scope-bound recovery poller for crashed-driver takeover, and cross-partition clock poller for restart-survivable durable timers.
575
+
576
+ ### Patch Changes
577
+
578
+ - effect-app@4.0.0-beta.258
579
+
580
+ ## 4.0.0-beta.257
581
+
582
+ ### Patch Changes
583
+
584
+ - Updated dependencies [e71eb78]
585
+ - effect-app@4.0.0-beta.257
586
+
587
+ ## 4.0.0-beta.256
588
+
589
+ ### Patch Changes
590
+
591
+ - Updated dependencies [347af48]
592
+ - effect-app@4.0.0-beta.256
593
+
594
+ ## 4.0.0-beta.255
595
+
596
+ ### Patch Changes
597
+
598
+ - Updated dependencies [52a31dd]
599
+ - effect-app@4.0.0-beta.255
600
+
601
+ ## 4.0.0-beta.254
602
+
603
+ ### Patch Changes
604
+
605
+ - Updated dependencies [29a1e57]
606
+ - effect-app@4.0.0-beta.254
607
+
608
+ ## 4.0.0-beta.253
609
+
610
+ ### Patch Changes
611
+
612
+ - Updated dependencies [b90fa30]
613
+ - effect-app@4.0.0-beta.253
614
+
615
+ ## 4.0.0-beta.252
616
+
617
+ ### Patch Changes
618
+
619
+ - Updated dependencies [a788432]
620
+ - effect-app@4.0.0-beta.252
621
+
622
+ ## 4.0.0-beta.251
623
+
624
+ ### Patch Changes
625
+
626
+ - 1c858d3: fix request scope problems
627
+ - Updated dependencies [1c858d3]
628
+ - effect-app@4.0.0-beta.251
629
+
630
+ ## 4.0.0-beta.250
631
+
632
+ ### Patch Changes
633
+
634
+ - 3053760: fix: restore context map container behavior
635
+ - Updated dependencies [3053760]
636
+ - effect-app@4.0.0-beta.250
637
+
638
+ ## 4.0.0-beta.249
639
+
640
+ ### Major Changes
641
+
642
+ - ba789a2: Move core service contracts and runtime-agnostic modules into `effect-app`, keep `infra` and `vue` focused on adapters, and drop the temporary `infra` compatibility re-export paths in favor of the new canonical imports.
643
+
644
+ `@effect-app/infra` no longer re-exports moved core modules such as `./Model`, `./Emailer/service`, `./QueueMaker/service`, `./Store/service`, `./adapters/*`, or `./api/*` entrypoints.
645
+
646
+ ### Patch Changes
647
+
648
+ - Updated dependencies [ba789a2]
649
+ - effect-app@4.0.0-beta.249
650
+
651
+ ## 4.0.0-beta.248
652
+
653
+ ### Patch Changes
654
+
655
+ - 2a86a17: improve tsgo compat: avoid deferred `Schema.Type`/`Codec.Encoded`/`Codec.DecodingServices`/`Codec.EncodingServices` conditional helpers in generic positions where the type parameter is already constrained to `Schema.Top`. Index the property directly (`X["Type"]`, `X["Encoded"]`, `X["DecodingServices"]`, …) so tsgo doesn't leak `unknown` into `Effect` channels (notably `R`).
656
+
657
+ Sites: `client/clientFor.ts` (`RequestHandlerFor`, `FinalTypeOf`, `ExtractResponse`, `ExtractEResponse`), `client/makeClient.ts` (`InputFromPayload`, `OutputFromSuccess`, `InvalidationConfigForCommand`, `TaggedRequestWithMeta` overloads), `rpc/MiddlewareMaker.ts` (`Errors`), `rpc/RpcMiddleware.ts` (`Failure`, `FailureContext`), `Schema/ext.ts` (`ReadonlySetFromArray`, `ReadonlyMapFromArray`), `infra/routing.ts` (`GetSuccessShape`, handlers, route matcher), `vue/makeClient.ts` (`MutationExt.project`, `MutationWithExtensions`, `QueryProjection`), `vue/routeParams.ts` (`parseRouteParams*`).
658
+
659
+ - Updated dependencies [2a86a17]
660
+ - effect-app@4.0.0-beta.248
661
+
662
+ ## 4.0.0-beta.247
663
+
664
+ ### Patch Changes
665
+
666
+ - Updated dependencies [01bab22]
667
+ - effect-app@4.0.0-beta.247
668
+
669
+ ## 4.0.0-beta.246
670
+
671
+ ### Patch Changes
672
+
673
+ - f4b58cd: Add `cachedPerRequest` helper to `ContextMapContainer`. Runs a given Effect at most once per ContextMap (i.e. per request) and stores the result in the ContextMap under a fresh symbol, using the ContextMap's shared semaphore for safe single initialization. Use as a building block for any per-request memoized value (request resolver caches, per-request `Cache.make` instances, etc.).
674
+ - effect-app@4.0.0-beta.246
675
+
676
+ ## 4.0.0-beta.245
677
+
678
+ ### Patch Changes
679
+
680
+ - effect-app@4.0.0-beta.245
681
+
682
+ ## 4.0.0-beta.244
683
+
684
+ ### Patch Changes
685
+
686
+ - b8b9080: update packages
687
+ - Updated dependencies [b8b9080]
688
+ - effect-app@4.0.0-beta.244
689
+
690
+ ## 4.0.0-beta.243
691
+
692
+ ### Patch Changes
693
+
694
+ - 8eb6737: Wrap `CUPS` exec failures in tagged `CUPSError` instead of `UnknownException`.
695
+
696
+ Retains `command`, `message`, exit `code`, `signal`, `killed`, `stdout`,
697
+ `stderr`, and original `cause` from the underlying `child_process.exec`
698
+ rejection so callers can branch on real failure detail.
699
+
700
+ - effect-app@4.0.0-beta.243
701
+
702
+ ## 4.0.0-beta.242
703
+
704
+ ### Patch Changes
705
+
706
+ - Updated dependencies [da83c1f]
707
+ - Updated dependencies [21017d5]
708
+ - Updated dependencies [2495ace]
709
+ - effect-app@4.0.0-beta.242
710
+
711
+ ## 4.0.0-beta.241
712
+
713
+ ### Patch Changes
714
+
715
+ - Updated dependencies [b035b1c]
716
+ - effect-app@4.0.0-beta.241
717
+
718
+ ## 4.0.0-beta.240
719
+
720
+ ### Patch Changes
721
+
722
+ - c5e348f: Fix `provideOnRequestScope` leaking a single `ContextMap` across concurrent requests.
723
+
724
+ `Layer.buildWithScope(layer, requestScope)` resolves its `MemoMap` from the
725
+ ambient fiber context, which lives on the HTTP server fiber and is therefore
726
+ shared by every request that server handles. With the resulting memoization,
727
+ the first request to land on a freshly-started server built
728
+ `ContextMapContainer.layer` once; every subsequent overlapping request received
729
+ the same `ContextMap` instance — etags written by one request were observed
730
+ (or overwritten) by another, and the finalizer was anchored to the first
731
+ request's scope.
732
+
733
+ `provideOnRequestScope` now allocates a fresh `MemoMap` per call via
734
+ `Layer.makeMemoMap` and builds with `Layer.buildWithMemoMap(layer, memoMap,
735
+ requestScope)`. Each request gets its own `ContextMap`, the request-scope
736
+ binding from the earlier SSE fix is preserved, and the finalizer still only
737
+ fires once the response body has fully drained.
738
+
739
+ Adds regression coverage in `rpc-context-map-streaming.test.ts` for three
740
+ properties: mid-stream survival of ContextMap state, a fresh map on each
741
+ succeeding request, and isolation between overlapping concurrent requests.
742
+
743
+ - effect-app@4.0.0-beta.240
744
+
745
+ ## 4.0.0-beta.239
746
+
747
+ ### Patch Changes
748
+
749
+ - bb3f51d: Fix ContextMap finalizer running mid-stream on SSE responses. SSE handler now binds ContextMapContainer to the request scope via a shared `provideOnRequestScope` helper (also used by `RequestContextMiddleware`), so finalizers only run after the response body is fully drained. Adds `setupStreamingRequestContextFromCurrent` for use by streaming HTTP handlers.
750
+ - effect-app@4.0.0-beta.239
751
+
752
+ ## 4.0.0-beta.238
753
+
754
+ ### Patch Changes
755
+
756
+ - b63f10f: fix: nasty request scope bug
757
+ - effect-app@4.0.0-beta.238
758
+
759
+ ## 4.0.0-beta.237
760
+
761
+ ### Patch Changes
762
+
763
+ - 3cf0c42: Fix `ContextMap` memory leak: tie its lifecycle to the request scope.
764
+
765
+ `ContextMapContainer.layer` provides a fresh `ContextMap` per request via `Layer.effect`, but the inner `etags` and `store` maps were never released. Cached `RequestResolver` entries (and anything they closed over) stayed reachable as long as any fiber held a reference to the map, even after the request scope closed.
766
+
767
+ `ContextMap` is now built with `Effect.acquireRelease`, and `makeContextMap` exposes a `clear()` finalizer that empties both maps when the request scope closes. `Layer.effect` strips the `Scope` requirement automatically in Effect v4.
768
+
769
+ - effect-app@4.0.0-beta.237
770
+
771
+ ## 4.0.0-beta.236
772
+
773
+ ### Patch Changes
774
+
775
+ - effect-app@4.0.0-beta.236
776
+
777
+ ## 4.0.0-beta.235
778
+
779
+ ### Patch Changes
780
+
781
+ - 6cfd83d: update effect to latest beta
782
+ - Updated dependencies [ba4bdc3]
783
+ - Updated dependencies [6cfd83d]
784
+ - effect-app@4.0.0-beta.235
785
+
786
+ ## 4.0.0-beta.234
787
+
788
+ ### Patch Changes
789
+
790
+ - effect-app@4.0.0-beta.234
791
+
792
+ ## 4.0.0-beta.233
793
+
794
+ ### Patch Changes
795
+
796
+ - 57a1862: Update to effect 4.0.0-beta.67. Switch deps from `pkg.pr.new` snapshot back to npm beta tag.
797
+ - Updated dependencies [57a1862]
798
+ - effect-app@4.0.0-beta.233
799
+
800
+ ## 4.0.0-beta.232
801
+
802
+ ### Patch Changes
803
+
804
+ - 0263827: Update to effect `pkg.pr.new` snapshot at `a42ef66` (4.0.0-beta.66). Remove `Yieldable` and `asEffect()` (service tags are now `Effect` directly).
805
+ - Updated dependencies [0263827]
806
+ - Updated dependencies [0263827]
807
+ - Updated dependencies [0263827]
808
+ - effect-app@4.0.0-beta.232
809
+
810
+ ## 4.0.0-beta.231
811
+
812
+ ### Patch Changes
813
+
814
+ - 7ca66ce: Update to effect 4.0.0-beta.66. Remove `Yieldable` and `asEffect()` (service tags are now `Effect` directly).
815
+ - Updated dependencies [7ca66ce]
816
+ - effect-app@4.0.0-beta.231
817
+
818
+ ## 4.0.0-beta.230
819
+
820
+ ### Minor Changes
821
+
822
+ - 1cee480: Add aggregate query support: `Q.aggregate(schema, aggregateMap)` performs GROUP BY + aggregate functions at the database level (Memory, SQL, Cosmos).
823
+
824
+ - New `agg` DSL namespace: `agg.field(path)` (group-by), `agg.count()`, `agg.countWhen(op)`, `agg.sum(field)`, `agg.min(field)`, `agg.max(field)`
825
+ - New `aggregate(schema, aggregateMap)` query operator replaces in-memory grouping with a single DB-level query
826
+ - Memory store: pure JS group-by + aggregation
827
+ - SQL store: `GROUP BY` + `COUNT(CASE WHEN ...)` / `SUM` / `MIN` / `MAX`
828
+ - Cosmos store: `GROUP BY` + `SUM(IIF(...))` for conditional counts
829
+
830
+ ### Patch Changes
831
+
832
+ - effect-app@4.0.0-beta.230
833
+
834
+ ## 4.0.0-beta.229
835
+
836
+ ### Patch Changes
837
+
838
+ - effect-app@4.0.0-beta.229
839
+
840
+ ## 4.0.0-beta.228
841
+
842
+ ### Patch Changes
843
+
844
+ - effect-app@4.0.0-beta.228
845
+
846
+ ## 4.0.0-beta.227
847
+
848
+ ### Patch Changes
849
+
850
+ - bac9f1a: Fix Cosmos `projectComputed` parameter index shift when `relation(...).every(...)` is present. The shared filter `print` was invoked twice per `relation-every` (once eagerly for the `where` variable, again inside the `NOT EXISTS(... WHERE NOT (...))` branch), bumping the outer `@v` counter beyond the bound parameter array and producing SQL that referenced unbound placeholders — queries returned 0 rows on Cosmos while SQLite/Memory adapters were unaffected.
851
+ - effect-app@4.0.0-beta.227
852
+
853
+ ## 4.0.0-beta.226
854
+
855
+ ### Patch Changes
856
+
857
+ - f7290aa: Add `relation(...).length()` computed projection — emits `ARRAY_LENGTH` on Cosmos / `arrayLength` on SQL / native `.length` on Memory. Cheaper than `relation.count()` for unconditional array sizing (no subquery scan, just metadata read).
858
+
859
+ ```ts
860
+ projectComputed(
861
+ S.Struct({ id: S.String, packageCount: S.NonNegativeInt }),
862
+ computed({ packageCount: relation<OrderEnc>("packages").length() })
863
+ );
864
+ ```
865
+
866
+ - 8062ad3: Unify Emailer `sendMail` spans across implementations. `Fake.sendMail` and `Sendgrid.sendMail` now both emit as `Emailer.sendMail` with OTel-standard `messaging.system` attribute (`"fake"` / `"sendgrid"`).
867
+ - effect-app@4.0.0-beta.226
868
+
869
+ ## 4.0.0-beta.225
870
+
871
+ ### Patch Changes
872
+
873
+ - 39996f7: Unify `parseMany` span variants under a single span name. The four prior spans (`parseMany`, `parseMany2`, `parseManyProject`, `parseManyCollect`) now all emit as `parseMany` with `app.entity` and `app.query.mode` attributes (`"transform" | "project" | "collect"`). Reuses the same attribute key already set on the parent `Repository.query` span for consistency. `parseManyProject`/`parseManyCollect` previously lacked `app.entity` — now included.
874
+ - effect-app@4.0.0-beta.225
875
+
876
+ ## 4.0.0-beta.224
877
+
878
+ ### Patch Changes
879
+
880
+ - effect-app@4.0.0-beta.224
881
+
882
+ ## 4.0.0-beta.223
883
+
884
+ ### Patch Changes
885
+
886
+ - 2871841: RequestContextMiddleware: set request name to `HTTP <method> <path>` (strip query string) for clearer span/trace names.
887
+ - effect-app@4.0.0-beta.223
888
+
889
+ ## 4.0.0-beta.222
890
+
891
+ ### Patch Changes
892
+
893
+ - effect-app@4.0.0-beta.222
894
+
895
+ ## 4.0.0-beta.221
896
+
897
+ ### Patch Changes
898
+
899
+ - 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"`).
900
+ - Updated dependencies [439cbeb]
901
+ - effect-app@4.0.0-beta.221
902
+
903
+ ## 4.0.0-beta.220
904
+
905
+ ### Patch Changes
906
+
907
+ - aa436d3: fix bs span
908
+ - effect-app@4.0.0-beta.220
909
+
910
+ ## 4.0.0-beta.219
911
+
912
+ ### Patch Changes
913
+
914
+ - 13c2fd9: doc span
915
+ - d738811: remove double prefix
916
+ - 724da29: replace useless span
917
+ - Updated dependencies [d738811]
918
+ - effect-app@4.0.0-beta.219
919
+
920
+ ## 4.0.0-beta.218
921
+
922
+ ### Minor Changes
923
+
924
+ - 95995d5: Add `collectFields`/`collectDistinctFields` to `relation()` DSL for collecting values from multiple fields of relation items into a single flattened array.
925
+
926
+ 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[]`:
927
+
928
+ ```ts
929
+ relation("items").collectDistinctFields(["x", "y"]);
930
+ ```
931
+
932
+ ### Patch Changes
933
+
934
+ - effect-app@4.0.0-beta.218
935
+
936
+ ## 4.0.0-beta.217
937
+
938
+ ### Patch Changes
939
+
940
+ - e3ceaba: Add computed projection expression sums with grouped and normalized variants for projectComputed relation aggregations.
941
+ - Updated dependencies [0e824ef]
942
+ - effect-app@4.0.0-beta.217
943
+
944
+ ## 4.0.0-beta.216
945
+
946
+ ### Patch Changes
947
+
948
+ - f28fce5: fix sqlite
949
+ - effect-app@4.0.0-beta.216
950
+
951
+ ## 4.0.0-beta.215
952
+
953
+ ### Patch Changes
954
+
955
+ - 24f5dd0: fix memory computation
956
+ - effect-app@4.0.0-beta.215
957
+
958
+ ## 4.0.0-beta.214
959
+
960
+ ### Minor Changes
961
+
962
+ - fb93244: Extend computed projections with additional relation operators:
963
+
964
+ - `relation(path).every(op)` — boolean, all elements match the filter (compiled as `NOT EXISTS(... WHERE NOT (filter))`).
965
+ - `relation(path).distinctCount(field, op?)` — distinct count of values at `field` within the relation.
966
+ - `relation(path).sum(field, op?)` — numeric sum over a relation field.
967
+ - `relation(path).collect(field, op?)` / `collectDistinct(field, op?)` — collect values into an array (with optional dedup).
968
+
969
+ All operators compile to native subqueries on SQL (sqlite/pg) and Cosmos, and to in-memory equivalents on the Memory store.
970
+
971
+ ### Patch Changes
972
+
973
+ - effect-app@4.0.0-beta.214
974
+
975
+ ## 4.0.0-beta.213
976
+
977
+ ### Minor Changes
978
+
979
+ - aac6308: Add computed projections for repository queries with adapter-level compilation for memory, SQL, and Cosmos stores.
980
+
981
+ ### Patch Changes
982
+
983
+ - 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`.
984
+ - effect-app@4.0.0-beta.213
985
+
986
+ ## 4.0.0-beta.212
987
+
988
+ ### Patch Changes
989
+
990
+ - Updated dependencies [8792221]
991
+ - effect-app@4.0.0-beta.212
992
+
993
+ ## 4.0.0-beta.211
994
+
995
+ ### Patch Changes
996
+
997
+ - 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.
998
+ - 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`.
999
+ - effect-app@4.0.0-beta.211
1000
+
1001
+ ## 4.0.0-beta.210
1002
+
1003
+ ### Minor Changes
1004
+
1005
+ - 3a588e4: Standardize span attributes on OpenTelemetry semantic conventions.
1006
+
1007
+ All Store adapters (Cosmos, PostgreSQL, SQLite, Memory, Disk) and Queue adapters
1008
+ (Service Bus, SQL, Memory) now emit OTel-compliant span names and attributes via
1009
+ the new `@effect-app/infra/otel` helper module.
1010
+
1011
+ Span name convention: `<operation> <collection|destination>` (low cardinality).
1012
+
1013
+ Attribute key migration:
1014
+
1015
+ | Old | New |
1016
+ | --------------------------------------------------- | --------------------------------------------------------------------------------- |
1017
+ | `repository.table_name` / `repository.container_id` | `db.collection.name` |
1018
+ | `repository.namespace` | `db.namespace` |
1019
+ | `repository.model_name` / `itemType` | `app.entity` |
1020
+ | `id` / `itemId` (entity span attr) | `app.entity.id` |
1021
+ | `itemIds` | `app.entity.ids` |
1022
+ | `db.cosmos.request_charge` | `azure.cosmosdb.operation.request_charge` |
1023
+ | `db.cosmos.resource_count` | `db.response.returned_rows` |
1024
+ | `db.cosmos.response_bytes` | `db.response.body.size` |
1025
+ | `disk.file` / `disk.file_size` | `disk.file.path` / `disk.file.size` |
1026
+ | `queue.name` | `messaging.destination.name` |
1027
+ | `queue.sessionId` | `messaging.message.conversation_id` |
1028
+ | `queue.type` | `messaging.system` |
1029
+ | `queue.input` (full body) | `messaging.message.body` (+ `messaging.message.id`, `messaging.message.type`) |
1030
+ | `message_tags` | `messaging.message.types` + `messaging.batch.message_count` |
1031
+ | `request.name` | `code.function.name` (from `spanAttributes`) / `rpc.method` (middleware) |
1032
+ | `request.locale` | `app.locale` |
1033
+ | `request.namespace` | `app.tenant.id` |
1034
+ | `request.source.id` | `client.id` |
1035
+ | `request.user.sub` / `.roles` | `user.id` / `user.roles` |
1036
+ | `requestInput` | `rpc.request.payload` |
1037
+ | `connectionId` | `network.connection.id` |
1038
+ | Span `Request.<module>.<method>` | Span `<module>/<method>` + `rpc.system`/`rpc.service`/`rpc.method` (kind: server) |
1039
+ | `<spanPrefix>.<op>` (SQL/Model) | OTel db span via `withDbSpan`, with `dbSystem?` option |
1040
+
1041
+ New attributes added:
1042
+
1043
+ - `db.system.name` — e.g. `postgresql`, `sqlite`, `cosmosdb`, `memory`, `disk`
1044
+ - `db.operation.name` — e.g. `find`, `all`, `filter`, `set`
1045
+ - `db.query.text` — sanitized / parameterized SQL or Cosmos query (no bound values)
1046
+ - `messaging.operation.name` — `publish`, `process`, `receive`
1047
+
1048
+ Breaking: dashboards/alerts keying on the previous attribute names must be
1049
+ updated. Queue consumer spans no longer log raw message bodies — use
1050
+ `messaging.message.id` and `messaging.message.type` instead.
1051
+
1052
+ ### Patch Changes
1053
+
1054
+ - effect-app@4.0.0-beta.210
1055
+
1056
+ ## 4.0.0-beta.209
1057
+
1058
+ ### Patch Changes
1059
+
1060
+ - c991be1: update packages
1061
+ - Updated dependencies [c991be1]
1062
+ - Updated dependencies [3bae238]
1063
+ - effect-app@4.0.0-beta.209
1064
+
1065
+ ## 4.0.0-beta.208
1066
+
1067
+ ### Patch Changes
1068
+
1069
+ - effect-app@4.0.0-beta.208
1070
+
1071
+ ## 4.0.0-beta.207
1072
+
1073
+ ### Patch Changes
1074
+
1075
+ - b0db40f: Router handlers are now discriminated by `Resource[K]["stream"]`:
1076
+
1077
+ - Stream resources (`stream: true`) accept only `(req) => Stream<...>` handlers.
1078
+ - Non-stream resources accept only `(req) => Effect<...>` (or generator yielding `Yieldable`).
1079
+
1080
+ Mixing — e.g. returning `Effect.fail(...)` or `Effect<Stream<...>>` from a stream handler — no longer type-checks.
1081
+
1082
+ 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)`.
1083
+
1084
+ - Updated dependencies [8fffc3c]
1085
+ - effect-app@4.0.0-beta.207
1086
+
1087
+ ## 4.0.0-beta.206
1088
+
1089
+ ### Patch Changes
1090
+
1091
+ - 54bfc59: Require middleware to flow through `makeRpcClient` and the live layer through `makeRouter`.
1092
+
1093
+ ### `makeRpcClient(middleware, generalErrors?)`
1094
+
1095
+ 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.
1096
+
1097
+ **Migration**:
1098
+
1099
+ ```diff
1100
+ -makeRpcClient(RequestContextMap, undefined, AppMiddleware)
1101
+ +makeRpcClient(AppMiddleware)
1102
+ ```
1103
+
1104
+ For tests/clients without a real middleware, build a minimal stub (`{ requestContextMap, requestContext }`) or pass any value satisfying `ClientMiddleware<RCM>`.
1105
+
1106
+ ### `makeRouter(middlewareLive)`
1107
+
1108
+ `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.
1109
+
1110
+ **Migration**:
1111
+
1112
+ ```diff
1113
+ -export const { Router, matchAll } = makeRouter()
1114
+ +export const { Router, matchAll } = makeRouter(AppMiddleware.Default)
1115
+ ```
1116
+
1117
+ - Updated dependencies [54bfc59]
1118
+ - effect-app@4.0.0-beta.206
1119
+
1120
+ ## 4.0.0-beta.205
1121
+
1122
+ ### Patch Changes
1123
+
1124
+ - Updated dependencies [f313973]
1125
+ - effect-app@4.0.0-beta.205
1126
+
1127
+ ## 4.0.0-beta.204
1128
+
1129
+ ### Patch Changes
1130
+
1131
+ - Updated dependencies [0a0030f]
1132
+ - effect-app@4.0.0-beta.204
1133
+
1134
+ ## 4.0.0-beta.203
1135
+
1136
+ ### Patch Changes
1137
+
1138
+ - Updated dependencies [992d9fa]
1139
+ - effect-app@4.0.0-beta.203
1140
+
1141
+ ## 4.0.0-beta.202
1142
+
1143
+ ### Patch Changes
1144
+
1145
+ - Updated dependencies [1186b09]
1146
+ - effect-app@4.0.0-beta.202
1147
+
1148
+ ## 4.0.0-beta.201
1149
+
1150
+ ### Patch Changes
1151
+
1152
+ - 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.
1153
+
1154
+ ### Resource error schemas
1155
+
1156
+ Three sites that used to fold `RequestContextMap[*].error` into a request's own error schema now stop doing so:
1157
+
1158
+ - `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).
1159
+ - `MiddlewareMaker.rpc()` — `error: options.error` only; the previous union with `rcm.config[*].error` is gone.
1160
+ - Routing and `apiClientFactory.makeRpcGroupFromRequestsAndModuleName` — `Invalidation.makeCommandRpc` is called with `error: resource.error` (no widening with the composite middleware error union).
1161
+
1162
+ 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:
1163
+
1164
+ - **Server**: `makeRouter(middleware)` attaches the live composite tag (existing behavior).
1165
+ - **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.
1166
+
1167
+ **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.
1168
+
1169
+ ### Invalidation wrap/unwrap
1170
+
1171
+ - `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.
1172
+ - `apiClientFactory.ts` (client) `unwrapCommand` strips both envelopes and forwards keys to `InvalidationKeysFromServer`.
1173
+ - `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.
1174
+
1175
+ 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.
1176
+
1177
+ - Updated dependencies [d67d17a]
1178
+ - effect-app@4.0.0-beta.201
1179
+
1180
+ ## 4.0.0-beta.200
1181
+
1182
+ ### Patch Changes
1183
+
1184
+ - 0cff7c1: workaround middleware error issue
1185
+ - Updated dependencies [8f1cf6a]
1186
+ - Updated dependencies [0cff7c1]
1187
+ - effect-app@4.0.0-beta.200
1188
+
1189
+ ## 4.0.0-beta.199
1190
+
1191
+ ### Patch Changes
1192
+
1193
+ - de9fb83: Annotate Cosmos read spans with response size, resource count, and request charge.
1194
+
1195
+ `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.
1196
+
1197
+ - effect-app@4.0.0-beta.199
1198
+
1199
+ ## 4.0.0-beta.198
1200
+
1201
+ ### Patch Changes
1202
+
1203
+ - 32dbc54: fix stream type when no success specified
1204
+ - Updated dependencies [32dbc54]
1205
+ - effect-app@4.0.0-beta.198
1206
+
1207
+ ## 4.0.0-beta.197
1208
+
1209
+ ### Minor Changes
1210
+
1211
+ - 3dc0d2a: Add streaming as a `stream: true` config option on `Query` / `Command` instead of a separate request type.
1212
+
1213
+ `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).
1214
+
1215
+ ```ts
1216
+ // Query that streams results
1217
+ Req.Query<T>()("Tag", {}, { stream: true, success: ... })
1218
+
1219
+ // Command that streams results
1220
+ Req.Command<T>()("Tag", {}, { stream: true, success: ... })
1221
+ ```
1222
+
1223
+ Vue client mapping (per-handler properties mirror the non-stream API — `.query`, `.fn`, `.mutate`):
1224
+
1225
+ - `query` + `stream: true` → exposes `.query` (read-only streaming, tracked Vue Query). Helper map key: `${name}Query`.
1226
+ - `command` + `stream: true` → exposes `.fn` and `.mutate` (mutating streaming).
1227
+ - Plain `query` / `command` unchanged.
1228
+
1229
+ Server routing dispatches via the new `stream` flag (`makeStreamRpc` for streaming commands/queries, `makeCommandRpc` / `Rpc.make` otherwise).
1230
+
1231
+ 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.
1232
+
1233
+ **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.
1234
+
1235
+ ### Patch Changes
1236
+
1237
+ - Updated dependencies [3dc0d2a]
1238
+ - effect-app@4.0.0-beta.197
1239
+
1240
+ ## 4.0.0-beta.196
1241
+
1242
+ ### Patch Changes
1243
+
1244
+ - effect-app@4.0.0-beta.196
1245
+
1246
+ ## 4.0.0-beta.195
1247
+
1248
+ ### Patch Changes
1249
+
1250
+ - 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.
1251
+
1252
+ 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`.
1253
+
1254
+ `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".
1255
+
1256
+ 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.
1257
+
1258
+ - Updated dependencies [774a9b3]
1259
+ - effect-app@4.0.0-beta.195
1260
+
1261
+ ## 4.0.0-beta.194
1262
+
1263
+ ### Patch Changes
1264
+
1265
+ - effect-app@4.0.0-beta.194
1266
+
1267
+ ## 4.0.0-beta.193
1268
+
1269
+ ### Patch Changes
1270
+
1271
+ - 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`.
1272
+ - effect-app@4.0.0-beta.193
1273
+
1274
+ ## 4.0.0-beta.192
1275
+
1276
+ ### Patch Changes
1277
+
1278
+ - dba5779: namespaces
1279
+ - effect-app@4.0.0-beta.192
1280
+
1281
+ ## 4.0.0-beta.191
1282
+
1283
+ ### Patch Changes
1284
+
1285
+ - 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`.
1286
+ - Updated dependencies [50ce7e6]
1287
+ - effect-app@4.0.0-beta.191
1288
+
1289
+ ## 4.0.0-beta.190
1290
+
1291
+ ### Patch Changes
1292
+
1293
+ - Updated dependencies [985176b]
1294
+ - effect-app@4.0.0-beta.190
1295
+
1296
+ ## 4.0.0-beta.189
1297
+
1298
+ ### Patch Changes
1299
+
1300
+ - 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.
1301
+ - Updated dependencies [ea32222]
1302
+ - effect-app@4.0.0-beta.189
1303
+
1304
+ ## 4.0.0-beta.188
1305
+
1306
+ ### Patch Changes
1307
+
1308
+ - b2e438f: Remove Operations service and repo
1309
+ - Updated dependencies [b2e438f]
1310
+ - effect-app@4.0.0-beta.188
1311
+
1312
+ ## 4.0.0-beta.187
1313
+
1314
+ ### Patch Changes
1315
+
1316
+ - Updated dependencies [0d4e0b8]
1317
+ - effect-app@4.0.0-beta.187
1318
+
1319
+ ## 4.0.0-beta.186
1320
+
1321
+ ### Patch Changes
1322
+
1323
+ - effect-app@4.0.0-beta.186
1324
+
1325
+ ## 4.0.0-beta.185
1326
+
1327
+ ### Patch Changes
1328
+
1329
+ - effect-app@4.0.0-beta.185
1330
+
1331
+ ## 4.0.0-beta.184
1332
+
1333
+ ### Patch Changes
1334
+
1335
+ - effect-app@4.0.0-beta.184
1336
+
1337
+ ## 4.0.0-beta.183
1338
+
1339
+ ### Patch Changes
1340
+
1341
+ - effect-app@4.0.0-beta.183
1342
+
1343
+ ## 4.0.0-beta.182
1344
+
1345
+ ### Patch Changes
1346
+
1347
+ - effect-app@4.0.0-beta.182
1348
+
1349
+ ## 4.0.0-beta.181
1350
+
1351
+ ### Patch Changes
1352
+
1353
+ - Updated dependencies [583393f]
1354
+ - effect-app@4.0.0-beta.181
1355
+
1356
+ ## 4.0.0-beta.180
1357
+
1358
+ ### Minor Changes
1359
+
1360
+ - 7fa3045: V1/V2/V3: stream and command requests carry invalidation metadata
1361
+
1362
+ **V1** – stream final response includes metadata
1363
+
1364
+ - `Invalidation.StreamResponseChunk` wraps each stream item as `{ _tag: "value", value }` and appends `{ _tag: "done", metadata }` at the end carrying all accumulated invalidation keys.
1365
+
1366
+ **V2** – invalidation keys included in failures
1367
+
1368
+ - `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.
1369
+ - `InvalidationMiddlewareLive` wraps command failures; `routing.ts` wraps stream failures.
1370
+ - `apiClientFactory.ts` unwraps both on the client side, forwarding keys before re-failing with the original error.
1371
+
1372
+ **V3** – mid-stream metadata chunks
1373
+
1374
+ - `Invalidation.StreamResponseChunk` now also includes `{ _tag: "metadata", metadata }` for mid-stream invalidation.
1375
+ - 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`).
1376
+ - `apiClientFactory.ts` processes "metadata" chunks the same as "done" chunks, forwarding keys to `InvalidationKeysFromServer` immediately.
1377
+ - `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.
1378
+
1379
+ ### Patch Changes
1380
+
1381
+ - Updated dependencies [7fa3045]
1382
+ - effect-app@4.0.0-beta.180
1383
+
1384
+ ## 4.0.0-beta.179
1385
+
1386
+ ### Patch Changes
1387
+
1388
+ - Updated dependencies [828d264]
1389
+ - effect-app@4.0.0-beta.179
1390
+
1391
+ ## 4.0.0-beta.178
1392
+
1393
+ ### Patch Changes
1394
+
1395
+ - effect-app@4.0.0-beta.178
1396
+
1397
+ ## 4.0.0-beta.177
1398
+
1399
+ ### Minor Changes
1400
+
1401
+ - 89d8b3a: Add Effect RPC `Stream` support to the wrapper.
1402
+
1403
+ - New `Stream` request constructor on `TaggedRequestFor` parallel to `Query`/`Command`. Emits resources with `type: "stream"`.
1404
+ - 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).
1405
+ - 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.
1406
+ - New `RequestStreamHandler` / `RequestStreamHandlerWithInput` shapes in `clientFor.ts`; `RequestHandlers` dispatches on `type: "stream"`.
1407
+
1408
+ ### Patch Changes
1409
+
1410
+ - Updated dependencies [89d8b3a]
1411
+ - effect-app@4.0.0-beta.177
1412
+
1413
+ ## 4.0.0-beta.176
1414
+
1415
+ ### Patch Changes
1416
+
1417
+ - pass options
1418
+ - Updated dependencies
1419
+ - effect-app@4.0.0-beta.176
1420
+
1421
+ ## 4.0.0-beta.175
1422
+
1423
+ ### Patch Changes
1424
+
1425
+ - effect-app@4.0.0-beta.175
1426
+
1427
+ ## 4.0.0-beta.174
1428
+
1429
+ ### Minor Changes
1430
+
1431
+ - 821468d: Add server-driven cache invalidation via RPC response headers.
1432
+
1433
+ - `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.
1434
+ - `effect-app/middleware`: new `InvalidationMiddleware` RPC middleware tag; included in `DefaultGenericMiddlewares`.
1435
+ - `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`.
1436
+ - `@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.
1437
+ - `@effect-app/vue`: `invalidateQueries` / `useMutation` now reads server-provided invalidation keys from `InvalidationKeysFromServer` after each mutation and applies them alongside the client-side invalidation.
1438
+
1439
+ ### Patch Changes
1440
+
1441
+ - Updated dependencies [821468d]
1442
+ - effect-app@4.0.0-beta.174
1443
+
1444
+ ## 4.0.0-beta.173
1445
+
1446
+ ### Patch Changes
1447
+
1448
+ - effect-app@4.0.0-beta.173
1449
+
1450
+ ## 4.0.0-beta.172
1451
+
1452
+ ### Patch Changes
1453
+
1454
+ - improve sentry
1455
+ - effect-app@4.0.0-beta.172
1456
+
1457
+ ## 4.0.0-beta.171
1458
+
1459
+ ### Patch Changes
1460
+
1461
+ - Updated dependencies [d71d976]
1462
+ - effect-app@4.0.0-beta.171
1463
+
1464
+ ## 4.0.0-beta.170
1465
+
1466
+ ### Patch Changes
1467
+
1468
+ - Updated dependencies [8f09f77]
1469
+ - effect-app@4.0.0-beta.170
1470
+
1471
+ ## 4.0.0-beta.169
1472
+
1473
+ ### Patch Changes
1474
+
1475
+ - Updated dependencies [8ae8b53]
1476
+ - effect-app@4.0.0-beta.169
1477
+
1478
+ ## 4.0.0-beta.168
1479
+
1480
+ ### Patch Changes
1481
+
1482
+ - Updated dependencies [178480a]
1483
+ - effect-app@4.0.0-beta.168
1484
+
1485
+ ## 4.0.0-beta.167
1486
+
1487
+ ### Patch Changes
1488
+
1489
+ - Updated dependencies [140e192]
1490
+ - effect-app@4.0.0-beta.167
1491
+
1492
+ ## 4.0.0-beta.166
1493
+
1494
+ ### Patch Changes
1495
+
1496
+ - Updated dependencies [dbcc53b]
1497
+ - effect-app@4.0.0-beta.166
1498
+
1499
+ ## 4.0.0-beta.165
1500
+
1501
+ ### Patch Changes
1502
+
1503
+ - Updated dependencies [f88ea34]
1504
+ - effect-app@4.0.0-beta.165
1505
+
1506
+ ## 4.0.0-beta.164
1507
+
1508
+ ### Patch Changes
1509
+
1510
+ - Updated dependencies [8cb3de4]
1511
+ - effect-app@4.0.0-beta.164
1512
+
1513
+ ## 4.0.0-beta.163
1514
+
1515
+ ### Patch Changes
1516
+
1517
+ - Updated dependencies [b952f19]
1518
+ - effect-app@4.0.0-beta.163
1519
+
1520
+ ## 4.0.0-beta.162
1521
+
1522
+ ### Patch Changes
1523
+
1524
+ - Updated dependencies [b52b424]
1525
+ - effect-app@4.0.0-beta.162
1526
+
1527
+ ## 4.0.0-beta.161
1528
+
1529
+ ### Patch Changes
1530
+
1531
+ - effect-app@4.0.0-beta.161
1532
+
1533
+ ## 4.0.0-beta.160
1534
+
1535
+ ### Patch Changes
1536
+
1537
+ - 505bfa9: Add concurrent decode helper APIs and migrate decode callsites to use them.
1538
+
1539
+ - Add `withDefaultParseOptions` and keep `DefaultParseOptions` centralized.
1540
+ - Export `decodeEffectConcurrently` and `decodeUnknownEffectConcurrently` from Schema and SchemaParser modules.
1541
+ - Update repository, queue, client, form, and CLI decode paths to use concurrent decode helpers.
1542
+ - Keep schema constructors free of hardcoded parse concurrency overrides.
1543
+
1544
+ - Updated dependencies [505bfa9]
1545
+ - effect-app@4.0.0-beta.160
1546
+
1547
+ ## 4.0.0-beta.159
1548
+
1549
+ ### Patch Changes
1550
+
1551
+ - c1e73de:
1552
+ - Updated dependencies [c1e73de]
1553
+ - effect-app@4.0.0-beta.159
1554
+
1555
+ ## 4.0.0-beta.158
1556
+
1557
+ ### Patch Changes
1558
+
1559
+ - Updated dependencies [3c1f52d]
1560
+ - Updated dependencies [6ae3050]
1561
+ - effect-app@4.0.0-beta.158
1562
+
1563
+ ## 4.0.0-beta.157
1564
+
1565
+ ### Patch Changes
1566
+
1567
+ - 6fff09c: unify encoded function for when you use encodedKeys
1568
+ - Updated dependencies [6fff09c]
1569
+ - effect-app@4.0.0-beta.157
1570
+
1571
+ ## 4.0.0-beta.156
1572
+
1573
+ ### Patch Changes
1574
+
1575
+ - effect-app@4.0.0-beta.156
1576
+
1577
+ ## 4.0.0-beta.155
1578
+
1579
+ ### Patch Changes
1580
+
1581
+ - Updated dependencies [c215db8]
1582
+ - effect-app@4.0.0-beta.155
1583
+
1584
+ ## 4.0.0-beta.154
1585
+
1586
+ ### Patch Changes
1587
+
1588
+ - effect-app@4.0.0-beta.154
1589
+
1590
+ ## 4.0.0-beta.153
1591
+
1592
+ ### Patch Changes
1593
+
1594
+ - effect-app@4.0.0-beta.153
1595
+
1596
+ ## 4.0.0-beta.152
1597
+
1598
+ ### Patch Changes
1599
+
1600
+ - effect-app@4.0.0-beta.152
1601
+
1602
+ ## 4.0.0-beta.151
1603
+
1604
+ ### Patch Changes
1605
+
1606
+ - 925214b: update packages
1607
+ - effect-app@4.0.0-beta.151
1608
+
1609
+ ## 4.0.0-beta.150
1610
+
1611
+ ### Patch Changes
1612
+
1613
+ - Updated dependencies [85a8275]
1614
+ - effect-app@4.0.0-beta.150
1615
+
1616
+ ## 4.0.0-beta.149
1617
+
1618
+ ### Patch Changes
1619
+
1620
+ - Updated dependencies [f317c5e]
1621
+ - effect-app@4.0.0-beta.149
1622
+
1623
+ ## 4.0.0-beta.148
1624
+
1625
+ ### Patch Changes
1626
+
1627
+ - Updated dependencies [199e9a5]
1628
+ - effect-app@4.0.0-beta.148
1629
+
1630
+ ## 4.0.0-beta.147
1631
+
1632
+ ### Patch Changes
1633
+
1634
+ - Updated dependencies [47e3742]
1635
+ - effect-app@4.0.0-beta.147
1636
+
1637
+ ## 4.0.0-beta.146
1638
+
1639
+ ### Patch Changes
1640
+
1641
+ - Updated dependencies [a4dff57]
1642
+ - effect-app@4.0.0-beta.146
1643
+
1644
+ ## 4.0.0-beta.145
1645
+
1646
+ ### Patch Changes
1647
+
1648
+ - Updated dependencies [12abb55]
1649
+ - effect-app@4.0.0-beta.145
1650
+
1651
+ ## 4.0.0-beta.144
1652
+
1653
+ ### Patch Changes
1654
+
1655
+ - d31253f: Refactor eligible schema classes and tagged classes to Opaque schemas, and migrate constructor call sites to use `.make` for those models.
1656
+ - Updated dependencies [11422f8]
1657
+ - Updated dependencies [d31253f]
1658
+ - effect-app@4.0.0-beta.144
1659
+
1660
+ ## 4.0.0-beta.143
1661
+
1662
+ ### Patch Changes
1663
+
1664
+ - Updated dependencies [79eb019]
1665
+ - effect-app@4.0.0-beta.143
1666
+
1667
+ ## 4.0.0-beta.142
1668
+
1669
+ ### Patch Changes
1670
+
1671
+ - Updated dependencies [3436d44]
1672
+ - Updated dependencies [025de47]
1673
+ - effect-app@4.0.0-beta.142
1674
+
1675
+ ## 4.0.0-beta.141
1676
+
1677
+ ### Patch Changes
1678
+
1679
+ - Updated dependencies [7c25dbb]
1680
+ - effect-app@4.0.0-beta.141
1681
+
1682
+ ## 4.0.0-beta.140
1683
+
1684
+ ### Patch Changes
1685
+
1686
+ - 1576688: Add configurable `fakeMailAddress` to `SendgridConfig`. Supports `{i}` placeholder for unique addresses, e.g. `"test+{i}@example.com"`.
1687
+ - effect-app@4.0.0-beta.140
1688
+
1689
+ ## 4.0.0-beta.139
1690
+
1691
+ ### Patch Changes
1692
+
1693
+ - effect-app@4.0.0-beta.139
1694
+
1695
+ ## 4.0.0-beta.138
1696
+
1697
+ ### Patch Changes
1698
+
1699
+ - effect-app@4.0.0-beta.138
1700
+
1701
+ ## 4.0.0-beta.137
1702
+
1703
+ ### Patch Changes
1704
+
1705
+ - effect-app@4.0.0-beta.137
1706
+
1707
+ ## 4.0.0-beta.136
1708
+
1709
+ ### Patch Changes
1710
+
1711
+ - effect-app@4.0.0-beta.136
1712
+
1713
+ ## 4.0.0-beta.135
1714
+
1715
+ ### Patch Changes
1716
+
1717
+ - Updated dependencies [c7bbc41]
1718
+ - effect-app@4.0.0-beta.135
1719
+
1720
+ ## 4.0.0-beta.134
1721
+
1722
+ ### Patch Changes
1723
+
1724
+ - 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.
1725
+ - Updated dependencies [9d3495e]
1726
+ - Updated dependencies [f353d48]
1727
+ - effect-app@4.0.0-beta.134
1728
+
1729
+ ## 4.0.0-beta.133
1730
+
1731
+ ### Patch Changes
1732
+
1733
+ - 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).
1734
+ - c3299f7: update packages
1735
+ - Updated dependencies [c3299f7]
1736
+ - effect-app@4.0.0-beta.133
1737
+
1738
+ ## 4.0.0-beta.132
1739
+
1740
+ ### Patch Changes
1741
+
1742
+ - effect-app@4.0.0-beta.132
1743
+
1744
+ ## 4.0.0-beta.131
1745
+
1746
+ ### Patch Changes
1747
+
1748
+ - 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.
1749
+ - effect-app@4.0.0-beta.131
1750
+
1751
+ ## 4.0.0-beta.130
1752
+
1753
+ ### Patch Changes
1754
+
1755
+ - Updated dependencies [ea1bd46]
1756
+ - effect-app@4.0.0-beta.130
1757
+
1758
+ ## 4.0.0-beta.129
1759
+
1760
+ ### Patch Changes
1761
+
1762
+ - effect-app@4.0.0-beta.129
1763
+
1764
+ ## 4.0.0-beta.128
1765
+
1766
+ ### Patch Changes
1767
+
1768
+ - Updated dependencies [57db551]
1769
+ - effect-app@4.0.0-beta.128
1770
+
1771
+ ## 4.0.0-beta.127
1772
+
1773
+ ### Patch Changes
1774
+
1775
+ - 71a0719: Merge `batchPar` into `batch`, expose `concurrency` via an optional `BatchOptions` argument, and make `batch` dual (data-first + data-last).
1776
+ - 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.
1777
+ - effect-app@4.0.0-beta.127
1778
+
1779
+ ## 4.0.0-beta.126
1780
+
1781
+ ### Patch Changes
1782
+
1783
+ - Updated dependencies [458bb1b]
1784
+ - effect-app@4.0.0-beta.126
1785
+
1786
+ ## 4.0.0-beta.125
1787
+
1788
+ ### Patch Changes
1789
+
1790
+ - 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`.
1791
+ - effect-app@4.0.0-beta.125
1792
+
1793
+ ## 4.0.0-beta.124
1794
+
1795
+ ### Patch Changes
1796
+
1797
+ - c9e0c44: cleanup auth
1798
+ - 256ae85: cleanup
1799
+ - Updated dependencies [256ae85]
1800
+ - effect-app@4.0.0-beta.124
1801
+
1802
+ ## 4.0.0-beta.123
1803
+
1804
+ ### Patch Changes
1805
+
1806
+ - Updated dependencies [14aba14]
1807
+ - effect-app@4.0.0-beta.123
1808
+
1809
+ ## 4.0.0-beta.122
1810
+
1811
+ ### Patch Changes
1812
+
1813
+ - 27bf9b6: Fix `Repository.query` environment typing to exclude schema context provided through `makeRepo` options.
1814
+ - e02a258: Add optional batching overloads for repository `save` and `remove` helpers.
1815
+ - f052d38: Replace `(...) => Effect.gen` with `Effect.fnUntraced` and convert select multi-step `pipe` chains to `Effect.gen` across infra.
1816
+ - Updated dependencies [f052d38]
1817
+ - effect-app@4.0.0-beta.122
1818
+
1819
+ ## 4.0.0-beta.121
1820
+
1821
+ ### Patch Changes
1822
+
1823
+ - 1015582: Fix `Q.project` field selection with `Schema.encodeKeys` by deriving selected fields from the encoded schema shape.
1824
+ - Updated dependencies [5ac46cb]
1825
+ - effect-app@4.0.0-beta.121
1826
+
1827
+ ## 4.0.0-beta.120
1828
+
1829
+ ### Patch Changes
1830
+
1831
+ - Updated dependencies [f21190c]
1832
+ - effect-app@4.0.0-beta.120
1833
+
1834
+ ## 4.0.0-beta.119
1835
+
1836
+ ### Patch Changes
1837
+
1838
+ - db7ba34: Filter SSE events stream by storeId namespace
1839
+ - effect-app@4.0.0-beta.119
1840
+
1841
+ ## 4.0.0-beta.118
1842
+
1843
+ ### Patch Changes
1844
+
1845
+ - Update effect packages to 4.0.0-beta.52
1846
+ - Updated dependencies [bd26832]
1847
+ - Updated dependencies [08d2e70]
1848
+ - Updated dependencies
1849
+ - effect-app@4.0.0-beta.118
1850
+
1851
+ ## 4.0.0-beta.117
1852
+
1853
+ ### Patch Changes
1854
+
1855
+ - 1d85785: Wrap store seed effects with `Effect.uninterruptible` to prevent interruption during seeding
1856
+ - effect-app@4.0.0-beta.117
1857
+
1858
+ ## 4.0.0-beta.116
1859
+
1860
+ ### Patch Changes
1861
+
1862
+ - 7d5cefc: SQL and Pg stores now scope seed migration records by namespace and table name in shared databases to avoid cross-namespace seed collisions.
1863
+ - effect-app@4.0.0-beta.116
1864
+
1865
+ ## 4.0.0-beta.115
1866
+
1867
+ ### Patch Changes
1868
+
1869
+ - 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.
1870
+ - effect-app@4.0.0-beta.115
1871
+
1872
+ ## 4.0.0-beta.114
1873
+
1874
+ ### Patch Changes
1875
+
1876
+ - 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.
1877
+ - effect-app@4.0.0-beta.114
1878
+
1879
+ ## 4.0.0-beta.113
1880
+
1881
+ ### Minor Changes
1882
+
1883
+ - 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.
1884
+
1885
+ 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.
1886
+
1887
+ 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.
1888
+
1889
+ ### Patch Changes
1890
+
1891
+ - effect-app@4.0.0-beta.113
1892
+
1893
+ ## 4.0.0-beta.112
1894
+
1895
+ ### Patch Changes
1896
+
1897
+ - 8a4a6d2: fup
1898
+ - effect-app@4.0.0-beta.112
1899
+
1900
+ ## 4.0.0-beta.111
1901
+
1902
+ ### Patch Changes
1903
+
1904
+ - ca94edf: fix typo
1905
+ - Updated dependencies [ca94edf]
1906
+ - effect-app@4.0.0-beta.111
1907
+
1908
+ ## 4.0.0-beta.110
1909
+
1910
+ ### Minor Changes
1911
+
1912
+ - 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`.
1913
+
1914
+ ### Patch Changes
1915
+
1916
+ - effect-app@4.0.0-beta.110
1917
+
1918
+ ## 4.0.0-beta.109
1919
+
1920
+ ### Patch Changes
1921
+
1922
+ - 82f66f1: use uninterruptiple
1923
+ - effect-app@4.0.0-beta.109
1924
+
1925
+ ## 4.0.0-beta.108
1926
+
1927
+ ### Patch Changes
1928
+
1929
+ - Updated dependencies [3e46e7b]
1930
+ - effect-app@4.0.0-beta.108
1931
+
1932
+ ## 4.0.0-beta.107
1933
+
1934
+ ### Patch Changes
1935
+
1936
+ - 902ca1b: fix
1937
+ - effect-app@4.0.0-beta.107
1938
+
1939
+ ## 4.0.0-beta.106
1940
+
1941
+ ### Patch Changes
1942
+
1943
+ - f22a026: Use `Effect.cached` in `getOrCreateStoreEffect` for proper memoization of the resolver effect.
1944
+ - effect-app@4.0.0-beta.106
1945
+
1946
+ ## 4.0.0-beta.105
1947
+
1948
+ ### Minor Changes
1949
+
1950
+ - 3d732b1: Rewrite `withRequestResolverCache` to use official `RequestResolver.withCache`, creating a cached resolver per ContextMap via `getOrCreateStoreEffect` with semaphore-guarded initialization.
1951
+
1952
+ ### Patch Changes
1953
+
1954
+ - 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.
1955
+ - 5773159: Add `itemType` annotation to all repository spans
1956
+ - effect-app@4.0.0-beta.105
1957
+
1958
+ ## 4.0.0-beta.104
1959
+
1960
+ ### Patch Changes
1961
+
1962
+ - Updated dependencies [e944bca]
1963
+ - effect-app@4.0.0-beta.104
1964
+
1965
+ ## 4.0.0-beta.103
1966
+
1967
+ ### Patch Changes
1968
+
1969
+ - Updated dependencies [7119320]
1970
+ - effect-app@4.0.0-beta.103
1971
+
1972
+ ## 4.0.0-beta.102
1973
+
1974
+ ### Patch Changes
1975
+
1976
+ - 62627e9: Fix boolean handling in SQL SELECT and WHERE
1977
+ - effect-app@4.0.0-beta.102
1978
+
1979
+ ## 4.0.0-beta.101
1980
+
1981
+ ### Patch Changes
1982
+
1983
+ - effect-app@4.0.0-beta.101
1984
+
1985
+ ## 4.0.0-beta.100
1986
+
1987
+ ### Patch Changes
1988
+
1989
+ - 43611c7: enable cosmosdb large partition key hashes
1990
+ - effect-app@4.0.0-beta.100
1991
+
1992
+ ## 4.0.0-beta.99
1993
+
1994
+ ### Patch Changes
1995
+
1996
+ - 6a0e008: remove artificial Cosmos bulkSet delays
1997
+ - effect-app@4.0.0-beta.99
1998
+
1999
+ ## 4.0.0-beta.98
2000
+
2001
+ ### Patch Changes
2002
+
2003
+ - 5aed2e3: Add span to Cosmos `batchRemove` and include `namespace` attribute on all Cosmos store spans.
2004
+ - effect-app@4.0.0-beta.98
2005
+
2006
+ ## 4.0.0-beta.97
2007
+
2008
+ ### Patch Changes
2009
+
2010
+ - 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.
2011
+ - effect-app@4.0.0-beta.97
2012
+
2013
+ ## 4.0.0-beta.96
2014
+
2015
+ ### Patch Changes
2016
+
2017
+ - Updated dependencies [5615e47]
2018
+ - effect-app@4.0.0-beta.96
2019
+
2020
+ ## 4.0.0-beta.95
2021
+
2022
+ ### Patch Changes
2023
+
2024
+ - 88838fb: Remove pick/omit customizations from Class/TaggedClass/Struct/TaggedStruct. Use `Struct.pick(X.fields, [...])` from `effect-app` instead.
2025
+ - Updated dependencies [88838fb]
2026
+ - effect-app@4.0.0-beta.95
2027
+
2028
+ ## 4.0.0-beta.94
2029
+
2030
+ ### Patch Changes
2031
+
2032
+ - effect-app@4.0.0-beta.94
2033
+
2034
+ ## 4.0.0-beta.93
2035
+
2036
+ ### Patch Changes
2037
+
2038
+ - 2d85646: fix SQL includes-any/all double-quoting values for SQLite (JSON.stringify only needed for Postgres jsonb)
2039
+ - effect-app@4.0.0-beta.93
2040
+
2041
+ ## 4.0.0-beta.92
2042
+
2043
+ ### Patch Changes
2044
+
2045
+ - b4ffee0: fix SQL whereEvery double-negation bug causing wrong query when operators like notIn are used (especially with empty arrays)
2046
+ - effect-app@4.0.0-beta.92
2047
+
2048
+ ## 4.0.0-beta.91
2049
+
2050
+ ### Patch Changes
2051
+
2052
+ - Updated dependencies [738b482]
2053
+ - effect-app@4.0.0-beta.91
2054
+
2055
+ ## 4.0.0-beta.90
2056
+
2057
+ ### Patch Changes
2058
+
2059
+ - d786b91: Fix SQL `whereSome`/`whereEvery` array relation queries using `EXISTS` with `json_each` (SQLite) / `jsonb_array_elements` (Pg).
2060
+ - effect-app@4.0.0-beta.90
2061
+
2062
+ ## 4.0.0-beta.89
2063
+
2064
+ ### Patch Changes
2065
+
2066
+ - 9a9e46c: Fix SQL select queries to read `_etag` from column instead of JSON data, preventing INSERT on update.
2067
+ - effect-app@4.0.0-beta.89
2068
+
2069
+ ## 4.0.0-beta.88
2070
+
2071
+ ### Patch Changes
2072
+
2073
+ - dfd5562: Fix SQL `IN`/`NOT IN` with null values to use `IS NULL`/`IS NOT NULL` instead of `IN (NULL, ...)`.
2074
+ - effect-app@4.0.0-beta.88
2075
+
2076
+ ## 4.0.0-beta.87
2077
+
2078
+ ### Patch Changes
2079
+
2080
+ - 5a709d1: Fix SQLite select query type coercion using `json_quote` and apply defaultValues in SQL WHERE clauses via `COALESCE`.
2081
+ - effect-app@4.0.0-beta.87
2082
+
2083
+ ## 4.0.0-beta.86
2084
+
2085
+ ### Patch Changes
2086
+
2087
+ - 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.
2088
+ - effect-app@4.0.0-beta.86
2089
+
2090
+ ## 4.0.0-beta.85
2091
+
2092
+ ### Patch Changes
2093
+
2094
+ - 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.
2095
+ - effect-app@4.0.0-beta.85
2096
+
2097
+ ## 4.0.0-beta.84
2098
+
2099
+ ### Patch Changes
2100
+
2101
+ - 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).
2102
+ - effect-app@4.0.0-beta.84
2103
+
2104
+ ## 4.0.0-beta.83
2105
+
2106
+ ### Patch Changes
2107
+
2108
+ - 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.
2109
+ - effect-app@4.0.0-beta.83
2110
+
2111
+ ## 4.0.0-beta.82
2112
+
2113
+ ### Minor Changes
2114
+
2115
+ - 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.
2116
+ - 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.
2117
+ - 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.
2118
+ - 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`.
2119
+
2120
+ ### Patch Changes
2121
+
2122
+ - effect-app@4.0.0-beta.82
2123
+
2124
+ ## 4.0.0-beta.81
2125
+
2126
+ ### Minor Changes
2127
+
2128
+ - fd67f0b: Add `withRequestResolverCache` to scope RequestResolver cache to the ContextMap (request-scoped). Add `getOrCreateStore` to ContextMap for generic scoped storage.
2129
+
2130
+ ### Patch Changes
2131
+
2132
+ - effect-app@4.0.0-beta.81
2133
+
2134
+ ## 4.0.0-beta.80
2135
+
2136
+ ### Patch Changes
2137
+
2138
+ - eaf0115: enforce local
2139
+ - effect-app@4.0.0-beta.80
2140
+
2141
+ ## 4.0.0-beta.79
2142
+
2143
+ ### Patch Changes
2144
+
2145
+ - 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).
2146
+ - Updated dependencies [d16845e]
2147
+ - effect-app@4.0.0-beta.79
2148
+
2149
+ ## 4.0.0-beta.78
2150
+
2151
+ ### Minor Changes
2152
+
2153
+ - 818e047: Router `matchFor` no longer requires `meta` property on resource when requests carry `moduleName` from `TaggedRequestFor`
2154
+
2155
+ ### Patch Changes
2156
+
2157
+ - effect-app@4.0.0-beta.78
2158
+
2159
+ ## 4.0.0-beta.77
2160
+
2161
+ ### Patch Changes
2162
+
2163
+ - Updated dependencies [3613e87]
2164
+ - effect-app@4.0.0-beta.77
2165
+
2166
+ ## 4.0.0-beta.76
2167
+
2168
+ ### Patch Changes
2169
+
2170
+ - fac725d: update effect to latest beta
2171
+ - Updated dependencies [a5248a9]
2172
+ - Updated dependencies [fac725d]
2173
+ - effect-app@4.0.0-beta.76
2174
+
2175
+ ## 4.0.0-beta.75
2176
+
2177
+ ### Patch Changes
2178
+
2179
+ - Updated dependencies [24f0a5a]
2180
+ - effect-app@4.0.0-beta.75
2181
+
2182
+ ## 4.0.0-beta.74
2183
+
2184
+ ### Patch Changes
2185
+
2186
+ - Updated dependencies [54ec1ef]
2187
+ - effect-app@4.0.0-beta.74
2188
+
2189
+ ## 4.0.0-beta.73
2190
+
2191
+ ### Patch Changes
2192
+
2193
+ - b53c59e: fix signature
2194
+ - effect-app@4.0.0-beta.73
2195
+
2196
+ ## 4.0.0-beta.72
2197
+
2198
+ ### Patch Changes
2199
+
2200
+ - Updated dependencies [0541f0d]
2201
+ - effect-app@4.0.0-beta.72
2202
+
2203
+ ## 4.0.0-beta.71
2204
+
2205
+ ### Patch Changes
2206
+
2207
+ - beae3a0: Remove `withDefaultConstructor` wrapper, use `S.withConstructorDefault` directly with `Effect.succeed`/`Effect.sync`.
2208
+ - Updated dependencies [beae3a0]
2209
+ - effect-app@4.0.0-beta.71
2210
+
2211
+ ## 4.0.0-beta.70
2212
+
2213
+ ### Patch Changes
2214
+
2215
+ - fdb9cb3: cleanup
2216
+ - effect-app@4.0.0-beta.70
2217
+
2218
+ ## 4.0.0-beta.69
2219
+
2220
+ ### Patch Changes
2221
+
2222
+ - dc465e3: update to latest effect beta
2223
+ - Updated dependencies [dc465e3]
2224
+ - effect-app@4.0.0-beta.69
2225
+
2226
+ ## 4.0.0-beta.68
2227
+
2228
+ ### Patch Changes
2229
+
2230
+ - Updated dependencies [e6f2341]
2231
+ - effect-app@4.0.0-beta.68
2232
+
2233
+ ## 4.0.0-beta.67
2234
+
2235
+ ### Patch Changes
2236
+
2237
+ - effect-app@4.0.0-beta.67
2238
+
2239
+ ## 4.0.0-beta.66
2240
+
2241
+ ### Patch Changes
2242
+
2243
+ - Updated dependencies [edc52e4]
2244
+ - effect-app@4.0.0-beta.66
2245
+
2246
+ ## 4.0.0-beta.65
2247
+
2248
+ ### Patch Changes
2249
+
2250
+ - Updated dependencies [31739d7]
2251
+ - Updated dependencies [1f103b2]
2252
+ - effect-app@4.0.0-beta.65
2253
+
2254
+ ## 4.0.0-beta.64
2255
+
2256
+ ### Patch Changes
2257
+
2258
+ - Updated dependencies [c1a6fdc]
2259
+ - effect-app@4.0.0-beta.64
2260
+
2261
+ ## 4.0.0-beta.63
2262
+
2263
+ ### Patch Changes
2264
+
2265
+ - 1f9d7da: fix missing toCodecJson usages
2266
+ - effect-app@4.0.0-beta.63
2267
+
2268
+ ## 4.0.0-beta.62
2269
+
2270
+ ### Patch Changes
2271
+
2272
+ - Updated dependencies [0b21a02]
2273
+ - effect-app@4.0.0-beta.62
2274
+
2275
+ ## 4.0.0-beta.61
2276
+
2277
+ ### Patch Changes
2278
+
2279
+ - effect-app@4.0.0-beta.61
2280
+
2281
+ ## 4.0.0-beta.60
2282
+
2283
+ ### Patch Changes
2284
+
2285
+ - 29c39d2: Fix repository `find` with transformed id fields in tagged union schemas
2286
+ - effect-app@4.0.0-beta.60
2287
+
2288
+ ## 4.0.0-beta.59
2289
+
2290
+ ### Patch Changes
2291
+
2292
+ - cec026d: update packages
2293
+ - Updated dependencies [cec026d]
2294
+ - effect-app@4.0.0-beta.59
2295
+
2296
+ ## 4.0.0-beta.58
2297
+
2298
+ ### Patch Changes
2299
+
2300
+ - effect-app@4.0.0-beta.58
2301
+
2302
+ ## 4.0.0-beta.57
2303
+
2304
+ ### Patch Changes
2305
+
2306
+ - fbf47b8: Fix repository `find` with transformed id fields (e.g. composite ids using `decodeTo`)
2307
+ - effect-app@4.0.0-beta.57
2308
+
2309
+ ## 4.0.0-beta.56
2310
+
2311
+ ### Patch Changes
2312
+
2313
+ - effect-app@4.0.0-beta.56
2314
+
2315
+ ## 4.0.0-beta.55
2316
+
2317
+ ### Patch Changes
2318
+
2319
+ - effect-app@4.0.0-beta.55
2320
+
2321
+ ## 4.0.0-beta.54
2322
+
2323
+ ### Patch Changes
2324
+
2325
+ - d867272: the return of `Context`
2326
+ - Updated dependencies [d867272]
2327
+ - effect-app@4.0.0-beta.54
2328
+
2329
+ ## 4.0.0-beta.53
2330
+
2331
+ ### Patch Changes
2332
+
2333
+ - Updated dependencies [ee9694e]
2334
+ - effect-app@4.0.0-beta.53
2335
+
2336
+ ## 4.0.0-beta.52
2337
+
2338
+ ### Patch Changes
2339
+
2340
+ - Updated dependencies [6252808]
2341
+ - effect-app@4.0.0-beta.52
2342
+
2343
+ ## 4.0.0-beta.51
2344
+
2345
+ ### Patch Changes
2346
+
2347
+ - effect-app@4.0.0-beta.51
2348
+
2349
+ ## 4.0.0-beta.50
2350
+
2351
+ ### Patch Changes
2352
+
2353
+ - effect-app@4.0.0-beta.50
2354
+
2355
+ ## 4.0.0-beta.49
2356
+
2357
+ ### Patch Changes
2358
+
2359
+ - Updated dependencies [e585c9c]
2360
+ - effect-app@4.0.0-beta.49
2361
+
2362
+ ## 4.0.0-beta.48
2363
+
2364
+ ### Patch Changes
2365
+
2366
+ - Updated dependencies [0c88f78]
2367
+ - effect-app@4.0.0-beta.48
2368
+
2369
+ ## 4.0.0-beta.47
2370
+
2371
+ ### Patch Changes
2372
+
2373
+ - Updated dependencies [3365758]
2374
+ - effect-app@4.0.0-beta.47
2375
+
2376
+ ## 4.0.0-beta.46
2377
+
2378
+ ### Patch Changes
2379
+
2380
+ - effect-app@4.0.0-beta.46
2381
+
2382
+ ## 4.0.0-beta.45
2383
+
2384
+ ### Patch Changes
2385
+
2386
+ - 10b55ff: update packages
2387
+ - Updated dependencies [10b55ff]
2388
+ - effect-app@4.0.0-beta.45
2389
+
2390
+ ## 4.0.0-beta.44
2391
+
2392
+ ### Patch Changes
2393
+
2394
+ - a37aa38: Update to effect beta 43
2395
+ - Updated dependencies [a37aa38]
2396
+ - effect-app@4.0.0-beta.44
2397
+
2398
+ ## 4.0.0-beta.43
2399
+
2400
+ ### Patch Changes
2401
+
2402
+ - dab6992: no need for .lock.lock
2403
+ - effect-app@4.0.0-beta.43
2404
+
2405
+ ## 4.0.0-beta.42
2406
+
2407
+ ### Patch Changes
2408
+
2409
+ - effect-app@4.0.0-beta.42
2410
+
2411
+ ## 4.0.0-beta.41
2412
+
2413
+ ### Patch Changes
2414
+
2415
+ - effect-app@4.0.0-beta.41
2416
+
2417
+ ## 4.0.0-beta.40
2418
+
2419
+ ### Patch Changes
2420
+
2421
+ - effect-app@4.0.0-beta.40
2422
+
2423
+ ## 4.0.0-beta.39
2424
+
2425
+ ### Patch Changes
2426
+
2427
+ - Updated dependencies [10e90d5]
2428
+ - effect-app@4.0.0-beta.39
2429
+
2430
+ ## 4.0.0-beta.38
2431
+
2432
+ ### Patch Changes
2433
+
2434
+ - Updated dependencies [0b3e00e]
2435
+ - effect-app@4.0.0-beta.38
2436
+
2437
+ ## 4.0.0-beta.37
2438
+
2439
+ ### Patch Changes
2440
+
2441
+ - Updated dependencies [947fe20]
2442
+ - effect-app@4.0.0-beta.37
2443
+
2444
+ ## 4.0.0-beta.36
2445
+
2446
+ ### Patch Changes
2447
+
2448
+ - effect-app@4.0.0-beta.36
2449
+
2450
+ ## 4.0.0-beta.35
2451
+
2452
+ ### Patch Changes
2453
+
2454
+ - effect-app@4.0.0-beta.35
2455
+
2456
+ ## 4.0.0-beta.34
2457
+
2458
+ ### Patch Changes
2459
+
2460
+ - 8c645d5: update to latest effect
2461
+ - Updated dependencies [8c645d5]
2462
+ - effect-app@4.0.0-beta.34
2463
+
2464
+ ## 4.0.0-beta.33
2465
+
2466
+ ### Patch Changes
2467
+
2468
+ - 4b95009: use Finite instead of Number
2469
+ - Updated dependencies [4b95009]
2470
+ - effect-app@4.0.0-beta.33
2471
+
3
2472
  ## 4.0.0-beta.32
4
2473
 
5
2474
  ### Patch Changes