@vpmedia/simplify 1.53.0 → 1.55.0

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 (112) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/package.json +16 -16
  3. package/src/index.js +9 -19
  4. package/src/logging/Logger.js +1 -1
  5. package/src/logging/OpenTelemetryLogHandler.js +1 -1
  6. package/src/logging/util.js +2 -0
  7. package/src/logging/util.test.js +4 -1
  8. package/src/pagelifecycle/util.js +17 -21
  9. package/src/util/async.js +20 -0
  10. package/src/util/{delayPromise.test.js → async.test.js} +1 -1
  11. package/src/util/{getErrorDetails.test.js → error.test.js} +1 -1
  12. package/src/util/{fetchRetry.js → fetch.js} +6 -4
  13. package/src/util/number.js +116 -0
  14. package/src/util/number.test.js +115 -0
  15. package/src/util/object.js +97 -0
  16. package/src/util/object.test.js +205 -0
  17. package/src/util/{getURLParam.js → query.js} +12 -2
  18. package/src/util/{sanitizeURLParam.test.js → query.test.js} +18 -1
  19. package/src/util/{serverDataToState.js → state.js} +1 -1
  20. package/src/util/{serverDataToState.test.js → state.test.js} +1 -1
  21. package/src/util/string.js +54 -0
  22. package/src/util/{capitalize.test.js → string.test.js} +19 -1
  23. package/src/util/validate.js +272 -0
  24. package/src/util/validate.test.js +325 -0
  25. package/tsconfig.build.json +24 -0
  26. package/types/index.d.ts +9 -19
  27. package/types/logging/util.d.ts.map +1 -1
  28. package/types/pagelifecycle/util.d.ts +1 -1
  29. package/types/pagelifecycle/util.d.ts.map +1 -1
  30. package/types/util/async.d.ts +3 -0
  31. package/types/util/async.d.ts.map +1 -0
  32. package/types/util/{getErrorDetails.d.ts → error.d.ts} +1 -1
  33. package/types/util/error.d.ts.map +1 -0
  34. package/types/util/{fetchRetry.d.ts → fetch.d.ts} +1 -1
  35. package/types/util/fetch.d.ts.map +1 -0
  36. package/types/util/number.d.ts +13 -0
  37. package/types/util/number.d.ts.map +1 -0
  38. package/types/util/object.d.ts +6 -0
  39. package/types/util/object.d.ts.map +1 -0
  40. package/types/util/{getURLParam.d.ts → query.d.ts} +2 -1
  41. package/types/util/query.d.ts.map +1 -0
  42. package/types/util/{serverDataToState.d.ts → state.d.ts} +1 -1
  43. package/types/util/state.d.ts.map +1 -0
  44. package/types/util/string.d.ts +5 -0
  45. package/types/util/string.d.ts.map +1 -0
  46. package/types/util/validate.d.ts +54 -0
  47. package/types/util/validate.d.ts.map +1 -0
  48. package/src/util/addLeadingZero.js +0 -16
  49. package/src/util/addLeadingZero.test.js +0 -11
  50. package/src/util/capitalize.js +0 -15
  51. package/src/util/deepMerge.js +0 -24
  52. package/src/util/deepMerge.test.js +0 -103
  53. package/src/util/deg2rad.js +0 -8
  54. package/src/util/deg2rad.test.js +0 -5
  55. package/src/util/delayPromise.js +0 -6
  56. package/src/util/fixFloatPrecision.js +0 -16
  57. package/src/util/fixFloatPrecision.test.js +0 -27
  58. package/src/util/getObjArrayPropSum.js +0 -11
  59. package/src/util/getObjValueByPath.js +0 -20
  60. package/src/util/getObjValueByPath.test.js +0 -51
  61. package/src/util/getRandomInt.js +0 -9
  62. package/src/util/getRandomInt.test.js +0 -24
  63. package/src/util/getURLParam.test.js +0 -18
  64. package/src/util/loadJSON.js +0 -10
  65. package/src/util/purgeObject.js +0 -13
  66. package/src/util/purgeObject.test.js +0 -8
  67. package/src/util/safeFloat.js +0 -31
  68. package/src/util/safeFloat.test.js +0 -13
  69. package/src/util/sanitizeURLParam.js +0 -11
  70. package/src/util/saveAsFile.js +0 -14
  71. package/src/util/setObjValueByPath.js +0 -26
  72. package/src/util/setObjValueByPath.test.js +0 -47
  73. package/src/util/underscoreToCamelCase.js +0 -10
  74. package/src/util/underscoreToCamelCase.test.js +0 -7
  75. package/typedefs/global.d.ts +0 -5
  76. package/types/util/addLeadingZero.d.ts +0 -2
  77. package/types/util/addLeadingZero.d.ts.map +0 -1
  78. package/types/util/capitalize.d.ts +0 -2
  79. package/types/util/capitalize.d.ts.map +0 -1
  80. package/types/util/deepMerge.d.ts +0 -2
  81. package/types/util/deepMerge.d.ts.map +0 -1
  82. package/types/util/deg2rad.d.ts +0 -2
  83. package/types/util/deg2rad.d.ts.map +0 -1
  84. package/types/util/delayPromise.d.ts +0 -2
  85. package/types/util/delayPromise.d.ts.map +0 -1
  86. package/types/util/fetchRetry.d.ts.map +0 -1
  87. package/types/util/fixFloatPrecision.d.ts +0 -7
  88. package/types/util/fixFloatPrecision.d.ts.map +0 -1
  89. package/types/util/getErrorDetails.d.ts.map +0 -1
  90. package/types/util/getObjArrayPropSum.d.ts +0 -2
  91. package/types/util/getObjArrayPropSum.d.ts.map +0 -1
  92. package/types/util/getObjValueByPath.d.ts +0 -2
  93. package/types/util/getObjValueByPath.d.ts.map +0 -1
  94. package/types/util/getRandomInt.d.ts +0 -2
  95. package/types/util/getRandomInt.d.ts.map +0 -1
  96. package/types/util/getURLParam.d.ts.map +0 -1
  97. package/types/util/loadJSON.d.ts +0 -7
  98. package/types/util/loadJSON.d.ts.map +0 -1
  99. package/types/util/purgeObject.d.ts +0 -2
  100. package/types/util/purgeObject.d.ts.map +0 -1
  101. package/types/util/safeFloat.d.ts +0 -22
  102. package/types/util/safeFloat.d.ts.map +0 -1
  103. package/types/util/sanitizeURLParam.d.ts +0 -2
  104. package/types/util/sanitizeURLParam.d.ts.map +0 -1
  105. package/types/util/saveAsFile.d.ts +0 -2
  106. package/types/util/saveAsFile.d.ts.map +0 -1
  107. package/types/util/serverDataToState.d.ts.map +0 -1
  108. package/types/util/setObjValueByPath.d.ts +0 -2
  109. package/types/util/setObjValueByPath.d.ts.map +0 -1
  110. package/types/util/underscoreToCamelCase.d.ts +0 -2
  111. package/types/util/underscoreToCamelCase.d.ts.map +0 -1
  112. /package/src/util/{getErrorDetails.js → error.js} +0 -0
