effect-app 4.0.0-beta.1 → 4.0.0-beta.100

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 (142) hide show
  1. package/CHANGELOG.md +444 -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 +62 -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 +43 -10
  24. package/dist/Schema/Class.d.ts.map +1 -1
  25. package/dist/Schema/Class.js +89 -16
  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 +103 -46
  38. package/dist/Schema/ext.d.ts.map +1 -1
  39. package/dist/Schema/ext.js +110 -51
  40. package/dist/Schema/moreStrings.d.ts +25 -13
  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 +11 -28
  54. package/dist/client/apiClientFactory.d.ts.map +1 -1
  55. package/dist/client/apiClientFactory.js +21 -23
  56. package/dist/client/clientFor.d.ts +8 -7
  57. package/dist/client/clientFor.d.ts.map +1 -1
  58. package/dist/client/errors.d.ts +18 -9
  59. package/dist/client/errors.d.ts.map +1 -1
  60. package/dist/client/errors.js +35 -10
  61. package/dist/client/makeClient.d.ts +21 -16
  62. package/dist/client/makeClient.d.ts.map +1 -1
  63. package/dist/client/makeClient.js +32 -34
  64. package/dist/http/Request.d.ts.map +1 -1
  65. package/dist/http/Request.js +5 -5
  66. package/dist/ids.d.ts +10 -10
  67. package/dist/ids.d.ts.map +1 -1
  68. package/dist/ids.js +3 -2
  69. package/dist/index.d.ts +3 -8
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +4 -9
  72. package/dist/middleware.d.ts +2 -2
  73. package/dist/middleware.d.ts.map +1 -1
  74. package/dist/middleware.js +3 -3
  75. package/dist/rpc/MiddlewareMaker.d.ts +6 -5
  76. package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
  77. package/dist/rpc/MiddlewareMaker.js +7 -6
  78. package/dist/rpc/RpcContextMap.d.ts +2 -2
  79. package/dist/rpc/RpcContextMap.d.ts.map +1 -1
  80. package/dist/rpc/RpcContextMap.js +4 -4
  81. package/dist/rpc/RpcMiddleware.d.ts +6 -5
  82. package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
  83. package/dist/rpc/RpcMiddleware.js +1 -1
  84. package/dist/utils/gen.d.ts +1 -1
  85. package/dist/utils/gen.d.ts.map +1 -1
  86. package/dist/utils/logger.d.ts +2 -2
  87. package/dist/utils/logger.d.ts.map +1 -1
  88. package/dist/utils/logger.js +3 -3
  89. package/dist/utils.d.ts +18 -0
  90. package/dist/utils.d.ts.map +1 -1
  91. package/dist/utils.js +24 -5
  92. package/package.json +29 -17
  93. package/src/Config/SecretURL.ts +1 -1
  94. package/src/Config.ts +14 -0
  95. package/src/ConfigProvider.ts +48 -0
  96. package/src/{ServiceMap.ts → Context.ts} +57 -64
  97. package/src/Effect.ts +11 -9
  98. package/src/Layer.ts +5 -4
  99. package/src/Pure.ts +17 -18
  100. package/src/Schema/Class.ts +118 -30
  101. package/src/Schema/SpecialJsonSchema.ts +69 -0
  102. package/src/Schema/SpecialOpenApi.ts +130 -0
  103. package/src/Schema/brand.ts +13 -7
  104. package/src/Schema/email.ts +10 -2
  105. package/src/Schema/ext.ts +185 -82
  106. package/src/Schema/moreStrings.ts +27 -18
  107. package/src/Schema/numbers.ts +9 -8
  108. package/src/Schema/phoneNumber.ts +8 -1
  109. package/src/Schema.ts +79 -103
  110. package/src/client/apiClientFactory.ts +35 -43
  111. package/src/client/clientFor.ts +8 -3
  112. package/src/client/errors.ts +46 -12
  113. package/src/client/makeClient.ts +122 -75
  114. package/src/http/Request.ts +7 -4
  115. package/src/ids.ts +4 -3
  116. package/src/index.ts +3 -11
  117. package/src/middleware.ts +2 -2
  118. package/src/rpc/MiddlewareMaker.ts +12 -10
  119. package/src/rpc/RpcContextMap.ts +6 -5
  120. package/src/rpc/RpcMiddleware.ts +7 -6
  121. package/src/utils/gen.ts +1 -1
  122. package/src/utils/logger.ts +2 -2
  123. package/src/utils.ts +26 -4
  124. package/test/dist/moreStrings.test.d.ts.map +1 -0
  125. package/test/dist/rpc.test.d.ts.map +1 -1
  126. package/test/dist/secretURL.test.d.ts.map +1 -0
  127. package/test/dist/special.test.d.ts.map +1 -0
  128. package/test/moreStrings.test.ts +17 -0
  129. package/test/rpc.test.ts +28 -6
  130. package/test/schema.test.ts +397 -4
  131. package/test/secretURL.test.ts +157 -0
  132. package/test/special.test.ts +729 -0
  133. package/test/utils.test.ts +2 -2
  134. package/tsconfig.base.json +0 -1
  135. package/tsconfig.json +0 -1
  136. package/dist/ServiceMap.d.ts +0 -44
  137. package/dist/ServiceMap.d.ts.map +0 -1
  138. package/dist/ServiceMap.js +0 -91
  139. package/dist/Struct.d.ts +0 -44
  140. package/dist/Struct.d.ts.map +0 -1
  141. package/dist/Struct.js +0 -29
  142. package/src/Struct.ts +0 -54
