ejv 1.1.11 → 2.0.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.
- package/.eslintrc.json +88 -0
- package/.mocharc.json +8 -0
- package/CHANGELOG.md +109 -68
- package/LICENSE +21 -21
- package/README-KR.md +596 -592
- package/README.md +599 -595
- package/build/{constants.js → cjs/constants.js} +44 -45
- package/build/cjs/constants.js.map +1 -0
- package/build/cjs/ejv.js +1263 -0
- package/build/cjs/ejv.js.map +1 -0
- package/build/{public_api.js → cjs/index.js} +4 -4
- package/build/cjs/index.js.map +1 -0
- package/build/cjs/interfaces.js +29 -0
- package/build/cjs/interfaces.js.map +1 -0
- package/build/cjs/package.json +1 -0
- package/build/{tester.js → cjs/tester.js} +87 -82
- package/build/cjs/tester.js.map +1 -0
- package/build/cjs/util.js +103 -0
- package/build/cjs/util.js.map +1 -0
- package/build/constants.d.ts +36 -39
- package/build/esm/constants.js +115 -0
- package/build/esm/constants.js.map +1 -0
- package/build/esm/ejv.js +1261 -0
- package/build/esm/ejv.js.map +1 -0
- package/build/esm/index.js +4 -0
- package/build/esm/index.js.map +1 -0
- package/build/esm/interfaces.js +33 -0
- package/build/esm/interfaces.js.map +1 -0
- package/build/esm/package.json +1 -0
- package/build/esm/tester.js +240 -0
- package/build/esm/tester.js.map +1 -0
- package/build/esm/util.js +96 -0
- package/build/esm/util.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/interfaces.d.ts +53 -13
- package/build/scripts/add-js-extensions.js +46 -0
- package/build/scripts/add-js-extensions.js.map +1 -0
- package/build/tester.d.ts +16 -17
- package/build/util.d.ts +7 -1
- package/package.json +50 -39
- package/scripts/add-js-extensions.ts +59 -0
- package/spec/ArrayScheme.ts +1021 -0
- package/spec/CommonScheme.ts +251 -0
- package/spec/DateScheme.ts +472 -0
- package/spec/NumberScheme.ts +1032 -0
- package/spec/ObjectScheme.ts +499 -0
- package/spec/RegExpScheme.ts +112 -0
- package/spec/StringScheme.ts +1239 -0
- package/spec/common-test-util.ts +63 -0
- package/spec/ejv.spec.ts +209 -4634
- package/spec/testers.spec.ts +833 -832
- package/src/constants.ts +155 -156
- package/src/ejv.ts +1648 -1071
- package/src/index.ts +14 -0
- package/src/interfaces.ts +149 -63
- package/src/tester.ts +308 -302
- package/src/util.ts +124 -59
- package/tsconfig.cjs.json +8 -0
- package/tsconfig.esm.json +7 -0
- package/tsconfig.json +22 -19
- package/tsconfig.scripts.json +14 -0
- package/tsconfig.types.json +9 -0
- package/build/constants.js.map +0 -1
- package/build/ejv.js +0 -687
- package/build/ejv.js.map +0 -1
- package/build/interfaces.js +0 -15
- package/build/interfaces.js.map +0 -1
- package/build/public_api.d.ts +0 -3
- package/build/public_api.js.map +0 -1
- package/build/tester.js.map +0 -1
- package/build/util.js +0 -68
- package/build/util.js.map +0 -1
- package/spec/common-test-runner.ts +0 -17
- package/src/public_api.ts +0 -3
- package/tsconfig.spec.json +0 -19
package/src/util.ts
CHANGED
|
@@ -1,59 +1,124 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
1
|
+
import { AnyObject } from './interfaces';
|
|
2
|
+
import { ErrorMsg } from './constants';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
enum CloneDataType {
|
|
6
|
+
Boolean = 'boolean',
|
|
7
|
+
Number = 'number',
|
|
8
|
+
Function = 'function',
|
|
9
|
+
String = 'string',
|
|
10
|
+
Buffer = 'buffer',
|
|
11
|
+
Object = 'object',
|
|
12
|
+
Array = 'array',
|
|
13
|
+
Date = 'date',
|
|
14
|
+
RegExp = 'regexp'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const isArray = <T> (value: unknown): value is T[] => {
|
|
18
|
+
return value !== undefined
|
|
19
|
+
&& value !== null
|
|
20
|
+
&& Array.isArray(value);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
// sanitize removes undefined & null fields from object. default false
|
|
25
|
+
export const clone = <T> (obj: T, sanitize?: boolean): T => {
|
|
26
|
+
let result !: T;
|
|
27
|
+
|
|
28
|
+
if (obj) {
|
|
29
|
+
let type: CloneDataType = typeof obj as CloneDataType;
|
|
30
|
+
|
|
31
|
+
if (type === CloneDataType.Object) {
|
|
32
|
+
const objAsObject: AnyObject = obj as unknown as AnyObject;
|
|
33
|
+
|
|
34
|
+
if (isArray(objAsObject)) {
|
|
35
|
+
type = CloneDataType.Array;
|
|
36
|
+
}
|
|
37
|
+
else if (objAsObject instanceof Date) {
|
|
38
|
+
type = CloneDataType.Date;
|
|
39
|
+
}
|
|
40
|
+
else if (objAsObject instanceof RegExp) {
|
|
41
|
+
type = CloneDataType.RegExp;
|
|
42
|
+
}
|
|
43
|
+
else if (objAsObject.byteLength
|
|
44
|
+
&& typeof objAsObject.byteLength === 'function') {
|
|
45
|
+
type = CloneDataType.Buffer;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
switch (type) {
|
|
50
|
+
case CloneDataType.Date: {
|
|
51
|
+
const objAsDate: Date = obj as unknown as Date;
|
|
52
|
+
result = new Date(objAsDate) as unknown as T;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
case CloneDataType.Array: {
|
|
57
|
+
const objAsArray: unknown[] = obj as unknown as unknown[];
|
|
58
|
+
result = objAsArray.map((one: unknown): unknown => {
|
|
59
|
+
return clone(one);
|
|
60
|
+
}) as unknown as T;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
case CloneDataType.Object: {
|
|
65
|
+
// sanitize default false
|
|
66
|
+
result = {} as unknown as T;
|
|
67
|
+
|
|
68
|
+
const entries: [string, unknown][] = Object.entries(obj)
|
|
69
|
+
.filter(([, value]): boolean => {
|
|
70
|
+
return sanitize
|
|
71
|
+
? value !== undefined && value !== null
|
|
72
|
+
: true;
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
for (const [key, value] of entries) {
|
|
77
|
+
// call recursively
|
|
78
|
+
(result as unknown as AnyObject)[key] = clone(value, sanitize);
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
default:
|
|
84
|
+
// simple copy
|
|
85
|
+
result = obj;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
result = obj; // do not copy null & undefined
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return result;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
export const sift = <T> (arr: T[]): T[] => {
|
|
97
|
+
return arr.reduce((acc: T[], cur: T) => {
|
|
98
|
+
if (cur !== null && cur !== undefined && !acc.includes(cur)) {
|
|
99
|
+
acc.push(cur);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return acc;
|
|
103
|
+
}, []);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
export const createErrorMsg = (errorMsg: ErrorMsg, param?: {
|
|
108
|
+
placeholders?: (string | number)[]
|
|
109
|
+
}): string => {
|
|
110
|
+
let result: string = errorMsg;
|
|
111
|
+
|
|
112
|
+
if (param?.placeholders) {
|
|
113
|
+
param.placeholders.forEach((strToReplace: string | number, i: number): void => {
|
|
114
|
+
result = result.replace(
|
|
115
|
+
`<<${ i + 1 }>>`,
|
|
116
|
+
typeof strToReplace === 'string'
|
|
117
|
+
? strToReplace
|
|
118
|
+
: '' + strToReplace
|
|
119
|
+
);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return result;
|
|
124
|
+
};
|
package/tsconfig.json
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"sourceMap": true,
|
|
5
|
+
"forceConsistentCasingInFileNames": true,
|
|
6
|
+
"strict": true,
|
|
7
|
+
"noImplicitReturns": true,
|
|
8
|
+
"noFallthroughCasesInSwitch": true,
|
|
9
|
+
"lib": [
|
|
10
|
+
"ES2022",
|
|
11
|
+
"dom"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"include": [
|
|
15
|
+
"src"
|
|
16
|
+
],
|
|
17
|
+
"exclude": [
|
|
18
|
+
"node_modules",
|
|
19
|
+
"spec",
|
|
20
|
+
"scripts"
|
|
21
|
+
]
|
|
22
|
+
}
|
package/build/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|