effect-app 4.0.0-beta.13 → 4.0.0-beta.131

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 +503 -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/{ServiceMap.d.ts → Context.d.ts} +14 -18
  10. package/dist/Context.d.ts.map +1 -0
  11. package/dist/Context.js +66 -0
  12. package/dist/Effect.d.ts +8 -9
  13. package/dist/Effect.d.ts.map +1 -1
  14. package/dist/Effect.js +3 -6
  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 +198 -33
  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 +48 -10
  24. package/dist/Schema/Class.d.ts.map +1 -1
  25. package/dist/Schema/Class.js +120 -16
  26. package/dist/Schema/SpecialJsonSchema.d.ts +33 -0
  27. package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
  28. package/dist/Schema/SpecialJsonSchema.js +122 -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 +10 -1
  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 +112 -47
  38. package/dist/Schema/ext.d.ts.map +1 -1
  39. package/dist/Schema/ext.js +115 -53
  40. package/dist/Schema/moreStrings.d.ts +110 -10
  41. package/dist/Schema/moreStrings.d.ts.map +1 -1
  42. package/dist/Schema/moreStrings.js +19 -10
  43. package/dist/Schema/numbers.d.ts +126 -14
  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 +36 -4
  49. package/dist/Schema/strings.d.ts.map +1 -1
  50. package/dist/Schema/strings.js +1 -1
  51. package/dist/Schema.d.ts +74 -55
  52. package/dist/Schema.d.ts.map +1 -1
  53. package/dist/Schema.js +85 -64
  54. package/dist/client/apiClientFactory.d.ts +12 -28
  55. package/dist/client/apiClientFactory.d.ts.map +1 -1
  56. package/dist/client/apiClientFactory.js +16 -17
  57. package/dist/client/clientFor.d.ts +6 -5
  58. package/dist/client/clientFor.d.ts.map +1 -1
  59. package/dist/client/errors.d.ts +18 -9
  60. package/dist/client/errors.d.ts.map +1 -1
  61. package/dist/client/errors.js +35 -10
  62. package/dist/client/makeClient.d.ts +73 -28
  63. package/dist/client/makeClient.d.ts.map +1 -1
  64. package/dist/client/makeClient.js +49 -23
  65. package/dist/http/Request.d.ts.map +1 -1
  66. package/dist/http/Request.js +5 -5
  67. package/dist/ids.d.ts +2 -2
  68. package/dist/ids.d.ts.map +1 -1
  69. package/dist/ids.js +3 -2
  70. package/dist/index.d.ts +3 -7
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +4 -8
  73. package/dist/middleware.d.ts +2 -2
  74. package/dist/middleware.d.ts.map +1 -1
  75. package/dist/middleware.js +3 -3
  76. package/dist/rpc/MiddlewareMaker.d.ts +4 -3
  77. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  78. package/dist/rpc/MiddlewareMaker.js +23 -24
  79. package/dist/rpc/RpcContextMap.d.ts +2 -2
  80. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  81. package/dist/rpc/RpcContextMap.js +4 -4
  82. package/dist/rpc/RpcMiddleware.d.ts +4 -3
  83. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  84. package/dist/rpc/RpcMiddleware.js +1 -1
  85. package/dist/utils/gen.d.ts +1 -1
  86. package/dist/utils/gen.d.ts.map +1 -1
  87. package/dist/utils/logger.d.ts +2 -2
  88. package/dist/utils/logger.d.ts.map +1 -1
  89. package/dist/utils/logger.js +3 -3
  90. package/dist/utils.d.ts +7 -1
  91. package/dist/utils.d.ts.map +1 -1
  92. package/dist/utils.js +8 -2
  93. package/package.json +30 -14
  94. package/src/Config/SecretURL.ts +1 -1
  95. package/src/Config.ts +14 -0
  96. package/src/ConfigProvider.ts +48 -0
  97. package/src/{ServiceMap.ts → Context.ts} +51 -59
  98. package/src/Effect.ts +11 -14
  99. package/src/Layer.ts +5 -4
  100. package/src/Pure.ts +17 -18
  101. package/src/Schema/Class.ts +157 -30
  102. package/src/Schema/SpecialJsonSchema.ts +137 -0
  103. package/src/Schema/SpecialOpenApi.ts +130 -0
  104. package/src/Schema/brand.ts +18 -3
  105. package/src/Schema/email.ts +10 -2
  106. package/src/Schema/ext.ts +196 -87
  107. package/src/Schema/moreStrings.ts +31 -17
  108. package/src/Schema/numbers.ts +14 -13
  109. package/src/Schema/phoneNumber.ts +8 -1
  110. package/src/Schema/strings.ts +4 -4
  111. package/src/Schema.ts +195 -104
  112. package/src/client/apiClientFactory.ts +104 -112
  113. package/src/client/clientFor.ts +6 -1
  114. package/src/client/errors.ts +42 -17
  115. package/src/client/makeClient.ts +150 -61
  116. package/src/http/Request.ts +7 -4
  117. package/src/ids.ts +2 -1
  118. package/src/index.ts +3 -10
  119. package/src/middleware.ts +2 -2
  120. package/src/rpc/MiddlewareMaker.ts +33 -44
  121. package/src/rpc/RpcContextMap.ts +6 -5
  122. package/src/rpc/RpcMiddleware.ts +5 -4
  123. package/src/utils/gen.ts +1 -1
  124. package/src/utils/logger.ts +2 -2
  125. package/src/utils.ts +8 -4
  126. package/test/dist/moreStrings.test.d.ts.map +1 -0
  127. package/test/dist/rpc.test.d.ts.map +1 -1
  128. package/test/dist/secretURL.test.d.ts.map +1 -0
  129. package/test/dist/special.test.d.ts.map +1 -0
  130. package/test/moreStrings.test.ts +17 -0
  131. package/test/rpc.test.ts +30 -6
  132. package/test/schema.test.ts +517 -4
  133. package/test/secretURL.test.ts +157 -0
  134. package/test/special.test.ts +862 -0
  135. package/test/utils.test.ts +2 -2
  136. package/tsconfig.base.json +0 -1
  137. package/tsconfig.json +0 -1
  138. package/dist/ServiceMap.d.ts.map +0 -1
  139. package/dist/ServiceMap.js +0 -91