@@ -0,0 +1,325 @@
1
+ /* eslint-disable unicorn/no-useless-undefined */
2
+
3
+ import {
4
+ isArray,
5
+ isArrayOf,
6
+ isBoolean,
7
+ isEnum,
8
+ isFunction,
9
+ isInstance,
10
+ isInteger,
11
+ isNonNegativeInteger,
12
+ isNonNegativeNumber,
13
+ isNull,
14
+ isNumber,
15
+ isPlainObject,
16
+ isPlainObjectOf,
17
+ isAnyOf,
18
+ isPositiveInteger,
19
+ isPositiveNumber,
20
+ isString,
21
+ isUndefined,
22
+ typeCheck,
23
+ typeCheckArray,
24
+ TypeCheckError,
25
+ refineValidator,
26
+ isNumberLess,
27
+ isNumberGreater,
28
+ isNumberLessOrEqual,
29
+ isNumberGreaterOrEqual,
30
+ isIntegerLess,
31
+ isIntegerGreater,
32
+ isIntegerLessOrEqual,
33
+ isIntegerGreaterOrEqual,
34
+ isNumberInRange,
35
+ isIntegerInRange,
36
+ isArrayLengthEqual,
37
+ isArrayLengthInRange,
38
+ isStringLengthEqual,
39
+ isStringLengthInRange,
40
+ isNullOrUndefined,
41
+ } from './validate.js';
42
+
43
+ describe('validate', () => {
44
+ test('isArray', () => {
45
+ expect(isArray('string')).toBe(false);
46
+ expect(isArray([])).toBe(true);
47
+ expect(isArray([1, 2, 3])).toBe(true);
48
+ expect(isArray({ string: '1' })).toBe(false);
49
+ expect(isArray(0.1)).toBe(false);
50
+ expect(isArray(1)).toBe(false);
51
+ expect(isArray(false)).toBe(false);
52
+ expect(isArray(null)).toBe(false);
53
+ expect(isArray(true)).toBe(false);
54
+ expect(isArray(undefined)).toBe(false);
55
+ expect(isArray(() => true)).toBe(false);
56
+ });
57
+
58
+ test('isBoolean', () => {
59
+ expect(isBoolean('string')).toBe(false);
60
+ expect(isBoolean([])).toBe(false);
61
+ expect(isBoolean([1, 2, 3])).toBe(false);
62
+ expect(isBoolean({ string: '1' })).toBe(false);
63
+ expect(isBoolean(0.1)).toBe(false);
64
+ expect(isBoolean(1)).toBe(false);
65
+ expect(isBoolean(false)).toBe(true);
66
+ expect(isBoolean(null)).toBe(false);
67
+ expect(isBoolean(true)).toBe(true);
68
+ expect(isBoolean(undefined)).toBe(false);
69
+ expect(isBoolean(() => true)).toBe(false);
70
+ });
71
+
72
+ test('isNumber', () => {
73
+ expect(isNumber('string')).toBe(false);
74
+ expect(isNumber([])).toBe(false);
75
+ expect(isNumber([1, 2, 3])).toBe(false);
76
+ expect(isNumber({ string: '1' })).toBe(false);
77
+ expect(isNumber(0.1)).toBe(true);
78
+ expect(isNumber(1)).toBe(true);
79
+ expect(isNumber(false)).toBe(false);
80
+ expect(isNumber(null)).toBe(false);
81
+ expect(isNumber(Number.NaN)).toBe(false);
82
+ expect(isNumber(Number.POSITIVE_INFINITY)).toBe(false);
83
+ expect(isNumber(true)).toBe(false);
84
+ expect(isNumber(undefined)).toBe(false);
85
+ expect(isNumber(() => true)).toBe(false);
86
+ });
87
+
88
+ test('isPositiveNumber', () => {
89
+ expect(isPositiveNumber(0)).toBe(false);
90
+ expect(isPositiveNumber(1)).toBe(true);
91
+ expect(isPositiveNumber(1.1)).toBe(true);
92
+ expect(isPositiveNumber(-1)).toBe(false);
93
+ expect(isPositiveNumber(-1.1)).toBe(false);
94
+ });
95
+
96
+ test('isNonNegativeNumber', () => {
97
+ expect(isNonNegativeNumber(0)).toBe(true);
98
+ expect(isNonNegativeNumber(1)).toBe(true);
99
+ expect(isNonNegativeNumber(1.1)).toBe(true);
100
+ expect(isNonNegativeNumber(-1)).toBe(false);
101
+ expect(isNonNegativeNumber(-1.1)).toBe(false);
102
+ });
103
+
104
+ test('isInteger', () => {
105
+ expect(isInteger('string')).toBe(false);
106
+ expect(isInteger(() => true)).toBe(false);
107
+ expect(isInteger([])).toBe(false);
108
+ expect(isInteger([1, 2, 3])).toBe(false);
109
+ expect(isInteger({ string: '1' })).toBe(false);
110
+ expect(isInteger(0.1)).toBe(false);
111
+ expect(isInteger(1)).toBe(true);
112
+ expect(isInteger(false)).toBe(false);
113
+ expect(isInteger(null)).toBe(false);
114
+ expect(isInteger(Number.NaN)).toBe(false);
115
+ expect(isInteger(Number.POSITIVE_INFINITY)).toBe(false);
116
+ expect(isInteger(true)).toBe(false);
117
+ expect(isInteger(undefined)).toBe(false);
118
+ });
119
+
120
+ test('isPositiveInteger', () => {
121
+ expect(isPositiveInteger(0)).toBe(false);
122
+ expect(isPositiveInteger(1)).toBe(true);
123
+ expect(isPositiveInteger(1.1)).toBe(false);
124
+ expect(isPositiveInteger(-1)).toBe(false);
125
+ expect(isPositiveInteger(-1.1)).toBe(false);
126
+ });
127
+
128
+ test('isNonNegativeInteger', () => {
129
+ expect(isNonNegativeInteger(0)).toBe(true);
130
+ expect(isNonNegativeInteger(1)).toBe(true);
131
+ expect(isNonNegativeInteger(1.1)).toBe(false);
132
+ expect(isNonNegativeInteger(-1)).toBe(false);
133
+ expect(isNonNegativeInteger(-1.1)).toBe(false);
134
+ });
135
+
136
+ test('isString', () => {
137
+ expect(isString('string')).toBe(true);
138
+ expect(isString([])).toBe(false);
139
+ expect(isString([1, 2, 3])).toBe(false);
140
+ expect(isString({ string: '1' })).toBe(false);
141
+ expect(isString(0.1)).toBe(false);
142
+ expect(isString(1)).toBe(false);
143
+ expect(isString(false)).toBe(false);
144
+ expect(isString(null)).toBe(false);
145
+ expect(isString(true)).toBe(false);
146
+ expect(isString(undefined)).toBe(false);
147
+ expect(isString(() => true)).toBe(false);
148
+ });
149
+
150
+ test('isFunction', () => {
151
+ expect(isFunction('string')).toBe(false);
152
+ expect(isFunction([])).toBe(false);
153
+ expect(isFunction([1, 2, 3])).toBe(false);
154
+ expect(isFunction({ string: '1' })).toBe(false);
155
+ expect(isFunction(0.1)).toBe(false);
156
+ expect(isFunction(1)).toBe(false);
157
+ expect(isFunction(false)).toBe(false);
158
+ expect(isFunction(null)).toBe(false);
159
+ expect(isFunction(true)).toBe(false);
160
+ expect(isFunction(undefined)).toBe(false);
161
+ expect(isFunction(() => true)).toBe(true);
162
+ });
163
+
164
+ test('isNull', () => {
165
+ expect(isNull('string')).toBe(false);
166
+ expect(isNull([])).toBe(false);
167
+ expect(isNull([1, 2, 3])).toBe(false);
168
+ expect(isNull({ string: '1' })).toBe(false);
169
+ expect(isNull(0.1)).toBe(false);
170
+ expect(isNull(1)).toBe(false);
171
+ expect(isNull(false)).toBe(false);
172
+ expect(isNull(null)).toBe(true);
173
+ expect(isNull(true)).toBe(false);
174
+ expect(isNull(undefined)).toBe(false);
175
+ expect(isNull(() => true)).toBe(false);
176
+ });
177
+
178
+ test('isUndefined', () => {
179
+ expect(isUndefined('string')).toBe(false);
180
+ expect(isUndefined([])).toBe(false);
181
+ expect(isUndefined([1, 2, 3])).toBe(false);
182
+ expect(isUndefined({ string: '1' })).toBe(false);
183
+ expect(isUndefined(0.1)).toBe(false);
184
+ expect(isUndefined(1)).toBe(false);
185
+ expect(isUndefined(false)).toBe(false);
186
+ expect(isUndefined(null)).toBe(false);
187
+ expect(isUndefined(true)).toBe(false);
188
+ expect(isUndefined(undefined)).toBe(true);
189
+ expect(isUndefined(() => true)).toBe(false);
190
+ });
191
+
192
+ test('isNullOrUndefined', () => {
193
+ expect(isNullOrUndefined('string')).toBe(false);
194
+ expect(isNullOrUndefined([])).toBe(false);
195
+ expect(isNullOrUndefined([1, 2, 3])).toBe(false);
196
+ expect(isNullOrUndefined({ string: '1' })).toBe(false);
197
+ expect(isNullOrUndefined(0.1)).toBe(false);
198
+ expect(isNullOrUndefined(1)).toBe(false);
199
+ expect(isNullOrUndefined(false)).toBe(false);
200
+ expect(isNullOrUndefined(null)).toBe(true);
201
+ expect(isNullOrUndefined(true)).toBe(false);
202
+ expect(isNullOrUndefined(undefined)).toBe(true);
203
+ expect(isNullOrUndefined(() => true)).toBe(false);
204
+ });
205
+
206
+ test('isPlainObject', () => {
207
+ expect(isPlainObject('string')).toBe(false);
208
+ expect(isPlainObject(() => true)).toBe(false);
209
+ expect(isPlainObject([])).toBe(false);
210
+ expect(isPlainObject([1, 2, 3])).toBe(false);
211
+ expect(isPlainObject({ string: '1' })).toBe(true);
212
+ expect(isPlainObject(0.1)).toBe(false);
213
+ expect(isPlainObject(1)).toBe(false);
214
+ expect(isPlainObject(false)).toBe(false);
215
+ expect(isPlainObject(new Date())).toBe(false);
216
+ expect(isPlainObject(null)).toBe(false);
217
+ expect(isPlainObject(true)).toBe(false);
218
+ expect(isPlainObject(undefined)).toBe(false);
219
+ });
220
+
221
+ test('isInstance', () => {
222
+ class CustomError extends Error {}
223
+ // @ts-expect-error
224
+ expect(isInstance({}, {})).toBe(false);
225
+ expect(isInstance({}, Number)).toBe(false);
226
+ // @ts-expect-error
227
+ expect(isInstance(new CustomError(), {})).toBe(false);
228
+ expect(isInstance(new CustomError(), Error)).toBe(true);
229
+ expect(isInstance(new CustomError(), Number)).toBe(false);
230
+ });
231
+
232
+ test('isEnum', () => {
233
+ expect(isEnum(0, [1, 2])).toBe(false);
234
+ expect(isEnum(1, [1, 2])).toBe(true);
235
+ expect(isEnum('AB', ['AB', 'CD'])).toBe(true);
236
+ expect(isEnum('EF', ['AB', 'CD'])).toBe(false);
237
+ expect(isEnum('AB', { AB: 'AB', CD: 'CD' })).toBe(true);
238
+ expect(isEnum('EF', { AB: 'AB', CD: 'CD' })).toBe(false);
239
+ expect(isEnum('AB', new Set(['AB', 'CD']))).toBe(true);
240
+ expect(isEnum('EF', new Set(['AB', 'CD']))).toBe(false);
241
+ expect(isEnum('EF', null)).toBe(false);
242
+ expect(isEnum('EF', undefined)).toBe(false);
243
+ // @ts-expect-error
244
+ expect(isEnum('EF', 1)).toBe(false);
245
+ // @ts-expect-error
246
+ expect(isEnum('EF', 'string')).toBe(false);
247
+ // @ts-expect-error
248
+ expect(isEnum(false, 'string')).toBe(false);
249
+ });
250
+
251
+ test('isArrayOf', () => {
252
+ expect(isArrayOf(0.1, isNumber)).toBe(false);
253
+ expect(isArrayOf([0.1, 'string'], isNumber)).toBe(false);
254
+ expect(isArrayOf([0.1, 0.2], isNumber)).toBe(true);
255
+ expect(isArrayOf([0.1, 1, 2], isInteger)).toBe(false);
256
+ expect(isArrayOf([1, 2], isInteger)).toBe(true);
257
+ });
258
+
259
+ test('isPlainObjectOf', () => {
260
+ // @ts-expect-error
261
+ expect(isPlainObjectOf(0.1, isNumber)).toBe(false);
262
+ expect(isPlainObjectOf({ a: 0.1, b: 'string' }, isNumber)).toBe(false);
263
+ expect(isPlainObjectOf({ a: 0.1, b: 0.2 }, isNumber)).toBe(true);
264
+ expect(isPlainObjectOf({ a: 0.1, b: 1, c: 2 }, isInteger)).toBe(false);
265
+ expect(isPlainObjectOf({ a: 1, b: 2 }, isInteger)).toBe(true);
266
+ });
267
+
268
+ test('typeCheck', () => {
269
+ expect(() => typeCheck(0.1, isNumber)).not.toThrowError(TypeCheckError);
270
+ expect(() => typeCheck(-0.1, isPositiveInteger)).toThrowError(TypeCheckError);
271
+ expect(() => typeCheck('string', isNumber)).toThrowError(TypeCheckError);
272
+ });
273
+
274
+ test('typeCheckArray', () => {
275
+ expect(() => typeCheckArray([0.1], isNumber)).not.toThrowError(TypeCheckError);
276
+ expect(() => typeCheckArray(['string'], isNumber)).toThrowError(TypeCheckError);
277
+ // @ts-expect-error
278
+ expect(() => typeCheckArray(-0.1, isPositiveInteger)).toThrowError(TypeCheckError);
279
+ // @ts-expect-error
280
+ expect(() => typeCheckArray('string', isNumber)).toThrowError(TypeCheckError);
281
+ });
282
+
283
+ test('isAnyOf', () => {
284
+ expect(isAnyOf(isNumber, isNull)(1)).toBe(true);
285
+ expect(isAnyOf(isNumber, isNull)(null)).toBe(true);
286
+ expect(isAnyOf(isNumber, isNull)('string')).toBe(false);
287
+ });
288
+
289
+ test('refineValidator', () => {
290
+ expect(refineValidator(isNumber, (v) => v > 0)(-1)).toBe(false);
291
+ expect(refineValidator(isNumber, (v) => v > 0)(1)).toBe(true);
292
+ expect(refineValidator(isNumber, (v) => v > 0).name).toBe('isNumberRefined');
293
+ });
294
+
295
+ test('isRefinedExtensions', () => {
296
+ expect(isNumberLess(0)(-1.1)).toBe(true);
297
+ expect(isNumberLess(0)(0)).toBe(false);
298
+ expect(isNumberLessOrEqual(0)(0)).toBe(true);
299
+ expect(isNumberGreater(0)(0)).toBe(false);
300
+ expect(isNumberGreater(0)(1.1)).toBe(true);
301
+ expect(isNumberGreaterOrEqual(0)(0)).toBe(true);
302
+ expect(isNumberInRange(0, 1.1)(0)).toBe(true);
303
+ expect(isNumberInRange.name).toBe('isNumberInRange');
304
+
305
+ expect(isIntegerLess(0)(-1)).toBe(true);
306
+ expect(isIntegerLess(0)(0)).toBe(false);
307
+ expect(isIntegerLessOrEqual(0)(0)).toBe(true);
308
+ expect(isIntegerGreater(0)(0)).toBe(false);
309
+ expect(isIntegerGreater(0)(1)).toBe(true);
310
+ expect(isIntegerGreater(0)(1.1)).toBe(false);
311
+ expect(isIntegerGreaterOrEqual(0)(0)).toBe(true);
312
+ expect(isIntegerInRange(0, 1)(0)).toBe(true);
313
+ expect(isIntegerInRange(0, 1)(2)).toBe(false);
314
+
315
+ expect(isStringLengthEqual(1)('a')).toBe(true);
316
+ expect(isStringLengthEqual(1)('ab')).toBe(false);
317
+ expect(isStringLengthInRange(1, 2)('ab')).toBe(true);
318
+ expect(isStringLengthInRange(1, 2)('abc')).toBe(false);
319
+
320
+ expect(isArrayLengthEqual(1)([1])).toBe(true);
321
+ expect(isArrayLengthEqual(1)([1, 2])).toBe(false);
322
+ expect(isArrayLengthInRange(1, 2)([1, 2])).toBe(true);
323
+ expect(isArrayLengthInRange(1, 2)([1, 2, 3])).toBe(false);
324
+ });
325
+ });
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "jsx": "react-jsx",
5
+ "module": "NodeNext",
6
+ "moduleResolution": "nodenext",
7
+ "types": ["node", "vitest/globals"],
8
+ "allowJs": true,
9
+ "checkJs": true,
10
+ "declaration": true,
11
+ "declarationMap": true,
12
+ "emitDeclarationOnly": true,
13
+ "declarationDir": "./types",
14
+ "isolatedModules": true,
15
+ "esModuleInterop": true,
16
+ "forceConsistentCasingInFileNames": true,
17
+ "strict": true,
18
+ "noImplicitAny": false,
19
+ "strictNullChecks": false,
20
+ "skipLibCheck": true
21
+ },
22
+ "include": ["./src/**/*"],
23
+ "exclude": ["./src/**/*.test.js"]
24
+ }
package/types/index.d.ts CHANGED
@@ -4,29 +4,19 @@ export * from "./pagelifecycle/const.js";
4
4
  export * from "./pagelifecycle/event.js";
