@effect-app/infra 4.0.0-beta.14 → 4.0.0-beta.140

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 (283) hide show
  1. package/CHANGELOG.md +920 -0
  2. package/dist/CUPS.d.ts +15 -7
  3. package/dist/CUPS.d.ts.map +1 -1
  4. package/dist/CUPS.js +10 -12
  5. package/dist/Emailer/Sendgrid.d.ts +14 -14
  6. package/dist/Emailer/Sendgrid.d.ts.map +1 -1
  7. package/dist/Emailer/Sendgrid.js +16 -15
  8. package/dist/Emailer/fake.d.ts +1 -1
  9. package/dist/Emailer/service.d.ts +9 -3
  10. package/dist/Emailer/service.d.ts.map +1 -1
  11. package/dist/Emailer/service.js +3 -3
  12. package/dist/Emailer.d.ts +1 -1
  13. package/dist/MainFiberSet.d.ts +5 -5
  14. package/dist/MainFiberSet.d.ts.map +1 -1
  15. package/dist/MainFiberSet.js +3 -3
  16. package/dist/Model/Repository/Registry.d.ts +20 -0
  17. package/dist/Model/Repository/Registry.d.ts.map +1 -0
  18. package/dist/Model/Repository/Registry.js +17 -0
  19. package/dist/Model/Repository/ext.d.ts +33 -15
  20. package/dist/Model/Repository/ext.d.ts.map +1 -1
  21. package/dist/Model/Repository/ext.js +54 -2
  22. package/dist/Model/Repository/internal/internal.d.ts +6 -6
  23. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  24. package/dist/Model/Repository/internal/internal.js +33 -22
  25. package/dist/Model/Repository/legacy.d.ts +1 -1
  26. package/dist/Model/Repository/makeRepo.d.ts +7 -6
  27. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  28. package/dist/Model/Repository/makeRepo.js +5 -1
  29. package/dist/Model/Repository/service.d.ts +28 -23
  30. package/dist/Model/Repository/service.d.ts.map +1 -1
  31. package/dist/Model/Repository/validation.d.ts +60 -10
  32. package/dist/Model/Repository/validation.d.ts.map +1 -1
  33. package/dist/Model/Repository.d.ts +2 -1
  34. package/dist/Model/Repository.d.ts.map +1 -1
  35. package/dist/Model/Repository.js +2 -1
  36. package/dist/Model/dsl.d.ts +4 -4
  37. package/dist/Model/dsl.d.ts.map +1 -1
  38. package/dist/Model/filter/filterApi.d.ts +5 -5
  39. package/dist/Model/filter/filterApi.d.ts.map +1 -1
  40. package/dist/Model/filter/types/errors.d.ts +1 -1
  41. package/dist/Model/filter/types/fields.d.ts +1 -1
  42. package/dist/Model/filter/types/path/common.d.ts +1 -1
  43. package/dist/Model/filter/types/path/eager.d.ts +1 -1
  44. package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
  45. package/dist/Model/filter/types/path/index.d.ts +1 -1
  46. package/dist/Model/filter/types/utils.d.ts +1 -1
  47. package/dist/Model/filter/types/validator.d.ts +1 -1
  48. package/dist/Model/filter/types.d.ts +1 -1
  49. package/dist/Model/query/dsl.d.ts +1 -1
  50. package/dist/Model/query/dsl.d.ts.map +1 -1
  51. package/dist/Model/query/new-kid-interpreter.d.ts +6 -6
  52. package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
  53. package/dist/Model/query/new-kid-interpreter.js +3 -3
  54. package/dist/Model/query.d.ts +1 -1
  55. package/dist/Model.d.ts +2 -1
  56. package/dist/Model.d.ts.map +1 -1
  57. package/dist/Model.js +2 -1
  58. package/dist/Operations.d.ts +6 -6
  59. package/dist/Operations.d.ts.map +1 -1
  60. package/dist/Operations.js +56 -59
  61. package/dist/OperationsRepo.d.ts +19 -19
  62. package/dist/OperationsRepo.d.ts.map +1 -1
  63. package/dist/OperationsRepo.js +3 -3
  64. package/dist/QueueMaker/SQLQueue.d.ts +5 -7
  65. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  66. package/dist/QueueMaker/SQLQueue.js +105 -114
  67. package/dist/QueueMaker/errors.d.ts +2 -2
  68. package/dist/QueueMaker/errors.d.ts.map +1 -1
  69. package/dist/QueueMaker/memQueue.d.ts +7 -4
  70. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  71. package/dist/QueueMaker/memQueue.js +51 -62
  72. package/dist/QueueMaker/sbqueue.d.ts +6 -3
  73. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  74. package/dist/QueueMaker/sbqueue.js +36 -52
  75. package/dist/QueueMaker/service.d.ts +1 -1
  76. package/dist/RequestContext.d.ts +55 -25
  77. package/dist/RequestContext.d.ts.map +1 -1
  78. package/dist/RequestContext.js +5 -5
  79. package/dist/RequestFiberSet.d.ts +7 -7
  80. package/dist/RequestFiberSet.d.ts.map +1 -1
  81. package/dist/RequestFiberSet.js +5 -5
  82. package/dist/Store/ContextMapContainer.d.ts +19 -3
  83. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  84. package/dist/Store/ContextMapContainer.js +13 -3
  85. package/dist/Store/Cosmos/query.d.ts +1 -1
  86. package/dist/Store/Cosmos/query.d.ts.map +1 -1
  87. package/dist/Store/Cosmos/query.js +8 -10
  88. package/dist/Store/Cosmos.d.ts +1 -1
  89. package/dist/Store/Cosmos.d.ts.map +1 -1
  90. package/dist/Store/Cosmos.js +308 -242
  91. package/dist/Store/Disk.d.ts +2 -2
  92. package/dist/Store/Disk.d.ts.map +1 -1
  93. package/dist/Store/Disk.js +25 -22
  94. package/dist/Store/Memory.d.ts +4 -4
  95. package/dist/Store/Memory.d.ts.map +1 -1
  96. package/dist/Store/Memory.js +27 -22
  97. package/dist/Store/SQL/Pg.d.ts +4 -0
  98. package/dist/Store/SQL/Pg.d.ts.map +1 -0
  99. package/dist/Store/SQL/Pg.js +189 -0
  100. package/dist/Store/SQL/query.d.ts +38 -0
  101. package/dist/Store/SQL/query.d.ts.map +1 -0
  102. package/dist/Store/SQL/query.js +367 -0
  103. package/dist/Store/SQL.d.ts +20 -0
  104. package/dist/Store/SQL.d.ts.map +1 -0
  105. package/dist/Store/SQL.js +381 -0
  106. package/dist/Store/codeFilter.d.ts +1 -1
  107. package/dist/Store/codeFilter.d.ts.map +1 -1
  108. package/dist/Store/codeFilter.js +2 -1
  109. package/dist/Store/index.d.ts +5 -2
  110. package/dist/Store/index.d.ts.map +1 -1
  111. package/dist/Store/index.js +15 -3
  112. package/dist/Store/service.d.ts +17 -6
  113. package/dist/Store/service.d.ts.map +1 -1
  114. package/dist/Store/service.js +24 -6
  115. package/dist/Store/utils.d.ts +1 -1
  116. package/dist/Store/utils.d.ts.map +1 -1
  117. package/dist/Store/utils.js +3 -4
  118. package/dist/Store.d.ts +1 -1
  119. package/dist/adapters/SQL/Model.d.ts +28 -42
  120. package/dist/adapters/SQL/Model.d.ts.map +1 -1
  121. package/dist/adapters/SQL/Model.js +2 -2
  122. package/dist/adapters/SQL.d.ts +1 -1
  123. package/dist/adapters/ServiceBus.d.ts +9 -9
  124. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  125. package/dist/adapters/ServiceBus.js +13 -15
  126. package/dist/adapters/cosmos-client.d.ts +3 -3
  127. package/dist/adapters/cosmos-client.d.ts.map +1 -1
  128. package/dist/adapters/cosmos-client.js +3 -3
  129. package/dist/adapters/index.d.ts +8 -2
  130. package/dist/adapters/index.d.ts.map +1 -1
  131. package/dist/adapters/index.js +8 -2
  132. package/dist/adapters/logger.d.ts +1 -1
  133. package/dist/adapters/logger.d.ts.map +1 -1
  134. package/dist/adapters/memQueue.d.ts +3 -3
  135. package/dist/adapters/memQueue.d.ts.map +1 -1
  136. package/dist/adapters/memQueue.js +3 -3
  137. package/dist/adapters/mongo-client.d.ts +3 -3
  138. package/dist/adapters/mongo-client.d.ts.map +1 -1
  139. package/dist/adapters/mongo-client.js +3 -3
  140. package/dist/adapters/redis-client.d.ts +3 -3
  141. package/dist/adapters/redis-client.d.ts.map +1 -1
  142. package/dist/adapters/redis-client.js +3 -3
  143. package/dist/api/ContextProvider.d.ts +7 -7
  144. package/dist/api/ContextProvider.d.ts.map +1 -1
  145. package/dist/api/ContextProvider.js +6 -6
  146. package/dist/api/codec.d.ts +1 -1
  147. package/dist/api/internal/RequestContextMiddleware.d.ts +2 -2
  148. package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
  149. package/dist/api/internal/RequestContextMiddleware.js +1 -1
  150. package/dist/api/internal/auth.d.ts +44 -6
  151. package/dist/api/internal/auth.d.ts.map +1 -1
  152. package/dist/api/internal/auth.js +160 -29
  153. package/dist/api/internal/events.d.ts +3 -3
  154. package/dist/api/internal/events.d.ts.map +1 -1
  155. package/dist/api/internal/events.js +11 -7
  156. package/dist/api/internal/health.d.ts +1 -1
  157. package/dist/api/layerUtils.d.ts +6 -6
  158. package/dist/api/layerUtils.d.ts.map +1 -1
  159. package/dist/api/layerUtils.js +5 -5
  160. package/dist/api/middlewares.d.ts +1 -1
  161. package/dist/api/reportError.d.ts +1 -1
  162. package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -4
  163. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  164. package/dist/api/routing/middleware/middleware.d.ts +39 -3
  165. package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
  166. package/dist/api/routing/middleware/middleware.js +45 -14
  167. package/dist/api/routing/middleware.d.ts +1 -2
  168. package/dist/api/routing/middleware.d.ts.map +1 -1
  169. package/dist/api/routing/middleware.js +1 -2
  170. package/dist/api/routing/schema/jwt.d.ts +1 -1
  171. package/dist/api/routing/schema/jwt.d.ts.map +1 -1
  172. package/dist/api/routing/tsort.d.ts +1 -1
  173. package/dist/api/routing/tsort.d.ts.map +1 -1
  174. package/dist/api/routing/utils.d.ts +3 -3
  175. package/dist/api/routing/utils.d.ts.map +1 -1
  176. package/dist/api/routing.d.ts +12 -14
  177. package/dist/api/routing.d.ts.map +1 -1
  178. package/dist/api/routing.js +17 -6
  179. package/dist/api/setupRequest.d.ts +8 -5
  180. package/dist/api/setupRequest.d.ts.map +1 -1
  181. package/dist/api/setupRequest.js +11 -6
  182. package/dist/api/util.d.ts +1 -1
  183. package/dist/arbs.d.ts +1 -1
  184. package/dist/errorReporter.d.ts +4 -4
  185. package/dist/errorReporter.d.ts.map +1 -1
  186. package/dist/errorReporter.js +16 -23
  187. package/dist/errors.d.ts +1 -1
  188. package/dist/fileUtil.d.ts +1 -1
  189. package/dist/fileUtil.d.ts.map +1 -1
  190. package/dist/index.d.ts +1 -1
  191. package/dist/logger/jsonLogger.d.ts +1 -1
  192. package/dist/logger/logFmtLogger.d.ts +1 -1
  193. package/dist/logger/shared.d.ts +1 -1
  194. package/dist/logger.d.ts +1 -1
  195. package/dist/logger.d.ts.map +1 -1
  196. package/dist/rateLimit.d.ts +9 -3
  197. package/dist/rateLimit.d.ts.map +1 -1
  198. package/dist/rateLimit.js +5 -11
  199. package/dist/test.d.ts +1 -1
  200. package/dist/test.d.ts.map +1 -1
  201. package/dist/vitest.d.ts +1 -1
  202. package/eslint.config.mjs +1 -1
  203. package/examples/query.ts +30 -26
  204. package/package.json +41 -27
  205. package/src/CUPS.ts +9 -11
  206. package/src/Emailer/Sendgrid.ts +17 -14
  207. package/src/Emailer/service.ts +8 -2
  208. package/src/MainFiberSet.ts +3 -3
  209. package/src/Model/Repository/Registry.ts +33 -0
  210. package/src/Model/Repository/ext.ts +93 -6
  211. package/src/Model/Repository/internal/internal.ts +85 -78
  212. package/src/Model/Repository/makeRepo.ts +12 -10
  213. package/src/Model/Repository/service.ts +31 -22
  214. package/src/Model/Repository.ts +1 -0
  215. package/src/Model/dsl.ts +3 -3
  216. package/src/Model/query/new-kid-interpreter.ts +2 -2
  217. package/src/Model.ts +1 -0
  218. package/src/Operations.ts +78 -113
  219. package/src/OperationsRepo.ts +2 -2
  220. package/src/QueueMaker/SQLQueue.ts +121 -151
  221. package/src/QueueMaker/memQueue.ts +82 -103
  222. package/src/QueueMaker/sbqueue.ts +55 -85
  223. package/src/RequestContext.ts +4 -4
  224. package/src/RequestFiberSet.ts +4 -4
  225. package/src/Store/ContextMapContainer.ts +41 -2
  226. package/src/Store/Cosmos/query.ts +9 -11
  227. package/src/Store/Cosmos.ts +437 -343
  228. package/src/Store/Disk.ts +52 -49
  229. package/src/Store/Memory.ts +54 -48
  230. package/src/Store/SQL/Pg.ts +318 -0
  231. package/src/Store/SQL/query.ts +409 -0
  232. package/src/Store/SQL.ts +668 -0
  233. package/src/Store/codeFilter.ts +1 -0
  234. package/src/Store/index.ts +17 -2
  235. package/src/Store/service.ts +31 -7
  236. package/src/Store/utils.ts +23 -22
  237. package/src/adapters/SQL/Model.ts +10 -4
  238. package/src/adapters/ServiceBus.ts +111 -115
  239. package/src/adapters/cosmos-client.ts +2 -2
  240. package/src/adapters/index.ts +7 -0
  241. package/src/adapters/memQueue.ts +2 -2
  242. package/src/adapters/mongo-client.ts +2 -2
  243. package/src/adapters/redis-client.ts +2 -2
  244. package/src/api/ContextProvider.ts +11 -11
  245. package/src/api/internal/auth.ts +246 -44
  246. package/src/api/internal/events.ts +14 -9
  247. package/src/api/layerUtils.ts +8 -8
  248. package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
  249. package/src/api/routing/middleware/middleware.ts +52 -12
  250. package/src/api/routing/middleware.ts +0 -2
  251. package/src/api/routing.ts +21 -7
  252. package/src/api/setupRequest.ts +27 -7
  253. package/src/errorReporter.ts +58 -72
  254. package/src/rateLimit.ts +30 -22
  255. package/test/auth.test.ts +101 -0
  256. package/test/contextProvider.test.ts +11 -11
  257. package/test/controller.test.ts +18 -14
  258. package/test/dist/auth.test.d.ts.map +1 -0
  259. package/test/dist/contextProvider.test.d.ts.map +1 -1
  260. package/test/dist/controller.test.d.ts.map +1 -1
  261. package/test/dist/date-query.test.d.ts.map +1 -0
  262. package/test/dist/fixtures.d.ts +22 -12
  263. package/test/dist/fixtures.d.ts.map +1 -1
  264. package/test/dist/fixtures.js +12 -10
  265. package/test/dist/query.test.d.ts.map +1 -1
  266. package/test/dist/rawQuery.test.d.ts.map +1 -1
  267. package/test/dist/repository-ext.test.d.ts.map +1 -0
  268. package/test/dist/requires.test.d.ts.map +1 -1
  269. package/test/dist/router-generator.test.d.ts.map +1 -0
  270. package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
  271. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  272. package/test/dist/sql-store.test.d.ts.map +1 -0
  273. package/test/fixtures.ts +11 -9
  274. package/test/query.test.ts +209 -31
  275. package/test/rawQuery.test.ts +23 -19
  276. package/test/repository-ext.test.ts +58 -0
  277. package/test/requires.test.ts +6 -6
  278. package/test/router-generator.test.ts +180 -0
  279. package/test/routing-interruptibility.test.ts +63 -0
  280. package/test/rpc-multi-middleware.test.ts +78 -9
  281. package/test/sql-store.test.ts +1064 -0
  282. package/test/validateSample.test.ts +12 -9
  283. package/tsconfig.json +0 -1
