@rsdk/common 5.7.0-next.6 → 6.0.0-next.1

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 (113) hide show
  1. package/dist/functions/obj-normalization.d.ts +37 -7
  2. package/dist/functions/obj-normalization.js +50 -8
  3. package/dist/functions/obj-normalization.js.map +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/parsers/array/array.parser.d.ts +11 -0
  8. package/dist/parsers/array/array.parser.js +34 -0
  9. package/dist/parsers/array/array.parser.js.map +1 -0
  10. package/dist/parsers/array/index.d.ts +1 -0
  11. package/dist/parsers/array/index.js +18 -0
  12. package/dist/parsers/array/index.js.map +1 -0
  13. package/dist/parsers/boolean/bool.parser.d.ts +6 -0
  14. package/dist/parsers/boolean/bool.parser.js +21 -0
  15. package/dist/parsers/boolean/bool.parser.js.map +1 -0
  16. package/dist/parsers/boolean/index.d.ts +1 -0
  17. package/dist/parsers/boolean/index.js +18 -0
  18. package/dist/parsers/boolean/index.js.map +1 -0
  19. package/dist/parsers/enum/enum.parser.d.ts +9 -0
  20. package/dist/parsers/enum/enum.parser.js +26 -0
  21. package/dist/parsers/enum/enum.parser.js.map +1 -0
  22. package/dist/parsers/enum/index.d.ts +1 -0
  23. package/dist/parsers/enum/index.js +18 -0
  24. package/dist/parsers/enum/index.js.map +1 -0
  25. package/dist/parsers/index.d.ts +11 -0
  26. package/dist/parsers/index.js +28 -0
  27. package/dist/parsers/index.js.map +1 -0
  28. package/dist/parsers/int/index.d.ts +1 -0
  29. package/dist/parsers/int/index.js +18 -0
  30. package/dist/parsers/int/index.js.map +1 -0
  31. package/dist/parsers/int/int.parser.d.ts +6 -0
  32. package/dist/parsers/int/int.parser.js +21 -0
  33. package/dist/parsers/int/int.parser.js.map +1 -0
  34. package/dist/parsers/json/index.d.ts +1 -0
  35. package/dist/parsers/json/index.js +18 -0
  36. package/dist/parsers/json/index.js.map +1 -0
  37. package/dist/parsers/json/json.parser.d.ts +6 -0
  38. package/dist/parsers/json/json.parser.js +16 -0
  39. package/dist/parsers/json/json.parser.js.map +1 -0
  40. package/dist/parsers/number/index.d.ts +1 -0
  41. package/dist/parsers/number/index.js +18 -0
  42. package/dist/parsers/number/index.js.map +1 -0
  43. package/dist/parsers/number/number.parser.d.ts +6 -0
  44. package/dist/parsers/number/number.parser.js +24 -0
  45. package/dist/parsers/number/number.parser.js.map +1 -0
  46. package/dist/parsers/parser.interface.d.ts +20 -0
  47. package/dist/parsers/parser.interface.js +3 -0
  48. package/dist/parsers/parser.interface.js.map +1 -0
  49. package/dist/parsers/size/index.d.ts +1 -0
  50. package/dist/parsers/size/index.js +18 -0
  51. package/dist/parsers/size/index.js.map +1 -0
  52. package/dist/parsers/size/size.parser.d.ts +7 -0
  53. package/dist/parsers/size/size.parser.js +23 -0
  54. package/dist/parsers/size/size.parser.js.map +1 -0
  55. package/dist/parsers/string/index.d.ts +1 -0
  56. package/dist/parsers/string/index.js +18 -0
  57. package/dist/parsers/string/index.js.map +1 -0
  58. package/dist/parsers/string/string.parser.d.ts +8 -0
  59. package/dist/parsers/string/string.parser.js +25 -0
  60. package/dist/parsers/string/string.parser.js.map +1 -0
  61. package/dist/parsers/timespan/index.d.ts +1 -0
  62. package/dist/parsers/timespan/index.js +18 -0
  63. package/dist/parsers/timespan/index.js.map +1 -0
  64. package/dist/parsers/timespan/timespan.parser.d.ts +7 -0
  65. package/dist/parsers/timespan/timespan.parser.js +23 -0
  66. package/dist/parsers/timespan/timespan.parser.js.map +1 -0
  67. package/dist/parsers/url/errors.d.ts +6 -0
  68. package/dist/parsers/url/errors.js +24 -0
  69. package/dist/parsers/url/errors.js.map +1 -0
  70. package/dist/parsers/url/index.d.ts +1 -0
  71. package/dist/parsers/url/index.js +18 -0
  72. package/dist/parsers/url/index.js.map +1 -0
  73. package/dist/parsers/url/url.parser.d.ts +9 -0
  74. package/dist/parsers/url/url.parser.js +38 -0
  75. package/dist/parsers/url/url.parser.js.map +1 -0
  76. package/dist/types/assert.class.d.ts +2 -0
  77. package/dist/types/assert.class.js +12 -0
  78. package/dist/types/assert.class.js.map +1 -1
  79. package/package.json +4 -4
  80. package/src/functions/obj-normalization.spec.ts +102 -0
  81. package/src/functions/obj-normalization.ts +53 -8
  82. package/src/index.ts +1 -0
  83. package/src/parsers/array/array.parser.ts +34 -0
  84. package/src/parsers/array/index.ts +1 -0
  85. package/src/parsers/boolean/bool.parser.ts +20 -0
  86. package/src/parsers/boolean/bool.spec.ts +4 -0
  87. package/src/parsers/boolean/index.ts +1 -0
  88. package/src/parsers/enum/enum.parser.ts +24 -0
  89. package/src/parsers/enum/enum.spec.ts +5 -0
  90. package/src/parsers/enum/index.ts +1 -0
  91. package/src/parsers/index.ts +11 -0
  92. package/src/parsers/int/index.ts +1 -0
  93. package/src/parsers/int/int.parser.ts +20 -0
  94. package/src/parsers/int/int.spec.ts +5 -0
  95. package/src/parsers/json/index.ts +1 -0
  96. package/src/parsers/json/json.parser.ts +15 -0
  97. package/src/parsers/number/index.ts +1 -0
  98. package/src/parsers/number/number.parser.ts +23 -0
  99. package/src/parsers/number/number.spec.ts +5 -0
  100. package/src/parsers/parser.interface.ts +22 -0
  101. package/src/parsers/size/index.ts +1 -0
  102. package/src/parsers/size/size.parser.ts +23 -0
  103. package/src/parsers/size/size.spec.ts +4 -0
  104. package/src/parsers/string/index.ts +1 -0
  105. package/src/parsers/string/string.parser.ts +24 -0
  106. package/src/parsers/string/string.spec.ts +10 -0
  107. package/src/parsers/timespan/index.ts +1 -0
  108. package/src/parsers/timespan/timespan.parser.ts +23 -0
  109. package/src/parsers/timespan/timespan.spec.ts +5 -0
  110. package/src/parsers/url/errors.ts +19 -0
  111. package/src/parsers/url/index.ts +1 -0
  112. package/src/parsers/url/url.parser.ts +43 -0
  113. package/src/types/assert.class.ts +16 -0
