effect-app 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 (139) hide show
  1. package/CHANGELOG.md +313 -0
  2. package/dist/Config/SecretURL.js +2 -2
  3. package/dist/Config.d.ts +7 -0
  4. package/dist/Config.d.ts.map +1 -0
  5. package/dist/Config.js +6 -0
  6. package/dist/ConfigProvider.d.ts +39 -0
  7. package/dist/ConfigProvider.d.ts.map +1 -0
  8. package/dist/ConfigProvider.js +42 -0
  9. package/dist/Context.d.ts +40 -0
  10. package/dist/Context.d.ts.map +1 -0
  11. package/dist/Context.js +66 -0
  12. package/dist/Effect.d.ts +8 -7
  13. package/dist/Effect.d.ts.map +1 -1
  14. package/dist/Effect.js +3 -2
  15. package/dist/Layer.d.ts +5 -4
  16. package/dist/Layer.d.ts.map +1 -1
  17. package/dist/Layer.js +1 -1
  18. package/dist/Operations.d.ts +61 -25
  19. package/dist/Operations.d.ts.map +1 -1
  20. package/dist/Pure.d.ts +2 -2
  21. package/dist/Pure.d.ts.map +1 -1
  22. package/dist/Pure.js +13 -13
  23. package/dist/Schema/Class.d.ts +39 -1
  24. package/dist/Schema/Class.d.ts.map +1 -1
  25. package/dist/Schema/Class.js +89 -12
  26. package/dist/Schema/SpecialJsonSchema.d.ts +21 -0
  27. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  28. package/dist/Schema/SpecialJsonSchema.js +59 -0
  29. package/dist/Schema/SpecialOpenApi.d.ts +32 -0
  30. package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
  31. package/dist/Schema/SpecialOpenApi.js +123 -0
  32. package/dist/Schema/brand.d.ts +8 -5
  33. package/dist/Schema/brand.d.ts.map +1 -1
  34. package/dist/Schema/brand.js +1 -1
  35. package/dist/Schema/email.d.ts.map +1 -1
  36. package/dist/Schema/email.js +9 -4
  37. package/dist/Schema/ext.d.ts +81 -45
  38. package/dist/Schema/ext.d.ts.map +1 -1
  39. package/dist/Schema/ext.js +94 -49
  40. package/dist/Schema/moreStrings.d.ts +6 -6
  41. package/dist/Schema/moreStrings.d.ts.map +1 -1
  42. package/dist/Schema/moreStrings.js +14 -9
  43. package/dist/Schema/numbers.d.ts +11 -11
  44. package/dist/Schema/numbers.d.ts.map +1 -1
  45. package/dist/Schema/numbers.js +10 -9
  46. package/dist/Schema/phoneNumber.d.ts.map +1 -1
  47. package/dist/Schema/phoneNumber.js +8 -3
  48. package/dist/Schema/strings.d.ts +4 -4
  49. package/dist/Schema/strings.d.ts.map +1 -1
  50. package/dist/Schema.d.ts +22 -55
  51. package/dist/Schema.d.ts.map +1 -1
  52. package/dist/Schema.js +43 -64
  53. package/dist/client/apiClientFactory.d.ts +3 -3
  54. package/dist/client/apiClientFactory.d.ts.map +1 -1
  55. package/dist/client/apiClientFactory.js +14 -15
  56. package/dist/client/errors.d.ts +17 -9
  57. package/dist/client/errors.d.ts.map +1 -1
  58. package/dist/client/errors.js +35 -10
  59. package/dist/client/makeClient.d.ts +13 -12
  60. package/dist/client/makeClient.d.ts.map +1 -1
  61. package/dist/client/makeClient.js +5 -2
  62. package/dist/http/Request.d.ts.map +1 -1
  63. package/dist/http/Request.js +5 -5
  64. package/dist/ids.d.ts +3 -3
  65. package/dist/ids.d.ts.map +1 -1
  66. package/dist/ids.js +3 -2
  67. package/dist/index.d.ts +3 -8
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +4 -9
  70. package/dist/middleware.d.ts +2 -2
  71. package/dist/middleware.d.ts.map +1 -1
  72. package/dist/middleware.js +3 -3
  73. package/dist/rpc/MiddlewareMaker.d.ts +4 -3
  74. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  75. package/dist/rpc/MiddlewareMaker.js +7 -6
  76. package/dist/rpc/RpcContextMap.d.ts +2 -2
  77. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  78. package/dist/rpc/RpcContextMap.js +4 -4
  79. package/dist/rpc/RpcMiddleware.d.ts +4 -3
  80. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  81. package/dist/rpc/RpcMiddleware.js +1 -1
  82. package/dist/utils/gen.d.ts +1 -1
  83. package/dist/utils/gen.d.ts.map +1 -1
  84. package/dist/utils/logger.d.ts +2 -2
  85. package/dist/utils/logger.d.ts.map +1 -1
  86. package/dist/utils/logger.js +3 -3
  87. package/dist/utils.d.ts +18 -0
  88. package/dist/utils.d.ts.map +1 -1
  89. package/dist/utils.js +24 -5
  90. package/package.json +29 -17
  91. package/src/Config/SecretURL.ts +1 -1
  92. package/src/Config.ts +14 -0
  93. package/src/ConfigProvider.ts +48 -0
  94. package/src/{ServiceMap.ts → Context.ts} +57 -64
  95. package/src/Effect.ts +11 -9
  96. package/src/Layer.ts +5 -4
  97. package/src/Pure.ts +17 -18
  98. package/src/Schema/Class.ts +114 -16
  99. package/src/Schema/SpecialJsonSchema.ts +69 -0
  100. package/src/Schema/SpecialOpenApi.ts +130 -0
  101. package/src/Schema/brand.ts +13 -7
  102. package/src/Schema/email.ts +10 -2
  103. package/src/Schema/ext.ts +182 -80
  104. package/src/Schema/moreStrings.ts +20 -10
  105. package/src/Schema/numbers.ts +9 -8
  106. package/src/Schema/phoneNumber.ts +8 -1
  107. package/src/Schema.ts +79 -103
  108. package/src/client/apiClientFactory.ts +18 -18
  109. package/src/client/errors.ts +46 -12
  110. package/src/client/makeClient.ts +32 -12
  111. package/src/http/Request.ts +7 -4
  112. package/src/ids.ts +3 -2
  113. package/src/index.ts +3 -11
  114. package/src/middleware.ts +2 -2
  115. package/src/rpc/MiddlewareMaker.ts +8 -7
  116. package/src/rpc/RpcContextMap.ts +6 -5
  117. package/src/rpc/RpcMiddleware.ts +5 -4
  118. package/src/utils/gen.ts +1 -1
  119. package/src/utils/logger.ts +2 -2
  120. package/src/utils.ts +26 -4
  121. package/test/dist/moreStrings.test.d.ts.map +1 -0
  122. package/test/dist/rpc.test.d.ts.map +1 -1
  123. package/test/dist/secretURL.test.d.ts.map +1 -0
  124. package/test/dist/special.test.d.ts.map +1 -0
  125. package/test/moreStrings.test.ts +17 -0
  126. package/test/rpc.test.ts +26 -5
  127. package/test/schema.test.ts +396 -3
  128. package/test/secretURL.test.ts +157 -0
  129. package/test/special.test.ts +732 -0
  130. package/test/utils.test.ts +1 -1
  131. package/tsconfig.base.json +0 -1
  132. package/tsconfig.json +0 -1
  133. package/dist/ServiceMap.d.ts +0 -44
  134. package/dist/ServiceMap.d.ts.map +0 -1
  135. package/dist/ServiceMap.js +0 -91
  136. package/dist/Struct.d.ts +0 -44
  137. package/dist/Struct.d.ts.map +0 -1
  138. package/dist/Struct.js +0 -29
  139. package/src/Struct.ts +0 -54