@@ -1,15 +1,16 @@
1
- import { Effect, Layer, S, ServiceMap } from "effect-app";
1
+ import { Context, Effect, Layer, RpcX, S } from "effect-app";
2
2
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
3
- import { RpcContextMap, RpcX } from "effect-app/rpc";
4
- declare const UserProfile_base: S.EnhancedClass<UserProfile, S.Struct<{
3
+ import { RpcContextMap } from "effect-app/rpc";
4
+ declare const UserProfile_base: S.EnhancedClass<UserProfile, import("effect/Schema").Struct<{
5
5
  id: S.String;
6
6
  roles: S.$Array<S.String> & {
7
- withDefault: S.withConstructorDefault<S.$Array<S.String> & S.WithoutConstructorDefault>;
7
+ withDefault: S.withConstructorDefault<S.$Array<S.String>>;
8
+ withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.String>>;
8
9
  };
9
- }>, {}> & ServiceMap.Opaque<UserProfile, UserProfile>;
10
+ }>, {}> & Context.Opaque<UserProfile, UserProfile>;
10
11
  export declare class UserProfile extends UserProfile_base {
11
12
  }
12
- declare const Some_base: ServiceMap.OpaqueClass<Some, "Some", {
13
+ declare const Some_base: Context.OpaqueClass<Some, "Some", {
13
14
  a: number;
14
15
  }> & {
15
16
  readonly make: Effect.Effect<{
@@ -18,7 +19,7 @@ declare const Some_base: ServiceMap.OpaqueClass<Some, "Some", {
18
19
  };
19
20
  export declare class Some extends Some_base {
20
21
  }
21
- declare const SomeElse_base: ServiceMap.OpaqueClass<SomeElse, "SomeElse", {
22
+ declare const SomeElse_base: Context.OpaqueClass<SomeElse, "SomeElse", {
22
23
  b: number;
23
24
  }> & {
24
25
  readonly make: Effect.Effect<{
@@ -27,7 +28,7 @@ declare const SomeElse_base: ServiceMap.OpaqueClass<SomeElse, "SomeElse", {
27
28
  };
28
29
  export declare class SomeElse extends SomeElse_base {
29
30
  }
30
- declare const SomeService_base: ServiceMap.OpaqueClass<SomeService, "SomeService", {
31
+ declare const SomeService_base: Context.OpaqueClass<SomeService, "SomeService", {
31
32
  a: number;
32
33
  }> & {
33
34
  readonly make: Effect.Effect<{
@@ -66,7 +67,7 @@ declare const RequestContextMap_base: (new () => {
66
67
  readonly requireRoles: RpcContextMap.RpcContextMap.Custom<never, typeof UnauthorizedError, string[]>;
67
68
  readonly test: RpcContextMap.RpcContextMap<never, S.Never>;
68
69
  }>;
69
- get: <Key extends "allowAnonymous" | "requireRoles" | "test">(key: Key) => RpcX.RpcMiddleware.RpcDynamic<Key, {
70
+ get: <Key extends ("allowAnonymous" | "requireRoles" | "test") & string>(key: Key) => RpcX.RpcMiddleware.RpcDynamic<Key, {
70
71
  readonly allowAnonymous: RpcContextMap.RpcContextMap.Inverted<UserProfile, typeof NotLoggedInError>;
71
72
  readonly requireRoles: RpcContextMap.RpcContextMap.Custom<never, typeof UnauthorizedError, string[]>;
72
73
  readonly test: RpcContextMap.RpcContextMap<never, S.Never>;
@@ -101,11 +102,20 @@ declare const Test_base: RpcX.RpcMiddleware.TagClass<Test, "Test", {
101
102
  export declare class Test extends Test_base {
102
103
  }
103
104
  export declare const TestLive: Layer.Layer<Test, never, never>;
104
- declare const CustomError1_base: S.ErrorClass<CustomError1, S.TaggedStruct<"CustomError1", {}>, import("effect/Cause").YieldableError>;
105
+ declare const Counter_base: Context.OpaqueClass<Counter, "Counter", {
106
+ a: number;
107
+ }> & {
108
+ readonly make: Effect.Effect<{
109
+ a: number;
110
+ }, never, never>;
111
+ };
112
+ export declare class Counter extends Counter_base {
113
+ }
114
+ declare const CustomError1_base: import("effect/Schema").Class<CustomError1, import("effect/Schema").TaggedStruct<"CustomError1", {}>, import("effect/Cause").YieldableError>;
105
115
  export declare class CustomError1 extends CustomError1_base {
106
116
  }
107
- declare const CustomError2_base: S.ErrorClass<CustomError2, S.TaggedStruct<"CustomError2", {}>, import("effect/Cause").YieldableError>;
117
+ declare const CustomError2_base: import("effect/Schema").Class<CustomError2, import("effect/Schema").TaggedStruct<"CustomError2", {}>, import("effect/Cause").YieldableError>;
108
118
  export declare class CustomError2 extends CustomError2_base {
109
119
  }
110
120
  export {};
111
- //# sourceMappingURL=fixtures.d.ts.map
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2ZpeHR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7Ozs7Ozs7QUFHOUMscUJBQWEsV0FBWSxTQUFRLGdCQUtoQztDQUNBOzs7Ozs7OztBQUVELHFCQUFhLElBQUssU0FBUSxTQUFrRTtDQUFHOzs7Ozs7OztBQUMvRixxQkFBYSxRQUFTLFNBQVEsYUFBMEU7Q0FBRzs7Ozs7Ozs7QUFFM0cscUJBQWEsV0FBWSxTQUFRLGdCQUF1RTtJQUN0RyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8seUNBQTBCO0NBQ2xEOztjQUdzRixJQUFJOztBQUEzRixxQkFBYSxjQUFlLFNBQVEsbUJBQThFO0NBQ2pIO0FBRUQsZUFBTyxNQUFNLGtCQUFrQiwyQ0FNOUIsQ0FBQTs7Y0FHZ0UsUUFBUTs7QUFEekUscUJBQWEsa0JBQ1gsU0FBUSx1QkFBMEY7Q0FDbEc7QUFFRixlQUFPLE1BQU0sc0JBQXNCLCtDQVVsQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFRCxxQkFBYSxpQkFBa0IsU0FBUSxzQkFJckM7Q0FBRzs7OztjQUVrRixRQUFROztBQUEvRixxQkFBYSxjQUFlLFNBQVEsbUJBRWxDO0NBQUc7QUFFTCxlQUFPLE1BQU0sa0JBQWtCLDJDQXlCOUIsQ0FBQTs7Ozs7Ozs7QUFFRCxxQkFBYSxZQUFhLFNBQVEsaUJBS2hDO0NBQUc7QUFFTCxlQUFPLE1BQU0sZ0JBQWdCLCtDQXVCNUIsQ0FBQTs7Ozs7OztBQUVELHFCQUFhLElBQUssU0FBUSxTQUV4QjtDQUFHO0FBRUwsZUFBTyxNQUFNLFFBQVEsaUNBT3BCLENBQUE7Ozs7Ozs7O0FBRUQscUJBQWEsT0FBUSxTQUFRLFlBQXdFO0NBQUc7O0FBRXhHLHFCQUFhLFlBQWEsU0FBUSxpQkFBb0Q7Q0FBRzs7QUFDekYscUJBQWEsWUFBYSxTQUFRLGlCQUFvRDtDQUFHIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAS,UAAU,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;;;;;;;AAGpD,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAAqE;CAAG;;;;;;;;AAClG,qBAAa,QAAS,SAAQ,aAA6E;CAAG;;;;;;;;AAE9G,qBAAa,WAAY,SAAQ,gBAA0E;IACzG,MAAM,CAAC,QAAQ,CAAC,OAAO,yCAA0B;CAClD;;cAGsF,IAAI;;AAA3F,qBAAa,cAAe,SAAQ,mBAA8E;CACjH;AAED,eAAO,MAAM,kBAAkB,2CAM9B,CAAA;;cAGgE,QAAQ;;AADzE,qBAAa,kBACX,SAAQ,uBAA0F;CAClG;AAEF,eAAO,MAAM,sBAAsB,+CAUlC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;cAEkF,QAAQ;;AAA/F,qBAAa,cAAe,SAAQ,mBAElC;CAAG;AAEL,eAAO,MAAM,kBAAkB,2CAyB9B,CAAA;;;;;;;;AAED,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;AAEL,eAAO,MAAM,gBAAgB,+CAuB5B,CAAA;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAExB;CAAG;AAEL,eAAO,MAAM,QAAQ,iCAOpB,CAAA;;AAED,qBAAa,YAAa,SAAQ,iBAA+C;CAAG;;AACpF,qBAAa,YAAa,SAAQ,iBAA+C;CAAG"}
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAS,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;;;;;;;;AAG9C,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAAkE;CAAG;;;;;;;;AAC/F,qBAAa,QAAS,SAAQ,aAA0E;CAAG;;;;;;;;AAE3G,qBAAa,WAAY,SAAQ,gBAAuE;IACtG,MAAM,CAAC,QAAQ,CAAC,OAAO,yCAA0B;CAClD;;cAGsF,IAAI;;AAA3F,qBAAa,cAAe,SAAQ,mBAA8E;CACjH;AAED,eAAO,MAAM,kBAAkB,2CAM9B,CAAA;;cAGgE,QAAQ;;AADzE,qBAAa,kBACX,SAAQ,uBAA0F;CAClG;AAEF,eAAO,MAAM,sBAAsB,+CAUlC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;cAEkF,QAAQ;;AAA/F,qBAAa,cAAe,SAAQ,mBAElC;CAAG;AAEL,eAAO,MAAM,kBAAkB,2CAyB9B,CAAA;;;;;;;;AAED,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;AAEL,eAAO,MAAM,gBAAgB,+CAuB5B,CAAA;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAExB;CAAG;AAEL,eAAO,MAAM,QAAQ,iCAOpB,CAAA;;;;;;;;AAED,qBAAa,OAAQ,SAAQ,YAAwE;CAAG;;AAExG,qBAAa,YAAa,SAAQ,iBAAoD;CAAG;;AACzF,qBAAa,YAAa,SAAQ,iBAAoD;CAAG"}
@@ -1,18 +1,18 @@
1
- import { Effect, Layer, S, Scope, ServiceMap } from "effect-app";
1
+ import { Context, Effect, Layer, RpcX, S, Scope } from "effect-app";
2
2
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
3
- import { RpcContextMap, RpcX } from "effect-app/rpc";
4
- import { TaggedError } from "effect-app/Schema";
5
- export class UserProfile extends ServiceMap.assignTag("UserProfile")(S.Class("UserProfile")({
3
+ import { RpcContextMap } from "effect-app/rpc";
4
+ import { TaggedErrorClass } from "effect-app/Schema";
5
+ export class UserProfile extends Context.assignTag("UserProfile")(S.Class("UserProfile")({
6
6
  id: S.String,
7
7
  roles: S.Array(S.String)
8
8
  })) {
9
9
  }
10
- export class Some extends ServiceMap.Opaque()("Some", { make: Effect.succeed({ a: 1 }) }) {
10
+ export class Some extends Context.Opaque()("Some", { make: Effect.succeed({ a: 1 }) }) {
11
11
  }
12
- export class SomeElse extends ServiceMap.Opaque()("SomeElse", { make: Effect.succeed({ b: 2 }) }) {
12
+ export class SomeElse extends Context.Opaque()("SomeElse", { make: Effect.succeed({ b: 2 }) }) {
13
13
  }
14
14
  const MakeSomeService = Effect.succeed({ a: 1 });
15
- export class SomeService extends ServiceMap.Opaque()("SomeService", { make: MakeSomeService }) {
15
+ export class SomeService extends Context.Opaque()("SomeService", { make: MakeSomeService }) {
16
16
  static Default = this.toLayer(this.make);
17
17
  }
18
18
  // functionally equivalent to the one above
@@ -90,8 +90,10 @@ export const TestLive = Layer.effect(Test, Effect.gen(function* () {
90
90
  return yield* effect;
91
91
  });
92
92
  }));
93
- export class CustomError1 extends TaggedError()("CustomError1", {}) {
93
+ export class Counter extends Context.Opaque()("Counter", { make: Effect.succeed({ a: 0 }) }) {
94
94
  }
95
- export class CustomError2 extends TaggedError()("CustomError2", {}) {
95
+ export class CustomError1 extends TaggedErrorClass()("CustomError1", {}) {
96
96
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUvQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFVBQVUsQ0FBQyxTQUFTLENBQTJCLGFBQWEsQ0FBQyxDQUM1RixDQUFDLENBQUMsS0FBSyxDQUFjLGFBQWEsQ0FBQyxDQUFDO0lBQ2xDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTTtJQUNaLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7Q0FDekIsQ0FBQyxDQUNIO0NBQ0E7QUFFRCxNQUFNLE9BQU8sSUFBSyxTQUFRLFVBQVUsQ0FBQyxNQUFNLEVBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FBRztBQUNsRyxNQUFNLE9BQU8sUUFBUyxTQUFRLFVBQVUsQ0FBQyxNQUFNLEVBQVksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Q0FBRztBQUM5RyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7QUFD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
97
+ export class CustomError2 extends TaggedErrorClass()("CustomError2", {}) {
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXBELE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBMkIsYUFBYSxDQUFDLENBQ3pGLENBQUMsQ0FBQyxLQUFLLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDLENBQ0g7Q0FDQTtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQy9GLE1BQU0sT0FBTyxRQUFTLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQzNHLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtB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
@@ -1 +1 @@
1
- {"version":3,"file":"query.test.d.ts","sourceRoot":"","sources":["../query.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqC,CAAC,EAAsB,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAarF,qBAAa,SAAU,SAAQ,cAM7B;CAAG;AACL,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IAEjC,UAAiB,OAAQ,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;KAAG;CACtE"}
1
+ {"version":3,"file":"query.test.d.ts","sourceRoot":"","sources":["../query.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAA8C,CAAC,EAAU,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBlF,qBAAa,SAAU,SAAQ,cAM7B;CAAG;AACL,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC,CAAC;IAElC,UAAiB,OAAQ,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;KAAG;CACtE"}
@@ -1 +1 @@
1
- {"version":3,"file":"rawQuery.test.d.ts","sourceRoot":"","sources":["../rawQuery.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,cAAc,EAA+C,MAAM,YAAY,CAAA;AAQ5H,eAAO,MAAM,EAAE,6CAWb,CAAA"}
1
+ {"version":3,"file":"rawQuery.test.d.ts","sourceRoot":"","sources":["../rawQuery.test.ts"],"names":[],"mappings":"AACA,OAAO,EAA+C,cAAc,EAAmC,MAAM,YAAY,CAAA;AASzH,eAAO,MAAM,EAAE,6CAWb,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-ext.test.d.ts","sourceRoot":"","sources":["../repository-ext.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAU,CAAC,EAAc,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAKtC,OAAO,EAAE,cAAc,EAAyC,YAAY,EAAoB,IAAI,EAAE,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,MAAM,eAAe,CAAA;;cAGnK,IAAI;;AADzE,qBAAa,sBACX,SAAQ,2BAA8F;IAEtG,MAAM,CAAC,OAAO,oDASZ;CACH;AAqBD,eAAO,MAAM,eAAe;;;;;;;;;;SAMK,CAAA"}
1
+ {"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAU,IAAI,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,cAAc,EAAyC,YAAY,EAAoB,IAAI,EAAE,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,MAAM,eAAe,CAAA;;cAGnK,IAAI;;AADzE,qBAAa,sBACX,SAAQ,2BAA8F;IAEtG,MAAM,CAAC,OAAO,oDASZ;CACH;AAqBD,eAAO,MAAM,eAAe;;;;;;;;;;SAMK,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router-generator.test.d.ts","sourceRoot":"","sources":["../router-generator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-interruptibility.test.d.ts","sourceRoot":"","sources":["../routing-interruptibility.test.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,EAAU,MAAM,QAAQ,CAAA;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,OAAO,EAAE,SAAS,EAAkD,MAAM,qBAAqB,CAAA;AAG/F,OAAO,EAAE,cAAc,EAAyC,YAAY,EAA0B,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AAErP,QAAA,MAAM,UAAU;;;;;;;;;;oCAGmB,CAAA;AAGnC,qBAAa,oBAAqB,SAAQ,UAAU;CAAG;;;;;;;;;;;;AAEvD,cAAM,UAAW,SAAQ,eAKkB;CACzC;AAsCF,eAAO,MAAM,OAAO,+FAMhB,CAAA;AAgBJ,eAAO,MAAM,YAAY,uLAItB,CAAA;AAEH,eAAO,MAAM,YAAY,yIAgB2B,CAAA"}
1
+ {"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,EAAe,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAAW,IAAI,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAIpD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAkD,MAAM,qBAAqB,CAAA;AAGpG,OAAO,EAAE,cAAc,EAAyC,YAAY,EAA0B,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AAErP,QAAA,MAAM,UAAU;;;;;;;;;;oCAImB,CAAA;AAGnC,qBAAa,oBAAqB,SAAQ,UAAU;CAAG;;;;;;;;;;;;AAEvD,cAAM,UAAW,SAAQ,eAMkB;CACzC;AAsCF,eAAO,MAAM,OAAO,iEAMhB,CAAA;AAgBJ,eAAO,MAAM,YAAY,2HAItB,CAAA;AAEH,eAAO,MAAM,YAAY,yIAgB2B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-store.test.d.ts","sourceRoot":"","sources":["../sql-store.test.ts"],"names":[],"mappings":""}
package/test/fixtures.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { Effect, Layer, S, Scope, ServiceMap } from "effect-app"
1
+ import { Context, Effect, Layer, RpcX, S, Scope } from "effect-app"
2
2
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
3
- import { RpcContextMap, RpcX } from "effect-app/rpc"
4
- import { TaggedError } from "effect-app/Schema"
3
+ import { RpcContextMap } from "effect-app/rpc"
4
+ import { TaggedErrorClass } from "effect-app/Schema"
5
5
 
6
- export class UserProfile extends ServiceMap.assignTag<UserProfile, UserProfile>("UserProfile")(
6
+ export class UserProfile extends Context.assignTag<UserProfile, UserProfile>("UserProfile")(
7
7
  S.Class<UserProfile>("UserProfile")({
8
8
  id: S.String,
9
9
  roles: S.Array(S.String)
@@ -11,10 +11,10 @@ export class UserProfile extends ServiceMap.assignTag<UserProfile, UserProfile>(
11
11
  ) {
12
12
  }
13
13
 
14
- export class Some extends ServiceMap.Opaque<Some>()("Some", { make: Effect.succeed({ a: 1 }) }) {}
15
- export class SomeElse extends ServiceMap.Opaque<SomeElse>()("SomeElse", { make: Effect.succeed({ b: 2 }) }) {}
14
+ export class Some extends Context.Opaque<Some>()("Some", { make: Effect.succeed({ a: 1 }) }) {}
15
+ export class SomeElse extends Context.Opaque<SomeElse>()("SomeElse", { make: Effect.succeed({ b: 2 }) }) {}
16
16
  const MakeSomeService = Effect.succeed({ a: 1 })
17
- export class SomeService extends ServiceMap.Opaque<SomeService>()("SomeService", { make: MakeSomeService }) {
17
+ export class SomeService extends Context.Opaque<SomeService>()("SomeService", { make: MakeSomeService }) {
18
18
  static readonly Default = this.toLayer(this.make)
19
19
  }
20
20
 
@@ -128,5 +128,7 @@ export const TestLive = Layer.effect(
128
128
  })
129
129
  )
130
130
 
131
- export class CustomError1 extends TaggedError<CustomError1>()("CustomError1", {}) {}
132
- export class CustomError2 extends TaggedError<CustomError2>()("CustomError2", {}) {}
131
+ export class Counter extends Context.Opaque<Counter>()("Counter", { make: Effect.succeed({ a: 0 }) }) {}
132
+
133
+ export class CustomError1 extends TaggedErrorClass<CustomError1>()("CustomError1", {}) {}
134
+ export class CustomError2 extends TaggedErrorClass<CustomError2>()("CustomError2", {}) {}
@@ -1,17 +1,21 @@
1
1
  /* eslint-disable unused-imports/no-unused-vars */
2
2
  /* eslint-disable @typescript-eslint/no-empty-object-type */
3
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
- import { Effect, flow, Layer, Option, pipe, S, ServiceMap, Struct } from "effect-app"
4
+ import { SchemaTransformation } from "effect"
5
+ import { Context, Effect, flow, Layer, Option, pipe, S, Struct } from "effect-app"
5
6
  import { inspect } from "util"
6
7
  import { expect, expectTypeOf, it } from "vitest"
7
8
  import { setupRequestContextFromCurrent } from "../src/api/setupRequest.js"
8
9
  import { and, count, make, one, or, order, page, project, type QueryEnd, type QueryProjection, type QueryWhere, toFilter, where } from "../src/Model/query.js"
9
10
  import { makeRepo } from "../src/Model/Repository.js"
11
+ import { RepositoryRegistryLive } from "../src/Model/Repository/Registry.js"
10
12
  import { memFilter, MemoryStoreLive } from "../src/Store/Memory.js"
11
13
  import { SomeService } from "./fixtures.js"
12
14
 
15
+ const TestStoreLive = Layer.merge(MemoryStoreLive, RepositoryRegistryLive)
16
+
13
17
  const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
14
- const num = S.Struct({ _tag: S.Literal("number"), value: S.Number })
18
+ const num = S.Struct({ _tag: S.Literal("number"), value: S.Finite })
15
19
  const someUnion = S.Union([str, num])
16
20
 
17
21
  export class Something extends S.Class<Something>("Something")({
@@ -19,7 +23,7 @@ export class Something extends S.Class<Something>("Something")({
19
23
  displayName: S.NonEmptyString255,
20
24
  name: S.NullOr(S.NonEmptyString255).withDefault,
21
25
  n: S.Date.withDefault,
22
- union: someUnion.pipe(S.withDefaultConstructor(() => ({ _tag: "string" as const, value: "hi" })))
26
+ union: someUnion.pipe(S.withConstructorDefault(Effect.succeed({ _tag: "string" as const, value: "hi" })))
23
27
  }) {}
24
28
  export declare namespace Something {
25
29
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
@@ -90,8 +94,8 @@ it("works", () => {
90
94
 
91
95
  const processed = memFilter(interpreted)(items.map((_) =>
92
96
  S.encodeUnknownSync(S.Struct({
93
- ...Something.omit("displayName"),
94
- displayName: S.Literal("Verona", "Riley")
97
+ ...Struct.omit(Something.fields, ["displayName"]),
98
+ displayName: S.Literals(["Verona", "Riley"])
95
99
  }))(_)
96
100
  ))
97
101
 
@@ -99,7 +103,7 @@ it("works", () => {
99
103
  })
100
104
 
101
105
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
102
- class SomethingRepo extends ServiceMap.Service<SomethingRepo>()("SomethingRepo", {
106
+ class SomethingRepo extends Context.Service<SomethingRepo>()("SomethingRepo", {
103
107
  make: Effect.gen(function*() {
104
108
  return yield* makeRepo("Something", Something, {})
105
109
  })
@@ -112,7 +116,7 @@ class SomethingRepo extends ServiceMap.Service<SomethingRepo>()("SomethingRepo",
112
116
  })
113
117
  )
114
118
  .pipe(
115
- Layer.provide(MemoryStoreLive)
119
+ Layer.provide(TestStoreLive)
116
120
  )
117
121
  }
118
122
 
@@ -279,7 +283,7 @@ it(
279
283
  expect(result).toEqual([])
280
284
  expect(result2).toEqual([])
281
285
  })
282
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
286
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
283
287
  )
284
288
 
285
289
  it(
@@ -465,7 +469,7 @@ it(
465
469
 
466
470
  expect([]).toEqual([])
467
471
  })
468
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
472
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
469
473
  )
470
474
 
471
475
  it(
@@ -508,7 +512,7 @@ it(
508
512
 
509
513
  expect([]).toEqual([])
510
514
  })
511
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
515
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
512
516
  )
513
517
 
514
518
  it(
@@ -519,8 +523,8 @@ it(
519
523
  const schema = S.Struct({
520
524
  id: S.String,
521
525
  createdAt: S.Date.pipe(
522
- S.withDecodingDefault(() => new Date().toISOString()),
523
- S.withConstructorDefault(() => Option.some(new Date()))
526
+ S.withDecodingDefault(Effect.sync(() => new Date().toISOString())),
527
+ S.withConstructorDefault(Effect.sync(() => new Date()))
524
528
  )
525
529
  })
526
530
  const repo = yield* makeRepo(
@@ -532,8 +536,8 @@ it(
532
536
  const outputSchema = S.Struct({
533
537
  id: S.Literal("123"),
534
538
  createdAt: S.Date.pipe(
535
- S.withDecodingDefault(() => new Date().toISOString()),
536
- S.withConstructorDefault(() => Option.some(new Date()))
539
+ S.withDecodingDefault(Effect.sync(() => new Date().toISOString())),
540
+ S.withConstructorDefault(Effect.sync(() => new Date()))
537
541
  )
538
542
  })
539
543
 
@@ -541,7 +545,34 @@ it(
541
545
 
542
546
  expect(result).toEqual([])
543
547
  })
544
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
548
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
549
+ )
550
+
551
+ it(
552
+ "project with encodeKeys in projection maps encoded keys",
553
+ () =>
554
+ Effect
555
+ .gen(function*() {
556
+ const schema = S.Struct({
557
+ id: S.String,
558
+ a: S.Number
559
+ })
560
+
561
+ const repo = yield* makeRepo(
562
+ "test",
563
+ schema,
564
+ {
565
+ makeInitial: Effect.sync(() => [{ id: "1", a: 1 }])
566
+ }
567
+ )
568
+
569
+ const outputSchema = S.Struct({ b: S.Number }).pipe(S.encodeKeys({ b: "a" }))
570
+
571
+ const result = yield* repo.query(project(outputSchema))
572
+
573
+ expect(result).toStrictEqual([{ b: 1 }])
574
+ })
575
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
545
576
  )
546
577
 
547
578
  it(
@@ -551,7 +582,7 @@ it(
551
582
  .gen(function*() {
552
583
  const schema = S.Struct({
553
584
  id: S.String,
554
- literals: S.Literal("a", "b", "c")
585
+ literals: S.Literals(["a", "b", "c"])
555
586
  })
556
587
 
557
588
  type Schema = typeof schema.Type
@@ -571,7 +602,7 @@ it(
571
602
 
572
603
  expect(result).toEqual([])
573
604
  })
574
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
605
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
575
606
  )
576
607
 
577
608
  it(
@@ -581,7 +612,7 @@ it(
581
612
  .gen(function*() {
582
613
  const schema = S.Struct({
583
614
  id: S.String,
584
- literals: S.Union([S.Literal("a", "b", "c"), S.Null])
615
+ literals: S.Union([S.Literals(["a", "b", "c"]), S.Null])
585
616
  })
586
617
 
587
618
  type Schema = typeof schema.Type
@@ -615,7 +646,7 @@ it(
615
646
 
616
647
  expect(result).toEqual([])
617
648
  })
618
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
649
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
619
650
  )
620
651
 
621
652
  it(
@@ -659,7 +690,7 @@ it(
659
690
 
660
691
  expect(result).toEqual([])
661
692
  })
662
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
693
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
663
694
  )
664
695
 
665
696
  it("remove null from one constituent of a tagged union", () =>
@@ -672,7 +703,7 @@ it("remove null from one constituent of a tagged union", () =>
672
703
 
673
704
  class BB extends S.Class<BB>("BB")({
674
705
  id: S.Literal("BB"),
675
- b: S.NullOr(S.Number)
706
+ b: S.NullOr(S.Finite)
676
707
  }) {}
677
708
 
678
709
  type Union = AA | BB
@@ -708,7 +739,7 @@ it("remove null from one constituent of a tagged union", () =>
708
739
  })[]
709
740
  >()
710
741
  })
711
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
742
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
712
743
 
713
744
  it("refine 3", () =>
714
745
  Effect
@@ -746,7 +777,7 @@ it("refine 3", () =>
746
777
  const resQuer1 = yield* repo.query(where("id", "AA"))
747
778
  expectTypeOf(resQuer1).toEqualTypeOf<readonly AA[]>()
748
779
  })
749
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
780
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
750
781
 
751
782
  it("my test", () =>
752
783
  Effect
@@ -764,7 +795,7 @@ it("my test", () =>
764
795
  )
765
796
  expectTypeOf(resQuer1).toEqualTypeOf<readonly AA[]>()
766
797
  })
767
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
798
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
768
799
 
769
800
  it("refine inner without imposing a projection", () =>
770
801
  Effect
@@ -808,7 +839,7 @@ it("refine inner without imposing a projection", () =>
808
839
  where("union._tag", "AA"),
809
840
  // But if I wanna the whole Data as output ignoring the inner refinement
810
841
  // I wanna be able to do so
811
- project(S.Struct(Data.pick("union")))
842
+ project(Data.mapFields(Struct.pick(["union"])))
812
843
  )
813
844
 
814
845
  expectTypeOf(query2).toEqualTypeOf<
@@ -839,7 +870,7 @@ it("refine inner without imposing a projection", () =>
839
870
  }[]
840
871
  >()
841
872
  })
842
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
873
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
843
874
 
844
875
  it("does not allow string queries on arrays", () =>
845
876
  Effect
@@ -874,7 +905,7 @@ it("does not allow string queries on arrays", () =>
874
905
  expectTypeOf(good3).toEqualTypeOf<QueryWhere<Some, Some>>()
875
906
  expectTypeOf(good4).toEqualTypeOf<QueryWhere<Some, Some>>()
876
907
  })
877
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
908
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
878
909
 
879
910
  it("test array.length", () =>
880
911
  Effect
@@ -915,7 +946,7 @@ it("test array.length", () =>
915
946
  QueryWhere<Something, Something>
916
947
  >()
917
948
  })
918
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
949
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
919
950
 
920
951
  it("distribution over union", () =>
921
952
  Effect
@@ -939,7 +970,7 @@ it("distribution over union", () =>
939
970
  })[]
940
971
  >()
941
972
  })
942
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
973
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
943
974
 
944
975
  it("refine nested union", () =>
945
976
  Effect
@@ -980,7 +1011,154 @@ it("refine nested union", () =>
980
1011
  }[]
981
1012
  >()
982
1013
  })
983
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
1014
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
1015
+
1016
+ it("find with transformed id", () =>
1017
+ Effect
1018
+ .gen(function*() {
1019
+ const ConfiguratorId = S.NonEmptyString255
1020
+
1021
+ class PreconfigurationId extends S.Class<PreconfigurationId>("PreconfigurationId")({
1022
+ configuratorId: ConfiguratorId,
1023
+ label: S.NonEmptyString50
1024
+ }) {}
1025
+
1026
+ const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
1027
+ S.decodeTo(
1028
+ S.toType(PreconfigurationId),
1029
+ SchemaTransformation.transformOrFail({
1030
+ decode: Effect.fnUntraced(function*(value) {
1031
+ const values = value.split("_")
1032
+ const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
1033
+ const configuratorId = yield* S.SchemaParser.decodeUnknownEffect(ConfiguratorId)(values.join("_"))
1034
+ return new PreconfigurationId({ configuratorId, label })
1035
+ }),
1036
+ encode: (id) => Effect.succeed(S.NonEmptyString255(`${id.configuratorId}_${id.label}`))
1037
+ })
1038
+ ),
1039
+ S.revealCodec
1040
+ )
1041
+
1042
+ const Preconfiguration = S.Struct({
1043
+ id: PreconfigurationIdFromString,
1044
+ name: S.String
1045
+ })
1046
+
1047
+ const repo = yield* makeRepo("Preconfiguration", Preconfiguration, { idKey: "id" as const })
1048
+
1049
+ const id = new PreconfigurationId({
1050
+ configuratorId: S.NonEmptyString255("myConfigurator"),
1051
+ label: S.NonEmptyString50("myLabel")
1052
+ })
1053
+ const item = { id, name: "test preconfig" }
1054
+
1055
+ yield* repo.saveAndPublish([item])
1056
+
1057
+ const found = yield* repo.find(id)
1058
+ expect(Option.isSome(found)).toBe(true)
1059
+ expect(Option.getOrThrow(found).name).toBe("test preconfig")
1060
+ expect(Option.getOrThrow(found).id).toEqual(id)
1061
+
1062
+ const notFound = yield* repo.find(
1063
+ new PreconfigurationId({
1064
+ configuratorId: S.NonEmptyString255("other"),
1065
+ label: S.NonEmptyString50("nope")
1066
+ })
1067
+ )
1068
+ expect(Option.isNone(notFound)).toBe(true)
1069
+ })
1070
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
1071
+
1072
+ it("find with transformed id in tagged union", () =>
1073
+ Effect
1074
+ .gen(function*() {
1075
+ const ConfiguratorId = S.NonEmptyString255
1076
+
1077
+ class PreconfigurationId extends S.Class<PreconfigurationId>("PreconfigurationId")({
1078
+ configuratorId: ConfiguratorId,
1079
+ label: S.NonEmptyString50
1080
+ }) {}
1081
+
1082
+ const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
1083
+ S.decodeTo(
1084
+ S.toType(PreconfigurationId),
1085
+ SchemaTransformation.transformOrFail({
1086
+ decode: Effect.fnUntraced(function*(value) {
1087
+ const values = value.split("_")
1088
+ const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
1089
+ const configuratorId = yield* S.SchemaParser.decodeUnknownEffect(ConfiguratorId)(values.join("_"))
1090
+ return new PreconfigurationId({ configuratorId, label })
1091
+ }),
1092
+ encode: (id) => Effect.succeed(S.NonEmptyString255(`${id.configuratorId}_${id.label}`))
1093
+ })
1094
+ ),
1095
+ S.revealCodec
1096
+ )
1097
+
1098
+ class Draft extends S.TaggedClass<Draft>()("Draft", {
1099
+ id: PreconfigurationIdFromString,
1100
+ name: S.String
1101
+ }) {}
1102
+
1103
+ class Published extends S.TaggedClass<Published>()("Published", {
1104
+ id: PreconfigurationIdFromString,
1105
+ name: S.String,
1106
+ publishedAt: S.String
1107
+ }) {}
1108
+
1109
+ class Archived extends S.TaggedClass<Archived>()("Archived", {
1110
+ id: PreconfigurationIdFromString,
1111
+ name: S.String,
1112
+ archivedAt: S.String
1113
+ }) {}
1114
+
1115
+ const Preconfiguration = S.Union([Draft, Published, Archived])
1116
+
1117
+ const repo = yield* makeRepo("Preconfiguration", Preconfiguration, {})
1118
+
1119
+ const id1 = new PreconfigurationId({
1120
+ configuratorId: S.NonEmptyString255("conf1"),
1121
+ label: S.NonEmptyString50("draft1")
1122
+ })
1123
+ const id2 = new PreconfigurationId({
1124
+ configuratorId: S.NonEmptyString255("conf2"),
1125
+ label: S.NonEmptyString50("pub1")
1126
+ })
1127
+ const id3 = new PreconfigurationId({
1128
+ configuratorId: S.NonEmptyString255("conf3"),
1129
+ label: S.NonEmptyString50("arch1")
1130
+ })
1131
+
1132
+ const draft = new Draft({ id: id1, name: "my draft" })
1133
+ const published = new Published({ id: id2, name: "my published", publishedAt: "2024-01-01" })
1134
+ const archived = new Archived({ id: id3, name: "my archived", archivedAt: "2024-06-01" })
1135
+
1136
+ yield* repo.saveAndPublish([draft, published, archived])
1137
+
1138
+ // find each by their PreconfigurationId instance
1139
+ const foundDraft = yield* repo.find(id1)
1140
+ expect(Option.isSome(foundDraft)).toBe(true)
1141
+ expect(Option.getOrThrow(foundDraft)._tag).toBe("Draft")
1142
+ expect(Option.getOrThrow(foundDraft).name).toBe("my draft")
1143
+
1144
+ const foundPublished = yield* repo.find(id2)
1145
+ expect(Option.isSome(foundPublished)).toBe(true)
1146
+ expect(Option.getOrThrow(foundPublished)._tag).toBe("Published")
1147
+
1148
+ const foundArchived = yield* repo.find(id3)
1149
+ expect(Option.isSome(foundArchived)).toBe(true)
1150
+ expect(Option.getOrThrow(foundArchived)._tag).toBe("Archived")
1151
+
1152
+ // not found
1153
+ const notFound = yield* repo.find(
1154
+ new PreconfigurationId({
1155
+ configuratorId: S.NonEmptyString255("nope"),
1156
+ label: S.NonEmptyString50("nope")
1157
+ })
1158
+ )
1159
+ expect(Option.isNone(notFound)).toBe(true)
1160
+ })
1161
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
984
1162
 
985
1163
  it("refine union with nested union", () =>
986
1164
  Effect
@@ -1095,4 +1273,4 @@ it("refine union with nested union", () =>
1095
1273
  })[]
1096
1274
  >()
1097
1275
  })
1098
- .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
1276
+ .pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))