@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/multiple.spec.js
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const multiple_1 = require("./multiple");
|
|
4
|
-
const dict_1 = require("./dict");
|
|
5
|
-
const test_1 = require("./test");
|
|
6
|
-
describe("Multiple", () => {
|
|
7
|
-
it("class definition", () => {
|
|
8
|
-
class Test extends (0, multiple_1.Multiple)(String) {
|
|
9
|
-
test = true;
|
|
10
|
-
}
|
|
11
|
-
// Constructor parameters
|
|
12
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
13
|
-
// Deserialization
|
|
14
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
15
|
-
const a = Test.deserialize(["a"]);
|
|
16
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
17
|
-
// Additional prototype on deserialization
|
|
18
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
19
|
-
// Inherited prototype on deserialization
|
|
20
|
-
(0, test_1.ex)(a.value).toStrictEqual(["a"]).ok;
|
|
21
|
-
// Serialization
|
|
22
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual(["a"]).ok;
|
|
23
|
-
// Instantiation
|
|
24
|
-
const b = new Test(["b"]);
|
|
25
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test);
|
|
26
|
-
// Additional prototype on instantiation
|
|
27
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
28
|
-
// Inherited prototype on instantiation
|
|
29
|
-
(0, test_1.ex)(b.value).toStrictEqual(["b"]).ok;
|
|
30
|
-
(0, test_1.ex)([...b.values()]).toStrictEqual(["b"]).ok;
|
|
31
|
-
(0, test_1.ex)([...b.entries()]).toStrictEqual([[0, "b"]]).ok;
|
|
32
|
-
(0, test_1.ex)([...b.keys()]).toStrictEqual([0]).ok;
|
|
33
|
-
(0, test_1.ex)(b.filter(() => true)).toStrictEqual(["b"]).ok;
|
|
34
|
-
(0, test_1.ex)(b.map((x) => x.charCodeAt(0))).toStrictEqual([98]).ok;
|
|
35
|
-
(0, test_1.ex)(b.reduce((a, b) => a + b)).toStrictEqual("b").ok;
|
|
36
|
-
(0, test_1.ex)(b.some((x) => x === "b")).toBe(true).ok;
|
|
37
|
-
(0, test_1.ex)(b.every((x) => x === "b")).toBe(true).ok;
|
|
38
|
-
(0, test_1.ex)(b.find((x) => x === "b")).toStrictEqual("b").ok;
|
|
39
|
-
(0, test_1.ex)(b.findIndex((x) => x === "b")).toStrictEqual(0).ok;
|
|
40
|
-
(0, test_1.ex)(b.includes("b")).toBe(true).ok;
|
|
41
|
-
(0, test_1.ex)(b.indexOf("b")).toStrictEqual(0).ok;
|
|
42
|
-
(0, test_1.ex)(b.lastIndexOf("b")).toStrictEqual(0).ok;
|
|
43
|
-
});
|
|
44
|
-
it("inline definition", () => {
|
|
45
|
-
class Test extends (0, dict_1.Dict)({
|
|
46
|
-
longhand: (0, multiple_1.Multiple)(String),
|
|
47
|
-
shorthand: [{ nested: Number }],
|
|
48
|
-
}) {
|
|
49
|
-
test = true;
|
|
50
|
-
}
|
|
51
|
-
// Constructor parameters
|
|
52
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
53
|
-
// Deserialization
|
|
54
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
55
|
-
const a = Test.deserialize({
|
|
56
|
-
longhand: ["a"],
|
|
57
|
-
shorthand: [{ nested: 0 }],
|
|
58
|
-
});
|
|
59
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
60
|
-
// Additional prototype on deserialization
|
|
61
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
62
|
-
// Inherited prototype on deserialization
|
|
63
|
-
(0, test_1.ex)(a.longhand).toStrictEqual(["a"]).ok;
|
|
64
|
-
(0, test_1.ex)(a.shorthand).toStrictEqual([{ nested: 0 }]).ok;
|
|
65
|
-
// Serialization
|
|
66
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({
|
|
67
|
-
longhand: ["a"],
|
|
68
|
-
shorthand: [{ nested: 0 }],
|
|
69
|
-
}).ok;
|
|
70
|
-
// Instantiation
|
|
71
|
-
const b = new Test({
|
|
72
|
-
longhand: ["b"],
|
|
73
|
-
shorthand: [{ nested: 1 }],
|
|
74
|
-
});
|
|
75
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
76
|
-
// Additional prototype on instantiation
|
|
77
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
78
|
-
// Inherited prototype on instantiation
|
|
79
|
-
(0, test_1.ex)(b.longhand).toStrictEqual(["b"]).ok;
|
|
80
|
-
(0, test_1.ex)(b.shorthand).toStrictEqual([{ nested: 1 }]).ok;
|
|
81
|
-
});
|
|
82
|
-
it("referenced definition", () => {
|
|
83
|
-
class Reference extends (0, multiple_1.Multiple)(Number) {
|
|
84
|
-
}
|
|
85
|
-
class Test extends (0, dict_1.Dict)({ reference: Reference }) {
|
|
86
|
-
test = true;
|
|
87
|
-
}
|
|
88
|
-
// Constructor parameters
|
|
89
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
90
|
-
// Deserialization
|
|
91
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
92
|
-
const a = Test.deserialize({ reference: [0] });
|
|
93
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
94
|
-
// Additional prototype on deserialization
|
|
95
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
96
|
-
// Inherited prototype on deserialization
|
|
97
|
-
(0, test_1.ex)(a.reference).toStrictEqual(new Reference([0])).ok;
|
|
98
|
-
// Serialization
|
|
99
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ reference: [0] }).ok;
|
|
100
|
-
// Instantiation
|
|
101
|
-
const b = new Test({ reference: new Reference([0]) });
|
|
102
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
103
|
-
// Additional prototype on instantiation
|
|
104
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
105
|
-
// Inherited prototype on instantiation
|
|
106
|
-
(0, test_1.ex)(b.reference).toStrictEqual(new Reference([0])).ok;
|
|
107
|
-
// Inherited prototype on instantiation
|
|
108
|
-
(0, test_1.ex)(b.reference.value).toStrictEqual([0]).ok;
|
|
109
|
-
(0, test_1.ex)([...b.reference.values()]).toStrictEqual([0]).ok;
|
|
110
|
-
(0, test_1.ex)([...b.reference.entries()]).toStrictEqual([[0, 0]])
|
|
111
|
-
.ok;
|
|
112
|
-
(0, test_1.ex)([...b.reference.keys()]).toStrictEqual([0]).ok;
|
|
113
|
-
(0, test_1.ex)(b.reference.filter(() => true)).toStrictEqual([0]).ok;
|
|
114
|
-
(0, test_1.ex)(b.reference.map((x) => String(x))).toStrictEqual(["0"]).ok;
|
|
115
|
-
(0, test_1.ex)(b.reference.reduce((a, b) => a + b)).toStrictEqual(0).ok;
|
|
116
|
-
(0, test_1.ex)(b.reference.some((x) => x === 0)).toBe(true).ok;
|
|
117
|
-
(0, test_1.ex)(b.reference.every((x) => x === 0)).toBe(true).ok;
|
|
118
|
-
(0, test_1.ex)(b.reference.find((x) => x === 0)).toStrictEqual(0).ok;
|
|
119
|
-
(0, test_1.ex)(b.reference.findIndex((x) => x === 0)).toStrictEqual(0).ok;
|
|
120
|
-
(0, test_1.ex)(b.reference.includes(0)).toBe(true).ok;
|
|
121
|
-
(0, test_1.ex)(b.reference.indexOf(0)).toStrictEqual(0).ok;
|
|
122
|
-
(0, test_1.ex)(b.reference.lastIndexOf(0)).toStrictEqual(0).ok;
|
|
123
|
-
});
|
|
124
|
-
it("mixin extension", () => {
|
|
125
|
-
const Testable = (config) => {
|
|
126
|
-
class I extends (0, multiple_1.Multiple)(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([0]);
|
|
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([0]).ok;
|
|
152
|
-
// Serialization
|
|
153
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual([0]).ok;
|
|
154
|
-
// Instantiation
|
|
155
|
-
const b = new Test([1]);
|
|
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([1]).ok;
|
|
164
|
-
});
|
|
165
|
-
it("mixin supersede", () => {
|
|
166
|
-
const Testable = (config) => {
|
|
167
|
-
class I {
|
|
168
|
-
deep = true;
|
|
169
|
-
static deep = true;
|
|
170
|
-
}
|
|
171
|
-
return (0, multiple_1.Multiple)(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([0]);
|
|
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
|
-
// Extended 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([0]).ok;
|
|
193
|
-
// Serialization
|
|
194
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual([0]).ok;
|
|
195
|
-
// Instantiation
|
|
196
|
-
const b = new Test([1]);
|
|
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
|
-
// Extended 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([1]).ok;
|
|
205
|
-
});
|
|
206
|
-
});
|
|
207
|
-
//# sourceMappingURL=multiple.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multiple.spec.js","sourceRoot":"","sources":["../src/multiple.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Multiple, MultipleConfiguration } from \"./multiple\";\nimport { Dict } from \"./dict\";\nimport { ex } from \"./test\";\n\ndescribe(\"Multiple\", () => {\n it(\"class definition\", () => {\n class Test extends Multiple(String) {\n test = true as const;\n }\n\n type Serialized = string[];\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<string[]>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize([\"a\"]);\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<string[]>([\"a\"]).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>([\"a\"]).ok;\n\n // Instantiation\n const b: Test = new Test([\"b\"]);\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<string[]>([\"b\"]).ok;\n ex([...b.values()]).toStrictEqual<string[]>([\"b\"]).ok;\n ex([...b.entries()]).toStrictEqual<[number, string][]>([[0, \"b\"]]).ok;\n ex([...b.keys()]).toStrictEqual<number[]>([0]).ok;\n ex(b.filter(() => true)).toStrictEqual<string[]>([\"b\"]).ok;\n ex(b.map((x) => x.charCodeAt(0))).toStrictEqual<number[]>([98]).ok;\n ex(b.reduce((a, b) => a + b)).toStrictEqual<string>(\"b\").ok;\n ex(b.some((x) => x === \"b\")).toBe(true).ok;\n ex(b.every((x) => x === \"b\")).toBe(true).ok;\n ex(b.find((x) => x === \"b\")).toStrictEqual<\"b\" | undefined>(\"b\").ok;\n ex(b.findIndex((x) => x === \"b\")).toStrictEqual<number>(0).ok;\n ex(b.includes(\"b\")).toBe(true).ok;\n ex(b.indexOf(\"b\")).toStrictEqual<number>(0).ok;\n ex(b.lastIndexOf(\"b\")).toStrictEqual<number>(0).ok;\n });\n\n it(\"inline definition\", () => {\n class Test extends Dict({\n longhand: Multiple(String),\n shorthand: [{ nested: Number }],\n }) {\n test = true as const;\n }\n\n type Serialized = {\n longhand: string[];\n shorthand: { nested: number }[];\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.deserialize({\n longhand: [\"a\"],\n shorthand: [{ nested: 0 }],\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\"]>([\"a\"]).ok;\n ex(a.shorthand).toStrictEqual<Serialized[\"shorthand\"]>([{ nested: 0 }]).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({\n longhand: [\"a\"],\n shorthand: [{ nested: 0 }],\n }).ok;\n\n // Instantiation\n const b: Test = new Test({\n longhand: [\"b\"],\n shorthand: [{ nested: 1 }],\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\"]>([\"b\"]).ok;\n ex(b.shorthand).toStrictEqual<Serialized[\"shorthand\"]>([{ nested: 1 }]).ok;\n });\n\n it(\"referenced definition\", () => {\n class Reference extends Multiple(Number) {}\n class Test extends Dict({ reference: Reference }) {\n test = true as const;\n }\n\n type Serialized = { reference: 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] });\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])).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ reference: [0] }).ok;\n\n // Instantiation\n const b: Test = new Test({ reference: new Reference([0]) });\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])).ok;\n\n // Inherited prototype on instantiation\n ex(b.reference.value).toStrictEqual([0]).ok;\n ex([...b.reference.values()]).toStrictEqual([0]).ok;\n ex([...b.reference.entries()]).toStrictEqual<[number, number][]>([[0, 0]])\n .ok;\n ex([...b.reference.keys()]).toStrictEqual([0]).ok;\n ex(b.reference.filter(() => true)).toStrictEqual([0]).ok;\n ex(b.reference.map((x) => String(x))).toStrictEqual([\"0\"]).ok;\n ex(b.reference.reduce((a, b) => a + b)).toStrictEqual(0).ok;\n ex(b.reference.some((x) => x === 0)).toBe(true).ok;\n ex(b.reference.every((x) => x === 0)).toBe(true).ok;\n ex(b.reference.find((x) => x === 0)).toStrictEqual<0 | undefined>(0).ok;\n ex(b.reference.findIndex((x) => x === 0)).toStrictEqual(0).ok;\n ex(b.reference.includes(0)).toBe(true).ok;\n ex(b.reference.indexOf(0)).toStrictEqual(0).ok;\n ex(b.reference.lastIndexOf(0)).toStrictEqual(0).ok;\n });\n\n it(\"mixin extension\", () => {\n const Testable = <const C extends MultipleConfiguration>(config: C) => {\n abstract class I extends Multiple(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 = 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([0]);\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>([0]).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>([0]).ok;\n\n // Instantiation\n const b = new Test([1]);\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>([1]).ok;\n });\n\n it(\"mixin supersede\", () => {\n const Testable = <C extends MultipleConfiguration>(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 Multiple(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 type Serialized = 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([0]);\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>([0]).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>([0]).ok;\n\n // Instantiation\n const b = new Test([1]);\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>([1]).ok;\n });\n});\n"]}
|
package/dist/nothing.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AbstractConstructor, Constructor, Empty } from "./_";
|
|
2
|
-
export type NothingShorthand = undefined;
|
|
3
|
-
export declare const Nothing: <B extends AbstractConstructor<{}> = typeof Empty>(config: void, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (...args: any[]) => {
|
|
4
|
-
serialize(): void;
|
|
5
|
-
}) & {
|
|
6
|
-
$shape: "nothing";
|
|
7
|
-
deserialize<T extends Constructor>(this: T, value: void): InstanceType<T>;
|
|
8
|
-
$deserialize(): void;
|
|
9
|
-
$serialize(): void;
|
|
10
|
-
$inline: void;
|
|
11
|
-
}, ""> & (abstract new (value: void) => InstanceType<B> & {
|
|
12
|
-
serialize(): void;
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=nothing.d.ts.map
|
package/dist/nothing.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,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
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
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 $shape = "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;
|
|
17
|
-
};
|
|
18
|
-
exports.Nothing = Nothing;
|
|
19
|
-
//# sourceMappingURL=nothing.js.map
|
package/dist/nothing.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nothing.js","sourceRoot":"","sources":["../src/nothing.ts"],"names":[],"mappings":";;;AAAA,0BAA0E;AAInE,MAAM,OAAO,GAAG,CACrB,MAAY,EACZ,OAAU,QAAY,EACtB,EAAE;IACF,MAAe,QAAS,SAAS,IAA+B;QAC9D,MAAM,CAAC,MAAM,GAAG,SAAkB,CAAC;QAEnC,SAAS,KAAI,CAAC;QACd,MAAM,CAAC,WAAW,CAEhB,KAAW;YAEX,OAAO,IAAK,IAAY,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,CAAC,YAAY,KAAI,CAAC;QACxB,MAAM,CAAC,UAAU,KAAI,CAAC;QACtB,MAAM,CAAC,OAAO,CAAO;;IAWvB,OAAO,QAAmB,CAAC;AAC7B,CAAC,CAAC;AA5BW,QAAA,OAAO,WA4BlB","sourcesContent":["import { AbstractConstructor, Constructor, Definition, Empty } from \"./_\";\n\nexport type NothingShorthand = undefined;\n\nexport const Nothing = <B extends AbstractConstructor<{}> = typeof Empty>(\n config: void,\n base: B = Empty as any,\n) => {\n abstract class $Nothing extends (base as any as Constructor<{}>) {\n static $shape = \"nothing\" as const;\n\n serialize() {}\n static deserialize<T extends Constructor>(\n this: T,\n value: void,\n ): InstanceType<T> {\n return new (this as any)();\n }\n static $deserialize() {}\n static $serialize() {}\n static $inline: void;\n }\n\n type NothingConstructor = abstract new (\n value: void,\n ) => InstanceType<B> & $Nothing;\n\n type Nothing = Omit<B, \"prototype\"> &\n Omit<typeof $Nothing, \"\"> &\n NothingConstructor;\n\n return $Nothing as Nothing;\n};\n"]}
|
package/dist/nothing.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nothing.spec.d.ts","sourceRoot":"","sources":["../src/nothing.spec.ts"],"names":[],"mappings":""}
|
package/dist/nothing.spec.js
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const nothing_1 = require("./nothing");
|
|
4
|
-
const dict_1 = require("./dict");
|
|
5
|
-
const test_1 = require("./test");
|
|
6
|
-
describe("Nothing", () => {
|
|
7
|
-
it("class definition", () => {
|
|
8
|
-
class Test extends (0, nothing_1.Nothing)() {
|
|
9
|
-
test = true;
|
|
10
|
-
}
|
|
11
|
-
// Constructor parameters
|
|
12
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
13
|
-
// Deserialization
|
|
14
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
15
|
-
const a = Test.deserialize();
|
|
16
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
17
|
-
// Additional prototype on deserialization
|
|
18
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
19
|
-
// Inherited prototype on deserialization
|
|
20
|
-
// none
|
|
21
|
-
// Serialization
|
|
22
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual(undefined).ok;
|
|
23
|
-
// Instantiation
|
|
24
|
-
const b = new Test();
|
|
25
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test);
|
|
26
|
-
// Additional prototype on instantiation
|
|
27
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
28
|
-
// Inherited prototype on instantiation
|
|
29
|
-
// none
|
|
30
|
-
});
|
|
31
|
-
it("inline definition", () => {
|
|
32
|
-
class Test extends (0, dict_1.Dict)({
|
|
33
|
-
longhand: (0, nothing_1.Nothing)(),
|
|
34
|
-
shorthand: undefined,
|
|
35
|
-
}) {
|
|
36
|
-
test = true;
|
|
37
|
-
}
|
|
38
|
-
// Constructor parameters
|
|
39
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
40
|
-
// Deserialization
|
|
41
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
42
|
-
const a = Test.deserialize({ longhand: undefined, shorthand: undefined });
|
|
43
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
44
|
-
// Additional prototype on deserialization
|
|
45
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
46
|
-
// Inherited prototype on deserialization
|
|
47
|
-
(0, test_1.ex)(a.longhand).toStrictEqual(undefined).ok;
|
|
48
|
-
(0, test_1.ex)(a.shorthand).toStrictEqual(undefined).ok;
|
|
49
|
-
// Serialization
|
|
50
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({
|
|
51
|
-
longhand: undefined,
|
|
52
|
-
shorthand: undefined,
|
|
53
|
-
}).ok;
|
|
54
|
-
// Instantiation
|
|
55
|
-
const b = new Test({ longhand: undefined, shorthand: undefined });
|
|
56
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test);
|
|
57
|
-
// Additional prototype on instantiation
|
|
58
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
59
|
-
// Inherited prototype on instantiation
|
|
60
|
-
(0, test_1.ex)(b.longhand).toStrictEqual(undefined).ok;
|
|
61
|
-
(0, test_1.ex)(b.shorthand).toStrictEqual(undefined).ok;
|
|
62
|
-
});
|
|
63
|
-
it("referenced definition", () => {
|
|
64
|
-
class Reference extends (0, nothing_1.Nothing)() {
|
|
65
|
-
}
|
|
66
|
-
class Test extends (0, dict_1.Dict)({ reference: Reference }) {
|
|
67
|
-
test = true;
|
|
68
|
-
}
|
|
69
|
-
// Constructor parameters
|
|
70
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
71
|
-
// Deserialization
|
|
72
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
73
|
-
const a = Test.deserialize({ reference: undefined });
|
|
74
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
75
|
-
// Additional prototype on deserialization
|
|
76
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
77
|
-
// Inherited prototype on deserialization
|
|
78
|
-
(0, test_1.ex)(a.reference).toStrictEqual(new Reference()).ok;
|
|
79
|
-
// Serialization
|
|
80
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual({ reference: undefined }).ok;
|
|
81
|
-
// Instantiation
|
|
82
|
-
const b = new Test({ reference: new Reference() });
|
|
83
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
84
|
-
// Additional prototype on instantiation
|
|
85
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
86
|
-
// Inherited prototype on instantiation
|
|
87
|
-
(0, test_1.ex)(b.reference).toStrictEqual(new Reference()).ok;
|
|
88
|
-
});
|
|
89
|
-
it("mixin extension", () => {
|
|
90
|
-
const Testable = () => {
|
|
91
|
-
class I extends (0, nothing_1.Nothing)() {
|
|
92
|
-
deep = true;
|
|
93
|
-
static deep = true;
|
|
94
|
-
}
|
|
95
|
-
return I;
|
|
96
|
-
};
|
|
97
|
-
class Test extends Testable() {
|
|
98
|
-
test = true;
|
|
99
|
-
// @ts-expect-error is not assignable to parameter of type 'true'
|
|
100
|
-
abstract = false;
|
|
101
|
-
}
|
|
102
|
-
// Constructor parameters
|
|
103
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
104
|
-
// Additional static prototype
|
|
105
|
-
(0, test_1.ex)(Test.deep).toBe(true).ok;
|
|
106
|
-
// Deserialization
|
|
107
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
108
|
-
const a = Test.deserialize();
|
|
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
|
-
(0, test_1.ex)(a.abstract).toBe(false).ok;
|
|
113
|
-
// Extended prototype on deserialization
|
|
114
|
-
(0, test_1.ex)(a.deep).toBe(true).ok;
|
|
115
|
-
// Inherited prototype on deserialization
|
|
116
|
-
// none
|
|
117
|
-
// Serialization
|
|
118
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual(undefined).ok;
|
|
119
|
-
// Instantiation
|
|
120
|
-
const b = new Test();
|
|
121
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
122
|
-
// Additional prototype on instantiation
|
|
123
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
124
|
-
(0, test_1.ex)(b.abstract).toBe(false).ok;
|
|
125
|
-
// Extended prototype on instantiation
|
|
126
|
-
(0, test_1.ex)(b.deep).toBe(true).ok;
|
|
127
|
-
// Inherited prototype on instantiation
|
|
128
|
-
// none
|
|
129
|
-
});
|
|
130
|
-
it("mixin supersede", () => {
|
|
131
|
-
const Testable = () => {
|
|
132
|
-
class I {
|
|
133
|
-
deep = true;
|
|
134
|
-
static deep = true;
|
|
135
|
-
}
|
|
136
|
-
return (0, nothing_1.Nothing)(undefined, I);
|
|
137
|
-
};
|
|
138
|
-
class Test extends Testable() {
|
|
139
|
-
test = true;
|
|
140
|
-
// @ts-expect-error is not assignable to parameter of type 'true'
|
|
141
|
-
abstract = false;
|
|
142
|
-
}
|
|
143
|
-
// Constructor parameters
|
|
144
|
-
(0, test_1.ex)(Test).toHaveFirstParam().ok;
|
|
145
|
-
// Additional static prototype
|
|
146
|
-
(0, test_1.ex)(Test.deep).toBe(true).ok;
|
|
147
|
-
// Deserialization
|
|
148
|
-
(0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
|
|
149
|
-
const a = Test.deserialize();
|
|
150
|
-
(0, test_1.ex)(a).toBeInstanceOf(Test).ok;
|
|
151
|
-
// Additional prototype on deserialization
|
|
152
|
-
(0, test_1.ex)(a.test).toBe(true).ok;
|
|
153
|
-
(0, test_1.ex)(a.abstract).toBe(false).ok;
|
|
154
|
-
// Extended prototype on deserialization
|
|
155
|
-
(0, test_1.ex)(a.deep).toBe(true).ok;
|
|
156
|
-
// Inherited prototype on deserialization
|
|
157
|
-
// none
|
|
158
|
-
// Serialization
|
|
159
|
-
(0, test_1.ex)(a.serialize()).toStrictEqual(undefined).ok;
|
|
160
|
-
// Instantiation
|
|
161
|
-
const b = new Test();
|
|
162
|
-
(0, test_1.ex)(b).toBeInstanceOf(Test).ok;
|
|
163
|
-
// Additional prototype on instantiation
|
|
164
|
-
(0, test_1.ex)(b.test).toBe(true).ok;
|
|
165
|
-
(0, test_1.ex)(b.abstract).toBe(false).ok;
|
|
166
|
-
// Extended prototype on instantiation
|
|
167
|
-
(0, test_1.ex)(b.deep).toBe(true).ok;
|
|
168
|
-
// Inherited prototype on instantiation
|
|
169
|
-
// none
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
//# sourceMappingURL=nothing.spec.js.map
|
package/dist/nothing.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nothing.spec.js","sourceRoot":"","sources":["../src/nothing.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nothing } from \"./nothing\";\nimport { Dict } from \"./dict\";\nimport { ex } from \"./test\";\n\ndescribe(\"Nothing\", () => {\n it(\"class definition\", () => {\n class Test extends Nothing() {\n test = true as const;\n }\n\n type Serialized = void;\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();\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 // none\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>(undefined).ok;\n\n // Instantiation\n const b: Test = new Test();\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 // none\n });\n\n it(\"inline definition\", () => {\n class Test extends Dict({\n longhand: Nothing(),\n shorthand: undefined,\n }) {\n test = true as const;\n }\n\n type Serialized = { longhand: void; shorthand: void };\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({ longhand: undefined, shorthand: undefined });\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<void>(undefined).ok;\n ex(a.shorthand).toStrictEqual<void>(undefined).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({\n longhand: undefined,\n shorthand: undefined,\n }).ok;\n\n // Instantiation\n const b: Test = new Test({ longhand: undefined, shorthand: undefined });\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.longhand).toStrictEqual<void>(undefined).ok;\n ex(b.shorthand).toStrictEqual<void>(undefined).ok;\n });\n\n it(\"referenced definition\", () => {\n class Reference extends Nothing() {}\n class Test extends Dict({ reference: Reference }) {\n test = true as const;\n }\n\n type Serialized = { reference: void };\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: undefined });\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()).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ reference: undefined }).ok;\n\n // Instantiation\n const b: Test = new Test({ reference: new Reference() });\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()).ok;\n });\n\n it(\"mixin extension\", () => {\n const Testable = () => {\n abstract class I extends Nothing() {\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() {\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 = void;\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();\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 // none\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>(undefined).ok;\n\n // Instantiation\n const b = new Test();\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 // none\n });\n\n it(\"mixin supersede\", () => {\n const Testable = () => {\n abstract class I {\n deep = true as const;\n static deep = true as const;\n\n abstract abstract: true;\n }\n\n return Nothing(undefined, I);\n };\n\n class Test extends Testable() {\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 = void;\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();\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 // none\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>(undefined).ok;\n\n // Instantiation\n const b = new Test();\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 // none\n });\n});\n"]}
|
package/dist/optional.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { Definition, Expand, Shorthand, DefinitionOf, Constructor, AbstractConstructor, Empty } from "./_";
|
|
2
|
-
export type OptionalConfiguration = Definition | Shorthand;
|
|
3
|
-
type Matcher<V> = {
|
|
4
|
-
some: (value: V) => any;
|
|
5
|
-
none: () => any;
|
|
6
|
-
};
|
|
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"]>;
|
|
24
|
-
});
|
|
25
|
-
export {};
|
|
26
|
-
//# sourceMappingURL=optional.d.ts.map
|
package/dist/optional.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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,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"}
|
package/dist/optional.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Optional = void 0;
|
|
4
|
-
const _1 = require("./_");
|
|
5
|
-
const Optional = (of, base = _1.Empty) => {
|
|
6
|
-
class $Optional extends base {
|
|
7
|
-
value;
|
|
8
|
-
constructor(value) {
|
|
9
|
-
super();
|
|
10
|
-
this.value = value;
|
|
11
|
-
}
|
|
12
|
-
static $shape = "optional";
|
|
13
|
-
serialize() {
|
|
14
|
-
return $Optional.$serialize(this.value);
|
|
15
|
-
}
|
|
16
|
-
match(config) {
|
|
17
|
-
if (this.value === undefined) {
|
|
18
|
-
return config.none();
|
|
19
|
-
}
|
|
20
|
-
return config.some(this.value);
|
|
21
|
-
}
|
|
22
|
-
static deserialize(value) {
|
|
23
|
-
return new this(this.$deserialize(value));
|
|
24
|
-
}
|
|
25
|
-
static $deserialize(value) {
|
|
26
|
-
if (value === undefined) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
return (0, _1.Shape)(of).$deserialize(value);
|
|
30
|
-
}
|
|
31
|
-
static $serialize(value) {
|
|
32
|
-
return value === undefined
|
|
33
|
-
? undefined
|
|
34
|
-
: (0, _1.Shape)(of).$serialize(value);
|
|
35
|
-
}
|
|
36
|
-
static $inline;
|
|
37
|
-
}
|
|
38
|
-
return $Optional;
|
|
39
|
-
};
|
|
40
|
-
exports.Optional = Optional;
|
|
41
|
-
//# sourceMappingURL=optional.js.map
|
package/dist/optional.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../src/optional.ts"],"names":[],"mappings":";;;AAAA,0BASa;AAaN,MAAM,QAAQ,GAAG,CAItB,EAAK,EACL,OAAU,QAAY,EACL,EAAE;IACnB,MAAe,SAAU,SAAS,IAA+B;QAC5C;QAAnB,YAAmB,KAAU;YAC3B,KAAK,EAAE,CAAC;YADS,UAAK,GAAL,KAAK,CAAK;QAE7B,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,UAAmB,CAAC;QAEpC,SAAS;YACP,OAAO,SAAS,CAAC,UAAU,CAAE,IAAY,CAAC,KAAK,CAAQ,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,MAAW;YACf,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,KAAU;YAEV,OAAO,IAAK,IAAY,CAAE,IAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAQ,CAAC;QACrE,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,KAAU;YAC5B,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,CAAsC,KAAU;YAC/D,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,CAAM;;IAGtB,OAAO,SAAgB,CAAC;AAC1B,CAAC,CAAC;AAjDW,QAAA,QAAQ,YAiDnB","sourcesContent":["import {\n Definition,\n Expand,\n Shorthand,\n DefinitionOf,\n Shape,\n Constructor,\n AbstractConstructor,\n Empty,\n} from \"./_\";\n\nexport type OptionalConfiguration = Definition | Shorthand;\n\ntype Matcher<V> = { some: (value: V) => any; none: () => any };\n\ntype Internal<S extends Definition | Shorthand> = {\n Serialized: ReturnType<DefinitionOf<S>[\"$serialize\"]> | undefined;\n Deserializing: Parameters<DefinitionOf<S>[\"$deserialize\"]>[0] | undefined;\n Inline: Expand<DefinitionOf<S>[\"$inline\"]> | undefined;\n Required: Expand<DefinitionOf<S>[\"$inline\"]>;\n};\n\nexport const Optional = <\n S extends Definition | Shorthand,\n B extends AbstractConstructor<{}> = typeof Empty,\n>(\n of: S,\n base: B = Empty as any,\n): IOptional<S, B> => {\n abstract class $Optional extends (base as any as Constructor<{}>) {\n constructor(public value: any) {\n super();\n }\n\n static $shape = \"optional\" as const;\n\n serialize() {\n return $Optional.$serialize((this as any).value) as any;\n }\n\n match(config: any) {\n if ((this as any).value === undefined) {\n return config.none();\n }\n return config.some((this as any).value);\n }\n\n static deserialize<T extends Constructor>(\n this: T,\n value: any,\n ): InstanceType<T> {\n return new (this as any)((this as any).$deserialize(value)) as any;\n }\n\n static $deserialize(value: any): any {\n if (value === undefined) {\n return undefined;\n }\n return (Shape(of) as any).$deserialize(value);\n }\n\n static $serialize<T extends typeof $Optional>(this: T, value: any): any {\n return value === undefined\n ? undefined\n : (Shape(of) as any).$serialize(value);\n }\n\n static $inline: any;\n }\n\n return $Optional as any;\n};\n\nexport type IOptional<\n S extends Definition | Shorthand,\n B extends AbstractConstructor<{}> = typeof Object,\n> = Omit<B, \"prototype\"> & {\n $shape: \"optional\";\n deserialize<T extends Constructor>(\n this: T,\n value: Internal<S>[\"Deserializing\"],\n ): InstanceType<T>;\n $deserialize(value: Internal<S>[\"Deserializing\"]): Definition[\"$inline\"];\n $serialize<T>(\n this: T,\n value: Internal<S>[\"Inline\"],\n ): Internal<S>[\"Serialized\"];\n $inline: Internal<S>[\"Inline\"];\n} & (abstract new (\n value: Internal<S>[\"Inline\"],\n ) => InstanceType<B> & {\n value: Internal<S>[\"Inline\"];\n serialize(): Expand<Internal<S>[\"Serialized\"]>;\n match<M extends Matcher<Expand<Internal<S>[\"Required\"]>>>(\n config: M,\n ): ReturnType<M[\"some\"]> | ReturnType<M[\"none\"]>;\n });\n"]}
|
package/dist/optional.spec.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"optional.spec.d.ts","sourceRoot":"","sources":["../src/optional.spec.ts"],"names":[],"mappings":""}
|