5
5
  export * from "./pagelifecycle/typedef.js";
6
6
  export * from "./pagelifecycle/util.js";
7
+ export * from "./util/async.js";
8
+ export * from "./util/error.js";
9
+ export * from "./util/number.js";
10
+ export * from "./util/object.js";
11
+ export * from "./util/query.js";
12
+ export * from "./util/state.js";
13
+ export * from "./util/string.js";
14
+ export * from "./util/validate.js";
7
15
  export { AbstractLogHandler } from "./logging/AbstractLogHandler.js";
8
16
  export { ConsoleLogHandler } from "./logging/ConsoleLogHandler.js";
9
17
  export { Logger } from "./logging/Logger.js";
10
18
  export { OpenTelemetryLogHandler } from "./logging/OpenTelemetryLogHandler.js";
11
19
  export { SentryLogHandler } from "./logging/SentryLogHandler.js";
12
- export { addLeadingZero } from "./util/addLeadingZero.js";
13
- export { capitalize } from "./util/capitalize.js";
14
- export { deepMerge } from "./util/deepMerge.js";
15
- export { deg2rad } from "./util/deg2rad.js";
16
- export { delayPromise } from "./util/delayPromise.js";
17
- export { fixFloatPrecision } from "./util/fixFloatPrecision.js";
18
- export { getErrorDetails } from "./util/getErrorDetails.js";
19
- export { getObjValueByPath } from "./util/getObjValueByPath.js";
20
- export { getRandomInt } from "./util/getRandomInt.js";
21
- export { getURLParam } from "./util/getURLParam.js";
22
- export { loadJSON } from "./util/loadJSON.js";
23
- export { purgeObject } from "./util/purgeObject.js";
24
- export { sanitizeURLParam } from "./util/sanitizeURLParam.js";
25
- export { saveAsFile } from "./util/saveAsFile.js";
26
- export { serverDataToState } from "./util/serverDataToState.js";
27
- export { setObjValueByPath } from "./util/setObjValueByPath.js";
28
- export { underscoreToCamelCase } from "./util/underscoreToCamelCase.js";
29
20
  export { formatLogMessage, getLogLevelName } from "./logging/util.js";
