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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/CHANGELOG.md +1648 -0
  2. package/_check.sh +1 -1
  3. package/dist/CUPS.d.ts +12 -7
  4. package/dist/CUPS.d.ts.map +1 -1
  5. package/dist/CUPS.js +16 -12
  6. package/dist/Emailer/Sendgrid.d.ts +15 -15
  7. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  8. package/dist/Emailer/Sendgrid.js +20 -16
  9. package/dist/Emailer/fake.d.ts +1 -1
  10. package/dist/Emailer/fake.js +2 -2
  11. package/dist/Emailer/service.d.ts +13 -4
  12. package/dist/Emailer/service.d.ts.map +1 -1
  13. package/dist/Emailer/service.js +4 -3
  14. package/dist/Emailer.d.ts +1 -1
  15. package/dist/MainFiberSet.d.ts +12 -9
  16. package/dist/MainFiberSet.d.ts.map +1 -1
  17. package/dist/MainFiberSet.js +7 -3
  18. package/dist/Model/Repository/Registry.d.ts +21 -0
  19. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  20. package/dist/Model/Repository/Registry.js +18 -0
  21. package/dist/Model/Repository/ext.d.ts +35 -16
  22. package/dist/Model/Repository/ext.d.ts.map +1 -1
  23. package/dist/Model/Repository/ext.js +60 -3
  24. package/dist/Model/Repository/internal/internal.d.ts +9 -6
  25. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  26. package/dist/Model/Repository/internal/internal.js +115 -51
  27. package/dist/Model/Repository/legacy.d.ts +4 -2
  28. package/dist/Model/Repository/legacy.d.ts.map +1 -1
  29. package/dist/Model/Repository/makeRepo.d.ts +10 -6
  30. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  31. package/dist/Model/Repository/makeRepo.js +5 -2
  32. package/dist/Model/Repository/service.d.ts +32 -24
  33. package/dist/Model/Repository/service.d.ts.map +1 -1
  34. package/dist/Model/Repository/validation.d.ts +47 -18
  35. package/dist/Model/Repository/validation.d.ts.map +1 -1
  36. package/dist/Model/Repository/validation.js +6 -6
  37. package/dist/Model/Repository.d.ts +2 -1
  38. package/dist/Model/Repository.d.ts.map +1 -1
  39. package/dist/Model/Repository.js +2 -1
  40. package/dist/Model/dsl.d.ts +6 -5
  41. package/dist/Model/dsl.d.ts.map +1 -1
  42. package/dist/Model/dsl.js +2 -3
  43. package/dist/Model/filter/filterApi.d.ts +5 -5
  44. package/dist/Model/filter/filterApi.d.ts.map +1 -1
  45. package/dist/Model/filter/types/errors.d.ts +1 -1
  46. package/dist/Model/filter/types/fields.d.ts +1 -1
  47. package/dist/Model/filter/types/path/common.d.ts +1 -1
  48. package/dist/Model/filter/types/path/eager.d.ts +1 -1
  49. package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
  50. package/dist/Model/filter/types/path/eager.js +1 -1
  51. package/dist/Model/filter/types/path/index.d.ts +1 -1
  52. package/dist/Model/filter/types/utils.d.ts +1 -1
  53. package/dist/Model/filter/types/validator.d.ts +1 -1
  54. package/dist/Model/filter/types.d.ts +1 -1
  55. package/dist/Model/query/dsl.d.ts +142 -17
  56. package/dist/Model/query/dsl.d.ts.map +1 -1
  57. package/dist/Model/query/dsl.js +190 -5
  58. package/dist/Model/query/new-kid-interpreter.d.ts +77 -8
  59. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
  60. package/dist/Model/query/new-kid-interpreter.js +127 -6
  61. package/dist/Model/query.d.ts +1 -1
  62. package/dist/Model.d.ts +2 -1
  63. package/dist/Model.d.ts.map +1 -1
  64. package/dist/Model.js +2 -1
  65. package/dist/QueueMaker/SQLQueue.d.ts +7 -8
  66. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  67. package/dist/QueueMaker/SQLQueue.js +135 -117
  68. package/dist/QueueMaker/errors.d.ts +5 -3
  69. package/dist/QueueMaker/errors.d.ts.map +1 -1
  70. package/dist/QueueMaker/errors.js +4 -2
  71. package/dist/QueueMaker/memQueue.d.ts +9 -5
  72. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  73. package/dist/QueueMaker/memQueue.js +81 -65
  74. package/dist/QueueMaker/sbqueue.d.ts +8 -4
  75. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  76. package/dist/QueueMaker/sbqueue.js +57 -55
  77. package/dist/QueueMaker/service.d.ts +4 -2
  78. package/dist/QueueMaker/service.d.ts.map +1 -1
  79. package/dist/QueueMaker/service.js +1 -1
  80. package/dist/RequestContext.d.ts +75 -35
  81. package/dist/RequestContext.d.ts.map +1 -1
  82. package/dist/RequestContext.js +14 -14
  83. package/dist/RequestFiberSet.d.ts +10 -7
  84. package/dist/RequestFiberSet.d.ts.map +1 -1
  85. package/dist/RequestFiberSet.js +8 -3
  86. package/dist/Store/ContextMapContainer.d.ts +22 -3
  87. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  88. package/dist/Store/ContextMapContainer.js +17 -3
  89. package/dist/Store/Cosmos/query.d.ts +7 -2
  90. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  91. package/dist/Store/Cosmos/query.js +115 -35
  92. package/dist/Store/Cosmos.d.ts +2 -2
  93. package/dist/Store/Cosmos.d.ts.map +1 -1
  94. package/dist/Store/Cosmos.js +343 -244
  95. package/dist/Store/Disk.d.ts +3 -3
  96. package/dist/Store/Disk.d.ts.map +1 -1
  97. package/dist/Store/Disk.js +76 -36
  98. package/dist/Store/Memory.d.ts +7 -4
  99. package/dist/Store/Memory.d.ts.map +1 -1
  100. package/dist/Store/Memory.js +251 -58
  101. package/dist/Store/SQL/Pg.d.ts +4 -0
  102. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  103. package/dist/Store/SQL/Pg.js +233 -0
  104. package/dist/Store/SQL/query.d.ts +43 -0
  105. package/dist/Store/SQL/query.d.ts.map +1 -0
  106. package/dist/Store/SQL/query.js +478 -0
  107. package/dist/Store/SQL.d.ts +21 -0
  108. package/dist/Store/SQL.d.ts.map +1 -0
  109. package/dist/Store/SQL.js +450 -0
  110. package/dist/Store/codeFilter.d.ts +2 -2
  111. package/dist/Store/codeFilter.d.ts.map +1 -1
  112. package/dist/Store/codeFilter.js +6 -3
  113. package/dist/Store/index.d.ts +6 -3
  114. package/dist/Store/index.d.ts.map +1 -1
  115. package/dist/Store/index.js +18 -4
  116. package/dist/Store/service.d.ts +26 -8
  117. package/dist/Store/service.d.ts.map +1 -1
  118. package/dist/Store/service.js +25 -6
  119. package/dist/Store/utils.d.ts +3 -2
  120. package/dist/Store/utils.d.ts.map +1 -1
  121. package/dist/Store/utils.js +5 -5
  122. package/dist/Store.d.ts +1 -1
  123. package/dist/adapters/SQL/Model.d.ts +32 -43
  124. package/dist/adapters/SQL/Model.d.ts.map +1 -1
  125. package/dist/adapters/SQL/Model.js +30 -39
  126. package/dist/adapters/SQL.d.ts +1 -1
  127. package/dist/adapters/ServiceBus.d.ts +14 -11
  128. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  129. package/dist/adapters/ServiceBus.js +30 -21
  130. package/dist/adapters/cosmos-client.d.ts +5 -3
  131. package/dist/adapters/cosmos-client.d.ts.map +1 -1
  132. package/dist/adapters/cosmos-client.js +5 -3
  133. package/dist/adapters/index.d.ts +8 -2
  134. package/dist/adapters/index.d.ts.map +1 -1
  135. package/dist/adapters/index.js +8 -2
  136. package/dist/adapters/logger.d.ts +2 -2
  137. package/dist/adapters/logger.d.ts.map +1 -1
  138. package/dist/adapters/memQueue.d.ts +5 -3
  139. package/dist/adapters/memQueue.d.ts.map +1 -1
  140. package/dist/adapters/memQueue.js +6 -5
  141. package/dist/adapters/mongo-client.d.ts +4 -3
  142. package/dist/adapters/mongo-client.d.ts.map +1 -1
  143. package/dist/adapters/mongo-client.js +5 -3
  144. package/dist/adapters/redis-client.d.ts +6 -3
  145. package/dist/adapters/redis-client.d.ts.map +1 -1
  146. package/dist/adapters/redis-client.js +7 -3
  147. package/dist/api/ContextProvider.d.ts +12 -8
  148. package/dist/api/ContextProvider.d.ts.map +1 -1
  149. package/dist/api/ContextProvider.js +9 -7
  150. package/dist/api/codec.d.ts +1 -1
  151. package/dist/api/internal/RequestContextMiddleware.d.ts +3 -3
  152. package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
  153. package/dist/api/internal/RequestContextMiddleware.js +10 -6
  154. package/dist/api/internal/auth.d.ts +45 -7
  155. package/dist/api/internal/auth.d.ts.map +1 -1
  156. package/dist/api/internal/auth.js +162 -29
  157. package/dist/api/internal/events.d.ts +6 -4
  158. package/dist/api/internal/events.d.ts.map +1 -1
  159. package/dist/api/internal/events.js +16 -9
  160. package/dist/api/internal/health.d.ts +1 -1
  161. package/dist/api/layerUtils.d.ts +10 -6
  162. package/dist/api/layerUtils.d.ts.map +1 -1
  163. package/dist/api/layerUtils.js +7 -6
  164. package/dist/api/middlewares.d.ts +1 -1
  165. package/dist/api/reportError.d.ts +2 -2
  166. package/dist/api/reportError.d.ts.map +1 -1
  167. package/dist/api/reportError.js +3 -2
  168. package/dist/api/routing/middleware/RouterMiddleware.d.ts +5 -4
  169. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  170. package/dist/api/routing/middleware/middleware.d.ts +42 -3
  171. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  172. package/dist/api/routing/middleware/middleware.js +53 -17
  173. package/dist/api/routing/middleware.d.ts +1 -2
  174. package/dist/api/routing/middleware.d.ts.map +1 -1
  175. package/dist/api/routing/middleware.js +1 -2
  176. package/dist/api/routing/schema/jwt.d.ts +1 -1
  177. package/dist/api/routing/schema/jwt.d.ts.map +1 -1
  178. package/dist/api/routing/schema/jwt.js +3 -2
  179. package/dist/api/routing/tsort.d.ts +1 -1
  180. package/dist/api/routing/tsort.d.ts.map +1 -1
  181. package/dist/api/routing/utils.d.ts +4 -4
  182. package/dist/api/routing/utils.d.ts.map +1 -1
  183. package/dist/api/routing/utils.js +3 -2
  184. package/dist/api/routing.d.ts +84 -37
  185. package/dist/api/routing.d.ts.map +1 -1
  186. package/dist/api/routing.js +115 -45
  187. package/dist/api/setupRequest.d.ts +10 -6
  188. package/dist/api/setupRequest.d.ts.map +1 -1
  189. package/dist/api/setupRequest.js +15 -7
  190. package/dist/api/util.d.ts +1 -1
  191. package/dist/arbs.d.ts +2 -2
  192. package/dist/arbs.d.ts.map +1 -1
  193. package/dist/arbs.js +5 -3
  194. package/dist/errorReporter.d.ts +7 -5
  195. package/dist/errorReporter.d.ts.map +1 -1
  196. package/dist/errorReporter.js +22 -26
  197. package/dist/errors.d.ts +1 -1
  198. package/dist/fileUtil.d.ts +2 -2
  199. package/dist/fileUtil.d.ts.map +1 -1
  200. package/dist/fileUtil.js +2 -2
  201. package/dist/index.d.ts +1 -1
  202. package/dist/logger/jsonLogger.d.ts +2 -2
  203. package/dist/logger/jsonLogger.d.ts.map +1 -1
  204. package/dist/logger/jsonLogger.js +4 -2
  205. package/dist/logger/logFmtLogger.d.ts +2 -2
  206. package/dist/logger/logFmtLogger.d.ts.map +1 -1
  207. package/dist/logger/logFmtLogger.js +2 -2
  208. package/dist/logger/shared.d.ts +2 -2
  209. package/dist/logger/shared.d.ts.map +1 -1
  210. package/dist/logger/shared.js +3 -3
  211. package/dist/logger.d.ts +1 -1
  212. package/dist/logger.d.ts.map +1 -1
  213. package/dist/otel.d.ts +75 -0
  214. package/dist/otel.d.ts.map +1 -0
  215. package/dist/otel.js +65 -0
  216. package/dist/rateLimit.d.ts +12 -4
  217. package/dist/rateLimit.d.ts.map +1 -1
  218. package/dist/rateLimit.js +7 -12
  219. package/dist/test.d.ts +3 -3
  220. package/dist/test.d.ts.map +1 -1
  221. package/dist/test.js +2 -2
  222. package/dist/vitest.d.ts +1 -1
  223. package/examples/query.ts +46 -38
  224. package/package.json +46 -37
  225. package/src/CUPS.ts +15 -11
  226. package/src/Emailer/Sendgrid.ts +21 -15
  227. package/src/Emailer/fake.ts +1 -1
  228. package/src/Emailer/service.ts +13 -3
  229. package/src/MainFiberSet.ts +9 -6
  230. package/src/Model/Repository/Registry.ts +34 -0
  231. package/src/Model/Repository/ext.ts +103 -11
  232. package/src/Model/Repository/internal/internal.ts +231 -149
  233. package/src/Model/Repository/legacy.ts +3 -1
  234. package/src/Model/Repository/makeRepo.ts +15 -10
  235. package/src/Model/Repository/service.ts +35 -23
  236. package/src/Model/Repository/validation.ts +5 -5
  237. package/src/Model/Repository.ts +1 -0
  238. package/src/Model/dsl.ts +5 -4
  239. package/src/Model/filter/types/path/eager.ts +1 -2
  240. package/src/Model/query/dsl.ts +353 -19
  241. package/src/Model/query/new-kid-interpreter.ts +211 -6
  242. package/src/Model.ts +1 -0
  243. package/src/QueueMaker/SQLQueue.ts +150 -153
  244. package/src/QueueMaker/errors.ts +3 -1
  245. package/src/QueueMaker/memQueue.ts +111 -105
  246. package/src/QueueMaker/sbqueue.ts +76 -88
  247. package/src/QueueMaker/service.ts +3 -1
  248. package/src/RequestContext.ts +15 -16
  249. package/src/RequestFiberSet.ts +8 -2
  250. package/src/Store/ContextMapContainer.ts +45 -2
  251. package/src/Store/Cosmos/query.ts +143 -44
  252. package/src/Store/Cosmos.ts +491 -350
  253. package/src/Store/Disk.ts +106 -66
  254. package/src/Store/Memory.ts +285 -87
  255. package/src/Store/SQL/Pg.ts +364 -0
  256. package/src/Store/SQL/query.ts +540 -0
  257. package/src/Store/SQL.ts +736 -0
  258. package/src/Store/codeFilter.ts +5 -2
  259. package/src/Store/index.ts +20 -3
  260. package/src/Store/service.ts +45 -10
  261. package/src/Store/utils.ts +25 -23
  262. package/src/adapters/SQL/Model.ts +42 -41
  263. package/src/adapters/ServiceBus.ts +131 -121
  264. package/src/adapters/cosmos-client.ts +4 -2
  265. package/src/adapters/index.ts +7 -0
  266. package/src/adapters/memQueue.ts +5 -4
  267. package/src/adapters/mongo-client.ts +4 -2
  268. package/src/adapters/redis-client.ts +6 -2
  269. package/src/api/ContextProvider.ts +17 -13
  270. package/src/api/internal/RequestContextMiddleware.ts +16 -5
  271. package/src/api/internal/auth.ts +248 -44
  272. package/src/api/internal/events.ts +19 -10
  273. package/src/api/layerUtils.ts +12 -8
  274. package/src/api/reportError.ts +2 -1
  275. package/src/api/routing/middleware/RouterMiddleware.ts +5 -4
  276. package/src/api/routing/middleware/middleware.ts +60 -15
  277. package/src/api/routing/middleware.ts +0 -2
  278. package/src/api/routing/schema/jwt.ts +2 -1
  279. package/src/api/routing/utils.ts +2 -1
  280. package/src/api/routing.ts +304 -131
  281. package/src/api/setupRequest.ts +31 -8
  282. package/src/arbs.ts +5 -3
  283. package/src/errorReporter.ts +65 -75
  284. package/src/fileUtil.ts +1 -1
  285. package/src/logger/jsonLogger.ts +3 -1
  286. package/src/logger/logFmtLogger.ts +1 -1
  287. package/src/logger/shared.ts +3 -2
  288. package/src/otel.ts +152 -0
  289. package/src/rateLimit.ts +34 -23
  290. package/src/test.ts +2 -2
  291. package/test/auth.test.ts +101 -0
  292. package/test/contextProvider.test.ts +14 -11
  293. package/test/controller.test.ts +25 -29
  294. package/test/dist/auth.test.d.ts.map +1 -0
  295. package/test/dist/contextProvider.test.d.ts.map +1 -1
  296. package/test/dist/controller.test.d.ts.map +1 -1
  297. package/test/dist/date-query.test.d.ts.map +1 -0
  298. package/test/dist/fixtures.d.ts +30 -12
  299. package/test/dist/fixtures.d.ts.map +1 -1
  300. package/test/dist/fixtures.js +17 -10
  301. package/test/dist/query.test.d.ts.map +1 -1
  302. package/test/dist/rawQuery.test.d.ts.map +1 -1
  303. package/test/dist/repository-ext.test.d.ts.map +1 -0
  304. package/test/dist/requires.test.d.ts.map +1 -1
  305. package/test/dist/router-generator.test.d.ts.map +1 -0
  306. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  307. package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
  308. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  309. package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
  310. package/test/dist/sql-store.test.d.ts.map +1 -0
  311. package/test/fixtures.ts +16 -9
  312. package/test/layerUtils.test.ts +1 -1
  313. package/test/query.test.ts +819 -38
  314. package/test/rawQuery.test.ts +312 -20
  315. package/test/repository-ext.test.ts +62 -0
  316. package/test/requires.test.ts +10 -5
  317. package/test/router-generator.test.ts +187 -0
  318. package/test/routing-interruptibility.test.ts +66 -0
  319. package/test/rpc-e2e-invalidation.test.ts +256 -0
  320. package/test/rpc-multi-middleware.test.ts +84 -9
  321. package/test/rpc-stream-fullstack.test.ts +304 -0
  322. package/test/sql-store.test.ts +1592 -0
  323. package/test/validateSample.test.ts +17 -12
  324. package/tsconfig.examples.json +1 -1
  325. package/tsconfig.json +0 -1
  326. package/tsconfig.json.bak +2 -2
  327. package/tsconfig.src.json +35 -35
  328. package/tsconfig.test.json +2 -2
  329. package/dist/Operations.d.ts +0 -55
  330. package/dist/Operations.d.ts.map +0 -1
  331. package/dist/Operations.js +0 -102
  332. package/dist/OperationsRepo.d.ts +0 -41
  333. package/dist/OperationsRepo.d.ts.map +0 -1
  334. package/dist/OperationsRepo.js +0 -14
  335. package/eslint.config.mjs +0 -24
  336. package/src/Operations.ts +0 -235
  337. package/src/OperationsRepo.ts +0 -16