@@ -6,17 +6,47 @@ export interface NormalizeOptions {
6
6
  filterKeys?: string[];
7
7
  sortKeys?: SortKeys;
8
8
  maxDepth?: number;
9
+ keepOriginPrototype?: boolean;
9
10
  }
10
11
  /**
11
- * Prepares object to be stringified with JSON.stringify()
12
- * - removes circular references.
13
- * - makes message, stack and cause properties of Errors enumerable
14
- * - (optional) sorts error keys for human readability
15
- * - (optional) filters out provided keys
12
+ * Creates a function that prepares objects for JSON.stringify().
16
13
  *
17
- * NOTE: Function is recursive
14
+ * This is a higher-order function that creates a closure over a cache Set.
15
+ * The cache is used to detect circular references during normalization.
16
+ * Each call to normalizer() creates a new cache, ensuring thread-safety
17
+ * and preventing memory leaks between different normalization operations.
18
18
  *
19
- * @returns unknown
19
+ * Features:
20
+ * - Removes circular references (replaces with '[circular]')
21
+ * - Makes Error properties (message, stack, cause) enumerable
22
+ * - Handles special types:
23
+ * - Buffer -> '[Buffer size]'
24
+ * - ArrayBuffer -> '[ArrayBuffer size]'
25
+ * - Map -> '[Map size]'
26
+ * - Set -> '[Set size]'
27
+ * - Limits object nesting depth (default: 10)
28
+ * - Keeps origin prototype (default: false)
29
+ * - Protects against large objects (>16M keys)
30
+ *
31
+ * @example
32
+ * // Create two independent normalizers
33
+ * const normalizer1 = normalizer();
34
+ * const normalizer2 = normalizer();
35
+ *
36
+ * // Each normalizer has its own circular reference cache
37
+ * const obj1 = { circular: {} };
38
+ * obj1.circular = obj1;
39
+ * normalizer1(obj1); // Safe: uses first cache
40
+ * normalizer2(obj1); // Safe: uses second cache
41
+ *
42
+ * @returns A normalization function with its own circular reference cache that accepts:
43
+ * @param x - Value to normalize
44
+ * @param options - Normalization options:
45
+ * - filterKeys: Array of keys to exclude
46
+ * - sortKeys: Custom key sorting configuration
47
+ * - maxDepth: Maximum nesting depth (default: 10)
48
+ * - keepOriginPrototype: Whether to keep the original prototype (default: false)
49
+ * @param depth - Current recursion depth (internal use)
20
50
  */