30
- export { FetchError, fetchRetry, HTTP_0_ANY } from "./util/fetchRetry.js";
31
- export { addFloat, fixFloat, subFloat } from "./util/safeFloat.js";
21
+ export { FetchError, fetchRetry, HTTP_0_ANY } from "./util/fetch.js";
32
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/logging/util.js"],"names":[],"mappings":"AAUO,yCANI,OAAO,aAAa,EAAE,MAAM,aAC5B,MAAM,SACN,MAAM,WACN,MAAM,GACJ,MAAM,CAE8F;AAO1G,uCAHI,MAAM,GACJ,MAAM,CAE6C;AAMzD,qCAFM,MAAM,CAmBlB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/logging/util.js"],"names":[],"mappings":"AAYO,yCANI,OAAO,aAAa,EAAE,MAAM,aAC5B,MAAM,SACN,MAAM,WACN,MAAM,GACJ,MAAM,CAE8F;AAO1G,uCAHI,MAAM,GACJ,MAAM,CAE6C;AAMzD,qCAFM,MAAM,CAmBlB"}
@@ -1,8 +1,8 @@
1
- export function addPageLifecycleCallback(state: import("./typedef.js").DocumentState | import("./typedef.js").PageLifecycleState, callback: () => void): void;
2
1
  export function initPageLifecycle(): void;