package/CHANGELOG.md CHANGED
@@ -1,5 +1,508 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 4.0.0-beta.131
4
+
5
+ ## 4.0.0-beta.130
6
+
7
+ ### Patch Changes
8
+
9
+ - ea1bd46: fix: prevent expansion of nominal brands
10
+
11
+ ## 4.0.0-beta.129
12
+
13
+ ## 4.0.0-beta.128
14
+
15
+ ### Patch Changes
16
+
17
+ - 57db551: Split `TaggedRequestFor` into `Query` and `Command` factories, and mark generated request classes with `type: "query" | "command"`.
18
+
19
+ Vue client helpers now expose query-only helpers (`query`, `suspense`, `fetch`) for query requests and mutation-only helpers (`mutate`, `fetch`) for command requests.
20
+
21
+ ## 4.0.0-beta.127
22
+
23
+ ## 4.0.0-beta.126
24
+
25
+ ### Patch Changes
26
+
27
+ - 458bb1b: fix type
28
+
29
+ ## 4.0.0-beta.125
30
+
31
+ ## 4.0.0-beta.124
32
+
33
+ ### Patch Changes
34
+
35
+ - 256ae85: cleanup
36
+
37
+ ## 4.0.0-beta.123
38
+
39
+ ### Patch Changes
40
+
41
+ - 14aba14: fix: clientFor
42
+
43
+ ## 4.0.0-beta.122
44
+
45
+ ### Patch Changes
46
+
47
+ - f052d38: Replace `(...) => Effect.gen` with `Effect.fnUntraced` in `apiClientFactory`.
48
+
49
+ ## 4.0.0-beta.121
50
+
51
+ ### Patch Changes
52
+
53
+ - 5ac46cb: Make `Schema.provide` dual (pipeable)
54
+
55
+ ## 4.0.0-beta.120
56
+
57
+ ### Minor Changes
58
+
59
+ - f21190c: Add `copy` property to `Class` and `TaggedClass` for creating modified instances with updated fields. The `copy` method is cached per-class and supports both object and function-based updates, with pipeline support.
60
+
61
+ ## 4.0.0-beta.119
62
+
63
+ ## 4.0.0-beta.118
64
+
65
+ ### Minor Changes
66
+
67
+ - 08d2e70: Add `concurrency: "unbounded"` parseOptions annotation to Schema constructors (Struct, Array, NonEmptyArray, Record, TaggedStruct, ReadonlySet, ReadonlyMap, Class, TaggedClass) so all encode/decode operations automatically run with unbounded concurrency. Also override `mapFields` on Struct and Class/TaggedClass to preserve the annotation.
68
+
69
+ ### Patch Changes
70
+
71
+ - bd26832: Add nested anyOf flattening to JSON Schema post-processing
72
+ - Update effect packages to 4.0.0-beta.52
73
+
74
+ ## 4.0.0-beta.117
75
+
76
+ ## 4.0.0-beta.116
77
+
78
+ ## 4.0.0-beta.115
79
+
80
+ ## 4.0.0-beta.114
81
+
82
+ ## 4.0.0-beta.113
83
+
84
+ ## 4.0.0-beta.112
85
+
86
+ ## 4.0.0-beta.111
87
+
88
+ ### Patch Changes
89
+
90
+ - ca94edf: fix typo
91
+
92
+ ## 4.0.0-beta.110
93
+
94
+ ## 4.0.0-beta.109
95
+
96
+ ## 4.0.0-beta.108
97
+
98
+ ### Patch Changes
99
+
100
+ - 3e46e7b: allow excess props in openapi schemas
101
+
102
+ ## 4.0.0-beta.107
103
+
104
+ ## 4.0.0-beta.106
105
+
106
+ ## 4.0.0-beta.105
107
+
108
+ ## 4.0.0-beta.104
109
+
110
+ ### Minor Changes
111
+
112
+ - e944bca: Add `generateGuards` and `generateGuardsFor` to `TaggedUnion` / `ExtendTaggedUnion` for property-scoped type guards.
113
+
114
+ - `generateGuards("key")` — generic per-guard, no need to specify the container type
115
+ - `generateGuardsFor<A>()("key")` — curried, fixes `A` for concrete guard signatures
116
+
117
+ Both return `{ is{Tag}, isAnyOf }` guards that narrow the container type by its tagged union property.
118
+
119
+ ## 4.0.0-beta.103
120
+
121
+ ### Minor Changes
122
+
123
+ - 7119320: Add `generateGuards` to `TaggedUnion` / `ExtendTaggedUnion` for generating property-scoped type guards.
124
+
125
+ Usage: `MyUnion.generateGuards<MyType>()("propertyKey")` returns `{ is{Tag}, isAnyOf }` guards that narrow the container type by its tagged union property.
126
+
127
+ ## 4.0.0-beta.102
128
+
129
+ ## 4.0.0-beta.101
130
+
131
+ ## 4.0.0-beta.100
132
+
133
+ ## 4.0.0-beta.99
134
+
135
+ ## 4.0.0-beta.98
136
+
137
+ ## 4.0.0-beta.97
138
+
139
+ ## 4.0.0-beta.96
140
+
141
+ ### Patch Changes
142
+
143
+ - 5615e47: bs
144
+
145
+ ## 4.0.0-beta.95
146
+
147
+ ### Patch Changes
148
+
149
+ - 88838fb: Remove pick/omit customizations from Class/TaggedClass/Struct/TaggedStruct. Use `Struct.pick(X.fields, [...])` from `effect-app` instead.
150
+
151
+ ## 4.0.0-beta.94
152
+
153
+ ## 4.0.0-beta.93
154
+
155
+ ## 4.0.0-beta.92
156
+
157
+ ## 4.0.0-beta.91
158
+
159
+ ### Minor Changes
160
+
161
+ - 738b482: Add pick/omit to Struct and TaggedStruct
162
+
163
+ ## 4.0.0-beta.90
164
+
165
+ ## 4.0.0-beta.89
166
+
167
+ ## 4.0.0-beta.88
168
+
169
+ ## 4.0.0-beta.87
170
+
171
+ ## 4.0.0-beta.86
172
+
173
+ ## 4.0.0-beta.85
174
+
175
+ ## 4.0.0-beta.84
176
+
177
+ ## 4.0.0-beta.83
178
+
179
+ ## 4.0.0-beta.82
180
+
181
+ ## 4.0.0-beta.81
182
+
183
+ ## 4.0.0-beta.80
184
+
185
+ ## 4.0.0-beta.79
186
+
187
+ ### Minor Changes
188
+
189
+ - d16845e: Remove `TaggedRequest` from `makeRpcClient`, now only `TaggedRequestFor` is returned. Remove all legacy `meta.moduleName` support — `id` and `moduleName` are now required on `Req` type. Remove `makeRpcGroup` (use `makeRpcGroupFromRequestsAndModuleName` instead).
190
+
191
+ ## 4.0.0-beta.78
192
+
193
+ ## 4.0.0-beta.77
194
+
195
+ ### Minor Changes
196
+
197
+ - 3613e87: Add `TaggedRequestFor` helper to `makeRpcClient` that curries a `moduleName`, producing request classes with static `id` and `moduleName` properties. This enables passing request classes directly to `makeQueryKey` without going through `clientFor` first. The `clientFor` function no longer requires a `meta` property on the module when requests carry `moduleName`. The meta codegen preset now generates `Req = TaggedRequestFor(moduleName)`. Original `TaggedRequest` remains for backwards compatibility.
198
+
199
+ ## 4.0.0-beta.76
200
+
201
+ ### Patch Changes
202
+
203
+ - a5248a9: use new schema features
204
+ - fac725d: update effect to latest beta
205
+
206
+ ## 4.0.0-beta.75
207
+
208
+ ### Patch Changes
209
+
210
+ - 24f0a5a: rename Literal to Literals, no longer hiding Schema's singular Literal.
211
+
212
+ ## 4.0.0-beta.74
213
+
214
+ ### Patch Changes
215
+
216
+ - 54ec1ef: fix bs
217
+
218
+ ## 4.0.0-beta.73
219
+
220
+ ## 4.0.0-beta.72
221
+
222
+ ### Patch Changes
223
+
224
+ - 0541f0d: fix withDefault types
225
+
226
+ ## 4.0.0-beta.71
227
+
228
+ ### Minor Changes
229
+
230
+ - beae3a0: Remove `withDefaultConstructor` wrapper, use `S.withConstructorDefault` directly with `Effect.succeed`/`Effect.sync`.
231
+
232
+ ## 4.0.0-beta.70
233
+
234
+ ## 4.0.0-beta.69
235
+
236
+ ### Patch Changes
237
+
238
+ - dc465e3: update to latest effect beta
239
+
240
+ ## 4.0.0-beta.68
241
+
242
+ ### Patch Changes
243
+
244
+ - e6f2341: Add SecretURL tests and switch secretURL config to use Config.nonEmptyString
245
+
246
+ ## 4.0.0-beta.67
247
+
248
+ ## 4.0.0-beta.66
249
+
250
+ ### Patch Changes
251
+
252
+ - edc52e4: update
253
+
254
+ ## 4.0.0-beta.65
255
+
256
+ ### Minor Changes
257
+
258
+ - 1f103b2: Replace `proxify` with explicit service accessor helpers: `accessFn`, `accessEffectFn`, `accessCn`, `accessEffectCn`.
259
+
260
+ ### Patch Changes
261
+
262
+ - 31739d7: Fix JSON schema output for Email, Date, PhoneNumber, and Url schemas. The `jsonSchema` annotation key is not recognized by Effect v4's JSON schema generator — use proper v4 annotations (`format`, `description`) and built-in checks (`isMinLength`, `isMaxLength`) instead.
263
+
264
+ ## 4.0.0-beta.64
265
+
266
+ ### Patch Changes
267
+
268
+ - c1a6fdc: fix proxify
269
+
270
+ ## 4.0.0-beta.63
271
+
272
+ ## 4.0.0-beta.62
273
+
274
+ ### Patch Changes
275
+
276
+ - 0b21a02: fix: flatten simple allOf constraints in JSON Schema output for better codegen compatibility
277
+
278
+ ## 4.0.0-beta.61
279
+
280
+ ## 4.0.0-beta.60
281
+
282
+ ## 4.0.0-beta.59
283
+
284
+ ### Patch Changes
285
+
286
+ - cec026d: update packages
287
+
288
+ ## 4.0.0-beta.58
289
+
290
+ ## 4.0.0-beta.57
291
+
292
+ ## 4.0.0-beta.56
293
+
294
+ ## 4.0.0-beta.55
295
+
296
+ ## 4.0.0-beta.54
297
+
298
+ ### Patch Changes
299
+
300
+ - d867272: the return of `Context`
301
+
302
+ ## 4.0.0-beta.53
303
+
304
+ ### Patch Changes
305
+
306
+ - ee9694e: fix type issue?
307
+
308
+ ## 4.0.0-beta.52
309
+
310
+ ### Minor Changes
311
+
312
+ - 6252808: Add `ReadonlySetFromArray` and `ReadonlyMapFromArray` schema transformations that decode from annotated arrays to Set/Map. Update `ReadonlySet` and `ReadonlyMap` to use these internally.
313
+
314
+ ## 4.0.0-beta.51
315
+
316
+ ## 4.0.0-beta.50
317
+
318
+ ## 4.0.0-beta.49
319
+
320
+ ### Patch Changes
321
+
322
+ - e585c9c: fix config nested
323
+
324
+ ## 4.0.0-beta.48
325
+
326
+ ### Patch Changes
327
+
328
+ - 0c88f78: Remove `TaggedError` compatibility re-export, use `TaggedErrorClass` directly
329
+
330
+ ## 4.0.0-beta.47
331
+
332
+ ### Patch Changes
333
+
334
+ - 3365758: workaround effect error messages
335
+
336
+ ## 4.0.0-beta.46
337
+
338
+ ## 4.0.0-beta.45
339
+
340
+ ### Patch Changes
341
+
342
+ - 10b55ff: update packages
343
+
344
+ ## 4.0.0-beta.44
345
+
346
+ ### Patch Changes
347
+
348
+ - a37aa38: Update to effect beta 43
349
+
350
+ ## 4.0.0-beta.43
351
+
352
+ ## 4.0.0-beta.42
353
+
354
+ ## 4.0.0-beta.41
355
+
356
+ ## 4.0.0-beta.40
357
+
358
+ ## 4.0.0-beta.39
359
+
360
+ ### Patch Changes
361
+
362
+ - 10e90d5: fix: TaggedRequest should be an Opaque Schema Class
363
+
364
+ ## 4.0.0-beta.38
365
+
366
+ ### Patch Changes
367
+
368
+ - 0b3e00e: fix bug
369
+
370
+ ## 4.0.0-beta.37
371
+
372
+ ### Patch Changes
373
+
374
+ - 947fe20: fix input date
375
+
376
+ ## 4.0.0-beta.36
377
+
378
+ ## 4.0.0-beta.35
379
+
380
+ ## 4.0.0-beta.34
381
+
382
+ ### Patch Changes
383
+
384
+ - 8c645d5: update to latest effect
385
+
386
+ ## 4.0.0-beta.33
387
+
388
+ ### Patch Changes
389
+
390
+ - 4b95009: use Finite instead of Number
391
+
392
+ ## 4.0.0-beta.32
393
+
394
+ ### Patch Changes
395
+
396
+ - 01d862a: again
397
+
398
+ ## 4.0.0-beta.31
399
+
400
+ ### Patch Changes
401
+
402
+ - 6b6d601: fix ForceVOid
403
+
404
+ ## 4.0.0-beta.30
405
+
406
+ ### Patch Changes
407
+
408
+ - 5ec1f45: fix ForceVoid for real
409
+
410
+ ## 4.0.0-beta.29
411
+
412
+ ### Patch Changes
413
+
414
+ - a899d46: Replace `ForceVoid` in `makeClient` with a typed codec transformation instead of an unsafe cast.
415
+
416
+ ## 4.0.0-beta.28
417
+
418
+ ### Patch Changes
419
+
420
+ - 0099208: Refactor `Pure` helpers to use typed `useSync` calls instead of unsafe casts.
421
+
422
+ ## 4.0.0-beta.27
423
+
424
+ ### Patch Changes
425
+
426
+ - 601a1ff: update effect to 4.0.0-beta.37 and drop the Schema Class disableValidation workaround now that the patched effect schema covers it
427
+
428
+ ## 4.0.0-beta.26
429
+
430
+ ### Patch Changes
431
+
432
+ - 4da28e2: Change `Schema.Class` and `Schema.TaggedClass` wrappers to default constructor options to `{ disableValidation: true }`.
433
+
434
+ This avoids strict class identifier validation by default when constructing wrapper classes (for example passing a compatible view class), while keeping existing behavior when explicit options are provided.
435
+
436
+ ## 4.0.0-beta.25
437
+
438
+ ### Patch Changes
439
+
440
+ - 6282d4b: Update `Effect.allLower` to call `svc.asEffect()` when available, ensuring service entries are normalized before `Effect.all` evaluation.
441
+
442
+ ## 4.0.0-beta.24
443
+
444
+ ### Patch Changes
445
+
446
+ - 32f71bf: Fix `Schema.TaggedUnion(...).tags` extraction for class-based members (for example `TaggedClass`) by using a local AST sentinel walker instead of relying on internal effect APIs.
447
+
448
+ Add tests covering:
449
+
450
+ - `TaggedUnion` with `encodeKeys`-wrapped members
451
+ - `TaggedUnion` with `TaggedClass` members
452
+
453
+ ## 4.0.0-beta.23
454
+
455
+ ### Patch Changes
456
+
457
+ - ea08a79: remove `fields` constraint from TaggedUnion/tags helpers, extract `_tag` via AST walk instead
458
+
459
+ ## 4.0.0-beta.22
460
+
461
+ ## 4.0.0-beta.21
462
+
463
+ ### Patch Changes
464
+
465
+ - 0d349e7: Align effect-app tagged union helpers with Effect v4 by delegating to the native tagged union utilities, exposing v4-style `cases` and `guards`, and preserving the local `tags` helper.
466
+ - 75c72ee: update effect to 4.0.0-beta.36, adapt to Option<A> revert from A | undefined
467
+
468
+ ## 4.0.0-beta.20
469
+
470
+ ### Patch Changes
471
+
472
+ - aa921db: Fix `TaggedRequest` no-config error type inference so requests without a third argument infer the same default error schema as requests with explicit success config.
473
+
474
+ ## 4.0.0-beta.19
475
+
476
+ ### Patch Changes
477
+
478
+ - ffc10a4: Migrate `Schema/ext` context helpers to Effect v4 by implementing `provide` and `contextFromServices` with proper service subtraction across decoding and encoding requirements.
479
+
480
+ ## 4.0.0-beta.18
481
+
482
+ ### Patch Changes
483
+
484
+ - e9dbbdd: Tighten schema helper generics in `Schema/ext.ts` so default-related helpers accept properly named schema type parameters instead of bare `S.Top` inputs.
485
+
486
+ ## 4.0.0-beta.17
487
+
488
+ ### Patch Changes
489
+
490
+ - c8a6a3f: fix TaggedUnion
491
+
492
+ ## 4.0.0-beta.16
493
+
494
+ ### Patch Changes
495
+
496
+ - 56db2c4: fix: isA
497
+
498
+ ## 4.0.0-beta.15
499
+
500
+ ### Patch Changes
501
+
502
+ - 20186b6: Migrate schema arbitrary annotations to Effect v4 `toArbitrary` and cover `StringId` generation with a fast-check test.
503
+
504
+ ## 4.0.0-beta.14
505
+
3
506
  ## 4.0.0-beta.13
