@ddd-ts/shape 0.0.0-elo.1 → 0.0.0-eventviz.1

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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_.d.ts +10 -9
  3. package/dist/_.d.ts.map +1 -1
  4. package/dist/_.js +34 -47
  5. package/dist/_.mjs +36 -0
  6. package/dist/addons/microsecond-timestamp.d.ts +24 -0
  7. package/dist/addons/microsecond-timestamp.d.ts.map +1 -0
  8. package/dist/addons/microsecond-timestamp.js +62 -0
  9. package/dist/addons/microsecond-timestamp.mjs +61 -0
  10. package/dist/choice.d.ts +16 -28
  11. package/dist/choice.d.ts.map +1 -1
  12. package/dist/choice.js +43 -46
  13. package/dist/choice.mjs +44 -0
  14. package/dist/class.d.ts +10 -8
  15. package/dist/class.d.ts.map +1 -1
  16. package/dist/class.js +29 -29
  17. package/dist/class.mjs +30 -0
  18. package/dist/dict.d.ts +38 -13
  19. package/dist/dict.d.ts.map +1 -1
  20. package/dist/dict.js +40 -43
  21. package/dist/dict.mjs +41 -0
  22. package/dist/discriminated-union.d.ts +74 -0
  23. package/dist/discriminated-union.d.ts.map +1 -0
  24. package/dist/discriminated-union.js +66 -0
  25. package/dist/discriminated-union.mjs +64 -0
  26. package/dist/discriminated-union.spec.d.ts +2 -0
  27. package/dist/discriminated-union.spec.d.ts.map +1 -0
  28. package/dist/either.d.ts +57 -13
  29. package/dist/either.d.ts.map +1 -1
  30. package/dist/either.js +50 -62
  31. package/dist/either.mjs +51 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +32 -27
  35. package/dist/index.mjs +15 -0
  36. package/dist/literal.d.ts +13 -38
  37. package/dist/literal.d.ts.map +1 -1
  38. package/dist/literal.js +26 -29
  39. package/dist/literal.mjs +27 -0
  40. package/dist/mapping.d.ts +17 -13
  41. package/dist/mapping.d.ts.map +1 -1
  42. package/dist/mapping.js +44 -49
  43. package/dist/mapping.mjs +45 -0
  44. package/dist/multiple.d.ts +17 -102
  45. package/dist/multiple.d.ts.map +1 -1
  46. package/dist/multiple.js +118 -105
  47. package/dist/multiple.mjs +119 -0
  48. package/dist/nothing.d.ts +3 -3
  49. package/dist/nothing.d.ts.map +1 -1
  50. package/dist/nothing.js +18 -18
  51. package/dist/nothing.mjs +19 -0
  52. package/dist/optional.d.ts +18 -15
  53. package/dist/optional.d.ts.map +1 -1
  54. package/dist/optional.js +33 -38
  55. package/dist/optional.mjs +34 -0
  56. package/dist/primitive.d.ts +38 -0
  57. package/dist/primitive.d.ts.map +1 -0
  58. package/dist/primitive.js +30 -0
  59. package/dist/primitive.mjs +30 -0
  60. package/dist/primitive.spec.d.ts +2 -0
  61. package/dist/primitive.spec.d.ts.map +1 -0
  62. package/dist/test.d.ts +11 -11
  63. package/dist/test.d.ts.map +1 -1
  64. package/package.json +23 -9
  65. package/dist/_.js.map +0 -1
  66. package/dist/choice.js.map +0 -1
  67. package/dist/choice.spec.js +0 -147
  68. package/dist/choice.spec.js.map +0 -1
  69. package/dist/class.js.map +0 -1
  70. package/dist/class.spec.js +0 -39
  71. package/dist/class.spec.js.map +0 -1
  72. package/dist/dict.js.map +0 -1
  73. package/dist/dict.spec.js +0 -180
  74. package/dist/dict.spec.js.map +0 -1
  75. package/dist/either.js.map +0 -1
  76. package/dist/either.spec.js +0 -211
  77. package/dist/either.spec.js.map +0 -1
  78. package/dist/index.js.map +0 -1
  79. package/dist/literal.js.map +0 -1
  80. package/dist/literal.spec.js +0 -162
  81. package/dist/literal.spec.js.map +0 -1
  82. package/dist/mapping.js.map +0 -1
  83. package/dist/mapping.spec.js +0 -207
  84. package/dist/mapping.spec.js.map +0 -1
  85. package/dist/multiple.js.map +0 -1
  86. package/dist/multiple.spec.js +0 -208
  87. package/dist/multiple.spec.js.map +0 -1
  88. package/dist/nothing.js.map +0 -1
  89. package/dist/nothing.spec.js +0 -172
  90. package/dist/nothing.spec.js.map +0 -1
  91. package/dist/optional.js.map +0 -1
  92. package/dist/optional.spec.js +0 -172
  93. package/dist/optional.spec.js.map +0 -1
  94. package/dist/test.js +0 -46
  95. package/dist/test.js.map +0 -1