21
51
  export declare const normalizer: () => ((x: unknown, options?: NormalizeOptions, depth?: number) => unknown);
22
52
  /**
@@ -4,15 +4,44 @@ exports.sortErrorKeys = exports.normalizer = void 0;
4
4
  const serializable_type_1 = require("./serializable.type");
5
5
  const DEFAULT_MAX_DEPTH = 10;
6
6
  /**
7
- * Prepares object to be stringified with JSON.stringify()
8
- * - removes circular references.
9
- * - makes message, stack and cause properties of Errors enumerable
10
- * - (optional) sorts error keys for human readability
11
- * - (optional) filters out provided keys
7
+ * Creates a function that prepares objects for JSON.stringify().
12
8
  *
13
- * NOTE: Function is recursive
9
+ * This is a higher-order function that creates a closure over a cache Set.
10
+ * The cache is used to detect circular references during normalization.
11
+ * Each call to normalizer() creates a new cache, ensuring thread-safety
12
+ * and preventing memory leaks between different normalization operations.
14
13
  *
15
- * @returns unknown
14
+ * Features:
15
+ * - Removes circular references (replaces with '[circular]')
16
+ * - Makes Error properties (message, stack, cause) enumerable
17
+ * - Handles special types:
18
+ * - Buffer -> '[Buffer size]'
19
+ * - ArrayBuffer -> '[ArrayBuffer size]'
20
+ * - Map -> '[Map size]'
21
+ * - Set -> '[Set size]'
22
+ * - Limits object nesting depth (default: 10)
23
+ * - Keeps origin prototype (default: false)
24
+ * - Protects against large objects (>16M keys)
25
+ *
26
+ * @example
27
+ * // Create two independent normalizers
28
+ * const normalizer1 = normalizer();
29
+ * const normalizer2 = normalizer();
30
+ *
31
+ * // Each normalizer has its own circular reference cache
32
+ * const obj1 = { circular: {} };
33
+ * obj1.circular = obj1;
34
+ * normalizer1(obj1); // Safe: uses first cache
35
+ * normalizer2(obj1); // Safe: uses second cache
36
+ *
37
+ * @returns A normalization function with its own circular reference cache that accepts:
38
+ * @param x - Value to normalize
39
+ * @param options - Normalization options:
40
+ * - filterKeys: Array of keys to exclude
41
+ * - sortKeys: Custom key sorting configuration
42
+ * - maxDepth: Maximum nesting depth (default: 10)
43
+ * - keepOriginPrototype: Whether to keep the original prototype (default: false)
44
+ * @param depth - Current recursion depth (internal use)
16
45
  */