4
507
 
5
508
  ### Patch Changes
@@ -36,6 +36,6 @@ export const value = internal.value;
36
36
  */
37
37
  export const unsafeWipe = internal.unsafeWipe;
38
38
  export const secretURL = (name) => {
39
- return Config.map(Config.string(name), fromString);
39
+ return Config.map(Config.nonEmptyString(name), fromString);
40
40
  };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjcmV0VVJMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbmZpZy9TZWNyZXRVUkwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsTUFBTSxFQUE2QixNQUFNLFFBQVEsQ0FBQTtBQUUxRCxPQUFPLEtBQUssUUFBUSxNQUFNLCtCQUErQixDQUFBO0FBeUJ6RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQWlCLEVBQUUsQ0FBQTtBQU96Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFtQyxRQUFRLENBQUMsV0FBVyxDQUFBO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBd0MsUUFBUSxDQUFDLElBQUksQ0FBQTtBQUV0RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThDLFFBQVEsQ0FBQyxTQUFTLENBQUE7QUFFdEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFnQyxRQUFRLENBQUMsVUFBVSxDQUFBO0FBRTFFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBZ0MsUUFBUSxDQUFDLEtBQUssQ0FBQTtBQUVoRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQThCLFFBQVEsQ0FBQyxVQUFVLENBQUE7QUFFeEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBYSxFQUE0QixFQUFFO0lBQ25FLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQSJ9
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjcmV0VVJMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NvbmZpZy9TZWNyZXRVUkwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxPQUFPLEVBQUUsTUFBTSxFQUE2QixNQUFNLFFBQVEsQ0FBQTtBQUUxRCxPQUFPLEtBQUssUUFBUSxNQUFNLCtCQUErQixDQUFBO0FBeUJ6RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQWlCLEVBQUUsQ0FBQTtBQU96Qzs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFtQyxRQUFRLENBQUMsV0FBVyxDQUFBO0FBRS9FOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBd0MsUUFBUSxDQUFDLElBQUksQ0FBQTtBQUV0RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQThDLFFBQVEsQ0FBQyxTQUFTLENBQUE7QUFFdEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFnQyxRQUFRLENBQUMsVUFBVSxDQUFBO0FBRTFFOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBZ0MsUUFBUSxDQUFDLEtBQUssQ0FBQTtBQUVoRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQThCLFFBQVEsQ0FBQyxVQUFVLENBQUE7QUFFeEUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBYSxFQUE0QixFQUFFO0lBQ25FLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0FBQzVELENBQUMsQ0FBQSJ9
@@ -0,0 +1,7 @@
1
+ import { type Config } from "effect/Config";
2
+ export declare const nested: {
3
+ (name: string): <A>(self: Config<A>) => Config<A>;
4
+ <A>(self: Config<A>, name: string): Config<A>;
5
+ };
6
+ export * from "effect/Config";
7
+ //# sourceMappingURL=Config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAQ,MAAM,eAAe,CAAA;AAKjD,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;CAI9C,CAAA;AAED,cAAc,eAAe,CAAA"}
package/dist/Config.js ADDED
@@ -0,0 +1,6 @@
1
+ import { make } from "effect/Config";
2
+ import { dual } from "effect/Function";
3
+ import * as ConfigProvider from "./ConfigProvider.js";
4
+ export const nested = dual(2, (self, name) => make((provider) => self.parse(ConfigProvider.nested(provider, name))));
5
+ export * from "effect/Config";
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0QyxPQUFPLEtBQUssY0FBYyxNQUFNLHFCQUFxQixDQUFBO0FBRXJELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FHZixJQUFJLENBQ04sQ0FBQyxFQUNELENBQUksSUFBZSxFQUFFLElBQVksRUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDdkgsQ0FBQTtBQUVELGNBQWMsZUFBZSxDQUFBIn0=
@@ -0,0 +1,39 @@
1
+ import { type ConfigProvider, type Path } from "effect/ConfigProvider";
2
+ /**
3
+ * Scopes a provider so that all lookups are prefixed with the given path
4
+ * segments.
5
+ *
6
+ * When to use:
7
+ * - Namespacing config under a prefix like `"app"` or `"database"`.
8
+ * - Reusing the same provider shape for multiple sub-configs.
9
+ *
10
+ * Accepts a single string or a full `Path` array. The prefix is prepended
11
+ * *after* any `mapInput` transformation runs, so ordering matters when
12
+ * composing with {@link mapInput} or {@link constantCase}.
13
+ *
14
+ * Supports both data-last and data-first calling conventions.
15
+ *
16
+ * **Example** (Nesting under a prefix)
17
+ *
18
+ * ```ts
19
+ * import { ConfigProvider } from "effect"
20
+ *
21
+ * const provider = ConfigProvider.fromEnv({
22
+ * env: { APP_HOST: "localhost", APP_PORT: "3000" }
23
+ * })
24
+ *
25
+ * // Lookups for ["HOST"] now resolve to ["APP", "HOST"]
26
+ * const scoped = ConfigProvider.nested(provider, "APP")
27
+ * ```
28
+ *
29
+ * @see {@link mapInput} – for arbitrary path transformations
30
+ *
31
+ * @category Combinators
32
+ * @since 4.0.0
33
+ */
34
+ export declare const nested: {
35
+ (prefix: string | Path): (self: ConfigProvider) => ConfigProvider;
36
+ (self: ConfigProvider, prefix: string | Path): ConfigProvider;
37
+ };
38
+ export * from "effect/ConfigProvider";
39
+ //# sourceMappingURL=ConfigProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../src/ConfigProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAQ,KAAK,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAG5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,MAAM,EAAE;IACnB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,cAAc,CAAA;IACjE,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAA;CAQ9D,CAAA;AAED,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,42 @@
1
+ import { make } from "effect/ConfigProvider";
2
+ import { dual } from "effect/Function";
3
+ /**
4
+ * Scopes a provider so that all lookups are prefixed with the given path
5
+ * segments.
6
+ *
7
+ * When to use:
8
+ * - Namespacing config under a prefix like `"app"` or `"database"`.
9
+ * - Reusing the same provider shape for multiple sub-configs.
10
+ *
11
+ * Accepts a single string or a full `Path` array. The prefix is prepended
12
+ * *after* any `mapInput` transformation runs, so ordering matters when
13
+ * composing with {@link mapInput} or {@link constantCase}.
14
+ *
15
+ * Supports both data-last and data-first calling conventions.
16
+ *
17
+ * **Example** (Nesting under a prefix)
18
+ *
19
+ * ```ts
20
+ * import { ConfigProvider } from "effect"
21
+ *
22
+ * const provider = ConfigProvider.fromEnv({
23
+ * env: { APP_HOST: "localhost", APP_PORT: "3000" }
24
+ * })
25
+ *
26
+ * // Lookups for ["HOST"] now resolve to ["APP", "HOST"]
27
+ * const scoped = ConfigProvider.nested(provider, "APP")
28
+ * ```
29
+ *
30
+ * @see {@link mapInput} – for arbitrary path transformations
31
+ *
32
+ * @category Combinators
33
+ * @since 4.0.0
34
+ */
35
+ export const nested = dual(2, (self, prefix) => {
36
+ let path = typeof prefix === "string" ? [prefix] : prefix;
37
+ if (self.mapInput)
38
+ path = self.mapInput(path);
39
+ return make(self.get, self.mapInput, self.prefix ? [...self.prefix, ...path] : path);
40
+ });
41
+ export * from "effect/ConfigProvider";
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlnUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ29uZmlnUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixJQUFJLEVBQWEsTUFBTSx1QkFBdUIsQ0FBQTtBQUM1RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxNQUFNLEdBR2YsSUFBSSxDQUNOLENBQUMsRUFDRCxDQUFDLElBQW9CLEVBQUUsTUFBcUIsRUFBa0IsRUFBRTtJQUM5RCxJQUFJLElBQUksR0FBUyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUMvRCxJQUFJLElBQUksQ0FBQyxRQUFRO1FBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3RGLENBQUMsQ0FDRixDQUFBO0FBRUQsY0FBYyx1QkFBdUIsQ0FBQSJ9
@@ -1,28 +1,24 @@
1
- /**
2
- * We're doing the long way around here with assignTag, TagBase & TagBaseTagged,
3
- * because there's a typescript compiler issue where it will complain about Equal.symbol, and Hash.symbol not being accessible.
4
- * https://github.com/microsoft/TypeScript/issues/52644
5
- */
6
1
  import { type Effect, Layer, type Scope, type Types } from "effect";
