@ddd-ts/shape 0.0.3-50 → 0.0.3-52

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 (265) hide show
  1. package/dist/definitions/child.d.ts +9 -0
  2. package/dist/definitions/child.d.ts.map +1 -0
  3. package/dist/definitions/child.js +16 -0
  4. package/dist/definitions/child.js.map +1 -0
  5. package/dist/definitions/child.spec.d.ts +2 -0
  6. package/dist/definitions/child.spec.d.ts.map +1 -0
  7. package/dist/definitions/child.spec.js +34 -0
  8. package/dist/definitions/child.spec.js.map +1 -0
  9. package/dist/definitions/definition.d.ts +11 -0
  10. package/dist/definitions/definition.d.ts.map +1 -0
  11. package/dist/definitions/definition.js +3 -0
  12. package/dist/definitions/definition.js.map +1 -0
  13. package/dist/definitions/dict.d.ts +38 -0
  14. package/dist/definitions/dict.d.ts.map +1 -0
  15. package/dist/definitions/dict.js +39 -0
  16. package/dist/definitions/dict.js.map +1 -0
  17. package/dist/definitions/dict.spec.d.ts +2 -0
  18. package/dist/definitions/dict.spec.d.ts.map +1 -0
  19. package/dist/definitions/dict.spec.js +30 -0
  20. package/dist/definitions/dict.spec.js.map +1 -0
  21. package/dist/definitions/either.d.ts +9 -0
  22. package/dist/definitions/either.d.ts.map +1 -0
  23. package/dist/definitions/either.js +25 -0
  24. package/dist/definitions/either.js.map +1 -0
  25. package/dist/definitions/either.spec.d.ts +2 -0
  26. package/dist/definitions/either.spec.d.ts.map +1 -0
  27. package/dist/definitions/either.spec.js +27 -0
  28. package/dist/definitions/either.spec.js.map +1 -0
  29. package/dist/definitions/literal.d.ts +30 -0
  30. package/dist/definitions/literal.d.ts.map +1 -0
  31. package/dist/definitions/literal.js +12 -0
  32. package/dist/definitions/literal.js.map +1 -0
  33. package/dist/definitions/literal.spec.d.ts +2 -0
  34. package/dist/definitions/literal.spec.d.ts.map +1 -0
  35. package/dist/definitions/literal.spec.js +49 -0
  36. package/dist/definitions/literal.spec.js.map +1 -0
  37. package/dist/definitions/multiple.d.ts +9 -0
  38. package/dist/definitions/multiple.d.ts.map +1 -0
  39. package/dist/definitions/multiple.js +18 -0
  40. package/dist/definitions/multiple.js.map +1 -0
  41. package/dist/definitions/multiple.spec.d.ts +2 -0
  42. package/dist/definitions/multiple.spec.d.ts.map +1 -0
  43. package/dist/definitions/multiple.spec.js +29 -0
  44. package/dist/definitions/multiple.spec.js.map +1 -0
  45. package/dist/definitions/nothing.d.ts +6 -0
  46. package/dist/definitions/nothing.d.ts.map +1 -0
  47. package/dist/definitions/nothing.js +12 -0
  48. package/dist/definitions/nothing.js.map +1 -0
  49. package/dist/definitions/optional.d.ts +10 -0
  50. package/dist/definitions/optional.d.ts.map +1 -0
  51. package/dist/definitions/optional.js +19 -0
  52. package/dist/definitions/optional.js.map +1 -0
  53. package/dist/definitions/optional.spec.d.ts +2 -0
  54. package/dist/definitions/optional.spec.d.ts.map +1 -0
  55. package/dist/definitions/optional.spec.js +20 -0
  56. package/dist/definitions/optional.spec.js.map +1 -0
  57. package/dist/definitions/serializableClass.d.ts +15 -0
  58. package/dist/definitions/serializableClass.d.ts.map +1 -0
  59. package/dist/definitions/serializableClass.js +16 -0
  60. package/dist/definitions/serializableClass.js.map +1 -0
  61. package/dist/definitions/serializableClass.spec.d.ts +2 -0
  62. package/dist/definitions/serializableClass.spec.d.ts.map +1 -0
  63. package/dist/definitions/serializableClass.spec.js +106 -0
  64. package/dist/definitions/serializableClass.spec.js.map +1 -0
  65. package/dist/definitions/shorthands.d.ts +18 -0
  66. package/dist/definitions/shorthands.d.ts.map +1 -0
  67. package/dist/definitions/shorthands.js +3 -0
  68. package/dist/definitions/shorthands.js.map +1 -0
  69. package/dist/definitions/stringEnum.d.ts +29 -0
  70. package/dist/definitions/stringEnum.d.ts.map +1 -0
  71. package/dist/definitions/stringEnum.js +29 -0
  72. package/dist/definitions/stringEnum.js.map +1 -0
  73. package/dist/definitions/stringEnum.spec.d.ts +2 -0
  74. package/dist/definitions/stringEnum.spec.d.ts.map +1 -0
  75. package/dist/definitions/stringEnum.spec.js +60 -0
  76. package/dist/definitions/stringEnum.spec.js.map +1 -0
  77. package/dist/definitions/tuple.d.ts +11 -0
  78. package/dist/definitions/tuple.d.ts.map +1 -0
  79. package/dist/definitions/tuple.js +18 -0
  80. package/dist/definitions/tuple.js.map +1 -0
  81. package/dist/definitions/tuple.spec.d.ts +2 -0
  82. package/dist/definitions/tuple.spec.d.ts.map +1 -0
  83. package/dist/definitions/tuple.spec.js +18 -0
  84. package/dist/definitions/tuple.spec.js.map +1 -0
  85. package/dist/index.d.ts +12 -93
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +26 -126
  88. package/dist/index.js.map +1 -1
  89. package/dist/mixins/objectShape.d.ts +18 -0
  90. package/dist/mixins/objectShape.d.ts.map +1 -0
  91. package/dist/mixins/objectShape.js +27 -0
  92. package/dist/mixins/objectShape.js.map +1 -0
  93. package/dist/mixins/objectShape.spec.d.ts +2 -0
  94. package/dist/mixins/objectShape.spec.d.ts.map +1 -0
  95. package/dist/mixins/objectShape.spec.js +100 -0
  96. package/dist/mixins/objectShape.spec.js.map +1 -0
  97. package/dist/mixins/primitive.d.ts +21 -0
  98. package/dist/mixins/primitive.d.ts.map +1 -0
  99. package/dist/mixins/primitive.js +27 -0
  100. package/dist/mixins/primitive.js.map +1 -0
  101. package/dist/mixins/primitive.spec.d.ts +2 -0
  102. package/dist/mixins/primitive.spec.d.ts.map +1 -0
  103. package/dist/mixins/primitive.spec.js +22 -0
  104. package/dist/mixins/primitive.spec.js.map +1 -0
  105. package/dist/mixins/shape.d.ts +22 -0
  106. package/dist/mixins/shape.d.ts.map +1 -0
  107. package/dist/mixins/shape.js +17 -0
  108. package/dist/mixins/shape.js.map +1 -0
  109. package/dist/mixins/shape.spec.d.ts +2 -0
  110. package/dist/mixins/shape.spec.d.ts.map +1 -0
  111. package/dist/mixins/shape.spec.js +86 -0
  112. package/dist/mixins/shape.spec.js.map +1 -0
  113. package/dist/new/definitions/child.d.ts +9 -0
  114. package/dist/new/definitions/child.d.ts.map +1 -0
  115. package/dist/new/definitions/child.js +16 -0
  116. package/dist/new/definitions/child.js.map +1 -0
  117. package/dist/new/definitions/child.spec.d.ts +2 -0
  118. package/dist/new/definitions/child.spec.d.ts.map +1 -0
  119. package/dist/new/definitions/child.spec.js +34 -0
  120. package/dist/new/definitions/child.spec.js.map +1 -0
  121. package/dist/new/definitions/definition.d.ts +11 -0
  122. package/dist/new/definitions/definition.d.ts.map +1 -0
  123. package/dist/new/definitions/definition.js +3 -0
  124. package/dist/new/definitions/definition.js.map +1 -0
  125. package/dist/new/definitions/dict.d.ts +38 -0
  126. package/dist/new/definitions/dict.d.ts.map +1 -0
  127. package/dist/new/definitions/dict.js +39 -0
  128. package/dist/new/definitions/dict.js.map +1 -0
  129. package/dist/new/definitions/dict.spec.d.ts +2 -0
  130. package/dist/new/definitions/dict.spec.d.ts.map +1 -0
  131. package/dist/new/definitions/dict.spec.js +30 -0
  132. package/dist/new/definitions/dict.spec.js.map +1 -0
  133. package/dist/new/definitions/either.d.ts +9 -0
  134. package/dist/new/definitions/either.d.ts.map +1 -0
  135. package/dist/new/definitions/either.js +25 -0
  136. package/dist/new/definitions/either.js.map +1 -0
  137. package/dist/new/definitions/either.spec.d.ts +2 -0
  138. package/dist/new/definitions/either.spec.d.ts.map +1 -0
  139. package/dist/new/definitions/either.spec.js +27 -0
  140. package/dist/new/definitions/either.spec.js.map +1 -0
  141. package/dist/new/definitions/literal.d.ts +30 -0
  142. package/dist/new/definitions/literal.d.ts.map +1 -0
  143. package/dist/new/definitions/literal.js +12 -0
  144. package/dist/new/definitions/literal.js.map +1 -0
  145. package/dist/new/definitions/literal.spec.d.ts +2 -0
  146. package/dist/new/definitions/literal.spec.d.ts.map +1 -0
  147. package/dist/new/definitions/literal.spec.js +49 -0
  148. package/dist/new/definitions/literal.spec.js.map +1 -0
  149. package/dist/new/definitions/multiple.d.ts +9 -0
  150. package/dist/new/definitions/multiple.d.ts.map +1 -0
  151. package/dist/new/definitions/multiple.js +18 -0
  152. package/dist/new/definitions/multiple.js.map +1 -0
  153. package/dist/new/definitions/multiple.spec.d.ts +2 -0
  154. package/dist/new/definitions/multiple.spec.d.ts.map +1 -0
  155. package/dist/new/definitions/multiple.spec.js +29 -0
  156. package/dist/new/definitions/multiple.spec.js.map +1 -0
  157. package/dist/new/definitions/nothing.d.ts +6 -0
  158. package/dist/new/definitions/nothing.d.ts.map +1 -0
  159. package/dist/new/definitions/nothing.js +12 -0
  160. package/dist/new/definitions/nothing.js.map +1 -0
  161. package/dist/new/definitions/optional.d.ts +10 -0
  162. package/dist/new/definitions/optional.d.ts.map +1 -0
  163. package/dist/new/definitions/optional.js +19 -0
  164. package/dist/new/definitions/optional.js.map +1 -0
  165. package/dist/new/definitions/optional.spec.d.ts +2 -0
  166. package/dist/new/definitions/optional.spec.d.ts.map +1 -0
  167. package/dist/new/definitions/optional.spec.js +20 -0
  168. package/dist/new/definitions/optional.spec.js.map +1 -0
  169. package/dist/new/definitions/serializableClass.d.ts +15 -0
  170. package/dist/new/definitions/serializableClass.d.ts.map +1 -0
  171. package/dist/new/definitions/serializableClass.js +16 -0
  172. package/dist/new/definitions/serializableClass.js.map +1 -0
  173. package/dist/new/definitions/serializableClass.spec.d.ts +2 -0
  174. package/dist/new/definitions/serializableClass.spec.d.ts.map +1 -0
  175. package/dist/new/definitions/serializableClass.spec.js +106 -0
  176. package/dist/new/definitions/serializableClass.spec.js.map +1 -0
  177. package/dist/new/definitions/shorthands.d.ts +18 -0
  178. package/dist/new/definitions/shorthands.d.ts.map +1 -0
  179. package/dist/new/definitions/shorthands.js +3 -0
  180. package/dist/new/definitions/shorthands.js.map +1 -0
  181. package/dist/new/definitions/stringEnum.d.ts +29 -0
  182. package/dist/new/definitions/stringEnum.d.ts.map +1 -0
  183. package/dist/new/definitions/stringEnum.js +29 -0
  184. package/dist/new/definitions/stringEnum.js.map +1 -0
  185. package/dist/new/definitions/stringEnum.spec.d.ts +2 -0
  186. package/dist/new/definitions/stringEnum.spec.d.ts.map +1 -0
  187. package/dist/new/definitions/stringEnum.spec.js +60 -0
  188. package/dist/new/definitions/stringEnum.spec.js.map +1 -0
  189. package/dist/new/definitions/tuple.d.ts +11 -0
  190. package/dist/new/definitions/tuple.d.ts.map +1 -0
  191. package/dist/new/definitions/tuple.js +18 -0
  192. package/dist/new/definitions/tuple.js.map +1 -0
  193. package/dist/new/definitions/tuple.spec.d.ts +2 -0
  194. package/dist/new/definitions/tuple.spec.d.ts.map +1 -0
  195. package/dist/new/definitions/tuple.spec.js +18 -0
  196. package/dist/new/definitions/tuple.spec.js.map +1 -0
  197. package/dist/new/index.d.ts +13 -0
  198. package/dist/new/index.d.ts.map +1 -0
  199. package/dist/new/index.js +29 -0
  200. package/dist/new/index.js.map +1 -0
  201. package/dist/new/mixins/objectShape.d.ts +18 -0
  202. package/dist/new/mixins/objectShape.d.ts.map +1 -0
  203. package/dist/new/mixins/objectShape.js +27 -0
  204. package/dist/new/mixins/objectShape.js.map +1 -0
  205. package/dist/new/mixins/objectShape.spec.d.ts +2 -0
  206. package/dist/new/mixins/objectShape.spec.d.ts.map +1 -0
  207. package/dist/new/mixins/objectShape.spec.js +100 -0
  208. package/dist/new/mixins/objectShape.spec.js.map +1 -0
  209. package/dist/new/mixins/primitive.d.ts +21 -0
  210. package/dist/new/mixins/primitive.d.ts.map +1 -0
  211. package/dist/new/mixins/primitive.js +27 -0
  212. package/dist/new/mixins/primitive.js.map +1 -0
  213. package/dist/new/mixins/primitive.spec.d.ts +2 -0
  214. package/dist/new/mixins/primitive.spec.d.ts.map +1 -0
  215. package/dist/new/mixins/primitive.spec.js +22 -0
  216. package/dist/new/mixins/primitive.spec.js.map +1 -0
  217. package/dist/new/mixins/shape.d.ts +22 -0
  218. package/dist/new/mixins/shape.d.ts.map +1 -0
  219. package/dist/new/mixins/shape.js +17 -0
  220. package/dist/new/mixins/shape.js.map +1 -0
  221. package/dist/new/mixins/shape.spec.d.ts +2 -0
  222. package/dist/new/mixins/shape.spec.d.ts.map +1 -0
  223. package/dist/new/mixins/shape.spec.js +86 -0
  224. package/dist/new/mixins/shape.spec.js.map +1 -0
  225. package/dist/new/shorthandToLonghand.d.ts +4 -0
  226. package/dist/new/shorthandToLonghand.d.ts.map +1 -0
  227. package/dist/new/shorthandToLonghand.js +59 -0
  228. package/dist/new/shorthandToLonghand.js.map +1 -0
  229. package/dist/new/testUtils.d.ts +6 -0
  230. package/dist/new/testUtils.d.ts.map +1 -0
  231. package/dist/new/testUtils.js +12 -0
  232. package/dist/new/testUtils.js.map +1 -0
  233. package/dist/new/types.d.ts +11 -0
  234. package/dist/new/types.d.ts.map +1 -0
  235. package/dist/new/types.js +3 -0
  236. package/dist/new/types.js.map +1 -0
  237. package/dist/old/enum.d.ts +25 -0
  238. package/dist/old/enum.d.ts.map +1 -0
  239. package/dist/old/enum.js +37 -0
  240. package/dist/old/enum.js.map +1 -0
  241. package/dist/old/enum.spec.d.ts +2 -0
  242. package/dist/old/enum.spec.d.ts.map +1 -0
  243. package/dist/old/enum.spec.js +71 -0
  244. package/dist/old/enum.spec.js.map +1 -0
  245. package/dist/old/index.d.ts +94 -0
  246. package/dist/old/index.d.ts.map +1 -0
  247. package/dist/old/index.js +129 -0
  248. package/dist/old/index.js.map +1 -0
  249. package/dist/old/index.spec.d.ts +2 -0
  250. package/dist/old/index.spec.d.ts.map +1 -0
  251. package/dist/old/index.spec.js +357 -0
  252. package/dist/old/index.spec.js.map +1 -0
  253. package/dist/shorthandToLonghand.d.ts +4 -0
  254. package/dist/shorthandToLonghand.d.ts.map +1 -0
  255. package/dist/shorthandToLonghand.js +59 -0
  256. package/dist/shorthandToLonghand.js.map +1 -0
  257. package/dist/testUtils.d.ts +6 -0
  258. package/dist/testUtils.d.ts.map +1 -0
  259. package/dist/testUtils.js +12 -0
  260. package/dist/testUtils.js.map +1 -0
  261. package/dist/types.d.ts +11 -0
  262. package/dist/types.d.ts.map +1 -0
  263. package/dist/types.js +3 -0
  264. package/dist/types.js.map +1 -0
  265. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SerializableClass = void 0;
