@ddd-ts/shape 0.0.0-fix-divergence.1 → 0.0.0-test-concurrency.2

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 (73) hide show
  1. package/dist/_.d.ts +6 -5
  2. package/dist/_.d.ts.map +1 -1
  3. package/dist/_.js +10 -6
  4. package/dist/_.js.map +1 -1
  5. package/dist/choice.d.ts +21 -20
  6. package/dist/choice.d.ts.map +1 -1
  7. package/dist/choice.js +2 -1
  8. package/dist/choice.js.map +1 -1
  9. package/dist/class.d.ts +2 -1
  10. package/dist/class.d.ts.map +1 -1
  11. package/dist/class.js +2 -1
  12. package/dist/class.js.map +1 -1
  13. package/dist/dict.d.ts +24 -11
  14. package/dist/dict.d.ts.map +1 -1
  15. package/dist/dict.js +5 -4
  16. package/dist/dict.js.map +1 -1
  17. package/dist/dict.spec.js +5 -5
  18. package/dist/dict.spec.js.map +1 -1
  19. package/dist/discriminated-union.d.ts +75 -0
  20. package/dist/discriminated-union.d.ts.map +1 -0
  21. package/dist/discriminated-union.js +99 -0
  22. package/dist/discriminated-union.js.map +1 -0
  23. package/dist/discriminated-union.spec.d.ts +2 -0
  24. package/dist/discriminated-union.spec.d.ts.map +1 -0
  25. package/dist/discriminated-union.spec.js +262 -0
  26. package/dist/discriminated-union.spec.js.map +1 -0
  27. package/dist/either.d.ts +5 -5
  28. package/dist/either.d.ts.map +1 -1
  29. package/dist/either.js +1 -2
  30. package/dist/either.js.map +1 -1
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/literal.d.ts +13 -36
  36. package/dist/literal.d.ts.map +1 -1
  37. package/dist/literal.js +7 -10
  38. package/dist/literal.js.map +1 -1
  39. package/dist/literal.spec.js +10 -10
  40. package/dist/literal.spec.js.map +1 -1
  41. package/dist/mapping.d.ts +1 -1
  42. package/dist/mapping.d.ts.map +1 -1
  43. package/dist/mapping.js +3 -3
  44. package/dist/mapping.js.map +1 -1
  45. package/dist/mapping.spec.js +4 -4
  46. package/dist/mapping.spec.js.map +1 -1
  47. package/dist/multiple.d.ts +75 -70
  48. package/dist/multiple.d.ts.map +1 -1
  49. package/dist/multiple.js +1 -1
  50. package/dist/multiple.js.map +1 -1
  51. package/dist/multiple.spec.js +1 -2
  52. package/dist/multiple.spec.js.map +1 -1
  53. package/dist/nothing.d.ts +1 -1
  54. package/dist/nothing.d.ts.map +1 -1
  55. package/dist/nothing.js +1 -1
  56. package/dist/nothing.js.map +1 -1
  57. package/dist/optional.d.ts +18 -13
  58. package/dist/optional.d.ts.map +1 -1
  59. package/dist/optional.js +4 -2
  60. package/dist/optional.js.map +1 -1
  61. package/dist/primitive.d.ts +40 -0
  62. package/dist/primitive.d.ts.map +1 -0
  63. package/dist/primitive.js +30 -0
  64. package/dist/primitive.js.map +1 -0
  65. package/dist/primitive.spec.d.ts +2 -0
  66. package/dist/primitive.spec.d.ts.map +1 -0
  67. package/dist/primitive.spec.js +162 -0
  68. package/dist/primitive.spec.js.map +1 -0
  69. package/dist/test.d.ts +6 -6
  70. package/dist/test.d.ts.map +1 -1
  71. package/dist/test.js +1 -2
  72. package/dist/test.js.map +1 -1
  73. package/package.json +4 -4
package/dist/_.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import { Class, ClassShorthand } from "./class";
2
2
  import { Dict, DictShorthand } from "./dict";
3
- import { Literal, LiteralShorthand } from "./literal";
3
+ import { Primitive, PrimitiveShorthand } from "./primitive";
4
4
  import { Multiple, MultipleShorthand } from "./multiple";
5
5
  import { Nothing, NothingShorthand } from "./nothing";
6
+ import { Literal, LiteralShorthand } from "./literal";
6
7
  export declare abstract class Empty {
7
8
  }
