@ddd-ts/shape 0.0.13 → 0.0.14
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.
- package/dist/choice.d.ts +4 -5
- package/dist/choice.d.ts.map +1 -1
- package/dist/choice.js.map +1 -1
- package/dist/dict.d.ts +21 -9
- package/dist/dict.d.ts.map +1 -1
- package/dist/dict.js.map +1 -1
- package/dist/discriminated-union.d.ts +30 -16
- package/dist/discriminated-union.d.ts.map +1 -1
- package/dist/discriminated-union.js +8 -10
- package/dist/discriminated-union.js.map +1 -1
- package/dist/multiple.d.ts +74 -69
- package/dist/multiple.d.ts.map +1 -1
- package/dist/multiple.js.map +1 -1
- package/dist/optional.d.ts +17 -12
- package/dist/optional.d.ts.map +1 -1
- package/dist/optional.js.map +1 -1
- package/package.json +4 -4
package/dist/choice.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { AbstractConstructor, Empty, Expand, Constructor, MergeClasses } from "./_";
|
|
2
|
-
type
|
|
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
|
|
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
12
|
is<T extends S[number]>(value: T): this is Omit<this, "value" | "serialize"> & {
|
|
13
13
|
value: T_1;
|
|
14
14
|
serialize(): T_1;
|
|
15
15
|
};
|
|
16
|
-
match<M extends
|
|
16
|
+
match<M extends ChoiceMatcher<S>>(matcher: M): ChoiceMatcherResult<M>;
|
|
17
17
|
serialize(): S[number];
|
|
18
18
|
}) & {
|
|
19
19
|
$name: "choice";
|
|
@@ -28,7 +28,7 @@ export declare const Choice: <const S extends string[], B extends AbstractConstr
|
|
|
28
28
|
value: T_1;
|
|
29
29
|
serialize(): T_1;
|
|
30
30
|
};
|
|
31
|
-
match<M extends
|
|
31
|
+
match<M extends ChoiceMatcher<S>>(matcher: M): ChoiceMatcherResult<M>;
|
|
32
32
|
serialize(): S[number];
|
|
33
33
|
}) & {
|
|
34
34
|
$name: "choice";
|
|
@@ -38,5 +38,4 @@ export declare const Choice: <const S extends string[], B extends AbstractConstr
|
|
|
38
38
|
$serialize<T_4 extends any>(this: T_4, value: S[number]): S[number];
|
|
39
39
|
$inline: S[number];
|
|
40
40
|
}, ""> & { [K in S[number]]: <T_5 extends Constructor<any, any[]>>(this: T_5) => InstanceType<T_5>; };
|
|
41
|
-
export {};
|
|
42
41
|
//# sourceMappingURL=choice.d.ts.map
|
package/dist/choice.d.ts.map
CHANGED
|
@@ -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,
|
|
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,SAsEP,CAAC,mBAFJ,CAAC,yDAEE,CAAC,AAlEF,SAgEF,CAAC,AA/DD;;uCAeF,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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"choice.js","sourceRoot":"","sources":["../src/choice.ts"],"names":[],"mappings":";;;AAAA,0BAOa;
|
|
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;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,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;AAxEW,QAAA,MAAM,UAwEjB"}
|
package/dist/dict.d.ts
CHANGED
|
@@ -2,18 +2,30 @@ import { DefinitionOf, Shorthand, Expand, AbstractConstructor, Constructor, Empt
|
|
|
2
2
|
export type DictShorthand = {
|
|
3
3
|
[key: string]: Shorthand;
|
|
4
4
|
};
|
|
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
|
+
};
|
|
5
16
|
export declare const Dict: <const S extends {
|
|
6
17
|
[key: string]: any;
|
|
7
|
-
}, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => Omit<B, ""> & Omit<(abstract new (...args: any[]) => {
|
|
8
|
-
serialize(): Expand<
|
|
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
21
|
$name: "dict";
|
|
11
22
|
$of: S;
|
|
12
|
-
deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<
|
|
13
|
-
$deserialize<T_1 extends any>(this: T_1, value:
|
|
14
|
-
$serialize<T_2 extends any>(this: T_2, value: InstanceType<T_2>):
|
|
15
|
-
$inline:
|
|
16
|
-
}, ""> & (abstract new (value: Expand<
|
|
17
|
-
serialize(): Expand<
|
|
18
|
-
} &
|
|
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 {};
|
|
19
31
|
//# sourceMappingURL=dict.d.ts.map
|
package/dist/dict.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,eAAO,MAAM,IAAI,
|
|
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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dict.js","sourceRoot":"","sources":["../src/dict.ts"],"names":[],"mappings":";;;AAAA,0BAQa;
|
|
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,KAAK,GAAG,MAAe,CAAC;QAC/B,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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Expand, DefinitionOf, AbstractConstructor, Empty, type Shorthand } from "./_";
|
|
1
|
+
import { Expand, DefinitionOf, AbstractConstructor, Empty, type Shorthand, type Definition } from "./_";
|
|
2
2
|
import { ClassShorthand } from "./class";
|
|
3
3
|
import { type DictShorthand } from "./dict";
|
|
4
4
|
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
|
|
@@ -35,27 +35,41 @@ type DictInput = {
|
|
|
35
35
|
};
|
|
36
36
|
type DictShorthandInput = DictShorthand;
|
|
37
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]>;
|
|
38
43
|
type GetShape<S extends Config> = S extends DictInput ? S["$of"] : S extends ClassInput ? Access<S, "prototype"> : S;
|
|
39
|
-
type BestKey<S extends Config[]> = {
|
|
44
|
+
export type BestKey<S extends readonly Config[]> = {
|
|
40
45
|
[key in keyof S]: GetShape<S[key]>;
|
|
41
46
|
}[number] extends infer U ? FindBestKeyForMatching<U> : never;
|
|
42
|
-
export type DiscriminatedUnionConfiguration = Config[];
|
|
43
|
-
export declare
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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);
|
|
47
61
|
}) & {
|
|
48
|
-
serialized:
|
|
62
|
+
serialized: IInternal["Serialized"];
|
|
49
63
|
$of: S;
|
|
50
64
|
$name: "discriminated-union";
|
|
51
|
-
deserialize<T extends any>(this: T, value: Expand<
|
|
52
|
-
$deserialize<T_1 extends any>(this: T_1, value:
|
|
53
|
-
$serialize<T_2 extends any>(this: T_2, value:
|
|
54
|
-
$inline:
|
|
55
|
-
}, "prototype"> & (abstract new (value: Expand<
|
|
56
|
-
value:
|
|
57
|
-
serialize(): Expand<
|
|
58
|
-
match<M extends Matcher<
|
|
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);
|
|
59
73
|
});
|
|
60
74
|
export {};
|
|
61
75
|
//# sourceMappingURL=discriminated-union.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../src/discriminated-union.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,KAAK,EACL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../src/discriminated-union.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DiscriminatedUnion = void 0;
|
|
4
|
+
exports.findBestKey = findBestKey;
|
|
5
|
+
exports.prepareShapeMap = prepareShapeMap;
|
|
4
6
|
const _1 = require("./_");
|
|
5
7
|
function findBestKey(config) {
|
|
6
8
|
const hash = {};
|
|
@@ -45,11 +47,7 @@ function prepareShapeMap(config, key) {
|
|
|
45
47
|
return acc;
|
|
46
48
|
}, {});
|
|
47
49
|
}
|
|
48
|
-
const DiscriminatedUnion = (of, ...args
|
|
49
|
-
// ...args: [K] extends [never]
|
|
50
|
-
// ? ["⚠️ Make sure to add a discriminator to every element of the union"]
|
|
51
|
-
// : [base?: B]
|
|
52
|
-
) => {
|
|
50
|
+
const DiscriminatedUnion = (of, ...args) => {
|
|
53
51
|
const base = args[0] || _1.Empty;
|
|
54
52
|
const key = findBestKey(of);
|
|
55
53
|
const map = prepareShapeMap(of, key);
|
|
@@ -67,16 +65,16 @@ const DiscriminatedUnion = (of, ...args
|
|
|
67
65
|
}
|
|
68
66
|
match(...[matcher, fallback]) {
|
|
69
67
|
const element = this.value;
|
|
70
|
-
const
|
|
71
|
-
const handler = matcher[
|
|
68
|
+
const discriminant = element[key];
|
|
69
|
+
const handler = matcher[discriminant];
|
|
72
70
|
if (handler) {
|
|
73
|
-
return handler(
|
|
71
|
+
return handler(element);
|
|
74
72
|
}
|
|
75
73
|
if (fallback) {
|
|
76
|
-
return fallback(
|
|
74
|
+
return fallback(element);
|
|
77
75
|
}
|
|
78
76
|
if (matcher._) {
|
|
79
|
-
return matcher._(
|
|
77
|
+
return matcher._(element);
|
|
80
78
|
}
|
|
81
79
|
throw new Error("Non-exhaustive match");
|
|
82
80
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../src/discriminated-union.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../src/discriminated-union.ts"],"names":[],"mappings":"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"}
|
package/dist/multiple.d.ts
CHANGED
|
@@ -1,105 +1,110 @@
|
|
|
1
1
|
import { Definition, Expand, Shorthand, DefinitionOf, AbstractConstructor, Empty, Constructor } from "./_";
|
|
2
|
-
export type MultipleShorthand = (Definition | Shorthand)[] | readonly (Definition | Shorthand)[];
|
|
3
2
|
export type MultipleConfiguration = Definition | Shorthand;
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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, Cache extends Internal<S> = Internal<S>>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: Cache["Inline"]) => {
|
|
9
|
+
value: Cache["Inline"];
|
|
10
|
+
serialize(): Expand<Cache["Serialized"]>;
|
|
11
|
+
readonly map: <U>(callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U, thisArg?: any) => U[];
|
|
8
12
|
readonly reduce: {
|
|
9
|
-
(callbackfn: (previousValue: DefinitionOf<S,
|
|
10
|
-
(callbackfn: (previousValue: DefinitionOf<S,
|
|
11
|
-
<U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S,
|
|
13
|
+
(callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
|
|
14
|
+
(callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"], initialValue: DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
|
|
15
|
+
<U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_1, initialValue: U_1): U_1;
|
|
12
16
|
};
|
|
13
17
|
readonly filter: {
|
|
14
|
-
<S_1 extends DefinitionOf<S,
|
|
15
|
-
(predicate: (value: DefinitionOf<S,
|
|
18
|
+
<S_1 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_1, thisArg?: any): S_1[];
|
|
19
|
+
(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
16
20
|
};
|
|
17
|
-
readonly forEach: (callbackfn: (value: DefinitionOf<S,
|
|
18
|
-
readonly some: (predicate: (value: DefinitionOf<S,
|
|
21
|
+
readonly forEach: (callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => void, thisArg?: any) => void;
|
|
22
|
+
readonly some: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => boolean;
|
|
19
23
|
readonly every: {
|
|
20
|
-
<S_2 extends DefinitionOf<S,
|
|
21
|
-
(predicate: (value: DefinitionOf<S,
|
|
24
|
+
<S_2 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_2, thisArg?: any): this is S_2[];
|
|
25
|
+
(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): boolean;
|
|
22
26
|
};
|
|
23
27
|
readonly find: {
|
|
24
|
-
<S_3 extends DefinitionOf<S,
|
|
25
|
-
(predicate: (value: DefinitionOf<S,
|
|
28
|
+
<S_3 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_3, thisArg?: any): S_3 | undefined;
|
|
29
|
+
(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"] | undefined;
|
|
26
30
|
};
|
|
27
|
-
readonly findIndex: (predicate: (value: DefinitionOf<S,
|
|
28
|
-
readonly indexOf: (searchElement: DefinitionOf<S,
|
|
29
|
-
readonly lastIndexOf: (searchElement: DefinitionOf<S,
|
|
30
|
-
readonly includes: (searchElement: DefinitionOf<S,
|
|
31
|
+
readonly findIndex: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => number;
|
|
32
|
+
readonly indexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
|
|
33
|
+
readonly lastIndexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
|
|
34
|
+
readonly includes: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => boolean;
|
|
31
35
|
readonly keys: () => IterableIterator<number>;
|
|
32
|
-
readonly values: () => IterableIterator<DefinitionOf<S,
|
|
33
|
-
readonly entries: () => IterableIterator<[number, DefinitionOf<S,
|
|
34
|
-
readonly at: (index: number) => DefinitionOf<S,
|
|
36
|
+
readonly values: () => IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
|
|
37
|
+
readonly entries: () => IterableIterator<[number, DefinitionOf<S, typeof Empty>["$inline"]]>;
|
|
38
|
+
readonly at: (index: number) => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
|
|
35
39
|
readonly concat: {
|
|
36
|
-
(...items: ConcatArray<DefinitionOf<S,
|
|
37
|
-
(...items: (DefinitionOf<S,
|
|
40
|
+
(...items: ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>[]): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
41
|
+
(...items: (DefinitionOf<S, typeof Empty>["$inline"] | ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>)[]): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
38
42
|
};
|
|
39
43
|
readonly flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
|
|
40
44
|
readonly splice: {
|
|
41
|
-
(start: number, deleteCount?: number): DefinitionOf<S,
|
|
42
|
-
(start: number, deleteCount: number, ...items: DefinitionOf<S,
|
|
45
|
+
(start: number, deleteCount?: number): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
46
|
+
(start: number, deleteCount: number, ...items: DefinitionOf<S, typeof Empty>["$inline"][]): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
43
47
|
};
|
|
44
|
-
readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S,
|
|
45
|
-
readonly push: (...items: DefinitionOf<S,
|
|
46
|
-
readonly pop: () => DefinitionOf<S,
|
|
47
|
-
readonly sort: (compareFn?: ((a: DefinitionOf<S,
|
|
48
|
-
readonly slice: (start?: number, end?: number) => DefinitionOf<S,
|
|
48
|
+
readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_2 | readonly U_2[], thisArg?: This | undefined) => U_2[];
|
|
49
|
+
readonly push: (...items: DefinitionOf<S, typeof Empty>["$inline"][]) => number;
|
|
50
|
+
readonly pop: () => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
|
|
51
|
+
readonly sort: (compareFn?: ((a: DefinitionOf<S, typeof Empty>["$inline"], b: DefinitionOf<S, typeof Empty>["$inline"]) => number) | undefined) => Cache["Inline"];
|
|
52
|
+
readonly slice: (start?: number, end?: number) => DefinitionOf<S, typeof Empty>["$inline"][];
|
|
49
53
|
readonly length: number;
|
|
50
|
-
[Symbol.iterator](): IterableIterator<DefinitionOf<S,
|
|
54
|
+
[Symbol.iterator](): IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
|
|
51
55
|
}) & {
|
|
52
56
|
$name: "multiple";
|
|
53
|
-
deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<
|
|
54
|
-
$deserialize<T_1 extends Constructor<any, any[]>>(this: T_1, value:
|
|
55
|
-
$serialize(value:
|
|
56
|
-
$inline:
|
|
57
|
-
}, ""> & (abstract new (value: Expand<
|
|
58
|
-
value:
|
|
59
|
-
serialize(): Expand<
|
|
60
|
-
readonly map: <U>(callbackfn: (value: DefinitionOf<S,
|
|
57
|
+
deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<Cache["Serialized"]>): InstanceType<T>;
|
|
58
|
+
$deserialize<T_1 extends Constructor<any, any[]>>(this: T_1, value: Cache["Serialized"]): InstanceType<T_1>;
|
|
59
|
+
$serialize(value: Cache["Inline"]): Cache["Serialized"];
|
|
60
|
+
$inline: Cache["Inline"];
|
|
61
|
+
}, ""> & (abstract new (value: Expand<Cache["Inline"]>) => InstanceType<B> & {
|
|
62
|
+
value: Cache["Inline"];
|
|
63
|
+
serialize(): Expand<Cache["Serialized"]>;
|
|
64
|
+
readonly map: <U>(callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U, thisArg?: any) => U[];
|
|
61
65
|
readonly reduce: {
|
|
62
|
-
(callbackfn: (previousValue: DefinitionOf<S,
|
|
63
|
-
(callbackfn: (previousValue: DefinitionOf<S,
|
|
64
|
-
<U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S,
|
|
66
|
+
(callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
|
|
67
|
+
(callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"], initialValue: DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
|
|
68
|
+
<U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_1, initialValue: U_1): U_1;
|
|
65
69
|
};
|
|
66
70
|
readonly filter: {
|
|
67
|
-
<S_1 extends DefinitionOf<S,
|
|
68
|
-
(predicate: (value: DefinitionOf<S,
|
|
71
|
+
<S_1 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_1, thisArg?: any): S_1[];
|
|
72
|
+
(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
69
73
|
};
|
|
70
|
-
readonly forEach: (callbackfn: (value: DefinitionOf<S,
|
|
71
|
-
readonly some: (predicate: (value: DefinitionOf<S,
|
|
74
|
+
readonly forEach: (callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => void, thisArg?: any) => void;
|
|
75
|
+
readonly some: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => boolean;
|
|
72
76
|
readonly every: {
|
|
73
|
-
<S_2 extends DefinitionOf<S,
|
|
74
|
-
(predicate: (value: DefinitionOf<S,
|
|
77
|
+
<S_2 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_2, thisArg?: any): this is S_2[];
|
|
78
|
+
(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): boolean;
|
|
75
79
|
};
|
|
76
80
|
readonly find: {
|
|
77
|
-
<S_3 extends DefinitionOf<S,
|
|
78
|
-
(predicate: (value: DefinitionOf<S,
|
|
81
|
+
<S_3 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_3, thisArg?: any): S_3 | undefined;
|
|
82
|
+
(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"] | undefined;
|
|
79
83
|
};
|
|
80
|
-
readonly findIndex: (predicate: (value: DefinitionOf<S,
|
|
81
|
-
readonly indexOf: (searchElement: DefinitionOf<S,
|
|
82
|
-
readonly lastIndexOf: (searchElement: DefinitionOf<S,
|
|
83
|
-
readonly includes: (searchElement: DefinitionOf<S,
|
|
84
|
+
readonly findIndex: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => number;
|
|
85
|
+
readonly indexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
|
|
86
|
+
readonly lastIndexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
|
|
87
|
+
readonly includes: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => boolean;
|
|
84
88
|
readonly keys: () => IterableIterator<number>;
|
|
85
|
-
readonly values: () => IterableIterator<DefinitionOf<S,
|
|
86
|
-
readonly entries: () => IterableIterator<[number, DefinitionOf<S,
|
|
87
|
-
readonly at: (index: number) => DefinitionOf<S,
|
|
89
|
+
readonly values: () => IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
|
|
90
|
+
readonly entries: () => IterableIterator<[number, DefinitionOf<S, typeof Empty>["$inline"]]>;
|
|
91
|
+
readonly at: (index: number) => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
|
|
88
92
|
readonly concat: {
|
|
89
|
-
(...items: ConcatArray<DefinitionOf<S,
|
|
90
|
-
(...items: (DefinitionOf<S,
|
|
93
|
+
(...items: ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>[]): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
94
|
+
(...items: (DefinitionOf<S, typeof Empty>["$inline"] | ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>)[]): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
91
95
|
};
|
|
92
96
|
readonly flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
|
|
93
97
|
readonly splice: {
|
|
94
|
-
(start: number, deleteCount?: number): DefinitionOf<S,
|
|
95
|
-
(start: number, deleteCount: number, ...items: DefinitionOf<S,
|
|
98
|
+
(start: number, deleteCount?: number): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
99
|
+
(start: number, deleteCount: number, ...items: DefinitionOf<S, typeof Empty>["$inline"][]): DefinitionOf<S, typeof Empty>["$inline"][];
|
|
96
100
|
};
|
|
97
|
-
readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S,
|
|
98
|
-
readonly push: (...items: DefinitionOf<S,
|
|
99
|
-
readonly pop: () => DefinitionOf<S,
|
|
100
|
-
readonly sort: (compareFn?: ((a: DefinitionOf<S,
|
|
101
|
-
readonly slice: (start?: number, end?: number) => DefinitionOf<S,
|
|
101
|
+
readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_2 | readonly U_2[], thisArg?: This | undefined) => U_2[];
|
|
102
|
+
readonly push: (...items: DefinitionOf<S, typeof Empty>["$inline"][]) => number;
|
|
103
|
+
readonly pop: () => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
|
|
104
|
+
readonly sort: (compareFn?: ((a: DefinitionOf<S, typeof Empty>["$inline"], b: DefinitionOf<S, typeof Empty>["$inline"]) => number) | undefined) => Cache["Inline"];
|
|
105
|
+
readonly slice: (start?: number, end?: number) => DefinitionOf<S, typeof Empty>["$inline"][];
|
|
102
106
|
readonly length: number;
|
|
103
|
-
[Symbol.iterator](): IterableIterator<DefinitionOf<S,
|
|
107
|
+
[Symbol.iterator](): IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
|
|
104
108
|
});
|
|
109
|
+
export {};
|
|
105
110
|
//# sourceMappingURL=multiple.d.ts.map
|
package/dist/multiple.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,YAAY,EAEZ,mBAAmB,EACnB,KAAK,EACL,WAAW,EACZ,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,SAKf,CAAC,gCA4Ia,CAAC,iDADH,KAAK,wCA3IjB,CAAC,SA4Ia,CAAC,AA3IZ,uDA0IS,KAAK,AArIY,CAAC,QAAQ,CAAC;WAqI3B,KAAK,AArIY,CAAC,QAAQ,CAAC;iBAK5B,MAAM,CAgIL,KAAK,AAhIM,CAAC,YAAY,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAOxB,CAAC,wCAAD,CAAC,AAFR,SACA,MAAM,CA0HD,KAAK,AA1HE,CAAC,YAAY,CAAC,CAAC,GACjC,YAAY,CAAC,CAAC,CAAC;iBASF,GAAC,wCAAD,GAAC,AAFR,SAkHK,KAAK,AAjHL,CAAC,YAAY,CAAC,GACzB,YAAY,CAAC,GAAC,CAAC;sBAgHJ,KAAK,AA5GW,CAAC,QAAQ,CAAC,GA4G1B,KAAK,AA5G6B,CAAC,YAAY,CAAC;aA4GhD,KAAK,AApGE,CAAC,QAAQ,CAAC;+BAoGxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;WAAhB,KAAK,AArIY,CAAC,QAAQ,CAAC;iBAK5B,MAAM,CAgIL,KAAK,AAhIM,CAAC,YAAY,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwI3C,CAAC"}
|
package/dist/multiple.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiple.js","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"multiple.js","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"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"}
|
package/dist/optional.d.ts
CHANGED
|
@@ -4,20 +4,25 @@ type Matcher<V> = {
|
|
|
4
4
|
some: (value: V) => any;
|
|
5
5
|
none: () => any;
|
|
6
6
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
type Internal<S extends Definition | Shorthand> = {
|
|
8
|
+
Serialized: ReturnType<DefinitionOf<S>["$serialize"]> | undefined;
|
|
9
|
+
Inline: Expand<DefinitionOf<S>["$inline"]> | undefined;
|
|
10
|
+
Required: Expand<DefinitionOf<S>["$inline"]>;
|
|
11
|
+
};
|
|
12
|
+
export declare const Optional: <S extends Shorthand, B extends AbstractConstructor<{}> = typeof Empty, Cache extends Internal<S> = Internal<S>>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: Cache["Inline"]) => {
|
|
13
|
+
value: Cache["Inline"];
|
|
14
|
+
serialize(): Expand<Cache["Serialized"]>;
|
|
15
|
+
match<M extends Matcher<Expand<Cache["Required"]>>>(config: M): ReturnType<M["some"]> | ReturnType<M["none"]>;
|
|
11
16
|
}) & {
|
|
12
17
|
$name: "optional";
|
|
13
|
-
deserialize<T extends Constructor<any, any[]>>(this: T, value:
|
|
14
|
-
$deserialize(value:
|
|
15
|
-
$serialize<T_1 extends any>(this: T_1, value:
|
|
16
|
-
$inline:
|
|
17
|
-
}, ""> & (abstract new (value: Expand<
|
|
18
|
-
value:
|
|
19
|
-
serialize(): Expand<
|
|
20
|
-
match<M extends Matcher<Expand<
|
|
18
|
+
deserialize<T extends Constructor<any, any[]>>(this: T, value: Cache["Inline"]): InstanceType<T>;
|
|
19
|
+
$deserialize(value: Cache["Serialized"]): Definition["$inline"];
|
|
20
|
+
$serialize<T_1 extends any>(this: T_1, value: Cache["Inline"]): Cache["Serialized"];
|
|
21
|
+
$inline: Cache["Inline"];
|
|
22
|
+
}, ""> & (abstract new (value: Expand<Cache["Inline"]>) => InstanceType<B> & {
|
|
23
|
+
value: Cache["Inline"];
|
|
24
|
+
serialize(): Expand<Cache["Serialized"]>;
|
|
25
|
+
match<M extends Matcher<Expand<Cache["Required"]>>>(config: M): ReturnType<M["some"]> | ReturnType<M["none"]>;
|
|
21
26
|
});
|
|
22
27
|
export {};
|
|
23
28
|
//# sourceMappingURL=optional.d.ts.map
|
package/dist/optional.d.ts.map
CHANGED
|
@@ -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,
|
|
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,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,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,GAKf,CAAC,oBAmDa,CAAC,iDADH,KAAK,wCAlDjB,CAAC,SAmDa,CAAC,AAlDZ,uDAiDS,KAAK,AA9CY,CAAC,QAAQ,CAAC;WA8C3B,KAAK,AA9CY,CAAC,QAAQ,CAAC;iBAM5B,MAAM,CAwCL,KAAK,AAxCM,CAAC,YAAY,CAAC,CAAC;UAMF,CAAC,qDAAD,CAAC,AAD5B,GACR,UAAU,CAAyB,CAAC,AAAxB,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;;gBAUhC,CAAC,wCAAD,CAAC,AAFR,SA0BK,KAAK,AAzBL,CAAC,QAAQ,CAAC,GACrB,YAAY,CAAC,CAAC,CAAC;wBAwBJ,KAAK,AApBa,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC;eAQ9D,GAAC,oBAAD,GAAC,SAYK,KAAK,AAXL,CAAC,QAAQ,CAAC,GAWV,KAAK,AAVX,CAAC,YAAY,CAAC;aAUR,KAAK,AAJE,CAAC,QAAQ,CAAC;+BAIxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;WAAhB,KAAK,AA9CY,CAAC,QAAQ,CAAC;iBAM5B,MAAM,CAwCL,KAAK,AAxCM,CAAC,YAAY,CAAC,CAAC;UAMF,CAAC,qDAAD,CAAC,AAD5B,GACR,UAAU,CAAyB,CAAC,AAAxB,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;EA0CnD,CAAC"}
|
package/dist/optional.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../src/optional.ts"],"names":[],"mappings":";;;AAAA,0BASa;
|
|
1
|
+
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../src/optional.ts"],"names":[],"mappings":";;;AAAA,0BASa;AAYN,MAAM,QAAQ,GAAG,CAKtB,EAAK,EACL,OAAU,QAAY,EACtB,EAAE;IACF,MAAe,SAAU,SAAS,IAA+B;QAC5C;QAAnB,YAAmB,KAAsB;YACvC,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAiB;QAEzC,CAAC;QAED,MAAM,CAAC,KAAK,GAAG,UAAmB,CAAC;QAEnC,SAAS;YACP,OAAO,SAAS,CAAC,UAAU,CAAE,IAAY,CAAC,KAAK,CAAQ,CAAC;QAC1D,CAAC;QAED,KAAK,CACH,MAAS;YAET,IAAK,IAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC;YACD,OAAO,MAAM,CAAC,IAAI,CAAE,IAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAsB;YAEtB,OAAO,IAAK,IAAY,CAAE,IAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAQ,CAAC;QACrE,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,KAA0B;YAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAQ,IAAA,QAAK,EAAC,EAAE,CAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAsB;YAEtB,OAAO,KAAK,KAAK,SAAS;gBACxB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAE,IAAA,QAAK,EAAC,EAAE,CAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,CAAC,OAAO,CAAkB;;IAWlC,OAAO,SAA4B,CAAC;AACtC,CAAC,CAAC;AA/DW,QAAA,QAAQ,YA+DnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddd-ts/shape",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
"test": "jest --config node_modules/@ddd-ts/tools/jest.config.ts"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@ddd-ts/traits": "0.0.
|
|
12
|
+
"@ddd-ts/traits": "0.0.14"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
|
-
"@ddd-ts/tools": "0.0.
|
|
16
|
-
"@ddd-ts/types": "0.0.
|
|
15
|
+
"@ddd-ts/tools": "0.0.14",
|
|
16
|
+
"@ddd-ts/types": "0.0.14",
|
|
17
17
|
"@types/jest": "^29.5.1"
|
|
18
18
|
}
|
|
19
19
|
}
|