@@ -1,105 +1,20 @@
1
- import { Definition, Expand, Shorthand, DefinitionOf, AbstractConstructor, Empty, Constructor } from "./_";
2
- export type MultipleShorthand = (Definition | Shorthand)[];
1
+ import { type Definition, type Expand, type Shorthand, type DefinitionOf, type AbstractConstructor, Empty, type Constructor } from "./_";
3
2
  export type MultipleConfiguration = Definition | Shorthand;
4
- export declare const Multiple: <const S extends MultipleConfiguration, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: DefinitionOf<S, B>["$inline"][]) => {
5
- value: DefinitionOf<S, B>["$inline"][];
6
- serialize(): Expand<ReturnType<DefinitionOf<S, B>["$serialize"]>>[];
7
- readonly map: <U>(callbackfn: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => U, thisArg?: any) => U[];
8
- readonly reduce: {
9
- (callbackfn: (previousValue: DefinitionOf<S, B>["$inline"], currentValue: DefinitionOf<S, B>["$inline"], currentIndex: number, array: DefinitionOf<S, B>["$inline"][]) => DefinitionOf<S, B>["$inline"]): DefinitionOf<S, B>["$inline"];
10
- (callbackfn: (previousValue: DefinitionOf<S, B>["$inline"], currentValue: DefinitionOf<S, B>["$inline"], currentIndex: number, array: DefinitionOf<S, B>["$inline"][]) => DefinitionOf<S, B>["$inline"], initialValue: DefinitionOf<S, B>["$inline"]): DefinitionOf<S, B>["$inline"];
11
- <U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S, B>["$inline"], currentIndex: number, array: DefinitionOf<S, B>["$inline"][]) => U_1, initialValue: U_1): U_1;
12
- };
13
- readonly filter: {
14
- <S_1 extends DefinitionOf<S, B>["$inline"]>(predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => value is S_1, thisArg?: any): S_1[];
15
- (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, B>["$inline"][];
16
- };
17
- readonly forEach: (callbackfn: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => void, thisArg?: any) => void;
18
- readonly some: (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any) => boolean;
19
- readonly every: {
20
- <S_2 extends DefinitionOf<S, B>["$inline"]>(predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => value is S_2, thisArg?: any): this is S_2[];
21
- (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any): boolean;
22
- };
23
- readonly find: {
24
- <S_3 extends DefinitionOf<S, B>["$inline"]>(predicate: (value: DefinitionOf<S, B>["$inline"], index: number, obj: DefinitionOf<S, B>["$inline"][]) => value is S_3, thisArg?: any): S_3 | undefined;
25
- (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, obj: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, B>["$inline"] | undefined;
26
- };
27
- readonly findIndex: (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, obj: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any) => number;
28
- readonly indexOf: (searchElement: DefinitionOf<S, B>["$inline"], fromIndex?: number | undefined) => number;
29
- readonly lastIndexOf: (searchElement: DefinitionOf<S, B>["$inline"], fromIndex?: number | undefined) => number;
30
- readonly includes: (searchElement: DefinitionOf<S, B>["$inline"], fromIndex?: number | undefined) => boolean;
31
- readonly keys: () => IterableIterator<number>;
32
- readonly values: () => IterableIterator<DefinitionOf<S, B>["$inline"]>;
33
- readonly entries: () => IterableIterator<[number, DefinitionOf<S, B>["$inline"]]>;
34
- readonly at: (index: number) => DefinitionOf<S, B>["$inline"] | undefined;
35
- readonly concat: {
36
- (...items: ConcatArray<DefinitionOf<S, B>["$inline"]>[]): DefinitionOf<S, B>["$inline"][];
37
- (...items: (DefinitionOf<S, B>["$inline"] | ConcatArray<DefinitionOf<S, B>["$inline"]>)[]): DefinitionOf<S, B>["$inline"][];
38
- };
39
- readonly flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
40
- readonly splice: {
41
- (start: number, deleteCount?: number | undefined): DefinitionOf<S, B>["$inline"][];
42
- (start: number, deleteCount: number, ...items: DefinitionOf<S, B>["$inline"][]): DefinitionOf<S, B>["$inline"][];
43
- };
44
- readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => U_2 | readonly U_2[], thisArg?: This | undefined) => U_2[];
45
- readonly push: (...items: DefinitionOf<S, B>["$inline"][]) => number;
46
- readonly pop: () => DefinitionOf<S, B>["$inline"] | undefined;
47
- readonly sort: (compareFn?: ((a: DefinitionOf<S, B>["$inline"], b: DefinitionOf<S, B>["$inline"]) => number) | undefined) => DefinitionOf<S, B>["$inline"][];
48
- readonly slice: (start?: number | undefined, end?: number | undefined) => DefinitionOf<S, B>["$inline"][];
49
- readonly length: number;
50
- [Symbol.iterator](): IterableIterator<DefinitionOf<S, B>["$inline"]>;
3
+ export type MultipleShorthand = [any] | readonly [any];
4
+ type Internal<S extends MultipleConfiguration> = {
5
+ Serialized: ReturnType<DefinitionOf<S>["$serialize"]>[];
6
+ Inline: DefinitionOf<S>["$inline"][];
7
+ };
8
+ export declare const Multiple: <const S extends MultipleConfiguration, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => IMultiple<S, B>;
9
+ export type IMultiple<S extends MultipleConfiguration, B extends AbstractConstructor<{}> = typeof Empty> = Omit<B, "prototype"> & (abstract new (value: Internal<S>["Inline"]) => InstanceType<B> & Pick<Internal<S>["Inline"], "at" | "length" | "concat" | "copyWithin" | "entries" | "every" | "fill" | "filter" | "find" | "findIndex" | "flat" | "flatMap" | "forEach" | "includes" | "indexOf" | "join" | "keys" | "lastIndexOf" | "map" | "pop" | "push" | "reduce" | "reduceRight" | "reverse" | "shift" | "slice" | "some" | "sort" | "splice" | "unshift" | "values" | typeof Symbol.iterator> & {
10
+ value: Internal<S>["Inline"];
11
+ serialize(): Expand<Internal<S>["Serialized"]>;
51
12
  }) & {
52
- $name: "multiple";
53
- deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<ReturnType<DefinitionOf<S, B>["$serialize"]>>[]): InstanceType<T>;
54
- $deserialize<T_1 extends Constructor<any, any[]>>(this: T_1, value: ReturnType<DefinitionOf<S, B>["$serialize"]>[]): InstanceType<T_1>;
55
- $serialize(value: DefinitionOf<S, B>["$inline"][]): ReturnType<DefinitionOf<S, B>["$serialize"]>[];
56
- $inline: DefinitionOf<S, B>["$inline"][];
57
- }, ""> & (abstract new (value: Expand<DefinitionOf<S, B>["$inline"]>[]) => InstanceType<B> & {
58
- value: DefinitionOf<S, B>["$inline"][];
59
- serialize(): Expand<ReturnType<DefinitionOf<S, B>["$serialize"]>>[];
60
- readonly map: <U>(callbackfn: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => U, thisArg?: any) => U[];
61
- readonly reduce: {
62
- (callbackfn: (previousValue: DefinitionOf<S, B>["$inline"], currentValue: DefinitionOf<S, B>["$inline"], currentIndex: number, array: DefinitionOf<S, B>["$inline"][]) => DefinitionOf<S, B>["$inline"]): DefinitionOf<S, B>["$inline"];
63
- (callbackfn: (previousValue: DefinitionOf<S, B>["$inline"], currentValue: DefinitionOf<S, B>["$inline"], currentIndex: number, array: DefinitionOf<S, B>["$inline"][]) => DefinitionOf<S, B>["$inline"], initialValue: DefinitionOf<S, B>["$inline"]): DefinitionOf<S, B>["$inline"];
64
- <U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S, B>["$inline"], currentIndex: number, array: DefinitionOf<S, B>["$inline"][]) => U_1, initialValue: U_1): U_1;
65
- };
66
- readonly filter: {
67
- <S_1 extends DefinitionOf<S, B>["$inline"]>(predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => value is S_1, thisArg?: any): S_1[];
68
- (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, B>["$inline"][];
69
- };
70
- readonly forEach: (callbackfn: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => void, thisArg?: any) => void;
71
- readonly some: (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any) => boolean;
72
- readonly every: {
73
- <S_2 extends DefinitionOf<S, B>["$inline"]>(predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => value is S_2, thisArg?: any): this is S_2[];
74
- (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any): boolean;
75
- };
76
- readonly find: {
77
- <S_3 extends DefinitionOf<S, B>["$inline"]>(predicate: (value: DefinitionOf<S, B>["$inline"], index: number, obj: DefinitionOf<S, B>["$inline"][]) => value is S_3, thisArg?: any): S_3 | undefined;
78
- (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, obj: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, B>["$inline"] | undefined;
79
- };
80
- readonly findIndex: (predicate: (value: DefinitionOf<S, B>["$inline"], index: number, obj: DefinitionOf<S, B>["$inline"][]) => unknown, thisArg?: any) => number;
81
- readonly indexOf: (searchElement: DefinitionOf<S, B>["$inline"], fromIndex?: number | undefined) => number;
82
- readonly lastIndexOf: (searchElement: DefinitionOf<S, B>["$inline"], fromIndex?: number | undefined) => number;
83
- readonly includes: (searchElement: DefinitionOf<S, B>["$inline"], fromIndex?: number | undefined) => boolean;
84
- readonly keys: () => IterableIterator<number>;
85
- readonly values: () => IterableIterator<DefinitionOf<S, B>["$inline"]>;
86
- readonly entries: () => IterableIterator<[number, DefinitionOf<S, B>["$inline"]]>;
87
- readonly at: (index: number) => DefinitionOf<S, B>["$inline"] | undefined;
88
- readonly concat: {
89
- (...items: ConcatArray<DefinitionOf<S, B>["$inline"]>[]): DefinitionOf<S, B>["$inline"][];
90
- (...items: (DefinitionOf<S, B>["$inline"] | ConcatArray<DefinitionOf<S, B>["$inline"]>)[]): DefinitionOf<S, B>["$inline"][];
91
- };
92
- readonly flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
93
- readonly splice: {
94
- (start: number, deleteCount?: number | undefined): DefinitionOf<S, B>["$inline"][];
95
- (start: number, deleteCount: number, ...items: DefinitionOf<S, B>["$inline"][]): DefinitionOf<S, B>["$inline"][];
96
- };
97
- readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S, B>["$inline"], index: number, array: DefinitionOf<S, B>["$inline"][]) => U_2 | readonly U_2[], thisArg?: This | undefined) => U_2[];
98
- readonly push: (...items: DefinitionOf<S, B>["$inline"][]) => number;
99
- readonly pop: () => DefinitionOf<S, B>["$inline"] | undefined;
100
- readonly sort: (compareFn?: ((a: DefinitionOf<S, B>["$inline"], b: DefinitionOf<S, B>["$inline"]) => number) | undefined) => DefinitionOf<S, B>["$inline"][];
101
- readonly slice: (start?: number | undefined, end?: number | undefined) => DefinitionOf<S, B>["$inline"][];
102
- readonly length: number;
103
- [Symbol.iterator](): IterableIterator<DefinitionOf<S, B>["$inline"]>;
104
- });
13
+ $shape: "multiple";
14
+ deserialize<T extends Constructor>(this: T, value: Expand<Internal<S>["Serialized"]>): InstanceType<T>;
15
+ $deserialize<T extends Constructor>(this: T, value: Internal<S>["Serialized"]): InstanceType<T>;
16
+ $serialize(value: Internal<S>["Inline"]): Internal<S>["Serialized"];
17
+ $inline: Internal<S>["Inline"];
18
+ };
19
+ export {};
105
20
  //# sourceMappingURL=multiple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACV,MAAM,EAEN,SAAS,EACT,YAAY,EAGZ,mBAAmB,EACnB,KAAK,EACL,WAAW,EACZ,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,iBAAiB,GAAG,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC;AAE3D,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3D,eAAO,MAAM,QAAQ,gGAIf,CAAC,SACC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDAmBG,CAAC,kEAEN,aAAa,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiIrB,CAAC"}
