@ddd-ts/shape 0.0.36 → 0.0.37
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/package.json +15 -6
- package/dist/_.d.ts +0 -39
- package/dist/_.d.ts.map +0 -1
- package/dist/_.js +0 -55
- package/dist/_.js.map +0 -1
- package/dist/addons/microsecond-timestamp.d.ts +0 -24
- package/dist/addons/microsecond-timestamp.d.ts.map +0 -1
- package/dist/addons/microsecond-timestamp.js +0 -75
- package/dist/addons/microsecond-timestamp.js.map +0 -1
- package/dist/choice.d.ts +0 -30
- package/dist/choice.d.ts.map +0 -1
- package/dist/choice.js +0 -49
- package/dist/choice.js.map +0 -1
- package/dist/choice.spec.d.ts +0 -2
- package/dist/choice.spec.d.ts.map +0 -1
- package/dist/choice.spec.js +0 -147
- package/dist/choice.spec.js.map +0 -1
- package/dist/class.d.ts +0 -23
- package/dist/class.d.ts.map +0 -1
- package/dist/class.js +0 -31
- package/dist/class.js.map +0 -1
- package/dist/class.spec.d.ts +0 -2
- package/dist/class.spec.d.ts.map +0 -1
- package/dist/class.spec.js +0 -39
- package/dist/class.spec.js.map +0 -1
- package/dist/dict.d.ts +0 -43
- package/dist/dict.d.ts.map +0 -1
- package/dist/dict.js +0 -47
- package/dist/dict.js.map +0 -1
- package/dist/dict.spec.d.ts +0 -2
- package/dist/dict.spec.d.ts.map +0 -1
- package/dist/dict.spec.js +0 -180
- package/dist/dict.spec.js.map +0 -1
- package/dist/discriminated-union.d.ts +0 -74
- package/dist/discriminated-union.d.ts.map +0 -1
- package/dist/discriminated-union.js +0 -97
- package/dist/discriminated-union.js.map +0 -1
- package/dist/discriminated-union.spec.d.ts +0 -2
- package/dist/discriminated-union.spec.d.ts.map +0 -1
- package/dist/discriminated-union.spec.js +0 -262
- package/dist/discriminated-union.spec.js.map +0 -1
- package/dist/either.d.ts +0 -84
- package/dist/either.d.ts.map +0 -1
- package/dist/either.js +0 -62
- package/dist/either.js.map +0 -1
- package/dist/either.spec.d.ts +0 -2
- package/dist/either.spec.d.ts.map +0 -1
- package/dist/either.spec.js +0 -232
- package/dist/either.spec.js.map +0 -1
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -30
- package/dist/index.js.map +0 -1
- package/dist/literal.d.ts +0 -15
- package/dist/literal.d.ts.map +0 -1
- package/dist/literal.js +0 -27
- package/dist/literal.js.map +0 -1
- package/dist/literal.spec.d.ts +0 -2
- package/dist/literal.spec.d.ts.map +0 -1
- package/dist/literal.spec.js +0 -162
- package/dist/literal.spec.js.map +0 -1
- package/dist/mapping.d.ts +0 -43
- package/dist/mapping.d.ts.map +0 -1
- package/dist/mapping.js +0 -50
- package/dist/mapping.js.map +0 -1
- package/dist/mapping.spec.d.ts +0 -2
- package/dist/mapping.spec.d.ts.map +0 -1
- package/dist/mapping.spec.js +0 -207
- package/dist/mapping.spec.js.map +0 -1
- package/dist/multiple.d.ts +0 -20
- package/dist/multiple.d.ts.map +0 -1
- package/dist/multiple.js +0 -120
- package/dist/multiple.js.map +0 -1
- package/dist/multiple.spec.d.ts +0 -2
- package/dist/multiple.spec.d.ts.map +0 -1
- package/dist/multiple.spec.js +0 -207
- package/dist/multiple.spec.js.map +0 -1
- package/dist/nothing.d.ts +0 -14
- package/dist/nothing.d.ts.map +0 -1
- package/dist/nothing.js +0 -19
- package/dist/nothing.js.map +0 -1
- package/dist/nothing.spec.d.ts +0 -2
- package/dist/nothing.spec.d.ts.map +0 -1
- package/dist/nothing.spec.js +0 -172
- package/dist/nothing.spec.js.map +0 -1
- package/dist/optional.d.ts +0 -26
- package/dist/optional.d.ts.map +0 -1
- package/dist/optional.js +0 -41
- package/dist/optional.js.map +0 -1
- package/dist/optional.spec.d.ts +0 -2
- package/dist/optional.spec.d.ts.map +0 -1
- package/dist/optional.spec.js +0 -172
- package/dist/optional.spec.js.map +0 -1
- package/dist/primitive.d.ts +0 -38
- package/dist/primitive.d.ts.map +0 -1
- package/dist/primitive.js +0 -33
- package/dist/primitive.js.map +0 -1
- package/dist/primitive.spec.d.ts +0 -2
- package/dist/primitive.spec.d.ts.map +0 -1
- package/dist/primitive.spec.js +0 -162
- package/dist/primitive.spec.js.map +0 -1
- package/dist/test.d.ts +0 -36
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -45
- package/dist/test.js.map +0 -1
package/dist/mapping.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Mapping = void 0;
|
|
4
|
-
const _1 = require("./_");
|
|
5
|
-
const primitive_1 = require("./primitive");
|
|
6
|
-
const Mapping = (config, base = _1.Empty) => {
|
|
7
|
-
let [_key, _value] = config;
|
|
8
|
-
if (config.length === 1) {
|
|
9
|
-
_key = (0, primitive_1.Primitive)(String);
|
|
10
|
-
_value = config[0];
|
|
11
|
-
}
|
|
12
|
-
const { $key, $value } = { $key: _key, $value: _value };
|
|
13
|
-
class $Mapping extends base {
|
|
14
|
-
value;
|
|
15
|
-
constructor(value) {
|
|
16
|
-
super();
|
|
17
|
-
this.value = value;
|
|
18
|
-
}
|
|
19
|
-
static $shape = "mapping";
|
|
20
|
-
serialize() {
|
|
21
|
-
return $Mapping.$serialize(this.value);
|
|
22
|
-
}
|
|
23
|
-
static deserialize(value) {
|
|
24
|
-
return new this($Mapping.$deserialize(value));
|
|
25
|
-
}
|
|
26
|
-
static $deserialize(value) {
|
|
27
|
-
const split = Object.entries(value);
|
|
28
|
-
const transform = split.map(([key, child]) => {
|
|
29
|
-
const longhand = (0, _1.Shape)(_value);
|
|
30
|
-
const deserialized = longhand.$deserialize(child);
|
|
31
|
-
return [key, deserialized];
|
|
32
|
-
});
|
|
33
|
-
return Object.fromEntries(transform);
|
|
34
|
-
}
|
|
35
|
-
static $serialize(value) {
|
|
36
|
-
const split = Object.entries(value);
|
|
37
|
-
const transform = split.map(([key, child]) => {
|
|
38
|
-
const longhand = (0, _1.Shape)($value);
|
|
39
|
-
const serialized = longhand.$serialize(child);
|
|
40
|
-
return [key, serialized];
|
|
41
|
-
});
|
|
42
|
-
const merge = Object.fromEntries(transform);
|
|
43
|
-
return merge;
|
|
44
|
-
}
|
|
45
|
-
static $inline;
|
|
46
|
-
}
|
|
47
|
-
return $Mapping;
|
|
48
|
-
};
|
|
49
|
-
exports.Mapping = Mapping;
|
|
50
|
-
//# sourceMappingURL=mapping.js.map
|
package/dist/mapping.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":";;;AAAA,0BASa;AACb,2CAAwC;AA0CjC,MAAM,OAAO,GAAG,CAIrB,MAAS,EACT,OAAU,QAAY,EACP,EAAE;IACjB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,IAAA,qBAAS,EAAC,MAAM,CAAC,CAAC;QACzB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAexD,MAAe,QAAS,SAAS,IAA+B;QAC3C;QAAnB,YAAmB,KAAa;YAC9B,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAQ;QAEhC,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,SAAkB,CAAC;QAEnC,SAAS;YACP,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAQ,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAyB;YAEzB,OAAO,IAAK,IAAY,CAAE,QAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAQ,CAAC;QACzE,CAAC;QAED,MAAM,CAAC,YAAY,CAEjB,KAAiB;YAEjB,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,MAAM,QAAQ,GAAG,IAAA,QAAK,EAAC,MAAM,CAAQ,CAAC;gBACtC,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAY,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,EAAE,YAAY,CAAU,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAQ,CAAC;QAC9C,CAAC;QAED,MAAM,CAAC,UAAU,CAEf,KAAa;YAEb,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC3C,MAAM,QAAQ,GAAG,IAAA,QAAK,EAAC,MAAM,CAAQ,CAAC;gBACtC,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAY,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;;IAWzB,OAAO,QAAe,CAAC;AACzB,CAAC,CAAC;AArFW,QAAA,OAAO,WAqFlB","sourcesContent":["import {\n Definition,\n Expand,\n Shorthand,\n DefinitionOf,\n Shape,\n AbstractConstructor,\n Empty,\n Constructor,\n} from \"./_\";\nimport { Primitive } from \"./primitive\";\n\ntype MappingLiteralKey = [\n [StringConstructor, string],\n [NumberConstructor, number],\n];\ntype MappingKeyConstructor = MappingLiteralKey[number][0];\ntype MappingKeyRuntimeFromConstructor<S extends MappingKeyConstructor> =\n S extends StringConstructor ? string : number;\n\nexport type MappingConfiguration =\n | [MappingKeyConstructor, Definition | Shorthand]\n | [Definition | Shorthand];\n\ntype MappingOf<C extends MappingConfiguration> = C extends [\n infer K extends MappingKeyConstructor,\n infer V extends Definition | Shorthand,\n]\n ? { key: K; value: DefinitionOf<V> }\n : C extends [infer V extends Definition | Shorthand]\n ? { key: StringConstructor; value: DefinitionOf<V> }\n : never;\n\ntype Internal<\n C extends MappingConfiguration,\n B extends AbstractConstructor<{}>,\n> = {\n Definition: MappingOf<C>[\"value\"];\n Serialized: Record<\n MappingKeyRuntimeFromConstructor<MappingOf<C>[\"key\"]>,\n ReturnType<MappingOf<C>[\"value\"][\"$serialize\"]>\n >;\n Deserializing: Record<\n MappingKeyRuntimeFromConstructor<MappingOf<C>[\"key\"]>,\n Parameters<MappingOf<C>[\"value\"][\"$deserialize\"]>[0]\n >;\n Inline: Record<\n MappingKeyRuntimeFromConstructor<MappingOf<C>[\"key\"]>,\n MappingOf<C>[\"value\"][\"$inline\"]\n >;\n};\n\nexport const Mapping = <\n C extends MappingConfiguration,\n B extends AbstractConstructor<{}> = typeof Empty,\n>(\n config: C,\n base: B = Empty as any,\n): Mapping<C, B> => {\n let [_key, _value] = config;\n if (config.length === 1) {\n _key = Primitive(String);\n _value = config[0];\n }\n\n const { $key, $value } = { $key: _key, $value: _value };\n\n type Definition = MappingOf<C>[\"value\"];\n type K = MappingOf<C>[\"key\"];\n type Key = MappingKeyRuntimeFromConstructor<K>;\n type Serialized = Record<Key, ReturnType<Definition[\"$serialize\"]>>;\n type Inline = Record<Key, Definition[\"$inline\"]>;\n\n type A = {\n Inline: Inline;\n Serialized: Serialized;\n Definition: Definition;\n Deserializing: Serialized;\n };\n\n abstract class $Mapping extends (base as any as Constructor<{}>) {\n constructor(public value: Inline) {\n super();\n }\n\n static $shape = \"mapping\" as const;\n\n serialize(): Expand<Serialized> {\n return $Mapping.$serialize(this.value) as any;\n }\n\n static deserialize<T extends typeof $Mapping>(\n this: T,\n value: Expand<Serialized>,\n ): InstanceType<T> {\n return new (this as any)(($Mapping as any).$deserialize(value)) as any;\n }\n\n static $deserialize<T extends typeof $Mapping>(\n this: T,\n value: Serialized,\n ): Inline {\n const split = Object.entries(value);\n const transform = split.map(([key, child]) => {\n const longhand = Shape(_value) as any;\n const deserialized = longhand.$deserialize(child as any);\n return [key, deserialized] as const;\n });\n return Object.fromEntries(transform) as any;\n }\n\n static $serialize<T extends typeof $Mapping>(\n this: T,\n value: Inline,\n ): Serialized {\n const split = Object.entries(value);\n const transform = split.map(([key, child]) => {\n const longhand = Shape($value) as any;\n const serialized = longhand.$serialize(child as any);\n return [key, serialized];\n });\n const merge = Object.fromEntries(transform);\n return merge;\n }\n\n static $inline: Inline;\n }\n\n type MappingConstructor = abstract new (\n value: Expand<Inline>,\n ) => InstanceType<B> & $Mapping;\n\n type Mapping = Omit<B, \"prototype\"> &\n Omit<typeof $Mapping, \"prototype\"> &\n MappingConstructor;\n\n return $Mapping as any;\n};\n\nexport type Mapping<\n C extends MappingConfiguration,\n B extends AbstractConstructor<{}> = typeof Empty,\n> = Omit<B, \"prototype\"> &\n (abstract new (\n value: Internal<C, B>[\"Inline\"],\n ) => InstanceType<B> & {\n value: Internal<C, B>[\"Inline\"];\n serialize(): Expand<Internal<C, B>[\"Serialized\"]>;\n }) & {\n $shape: \"mapping\";\n deserialize<T extends Constructor>(\n this: T,\n value: Expand<Internal<C, B>[\"Serialized\"]>,\n ): InstanceType<T>;\n $deserialize<T>(\n this: T,\n value: Internal<C, B>[\"Deserializing\"],\n ): Internal<C, B>[\"Inline\"];\n $serialize<T>(\n this: T,\n value: Internal<C, B>[\"Inline\"],\n ): Internal<C, B>[\"Serialized\"];\n $inline: Internal<C, B>[\"Inline\"];\n };\n"]}
|
package/dist/mapping.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.spec.d.ts","sourceRoot":"","sources":["../src/mapping.spec.ts"],"names":[],"mappings":""}
|
package/dist/mapping.spec.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const dict_1 = require("./dict");
|
|
4
|
-
const primitive_1 = require("./primitive");
|
|
5
|
-
const mapping_1 = require("./mapping");
|
|
6
|
-
const test_1 = require("./test");
|
|
7
|
-
describe("Mapping", () => {
|
|
8
|
-
it("class definition, specified key", () => {
|
|
9
|
-
class Test extends (0, mapping_1.Mapping)([String, (0, primitive_1.Primitive)(Number)]) {
|
|
10
|
-
test = true;
|
|
11
|
-
}
|
|
12
|
-
// Constructor parameters
|
|
13
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
14
|
-
// Deserialization
|
|
15
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
16
|
-
const a = Test.deserialize({ key: 2 });
|
|
17
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
18
|
-
// Additional prototype on deserialization
|
|
19
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
20
|
-
// Inherited prototype on deserialization
|
|
21
|
-
(0, test_1.ex)(a.value).toStrictEqual({ key: 2 }).ok;
|
|
22
|
-
// Serialization
|
|
23
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ key: 2 }).ok;
|
|
24
|
-
// Instantiation
|
|
25
|
-
const b = new Test({ key: 2 });
|
|
26
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test);
|
|
27
|
-
// Additional prototype on instantiation
|
|
28
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
29
|
-
// Inherited prototype on instantiation
|
|
30
|
-
(0, test_1.ex)(b.value).toStrictEqual({ key: 2 }).ok;
|
|
31
|
-
});
|
|
32
|
-
it("class definition, unspecified key", () => {
|
|
33
|
-
class Test extends (0, mapping_1.Mapping)([(0, primitive_1.Primitive)(Number)]) {
|
|
34
|
-
test = true;
|
|
35
|
-
}
|
|
36
|
-
// Constructor parameters
|
|
37
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
38
|
-
// Deserialization
|
|
39
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
40
|
-
const a = Test.deserialize({ key: 2 });
|
|
41
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
42
|
-
// Additional prototype on deserialization
|
|
43
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
44
|
-
// Inherited prototype on deserialization
|
|
45
|
-
(0, test_1.ex)(a.value).toStrictEqual({ key: 2 }).ok;
|
|
46
|
-
// Serialization
|
|
47
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ key: 2 }).ok;
|
|
48
|
-
// Instantiation
|
|
49
|
-
const b = new Test({ key: 2 });
|
|
50
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test);
|
|
51
|
-
// Additional prototype on instantiation
|
|
52
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
53
|
-
// Inherited prototype on instantiation
|
|
54
|
-
(0, test_1.ex)(b.value).toStrictEqual({ key: 2 }).ok;
|
|
55
|
-
});
|
|
56
|
-
it("inlined definition", () => {
|
|
57
|
-
class Test extends (0, dict_1.Dict)({
|
|
58
|
-
longhand: (0, mapping_1.Mapping)([(0, primitive_1.Primitive)(Number)]),
|
|
59
|
-
shorthand: (0, mapping_1.Mapping)([Number, { nested: String }]),
|
|
60
|
-
}) {
|
|
61
|
-
test = true;
|
|
62
|
-
}
|
|
63
|
-
// Constructor parameters
|
|
64
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
65
|
-
// Deserialization
|
|
66
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
67
|
-
const a = Test.deserialize({
|
|
68
|
-
longhand: { key: 2 },
|
|
69
|
-
shorthand: { 0: { nested: "a" } },
|
|
70
|
-
});
|
|
71
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
72
|
-
// Additional prototype on deserialization
|
|
73
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
74
|
-
// Inherited prototype on deserialization
|
|
75
|
-
(0, test_1.ex)(a.longhand).toStrictEqual({ key: 2 }).ok;
|
|
76
|
-
(0, test_1.ex)(a.shorthand).toStrictEqual({
|
|
77
|
-
0: { nested: "a" },
|
|
78
|
-
}).ok;
|
|
79
|
-
// Serialization
|
|
80
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({
|
|
81
|
-
longhand: { key: 2 },
|
|
82
|
-
shorthand: { 0: { nested: "a" } },
|
|
83
|
-
}).ok;
|
|
84
|
-
// Instantiation
|
|
85
|
-
const b = new Test({
|
|
86
|
-
longhand: { key: 2 },
|
|
87
|
-
shorthand: { 0: { nested: "a" } },
|
|
88
|
-
});
|
|
89
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
90
|
-
// Additional prototype on instantiation
|
|
91
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
92
|
-
// Inherited prototype on instantiation
|
|
93
|
-
(0, test_1.ex)(b.longhand).toStrictEqual({ key: 2 }).ok;
|
|
94
|
-
(0, test_1.ex)(b.shorthand).toStrictEqual({
|
|
95
|
-
0: { nested: "a" },
|
|
96
|
-
}).ok;
|
|
97
|
-
});
|
|
98
|
-
it("referenced definition", () => {
|
|
99
|
-
class Reference extends (0, mapping_1.Mapping)([Number]) {
|
|
100
|
-
}
|
|
101
|
-
class Test extends (0, dict_1.Dict)({ reference: Reference }) {
|
|
102
|
-
test = true;
|
|
103
|
-
}
|
|
104
|
-
// Constructor parameters
|
|
105
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
106
|
-
// Deserialization
|
|
107
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
108
|
-
const a = Test.deserialize({ reference: { 0: 1 } });
|
|
109
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
110
|
-
// Additional prototype on deserialization
|
|
111
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
112
|
-
// Inherited prototype on deserialization
|
|
113
|
-
(0, test_1.ex)(a.reference).toStrictEqual(new Reference({ 0: 1 })).ok;
|
|
114
|
-
// Serialization
|
|
115
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ reference: { 0: 1 } }).ok;
|
|
116
|
-
// Instantiation
|
|
117
|
-
const b = new Test({ reference: new Reference({ 0: 1 }) });
|
|
118
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
119
|
-
// Additional prototype on instantiation
|
|
120
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
121
|
-
// Inherited prototype on instantiation
|
|
122
|
-
(0, test_1.ex)(b.reference).toStrictEqual(new Reference({ 0: 1 })).ok;
|
|
123
|
-
});
|
|
124
|
-
it("mixin extension", () => {
|
|
125
|
-
const Testable = (config) => {
|
|
126
|
-
class I extends (0, mapping_1.Mapping)(config) {
|
|
127
|
-
deep = true;
|
|
128
|
-
static deep = true;
|
|
129
|
-
}
|
|
130
|
-
return I;
|
|
131
|
-
};
|
|
132
|
-
class Test extends Testable([Number]) {
|
|
133
|
-
test = true;
|
|
134
|
-
// @ts-expect-error is not assignable to parameter of type 'true'
|
|
135
|
-
abstract = false;
|
|
136
|
-
}
|
|
137
|
-
// Constructor parameters
|
|
138
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
139
|
-
// Additional static prototype
|
|
140
|
-
(0, test_1.ex)(Test.deep).toBe(true).ok;
|
|
141
|
-
// Deserialization
|
|
142
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
143
|
-
const a = Test.deserialize({ key: 1 });
|
|
144
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
145
|
-
// Additional prototype on deserialization
|
|
146
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
147
|
-
(0, test_1.ex)(a.abstract).toBe(false).ok;
|
|
148
|
-
// Extended prototype on deserialization
|
|
149
|
-
(0, test_1.ex)(a.deep).toBe(true).ok;
|
|
150
|
-
// Inherited prototype on deserialization
|
|
151
|
-
(0, test_1.ex)(a.value).toStrictEqual({ key: 1 }).ok;
|
|
152
|
-
// Serialization
|
|
153
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ key: 1 }).ok;
|
|
154
|
-
// Instantiation
|
|
155
|
-
const b = new Test({ key: 2 });
|
|
156
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
157
|
-
// Additional prototype on instantiation
|
|
158
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
159
|
-
(0, test_1.ex)(b.abstract).toBe(false).ok;
|
|
160
|
-
// Extended prototype on instantiation
|
|
161
|
-
(0, test_1.ex)(b.deep).toBe(true).ok;
|
|
162
|
-
// Inherited prototype on instantiation
|
|
163
|
-
(0, test_1.ex)(b.value).toStrictEqual({ key: 2 }).ok;
|
|
164
|
-
});
|
|
165
|
-
it("mixin supersede", () => {
|
|
166
|
-
const Testable = (config) => {
|
|
167
|
-
class I {
|
|
168
|
-
deep = true;
|
|
169
|
-
static deep = true;
|
|
170
|
-
}
|
|
171
|
-
return (0, mapping_1.Mapping)(config, I);
|
|
172
|
-
};
|
|
173
|
-
class Test extends Testable([Number]) {
|
|
174
|
-
test = true;
|
|
175
|
-
// @ts-expect-error is not assignable to parameter of type 'true'
|
|
176
|
-
abstract = false;
|
|
177
|
-
}
|
|
178
|
-
// Constructor parameters
|
|
179
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
180
|
-
// Additional static prototype
|
|
181
|
-
(0, test_1.ex)(Test.deep).toBe(true).ok;
|
|
182
|
-
// Deserialization
|
|
183
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
184
|
-
const a = Test.deserialize({ key: 1 });
|
|
185
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
186
|
-
// Additional prototype on deserialization
|
|
187
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
188
|
-
(0, test_1.ex)(a.abstract).toBe(false).ok;
|
|
189
|
-
// Superseeded prototype on deserialization
|
|
190
|
-
(0, test_1.ex)(a.deep).toBe(true).ok;
|
|
191
|
-
// Inherited prototype on deserialization
|
|
192
|
-
(0, test_1.ex)(a.value).toStrictEqual({ key: 1 }).ok;
|
|
193
|
-
// Serialization
|
|
194
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ key: 1 }).ok;
|
|
195
|
-
// Instantiation
|
|
196
|
-
const b = new Test({ key: 2 });
|
|
197
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
198
|
-
// Additional prototype on instantiation
|
|
199
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
200
|
-
(0, test_1.ex)(b.abstract).toBe(false).ok;
|
|
201
|
-
// Superseeded prototype on instantiation
|
|
202
|
-
(0, test_1.ex)(b.deep).toBe(true).ok;
|
|
203
|
-
// Inherited prototype on instantiation
|
|
204
|
-
(0, test_1.ex)(b.value).toStrictEqual({ key: 2 }).ok;
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
//# sourceMappingURL=mapping.spec.js.map
|
package/dist/mapping.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mapping.spec.js","sourceRoot":"","sources":["../src/mapping.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Dict } from \"./dict\";\nimport { Primitive } from \"./primitive\";\nimport { Mapping, MappingConfiguration } from \"./mapping\";\nimport { ex } from \"./test\";\n\ndescribe(\"Mapping\", () => {\n it(\"class definition, specified key\", () => {\n class Test extends Mapping([String, Primitive(Number)]) {\n test = true as const;\n }\n\n type Serialized = { [key: string]: number };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<Serialized>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ key: 2 });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype on deserialization\n ex(a.test).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toStrictEqual<Record<string, number>>({ key: 2 }).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ key: 2 }).ok;\n\n // Instantiation\n const b: Test = new Test({ key: 2 });\n ex(b).toBeInstanceOf(Test);\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual<Serialized>({ key: 2 }).ok;\n });\n\n it(\"class definition, unspecified key\", () => {\n class Test extends Mapping([Primitive(Number)]) {\n test = true as const;\n }\n\n type Serialized = { [key: string]: number };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<Serialized>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ key: 2 });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype on deserialization\n ex(a.test).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toStrictEqual<Record<string, number>>({ key: 2 }).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ key: 2 }).ok;\n\n // Instantiation\n const b: Test = new Test({ key: 2 });\n ex(b).toBeInstanceOf(Test);\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual<Serialized>({ key: 2 }).ok;\n });\n\n it(\"inlined definition\", () => {\n class Test extends Dict({\n longhand: Mapping([Primitive(Number)]),\n shorthand: Mapping([Number, { nested: String }]),\n }) {\n test = true as const;\n }\n\n type Serialized = {\n longhand: { [key: string]: number };\n shorthand: { [key: number]: { nested: string } };\n };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<Serialized>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a: Test = Test.deserialize({\n longhand: { key: 2 },\n shorthand: { 0: { nested: \"a\" } },\n });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype on deserialization\n ex(a.test).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.longhand).toStrictEqual<Serialized[\"longhand\"]>({ key: 2 }).ok;\n ex(a.shorthand).toStrictEqual<Serialized[\"shorthand\"]>({\n 0: { nested: \"a\" },\n }).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({\n longhand: { key: 2 },\n shorthand: { 0: { nested: \"a\" } },\n }).ok;\n\n // Instantiation\n const b: Test = new Test({\n longhand: { key: 2 },\n shorthand: { 0: { nested: \"a\" } },\n });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.longhand).toStrictEqual<Serialized[\"longhand\"]>({ key: 2 }).ok;\n ex(b.shorthand).toStrictEqual<Serialized[\"shorthand\"]>({\n 0: { nested: \"a\" },\n }).ok;\n });\n\n it(\"referenced definition\", () => {\n class Reference extends Mapping([Number]) {}\n class Test extends Dict({ reference: Reference }) {\n test = true as const;\n }\n\n type Serialized = { reference: { [key: string]: number } };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<{ reference: Reference }>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a: Test = Test.deserialize({ reference: { 0: 1 } });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype on deserialization\n ex(a.test).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.reference).toStrictEqual<Reference>(new Reference({ 0: 1 })).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ reference: { 0: 1 } }).ok;\n\n // Instantiation\n const b: Test = new Test({ reference: new Reference({ 0: 1 }) });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.reference).toStrictEqual<Reference>(new Reference({ 0: 1 })).ok;\n });\n\n it(\"mixin extension\", () => {\n const Testable = <const C extends MappingConfiguration>(config: C) => {\n abstract class I extends Mapping(config) {\n deep = true as const;\n static deep = true as const;\n\n abstract abstract: true;\n }\n\n return I;\n };\n\n class Test extends Testable([Number]) {\n test = true as const;\n\n // @ts-expect-error is not assignable to parameter of type 'true'\n abstract = false as const;\n }\n\n type Serialized = { [key: string]: number };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<Serialized>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ key: 1 });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype on deserialization\n ex(a.test).toBe(true as const).ok;\n ex(a.abstract).toBe(false as const).ok;\n\n // Extended prototype on deserialization\n ex(a.deep).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toStrictEqual<Serialized>({ key: 1 }).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ key: 1 }).ok;\n\n // Instantiation\n const b = new Test({ key: 2 });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n ex(b.abstract).toBe(false as const).ok;\n\n // Extended prototype on instantiation\n ex(b.deep).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual<Serialized>({ key: 2 }).ok;\n });\n\n it(\"mixin supersede\", () => {\n const Testable = <C extends MappingConfiguration>(config: C) => {\n abstract class I {\n deep = true as const;\n static deep = true as const;\n\n abstract abstract: true;\n }\n\n return Mapping(config, I);\n };\n\n class Test extends Testable([Number]) {\n test = true as const;\n\n // @ts-expect-error is not assignable to parameter of type 'true'\n abstract = false as const;\n }\n\n type Serialized = { [key: string]: number };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<Serialized>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ key: 1 });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype on deserialization\n ex(a.test).toBe(true as const).ok;\n ex(a.abstract).toBe(false as const).ok;\n\n // Superseeded prototype on deserialization\n ex(a.deep).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toStrictEqual<Serialized>({ key: 1 }).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ key: 1 }).ok;\n\n // Instantiation\n const b = new Test({ key: 2 });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n ex(b.abstract).toBe(false as const).ok;\n\n // Superseeded prototype on instantiation\n ex(b.deep).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual<Serialized>({ key: 2 }).ok;\n });\n});\n"]}
|
package/dist/multiple.d.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Definition, Expand, Shorthand, DefinitionOf, AbstractConstructor, Empty, Constructor } from "./_";
|
|
2
|
-
export type MultipleConfiguration = Definition | Shorthand;
|
|
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"]>;
|
|
12
|
-
}) & {
|
|
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 {};
|
|
20
|
-
//# sourceMappingURL=multiple.d.ts.map
|
package/dist/multiple.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,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
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
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 $shape = "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
|
-
get map() {
|
|
30
|
-
return this.value.map.bind(this.value);
|
|
31
|
-
}
|
|
32
|
-
get reduce() {
|
|
33
|
-
return this.value.reduce.bind(this.value);
|
|
34
|
-
}
|
|
35
|
-
get filter() {
|
|
36
|
-
return this.value.filter.bind(this.value);
|
|
37
|
-
}
|
|
38
|
-
get forEach() {
|
|
39
|
-
return this.value.forEach.bind(this.value);
|
|
40
|
-
}
|
|
41
|
-
get some() {
|
|
42
|
-
return this.value.some.bind(this.value);
|
|
43
|
-
}
|
|
44
|
-
get every() {
|
|
45
|
-
return this.value.every.bind(this.value);
|
|
46
|
-
}
|
|
47
|
-
get find() {
|
|
48
|
-
return this.value.find.bind(this.value);
|
|
49
|
-
}
|
|
50
|
-
get findIndex() {
|
|
51
|
-
return this.value.findIndex.bind(this.value);
|
|
52
|
-
}
|
|
53
|
-
get indexOf() {
|
|
54
|
-
return this.value.indexOf.bind(this.value);
|
|
55
|
-
}
|
|
56
|
-
get lastIndexOf() {
|
|
57
|
-
return this.value.lastIndexOf.bind(this.value);
|
|
58
|
-
}
|
|
59
|
-
get includes() {
|
|
60
|
-
return this.value.includes.bind(this.value);
|
|
61
|
-
}
|
|
62
|
-
get keys() {
|
|
63
|
-
return this.value.keys.bind(this.value);
|
|
64
|
-
}
|
|
65
|
-
get values() {
|
|
66
|
-
return this.value.values.bind(this.value);
|
|
67
|
-
}
|
|
68
|
-
get entries() {
|
|
69
|
-
return this.value.entries.bind(this.value);
|
|
70
|
-
}
|
|
71
|
-
get at() {
|
|
72
|
-
return this.value.at.bind(this.value);
|
|
73
|
-
}
|
|
74
|
-
get concat() {
|
|
75
|
-
return this.value.concat.bind(this.value);
|
|
76
|
-
}
|
|
77
|
-
get flat() {
|
|
78
|
-
return this.value.flat.bind(this.value);
|
|
79
|
-
}
|
|
80
|
-
get splice() {
|
|
81
|
-
return this.value.splice.bind(this.value);
|
|
82
|
-
}
|
|
83
|
-
get flatMap() {
|
|
84
|
-
return this.value.flatMap.bind(this.value);
|
|
85
|
-
}
|
|
86
|
-
get push() {
|
|
87
|
-
return this.value.push.bind(this.value);
|
|
88
|
-
}
|
|
89
|
-
get pop() {
|
|
90
|
-
return this.value.pop.bind(this.value);
|
|
91
|
-
}
|
|
92
|
-
get sort() {
|
|
93
|
-
return this.value.sort.bind(this.value);
|
|
94
|
-
}
|
|
95
|
-
get slice() {
|
|
96
|
-
return this.value.slice.bind(this.value);
|
|
97
|
-
}
|
|
98
|
-
get length() {
|
|
99
|
-
return this.value.length;
|
|
100
|
-
}
|
|
101
|
-
get fill() {
|
|
102
|
-
return this.value.fill.bind(this.value);
|
|
103
|
-
}
|
|
104
|
-
get copyWithin() {
|
|
105
|
-
return this.value.copyWithin.bind(this.value);
|
|
106
|
-
}
|
|
107
|
-
get reverse() {
|
|
108
|
-
return this.value.reverse.bind(this.value);
|
|
109
|
-
}
|
|
110
|
-
get shift() {
|
|
111
|
-
return this.value.shift.bind(this.value);
|
|
112
|
-
}
|
|
113
|
-
get unshift() {
|
|
114
|
-
return this.value.unshift.bind(this.value);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
return $Multiple;
|
|
118
|
-
};
|
|
119
|
-
exports.Multiple = Multiple;
|
|
120
|
-
//# sourceMappingURL=multiple.js.map
|
package/dist/multiple.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiple.js","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Definition,\n Expand,\n Shorthand,\n DefinitionOf,\n Shape,\n AbstractConstructor,\n Empty,\n Constructor,\n} from \"./_\";\n\nexport type MultipleConfiguration = Definition | Shorthand;\nexport type MultipleShorthand = [any] | readonly [any];\n\ntype Internal<S extends MultipleConfiguration> = {\n Serialized: ReturnType<DefinitionOf<S>[\"$serialize\"]>[];\n Inline: DefinitionOf<S>[\"$inline\"][];\n};\n\nexport const Multiple = <\n const S extends MultipleConfiguration,\n B extends AbstractConstructor<{}> = typeof Empty,\n>(\n of: S,\n base: B = Empty as any,\n): IMultiple<S, B> => {\n const longhand = Shape(of);\n\n abstract class $Multiple extends (base as any as Constructor<{}>) {\n constructor(public value: any[]) {\n super();\n }\n static $shape = \"multiple\" as const;\n\n serialize() {\n return $Multiple.$serialize(this.value);\n }\n\n static deserialize(value: any) {\n return new (this as any)(($Multiple as any).$deserialize(value));\n }\n\n static $deserialize(value: any) {\n return (value as any).map(longhand.$deserialize);\n }\n\n static $serialize(value: any) {\n return (value as any).map(longhand.$serialize as any);\n }\n\n [Symbol.iterator]() {\n return this.value[Symbol.iterator]();\n }\n\n get map() {\n return this.value.map.bind(this.value);\n }\n\n get reduce() {\n return this.value.reduce.bind(this.value);\n }\n\n get filter() {\n return this.value.filter.bind(this.value);\n }\n\n get forEach() {\n return this.value.forEach.bind(this.value);\n }\n\n get some() {\n return this.value.some.bind(this.value);\n }\n\n get every() {\n return this.value.every.bind(this.value);\n }\n\n get find() {\n return this.value.find.bind(this.value);\n }\n\n get findIndex() {\n return this.value.findIndex.bind(this.value);\n }\n\n get indexOf() {\n return this.value.indexOf.bind(this.value);\n }\n\n get lastIndexOf() {\n return this.value.lastIndexOf.bind(this.value);\n }\n\n get includes() {\n return this.value.includes.bind(this.value);\n }\n\n get keys() {\n return this.value.keys.bind(this.value);\n }\n\n get values() {\n return this.value.values.bind(this.value);\n }\n\n get entries() {\n return this.value.entries.bind(this.value);\n }\n\n get at() {\n return this.value.at.bind(this.value);\n }\n\n get concat() {\n return this.value.concat.bind(this.value);\n }\n\n get flat() {\n return this.value.flat.bind(this.value);\n }\n\n get splice() {\n return this.value.splice.bind(this.value);\n }\n\n get flatMap() {\n return this.value.flatMap.bind(this.value);\n }\n\n get push() {\n return this.value.push.bind(this.value);\n }\n\n get pop() {\n return this.value.pop.bind(this.value);\n }\n\n get sort() {\n return this.value.sort.bind(this.value);\n }\n\n get slice() {\n return this.value.slice.bind(this.value);\n }\n\n get length() {\n return this.value.length;\n }\n\n get fill() {\n return this.value.fill.bind(this.value);\n }\n\n get copyWithin() {\n return this.value.copyWithin.bind(this.value);\n }\n\n get reverse() {\n return this.value.reverse.bind(this.value);\n }\n\n get shift() {\n return this.value.shift.bind(this.value);\n }\n\n get unshift() {\n return this.value.unshift.bind(this.value);\n }\n }\n\n return $Multiple as any;\n};\n\nexport type IMultiple<\n S extends MultipleConfiguration,\n B extends AbstractConstructor<{}> = typeof Empty,\n> = Omit<B, \"prototype\"> &\n (abstract new (\n value: Internal<S>[\"Inline\"],\n ) => InstanceType<B> &\n Pick<\n Internal<S>[\"Inline\"],\n | \"at\"\n | \"length\"\n | \"concat\"\n | \"copyWithin\"\n | \"entries\"\n | \"every\"\n | \"fill\"\n | \"filter\"\n | \"find\"\n | \"findIndex\"\n | \"flat\"\n | \"flatMap\"\n | \"forEach\"\n | \"includes\"\n | \"indexOf\"\n | \"join\"\n | \"keys\"\n | \"lastIndexOf\"\n | \"map\"\n | \"pop\"\n | \"push\"\n | \"reduce\"\n | \"reduceRight\"\n | \"reverse\"\n | \"shift\"\n | \"slice\"\n | \"some\"\n | \"sort\"\n | \"splice\"\n | \"unshift\"\n | \"values\"\n | typeof Symbol.iterator\n > & {\n value: Internal<S>[\"Inline\"];\n serialize(): Expand<Internal<S>[\"Serialized\"]>;\n }) & {\n $shape: \"multiple\";\n deserialize<T extends Constructor>(\n this: T,\n value: Expand<Internal<S>[\"Serialized\"]>,\n ): InstanceType<T>;\n $deserialize<T extends Constructor>(\n this: T,\n value: Internal<S>[\"Serialized\"],\n ): InstanceType<T>;\n $serialize(value: Internal<S>[\"Inline\"]): Internal<S>[\"Serialized\"];\n $inline: Internal<S>[\"Inline\"];\n };\n"]}
|
package/dist/multiple.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiple.spec.d.ts","sourceRoot":"","sources":["../src/multiple.spec.ts"],"names":[],"mappings":""}
|