package/CHANGELOG.md CHANGED
@@ -1,5 +1,449 @@
1
1
  # @effect-app/prelude
2
2
 
3
+ ## 4.0.0-beta.100
4
+
5
+ ## 4.0.0-beta.99
6
+
7
+ ## 4.0.0-beta.98
8
+
9
+ ## 4.0.0-beta.97
10
+
11
+ ## 4.0.0-beta.96
12
+
13
+ ### Patch Changes
14
+
15
+ - 5615e47: bs
16
+
17
+ ## 4.0.0-beta.95
18
+
19
+ ### Patch Changes
20
+
21
+ - 88838fb: Remove pick/omit customizations from Class/TaggedClass/Struct/TaggedStruct. Use `Struct.pick(X.fields, [...])` from `effect-app` instead.
22
+
23
+ ## 4.0.0-beta.94
24
+
25
+ ## 4.0.0-beta.93
26
+
27
+ ## 4.0.0-beta.92
28
+
29
+ ## 4.0.0-beta.91
30
+
31
+ ### Minor Changes
32
+
33
+ - 738b482: Add pick/omit to Struct and TaggedStruct
34
+
35
+ ## 4.0.0-beta.90
36
+
37
+ ## 4.0.0-beta.89
38
+
39
+ ## 4.0.0-beta.88
40
+
41
+ ## 4.0.0-beta.87
42
+
43
+ ## 4.0.0-beta.86
44
+
45
+ ## 4.0.0-beta.85
46
+
47
+ ## 4.0.0-beta.84
48
+
49
+ ## 4.0.0-beta.83
50
+
51
+ ## 4.0.0-beta.82
52
+
53
+ ## 4.0.0-beta.81
54
+
55
+ ## 4.0.0-beta.80
56
+
57
+ ## 4.0.0-beta.79
58
+
59
+ ### Minor Changes
60
+
61
+ - 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).
62
+
63
+ ## 4.0.0-beta.78
64
+
65
+ ## 4.0.0-beta.77
66
+
67
+ ### Minor Changes
68
+
69
+ - 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.
70
+
71
+ ## 4.0.0-beta.76
72
+
73
+ ### Patch Changes
74
+
75
+ - a5248a9: use new schema features
76
+ - fac725d: update effect to latest beta
77
+
78
+ ## 4.0.0-beta.75
79
+
80
+ ### Patch Changes
81
+
82
+ - 24f0a5a: rename Literal to Literals, no longer hiding Schema's singular Literal.
83
+
84
+ ## 4.0.0-beta.74
85
+
86
+ ### Patch Changes
87
+
88
+ - 54ec1ef: fix bs
89
+
90
+ ## 4.0.0-beta.73
91
+
92
+ ## 4.0.0-beta.72
93
+
94
+ ### Patch Changes
95
+
96
+ - 0541f0d: fix withDefault types
97
+
98
+ ## 4.0.0-beta.71
99
+
100
+ ### Minor Changes
101
+
102
+ - beae3a0: Remove `withDefaultConstructor` wrapper, use `S.withConstructorDefault` directly with `Effect.succeed`/`Effect.sync`.
103
+
104
+ ## 4.0.0-beta.70
105
+
106
+ ## 4.0.0-beta.69
107
+
108
+ ### Patch Changes
109
+
110
+ - dc465e3: update to latest effect beta
111
+
112
+ ## 4.0.0-beta.68
113
+
114
+ ### Patch Changes
115
+
116
+ - e6f2341: Add SecretURL tests and switch secretURL config to use Config.nonEmptyString
117
+
118
+ ## 4.0.0-beta.67
119
+
120
+ ## 4.0.0-beta.66
121
+
122
+ ### Patch Changes
123
+
124
+ - edc52e4: update
125
+
126
+ ## 4.0.0-beta.65
127
+
128
+ ### Minor Changes
129
+
130
+ - 1f103b2: Replace `proxify` with explicit service accessor helpers: `accessFn`, `accessEffectFn`, `accessCn`, `accessEffectCn`.
131
+
132
+ ### Patch Changes
133
+
134
+ - 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.
135
+
136
+ ## 4.0.0-beta.64
137
+
138
+ ### Patch Changes
139
+
140
+ - c1a6fdc: fix proxify
141
+
142
+ ## 4.0.0-beta.63
143
+
144
+ ## 4.0.0-beta.62
145
+
146
+ ### Patch Changes
147
+
148
+ - 0b21a02: fix: flatten simple allOf constraints in JSON Schema output for better codegen compatibility
149
+
150
+ ## 4.0.0-beta.61
151
+
152
+ ## 4.0.0-beta.60
153
+
154
+ ## 4.0.0-beta.59
155
+
156
+ ### Patch Changes
157
+
158
+ - cec026d: update packages
159
+
160
+ ## 4.0.0-beta.58
161
+
162
+ ## 4.0.0-beta.57
163
+
164
+ ## 4.0.0-beta.56
165
+
166
+ ## 4.0.0-beta.55
167
+
168
+ ## 4.0.0-beta.54
169
+
170
+ ### Patch Changes
171
+
172
+ - d867272: the return of `Context`
173
+
174
+ ## 4.0.0-beta.53
175
+
176
+ ### Patch Changes
177
+
178
+ - ee9694e: fix type issue?
179
+
180
+ ## 4.0.0-beta.52
181
+
182
+ ### Minor Changes
183
+
184
+ - 6252808: Add `ReadonlySetFromArray` and `ReadonlyMapFromArray` schema transformations that decode from annotated arrays to Set/Map. Update `ReadonlySet` and `ReadonlyMap` to use these internally.
185
+
186
+ ## 4.0.0-beta.51
187
+
188
+ ## 4.0.0-beta.50
189
+
190
+ ## 4.0.0-beta.49
191
+
192
+ ### Patch Changes
193
+
194
+ - e585c9c: fix config nested
195
+
196
+ ## 4.0.0-beta.48
197
+
198
+ ### Patch Changes
199
+
200
+ - 0c88f78: Remove `TaggedError` compatibility re-export, use `TaggedErrorClass` directly
201
+
202
+ ## 4.0.0-beta.47
203
+
204
+ ### Patch Changes
205
+
206
+ - 3365758: workaround effect error messages
207
+
208
+ ## 4.0.0-beta.46
209
+
210
+ ## 4.0.0-beta.45
211
+
212
+ ### Patch Changes
213
+
214
+ - 10b55ff: update packages
215
+
216
+ ## 4.0.0-beta.44
217
+
218
+ ### Patch Changes
219
+
220
+ - a37aa38: Update to effect beta 43
221
+
222
+ ## 4.0.0-beta.43
223
+
224
+ ## 4.0.0-beta.42
225
+
226
+ ## 4.0.0-beta.41
227
+
228
+ ## 4.0.0-beta.40
229
+
230
+ ## 4.0.0-beta.39
231
+
232
+ ### Patch Changes
233
+
234
+ - 10e90d5: fix: TaggedRequest should be an Opaque Schema Class
235
+
236
+ ## 4.0.0-beta.38
237
+
238
+ ### Patch Changes
239
+
240
+ - 0b3e00e: fix bug
241
+
242
+ ## 4.0.0-beta.37
243
+
244
+ ### Patch Changes
245
+
246
+ - 947fe20: fix input date
247
+
248
+ ## 4.0.0-beta.36
249
+
250
+ ## 4.0.0-beta.35
251
+
252
+ ## 4.0.0-beta.34
253
+
254
+ ### Patch Changes
255
+
256
+ - 8c645d5: update to latest effect
257
+
258
+ ## 4.0.0-beta.33
259
+
260
+ ### Patch Changes
261
+
262
+ - 4b95009: use Finite instead of Number
263
+
264
+ ## 4.0.0-beta.32
265
+
266
+ ### Patch Changes
267
+
268
+ - 01d862a: again
269
+
270
+ ## 4.0.0-beta.31
271
+
272
+ ### Patch Changes
273
+
274
+ - 6b6d601: fix ForceVOid
275
+
276
+ ## 4.0.0-beta.30
277
+
278
+ ### Patch Changes
279
+
280
+ - 5ec1f45: fix ForceVoid for real
281
+
282
+ ## 4.0.0-beta.29
283
+
284
+ ### Patch Changes
285
+
286
+ - a899d46: Replace `ForceVoid` in `makeClient` with a typed codec transformation instead of an unsafe cast.
287
+
288
+ ## 4.0.0-beta.28
289
+
290
+ ### Patch Changes
291
+
292
+ - 0099208: Refactor `Pure` helpers to use typed `useSync` calls instead of unsafe casts.
293
+
294
+ ## 4.0.0-beta.27
295
+
296
+ ### Patch Changes
297
+
298
+ - 601a1ff: update effect to 4.0.0-beta.37 and drop the Schema Class disableValidation workaround now that the patched effect schema covers it
299
+
300
+ ## 4.0.0-beta.26
301
+
302
+ ### Patch Changes
303
+
304
+ - 4da28e2: Change `Schema.Class` and `Schema.TaggedClass` wrappers to default constructor options to `{ disableValidation: true }`.
305
+
306
+ 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.
307
+
308
+ ## 4.0.0-beta.25
309
+
310
+ ### Patch Changes
311
+
312
+ - 6282d4b: Update `Effect.allLower` to call `svc.asEffect()` when available, ensuring service entries are normalized before `Effect.all` evaluation.
313
+
314
+ ## 4.0.0-beta.24
315
+
316
+ ### Patch Changes
317
+
318
+ - 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.
319
+
320
+ Add tests covering:
321
+
322
+ - `TaggedUnion` with `encodeKeys`-wrapped members
323
+ - `TaggedUnion` with `TaggedClass` members
324
+
325
+ ## 4.0.0-beta.23
326
+
327
+ ### Patch Changes
328
+
329
+ - ea08a79: remove `fields` constraint from TaggedUnion/tags helpers, extract `_tag` via AST walk instead
330
+
331
+ ## 4.0.0-beta.22
332
+
333
+ ## 4.0.0-beta.21
334
+
335
+ ### Patch Changes
336
+
337
+ - 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.
338
+ - 75c72ee: update effect to 4.0.0-beta.36, adapt to Option<A> revert from A | undefined
339
+
340
+ ## 4.0.0-beta.20
341
+
342
+ ### Patch Changes
343
+
344
+ - 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.
345
+
346
+ ## 4.0.0-beta.19
347
+
348
+ ### Patch Changes
349
+
350
+ - ffc10a4: Migrate `Schema/ext` context helpers to Effect v4 by implementing `provide` and `contextFromServices` with proper service subtraction across decoding and encoding requirements.
351
+
352
+ ## 4.0.0-beta.18
353
+
354
+ ### Patch Changes
355
+
356
+ - 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.
357
+
358
+ ## 4.0.0-beta.17
359
+
360
+ ### Patch Changes
361
+
362
+ - c8a6a3f: fix TaggedUnion
363
+
364
+ ## 4.0.0-beta.16
365
+
366
+ ### Patch Changes
367
+
368
+ - 56db2c4: fix: isA
369
+
370
+ ## 4.0.0-beta.15
371
+
372
+ ### Patch Changes
373
+
374
+ - 20186b6: Migrate schema arbitrary annotations to Effect v4 `toArbitrary` and cover `StringId` generation with a fast-check test.
375
+
376
+ ## 4.0.0-beta.14
377
+
378
+ ## 4.0.0-beta.13
379
+
380
+ ### Patch Changes
381
+
382
+ - 16de88c: remove hopefully obsolete Struct overrides
383
+ - 1c3c541: Update Effect dependencies to 4.0.0-beta.31 across workspace packages.
384
+ - de2359d: Update Effect dependencies to 4.0.0-beta.28 across workspace packages.
385
+ - 0d72f34: Update Effect dependencies to 4.0.0-beta.29 across workspace packages.
386
+
387
+ ## 4.0.0-beta.12
388
+
389
+ ### Patch Changes
390
+
391
+ - 622d54a: Configure Changesets fixed versioning for public packages.
392
+
393
+ ## 4.0.0-beta.10
394
+
395
+ ### Patch Changes
396
+
397
+ - 01c70d0: update all teh tings
398
+
399
+ ## 4.0.0-beta.9
400
+
401
+ ### Patch Changes
402
+
403
+ - 5727372: switch to NdJson
404
+
405
+ ## 4.0.0-beta.8
406
+
407
+ ### Patch Changes
408
+
409
+ - 1f336bc: fix RequestName
410
+
411
+ ## 4.0.0-beta.7
412
+
413
+ ### Patch Changes
414
+
415
+ - 62b4989: fix request attr
416
+
417
+ ## 4.0.0-beta.6
418
+
419
+ ### Patch Changes
420
+
421
+ - df75041: fix Req
422
+
423
+ ## 4.0.0-beta.5
424
+
425
+ ### Patch Changes
426
+
427
+ - 016c5a3: adapt isObject change
428
+
429
+ ## 4.0.0-beta.4
430
+
431
+ ### Patch Changes
432
+
433
+ - 88b90c3: fix withDefault
434
+
435
+ ## 4.0.0-beta.3
436
+
437
+ ### Patch Changes
438
+
439
+ - 3a7abae: fix bs
440
+
441
+ ## 4.0.0-beta.2
442
+
443
+ ### Major Changes
444
+
445
+ - 3887256: Fix Schema->Codec
446
+
3
447
  ## 4.0.0-beta.1
