@ddd-ts/shape 0.0.35 → 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.
Files changed (105) hide show
  1. package/package.json +15 -6
  2. package/dist/_.d.ts +0 -39
  3. package/dist/_.d.ts.map +0 -1
  4. package/dist/_.js +0 -55
  5. package/dist/_.js.map +0 -1
  6. package/dist/addons/microsecond-timestamp.d.ts +0 -22
  7. package/dist/addons/microsecond-timestamp.d.ts.map +0 -1
  8. package/dist/addons/microsecond-timestamp.js +0 -73
  9. package/dist/addons/microsecond-timestamp.js.map +0 -1
  10. package/dist/choice.d.ts +0 -30
  11. package/dist/choice.d.ts.map +0 -1
  12. package/dist/choice.js +0 -49
  13. package/dist/choice.js.map +0 -1
  14. package/dist/choice.spec.d.ts +0 -2
  15. package/dist/choice.spec.d.ts.map +0 -1
  16. package/dist/choice.spec.js +0 -147
  17. package/dist/choice.spec.js.map +0 -1
  18. package/dist/class.d.ts +0 -23
  19. package/dist/class.d.ts.map +0 -1
  20. package/dist/class.js +0 -31
  21. package/dist/class.js.map +0 -1
  22. package/dist/class.spec.d.ts +0 -2
  23. package/dist/class.spec.d.ts.map +0 -1
  24. package/dist/class.spec.js +0 -39
  25. package/dist/class.spec.js.map +0 -1
  26. package/dist/dict.d.ts +0 -43
  27. package/dist/dict.d.ts.map +0 -1
  28. package/dist/dict.js +0 -47
  29. package/dist/dict.js.map +0 -1
  30. package/dist/dict.spec.d.ts +0 -2
  31. package/dist/dict.spec.d.ts.map +0 -1
  32. package/dist/dict.spec.js +0 -180
  33. package/dist/dict.spec.js.map +0 -1
  34. package/dist/discriminated-union.d.ts +0 -74
  35. package/dist/discriminated-union.d.ts.map +0 -1
  36. package/dist/discriminated-union.js +0 -97
  37. package/dist/discriminated-union.js.map +0 -1
  38. package/dist/discriminated-union.spec.d.ts +0 -2
  39. package/dist/discriminated-union.spec.d.ts.map +0 -1
  40. package/dist/discriminated-union.spec.js +0 -262
  41. package/dist/discriminated-union.spec.js.map +0 -1
  42. package/dist/either.d.ts +0 -84
  43. package/dist/either.d.ts.map +0 -1
  44. package/dist/either.js +0 -62
  45. package/dist/either.js.map +0 -1
  46. package/dist/either.spec.d.ts +0 -2
  47. package/dist/either.spec.d.ts.map +0 -1
  48. package/dist/either.spec.js +0 -232
  49. package/dist/either.spec.js.map +0 -1
  50. package/dist/index.d.ts +0 -14
  51. package/dist/index.d.ts.map +0 -1
  52. package/dist/index.js +0 -30
  53. package/dist/index.js.map +0 -1
  54. package/dist/literal.d.ts +0 -15
  55. package/dist/literal.d.ts.map +0 -1
  56. package/dist/literal.js +0 -27
  57. package/dist/literal.js.map +0 -1
  58. package/dist/literal.spec.d.ts +0 -2
  59. package/dist/literal.spec.d.ts.map +0 -1
  60. package/dist/literal.spec.js +0 -162
  61. package/dist/literal.spec.js.map +0 -1
  62. package/dist/mapping.d.ts +0 -43
  63. package/dist/mapping.d.ts.map +0 -1
  64. package/dist/mapping.js +0 -50
  65. package/dist/mapping.js.map +0 -1
  66. package/dist/mapping.spec.d.ts +0 -2
  67. package/dist/mapping.spec.d.ts.map +0 -1
  68. package/dist/mapping.spec.js +0 -207
  69. package/dist/mapping.spec.js.map +0 -1
  70. package/dist/multiple.d.ts +0 -20
  71. package/dist/multiple.d.ts.map +0 -1
  72. package/dist/multiple.js +0 -120
  73. package/dist/multiple.js.map +0 -1
  74. package/dist/multiple.spec.d.ts +0 -2
  75. package/dist/multiple.spec.d.ts.map +0 -1
  76. package/dist/multiple.spec.js +0 -207
  77. package/dist/multiple.spec.js.map +0 -1
  78. package/dist/nothing.d.ts +0 -14
  79. package/dist/nothing.d.ts.map +0 -1
  80. package/dist/nothing.js +0 -19
  81. package/dist/nothing.js.map +0 -1
  82. package/dist/nothing.spec.d.ts +0 -2
  83. package/dist/nothing.spec.d.ts.map +0 -1
  84. package/dist/nothing.spec.js +0 -172
  85. package/dist/nothing.spec.js.map +0 -1
  86. package/dist/optional.d.ts +0 -26
  87. package/dist/optional.d.ts.map +0 -1
  88. package/dist/optional.js +0 -41
  89. package/dist/optional.js.map +0 -1
  90. package/dist/optional.spec.d.ts +0 -2
  91. package/dist/optional.spec.d.ts.map +0 -1
  92. package/dist/optional.spec.js +0 -172
  93. package/dist/optional.spec.js.map +0 -1
  94. package/dist/primitive.d.ts +0 -38
  95. package/dist/primitive.d.ts.map +0 -1
  96. package/dist/primitive.js +0 -33
  97. package/dist/primitive.js.map +0 -1
  98. package/dist/primitive.spec.d.ts +0 -2
  99. package/dist/primitive.spec.d.ts.map +0 -1
  100. package/dist/primitive.spec.js +0 -162
  101. package/dist/primitive.spec.js.map +0 -1
  102. package/dist/test.d.ts +0 -36
  103. package/dist/test.d.ts.map +0 -1
  104. package/dist/test.js +0 -45
  105. package/dist/test.js.map +0 -1