8
9
  export interface Constructor<T = any, P extends any[] = any[]> {
@@ -10,7 +11,7 @@ export interface Constructor<T = any, P extends any[] = any[]> {
10
11
  }
11
12
  export type AbstractConstructor<T = any, P extends any[] = any[]> = abstract new (...args: P) => T;
12
13
  export interface Definition {
13
- $name: string;
14
+ $shape: string;
14
15
  $inline: any;
15
16
  $serialize(value: any): any;
16
17
  $deserialize(value: any): any;
@@ -19,9 +20,9 @@ export type MakeAbstract<T> = T extends new (...params: infer P) => infer R ? Om
19
20
  export type Concrete<T extends AbstractConstructor<any>> = T extends abstract new (...params: infer P) => infer R ? Omit<T, ""> & {
20
21
  new (...params: P): R;
21
22
  } : never;
22
- export type Shorthand = Definition | DictShorthand | LiteralShorthand | MultipleShorthand | NothingShorthand | ClassShorthand;
23
- export type DefinitionOf<T extends Shorthand | Definition, B extends AbstractConstructor<{}> = typeof Empty> = T extends LiteralShorthand ? ReturnType<typeof Literal<T, B>> : T extends undefined ? ReturnType<typeof Nothing<B>> : T extends LiteralShorthand ? ReturnType<typeof Literal<T, B>> : T extends MultipleShorthand ? ReturnType<typeof Multiple<T[0], B>> : T extends ClassShorthand ? ReturnType<typeof Class<T, B>> : T extends Definition ? T : T extends DictShorthand ? ReturnType<typeof Dict<T, B>> : never;
24
- export declare function Shape<S extends Definition | Shorthand, B extends AbstractConstructor<{}> = typeof Empty>(shorthand: S, base?: B): DefinitionOf<S, B>;
23
+ export type Shorthand = Definition | DictShorthand | PrimitiveShorthand | MultipleShorthand | NothingShorthand | ClassShorthand | LiteralShorthand;
24
+ export type DefinitionOf<T extends Shorthand | Definition, B extends AbstractConstructor<{}> = typeof Empty> = T extends LiteralShorthand ? ReturnType<typeof Literal<T, B>> : T extends undefined ? ReturnType<typeof Nothing<B>> : T extends PrimitiveShorthand ? ReturnType<typeof Primitive<T, B>> : T extends MultipleShorthand ? ReturnType<typeof Multiple<T[0], B>> : T extends ClassShorthand ? ReturnType<typeof Class<T, B>> : T extends Definition ? T : T extends DictShorthand ? ReturnType<typeof Dict<T, B>> : never;
25
+ export declare function Shape<const S extends Definition | Shorthand, B extends AbstractConstructor<{}> = typeof Empty>(shorthand: S, base?: B): DefinitionOf<S, B>;
25
26
  export type Expand<T> = T extends {
26
27
  serialize(): any;
27
28
  } ? T : T extends Date ? T : T extends Record<string, any> ? {
package/dist/_.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"_.d.ts","sourceRoot":"","sources":["../src/_.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_.d.ts","sourceRoot":"","sources":["../src/_.ts"],"names":[],"mappings":"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"}
package/dist/_.js CHANGED
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.forward = exports.Shape = exports.Empty = void 0;
3
+ exports.Empty = void 0;
4
+ exports.Shape = Shape;
5
+ exports.forward = forward;
4
6
  const class_1 = require("./class");
5
7
  const dict_1 = require("./dict");
6
- const literal_1 = require("./literal");
8
+ const primitive_1 = require("./primitive");
7
9
  const multiple_1 = require("./multiple");
8
10
  const nothing_1 = require("./nothing");
11
+ const literal_1 = require("./literal");
9
12
  class Empty {
10
13
  }
11
14
  exports.Empty = Empty;
12
15
  function Shape(shorthand, base = Empty) {
16
+ if (typeof shorthand === "string" || typeof shorthand === "number") {
17
+ return (0, literal_1.Literal)(shorthand, base);
18
+ }
13
19
  if (shorthand &&
14
- "$name" in shorthand &&
20
+ "$shape" in shorthand &&
15
21
  "name" in shorthand &&
16
22
  typeof shorthand.name === "string") {
17
23
  if (shorthand.name.startsWith("$")) {
@@ -23,7 +29,7 @@ function Shape(shorthand, base = Empty) {
23
29
  return (0, nothing_1.Nothing)(undefined, base);
24
30
  }
25
31
  if ([String, Number, Date, Boolean].includes(shorthand)) {
26
- return (0, literal_1.Literal)(shorthand, base);
32
+ return (0, primitive_1.Primitive)(shorthand, base);
27
33
  }
28
34
  if (shorthand && "prototype" in shorthand) {
29
35
  return (0, class_1.Class)(shorthand, base);
@@ -36,7 +42,6 @@ function Shape(shorthand, base = Empty) {
36
42
  }
37
43
  throw new Error(`Could not determine longhand from shorthand ${JSON.stringify(shorthand)}`);
38
44
  }
39
- exports.Shape = Shape;
40
45
  function forward(base, forward) {
41
46
  for (const key of forward) {
42
47
  Object.defineProperty(base.prototype, key, {
@@ -47,5 +52,4 @@ function forward(base, forward) {
47
52
  }
48
53
  return base;
49
54
  }
50
- exports.forward = forward;
51
55
  //# sourceMappingURL=_.js.map
package/dist/_.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"_.js","sourceRoot":"","sources":["../src/_.ts"],"names":[],"mappings":";;;AAAA,mCAAgD;AAChD,iCAA6C;AAC7C,uCAAsD;AACtD,yCAAyD;AACzD,uCAAsD;AAEtD,MAAsB,KAAK;CAAG;AAA9B,sBAA8B;AA2D9B,SAAgB,KAAK,CAGnB,SAAY,EAAE,OAAU,KAAY;IACpC,IACE,SAAS;QACT,OAAO,IAAI,SAAS;QACpB,MAAM,IAAI,SAAS;QACnB,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAClC,CAAC;QACD,IAAK,SAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,SAAgB,CAAC;QAC1B,CAAC;QACD,OAAO,IAAA,aAAK,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAC9C,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAA,iBAAO,EAAC,SAAS,EAAE,IAAI,CAAQ,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAgB,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAA,iBAAO,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAChD,CAAC;IACD,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAA,aAAK,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAQ,mBAAgB,CAAC,SAAS,CAAC,CAAC,CAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAA,WAAI,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+CAA+C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAC3E,CAAC;AACJ,CAAC;AApCD,sBAoCC;AAUD,SAAgB,OAAO,CAMrB,IAAO,EACP,OAAgB;IAShB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YACzC,GAAG;gBACD,OAAQ,IAAI,CAAC,KAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAW,CAAC;AACrB,CAAC;AAxBD,0BAwBC"}
1
+ {"version":3,"file":"_.js","sourceRoot":"","sources":["../src/_.ts"],"names":[],"mappings":";;;AAmEA,sBAwCC;AAUD,0BAwBC;AA7ID,mCAAgD;AAChD,iCAA6C;AAC7C,2CAA4D;AAC5D,yCAAyD;AACzD,uCAAsD;AACtD,uCAAsD;AAEtD,MAAsB,KAAK;CAAG;AAA9B,sBAA8B;AA4D9B,SAAgB,KAAK,CAGnB,SAAY,EAAE,OAAU,KAAY;IACpC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,IAAA,iBAAO,EAAC,SAAS,EAAE,IAAI,CAAQ,CAAC;IACzC,CAAC;IAED,IACE,SAAS;QACT,QAAQ,IAAI,SAAS;QACrB,MAAM,IAAI,SAAS;QACnB,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAClC,CAAC;QACD,IAAK,SAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,SAAgB,CAAC;QAC1B,CAAC;QACD,OAAO,IAAA,aAAK,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAC9C,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,IAAA,iBAAO,EAAC,SAAS,EAAE,IAAI,CAAQ,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAgB,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAA,qBAAS,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAClD,CAAC;IACD,IAAI,SAAS,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC1C,OAAO,IAAA,aAAK,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,OAAQ,mBAAgB,CAAC,SAAS,CAAC,CAAC,CAAQ,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAA,WAAI,EAAC,SAAgB,EAAE,IAAI,CAAQ,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,KAAK,CACb,+CAA+C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAC3E,CAAC;AACJ,CAAC;AAUD,SAAgB,OAAO,CAMrB,IAAO,EACP,OAAgB;IAShB,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YACzC,GAAG;gBACD,OAAQ,IAAI,CAAC,KAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnD,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAW,CAAC;AACrB,CAAC"}
package/dist/choice.d.ts CHANGED
@@ -1,42 +1,43 @@
1
1
  import { AbstractConstructor, Empty, Expand, Constructor, MergeClasses } from "./_";
2
- type Matcher<S extends string[]> = {
2
+ export type ChoiceMatcher<S extends string[]> = {
3
3
  [key in S[number]]: () => any;
4
4
  } | ({
5
5
  _: () => any;
6
6
  } & {
7
7
  [key in S[number]]?: () => any;
8
8
  });
9
- type MatcherResult<M extends Matcher<any>> = M[keyof M] extends () => infer R ? R : never;
9
+ export type ChoiceMatcherResult<M extends ChoiceMatcher<any>> = M[keyof M] extends () => infer R ? R : never;
10
10
  export declare const Choice: <const S extends string[], B extends AbstractConstructor<{}> = typeof Empty>(config: S, base?: B) => MergeClasses<B, (abstract new (value: Expand<S[number]>) => {
11
11
  value: Expand<S[number]>;
12
- is<T extends S[number]>(value: T): this is Omit<any, "serialize" | "value"> & {
13
- value: T;
14
- serialize(): T;
12
+ is<T extends S[number]>(value: T): this is Omit<this, "value" | "serialize"> & {
13
+ value: T_1;
14
+ serialize(): T_1;
15
15
  };
16
- match<M extends Matcher<S>>(matcher: M): MatcherResult<M>;
16
+ match<M extends ChoiceMatcher<S>>(matcher: M): ChoiceMatcherResult<M>;
17
17
  serialize(): S[number];
18
18
  }) & {
19
- $name: "choice";
19
+ $shape: "choice";
20
+ $of: S;
20
21
  values: S;
21
- deserialize<T_1 extends any>(this: T_1, value: S[number]): InstanceType<T_1>;
22
- $deserialize<T_2 extends any>(this: T_2, value: S[number]): S[number];
23
- $serialize<T_3 extends any>(this: T_3, value: S[number]): S[number];
22
+ deserialize<T_2 extends any>(this: T_2, value: S[number]): InstanceType<T_2>;
23
+ $deserialize<T_3 extends any>(this: T_3, value: S[number]): S[number];
24
+ $serialize<T_4 extends any>(this: T_4, value: S[number]): S[number];
24
25
  $inline: S[number];
25
26
  }> & Omit<B, ""> & Omit<(abstract new (value: Expand<S[number]>) => {
26
27
  value: Expand<S[number]>;
27
- is<T extends S[number]>(value: T): this is Omit<any, "serialize" | "value"> & {
28
- value: T;
29
- serialize(): T;
28
+ is<T extends S[number]>(value: T): this is Omit<this, "value" | "serialize"> & {
29
+ value: T_1;
30
+ serialize(): T_1;
30
31
  };
31
- match<M extends Matcher<S>>(matcher: M): MatcherResult<M>;
32
+ match<M extends ChoiceMatcher<S>>(matcher: M): ChoiceMatcherResult<M>;
32
33
  serialize(): S[number];
33
34
  }) & {
34
- $name: "choice";
35
+ $shape: "choice";
36
+ $of: S;
35
37
  values: S;
36
- deserialize<T_1 extends any>(this: T_1, value: S[number]): InstanceType<T_1>;
37
- $deserialize<T_2 extends any>(this: T_2, value: S[number]): S[number];
38
- $serialize<T_3 extends any>(this: T_3, value: S[number]): S[number];
38
+ deserialize<T_2 extends any>(this: T_2, value: S[number]): InstanceType<T_2>;
39
+ $deserialize<T_3 extends any>(this: T_3, value: S[number]): S[number];
40
+ $serialize<T_4 extends any>(this: T_4, value: S[number]): S[number];
39
41
  $inline: S[number];
40
- }, ""> & { [K in S[number]]: <T_4 extends Constructor<any, any[]>>(this: T_4) => InstanceType<T_4>; };
41
- export {};
42
+ }, ""> & { [K in S[number]]: <T_5 extends Constructor<any, any[]>>(this: T_5) => InstanceType<T_5>; };
42
43
  //# sourceMappingURL=choice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"choice.d.ts","sourceRoot":"","sources":["../src/choice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,EAEL,MAAM,EACN,WAAW,EACX,YAAY,EACb,MAAM,KAAK,CAAC;AAEb,KAAK,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,IAC3B;KACG,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG;CAC9B,GACD,CAAC;IACC,CAAC,EAAE,MAAM,GAAG,CAAC;CACd,GAAG;KACD,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG;CAC/B,CAAC,CAAC;AAEP,KAAK,aAAa,CAAC,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,GACzE,CAAC,GACD,KAAK,CAAC;AAEV,eAAO,MAAM,MAAM,uFAIT,CAAC,SACH,CAAC;;;;;;yCAuBgC,CAAC,GAAG,cAAc,CAAC,CAAC;;;;;;;;;;;;;;;yCAApB,CAAC,GAAG,cAAc,CAAC,CAAC;;;;;;;;;qGA6C5D,CAAC"}
1
+ {"version":3,"file":"choice.d.ts","sourceRoot":"","sources":["../src/choice.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,KAAK,EAEL,MAAM,EACN,WAAW,EACX,YAAY,EACb,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,IACxC;KACG,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG;CAC9B,GACD,CAAC;IACC,CAAC,EAAE,MAAM,GAAG,CAAC;CACd,GAAG;KACD,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG;CAC/B,CAAC,CAAC;AAEP,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,IAC1D,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAE/C,eAAO,MAAM,MAAM,SAuEP,CAAC,mBAFJ,CAAC,yDAEE,CAAC,AAnEF,SAiEF,CAAC,AAhED;;uCAgBF,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG;QAC7C,KAAK,EACQ,GAAC,AADN,CAAC;QACT,SAAS,IAAI,GAAC,CAAC;KAChB;UAIkE,CAAC,oCAAD,CAAC,AAAxB,GAAG,mBAAmB,CAAC,CAAC,CAAC;;;;;;gBAarD,GAAC,oBAAD,GAAC,AAFR,qBAEN,YAAY,CAAC,GAAC,CAAC;iBAIV,GAAC,oBAAD,GAAC;eAMD,GAAC,oBAAD,GAAC;;;;uCA9BN,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG;QAC7C,KAAK,EACQ,GAAC,AADN,CAAC;QACT,SAAS,IAAI,GAAC,CAAC;KAChB;UAIkE,CAAC,oCAAD,CAAC,AAAxB,GAAG,mBAAmB,CAAC,CAAC,CAAC;;;;;;gBAarD,GAAC,oBAAD,GAAC,AAFR,qBAEN,YAAY,CAAC,GAAC,CAAC;iBAIV,GAAC,oBAAD,GAAC;eAMD,GAAC,oBAAD,GAAC;;8BAoB4D,GAAC,wCAAD,GAAC,AAAnB,KAAK,YAAY,CAAC,GAAC,CAAC,GAE1E,CAAC"}
package/dist/choice.js CHANGED
@@ -5,7 +5,8 @@ const _1 = require("./_");
5
5
  const Choice = (config, base = _1.Empty) => {
6
6
  class $Choice extends base {
7
7
  value;
8
- static $name = "choice";
8
+ static $shape = "choice";
9
+ static $of = config;
9
10
  static values = config;
10
11
  constructor(value) {
11
12
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"choice.js","sourceRoot":"","sources":["../src/choice.ts"],"names":[],"mappings":";;;AAAA,0BAOa;AAgBN,MAAM,MAAM,GAAG,CAIpB,MAAS,EACT,OAAU,QAAY,EACtB,EAAE;IAGF,MAAe,OAAQ,SAAS,IAA+B;QAK1C;QAJnB,MAAM,CAAC,KAAK,GAAG,QAAiB,CAAC;QAEjC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAEvB,YAAmB,KAAqB;YACtC,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAgB;QAExC,CAAC;QAED,EAAE,CAAmB,KAAQ;YAO3B,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC9B,CAAC;QAED,KAAK,CAAuB,OAAU;YACpC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,OAAO;gBAAE,OAAO,OAAO,EAAE,CAAC;YAC9B,OAAQ,OAA4B,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,SAAS;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAa;YAEb,OAAO,IAAK,IAAY,CAAC,KAAY,CAAoB,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,YAAY,CAEjB,KAAa;YAEb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,UAAU,CAEf,KAAa;YAEb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;QAEvB;YACE,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAY,CAAC,MAAM,CAAC,GAAG;oBACtB,OAAO,IAAI,IAAI,CAAC,MAAa,CAAC,CAAC;gBACjC,CAAC,CAAC;YACJ,CAAC;QACH,CAAC;;IAGH,OAAO,OAIJ,CAAC;AACN,CAAC,CAAC;AAzEW,QAAA,MAAM,UAyEjB"}
1
+ {"version":3,"file":"choice.js","sourceRoot":"","sources":["../src/choice.ts"],"names":[],"mappings":";;;AAAA,0BAOa;AAeN,MAAM,MAAM,GAAG,CAIpB,MAAS,EACT,OAAU,QAAY,EACtB,EAAE;IAGF,MAAe,OAAQ,SAAS,IAA+B;QAM1C;QALnB,MAAM,CAAC,MAAM,GAAG,QAAiB,CAAC;QAElC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAEvB,YAAmB,KAAqB;YACtC,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAgB;QAExC,CAAC;QAED,EAAE,CACA,KAAQ;YAKR,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QAC9B,CAAC;QAED,KAAK,CAA6B,OAAU;YAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,OAAO;gBAAE,OAAO,OAAO,EAAE,CAAC;YAC9B,OAAQ,OAA4B,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC;QAED,SAAS;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAa;YAEb,OAAO,IAAK,IAAY,CAAC,KAAY,CAAoB,CAAC;QAC5D,CAAC;QACD,MAAM,CAAC,YAAY,CAEjB,KAAa;YAEb,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,UAAU,CAEf,KAAa;YAEb,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;QAEvB;YACE,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAY,CAAC,MAAM,CAAC,GAAG;oBACtB,OAAO,IAAI,IAAI,CAAC,MAAa,CAAC,CAAC;gBACjC,CAAC,CAAC;YACJ,CAAC;QACH,CAAC;;IAGH,OAAO,OAIJ,CAAC;AACN,CAAC,CAAC;AAzEW,QAAA,MAAM,UAyEjB"}
package/dist/class.d.ts CHANGED
@@ -12,7 +12,8 @@ export declare const Class: <S extends Constructor<{
12
12
  value: InstanceType<B>;
13
13
  serialize<T extends any>(this: T): Expand<ReturnType<InstanceType<S>["serialize"]>>;
14
14
  }) & {
15
- $name: "class";
15
+ $shape: "class";
16
+ $of: S;
16
17
  deserialize<T_1 extends Constructor<any, any[]>>(this: T_1, value: Expand<ReturnType<InstanceType<S>["serialize"]>>): InstanceType<T_1>;
17
18
  $deserialize(value: ReturnType<InstanceType<S>["serialize"]>): InstanceType<S>;
18
19
  $serialize<T_2 extends any>(this: T_2, value: InstanceType<S>): ReturnType<InstanceType<S>["serialize"]>;
@@ -1 +1 @@
1
- {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../src/class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;IAAE,SAAS,IAAI,GAAG,CAAA;CAAE,CAAC,GAAG;IAC/D,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,KAAK;iBACqB,GAAG;;uBACnB,GAAG,GAAG,GAAG;0DAI1B,CAAC,gDASuB,aAAa,CAAC,CAAC;WAAf,aAAa,CAAC,CAAC;mCAWP,CAAC;;;;;;;CAqBtC,CAAC"}
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../src/class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;IAAE,SAAS,IAAI,GAAG,CAAA;CAAE,CAAC,GAAG;IAC/D,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,KAAK,GAMZ,CAAC;iBALgC,GAAG;;uBACnB,GAAG,GAAG,GAAG;GAeW,CAAC,sDAXtC,CAAC,gDAWuB,YAAY,CAAC,CAAC,CAAC;WAAf,YAAY,CAAC,CAAC,CAAC;cAWP,CAAC,oBAAD,CAAC;;;;gBAJnB,GAAC,wCAAD,GAAC,AAFR,4DAEN,YAAY,CAAC,GAAC,CAAC;;eAaV,GAAC,oBAAD,GAAC;;CAYZ,CAAC"}
package/dist/class.js CHANGED
@@ -5,7 +5,8 @@ const _1 = require("./_");
5
5
  const Class = (of, base = _1.Empty) => {
6
6
  class $Class extends base {
7
7
  value;
8
- static $name = "class";
8
+ static $shape = "class";
9
+ static $of = of;
9
10
  constructor(value) {
10
11
  super();
11
12
  this.value = value;
package/dist/class.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../src/class.ts"],"names":[],"mappings":";;;AAAA,0BAAsE;AAM/D,MAAM,KAAK,GAAG,CAMnB,EAAK,EACL,IAAI,GAAG,QAAK,EACZ,EAAE;IAIF,MAAe,MAAO,SAAQ,IAAI;QAGb;QAFnB,MAAM,CAAC,KAAK,GAAG,OAAgB,CAAC;QAEhC,YAAmB,KAAsB;YACvC,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAiB;QAEzC,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAyB;YAEzB,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAoB,CAAC;QAC5D,CAAC;QAED,SAAS;YACP,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,KAAiB;YACnC,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAa;YAEb,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;;IAKzB,OAAO,MAAe,CAAC;AACzB,CAAC,CAAC;AA/CW,QAAA,KAAK,SA+ChB"}
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../src/class.ts"],"names":[],"mappings":";;;AAAA,0BAAsE;AAM/D,MAAM,KAAK,GAAG,CAMnB,EAAK,EACL,IAAI,GAAG,QAAK,EACZ,EAAE;IAIF,MAAe,MAAO,SAAQ,IAAI;QAKb;QAJnB,MAAM,CAAC,MAAM,GAAG,OAAgB,CAAC;QAEjC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAEhB,YAAmB,KAAsB;YACvC,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAiB;QAEzC,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAyB;YAEzB,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAoB,CAAC;QAC5D,CAAC;QAED,SAAS;YACP,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,KAAiB;YACnC,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAa;YAEb,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;;IAKzB,OAAO,MAAe,CAAC;AACzB,CAAC,CAAC;AAjDW,QAAA,KAAK,SAiDhB"}
package/dist/dict.d.ts CHANGED
@@ -2,17 +2,30 @@ import { DefinitionOf, Shorthand, Expand, AbstractConstructor, Constructor, Empt
2
2
  export type DictShorthand = {
3
3
  [key: string]: Shorthand;
4
4
  };
5
- export declare const Dict: <S extends {
5
+ type Internal<S extends DictShorthand> = {
6
+ Definition: {
7
+ -readonly [K in keyof S]: DefinitionOf<S[K]>;
8
+ };
9
+ Serialized: {
10
+ -readonly [K in keyof S]: ReturnType<DefinitionOf<S[K]>["$serialize"]>;
11
+ };
12
+ Inline: {
13
+ -readonly [K in keyof S]: DefinitionOf<S[K]>["$inline"];
14
+ };
15
+ };
16
+ export declare const Dict: <const S extends {
6
17
  [key: string]: any;
7
- }, B extends AbstractConstructor<{}> = typeof Empty>(definition: S, base?: B) => Omit<B, ""> & Omit<(abstract new (...args: any[]) => {
8
- serialize(): Expand<{ [K in keyof S]: ReturnType<{ [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K]["$serialize"]>; }>;
18
+ }, B extends AbstractConstructor<{}> = typeof Empty, Cache extends Internal<S> = Internal<S>>(of: S, base?: B) => Omit<B, ""> & Omit<(abstract new (...args: any[]) => {
19
+ serialize(): Expand<Cache["Serialized"]>;
9
20
  }) & {
10
- $name: "dict";
11
- deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<{ [K in keyof S]: ReturnType<{ [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K]["$serialize"]>; }>): InstanceType<T>;
12
- $deserialize<T_1 extends any>(this: T_1, value: { [K in keyof S]: ReturnType<{ [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K]["$serialize"]>; }): { [K_2 in keyof { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }]: { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K_2]["$inline"]; };
13
- $serialize<T_2 extends any>(this: T_2, value: InstanceType<T_2>): { [K in keyof S]: ReturnType<{ [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K]["$serialize"]>; };
14
- $inline: { [K_2 in keyof { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }]: { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K_2]["$inline"]; };
15
- }, ""> & (abstract new (value: Expand<{ [K_2 in keyof { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }]: { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K_2]["$inline"]; }>) => InstanceType<B> & {
16
- serialize(): Expand<{ [K in keyof S]: ReturnType<{ [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K]["$serialize"]>; }>;
17
- } & { [K_2 in keyof { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }]: { [K_1 in keyof S]: DefinitionOf<S[K_1], B>; }[K_2]["$inline"]; });
21
+ $shape: "dict";
22
+ $of: S;
23
+ deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<Cache["Serialized"]>): InstanceType<T>;
24
+ $deserialize<T_1 extends any>(this: T_1, value: Cache["Serialized"]): Cache["Inline"];
25
+ $serialize<T_2 extends any>(this: T_2, value: InstanceType<T_2>): Cache["Serialized"];
26
+ $inline: Cache["Inline"];
27
+ }, ""> & (abstract new (value: Expand<Cache["Inline"]>) => InstanceType<B> & {
28
+ serialize(): Expand<Cache["Serialized"]>;
29
+ } & Cache["Inline"]);
30
+ export {};
18
31
  //# sourceMappingURL=dict.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EAGT,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,KAAK,EACN,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEzD,eAAO,MAAM,IAAI;;iEAIH,CAAC,SACP,CAAC,gDAcgB,GAAG,EAAE;;;;yDAUlB,CAAC,oHAEN,aAAa,CAAC,CAAC;;;;;;uIAyCrB,CAAC"}
1
+ {"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,SAAS,EAET,MAAM,EACN,mBAAmB,EACnB,WAAW,EACX,KAAK,EACN,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,aAAa,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEzD,KAAK,QAAQ,CAAC,CAAC,SAAS,aAAa,IAAI;IACvC,UAAU,EAAE;QAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC;IAC7D,UAAU,EAAE;QACV,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;KACvE,CAAC;IACF,MAAM,EAAE;QACN,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;KACxD,CAAC;CACH,CAAC;AAEF,eAAO,MAAM,IAAI,SAKX,CAAC;;GAyDa,CAAC,iDAAY,KAAK,wCAzDhC,CAAC,SAyDa,CAAC,AAxDZ,gDAMgB,GAAG,EAAE;iBAKb,MAAM,CA6CU,KAAK,AA7CT,CAAC,YAAY,CAAC,CAAC;;;;gBAOxB,CAAC,wCAAD,CAAC,AAFR,SACA,MAAM,CAuCc,KAAK,AAvCb,CAAC,YAAY,CAAC,CAAC,GACjC,YAAY,CAAC,CAAC,CAAC;iBAMV,GAAC,oBAAD,GAAC,SAgCoB,KAAK,AA/BpB,CAAC,YAAY,CAAC,GA+BC,KAAK,AA9B1B,CAAC,QAAQ,CAAC;eAYV,GAAC,oBAAD,GAAC,SACA,YAAY,CAAC,AADd,GACe,CAAC,GAiBK,KAAK,AAhB1B,CAAC,YAAY,CAAC;aAgBO,KAAK,AALb,CAAC,QAAQ,CAAC;+BAIxB,MAAM,CACgB,KAAK,AADf,CAAC,QAAQ,CAAC,CAAC;iBA5CjB,MAAM,CA6CU,KAAK,AA7CT,CAAC,YAAY,CAAC,CAAC;oBAgD3C,CAAC"}
package/dist/dict.js CHANGED
@@ -2,9 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Dict = void 0;
4
4
  const _1 = require("./_");
5
- const Dict = (definition, base = _1.Empty) => {
5
+ const Dict = (of, base = _1.Empty) => {
6
6
  class $Dict extends base {
7
- static $name = "dict";
7
+ static $shape = "dict";
8
+ static $of = of;
8
9
  constructor(...args) {
9
10
  super();
10
11
  Object.assign(this, args[0]);
@@ -17,7 +18,7 @@ const Dict = (definition, base = _1.Empty) => {
17
18
  return new this(runtime);
18
19
  }
19
20
  static $deserialize(value) {
20
- const split = Object.entries(definition);
21
+ const split = Object.entries(of);
21
22
  const transform = split.map(([key, child]) => {
22
23
  const longhand = (0, _1.Shape)(child);
23
24
  const deserialized = longhand.$deserialize(value[key]);
@@ -27,7 +28,7 @@ const Dict = (definition, base = _1.Empty) => {
27
28
  return merge;
28
29
  }
29
30
  static $serialize(value) {
30
- const split = Object.entries(definition);
31
+ const split = Object.entries(of);
31
32
  const transform = split.map(([key, child]) => {
32
33
  const longhand = (0, _1.Shape)(child);
33
34
  const serialized = longhand.$serialize(value[key]);
package/dist/dict.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"dict.js","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":";;;AAAA,0BASa;AAIN,MAAM,IAAI,GAAG,CAIlB,UAAa,EACb,OAAU,QAAY,EACtB,EAAE;IAUF,MAAe,KAAM,SAAS,IAAuC;QACnE,MAAM,CAAC,KAAK,GAAG,MAAe,CAAC;QAE/B,YAAY,GAAG,IAAW;YACxB,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,SAAS;YACP,OAAO,KAAK,CAAC,UAAU,CAAC,IAAW,CAAQ,CAAC;QAC9C,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAyB;YAEzB,MAAM,OAAO,GAAI,IAAY,CAAC,YAAY,CAAC,KAAY,CAAC,CAAC;YACzD,OAAO,IAAI,IAAI,CAAC,OAAc,CAAQ,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,YAAY,CAEjB,KAAiB;YAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,MAAM,QAAQ,GAAG,IAAA,QAAK,EAAC,KAAK,CAAQ,CAAC;gBACrC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAsB;YAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,MAAM,QAAQ,GAAG,IAAA,QAAK,EAAC,KAAY,CAAQ,CAAC;gBAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,KAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;;IAOzB,OAAO,KAA+B,CAAC;AACzC,CAAC,CAAC;AAxEW,QAAA,IAAI,QAwEf"}
1
+ {"version":3,"file":"dict.js","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":";;;AAAA,0BAQa;AAcN,MAAM,IAAI,GAAG,CAKlB,EAAK,EACL,OAAU,QAAY,EACtB,EAAE;IACF,MAAe,KAAM,SAAS,IAAuC;QACnE,MAAM,CAAC,MAAM,GAAG,MAAe,CAAC;QAChC,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAEhB,YAAY,GAAG,IAAW;YACxB,KAAK,EAAE,CAAC;YACR,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,SAAS;YACP,OAAO,KAAK,CAAC,UAAU,CAAC,IAAW,CAAQ,CAAC;QAC9C,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAkC;YAElC,MAAM,OAAO,GAAI,IAAY,CAAC,YAAY,CAAC,KAAY,CAAC,CAAC;YACzD,OAAO,IAAI,IAAI,CAAC,OAAc,CAAQ,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,YAAY,CAEjB,KAA0B;YAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,MAAM,QAAQ,GAAG,IAAA,QAAK,EAAC,KAAK,CAAQ,CAAC;gBACrC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAsB;YAEtB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,MAAM,QAAQ,GAAG,IAAA,QAAK,EAAC,KAAY,CAAQ,CAAC;gBAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAE,KAAa,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5D,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,KAAY,CAAC;QACtB,CAAC;QAED,MAAM,CAAC,OAAO,CAAkB;;IAOlC,OAAO,KAA+B,CAAC;AACzC,CAAC,CAAC;AAjEW,QAAA,IAAI,QAiEf"}
package/dist/dict.spec.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const dict_1 = require("./dict");
4
- const literal_1 = require("./literal");
4
+ const primitive_1 = require("./primitive");
5
5
  const test_1 = require("./test");
6
6
  describe("Dict", () => {
7
7
  it("class definition", () => {
8
8
  class Test extends (0, dict_1.Dict)({
9
- a: (0, literal_1.Literal)(String),
9
+ a: (0, primitive_1.Primitive)(String),
10
10
  b: Number,
11
11
  }) {
12
12
  test = true;
@@ -65,7 +65,7 @@ describe("Dict", () => {
65
65
  (0, test_1.ex)(b.longhand).toStrictEqual({ long: 1 }).ok;
66
66
  });
67
67
  it("referenced definition", () => {
68
- class A extends (0, dict_1.Dict)({ a: (0, literal_1.Literal)(Number) }) {
68
+ class A extends (0, dict_1.Dict)({ a: (0, primitive_1.Primitive)(Number) }) {
69
69
  }
70
70
  class Test extends (0, dict_1.Dict)({ nested: A }) {
71
71
  test = true;
@@ -101,7 +101,7 @@ describe("Dict", () => {
101
101
  }
102
102
  return I;
103
103
  };
104
- class Test extends Testable({ a: (0, literal_1.Literal)(Number) }) {
104
+ class Test extends Testable({ a: (0, primitive_1.Primitive)(Number) }) {
105
105
  test = true;
106
106
  // @ts-expect-error is not assignable to parameter of type 'true'
107
107
  abstract = false;
@@ -142,7 +142,7 @@ describe("Dict", () => {
142
142
  }
143
143
  return (0, dict_1.Dict)(shape, I);
144
144
  };
145
- class Test extends Testable({ a: (0, literal_1.Literal)(Number) }) {
145
+ class Test extends Testable({ a: (0, primitive_1.Primitive)(Number) }) {
146
146
  test = true;
147
147
  // @ts-expect-error is not assignable to parameter of type 'true'
148
148
  abstract = false;
@@ -1 +1 @@
1
- {"version":3,"file":"dict.spec.js","sourceRoot":"","sources":["../src/dict.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dict.spec.js","sourceRoot":"","sources":["../src/dict.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { Expand, DefinitionOf, AbstractConstructor, Empty, type Shorthand, type Definition } from "./_";
2
+ import { ClassShorthand } from "./class";
3
+ import { type DictShorthand } from "./dict";
4
+ type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
5
+ type PopUnion<U> = UnionToOvlds<U> extends (a: infer A) => void ? A : never;
6
+ type UnionToArray<T, A extends unknown[] = []> = IsUnion<T> extends true ? UnionToArray<Exclude<T, PopUnion<T>>, [PopUnion<T>, ...A]> : [T, ...A];
7
+ type IsUnion<T> = [T] extends [UnionToIntersection<T>] ? false : true;
8
+ type CountUnion<T> = UnionToArray<T> extends infer U extends any[] ? U["length"] : never;
9
+ type UnshiftUnion<U> = UnionToArray<U> extends [infer F, ...any[]] ? F : never;
10
+ type UnionToOvlds<U> = UnionToIntersection<U extends any ? (f: U) => void : never>;
11
+ type IsStringLiteral<T> = T extends string ? string extends T ? false : true : false;
12
+ type FindBestKeyForMatching<FromUnion> = UnshiftUnion<keyof FromUnion extends infer K ? K extends keyof FromUnion ? CountUnion<Pick<FromUnion, K>[K]> extends CountUnion<FromUnion> ? [IsStringLiteral<FromUnion[K]>] extends [true] ? K : never : never : never : never>;
13
+ type MatcherConfig = {
14
+ [key: string]: any;
15
+ };
16
+ type ExhaustiveMatcher<C> = C extends MatcherConfig ? {
17
+ [key in keyof C]: (value: Expand<DefinitionOf<C[key]>["$inline"]>) => any;
18
+ } : never;
19
+ type UnsafeFallthroughMatcher<C> = C extends MatcherConfig ? {
20
+ [key in keyof C]?: (value: Expand<DefinitionOf<C[key]>["$inline"]>) => any;
21
+ } & {
22
+ _: (value: Expand<DefinitionOf<C[keyof C]>["$inline"]>) => any;
23
+ } : never;
24
+ type PartialMatcher<C> = C extends MatcherConfig ? {
25
+ [key in keyof C]?: (value: Expand<DefinitionOf<C[key]>["$inline"]>) => any;
26
+ } : never;
27
+ type Matcher<C> = C extends MatcherConfig ? ExhaustiveMatcher<C> | UnsafeFallthroughMatcher<C> | PartialMatcher<C> : never;
28
+ type Config = DictShorthandInput | ClassInput | ClassDictInput | DictInput;
29
+ type ClassInput = ClassShorthand;
30
+ type ClassDictInput = ClassShorthand & {
31
+ $of: {};
32
+ };
33
+ type DictInput = {
34
+ $of: {};
35
+ };
36
+ type DictShorthandInput = DictShorthand;
37
+ type Access<T, K> = K extends keyof T ? T[K] : never;
38
+ type Entries<T extends readonly any[], K> = UnionToIntersection<{
39
+ [i in keyof T]: Access<GetShape<T[i]>, K> extends infer U extends string ? IsStringLiteral<U> extends true ? {
40
+ [key in U]: T[i] extends DictShorthandInput ? DefinitionOf<T[i]> : T[i];
41
+ } : never : never;
42
+ }[number]>;
43
+ type GetShape<S extends Config> = S extends DictInput ? S["$of"] : S extends ClassInput ? Access<S, "prototype"> : S;
44
+ export type BestKey<S extends readonly Config[]> = {
45
+ [key in keyof S]: GetShape<S[key]>;
46
+ }[number] extends infer U ? FindBestKeyForMatching<U> : never;
47
+ export type DiscriminatedUnionConfiguration = readonly Config[];
48
+ export declare function findBestKey(config: DiscriminatedUnionConfiguration): string;
49
+ export declare function prepareShapeMap(config: DiscriminatedUnionConfiguration, key: string): {
50
+ [key: string]: Definition;
51
+ };
52
+ type Internal<S extends DiscriminatedUnionConfiguration, K extends BestKey<S>> = {
53
+ Map: Entries<S, K>;
54
+ Serialized: ReturnType<DefinitionOf<S[number]>["$serialize"]>;
55
+ Inline: DefinitionOf<S[number]>["$inline"];
56
+ };
57
+ export declare const DiscriminatedUnion: <S extends DiscriminatedUnionConfiguration, K extends BestKey<S>, const B extends AbstractConstructor<{}> = typeof Empty, IInternal extends Internal<S, K> = Internal<S, K>>(of: S, base?: B | undefined) => Omit<B, "prototype"> & Omit<(abstract new (value: IInternal["Inline"]) => {
58
+ value: IInternal["Inline"];
59
+ serialize(): Expand<IInternal["Serialized"]>;
60
+ match<M extends Matcher<IInternal["Map"]>, F extends M extends ExhaustiveMatcher<IInternal["Map"]> ? [] : M extends UnsafeFallthroughMatcher<IInternal["Map"]> ? [] : M extends PartialMatcher<IInternal["Map"]> ? [fallback: (value: Omit<IInternal["Map"], keyof M>[keyof Omit<IInternal["Map"], keyof M>] extends infer U extends Shorthand ? Expand<DefinitionOf<U>["$inline"]> : never) => any] : []>(matcher: M, ...__0_1: F): (M[keyof M] extends (...args: any[]) => any ? ReturnType<M[keyof M]> : never) | (F[0] extends (...args: any[]) => any ? ReturnType<F[0]> : never);
61
+ }) & {
62
+ serialized: IInternal["Serialized"];
63
+ $of: S;
64
+ $shape: "discriminated-union";
65
+ deserialize<T extends any>(this: T, value: Expand<IInternal["Serialized"]>): InstanceType<T>;
66
+ $deserialize<T_1 extends any>(this: T_1, value: IInternal["Serialized"]): IInternal["Inline"];
67
+ $serialize<T_2 extends any>(this: T_2, value: IInternal["Inline"]): IInternal["Serialized"];
68
+ $inline: IInternal["Inline"];
69
+ }, "prototype"> & (abstract new (value: Expand<IInternal["Inline"]>) => InstanceType<B> & {
70
+ value: IInternal["Inline"];
71
+ serialize(): Expand<IInternal["Serialized"]>;
72
+ match<M extends Matcher<IInternal["Map"]>, F extends M extends ExhaustiveMatcher<IInternal["Map"]> ? [] : M extends UnsafeFallthroughMatcher<IInternal["Map"]> ? [] : M extends PartialMatcher<IInternal["Map"]> ? [fallback: (value: Omit<IInternal["Map"], keyof M>[keyof Omit<IInternal["Map"], keyof M>] extends infer U extends Shorthand ? Expand<DefinitionOf<U>["$inline"]> : never) => any] : []>(matcher: M, ...__0_1: F): (M[keyof M] extends (...args: any[]) => any ? ReturnType<M[keyof M]> : never) | (F[0] extends (...args: any[]) => any ? ReturnType<F[0]> : never);
73
+ });
74
+ export {};
75
+ //# sourceMappingURL=discriminated-union.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../src/discriminated-union.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiscriminatedUnion = void 0;
4
+ exports.findBestKey = findBestKey;
5
+ exports.prepareShapeMap = prepareShapeMap;
6
+ const _1 = require("./_");
7
+ function findBestKey(config) {
8
+ const hash = {};
9
+ for (const c of config) {
10
+ const shape = "$of" in c ? c.$of : c;
11
+ for (const key in shape) {
12
+ const k = key;
13
+ if (hash[key]) {
14
+ hash[key].add(shape[k]);
15
+ }
16
+ else {
17
+ hash[key] = new Set([shape[k]]);
18
+ }
19
+ }
20
+ }
21
+ const key = Object.entries(hash)
22
+ .map(([key, value]) => [key, value.size])
23
+ .filter(([_, value]) => value === config.length)
24
+ .sort((a, b) => b[1] - a[1])?.[0]?.[0];
25
+ if (!key) {
26
+ throw new Error("Could not find key for DiscriminatedUnion");
27
+ }
28
+ return key;
29
+ }
30
+ function prepareShapeMap(config, key) {
31
+ return config.reduce((acc, c) => {
32
+ const shape = (0, _1.Shape)(c);
33
+ // Here, we are handling the two cases of the configuration:
34
+ // - the first one is when the configuration is a Definition directly.
35
+ // we can access the discriminator directly from the shape $of property
36
+ // - the second one is when the configuration is a DictShorthand or a plain Class.
37
+ // we first have to turn it into a Definition before accessing the discriminator
38
+ // Dict $of property references the configuration provided, which allows us to capture the discriminator
39
+ // Class $of property references the constructor of the class, which allows us to capture the discriminator
40
+ // which is mandatorily defined on the static side of the class
41
+ const discriminator = key in c
42
+ ? c[key]
43
+ : "$of" in c
44
+ ? c.$of[key]
45
+ : shape.$of[key];
46
+ acc[discriminator] = shape;
47
+ return acc;
48
+ }, {});
49
+ }
50
+ const DiscriminatedUnion = (of, ...args) => {
51
+ const base = args[0] || _1.Empty;
52
+ const key = findBestKey(of);
53
+ const map = prepareShapeMap(of, key);
54
+ class $DiscriminatedUnion extends base {
55
+ value;
56
+ constructor(value) {
57
+ super();
58
+ this.value = value;
59
+ }
60
+ static serialized;
61
+ static $of = of;
62
+ static $shape = "discriminated-union";
63
+ serialize() {
64
+ return $DiscriminatedUnion.$serialize(this.value);
65
+ }
66
+ match(...[matcher, fallback]) {
67
+ const element = this.value;
68
+ const discriminant = element[key];
69
+ const handler = matcher[discriminant];
70
+ if (handler) {
71
+ return handler(element);
72
+ }
73
+ if (fallback) {
74
+ return fallback(element);
75
+ }
76
+ if (matcher._) {
77
+ return matcher._(element);
78
+ }
79
+ throw new Error("Non-exhaustive match");
80
+ }
81
+ static deserialize(value) {
82
+ return new this(this.$deserialize(value));
83
+ }
84
+ static $deserialize(value) {
85
+ const definition = map[value[key]];
86
+ if (!definition) {
87
+ throw new Error("Cannot deserialize DiscriminatedUnion");
88
+ }
89
+ return definition.$deserialize(value);
90
+ }
91
+ static $serialize(value) {
92
+ return map[value[key]].$serialize(value);
93
+ }
94
+ static $inline;
95
+ }
96
+ return $DiscriminatedUnion;
97
+ };
98
+ exports.DiscriminatedUnion = DiscriminatedUnion;
99
+ //# sourceMappingURL=discriminated-union.js.map