@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.
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 -24
  7. package/dist/addons/microsecond-timestamp.d.ts.map +0 -1
  8. package/dist/addons/microsecond-timestamp.js +0 -75
  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,172 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const optional_1 = require("./optional");
4
- const dict_1 = require("./dict");
5
- const test_1 = require("./test");
6
- describe("Optional", () => {
7
- it("class definition", () => {
8
- class Test extends (0, optional_1.Optional)(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
- (0, test_1.ex)(a.match({
22
- some: (value) => value,
23
- none: () => "default",
24
- })).toBe("a").ok;
25
- // Serialization
26
- (0, test_1.ex)(a.serialize()).toStrictEqual("a").ok;
27
- // Instantiation
28
- const b = new Test(undefined);
29
- (0, test_1.ex)(b).toBeInstanceOf(Test);
30
- // Additional prototype on instantiation
31
- (0, test_1.ex)(b.test).toBe(true).ok;
32
- // Inherited prototype on instantiation
33
- (0, test_1.ex)(b.value).toStrictEqual(undefined).ok;
34
- (0, test_1.ex)(b.match({
35
- some: (value) => value,
36
- none: () => "default",
37
- })).toBe("default").ok;
38
- });
39
- it("inline definition", () => {
40
- class Test extends (0, dict_1.Dict)({ longhand: (0, optional_1.Optional)(String) }) {
41
- test = true;
42
- }
43
- // Constructor parameters
44
- (0, test_1.ex)(Test).toHaveFirstParam().ok;
45
- // Deserialization
46
- (0, test_1.ex)(Test.deserialize).toHaveFirstParam().ok;
47
- const a = Test.deserialize({ longhand: "a" });
48
- (0, test_1.ex)(a).toBeInstanceOf(Test).ok;
49
- // Additional prototype on deserialization
50
- (0, test_1.ex)(a.test).toBe(true).ok;
51
- // Inherited prototype on deserialization
52
- (0, test_1.ex)(a.longhand).toStrictEqual("a").ok;
53
- // Serialization
54
- (0, test_1.ex)(a.serialize()).toStrictEqual({ longhand: "a" }).ok;
55
- // Instantiation
56
- const b = new Test({ longhand: undefined });
57
- (0, test_1.ex)(b).toBeInstanceOf(Test);
58
- // Additional prototype on instantiation
59
- (0, test_1.ex)(b.test).toBe(true).ok;
60
- // Inherited prototype on instantiation
61
- (0, test_1.ex)(b.longhand).toStrictEqual(undefined).ok;
62
- });
63
- it("referenced definition", () => {
64
- class Reference extends (0, optional_1.Optional)(String) {
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: "a" });
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("a")).ok;
79
- // Serialization
80
- (0, test_1.ex)(a.serialize()).toStrictEqual({ reference: "a" }).ok;
81
- // Instantiation
82
- const b = new Test({ reference: new Reference(undefined) });
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(undefined)).ok;
88
- });
89
- it("mixin extension", () => {
90
- const Testable = (config) => {
91
- class I extends (0, optional_1.Optional)(config) {
92
- deep = true;
93
- static deep = true;
94
- }
95
- return I;
96
- };
97
- class Test extends Testable(String) {
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("a");
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
- (0, test_1.ex)(a.value).toStrictEqual("a").ok;
117
- // Serialization
118
- (0, test_1.ex)(a.serialize()).toStrictEqual("a").ok;
119
- // Instantiation
120
- const b = new Test(undefined);
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
- (0, test_1.ex)(b.value).toStrictEqual(undefined).ok;
129
- });
130
- it("mixin supersede", () => {
131
- const Testable = (config) => {
132
- class I {
133
- deep = true;
134
- static deep = true;
135
- }
136
- return (0, optional_1.Optional)(config, I);
137
- };
138
- class Test extends Testable(String) {
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("a");
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
- (0, test_1.ex)(a.value).toStrictEqual("a").ok;
158
- // Serialization
159
- (0, test_1.ex)(a.serialize()).toStrictEqual("a").ok;
160
- // Instantiation
161
- const b = new Test(undefined);
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
- (0, test_1.ex)(b.value).toStrictEqual(undefined).ok;
170
- });
171
- });
172
- //# sourceMappingURL=optional.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"optional.spec.js","sourceRoot":"","sources":["../src/optional.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Optional, OptionalConfiguration } from \"./optional\";\nimport { Dict } from \"./dict\";\nimport { ex } from \"./test\";\n\ndescribe(\"Optional\", () => {\n it(\"class definition\", () => {\n class Test extends Optional(String) {\n test = true as const;\n }\n\n type Serialized = string | undefined;\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\");\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 | undefined>(\"a\").ok;\n ex(\n a.match({\n some: (value) => value,\n none: () => \"default\",\n }),\n ).toBe(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>(\"a\").ok;\n\n // Instantiation\n const b: Test = new Test(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.value).toStrictEqual<Serialized>(undefined).ok;\n ex(\n b.match({\n some: (value) => value,\n none: () => \"default\",\n }),\n ).toBe(\"default\").ok;\n });\n\n it(\"inline definition\", () => {\n class Test extends Dict({ longhand: Optional(String) }) {\n test = true as const;\n }\n\n type Serialized = { longhand: string | undefined };\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: \"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.longhand).toStrictEqual<string | undefined>(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ longhand: \"a\" }).ok;\n\n // Instantiation\n const b: Test = new Test({ longhand: 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<string | undefined>(undefined).ok;\n });\n\n it(\"referenced definition\", () => {\n class Reference extends Optional(String) {}\n class Test extends Dict({ reference: Reference }) {\n test = true as const;\n }\n\n type Serialized = { reference: string | undefined };\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: \"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.reference).toStrictEqual<Reference>(new Reference(\"a\")).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>({ reference: \"a\" }).ok;\n\n // Instantiation\n const b: Test = new Test({ reference: new Reference(undefined) });\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(undefined)).ok;\n });\n\n it(\"mixin extension\", () => {\n const Testable = <const C extends OptionalConfiguration>(config: C) => {\n abstract class I extends Optional(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(String) {\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 = string | undefined;\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(\"a\");\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>(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>(\"a\").ok;\n\n // Instantiation\n const b = new Test(undefined);\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>(undefined).ok;\n });\n\n it(\"mixin supersede\", () => {\n const Testable = <C extends OptionalConfiguration>(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 Optional(config, I);\n };\n\n class Test extends Testable(String) {\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 = string | undefined;\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(\"a\");\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>(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual<Serialized>(\"a\").ok;\n\n // Instantiation\n const b = new Test(undefined);\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>(undefined).ok;\n });\n});\n"]}
@@ -1,38 +0,0 @@
1
- import { AbstractConstructor, Constructor, Empty, Expand } from "./_";
2
- type PrimitiveMap = [
3
- [
4
- StringConstructor,
5
- string
6
- ],
7
- [
8
- NumberConstructor,
9
- number
10
- ],
11
- [
12
- DateConstructor,
13
- Date
14
- ],
15
- [
16
- BooleanConstructor,
17
- boolean
18
- ]
19
- ];
20
- type PrimitiveConstructor = PrimitiveMap[number][0];
21
- export type PrimitiveFromConstructor<S> = Extract<PrimitiveMap[number], [
22
- S,
23
- any
24
- ]>[1];
25
- export type PrimitiveShorthand = PrimitiveConstructor;
26
- export type IPrimitive<S extends PrimitiveConstructor, B extends AbstractConstructor<{}> = typeof Empty> = Omit<B, ""> & (abstract new (value: Expand<PrimitiveFromConstructor<S>>) => InstanceType<B> & {
27
- readonly value: Expand<PrimitiveFromConstructor<S>>;
28
- serialize(): PrimitiveFromConstructor<S>;
29
- }) & {
30
- $shape: "primitive";
31
- deserialize<T extends Constructor<any>>(this: T, value: PrimitiveFromConstructor<S>): InstanceType<T>;
32
- $serialize(value: PrimitiveFromConstructor<S>): PrimitiveFromConstructor<S>;
33
- $deserialize(value: PrimitiveFromConstructor<S>): PrimitiveFromConstructor<S>;
34
- $inline: Expand<PrimitiveFromConstructor<S>>;
35
- };
36
- export declare const Primitive: <S extends PrimitiveConstructor, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => IPrimitive<S, B>;
37
- export {};
38
- //# sourceMappingURL=primitive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../src/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAY,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAEhF,KAAK,YAAY,GAAG;IAClB;QAAC,iBAAiB;QAAE,MAAM;KAAC;IAC3B;QAAC,iBAAiB;QAAE,MAAM;KAAC;IAC3B;QAAC,eAAe;QAAE,IAAI;KAAC;IACvB;QAAC,kBAAkB;QAAE,OAAO;KAAC;CAC9B,CAAC;AAEF,KAAK,oBAAoB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,OAAO,CAC/C,YAAY,CAAC,MAAM,CAAC,EACpB;IAAC,CAAC;IAAE,GAAG;CAAC,CACT,CAAC,CAAC,CAAC,CAAC;AAEL,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,IAC9C,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,GACb,CAAC,QAAQ,MACP,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,KACvC,YAAY,CAAC,CAAC,CAAC,GAAG;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,SAAS,IAAI,wBAAwB,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAC,GAAG;IACH,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,EACpC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACjC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC5E,YAAY,CACV,KAAK,EAAE,wBAAwB,CAAC,CAAC,CAAC,GACjC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9C,CAAC;AAEJ,eAAO,MAAM,SAAS,GACpB,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,qBAE7B,CAAC,SACC,CAAC,KACN,UAAU,CAAC,CAAC,EAAE,CAAC,CA4CjB,CAAC"}
package/dist/primitive.js DELETED
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Primitive = void 0;
4
- const _1 = require("./_");
5
- const Primitive = (of, base = _1.Empty) => {
6
- class $Primitive extends base {
7
- value;
8
- constructor(value) {
9
- super();
10
- this.value = value;
11
- }
12
- static $shape = "primitive";
13
- serialize() {
14
- return this.value;
15
- }
16
- static deserialize(value) {
17
- return new this(this.$deserialize(value));
18
- }
19
- static $serialize(value) {
20
- return value;
21
- }
22
- static $deserialize(value) {
23
- if (of === Date && typeof value === "string") {
24
- return new Date(value);
25
- }
26
- return value;
27
- }
28
- static $inline;
29
- }
30
- return $Primitive;
31
- };
32
- exports.Primitive = Primitive;
33
- //# sourceMappingURL=primitive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../src/primitive.ts"],"names":[],"mappings":";;;AAAA,0BAAgF;AAuCzE,MAAM,SAAS,GAAG,CAIvB,EAAK,EACL,OAAU,QAAY,EACJ,EAAE;IAGpB,MAAe,UAAW,SAAS,IAA+B;QACpC;QAA5B,YAA4B,KAAqB;YAC/C,KAAK,EAAE,CAAC;YADkB,UAAK,GAAL,KAAK,CAAgB;QAEjD,CAAC;QAED,MAAM,CAAC,MAAM,GAAG,WAAoB,CAAC;QAErC,SAAS;YACP,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,CAAC,WAAW,CAEhB,KAAa;YAEb,OAAO,IAAK,IAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAoB,CAAC;QACxE,CAAC;QAED,MAAM,CAAC,UAAU,CAAC,KAAa;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,KAAa;YAC/B,IAAI,EAAE,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC7C,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,CAAC,OAAO,CAAiB;;IAWjC,OAAO,UAAiB,CAAC;AAC3B,CAAC,CAAC;AAlDW,QAAA,SAAS,aAkDpB","sourcesContent":["import { AbstractConstructor, Concrete, Constructor, Empty, Expand } from \"./_\";\n\ntype PrimitiveMap = [\n [StringConstructor, string],\n [NumberConstructor, number],\n [DateConstructor, Date],\n [BooleanConstructor, boolean],\n];\n\ntype PrimitiveConstructor = PrimitiveMap[number][0];\nexport type PrimitiveFromConstructor<S> = Extract<\n PrimitiveMap[number],\n [S, any]\n>[1];\n\nexport type PrimitiveShorthand = PrimitiveConstructor;\n\nexport type IPrimitive<\n S extends PrimitiveConstructor,\n B extends AbstractConstructor<{}> = typeof Empty,\n> = Omit<B, \"\"> &\n (abstract new (\n value: Expand<PrimitiveFromConstructor<S>>,\n ) => InstanceType<B> & {\n readonly value: Expand<PrimitiveFromConstructor<S>>;\n serialize(): PrimitiveFromConstructor<S>;\n }) & {\n $shape: \"primitive\";\n deserialize<T extends Constructor<any>>(\n this: T,\n value: PrimitiveFromConstructor<S>,\n ): InstanceType<T>;\n $serialize(value: PrimitiveFromConstructor<S>): PrimitiveFromConstructor<S>;\n $deserialize(\n value: PrimitiveFromConstructor<S>,\n ): PrimitiveFromConstructor<S>;\n $inline: Expand<PrimitiveFromConstructor<S>>;\n };\n\nexport const Primitive = <\n S extends PrimitiveConstructor,\n B extends AbstractConstructor<{}> = typeof Empty,\n>(\n of: S,\n base: B = Empty as any,\n): IPrimitive<S, B> => {\n type Inline = PrimitiveFromConstructor<S>;\n\n abstract class $Primitive extends (base as any as Constructor<{}>) {\n constructor(public readonly value: Expand<Inline>) {\n super();\n }\n\n static $shape = \"primitive\" as const;\n\n serialize(): Inline {\n return this.value;\n }\n\n static deserialize<T extends typeof $Primitive>(\n this: T,\n value: Inline,\n ): InstanceType<T> {\n return new (this as any)(this.$deserialize(value)) as InstanceType<T>;\n }\n\n static $serialize(value: Inline): Inline {\n return value;\n }\n\n static $deserialize(value: Inline): Inline {\n if (of === Date && typeof value === \"string\") {\n return new Date(value);\n }\n return value;\n }\n\n static $inline: Expand<Inline>;\n }\n\n type PrimitiveConstructor = abstract new (\n value: Expand<Inline>,\n ) => InstanceType<B> & $Primitive;\n\n type Primitive = Omit<B, \"prototype\"> &\n Omit<typeof $Primitive, \"prototype\"> &\n PrimitiveConstructor;\n\n return $Primitive as any;\n};\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=primitive.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitive.spec.d.ts","sourceRoot":"","sources":["../src/primitive.spec.ts"],"names":[],"mappings":""}
@@ -1,162 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const primitive_1 = require("./primitive");
4
- const dict_1 = require("./dict");
5
- const test_1 = require("./test");
6
- describe("Primitive", () => {
7
- it("class definition", () => {
8
- class Test extends (0, primitive_1.Primitive)(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).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, primitive_1.Primitive)(String) }) {
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, primitive_1.Primitive)(String) {
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, primitive_1.Primitive)(shape) {
82
- deep = true;
83
- static deep = true;
84
- }
85
- return I;
86
- };
87
- class Test extends Testable(Number) {
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(2);
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(2).ok;
119
- });
120
- it("mixin supersede", () => {
121
- const Testable = (shape) => {
122
- class I {
123
- deep = true;
124
- static deep = true;
125
- }
126
- return (0, primitive_1.Primitive)(shape, I);
127
- };
128
- class Test extends Testable(Number) {
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(2);
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(2).ok;
160
- });
161
- });
162
- //# sourceMappingURL=primitive.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"primitive.spec.js","sourceRoot":"","sources":["../src/primitive.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { Primitive, PrimitiveShorthand } from \"./primitive\";\nimport { Dict } from \"./dict\";\nimport { ex } from \"./test\";\n\ndescribe(\"Primitive\", () => {\n it(\"class definition\", () => {\n class Test extends Primitive(String) {\n test = true as const;\n }\n\n // Constructor parameters\n ex(Test).toHaveFirstParam<string>().ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<string>().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<string>(\"a\").ok;\n\n // Serialization\n ex(a.serialize()).toBe<string>(\"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<string>(\"a\").ok;\n });\n\n it(\"inline definition\", () => {\n class Test extends Dict({ a: Primitive(String) }) {\n test = true as const;\n }\n\n type Serialized = { a: string };\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<string>(\"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<string>(\"a\").ok;\n });\n\n it(\"referenced definition\", () => {\n class A extends Primitive(String) {}\n class Test extends Dict({ a: A }) {\n test = true as const;\n }\n\n type Serialized = { a: string };\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<string>(\"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<string>(\"a\").ok;\n });\n\n it(\"mixin extension\", () => {\n const Testable = <S extends PrimitiveShorthand>(shape: S) => {\n abstract class I extends Primitive(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(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 // Constructor parameters\n ex(Test).toHaveFirstParam<number>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<number>().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).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual(1).ok;\n\n // Instantiation\n const b = new Test(2);\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n ex(b.abstract).toBe(false as const).ok;\n\n // Extended prototype on instantiation\n ex(b.deep).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toStrictEqual(2).ok;\n });\n\n it(\"mixin supersede\", () => {\n const Testable = <S extends PrimitiveShorthand>(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 Primitive(shape, 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 // Constructor parameters\n ex(Test).toHaveFirstParam<number>().ok;\n\n // Additional static prototype\n ex(Test.deep).toBe(true as const).ok;\n\n // Deserialization\n ex(Test.deserialize).toHaveFirstParam<number>().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).ok;\n\n // Serialization\n ex(a.serialize()).toStrictEqual(1).ok;\n\n // Instantiation\n const b = new Test(2);\n ex(b).toBeInstanceOf(Test).ok;\n\n // Additional prototype on instantiation\n ex(b.test).toBe(true as const).ok;\n ex(b.abstract).toBe(false as const).ok;\n\n // Superseded prototype on instantiation\n ex(b.deep).toBe(true as const).ok;\n\n // Inherited prototype on instantiation\n ex(b.value).toBe(2).ok;\n });\n});\n"]}
package/dist/test.d.ts DELETED
@@ -1,36 +0,0 @@
1
- import { Constructor } from "./_";
2
- type IfEquals<T, U, Y = unknown, N = never> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? Y : N;
3
- export type Equals<X, Y> = IfEquals<X, Y, true, false>;
4
- export declare function ex<Received>(received: Received): {
5
- toBe<Expected>(expected: Expected): Equals<Received, Expected> extends true ? {
6
- ok: true;
7
- } : {
8
- expected: Expected;
9
- received: Received;
10
- };
11
- toStrictEqual<Expected>(expected: Expected): Equals<Received, Expected> extends true ? {
12
- ok: true;
13
- } : {
14
- expected: Expected;
15
- received: Received;
16
- };
17
- toBeInstanceOf<Expected extends Constructor>(expected: Expected): Equals<Received, InstanceType<Expected>> extends true ? {
18
- ok: true;
19
- } : {
20
- expected: InstanceType<Expected>;
21
- received: Received;
22
- };
23
- toHaveFirstParam<Expected>(): Received extends (first: infer P, ...rest: any[]) => any ? Equals<P, Expected> extends true ? {
24
- ok: true;
25
- } : {
26
- expected: Expected;
27
- received: P;
28
- } : Received extends Constructor<any, [infer P, ...any[]]> ? Equals<P, Expected> extends true ? {
29
- ok: true;
30
- } : {
31
- expected: Expected;
32
- received: P;
33
- } : "not a function or constructor";
34
- };
35
- export {};
36
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAU,MAAM,KAAK,CAAC;AAE1C,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAC/D,CAAC,GACD,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,GACvC,CAAC,GACD,CAAC,CAAC;AAEN,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAgJvD,wBAAgB,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ;SAEtC,QAAQ,YACD,QAAQ,GACjB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,GACtC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GACZ;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE;kBAQhC,QAAQ,YACV,QAAQ,GACjB,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,GACtC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GACZ;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE;mBAQ/B,QAAQ,SAAS,WAAW,YAC/B,QAAQ,GACjB,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,SAAS,IAAI,GACpD;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GACZ;QAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE;qBAQ3C,QAAQ,KAAK,QAAQ,SAAS,CAC7C,KAAK,EAAE,MAAM,CAAC,EACd,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,GAAG,GACJ,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,IAAI,GAChC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GACZ;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,CAAC,CAAA;KAAE,GACnC,QAAQ,SAAS,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,GACtD,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,IAAI,GAChC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GACZ;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,CAAC,CAAA;KAAE,GACnC,+BAA+B;EAItC"}
package/dist/test.js DELETED
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ex = ex;
4
- const popStackTrace = (error) => {
5
- const lines = error.stack.split("\n");
6
- const at = lines.findIndex((line) => line.includes("at"));
7
- lines.splice(at, 1);
8
- error.stack = lines.join("\n");
9
- return error;
10
- };
11
- function ex(received) {
12
- return {
13
- toBe(expected) {
14
- try {
15
- expect(received).toBe(expected);
16
- }
17
- catch (error) {
18
- throw popStackTrace(error);
19
- }
20
- return { ok: true };
21
- },
22
- toStrictEqual(expected) {
23
- try {
24
- expect(received).toStrictEqual(expected);
25
- }
26
- catch (error) {
27
- throw popStackTrace(error);
28
- }
29
- return { ok: true };
30
- },
31
- toBeInstanceOf(expected) {
32
- try {
33
- expect(received).toBeInstanceOf(expected);
34
- }
35
- catch (error) {
36
- throw popStackTrace(error);
37
- }
38
- return { ok: true };
39
- },
40
- toHaveFirstParam() {
41
- return { ok: true };
42
- },
43
- };
44
- }
45
- //# sourceMappingURL=test.js.map
package/dist/test.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;AAwJA,gBAqDC;AA7DD,MAAM,aAAa,GAAG,CAAC,KAAU,EAAE,EAAE;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAa,CAAC;IAClD,MAAM,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,SAAgB,EAAE,CAAW,QAAkB;IAC7C,OAAO;QACL,IAAI,CACF,QAAkB;YAIlB,IAAI,CAAC;gBACH,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAS,CAAC;QAC7B,CAAC;QACD,aAAa,CACX,QAAkB;YAIlB,IAAI,CAAC;gBACH,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAS,CAAC;QAC7B,CAAC;QACD,cAAc,CACZ,QAAkB;YAIlB,IAAI,CAAC;gBACH,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAS,CAAC;QAC7B,CAAC;QACD,gBAAgB;YAYd,OAAO,EAAE,EAAE,EAAE,IAAI,EAAS,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import { Constructor, Expand } from \"./_\";\n\ntype IfEquals<T, U, Y = unknown, N = never> = (<G>() => G extends T\n ? 1\n : 2) extends <G>() => G extends U ? 1 : 2\n ? Y\n : N;\n\nexport type Equals<X, Y> = IfEquals<X, Y, true, false>;\n\ntype tests = {\n // Booleans\n \"Equals<true, true> -> true\": [Equals<true, true>, true];\n \"Equals<true, false> -> false\": [Equals<true, false>, false];\n \"Equals<false, true> -> false\": [Equals<false, true>, false];\n \"Equals<false, false> -> true\": [Equals<false, false>, true];\n \"Equals<true, any> -> false\": [Equals<true, any>, false];\n \"Equals<any, true> -> false\": [Equals<any, true>, false];\n \"Equals<false, any> -> false\": [Equals<false, any>, false];\n \"Equals<any, false> -> false\": [Equals<any, false>, false];\n \"Equals<true, unknown> -> false\": [Equals<true, unknown>, false];\n \"Equals<unknown, true> -> false\": [Equals<unknown, true>, false];\n \"Equals<false, unknown> -> false\": [Equals<false, unknown>, false];\n \"Equals<unknown, false> -> false\": [Equals<unknown, false>, false];\n \"Equals<true, never> -> false\": [Equals<true, never>, false];\n \"Equals<never, true> -> false\": [Equals<never, true>, false];\n \"Equals<false, never> -> false\": [Equals<false, never>, false];\n \"Equals<never, false> -> false\": [Equals<never, false>, false];\n \"Equals<true, true | false> -> true\": [Equals<true, true | false>, false];\n \"Equals<true | false, true> -> true\": [Equals<true | false, true>, false];\n\n // Numbers\n \"Equals<1, 1> -> true\": [Equals<1, 1>, true];\n \"Equals<1, 2> -> false\": [Equals<1, 2>, false];\n \"Equals<2, 1> -> false\": [Equals<2, 1>, false];\n \"Equals<2, 2> -> true\": [Equals<2, 2>, true];\n // Strings\n \"Equals<'a', 'a'> -> true\": [Equals<\"a\", \"a\">, true];\n \"Equals<'a', 'b'> -> false\": [Equals<\"a\", \"b\">, false];\n \"Equals<'b', 'a'> -> false\": [Equals<\"b\", \"a\">, false];\n \"Equals<'b', 'b'> -> true\": [Equals<\"b\", \"b\">, true];\n // Arrays\n \"Equals<[], []> -> true\": [Equals<[], []>, true];\n \"Equals<[], [1]> -> false\": [Equals<[], [1]>, false];\n \"Equals<[1], []> -> false\": [Equals<[1], []>, false];\n \"Equals<[1], [1]> -> true\": [Equals<[1], [1]>, true];\n // Objects\n\n \"Equals<{}, {}> -> true\": [Equals<{}, {}>, true];\n \"Equals<{}, { a: 1 }> -> false\": [Equals<{}, { a: 1 }>, false];\n \"Equals<{ a: 1 }, {}> -> false\": [Equals<{ a: 1 }, {}>, false];\n \"Equals<{ a: 1 }, { a: 1 }> -> true\": [Equals<{ a: 1 }, { a: 1 }>, true];\n \"Equals<{ a: 1 }, { a: 2 }> -> false\": [Equals<{ a: 1 }, { a: 2 }>, false];\n \"Equals<{ a: 2 }, { a: 1 }> -> false\": [Equals<{ a: 2 }, { a: 1 }>, false];\n \"Equals<{ a: 2 }, { a: 2 }> -> true\": [Equals<{ a: 2 }, { a: 2 }>, true];\n \"Equals<{ a: 1 }, { b: 1 }> -> false\": [Equals<{ a: 1 }, { b: 1 }>, false];\n \"Equals<{ b: 1 }, { a: 1 }> -> false\": [Equals<{ b: 1 }, { a: 1 }>, false];\n // Objects with any, unknown, never\n \"Equals<{}, any> -> false\": [Equals<{}, any>, false];\n \"Equals<any, {}> -> false\": [Equals<any, {}>, false];\n \"Equals<{}, unknown> -> false\": [Equals<{}, unknown>, false];\n \"Equals<unknown, {}> -> false\": [Equals<unknown, {}>, false];\n \"Equals<{}, never> -> false\": [Equals<{}, never>, false];\n \"Equals<never, {}> -> false\": [Equals<never, {}>, false];\n // Objects with nested any, unknown, never and real types\n \"Equals<{ a: any }, { a: any }> -> true\": [\n Equals<{ a: any }, { a: any }>,\n true,\n ];\n \"Equals<{ a: unknown }, { a: unknown }> -> true\": [\n Equals<{ a: unknown }, { a: unknown }>,\n true,\n ];\n \"Equals<{ a: never }, { a: never }> -> true\": [\n Equals<{ a: never }, { a: never }>,\n true,\n ];\n \"Equals<{ a: any }, { a: unknown }> -> false\": [\n Equals<{ a: any }, { a: unknown }>,\n false,\n ];\n \"Equals<{ a: any }, { a: never }> -> false\": [\n Equals<{ a: any }, { a: never }>,\n false,\n ];\n \"Equals<{ a: unknown }, { a: any }> -> false\": [\n Equals<{ a: unknown }, { a: any }>,\n false,\n ];\n \"Equals<{ a: unknown }, { a: never }> -> false\": [\n Equals<{ a: unknown }, { a: never }>,\n false,\n ];\n \"Equals<{ a: never }, { a: any }> -> false\": [\n Equals<{ a: never }, { a: any }>,\n false,\n ];\n \"Equals<{ a: never }, { a: unknown }> -> false\": [\n Equals<{ a: never }, { a: unknown }>,\n false,\n ];\n \"Equals<{ a: any }, { a: 1 }> -> false\": [\n Equals<{ a: any }, { a: 1 }>,\n false,\n ];\n \"Equals<{ a: unknown }, { a: 1 }> -> false\": [\n Equals<{ a: unknown }, { a: 1 }>,\n false,\n ];\n \"Equals<{ a: never }, { a: 1 }> -> false\": [\n Equals<{ a: never }, { a: 1 }>,\n false,\n ];\n \"Equals<{ a: 1 }, { a: any }> -> false\": [\n Equals<{ a: 1 }, { a: any }>,\n false,\n ];\n \"Equals<{ a: 1 }, { a: unknown }> -> false\": [\n Equals<{ a: 1 }, { a: unknown }>,\n false,\n ];\n \"Equals<{ a: 1 }, { a: never }> -> false\": [\n Equals<{ a: 1 }, { a: never }>,\n false,\n ];\n \"Equals<{ (): string } & { (x: string): number },{ (x: string): number } & { (): string }>\": [\n Equals<\n { (): string } & { (x: string): number },\n { (x: string): number } & { (): string }\n >,\n false,\n ];\n};\n\ntype check = {\n [name in keyof tests]: Equals<tests[name][0], tests[name][1]> extends true\n ? true\n : false;\n};\n\ntype failingtests = {\n [name in keyof check]: check[name] extends true ? never : name;\n}[keyof check];\n\nconst popStackTrace = (error: any) => {\n const lines = error.stack.split(\"\\n\") as string[];\n const at = lines.findIndex((line) => line.includes(\"at\"));\n lines.splice(at, 1);\n error.stack = lines.join(\"\\n\");\n return error;\n};\n\nexport function ex<Received>(received: Received) {\n return {\n toBe<Expected>(\n expected: Expected,\n ): Equals<Received, Expected> extends true\n ? { ok: true }\n : { expected: Expected; received: Received } {\n try {\n expect(received).toBe(expected);\n } catch (error) {\n throw popStackTrace(error);\n }\n return { ok: true } as any;\n },\n toStrictEqual<Expected>(\n expected: Expected,\n ): Equals<Received, Expected> extends true\n ? { ok: true }\n : { expected: Expected; received: Received } {\n try {\n expect(received).toStrictEqual(expected);\n } catch (error) {\n throw popStackTrace(error);\n }\n return { ok: true } as any;\n },\n toBeInstanceOf<Expected extends Constructor>(\n expected: Expected,\n ): Equals<Received, InstanceType<Expected>> extends true\n ? { ok: true }\n : { expected: InstanceType<Expected>; received: Received } {\n try {\n expect(received).toBeInstanceOf(expected);\n } catch (error) {\n throw popStackTrace(error);\n }\n return { ok: true } as any;\n },\n toHaveFirstParam<Expected>(): Received extends (\n first: infer P,\n ...rest: any[]\n ) => any\n ? Equals<P, Expected> extends true\n ? { ok: true }\n : { expected: Expected; received: P }\n : Received extends Constructor<any, [infer P, ...any[]]>\n ? Equals<P, Expected> extends true\n ? { ok: true }\n : { expected: Expected; received: P }\n : \"not a function or constructor\" {\n return { ok: true } as any;\n },\n };\n}\n"]}