1
+ {"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,YAAY,EAEjB,KAAK,mBAAmB,EACxB,KAAK,EACL,KAAK,WAAW,EACjB,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAEvD,KAAK,QAAQ,CAAC,CAAC,SAAS,qBAAqB,IAAI;IAC/C,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,QAAQ,SACb,CAAC,SAAS,qBAAqB,EACrC,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,qBAE7B,CAAC,SACC,CAAC,KACN,SAAS,CAAC,CAAC,EAAE,CAAC,CAmJhB,CAAC;AAEF,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,qBAAqB,EAC/B,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,IAC9C,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GACtB,CAAC,QAAQ,MACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KACzB,YAAY,CAAC,CAAC,CAAC,GAClB,IAAI,CACF,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnB,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,MAAM,GACN,MAAM,GACN,aAAa,GACb,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,aAAa,GACb,SAAS,GACT,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,MAAM,CAAC,QAAQ,CACzB,GAAG;IACF,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD,CAAC,GAAG;IACL,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/B,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GACvC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,YAAY,CAAC,CAAC,SAAS,WAAW,EAChC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAC/B,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACpE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAChC,CAAC"}
package/dist/multiple.js CHANGED
@@ -1,106 +1,119 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Multiple = void 0;
4
- const _1 = require("./_");
5
- const Multiple = (of, base = _1.Empty) => {
6
- const longhand = (0, _1.Shape)(of);
7
- class $Multiple extends base {
8
- value;
9
- constructor(value) {
10
- super();
11
- this.value = value;
12
- }
13
- static $name = "multiple";
14
- serialize() {
15
- return $Multiple.$serialize(this.value);
16
- }
17
- static deserialize(value) {
18
- return new this($Multiple.$deserialize(value));
19
- }
20
- static $deserialize(value) {
21
- return value.map(longhand.$deserialize);
22
- }
23
- static $serialize(value) {
24
- return value.map(longhand.$serialize);
25
- }
26
- [Symbol.iterator]() {
27
- return this.value[Symbol.iterator]();
28
- }
29
- static $inline;
30
- get map() {
31
- return this.value.map.bind(this.value);
32
- }
33
- get reduce() {
34
- return this.value.reduce.bind(this.value);
35
- }
36
- get filter() {
37
- return this.value.filter.bind(this.value);
38
- }
39
- get forEach() {
40
- return this.value.forEach.bind(this.value);
41
- }
42
- get some() {
43
- return this.value.some.bind(this.value);
44
- }
45
- get every() {
46
- return this.value.every.bind(this.value);
47
- }
48
- get find() {
49
- return this.value.find.bind(this.value);
50
- }
51
- get findIndex() {
52
- return this.value.findIndex.bind(this.value);
53
- }
54
- get indexOf() {
55
- return this.value.indexOf.bind(this.value);
56
- }
57
- get lastIndexOf() {
58
- return this.value.lastIndexOf.bind(this.value);
59
- }
60
- get includes() {
61
- return this.value.includes.bind(this.value);
62
- }
63
- get keys() {
64
- return this.value.keys.bind(this.value);
65
- }
66
- get values() {
67
- return this.value.values.bind(this.value);
68
- }
69
- get entries() {
70
- return this.value.entries.bind(this.value);
71
- }
72
- get at() {
73
- return this.value.at.bind(this.value);
74
- }
75
- get concat() {
76
- return this.value.concat.bind(this.value);
77
- }
78
- get flat() {
79
- return this.value.flat.bind(this.value);
80
- }
81
- get splice() {
82
- return this.value.splice.bind(this.value);
83
- }
84
- get flatMap() {
85
- return this.value.flatMap.bind(this.value);
86
- }
87
- get push() {
88
- return this.value.push.bind(this.value);
89
- }
90
- get pop() {
91
- return this.value.pop.bind(this.value);
92
- }
93
- get sort() {
94
- return this.value.sort.bind(this.value);
95
- }
96
- get slice() {
97
- return this.value.slice.bind(this.value);
98
- }
99
- get length() {
100
- return this.value.length;
101
- }
102
- }
103
- return $Multiple;
1
+ const require__ = require('./_.js');
2
+
3
+ //#region src/multiple.ts
4
+ const Multiple = (of, base = require__.Empty) => {
5
+ const longhand = require__.Shape(of);
6
+ class $Multiple extends base {
7
+ constructor(value) {
8
+ super();
9
+ this.value = value;
10
+ }
11
+ static $shape = "multiple";
12
+ serialize() {
13
+ return $Multiple.$serialize(this.value);
14
+ }
15
+ static deserialize(value) {
16
+ return new this($Multiple.$deserialize(value));
17
+ }
18
+ static $deserialize(value) {
19
+ return value.map(longhand.$deserialize);
20
+ }
21
+ static $serialize(value) {
22
+ return value.map(longhand.$serialize);
23
+ }
24
+ [Symbol.iterator]() {
25
+ return this.value[Symbol.iterator]();
26
+ }
27
+ get map() {
28
+ return this.value.map.bind(this.value);
29
+ }
30
+ get reduce() {
31
+ return this.value.reduce.bind(this.value);
32
+ }
33
+ get filter() {
34
+ return this.value.filter.bind(this.value);
35
+ }
36
+ get forEach() {
37
+ return this.value.forEach.bind(this.value);
38
+ }
39
+ get some() {
40
+ return this.value.some.bind(this.value);
41
+ }
42
+ get every() {
43
+ return this.value.every.bind(this.value);
44
+ }
45
+ get find() {
46
+ return this.value.find.bind(this.value);
47
+ }
48
+ get findIndex() {
49
+ return this.value.findIndex.bind(this.value);
50
+ }
51
+ get indexOf() {
52
+ return this.value.indexOf.bind(this.value);
53
+ }
54
+ get lastIndexOf() {
55
+ return this.value.lastIndexOf.bind(this.value);
56
+ }
57
+ get includes() {
58
+ return this.value.includes.bind(this.value);
59
+ }
60
+ get keys() {
61
+ return this.value.keys.bind(this.value);
62
+ }
63
+ get values() {
64
+ return this.value.values.bind(this.value);
65
+ }
66
+ get entries() {
67
+ return this.value.entries.bind(this.value);
68
+ }
69
+ get at() {
70
+ return this.value.at.bind(this.value);
71
+ }
72
+ get concat() {
73
+ return this.value.concat.bind(this.value);
74
+ }
75
+ get flat() {
76
+ return this.value.flat.bind(this.value);
77
+ }
78
+ get splice() {
79
+ return this.value.splice.bind(this.value);
80
+ }
81
+ get flatMap() {
82
+ return this.value.flatMap.bind(this.value);
83
+ }
84
+ get push() {
85
+ return this.value.push.bind(this.value);
86
+ }
87
+ get pop() {
88
+ return this.value.pop.bind(this.value);
89
+ }
90
+ get sort() {
91
+ return this.value.sort.bind(this.value);
92
+ }
93
+ get slice() {
94
+ return this.value.slice.bind(this.value);
95
+ }
96
+ get length() {
97
+ return this.value.length;
98
+ }
99
+ get fill() {
100
+ return this.value.fill.bind(this.value);
101
+ }
102
+ get copyWithin() {
103
+ return this.value.copyWithin.bind(this.value);
104
+ }
105
+ get reverse() {
106
+ return this.value.reverse.bind(this.value);
107
+ }
108
+ get shift() {
109
+ return this.value.shift.bind(this.value);
110
+ }
111
+ get unshift() {
112
+ return this.value.unshift.bind(this.value);
113
+ }
114
+ }
115
+ return $Multiple;
104
116
  };
105
- exports.Multiple = Multiple;
106
- //# sourceMappingURL=multiple.js.map
117
+
118
+ //#endregion
119
+ exports.Multiple = Multiple;
@@ -0,0 +1,119 @@
1
+ import { Empty, Shape } from "./_.mjs";
2
+
3
+ //#region src/multiple.ts
4
+ const Multiple = (of, base = Empty) => {
5
+ const longhand = Shape(of);
6
+ class $Multiple extends base {
7
+ constructor(value) {
8
+ super();
9
+ this.value = value;
10
+ }
11
+ static $shape = "multiple";
12
+ serialize() {
13
+ return $Multiple.$serialize(this.value);
14
+ }
15
+ static deserialize(value) {
16
+ return new this($Multiple.$deserialize(value));
17
+ }
18
+ static $deserialize(value) {
19
+ return value.map(longhand.$deserialize);
20
+ }
21
+ static $serialize(value) {
22
+ return value.map(longhand.$serialize);
23
+ }
24
+ [Symbol.iterator]() {
25
+ return this.value[Symbol.iterator]();
26
+ }
27
+ get map() {
28
+ return this.value.map.bind(this.value);
29
+ }
30
+ get reduce() {
31
+ return this.value.reduce.bind(this.value);
32
+ }
33
+ get filter() {
34
+ return this.value.filter.bind(this.value);
35
+ }
36
+ get forEach() {
37
+ return this.value.forEach.bind(this.value);
38
+ }
39
+ get some() {
40
+ return this.value.some.bind(this.value);
41
+ }
42
+ get every() {
43
+ return this.value.every.bind(this.value);
44
+ }
45
+ get find() {
46
+ return this.value.find.bind(this.value);
47
+ }
48
+ get findIndex() {
49
+ return this.value.findIndex.bind(this.value);
50
+ }
51
+ get indexOf() {
52
+ return this.value.indexOf.bind(this.value);
53
+ }
54
+ get lastIndexOf() {
55
+ return this.value.lastIndexOf.bind(this.value);
56
+ }
57
+ get includes() {
58
+ return this.value.includes.bind(this.value);
59
+ }
60
+ get keys() {
61
+ return this.value.keys.bind(this.value);
62
+ }
63
+ get values() {
64
+ return this.value.values.bind(this.value);
65
+ }
66
+ get entries() {
67
+ return this.value.entries.bind(this.value);
68
+ }
69
+ get at() {
70
+ return this.value.at.bind(this.value);
71
+ }
72
+ get concat() {
73
+ return this.value.concat.bind(this.value);
74
+ }
75
+ get flat() {
76
+ return this.value.flat.bind(this.value);
77
+ }
78
+ get splice() {
79
+ return this.value.splice.bind(this.value);
80
+ }
81
+ get flatMap() {
82
+ return this.value.flatMap.bind(this.value);
83
+ }
84
+ get push() {
85
+ return this.value.push.bind(this.value);
86
+ }
87
+ get pop() {
88
+ return this.value.pop.bind(this.value);
89
+ }
90
+ get sort() {
91
+ return this.value.sort.bind(this.value);
92
+ }
93
+ get slice() {
94
+ return this.value.slice.bind(this.value);
95
+ }
96
+ get length() {
97
+ return this.value.length;
98
+ }
99
+ get fill() {
100
+ return this.value.fill.bind(this.value);
101
+ }
102
+ get copyWithin() {
103
+ return this.value.copyWithin.bind(this.value);
104
+ }
105
+ get reverse() {
106
+ return this.value.reverse.bind(this.value);
107
+ }
108
+ get shift() {
109
+ return this.value.shift.bind(this.value);
110
+ }
111
+ get unshift() {
112
+ return this.value.unshift.bind(this.value);
113
+ }
114
+ }
115
+ return $Multiple;
116
+ };
117
+
118
+ //#endregion
119
+ export { Multiple };
package/dist/nothing.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { AbstractConstructor, Constructor, Empty } from "./_";
1
+ import { type AbstractConstructor, type Constructor, Empty } from "./_";
2
2
  export type NothingShorthand = undefined;
3
3
  export declare const Nothing: <B extends AbstractConstructor<{}> = typeof Empty>(config: void, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (...args: any[]) => {
4
4
  serialize(): void;
5
5
  }) & {
6
- $name: "nothing";
7
- deserialize<T extends Constructor<any, any[]>>(this: T, value: void): InstanceType<T>;
6
+ $shape: "nothing";
7
+ deserialize<T extends Constructor>(this: T, value: void): InstanceType<T>;
8
8
  $deserialize(): void;
9
9
  $serialize(): void;
10
10
  $inline: void;
@@ -1 +1 @@
1
- {"version":3,"file":"nothing.d.ts","sourceRoot":"","sources":["../src/nothing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAc,KAAK,EAAE,MAAM,KAAK,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,OAAO,6DACV,IAAI,SACN,CAAC;;;;yDAOG,CAAC,SACA,IAAI,GACV,aAAa,CAAC,CAAC;;;aAKF,IAAI;+BAIb,IAAI;;EAQd,CAAC"}
1
+ {"version":3,"file":"nothing.d.ts","sourceRoot":"","sources":["../src/nothing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAmB,KAAK,EAAE,MAAM,KAAK,CAAC;AAEzF,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,yBAC/C,IAAI,SACN,CAAC;;;YAGW,SAAS;gBAGN,CAAC,SAAS,WAAW,QAChC,CAAC,SACA,IAAI,GACV,YAAY,CAAC,CAAC,CAAC;;;aAKF,IAAI;+BAIb,IAAI,KACR,YAAY,CAAC,CAAC,CAAC;;CAAW,CAOhC,CAAC"}
package/dist/nothing.js CHANGED
@@ -1,19 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Nothing = void 0;
4
- const _1 = require("./_");
5
- const Nothing = (config, base = _1.Empty) => {
6
- class $Nothing extends base {
7
- static $name = "nothing";
8
- serialize() { }
9
- static deserialize(value) {
10
- return new this();
11
- }
12
- static $deserialize() { }
13
- static $serialize() { }
14
- static $inline;
15
- }
16
- return $Nothing;
1
+ const require__ = require('./_.js');
2
+
3
+ //#region src/nothing.ts
4
+ const Nothing = (config, base = require__.Empty) => {
5
+ class $Nothing extends base {
6
+ static $shape = "nothing";
7
+ serialize() {}
8
+ static deserialize(value) {
9
+ return new this();
10
+ }
11
+ static $deserialize() {}
12
+ static $serialize() {}
13
+ static $inline;
14
+ }
15
+ return $Nothing;
17
16
  };
18
- exports.Nothing = Nothing;
19
- //# sourceMappingURL=nothing.js.map
17
+
18
+ //#endregion
19
+ exports.Nothing = Nothing;
@@ -0,0 +1,19 @@
1
+ import { Empty } from "./_.mjs";
2
+
3
+ //#region src/nothing.ts
4
+ const Nothing = (config, base = Empty) => {
5
+ class $Nothing extends base {
6
+ static $shape = "nothing";
7
+ serialize() {}
8
+ static deserialize(value) {
9
+ return new this();
10
+ }
11
+ static $deserialize() {}
12
+ static $serialize() {}
13
+ static $inline;
14
+ }
15
+ return $Nothing;
16
+ };
17
+
18
+ //#endregion
19
+ export { Nothing };
@@ -1,23 +1,26 @@
1
- import { Definition, Expand, Shorthand, DefinitionOf, Constructor, AbstractConstructor, Empty } from "./_";
1
+ import { type Definition, type Expand, type Shorthand, type DefinitionOf, type Constructor, type AbstractConstructor, Empty } from "./_";
2
2
  export type OptionalConfiguration = Definition | Shorthand;
3
3
  type Matcher<V> = {
4
4
  some: (value: V) => any;
5
5
  none: () => any;
6
6
  };
7
- export declare const Optional: <S extends Shorthand, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: Expand<DefinitionOf<S, B>["$inline"]> | undefined) => {
8
- value: Expand<DefinitionOf<S, B>["$inline"]> | undefined;
9
- serialize(): Expand<ReturnType<DefinitionOf<S, B>["$serialize"]> | undefined>;
10
- match<M extends Matcher<Expand<DefinitionOf<S, B>["$inline"]>>>(config: M): ReturnType<M["some"]> | ReturnType<M["none"]>;
11
- }) & {
12
- $name: "optional";
13
- deserialize<T extends Constructor<any, any[]>>(this: T, value: DefinitionOf<S, B>["$inline"] | undefined): InstanceType<T>;
14
- $deserialize(value: ReturnType<DefinitionOf<S, B>["$serialize"]> | undefined): DefinitionOf<S, B>["$inline"] | undefined;
15
- $serialize<T_1 extends any>(this: T_1, value: DefinitionOf<S, B>["$inline"] | undefined): ReturnType<DefinitionOf<S, B>["$serialize"]> | undefined;
16
- $inline: DefinitionOf<S, B>["$inline"] | undefined;
17
- }, ""> & (abstract new (value: Expand<DefinitionOf<S, B>["$inline"]> | undefined) => InstanceType<B> & {
18
- value: Expand<DefinitionOf<S, B>["$inline"]> | undefined;
19
- serialize(): Expand<ReturnType<DefinitionOf<S, B>["$serialize"]> | undefined>;
20
- match<M extends Matcher<Expand<DefinitionOf<S, B>["$inline"]>>>(config: M): ReturnType<M["some"]> | ReturnType<M["none"]>;
7
+ type Internal<S extends Definition | Shorthand> = {
8
+ Serialized: ReturnType<DefinitionOf<S>["$serialize"]> | undefined;
9
+ Deserializing: Parameters<DefinitionOf<S>["$deserialize"]>[0] | undefined;
10
+ Inline: Expand<DefinitionOf<S>["$inline"]> | undefined;
11
+ Required: Expand<DefinitionOf<S>["$inline"]>;
12
+ };
13
+ export declare const Optional: <S extends Definition | Shorthand, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => IOptional<S, B>;
14
+ export type IOptional<S extends Definition | Shorthand, B extends AbstractConstructor<{}> = typeof Object> = Omit<B, "prototype"> & {
15
+ $shape: "optional";
16
+ deserialize<T extends Constructor>(this: T, value: Internal<S>["Deserializing"]): InstanceType<T>;
17
+ $deserialize(value: Internal<S>["Deserializing"]): Definition["$inline"];
18
+ $serialize<T>(this: T, value: Internal<S>["Inline"]): Internal<S>["Serialized"];
19
+ $inline: Internal<S>["Inline"];
20
+ } & (abstract new (value: Internal<S>["Inline"]) => InstanceType<B> & {
21
+ value: Internal<S>["Inline"];
22
+ serialize(): Expand<Internal<S>["Serialized"]>;
23
+ match<M extends Matcher<Expand<Internal<S>["Required"]>>>(config: M): ReturnType<M["some"]> | ReturnType<M["none"]>;
21
24
  });
22
25
  export {};
23
26
  //# sourceMappingURL=optional.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../src/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,YAAY,EAEZ,WAAW,EACX,mBAAmB,EACnB,KAAK,EACN,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3D,KAAK,OAAO,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC;AAE/D,eAAO,MAAM,QAAQ,8EAIf,CAAC,SACC,CAAC;;;4EAiBK,CAAC,GACR,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;;;yDAQxC,CAAC,qDAEN,aAAa,CAAC,CAAC;;;;;;;4EAXR,CAAC,GACR,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;EA0CnD,CAAC"}
1
+ {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../src/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,YAAY,EAEjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,EACN,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3D,KAAK,OAAO,CAAC,CAAC,IAAI;IAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,GAAG,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC;AAE/D,KAAK,QAAQ,CAAC,CAAC,SAAS,UAAU,GAAG,SAAS,IAAI;IAChD,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC;IAClE,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1E,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,CAAC,SAAS,UAAU,GAAG,SAAS,EAChC,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,qBAE7B,CAAC,SACC,CAAC,KACN,SAAS,CAAC,CAAC,EAAE,CAAC,CA2ChB,CAAC;AAEF,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,UAAU,GAAG,SAAS,EAChC,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,GAAG,OAAO,MAAM,IAC/C,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/B,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAClC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACzE,UAAU,CAAC,CAAC,EACV,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC3B,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7B,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAChC,GAAG,CAAC,QAAQ,MACT,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KACzB,YAAY,CAAC,CAAC,CAAC,GAAG;IACrB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/C,KAAK,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACtD,MAAM,EAAE,CAAC,GACR,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;CAClD,CAAC,CAAC"}