3
2
  export function getPageLifecycleState(): string | null | undefined;
4
3
  export function getDocumentState(): import("./typedef.js").DocumentState | null | undefined;
5
4
  export function getPageLifecycleEventEmitter(): EventEmitter;
6
5
  export function isPageLifecycleInitialized(): boolean;
6
+ export function addPageLifecycleCallback(state: import("./typedef.js").DocumentState | import("./typedef.js").PageLifecycleState, callback: () => void): void;
7
7
  import { EventEmitter } from 'eventemitter3';
8
8
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/util.js"],"names":[],"mappings":"AAsCO,gDAHI,OAAO,cAAc,EAAE,aAAa,GAAG,OAAO,cAAc,EAAE,kBAAkB,YAChF,MAAM,IAAI,QAMpB;AAgEM,0CAyBN;AAMM,yCAFM,MAAM,GAAG,IAAI,GAAG,SAAS,CAIrC;AAMM,oCAFM,OAAO,cAAc,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAInE;AAMM,gDAFM,YAAY,CAOxB;AAMM,8CAFM,OAAO,CAInB;6BAjK4B,eAAe"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/util.js"],"names":[],"mappings":"AAiGO,0CAyBN;AAMM,yCAFM,MAAM,GAAG,IAAI,GAAG,SAAS,CAE8B;AAM7D,oCAFM,OAAO,cAAc,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAEV;AAMnD,gDAFM,YAAY,CAOxB;AAMM,8CAFM,OAAO,CAEyC;AAOtD,gDAHI,OAAO,cAAc,EAAE,aAAa,GAAG,OAAO,cAAc,EAAE,kBAAkB,YAChF,MAAM,IAAI,QAMpB;6BA3J4B,eAAe"}
@@ -0,0 +1,3 @@
1
+ export function delayPromise(delayMS: number): Promise<void>;
2
+ export function loadJSON(url: string): Promise<string>;
3
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../src/util/async.js"],"names":[],"mappings":"AAKO,sCAHI,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAKtB;AAOG,8BAHI,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAM3B"}
@@ -1,2 +1,2 @@
1
1
  export function getErrorDetails(error: Error, excludes?: string[]): object;