package/dist/utils.js CHANGED
@@ -1,9 +1,9 @@
1
1
  /* eslint-disable @typescript-eslint/no-unsafe-function-type */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  /* eslint-disable @typescript-eslint/no-redundant-type-constituents */
4
- import { Effect, Exit, Fiber, Option, Record } from "effect";
4
+ import { Cause, Effect, Exit, Fiber, Option, Record } from "effect";
5
5
  import { dual } from "effect/Function";
6
- import { isFunction } from "effect/Predicate";
6
+ import { isFunction, isObject } from "effect/Predicate";
7
7
  import * as Result from "effect/Result";
8
8
  import { identity, pipe } from "./Function.js";
9
9
  // codegen:start {preset: barrel, include: ./utils/*.ts, nodir: false }
@@ -370,8 +370,8 @@ export const runtimeFiberAsPromise = (fiber, signal) => {
370
370
  resolve(exit.value);
371
371
  }
372
372
  else {
373
- // errors really should be of type Error, so we wrap in FiberFailure just as default Effect
374
- reject(exit.cause);
373
+ // eslint-disable-next-line
374
+ reject(Cause.squash(exit.cause));
375
375
  }
376
376
  }));
377
377
  };
@@ -387,4 +387,23 @@ export const wrapEffect = (m) => {
387
387
  }
