effect 3.13.9 → 3.13.11

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 (119) hide show
  1. package/dist/cjs/Arbitrary.js +38 -22
  2. package/dist/cjs/Arbitrary.js.map +1 -1
  3. package/dist/cjs/Array.js +50 -50
  4. package/dist/cjs/Array.js.map +1 -1
  5. package/dist/cjs/Brand.js +9 -4
  6. package/dist/cjs/Brand.js.map +1 -1
  7. package/dist/cjs/Cause.js +1 -0
  8. package/dist/cjs/Cause.js.map +1 -1
  9. package/dist/cjs/Chunk.js +25 -23
  10. package/dist/cjs/Chunk.js.map +1 -1
  11. package/dist/cjs/Config.js +2 -1
  12. package/dist/cjs/Config.js.map +1 -1
  13. package/dist/cjs/Context.js +4 -4
  14. package/dist/cjs/Effect.js +823 -632
  15. package/dist/cjs/Effect.js.map +1 -1
  16. package/dist/cjs/Either.js +12 -12
  17. package/dist/cjs/Either.js.map +1 -1
  18. package/dist/cjs/LogLevel.js +1 -1
  19. package/dist/cjs/Logger.js +12 -12
  20. package/dist/cjs/Match.js +26 -26
  21. package/dist/cjs/Option.js +43 -43
  22. package/dist/cjs/Predicate.js +6 -2
  23. package/dist/cjs/Predicate.js.map +1 -1
  24. package/dist/cjs/Schema.js +21 -17
  25. package/dist/cjs/Schema.js.map +1 -1
  26. package/dist/cjs/SchemaAST.js +49 -25
  27. package/dist/cjs/SchemaAST.js.map +1 -1
  28. package/dist/cjs/Scope.js +2 -0
  29. package/dist/cjs/Scope.js.map +1 -1
  30. package/dist/cjs/Stream.js +93 -93
  31. package/dist/cjs/internal/core.js +1 -1
  32. package/dist/cjs/internal/core.js.map +1 -1
  33. package/dist/cjs/internal/schema/util.js +23 -14
  34. package/dist/cjs/internal/schema/util.js.map +1 -1
  35. package/dist/cjs/internal/version.js +1 -1
  36. package/dist/cjs/internal/version.js.map +1 -1
  37. package/dist/dts/Array.d.ts +47 -47
  38. package/dist/dts/Array.d.ts.map +1 -1
  39. package/dist/dts/Brand.d.ts +14 -6
  40. package/dist/dts/Brand.d.ts.map +1 -1
  41. package/dist/dts/Cause.d.ts +1 -0
  42. package/dist/dts/Cause.d.ts.map +1 -1
  43. package/dist/dts/Chunk.d.ts +91 -89
  44. package/dist/dts/Chunk.d.ts.map +1 -1
  45. package/dist/dts/Config.d.ts +2 -1
  46. package/dist/dts/Config.d.ts.map +1 -1
  47. package/dist/dts/Context.d.ts +4 -4
  48. package/dist/dts/Effect.d.ts +2107 -1621
  49. package/dist/dts/Effect.d.ts.map +1 -1
  50. package/dist/dts/Either.d.ts +33 -33
  51. package/dist/dts/LogLevel.d.ts +3 -3
  52. package/dist/dts/Logger.d.ts +16 -16
  53. package/dist/dts/Match.d.ts +26 -26
  54. package/dist/dts/Option.d.ts +84 -84
  55. package/dist/dts/Predicate.d.ts.map +1 -1
  56. package/dist/dts/Schema.d.ts +53 -21
  57. package/dist/dts/Schema.d.ts.map +1 -1
  58. package/dist/dts/SchemaAST.d.ts.map +1 -1
  59. package/dist/dts/Scope.d.ts +2 -0
  60. package/dist/dts/Scope.d.ts.map +1 -1
  61. package/dist/dts/Stream.d.ts +229 -229
  62. package/dist/esm/Arbitrary.js +38 -22
  63. package/dist/esm/Arbitrary.js.map +1 -1
  64. package/dist/esm/Array.js +50 -50
  65. package/dist/esm/Array.js.map +1 -1
  66. package/dist/esm/Brand.js +9 -4
  67. package/dist/esm/Brand.js.map +1 -1
  68. package/dist/esm/Cause.js +1 -0
  69. package/dist/esm/Cause.js.map +1 -1
  70. package/dist/esm/Chunk.js +25 -23
  71. package/dist/esm/Chunk.js.map +1 -1
  72. package/dist/esm/Config.js +2 -1
  73. package/dist/esm/Config.js.map +1 -1
  74. package/dist/esm/Context.js +4 -4
  75. package/dist/esm/Effect.js +845 -648
  76. package/dist/esm/Effect.js.map +1 -1
  77. package/dist/esm/Either.js +17 -17
  78. package/dist/esm/Either.js.map +1 -1
  79. package/dist/esm/LogLevel.js +1 -1
  80. package/dist/esm/Logger.js +12 -12
  81. package/dist/esm/Match.js +26 -26
  82. package/dist/esm/Option.js +48 -48
  83. package/dist/esm/Predicate.js +3 -0
  84. package/dist/esm/Predicate.js.map +1 -1
  85. package/dist/esm/Schema.js +21 -17
  86. package/dist/esm/Schema.js.map +1 -1
  87. package/dist/esm/SchemaAST.js +46 -22
  88. package/dist/esm/SchemaAST.js.map +1 -1
  89. package/dist/esm/Scope.js +2 -0
  90. package/dist/esm/Scope.js.map +1 -1
  91. package/dist/esm/Stream.js +101 -101
  92. package/dist/esm/internal/core.js +1 -1
  93. package/dist/esm/internal/core.js.map +1 -1
  94. package/dist/esm/internal/schema/util.js +23 -14
  95. package/dist/esm/internal/schema/util.js.map +1 -1
  96. package/dist/esm/internal/version.js +1 -1
  97. package/dist/esm/internal/version.js.map +1 -1
  98. package/package.json +1 -1
  99. package/src/Arbitrary.ts +39 -24
  100. package/src/Array.ts +116 -113
  101. package/src/Brand.ts +14 -6
  102. package/src/Cause.ts +1 -0
  103. package/src/Chunk.ts +97 -95
  104. package/src/Config.ts +2 -1
  105. package/src/Context.ts +4 -4
  106. package/src/Effect.ts +2107 -1621
  107. package/src/Either.ts +34 -34
  108. package/src/LogLevel.ts +3 -3
  109. package/src/Logger.ts +16 -16
  110. package/src/Match.ts +26 -26
  111. package/src/Option.ts +84 -84
  112. package/src/Predicate.ts +4 -0
  113. package/src/Schema.ts +87 -41
  114. package/src/SchemaAST.ts +47 -22
  115. package/src/Scope.ts +2 -0
  116. package/src/Stream.ts +229 -229
  117. package/src/internal/core.ts +2 -1
  118. package/src/internal/schema/util.ts +34 -25
  119. package/src/internal/version.ts +1 -1