@@ -1,7 +1,10 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import type { Effect, Option, PubSub, S } from "effect-app"
3
2
  import type { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client/errors"
3
+ import type * as Effect from "effect-app/Effect"
4
+ import type * as Option from "effect-app/Option"
5
+ import type * as S from "effect-app/Schema"
4
6
  import type { NonNegativeInt } from "effect-app/Schema/numbers"
7
+ import type * as PubSub from "effect/PubSub"
5
8
  import type { FieldValues, IsNever, ResolveFirstLevel } from "../filter/types.js"
6
9
  import type { QAll, Query, QueryProjection, RawQuery } from "../query.js"
7
10
  import type { Mapped } from "./legacy.js"
@@ -14,7 +17,8 @@ export interface Repository<
14
17
  ItemType extends string,
15
18
  IdKey extends keyof T,
16
19
  RSchema,
17
- RPublish
20
+ RPublish,
21
+ RProvided = never
18
22
  > {
19
23
  readonly itemType: ItemType
20
24
  readonly idKey: IdKey
@@ -30,13 +34,21 @@ export interface Repository<
30
34
  events?: Iterable<Evt>
31
35
  ) => Effect.Effect<void, never, RSchema | RPublish>
32
36
 
33
- readonly removeById: (...id: readonly T[IdKey][]) => Effect.Effect<void, never, RSchema>
37
+ readonly removeById: (
38
+ idOrIds: T[IdKey] | ReadonlyArray<T[IdKey]>
39
+ ) => Effect.Effect<void, never, RSchema>
34
40
 
35
41
  readonly queryRaw: <T, Out, R>(
36
42
  schema: S.Codec<T, Out, R>,
37
43
  raw: RawQuery<Encoded, Out>
38
44
  ) => Effect.Effect<readonly T[], S.SchemaError, R>
39
45
 
46
+ /**
47
+ * Explicitly seed a namespace. Primary is seeded eagerly on initialization.
48
+ * Non-primary namespaces must be seeded explicitly before use.
49
+ */
50
+ readonly seedNamespace: (namespace: string) => Effect.Effect<void>
51
+
40
52
  readonly query: {
41
53
  // ending with projection
42
54
  <
@@ -53,7 +65,7 @@ export interface Repository<
53
65
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
54
66
  | (TType extends "many" ? never : NotFoundError<ItemType>)
55
67
  | (TType extends "count" ? never : S.SchemaError),
56
- R | RSchema
68
+ Exclude<R, RProvided> | RSchema
57
69
  >
58
70
  <
59
71
  A,
@@ -73,7 +85,7 @@ export interface Repository<
73
85
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
74
86
  | (TType extends "many" ? never : NotFoundError<ItemType>)
75
87
  | (TType extends "count" ? never : S.SchemaError),
76
- R | RSchema
88
+ Exclude<R, RProvided> | RSchema
77
89
  >
78
90
  <
79
91
  A,
@@ -95,7 +107,7 @@ export interface Repository<
95
107
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
96
108
  | (TType extends "many" ? never : NotFoundError<ItemType>)
97
109
  | (TType extends "count" ? never : S.SchemaError),
98
- R | RSchema
110
+ Exclude<R, RProvided> | RSchema
99
111
  >
100
112
  <
101
113
  A,
@@ -119,7 +131,7 @@ export interface Repository<
119
131
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
120
132
  | (TType extends "many" ? never : NotFoundError<ItemType>)
121
133
  | (TType extends "count" ? never : S.SchemaError),
122
- R | RSchema
134
+ Exclude<R, RProvided> | RSchema
123
135
  >
124
136
  <
125
137
  A,
@@ -145,7 +157,7 @@ export interface Repository<
145
157
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
146
158
  | (TType extends "many" ? never : NotFoundError<ItemType>)
147
159
  | (TType extends "count" ? never : S.SchemaError),
148
- R | RSchema
160
+ Exclude<R, RProvided> | RSchema
149
161
  >
150
162
  <
151
163
  A,
@@ -171,7 +183,7 @@ export interface Repository<
171
183
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
172
184
  | (TType extends "many" ? never : NotFoundError<ItemType>)
173
185
  | (TType extends "count" ? never : S.SchemaError),
174
- R | RSchema
186
+ Exclude<R, RProvided> | RSchema
175
187
  >
176
188
  <
177
189
  A,
@@ -199,7 +211,7 @@ export interface Repository<
199
211
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
200
212
  | (TType extends "many" ? never : NotFoundError<ItemType>)
201
213
  | (TType extends "count" ? never : S.SchemaError),
202
- R | RSchema
214
+ Exclude<R, RProvided> | RSchema
203
215
  >
204
216
  <
205
217
  A,
@@ -229,7 +241,7 @@ export interface Repository<
229
241
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
230
242
  | (TType extends "many" ? never : NotFoundError<ItemType>)
231
243
  | (TType extends "count" ? never : S.SchemaError),
232
- R | RSchema
244
+ Exclude<R, RProvided> | RSchema
233
245
  >
234
246
  <
235
247
  A,
@@ -261,7 +273,7 @@ export interface Repository<
261
273
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
262
274
  | (TType extends "many" ? never : NotFoundError<ItemType>)
263
275
  | (TType extends "count" ? never : S.SchemaError),
264
- R | RSchema
276
+ Exclude<R, RProvided> | RSchema
265
277
  >
266
278
  <
267
279
  A,
@@ -295,7 +307,7 @@ export interface Repository<
295
307
  TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
296
308
  | (TType extends "many" ? never : NotFoundError<ItemType>)
297
309
  | (TType extends "count" ? never : S.SchemaError),
298
- R | RSchema
310
+ Exclude<R, RProvided> | RSchema
299
311
  >
300
312
 
301
313
  // ending with generic query
@@ -309,7 +321,7 @@ export interface Repository<
309
321
  ): Effect.Effect<
310
322
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
311
323
  TType extends "many" ? never : NotFoundError<ItemType>,
312
- R | RSchema
324
+ Exclude<R, RProvided> | RSchema
313
325
  >
314
326
  <
315
327
  R = never,
@@ -325,7 +337,7 @@ export interface Repository<
325
337
  ): Effect.Effect<