388
388
  return () => Effect.succeed(m);
389
389
  };
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0RBQStEO0FBQy9ELHVEQUF1RDtBQUN2RCxzRUFBc0U7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDNUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUc5Qyx1RUFBdUU7QUFDdkUsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWM7QUFFZCxjQUFjLGNBQWMsQ0FBQTtBQUU1QixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQW1HbkQsU0FBUyxHQUFHLENBQUMsR0FBUSxFQUFFLElBQVMsRUFBRSxZQUFZLEdBQUcsU0FBUztJQUN4RCwyRkFBMkY7SUFDM0YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFXLEVBQUUsRUFBRSxDQUM3QixNQUFNO1NBQ0gsU0FBUztTQUNULEtBQUs7U0FDTCxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2YsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcs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
390
+ const genConstructor = (function* () { }).constructor;
391
+ /**
392
+ * @example
393
+ * ```ts
394
+ * import { Utils } from "effect"
395
+ *
396
+ * function* generatorFn() {
397
+ * yield 1
398
+ * yield 2
399
+ * }
400
+ *
401
+ * console.log(Utils.isGeneratorFunction(generatorFn)) // true
402
+ * console.log(Utils.isGeneratorFunction(() => {})) // false
403
+ * ```
404
+ *
405
+ * @category predicates
406
+ * @since 3.11.0
407
+ */
408
+ export const isGeneratorFunction = (u) => isObject(u) && u.constructor === genConstructor;
409
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0RBQStEO0FBQy9ELHVEQUF1RDtBQUN2RCxzRUFBc0U7QUFDdEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBRXZDLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRzlDLHVFQUF1RTtBQUN2RSxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYztBQUVkLGNBQWMsY0FBYyxDQUFBO0FBRTVCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBbUduRCxTQUFTLEdBQUcsQ0FBQyxHQUFRLEVBQUUsSUFBUyxFQUFFLFlBQVksR0FBRyxTQUFTO0lBQ3hELDJGQUEyRjtJQUMzRixNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQVcsRUFBRSxFQUFFLENBQzdCLE1BQU07U0FDSCxTQUFTO1NBQ1QsS0FBSztTQUNMLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO1NBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUM7U0FDZixNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcs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
package/package.json CHANGED
@@ -1,31 +1,31 @@
1
1
  {
2
2
  "name": "effect-app",
3
- "version": "4.0.0-beta.7",
3
+ "version": "4.0.0-beta.71",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
7
7
  "@tsconfig/strictest": "^2.0.8",
8
8
  "date-fns": "^4.1.0",
9
- "nanoid": "^5.1.6",
9
+ "nanoid": "^5.1.7",
10
10
  "path-parser": "^6.1.0",
11
11
  "query-string": "^9.3.1",
12
12
  "ts-pattern": "^5.9.0",
13
13
  "ts-toolbelt": "^9.6.0",
14
14
  "uuid": "^13.0.0",
15
- "validator": "^13.15.26"
15
+ "validator": "^13.15.35"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@faker-js/faker": "^8.4.1",
19
- "@types/node": "25.3.3",
19
+ "@types/node": "25.5.2",
20
20
  "@types/uuid": "^11.0.0",
21
21
  "@types/validator": "^13.15.10",
22
- "fast-check": "~4.5.3",
23
- "typescript": "~5.9.3",
24
- "vitest": "^4.0.18",
25
- "@effect-app/eslint-shared-config": "0.5.7-beta.1"
22
+ "fast-check": "~4.6.0",
23
+ "typescript": "~6.0.2",
24
+ "vitest": "^4.1.3",
25
+ "@effect-app/eslint-shared-config": "0.5.7-beta.7"
26
26
  },