7
- import * as ServiceMap from "effect/ServiceMap";
2
+ import * as CTX from "effect/Context";
8
3
  import { type Yieldable } from "./Effect.js";
9
- export * from "effect/ServiceMap";
10
- export interface Opaque<Self extends object, in out Shape extends object> extends ServiceMap.Key<Self, Self>, Yieldable<Opaque<Self, Shape>, Self, never, Self> {
4
+ export * from "effect/Context";
5
+ export interface Opaque<Self extends object, in out Shape extends object> extends CTX.Key<Self, Self>, Yieldable<Opaque<Self, Shape>, Self, never, Self> {
11
6
  of(this: void, self: Shape): Self;
12
- serviceMap(self: Shape): ServiceMap.ServiceMap<Self>;
7
+ context(self: Shape): CTX.Context<Self>;
13
8
  toLayer: <E, R>(eff: Effect.Effect<Shape, E, R>) => Layer.Layer<Self, E, Exclude<R, Scope.Scope>>;
14
9
  use<A, E, R>(f: (service: Shape) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R | Self>;
15
10
  useSync<A>(f: (service: Shape) => A): Effect.Effect<A, never, Self>;
16
11
  }
17
12
  export declare function assignTag<Identifier extends object, Shape extends object = Identifier>(key: string, creationError?: Error): <S extends object>(cls: S) => S & Opaque<Identifier, Shape>;
18
- export type ServiceAcessorShape<Self, Type> = Type extends Record<PropertyKey, any> ? {
19
- [k in keyof Type as Type[k] extends ((...args: [...infer Args]) => infer Ret) ? ((...args: Readonly<Args>) => Ret) extends Type[k] ? k : never : k]: Type[k] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R> ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R> : Type[k] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self> : Type[k] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R> : Effect.Effect<Type[k], never, Self>;
20
- } : {};
21
- /**
22
- * Only use this in very specific cases where using dependencies directly is prefered, like inside command handlers.
23
- */
24
- export declare const proxify: <T extends object>(Tag: T) => <Self, Shape>() => T & ServiceAcessorShape<Self, Shape>;
25
- export declare const TypeId = "~ServiceMap.Opaque";
13
+ /** Accessor for a service method that returns a plain value. Wraps via `useSync`. */
14
+ export declare const accessFn: <Self extends object, Shape extends Record<PropertyKey, any>, K extends keyof Shape>(Tag: Opaque<Self, Shape>, key: K) => Shape[K] extends (...args: [...infer Args]) => infer A ? (...args: Readonly<Args>) => Effect.Effect<A, never, Self> : never;
15
+ /** Accessor for a service method that returns an Effect. Delegates via `use`. */
16
+ export declare const accessEffectFn: <Self extends object, Shape extends Record<PropertyKey, any>, K extends keyof Shape>(Tag: Opaque<Self, Shape>, key: K) => Shape[K] extends (...args: [...infer Args]) => Effect.Effect<infer A, infer E, infer R> ? (...args: Readonly<Args>) => Effect.Effect<A, E, Self | R> : never;
17
+ /** Accessor for a service property (constant). Wraps via `useSync`. */
18
+ export declare const accessCn: <Self extends object, Shape extends Record<PropertyKey, any>, K extends keyof Shape>(Tag: Opaque<Self, Shape>, key: K) => Effect.Effect<Shape[K], never, Self>;
19
+ /** Accessor for a service property that is an Effect. Delegates via `use`. */
20
+ export declare const accessEffectCn: <Self extends object, Shape extends Record<PropertyKey, any>, K extends keyof Shape>(Tag: Opaque<Self, Shape>, key: K) => Shape[K] extends Effect.Effect<infer A, infer E, infer R> ? Effect.Effect<A, E, Self | R> : never;
21
+ export declare const TypeId = "~Context.Opaque";
26
22
  export interface OpaqueClass<Self extends object, in out Identifier extends string, Shape extends object> extends Opaque<Self, Shape> {
27
23
  new (_: never): Shape & {
28
24
  readonly [TypeId]: Identifier;
@@ -41,4 +37,4 @@ export declare const Opaque: {
41
37
  readonly make: Make;
42
38
  };
43
39
  };
44
- //# sourceMappingURL=ServiceMap.d.ts.map
40
+ //# sourceMappingURL=Context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"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"}