326
338
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
327
339
  TType extends "many" ? never : NotFoundError<ItemType>,
328
- R | RSchema
340
+ Exclude<R, RProvided> | RSchema
329
341
  >
330
342
  <
331
343
  R = never,
@@ -345,7 +357,7 @@ export interface Repository<
345
357
  ): Effect.Effect<
346
358
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
347
359
  TType extends "many" ? never : NotFoundError<ItemType>,
348
- R | RSchema
360
+ Exclude<R, RProvided> | RSchema
349
361
  >
350
362
  <
351
363
  R = never,
@@ -365,7 +377,7 @@ export interface Repository<
365
377
  ): Effect.Effect<
366
378
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
367
379
  TType extends "many" ? never : NotFoundError<ItemType>,
368
- R | RSchema
380
+ Exclude<R, RProvided> | RSchema
369
381
  >
370
382
  <
371
383
  R = never,
@@ -387,7 +399,7 @@ export interface Repository<
387
399
  ): Effect.Effect<
388
400
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
389
401
  TType extends "many" ? never : NotFoundError<ItemType>,
390
- R | RSchema
402
+ Exclude<R, RProvided> | RSchema
391
403
  >
392
404
  <
393
405
  R = never,
@@ -411,7 +423,7 @@ export interface Repository<
411
423
  ): Effect.Effect<