27
27
  "peerDependencies": {
28
- "effect": "^4.0.0-beta.25"
28
+ "effect": "^4.0.0-beta.46"
29
29
  },
30
30
  "typesVersions": {
31
31
  "*": {
@@ -47,10 +47,22 @@
47
47
  "types": "./dist/Chunk.d.ts",
48
48
  "default": "./dist/Chunk.js"
49
49
  },
50
+ "./Config": {
51
+ "types": "./dist/Config.d.ts",
52
+ "default": "./dist/Config.js"
53
+ },
50
54
  "./Config/SecretURL": {
51
55
  "types": "./dist/Config/SecretURL.d.ts",
52
56
  "default": "./dist/Config/SecretURL.js"
53
57
  },
58
+ "./ConfigProvider": {
59
+ "types": "./dist/ConfigProvider.d.ts",
60
+ "default": "./dist/ConfigProvider.js"
61
+ },
62
+ "./Context": {
63
+ "types": "./dist/Context.d.ts",
64
+ "default": "./dist/Context.js"
65
+ },
54
66
  "./Effect": {
55
67
  "types": "./dist/Effect.d.ts",
56
68
  "default": "./dist/Effect.js"
@@ -99,6 +111,14 @@
99
111
  "types": "./dist/Schema/Methods.d.ts",
100
112
  "default": "./dist/Schema/Methods.js"
101
113
  },
114
+ "./Schema/SpecialJsonSchema": {
115
+ "types": "./dist/Schema/SpecialJsonSchema.d.ts",
116
+ "default": "./dist/Schema/SpecialJsonSchema.js"
117
+ },
118
+ "./Schema/SpecialOpenApi": {
119
+ "types": "./dist/Schema/SpecialOpenApi.d.ts",
120
+ "default": "./dist/Schema/SpecialOpenApi.js"
121
+ },
102
122
  "./Schema/brand": {
103
123
  "types": "./dist/Schema/brand.d.ts",
104
124
  "default": "./dist/Schema/brand.js"
@@ -131,18 +151,10 @@
131
151
  "types": "./dist/Schema/strings.d.ts",
132
152
  "default": "./dist/Schema/strings.js"
133
153
  },
134
- "./ServiceMap": {
135
- "types": "./dist/ServiceMap.d.ts",
136
- "default": "./dist/ServiceMap.js"
137
- },
138
154
  "./Set": {
139
155
  "types": "./dist/Set.d.ts",
140
156
  "default": "./dist/Set.js"
141
157
  },
142
- "./Struct": {
143
- "types": "./dist/Struct.d.ts",
144
- "default": "./dist/Struct.js"
145
- },
146
158
  "./TypeTest": {
147
159
  "types": "./dist/TypeTest.d.ts",
148
160
  "default": "./dist/TypeTest.js"
@@ -73,5 +73,5 @@ export const value: (self: SecretURL) => string = internal.value
73
73
  export const unsafeWipe: (self: SecretURL) => void = internal.unsafeWipe
74
74
 
75
75
  export const secretURL = (name?: string): Config.Config<SecretURL> => {
76
- return Config.map(Config.string(name), fromString)
76
+ return Config.map(Config.nonEmptyString(name), fromString)
77
77
  }
package/src/Config.ts ADDED
@@ -0,0 +1,14 @@
1
+ import { type Config, make } from "effect/Config"
2
+ import { dual } from "effect/Function"
3
+
4
+ import * as ConfigProvider from "./ConfigProvider.js"
5
+
6
+ export const nested: {
7
+ (name: string): <A>(self: Config<A>) => Config<A>
8
+ <A>(self: Config<A>, name: string): Config<A>
9
+ } = dual(
10
+ 2,
11
+ <A>(self: Config<A>, name: string): Config<A> => make((provider) => self.parse(ConfigProvider.nested(provider, name)))
12
+ )
13
+
14
+ export * from "effect/Config"
@@ -0,0 +1,48 @@
1
+ import { type ConfigProvider, make, type Path } from "effect/ConfigProvider"
2
+ import { dual } from "effect/Function"
3
+
4
+ /**
5
+ * Scopes a provider so that all lookups are prefixed with the given path
6
+ * segments.
7
+ *
8
+ * When to use:
9
+ * - Namespacing config under a prefix like `"app"` or `"database"`.
10
+ * - Reusing the same provider shape for multiple sub-configs.
11
+ *
12
+ * Accepts a single string or a full `Path` array. The prefix is prepended
13
+ * *after* any `mapInput` transformation runs, so ordering matters when
14
+ * composing with {@link mapInput} or {@link constantCase}.
15
+ *
16
+ * Supports both data-last and data-first calling conventions.
17
+ *
18
+ * **Example** (Nesting under a prefix)
19
+ *
20
+ * ```ts
21
+ * import { ConfigProvider } from "effect"
22
+ *
23
+ * const provider = ConfigProvider.fromEnv({
24
+ * env: { APP_HOST: "localhost", APP_PORT: "3000" }
25
+ * })
26
+ *
27
+ * // Lookups for ["HOST"] now resolve to ["APP", "HOST"]
28
+ * const scoped = ConfigProvider.nested(provider, "APP")
29
+ * ```
30
+ *
31
+ * @see {@link mapInput} – for arbitrary path transformations
32
+ *
33
+ * @category Combinators
34
+ * @since 4.0.0
35
+ */
36
+ export const nested: {
37
+ (prefix: string | Path): (self: ConfigProvider) => ConfigProvider
38
+ (self: ConfigProvider, prefix: string | Path): ConfigProvider
39
+ } = dual(
40
+ 2,
41
+ (self: ConfigProvider, prefix: string | Path): ConfigProvider => {
42
+ let path: Path = typeof prefix === "string" ? [prefix] : prefix
43
+ if (self.mapInput) path = self.mapInput(path)
44
+ return make(self.get, self.mapInput, self.prefix ? [...self.prefix, ...path] : path)
45
+ }
46
+ )
47
+
48
+ export * from "effect/ConfigProvider"
@@ -1,20 +1,16 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /**
3
- * We're doing the long way around here with assignTag, TagBase & TagBaseTagged,
4
- * because there's a typescript compiler issue where it will complain about Equal.symbol, and Hash.symbol not being accessible.
5
- * https://github.com/microsoft/TypeScript/issues/52644
6
- */
7
2
 
8
3
  import { type Effect, Layer, type Scope, type Types } from "effect"
9
- import * as ServiceMap from "effect/ServiceMap"
10
- import { Yieldable } from "./Effect.js"
4
+ import * as CTX from "effect/Context"
5
+ import { type Yieldable } from "./Effect.js"
11
6
 
12
- export * from "effect/ServiceMap"
7
+ export * from "effect/Context"
13
8
 
14
- export interface Opaque<Self extends object, in out Shape extends object> extends ServiceMap.Key<Self, Self>, Yieldable<Opaque<Self, Shape>, Self, never, Self> {
15
- // temp while sorting out https://github.com/Effect-TS/effect-smol/pull/1534
16
- of(self: Shape): Self
17
- serviceMap(self: Shape): ServiceMap.ServiceMap<Self>
9
+ export interface Opaque<Self extends object, in out Shape extends object>
10
+ extends CTX.Key<Self, Self>, Yieldable<Opaque<Self, Shape>, Self, never, Self>
11
+ {
12
+ of(this: void, self: Shape): Self
13
+ serviceMap(self: Shape): CTX.Context<Self>
18
14
  // a version that leverages the Shape -> Self conversion
19
15
  toLayer: <E, R>(
20
16
  eff: Effect.Effect<Shape, E, R>
@@ -24,11 +20,11 @@ export interface Opaque<Self extends object, in out Shape extends object> extend
24
20
  }
25
21
 
26
22
  // export interface OpaqueMake<Self extends object, in out Shape extends object, E, R>
27
- // extends ServiceMap.Service<Self, Self>
23
+ // extends CTX.Service<Self, Self>
28
24
  // {
29
25
  // // temp while sorting out https://github.com/Effect-TS/effect-smol/pull/1534
30
26
  // of(self: Shape): Self
31
- // serviceMap2(self: Shape): ServiceMap.ServiceMap<Self>
27
+ // serviceMap2(self: Shape): CTX.Context<Self>
32
28
  // // a version that leverages the Shape -> Self conversion
33
29
  // toLayer: {
34
30
  // <E, R>(
@@ -43,7 +39,7 @@ export function assignTag<Identifier extends object, Shape extends object = Iden
43
39
  creationError?: Error
44
40
  ) {
45
41
  return <S extends object>(cls: S): S & Opaque<Identifier, Shape> => {
46
- const tag = ServiceMap.Service<Identifier, Shape>(key)
42
+ const tag = CTX.Service<Identifier, Shape>(key)
47
43
  let fields = tag
48
44
  if (Reflect.ownKeys(cls).includes("key")) {
49
45
  const { key, ...rest } = tag
@@ -66,54 +62,51 @@ export function assignTag<Identifier extends object, Shape extends object = Iden
66
62
  }
67
63
  }
68
64
 
69
- export type ServiceAcessorShape<Self, Type> = Type extends Record<PropertyKey, any> ? {
70
- [
71
- k in keyof Type as Type[k] extends ((...args: [...infer Args]) => infer Ret)
72
- ? ((...args: Readonly<Args>) => Ret) extends Type[k] ? k : never
73
- : k
74
- ]: Type[k] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R>
75
- ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R>
76
- : Type[k] extends (...args: [...infer Args]) => infer A
77
- ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self>
78
- : Type[k] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R>
79
- : Effect.Effect<Type[k], never, Self>
80
- }
81
- : {}
65
+ /** Accessor for a service method that returns a plain value. Wraps via `useSync`. */
66
+ export const accessFn = <
67
+ Self extends object,
68
+ Shape extends Record<PropertyKey, any>,
69
+ K extends keyof Shape
70
+ >(
71
+ Tag: Opaque<Self, Shape>,
72
+ key: K
73
+ ): Shape[K] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self>
74
+ : never => ((...args: Array<any>) => Tag.useSync((s: any) => s[key](...args))) as any
82
75
 
83
- /**
84
- * Only use this in very specific cases where using dependencies directly is prefered, like inside command handlers.
85
- */
86
- export const proxify = <T extends object>(Tag: T) =>
87
- <Self, Shape>():
88
- & T
89
- & ServiceAcessorShape<Self, Shape> =>
90
- {
91
- const cache = new Map()
92
- const done = new Proxy(Tag, {
93
- get(_target: any, prop: any, _receiver) {
94
- if (prop === "use") {
95
- // @ts-expect-error abc
96
- return (body) => (Tag as any).use(body)
97
- }
98
- if (prop in Tag) {
99
- return (Tag as any)[prop]
100
- }
101
- if (cache.has(prop)) {
102
- return cache.get(prop)
103
- }
104
- const fn = (...args: Array<any>) => (Tag as any).use((s: any) => s[prop](...args))
105
- const cn = (Tag as any).use((s: any) => s[prop])
106
- // @effect-diagnostics effect/floatingEffect:off
107
- Object.assign(fn, cn)
108
- Object.setPrototypeOf(fn, Object.getPrototypeOf(cn))
109
- cache.set(prop, fn)
110
- return fn
111
- }
112
- })
113
- return done
114
- }
76
+ /** Accessor for a service method that returns an Effect. Delegates via `use`. */
77
+ export const accessEffectFn = <
78
+ Self extends object,
79
+ Shape extends Record<PropertyKey, any>,
80
+ K extends keyof Shape
81
+ >(
82
+ Tag: Opaque<Self, Shape>,
83
+ key: K
84
+ ): Shape[K] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R>
85
+ ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R>
86
+ : never => ((...args: Array<any>) => Tag.use((s: any) => s[key](...args))) as any
115
87
 
116
- export const TypeId = "~ServiceMap.Opaque"
88
+ /** Accessor for a service property (constant). Wraps via `useSync`. */
89
+ export const accessCn = <
90
+ Self extends object,
91
+ Shape extends Record<PropertyKey, any>,
92
+ K extends keyof Shape
93
+ >(
94
+ Tag: Opaque<Self, Shape>,
95
+ key: K
96
+ ): Effect.Effect<Shape[K], never, Self> => Tag.useSync((s) => s[key]) as any
97
+
98
+ /** Accessor for a service property that is an Effect. Delegates via `use`. */
99
+ export const accessEffectCn = <
100
+ Self extends object,
101
+ Shape extends Record<PropertyKey, any>,
102
+ K extends keyof Shape
103
+ >(
104
+ Tag: Opaque<Self, Shape>,
105
+ key: K
106
+ ): Shape[K] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R>
107
+ : never => Tag.use((s: any) => s[key]) as any
108
+
109
+ export const TypeId = "~Context.Opaque"
117
110
 
118
111
  // export function Opaque<const Key extends string>(key: Key) {
119
112
  // return <Identifier extends object, Shape extends object>() => {
@@ -151,7 +144,7 @@ export const Opaque: {
151
144
  id: Identifier,
152
145
  options?: {
153
146
  readonly make: ((...args: Args) => Effect.Effect<Shape, E, R>) | Effect.Effect<Shape, E, R> | undefined
154
- } | undefined
147
+ }
155
148
  ) =>
156
149
  & OpaqueClass<Self, Identifier, Shape>
157
150
  & ([Types.unassigned] extends [R] ? unknown
@@ -178,10 +171,10 @@ export const Opaque: {
178
171
  >
179
172
  & { readonly make: Make }
180
173
  } = () => (id: string, options: any) => {
181
- const svc = ServiceMap.Service()(id, options) as any
174
+ const svc = CTX.Service()(id, options) as any
182
175
  return Object.assign(svc, {
183
176
  toLayer: (eff: Effect.Effect<any, any, any>) => {
184
- return Layer.effect(svc as any, eff)
177
+ return Layer.effect(svc, eff)
185
178
  }
186
179
  })
187
180
  }
package/src/Effect.ts CHANGED
@@ -2,11 +2,12 @@
2
2
  /* eslint-disable prefer-destructuring */
3
3
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
4
 
5
- import { Effect, Option, Ref, type ServiceMap } from "effect"
5
+ import { Effect, Option, Ref } from "effect"
6
6
  import * as Def from "effect/Deferred"
7
7
  import * as Fiber from "effect/Fiber"
8
8
  import type { Scope } from "effect/Scope"
9
9
  import type { Semaphore } from "effect/Semaphore"
10
+ import type * as Context from "./Context.js"
10
11
  import { curry } from "./Function.js"
11
12
  import { typedKeysOf } from "./utils.js"
12
13
 
@@ -116,10 +117,10 @@ export function joinAll<E, A>(fibers: Iterable<Fiber.Fiber<A, E>>): Effect.Effec
116
117
  }
117
118
 
118
119
  type ServiceA<T> = T extends Effect.Effect<infer S, any, any> ? S
119
- : T extends ServiceMap.Service<any, infer S> ? S
120
+ : T extends Context.Service<any, infer S> ? S
120
121
  : never
121
122
  type ServiceR<T> = T extends Effect.Effect<any, any, infer R> ? R
122
- : T extends ServiceMap.Service<infer I, any> ? I
123
+ : T extends Context.Service<infer I, any> ? I
123
124
  : never
124
125
  type ServiceE<T> = T extends Effect.Effect<any, infer E, any> ? E : never
125
126
  // type Values<T> = T extends { [s: string]: infer S } ? ServiceA<S> : never
@@ -144,24 +145,25 @@ export interface EffectUnunified<R, E, A> extends Effect.Effect<R, E, A> {}
144
145
 
145
146
  export type LowerFirst<S extends PropertyKey> = S extends `${infer First}${infer Rest}` ? `${Lowercase<First>}${Rest}`
146
147
  : S
147
- export type LowerServices<T extends Record<string, ServiceMap.Service<any, any> | Effect.Effect<any, any, any>>> = {
148
+ export type LowerServices<T extends Record<string, Context.Service<any, any> | Effect.Effect<any, any, any>>> = {
148
149
  [key in keyof T as LowerFirst<key>]: ServiceA<T[key]>
149
150
  }
150
151
 
151
- export function allLower<T extends Record<string, ServiceMap.Service<any, any> | Effect.Effect<any, any, any>>>(
152
+ export function allLower<T extends Record<string, Context.Service<any, any> | Effect.Effect<any, any, any>>>(
152
153
  services: T
153
154
  ) {
154
155
  return Effect.all(
155
156
  typedKeysOf(services).reduce((prev, cur) => {
156
- const svc = services[cur]
157
- prev[((cur as string)[0]!.toLowerCase() + (cur as string).slice(1)) as unknown as LowerFirst<typeof cur>] = svc // "_id" in svc && svc._id === TagTypeId ? svc : svc
157
+ const svc = services[cur]!
158
+ prev[((cur as string)[0]!.toLowerCase() + (cur as string).slice(1)) as unknown as LowerFirst<typeof cur>] =
159
+ "asEffect" in svc ? svc.asEffect() : svc
158
160
  return prev
159
161
  }, {} as any),
160
162
  { concurrency: "inherit" }
161
163
  ) as any as Effect.Effect<LowerServices<T>, ValuesE<T>, ValuesR<T>>
162
164
  }
163
165
 
164
- export function allLowerWith<T extends Record<string, ServiceMap.Service<any, any> | Effect.Effect<any, any, any>>, A>(
166
+ export function allLowerWith<T extends Record<string, Context.Service<any, any> | Effect.Effect<any, any, any>>, A>(
165
167
  services: T,
166
168
  fn: (services: LowerServices<T>) => A
167
169
  ) {
@@ -169,7 +171,7 @@ export function allLowerWith<T extends Record<string, ServiceMap.Service<any, an
169
171
  }
170
172
 
171
173
  export function allLowerWithEffect<
172
- T extends Record<string, ServiceMap.Service<any, any> | Effect.Effect<any, any, any>>,
174
+ T extends Record<string, Context.Service<any, any> | Effect.Effect<any, any, any>>,
173
175
  R,
174
176
  E,
175
177
  A
package/src/Layer.ts CHANGED
@@ -1,6 +1,7 @@
1
- import { type Array, Effect, Layer, type Scope, type ServiceMap, type Types } from "effect"
1
+ import { type Array, Effect, Layer, type Scope, type Types } from "effect"
2
2
  import { type Yieldable } from "effect/Effect"
3
3
  import { dual } from "effect/Function"
4
+ import type * as Context from "./Context.js"
4
5
  import { type EffectGenUtils } from "./utils/gen.js"
5
6
 
6
7
  export * from "effect/Layer"
@@ -17,7 +18,7 @@ type MakeGenNo<S> = {
17
18
  readonly make: () => Generator<unknown, S>
18
19
  }
19
20
  type MakeErr<Opts> = Opts extends { make: () => any } ? EffectGenUtils.Error<Opts["make"]> : never
20
- type MakeContext<Opts> = Opts extends { make: () => any } ? EffectGenUtils.ServiceMap<Opts["make"]> : never
21
+ type MakeContext<Opts> = Opts extends { make: () => any } ? EffectGenUtils.Context<Opts["make"]> : never
21
22
 
22
23
  type DependenciesOpt = { dependencies?: Array.NonEmptyReadonlyArray<Layer.Any> }
23
24
  type Dependencies = { dependencies: Array.NonEmptyReadonlyArray<Layer.Any> }
@@ -41,12 +42,12 @@ type PackedOrUnpackedLayer<I, Opts> = Opts extends Dependencies ? PackedLayers<I
41
42
 
42
43
  export const make: {
43
44
  <I, S>(
44
- tag: ServiceMap.Service<I, S>
45
+ tag: Context.Service<I, S>
45
46
  ): <Opts extends Make<Types.NoInfer<S>, any, any>>(
46
47
  options: Opts
47
48
  ) => PackedOrUnpackedLayer<I, Opts>
48
49
  <I, S, Opts extends Make<Types.NoInfer<S>, any, any>>(
49
- tag: ServiceMap.Service<I, S>,
50
+ tag: Context.Service<I, S>,
50
51
  options: Opts
51
52
  ): PackedOrUnpackedLayer<I, Opts>
52
53
  } = dual(2, (tag, options) => {