@@ -1,232 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const either_1 = require("./either");
4
- const dict_1 = require("./dict");
5
- const test_1 = require("./test");
6
- const _1 = require("./_");
7
- describe("Either", () => {
8
- it("class definition with two arguments", () => {
9
- class A extends (0, _1.Shape)({ value: Number }) {
10
- }
11
- class B extends (0, _1.Shape)({ value: String }) {
12
- }
13
- class Test extends (0, either_1.Either)({ A, B }) {
14
- test = true;
15
- }
16
- // Constructor parameters
17
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
18
- // Deserialization
19
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
20
- const a = Test.deserialize({ _key: "A", value: 1 });
21
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
22
- // Additional prototype
23
- (0, test_1.ex)(a.test).toBe(true).ok;
24
- // Inherited prototype on deserialization
25
- (0, test_1.ex)(a.value).toStrictEqual(new A({ value: 1 })).ok;
26
- // Serialization
27
- (0, test_1.ex)(a.serialize()).toStrictEqual({ _key: "A", value: 1 }).ok;
28
- // Instantiation
29
- const b = new Test(new B({ value: "1" }));
30
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
31
- // Inherited prototype on instantiation
32
- (0, test_1.ex)(b.value).toStrictEqual(new B({ value: "1" })).ok;
33
- });
34
- it("class definition with constructors", () => {
35
- class A extends (0, dict_1.Dict)({ a: String }) {
36
- }
37
- class B {
38
- a;
39
- constructor({ a }) {
40
- Object.assign(this, { a });
41
- }
42
- static deserialize({ a }) {
43
- return new B({ a });
44
- }
45
- serialize() {
46
- return { a: this.a };
47
- }
48
- }
49
- class Test extends (0, either_1.Either)({ A, B }) {
50
- test = true;
51
- }
52
- // Constructor parameters
53
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
54
- // Deserialization
55
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
56
- const a = Test.deserialize({ _key: "A", a: "test" });
57
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
58
- const b = Test.deserialize({ _key: "B", a: "test" });
59
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
60
- // Additional prototype
61
- (0, test_1.ex)(a.match({
62
- A: () => true,
63
- B: () => false,
64
- })).toBe(true).ok;
65
- (0, test_1.ex)(a.match({
66
- _: () => true,
67
- })).toBe(true).ok;
68
- (0, test_1.ex)(a.match({
69
- B: () => true,
70
- }, () => false)).toBe(false).ok;
71
- (0, test_1.ex)(a.test).toBe(true).ok;
72
- // Inherited prototype on deserialization
73
- (0, test_1.ex)(a.value).toBeInstanceOf(A).ok;
74
- (0, test_1.ex)(b.value).toBeInstanceOf(B).ok;
75
- // Serialization
76
- (0, test_1.ex)(a.serialize()).toStrictEqual({ _key: "A", a: "test" }).ok;
77
- (0, test_1.ex)(b.serialize()).toStrictEqual({ _key: "B", a: "test" }).ok;
78
- // Instantiation
79
- const c = new Test(new A({ a: "test" }));
80
- (0, test_1.ex)(c).toBeInstanceOf(Test).ok;
81
- const d = new Test(new B({ a: "test" }));
82
- (0, test_1.ex)(d).toBeInstanceOf(Test).ok;
83
- // Inherited prototype
84
- (0, test_1.ex)(c.value).toBeInstanceOf(A).ok;
85
- (0, test_1.ex)(c.value.a).toBe("test").ok;
86
- (0, test_1.ex)(d.value).toBeInstanceOf(B).ok;
87
- (0, test_1.ex)(d.value.a).toBe("test").ok;
88
- });
89
- it("inline definition", () => {
90
- class A extends (0, _1.Shape)({ value: Number }) {
91
- }
92
- class B extends (0, _1.Shape)({ value: String }) {
93
- }
94
- class Test extends (0, dict_1.Dict)({ nested: (0, either_1.Either)({ A, B }) }) {
95
- }
96
- // Constructor parameters
97
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
98
- // Deserialization
99
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
100
- const a = Test.deserialize({ nested: { _key: "A", value: 1 } });
101
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
102
- // Inherited prototype on deserialization
103
- (0, test_1.ex)(a.nested).toStrictEqual(new A({ value: 1 })).ok;
104
- // Serialization
105
- (0, test_1.ex)(a.serialize()).toStrictEqual({ nested: { _key: "A", value: 1 } })
106
- .ok;
107
- // Instantiation
108
- const b = new Test({ nested: new B({ value: "1" }) });
109
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
110
- // Inherited prototype on instantiation
111
- (0, test_1.ex)(b.nested).toStrictEqual(new B({ value: "1" })).ok;
112
- });
113
- it("referenced definition", () => {
114
- class B extends (0, _1.Shape)({ value: Number }) {
115
- }
116
- class C extends (0, _1.Shape)({ value: String }) {
117
- }
118
- class A extends (0, either_1.Either)({ B, C }) {
119
- }
120
- class Test extends (0, dict_1.Dict)({ nested: A }) {
121
- }
122
- // Constructor parameters
123
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
124
- // Deserialization
125
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
126
- const a = Test.deserialize({ nested: { _key: "B", "value": 1 } });
127
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
128
- // Inherited prototype on deserialization
129
- (0, test_1.ex)(a.nested).toBeInstanceOf(A).ok;
130
- (0, test_1.ex)(a.nested.value).toStrictEqual(new B({ value: 1 })).ok;
131
- // Serialization
132
- (0, test_1.ex)(a.serialize()).toStrictEqual({ nested: { _key: "B", value: 1 } })
133
- .ok;
134
- // Instantiation
135
- const b = new Test({ nested: new A(new C({ value: "1" })) });
136
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
137
- // Inherited prototype on instantiation
138
- (0, test_1.ex)(b.nested.value).toStrictEqual(new C({ value: "1" })).ok;
139
- });
140
- it("mixin extension", () => {
141
- const Mixin = (either) => {
142
- class Mix extends (0, either_1.Either)(either) {
143
- deep = true;
144
- static deep = true;
145
- }
146
- return Mix;
147
- };
148
- class A extends (0, _1.Shape)({ value: Number }) {
149
- }
150
- class B extends (0, _1.Shape)({ value: String }) {
151
- }
152
- class Test extends Mixin({ A, B }) {
153
- test = true;
154
- // @ts-expect-error is not assignable to parameter of type 'true'
155
- abstract = false;
156
- }
157
- // Constructor parameters
158
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
159
- // Additional static prototype
160
- (0, test_1.ex)(Test.deep).toBe(true).ok;
161
- // Deserialization
162
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
163
- const a = Test.deserialize({ _key: "A", value: 1 });
164
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
165
- // Additional prototype on deserialization
166
- (0, test_1.ex)(a.test).toBe(true).ok;
167
- (0, test_1.ex)(a.abstract).toBe(false).ok;
168
- // Extended prototype on deserialization
169
- (0, test_1.ex)(a.deep).toBe(true).ok;
170
- // Inherited prototype on deserialization
171
- (0, test_1.ex)(a.value).toStrictEqual(new A({ value: 1 })).ok;
172
- // Serialization
173
- (0, test_1.ex)(a.serialize()).toStrictEqual({ _key: "A", value: 1 }).ok;
174
- // Instantiation
175
- const b = new Test(new B({ value: "1" }));
176
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
177
- // Additional prototype on instantiation
178
- (0, test_1.ex)(b.test).toBe(true).ok;
179
- (0, test_1.ex)(b.abstract).toBe(false).ok;
180
- // Extended prototype on instantiation
181
- (0, test_1.ex)(b.deep).toBe(true).ok;
182
- // Inherited prototype on instantiation
183
- (0, test_1.ex)(b.value).toStrictEqual(new B({ value: "1" })).ok;
184
- });
185
- it("mixin supersede", () => {
186
- const Testable = (config) => {
187
- class I {
188
- deep = true;
189
- static deep = true;
190
- }
191
- return (0, either_1.Either)(config, I);
192
- };
193
- class A extends (0, _1.Shape)({ value: Number }) {
194
- }
195
- class B extends (0, _1.Shape)({ value: String }) {
196
- }
197
- class Test extends Testable({ A, B }) {
198
- test = true;
199
- // @ts-expect-error is not assignable to parameter of type 'true'
200
- abstract = false;
201
- }
202
- // Constructor type
203
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
204
- // Additional static prototype
205
- (0, test_1.ex)(Test.deep).toBe(true).ok;
206
- // Deserialization
207
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
208
- const a = Test.deserialize({ _key: "A", value: 1 });
209
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
210
- // Additional prototype on deserialization
211
- (0, test_1.ex)(a.test).toBe(true).ok;
212
- (0, test_1.ex)(a.abstract).toBe(false).ok;
213
- // Superseded prototype on deserialization
214
- (0, test_1.ex)(a.deep).toBe(true).ok;
215
- // Inherited prototype on deserialization
216
- (0, test_1.ex)(a.value).toStrictEqual(new A({ value: 1 })).ok;
217
- // Serialization
218
- (0, test_1.ex)(a.serialize()).toStrictEqual({ _key: "A", value: 1 }).ok;
219
- // Instantiation
220
- const b = new Test(new B({ value: "1" }));
221
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
222
- // Additional prototype on instantiation
223
- (0, test_1.ex)(b.test).toBe(true).ok;
224
- (0, test_1.ex)(b.abstract).toBe(false).ok;
225
- // Superseded prototype on instantiation
226
- (0, test_1.ex)(b.deep).toBe(true).ok;
227
- (0, test_1.ex)(b.abstract).toBe(false).ok;
228
- // Inherited prototype on instantiation
229
- (0, test_1.ex)(b.value).toStrictEqual(new B({ value: "1" })).ok;
230
- });
231
- });
232
- //# sourceMappingURL=either.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"either.spec.js","sourceRoot":"","sources":["../src/either.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Either, EitherConfiguration } from \"./either\";\nimport { Dict } from \"./dict\";\nimport { ex } from \"./test\";\nimport { Shape } from \"./_\";\n\ndescribe(\"Either\", () => {\n it(\"class definition with two arguments\", () => {\n class A extends Shape({ value: Number }) { }\n class B extends Shape({ value: String }) { }\n class Test extends Either({ A, B }) {\n test = true as const;\n }\n\n type Serialized = { _key: \"A\", value: number } | { _key: \"B\", value: string };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<A | B>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ _key: \"A\", value: 1 });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Additional prototype\n ex(a.test).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toStrictEqual<A | B>(new A({ value: 1 })).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ _key: \"A\", value: 1 }).ok;\n\n // Instantiation\n const b = new Test(new B({ value: \"1\" }));\n ex(b).toBeInstanceOf(Test).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual<A | B>(new B({ value: \"1\" })).ok;\n });\n\n it(\"class definition with constructors\", () => {\n class A extends Dict({ a: String }) { }\n class B {\n a!: string;\n constructor({ a }: { a: string }) {\n Object.assign(this, { a });\n }\n\n static deserialize({ a }: { a: string }) {\n return new B({ a });\n }\n\n serialize() {\n return { a: this.a };\n }\n }\n\n class Test extends Either({ A, B }) {\n test = true as const;\n }\n\n type Serialized = { _key: \"A\", a: string } | { _key: \"B\", a: string };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<A | B>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ _key: \"A\", a: \"test\" });\n ex(a).toBeInstanceOf(Test).ok;\n const b = Test.deserialize({ _key: \"B\", a: \"test\" });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype\n ex(\n a.match({\n A: () => true as const,\n B: () => false as const,\n })\n ).toBe<true | false>(true as const).ok;\n ex(\n a.match({\n _: () => true as const,\n })\n ).toBe<true>(true as const).ok;\n ex(\n a.match({\n B: () => true as const,\n }, () => false as const)\n ).toBe<true | false>(false as const).ok;\n\n ex(a.test).toBe(true as const).ok;\n // Inherited prototype on deserialization\n ex(a.value).toBeInstanceOf<typeof A | typeof B>(A).ok;\n ex(b.value).toBeInstanceOf<typeof A | typeof B>(B).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ _key: \"A\", a: \"test\" }).ok;\n ex(b.serialize()).toStrictEqual<Serialized>({ _key: \"B\", a: \"test\" }).ok;\n\n // Instantiation\n const c = new Test(new A({ a: \"test\" }));\n ex(c).toBeInstanceOf(Test).ok;\n\n const d = new Test(new B({ a: \"test\" }));\n ex(d).toBeInstanceOf(Test).ok;\n\n // Inherited prototype\n ex(c.value).toBeInstanceOf<typeof A | typeof B>(A).ok;\n ex(c.value.a).toBe(\"test\").ok;\n\n ex(d.value).toBeInstanceOf<typeof A | typeof B>(B).ok;\n ex(d.value.a).toBe(\"test\").ok;\n });\n\n it(\"inline definition\", () => {\n class A extends Shape({ value: Number }) { }\n class B extends Shape({ value: String }) { }\n class Test extends Dict({ nested: Either({ A, B }) }) { }\n\n type Serialized = { nested: { _key: \"A\", value: number } | { _key: \"B\", value: string } };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<{ nested: A | B }>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a: Test = Test.deserialize({ nested: { _key: \"A\", value: 1 } });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Inherited prototype on deserialization\n ex(a.nested).toStrictEqual<A | B>(new A({ value: 1 })).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ nested: { _key: \"A\", value: 1 } })\n .ok;\n\n // Instantiation\n const b = new Test({ nested: new B({ value: \"1\" }) });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Inherited prototype on instantiation\n ex(b.nested).toStrictEqual<A | B>(new B({ value: \"1\" })).ok;\n });\n\n it(\"referenced definition\", () => {\n class B extends Shape({ value: Number }) { }\n class C extends Shape({ value: String }) { }\n class A extends Either({ B, C }) { }\n class Test extends Dict({ nested: A }) { }\n\n type Serialized = { nested: { _key: \"B\", value: number } | { _key: \"C\", value: string } };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<{ nested: A }>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a: Test = Test.deserialize({ nested: { _key: \"B\", \"value\": 1 } });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Inherited prototype on deserialization\n ex(a.nested).toBeInstanceOf(A).ok;\n ex(a.nested.value).toStrictEqual<B | C>(new B({ value: 1 })).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ nested: { _key: \"B\", value: 1 } })\n .ok;\n\n // Instantiation\n const b: Test = new Test({ nested: new A(new C({ value: \"1\" })) });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Inherited prototype on instantiation\n ex(b.nested.value).toStrictEqual<B | C>(new C({ value: \"1\" })).ok;\n });\n\n it(\"mixin extension\", () => {\n const Mixin = <const S extends EitherConfiguration>(either: S) => {\n abstract class Mix extends Either(either) {\n deep = true as const;\n static deep = true as const;\n abstract abstract: true;\n }\n\n return Mix;\n };\n\n class A extends Shape({ value: Number }) { }\n class B extends Shape({ value: String }) { }\n class Test extends Mixin({ A, B }) {\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: \"A\", value: number } | { _key: \"B\", value: string };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<A | B>().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: \"A\", value: 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<A | B>(new A({ value: 1 })).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ _key: \"A\", value: 1 }).ok;\n\n // Instantiation\n const b = new Test(new B({ value: \"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<A | B>(new B({ value: \"1\" })).ok;\n });\n\n it(\"mixin supersede\", () => {\n const Testable = <const C extends EitherConfiguration>(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 Either(config, I);\n };\n\n class A extends Shape({ value: Number }) { }\n class B extends Shape({ value: String }) { }\n\n class Test extends Testable({ A, B }) {\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 // Constructor type\n ex(Test).toHaveFirstParam<A | B>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n type Serialized = { _key: \"A\", value: number } | { _key: \"B\", value: string };\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ _key: \"A\", value: 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 // Superseded prototype on deserialization\n ex(a.deep).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toStrictEqual<A | B>(new A({ value: 1 })).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ _key: \"A\", value: 1 }).ok;\n\n // Instantiation\n const b = new Test(new B({ value: \"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 // Superseded prototype on instantiation\n ex(b.deep).toBe(true as const).ok;\n ex(b.abstract).toBe(false as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual<A | B>(new B({ value: \"1\" })).ok;\n });\n});\n"]}
package/dist/index.d.ts DELETED
@@ -1,14 +0,0 @@
1
- export * from "./_";
2
- export * from "./choice";
3
- export * from "./class";
4
- export * from "./dict";
5
- export * from "./either";
6
- export * from "./primitive";
7
- export * from "./literal";
8
- export * from "./discriminated-union";
9
- export * from "./mapping";
10
- export * from "./multiple";
11
- export * from "./nothing";
12
- export * from "./optional";
13
- export * from "./addons/microsecond-timestamp";
14
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,KAAK,CAAC;AACpB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,gCAAgC,CAAC"}
package/dist/index.js DELETED
@@ -1,30 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./_"), exports);
18
- __exportStar(require("./choice"), exports);
19
- __exportStar(require("./class"), exports);
20
- __exportStar(require("./dict"), exports);
21
- __exportStar(require("./either"), exports);
22
- __exportStar(require("./primitive"), exports);
23
- __exportStar(require("./literal"), exports);
24
- __exportStar(require("./discriminated-union"), exports);
25
- __exportStar(require("./mapping"), exports);
26
- __exportStar(require("./multiple"), exports);
27
- __exportStar(require("./nothing"), exports);
28
- __exportStar(require("./optional"), exports);
29
- __exportStar(require("./addons/microsecond-timestamp"), exports);
30
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sCAAoB;AACpB,2CAAyB;AACzB,0CAAwB;AACxB,yCAAuB;AACvB,2CAAyB;AACzB,8CAA4B;AAC5B,4CAA0B;AAC1B,wDAAsC;AACtC,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,6CAA2B;AAC3B,iEAA+C","sourcesContent":["export * from \"./_\";\nexport * from \"./choice\";\nexport * from \"./class\";\nexport * from \"./dict\";\nexport * from \"./either\";\nexport * from \"./primitive\";\nexport * from \"./literal\";\nexport * from \"./discriminated-union\";\nexport * from \"./mapping\";\nexport * from \"./multiple\";\nexport * from \"./nothing\";\nexport * from \"./optional\";\nexport * from \"./addons/microsecond-timestamp\";\n"]}
package/dist/literal.d.ts DELETED
@@ -1,15 +0,0 @@
1
- import { AbstractConstructor, Constructor, Empty, Expand } from "./_";
2
- export type LiteralShorthand = string | number;
3
- export declare const Literal: <const S extends LiteralShorthand, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => ILiteral<S, B>;
4
- export type ILiteral<S extends LiteralShorthand, B extends AbstractConstructor<{}> = typeof Empty> = Omit<B, "prototype"> & {
5
- value: S;
6
- $shape: "literal";
7
- deserialize<T extends Constructor>(this: T, value: S): InstanceType<T>;
8
- $serialize(value: S): S;
9
- $deserialize(value: S): S;
10
- $inline: S;
11
- } & (abstract new (value: Expand<S>) => InstanceType<B> & {
12
- readonly value: S;
13
- serialize(): S;
14
- });
15
- //# sourceMappingURL=literal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../src/literal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,CAAC;AAE/C,eAAO,MAAM,OAAO,SACZ,CAAC,SAAS,gBAAgB,EAChC,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,qBAE7B,CAAC,SACC,CAAC,KACN,QAAQ,CAAC,CAAC,EAAE,CAAC,CA8Bf,CAAC;AAEF,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,gBAAgB,EAC1B,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,IAC9C,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GAAG;IACzB,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IACvE,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,YAAY,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC;CACZ,GAAG,CAAC,QAAQ,MACT,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KACb,YAAY,CAAC,CAAC,CAAC,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,SAAS,IAAI,CAAC,CAAC;CAChB,CAAC,CAAC"}
package/dist/literal.js DELETED
@@ -1,27 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Literal = void 0;
4
- const _1 = require("./_");
5
- const Literal = (of, base = _1.Empty) => {
6
- class $Literal extends base {
7
- value = of;
8
- static value = of;
9
- static $shape = "literal";
10
- serialize() {
11
- return of;
12
- }
13
- static deserialize(value) {
14
- return new this();
15
- }
16
- static $serialize(value) {
17
- return of;
18
- }
19
- static $deserialize(value) {
20
- return of;
21
- }
22
- static $inline;
23
- }
24
- return $Literal;
25
- };
26
- exports.Literal = Literal;
27
- //# sourceMappingURL=literal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../src/literal.ts"],"names":[],"mappings":";;;AAAA,0BAAsE;AAI/D,MAAM,OAAO,GAAG,CAIrB,EAAK,EACL,OAAU,QAAY,EACN,EAAE;IAGlB,MAAe,QAAS,SAAS,IAA+B;QAC9C,KAAK,GAAG,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,GAAG,SAAkB,CAAC;QACnC,SAAS;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAa;YAEb,OAAO,IAAK,IAAY,EAAqB,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,KAAa;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,KAAa;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,OAAO,CAAS;;IAGzB,OAAO,QAAe,CAAC;AACzB,CAAC,CAAC;AApCW,QAAA,OAAO,WAoClB","sourcesContent":["import { AbstractConstructor, Constructor, Empty, Expand } from \"./_\";\n\nexport type LiteralShorthand = string | number;\n\nexport const Literal = <\n const S extends LiteralShorthand,\n B extends AbstractConstructor<{}> = typeof Empty,\n>(\n of: S,\n base: B = Empty as any,\n): ILiteral<S, B> => {\n type Inline = S;\n\n abstract class $Literal extends (base as any as Constructor<{}>) {\n public readonly value = of;\n static value = of;\n static $shape = \"literal\" as const;\n serialize(): S {\n return of;\n }\n\n static deserialize<T extends typeof $Literal>(\n this: T,\n value: Inline,\n ): InstanceType<T> {\n return new (this as any)() as InstanceType<T>;\n }\n\n static $serialize(value: Inline): Inline {\n return of;\n }\n\n static $deserialize(value: Inline): Inline {\n return of;\n }\n\n static $inline: Inline;\n }\n\n return $Literal as any;\n};\n\nexport type ILiteral<\n S extends LiteralShorthand,\n B extends AbstractConstructor<{}> = typeof Empty,\n> = Omit<B, \"prototype\"> & {\n value: S;\n $shape: \"literal\";\n deserialize<T extends Constructor>(this: T, value: S): InstanceType<T>;\n $serialize(value: S): S;\n $deserialize(value: S): S;\n $inline: S;\n} & (abstract new (\n value: Expand<S>,\n ) => InstanceType<B> & {\n readonly value: S;\n serialize(): S;\n });\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=literal.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"literal.spec.d.ts","sourceRoot":"","sources":["../src/literal.spec.ts"],"names":[],"mappings":""}
@@ -1,162 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const dict_1 = require("./dict");
4
- const test_1 = require("./test");
5
- const literal_1 = require("./literal");
6
- describe("Literal", () => {
7
- it("class definition", () => {
8
- class Test extends (0, literal_1.Literal)("a") {
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).toBe("a").ok;
21
- // Serialization
22
- (0, test_1.ex)(a.serialize()).toBe("a").ok;
23
- // Instantiation
24
- const b = new Test("a");
25
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
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).toBe("a").ok;
30
- });
31
- it("inline definition", () => {
32
- class Test extends (0, dict_1.Dict)({ a: (0, literal_1.Literal)("a") }) {
33
- test = true;
34
- }
35
- // Constructor parameters
36
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
37
- // Deserialization
38
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
39
- const a = Test.deserialize({ a: "a" });
40
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
41
- // Additional prototype on deserialization
42
- (0, test_1.ex)(a.test).toBe(true).ok;
43
- // Inherited prototype on deserialization
44
- (0, test_1.ex)(a.a).toBe("a").ok;
45
- // Serialization
46
- (0, test_1.ex)(a.serialize()).toStrictEqual({ a: "a" }).ok;
47
- // Instantiation
48
- const b = new Test({ a: "a" });
49
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
50
- // Additional prototype on instantiation
51
- (0, test_1.ex)(b.test).toBe(true).ok;
52
- // Inherited prototype on instantiation
53
- (0, test_1.ex)(b.a).toBe("a").ok;
54
- });
55
- it("referenced definition", () => {
56
- class A extends (0, literal_1.Literal)("a") {
57
- }
58
- class Test extends (0, dict_1.Dict)({ a: A }) {
59
- test = true;
60
- }
61
- // Constructor parameters
62
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
63
- // Deserialization
64
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
65
- const a = Test.deserialize({ a: "a" });
66
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
67
- // Preserve reference
68
- (0, test_1.ex)(a.a).toBeInstanceOf(A);
69
- (0, test_1.ex)(a.a.value).toBe("a").ok;
70
- // Serialization
71
- (0, test_1.ex)(a.serialize()).toStrictEqual({ a: "a" }).ok;
72
- // Instantiation
73
- const b = new Test({ a: new A("a") });
74
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
75
- // Inherited prototype on instantiation
76
- (0, test_1.ex)(b.a).toBeInstanceOf(A);
77
- (0, test_1.ex)(b.a.value).toBe("a").ok;
78
- });
79
- it("mixin extension", () => {
80
- const Testable = (shape) => {
81
- class I extends (0, literal_1.Literal)(shape) {
82
- deep = true;
83
- static deep = true;
84
- }
85
- return I;
86
- };
87
- class Test extends Testable(1) {
88
- test = true;
89
- // @ts-expect-error is not assignable to parameter of type 'true'
90
- abstract = false;
91
- }
92
- // Constructor parameters
93
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
94
- // Additional static prototype
95
- (0, test_1.ex)(Test.deep).toBe(true).ok;
96
- // Deserialization
97
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
98
- const a = Test.deserialize(1);
99
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
100
- // Additional prototype on deserialization
101
- (0, test_1.ex)(a.test).toBe(true).ok;
102
- (0, test_1.ex)(a.abstract).toBe(false).ok;
103
- // Extended prototype on deserialization
104
- (0, test_1.ex)(a.deep).toBe(true).ok;
105
- // Inherited prototype on deserialization
106
- (0, test_1.ex)(a.value).toStrictEqual(1).ok;
107
- // Serialization
108
- (0, test_1.ex)(a.serialize()).toStrictEqual(1).ok;
109
- // Instantiation
110
- const b = new Test(1);
111
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
112
- // Additional prototype on instantiation
113
- (0, test_1.ex)(b.test).toBe(true).ok;
114
- (0, test_1.ex)(b.abstract).toBe(false).ok;
115
- // Extended prototype on instantiation
116
- (0, test_1.ex)(b.deep).toBe(true).ok;
117
- // Inherited prototype on instantiation
118
- (0, test_1.ex)(b.value).toStrictEqual(1).ok;
119
- });
120
- it("mixin supersede", () => {
121
- const Testable = (shape) => {
122
- class I {
123
- deep = true;
124
- static deep = true;
125
- }
126
- return (0, literal_1.Literal)(shape, I);
127
- };
128
- class Test extends Testable(1) {
129
- test = true;
130
- // @ts-expect-error is not assignable to parameter of type 'true'
131
- abstract = false;
132
- }
133
- // Constructor parameters
134
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
135
- // Additional static prototype
136
- (0, test_1.ex)(Test.deep).toBe(true).ok;
137
- // Deserialization
138
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
139
- const a = Test.deserialize(1);
140
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
141
- // Additional prototype on deserialization
142
- (0, test_1.ex)(a.test).toBe(true).ok;
143
- (0, test_1.ex)(a.abstract).toBe(false).ok;
144
- // Superseded prototype on deserialization
145
- (0, test_1.ex)(a.deep).toBe(true).ok;
146
- // Inherited prototype on deserialization
147
- (0, test_1.ex)(a.value).toBe(1).ok;
148
- // Serialization
149
- (0, test_1.ex)(a.serialize()).toStrictEqual(1).ok;
150
- // Instantiation
151
- const b = new Test(1);
152
- (0, test_1.ex)(b).toBeInstanceOf(Test).ok;
153
- // Additional prototype on instantiation
154
- (0, test_1.ex)(b.test).toBe(true).ok;
155
- (0, test_1.ex)(b.abstract).toBe(false).ok;
156
- // Superseded prototype on instantiation
157
- (0, test_1.ex)(b.deep).toBe(true).ok;
158
- // Inherited prototype on instantiation
159
- (0, test_1.ex)(b.value).toBe(1).ok;
160
- });
161
- });
162
- //# sourceMappingURL=literal.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"literal.spec.js","sourceRoot":"","sources":["../src/literal.spec.ts"],"names":[],"mappings":";;AAAA,iCAA8B;AAC9B,iCAA4B;AAC5B,uCAA2D;AAE3D,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC1B,MAAM,IAAK,SAAQ,IAAA,iBAAO,EAAC,GAAG,CAAC;YAC7B,IAAI,GAAG,IAAa,CAAC;SACtB;QAED,yBAAyB;QACzB,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAO,CAAC,EAAE,CAAC;QAEpC,kBAAkB;QAClB,IAAA,SAAE,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAO,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAChC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,0CAA0C;QAC1C,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,yCAAyC;QACzC,IAAA,SAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAE9B,gBAAgB;QAChB,IAAA,SAAE,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAEpC,gBAAgB;QAChB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,wCAAwC;QACxC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,uCAAuC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAK,SAAQ,IAAA,WAAI,EAAC,EAAE,CAAC,EAAE,IAAA,iBAAO,EAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,GAAG,IAAa,CAAC;SACtB;QAID,yBAAyB;QACzB,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAc,CAAC,EAAE,CAAC;QAE3C,kBAAkB;QAClB,IAAA,SAAE,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAc,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,0CAA0C;QAC1C,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,yCAAyC;QACzC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAE1B,gBAAgB;QAChB,IAAA,SAAE,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAa,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAE3D,gBAAgB;QAChB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/B,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,wCAAwC;QACxC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,uCAAuC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAE,SAAQ,IAAA,iBAAO,EAAC,GAAG,CAAC;SAAG;QAC/B,MAAM,IAAK,SAAQ,IAAA,WAAI,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/B,IAAI,GAAG,IAAa,CAAC;SACtB;QAID,yBAAyB;QACzB,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAY,CAAC,EAAE,CAAC;QAEzC,kBAAkB;QAClB,IAAA,SAAE,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAc,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,qBAAqB;QACrB,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAEhC,gBAAgB;QAChB,IAAA,SAAE,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAa,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAE3D,gBAAgB;QAChB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,uCAAuC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAM,GAAG,CAAC,CAAC,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,QAAQ,GAAG,CAA6B,KAAQ,EAAE,EAAE;YACxD,MAAe,CAAE,SAAQ,IAAA,iBAAO,EAAC,KAAK,CAAC;gBACrC,IAAI,GAAG,IAAa,CAAC;gBACrB,MAAM,CAAC,IAAI,GAAG,IAAa,CAAC;;YAK9B,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,IAAK,SAAQ,QAAQ,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,IAAa,CAAC;YAErB,iEAAiE;YACjE,QAAQ,GAAG,KAAc,CAAC;SAC3B;QAED,yBAAyB;QACzB,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAK,CAAC,EAAE,CAAC;QAElC,8BAA8B;QAC9B,IAAA,SAAE,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAErC,kBAAkB;QAClB,IAAA,SAAE,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,0CAA0C;QAC1C,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAClC,IAAA,SAAE,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC,EAAE,CAAC;QAEvC,wCAAwC;QACxC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,yCAAyC;QACzC,IAAA,SAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAU,CAAC,CAAC,EAAE,CAAC;QAEzC,gBAAgB;QAChB,IAAA,SAAE,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,CAAU,CAAC,CAAC,EAAE,CAAC;QAE/C,gBAAgB;QAChB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,wCAAwC;QACxC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAClC,IAAA,SAAE,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC,EAAE,CAAC;QAEvC,sCAAsC;QACtC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,uCAAuC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAU,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,QAAQ,GAAG,CAA6B,KAAQ,EAAE,EAAE;YACxD,MAAe,CAAC;gBACd,IAAI,GAAG,IAAa,CAAC;gBACrB,MAAM,CAAC,IAAI,GAAG,IAAa,CAAC;;YAK9B,OAAO,IAAA,iBAAO,EAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,MAAM,IAAK,SAAQ,QAAQ,CAAC,CAAC,CAAC;YAC5B,IAAI,GAAG,IAAa,CAAC;YAErB,iEAAiE;YACjE,QAAQ,GAAG,KAAc,CAAC;SAC3B;QAED,yBAAyB;QACzB,IAAA,SAAE,EAAC,IAAI,CAAC,CAAC,gBAAgB,EAAK,CAAC,EAAE,CAAC;QAElC,8BAA8B;QAC9B,IAAA,SAAE,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAErC,kBAAkB;QAClB,IAAA,SAAE,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,gBAAgB,EAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,0CAA0C;QAC1C,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAClC,IAAA,SAAE,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC,EAAE,CAAC;QAEvC,0CAA0C;QAC1C,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,yCAAyC;QACzC,IAAA,SAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC,EAAE,CAAC;QAEhC,gBAAgB;QAChB,IAAA,SAAE,EAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,CAAU,CAAC,CAAC,EAAE,CAAC;QAE/C,gBAAgB;QAChB,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAA,SAAE,EAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAE9B,wCAAwC;QACxC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAClC,IAAA,SAAE,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAc,CAAC,CAAC,EAAE,CAAC;QAEvC,wCAAwC;QACxC,IAAA,SAAE,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;QAElC,uCAAuC;QACvC,IAAA,SAAE,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { Dict } from \"./dict\";\nimport { ex } from \"./test\";\nimport { Literal, type LiteralShorthand } from \"./literal\";\n\ndescribe(\"Literal\", () => {\n it(\"class definition\", () => {\n class Test extends Literal(\"a\") {\n test = true as const;\n }\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<\"a\">().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<\"a\">().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).toBe<\"a\">(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toBe<\"a\">(\"a\").ok;\n\n // Instantiation\n const b = new Test(\"a\");\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.value).toBe<\"a\">(\"a\").ok;\n });\n\n it(\"inline definition\", () => {\n class Test extends Dict({ a: Literal(\"a\") }) {\n test = true as const;\n }\n\n type Serialized = { a: \"a\" };\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({ a: \"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.a).toBe<\"a\">(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ a: \"a\" }).ok;\n\n // Instantiation\n const b = new Test({ a: \"a\" });\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.a).toBe<\"a\">(\"a\").ok;\n });\n\n it(\"referenced definition\", () => {\n class A extends Literal(\"a\") {}\n class Test extends Dict({ a: A }) {\n test = true as const;\n }\n\n type Serialized = { a: \"a\" };\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<{ a: A }>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<Serialized>().ok;\n const a = Test.deserialize({ a: \"a\" });\n ex(a).toBeInstanceOf(Test).ok;\n\n // Preserve reference\n ex(a.a).toBeInstanceOf(A);\n ex(a.a.value).toBe<\"a\">(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ a: \"a\" }).ok;\n\n // Instantiation\n const b = new Test({ a: new A(\"a\") });\n ex(b).toBeInstanceOf(Test).ok;\n\n // Inherited prototype on instantiation\n ex(b.a).toBeInstanceOf(A);\n ex(b.a.value).toBe<\"a\">(\"a\").ok;\n });\n\n it(\"mixin extension\", () => {\n const Testable = <S extends LiteralShorthand>(shape: S) => {\n abstract class I extends Literal(shape) {\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(1) {\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 // Constructor parameters\n ex(Test).toHaveFirstParam<1>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<1>().ok;\n const a = Test.deserialize(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(1 as const).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual(1 as const).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(1 as const).ok;\n });\n\n it(\"mixin supersede\", () => {\n const Testable = <S extends LiteralShorthand>(shape: S) => {\n abstract class I {\n deep = true as const;\n static deep = true as const;\n\n abstract abstract: true;\n }\n\n return Literal(shape, I);\n };\n\n class Test extends Testable(1) {\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 // Constructor parameters\n ex(Test).toHaveFirstParam<1>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<1>().ok;\n const a = Test.deserialize(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 // Superseded prototype on deserialization\n ex(a.deep).toBe(true as const).ok;\n\n // Inherited prototype on deserialization\n ex(a.value).toBe(1 as const).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual(1 as const).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 // Superseded prototype on instantiation\n ex(b.deep).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toBe(1 as const).ok;\n });\n});\n"]}
package/dist/mapping.d.ts DELETED
@@ -1,43 +0,0 @@
1
- import { Definition, Expand, Shorthand, DefinitionOf, AbstractConstructor, Empty, Constructor } from "./_";
2
- type MappingLiteralKey = [
3
- [
4
- StringConstructor,
5
- string
6
- ],
7
- [
8
- NumberConstructor,
9
- number
10
- ]
11
- ];
12
- type MappingKeyConstructor = MappingLiteralKey[number][0];
13
- type MappingKeyRuntimeFromConstructor<S extends MappingKeyConstructor> = S extends StringConstructor ? string : number;
14
- export type MappingConfiguration = [MappingKeyConstructor, Definition | Shorthand] | [Definition | Shorthand];
15
- type MappingOf<C extends MappingConfiguration> = C extends [
16
- infer K extends MappingKeyConstructor,
17
- infer V extends Definition | Shorthand
18
- ] ? {
19
- key: K;
20
- value: DefinitionOf<V>;
21
- } : C extends [infer V extends Definition | Shorthand] ? {
22
- key: StringConstructor;
23
- value: DefinitionOf<V>;
24
- } : never;
25
- type Internal<C extends MappingConfiguration, B extends AbstractConstructor<{}>> = {
26
- Definition: MappingOf<C>["value"];
27
- Serialized: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>;
28
- Deserializing: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, Parameters<MappingOf<C>["value"]["$deserialize"]>[0]>;
29
- Inline: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>;
30
- };
31
- export declare const Mapping: <C extends MappingConfiguration, B extends AbstractConstructor<{}> = typeof Empty>(config: C, base?: B) => Mapping<C, B>;
32
- export type Mapping<C extends MappingConfiguration, B extends AbstractConstructor<{}> = typeof Empty> = Omit<B, "prototype"> & (abstract new (value: Internal<C, B>["Inline"]) => InstanceType<B> & {
33
- value: Internal<C, B>["Inline"];
34
- serialize(): Expand<Internal<C, B>["Serialized"]>;
35
- }) & {
36
- $shape: "mapping";
37
- deserialize<T extends Constructor>(this: T, value: Expand<Internal<C, B>["Serialized"]>): InstanceType<T>;
38
- $deserialize<T>(this: T, value: Internal<C, B>["Deserializing"]): Internal<C, B>["Inline"];
39
- $serialize<T>(this: T, value: Internal<C, B>["Inline"]): Internal<C, B>["Serialized"];
40
- $inline: Internal<C, B>["Inline"];
41
- };
42
- export {};
43
- //# sourceMappingURL=mapping.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}