effect 4.0.0-beta.84 → 4.0.0-beta.85

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 (56) hide show
  1. package/dist/Context.d.ts.map +1 -1
  2. package/dist/Context.js +4 -3
  3. package/dist/Context.js.map +1 -1
  4. package/dist/Layer.js +4 -3
  5. package/dist/Layer.js.map +1 -1
  6. package/dist/LayerMap.d.ts.map +1 -1
  7. package/dist/LayerMap.js +4 -3
  8. package/dist/LayerMap.js.map +1 -1
  9. package/dist/Random.d.ts +31 -0
  10. package/dist/Random.d.ts.map +1 -1
  11. package/dist/Random.js +32 -0
  12. package/dist/Random.js.map +1 -1
  13. package/dist/Schema.d.ts +48 -6
  14. package/dist/Schema.d.ts.map +1 -1
  15. package/dist/Schema.js +31 -11
  16. package/dist/Schema.js.map +1 -1
  17. package/dist/SchemaAST.d.ts +8 -7
  18. package/dist/SchemaAST.d.ts.map +1 -1
  19. package/dist/SchemaAST.js +190 -131
  20. package/dist/SchemaAST.js.map +1 -1
  21. package/dist/internal/effect.js +10 -10
  22. package/dist/internal/effect.js.map +1 -1
  23. package/dist/internal/schema/arbitrary.js +17 -1
  24. package/dist/internal/schema/arbitrary.js.map +1 -1
  25. package/dist/internal/stackTraceLimit.d.ts +2 -0
  26. package/dist/internal/stackTraceLimit.d.ts.map +1 -0
  27. package/dist/internal/stackTraceLimit.js +40 -0
  28. package/dist/internal/stackTraceLimit.js.map +1 -0
  29. package/dist/internal/tracer.d.ts.map +1 -1
  30. package/dist/internal/tracer.js +4 -3
  31. package/dist/internal/tracer.js.map +1 -1
  32. package/dist/unstable/ai/Tool.d.ts.map +1 -1
  33. package/dist/unstable/ai/Tool.js +4 -5
  34. package/dist/unstable/ai/Tool.js.map +1 -1
  35. package/dist/unstable/httpapi/HttpApiMiddleware.d.ts.map +1 -1
  36. package/dist/unstable/httpapi/HttpApiMiddleware.js +4 -3
  37. package/dist/unstable/httpapi/HttpApiMiddleware.js.map +1 -1
  38. package/dist/unstable/persistence/PersistedQueue.js +1 -1
  39. package/dist/unstable/rpc/RpcMiddleware.d.ts.map +1 -1
  40. package/dist/unstable/rpc/RpcMiddleware.js +4 -3
  41. package/dist/unstable/rpc/RpcMiddleware.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/Context.ts +4 -5
  44. package/src/Layer.ts +4 -4
  45. package/src/LayerMap.ts +4 -3
  46. package/src/Random.ts +42 -0
  47. package/src/Schema.ts +75 -22
  48. package/src/SchemaAST.ts +217 -137
  49. package/src/internal/effect.ts +11 -11
  50. package/src/internal/schema/arbitrary.ts +23 -2
  51. package/src/internal/stackTraceLimit.ts +63 -0
  52. package/src/internal/tracer.ts +4 -3
  53. package/src/unstable/ai/Tool.ts +4 -3
  54. package/src/unstable/httpapi/HttpApiMiddleware.ts +4 -3
  55. package/src/unstable/persistence/PersistedQueue.ts +1 -1
  56. package/src/unstable/rpc/RpcMiddleware.ts +4 -3
package/dist/Schema.js CHANGED
@@ -1600,14 +1600,20 @@ function templateLiteralFromParts(parts) {
1600
1600
  return new SchemaAST.TemplateLiteral(parts.map(part => isSchema(part) ? part.ast : new SchemaAST.Literal(part)));
1601
1601
  }
