@effect-app/infra 4.0.0-beta.7 → 4.0.0-beta.71

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 (143) hide show
  1. package/CHANGELOG.md +455 -0
  2. package/dist/CUPS.d.ts +3 -3
  3. package/dist/CUPS.d.ts.map +1 -1
  4. package/dist/CUPS.js +3 -3
  5. package/dist/Emailer/Sendgrid.js +1 -1
  6. package/dist/Emailer/service.d.ts +3 -3
  7. package/dist/Emailer/service.d.ts.map +1 -1
  8. package/dist/Emailer/service.js +3 -3
  9. package/dist/MainFiberSet.d.ts +2 -2
  10. package/dist/MainFiberSet.d.ts.map +1 -1
  11. package/dist/MainFiberSet.js +3 -3
  12. package/dist/Model/Repository/internal/internal.d.ts +3 -3
  13. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  14. package/dist/Model/Repository/internal/internal.js +11 -7
  15. package/dist/Model/Repository/makeRepo.d.ts +2 -2
  16. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  17. package/dist/Model/Repository/makeRepo.js +1 -1
  18. package/dist/Model/Repository/validation.d.ts +4 -4
  19. package/dist/Model/query/dsl.d.ts +9 -9
  20. package/dist/Operations.d.ts +2 -2
  21. package/dist/Operations.d.ts.map +1 -1
  22. package/dist/Operations.js +3 -3
  23. package/dist/OperationsRepo.d.ts +2 -2
  24. package/dist/OperationsRepo.d.ts.map +1 -1
  25. package/dist/OperationsRepo.js +3 -3
  26. package/dist/QueueMaker/SQLQueue.d.ts +3 -5
  27. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  28. package/dist/QueueMaker/SQLQueue.js +9 -7
  29. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  30. package/dist/QueueMaker/memQueue.js +10 -9
  31. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  32. package/dist/QueueMaker/sbqueue.js +11 -9
  33. package/dist/RequestContext.d.ts +10 -10
  34. package/dist/RequestContext.d.ts.map +1 -1
  35. package/dist/RequestContext.js +4 -4
  36. package/dist/RequestFiberSet.d.ts +2 -2
  37. package/dist/RequestFiberSet.d.ts.map +1 -1
  38. package/dist/RequestFiberSet.js +5 -5
  39. package/dist/Store/ContextMapContainer.d.ts +3 -3
  40. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  41. package/dist/Store/ContextMapContainer.js +3 -3
  42. package/dist/Store/Cosmos.js +1 -1
  43. package/dist/Store/Disk.d.ts.map +1 -1
  44. package/dist/Store/Disk.js +3 -4
  45. package/dist/Store/Memory.d.ts +2 -2
  46. package/dist/Store/Memory.d.ts.map +1 -1
  47. package/dist/Store/Memory.js +4 -4
  48. package/dist/Store/service.d.ts +3 -3
  49. package/dist/Store/service.d.ts.map +1 -1
  50. package/dist/Store/service.js +4 -4
  51. package/dist/adapters/SQL/Model.d.ts +2 -5
  52. package/dist/adapters/SQL/Model.d.ts.map +1 -1
  53. package/dist/adapters/SQL/Model.js +21 -13
  54. package/dist/adapters/ServiceBus.d.ts +6 -6
  55. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  56. package/dist/adapters/ServiceBus.js +9 -9
  57. package/dist/adapters/cosmos-client.d.ts +2 -2
  58. package/dist/adapters/cosmos-client.d.ts.map +1 -1
  59. package/dist/adapters/cosmos-client.js +3 -3
  60. package/dist/adapters/logger.d.ts.map +1 -1
  61. package/dist/adapters/memQueue.d.ts +2 -2
  62. package/dist/adapters/memQueue.d.ts.map +1 -1
  63. package/dist/adapters/memQueue.js +3 -3
  64. package/dist/adapters/mongo-client.d.ts +2 -2
  65. package/dist/adapters/mongo-client.d.ts.map +1 -1
  66. package/dist/adapters/mongo-client.js +3 -3
  67. package/dist/adapters/redis-client.d.ts +3 -3
  68. package/dist/adapters/redis-client.d.ts.map +1 -1
  69. package/dist/adapters/redis-client.js +3 -3
  70. package/dist/api/ContextProvider.d.ts +6 -6
  71. package/dist/api/ContextProvider.d.ts.map +1 -1
  72. package/dist/api/ContextProvider.js +6 -6
  73. package/dist/api/internal/auth.d.ts +1 -1
  74. package/dist/api/internal/events.d.ts.map +1 -1
  75. package/dist/api/internal/events.js +7 -5
  76. package/dist/api/layerUtils.d.ts +5 -5
  77. package/dist/api/layerUtils.d.ts.map +1 -1
  78. package/dist/api/layerUtils.js +5 -5
  79. package/dist/api/routing/middleware/RouterMiddleware.d.ts +3 -3
  80. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  81. package/dist/api/routing/schema/jwt.d.ts +1 -1
  82. package/dist/api/routing/schema/jwt.d.ts.map +1 -1
  83. package/dist/api/routing/schema/jwt.js +1 -1
  84. package/dist/api/routing.d.ts.map +1 -1
  85. package/dist/api/routing.js +1 -1
  86. package/dist/errorReporter.d.ts +1 -1
  87. package/dist/errorReporter.d.ts.map +1 -1
  88. package/dist/errorReporter.js +1 -1
  89. package/dist/fileUtil.js +1 -1
  90. package/dist/logger.d.ts.map +1 -1
  91. package/dist/rateLimit.js +1 -1
  92. package/examples/query.ts +29 -25
  93. package/package.json +16 -16
  94. package/src/CUPS.ts +2 -2
  95. package/src/Emailer/Sendgrid.ts +1 -1
  96. package/src/Emailer/service.ts +2 -2
  97. package/src/MainFiberSet.ts +2 -2
  98. package/src/Model/Repository/internal/internal.ts +11 -8
  99. package/src/Model/Repository/makeRepo.ts +2 -2
  100. package/src/Operations.ts +2 -2
  101. package/src/OperationsRepo.ts +2 -2
  102. package/src/QueueMaker/SQLQueue.ts +10 -10
  103. package/src/QueueMaker/memQueue.ts +41 -42
  104. package/src/QueueMaker/sbqueue.ts +65 -62
  105. package/src/RequestContext.ts +3 -3
  106. package/src/RequestFiberSet.ts +4 -4
  107. package/src/Store/ContextMapContainer.ts +2 -2
  108. package/src/Store/Cosmos.ts +10 -10
  109. package/src/Store/Disk.ts +2 -3
  110. package/src/Store/Memory.ts +4 -6
  111. package/src/Store/service.ts +3 -3
  112. package/src/adapters/SQL/Model.ts +76 -71
  113. package/src/adapters/ServiceBus.ts +8 -8
  114. package/src/adapters/cosmos-client.ts +2 -2
  115. package/src/adapters/memQueue.ts +2 -2
  116. package/src/adapters/mongo-client.ts +2 -2
  117. package/src/adapters/redis-client.ts +2 -2
  118. package/src/api/ContextProvider.ts +11 -11
  119. package/src/api/internal/events.ts +5 -4
  120. package/src/api/layerUtils.ts +8 -8
  121. package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
  122. package/src/api/routing/schema/jwt.ts +2 -3
  123. package/src/api/routing.ts +4 -3
  124. package/src/errorReporter.ts +1 -1
  125. package/src/fileUtil.ts +1 -1
  126. package/src/rateLimit.ts +2 -2
  127. package/test/contextProvider.test.ts +5 -5
  128. package/test/controller.test.ts +9 -7
  129. package/test/dist/contextProvider.test.d.ts.map +1 -1
  130. package/test/dist/controller.test.d.ts.map +1 -1
  131. package/test/dist/fixtures.d.ts +17 -8
  132. package/test/dist/fixtures.d.ts.map +1 -1
  133. package/test/dist/fixtures.js +11 -9
  134. package/test/dist/query.test.d.ts.map +1 -1
  135. package/test/dist/rawQuery.test.d.ts.map +1 -1
  136. package/test/dist/requires.test.d.ts.map +1 -1
  137. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  138. package/test/fixtures.ts +10 -8
  139. package/test/query.test.ts +157 -11
  140. package/test/rawQuery.test.ts +19 -17
  141. package/test/requires.test.ts +6 -5
  142. package/test/rpc-multi-middleware.test.ts +73 -4
  143. package/tsconfig.json +0 -1
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable @typescript-eslint/no-unsafe-member-access */
3
3
  import { type MakeContext, type MakeErrors, makeRouter } from "@effect-app/infra/api/routing"