17
46
  const normalizer = () => {
18
47
  const cache = new Set();
@@ -31,6 +60,10 @@ const normalizer = () => {
31
60
  if (Buffer.isBuffer(xObject)) {
32
61
  return `[Buffer ${Buffer.byteLength(xObject)}]`;
33
62
  }
63
+ // Array is not serializable
64
+ if (xObject instanceof ArrayBuffer) {
65
+ return `[ArrayBuffer ${xObject.byteLength}]`;
66
+ }
34
67
  // TODO: maybe serialize Map as record/dict
35
68
  if (xObject instanceof Map) {
36
69
  return `[Map ${xObject.size}]`;
@@ -63,13 +96,22 @@ const normalizer = () => {
63
96
  if (options?.sortKeys?.match(xObject)) {
64
97
  keys.sort(options.sortKeys.sortFn);
65
98
  }
99
+ /**
100
+ * There is several cases, when we have to keep the origin prototype.
101
+ * For example, if normalizer is executing implicitly
102
+ * and normalized object will be used in `instanceof` condition
103
+ * next to execution context
104
+ */
105
+ const normalized = options?.keepOriginPrototype
106
+ ? Object.setPrototypeOf({}, Object.getPrototypeOf(xObject))
107
+ : {};
66
108
  return keys.reduce((acc, key) => {
67
109
  if (options?.filterKeys?.includes(key)) {
68
110
  return acc;
69
111
  }
70
112
  acc[key] = normalize(xObject[key], options, newDepth);
71
113
  return acc;
72
- }, {});
114
+ }, normalized);
73
115
  }
74
116
  catch (error) {
75
117
  return `[Can not get keys from object. ${error}]`;
@@ -1 +1 @@
1
- {"version":3,"file":"obj-normalization.js","sourceRoot":"","sources":["../../src/functions/obj-normalization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"obj-normalization.js","sourceRoot":"","sources":["../../src/functions/obj-normalization.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,3 +6,4 @@ export * from './functions';
6
6
  export * from './size';
7
7
  export * from './strings';
8
8
  export * from './observable';
9
+ export * from './parsers';
package/dist/index.js CHANGED
@@ -22,4 +22,5 @@ __exportStar(require("./functions"), exports);
22
22
  __exportStar(require("./size"), exports);
23
23
  __exportStar(require("./strings"), exports);
24
24
  __exportStar(require("./observable"), exports);
25
+ __exportStar(require("./parsers"), exports);
25
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B;AAC1B,yCAAuB;AACvB,8CAA4B;AAC5B,yCAAuB;AACvB,4CAA0B;AAC1B,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B;AAC1B,yCAAuB;AACvB,8CAA4B;AAC5B,yCAAuB;AACvB,4CAA0B;AAC1B,+CAA6B;AAC7B,4CAA0B"}
@@ -0,0 +1,11 @@
1
+ import type { PropertyParser } from '../parser.interface';
2
+ export declare class ArrayParser<T> implements PropertyParser<T[]> {
3
+ private readonly singleValueParser;
4
+ private readonly options;
5
+ constructor(singleValueParser: PropertyParser<T>, options?: {
6
+ separator: string;
7
+ });
8
+ type(): string;
9
+ description(): string;
10
+ parse(value: unknown): T[];
11
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArrayParser = void 0;
4
+ const strings_1 = require("../../strings");
5
+ const types_1 = require("../../types");
6
+ class ArrayParser {
7
+ singleValueParser;
8
+ options;
9
+ constructor(singleValueParser, options = { separator: ',' }) {
10
+ this.singleValueParser = singleValueParser;
11
+ this.options = options;
12
+ }
13
+ type() {
14
+ return `(array)${this.singleValueParser.type()}`;
15
+ }
16
+ description() {
17
+ return (0, strings_1.text) `
18
+ Extracts array of values. If raw value is a string
19
+ <${this.options.separator}> will used as separator. Each value:
20
+ ${this.singleValueParser.description()}
21
+ `;
22
+ }
23
+ parse(value) {
24
+ if (Array.isArray(value)) {
25
+ return value.map((x) => this.singleValueParser.parse(x));
26
+ }
27
+ types_1.Assert.isString(value);
28
+ return value
29
+ .split(this.options.separator)
30
+ .map((x) => this.singleValueParser.parse(x));
31
+ }
32
+ }
33
+ exports.ArrayParser = ArrayParser;
34
+ //# sourceMappingURL=array.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.parser.js","sourceRoot":"","sources":["../../../src/parsers/array/array.parser.ts"],"names":[],"mappings":";;;AAAA,2CAAqC;AACrC,uCAAqC;AAGrC,MAAa,WAAW;IAEH;IACA;IAFnB,YACmB,iBAAoC,EACpC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE;QAD5B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,YAAO,GAAP,OAAO,CAAqB;IAC5C,CAAC;IAEJ,IAAI;QACF,OAAO,UAAU,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;IACnD,CAAC;IAED,WAAW;QACT,OAAO,IAAA,cAAI,EAAA;;SAEN,IAAI,CAAC,OAAO,CAAC,SAAS;QACvB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;KACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,cAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvB,OAAO,KAAK;aACT,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;aAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;CACF;AA7BD,kCA6BC"}
@@ -0,0 +1 @@
1
+ export * from './array.parser';
@@ -0,0 +1,18 @@
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("./array.parser"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/array/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
@@ -0,0 +1,6 @@
1
+ import type { PropertyParser } from '../parser.interface';
2
+ export declare class BoolParser implements PropertyParser<boolean> {
3
+ type(): string;
4
+ description(): string;
5
+ parse(value: unknown): boolean;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BoolParser = void 0;
4
+ const convert_1 = require("../../convert");
5
+ const strings_1 = require("../../strings");
6
+ class BoolParser {
7
+ type() {
8
+ return 'boolean';
9
+ }
10
+ description() {
11
+ return (0, strings_1.text) `
12
+ Extracts boolean value. Any boolean value or strings
13
+ 'true' and 'false' will pass.
14
+ `;
15
+ }
16
+ parse(value) {
17
+ return convert_1.Convert.boolean(value);
18
+ }
19
+ }
20
+ exports.BoolParser = BoolParser;
21
+ //# sourceMappingURL=bool.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bool.parser.js","sourceRoot":"","sources":["../../../src/parsers/boolean/bool.parser.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,2CAAqC;AAGrC,MAAa,UAAU;IACrB,IAAI;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,WAAW;QACT,OAAO,IAAA,cAAI,EAAA;;;KAGV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,OAAO,iBAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAfD,gCAeC"}
@@ -0,0 +1 @@
1
+ export * from './bool.parser';
@@ -0,0 +1,18 @@
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("./bool.parser"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/boolean/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -0,0 +1,9 @@
1
+ import type { EnumLike, EnumValue } from '../../enums';
2
+ import type { PropertyParser } from '../parser.interface';
3
+ export declare class EnumParser<E extends EnumValue> implements PropertyParser<E> {
4
+ private readonly enumeration;
5
+ constructor(enumeration: EnumLike);
6
+ type(): string;
7
+ description(): string;
8
+ parse(value: unknown): E;
9
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EnumParser = void 0;
4
+ const convert_1 = require("../../convert");
5
+ const enums_1 = require("../../enums");
6
+ const strings_1 = require("../../strings");
7
+ class EnumParser {
8
+ enumeration;
9
+ constructor(enumeration) {
10
+ this.enumeration = enumeration;
11
+ }
12
+ type() {
13
+ return `string|number(enum_value)`;
14
+ }
15
+ description() {
16
+ return (0, strings_1.text) `
17
+ Extracts strings or numbers and ensures it is one of:
18
+ ${enums_1.Enum.values(this.enumeration).join(', ')}
19
+ `;
20
+ }
21
+ parse(value) {
22
+ return convert_1.Convert.enum(value, this.enumeration);
23
+ }
24
+ }
25
+ exports.EnumParser = EnumParser;
26
+ //# sourceMappingURL=enum.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.parser.js","sourceRoot":"","sources":["../../../src/parsers/enum/enum.parser.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAExC,uCAAmC;AACnC,2CAAqC;AAGrC,MAAa,UAAU;IACQ;IAA7B,YAA6B,WAAqB;QAArB,gBAAW,GAAX,WAAW,CAAU;IAAG,CAAC;IAEtD,IAAI;QACF,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,WAAW;QACT,OAAO,IAAA,cAAI,EAAA;;QAEP,YAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,OAAO,iBAAO,CAAC,IAAI,CAAI,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;CACF;AAjBD,gCAiBC"}
@@ -0,0 +1 @@
1
+ export * from './enum.parser';
@@ -0,0 +1,18 @@
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("./enum.parser"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/enum/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -0,0 +1,11 @@
1
+ export * from './boolean';
2
+ export * from './enum';
3
+ export * from './int';
4
+ export * from './number';
5
+ export * from './size';
6
+ export * from './string';
7
+ export * from './timespan';
8
+ export * from './url';
9
+ export * from './array';
10
+ export * from './json';
11
+ export * from './parser.interface';
@@ -0,0 +1,28 @@
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("./boolean"), exports);
18
+ __exportStar(require("./enum"), exports);
19
+ __exportStar(require("./int"), exports);
20
+ __exportStar(require("./number"), exports);
21
+ __exportStar(require("./size"), exports);
22
+ __exportStar(require("./string"), exports);
23
+ __exportStar(require("./timespan"), exports);
24
+ __exportStar(require("./url"), exports);
25
+ __exportStar(require("./array"), exports);
26
+ __exportStar(require("./json"), exports);
27
+ __exportStar(require("./parser.interface"), exports);
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parsers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,yCAAuB;AACvB,wCAAsB;AACtB,2CAAyB;AACzB,yCAAuB;AACvB,2CAAyB;AACzB,6CAA2B;AAC3B,wCAAsB;AACtB,0CAAwB;AACxB,yCAAuB;AACvB,qDAAmC"}
@@ -0,0 +1 @@
1
+ export * from './int.parser';
@@ -0,0 +1,18 @@
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("./int.parser"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/int/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B"}
@@ -0,0 +1,6 @@
1
+ import type { PropertyParser } from '../parser.interface';
2
+ export declare class IntParser implements PropertyParser<number> {
3
+ type(): string;
4
+ description(): string;
5
+ parse(value: unknown): number;
6
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntParser = void 0;
4
+ const convert_1 = require("../../convert");
5
+ const strings_1 = require("../../strings");
6
+ class IntParser {
7
+ type() {
8
+ return 'number(int)';
9
+ }
10
+ description() {
11
+ return (0, strings_1.text) `
12
+ Extracts valid integer (uses parseInt under the hood).
13
+ Floating point numbers, NaN, Infinity will be rejected.
14
+ `;
15
+ }
16
+ parse(value) {
17
+ return convert_1.Convert.int(value);
18
+ }
19
+ }
20
+ exports.IntParser = IntParser;
21
+ //# sourceMappingURL=int.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"int.parser.js","sourceRoot":"","sources":["../../../src/parsers/int/int.parser.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,2CAAqC;AAGrC,MAAa,SAAS;IACpB,IAAI;QACF,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,WAAW;QACT,OAAO,IAAA,cAAI,EAAA;;;KAGV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,OAAO,iBAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF;AAfD,8BAeC"}
@@ -0,0 +1 @@
1
+ export * from './json.parser';
@@ -0,0 +1,18 @@
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("./json.parser"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/json/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -0,0 +1,6 @@
1
+ import type { PropertyParser } from '../parser.interface';
2
+ export declare class JsonParser implements PropertyParser<Record<string, any>> {
3
+ description(): string;
4
+ parse(value: string): Record<string, any>;
5
+ type(): string;
6
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonParser = void 0;
4
+ class JsonParser {
5
+ description() {
6
+ return 'parse string as json';
7
+ }
8
+ parse(value) {
9
+ return JSON.parse(value);
10
+ }
11
+ type() {
12
+ return 'json';
13
+ }
14
+ }
15
+ exports.JsonParser = JsonParser;
16
+ //# sourceMappingURL=json.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.parser.js","sourceRoot":"","sources":["../../../src/parsers/json/json.parser.ts"],"names":[],"mappings":";;;AAEA,MAAa,UAAU;IACrB,WAAW;QACT,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAZD,gCAYC"}
@@ -0,0 +1 @@
1
+ export * from './number.parser';
@@ -0,0 +1,18 @@
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("./number.parser"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/number/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -0,0 +1,6 @@
1
+ import type { PropertyParser } from '../parser.interface';
2
+ export declare class NumberParser implements PropertyParser<number> {
3
+ type(): string;
4
+ description(): string;
5
+ parse(value: unknown): number;
6
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberParser = void 0;
4
+ const convert_1 = require("../../convert");
5
+ const strings_1 = require("../../strings");
6
+ class NumberParser {
7
+ type() {
8
+ return 'number';
9
+ }
10
+ description() {
11
+ return (0, strings_1.text) `
12
+ Extracts numeric value (uses parseFloat under the hood).
13
+ NaN and Infinity will be rejected.
14
+
15
+ NOTE: Use correct decimal delimiter according to locale. See
16
+ https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Intl
17
+ `;
18
+ }
19
+ parse(value) {
20
+ return convert_1.Convert.number(value);
21
+ }
22
+ }
23
+ exports.NumberParser = NumberParser;
24
+ //# sourceMappingURL=number.parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.parser.js","sourceRoot":"","sources":["../../../src/parsers/number/number.parser.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,2CAAqC;AAGrC,MAAa,YAAY;IACvB,IAAI;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,WAAW;QACT,OAAO,IAAA,cAAI,EAAA;;;;;;KAMV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAc;QAClB,OAAO,iBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;CACF;AAlBD,oCAkBC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Implement this interface to create more parsers.
3
+ * For example: email, BigInt, guid etc.
4
+ *
5
+ * NOTE: In other modules it is more common to define metadata
6
+ * via decorators. But this case is a bit different.
7
+ *
8
+ * 1. Parser implementations can have constructors with parameters
9
+ * which will affect it's behaviour. It's will be nice to have it
10
+ * in metadata, and decorators won't provide this.
11
+ *
12
+ * 2. Metadata will be extracted via type() and description() methods
13
+ * mostly during decorator factories (such as @Property()) code is
14
+ * executed. Thus output **can** be used in autodoc
15
+ */
16
+ export interface PropertyParser<T = any> {
17
+ type(): string;
18
+ description(): string;
19
+ parse(value: unknown): T;
20
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=parser.interface.js.map