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
@@ -1 +1 @@
1
- {"version":3,"file":"RpcMiddleware.d.ts","sourceRoot":"","sources":["../../../src/unstable/rpc/RpcMiddleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RpcMiddleware.d.ts","sourceRoot":"","sources":["../../../src/unstable/rpc/RpcMiddleware.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import * as Context from "../../Context.js";
13
13
  import * as Effect from "../../Effect.js";
14
+ import { getStackTraceLimit, setStackTraceLimit } from "../../internal/stackTraceLimit.js";
14
15
  import * as Layer from "../../Layer.js";
15
16
  import * as Schema from "../../Schema.js";
16
17
  import { Scope } from "../../Scope.js";
@@ -31,10 +32,10 @@ export const TypeId = "~effect/rpc/RpcMiddleware";
31
32
  */
32
33
  export const Service = () => (id, options) => {
33
34
  const Err = globalThis.Error;
34
- const limit = Err.stackTraceLimit;
35
- Err.stackTraceLimit = 2;
35
+ const limit = getStackTraceLimit();
36
+ setStackTraceLimit(2);
36
37
  const creationError = new Err();
37
- Err.stackTraceLimit = limit;
38
+ setStackTraceLimit(limit);
38
39
  function ServiceClass() {}
39
40
  const ServiceClass_ = ServiceClass;
40
41
  Object.setPrototypeOf(ServiceClass, Object.getPrototypeOf(Context.Service(id)));
@@ -1 +1 @@
1
- {"version":3,"file":"RpcMiddleware.js","names":["Context","Effect","Layer","Schema","Scope","TypeId","Service","id","options","Err","globalThis","Error","limit","stackTraceLimit","creationError","ServiceClass","ServiceClass_","Object","setPrototypeOf","getPrototypeOf","key","defineProperty","get","stack","error","Never","requiredForClient","layerClient","tag","service","effectContext","gen","services","context","pipe","omit","middleware","isEffect","makeUnsafe","Map","updateContext","requestContext","merge"],"sources":["../../../src/unstable/rpc/RpcMiddleware.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;AAWA,OAAO,KAAKA,OAAO,MAAM,kBAAkB;AAC3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,SAASC,KAAK,QAAQ,gBAAgB;AActC;;;;;;AAMA,OAAO,MAAMC,MAAM,GAAW,2BAA2B;AAqNzD;;;;;;;;AAQA,OAAO,MAAMC,OAAO,GAAGA,CAAA,KA8BvB,CACEC,EAAU,EACVC,OAGC,KACC;EACF,MAAMC,GAAG,GAAGC,UAAU,CAACC,KAAY;EACnC,MAAMC,KAAK,GAAGH,GAAG,CAACI,eAAe;EACjCJ,GAAG,CAACI,eAAe,GAAG,CAAC;EACvB,MAAMC,aAAa,GAAG,IAAIL,GAAG,EAAE;EAC/BA,GAAG,CAACI,eAAe,GAAGD,KAAK;EAE3B,SAASG,YAAYA,CAAA,GAAI;EACzB,MAAMC,aAAa,GAAGD,YAA0C;EAChEE,MAAM,CAACC,cAAc,CAACH,YAAY,EAAEE,MAAM,CAACE,cAAc,CAACnB,OAAO,CAACM,OAAO,CAAYC,EAAE,CAAC,CAAC,CAAC;EAC1FQ,YAAY,CAACK,GAAG,GAAGb,EAAE;EACrBU,MAAM,CAACI,cAAc,CAACN,YAAY,EAAE,OAAO,EAAE;IAC3CO,GAAGA,CAAA;MACD,OAAOR,aAAa,CAACS,KAAK;IAC5B;GACD,CAAC;EACFP,aAAa,CAACX,MAAM,CAAC,GAAGA,MAAM;EAC9BW,aAAa,CAACQ,KAAK,GAAGhB,OAAO,EAAEgB,KAAK,IAAIrB,MAAM,CAACsB,KAAK;EACpDT,aAAa,CAACU,iBAAiB,GAAGlB,OAAO,EAAEkB,iBAAiB,IAAI,KAAK;EACrE,OAAOX,YAAmB;AAC5B,CAAC;AAED;;;;;;;;AAQA,OAAO,MAAMY,WAAW,GAAGA,CACzBC,GAAuB,EACvBC,OAEyG,KAEzG3B,KAAK,CAAC4B,aAAa,CAAC7B,MAAM,CAAC8B,GAAG,CAAC,aAAS;EACtC,MAAMC,QAAQ,GAAG,CAAC,OAAO/B,MAAM,CAACgC,OAAO,EAAa,EAAEC,IAAI,CACxDlC,OAAO,CAACmC,IAAI,CAAC/B,KAAK,CAAC,CACE;EACvB,MAAMgC,UAAU,GAAGnC,MAAM,CAACoC,QAAQ,CAACR,OAAO,CAAC,GAAG,OAAOA,OAAO,GAAGA,OAAO;EACtE,OAAO7B,OAAO,CAACsC,UAAU,CACvB,IAAIC,GAAG,CAAC,CAAC,CACP,GAAGX,GAAG,CAACR,GAAG,SAAS,EAClBZ,OAAY,IACXP,MAAM,CAACuC,aAAa,CAClBJ,UAAU,CAAC5B,OAAO,CAAC,EAClBiC,cAAc,IAAKzC,OAAO,CAAC0C,KAAK,CAACV,QAAQ,EAAES,cAAc,CAAC,CAC5D,CACJ,CAAC,CAAC,CACJ;AACH,CAAC,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"RpcMiddleware.js","names":["Context","Effect","getStackTraceLimit","setStackTraceLimit","Layer","Schema","Scope","TypeId","Service","id","options","Err","globalThis","Error","limit","creationError","ServiceClass","ServiceClass_","Object","setPrototypeOf","getPrototypeOf","key","defineProperty","get","stack","error","Never","requiredForClient","layerClient","tag","service","effectContext","gen","services","context","pipe","omit","middleware","isEffect","makeUnsafe","Map","updateContext","requestContext","merge"],"sources":["../../../src/unstable/rpc/RpcMiddleware.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;AAWA,OAAO,KAAKA,OAAO,MAAM,kBAAkB;AAC3C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,mCAAmC;AAC1F,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,SAASC,KAAK,QAAQ,gBAAgB;AActC;;;;;;AAMA,OAAO,MAAMC,MAAM,GAAW,2BAA2B;AAqNzD;;;;;;;;AAQA,OAAO,MAAMC,OAAO,GAAGA,CAAA,KA8BvB,CACEC,EAAU,EACVC,OAGC,KACC;EACF,MAAMC,GAAG,GAAGC,UAAU,CAACC,KAAY;EACnC,MAAMC,KAAK,GAAGZ,kBAAkB,EAAE;EAClCC,kBAAkB,CAAC,CAAC,CAAC;EACrB,MAAMY,aAAa,GAAG,IAAIJ,GAAG,EAAE;EAC/BR,kBAAkB,CAACW,KAAK,CAAC;EAEzB,SAASE,YAAYA,CAAA,GAAI;EACzB,MAAMC,aAAa,GAAGD,YAA0C;EAChEE,MAAM,CAACC,cAAc,CAACH,YAAY,EAAEE,MAAM,CAACE,cAAc,CAACpB,OAAO,CAACQ,OAAO,CAAYC,EAAE,CAAC,CAAC,CAAC;EAC1FO,YAAY,CAACK,GAAG,GAAGZ,EAAE;EACrBS,MAAM,CAACI,cAAc,CAACN,YAAY,EAAE,OAAO,EAAE;IAC3CO,GAAGA,CAAA;MACD,OAAOR,aAAa,CAACS,KAAK;IAC5B;GACD,CAAC;EACFP,aAAa,CAACV,MAAM,CAAC,GAAGA,MAAM;EAC9BU,aAAa,CAACQ,KAAK,GAAGf,OAAO,EAAEe,KAAK,IAAIpB,MAAM,CAACqB,KAAK;EACpDT,aAAa,CAACU,iBAAiB,GAAGjB,OAAO,EAAEiB,iBAAiB,IAAI,KAAK;EACrE,OAAOX,YAAmB;AAC5B,CAAC;AAED;;;;;;;;AAQA,OAAO,MAAMY,WAAW,GAAGA,CACzBC,GAAuB,EACvBC,OAEyG,KAEzG1B,KAAK,CAAC2B,aAAa,CAAC9B,MAAM,CAAC+B,GAAG,CAAC,aAAS;EACtC,MAAMC,QAAQ,GAAG,CAAC,OAAOhC,MAAM,CAACiC,OAAO,EAAa,EAAEC,IAAI,CACxDnC,OAAO,CAACoC,IAAI,CAAC9B,KAAK,CAAC,CACE;EACvB,MAAM+B,UAAU,GAAGpC,MAAM,CAACqC,QAAQ,CAACR,OAAO,CAAC,GAAG,OAAOA,OAAO,GAAGA,OAAO;EACtE,OAAO9B,OAAO,CAACuC,UAAU,CACvB,IAAIC,GAAG,CAAC,CAAC,CACP,GAAGX,GAAG,CAACR,GAAG,SAAS,EAClBX,OAAY,IACXT,MAAM,CAACwC,aAAa,CAClBJ,UAAU,CAAC3B,OAAO,CAAC,EAClBgC,cAAc,IAAK1C,OAAO,CAAC2C,KAAK,CAACV,QAAQ,EAAES,cAAc,CAAC,CAC5D,CACJ,CAAC,CAAC,CACJ;AACH,CAAC,CAAC,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "effect",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.84",
4
+ "version": "4.0.0-beta.85",
5
5
  "license": "MIT",
6
6
  "description": "The missing standard library for TypeScript, for writing production-grade software.",
7
7
  "homepage": "https://effect.website",
package/src/Context.ts CHANGED
@@ -17,7 +17,7 @@ import { dual, type LazyArg } from "./Function.ts"
17
17
  import * as Hash from "./Hash.ts"
18
18
  import type { Inspectable } from "./Inspectable.ts"
19
19
  import { exitSucceed, PipeInspectableProto, withFiber } from "./internal/core.ts"
20
- import type { ErrorWithStackTraceLimit } from "./internal/tracer.ts"
20
+ import { getStackTraceLimit, setStackTraceLimit } from "./internal/stackTraceLimit.ts"
21
21
  import * as Option from "./Option.ts"
22
22
  import type { Pipeable } from "./Pipeable.ts"
23
23
  import { hasProperty } from "./Predicate.ts"
@@ -375,11 +375,10 @@ export const Service: {
375
375
  >
376
376
  & { readonly make: Make }
377
377
  } = function() {
378
- const prevLimit = (Error as ErrorWithStackTraceLimit).stackTraceLimit
379
- ;(Error as ErrorWithStackTraceLimit)
380
- .stackTraceLimit = 2
378
+ const prevLimit = getStackTraceLimit()
379
+ setStackTraceLimit(2)
381
380
  const err = new Error()
382
- ;(Error as ErrorWithStackTraceLimit).stackTraceLimit = prevLimit
381
+ setStackTraceLimit(prevLimit)
383
382
  function KeyClass() {}
384
383
  const self = KeyClass as any as Types.Mutable<Reference<any>>
385
384
  Object.setPrototypeOf(self, ServiceProto)
package/src/Layer.ts CHANGED
@@ -20,7 +20,7 @@ import type { LazyArg } from "./Function.ts"
20
20
  import { constant, constTrue, constUndefined, dual, identity } from "./Function.ts"
21
21
  import * as core from "./internal/core.ts"
22
22
  import * as internalEffect from "./internal/effect.ts"
23
- import type { ErrorWithStackTraceLimit } from "./internal/tracer.ts"
23
+ import { getStackTraceLimit, setStackTraceLimit } from "./internal/stackTraceLimit.ts"
24
24
  import * as internalTracer from "./internal/tracer.ts"
25
25
  import { type Pipeable, pipeArguments } from "./Pipeable.ts"
26
26
  import { hasProperty } from "./Predicate.ts"
@@ -4005,10 +4005,10 @@ const mockImpl = <I, S extends object>(service: Context.Key<I, S>, implementatio
4005
4005
  if (prop in target) {
4006
4006
  return target[prop as keyof S]
4007
4007
  }
4008
- const prevLimit = (Error as ErrorWithStackTraceLimit).stackTraceLimit
4009
- ;(Error as ErrorWithStackTraceLimit).stackTraceLimit = 2
4008
+ const prevLimit = getStackTraceLimit()
4009
+ setStackTraceLimit(2)
4010
4010
  const error = new Error(`${service.key}: Unimplemented method "${prop.toString()}"`)
4011
- ;(Error as ErrorWithStackTraceLimit).stackTraceLimit = prevLimit
4011
+ setStackTraceLimit(prevLimit)
4012
4012
  error.name = "UnimplementedError"
4013
4013
  return makeUnimplemented(error)
4014
4014
  },
package/src/LayerMap.ts CHANGED
@@ -13,6 +13,7 @@ import * as Context from "./Context.ts"
13
13
  import type * as Duration from "./Duration.ts"
14
14
  import * as Effect from "./Effect.ts"
15
15
  import { identity } from "./Function.ts"
16
+ import { getStackTraceLimit, setStackTraceLimit } from "./internal/stackTraceLimit.ts"
16
17
  import * as Layer from "./Layer.ts"
17
18
  import * as RcMap from "./RcMap.ts"
18
19
  import * as Scope from "./Scope.ts"
@@ -383,10 +384,10 @@ export const Service = <Self>() =>
383
384
  : never
384
385
  > => {
385
386
  const Err = globalThis.Error as any
386
- const limit = Err.stackTraceLimit
387
- Err.stackTraceLimit = 2
387
+ const limit = getStackTraceLimit()
388
+ setStackTraceLimit(2)
388
389
  const creationError = new Err()
389
- Err.stackTraceLimit = limit
390
+ setStackTraceLimit(limit)
390
391
 
391
392
  function TagClass() {}
392
393
  const TagClass_ = TagClass as any as Mutable<TagClass<Self, Id, string, any, any, any, any, any>>
package/src/Random.ts CHANGED
@@ -8,10 +8,13 @@
8
8
  *
9
9
  * @since 4.0.0
10
10
  */
11
+ import type * as Arr from "./Array.ts"
12
+ import * as Cause from "./Cause.ts"
11
13
  import type * as Context from "./Context.ts"
12
14
  import * as Effect from "./Effect.ts"
13
15
  import { dual } from "./Function.ts"
14
16
  import * as random from "./internal/random.ts"
17
+ import type * as NonEmptyIterable from "./NonEmptyIterable.ts"
15
18
  import * as Predicate from "./Predicate.ts"
16
19
 
17
20
  /**
@@ -225,6 +228,45 @@ export const shuffle = <A>(elements: Iterable<A>): Effect.Effect<Array<A>> =>
225
228
  return buffer
226
229
  })
227
230
 
231
+ /**
232
+ * Gets a random element from an iterable.
233
+ *
234
+ * **When to use**
235
+ *
236
+ * Use to select one value uniformly from a collection using the active `Random`
237
+ * service.
238
+ *
239
+ * **Details**
240
+ *
241
+ * If the input type is known to be non-empty, the returned effect cannot fail.
242
+ * Otherwise, empty iterables fail with `Cause.NoSuchElementError`.
243
+ *
244
+ * **Example** (Choosing a random value)
245
+ *
246
+ * ```ts
247
+ * import { Effect, Random } from "effect"
248
+ *
249
+ * const program = Effect.gen(function*() {
250
+ * const value = yield* Random.choice(["red", "green", "blue"] as const)
251
+ * console.log(value)
252
+ * })
253
+ * ```
254
+ *
255
+ * @category Random Number Generators
256
+ * @since 3.6.0
257
+ */
258
+ export const choice: <Self extends Iterable<unknown>>(
259
+ elements: Self
260
+ ) => Self extends NonEmptyIterable.NonEmptyIterable<infer A> ? Effect.Effect<A>
261
+ : Self extends Arr.NonEmptyReadonlyArray<infer A> ? Effect.Effect<A>
262
+ : Self extends Iterable<infer A> ? Effect.Effect<A, Cause.NoSuchElementError>
263
+ : never = ((elements: Iterable<unknown>) => {
264
+ const buffer = Array.from(elements)
265
+ return buffer.length === 0
266
+ ? Effect.fail(new Cause.NoSuchElementError("Cannot select a random element from an empty array"))
267
+ : randomWith((r) => buffer[Math.min(buffer.length - 1, Math.floor(r.nextDoubleUnsafe() * buffer.length))]!)
268
+ }) as any
269
+
228
270
  /**
229
271
  * Seeds the pseudo-random number generator with the specified value.
230
272
  *
package/src/Schema.ts CHANGED
@@ -2569,14 +2569,20 @@ function templateLiteralFromParts<Parts extends TemplateLiteral.Parts>(parts: Pa
2569
2569
  }
2570
2570
 
2571
2571
  /**
2572
- * Creates a schema that validates strings matching a template literal pattern. Each part can be
2573
- * a literal string/number/bigint or a schema whose encoded type is a string, number, or bigint.
2572
+ * Creates a schema that validates strings by matching ordered template literal
2573
+ * parts.
2574
2574
  *
2575
2575
  * **When to use**
2576
2576
  *
2577
2577
  * Use when the decoded value should remain the matched string and you do not
2578
2578
  * need the individual template parts parsed into a tuple.
2579
2579
  *
2580
+ * **Details**
2581
+ *
2582
+ * Each part can be a literal `string`, `number`, or `bigint`, or a schema whose
2583
+ * encoded type is `string`, `number`, or `bigint`. Checks on string, number,
2584
+ * and bigint schema parts are applied while matching each segment.
2585
+ *
2580
2586
  * **Example** (Defining a URL path pattern)
2581
2587
  *
2582
2588
  * ```ts
@@ -2640,7 +2646,7 @@ export interface TemplateLiteralParser<Parts extends TemplateLiteral.Parts> exte
2640
2646
  }
2641
2647
 
2642
2648
  /**
2643
- * Schema for parsing template literal matches into typed tuple parts.
2649
+ * Schema for parsing matched template literal strings into typed tuple parts.
2644
2650
  *
2645
2651
  * **When to use**
2646
2652
  *
@@ -2650,7 +2656,8 @@ export interface TemplateLiteralParser<Parts extends TemplateLiteral.Parts> exte
2650
2656
  * **Details**
2651
2657
  *
2652
2658
  * Unlike {@link TemplateLiteral}, this schema decodes the matched string into a
2653
- * readonly tuple with one element per schema part.
2659
+ * readonly tuple with one element per schema part. Checks on string, number,
2660
+ * and bigint schema parts are applied while matching each segment.
2654
2661
  *
2655
2662
  * **Example** (Parsing path parameters)
2656
2663
  *
@@ -3587,7 +3594,18 @@ export interface $Record<Key extends Record.Key, Value extends Top> extends
3587
3594
  }
3588
3595
 
3589
3596
  /**
3590
- * Defines a record (dictionary) schema with typed keys and values.
3597
+ * Defines a record schema whose dynamic properties are selected by a key schema
3598
+ * and decoded with a value schema.
3599
+ *
3600
+ * **Details**
3601
+ *
3602
+ * For dynamic keys, the key schema selects matching own properties and the
3603
+ * value schema decodes or encodes only those selected properties. Checks on
3604
+ * string, number, symbol, and template literal key schemas narrow which
3605
+ * properties are selected.
3606
+ *
3607
+ * For transformed key schemas, property selection is based on encoded property
3608
+ * names before the selected key is decoded.
3591
3609
  *
3592
3610
  * **Example** (Defining a string-keyed record of numbers)
3593
3611
  *
@@ -12194,15 +12212,48 @@ export interface Class<Self, S extends Top & { readonly fields: Struct.Fields },
12194
12212
  } | undefined
12195
12213
  ): Struct<Simplify<Readonly<To>>>
12196
12214
 
12215
+ /**
12216
+ * Returns a function that creates a schema-backed subclass with this class's
12217
+ * fields plus additional fields.
12218
+ *
12219
+ * **When to use**
12220
+ *
12221
+ * Use when you need a subclass whose constructor validates both inherited
12222
+ * fields and newly added fields.
12223
+ *
12224
+ * **Details**
12225
+ *
12226
+ * The returned function accepts either a field map or a `Struct`. When you
12227
+ * pass a `Struct`, checks attached to that extension schema are preserved and
12228
+ * combined with checks from the base class schema.
12229
+ *
12230
+ * **Gotchas**
12231
+ *
12232
+ * Checks from a `Struct` argument are evaluated against the full subclass
12233
+ * value after inherited and extension fields are merged. Object-wide checks
12234
+ * such as `isMaxProperties` count inherited fields too.
12235
+ */
12197
12236
  extend<Extended = never, Static = {}, Brand = {}>(
12198
12237
  identifier: string
12199
- ): <NewFields extends Struct.Fields>(
12200
- fields: NewFields,
12201
- annotations?: Annotations.Declaration<Extended, readonly [Struct<Simplify<Assign<S["fields"], NewFields>>>]>
12202
- ) => [Extended] extends [never] ? MissingSelfGeneric<"Base.extend"> : InheritStaticMembers<
12203
- Class<Extended, Struct<Simplify<Assign<S["fields"], NewFields>>>, Self & Brand>,
12204
- Static
12205
- >
12238
+ ): {
12239
+ <NewFields extends Struct.Fields>(
12240
+ fields: NewFields,
12241
+ annotations?: Annotations.Declaration<Extended, readonly [Struct<Simplify<Assign<S["fields"], NewFields>>>]>
12242
+ ): [Extended] extends [never] ? MissingSelfGeneric<"Base.extend"> : InheritStaticMembers<
12243
+ Class<Extended, Struct<Simplify<Assign<S["fields"], NewFields>>>, Self & Brand>,
12244
+ Static
12245
+ >
12246
+ <Extension extends Struct<Struct.Fields>>(
12247
+ schema: Extension,
12248
+ annotations?: Annotations.Declaration<
12249
+ Extended,
12250
+ readonly [Struct<Simplify<Assign<S["fields"], Extension["fields"]>>>]
12251
+ >
12252
+ ): [Extended] extends [never] ? MissingSelfGeneric<"Base.extend"> : InheritStaticMembers<
12253
+ Class<Extended, Struct<Simplify<Assign<S["fields"], Extension["fields"]>>>, Self & Brand>,
12254
+ Static
12255
+ >
12256
+ }
12206
12257
  }
12207
12258
 
12208
12259
  // Merges custom static members from a parent class onto the extended class,
@@ -12270,18 +12321,20 @@ function makeClass<
12270
12321
  static check(...checks: readonly [SchemaAST.Check<Self>, ...Array<SchemaAST.Check<Self>>]) {
12271
12322
  return this.rebuild(SchemaAST.appendChecks(this.ast, checks))
12272
12323
  }
12273
- static extend<Extended>(
12324
+ static extend(
12274
12325
  identifier: string
12275
- ): <NewFields extends Struct.Fields>(
12276
- fields: NewFields,
12277
- annotations?: Annotations.Declaration<Extended, readonly [Struct<Simplify<Assign<S["fields"], NewFields>>>]>
12278
- ) => Class<Extended, Struct<Simplify<Assign<S["fields"], NewFields>>>, Self> {
12279
- return (newFields, annotations) => {
12280
- const fields = { ...struct.fields, ...newFields }
12326
+ ) {
12327
+ return (
12328
+ schema: Struct.Fields | Struct<Struct.Fields>,
12329
+ annotations?: Annotations.Declaration<any, readonly [any]>
12330
+ ) => {
12331
+ const extension = isStruct(schema) ? schema : Struct(schema)
12332
+ const fields = { ...struct.fields, ...extension.fields }
12333
+ const ast = SchemaAST.struct(fields, struct.ast.checks, { identifier })
12281
12334
  return makeClass(
12282
12335
  this,
12283
12336
  identifier,
12284
- makeStruct(SchemaAST.struct(fields, struct.ast.checks, { identifier }), fields),
12337
+ makeStruct(SchemaAST.appendChecks(ast, extension.ast.checks), fields),
12285
12338
  annotations,
12286
12339
  proto
12287
12340
  )
@@ -13511,7 +13564,7 @@ function toCodecJsonBase(ast: SchemaAST.AST, recur: (ast: SchemaAST.AST) => Sche
13511
13564
  if (ast.propertySignatures.some((ps) => typeof ps.name !== "string")) {
13512
13565
  throw new globalThis.Error("Objects property names must be strings", { cause: ast })
13513
13566
  }
13514
- return ast.recur(recur)
13567
+ return ast.recur(recur, SchemaAST.parameterFromString)
13515
13568
  }
13516
13569
  case "Union": {
13517
13570
  const sortedTypes = InternalSchema.jsonReorder(ast.types)
@@ -13791,7 +13844,7 @@ function serializerTree(
13791
13844
  if (ast.propertySignatures.some((ps) => typeof ps.name !== "string")) {
13792
13845
  throw new globalThis.Error("Objects property names must be strings", { cause: ast })
13793
13846
  }
13794
- return ast.recur(recur)
13847
+ return ast.recur(recur, SchemaAST.parameterFromString)
13795
13848
  }
13796
13849
  case "Union": {
13797
13850
  const sortedTypes = treeReorder(ast.types)