@@ -1207,11 +1207,30 @@ export declare const optionalWith: {
1207
1207
  * @since 3.10.0
1208
1208
  */
1209
1209
  export declare namespace Struct {
1210
+ /**
1211
+ * Useful for creating a type that can be used to add custom constraints to the fields of a struct.
1212
+ *
1213
+ * ```ts
1214
+ * import { Schema } from "effect"
1215
+ *
1216
+ * const f = <Fields extends Record<"a" | "b", Schema.Struct.Field>>(
1217
+ * schema: Schema.Struct<Fields>
1218
+ * ) => {
1219
+ * return schema.omit("a")
1220
+ * }
1221
+ *
1222
+ * // ┌─── Schema.Struct<{ b: typeof Schema.Number; }>
1223
+ * // ▼
1224
+ * const result = f(Schema.Struct({ a: Schema.String, b: Schema.Number }))
1225
+ * ```
1226
+ * @since 3.13.11
1227
+ */
1228
+ type Field = Schema.All | PropertySignature.All;
1210
1229
  /**
1211
1230
  * @since 3.10.0
1212
1231
  */
1213
1232
  type Fields = {
1214
- readonly [x: PropertyKey]: Schema.All | PropertySignature.All;
1233
+ readonly [x: PropertyKey]: Field;
1215
1234
  };
1216
1235
  type OptionalEncodedPropertySignature = PropertySignature<PropertySignature.Token, any, PropertyKey, "?:", any, boolean, unknown> | PropertySignature<PropertySignature.Token, any, PropertyKey, "?:", never, boolean, unknown> | PropertySignature<PropertySignature.Token, never, PropertyKey, "?:", any, boolean, unknown> | PropertySignature<PropertySignature.Token, never, PropertyKey, "?:", never, boolean, unknown>;
1217
1236
  type EncodedOptionalKeys<Fields extends Struct.Fields> = {
@@ -1274,22 +1293,23 @@ export declare namespace IndexSignature {
1274
1293
  * @since 3.10.0
1275
1294
  */
1276
1295
  type NonEmptyRecords = array_.NonEmptyReadonlyArray<Record>;
1296
+ type MergeTuple<T extends ReadonlyArray<unknown>> = T extends readonly [infer Head, ...infer Tail] ? Head & MergeTuple<Tail> : {};
1277
1297
  /**
1278
1298
  * @since 3.10.0
1279
1299
  */
1280
- type Type<Records extends IndexSignature.Records> = Types.UnionToIntersection<{
1281
- [K in keyof Records]: {
1300
+ type Type<Records extends IndexSignature.Records> = MergeTuple<{
1301
+ readonly [K in keyof Records]: {
1282
1302
  readonly [P in Schema.Type<Records[K]["key"]>]: Schema.Type<Records[K]["value"]>;
1283
1303
  };
1284
- }[number]>;
1304
+ }>;
1285
1305
  /**
1286
1306
  * @since 3.10.0
1287
1307
  */
1288
- type Encoded<Records extends IndexSignature.Records> = Types.UnionToIntersection<{
1289
- [K in keyof Records]: {
1308
+ type Encoded<Records extends IndexSignature.Records> = MergeTuple<{
1309
+ readonly [K in keyof Records]: {
1290
1310
  readonly [P in Schema.Encoded<Records[K]["key"]>]: Schema.Encoded<Records[K]["value"]>;
1291
1311
  };
1292
- }[number]>;
1312
+ }>;
1293
1313
  /**
1294
1314
  * @since 3.10.0
1295
1315
  */
@@ -1319,9 +1339,7 @@ export declare namespace TypeLiteral {
1319
1339
  * @since 3.10.0
1320
1340
  */
1321
1341
  export interface TypeLiteral<Fields extends Struct.Fields, Records extends IndexSignature.Records> extends AnnotableClass<TypeLiteral<Fields, Records>, Simplify<TypeLiteral.Type<Fields, Records>>, Simplify<TypeLiteral.Encoded<Fields, Records>>, Struct.Context<Fields> | IndexSignature.Context<Records>> {
1322
- readonly fields: {
1323
- readonly [K in keyof Fields]: Fields[K];
1324
- };
1342
+ readonly fields: Readonly<Fields>;
1325
1343
  readonly records: Readonly<Records>;
1326
1344
  annotations(annotations: Annotations.Schema<Simplify<TypeLiteral.Type<Fields, Records>>>): TypeLiteral<Fields, Records>;
1327
1345
  make(props: RequiredKeys<TypeLiteral.Constructor<Fields, Records>> extends never ? void | Simplify<TypeLiteral.Constructor<Fields, Records>> : Simplify<TypeLiteral.Constructor<Fields, Records>>, options?: MakeOptions): Simplify<TypeLiteral.Type<Fields, Records>>;
@@ -1330,7 +1348,10 @@ export interface TypeLiteral<Fields extends Struct.Fields, Records extends Index
1330
1348
  * @category api interface
1331
1349
  * @since 3.10.0
1332
1350
  */
1333
- export interface Struct<Fields extends Struct.Fields> extends TypeLiteral<Fields, []> {
1351
+ export interface Struct<Fields extends Struct.Fields> extends AnnotableClass<Struct<Fields>, Simplify<Struct.Type<Fields>>, Simplify<Struct.Encoded<Fields>>, Struct.Context<Fields>> {
1352
+ readonly fields: Readonly<Fields>;
1353
+ readonly records: readonly [];
1354
+ make(props: RequiredKeys<Struct.Constructor<Fields>> extends never ? void | Simplify<Struct.Constructor<Fields>> : Simplify<Struct.Constructor<Fields>>, options?: MakeOptions): Simplify<Struct.Type<Fields>>;
1334
1355
  annotations(annotations: Annotations.Schema<Simplify<Struct.Type<Fields>>>): Struct<Fields>;
1335
1356
  pick<Keys extends ReadonlyArray<keyof Fields>>(...keys: Keys): Struct<Simplify<Pick<Fields, Keys[number]>>>;
1336
1357
  omit<Keys extends ReadonlyArray<keyof Fields>>(...keys: Keys): Struct<Simplify<Omit<Fields, Keys[number]>>>;
@@ -1352,8 +1373,6 @@ export interface tag<Tag extends AST.LiteralValue> extends PropertySignature<":"
1352
1373
  * A tag is a literal value that is used to distinguish between different types of objects.
1353
1374
  * The tag is optional when using the `make` method.
1354
1375
  *
1355
- * @see {@link TaggedStruct}
1356
- *
1357
1376
  * @example
1358
1377
  * ```ts
1359
1378
  * import * as assert from "node:assert"
@@ -1368,6 +1387,8 @@ export interface tag<Tag extends AST.LiteralValue> extends PropertySignature<":"
1368
1387
  * assert.deepStrictEqual(User.make({ name: "John", age: 44 }), { _tag: "User", name: "John", age: 44 })
1369
1388
  * ```
1370
1389
  *
1390
+ * @see {@link TaggedStruct}
1391
+ *
1371
1392
  * @since 3.10.0
1372
1393
  */
1373
1394
  export declare const tag: <Tag extends AST.LiteralValue>(tag: Tag) => tag<Tag>;
@@ -1404,16 +1425,26 @@ export declare const TaggedStruct: <Tag extends AST.LiteralValue, Fields extends
1404
1425
  * @category api interface
1405
1426
  * @since 3.10.0
1406
1427
  */
1407
- export interface Record$<K extends Schema.All, V extends Schema.All> extends TypeLiteral<{}, [{
1408
- key: K;
1409
- value: V;
1410
- }]> {
1428
+ export interface Record$<K extends Schema.All, V extends Schema.All> extends AnnotableClass<Record$<K, V>, {
1429
+ readonly [P in Schema.Type<K>]: Schema.Type<V>;
1430
+ }, {
1431
+ readonly [P in Schema.Encoded<K>]: Schema.Encoded<V>;
1432
+ }, Schema.Context<K> | Schema.Context<V>> {
1433
+ readonly fields: {};
1434
+ readonly records: readonly [{
1435
+ readonly key: K;
1436
+ readonly value: V;
1437
+ }];
1411
1438
  readonly key: K;
1412
1439
  readonly value: V;
1413
- annotations(annotations: Annotations.Schema<Simplify<TypeLiteral.Type<{}, [{
1414
- key: K;
1415
- value: V;
1416
- }]>>>): Record$<K, V>;
1440
+ make(props: void | {
1441
+ readonly [P in Schema.Type<K>]: Schema.Type<V>;
1442
+ }, options?: MakeOptions): {
1443
+ readonly [P in Schema.Type<K>]: Schema.Type<V>;
1444
+ };
1445
+ annotations(annotations: Annotations.Schema<{
1446
+ readonly [P in Schema.Type<K>]: Schema.Type<V>;
1447
+ }>): Record$<K, V>;
1417
1448
  }
1418
1449
  /**
1419
1450
  * @category constructors
@@ -4681,6 +4712,7 @@ declare const BooleanFromUnknown_base: transform<typeof Unknown, typeof Boolean$
4681
4712
  * Uses `!!val` to coerce the value to a `boolean`.
4682
4713
  *
4683
4714
  * @see https://developer.mozilla.org/docs/Glossary/Truthy
4715
+ *
4684
4716
  * @category boolean constructors
4685
4717
  * @since 3.10.0
4686
4718
  */