412
424
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
413
425
  TType extends "many" ? never : NotFoundError<ItemType>,
414
- R | RSchema
426
+ Exclude<R, RProvided> | RSchema
415
427
  >
416
428
  <
417
429
  R = never,
@@ -437,7 +449,7 @@ export interface Repository<
437
449
  ): Effect.Effect<
438
450
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
439
451
  TType extends "many" ? never : NotFoundError<ItemType>,
440
- R | RSchema
452
+ Exclude<R, RProvided> | RSchema
441
453
  >
442
454
  <
443
455
  R = never,
@@ -466,7 +478,7 @@ export interface Repository<
466
478
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
467
479
  : RefineTHelper<T, EncodedRefined>,
468
480
  TType extends "many" ? never : NotFoundError<ItemType>,
469
- R | RSchema
481
+ Exclude<R, RProvided> | RSchema
470
482
  >
471
483
  <
472
484
  R = never,
@@ -497,7 +509,7 @@ export interface Repository<
497
509
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
498
510
  : RefineTHelper<T, EncodedRefined>,
499
511
  TType extends "many" ? never : NotFoundError<ItemType>,
500
- R | RSchema
512
+ Exclude<R, RProvided> | RSchema
501
513
  >
502
514
  <
503
515
  R = never,
@@ -530,7 +542,7 @@ export interface Repository<
530
542
  TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