2
- //# sourceMappingURL=getErrorDetails.d.ts.map
2
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/util/error.js"],"names":[],"mappings":"AAMO,uCAJI,KAAK,aACL,MAAM,EAAE,GACN,MAAM,CAmBlB"}
@@ -18,4 +18,4 @@ export function fetchRetry(resource: string | URL | Request, fetchOptions: Reque
18
18
  statusExcludes?: number[];
19
19
  timeout?: number;
20
20
  }): Promise<Response>;
21
- //# sourceMappingURL=fetchRetry.d.ts.map
21
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/util/fetch.js"],"names":[],"mappings":"AAcA,yBAA0B,CAAC,CAAC;AAE5B;IACE;;;;;;OAMG;IACH,qBALW,MAAM,YACN,MAAM,GAAG,GAAG,GAAG,OAAO,gBACtB,WAAW,YACX,QAAQ,EAQlB;IAHC,iCAAwB;IACxB,0BAAgC;IAChC,mBAAwB;CAE3B;AASM,qCALI,MAAM,GAAG,GAAG,GAAG,OAAO,gBACtB,WAAW,iBACX;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAC,GAC9E,OAAO,CAAC,QAAQ,CAAC,CAgD7B"}
@@ -0,0 +1,13 @@
1
+ export function deg2rad(deg: number): number;
2
+ export function getRandomInt(min: number, max: number): number;
3
+ export function fixFloatPrecision(value: number | string): number;
4
+ export function fixFloat(value: number, p?: number): number;
5
+ export function addFloat(a: number, b: number): number;
6
+ export function subFloat(a: number, b: number): number;
7
+ export function isGt(value: number, min: number): boolean;
8
+ export function isGtOrEq(value: number, min: number): boolean;
9
+ export function isLe(value: number, min: number): boolean;
10
+ export function isLeOrEq(value: number, min: number): boolean;
11
+ export function isInRange(value: number, min: number, max: number): boolean;
12
+ export function isEq(value: number, expected: number): boolean;
13
+ //# sourceMappingURL=number.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/util/number.js"],"names":[],"mappings":"AAKO,6BAHI,MAAM,GACJ,MAAM,CAEkC;AAQ9C,kCAJI,MAAM,OACN,MAAM,GACJ,MAAM,CAEwE;AAOpF,yCAHI,MAAM,GAAG,MAAM,GACb,MAAM,CAYlB;AAQM,gCAJI,MAAM,MACN,MAAM,GACJ,MAAM,CAE0D;AAQtE,4BAJI,MAAM,KACN,MAAM,GACJ,MAAM,CAKlB;AAQM,4BAJI,MAAM,KACN,MAAM,GACJ,MAAM,CAKlB;AASM,4BALI,MAAM,OACN,MAAM,GACJ,OAAO,CAG2B;AASxC,gCALI,MAAM,OACN,MAAM,GACJ,OAAO,CAGgC;AAS7C,4BALI,MAAM,OACN,MAAM,GACJ,OAAO,CAG2B;AASxC,gCALI,MAAM,OACN,MAAM,GACJ,OAAO,CAGgC;AAU7C,iCANI,MAAM,OACN,MAAM,OACN,MAAM,GACJ,OAAO,CAGsD;AASnE,4BALI,MAAM,YACN,MAAM,GACJ,OAAO,CAGuC"}
@@ -0,0 +1,6 @@
1
+ export function purgeObject(target: object): void;
2
+ export function deepMerge(target: object, source: object): object;
3
+ export function getObjArrayPropSum(arr: object[], prop: string): number;
4
+ export function getObjValueByPath(obj: object, path: string): object | null;
5
+ export function setObjValueByPath(obj: object, path: string, value: object | null | undefined): void;
6
+ //# sourceMappingURL=object.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/util/object.js"],"names":[],"mappings":"AAIO,oCAFI,MAAM,QAUhB;AAQM,kCAJI,MAAM,UACN,MAAM,GACJ,MAAM,CAuBlB;AAQM,wCAJI,MAAM,EAAE,QACR,MAAM,GACJ,MAAM,CAEgG;AAO5G,uCAJI,MAAM,QACN,MAAM,GACJ,MAAM,GAAG,IAAI,CAezB;AASM,uCALI,MAAM,QACN,MAAM,SACN,MAAM,GAAG,IAAI,GAAG,SAAS,QAqBnC"}
@@ -1,2 +1,3 @@
1
+ export function sanitizeURLParam(input: string): string;
1
2
  export function getURLParam<T>(key: string, defaultValue?: T, isSanitize?: boolean): string | T;
