@ddd-ts/shape 0.0.0-test-concurrency.5 → 0.0.0-ts-6-compat.2

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/dist/_.d.ts +7 -7
  3. package/dist/_.d.ts.map +1 -1
  4. package/dist/_.js +34 -51
  5. package/dist/_.mjs +36 -0
  6. package/dist/addons/microsecond-timestamp.d.ts +24 -0
  7. package/dist/addons/microsecond-timestamp.d.ts.map +1 -0
  8. package/dist/addons/microsecond-timestamp.js +62 -0
  9. package/dist/addons/microsecond-timestamp.mjs +61 -0
  10. package/dist/choice.d.ts +13 -26
  11. package/dist/choice.d.ts.map +1 -1
  12. package/dist/choice.js +43 -47
  13. package/dist/choice.mjs +44 -0
  14. package/dist/class.d.ts +8 -7
  15. package/dist/class.d.ts.map +1 -1
  16. package/dist/class.js +29 -30
  17. package/dist/class.mjs +30 -0
  18. package/dist/deserialization-error.d.ts +32 -0
  19. package/dist/deserialization-error.d.ts.map +1 -0
  20. package/dist/deserialization-error.js +45 -0
  21. package/dist/deserialization-error.mjs +44 -0
  22. package/dist/dict.d.ts +25 -13
  23. package/dist/dict.d.ts.map +1 -1
  24. package/dist/dict.js +46 -44
  25. package/dist/dict.mjs +47 -0
  26. package/dist/discriminated-union.d.ts +16 -17
  27. package/dist/discriminated-union.d.ts.map +1 -1
  28. package/dist/discriminated-union.js +61 -92
  29. package/dist/discriminated-union.mjs +66 -0
  30. package/dist/either.d.ts +56 -12
  31. package/dist/either.d.ts.map +1 -1
  32. package/dist/either.js +50 -61
  33. package/dist/either.mjs +51 -0
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +34 -29
  37. package/dist/index.mjs +16 -0
  38. package/dist/literal.d.ts +5 -7
  39. package/dist/literal.d.ts.map +1 -1
  40. package/dist/literal.js +26 -26
  41. package/dist/literal.mjs +27 -0
  42. package/dist/mapping.d.ts +16 -12
  43. package/dist/mapping.d.ts.map +1 -1
  44. package/dist/mapping.js +37 -49
  45. package/dist/mapping.mjs +38 -0
  46. package/dist/multiple.d.ts +10 -100
  47. package/dist/multiple.d.ts.map +1 -1
  48. package/dist/multiple.js +126 -105
  49. package/dist/multiple.mjs +127 -0
  50. package/dist/nothing.d.ts +2 -2
  51. package/dist/nothing.d.ts.map +1 -1
  52. package/dist/nothing.js +18 -18
  53. package/dist/nothing.mjs +19 -0
  54. package/dist/optional.d.ts +12 -14
  55. package/dist/optional.d.ts.map +1 -1
  56. package/dist/optional.js +33 -40
  57. package/dist/optional.mjs +34 -0
  58. package/dist/primitive.d.ts +5 -7
  59. package/dist/primitive.d.ts.map +1 -1
  60. package/dist/primitive.js +29 -29
  61. package/dist/primitive.mjs +30 -0
  62. package/package.json +24 -9
  63. package/dist/_.js.map +0 -1
  64. package/dist/choice.js.map +0 -1
  65. package/dist/choice.spec.d.ts +0 -2
  66. package/dist/choice.spec.d.ts.map +0 -1
  67. package/dist/choice.spec.js +0 -147
  68. package/dist/choice.spec.js.map +0 -1
  69. package/dist/class.js.map +0 -1
  70. package/dist/class.spec.d.ts +0 -2
  71. package/dist/class.spec.d.ts.map +0 -1
  72. package/dist/class.spec.js +0 -39
  73. package/dist/class.spec.js.map +0 -1
  74. package/dist/dict.js.map +0 -1
  75. package/dist/dict.spec.d.ts +0 -2
  76. package/dist/dict.spec.d.ts.map +0 -1
  77. package/dist/dict.spec.js +0 -180
  78. package/dist/dict.spec.js.map +0 -1
  79. package/dist/discriminated-union.js.map +0 -1
  80. package/dist/discriminated-union.spec.d.ts +0 -2
  81. package/dist/discriminated-union.spec.d.ts.map +0 -1
  82. package/dist/discriminated-union.spec.js +0 -262
  83. package/dist/discriminated-union.spec.js.map +0 -1
  84. package/dist/either.js.map +0 -1
  85. package/dist/either.spec.d.ts +0 -2
  86. package/dist/either.spec.d.ts.map +0 -1
  87. package/dist/either.spec.js +0 -211
  88. package/dist/either.spec.js.map +0 -1
  89. package/dist/index.js.map +0 -1
  90. package/dist/literal.js.map +0 -1
  91. package/dist/literal.spec.d.ts +0 -2
  92. package/dist/literal.spec.d.ts.map +0 -1
  93. package/dist/literal.spec.js +0 -162
  94. package/dist/literal.spec.js.map +0 -1
  95. package/dist/mapping.js.map +0 -1
  96. package/dist/mapping.spec.d.ts +0 -2
  97. package/dist/mapping.spec.d.ts.map +0 -1
  98. package/dist/mapping.spec.js +0 -207
  99. package/dist/mapping.spec.js.map +0 -1
  100. package/dist/multiple.js.map +0 -1
  101. package/dist/multiple.spec.d.ts +0 -2
  102. package/dist/multiple.spec.d.ts.map +0 -1
  103. package/dist/multiple.spec.js +0 -207
  104. package/dist/multiple.spec.js.map +0 -1
  105. package/dist/nothing.js.map +0 -1
  106. package/dist/nothing.spec.d.ts +0 -2
  107. package/dist/nothing.spec.d.ts.map +0 -1
  108. package/dist/nothing.spec.js +0 -172
  109. package/dist/nothing.spec.js.map +0 -1
  110. package/dist/optional.js.map +0 -1
  111. package/dist/optional.spec.d.ts +0 -2
  112. package/dist/optional.spec.d.ts.map +0 -1
  113. package/dist/optional.spec.js +0 -172
  114. package/dist/optional.spec.js.map +0 -1
  115. package/dist/primitive.js.map +0 -1
  116. package/dist/primitive.spec.d.ts +0 -2
  117. package/dist/primitive.spec.d.ts.map +0 -1
  118. package/dist/primitive.spec.js +0 -162
  119. package/dist/primitive.spec.js.map +0 -1
  120. package/dist/test.d.ts +0 -36
  121. package/dist/test.d.ts.map +0 -1
  122. package/dist/test.js +0 -45
  123. package/dist/test.js.map +0 -1