4
4
  import { expect, expectTypeOf, it } from "@effect/vitest"
5
- import { Effect, Layer, S, Scope, ServiceMap } from "effect-app"
5
+ import { Effect, Layer, S, Scope, Context } from "effect-app"
6
6
  import { InvalidStateError, makeRpcClient, UnauthorizedError } from "effect-app/client"
7
7
  import { DefaultGenericMiddlewares } from "effect-app/middleware"
8
8
  import * as RpcX from "effect-app/rpc"
@@ -99,7 +99,7 @@ class MyContextProvider2
99
99
 
100
100
  //
101
101
 
102
- class Str extends ServiceMap.Service<Str, "str">()("str") {}
102
+ class Str extends Context.Service<Str, "str">()("str") {}
103
103
 
104
104
  export class BogusMiddleware extends RpcX.RpcMiddleware.Tag<BogusMiddleware>()("BogusMiddleware") {
105
105
  static Default = Layer.make(this, {
@@ -205,7 +205,9 @@ export const middleware3 = MiddlewareMaker
205
205
  export const { TaggedRequest: Req } = makeRpcClient(RequestContextMap)
206
206
 
207
207
  export class Eff extends Req<Eff>()("Eff", {}, { success: S.Void }) {}
208
- export class Gen extends Req<Gen>()("Gen", {}, { success: S.Void }) {}
208
+ export class Gen extends Req<Gen>()("Gen", {}) {}
209
+
210
+ expectTypeOf(Eff.error).toEqualTypeOf<typeof Gen.error>()
209
211
 
210
212
  export class DoSomething extends Req<DoSomething>()("DoSomething", {
211
213
  id: S.String
@@ -231,14 +233,14 @@ export class GetSomething extends Req<GetSomething>()("GetSomething", {
231
233
 
232
234
  export class GetSomething2 extends Req<GetSomething2>()("GetSomething2", {
233
235
  id: S.String
234
- }, { success: S.NumberFromString }) {}
236
+ }, { success: S.FiniteFromString }) {}
235
237
 
236
238
  const Something = { Eff, Gen, DoSomething, GetSomething, GetSomething2, meta: { moduleName: "Something" as const } }
237
239
 
238
240
  // const client = ApiClientFactory.makeFor(Layer.empty)(Something)
239
241
  // client.pipe(Effect.map(c => c.DoSomething.name))
240
242
 
241
- export class SomethingService extends ServiceMap.Service<SomethingService>()(
243
+ export class SomethingService extends Context.Service<SomethingService>()(
242
244
  "SomethingService",
243
245
  {
244
246
  make: Effect.gen(function*() {
@@ -258,7 +260,7 @@ declare const a: {
258
260
  (opt: { b: 3 }): void
259
261
  }
260
262
 
261
- export class SomethingRepo extends ServiceMap.Service<SomethingRepo>()(
263
+ export class SomethingRepo extends Context.Service<SomethingRepo>()(
262
264
  "SomethingRepo",
263
265
  {
264
266
  make: Effect.gen(function*() {
@@ -271,7 +273,7 @@ export class SomethingRepo extends ServiceMap.Service<SomethingRepo>()(
271
273
  static Default = Layer.effect(this, this.make).pipe(Layer.provide(SomethingService.Default))
272
274
  }
273
275
 
274
- export class SomethingService2 extends ServiceMap.Service<SomethingService2>()(
276
+ export class SomethingService2 extends Context.Service<SomethingService2>()(
275
277
  "SomethingService2",
276
278
  {
277
279
  make: Effect.gen(function*() {
@@ -1 +1 @@
1
- {"version":3,"file":"contextProvider.test.d.ts","sourceRoot":"","sources":["../contextProvider.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AAkFzE,eAAO,MAAM,mBAAmB;;CAkB9B,CAAA;AACF,eAAO,MAAM,sBAAsB;;CAkBjC,CAAA"}
1
+ {"version":3,"file":"contextProvider.test.d.ts","sourceRoot":"","sources":["../contextProvider.test.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,IAAI,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AAkFzE,eAAO,MAAM,mBAAmB;;CAkB9B,CAAA;AACF,eAAO,MAAM,sBAAsB;;CAkBjC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAE7F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAoC,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvF,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAGtC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,OAAO,EAAE,cAAc,EAAsB,YAAY,EAAqB,YAAY,EAAoB,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAY,MAAM,eAAe,CAAA;;cAuE/G,QAAQ;;AADzE,cAAM,kBACJ,SAAQ,uBAA0F;IAElG,MAAM,CAAC,OAAO,uDAUZ;CACH;;AAID,cAAM,GAAI,SAAQ,QAAuC;CAAG;;;;;AAE5D,qBAAa,eAAgB,SAAQ,oBAA4D;IAC/F,MAAM,CAAC,OAAO,2CAUZ;CACH;AAkFD,eAAO,MAAM,WAAW;;;;;;;;;;YAKM,CAAA;AAE9B,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAA;;;;;;;;;;;;;;;;;;;;AAEtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;;;;;;;;;;;;;AAEtE,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;;;;;;;;;;;;;AAgB1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;;;;AAOtC,qBAAa,gBAAiB,SAAQ,qBASrC;IACC,MAAM,CAAC,OAAO,8CAAgC;CAC/C;;;;;;;;AASD,qBAAa,aAAc,SAAQ,kBASlC;IACC,MAAM,CAAC,OAAO,2CAA8E;CAC7F;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAOtC;IACC,MAAM,CAAC,OAAO,+CAAgC;CAC/C;AAED,eAAO,MAAQ,MAAM;;;;;SA7KX,CADL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8KkB,QAAQ;;0FAE9B,CAAA;AAED,eAAO,MAAM,EAAE;;;;;;;;;aAjLL,CADL;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoLJ,CAAA"}
1
+ {"version":3,"file":"controller.test.d.ts","sourceRoot":"","sources":["../controller.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAc,MAAM,+BAA+B,CAAA;AAE7F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAoC,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvF,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AAGtC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,OAAO,EAAE,cAAc,EAAsB,YAAY,EAAqB,YAAY,EAAoB,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAY,MAAM,eAAe,CAAA;;cAuE/G,QAAQ;;AADzE,cAAM,kBACJ,SAAQ,uBAA0F;IAElG,MAAM,CAAC,OAAO,uDAUZ;CACH;;AAID,cAAM,GAAI,SAAQ,QAAoC;CAAG;;;;;AAEzD,qBAAa,eAAgB,SAAQ,oBAA4D;IAC/F,MAAM,CAAC,OAAO,2CAUZ;CACH;AAkFD,eAAO,MAAM,WAAW;;;;;;;;;;YAKM,CAAA;AAE9B,eAAO,MAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAqC,CAAA;;;;;;;;;;;;;;;;;AAEtE,qBAAa,GAAI,SAAQ,QAA0C;CAAG;;;;;;;;;;;;;AACtE,qBAAa,GAAI,SAAQ,QAAqB;CAAG;;;;;;;;;;;;;;;;;;;AAIjD,qBAAa,WAAY,SAAQ,gBAEV;CAAG;;;;;;;;;;;;;;;;;;;AAgB1B,qBAAa,YAAa,SAAQ,iBAET;CAAG;;;;;;;;;;;;;;;;;;;AAE5B,qBAAa,aAAc,SAAQ,kBAEA;CAAG;;;;;;;;AAOtC,qBAAa,gBAAiB,SAAQ,qBASrC;IACC,MAAM,CAAC,OAAO,8CAAgC;CAC/C;;;;;;;;AASD,qBAAa,aAAc,SAAQ,kBASlC;IACC,MAAM,CAAC,OAAO,2CAA8E;CAC7F;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAOtC;IACC,MAAM,CAAC,OAAO,+CAAgC;CAC/C;AAED,eAAO,MAAQ,MAAM;;;;;SA/KX,CADC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgLY,QAAQ;;0FAE9B,CAAA;AAED,eAAO,MAAM,EAAE;;;;;;;;;aAnLL,CADC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsLV,CAAA"}
@@ -1,15 +1,15 @@
1
- import { Effect, Layer, S, ServiceMap } from "effect-app";
1
+ import { Context, Effect, Layer, S } from "effect-app";
2
2
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
3
3
  import { RpcContextMap, RpcX } from "effect-app/rpc";
4
4
  declare const UserProfile_base: S.EnhancedClass<UserProfile, S.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
8
  };
9
- }>, {}> & ServiceMap.Opaque<UserProfile, UserProfile>;
9
+ }>, {}> & Context.Opaque<UserProfile, UserProfile>;
10
10
  export declare class UserProfile extends UserProfile_base {
11
11
  }
12
- declare const Some_base: ServiceMap.OpaqueClass<Some, "Some", {
12
+ declare const Some_base: Context.OpaqueClass<Some, "Some", {
13
13
  a: number;
14
14
  }> & {
15
15
  readonly make: Effect.Effect<{
@@ -18,7 +18,7 @@ declare const Some_base: ServiceMap.OpaqueClass<Some, "Some", {
18
18
  };
19
19
  export declare class Some extends Some_base {
20
20
  }
21
- declare const SomeElse_base: ServiceMap.OpaqueClass<SomeElse, "SomeElse", {
21
+ declare const SomeElse_base: Context.OpaqueClass<SomeElse, "SomeElse", {
22
22
  b: number;
23
23
  }> & {
24
24
  readonly make: Effect.Effect<{
@@ -27,7 +27,7 @@ declare const SomeElse_base: ServiceMap.OpaqueClass<SomeElse, "SomeElse", {
27
27
  };
28
28
  export declare class SomeElse extends SomeElse_base {
29
29
  }
30
- declare const SomeService_base: ServiceMap.OpaqueClass<SomeService, "SomeService", {
30
+ declare const SomeService_base: Context.OpaqueClass<SomeService, "SomeService", {
31
31
  a: number;
32
32
  }> & {
33
33
  readonly make: Effect.Effect<{
@@ -101,10 +101,19 @@ declare const Test_base: RpcX.RpcMiddleware.TagClass<Test, "Test", {
101
101
  export declare class Test extends Test_base {
102
102
  }
103
103
  export declare const TestLive: Layer.Layer<Test, never, never>;
104
- declare const CustomError1_base: S.ErrorClass<CustomError1, S.TaggedStruct<"CustomError1", {}>, import("effect/Cause").YieldableError>;
104
+ declare const Counter_base: Context.OpaqueClass<Counter, "Counter", {
105
+ a: number;
106
+ }> & {
107
+ readonly make: Effect.Effect<{
108
+ a: number;
109
+ }, never, never>;
110
+ };
111
+ export declare class Counter extends Counter_base {
112
+ }
113
+ declare const CustomError1_base: import("effect/Schema").Class<CustomError1, S.TaggedStruct<"CustomError1", {}>, import("effect/Cause").YieldableError>;
105
114
  export declare class CustomError1 extends CustomError1_base {
106
115
  }
107
- declare const CustomError2_base: S.ErrorClass<CustomError2, S.TaggedStruct<"CustomError2", {}>, import("effect/Cause").YieldableError>;
116
+ declare const CustomError2_base: import("effect/Schema").Class<CustomError2, S.TaggedStruct<"CustomError2", {}>, import("effect/Cause").YieldableError>;
108
117
  export declare class CustomError2 extends CustomError2_base {
109
118
  }
110
119
  export {};
@@ -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,CAAC,EAAS,MAAM,YAAY,CAAA;AAC7D,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,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, S, Scope } from "effect-app";
2
2
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
3
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")({
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXBELE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBMkIsYUFBYSxDQUFDLENBQ3pGLENBQUMsQ0FBQyxLQUFLLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDLENBQ0g7Q0FDQTtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQy9GLE1BQU0sT0FBTyxRQUFTLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQzNHLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtB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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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAalF,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 +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,EAAsC,cAAc,EAA4C,MAAM,YAAY,CAAA;AAQzH,eAAO,MAAM,EAAE,6CAWb,CAAA"}
@@ -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,CAAC,EAAE,MAAM,YAAY,CAAA;AAC9D,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 +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,yIAgByB,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,CAAC,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAGpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,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;;;;;;;;;;oCAGmB,CAAA;AAGnC,qBAAa,oBAAqB,SAAQ,UAAU;CAAG;;;;;;;;;;;;AAEvD,cAAM,UAAW,SAAQ,eAKkB;CACzC;AAsCF,eAAO,MAAM,OAAO,iEAMhB,CAAA;AAgBJ,eAAO,MAAM,YAAY,2HAItB,CAAA;AAEH,eAAO,MAAM,YAAY,yIAgB2B,CAAA"}
package/test/fixtures.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { Effect, Layer, S, Scope, ServiceMap } from "effect-app"
1
+ import { Context, Effect, Layer, S, Scope } from "effect-app"
2
2
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
3
3
  import { RpcContextMap, RpcX } from "effect-app/rpc"
4
- import { TaggedError } from "effect-app/Schema"
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,7 +1,8 @@
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"
@@ -11,7 +12,7 @@ import { memFilter, MemoryStoreLive } from "../src/Store/Memory.js"
11
12
  import { SomeService } from "./fixtures.js"
12
13
 
13
14
  const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
14
- const num = S.Struct({ _tag: S.Literal("number"), value: S.Number })
15
+ const num = S.Struct({ _tag: S.Literal("number"), value: S.Finite })
15
16
  const someUnion = S.Union([str, num])
16
17
 
17
18
  export class Something extends S.Class<Something>("Something")({
@@ -19,7 +20,7 @@ export class Something extends S.Class<Something>("Something")({
19
20
  displayName: S.NonEmptyString255,
20
21
  name: S.NullOr(S.NonEmptyString255).withDefault,
21
22
  n: S.Date.withDefault,
22
- union: someUnion.pipe(S.withDefaultConstructor(() => ({ _tag: "string" as const, value: "hi" })))
23
+ union: someUnion.pipe(S.withConstructorDefault(Effect.succeed({ _tag: "string" as const, value: "hi" })))
23
24
  }) {}
24
25
  export declare namespace Something {
25
26
  // eslint-disable-next-line @typescript-eslint/no-empty-object-type
@@ -99,7 +100,7 @@ it("works", () => {
99
100
  })
100
101
 
101
102
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
102
- class SomethingRepo extends ServiceMap.Service<SomethingRepo>()("SomethingRepo", {
103
+ class SomethingRepo extends Context.Service<SomethingRepo>()("SomethingRepo", {
103
104
  make: Effect.gen(function*() {
104
105
  return yield* makeRepo("Something", Something, {})
105
106
  })
@@ -156,8 +157,6 @@ it("works with repo", () =>
156
157
 
157
158
  expectTypeOf(smtArr).toEqualTypeOf<readonly Something[]>()
158
159
 
159
- console.log(" $$$$$$")
160
- console.log(Struct.pick(["id", "displayName"]))
161
160
  expect(q1).toEqual(items.slice(0, 2).toReversed().map(Struct.pick(["id", "displayName"])))
162
161
  expect(q2).toEqual(items.slice(0, 2).toReversed().map(Struct.pick(["displayName"])))
163
162
  })
@@ -521,8 +520,8 @@ it(
521
520
  const schema = S.Struct({
522
521
  id: S.String,
523
522
  createdAt: S.Date.pipe(
524
- S.withDecodingDefault(() => new Date().toISOString()),
525
- S.withConstructorDefault(() => Option.some(new Date()))
523
+ S.withDecodingDefault(Effect.sync(() => new Date().toISOString())),
524
+ S.withConstructorDefault(Effect.sync(() => new Date()))
526
525
  )
527
526
  })
528
527
  const repo = yield* makeRepo(
@@ -534,8 +533,8 @@ it(
534
533
  const outputSchema = S.Struct({
535
534
  id: S.Literal("123"),
536
535
  createdAt: S.Date.pipe(
537
- S.withDecodingDefault(() => new Date().toISOString()),
538
- S.withConstructorDefault(() => Option.some(new Date()))
536
+ S.withDecodingDefault(Effect.sync(() => new Date().toISOString())),
537
+ S.withConstructorDefault(Effect.sync(() => new Date()))
539
538
  )
540
539
  })
541
540
 
@@ -674,7 +673,7 @@ it("remove null from one constituent of a tagged union", () =>
674
673
 
675
674
  class BB extends S.Class<BB>("BB")({
676
675
  id: S.Literal("BB"),
677
- b: S.NullOr(S.Number)
676
+ b: S.NullOr(S.Finite)
678
677
  }) {}
679
678
 
680
679
  type Union = AA | BB
@@ -984,6 +983,153 @@ it("refine nested union", () =>
984
983
  })
985
984
  .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
986
985
 
986
+ it("find with transformed id", () =>
987
+ Effect
988
+ .gen(function*() {
989
+ const ConfiguratorId = S.NonEmptyString255
990
+
991
+ class PreconfigurationId extends S.Class<PreconfigurationId>("PreconfigurationId")({
992
+ configuratorId: ConfiguratorId,
993
+ label: S.NonEmptyString50
994
+ }) {}
995
+
996
+ const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
997
+ S.decodeTo(
998
+ S.toType(PreconfigurationId),
999
+ SchemaTransformation.transformOrFail({
1000
+ decode: Effect.fnUntraced(function*(value) {
1001
+ const values = value.split("_")
1002
+ const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
1003
+ const configuratorId = yield* S.SchemaParser.decodeUnknownEffect(ConfiguratorId)(values.join("_"))
1004
+ return new PreconfigurationId({ configuratorId, label })
1005
+ }),
1006
+ encode: (id) => Effect.succeed(S.NonEmptyString255(`${id.configuratorId}_${id.label}`))
1007
+ })
1008
+ ),
1009
+ S.revealCodec
1010
+ )
1011
+
1012
+ const Preconfiguration = S.Struct({
1013
+ id: PreconfigurationIdFromString,
1014
+ name: S.String
1015
+ })
1016
+
1017
+ const repo = yield* makeRepo("Preconfiguration", Preconfiguration, { idKey: "id" as const })
1018
+
1019
+ const id = new PreconfigurationId({
1020
+ configuratorId: S.NonEmptyString255("myConfigurator"),
1021
+ label: S.NonEmptyString50("myLabel")
1022
+ })
1023
+ const item = { id, name: "test preconfig" }
1024
+
1025
+ yield* repo.saveAndPublish([item])
1026
+
1027
+ const found = yield* repo.find(id)
1028
+ expect(Option.isSome(found)).toBe(true)
1029
+ expect(Option.getOrThrow(found).name).toBe("test preconfig")
1030
+ expect(Option.getOrThrow(found).id).toEqual(id)
1031
+
1032
+ const notFound = yield* repo.find(
1033
+ new PreconfigurationId({
1034
+ configuratorId: S.NonEmptyString255("other"),
1035
+ label: S.NonEmptyString50("nope")
1036
+ })
1037
+ )
1038
+ expect(Option.isNone(notFound)).toBe(true)
1039
+ })
1040
+ .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
1041
+
1042
+ it("find with transformed id in tagged union", () =>
1043
+ Effect
1044
+ .gen(function*() {
1045
+ const ConfiguratorId = S.NonEmptyString255
1046
+
1047
+ class PreconfigurationId extends S.Class<PreconfigurationId>("PreconfigurationId")({
1048
+ configuratorId: ConfiguratorId,
1049
+ label: S.NonEmptyString50
1050
+ }) {}
1051
+
1052
+ const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
1053
+ S.decodeTo(
1054
+ S.toType(PreconfigurationId),
1055
+ SchemaTransformation.transformOrFail({
1056
+ decode: Effect.fnUntraced(function*(value) {
1057
+ const values = value.split("_")
1058
+ const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
1059
+ const configuratorId = yield* S.SchemaParser.decodeUnknownEffect(ConfiguratorId)(values.join("_"))
1060
+ return new PreconfigurationId({ configuratorId, label })
1061
+ }),
1062
+ encode: (id) => Effect.succeed(S.NonEmptyString255(`${id.configuratorId}_${id.label}`))
1063
+ })
1064
+ ),
1065
+ S.revealCodec
1066
+ )
1067
+
1068
+ class Draft extends S.TaggedClass<Draft>()("Draft", {
1069
+ id: PreconfigurationIdFromString,
1070
+ name: S.String
1071
+ }) {}
1072
+
1073
+ class Published extends S.TaggedClass<Published>()("Published", {
1074
+ id: PreconfigurationIdFromString,
1075
+ name: S.String,
1076
+ publishedAt: S.String
1077
+ }) {}
1078
+
1079
+ class Archived extends S.TaggedClass<Archived>()("Archived", {
1080
+ id: PreconfigurationIdFromString,
1081
+ name: S.String,
1082
+ archivedAt: S.String
1083
+ }) {}
1084
+
1085
+ const Preconfiguration = S.Union([Draft, Published, Archived])
1086
+
1087
+ const repo = yield* makeRepo("Preconfiguration", Preconfiguration, {})
1088
+
1089
+ const id1 = new PreconfigurationId({
1090
+ configuratorId: S.NonEmptyString255("conf1"),
1091
+ label: S.NonEmptyString50("draft1")
1092
+ })
1093
+ const id2 = new PreconfigurationId({
1094
+ configuratorId: S.NonEmptyString255("conf2"),
1095
+ label: S.NonEmptyString50("pub1")
1096
+ })
1097
+ const id3 = new PreconfigurationId({
1098
+ configuratorId: S.NonEmptyString255("conf3"),
1099
+ label: S.NonEmptyString50("arch1")
1100
+ })
1101
+
1102
+ const draft = new Draft({ id: id1, name: "my draft" })
1103
+ const published = new Published({ id: id2, name: "my published", publishedAt: "2024-01-01" })
1104
+ const archived = new Archived({ id: id3, name: "my archived", archivedAt: "2024-06-01" })
1105
+
1106
+ yield* repo.saveAndPublish([draft, published, archived])
1107
+
1108
+ // find each by their PreconfigurationId instance
1109
+ const foundDraft = yield* repo.find(id1)
1110
+ expect(Option.isSome(foundDraft)).toBe(true)
1111
+ expect(Option.getOrThrow(foundDraft)._tag).toBe("Draft")
1112
+ expect(Option.getOrThrow(foundDraft).name).toBe("my draft")
1113
+
1114
+ const foundPublished = yield* repo.find(id2)
1115
+ expect(Option.isSome(foundPublished)).toBe(true)
1116
+ expect(Option.getOrThrow(foundPublished)._tag).toBe("Published")
1117
+
1118
+ const foundArchived = yield* repo.find(id3)
1119
+ expect(Option.isSome(foundArchived)).toBe(true)
1120
+ expect(Option.getOrThrow(foundArchived)._tag).toBe("Archived")
1121
+
1122
+ // not found
1123
+ const notFound = yield* repo.find(
1124
+ new PreconfigurationId({
1125
+ configuratorId: S.NonEmptyString255("nope"),
1126
+ label: S.NonEmptyString50("nope")
1127
+ })
1128
+ )
1129
+ expect(Option.isNone(notFound)).toBe(true)
1130
+ })
1131
+ .pipe(Effect.provide(MemoryStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
1132
+
987
1133
  it("refine union with nested union", () =>
988
1134
  Effect
989
1135
  .gen(function*() {
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "@effect/vitest"
2
- import { Array, Config, Effect, flow, Layer, ManagedRuntime, Redacted, References, Result, S, ServiceMap } from "effect-app"
2
+ import { Array, Config, Effect, flow, Layer, ManagedRuntime, Redacted, References, Result, S, Context } from "effect-app"
3
3
  import { LogLevels } from "effect-app/utils"
4
4
  import { setupRequestContextFromCurrent } from "../src/api/setupRequest.js"
5
5
  import { and, or, project, where, whereEvery, whereSome } from "../src/Model/query.js"
@@ -24,7 +24,7 @@ class Something extends S.Class<Something>("Something")({
24
24
  id: S.String,
25
25
  name: S.String,
26
26
  description: S.String,
27
- items: S.Array(S.Struct({ id: S.String, value: S.Number, description: S.String }))
27
+ items: S.Array(S.Struct({ id: S.String, value: S.Finite, description: S.String }))
28
28
  }) {}
29
29
 
30
30
  const items = [
@@ -49,7 +49,7 @@ const items = [
49
49
  ]
50
50
 
51
51
  // @effect-diagnostics-next-line missingEffectServiceDependency:off
52
- class SomethingRepo extends ServiceMap.Service<SomethingRepo>()(
52
+ class SomethingRepo extends Context.Service<SomethingRepo>()(
53
53
  "SomethingRepo",
54
54
  {
55
55
  make: Effect.gen(function*() {
@@ -83,21 +83,23 @@ class SomethingRepo extends ServiceMap.Service<SomethingRepo>()(
83
83
  .layer
84
84
  .pipe(
85
85
  Layer.provide(
86
- Effect.gen(function*() {
87
- const url = yield* Config.redacted("STORAGE_URL").pipe(
88
- Config.withDefault(
89
- Redacted.make(
90
- // the emulator doesn't implement array projections :/ so you need an actual cloud instance!
91
- "AccountEndpoint=http://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
86
+ Effect
87
+ .gen(function*() {
88
+ const url = yield* Config.redacted("STORAGE_URL").pipe(
89
+ Config.withDefault(
90
+ Redacted.make(
91
+ // the emulator doesn't implement array projections :/ so you need an actual cloud instance!
92
+ "AccountEndpoint=http://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
93
+ )
92
94
  )
93
95
  )
94
- )
95
- return CosmosStoreLayer({
96
- dbName: "test",
97
- prefix: "",
98
- url
96
+ return CosmosStoreLayer({
97
+ dbName: "test",
98
+ prefix: "",
99
+ url
100
+ })
99
101
  })
100
- }).pipe(Layer.unwrap)
102
+ .pipe(Layer.unwrap)
101
103
  )
102
104
  )
103
105
  }
@@ -107,7 +109,7 @@ describe("select first-level array fields", () => {
107
109
  .gen(function*() {
108
110
  const repo = yield* SomethingRepo
109
111
 
110
- const projected = S.Struct({ name: S.String, items: S.Array(S.Struct({ id: S.String, value: S.Number })) })
112
+ const projected = S.Struct({ name: S.String, items: S.Array(S.Struct({ id: S.String, value: S.Finite })) })
111
113
 
112
114
  // ok crazy lol, "value" is a reserved word in CosmosDB, so we have to use t["value"] as a field name instead of t.value
113
115
  const items = yield* repo.queryRaw(projected, {
@@ -159,7 +161,7 @@ describe("select first-level array fields", () => {
159
161
  .pipe(Effect.provide(SomethingRepo.Test), rt.runPromise))
160
162
  })
161
163
 
162
- const projected = S.Struct({ name: S.String, items: S.Array(S.Struct({ id: S.String, value: S.Number })) })
164
+ const projected = S.Struct({ name: S.String, items: S.Array(S.Struct({ id: S.String, value: S.Finite })) })
163
165
 
164
166
  const expected = [
165
167
  {
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, expectTypeOf, it } from "@effect/vitest"
2
- import { Effect, Layer, Result, S, ServiceMap } from "effect-app"
2
+ import { Context, Effect, Layer, Result, S } from "effect-app"
3
3
  import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
4
4
  import { HttpHeaders } from "effect-app/http"
5
5
  import * as RpcX from "effect-app/rpc"
@@ -63,11 +63,12 @@ const testSuite = (_mw: typeof middleware3) =>
63
63
  "works",
64
64
  Effect.fn(function*() {
65
65
  const defaultOpts = {
66
+ client: null as any, // TODO?
66
67
  headers: HttpHeaders.fromRecordUnsafe({}),
67
68
  payload: { _tag: "Test" },
68
69
  clientId: 0,
69
70
  requestId: "test-id" as any,
70
- rpc: { ...TestRpc, annotations: ServiceMap.make(_mw.requestContext, {}) }
71
+ rpc: { ...TestRpc, annotations: Context.make(_mw.requestContext, {}) }
71
72
  }
72
73
  const next = Effect.void as unknown as Effect.Effect<SuccessValue, unhandled, never>
73
74
  const layer = _mw.layer.pipe(
@@ -89,7 +90,7 @@ const testSuite = (_mw: typeof middleware3) =>
89
90
  headers: HttpHeaders.fromRecordUnsafe({ "x-user": "test-user", "x-is-manager": "true" }),
90
91
  rpc: {
91
92
  ...defaultOpts.rpc,
92
- annotations: ServiceMap.make(_mw.requestContext, { requireRoles: ["manager"] })
93
+ annotations: Context.make(_mw.requestContext, { requireRoles: ["manager"] })
93
94
  }
94
95
  })
95
96
  )
@@ -127,7 +128,7 @@ const testSuite = (_mw: typeof middleware3) =>
127
128
  Object.assign({ ...defaultOpts }, {
128
129
  rpc: {
129
130
  ...defaultOpts.rpc,
130
- annotations: ServiceMap.make(_mw.requestContext, { requireRoles: ["manager"] })
131
+ annotations: Context.make(_mw.requestContext, { requireRoles: ["manager"] })
131
132
  }
132
133
  })
133
134
  )
@@ -153,7 +154,7 @@ const testSuite = (_mw: typeof middleware3) =>
153
154
  {
154
155
  rpc: {
155
156
  ...defaultOpts.rpc,
156
- annotations: ServiceMap.make(_mw.requestContext, { requireRoles: ["manager"] })
157
+ annotations: Context.make(_mw.requestContext, { requireRoles: ["manager"] })
157
158
  }
158
159
  }
159
160
  )