2
- //# sourceMappingURL=getURLParam.d.ts.map
3
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/util/query.js"],"names":[],"mappings":"AAOO,wCAHI,MAAM,GACJ,MAAM,CAOlB;AAUM,4BANM,CAAC,OACH,MAAM,iBACN,CAAC,eACD,OAAO,GACL,MAAM,GAAG,CAAC,CAWtB"}
@@ -1,2 +1,2 @@
1
1
  export function serverDataToState(data: object, isRecursive?: boolean): object;
2
- //# sourceMappingURL=serverDataToState.d.ts.map
2
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/util/state.js"],"names":[],"mappings":"AAQO,wCAJI,MAAM,gBACN,OAAO,GACL,MAAM,CAiBlB"}
@@ -0,0 +1,5 @@
1
+ export function addLeadingZero(value: number | string | null | undefined, size?: number): string | null;
2
+ export function capitalize(value: string | null | undefined): string | null;
3
+ export function underscoreToCamelCase(value: string): string;
4
+ export function saveAsFile(filename: string, text: string): void;
5
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/util/string.js"],"names":[],"mappings":"AAMO,sCAJI,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,SAClC,MAAM,GACJ,MAAM,GAAG,IAAI,CAWzB;AAOM,kCAHI,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,GAAG,IAAI,CAWzB;AAOM,6CAHI,MAAM,GACJ,MAAM,CAEmF;AAO/F,qCAHI,MAAM,QACN,MAAM,QAUhB"}
@@ -0,0 +1,54 @@
1
+ export function isBoolean(value: unknown): value is boolean;
2
+ export function isFunction(value: unknown): value is (...args: any[]) => any;
3
+ export function isNumber(value: unknown): value is number;
4
+ export function isPositiveNumber(value: unknown): value is number;
5
+ export function isNonNegativeNumber(value: unknown): value is number;
6
+ export function isInteger(value: unknown): value is number;
7
+ export function isPositiveInteger(value: unknown): value is number;
8
+ export function isNonNegativeInteger(value: unknown): value is number;
9
+ export function isString(value: unknown): value is string;
10
+ export function isArray<T>(value: unknown): value is T[];
11
+ export function isNull(value: unknown): value is null;
12
+ export function isUndefined(value: unknown): value is undefined;
13
+ export function isNullOrUndefined(value: unknown): value is null | undefined;
14
+ export function isPlainObject(value: unknown): value is Record<string, unknown>;
15
+ export function isInstance<T>(value: unknown, type: new (...args: any[]) => T): value is T;
16
+ export function isEnum(value: unknown, choices: unknown[] | Set<string | number> | Record<string | number, unknown>): boolean;
17
+ export function isArrayOf<T>(values: unknown, validator: (value: unknown) => value is T): values is T[];
18
+ export function isPlainObjectOf<T>(record: Record<string | number, unknown>, validator: (value: unknown) => value is T): record is Record<string | number, T>;
19
+ export function refineValidator<T>(base: (value: unknown) => value is T, predicate: (value: T) => boolean, name?: string | null): (value: unknown) => value is T;
20
+ export function isAnyOf<A, B>(a: (value: unknown) => value is A, b: (value: unknown) => value is B): (value: unknown) => value is A | B;
21
+ export function isNumberGreater(min: any): (value: unknown) => value is number;
22
+ export function isNumberGreaterOrEqual(min: any): (value: unknown) => value is number;
23
+ export function isNumberLess(min: any): (value: unknown) => value is number;
24
+ export function isNumberLessOrEqual(min: any): (value: unknown) => value is number;
25
+ export function isNumberInRange(min: any, max: any): (value: unknown) => value is number;
26
+ export function isNumberEqual(expected: any): (value: unknown) => value is number;
27
+ export function isIntegerGreater(min: any): (value: unknown) => value is number;
28
+ export function isIntegerGreaterOrEqual(min: any): (value: unknown) => value is number;
29
+ export function isIntegerLess(min: any): (value: unknown) => value is number;
30
+ export function isIntegerLessOrEqual(min: any): (value: unknown) => value is number;
31
+ export function isIntegerInRange(min: any, max: any): (value: unknown) => value is number;
32
+ export function isIntegerEqual(expected: any): (value: unknown) => value is number;
33
+ export function isStringLengthGreater(min: any): (value: unknown) => value is string;
34
+ export function isStringLengthGreaterOrEqual(min: any): (value: unknown) => value is string;
35
+ export function isStringLengthLess(min: any): (value: unknown) => value is string;
36
+ export function isStringLengthLessOrEqual(min: any): (value: unknown) => value is string;
37
+ export function isStringLengthInRange(min: any, max: any): (value: unknown) => value is string;
38
+ export function isStringLengthEqual(expected: any): (value: unknown) => value is string;
39
+ export function isArrayLengthGreater(min: any): (value: unknown) => value is unknown[];
40
+ export function isArrayLengthGreaterOrEqual(min: any): (value: unknown) => value is unknown[];
41
+ export function isArrayLengthLess(min: any): (value: unknown) => value is unknown[];
42
+ export function isArrayLengthLessOrEqual(min: any): (value: unknown) => value is unknown[];
43
+ export function isArrayLengthInRange(min: any, max: any): (value: unknown) => value is unknown[];
44
+ export function isArrayLengthEqual(expected: any): (value: unknown) => value is unknown[];
45
+ export class TypeCheckError extends TypeError {
46
+ /**
47
+ * Creates a new `TypeCheckError` instance.
48
+ * @param {string} message - Error message.
49
+ */
50
+ constructor(message: string);
51
+ }
52
+ export function typeCheck<T>(value: unknown, validator: (value: unknown) => value is T): T;
53
+ export function typeCheckArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[];
54
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/util/validate.js"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- /**
2
- * Add leading zeros to a value to ensure it has a minimum width.
3
- * @param {number | string | null | undefined} value - The value to pad with leading zeros.
4
- * @param {number} size - The minimum width of the resulting string.
5
- * @returns {string | null} The value padded with leading zeros or null if the input is null/undefined.
6
- */
7
- export const addLeadingZero = (value, size = 2) => {
8
- if (value === null || value === undefined) {
9
- return null;
10
- }
11
- value = value.toString();
12
- while (value.length < size) {
13
- value = `0${value}`;
14
- }
15
- return value;
16
- };
@@ -1,11 +0,0 @@
1
- import { addLeadingZero } from './addLeadingZero.js';
2
-
3
- test('Tests add leading zero', () => {
4
- expect(addLeadingZero(1)).toBe('01');
5
- expect(addLeadingZero('1')).toBe('01');
6
- expect(addLeadingZero(1, 3)).toBe('001');
7
- expect(addLeadingZero('21')).toBe('21');
8
- expect(addLeadingZero(21)).toBe('21');
9
- expect(addLeadingZero(null)).toBe(null);
10
- expect(addLeadingZero()).toBe(null);
11
- });
@@ -1,15 +0,0 @@
1
- /**
2
- * Capitalize a string.
3
- * @param {string | null | undefined} value - The input string to capitalize.
4
- * @returns {string | null} The capitalized string or null if the input is null/undefined.
5
- */
6
- export const capitalize = (value) => {
7
- if (value === null || value === undefined) {
8
- return null;
9
- }
10
- if (!value || value?.length === 0) {
11
- return value;
12
- }
13
- const normValue = value.toLowerCase();
14
- return normValue.charAt(0).toUpperCase() + normValue.slice(1);
15
- };
@@ -1,24 +0,0 @@
1
- /**
2
- * Merge two objects.
3
- * @param {object} target - Target merge object.
4
- * @param {object} source - Source merge object.
5
- * @returns {object} Merged result object.
6
- */
7
- export const deepMerge = (target, source) => {
8
- if (typeof target !== 'object' || target === null) return source;
9
- if (typeof source !== 'object' || source === null) return target;
10
-
11
- for (const key of Object.keys(source)) {
12
- if (key === '__proto__' || key === 'constructor') continue;
13
- if (typeof source[key] === 'object' && source[key] !== null) {
14
- if (!target[key] || typeof target[key] !== 'object') {
15
- target[key] = {};
16
- }
17
- deepMerge(target[key], source[key]);
18
- } else {
19
- target[key] = source[key];
20
- }
21
- }
22
-
23
- return target;
24
- };