1602
1602
  /**
1603
- * Creates a schema that validates strings matching a template literal pattern. Each part can be
1604
- * a literal string/number/bigint or a schema whose encoded type is a string, number, or bigint.
1603
+ * Creates a schema that validates strings by matching ordered template literal
1604
+ * parts.
1605
1605
  *
1606
1606
  * **When to use**
1607
1607
  *
1608
1608
  * Use when the decoded value should remain the matched string and you do not
1609
1609
  * need the individual template parts parsed into a tuple.
1610
1610
  *
1611
+ * **Details**
1612
+ *
1613
+ * Each part can be a literal `string`, `number`, or `bigint`, or a schema whose
1614
+ * encoded type is `string`, `number`, or `bigint`. Checks on string, number,
1615
+ * and bigint schema parts are applied while matching each segment.
1616
+ *
1611
1617
  * **Example** (Defining a URL path pattern)
1612
1618
  *
1613
1619
  * ```ts
@@ -1627,7 +1633,7 @@ export function TemplateLiteral(parts) {
1627
1633
  });
1628
1634
  }
1629
1635
  /**
1630
- * Schema for parsing template literal matches into typed tuple parts.
1636
+ * Schema for parsing matched template literal strings into typed tuple parts.
1631
1637
  *
1632
1638
  * **When to use**
1633
1639
  *
@@ -1637,7 +1643,8 @@ export function TemplateLiteral(parts) {
1637
1643
  * **Details**
1638
1644
  *
1639
1645
  * Unlike {@link TemplateLiteral}, this schema decodes the matched string into a
1640
- * readonly tuple with one element per schema part.
1646
+ * readonly tuple with one element per schema part. Checks on string, number,
1647
+ * and bigint schema parts are applied while matching each segment.
1641
1648
  *
1642
1649
  * **Example** (Parsing path parameters)
1643
1650
  *
@@ -2015,7 +2022,18 @@ derive) {
2015
2022
  };
2016
2023
  }
2017
2024
  /**
2018
- * Defines a record (dictionary) schema with typed keys and values.
2025
+ * Defines a record schema whose dynamic properties are selected by a key schema
2026
+ * and decoded with a value schema.
2027
+ *
2028
+ * **Details**
2029
+ *
2030
+ * For dynamic keys, the key schema selects matching own properties and the
2031
+ * value schema decodes or encodes only those selected properties. Checks on
2032
+ * string, number, symbol, and template literal key schemas narrow which
2033
+ * properties are selected.
2034
+ *
2035
+ * For transformed key schemas, property selection is based on encoded property
2036
+ * names before the selected key is decoded.
2019
2037
  *
2020
2038
  * **Example** (Defining a string-keyed record of numbers)
2021
2039
  *
@@ -7482,14 +7500,16 @@ function makeClass(Inherited, identifier, struct, annotations, proto) {
7482
7500
  return this.rebuild(SchemaAST.appendChecks(this.ast, checks));
7483
7501
  }
7484
7502
  static extend(identifier) {
7485
- return (newFields, annotations) => {
7503
+ return (schema, annotations) => {
7504
+ const extension = isStruct(schema) ? schema : Struct(schema);
7486
7505
  const fields = {
7487
7506
  ...struct.fields,
7488
- ...newFields
7507
+ ...extension.fields
7489
7508
  };
7490
- return makeClass(this, identifier, makeStruct(SchemaAST.struct(fields, struct.ast.checks, {
7509
+ const ast = SchemaAST.struct(fields, struct.ast.checks, {
7491
7510
  identifier
7492
- }), fields), annotations, proto);
7511
+ });
7512
+ return makeClass(this, identifier, makeStruct(SchemaAST.appendChecks(ast, extension.ast.checks), fields), annotations, proto);
7493
7513
  };
7494
7514
  }
7495
7515
  static mapFields(f, options) {
@@ -8040,7 +8060,7 @@ function toCodecJsonBase(ast, recur) {
8040
8060
  cause: ast
8041
8061
  });
8042
8062
  }
8043
- return ast.recur(recur);
8063
+ return ast.recur(recur, SchemaAST.parameterFromString);
8044
8064
  }
8045
8065
  case "Union":
8046
8066
  {
@@ -8251,7 +8271,7 @@ function serializerTree(ast, recur, onMissingAnnotation) {
8251
8271
  cause: ast
8252
8272
  });
8253
8273
  }
8254
- return ast.recur(recur);
8274
+ return ast.recur(recur, SchemaAST.parameterFromString);
8255
8275
  }
8256
8276
  case "Union":
8257
8277
  {