4
448
 
5
449
  ### 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
@@ -0,0 +1,40 @@
1
+ import { type Effect, Layer, type Scope, type Types } from "effect";
2
+ import * as CTX from "effect/Context";
3
+ import { type Yieldable } from "./Effect.js";
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> {
6
+ of(this: void, self: Shape): Self;
7
+ serviceMap(self: Shape): CTX.Context<Self>;
8
+ toLayer: <E, R>(eff: Effect.Effect<Shape, E, R>) => Layer.Layer<Self, E, Exclude<R, Scope.Scope>>;
9
+ use<A, E, R>(f: (service: Shape) => Effect.Effect<A, E, R>): Effect.Effect<A, E, R | Self>;
10
+ useSync<A>(f: (service: Shape) => A): Effect.Effect<A, never, Self>;
11
+ }
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>;
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";
22
+ export interface OpaqueClass<Self extends object, in out Identifier extends string, Shape extends object> extends Opaque<Self, Shape> {
23
+ new (_: never): Shape & {
24
+ readonly [TypeId]: Identifier;
25
+ };
26
+ readonly key: Identifier;
27
+ }
28
+ export declare const Opaque: {
29
+ <Self extends object, Shape extends object>(): <const Identifier extends string, E, R = Types.unassigned, Args extends ReadonlyArray<any> = never>(id: Identifier, options?: {
30
+ readonly make: ((...args: Args) => Effect.Effect<Shape, E, R>) | Effect.Effect<Shape, E, R> | undefined;
31
+ }) => OpaqueClass<Self, Identifier, Shape> & ([Types.unassigned] extends [R] ? unknown : {
32
+ readonly make: [Args] extends [never] ? Effect.Effect<Shape, E, R> : (...args: Args) => Effect.Effect<Shape, E, R>;
33
+ });
34
+ <Self extends object>(): <const Identifier extends string, Make extends Effect.Effect<any, any, any> | ((...args: any) => Effect.Effect<any, any, any>)>(id: Identifier, options: {
35
+ readonly make: Make;
36
+ }) => OpaqueClass<Self, Identifier, Make extends Effect.Effect<infer _A, infer _E, infer _R> | ((...args: infer _Args) => Effect.Effect<infer _A, infer _E, infer _R>) ? _A : never> & {
37
+ readonly make: Make;
38
+ };
39
+ };
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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"}
@@ -0,0 +1,66 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { Layer } from "effect";
3
+ import * as CTX from "effect/Context";
4
+ export * from "effect/Context";
5
+ // export interface OpaqueMake<Self extends object, in out Shape extends object, E, R>
6
+ // extends CTX.Service<Self, Self>
7
+ // {
8
+ // // temp while sorting out https://github.com/Effect-TS/effect-smol/pull/1534
9
+ // of(self: Shape): Self
10
+ // serviceMap2(self: Shape): CTX.Context<Self>
11
+ // // a version that leverages the Shape -> Self conversion
12
+ // toLayer: {
13
+ // <E, R>(
14
+ // eff: Effect.Effect<Shape, E, R>
15
+ // ): Layer.Layer<Self, E, Exclude<R, Scope.Scope>>
16
+ // (): Layer.Layer<Self, E, Exclude<R, Scope.Scope>>
17
+ // }
18
+ // }
19
+ export function assignTag(key, creationError) {
20
+ return (cls) => {
21
+ const tag = CTX.Service(key);
22
+ let fields = tag;
23
+ if (Reflect.ownKeys(cls).includes("key")) {
24
+ const { key, ...rest } = tag;
25
+ fields = rest;
26
+ }
27
+ const t = Object.assign(cls, Object.getPrototypeOf(tag), fields);
28
+ if (!creationError) {
29
+ const limit = Error.stackTraceLimit;
30
+ Error.stackTraceLimit = 2;
31
+ creationError = new Error();
32
+ Error.stackTraceLimit = limit;
33
+ }
34
+ // the stack is used to get the location of the tag definition, if a service is not found in the registry
35
+ Object.defineProperty(t, "stack", {
36
+ get() {
37
+ return creationError.stack;
38
+ }
39
+ });
40
+ return t;
41
+ };
42
+ }
43
+ /** Accessor for a service method that returns a plain value. Wraps via `useSync`. */
44
+ export const accessFn = (Tag, key) => ((...args) => Tag.useSync((s) => s[key](...args)));
45
+ /** Accessor for a service method that returns an Effect. Delegates via `use`. */
46
+ export const accessEffectFn = (Tag, key) => ((...args) => Tag.use((s) => s[key](...args)));
47
+ /** Accessor for a service property (constant). Wraps via `useSync`. */
48
+ export const accessCn = (Tag, key) => Tag.useSync((s) => s[key]);
49
+ /** Accessor for a service property that is an Effect. Delegates via `use`. */
50
+ export const accessEffectCn = (Tag, key) => Tag.use((s) => s[key]);
51
+ export const TypeId = "~Context.Opaque";
52
+ // export interface OpaqueClassMake<Self extends object, in out Identifier extends string, Shape extends object, E, R>
53
+ // extends OpaqueMake<Self, Shape, E, R>
54
+ // {
55
+ // new(_: never): Shape & { readonly [TypeId]: Identifier }
56
+ // readonly key: Identifier
57
+ // }
58
+ export const Opaque = () => (id, options) => {
59
+ const svc = CTX.Service()(id, options);
60
+ return Object.assign(svc, {
61
+ toLayer: (eff) => {
62
+ return Layer.effect(svc, eff);
63
+ }
64
+ });
65
+ };
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Db250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQWUsS0FBSyxFQUEwQixNQUFNLFFBQVEsQ0FBQTtBQUNuRSxPQUFPLEtBQUssR0FBRyxNQUFNLGdCQUFnQixDQUFBO0FBR3JDLGNBQWMsZ0JBQWdCLENBQUE7QUFlOUIsc0ZBQXNGO0FBQ3RGLG9DQUFvQztBQUNwQyxJQUFJO0FBQ0osaUZBQWlGO0FBQ2pGLDBCQUEwQjtBQUMxQixnREFBZ0Q7QUFDaEQsNkRBQTZEO0FBQzdELGVBQWU7QUFDZixjQUFjO0FBQ2Qsd0NBQXdDO0FBQ3hDLHVEQUF1RDtBQUN2RCx3REFBd0Q7QUFDeEQsTUFBTTtBQUNOLElBQUk7QUFFSixNQUFNLFVBQVUsU0FBUyxDQUN2QixHQUFXLEVBQ1gsYUFBcUI7SUFFckIsT0FBTyxDQUFtQixHQUFNLEVBQWlDLEVBQUU7UUFDakUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBb0IsR0FBRyxDQUFDLENBQUE7UUFDL0MsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFBO1FBQ2hCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFBO1lBQzVCLE1BQU0sR0FBRyxJQUFXLENBQUE7UUFDdEIsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDaEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUE7WUFDbkMsS0FBSyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUE7WUFDekIsYUFBYSxHQUFHLElBQUksS0FBSyxFQUFFLENBQUE7WUFDM0IsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7UUFDL0IsQ0FBQztRQUNELHlHQUF5RztRQUN6RyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUU7WUFDaEMsR0FBRztnQkFDRCxPQUFPLGFBQWMsQ0FBQyxLQUFLLENBQUE7WUFDN0IsQ0FBQztTQUNGLENBQUMsQ0FBQTtRQUNGLE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELHFGQUFxRjtBQUNyRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FLdEIsR0FBd0IsRUFDeEIsR0FBTSxFQUVFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFnQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFRLENBQUE7QUFFdkYsaUZBQWlGO0FBQ2pGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUs1QixHQUF3QixFQUN4QixHQUFNLEVBR0UsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQWdCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQVEsQ0FBQTtBQUVuRix1RUFBdUU7QUFDdkUsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBS3RCLEdBQXdCLEVBQ3hCLEdBQU0sRUFDZ0MsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBUSxDQUFBO0FBRTVFLDhFQUE4RTtBQUM5RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FLNUIsR0FBd0IsRUFDeEIsR0FBTSxFQUVFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQVEsQ0FBQTtBQUUvQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUE7QUFxQnZDLHNIQUFzSDtBQUN0SCwwQ0FBMEM7QUFDMUMsSUFBSTtBQUNKLDZEQUE2RDtBQUM3RCw2QkFBNkI7QUFDN0IsSUFBSTtBQUVKLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FvQ2YsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFVLEVBQUUsT0FBWSxFQUFFLEVBQUU7SUFDckMsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQVEsQ0FBQTtJQUM3QyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE9BQU8sRUFBRSxDQUFDLEdBQWlDLEVBQUUsRUFBRTtZQUM3QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQy9CLENBQUM7S0FDRixDQUFDLENBQUE7QUFDSixDQUFDLENBQUEifQ==