4
+ function SerializableClass(configuration) {
5
+ return {
6
+ paramToRuntime: (param) => param,
7
+ serialize: (runtime) => {
8
+ return runtime.serialize();
9
+ },
10
+ deserialize: (serialized) => {
11
+ return configuration.deserialize(serialized);
12
+ }
13
+ };
14
+ }
15
+ exports.SerializableClass = SerializableClass;
16
+ //# sourceMappingURL=serializableClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializableClass.js","sourceRoot":"","sources":["../../../src/new/definitions/serializableClass.ts"],"names":[],"mappings":";;;AAqBA,SAAgB,iBAAiB,CAC/B,aAAgB;IAEhB,OAAO;QACL,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAChC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,OAAO,OAAO,CAAC,SAAS,EAAS,CAAC;QACpC,CAAC;QACD,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,OAAO,aAAa,CAAC,WAAW,CAAC,UAAU,CAAQ,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC;AAZD,8CAYC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serializableClass.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializableClass.spec.d.ts","sourceRoot":"","sources":["../../../src/new/definitions/serializableClass.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const objectShape_1 = require("../mixins/objectShape");
4
+ const testUtils_1 = require("../testUtils");
5
+ const serializableClass_1 = require("./serializableClass");
6
+ describe("Definition: SerializableClass", () => {
7
+ it("uses keyword notation", () => {
8
+ class Id {
9
+ value;
10
+ constructor(value) {
11
+ this.value = value;
12
+ }
13
+ serialize() {
14
+ return this.value;
15
+ }
16
+ static deserialize(value) {
17
+ return new Id(value);
18
+ }
19
+ }
20
+ class Test extends (0, objectShape_1.ObjectShape)({
21
+ value: (0, serializableClass_1.SerializableClass)(Id),
22
+ }) {
23
+ }
24
+ const a = new Test({
25
+ value: new Id("abc"),
26
+ });
27
+ expect(a.value).toBeInstanceOf(Id);
28
+ expect(a.value.value).toEqual("abc");
29
+ (0, testUtils_1.check)(Test, a);
30
+ });
31
+ it("uses keyword-less notation", () => {
32
+ class Id {
33
+ value;
34
+ constructor(value) {
35
+ this.value = value;
36
+ }
37
+ serialize() {
38
+ return this.value;
39
+ }
40
+ static deserialize(value) {
41
+ return new Id(value);
42
+ }
43
+ }
44
+ class Test extends (0, objectShape_1.ObjectShape)({
45
+ value: Id,
46
+ }) {
47
+ }
48
+ const a = new Test({
49
+ value: new Id("abc"),
50
+ });
51
+ expect(a.value).toBeInstanceOf(Id);
52
+ expect(a.value.value).toEqual("abc");
53
+ (0, testUtils_1.check)(Test, a);
54
+ });
55
+ it("does not allow SerializableClass with not serializable serialize() return type", () => {
56
+ class Test {
57
+ serialize() {
58
+ return {
59
+ ok: 1,
60
+ ko: () => { },
61
+ };
62
+ }
63
+ static deserialize(arg) {
64
+ return new Test();
65
+ }
66
+ }
67
+ // @ts-expect-error - cannot detect shorthand
68
+ class TestShape extends (0, objectShape_1.ObjectShape)({
69
+ // @ts-expect-error - class is not serializable
70
+ ko: Test,
71
+ }) {
72
+ }
73
+ });
74
+ it("Allows recursive serialization with SerializableClass", () => {
75
+ class Tree {
76
+ name;
77
+ child;
78
+ constructor(name, child) {
79
+ this.name = name;
80
+ this.child = child;
81
+ }
82
+ serialize() {
83
+ return {
84
+ name: this.name,
85
+ child: this.child?.serialize(),
86
+ };
87
+ }
88
+ static deserialize(serialized) {
89
+ return new Tree(serialized.name, serialized.child ? Tree.deserialize(serialized.child) : undefined);
90
+ }
91
+ }
92
+ class Test extends (0, objectShape_1.ObjectShape)({
93
+ root: Tree,
94
+ }) {
95
+ }
96
+ const a = new Test({
97
+ root: new Tree("a", new Tree("b", new Tree("c", undefined))),
98
+ });
99
+ expect(a.root.name).toBe("a");
100
+ expect(a.root.child?.name).toBe("b");
101
+ expect(a.root.child?.child?.name).toBe("c");
102
+ expect(a.root.child?.child?.child).toBe(undefined);
103
+ (0, testUtils_1.check)(Test, a);
104
+ });
105
+ });
106
+ //# sourceMappingURL=serializableClass.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializableClass.spec.js","sourceRoot":"","sources":["../../../src/new/definitions/serializableClass.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { IsShapeConstructor } from "../mixins/objectShape";
2
+ import { ChildDefinition, ChildShorthand } from "./child";
3
+ import { Definition } from "./definition";
4
+ import { DictShorthand, DictDefinition } from "./dict";
5
+ import { SerializableClassConfiguration, SerializableClassDefinition, SerializableClassShorthand } from "./serializableClass";
6
+ import { LiteralShorthand, LiteralDefinition } from "./literal";
7
+ import { MultipleDefinition, MultipleShorthand } from "./multiple";
8
+ import { StringEnumDefinition, StringEnumShorthand } from "./stringEnum";
9
+ import { EitherDefinition } from "./either";
10
+ import { OptionalDefinition } from "./optional";
11
+ import { TupleDefinition } from "./tuple";
12
+ import { NothingDefinition, NothingShorthand } from "./nothing";
13
+ export type AnyShorthand = LiteralShorthand | DictShorthand | MultipleShorthand | ChildShorthand | SerializableClassShorthand | StringEnumShorthand | NothingShorthand;
14
+ export type AnyDefinition = ChildDefinition | SerializableClassDefinition | DictDefinition | EitherDefinition | LiteralDefinition | MultipleDefinition | OptionalDefinition | StringEnumDefinition | TupleDefinition | NothingDefinition;
15
+ export type ShorthandToLonghand<T> = T extends undefined ? NothingDefinition : T extends IsShapeConstructor<Definition> ? ChildDefinition<T> : T extends SerializableClassConfiguration ? SerializableClassDefinition<T> : T extends Definition ? T : T extends typeof String ? LiteralDefinition<T> : T extends typeof Number ? LiteralDefinition<T> : T extends typeof Boolean ? LiteralDefinition<T> : T extends typeof Date ? LiteralDefinition<T> : T extends [...infer C extends string[]] ? StringEnumDefinition<C> : T extends [infer C] ? MultipleDefinition<ShorthandToLonghand<C>> : T extends Record<string, any> ? DictDefinition<{
16
+ [k in keyof T]: ShorthandToLonghand<T[k]>;
17
+ }> : never;
18
+ //# sourceMappingURL=shorthands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shorthands.d.ts","sourceRoot":"","sources":["../../../src/new/definitions/shorthands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACvD,OAAO,EACN,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,YAAY,GACrB,gBAAgB,GAChB,aAAa,GACb,iBAAiB,GACjB,cAAc,GACd,0BAA0B,GAC1B,mBAAmB,GACnB,gBAAgB,CAAC;AAEpB,MAAM,MAAM,aAAa,GACtB,eAAe,GACf,2BAA2B,GAC3B,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,eAAe,GACf,iBAAiB,CAAA;AAEpB,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,GACrD,iBAAiB,GACjB,CAAC,SAAS,kBAAkB,CAAC,UAAU,CAAC,GACtC,eAAe,CAAC,CAAC,CAAC,GAClB,CAAC,SAAS,8BAA8B,GACvC,2BAA2B,CAAC,CAAC,CAAC,GAC9B,CAAC,SAAS,UAAU,GACnB,CAAC,GACD,CAAC,SAAS,OAAO,MAAM,GACtB,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS,OAAO,MAAM,GACtB,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS,OAAO,OAAO,GACvB,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS,OAAO,IAAI,GACpB,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,MAAM,EAAE,CAAC,GACtC,oBAAoB,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAClB,kBAAkB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAC1C,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,cAAc,CAAC;KACf,CAAC,IAAI,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACxC,CAAC,GACD,KAAK,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=shorthands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shorthands.js","sourceRoot":"","sources":["../../../src/new/definitions/shorthands.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { Definition } from "./definition";
2
+ type Matcher<cases extends string> = {
3
+ [K in cases]?: () => any;
4
+ };
5
+ type Catchall = {
6
+ _: () => any;
7
+ };
8
+ type MatcherParam<cases extends string> = Required<Matcher<cases>> | (Matcher<cases> & Catchall);
9
+ declare class Matchable<C extends string> {
10
+ readonly value: C;
11
+ constructor(value: C);
12
+ is<U extends C>(value: U): this is this & {
13
+ value: U;
14
+ serialize(): U;
15
+ };
16
+ match<M extends MatcherParam<C>>(matcher: M): M extends Required<MatcherParam<C>> ? {
17
+ [K in C]: M[K] extends () => infer R ? R : never;
18
+ }[C] : {
19
+ [K in C]: M[K] extends () => infer R ? R : never;
20
+ }[C] | (M extends {
21
+ _: () => infer R;
22
+ } ? R : never);
23
+ }
24
+ export type StringEnumConfiguration = string[];
25
+ export type StringEnumShorthand = StringEnumConfiguration;
26
+ export type StringEnumDefinition<C extends StringEnumConfiguration = StringEnumConfiguration> = Definition<Matchable<C[number]>, C[number], C[number]>;
27
+ export declare function StringEnum<const C extends StringEnumConfiguration>(...configuration: C): StringEnumDefinition<C>;
28
+ export {};
29
+ //# sourceMappingURL=stringEnum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringEnum.d.ts","sourceRoot":"","sources":["../../../src/new/definitions/stringEnum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,OAAO,CAAC,KAAK,SAAS,MAAM,IAAI;KAClC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG;CACzB,CAAC;AAEF,KAAK,QAAQ,GAAG;IAAE,CAAC,EAAE,MAAM,GAAG,CAAA;CAAE,CAAC;AAEjC,KAAK,YAAY,CAAC,KAAK,SAAS,MAAM,IAClC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GACxB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC;AAEhC,cAAM,SAAS,CAAC,CAAC,SAAS,MAAM;aACF,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAEpC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,GAAG;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,SAAS,IAAI,CAAC,CAAA;KAAE;IAItE,KAAK,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,EAC7B,OAAO,EAAE,CAAC,GACT,CAAC,SAAS,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAClC;SACC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;KACjD,CAAC,CAAC,CAAC,GAEF;SACC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;KACjD,CAAC,CAAC,CAAC,GACF,CAAC,CAAC,SAAS;QAAE,CAAC,EAAE,MAAM,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK,CAAC;CAIjD;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,EAAE,CAAC;AAC/C,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAC1D,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,uBAAuB,GAAG,uBAAuB,IAC1F,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AACzD,wBAAgB,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,uBAAuB,EAChE,GAAG,aAAa,EAAE,CAAC,GAClB,oBAAoB,CAAC,CAAC,CAAC,CAUzB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringEnum = void 0;
4
+ class Matchable {
5
+ value;
6
+ constructor(value) {
7
+ this.value = value;
8
+ }
9
+ is(value) {
10
+ return this.value === value;
11
+ }
12
+ match(matcher) {
13
+ const fn = matcher[this.value] ?? matcher._;
14
+ return fn();
15
+ }
16
+ }
17
+ function StringEnum(...configuration) {
18
+ return {
19
+ paramToRuntime: (param) => new Matchable(param),
20
+ serialize: (runtime) => {
21
+ return runtime.value;
22
+ },
23
+ deserialize: (serialized) => {
24
+ return serialized;
25
+ }
26
+ };
27
+ }
28
+ exports.StringEnum = StringEnum;
29
+ //# sourceMappingURL=stringEnum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringEnum.js","sourceRoot":"","sources":["../../../src/new/definitions/stringEnum.ts"],"names":[],"mappings":";;;AAYA,MAAM,SAAS;IACe;IAA5B,YAA4B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAI,CAAC;IAEzC,EAAE,CAAc,KAAQ;QACtB,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;IAC9B,CAAC;IAED,KAAK,CACH,OAAU;QAUV,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAK,OAAe,CAAC,CAAC,CAAC;QACrD,OAAO,EAAE,EAAS,CAAC;IACrB,CAAC;CACF;AAMD,SAAgB,UAAU,CACxB,GAAG,aAAgB;IAEnB,OAAO;QACL,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC;QAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;QACD,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC;AAZD,gCAYC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stringEnum.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringEnum.spec.d.ts","sourceRoot":"","sources":["../../../src/new/definitions/stringEnum.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const objectShape_1 = require("../mixins/objectShape");
4
+ const testUtils_1 = require("../testUtils");
5
+ const stringEnum_1 = require("./stringEnum");
6
+ describe("Definition: StringEnum", () => {
7
+ it("uses keyword notation", () => {
8
+ class Test extends (0, objectShape_1.ObjectShape)({
9
+ enum: (0, stringEnum_1.StringEnum)("A", "B"),
10
+ }) {
11
+ }
12
+ const valid = new Test({
13
+ enum: "A",
14
+ });
15
+ const result = valid.enum.match({
16
+ A: () => "string",
17
+ _: () => 1,
18
+ });
19
+ const fallbackResult = valid.enum.match({
20
+ A: () => "string",
21
+ B: () => 1,
22
+ });
23
+ const invalid = new Test({
24
+ // @ts-expect-error - wrong type
25
+ enum: "C",
26
+ });
27
+ const a = new Test({
28
+ enum: "A",
29
+ });
30
+ expect(a.enum.value).toBe("A");
31
+ (0, testUtils_1.check)(Test, a);
32
+ });
33
+ it("uses keyword-less notation", () => {
34
+ class Test extends (0, objectShape_1.ObjectShape)({
35
+ enum: ["A", "B"],
36
+ }) {
37
+ }
38
+ const valid = new Test({
39
+ enum: "A",
40
+ });
41
+ const result = valid.enum.match({
42
+ A: () => "string",
43
+ _: () => 1,
44
+ });
45
+ const fallbackResult = valid.enum.match({
46
+ A: () => "string",
47
+ B: () => 1,
48
+ });
49
+ const invalid = new Test({
50
+ // @ts-expect-error - wrong type
51
+ enum: "C",
52
+ });
53
+ const a = new Test({
54
+ enum: "A",
55
+ });
56
+ expect(a.enum.value).toBe("A");
57
+ (0, testUtils_1.check)(Test, a);
58
+ });
59
+ });
60
+ //# sourceMappingURL=stringEnum.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringEnum.spec.js","sourceRoot":"","sources":["../../../src/new/definitions/stringEnum.spec.ts"],"names":[],"mappings":";;AAAA,uDAAoD;AACpD,4CAAqC;AACrC,6CAA0C;AAE1C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAChC,MAAM,IAAK,SAAQ,IAAA,yBAAW,EAAC;YAC9B,IAAI,EAAE,IAAA,uBAAU,EAAC,GAAG,EAAE,GAAG,CAAC;SAC1B,CAAC;SAAG;QAEL,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC;YACtB,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,MAAM,GAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAChD,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ;YACjB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;SACV,CAAC,CAAC;QAEH,MAAM,cAAc,GAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACxD,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ;YACjB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;SACV,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC;YACxB,gCAAgC;YAChC,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAA,iBAAK,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAK,SAAQ,IAAA,yBAAW,EAAC;YAC9B,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SAChB,CAAC;SAAG;QAEL,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC;YACtB,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,MAAM,GAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YAChD,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ;YACjB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;SACV,CAAC,CAAC;QAEH,MAAM,cAAc,GAAoB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACxD,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ;YACjB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;SACV,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC;YACxB,gCAAgC;YAChC,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;YAClB,IAAI,EAAE,GAAG;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAA,iBAAK,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Definition, DefinitionRuntime, DefinitionSerialized } from "./definition";
2
+ import { AnyShorthand, ShorthandToLonghand } from "./shorthands";
3
+ export type TupleConfiguration = (AnyShorthand | Definition)[];
4
+ export type TupleShorthand = TupleConfiguration;
5
+ export type TupleDefinition<C extends TupleConfiguration = TupleConfiguration> = Definition<{
6
+ [k in keyof C]: DefinitionRuntime<ShorthandToLonghand<C[k]>>;
7
+ }, {
8
+ [k in keyof C]: DefinitionSerialized<ShorthandToLonghand<C[k]>>;
9
+ }>;
10
+ export declare function Tuple<C extends TupleConfiguration>(...configuration: C): TupleDefinition<C>;
11
+ //# sourceMappingURL=tuple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../src/new/definitions/tuple.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC,EAAE,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAChD,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB,IAAI,UAAU,CACzF;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7D,EACD;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChE,CACF,CAAC;AAEF,wBAAgB,KAAK,CAAC,CAAC,SAAS,kBAAkB,EAChD,GAAG,aAAa,EAAE,CAAC,GAClB,eAAe,CAAC,CAAC,CAAC,CAcpB"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tuple = void 0;
4
+ const shorthandToLonghand_1 = require("../shorthandToLonghand");
5
+ function Tuple(...configuration) {
6
+ const longhand = configuration.map(shorthandToLonghand_1.shorthandToLonghand);
7
+ return {
8
+ paramToRuntime: (param) => param,
9
+ serialize: (runtime) => {
10
+ return runtime.map((r, index) => longhand[index].serialize(r));
11
+ },
12
+ deserialize: (serialized) => {
13
+ return serialized.map((s, index) => longhand[index].deserialize(s));
14
+ }
15
+ };
16
+ }
17
+ exports.Tuple = Tuple;
18
+ //# sourceMappingURL=tuple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../../src/new/definitions/tuple.ts"],"names":[],"mappings":";;;AAAA,gEAA6D;AAmB7D,SAAgB,KAAK,CACnB,GAAG,aAAgB;IAEnB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,yCAAmB,CAAC,CAAC;IAExD,OAAO;QACL,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;QAChC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAQ,CAAC;QACzE,CAAC;QACD,WAAW,EAAE,CAAC,UAAU,EAAE,EAAE;YAC1B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACjC,QAAQ,CAAC,KAAK,CAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CACzB,CAAC;QACX,CAAC;KACF,CAAC;AACJ,CAAC;AAhBD,sBAgBC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tuple.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.spec.d.ts","sourceRoot":"","sources":["../../../src/new/definitions/tuple.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const objectShape_1 = require("../mixins/objectShape");
4
+ const testUtils_1 = require("../testUtils");
5
+ const tuple_1 = require("./tuple");
6
+ describe("Definition: Tuple", () => {
7
+ it("keyword notation", () => {
8
+ class Test extends (0, objectShape_1.ObjectShape)({
9
+ tuple: (0, tuple_1.Tuple)(Number, String),
10
+ }) {
11
+ }
12
+ const a = new Test({
13
+ tuple: [1, "a"],
14
+ });
15
+ (0, testUtils_1.check)(Test, a);
16
+ });
17
+ });
18
+ //# sourceMappingURL=tuple.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple.spec.js","sourceRoot":"","sources":["../../../src/new/definitions/tuple.spec.ts"],"names":[],"mappings":";;AAAA,uDAAoD;AACpD,4CAAqC;AACrC,mCAAgC;AAEhC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC3B,MAAM,IAAK,SAAQ,IAAA,yBAAW,EAAC;YAC9B,KAAK,EAAE,IAAA,aAAK,EAAC,MAAM,EAAE,MAAM,CAAC;SAC5B,CAAC;SAAG;QAEL,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;SACf,CAAC,CAAC;QAEH,IAAA,iBAAK,EAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export * from "./definitions/child";
2
+ export * from "./definitions/definition";
3
+ export * from "./definitions/dict";
4
+ export * from "./definitions/literal";
5
+ export * from "./definitions/multiple";
6
+ export * from "./definitions/serializableClass";
7
+ export * from "./definitions/shorthands";
8
+ export * from "./definitions/stringEnum";
9
+ export * from "./definitions/tuple";
10
+ export * from "./mixins/shape";
11
+ export * from "./shorthandToLonghand";
12
+ export * from "./types";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/new/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,29 @@
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("./definitions/child"), exports);
18
+ __exportStar(require("./definitions/definition"), exports);
19
+ __exportStar(require("./definitions/dict"), exports);
20
+ __exportStar(require("./definitions/literal"), exports);
21
+ __exportStar(require("./definitions/multiple"), exports);
22
+ __exportStar(require("./definitions/serializableClass"), exports);
23
+ __exportStar(require("./definitions/shorthands"), exports);
24
+ __exportStar(require("./definitions/stringEnum"), exports);
25
+ __exportStar(require("./definitions/tuple"), exports);
26
+ __exportStar(require("./mixins/shape"), exports);
27
+ __exportStar(require("./shorthandToLonghand"), exports);
28
+ __exportStar(require("./types"), exports);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/new/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,2DAAyC;AACzC,qDAAmC;AACnC,wDAAsC;AACtC,yDAAuC;AACvC,kEAAgD;AAChD,2DAAyC;AACzC,2DAAyC;AACzC,sDAAoC;AACpC,iDAA+B;AAC/B,wDAAsC;AACtC,0CAAwB"}
@@ -0,0 +1,18 @@
1
+ import { DefinitionParameter, DefinitionRuntime, DefinitionSerialized } from "../definitions/definition";
2
+ import { DictDefinition, DictShorthand } from "../definitions/dict";
3
+ import { ShorthandToLonghand } from "../definitions/shorthands";
4
+ import { Class, Constructor, Expand } from "../types";
5
+ export type IsShapeConstructor<D extends DictShorthand | DictDefinition<any>> = Constructor<{
6
+ serialize: () => Expand<DefinitionSerialized<ShorthandToLonghand<D>>>;
7
+ }> & {
8
+ deserialize: ShorthandToLonghand<D>["deserialize"];
9
+ isShape: true;
10
+ };
11
+ export declare const ObjectShape: <const D extends import("../definitions/dict").DictConfiguration | DictDefinition<any>, const B extends Class<{}>>(definition: D, base?: B) => {
12
+ new (data: Expand<DefinitionParameter<ShorthandToLonghand<D>>>): DefinitionRuntime<ShorthandToLonghand<D>> & {
13
+ serialize(): Expand<DefinitionSerialized<ShorthandToLonghand<D>>>;
14
+ } & InstanceType<B>;
15
+ isShape: true;
16
+ deserialize<T extends Constructor<any>>(this: T, serialized: Expand<DefinitionSerialized<ShorthandToLonghand<D>>>): InstanceType<T>;
17
+ } & Omit<B, "">;
18
+ //# sourceMappingURL=objectShape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectShape.d.ts","sourceRoot":"","sources":["../../../src/new/mixins/objectShape.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEtD,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,aAAa,GAAG,cAAc,CAAC,GAAG,CAAC,IAC3E,WAAW,CAAC;IACX,SAAS,EAAE,MAAM,MAAM,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtE,CAAC,GAAG;IACJ,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACnD,OAAO,EAAE,IAAI,CAAC;CACd,CAAC;AAIH,eAAO,MAAM,WAAW;;;;aAgCb,IAAI;;eAWd,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectShape = void 0;
4
+ const shorthandToLonghand_1 = require("../shorthandToLonghand");
5
+ class DefaultShapeBaseClass {
6
+ }
7
+ const ObjectShape = (definition, base = DefaultShapeBaseClass) => {
8
+ const longhand = (0, shorthandToLonghand_1.shorthandToLonghand)(definition);
9
+ class Intermediate extends base {
10
+ base = base;
11
+ static isShape = true;
12
+ constructor(data) {
13
+ const converted = longhand.paramToRuntime(data);
14
+ super(converted);
15
+ Object.assign(this, converted);
16
+ }
17
+ static deserialize(serialized) {
18
+ return new this(longhand.deserialize(serialized));
19
+ }
20
+ serialize() {
21
+ return longhand.serialize(this);
22
+ }
23
+ }
24
+ return Intermediate;
25
+ };
26
+ exports.ObjectShape = ObjectShape;
27
+ //# sourceMappingURL=objectShape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectShape.js","sourceRoot":"","sources":["../../../src/new/mixins/objectShape.ts"],"names":[],"mappings":";;;AAOA,gEAA6D;AAW7D,MAAM,qBAAqB;CAAG;AAEvB,MAAM,WAAW,GAAG,CAI1B,UAAa,EACb,OAAU,qBAA0B,EACnC,EAAE;IACH,MAAM,QAAQ,GAAG,IAAA,yCAAmB,EAAC,UAAU,CAAC,CAAC;IAEjD,MAAM,YAAa,SAAQ,IAAI;QAC9B,IAAI,GAAG,IAAI,CAAC;QACZ,MAAM,CAAC,OAAO,GAAG,IAAa,CAAC;QAE/B,YAAY,IAAiD;YAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAChD,KAAK,CAAC,SAAS,CAAC,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,WAAW,CAEjB,UAAgE;YAEhE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAiB,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,SAAS;YACR,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAQ,CAAC;QACxC,CAAC;;IAGF,OAAO,YAWQ,CAAC;AACjB,CAAC,CAAC;AA3CW,QAAA,WAAW,eA2CtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=objectShape.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectShape.spec.d.ts","sourceRoot":"","sources":["../../../src/new/mixins/objectShape.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const objectShape_1 = require("./objectShape");
4
+ const optional_1 = require("../definitions/optional");
5
+ const testUtils_1 = require("../testUtils");
6
+ describe("Shape", () => {
7
+ it("uses keyword-less notation", () => {
8
+ class ShapeChild extends (0, objectShape_1.ObjectShape)({
9
+ value: Number,
10
+ }) {
11
+ }
12
+ class SerializableChild {
13
+ value;
14
+ constructor(value) {
15
+ this.value = value;
16
+ }
17
+ serialize() {
18
+ return { value: this.value };
19
+ }
20
+ static deserialize(serialized) {
21
+ return new SerializableChild(serialized.value);
22
+ }
23
+ }
24
+ class Test extends (0, objectShape_1.ObjectShape)({
25
+ string: String,
26
+ number: Number,
27
+ boolean: Boolean,
28
+ date: Date,
29
+ optional: (0, optional_1.Optional)(Number),
30
+ multiple: [Number],
31
+ stringEnum: ["a", "b", "c"],
32
+ child: ShapeChild,
33
+ serializableClass: SerializableChild,
34
+ }) {
35
+ }
36
+ const a = new Test({
37
+ string: "my string",
38
+ number: 2,
39
+ boolean: true,
40
+ date: new Date("1998-10-28T00:00:00.000Z"),
41
+ optional: undefined,
42
+ multiple: [1, 2, 3, 4, 5],
43
+ stringEnum: "b",
44
+ child: new ShapeChild({ value: 4 }),
45
+ serializableClass: new SerializableChild(5),
46
+ });
47
+ expect(a.string).toEqual("my string");
48
+ expect(a.number).toEqual(2);
49
+ expect(a.boolean).toEqual(true);
50
+ expect(a.date).toEqual(new Date("1998-10-28T00:00:00.000Z"));
51
+ expect(a.optional).toEqual(undefined);
52
+ expect(a.multiple).toEqual([1, 2, 3, 4, 5]);
53
+ expect(a.stringEnum.value).toEqual("b");
54
+ expect(a.child).toEqual(new ShapeChild({ value: 4 }));
55
+ expect(a.serializableClass).toEqual(new SerializableChild(5));
56
+ (0, testUtils_1.check)(Test, a);
57
+ });
58
+ it("allows base class extension", () => {
59
+ class Parent {
60
+ count = 0;
61
+ increment() {
62
+ this.count++;
63
+ }
64
+ isParent = true;
65
+ static isParent = true;
66
+ }
67
+ class Child extends (0, objectShape_1.ObjectShape)({ value: Number, count: Number }, Parent) {
68
+ isChild = true;
69
+ dothing() {
70
+ this.isParent;
71
+ // @ts-expect-error
72
+ this.notExisting;
73
+ this.increment();
74
+ return this.count;
75
+ }
76
+ }
77
+ const child = new Child({ value: 5, count: 0 });
78
+ expect(child.value).toBe(5);
79
+ expect(child.isChild).toBe(true);
80
+ expect(child.isParent).toBe(true);
81
+ expect(child.count).toBe(0);
82
+ child.increment();
83
+ expect(child.count).toBe(1);
84
+ (0, testUtils_1.check)(Child, child);
85
+ });
86
+ it("allow custom base class", () => {
87
+ const Event = (payloadDefinition) => {
88
+ // biome-ignore lint/complexity/noStaticOnlyClass: <explanation>
89
+ return (0, objectShape_1.ObjectShape)({ id: String, payload: payloadDefinition }, class I {
90
+ static new(payload) {
91
+ return new this({ id: "123", payload });
92
+ }
93
+ });
94
+ };
95
+ class Deposited extends Event({ accountId: String, amount: Number }) {
96
+ }
97
+ Deposited.new({ accountId: "", amount: 4 }).serialize();
98
+ });
99
+ });
100
+ //# sourceMappingURL=objectShape.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectShape.spec.js","sourceRoot":"","sources":["../../../src/new/mixins/objectShape.spec.ts"],"names":[],"mappings":"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"}