531
543
  : RefineTHelper<T, EncodedRefined>,
532
544
  TType extends "many" ? never : NotFoundError<ItemType>,
533
- R | RSchema
545
+ Exclude<R, RProvided> | RSchema
534
546
  >
535
547
  }
536
548
 
@@ -1,11 +1,11 @@
1
- import { S } from "effect-app"
1
+ import * as S from "effect-app/Schema"
2
2
  import { NonNegativeInt } from "effect-app/Schema"
3
3
 
4
4
  /**
5
5
  * Represents a single validation error when decoding a repository item.
6
6
  * Contains full context for debugging: raw data, jitM result, and decode error.
7
7
  */
8
- export class ValidationError extends S.Class<ValidationError>("@effect-app/infra/ValidationError")({
8
+ export class ValidationError extends S.Opaque<ValidationError>()(S.Struct({
9
9
  /** the id of the item that failed validation */
10
10
  id: S.Unknown,
11
11
  /** the raw data from the database before jitM */
@@ -14,12 +14,12 @@ export class ValidationError extends S.Class<ValidationError>("@effect-app/infra
14
14
  jitMResult: S.Unknown,
15
15
  /** the S.SchemaError from schema decode */
16
16
  error: S.Unknown
17
- }) {}
17
+ })) {}
18
18
 
19
19
  /**
20
20
  * Result of validating a sample of repository items.
21
21
  */
22
- export class ValidationResult extends S.Class<ValidationResult>("@effect-app/infra/ValidationResult")({
22
+ export class ValidationResult extends S.Opaque<ValidationResult>()(S.Struct({
23
23
  /** total number of items in the repository */
24
24
  total: NonNegativeInt,
25
25
  /** number of items that were sampled for validation */
@@ -28,4 +28,4 @@ export class ValidationResult extends S.Class<ValidationResult>("@effect-app/inf
28
28
  valid: NonNegativeInt,
29
29
  /** list of validation errors with full context */
30
30
  errors: S.Array(ValidationError)
31
- }) {}
31
+ })) {}
@@ -1,5 +1,6 @@
1
1
  export * from "./Repository/ext.js"
2
2
  export * from "./Repository/legacy.js"
3
3
  export { makeRepo } from "./Repository/makeRepo.js"
4
+ export * from "./Repository/Registry.js"
4
5
  export * from "./Repository/service.js"
5
6
  export * from "./Repository/validation.js"
package/src/Model/dsl.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { Effect, type NonEmptyReadonlyArray } from "effect-app"
2
+ import type { NonEmptyReadonlyArray } from "effect-app/Array"
3
3
  import { toNonEmptyArray } from "effect-app/Array"
4
+ import * as Effect from "effect-app/Effect"
4
5
  import { type FixEnv, get, logMany, type Pure, type PureEnvEnv, type PureLogT, set } from "effect-app/Pure"
5
6
 
6
7
  export interface PureDSL<S, S2, W> {
@@ -42,16 +43,16 @@ export function makeAllDSL<T, Evt>() {
42
43
 
43
44
  export type OneDSL<T, Evt> =
44
45
  & (<R, A, E, S1 extends T, S2 extends T>(
45
- pure: (dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E, FixEnv<R, Evt, S1, S2>>
46
+ pure: (dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E, R>
46
47
  ) => Effect.Effect<A, E, FixEnv<R, Evt, S1, S2>>)
47
48
  & OneDSLExt<T, Evt>
48
49
 
49
50
  export interface OneDSLExt<T, Evt> {
50
51
  modify: <R, E, A, S1 extends T, S2 extends T>(
51
- pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E, FixEnv<R, Evt, S1, S2>>
52
+ pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E, R>
52
53
  ) => Effect.Effect<A, E, FixEnv<R, Evt, S1, S2> | PureEnvEnv<Evt, S1, S1>>
53
54
  update: <R, E, S1 extends T, S2 extends T>(
54
- pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect.Effect<S2, E, FixEnv<R, Evt, S1, S2>>
55
+ pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect.Effect<S2, E, R>
55
56
  ) => Effect.Effect<S2, E, FixEnv<R, Evt, S1, S2>>
56
57
  updateWith: <S1 extends T, S2 extends T>(
57
58
  upd: (item: S1) => S2
@@ -217,8 +217,7 @@ export namespace RefinePathValueTests {
217
217
  | { nested: { a: string; _tag: "a" } | { b: number; _tag: "b" }; _tag: "ab" }
218
218
  | { nested: { b: number; _tag: "b" } | { c: boolean; _tag: "c" }; _tag: "bc" },
219
219
  "nested._tag",
220
- "a",
221
- false
220
+ "a"
222
221
  >
223
222
 
224
223
  expectTypeOf<test10>().toEqualTypeOf<{