@lucaismyname/l1-utils 0.0.8 → 0.0.11
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/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/json.d.ts +11 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +9 -0
- package/dist/json.js.map +1 -0
- package/dist/object.d.ts +7 -0
- package/dist/object.d.ts.map +1 -0
- package/dist/object.js +54 -0
- package/dist/object.js.map +1 -0
- package/dist/string.d.ts +6 -0
- package/dist/string.d.ts.map +1 -0
- package/dist/string.js +42 -0
- package/dist/string.js.map +1 -0
- package/dist/validate.d.ts +20 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +166 -0
- package/dist/validate.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAE1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AAEvB,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAE5B,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA;AAE1B,cAAc,QAAQ,CAAA;AACtB,cAAc,UAAU,CAAA"}
|
package/dist/json.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export type SafeJsonParseOk<T> = {
|
|
2
|
+
ok: true;
|
|
3
|
+
value: T;
|
|
4
|
+
};
|
|
5
|
+
export type SafeJsonParseErr = {
|
|
6
|
+
ok: false;
|
|
7
|
+
error: unknown;
|
|
8
|
+
};
|
|
9
|
+
export type SafeJsonParseResult<T> = SafeJsonParseOk<T> | SafeJsonParseErr;
|
|
10
|
+
export declare function safeJsonParse<T = unknown>(input: string): SafeJsonParseResult<T>;
|
|
11
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AACvD,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAA;AAC5D,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAA;AAE1E,wBAAgB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAMhF"}
|
package/dist/json.js
ADDED
package/dist/json.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,aAAa,CAAc,KAAa;IACtD,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,EAAE,CAAA;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;IAC7B,CAAC;AACH,CAAC"}
|
package/dist/object.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function deepMerge<T extends Record<string, unknown>, U extends Record<string, unknown>>(a: T, b: U): T & U;
|
|
2
|
+
export declare function pick<T extends Record<string, any>, K extends keyof T>(obj: T, keys: readonly K[]): Pick<T, K>;
|
|
3
|
+
export declare function omit<T extends Record<string, any>, K extends keyof T>(obj: T, keys: readonly K[]): Omit<T, K>;
|
|
4
|
+
export declare function compactObject<T>(value: T, opts?: {
|
|
5
|
+
removeNull?: boolean;
|
|
6
|
+
}): T;
|
|
7
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAOA,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5F,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,GACH,CAAC,GAAG,CAAC,CAeP;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,cAMhG;AAED,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,cAMhG;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,CAAC,CAkB7E"}
|
package/dist/object.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
function isPlainObject(value) {
|
|
2
|
+
if (typeof value !== 'object' || value === null)
|
|
3
|
+
return false;
|
|
4
|
+
if (Array.isArray(value))
|
|
5
|
+
return false;
|
|
6
|
+
const proto = Object.getPrototypeOf(value);
|
|
7
|
+
return proto === Object.prototype || proto === null;
|
|
8
|
+
}
|
|
9
|
+
export function deepMerge(a, b) {
|
|
10
|
+
const out = { ...a };
|
|
11
|
+
for (const [key, value] of Object.entries(b)) {
|
|
12
|
+
const existing = out[key];
|
|
13
|
+
if (isPlainObject(existing) && isPlainObject(value)) {
|
|
14
|
+
out[key] = deepMerge(existing, value);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
out[key] = value;
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
export function pick(obj, keys) {
|
|
22
|
+
const out = {};
|
|
23
|
+
for (const key of keys) {
|
|
24
|
+
if (key in obj)
|
|
25
|
+
out[key] = obj[key];
|
|
26
|
+
}
|
|
27
|
+
return out;
|
|
28
|
+
}
|
|
29
|
+
export function omit(obj, keys) {
|
|
30
|
+
const out = { ...obj };
|
|
31
|
+
for (const key of keys) {
|
|
32
|
+
delete out[key];
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
export function compactObject(value, opts) {
|
|
37
|
+
const removeNull = opts?.removeNull === true;
|
|
38
|
+
if (Array.isArray(value)) {
|
|
39
|
+
return value.map((v) => compactObject(v, opts));
|
|
40
|
+
}
|
|
41
|
+
if (isPlainObject(value)) {
|
|
42
|
+
const out = {};
|
|
43
|
+
for (const [k, v] of Object.entries(value)) {
|
|
44
|
+
if (v === undefined)
|
|
45
|
+
continue;
|
|
46
|
+
if (removeNull && v === null)
|
|
47
|
+
continue;
|
|
48
|
+
out[k] = compactObject(v, opts);
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../src/object.ts"],"names":[],"mappings":"AAAA,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC1C,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,CAAI,EACJ,CAAI;IAEJ,MAAM,GAAG,GAA4B,EAAE,GAAG,CAAC,EAAE,CAAA;IAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAI,GAAW,CAAC,GAAG,CAAC,CAAA;QAElC,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACrC,SAAQ;QACV,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAClB,CAAC;IAED,OAAO,GAAY,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,IAAI,CAAmD,GAAM,EAAE,IAAkB;IAC/F,MAAM,GAAG,GAAG,EAAgB,CAAA;IAC5B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,GAAG;YAAG,GAAW,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,IAAI,CAAmD,GAAM,EAAE,IAAkB;IAC/F,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,EAAgB,CAAA;IACpC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAQ,GAAW,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,aAAa,CAAI,KAAQ,EAAE,IAA+B;IACxE,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;IAE5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAQ,EAAE,IAAI,CAAC,CAAQ,CAAA;IAC/D,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAA4B,EAAE,CAAA;QACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,SAAS;gBAAE,SAAQ;YAC7B,IAAI,UAAU,IAAI,CAAC,KAAK,IAAI;gBAAE,SAAQ;YACtC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAQ,EAAE,IAAI,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,GAAU,CAAA;IACnB,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/dist/string.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function toKebabCase(input: string): string;
|
|
2
|
+
export declare function toSnakeCase(input: string): string;
|
|
3
|
+
export declare function toCamelCase(input: string): string;
|
|
4
|
+
export declare function toPascalCase(input: string): string;
|
|
5
|
+
export declare function truncate(input: string, maxLength: number, suffix?: string): string;
|
|
6
|
+
//# sourceMappingURL=string.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAExC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,UAIxC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,UAEzC;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAM,UAKtE"}
|
package/dist/string.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
function wordsFromString(input) {
|
|
2
|
+
const cleaned = input
|
|
3
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
4
|
+
.replace(/[_\-\.\s]+/g, ' ')
|
|
5
|
+
.trim();
|
|
6
|
+
if (!cleaned)
|
|
7
|
+
return [];
|
|
8
|
+
return cleaned
|
|
9
|
+
.split(' ')
|
|
10
|
+
.filter(Boolean)
|
|
11
|
+
.map((w) => w.toLowerCase());
|
|
12
|
+
}
|
|
13
|
+
function capitalize(word) {
|
|
14
|
+
if (!word)
|
|
15
|
+
return '';
|
|
16
|
+
return word[0].toUpperCase() + word.slice(1);
|
|
17
|
+
}
|
|
18
|
+
export function toKebabCase(input) {
|
|
19
|
+
return wordsFromString(input).join('-');
|
|
20
|
+
}
|
|
21
|
+
export function toSnakeCase(input) {
|
|
22
|
+
return wordsFromString(input).join('_');
|
|
23
|
+
}
|
|
24
|
+
export function toCamelCase(input) {
|
|
25
|
+
const words = wordsFromString(input);
|
|
26
|
+
if (words.length === 0)
|
|
27
|
+
return '';
|
|
28
|
+
return words[0] + words.slice(1).map(capitalize).join('');
|
|
29
|
+
}
|
|
30
|
+
export function toPascalCase(input) {
|
|
31
|
+
return wordsFromString(input).map(capitalize).join('');
|
|
32
|
+
}
|
|
33
|
+
export function truncate(input, maxLength, suffix = '…') {
|
|
34
|
+
if (maxLength <= 0)
|
|
35
|
+
return '';
|
|
36
|
+
if (input.length <= maxLength)
|
|
37
|
+
return input;
|
|
38
|
+
if (suffix.length >= maxLength)
|
|
39
|
+
return input.slice(0, maxLength);
|
|
40
|
+
return input.slice(0, maxLength - suffix.length) + suffix;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,OAAO,GAAG,KAAK;SAClB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,IAAI,EAAE,CAAA;IAET,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IAEvB,OAAO,OAAO;SACX,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,SAAiB,EAAE,MAAM,GAAG,GAAG;IACrE,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAC7B,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAChE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;AAC3D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare function isString(value: unknown): value is string;
|
|
2
|
+
export declare function isNonEmptyString(value: unknown): value is string;
|
|
3
|
+
export declare function isNumber(value: unknown): value is number;
|
|
4
|
+
export declare function isInt(value: unknown): value is number;
|
|
5
|
+
export declare function isFloat(value: unknown): value is number;
|
|
6
|
+
export declare function isBoolean(value: unknown): value is boolean;
|
|
7
|
+
export declare function isObject(value: unknown): value is Record<string, unknown>;
|
|
8
|
+
export declare function isUuid(value: unknown): value is string;
|
|
9
|
+
export declare function isUrl(value: unknown): value is string;
|
|
10
|
+
export declare function isSlug(value: unknown): value is string;
|
|
11
|
+
export declare function isHexColor(value: unknown): value is string;
|
|
12
|
+
export declare function isPhoneNumberE164(value: unknown): value is string;
|
|
13
|
+
export declare function isPostalCode(value: unknown, countryCode?: string): value is string;
|
|
14
|
+
export declare function isIsoDateString(value: unknown): value is string;
|
|
15
|
+
export declare function isIsoDateTimeString(value: unknown): value is string;
|
|
16
|
+
export declare function isEmail(value: unknown): value is string;
|
|
17
|
+
export declare function isBic(value: unknown): value is string;
|
|
18
|
+
export declare function isIban(value: unknown): value is string;
|
|
19
|
+
export declare function isCreditCardNumber(value: unknown): value is string;
|
|
20
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAErD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAItD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CASrD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAKtD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAI1D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAIjE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,MAAM,CAWlF;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAM/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAQnE;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAKvD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAIrD;AAuBD,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAUtD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAqBlE"}
|
package/dist/validate.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
export function isString(value) {
|
|
2
|
+
return typeof value === 'string';
|
|
3
|
+
}
|
|
4
|
+
export function isNonEmptyString(value) {
|
|
5
|
+
return typeof value === 'string' && value.trim().length > 0;
|
|
6
|
+
}
|
|
7
|
+
export function isNumber(value) {
|
|
8
|
+
return typeof value === 'number' && Number.isFinite(value);
|
|
9
|
+
}
|
|
10
|
+
export function isInt(value) {
|
|
11
|
+
return isNumber(value) && Number.isInteger(value);
|
|
12
|
+
}
|
|
13
|
+
export function isFloat(value) {
|
|
14
|
+
return isNumber(value) && !Number.isInteger(value);
|
|
15
|
+
}
|
|
16
|
+
export function isBoolean(value) {
|
|
17
|
+
return typeof value === 'boolean';
|
|
18
|
+
}
|
|
19
|
+
export function isObject(value) {
|
|
20
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
21
|
+
}
|
|
22
|
+
export function isUuid(value) {
|
|
23
|
+
if (typeof value !== 'string')
|
|
24
|
+
return false;
|
|
25
|
+
const s = value.trim().toLowerCase();
|
|
26
|
+
return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(s);
|
|
27
|
+
}
|
|
28
|
+
export function isUrl(value) {
|
|
29
|
+
if (typeof value !== 'string')
|
|
30
|
+
return false;
|
|
31
|
+
const s = value.trim();
|
|
32
|
+
try {
|
|
33
|
+
const u = new URL(s);
|
|
34
|
+
return u.protocol === 'http:' || u.protocol === 'https:';
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function isSlug(value) {
|
|
41
|
+
if (typeof value !== 'string')
|
|
42
|
+
return false;
|
|
43
|
+
const s = value.trim();
|
|
44
|
+
if (!s)
|
|
45
|
+
return false;
|
|
46
|
+
return /^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(s);
|
|
47
|
+
}
|
|
48
|
+
export function isHexColor(value) {
|
|
49
|
+
if (typeof value !== 'string')
|
|
50
|
+
return false;
|
|
51
|
+
const s = value.trim();
|
|
52
|
+
return /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(s);
|
|
53
|
+
}
|
|
54
|
+
export function isPhoneNumberE164(value) {
|
|
55
|
+
if (typeof value !== 'string')
|
|
56
|
+
return false;
|
|
57
|
+
const s = value.trim();
|
|
58
|
+
return /^\+[1-9]\d{1,14}$/.test(s);
|
|
59
|
+
}
|
|
60
|
+
export function isPostalCode(value, countryCode) {
|
|
61
|
+
if (typeof value !== 'string')
|
|
62
|
+
return false;
|
|
63
|
+
const s = value.trim();
|
|
64
|
+
if (!s)
|
|
65
|
+
return false;
|
|
66
|
+
const cc = countryCode?.trim().toUpperCase();
|
|
67
|
+
if (cc === 'DE' || cc === 'AT' || cc === 'CH')
|
|
68
|
+
return /^\d{4,5}$/.test(s);
|
|
69
|
+
if (cc === 'US')
|
|
70
|
+
return /^\d{5}(-\d{4})?$/.test(s);
|
|
71
|
+
if (cc === 'GB')
|
|
72
|
+
return /^[A-Z]{1,2}\d[A-Z\d]?\s*\d[A-Z]{2}$/i.test(s);
|
|
73
|
+
return /^[A-Z0-9][A-Z0-9 \-]{1,18}[A-Z0-9]$/i.test(s);
|
|
74
|
+
}
|
|
75
|
+
export function isIsoDateString(value) {
|
|
76
|
+
if (typeof value !== 'string')
|
|
77
|
+
return false;
|
|
78
|
+
const s = value.trim();
|
|
79
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(s))
|
|
80
|
+
return false;
|
|
81
|
+
const t = Date.parse(`${s}T00:00:00.000Z`);
|
|
82
|
+
return Number.isFinite(t);
|
|
83
|
+
}
|
|
84
|
+
export function isIsoDateTimeString(value) {
|
|
85
|
+
if (typeof value !== 'string')
|
|
86
|
+
return false;
|
|
87
|
+
const s = value.trim();
|
|
88
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:\d{2})$/.test(s)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
const t = Date.parse(s);
|
|
92
|
+
return Number.isFinite(t);
|
|
93
|
+
}
|
|
94
|
+
export function isEmail(value) {
|
|
95
|
+
if (typeof value !== 'string')
|
|
96
|
+
return false;
|
|
97
|
+
const s = value.trim();
|
|
98
|
+
if (s.length < 3 || s.length > 254)
|
|
99
|
+
return false;
|
|
100
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s);
|
|
101
|
+
}
|
|
102
|
+
export function isBic(value) {
|
|
103
|
+
if (typeof value !== 'string')
|
|
104
|
+
return false;
|
|
105
|
+
const s = value.trim().toUpperCase();
|
|
106
|
+
return /^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$/.test(s);
|
|
107
|
+
}
|
|
108
|
+
function ibanToNumericString(iban) {
|
|
109
|
+
const rearranged = (iban.slice(4) + iban.slice(0, 4)).toUpperCase();
|
|
110
|
+
let out = '';
|
|
111
|
+
for (const ch of rearranged) {
|
|
112
|
+
if (ch >= '0' && ch <= '9')
|
|
113
|
+
out += ch;
|
|
114
|
+
else if (ch >= 'A' && ch <= 'Z')
|
|
115
|
+
out += String(ch.charCodeAt(0) - 55);
|
|
116
|
+
else
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
return out;
|
|
120
|
+
}
|
|
121
|
+
function mod97(numStr) {
|
|
122
|
+
let remainder = 0;
|
|
123
|
+
for (let i = 0; i < numStr.length; i++) {
|
|
124
|
+
const code = numStr.charCodeAt(i);
|
|
125
|
+
if (code < 48 || code > 57)
|
|
126
|
+
return NaN;
|
|
127
|
+
remainder = (remainder * 10 + (code - 48)) % 97;
|
|
128
|
+
}
|
|
129
|
+
return remainder;
|
|
130
|
+
}
|
|
131
|
+
export function isIban(value) {
|
|
132
|
+
if (typeof value !== 'string')
|
|
133
|
+
return false;
|
|
134
|
+
const iban = value.replace(/\s+/g, '').toUpperCase();
|
|
135
|
+
if (iban.length < 15 || iban.length > 34)
|
|
136
|
+
return false;
|
|
137
|
+
if (!/^[A-Z]{2}[0-9]{2}[A-Z0-9]+$/.test(iban))
|
|
138
|
+
return false;
|
|
139
|
+
const numeric = ibanToNumericString(iban);
|
|
140
|
+
if (!numeric)
|
|
141
|
+
return false;
|
|
142
|
+
return mod97(numeric) === 1;
|
|
143
|
+
}
|
|
144
|
+
export function isCreditCardNumber(value) {
|
|
145
|
+
if (typeof value !== 'string')
|
|
146
|
+
return false;
|
|
147
|
+
const digits = value.replace(/[\s-]+/g, '');
|
|
148
|
+
if (!/^\d{12,19}$/.test(digits))
|
|
149
|
+
return false;
|
|
150
|
+
let sum = 0;
|
|
151
|
+
let shouldDouble = false;
|
|
152
|
+
for (let i = digits.length - 1; i >= 0; i--) {
|
|
153
|
+
let digit = digits.charCodeAt(i) - 48;
|
|
154
|
+
if (digit < 0 || digit > 9)
|
|
155
|
+
return false;
|
|
156
|
+
if (shouldDouble) {
|
|
157
|
+
digit *= 2;
|
|
158
|
+
if (digit > 9)
|
|
159
|
+
digit -= 9;
|
|
160
|
+
}
|
|
161
|
+
sum += digit;
|
|
162
|
+
shouldDouble = !shouldDouble;
|
|
163
|
+
}
|
|
164
|
+
return sum % 10 === 0;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|