package/dist/literal.js CHANGED
@@ -1,27 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Literal = void 0;
4
- const _1 = require("./_");
5
- const Literal = (of, base = _1.Empty) => {
6
- class $Literal extends base {
7
- value = of;
8
- static value = of;
9
- static $shape = "literal";
10
- serialize() {
11
- return of;
12
- }
13
- static deserialize(value) {
14
- return new this();
15
- }
16
- static $serialize(value) {
17
- return of;
18
- }
19
- static $deserialize(value) {
20
- return of;
21
- }
22
- static $inline;
23
- }
24
- return $Literal;
1
+ const require__ = require('./_.js');
2
+
3
+ //#region src/literal.ts
4
+ const Literal = (of, base = require__.Empty) => {
5
+ class $Literal extends base {
6
+ value = of;
7
+ static value = of;
8
+ static $shape = "literal";
9
+ serialize() {
10
+ return of;
11
+ }
12
+ static deserialize(value) {
13
+ return new this();
14
+ }
15
+ static $serialize(value) {
16
+ return of;
17
+ }
18
+ static $deserialize(value) {
19
+ return of;
20
+ }
21
+ static $inline;
22
+ }
23
+ return $Literal;
25
24
  };
26
- exports.Literal = Literal;
27
- //# sourceMappingURL=literal.js.map
25
+
26
+ //#endregion
27
+ exports.Literal = Literal;
@@ -0,0 +1,27 @@
1
+ import { Empty } from "./_.mjs";
2
+
3
+ //#region src/literal.ts
4
+ const Literal = (of, base = Empty) => {
5
+ class $Literal extends base {
6
+ value = of;
7
+ static value = of;
8
+ static $shape = "literal";
9
+ serialize() {
10
+ return of;
11
+ }
12
+ static deserialize(value) {
13
+ return new this();
14
+ }
15
+ static $serialize(value) {
16
+ return of;
17
+ }
18
+ static $deserialize(value) {
19
+ return of;
20
+ }
21
+ static $inline;
22
+ }
23
+ return $Literal;
24
+ };
25
+
26
+ //#endregion
27
+ export { Literal };
package/dist/mapping.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Definition, Expand, Shorthand, DefinitionOf, AbstractConstructor, Empty } from "./_";
1
+ import { type Definition, type Expand, type Shorthand, type DefinitionOf, type AbstractConstructor, Empty, type Constructor } from "./_";
2
2
  type MappingLiteralKey = [
3
3
  [
4
4
  StringConstructor,
@@ -22,18 +22,22 @@ type MappingOf<C extends MappingConfiguration> = C extends [
22
22
  key: StringConstructor;
23
23
  value: DefinitionOf<V>;
24
24
  } : never;
25
- export declare const Mapping: <C extends MappingConfiguration, B extends AbstractConstructor<{}> = typeof Empty>(config: C, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>) => {
26
- value: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>;
27
- serialize(): Expand<Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>>;
25
+ type Internal<C extends MappingConfiguration, B extends AbstractConstructor<{}>> = {
26
+ Definition: MappingOf<C>["value"];
27
+ Serialized: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>;
28
+ Deserializing: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, Parameters<MappingOf<C>["value"]["$deserialize"]>[0]>;
29
+ Inline: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>;
30
+ };
31
+ export declare const Mapping: <C extends MappingConfiguration, B extends AbstractConstructor<{}> = typeof Empty>(config: C, base?: B) => Mapping<C, B>;
32
+ export type Mapping<C extends MappingConfiguration, B extends AbstractConstructor<{}> = typeof Empty> = Omit<B, "prototype"> & (abstract new (value: Internal<C, B>["Inline"]) => InstanceType<B> & {
33
+ value: Internal<C, B>["Inline"];
34
+ serialize(): Expand<Internal<C, B>["Serialized"]>;
28
35
  }) & {
29
36
  $shape: "mapping";
30
- deserialize<T extends any>(this: T, value: Expand<Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>>): InstanceType<T>;
31
- $deserialize<T_1 extends any>(this: T_1, value: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>): Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>;
32
- $serialize<T_2 extends any>(this: T_2, value: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>): Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>;
33
- $inline: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>;
34
- }, "prototype"> & (abstract new (value: Expand<Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>>) => InstanceType<B> & {
35
- value: Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, MappingOf<C>["value"]["$inline"]>;
36
- serialize(): Expand<Record<MappingKeyRuntimeFromConstructor<MappingOf<C>["key"]>, ReturnType<MappingOf<C>["value"]["$serialize"]>>>;
37
- });
37
+ deserialize<T extends Constructor>(this: T, value: Expand<Internal<C, B>["Serialized"]>): InstanceType<T>;
38
+ $deserialize<T>(this: T, value: Internal<C, B>["Deserializing"]): Internal<C, B>["Inline"];
39
+ $serialize<T>(this: T, value: Internal<C, B>["Inline"]): Internal<C, B>["Serialized"];
40
+ $inline: Internal<C, B>["Inline"];
41
+ };
38
42
  export {};
39
43
  //# sourceMappingURL=mapping.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,YAAY,EAEZ,mBAAmB,EACnB,KAAK,EAEN,MAAM,KAAK,CAAC;AAGb,KAAK,iBAAiB,GAAG;IACvB;QAAC,iBAAiB;QAAE,MAAM;KAAC;IAC3B;QAAC,iBAAiB;QAAE,MAAM;KAAC;CAC5B,CAAC;AACF,KAAK,qBAAqB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,KAAK,gCAAgC,CAAC,CAAC,SAAS,qBAAqB,IACnE,CAAC,SAAS,iBAAiB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhD,MAAM,MAAM,oBAAoB,GAC5B,CAAC,qBAAqB,EAAE,UAAU,GAAG,SAAS,CAAC,GAC/C,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;AAE7B,KAAK,SAAS,CAAC,CAAC,SAAS,oBAAoB,IAAI,CAAC,SAAS;IACzD,MAAM,CAAC,SAAS,qBAAqB;IACrC,MAAM,CAAC,SAAS,UAAU,GAAG,SAAS;CACvC,GACG;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,GAClC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,UAAU,GAAG,SAAS,CAAC,GAChD;IAAE,GAAG,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;CAAE,GAClD,KAAK,CAAC;AAEZ,eAAO,MAAM,OAAO,GAIV,CAAC,+BAmES,CAAC,yDAnEX,CAAC,SAmES,CAAC,AAlEZ;;;;;gBA8BW,CAAC,oBAAD,CAAC,AAFR,kIAEN,YAAY,CAAC,CAAC,CAAC;iBAKV,GAAC,oBAAD,GAAC;eAaD,GAAC,oBAAD,GAAC;;;;;EAyBZ,CAAC"}
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
package/dist/mapping.js CHANGED
@@ -1,50 +1,38 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Mapping = void 0;
4
- const _1 = require("./_");
5
- const primitive_1 = require("./primitive");
6
- const Mapping = (config, base = _1.Empty) => {
7
- let [_key, _value] = config;
8
- if (config.length === 1) {
9
- _key = (0, primitive_1.Primitive)(String);
10
- _value = config[0];
11
- }
12
- const { $key, $value } = { $key: _key, $value: _value };
13
- class $Mapping extends base {
14
- value;
15
- constructor(value) {
16
- super();
17
- this.value = value;
18
- }
19
- static $shape = "mapping";
20
- serialize() {
21
- return $Mapping.$serialize(this.value);
22
- }
23
- static deserialize(value) {
24
- return new this($Mapping.$deserialize(value));
25
- }
26
- static $deserialize(value) {
27
- const split = Object.entries(value);
28
- const transform = split.map(([key, child]) => {
29
- const longhand = (0, _1.Shape)(_value);
30
- const deserialized = longhand.$deserialize(child);
31
- return [key, deserialized];
32
- });
33
- return Object.fromEntries(transform);
34
- }
35
- static $serialize(value) {
36
- const split = Object.entries(value);
37
- const transform = split.map(([key, child]) => {
38
- const longhand = (0, _1.Shape)($value);
39
- const serialized = longhand.$serialize(child);
40
- return [key, serialized];
41
- });
42
- const merge = Object.fromEntries(transform);
43
- return merge;
44
- }
45
- static $inline;
46
- }
47
- return $Mapping;
1
+ const require__ = require('./_.js');
2
+
3
+ //#region src/mapping.ts
4
+ const Mapping = (config, base = require__.Empty) => {
5
+ let [, _value] = config;
6
+ if (config.length === 1) _value = config[0];
7
+ const $value = _value;
8
+ class $Mapping extends base {
9
+ constructor(value) {
10
+ super();
11
+ this.value = value;
12
+ }
13
+ static $shape = "mapping";
14
+ serialize() {
15
+ return $Mapping.$serialize(this.value);
16
+ }
17
+ static deserialize(value) {
18
+ return new this($Mapping.$deserialize(value));
19
+ }
20
+ static $deserialize(value) {
21
+ const transform = Object.entries(value).map(([key, child]) => {
22
+ return [key, require__.Shape(_value).$deserialize(child)];
23
+ });
24
+ return Object.fromEntries(transform);
25
+ }
26
+ static $serialize(value) {
27
+ const transform = Object.entries(value).map(([key, child]) => {
28
+ return [key, require__.Shape($value).$serialize(child)];
29
+ });
30
+ return Object.fromEntries(transform);
31
+ }
32
+ static $inline;
33
+ }
34
+ return $Mapping;
48
35
  };
49
- exports.Mapping = Mapping;
50
- //# sourceMappingURL=mapping.js.map
36
+
37
+ //#endregion
38
+ exports.Mapping = Mapping;
@@ -0,0 +1,38 @@
1
+ import { Empty, Shape } from "./_.mjs";
2
+
3
+ //#region src/mapping.ts
4
+ const Mapping = (config, base = Empty) => {
5
+ let [, _value] = config;
6
+ if (config.length === 1) _value = config[0];
7
+ const $value = _value;
8
+ class $Mapping extends base {
9
+ constructor(value) {
10
+ super();
11
+ this.value = value;
12
+ }
13
+ static $shape = "mapping";
14
+ serialize() {
15
+ return $Mapping.$serialize(this.value);
16
+ }
17
+ static deserialize(value) {
18
+ return new this($Mapping.$deserialize(value));
19
+ }
20
+ static $deserialize(value) {
21
+ const transform = Object.entries(value).map(([key, child]) => {
22
+ return [key, Shape(_value).$deserialize(child)];
23
+ });
24
+ return Object.fromEntries(transform);
25
+ }
26
+ static $serialize(value) {
27
+ const transform = Object.entries(value).map(([key, child]) => {
28
+ return [key, Shape($value).$serialize(child)];
29
+ });
30
+ return Object.fromEntries(transform);
31
+ }
32
+ static $inline;
33
+ }
34
+ return $Mapping;
35
+ };
36
+
37
+ //#endregion
38
+ export { Mapping };
@@ -1,110 +1,20 @@
1
- import { Definition, Expand, Shorthand, DefinitionOf, AbstractConstructor, Empty, Constructor } from "./_";
1
+ import { type Definition, type Expand, type Shorthand, type DefinitionOf, type AbstractConstructor, Empty, type Constructor } from "./_";
2
2
  export type MultipleConfiguration = Definition | Shorthand;
3
3
  export type MultipleShorthand = [any] | readonly [any];
4
4
  type Internal<S extends MultipleConfiguration> = {
5
5
  Serialized: ReturnType<DefinitionOf<S>["$serialize"]>[];
6
6
  Inline: DefinitionOf<S>["$inline"][];
7
7
  };
8
- export declare const Multiple: <const S extends MultipleConfiguration, B extends AbstractConstructor<{}> = typeof Empty, Cache extends Internal<S> = Internal<S>>(of: S, base?: B) => Omit<B, "prototype"> & Omit<(abstract new (value: Cache["Inline"]) => {
9
- value: Cache["Inline"];
10
- serialize(): Expand<Cache["Serialized"]>;
11
- readonly map: <U>(callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U, thisArg?: any) => U[];
12
- readonly reduce: {
13
- (callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
14
- (callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"], initialValue: DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
15
- <U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_1, initialValue: U_1): U_1;
16
- };
17
- readonly filter: {
18
- <S_1 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_1, thisArg?: any): S_1[];
19
- (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"][];
20
- };
21
- readonly forEach: (callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => void, thisArg?: any) => void;
22
- readonly some: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => boolean;
23
- readonly every: {
24
- <S_2 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_2, thisArg?: any): this is S_2[];
25
- (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): boolean;
26
- };
27
- readonly find: {
28
- <S_3 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_3, thisArg?: any): S_3 | undefined;
29
- (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"] | undefined;
30
- };
31
- readonly findIndex: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => number;
32
- readonly indexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
33
- readonly lastIndexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
34
- readonly includes: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => boolean;
35
- readonly keys: () => IterableIterator<number>;
36
- readonly values: () => IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
37
- readonly entries: () => IterableIterator<[number, DefinitionOf<S, typeof Empty>["$inline"]]>;
38
- readonly at: (index: number) => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
39
- readonly concat: {
40
- (...items: ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>[]): DefinitionOf<S, typeof Empty>["$inline"][];
41
- (...items: (DefinitionOf<S, typeof Empty>["$inline"] | ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>)[]): DefinitionOf<S, typeof Empty>["$inline"][];
42
- };
43
- readonly flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
44
- readonly splice: {
45
- (start: number, deleteCount?: number): DefinitionOf<S, typeof Empty>["$inline"][];
46
- (start: number, deleteCount: number, ...items: DefinitionOf<S, typeof Empty>["$inline"][]): DefinitionOf<S, typeof Empty>["$inline"][];
47
- };
48
- readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_2 | readonly U_2[], thisArg?: This | undefined) => U_2[];
49
- readonly push: (...items: DefinitionOf<S, typeof Empty>["$inline"][]) => number;
50
- readonly pop: () => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
51
- readonly sort: (compareFn?: ((a: DefinitionOf<S, typeof Empty>["$inline"], b: DefinitionOf<S, typeof Empty>["$inline"]) => number) | undefined) => Cache["Inline"];
52
- readonly slice: (start?: number, end?: number) => DefinitionOf<S, typeof Empty>["$inline"][];
53
- readonly length: number;
54
- [Symbol.iterator](): IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
8
+ export declare const Multiple: <const S extends MultipleConfiguration, B extends AbstractConstructor<{}> = typeof Empty>(of: S, base?: B) => IMultiple<S, B>;
9
+ export type IMultiple<S extends MultipleConfiguration, B extends AbstractConstructor<{}> = typeof Empty> = Omit<B, "prototype"> & (abstract new (value: Internal<S>["Inline"]) => InstanceType<B> & Pick<Internal<S>["Inline"], "at" | "length" | "concat" | "copyWithin" | "entries" | "every" | "fill" | "filter" | "find" | "findIndex" | "flat" | "flatMap" | "forEach" | "includes" | "indexOf" | "join" | "keys" | "lastIndexOf" | "map" | "pop" | "push" | "reduce" | "reduceRight" | "reverse" | "shift" | "slice" | "some" | "sort" | "splice" | "unshift" | "values" | typeof Symbol.iterator> & {
10
+ value: Internal<S>["Inline"];
11
+ serialize(): Expand<Internal<S>["Serialized"]>;
55
12
  }) & {
56
13
  $shape: "multiple";
57
- deserialize<T extends Constructor<any, any[]>>(this: T, value: Expand<Cache["Serialized"]>): InstanceType<T>;
58
- $deserialize<T_1 extends Constructor<any, any[]>>(this: T_1, value: Cache["Serialized"]): InstanceType<T_1>;
59
- $serialize(value: Cache["Inline"]): Cache["Serialized"];
60
- $inline: Cache["Inline"];
61
- }, ""> & (abstract new (value: Expand<Cache["Inline"]>) => InstanceType<B> & {
62
- value: Cache["Inline"];
63
- serialize(): Expand<Cache["Serialized"]>;
64
- readonly map: <U>(callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U, thisArg?: any) => U[];
65
- readonly reduce: {
66
- (callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
67
- (callbackfn: (previousValue: DefinitionOf<S, typeof Empty>["$inline"], currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => DefinitionOf<S, typeof Empty>["$inline"], initialValue: DefinitionOf<S, typeof Empty>["$inline"]): DefinitionOf<S, typeof Empty>["$inline"];
68
- <U_1>(callbackfn: (previousValue: U_1, currentValue: DefinitionOf<S, typeof Empty>["$inline"], currentIndex: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_1, initialValue: U_1): U_1;
69
- };
70
- readonly filter: {
71
- <S_1 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_1, thisArg?: any): S_1[];
72
- (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"][];
73
- };
74
- readonly forEach: (callbackfn: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => void, thisArg?: any) => void;
75
- readonly some: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => boolean;
76
- readonly every: {
77
- <S_2 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_2, thisArg?: any): this is S_2[];
78
- (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): boolean;
79
- };
80
- readonly find: {
81
- <S_3 extends DefinitionOf<S, typeof Empty>["$inline"]>(predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => value is S_3, thisArg?: any): S_3 | undefined;
82
- (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any): DefinitionOf<S, typeof Empty>["$inline"] | undefined;
83
- };
84
- readonly findIndex: (predicate: (value: DefinitionOf<S, typeof Empty>["$inline"], index: number, obj: DefinitionOf<S, typeof Empty>["$inline"][]) => unknown, thisArg?: any) => number;
85
- readonly indexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
86
- readonly lastIndexOf: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => number;
87
- readonly includes: (searchElement: DefinitionOf<S, typeof Empty>["$inline"], fromIndex?: number) => boolean;
88
- readonly keys: () => IterableIterator<number>;
89
- readonly values: () => IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
90
- readonly entries: () => IterableIterator<[number, DefinitionOf<S, typeof Empty>["$inline"]]>;
91
- readonly at: (index: number) => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
92
- readonly concat: {
93
- (...items: ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>[]): DefinitionOf<S, typeof Empty>["$inline"][];
94
- (...items: (DefinitionOf<S, typeof Empty>["$inline"] | ConcatArray<DefinitionOf<S, typeof Empty>["$inline"]>)[]): DefinitionOf<S, typeof Empty>["$inline"][];
95
- };
96
- readonly flat: <A, D extends number = 1>(this: A, depth?: D | undefined) => FlatArray<A, D>[];
97
- readonly splice: {
98
- (start: number, deleteCount?: number): DefinitionOf<S, typeof Empty>["$inline"][];
99
- (start: number, deleteCount: number, ...items: DefinitionOf<S, typeof Empty>["$inline"][]): DefinitionOf<S, typeof Empty>["$inline"][];
100
- };
101
- readonly flatMap: <U_2, This = undefined>(callback: (this: This, value: DefinitionOf<S, typeof Empty>["$inline"], index: number, array: DefinitionOf<S, typeof Empty>["$inline"][]) => U_2 | readonly U_2[], thisArg?: This | undefined) => U_2[];
102
- readonly push: (...items: DefinitionOf<S, typeof Empty>["$inline"][]) => number;
103
- readonly pop: () => DefinitionOf<S, typeof Empty>["$inline"] | undefined;
104
- readonly sort: (compareFn?: ((a: DefinitionOf<S, typeof Empty>["$inline"], b: DefinitionOf<S, typeof Empty>["$inline"]) => number) | undefined) => Cache["Inline"];
105
- readonly slice: (start?: number, end?: number) => DefinitionOf<S, typeof Empty>["$inline"][];
106
- readonly length: number;
107
- [Symbol.iterator](): IterableIterator<DefinitionOf<S, typeof Empty>["$inline"]>;
108
- });
14
+ deserialize<T extends Constructor>(this: T, value: Expand<Internal<S>["Serialized"]>): InstanceType<T>;
15
+ $deserialize<T extends Constructor>(this: T, value: Internal<S>["Serialized"]): InstanceType<T>;
16
+ $serialize(value: Internal<S>["Inline"]): Internal<S>["Serialized"];
17
+ $inline: Internal<S>["Inline"];
18
+ };
109
19
  export {};
110
20
  //# sourceMappingURL=multiple.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,YAAY,EAEZ,mBAAmB,EACnB,KAAK,EACL,WAAW,EACZ,MAAM,KAAK,CAAC;AAEb,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAEvD,KAAK,QAAQ,CAAC,CAAC,SAAS,qBAAqB,IAAI;IAC/C,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,QAAQ,SAKf,CAAC,gCA4Ia,CAAC,iDADH,KAAK,wCA3IjB,CAAC,SA4Ia,CAAC,AA3IZ,uDA0IS,KAAK,AArIY,CAAC,QAAQ,CAAC;WAqI3B,KAAK,AArIY,CAAC,QAAQ,CAAC;iBAK5B,MAAM,CAgIL,KAAK,AAhIM,CAAC,YAAY,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAOxB,CAAC,wCAAD,CAAC,AAFR,SACA,MAAM,CA0HD,KAAK,AA1HE,CAAC,YAAY,CAAC,CAAC,GACjC,YAAY,CAAC,CAAC,CAAC;iBASF,GAAC,wCAAD,GAAC,AAFR,SAkHK,KAAK,AAjHL,CAAC,YAAY,CAAC,GACzB,YAAY,CAAC,GAAC,CAAC;sBAgHJ,KAAK,AA5GW,CAAC,QAAQ,CAAC,GA4G1B,KAAK,AA5G6B,CAAC,YAAY,CAAC;aA4GhD,KAAK,AApGE,CAAC,QAAQ,CAAC;+BAoGxB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;WAAhB,KAAK,AArIY,CAAC,QAAQ,CAAC;iBAK5B,MAAM,CAgIL,KAAK,AAhIM,CAAC,YAAY,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwI3C,CAAC"}
1
+ {"version":3,"file":"multiple.d.ts","sourceRoot":"","sources":["../src/multiple.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,YAAY,EAEjB,KAAK,mBAAmB,EACxB,KAAK,EACL,KAAK,WAAW,EACjB,MAAM,KAAK,CAAC;AAGb,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;AAEvD,KAAK,QAAQ,CAAC,CAAC,SAAS,qBAAqB,IAAI;IAC/C,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;CACtC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,KAAK,CAAC,CAAC,SAAS,qBAAqB,EACrC,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,MAE5C,CAAC,SACC,CAAC,KACN,SAAS,CAAC,CAAC,EAAE,CAAC,CA0JhB,CAAC;AAEF,MAAM,MAAM,SAAS,CACnB,CAAC,SAAS,qBAAqB,EAC/B,CAAC,SAAS,mBAAmB,CAAC,EAAE,CAAC,GAAG,OAAO,KAAK,IAC9C,IAAI,CAAC,CAAC,EAAE,WAAW,CAAC,GACtB,CAAC,QAAQ,MACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KACzB,YAAY,CAAC,CAAC,CAAC,GAClB,IAAI,CACF,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EACnB,IAAI,GACJ,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,OAAO,GACP,MAAM,GACN,QAAQ,GACR,MAAM,GACN,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,UAAU,GACV,SAAS,GACT,MAAM,GACN,MAAM,GACN,aAAa,GACb,KAAK,GACL,KAAK,GACL,MAAM,GACN,QAAQ,GACR,aAAa,GACb,SAAS,GACT,OAAO,GACP,OAAO,GACP,MAAM,GACN,MAAM,GACN,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,MAAM,CAAC,QAAQ,CACzB,GAAG;IACF,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;CAChD,CAAC,GAAG;IACL,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/B,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GACvC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,YAAY,CAAC,CAAC,SAAS,WAAW,EAChC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAC/B,YAAY,CAAC,CAAC,CAAC,CAAC;IACnB,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACpE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;CAChC,CAAC"}