@heyform-inc/utils 1.0.6 → 1.0.8
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.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +16 -97
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +11 -97
- package/dist/index.mjs.map +1 -1
- package/package.json +71 -71
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export * from 'deep-object-diff';
|
|
2
2
|
import dayjs, { QUnitType, OpUnitType } from 'dayjs';
|
|
3
3
|
import visUUID from 'validator/lib/isUUID';
|
|
4
|
+
import visFQDN from 'validator/lib/isFQDN';
|
|
4
5
|
import { IsNumericOptions } from 'validator/lib/isNumeric';
|
|
5
6
|
import { IsEmailOptions } from 'validator/lib/isEmail';
|
|
6
7
|
import { IsURLOptions } from 'validator/lib/isURL';
|
|
7
8
|
import * as m from 'mime-types';
|
|
8
9
|
export { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
|
|
9
|
-
export
|
|
10
|
+
export { deepEqual } from 'fast-equals';
|
|
10
11
|
|
|
11
12
|
declare function parseBytes(value: string | number): number | undefined;
|
|
12
13
|
declare function bytes(size: string): number | undefined;
|
|
@@ -67,6 +68,7 @@ declare function isURL(arg: any, options?: IsURLOptions): boolean;
|
|
|
67
68
|
declare function isEmail(arg: any, options?: IsEmailOptions): boolean;
|
|
68
69
|
declare const _default$1: {
|
|
69
70
|
isUUID: typeof visUUID;
|
|
71
|
+
isFQDN: typeof visFQDN;
|
|
70
72
|
isBoolean: typeof isBoolean;
|
|
71
73
|
isString: typeof isString;
|
|
72
74
|
isNumber: typeof isNumber;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export * from 'deep-object-diff';
|
|
2
2
|
import dayjs, { QUnitType, OpUnitType } from 'dayjs';
|
|
3
3
|
import visUUID from 'validator/lib/isUUID';
|
|
4
|
+
import visFQDN from 'validator/lib/isFQDN';
|
|
4
5
|
import { IsNumericOptions } from 'validator/lib/isNumeric';
|
|
5
6
|
import { IsEmailOptions } from 'validator/lib/isEmail';
|
|
6
7
|
import { IsURLOptions } from 'validator/lib/isURL';
|
|
7
8
|
import * as m from 'mime-types';
|
|
8
9
|
export { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
|
|
9
|
-
export
|
|
10
|
+
export { deepEqual } from 'fast-equals';
|
|
10
11
|
|
|
11
12
|
declare function parseBytes(value: string | number): number | undefined;
|
|
12
13
|
declare function bytes(size: string): number | undefined;
|
|
@@ -67,6 +68,7 @@ declare function isURL(arg: any, options?: IsURLOptions): boolean;
|
|
|
67
68
|
declare function isEmail(arg: any, options?: IsEmailOptions): boolean;
|
|
68
69
|
declare const _default$1: {
|
|
69
70
|
isUUID: typeof visUUID;
|
|
71
|
+
isFQDN: typeof visFQDN;
|
|
70
72
|
isBoolean: typeof isBoolean;
|
|
71
73
|
isString: typeof isString;
|
|
72
74
|
isNumber: typeof isNumber;
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var deepObjectDiff = require('deep-object-diff');
|
|
4
4
|
var visUUID = require('validator/lib/isUUID');
|
|
5
|
+
var visFQDN = require('validator/lib/isFQDN');
|
|
5
6
|
var visNumeric = require('validator/lib/isNumeric');
|
|
6
7
|
var visEmail = require('validator/lib/isEmail');
|
|
7
8
|
var visURL = require('validator/lib/isURL');
|
|
@@ -10,7 +11,7 @@ var dayjs = require('dayjs');
|
|
|
10
11
|
var m = require('mime-types');
|
|
11
12
|
var nanoid$1 = require('nanoid');
|
|
12
13
|
var objectPath = require('object-path');
|
|
13
|
-
var
|
|
14
|
+
var fastEquals = require('fast-equals');
|
|
14
15
|
var slug = require('slugify');
|
|
15
16
|
var uuid = require('uuid');
|
|
16
17
|
|
|
@@ -35,6 +36,7 @@ function _interopNamespace(e) {
|
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
var visUUID__default = /*#__PURE__*/_interopDefault(visUUID);
|
|
39
|
+
var visFQDN__default = /*#__PURE__*/_interopDefault(visFQDN);
|
|
38
40
|
var visNumeric__default = /*#__PURE__*/_interopDefault(visNumeric);
|
|
39
41
|
var visEmail__default = /*#__PURE__*/_interopDefault(visEmail);
|
|
40
42
|
var visURL__default = /*#__PURE__*/_interopDefault(visURL);
|
|
@@ -42,78 +44,9 @@ var _clone__default = /*#__PURE__*/_interopDefault(_clone);
|
|
|
42
44
|
var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
|
|
43
45
|
var m__namespace = /*#__PURE__*/_interopNamespace(m);
|
|
44
46
|
var objectPath__namespace = /*#__PURE__*/_interopNamespace(objectPath);
|
|
45
|
-
var fast_equals_star__namespace = /*#__PURE__*/_interopNamespace(fast_equals_star);
|
|
46
47
|
var slug__default = /*#__PURE__*/_interopDefault(slug);
|
|
47
48
|
|
|
48
|
-
var __defProp = Object.defineProperty;
|
|
49
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
50
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
51
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
52
|
-
var __export = (target, all) => {
|
|
53
|
-
for (var name in all)
|
|
54
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
55
|
-
};
|
|
56
|
-
var __copyProps = (to, from, except, desc) => {
|
|
57
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
58
|
-
for (let key of __getOwnPropNames(from))
|
|
59
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
60
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
61
|
-
}
|
|
62
|
-
return to;
|
|
63
|
-
};
|
|
64
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget );
|
|
65
|
-
|
|
66
49
|
// src/index.ts
|
|
67
|
-
var src_exports = {};
|
|
68
|
-
__export(src_exports, {
|
|
69
|
-
RandomType: () => RandomType,
|
|
70
|
-
alpha: () => alpha,
|
|
71
|
-
alphaHexToRgb: () => alphaHexToRgb,
|
|
72
|
-
bytes: () => bytes,
|
|
73
|
-
clone: () => clone,
|
|
74
|
-
colorBrightness: () => colorBrightness,
|
|
75
|
-
commonFileMimeTypes: () => commonFileMimeTypes,
|
|
76
|
-
commonImageMimeTypes: () => commonImageMimeTypes,
|
|
77
|
-
copyObjectValues: () => copyObjectValues,
|
|
78
|
-
darken: () => darken,
|
|
79
|
-
date: () => date,
|
|
80
|
-
datePeriod: () => datePeriod,
|
|
81
|
-
formatBytes: () => formatBytes,
|
|
82
|
-
helper: () => helper_default,
|
|
83
|
-
hexToRgb: () => hexToRgb,
|
|
84
|
-
hs: () => hs,
|
|
85
|
-
htmlToText: () => htmlToText,
|
|
86
|
-
invert: () => invert,
|
|
87
|
-
isDarkColor: () => isDarkColor,
|
|
88
|
-
isDateExpired: () => isDateExpired,
|
|
89
|
-
isHexColor: () => isHexColor,
|
|
90
|
-
isLightColor: () => isLightColor,
|
|
91
|
-
isRgb: () => isRgb,
|
|
92
|
-
isRgba: () => isRgba,
|
|
93
|
-
lighten: () => lighten,
|
|
94
|
-
mime: () => mime,
|
|
95
|
-
ms: () => ms,
|
|
96
|
-
nanoid: () => nanoid,
|
|
97
|
-
nanoidCustomAlphabet: () => nanoidCustomAlphabet,
|
|
98
|
-
parseBool: () => parseBool,
|
|
99
|
-
parseBytes: () => parseBytes,
|
|
100
|
-
parseJson: () => parseJson,
|
|
101
|
-
parseNumber: () => parseNumber,
|
|
102
|
-
pickObject: () => pickObject,
|
|
103
|
-
pickValidValues: () => pickValidValues,
|
|
104
|
-
qs: () => qs_default,
|
|
105
|
-
random: () => random,
|
|
106
|
-
removeObjectNil: () => removeObjectNil,
|
|
107
|
-
rgbToHex: () => rgbToHex,
|
|
108
|
-
slugify: () => slugify,
|
|
109
|
-
timestamp: () => timestamp,
|
|
110
|
-
toBool: () => toBool,
|
|
111
|
-
type: () => type,
|
|
112
|
-
unixDate: () => unixDate,
|
|
113
|
-
unixDiff: () => unixDiff,
|
|
114
|
-
uuidv4: () => uuid.v4,
|
|
115
|
-
uuidv5: () => uuid.v5
|
|
116
|
-
});
|
|
117
50
|
|
|
118
51
|
// src/type.ts
|
|
119
52
|
var toString = Object.prototype.toString;
|
|
@@ -139,6 +72,7 @@ function type(obj) {
|
|
|
139
72
|
// src/helper.ts
|
|
140
73
|
var whiteSpaceRegx = /^[\s\f\n\r\t\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff\x09\x0a\x0b\x0c\x0d\x20\xa0]+$/;
|
|
141
74
|
var isUUID = visUUID__default.default;
|
|
75
|
+
var isFQDN = visFQDN__default.default;
|
|
142
76
|
function isBoolean(arg) {
|
|
143
77
|
return type(arg) === "boolean";
|
|
144
78
|
}
|
|
@@ -189,23 +123,17 @@ function isNil(arg) {
|
|
|
189
123
|
return isNull(arg) || isUndefined(arg);
|
|
190
124
|
}
|
|
191
125
|
function isPlainObject(arg) {
|
|
192
|
-
if (!isObject(arg))
|
|
193
|
-
return false;
|
|
126
|
+
if (!isObject(arg)) return false;
|
|
194
127
|
const ctor = arg.constructor;
|
|
195
|
-
if (typeof ctor !== "function")
|
|
196
|
-
return false;
|
|
128
|
+
if (typeof ctor !== "function") return false;
|
|
197
129
|
const proto = ctor.prototype;
|
|
198
|
-
if (!isObject(proto))
|
|
199
|
-
return false;
|
|
130
|
+
if (!isObject(proto)) return false;
|
|
200
131
|
return proto.hasOwnProperty("isPrototypeOf");
|
|
201
132
|
}
|
|
202
133
|
function isEmpty(arg) {
|
|
203
|
-
if (isNil(arg))
|
|
204
|
-
|
|
205
|
-
if (
|
|
206
|
-
return false;
|
|
207
|
-
if (isNumber(arg))
|
|
208
|
-
return false;
|
|
134
|
+
if (isNil(arg)) return true;
|
|
135
|
+
if (isBoolean(arg)) return false;
|
|
136
|
+
if (isNumber(arg)) return false;
|
|
209
137
|
if (isString(arg)) {
|
|
210
138
|
return arg.length === 0 || whiteSpaceRegx.test(arg);
|
|
211
139
|
}
|
|
@@ -222,8 +150,7 @@ function isEmpty(arg) {
|
|
|
222
150
|
}
|
|
223
151
|
case "object": {
|
|
224
152
|
for (const key in arg) {
|
|
225
|
-
if (Object.hasOwnProperty.call(arg, key))
|
|
226
|
-
return false;
|
|
153
|
+
if (Object.hasOwnProperty.call(arg, key)) return false;
|
|
227
154
|
}
|
|
228
155
|
return true;
|
|
229
156
|
}
|
|
@@ -265,6 +192,7 @@ function isEmail(arg, options) {
|
|
|
265
192
|
}
|
|
266
193
|
var helper_default = {
|
|
267
194
|
isUUID,
|
|
195
|
+
isFQDN,
|
|
268
196
|
isBoolean,
|
|
269
197
|
isString,
|
|
270
198
|
isNumber,
|
|
@@ -568,16 +496,6 @@ function nanoidCustomAlphabet(alphabet, len = 21) {
|
|
|
568
496
|
const generate = nanoid$1.customAlphabet(alphabet, len);
|
|
569
497
|
return generate();
|
|
570
498
|
}
|
|
571
|
-
|
|
572
|
-
// src/object.ts
|
|
573
|
-
var object_exports = {};
|
|
574
|
-
__export(object_exports, {
|
|
575
|
-
copyObjectValues: () => copyObjectValues,
|
|
576
|
-
pickObject: () => pickObject,
|
|
577
|
-
pickValidValues: () => pickValidValues,
|
|
578
|
-
removeObjectNil: () => removeObjectNil
|
|
579
|
-
});
|
|
580
|
-
__reExport(object_exports, fast_equals_star__namespace);
|
|
581
499
|
function pickObject(target, fields, excludes = []) {
|
|
582
500
|
if (!isObject(target)) {
|
|
583
501
|
return {};
|
|
@@ -674,9 +592,6 @@ function copyObjectValues(target, dist, keyMaps) {
|
|
|
674
592
|
}
|
|
675
593
|
}
|
|
676
594
|
|
|
677
|
-
// src/index.ts
|
|
678
|
-
__reExport(src_exports, object_exports);
|
|
679
|
-
|
|
680
595
|
// src/parse.ts
|
|
681
596
|
function parseJson(str, defaultValue) {
|
|
682
597
|
let value;
|
|
@@ -820,6 +735,10 @@ function slugify(text, options) {
|
|
|
820
735
|
});
|
|
821
736
|
}
|
|
822
737
|
|
|
738
|
+
Object.defineProperty(exports, "deepEqual", {
|
|
739
|
+
enumerable: true,
|
|
740
|
+
get: function () { return fastEquals.deepEqual; }
|
|
741
|
+
});
|
|
823
742
|
Object.defineProperty(exports, "uuidv4", {
|
|
824
743
|
enumerable: true,
|
|
825
744
|
get: function () { return uuid.v4; }
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/helper.ts","../src/type.ts","../src/bytes.ts","../src/clone.ts","../src/color.ts","../src/conv.ts","../src/hs.ts","../src/date.ts","../src/mime.ts","../src/nanoid.ts","../src/object.ts","../src/parse.ts","../src/qs.ts","../src/random.ts","../src/slugify.ts","../src/uuid.ts"],"names":["type","red","green","blue","alpha","regx","parse","RandomType"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAc;;;ACAd,OAAO,aAAa;AACpB;AAAA,EACE,WAAW;AAAA,OAEN;AACP,SAAS,WAAW,gBAAgC;AACpD,SAAS,WAAW,cAA4B;;;ACNhD,IAAM,WAAW,OAAO,UAAU;AAE3B,SAAS,KAAK,KAAkB;AACrC,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AAEA,MAAIA,QAAe,OAAO;AAE1B,MAAIA,UAAS,UAAU;AACrB,WAAOA;AAAA,EACT;AAEA,EAAAA,QAAO,SAAS,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;AAErC,QAAM,YAAYA,MAAK,YAAY;AAEnC,MAAI,cAAc,UAAU;AAC1B,QACE,cAAc,YACd,cAAc,aACd,cAAc,UACd;AACA,aAAOA;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ADlBA,IAAM,iBACJ;AAEK,IAAM,SAAS;AAEf,SAAS,UAAU,KAAmB;AAC3C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,IAAM,UAAU,MAAM;AAEtB,SAAS,aAAa,KAAmB;AAC9C,SAAO,QAAQ,GAAG,KAAK,IAAI,SAAS;AACtC;AAEO,SAAS,MAAM,KAAmB;AACvC,SAAO,SAAS,GAAG,KAAK,OAAO,MAAM,GAAG;AAC1C;AAEO,SAAS,MAAM,KAAmB;AACvC,SAAO,KAAK,GAAG,MAAM;AACvB;AAMO,SAAS,MAAM,KAAmB;AACvC,SAAO,KAAK,GAAG,MAAM;AACvB;AAMO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,OAAO,KAAmB;AACxC,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,QAAQ,KAAmB;AACzC,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,WAAW,KAAmB;AAC5C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,OAAO,KAAmB;AACxC,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,YAAY,KAAmB;AAC7C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,MAAM,KAAmB;AACvC,SAAO,OAAO,GAAG,KAAK,YAAY,GAAG;AACvC;AAEO,SAAS,cAAc,KAAmB;AAC/C,MAAI,CAAC,SAAS,GAAG;AAAG,WAAO;AAE3B,QAAM,OAAO,IAAI;AACjB,MAAI,OAAO,SAAS;AAAY,WAAO;AAEvC,QAAM,QAAQ,KAAK;AACnB,MAAI,CAAC,SAAS,KAAK;AAAG,WAAO;AAE7B,SAAO,MAAM,eAAe,eAAe;AAC7C;AAEO,SAAS,QAAQ,KAAmB;AACzC,MAAI,MAAM,GAAG;AAAG,WAAO;AAEvB,MAAI,UAAU,GAAG;AAAG,WAAO;AAE3B,MAAI,SAAS,GAAG;AAAG,WAAO;AAE1B,MAAI,SAAS,GAAG,GAAG;AACjB,WAAO,IAAI,WAAW,KAAK,eAAe,KAAK,GAAG;AAAA,EACpD;AAEA,MAAI,WAAW,GAAG,KAAK,QAAQ,GAAG,GAAG;AACnC,WAAO,IAAI,WAAW;AAAA,EACxB;AAEA,UAAQ,KAAK,GAAG,GAAG;AAAA,IACjB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,WAAW;AACd,aAAO,IAAI,SAAS;AAAA,IACtB;AAAA,IAEA,KAAK,UAAU;AACb,iBAAW,OAAO,KAAK;AACrB,YAAI,OAAO,eAAe,KAAK,KAAK,GAAG;AAAG,iBAAO;AAAA,MACnD;AACA,aAAO;AAAA,IACT;AAAA,IAEA;AACE;AAAA,EACJ;AAEA,SAAO;AACT;AAEO,SAAS,QAAQ,KAAmB;AACzC,SAAO,CAAC,QAAQ,GAAG;AACrB;AAEO,SAAS,QAAQ,MAAW,MAAoB;AACrD,SAAO,OAAO,IAAI,MAAM,OAAO,IAAI;AACrC;AAEO,SAAS,OAAO,MAAoB;AACzC,SAAO,SAAS,QAAQ,SAAS,UAAU,QAAQ,MAAM,GAAG;AAC9D;AAEO,SAAS,QAAQ,MAAoB;AAC1C,SAAO,SAAS,SAAS,SAAS,WAAW,QAAQ,MAAM,GAAG;AAChE;AAEO,SAAS,OAAO,KAAmB;AACxC,SAAO,OAAO,GAAG,KAAK,QAAQ,GAAG;AACnC;AAEO,SAAS,WAAW,KAAmB;AAC5C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,YAAY,KAAiB;AAC3C,MAAI,CAAC,aAAa,GAAG,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC;AAChC;AAEO,SAAS,UAAU,KAAU,SAAqC;AACvE,SAAO,SAAS,GAAG,KAAM,SAAS,GAAG,KAAK,WAAW,KAAK,OAAO;AACnE;AAEO,SAAS,MAAM,KAAU,SAAiC;AAC/D,SAAO,QAAQ,GAAG,KAAK,SAAS,GAAG,KAAK,OAAO,KAAK,OAAO;AAC7D;AAEO,SAAS,QAAQ,KAAU,SAAmC;AACnE,SAAO,QAAQ,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,KAAK,OAAO;AAC/D;AAEA,IAAO,iBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AEpNA,IAAM,OAAO;AACb,IAAM,KAAK,OAAO;AAClB,IAAM,KAAK,KAAK;AAChB,IAAM,KAAK,KAAK;AAChB,IAAM,KAAK,KAAK;AAChB,IAAM,KAAK,KAAK;AAChB,IAAM,OAAO;AAEN,SAAS,WAAW,OAA4C;AACrE,MAAI,QAAQ,KAAK,GAAG;AAClB;AAAA,EACF;AAEA,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,UAAU,IAAI,MAAM,IAAI;AAE9B,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,QAAM,MAAM,WAAW,QAAQ,CAAC,CAAC;AACjC,QAAMA,QAAO,QAAQ,CAAC,EAAE,YAAY;AAEpC,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,EACjB;AACF;AAEO,SAAS,MAAM,MAAkC;AACtD,SAAO,WAAW,IAAI;AACxB;AAEO,SAAS,YAAY,OAAgC;AAC1D,QAAM,MAAM,KAAK,IAAI,OAAO,KAAK,CAAC;AAClC,MAAI;AACJ,MAAI;AAEJ,MAAI,OAAO,IAAI;AACb,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,OAAO;AACL,WAAO;AACP,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG;AAC9B,WAAO,KAAK,QAAQ,CAAC;AAAA,EACvB;AAEA,SAAO,OAAO;AAChB;;;AChFA,OAAO,YAAY;AAEZ,SAAS,MAAS,KAAW;AAClC,SAAO,OAAO,GAAG;AACnB;;;ACFA,IAAM,YAAY;AAClB,IAAM,aACJ;AACF,IAAM,YAAY;AAEX,SAAS,WAAW,OAAwB;AACjD,SAAO,UAAU,KAAK,KAAK;AAC7B;AAEO,SAAS,OAAO,OAAwB;AAC7C,SAAO,WAAW,KAAK,KAAK;AAC9B;AAEO,SAAS,MAAM,OAAwB;AAC5C,SAAO,UAAU,KAAK,KAAK;AAC7B;AAEO,SAAS,SAAS,KAAuB;AAC9C,MAAI,QAAQ,GAAG,GAAG;AAChB,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,OAAO,GAAG,GAAG;AAEf,UAAM,CAAC,EAAEC,MAAKC,QAAOC,OAAMC,MAAK,IAAI,WAAW,KAAK,GAAG;AACvD,WAAO,CAAC,OAAOH,IAAG,GAAG,OAAOC,MAAK,GAAG,OAAOC,KAAI,GAAG,OAAOC,MAAK,CAAC;AAAA,EACjE;AAEA,MAAI,MAAM,GAAG,GAAG;AAEd,UAAM,CAAC,EAAEH,MAAKC,QAAOC,KAAI,IAAI,UAAU,KAAK,GAAG;AAC/C,WAAO,CAAC,OAAOF,IAAG,GAAG,OAAOC,MAAK,GAAG,OAAOC,KAAI,GAAG,CAAC;AAAA,EACrD;AAEA,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,IAAI,QAAQ,MAAM,EAAE;AAE1B,MAAI,IAAI,WAAW,GAAG;AACpB,UAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,EAC1D;AAEA,MAAIC,SAAQ;AACZ,MAAI,IAAI,WAAW,GAAG;AACpB,IAAAA,SAAQ,gBAAgB,IAAI,MAAM,GAAG,CAAC,CAAC;AACvC,UAAM,IAAI,MAAM,GAAG,CAAC;AAAA,EACtB;AAEA,QAAM,SAAS,OAAO,SAAS,KAAK,EAAE;AACtC,QAAM,MAAM,UAAU;AACtB,QAAM,QAAS,UAAU,IAAK;AAC9B,QAAM,OAAO,SAAS;AAEtB,SAAO,CAAC,KAAK,OAAO,MAAMA,MAAK;AACjC;AAEO,SAAS,YAAY,KAAsB;AAChD,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,WAAO;AAAA,EACT;AACA,SAAO,gBAAgB,GAAG,IAAI;AAChC;AAEO,SAAS,aAAa,KAAsB;AACjD,SAAO,CAAC,YAAY,GAAG;AACzB;AAEO,SAAS,gBAAgB,KAAqB;AACnD,QAAM,CAAC,KAAK,OAAO,MAAMA,MAAK,IAAI,SAAS,GAAG;AAC9C,SAAQA,UAAS,MAAM,MAAM,QAAQ,MAAM,OAAO,OAAQ;AAC5D;AAEO,SAAS,SAAS,CAAC,GAAG,GAAG,CAAC,GAAqB;AACpD,SAAO,QAAQ,KAAK,OAAO,KAAK,OAAO,KAAK,KAAK,GAAG,SAAS,EAAE,EAAE,MAAM,CAAC;AAC1E;AAEO,SAAS,MAAM,KAAaA,QAAuB;AACxD,QAAM,CAAC,KAAK,OAAO,IAAI,IAAI,SAAS,GAAG;AACvC,SAAO,QAAQ,GAAG,KAAK,KAAK,KAAK,IAAI,KAAKA,MAAK;AACjD;AAEO,SAAS,QAAQ,KAAaA,QAAuB;AAC1D,SAAO,SAAS,cAAc,KAAK,IAAIA,QAAO,MAAM,CAAC;AACvD;AAEO,SAAS,OAAO,KAAaA,QAAuB;AACzD,SAAO,SAAS,cAAc,KAAK,IAAIA,QAAO,SAAS,CAAC;AAC1D;AAEO,SAAS,OAAO,KAAqB;AAC1C,QAAM,CAAC,KAAK,OAAO,IAAI,IAAI,SAAS,GAAG;AACvC,SAAO,SAAS,CAAC,MAAM,KAAK,MAAM,OAAO,MAAM,IAAI,CAAC;AACtD;AAMO,SAAS,cACd,KACAA,QACA,eACU;AACV,QAAM,SAAS,SAAS,GAAG;AAC3B,QAAM,gBAAgB,SAAS,aAAa;AAE5C,SAAO,OAAO,IAAI,CAAC,OAAO,UAAU;AAClC,WAAO;AAAA,MACL,KAAK;AAAA,QACH,WAAW,KAAK,IAAIA,SAClB,WAAW,cAAc,KAAK,CAAC,KAAK,IAAIA;AAAA,MAC5C;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,WAAW,OAAuB;AACzC,SAAO,QAAQ,IAAI,IAAI,SAAS,MAAM,MAAM;AAC9C;AAEA,SAAS,gBAAgB,KAAa;AACpC,QAAM,MAAM,SAAS,KAAK,EAAE;AAC5B,QAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,SAAO,QAAQ,MAAM,KAAK,QAAQ,CAAC,CAAC;AACtC;;;AC9HO,SAAS,OAAO,OAAgB,UAA6B;AAClE,MAAI,QAAQ,KAAK,GAAG;AAClB,WAAO,YAAY;AAAA,EACrB;AAEA,MAAI,UAAU,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,KAAK;AACrB;;;ACVA,IAAM,SAAS;AACf,IAAM,SAAS,SAAS;AACxB,IAAM,OAAO,SAAS;AACtB,IAAM,MAAM,OAAO;AACnB,IAAM,OAAO,MAAM;AACnB,IAAM,OAAO,MAAM;AACnB,IAAMC,QAAO;AAEb,SAAS,MAAM,KAAiC;AAC9C,MAAI,QAAQ,GAAG,GAAG;AAChB;AAAA,EACF;AAEA,QAAM,MAAM,OAAO,GAAG;AACtB,QAAM,UAAU,IAAI,MAAMA,KAAI;AAE9B,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,QAAM,MAAM,WAAW,QAAQ,CAAC,CAAC;AACjC,QAAML,QAAO,QAAQ,CAAC,EAAE,YAAY;AAEpC,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,EACjB;AACF;AAEO,SAAS,GAAG,KAAiC;AAClD,QAAM,QAAQ,MAAM,GAAG;AAEvB,MAAI,OAAO;AACT,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AACF;AAEO,SAAS,GAAG,KAAiC;AAClD,QAAM,QAAQ,GAAG,GAAG;AAEpB,MAAI,OAAO;AACT,WAAO,QAAQ;AAAA,EACjB;AACF;;;AC1DA,OAAO,WAAW;AAEX,SAAS,YAAoB;AAClC,SAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG;AACpC;AAEO,SAAS,KAAK,KAAc,QAAiB;AAClD,SAAO,MAAM,KAAK,MAAM;AAC1B;AAEO,SAAS,SAAS,GAAW;AAClC,SAAO,MAAM,KAAK,CAAC;AACrB;AAEO,SAAS,cACd,OACA,KACA,QACS;AACT,SAAO,MAAM,QAAQ,GAAG,MAAM;AAChC;AAEO,SAAS,SACd,OACA,KACA,OAA+B,OACvB;AACR,MAAI,QAAQ,OAAO,QAAQ,KAAK,MAAM,GAAG;AACvC,WAAO;AAAA,EACT;AACA,SAAO,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,GAAG,IAAI;AACjD;AAEO,SAAS,WACd,OACA,QAAQ,GACR,OAAmB,SACX;AACR,SAAO,SAAS,KAAK,EAClB,IAAI,OAAO,IAAsB,EACjC,KAAK;AACV;;;AC3CA,YAAY,OAAO;AAEZ,IAAM,uBAAiC;AAAA,EAC1C,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AACjB;AAEO,IAAM,sBAAgC;AAAA,EAC3C,GAAG;AAAA,EACD,SAAO,MAAM;AAAA,EACb,SAAO,KAAK;AAAA,EACZ,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AACjB;AAEO,IAAM,OAAS;;;AC3BtB,SAAS,sBAAsB;AAE/B,IAAM,kBACJ;AAEK,SAAS,OAAO,MAAM,IAAY;AACvC,SAAO,qBAAqB,iBAAiB,GAAG;AAClD;AAEO,SAAS,qBAAqB,UAAkB,MAAM,IAAY;AACvE,QAAM,WAAW,eAAe,UAAU,GAAG;AAC7C,SAAO,SAAS;AAClB;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAFA,YAAY,gBAAgB;AAE5B,kCAAc;AAEP,SAAS,WACd,QACA,QACA,WAA0B,CAAC,GACN;AACrB,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,MAA2B,MAAM;AAChD,QAAM,aAAa,OAAO,KAAK,MAAM;AAErC,QAAM,aAAkC,CAAC;AACzC,MAAI,SAAmB,CAAC;AAExB,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO,QAAQ,UAAQ;AACrB,UAAI,QAAQ,IAAI,GAAG;AACjB,YAAI,KAAK,SAAS,GAAG;AACnB,gBAAM,QAAQ,KAAK,CAAC;AACpB,iBAAO,KAAK,KAAK;AAEjB,cAAI,KAAK,SAAS,GAAG;AACnB,uBAAW,KAAK,IAAI,KAAK,CAAC;AAAA,UAC5B;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,aAAS;AAAA,EACX;AAEA,QAAM,SAA8B,CAAC;AAErC,aACG,OAAO,SAAO,CAAC,SAAS,SAAS,GAAG,KAAK,OAAO,SAAS,GAAG,CAAC,EAC7D,QAAQ,SAAO;AACd,UAAM,QAAQ,WAAW,GAAG;AAE5B,QAAI,OAAO;AACT,aAAO,KAAK,IAAI,OAAO,GAAG;AAAA,IAC5B,OAAO;AACL,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF,CAAC;AAEH,SAAO;AACT;AAEO,SAAS,gBACd,QACA,QACmB;AACnB,QAAM,OAA0B,CAAC;AAEjC,SAAO,QAAQ,WAAS;AACtB,QAAI,MAAM,OAAO,KAAK;AACtB,QAAI;AAEJ,QAAI,QAAQ,KAAK,GAAG;AAClB,YAAM,MAAM,CAAC;AAEb,UAAI,MAAM,SAAS,GAAG;AACpB,gBAAQ,MAAM,CAAC;AAAA,MACjB;AAAA,IACF;AAEA,QAAI,QAAQ,OAAO,GAAG;AAEtB,QAAI,QAAQ,KAAK,GAAG;AAClB,UAAI,cAAc,KAAK,KAAK,QAAQ,KAAK,GAAG;AAC1C,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAEA,WAAK,SAAS,GAAG,IAAI;AAAA,IACvB;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,SAAS,gBACd,QACqB;AACrB,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,MAA2B,MAAM;AAChD,QAAM,SAA8B,CAAC;AAErC,aAAW,SAAS,OAAO,KAAK,MAAM,GAAG;AACvC,UAAM,QAAQ,OAAO,KAAK;AAE1B,QAAI,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG;AAChC;AAAA,IACF;AAEA,WAAO,KAAK,IAAI;AAAA,EAClB;AAEA,SAAO;AACT;AAEO,SAAS,iBACd,QACA,MACA,SACM;AACN,MAAI,CAAC,SAAS,MAAM,KAAK,CAAC,SAAS,IAAI,GAAG;AACxC;AAAA,EACF;AAEA,aAAW,QAAQ,SAAS;AAC1B,QAAI;AACJ,QAAI;AAEJ,QAAI,QAAQ,IAAI,GAAG;AACjB,kBAAY,KAAK,CAAC;AAClB,gBAAU,KAAK,CAAC;AAAA,IAClB,OAAO;AACL,kBAAY,OAAO,IAAI;AACvB,gBAAU;AAAA,IACZ;AAEA,QAAI,QAAmB,eAAI,QAAQ,SAAS;AAE5C,QAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,GAAG;AAClC,UAAI,cAAc,KAAK,KAAK,QAAQ,KAAK,GAAG;AAC1C,gBAAQ,MAAM,KAAK;AAAA,MACrB;AACA,MAAW,eAAI,MAAM,SAAS,KAAK;AAAA,IACrC;AAAA,EACF;AACF;;;AX3IA,wBAAc;;;AYRP,SAAS,UAAU,KAAa,cAAyB;AAC9D,MAAI;AAEJ,MAAI;AACF,YAAQ,KAAK,MAAM,GAAG;AAAA,EACxB,SAAS,GAAG;AAAA,EAEZ;AAEA,MAAI,gBAAgB,CAAC,OAAO;AAC1B,YAAQ;AAAA,EACV;AAEA,SAAO;AACT;AAEO,SAAS,UAAU,KAAU,cAAiC;AACnE,MAAW,QAAQ,GAAG,GAAG;AACvB,WAAO,gBAAgB;AAAA,EACzB;AAEA,MAAW,UAAU,GAAG,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,SAAc,OAAO,GAAG;AAC1B;AAEO,SAAS,YACd,KACA,cACA,UACoB;AACpB,MAAW,SAAS,GAAG,GAAG;AACxB,QAAI,YAAY,WAAW,OAAO,GAAG,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO,OAAO,GAAG;AAAA,EACnB;AAEA,QAAM,MAAM,SAAS,KAAK,EAAE;AAE5B,MAAI,MAAM,GAAG,GAAG;AACd,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,WAAW,KAAK;AAC9B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,MAAc,QAAQ,KAAK;AACpD,MAAI,SAAS,KACV,QAAQ,uCAAuC,EAAE,EACjD,QAAQ,yCAAyC,EAAE,EACnD,QAAQ,YAAY,EAAE,EACtB,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,QAAQ,EAAE,EAClB,QAAQ,WAAW,GAAG,EACtB,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG;AAEvB,MAAI,QAAQ,GAAG;AACb,aAAS,OAAO,MAAM,GAAG,KAAK;AAAA,EAChC;AAEA,SAAO;AACT;;;ACjEO,SAAS,UACd,KACA,SACQ;AACR,QAAM,MAAgB,CAAC;AAEvB,SAAO,KAAK,GAAG,EAAE,QAAQ,SAAO;AAC9B,QAAI,MAAM,IAAI,GAAG;AAEjB,QAAI,QAAQ,GAAG,GAAG;AAChB,YAAM;AAAA,IACR,OAAO;AACL,YAAM,OAAO,GAAG;AAAA,IAClB;AAEA,QAAI,SAAS,QAAQ;AACnB,YAAM,mBAAmB,GAAG;AAAA,IAC9B;AAEA,QAAI,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE;AAAA,EAC1B,CAAC;AAED,SAAO,IAAI,KAAK,GAAG;AACrB;AAEO,SAASM,OAAM,KAAa,SAA0C;AAC3E,QAAM,MAA2B,CAAC;AAElC,MAAI,CAAC,SAAS,GAAG,GAAG;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,IAAI,QAAQ,eAAe,EAAE,EAAE,MAAM,GAAG;AAEpD,MAAI,QAAQ,WAAS;AACnB,UAAM,WAAW,MAAM,MAAM,GAAG;AAChC,UAAM,MAAM,SAAS,CAAC;AAEtB,QAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,UAAI,MAAW,SAAS,CAAC;AAEzB,UAAI,SAAS,QAAQ;AACnB,cAAM,mBAAmB,GAAG;AAAA,MAC9B;AAEA,YACE,SAAS,aAAa,IAAI,SAAS,SAAS,SAAS,IACjD,IAAI,MAAM,SAAS,SAAS,IAC5B;AAEN,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,IAAO,aAAQ;AAAA,EACb;AAAA,EACA,OAAAA;AACF;;;ACpEA,IAAM,UAAU;AAChB,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,SAAS;AAER,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AAPU,SAAAA;AAAA,GAAA;AAUL,SAAS,OACd,MAAM,SAAS,GACfP,QAAO,sBACC;AACR,MAAI,WAAmB,UAAU,QAAQ;AAEzC,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ;AACnB;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ;AACnB;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ,QAAQ;AAC3B;AAAA,IACF;AACE;AAAA,EACJ;AAEA,MAAI,MAAM;AACV,QAAM,iBAAiB,SAAS;AAEhC,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,WAAO,SAAS,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,cAAc,CAAC;AAAA,EACnE;AAEA,SAAO;AACT;;;ACxDA,OAAO,UAAU;AAWV,SAAS,QAAQ,MAAc,SAAkC;AACtE,SAAO,KAAK,MAAM;AAAA,IAChB,aAAa;AAAA,IACb,OAAO;AAAA,IACP,GAAG;AAAA,EACL,CAAC;AACH;;;ACjBA,SAAe,IAAc,UAAc","sourcesContent":["export * from 'deep-object-diff'\nexport * from './bytes'\nexport * from './clone'\nexport * from './color'\nexport * from './conv'\nexport * from './date'\nexport { default as helper } from './helper'\nexport * from './hs'\nexport * from './mime'\nexport * from './nanoid'\nexport * from './object'\nexport * from './parse'\nexport { default as qs } from './qs'\nexport * from './random'\nexport * from './slugify'\nexport * from './type'\nexport * from './uuid'\n","import visUUID from 'validator/lib/isUUID'\nimport {\n default as visNumeric,\n IsNumericOptions\n} from 'validator/lib/isNumeric'\nimport { default as visEmail, IsEmailOptions } from 'validator/lib/isEmail'\nimport { default as visURL, IsURLOptions } from 'validator/lib/isURL'\n\nimport { type } from './type'\n\n/* @ts-ignore */\nconst whiteSpaceRegx =\n /^[\\s\\f\\n\\r\\t\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0]+$/\n\nexport const isUUID = visUUID\n\nexport function isBoolean(arg: any): boolean {\n return type(arg) === 'boolean'\n}\n\nexport function isString(arg: any): boolean {\n return type(arg) === 'string'\n}\n\nexport function isNumber(arg: any): boolean {\n return type(arg) === 'number'\n}\n\nexport const isArray = Array.isArray\n\nexport function isValidArray(arg: any): boolean {\n return isArray(arg) && arg.length > 0\n}\n\nexport function isNan(arg: any): boolean {\n return isNumber(arg) && Number.isNaN(arg)\n}\n\nexport function isSet(arg: any): boolean {\n return type(arg) === 'set'\n}\n\nexport function isWeakSet(arg: any): boolean {\n return type(arg) === 'weakset'\n}\n\nexport function isMap(arg: any): boolean {\n return type(arg) === 'map'\n}\n\nexport function isWeakMap(arg: any): boolean {\n return type(arg) === 'weakmap'\n}\n\nexport function isSymbol(arg: any): boolean {\n return type(arg) === 'symbol'\n}\n\nexport function isObject(arg: any): boolean {\n return type(arg) === 'object'\n}\n\nexport function isDate(arg: any): boolean {\n return type(arg) === 'date'\n}\n\nexport function isRegExp(arg: any): boolean {\n return type(arg) === 'regexp'\n}\n\nexport function isError(arg: any): boolean {\n return type(arg) === 'error'\n}\n\nexport function isFunction(arg: any): boolean {\n return type(arg) === 'function'\n}\n\nexport function isNull(arg: any): boolean {\n return type(arg) === 'null'\n}\n\nexport function isUndefined(arg: any): boolean {\n return type(arg) === 'undefined'\n}\n\nexport function isNil(arg: any): boolean {\n return isNull(arg) || isUndefined(arg)\n}\n\nexport function isPlainObject(arg: any): boolean {\n if (!isObject(arg)) return false\n\n const ctor = arg.constructor\n if (typeof ctor !== 'function') return false\n\n const proto = ctor.prototype\n if (!isObject(proto)) return false\n\n return proto.hasOwnProperty('isPrototypeOf')\n}\n\nexport function isEmpty(arg: any): boolean {\n if (isNil(arg)) return true\n\n if (isBoolean(arg)) return false\n\n if (isNumber(arg)) return false\n\n if (isString(arg)) {\n return arg.length === 0 || whiteSpaceRegx.test(arg)\n }\n\n if (isFunction(arg) || isArray(arg)) {\n return arg.length === 0\n }\n\n switch (type(arg)) {\n case 'file':\n case 'map':\n case 'weakmap':\n case 'set':\n case 'weakset': {\n return arg.size === 0\n }\n\n case 'object': {\n for (const key in arg) {\n if (Object.hasOwnProperty.call(arg, key)) return false\n }\n return true\n }\n\n default:\n break\n }\n\n return false\n}\n\nexport function isValid(arg: any): boolean {\n return !isEmpty(arg)\n}\n\nexport function isEqual(arg1: any, arg2: any): boolean {\n return String(arg1) === String(arg2)\n}\n\nexport function isTrue(arg1: any): boolean {\n return arg1 === true || arg1 === 'true' || isEqual(arg1, '1')\n}\n\nexport function isFalse(arg1: any): boolean {\n return arg1 === false || arg1 === 'false' || isEqual(arg1, '0')\n}\n\nexport function isBool(arg: any): boolean {\n return isTrue(arg) || isFalse(arg)\n}\n\nexport function isFormData(arg: any): boolean {\n return type(arg) === 'formdata'\n}\n\nexport function uniqueArray(arg: any): any[] {\n if (!isValidArray(arg)) {\n return []\n }\n return Array.from(new Set(arg))\n}\n\nexport function isNumeric(arg: any, options?: IsNumericOptions): boolean {\n return isNumber(arg) || (isString(arg) && visNumeric(arg, options))\n}\n\nexport function isURL(arg: any, options?: IsURLOptions): boolean {\n return isValid(arg) && isString(arg) && visURL(arg, options)\n}\n\nexport function isEmail(arg: any, options?: IsEmailOptions): boolean {\n return isValid(arg) && isString(arg) && visEmail(arg, options)\n}\n\nexport default {\n isUUID,\n isBoolean,\n isString,\n isNumber,\n isNumeric,\n isArray,\n isValidArray,\n isNan,\n isSet,\n isMap,\n isSymbol,\n isObject,\n isDate,\n isRegExp,\n isError,\n isFunction,\n isNull,\n isUndefined,\n isNil,\n isPlainObject,\n isEmpty,\n isValid,\n isEqual,\n isTrue,\n isFalse,\n isBool,\n isURL,\n isEmail,\n isFormData,\n uniqueArray\n}\n","const toString = Object.prototype.toString\n\nexport function type(obj: any): string {\n if (obj === null) {\n return 'null'\n }\n\n let type: string = typeof obj\n\n if (type !== 'object') {\n return type\n }\n\n type = toString.call(obj).slice(8, -1)\n\n const typeLower = type.toLowerCase()\n\n if (typeLower !== 'object') {\n if (\n typeLower === 'number' ||\n typeLower === 'boolean' ||\n typeLower === 'string'\n ) {\n return type\n }\n return typeLower\n }\n\n return typeLower\n}\n","import { isEmpty } from './helper'\n\nconst BYTE = 1\nconst KB = BYTE * 1024\nconst MB = KB * 1024\nconst GB = MB * 1024\nconst TB = GB * 1024\nconst PB = TB * 1024\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(b|kb|mb|gb|tb|pb)$/i\n\nexport function parseBytes(value: string | number): number | undefined {\n if (isEmpty(value)) {\n return\n }\n\n const str = String(value)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'pb':\n return num * PB\n\n case 'tb':\n return num * TB\n\n case 'gb':\n return num * GB\n\n case 'mb':\n return num * MB\n\n case 'kb':\n return num * KB\n\n case 'b':\n return num * BYTE\n }\n}\n\nexport function bytes(size: string): number | undefined {\n return parseBytes(size)\n}\n\nexport function formatBytes(value: string | number): string {\n const mag = Math.abs(Number(value))\n let unit: string\n let size: number | string\n\n if (mag >= PB) {\n unit = 'PB'\n size = mag / PB\n } else if (mag >= TB) {\n unit = 'TB'\n size = mag / TB\n } else if (mag >= GB) {\n unit = 'GB'\n size = mag / GB\n } else if (mag >= MB) {\n unit = 'MB'\n size = mag / MB\n } else if (mag >= KB) {\n unit = 'KB'\n size = mag / KB\n } else {\n unit = 'B'\n size = mag / BYTE\n }\n\n if (String(size).includes('.')) {\n size = size.toFixed(1)\n }\n\n return size + unit\n}\n","import _clone from 'clone'\n\nexport function clone<T>(obj: T): T {\n return _clone(obj)\n}\n","import { isEmpty } from './helper'\n\nconst HEX_REGEX = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i\nconst RGBA_REGEX =\n /rgba\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d*(?:\\.\\d+)?)\\)/i\nconst RGB_REGEX = /rgb\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?)\\)/i\n\nexport function isHexColor(color: string): boolean {\n return HEX_REGEX.test(color)\n}\n\nexport function isRgba(color: string): boolean {\n return RGBA_REGEX.test(color)\n}\n\nexport function isRgb(color: string): boolean {\n return RGB_REGEX.test(color)\n}\n\nexport function hexToRgb(hex: string): number[] {\n if (isEmpty(hex)) {\n return []\n }\n\n if (isRgba(hex)) {\n // @ts-ignore\n const [, red, green, blue, alpha] = RGBA_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), Number(alpha)]\n }\n\n if (isRgb(hex)) {\n // @ts-ignore\n const [, red, green, blue] = RGB_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), 1]\n }\n\n if (!isHexColor(hex)) {\n return []\n }\n\n hex = hex.replace(/^#/, '')\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n\n let alpha = 1\n if (hex.length === 8) {\n alpha = hexToFloatAlpha(hex.slice(6, 8))\n hex = hex.slice(0, 6)\n }\n\n const number = Number.parseInt(hex, 16)\n const red = number >> 16\n const green = (number >> 8) & 255\n const blue = number & 255\n\n return [red, green, blue, alpha]\n}\n\nexport function isDarkColor(hex: string): boolean {\n if (!isHexColor(hex)) {\n return true\n }\n return colorBrightness(hex) < 170\n}\n\nexport function isLightColor(hex: string): boolean {\n return !isDarkColor(hex)\n}\n\nexport function colorBrightness(hex: string): number {\n const [red, green, blue, alpha] = hexToRgb(hex)\n return (alpha * (red * 299 + green * 587 + blue * 114)) / 1000\n}\n\nexport function rgbToHex([r, g, b]: number[]): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\nexport function alpha(hex: string, alpha: number): string {\n const [red, green, blue] = hexToRgb(hex)\n return `rgba(${red}, ${green}, ${blue}, ${alpha})`\n}\n\nexport function lighten(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#fff'))\n}\n\nexport function darken(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#010101'))\n}\n\nexport function invert(hex: string): string {\n const [red, green, blue] = hexToRgb(hex)\n return rgbToHex([255 - red, 255 - green, 255 - blue])\n}\n\n/**\n * Convert rgba to a transparency-adjusted-hex\n * https://stackoverflow.com/a/15898886\n */\nexport function alphaHexToRgb(\n hex: string,\n alpha: number,\n backgroundHex: string\n): number[] {\n const hexRgb = hexToRgb(hex)\n const backgroundRgb = hexToRgb(backgroundHex)\n\n return hexRgb.map((color, index) => {\n return colorRange(\n Math.floor(\n colorRange(color) * alpha +\n colorRange(backgroundRgb[index]) * (1 - alpha)\n )\n )\n })\n}\n\nfunction colorRange(color: number): number {\n return color < 1 ? 1 : color >= 255 ? 255 : color\n}\n\nfunction hexToFloatAlpha(arg: string) {\n const num = parseInt(arg, 16)\n const max = parseInt('0xff', 16)\n return Number((num / max).toFixed(2))\n}\n","import { isEmpty, isTrue, isBoolean } from './helper'\n\nexport function toBool(value: unknown, defaults?: boolean): boolean {\n if (isEmpty(value)) {\n return defaults || false\n }\n\n if (isBoolean(value)) {\n return value as boolean\n }\n\n return isTrue(value)\n}\n","import { isEmpty } from './helper'\n\nconst second = 1\nconst minute = second * 60\nconst hour = minute * 60\nconst day = hour * 24\nconst week = day * 7\nconst year = day * 365\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(s|m|h|d|w|y)$/i\n\nfunction parse(arg: string): number | undefined {\n if (isEmpty(arg)) {\n return\n }\n\n const str = String(arg)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'y':\n return num * year\n\n case 'w':\n return num * week\n\n case 'd':\n return num * day\n\n case 'h':\n return num * hour\n\n case 'm':\n return num * minute\n\n case 's':\n return num * second\n }\n}\n\nexport function hs(arg: string): number | undefined {\n const value = parse(arg)\n\n if (value) {\n return Math.round(value)\n }\n}\n\nexport function ms(arg: string): number | undefined {\n const value = hs(arg)\n\n if (value) {\n return value * 1e3\n }\n}\n","import { hs } from './hs'\nimport { OpUnitType, QUnitType } from 'dayjs'\nimport dayjs from 'dayjs'\n\nexport function timestamp(): number {\n return Math.floor(Date.now() / 1e3)\n}\n\nexport function date(str?: string, format?: string) {\n return dayjs(str, format)\n}\n\nexport function unixDate(t: number) {\n return dayjs.unix(t)\n}\n\nexport function isDateExpired(\n start: number,\n end: number,\n expire: string\n): boolean {\n return end - start > hs(expire)!\n}\n\nexport function unixDiff(\n start: number,\n end: number,\n unit: QUnitType | OpUnitType = 'day'\n): number {\n if (start > end || start < 0 || end < 0) {\n return 0\n }\n return unixDate(end).diff(unixDate(start), unit)\n}\n\nexport function datePeriod(\n start: number,\n value = 1,\n unit: OpUnitType = 'month'\n): number {\n return unixDate(start)\n .add(value, unit as unknown as any)\n .unix()\n}\n","import * as m from 'mime-types'\n\nexport const commonImageMimeTypes: string[] = [\n m.lookup('.jpg'),\n m.lookup('.png'),\n m.lookup('.bmp'),\n m.lookup('.webp'),\n m.lookup('.gif')\n] as any\n\nexport const commonFileMimeTypes: string[] = [\n ...commonImageMimeTypes,\n m.lookup('.txt'),\n m.lookup('.md'),\n m.lookup('.doc'),\n m.lookup('.docx'),\n m.lookup('.xls'),\n m.lookup('.xlsx'),\n m.lookup('.csv'),\n m.lookup('.ppt'),\n m.lookup('.pptx'),\n m.lookup('.pdf'),\n m.lookup('.mp4'),\n m.lookup('.wmv'),\n m.lookup('.svg')\n] as any\n\nexport const mime = m.lookup\n","import { customAlphabet } from 'nanoid'\n\nconst NANOID_ALPHABET =\n 'ModuleSymbhasOwnPr0123456789ABCDEFGHNRVfgctiUvzKqYTJkLxpZXIjQW'\n\nexport function nanoid(len = 21): string {\n return nanoidCustomAlphabet(NANOID_ALPHABET, len)\n}\n\nexport function nanoidCustomAlphabet(alphabet: string, len = 21): string {\n const generate = customAlphabet(alphabet, len)\n return generate()\n}\n","import { clone } from './clone'\nimport {\n isArray,\n isNan,\n isNil,\n isObject,\n isPlainObject,\n isValid\n} from './helper'\nimport * as objectPath from 'object-path'\n\nexport * from 'fast-equals'\n\nexport function pickObject(\n target: Record<string, any>,\n fields: Array<string | string[]>,\n excludes: Array<string> = []\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const targetKeys = Object.keys(copied)\n\n const fieldAlias: Record<string, any> = {}\n let picked: string[] = []\n\n if (fields.length > 0) {\n fields.forEach(item => {\n if (isArray(item)) {\n if (item.length > 0) {\n const filed = item[0]\n picked.push(filed)\n\n if (item.length > 1) {\n fieldAlias[filed] = item[1]\n }\n }\n } else {\n picked.push(item)\n }\n })\n } else {\n picked = targetKeys\n }\n\n const newObj: Record<string, any> = {}\n\n targetKeys\n .filter(key => !excludes.includes(key) && picked.includes(key))\n .forEach(key => {\n const alias = fieldAlias[key]\n\n if (alias) {\n newObj[alias] = copied[key]\n } else {\n newObj[key] = copied[key]\n }\n })\n\n return newObj\n}\n\nexport function pickValidValues<T = string | number | boolean>(\n target: Record<string, T>,\n fields: Array<string | string[]>\n): Record<string, T> {\n const dist: Record<string, T> = {}\n\n fields.forEach(field => {\n let key = String(field)\n let alias: string | undefined\n\n if (isArray(field)) {\n key = field[0]\n\n if (field.length > 1) {\n alias = field[1]\n }\n }\n\n let value = target[key]\n\n if (isValid(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n\n dist[alias || key] = value\n }\n })\n\n return dist\n}\n\nexport function removeObjectNil(\n target: Record<string, any>\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const newObj: Record<string, any> = {}\n\n for (const field of Object.keys(copied)) {\n const value = copied[field]\n\n if (isNil(value) || isNan(value)) {\n continue\n }\n\n newObj[field] = value\n }\n\n return newObj\n}\n\nexport function copyObjectValues(\n target: Record<string, any>,\n dist: Record<string, any>,\n keyMaps: Array<string | string[]>\n): void {\n if (!isObject(target) || !isObject(dist)) {\n return\n }\n\n for (const keys of keyMaps) {\n let targetKey: string\n let distKey: string\n\n if (isArray(keys)) {\n targetKey = keys[0]\n distKey = keys[1]\n } else {\n targetKey = String(keys)\n distKey = targetKey\n }\n\n let value = objectPath.get(target, targetKey)\n\n if (!isNil(value) && !isNan(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n objectPath.set(dist, distKey, value)\n }\n }\n}\n","import * as helper from './helper'\n\nexport function parseJson(str: string, defaultValue?: any): any {\n let value: any\n\n try {\n value = JSON.parse(str)\n } catch (e) {\n // eslint-disable-line\n }\n\n if (defaultValue && !value) {\n value = defaultValue\n }\n\n return value\n}\n\nexport function parseBool(arg: any, defaultValue?: boolean): boolean {\n if (helper.isEmpty(arg)) {\n return defaultValue || false\n }\n\n if (helper.isBoolean(arg)) {\n return arg\n }\n\n return helper.isTrue(arg)\n}\n\nexport function parseNumber(\n arg: any,\n defaultValue?: number,\n maxValue?: number\n): number | undefined {\n if (helper.isNumber(arg)) {\n if (maxValue && maxValue < Number(arg)) {\n return maxValue\n }\n return Number(arg)\n }\n\n const num = parseInt(arg, 10)\n\n if (isNaN(num)) {\n return defaultValue\n }\n\n if (maxValue && maxValue < num) {\n return maxValue\n }\n\n return num\n}\n\nexport function htmlToText(html: string, limit = 100) {\n let result = html\n .replace(/<style[^<>]*>((?!<\\/).)*<\\/style>/gi, '')\n .replace(/<script[^<>]*>((?!<\\/).)*<\\/script>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/\\t|\\r|\\n|\\r\\n/g, '')\n .replace(/\\s+/g, '')\n .replace(/ /g, ' ')\n .replace(/"/g, '\"')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n if (limit > 0) {\n result = result.slice(0, limit)\n }\n\n return result\n}\n","import { isEmpty, isString } from './helper'\n\ninterface QsOptions {\n encode?: boolean\n decode?: boolean\n separator?: string\n}\n\nexport function stringify(\n arg: Record<string, any>,\n options?: QsOptions\n): string {\n const arr: string[] = []\n\n Object.keys(arg).forEach(key => {\n let val = arg[key]\n\n if (isEmpty(val)) {\n val = ''\n } else {\n val = String(val)\n }\n\n if (options?.encode) {\n val = encodeURIComponent(val)\n }\n\n arr.push(`${key}=${val}`)\n })\n\n return arr.join('&')\n}\n\nexport function parse(str: string, options?: QsOptions): Record<string, any> {\n const obj: Record<string, any> = {}\n\n if (!isString(str)) {\n return obj\n }\n\n const arr = str.replace(/^([^?]+)?\\?/, '').split('&')\n\n arr.forEach(param => {\n const paramArr = param.split('=')\n const key = paramArr[0]\n\n if (!isEmpty(key)) {\n let val: any = paramArr[1]\n\n if (options?.decode) {\n val = decodeURIComponent(val)\n }\n\n val =\n options?.separator && val.includes(options?.separator)\n ? val.split(options?.separator)\n : val\n\n obj[key] = val\n }\n })\n\n return obj\n}\n\nexport default {\n stringify,\n parse\n}\n","const numeric = '0123456789'\nconst hexic = '0123456789abcdef'\nconst lower = 'abcdefghijklmnopqrstuvwxyz'\nconst upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\nconst length = 6\n\nexport enum RandomType {\n LOWER,\n UPPER,\n NUMERIC,\n HEXIC,\n LOWER_NUMERIC,\n UPPER_NUMERIC,\n ALPHANUMERIC\n}\n\nexport function random(\n len = length * 2,\n type = RandomType.ALPHANUMERIC\n): string {\n let alphabet: string = numeric + lower + upper\n\n switch (type) {\n case RandomType.LOWER:\n alphabet = lower\n break\n case RandomType.UPPER:\n alphabet = upper\n break\n case RandomType.HEXIC:\n alphabet = hexic\n break\n case RandomType.NUMERIC:\n alphabet = numeric\n break\n case RandomType.LOWER_NUMERIC:\n alphabet = lower + numeric\n break\n case RandomType.UPPER_NUMERIC:\n alphabet = upper + numeric\n break\n case RandomType.ALPHANUMERIC:\n alphabet = lower + upper + numeric\n break\n default:\n break\n }\n\n let str = ''\n const alphabetLength = alphabet.length\n\n for (let i = 0; i < len; i++) {\n str += alphabet.charAt(Math.floor(Math.random() * alphabetLength))\n }\n\n return str\n}\n","import slug from 'slugify'\n\nexport interface SlugifyOptions {\n replacement?: string\n remove?: RegExp\n lower?: boolean\n strict?: boolean\n locale?: string\n trim?: boolean\n}\n\nexport function slugify(text: string, options?: SlugifyOptions): string {\n return slug(text, {\n replacement: '_',\n lower: true,\n ...options\n })\n}\n","export { v4 as uuidv4, v5 as uuidv5 } from 'uuid'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/helper.ts","../src/type.ts","../src/bytes.ts","../src/clone.ts","../src/color.ts","../src/conv.ts","../src/hs.ts","../src/date.ts","../src/mime.ts","../src/nanoid.ts","../src/object.ts","../src/parse.ts","../src/qs.ts","../src/random.ts","../src/slugify.ts","../src/uuid.ts"],"names":["type","red","green","blue","alpha","regx","parse","RandomType"],"mappings":";AAAA,cAAc;;;ACAd,OAAO,aAAa;AACpB,OAAO,aAAa;AACpB,SAAS,WAAW,kBAAoC;AACxD,SAAS,WAAW,gBAAgC;AACpD,SAAS,WAAW,cAA4B;;;ACJhD,IAAM,WAAW,OAAO,UAAU;AAE3B,SAAS,KAAK,KAAkB;AACrC,MAAI,QAAQ,MAAM;AAChB,WAAO;AAAA,EACT;AAEA,MAAIA,QAAe,OAAO;AAE1B,MAAIA,UAAS,UAAU;AACrB,WAAOA;AAAA,EACT;AAEA,EAAAA,QAAO,SAAS,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE;AAErC,QAAM,YAAYA,MAAK,YAAY;AAEnC,MAAI,cAAc,UAAU;AAC1B,QACE,cAAc,YACd,cAAc,aACd,cAAc,UACd;AACA,aAAOA;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ADpBA,IAAM,iBACJ;AAEK,IAAM,SAAS;AACf,IAAM,SAAS;AAEf,SAAS,UAAU,KAAmB;AAC3C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,IAAM,UAAU,MAAM;AAEtB,SAAS,aAAa,KAAmB;AAC9C,SAAO,QAAQ,GAAG,KAAK,IAAI,SAAS;AACtC;AAEO,SAAS,MAAM,KAAmB;AACvC,SAAO,SAAS,GAAG,KAAK,OAAO,MAAM,GAAG;AAC1C;AAEO,SAAS,MAAM,KAAmB;AACvC,SAAO,KAAK,GAAG,MAAM;AACvB;AAMO,SAAS,MAAM,KAAmB;AACvC,SAAO,KAAK,GAAG,MAAM;AACvB;AAMO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,OAAO,KAAmB;AACxC,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,SAAS,KAAmB;AAC1C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,QAAQ,KAAmB;AACzC,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,WAAW,KAAmB;AAC5C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,OAAO,KAAmB;AACxC,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,YAAY,KAAmB;AAC7C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,MAAM,KAAmB;AACvC,SAAO,OAAO,GAAG,KAAK,YAAY,GAAG;AACvC;AAEO,SAAS,cAAc,KAAmB;AAC/C,MAAI,CAAC,SAAS,GAAG,EAAG,QAAO;AAE3B,QAAM,OAAO,IAAI;AACjB,MAAI,OAAO,SAAS,WAAY,QAAO;AAEvC,QAAM,QAAQ,KAAK;AACnB,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAE7B,SAAO,MAAM,eAAe,eAAe;AAC7C;AAEO,SAAS,QAAQ,KAAmB;AACzC,MAAI,MAAM,GAAG,EAAG,QAAO;AAEvB,MAAI,UAAU,GAAG,EAAG,QAAO;AAE3B,MAAI,SAAS,GAAG,EAAG,QAAO;AAE1B,MAAI,SAAS,GAAG,GAAG;AACjB,WAAO,IAAI,WAAW,KAAK,eAAe,KAAK,GAAG;AAAA,EACpD;AAEA,MAAI,WAAW,GAAG,KAAK,QAAQ,GAAG,GAAG;AACnC,WAAO,IAAI,WAAW;AAAA,EACxB;AAEA,UAAQ,KAAK,GAAG,GAAG;AAAA,IACjB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,WAAW;AACd,aAAO,IAAI,SAAS;AAAA,IACtB;AAAA,IAEA,KAAK,UAAU;AACb,iBAAW,OAAO,KAAK;AACrB,YAAI,OAAO,eAAe,KAAK,KAAK,GAAG,EAAG,QAAO;AAAA,MACnD;AACA,aAAO;AAAA,IACT;AAAA,IAEA;AACE;AAAA,EACJ;AAEA,SAAO;AACT;AAEO,SAAS,QAAQ,KAAmB;AACzC,SAAO,CAAC,QAAQ,GAAG;AACrB;AAEO,SAAS,QAAQ,MAAW,MAAoB;AACrD,SAAO,OAAO,IAAI,MAAM,OAAO,IAAI;AACrC;AAEO,SAAS,OAAO,MAAoB;AACzC,SAAO,SAAS,QAAQ,SAAS,UAAU,QAAQ,MAAM,GAAG;AAC9D;AAEO,SAAS,QAAQ,MAAoB;AAC1C,SAAO,SAAS,SAAS,SAAS,WAAW,QAAQ,MAAM,GAAG;AAChE;AAEO,SAAS,OAAO,KAAmB;AACxC,SAAO,OAAO,GAAG,KAAK,QAAQ,GAAG;AACnC;AAEO,SAAS,WAAW,KAAmB;AAC5C,SAAO,KAAK,GAAG,MAAM;AACvB;AAEO,SAAS,YAAY,KAAiB;AAC3C,MAAI,CAAC,aAAa,GAAG,GAAG;AACtB,WAAO,CAAC;AAAA,EACV;AACA,SAAO,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC;AAChC;AAEO,SAAS,UAAU,KAAU,SAAqC;AACvE,SAAO,SAAS,GAAG,KAAM,SAAS,GAAG,KAAK,WAAW,KAAK,OAAO;AACnE;AAEO,SAAS,MAAM,KAAU,SAAiC;AAC/D,SAAO,QAAQ,GAAG,KAAK,SAAS,GAAG,KAAK,OAAO,KAAK,OAAO;AAC7D;AAEO,SAAS,QAAQ,KAAU,SAAmC;AACnE,SAAO,QAAQ,GAAG,KAAK,SAAS,GAAG,KAAK,SAAS,KAAK,OAAO;AAC/D;AAEA,IAAO,iBAAQ;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AEpNA,IAAM,OAAO;AACb,IAAM,KAAK,OAAO;AAClB,IAAM,KAAK,KAAK;AAChB,IAAM,KAAK,KAAK;AAChB,IAAM,KAAK,KAAK;AAChB,IAAM,KAAK,KAAK;AAChB,IAAM,OAAO;AAEN,SAAS,WAAW,OAA4C;AACrE,MAAI,QAAQ,KAAK,GAAG;AAClB;AAAA,EACF;AAEA,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,UAAU,IAAI,MAAM,IAAI;AAE9B,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,QAAM,MAAM,WAAW,QAAQ,CAAC,CAAC;AACjC,QAAMA,QAAO,QAAQ,CAAC,EAAE,YAAY;AAEpC,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,EACjB;AACF;AAEO,SAAS,MAAM,MAAkC;AACtD,SAAO,WAAW,IAAI;AACxB;AAEO,SAAS,YAAY,OAAgC;AAC1D,QAAM,MAAM,KAAK,IAAI,OAAO,KAAK,CAAC;AAClC,MAAI;AACJ,MAAI;AAEJ,MAAI,OAAO,IAAI;AACb,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,WAAW,OAAO,IAAI;AACpB,WAAO;AACP,WAAO,MAAM;AAAA,EACf,OAAO;AACL,WAAO;AACP,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG;AAC9B,WAAO,KAAK,QAAQ,CAAC;AAAA,EACvB;AAEA,SAAO,OAAO;AAChB;;;AChFA,OAAO,YAAY;AAEZ,SAAS,MAAS,KAAW;AAClC,SAAO,OAAO,GAAG;AACnB;;;ACFA,IAAM,YAAY;AAClB,IAAM,aACJ;AACF,IAAM,YAAY;AAEX,SAAS,WAAW,OAAwB;AACjD,SAAO,UAAU,KAAK,KAAK;AAC7B;AAEO,SAAS,OAAO,OAAwB;AAC7C,SAAO,WAAW,KAAK,KAAK;AAC9B;AAEO,SAAS,MAAM,OAAwB;AAC5C,SAAO,UAAU,KAAK,KAAK;AAC7B;AAEO,SAAS,SAAS,KAAuB;AAC9C,MAAI,QAAQ,GAAG,GAAG;AAChB,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,OAAO,GAAG,GAAG;AAEf,UAAM,CAAC,EAAEC,MAAKC,QAAOC,OAAMC,MAAK,IAAI,WAAW,KAAK,GAAG;AACvD,WAAO,CAAC,OAAOH,IAAG,GAAG,OAAOC,MAAK,GAAG,OAAOC,KAAI,GAAG,OAAOC,MAAK,CAAC;AAAA,EACjE;AAEA,MAAI,MAAM,GAAG,GAAG;AAEd,UAAM,CAAC,EAAEH,MAAKC,QAAOC,KAAI,IAAI,UAAU,KAAK,GAAG;AAC/C,WAAO,CAAC,OAAOF,IAAG,GAAG,OAAOC,MAAK,GAAG,OAAOC,KAAI,GAAG,CAAC;AAAA,EACrD;AAEA,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,IAAI,QAAQ,MAAM,EAAE;AAE1B,MAAI,IAAI,WAAW,GAAG;AACpB,UAAM,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;AAAA,EAC1D;AAEA,MAAIC,SAAQ;AACZ,MAAI,IAAI,WAAW,GAAG;AACpB,IAAAA,SAAQ,gBAAgB,IAAI,MAAM,GAAG,CAAC,CAAC;AACvC,UAAM,IAAI,MAAM,GAAG,CAAC;AAAA,EACtB;AAEA,QAAM,SAAS,OAAO,SAAS,KAAK,EAAE;AACtC,QAAM,MAAM,UAAU;AACtB,QAAM,QAAS,UAAU,IAAK;AAC9B,QAAM,OAAO,SAAS;AAEtB,SAAO,CAAC,KAAK,OAAO,MAAMA,MAAK;AACjC;AAEO,SAAS,YAAY,KAAsB;AAChD,MAAI,CAAC,WAAW,GAAG,GAAG;AACpB,WAAO;AAAA,EACT;AACA,SAAO,gBAAgB,GAAG,IAAI;AAChC;AAEO,SAAS,aAAa,KAAsB;AACjD,SAAO,CAAC,YAAY,GAAG;AACzB;AAEO,SAAS,gBAAgB,KAAqB;AACnD,QAAM,CAAC,KAAK,OAAO,MAAMA,MAAK,IAAI,SAAS,GAAG;AAC9C,SAAQA,UAAS,MAAM,MAAM,QAAQ,MAAM,OAAO,OAAQ;AAC5D;AAEO,SAAS,SAAS,CAAC,GAAG,GAAG,CAAC,GAAqB;AACpD,SAAO,QAAQ,KAAK,OAAO,KAAK,OAAO,KAAK,KAAK,GAAG,SAAS,EAAE,EAAE,MAAM,CAAC;AAC1E;AAEO,SAAS,MAAM,KAAaA,QAAuB;AACxD,QAAM,CAAC,KAAK,OAAO,IAAI,IAAI,SAAS,GAAG;AACvC,SAAO,QAAQ,GAAG,KAAK,KAAK,KAAK,IAAI,KAAKA,MAAK;AACjD;AAEO,SAAS,QAAQ,KAAaA,QAAuB;AAC1D,SAAO,SAAS,cAAc,KAAK,IAAIA,QAAO,MAAM,CAAC;AACvD;AAEO,SAAS,OAAO,KAAaA,QAAuB;AACzD,SAAO,SAAS,cAAc,KAAK,IAAIA,QAAO,SAAS,CAAC;AAC1D;AAEO,SAAS,OAAO,KAAqB;AAC1C,QAAM,CAAC,KAAK,OAAO,IAAI,IAAI,SAAS,GAAG;AACvC,SAAO,SAAS,CAAC,MAAM,KAAK,MAAM,OAAO,MAAM,IAAI,CAAC;AACtD;AAMO,SAAS,cACd,KACAA,QACA,eACU;AACV,QAAM,SAAS,SAAS,GAAG;AAC3B,QAAM,gBAAgB,SAAS,aAAa;AAE5C,SAAO,OAAO,IAAI,CAAC,OAAO,UAAU;AAClC,WAAO;AAAA,MACL,KAAK;AAAA,QACH,WAAW,KAAK,IAAIA,SAClB,WAAW,cAAc,KAAK,CAAC,KAAK,IAAIA;AAAA,MAC5C;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAEA,SAAS,WAAW,OAAuB;AACzC,SAAO,QAAQ,IAAI,IAAI,SAAS,MAAM,MAAM;AAC9C;AAEA,SAAS,gBAAgB,KAAa;AACpC,QAAM,MAAM,SAAS,KAAK,EAAE;AAC5B,QAAM,MAAM,SAAS,QAAQ,EAAE;AAC/B,SAAO,QAAQ,MAAM,KAAK,QAAQ,CAAC,CAAC;AACtC;;;AC9HO,SAAS,OAAO,OAAgB,UAA6B;AAClE,MAAI,QAAQ,KAAK,GAAG;AAClB,WAAO,YAAY;AAAA,EACrB;AAEA,MAAI,UAAU,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,KAAK;AACrB;;;ACVA,IAAM,SAAS;AACf,IAAM,SAAS,SAAS;AACxB,IAAM,OAAO,SAAS;AACtB,IAAM,MAAM,OAAO;AACnB,IAAM,OAAO,MAAM;AACnB,IAAM,OAAO,MAAM;AACnB,IAAMC,QAAO;AAEb,SAAS,MAAM,KAAiC;AAC9C,MAAI,QAAQ,GAAG,GAAG;AAChB;AAAA,EACF;AAEA,QAAM,MAAM,OAAO,GAAG;AACtB,QAAM,UAAU,IAAI,MAAMA,KAAI;AAE9B,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,QAAM,MAAM,WAAW,QAAQ,CAAC,CAAC;AACjC,QAAML,QAAO,QAAQ,CAAC,EAAE,YAAY;AAEpC,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,IAEf,KAAK;AACH,aAAO,MAAM;AAAA,EACjB;AACF;AAEO,SAAS,GAAG,KAAiC;AAClD,QAAM,QAAQ,MAAM,GAAG;AAEvB,MAAI,OAAO;AACT,WAAO,KAAK,MAAM,KAAK;AAAA,EACzB;AACF;AAEO,SAAS,GAAG,KAAiC;AAClD,QAAM,QAAQ,GAAG,GAAG;AAEpB,MAAI,OAAO;AACT,WAAO,QAAQ;AAAA,EACjB;AACF;;;AC1DA,OAAO,WAAW;AAEX,SAAS,YAAoB;AAClC,SAAO,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG;AACpC;AAEO,SAAS,KAAK,KAAc,QAAiB;AAClD,SAAO,MAAM,KAAK,MAAM;AAC1B;AAEO,SAAS,SAAS,GAAW;AAClC,SAAO,MAAM,KAAK,CAAC;AACrB;AAEO,SAAS,cACd,OACA,KACA,QACS;AACT,SAAO,MAAM,QAAQ,GAAG,MAAM;AAChC;AAEO,SAAS,SACd,OACA,KACA,OAA+B,OACvB;AACR,MAAI,QAAQ,OAAO,QAAQ,KAAK,MAAM,GAAG;AACvC,WAAO;AAAA,EACT;AACA,SAAO,SAAS,GAAG,EAAE,KAAK,SAAS,KAAK,GAAG,IAAI;AACjD;AAEO,SAAS,WACd,OACA,QAAQ,GACR,OAAmB,SACX;AACR,SAAO,SAAS,KAAK,EAClB,IAAI,OAAO,IAAsB,EACjC,KAAK;AACV;;;AC3CA,YAAY,OAAO;AAEZ,IAAM,uBAAiC;AAAA,EAC1C,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AACjB;AAEO,IAAM,sBAAgC;AAAA,EAC3C,GAAG;AAAA,EACD,SAAO,MAAM;AAAA,EACb,SAAO,KAAK;AAAA,EACZ,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,OAAO;AAAA,EACd,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AAAA,EACb,SAAO,MAAM;AACjB;AAEO,IAAM,OAAS;;;AC3BtB,SAAS,sBAAsB;AAE/B,IAAM,kBACJ;AAEK,SAAS,OAAO,MAAM,IAAY;AACvC,SAAO,qBAAqB,iBAAiB,GAAG;AAClD;AAEO,SAAS,qBAAqB,UAAkB,MAAM,IAAY;AACvE,QAAM,WAAW,eAAe,UAAU,GAAG;AAC7C,SAAO,SAAS;AAClB;;;ACHA,YAAY,gBAAgB;AAE5B,SAAS,iBAAiB;AAEnB,SAAS,WACd,QACA,QACA,WAA0B,CAAC,GACN;AACrB,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,MAA2B,MAAM;AAChD,QAAM,aAAa,OAAO,KAAK,MAAM;AAErC,QAAM,aAAkC,CAAC;AACzC,MAAI,SAAmB,CAAC;AAExB,MAAI,OAAO,SAAS,GAAG;AACrB,WAAO,QAAQ,UAAQ;AACrB,UAAI,QAAQ,IAAI,GAAG;AACjB,YAAI,KAAK,SAAS,GAAG;AACnB,gBAAM,QAAQ,KAAK,CAAC;AACpB,iBAAO,KAAK,KAAK;AAEjB,cAAI,KAAK,SAAS,GAAG;AACnB,uBAAW,KAAK,IAAI,KAAK,CAAC;AAAA,UAC5B;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,aAAS;AAAA,EACX;AAEA,QAAM,SAA8B,CAAC;AAErC,aACG,OAAO,SAAO,CAAC,SAAS,SAAS,GAAG,KAAK,OAAO,SAAS,GAAG,CAAC,EAC7D,QAAQ,SAAO;AACd,UAAM,QAAQ,WAAW,GAAG;AAE5B,QAAI,OAAO;AACT,aAAO,KAAK,IAAI,OAAO,GAAG;AAAA,IAC5B,OAAO;AACL,aAAO,GAAG,IAAI,OAAO,GAAG;AAAA,IAC1B;AAAA,EACF,CAAC;AAEH,SAAO;AACT;AAEO,SAAS,gBACd,QACA,QACmB;AACnB,QAAM,OAA0B,CAAC;AAEjC,SAAO,QAAQ,WAAS;AACtB,QAAI,MAAM,OAAO,KAAK;AACtB,QAAI;AAEJ,QAAI,QAAQ,KAAK,GAAG;AAClB,YAAM,MAAM,CAAC;AAEb,UAAI,MAAM,SAAS,GAAG;AACpB,gBAAQ,MAAM,CAAC;AAAA,MACjB;AAAA,IACF;AAEA,QAAI,QAAQ,OAAO,GAAG;AAEtB,QAAI,QAAQ,KAAK,GAAG;AAClB,UAAI,cAAc,KAAK,KAAK,QAAQ,KAAK,GAAG;AAC1C,gBAAQ,MAAM,KAAK;AAAA,MACrB;AAEA,WAAK,SAAS,GAAG,IAAI;AAAA,IACvB;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEO,SAAS,gBACd,QACqB;AACrB,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,MAA2B,MAAM;AAChD,QAAM,SAA8B,CAAC;AAErC,aAAW,SAAS,OAAO,KAAK,MAAM,GAAG;AACvC,UAAM,QAAQ,OAAO,KAAK;AAE1B,QAAI,MAAM,KAAK,KAAK,MAAM,KAAK,GAAG;AAChC;AAAA,IACF;AAEA,WAAO,KAAK,IAAI;AAAA,EAClB;AAEA,SAAO;AACT;AAEO,SAAS,iBACd,QACA,MACA,SACM;AACN,MAAI,CAAC,SAAS,MAAM,KAAK,CAAC,SAAS,IAAI,GAAG;AACxC;AAAA,EACF;AAEA,aAAW,QAAQ,SAAS;AAC1B,QAAI;AACJ,QAAI;AAEJ,QAAI,QAAQ,IAAI,GAAG;AACjB,kBAAY,KAAK,CAAC;AAClB,gBAAU,KAAK,CAAC;AAAA,IAClB,OAAO;AACL,kBAAY,OAAO,IAAI;AACvB,gBAAU;AAAA,IACZ;AAEA,QAAI,QAAmB,eAAI,QAAQ,SAAS;AAE5C,QAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,KAAK,GAAG;AAClC,UAAI,cAAc,KAAK,KAAK,QAAQ,KAAK,GAAG;AAC1C,gBAAQ,MAAM,KAAK;AAAA,MACrB;AACA,MAAW,eAAI,MAAM,SAAS,KAAK;AAAA,IACrC;AAAA,EACF;AACF;;;ACnJO,SAAS,UAAU,KAAa,cAAyB;AAC9D,MAAI;AAEJ,MAAI;AACF,YAAQ,KAAK,MAAM,GAAG;AAAA,EACxB,SAAS,GAAG;AAAA,EAEZ;AAEA,MAAI,gBAAgB,CAAC,OAAO;AAC1B,YAAQ;AAAA,EACV;AAEA,SAAO;AACT;AAEO,SAAS,UAAU,KAAU,cAAiC;AACnE,MAAW,QAAQ,GAAG,GAAG;AACvB,WAAO,gBAAgB;AAAA,EACzB;AAEA,MAAW,UAAU,GAAG,GAAG;AACzB,WAAO;AAAA,EACT;AAEA,SAAc,OAAO,GAAG;AAC1B;AAEO,SAAS,YACd,KACA,cACA,UACoB;AACpB,MAAW,SAAS,GAAG,GAAG;AACxB,QAAI,YAAY,WAAW,OAAO,GAAG,GAAG;AACtC,aAAO;AAAA,IACT;AACA,WAAO,OAAO,GAAG;AAAA,EACnB;AAEA,QAAM,MAAM,SAAS,KAAK,EAAE;AAE5B,MAAI,MAAM,GAAG,GAAG;AACd,WAAO;AAAA,EACT;AAEA,MAAI,YAAY,WAAW,KAAK;AAC9B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,MAAc,QAAQ,KAAK;AACpD,MAAI,SAAS,KACV,QAAQ,uCAAuC,EAAE,EACjD,QAAQ,yCAAyC,EAAE,EACnD,QAAQ,YAAY,EAAE,EACtB,QAAQ,kBAAkB,EAAE,EAC5B,QAAQ,QAAQ,EAAE,EAClB,QAAQ,WAAW,GAAG,EACtB,QAAQ,WAAW,GAAG,EACtB,QAAQ,UAAU,GAAG,EACrB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG;AAEvB,MAAI,QAAQ,GAAG;AACb,aAAS,OAAO,MAAM,GAAG,KAAK;AAAA,EAChC;AAEA,SAAO;AACT;;;ACjEO,SAAS,UACd,KACA,SACQ;AACR,QAAM,MAAgB,CAAC;AAEvB,SAAO,KAAK,GAAG,EAAE,QAAQ,SAAO;AAC9B,QAAI,MAAM,IAAI,GAAG;AAEjB,QAAI,QAAQ,GAAG,GAAG;AAChB,YAAM;AAAA,IACR,OAAO;AACL,YAAM,OAAO,GAAG;AAAA,IAClB;AAEA,QAAI,SAAS,QAAQ;AACnB,YAAM,mBAAmB,GAAG;AAAA,IAC9B;AAEA,QAAI,KAAK,GAAG,GAAG,IAAI,GAAG,EAAE;AAAA,EAC1B,CAAC;AAED,SAAO,IAAI,KAAK,GAAG;AACrB;AAEO,SAASM,OAAM,KAAa,SAA0C;AAC3E,QAAM,MAA2B,CAAC;AAElC,MAAI,CAAC,SAAS,GAAG,GAAG;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,IAAI,QAAQ,eAAe,EAAE,EAAE,MAAM,GAAG;AAEpD,MAAI,QAAQ,WAAS;AACnB,UAAM,WAAW,MAAM,MAAM,GAAG;AAChC,UAAM,MAAM,SAAS,CAAC;AAEtB,QAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,UAAI,MAAW,SAAS,CAAC;AAEzB,UAAI,SAAS,QAAQ;AACnB,cAAM,mBAAmB,GAAG;AAAA,MAC9B;AAEA,YACE,SAAS,aAAa,IAAI,SAAS,SAAS,SAAS,IACjD,IAAI,MAAM,SAAS,SAAS,IAC5B;AAEN,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,IAAO,aAAQ;AAAA,EACb;AAAA,EACA,OAAAA;AACF;;;ACpEA,IAAM,UAAU;AAChB,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,QAAQ;AACd,IAAM,SAAS;AAER,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AACA,EAAAA,wBAAA;AAPU,SAAAA;AAAA,GAAA;AAUL,SAAS,OACd,MAAM,SAAS,GACfP,QAAO,sBACC;AACR,MAAI,WAAmB,UAAU,QAAQ;AAEzC,UAAQA,OAAM;AAAA,IACZ,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW;AACX;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ;AACnB;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ;AACnB;AAAA,IACF,KAAK;AACH,iBAAW,QAAQ,QAAQ;AAC3B;AAAA,IACF;AACE;AAAA,EACJ;AAEA,MAAI,MAAM;AACV,QAAM,iBAAiB,SAAS;AAEhC,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,WAAO,SAAS,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,cAAc,CAAC;AAAA,EACnE;AAEA,SAAO;AACT;;;ACxDA,OAAO,UAAU;AAWV,SAAS,QAAQ,MAAc,SAAkC;AACtE,SAAO,KAAK,MAAM;AAAA,IAChB,aAAa;AAAA,IACb,OAAO;AAAA,IACP,GAAG;AAAA,EACL,CAAC;AACH;;;ACjBA,SAAe,IAAc,UAAc","sourcesContent":["export * from 'deep-object-diff'\nexport * from './bytes'\nexport * from './clone'\nexport * from './color'\nexport * from './conv'\nexport * from './date'\nexport { default as helper } from './helper'\nexport * from './hs'\nexport * from './mime'\nexport * from './nanoid'\nexport * from './object'\nexport * from './parse'\nexport { default as qs } from './qs'\nexport * from './random'\nexport * from './slugify'\nexport * from './type'\nexport * from './uuid'\n","import visUUID from 'validator/lib/isUUID'\r\nimport visFQDN from 'validator/lib/isFQDN'\r\nimport { default as visNumeric, IsNumericOptions } from 'validator/lib/isNumeric'\r\nimport { default as visEmail, IsEmailOptions } from 'validator/lib/isEmail'\r\nimport { default as visURL, IsURLOptions } from 'validator/lib/isURL'\r\n\r\nimport { type } from './type'\r\n\r\n/* @ts-ignore */\r\nconst whiteSpaceRegx =\r\n /^[\\s\\f\\n\\r\\t\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0]+$/\r\n\r\nexport const isUUID = visUUID\r\nexport const isFQDN = visFQDN\r\n\r\nexport function isBoolean(arg: any): boolean {\r\n return type(arg) === 'boolean'\r\n}\r\n\r\nexport function isString(arg: any): boolean {\r\n return type(arg) === 'string'\r\n}\r\n\r\nexport function isNumber(arg: any): boolean {\r\n return type(arg) === 'number'\r\n}\r\n\r\nexport const isArray = Array.isArray\r\n\r\nexport function isValidArray(arg: any): boolean {\r\n return isArray(arg) && arg.length > 0\r\n}\r\n\r\nexport function isNan(arg: any): boolean {\r\n return isNumber(arg) && Number.isNaN(arg)\r\n}\r\n\r\nexport function isSet(arg: any): boolean {\r\n return type(arg) === 'set'\r\n}\r\n\r\nexport function isWeakSet(arg: any): boolean {\r\n return type(arg) === 'weakset'\r\n}\r\n\r\nexport function isMap(arg: any): boolean {\r\n return type(arg) === 'map'\r\n}\r\n\r\nexport function isWeakMap(arg: any): boolean {\r\n return type(arg) === 'weakmap'\r\n}\r\n\r\nexport function isSymbol(arg: any): boolean {\r\n return type(arg) === 'symbol'\r\n}\r\n\r\nexport function isObject(arg: any): boolean {\r\n return type(arg) === 'object'\r\n}\r\n\r\nexport function isDate(arg: any): boolean {\r\n return type(arg) === 'date'\r\n}\r\n\r\nexport function isRegExp(arg: any): boolean {\r\n return type(arg) === 'regexp'\r\n}\r\n\r\nexport function isError(arg: any): boolean {\r\n return type(arg) === 'error'\r\n}\r\n\r\nexport function isFunction(arg: any): boolean {\r\n return type(arg) === 'function'\r\n}\r\n\r\nexport function isNull(arg: any): boolean {\r\n return type(arg) === 'null'\r\n}\r\n\r\nexport function isUndefined(arg: any): boolean {\r\n return type(arg) === 'undefined'\r\n}\r\n\r\nexport function isNil(arg: any): boolean {\r\n return isNull(arg) || isUndefined(arg)\r\n}\r\n\r\nexport function isPlainObject(arg: any): boolean {\r\n if (!isObject(arg)) return false\r\n\r\n const ctor = arg.constructor\r\n if (typeof ctor !== 'function') return false\r\n\r\n const proto = ctor.prototype\r\n if (!isObject(proto)) return false\r\n\r\n return proto.hasOwnProperty('isPrototypeOf')\r\n}\r\n\r\nexport function isEmpty(arg: any): boolean {\r\n if (isNil(arg)) return true\r\n\r\n if (isBoolean(arg)) return false\r\n\r\n if (isNumber(arg)) return false\r\n\r\n if (isString(arg)) {\r\n return arg.length === 0 || whiteSpaceRegx.test(arg)\r\n }\r\n\r\n if (isFunction(arg) || isArray(arg)) {\r\n return arg.length === 0\r\n }\r\n\r\n switch (type(arg)) {\r\n case 'file':\r\n case 'map':\r\n case 'weakmap':\r\n case 'set':\r\n case 'weakset': {\r\n return arg.size === 0\r\n }\r\n\r\n case 'object': {\r\n for (const key in arg) {\r\n if (Object.hasOwnProperty.call(arg, key)) return false\r\n }\r\n return true\r\n }\r\n\r\n default:\r\n break\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport function isValid(arg: any): boolean {\r\n return !isEmpty(arg)\r\n}\r\n\r\nexport function isEqual(arg1: any, arg2: any): boolean {\r\n return String(arg1) === String(arg2)\r\n}\r\n\r\nexport function isTrue(arg1: any): boolean {\r\n return arg1 === true || arg1 === 'true' || isEqual(arg1, '1')\r\n}\r\n\r\nexport function isFalse(arg1: any): boolean {\r\n return arg1 === false || arg1 === 'false' || isEqual(arg1, '0')\r\n}\r\n\r\nexport function isBool(arg: any): boolean {\r\n return isTrue(arg) || isFalse(arg)\r\n}\r\n\r\nexport function isFormData(arg: any): boolean {\r\n return type(arg) === 'formdata'\r\n}\r\n\r\nexport function uniqueArray(arg: any): any[] {\r\n if (!isValidArray(arg)) {\r\n return []\r\n }\r\n return Array.from(new Set(arg))\r\n}\r\n\r\nexport function isNumeric(arg: any, options?: IsNumericOptions): boolean {\r\n return isNumber(arg) || (isString(arg) && visNumeric(arg, options))\r\n}\r\n\r\nexport function isURL(arg: any, options?: IsURLOptions): boolean {\r\n return isValid(arg) && isString(arg) && visURL(arg, options)\r\n}\r\n\r\nexport function isEmail(arg: any, options?: IsEmailOptions): boolean {\r\n return isValid(arg) && isString(arg) && visEmail(arg, options)\r\n}\r\n\r\nexport default {\r\n isUUID,\r\n isFQDN,\r\n isBoolean,\r\n isString,\r\n isNumber,\r\n isNumeric,\r\n isArray,\r\n isValidArray,\r\n isNan,\r\n isSet,\r\n isMap,\r\n isSymbol,\r\n isObject,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isNil,\r\n isPlainObject,\r\n isEmpty,\r\n isValid,\r\n isEqual,\r\n isTrue,\r\n isFalse,\r\n isBool,\r\n isURL,\r\n isEmail,\r\n isFormData,\r\n uniqueArray\r\n}\r\n","const toString = Object.prototype.toString\n\nexport function type(obj: any): string {\n if (obj === null) {\n return 'null'\n }\n\n let type: string = typeof obj\n\n if (type !== 'object') {\n return type\n }\n\n type = toString.call(obj).slice(8, -1)\n\n const typeLower = type.toLowerCase()\n\n if (typeLower !== 'object') {\n if (\n typeLower === 'number' ||\n typeLower === 'boolean' ||\n typeLower === 'string'\n ) {\n return type\n }\n return typeLower\n }\n\n return typeLower\n}\n","import { isEmpty } from './helper'\n\nconst BYTE = 1\nconst KB = BYTE * 1024\nconst MB = KB * 1024\nconst GB = MB * 1024\nconst TB = GB * 1024\nconst PB = TB * 1024\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(b|kb|mb|gb|tb|pb)$/i\n\nexport function parseBytes(value: string | number): number | undefined {\n if (isEmpty(value)) {\n return\n }\n\n const str = String(value)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'pb':\n return num * PB\n\n case 'tb':\n return num * TB\n\n case 'gb':\n return num * GB\n\n case 'mb':\n return num * MB\n\n case 'kb':\n return num * KB\n\n case 'b':\n return num * BYTE\n }\n}\n\nexport function bytes(size: string): number | undefined {\n return parseBytes(size)\n}\n\nexport function formatBytes(value: string | number): string {\n const mag = Math.abs(Number(value))\n let unit: string\n let size: number | string\n\n if (mag >= PB) {\n unit = 'PB'\n size = mag / PB\n } else if (mag >= TB) {\n unit = 'TB'\n size = mag / TB\n } else if (mag >= GB) {\n unit = 'GB'\n size = mag / GB\n } else if (mag >= MB) {\n unit = 'MB'\n size = mag / MB\n } else if (mag >= KB) {\n unit = 'KB'\n size = mag / KB\n } else {\n unit = 'B'\n size = mag / BYTE\n }\n\n if (String(size).includes('.')) {\n size = size.toFixed(1)\n }\n\n return size + unit\n}\n","import _clone from 'clone'\n\nexport function clone<T>(obj: T): T {\n return _clone(obj)\n}\n","import { isEmpty } from './helper'\n\nconst HEX_REGEX = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i\nconst RGBA_REGEX =\n /rgba\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d*(?:\\.\\d+)?)\\)/i\nconst RGB_REGEX = /rgb\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?)\\)/i\n\nexport function isHexColor(color: string): boolean {\n return HEX_REGEX.test(color)\n}\n\nexport function isRgba(color: string): boolean {\n return RGBA_REGEX.test(color)\n}\n\nexport function isRgb(color: string): boolean {\n return RGB_REGEX.test(color)\n}\n\nexport function hexToRgb(hex: string): number[] {\n if (isEmpty(hex)) {\n return []\n }\n\n if (isRgba(hex)) {\n // @ts-ignore\n const [, red, green, blue, alpha] = RGBA_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), Number(alpha)]\n }\n\n if (isRgb(hex)) {\n // @ts-ignore\n const [, red, green, blue] = RGB_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), 1]\n }\n\n if (!isHexColor(hex)) {\n return []\n }\n\n hex = hex.replace(/^#/, '')\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n\n let alpha = 1\n if (hex.length === 8) {\n alpha = hexToFloatAlpha(hex.slice(6, 8))\n hex = hex.slice(0, 6)\n }\n\n const number = Number.parseInt(hex, 16)\n const red = number >> 16\n const green = (number >> 8) & 255\n const blue = number & 255\n\n return [red, green, blue, alpha]\n}\n\nexport function isDarkColor(hex: string): boolean {\n if (!isHexColor(hex)) {\n return true\n }\n return colorBrightness(hex) < 170\n}\n\nexport function isLightColor(hex: string): boolean {\n return !isDarkColor(hex)\n}\n\nexport function colorBrightness(hex: string): number {\n const [red, green, blue, alpha] = hexToRgb(hex)\n return (alpha * (red * 299 + green * 587 + blue * 114)) / 1000\n}\n\nexport function rgbToHex([r, g, b]: number[]): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\nexport function alpha(hex: string, alpha: number): string {\n const [red, green, blue] = hexToRgb(hex)\n return `rgba(${red}, ${green}, ${blue}, ${alpha})`\n}\n\nexport function lighten(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#fff'))\n}\n\nexport function darken(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#010101'))\n}\n\nexport function invert(hex: string): string {\n const [red, green, blue] = hexToRgb(hex)\n return rgbToHex([255 - red, 255 - green, 255 - blue])\n}\n\n/**\n * Convert rgba to a transparency-adjusted-hex\n * https://stackoverflow.com/a/15898886\n */\nexport function alphaHexToRgb(\n hex: string,\n alpha: number,\n backgroundHex: string\n): number[] {\n const hexRgb = hexToRgb(hex)\n const backgroundRgb = hexToRgb(backgroundHex)\n\n return hexRgb.map((color, index) => {\n return colorRange(\n Math.floor(\n colorRange(color) * alpha +\n colorRange(backgroundRgb[index]) * (1 - alpha)\n )\n )\n })\n}\n\nfunction colorRange(color: number): number {\n return color < 1 ? 1 : color >= 255 ? 255 : color\n}\n\nfunction hexToFloatAlpha(arg: string) {\n const num = parseInt(arg, 16)\n const max = parseInt('0xff', 16)\n return Number((num / max).toFixed(2))\n}\n","import { isEmpty, isTrue, isBoolean } from './helper'\n\nexport function toBool(value: unknown, defaults?: boolean): boolean {\n if (isEmpty(value)) {\n return defaults || false\n }\n\n if (isBoolean(value)) {\n return value as boolean\n }\n\n return isTrue(value)\n}\n","import { isEmpty } from './helper'\n\nconst second = 1\nconst minute = second * 60\nconst hour = minute * 60\nconst day = hour * 24\nconst week = day * 7\nconst year = day * 365\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(s|m|h|d|w|y)$/i\n\nfunction parse(arg: string): number | undefined {\n if (isEmpty(arg)) {\n return\n }\n\n const str = String(arg)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'y':\n return num * year\n\n case 'w':\n return num * week\n\n case 'd':\n return num * day\n\n case 'h':\n return num * hour\n\n case 'm':\n return num * minute\n\n case 's':\n return num * second\n }\n}\n\nexport function hs(arg: string): number | undefined {\n const value = parse(arg)\n\n if (value) {\n return Math.round(value)\n }\n}\n\nexport function ms(arg: string): number | undefined {\n const value = hs(arg)\n\n if (value) {\n return value * 1e3\n }\n}\n","import { hs } from './hs'\nimport { OpUnitType, QUnitType } from 'dayjs'\nimport dayjs from 'dayjs'\n\nexport function timestamp(): number {\n return Math.floor(Date.now() / 1e3)\n}\n\nexport function date(str?: string, format?: string) {\n return dayjs(str, format)\n}\n\nexport function unixDate(t: number) {\n return dayjs.unix(t)\n}\n\nexport function isDateExpired(\n start: number,\n end: number,\n expire: string\n): boolean {\n return end - start > hs(expire)!\n}\n\nexport function unixDiff(\n start: number,\n end: number,\n unit: QUnitType | OpUnitType = 'day'\n): number {\n if (start > end || start < 0 || end < 0) {\n return 0\n }\n return unixDate(end).diff(unixDate(start), unit)\n}\n\nexport function datePeriod(\n start: number,\n value = 1,\n unit: OpUnitType = 'month'\n): number {\n return unixDate(start)\n .add(value, unit as unknown as any)\n .unix()\n}\n","import * as m from 'mime-types'\n\nexport const commonImageMimeTypes: string[] = [\n m.lookup('.jpg'),\n m.lookup('.png'),\n m.lookup('.bmp'),\n m.lookup('.webp'),\n m.lookup('.gif')\n] as any\n\nexport const commonFileMimeTypes: string[] = [\n ...commonImageMimeTypes,\n m.lookup('.txt'),\n m.lookup('.md'),\n m.lookup('.doc'),\n m.lookup('.docx'),\n m.lookup('.xls'),\n m.lookup('.xlsx'),\n m.lookup('.csv'),\n m.lookup('.ppt'),\n m.lookup('.pptx'),\n m.lookup('.pdf'),\n m.lookup('.mp4'),\n m.lookup('.wmv'),\n m.lookup('.svg')\n] as any\n\nexport const mime = m.lookup\n","import { customAlphabet } from 'nanoid'\n\nconst NANOID_ALPHABET =\n 'ModuleSymbhasOwnPr0123456789ABCDEFGHNRVfgctiUvzKqYTJkLxpZXIjQW'\n\nexport function nanoid(len = 21): string {\n return nanoidCustomAlphabet(NANOID_ALPHABET, len)\n}\n\nexport function nanoidCustomAlphabet(alphabet: string, len = 21): string {\n const generate = customAlphabet(alphabet, len)\n return generate()\n}\n","import { clone } from './clone'\nimport {\n isArray,\n isNan,\n isNil,\n isObject,\n isPlainObject,\n isValid\n} from './helper'\nimport * as objectPath from 'object-path'\n\nexport { deepEqual } from 'fast-equals'\n\nexport function pickObject(\n target: Record<string, any>,\n fields: Array<string | string[]>,\n excludes: Array<string> = []\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const targetKeys = Object.keys(copied)\n\n const fieldAlias: Record<string, any> = {}\n let picked: string[] = []\n\n if (fields.length > 0) {\n fields.forEach(item => {\n if (isArray(item)) {\n if (item.length > 0) {\n const filed = item[0]\n picked.push(filed)\n\n if (item.length > 1) {\n fieldAlias[filed] = item[1]\n }\n }\n } else {\n picked.push(item)\n }\n })\n } else {\n picked = targetKeys\n }\n\n const newObj: Record<string, any> = {}\n\n targetKeys\n .filter(key => !excludes.includes(key) && picked.includes(key))\n .forEach(key => {\n const alias = fieldAlias[key]\n\n if (alias) {\n newObj[alias] = copied[key]\n } else {\n newObj[key] = copied[key]\n }\n })\n\n return newObj\n}\n\nexport function pickValidValues<T = string | number | boolean>(\n target: Record<string, T>,\n fields: Array<string | string[]>\n): Record<string, T> {\n const dist: Record<string, T> = {}\n\n fields.forEach(field => {\n let key = String(field)\n let alias: string | undefined\n\n if (isArray(field)) {\n key = field[0]\n\n if (field.length > 1) {\n alias = field[1]\n }\n }\n\n let value = target[key]\n\n if (isValid(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n\n dist[alias || key] = value\n }\n })\n\n return dist\n}\n\nexport function removeObjectNil(\n target: Record<string, any>\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const newObj: Record<string, any> = {}\n\n for (const field of Object.keys(copied)) {\n const value = copied[field]\n\n if (isNil(value) || isNan(value)) {\n continue\n }\n\n newObj[field] = value\n }\n\n return newObj\n}\n\nexport function copyObjectValues(\n target: Record<string, any>,\n dist: Record<string, any>,\n keyMaps: Array<string | string[]>\n): void {\n if (!isObject(target) || !isObject(dist)) {\n return\n }\n\n for (const keys of keyMaps) {\n let targetKey: string\n let distKey: string\n\n if (isArray(keys)) {\n targetKey = keys[0]\n distKey = keys[1]\n } else {\n targetKey = String(keys)\n distKey = targetKey\n }\n\n let value = objectPath.get(target, targetKey)\n\n if (!isNil(value) && !isNan(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n objectPath.set(dist, distKey, value)\n }\n }\n}\n","import * as helper from './helper'\n\nexport function parseJson(str: string, defaultValue?: any): any {\n let value: any\n\n try {\n value = JSON.parse(str)\n } catch (e) {\n // eslint-disable-line\n }\n\n if (defaultValue && !value) {\n value = defaultValue\n }\n\n return value\n}\n\nexport function parseBool(arg: any, defaultValue?: boolean): boolean {\n if (helper.isEmpty(arg)) {\n return defaultValue || false\n }\n\n if (helper.isBoolean(arg)) {\n return arg\n }\n\n return helper.isTrue(arg)\n}\n\nexport function parseNumber(\n arg: any,\n defaultValue?: number,\n maxValue?: number\n): number | undefined {\n if (helper.isNumber(arg)) {\n if (maxValue && maxValue < Number(arg)) {\n return maxValue\n }\n return Number(arg)\n }\n\n const num = parseInt(arg, 10)\n\n if (isNaN(num)) {\n return defaultValue\n }\n\n if (maxValue && maxValue < num) {\n return maxValue\n }\n\n return num\n}\n\nexport function htmlToText(html: string, limit = 100) {\n let result = html\n .replace(/<style[^<>]*>((?!<\\/).)*<\\/style>/gi, '')\n .replace(/<script[^<>]*>((?!<\\/).)*<\\/script>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/\\t|\\r|\\n|\\r\\n/g, '')\n .replace(/\\s+/g, '')\n .replace(/ /g, ' ')\n .replace(/"/g, '\"')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n if (limit > 0) {\n result = result.slice(0, limit)\n }\n\n return result\n}\n","import { isEmpty, isString } from './helper'\n\ninterface QsOptions {\n encode?: boolean\n decode?: boolean\n separator?: string\n}\n\nexport function stringify(\n arg: Record<string, any>,\n options?: QsOptions\n): string {\n const arr: string[] = []\n\n Object.keys(arg).forEach(key => {\n let val = arg[key]\n\n if (isEmpty(val)) {\n val = ''\n } else {\n val = String(val)\n }\n\n if (options?.encode) {\n val = encodeURIComponent(val)\n }\n\n arr.push(`${key}=${val}`)\n })\n\n return arr.join('&')\n}\n\nexport function parse(str: string, options?: QsOptions): Record<string, any> {\n const obj: Record<string, any> = {}\n\n if (!isString(str)) {\n return obj\n }\n\n const arr = str.replace(/^([^?]+)?\\?/, '').split('&')\n\n arr.forEach(param => {\n const paramArr = param.split('=')\n const key = paramArr[0]\n\n if (!isEmpty(key)) {\n let val: any = paramArr[1]\n\n if (options?.decode) {\n val = decodeURIComponent(val)\n }\n\n val =\n options?.separator && val.includes(options?.separator)\n ? val.split(options?.separator)\n : val\n\n obj[key] = val\n }\n })\n\n return obj\n}\n\nexport default {\n stringify,\n parse\n}\n","const numeric = '0123456789'\nconst hexic = '0123456789abcdef'\nconst lower = 'abcdefghijklmnopqrstuvwxyz'\nconst upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\nconst length = 6\n\nexport enum RandomType {\n LOWER,\n UPPER,\n NUMERIC,\n HEXIC,\n LOWER_NUMERIC,\n UPPER_NUMERIC,\n ALPHANUMERIC\n}\n\nexport function random(\n len = length * 2,\n type = RandomType.ALPHANUMERIC\n): string {\n let alphabet: string = numeric + lower + upper\n\n switch (type) {\n case RandomType.LOWER:\n alphabet = lower\n break\n case RandomType.UPPER:\n alphabet = upper\n break\n case RandomType.HEXIC:\n alphabet = hexic\n break\n case RandomType.NUMERIC:\n alphabet = numeric\n break\n case RandomType.LOWER_NUMERIC:\n alphabet = lower + numeric\n break\n case RandomType.UPPER_NUMERIC:\n alphabet = upper + numeric\n break\n case RandomType.ALPHANUMERIC:\n alphabet = lower + upper + numeric\n break\n default:\n break\n }\n\n let str = ''\n const alphabetLength = alphabet.length\n\n for (let i = 0; i < len; i++) {\n str += alphabet.charAt(Math.floor(Math.random() * alphabetLength))\n }\n\n return str\n}\n","import slug from 'slugify'\n\nexport interface SlugifyOptions {\n replacement?: string\n remove?: RegExp\n lower?: boolean\n strict?: boolean\n locale?: string\n trim?: boolean\n}\n\nexport function slugify(text: string, options?: SlugifyOptions): string {\n return slug(text, {\n replacement: '_',\n lower: true,\n ...options\n })\n}\n","export { v4 as uuidv4, v5 as uuidv5 } from 'uuid'\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from 'deep-object-diff';
|
|
2
2
|
import visUUID from 'validator/lib/isUUID';
|
|
3
|
+
import visFQDN from 'validator/lib/isFQDN';
|
|
3
4
|
import visNumeric from 'validator/lib/isNumeric';
|
|
4
5
|
import visEmail from 'validator/lib/isEmail';
|
|
5
6
|
import visURL from 'validator/lib/isURL';
|
|
@@ -8,80 +9,11 @@ import dayjs from 'dayjs';
|
|
|
8
9
|
import * as m from 'mime-types';
|
|
9
10
|
import { customAlphabet } from 'nanoid';
|
|
10
11
|
import * as objectPath from 'object-path';
|
|
11
|
-
|
|
12
|
+
export { deepEqual } from 'fast-equals';
|
|
12
13
|
import slug from 'slugify';
|
|
13
|
-
import { v4, v5 } from 'uuid';
|
|
14
14
|
export { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
|
|
15
15
|
|
|
16
|
-
var __defProp = Object.defineProperty;
|
|
17
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
18
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
19
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
20
|
-
var __export = (target, all) => {
|
|
21
|
-
for (var name in all)
|
|
22
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
23
|
-
};
|
|
24
|
-
var __copyProps = (to, from, except, desc) => {
|
|
25
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
26
|
-
for (let key of __getOwnPropNames(from))
|
|
27
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
28
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
29
|
-
}
|
|
30
|
-
return to;
|
|
31
|
-
};
|
|
32
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget );
|
|
33
|
-
|
|
34
16
|
// src/index.ts
|
|
35
|
-
var src_exports = {};
|
|
36
|
-
__export(src_exports, {
|
|
37
|
-
RandomType: () => RandomType,
|
|
38
|
-
alpha: () => alpha,
|
|
39
|
-
alphaHexToRgb: () => alphaHexToRgb,
|
|
40
|
-
bytes: () => bytes,
|
|
41
|
-
clone: () => clone,
|
|
42
|
-
colorBrightness: () => colorBrightness,
|
|
43
|
-
commonFileMimeTypes: () => commonFileMimeTypes,
|
|
44
|
-
commonImageMimeTypes: () => commonImageMimeTypes,
|
|
45
|
-
copyObjectValues: () => copyObjectValues,
|
|
46
|
-
darken: () => darken,
|
|
47
|
-
date: () => date,
|
|
48
|
-
datePeriod: () => datePeriod,
|
|
49
|
-
formatBytes: () => formatBytes,
|
|
50
|
-
helper: () => helper_default,
|
|
51
|
-
hexToRgb: () => hexToRgb,
|
|
52
|
-
hs: () => hs,
|
|
53
|
-
htmlToText: () => htmlToText,
|
|
54
|
-
invert: () => invert,
|
|
55
|
-
isDarkColor: () => isDarkColor,
|
|
56
|
-
isDateExpired: () => isDateExpired,
|
|
57
|
-
isHexColor: () => isHexColor,
|
|
58
|
-
isLightColor: () => isLightColor,
|
|
59
|
-
isRgb: () => isRgb,
|
|
60
|
-
isRgba: () => isRgba,
|
|
61
|
-
lighten: () => lighten,
|
|
62
|
-
mime: () => mime,
|
|
63
|
-
ms: () => ms,
|
|
64
|
-
nanoid: () => nanoid,
|
|
65
|
-
nanoidCustomAlphabet: () => nanoidCustomAlphabet,
|
|
66
|
-
parseBool: () => parseBool,
|
|
67
|
-
parseBytes: () => parseBytes,
|
|
68
|
-
parseJson: () => parseJson,
|
|
69
|
-
parseNumber: () => parseNumber,
|
|
70
|
-
pickObject: () => pickObject,
|
|
71
|
-
pickValidValues: () => pickValidValues,
|
|
72
|
-
qs: () => qs_default,
|
|
73
|
-
random: () => random,
|
|
74
|
-
removeObjectNil: () => removeObjectNil,
|
|
75
|
-
rgbToHex: () => rgbToHex,
|
|
76
|
-
slugify: () => slugify,
|
|
77
|
-
timestamp: () => timestamp,
|
|
78
|
-
toBool: () => toBool,
|
|
79
|
-
type: () => type,
|
|
80
|
-
unixDate: () => unixDate,
|
|
81
|
-
unixDiff: () => unixDiff,
|
|
82
|
-
uuidv4: () => v4,
|
|
83
|
-
uuidv5: () => v5
|
|
84
|
-
});
|
|
85
17
|
|
|
86
18
|
// src/type.ts
|
|
87
19
|
var toString = Object.prototype.toString;
|
|
@@ -107,6 +39,7 @@ function type(obj) {
|
|
|
107
39
|
// src/helper.ts
|
|
108
40
|
var whiteSpaceRegx = /^[\s\f\n\r\t\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff\x09\x0a\x0b\x0c\x0d\x20\xa0]+$/;
|
|
109
41
|
var isUUID = visUUID;
|
|
42
|
+
var isFQDN = visFQDN;
|
|
110
43
|
function isBoolean(arg) {
|
|
111
44
|
return type(arg) === "boolean";
|
|
112
45
|
}
|
|
@@ -157,23 +90,17 @@ function isNil(arg) {
|
|
|
157
90
|
return isNull(arg) || isUndefined(arg);
|
|
158
91
|
}
|
|
159
92
|
function isPlainObject(arg) {
|
|
160
|
-
if (!isObject(arg))
|
|
161
|
-
return false;
|
|
93
|
+
if (!isObject(arg)) return false;
|
|
162
94
|
const ctor = arg.constructor;
|
|
163
|
-
if (typeof ctor !== "function")
|
|
164
|
-
return false;
|
|
95
|
+
if (typeof ctor !== "function") return false;
|
|
165
96
|
const proto = ctor.prototype;
|
|
166
|
-
if (!isObject(proto))
|
|
167
|
-
return false;
|
|
97
|
+
if (!isObject(proto)) return false;
|
|
168
98
|
return proto.hasOwnProperty("isPrototypeOf");
|
|
169
99
|
}
|
|
170
100
|
function isEmpty(arg) {
|
|
171
|
-
if (isNil(arg))
|
|
172
|
-
|
|
173
|
-
if (
|
|
174
|
-
return false;
|
|
175
|
-
if (isNumber(arg))
|
|
176
|
-
return false;
|
|
101
|
+
if (isNil(arg)) return true;
|
|
102
|
+
if (isBoolean(arg)) return false;
|
|
103
|
+
if (isNumber(arg)) return false;
|
|
177
104
|
if (isString(arg)) {
|
|
178
105
|
return arg.length === 0 || whiteSpaceRegx.test(arg);
|
|
179
106
|
}
|
|
@@ -190,8 +117,7 @@ function isEmpty(arg) {
|
|
|
190
117
|
}
|
|
191
118
|
case "object": {
|
|
192
119
|
for (const key in arg) {
|
|
193
|
-
if (Object.hasOwnProperty.call(arg, key))
|
|
194
|
-
return false;
|
|
120
|
+
if (Object.hasOwnProperty.call(arg, key)) return false;
|
|
195
121
|
}
|
|
196
122
|
return true;
|
|
197
123
|
}
|
|
@@ -233,6 +159,7 @@ function isEmail(arg, options) {
|
|
|
233
159
|
}
|
|
234
160
|
var helper_default = {
|
|
235
161
|
isUUID,
|
|
162
|
+
isFQDN,
|
|
236
163
|
isBoolean,
|
|
237
164
|
isString,
|
|
238
165
|
isNumber,
|
|
@@ -536,16 +463,6 @@ function nanoidCustomAlphabet(alphabet, len = 21) {
|
|
|
536
463
|
const generate = customAlphabet(alphabet, len);
|
|
537
464
|
return generate();
|
|
538
465
|
}
|
|
539
|
-
|
|
540
|
-
// src/object.ts
|
|
541
|
-
var object_exports = {};
|
|
542
|
-
__export(object_exports, {
|
|
543
|
-
copyObjectValues: () => copyObjectValues,
|
|
544
|
-
pickObject: () => pickObject,
|
|
545
|
-
pickValidValues: () => pickValidValues,
|
|
546
|
-
removeObjectNil: () => removeObjectNil
|
|
547
|
-
});
|
|
548
|
-
__reExport(object_exports, fast_equals_star);
|
|
549
466
|
function pickObject(target, fields, excludes = []) {
|
|
550
467
|
if (!isObject(target)) {
|
|
551
468
|
return {};
|
|
@@ -642,9 +559,6 @@ function copyObjectValues(target, dist, keyMaps) {
|
|
|
642
559
|
}
|
|
643
560
|
}
|
|
644
561
|
|
|
645
|
-
// src/index.ts
|
|
646
|
-
__reExport(src_exports, object_exports);
|
|
647
|
-
|
|
648
562
|
// src/parse.ts
|
|
649
563
|
function parseJson(str, defaultValue) {
|
|
650
564
|
let value;
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/helper.ts","../src/type.ts","../src/bytes.ts","../src/clone.ts","../src/color.ts","../src/conv.ts","../src/hs.ts","../src/date.ts","../src/mime.ts","../src/nanoid.ts","../src/object.ts","../src/parse.ts","../src/qs.ts","../src/random.ts","../src/slugify.ts","../src/uuid.ts"],"names":["type","red","green","blue","alpha","regx","parse","RandomType"],"mappings":"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","sourcesContent":["export * from 'deep-object-diff'\nexport * from './bytes'\nexport * from './clone'\nexport * from './color'\nexport * from './conv'\nexport * from './date'\nexport { default as helper } from './helper'\nexport * from './hs'\nexport * from './mime'\nexport * from './nanoid'\nexport * from './object'\nexport * from './parse'\nexport { default as qs } from './qs'\nexport * from './random'\nexport * from './slugify'\nexport * from './type'\nexport * from './uuid'\n","import visUUID from 'validator/lib/isUUID'\nimport {\n default as visNumeric,\n IsNumericOptions\n} from 'validator/lib/isNumeric'\nimport { default as visEmail, IsEmailOptions } from 'validator/lib/isEmail'\nimport { default as visURL, IsURLOptions } from 'validator/lib/isURL'\n\nimport { type } from './type'\n\n/* @ts-ignore */\nconst whiteSpaceRegx =\n /^[\\s\\f\\n\\r\\t\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0]+$/\n\nexport const isUUID = visUUID\n\nexport function isBoolean(arg: any): boolean {\n return type(arg) === 'boolean'\n}\n\nexport function isString(arg: any): boolean {\n return type(arg) === 'string'\n}\n\nexport function isNumber(arg: any): boolean {\n return type(arg) === 'number'\n}\n\nexport const isArray = Array.isArray\n\nexport function isValidArray(arg: any): boolean {\n return isArray(arg) && arg.length > 0\n}\n\nexport function isNan(arg: any): boolean {\n return isNumber(arg) && Number.isNaN(arg)\n}\n\nexport function isSet(arg: any): boolean {\n return type(arg) === 'set'\n}\n\nexport function isWeakSet(arg: any): boolean {\n return type(arg) === 'weakset'\n}\n\nexport function isMap(arg: any): boolean {\n return type(arg) === 'map'\n}\n\nexport function isWeakMap(arg: any): boolean {\n return type(arg) === 'weakmap'\n}\n\nexport function isSymbol(arg: any): boolean {\n return type(arg) === 'symbol'\n}\n\nexport function isObject(arg: any): boolean {\n return type(arg) === 'object'\n}\n\nexport function isDate(arg: any): boolean {\n return type(arg) === 'date'\n}\n\nexport function isRegExp(arg: any): boolean {\n return type(arg) === 'regexp'\n}\n\nexport function isError(arg: any): boolean {\n return type(arg) === 'error'\n}\n\nexport function isFunction(arg: any): boolean {\n return type(arg) === 'function'\n}\n\nexport function isNull(arg: any): boolean {\n return type(arg) === 'null'\n}\n\nexport function isUndefined(arg: any): boolean {\n return type(arg) === 'undefined'\n}\n\nexport function isNil(arg: any): boolean {\n return isNull(arg) || isUndefined(arg)\n}\n\nexport function isPlainObject(arg: any): boolean {\n if (!isObject(arg)) return false\n\n const ctor = arg.constructor\n if (typeof ctor !== 'function') return false\n\n const proto = ctor.prototype\n if (!isObject(proto)) return false\n\n return proto.hasOwnProperty('isPrototypeOf')\n}\n\nexport function isEmpty(arg: any): boolean {\n if (isNil(arg)) return true\n\n if (isBoolean(arg)) return false\n\n if (isNumber(arg)) return false\n\n if (isString(arg)) {\n return arg.length === 0 || whiteSpaceRegx.test(arg)\n }\n\n if (isFunction(arg) || isArray(arg)) {\n return arg.length === 0\n }\n\n switch (type(arg)) {\n case 'file':\n case 'map':\n case 'weakmap':\n case 'set':\n case 'weakset': {\n return arg.size === 0\n }\n\n case 'object': {\n for (const key in arg) {\n if (Object.hasOwnProperty.call(arg, key)) return false\n }\n return true\n }\n\n default:\n break\n }\n\n return false\n}\n\nexport function isValid(arg: any): boolean {\n return !isEmpty(arg)\n}\n\nexport function isEqual(arg1: any, arg2: any): boolean {\n return String(arg1) === String(arg2)\n}\n\nexport function isTrue(arg1: any): boolean {\n return arg1 === true || arg1 === 'true' || isEqual(arg1, '1')\n}\n\nexport function isFalse(arg1: any): boolean {\n return arg1 === false || arg1 === 'false' || isEqual(arg1, '0')\n}\n\nexport function isBool(arg: any): boolean {\n return isTrue(arg) || isFalse(arg)\n}\n\nexport function isFormData(arg: any): boolean {\n return type(arg) === 'formdata'\n}\n\nexport function uniqueArray(arg: any): any[] {\n if (!isValidArray(arg)) {\n return []\n }\n return Array.from(new Set(arg))\n}\n\nexport function isNumeric(arg: any, options?: IsNumericOptions): boolean {\n return isNumber(arg) || (isString(arg) && visNumeric(arg, options))\n}\n\nexport function isURL(arg: any, options?: IsURLOptions): boolean {\n return isValid(arg) && isString(arg) && visURL(arg, options)\n}\n\nexport function isEmail(arg: any, options?: IsEmailOptions): boolean {\n return isValid(arg) && isString(arg) && visEmail(arg, options)\n}\n\nexport default {\n isUUID,\n isBoolean,\n isString,\n isNumber,\n isNumeric,\n isArray,\n isValidArray,\n isNan,\n isSet,\n isMap,\n isSymbol,\n isObject,\n isDate,\n isRegExp,\n isError,\n isFunction,\n isNull,\n isUndefined,\n isNil,\n isPlainObject,\n isEmpty,\n isValid,\n isEqual,\n isTrue,\n isFalse,\n isBool,\n isURL,\n isEmail,\n isFormData,\n uniqueArray\n}\n","const toString = Object.prototype.toString\n\nexport function type(obj: any): string {\n if (obj === null) {\n return 'null'\n }\n\n let type: string = typeof obj\n\n if (type !== 'object') {\n return type\n }\n\n type = toString.call(obj).slice(8, -1)\n\n const typeLower = type.toLowerCase()\n\n if (typeLower !== 'object') {\n if (\n typeLower === 'number' ||\n typeLower === 'boolean' ||\n typeLower === 'string'\n ) {\n return type\n }\n return typeLower\n }\n\n return typeLower\n}\n","import { isEmpty } from './helper'\n\nconst BYTE = 1\nconst KB = BYTE * 1024\nconst MB = KB * 1024\nconst GB = MB * 1024\nconst TB = GB * 1024\nconst PB = TB * 1024\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(b|kb|mb|gb|tb|pb)$/i\n\nexport function parseBytes(value: string | number): number | undefined {\n if (isEmpty(value)) {\n return\n }\n\n const str = String(value)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'pb':\n return num * PB\n\n case 'tb':\n return num * TB\n\n case 'gb':\n return num * GB\n\n case 'mb':\n return num * MB\n\n case 'kb':\n return num * KB\n\n case 'b':\n return num * BYTE\n }\n}\n\nexport function bytes(size: string): number | undefined {\n return parseBytes(size)\n}\n\nexport function formatBytes(value: string | number): string {\n const mag = Math.abs(Number(value))\n let unit: string\n let size: number | string\n\n if (mag >= PB) {\n unit = 'PB'\n size = mag / PB\n } else if (mag >= TB) {\n unit = 'TB'\n size = mag / TB\n } else if (mag >= GB) {\n unit = 'GB'\n size = mag / GB\n } else if (mag >= MB) {\n unit = 'MB'\n size = mag / MB\n } else if (mag >= KB) {\n unit = 'KB'\n size = mag / KB\n } else {\n unit = 'B'\n size = mag / BYTE\n }\n\n if (String(size).includes('.')) {\n size = size.toFixed(1)\n }\n\n return size + unit\n}\n","import _clone from 'clone'\n\nexport function clone<T>(obj: T): T {\n return _clone(obj)\n}\n","import { isEmpty } from './helper'\n\nconst HEX_REGEX = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i\nconst RGBA_REGEX =\n /rgba\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d*(?:\\.\\d+)?)\\)/i\nconst RGB_REGEX = /rgb\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?)\\)/i\n\nexport function isHexColor(color: string): boolean {\n return HEX_REGEX.test(color)\n}\n\nexport function isRgba(color: string): boolean {\n return RGBA_REGEX.test(color)\n}\n\nexport function isRgb(color: string): boolean {\n return RGB_REGEX.test(color)\n}\n\nexport function hexToRgb(hex: string): number[] {\n if (isEmpty(hex)) {\n return []\n }\n\n if (isRgba(hex)) {\n // @ts-ignore\n const [, red, green, blue, alpha] = RGBA_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), Number(alpha)]\n }\n\n if (isRgb(hex)) {\n // @ts-ignore\n const [, red, green, blue] = RGB_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), 1]\n }\n\n if (!isHexColor(hex)) {\n return []\n }\n\n hex = hex.replace(/^#/, '')\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n\n let alpha = 1\n if (hex.length === 8) {\n alpha = hexToFloatAlpha(hex.slice(6, 8))\n hex = hex.slice(0, 6)\n }\n\n const number = Number.parseInt(hex, 16)\n const red = number >> 16\n const green = (number >> 8) & 255\n const blue = number & 255\n\n return [red, green, blue, alpha]\n}\n\nexport function isDarkColor(hex: string): boolean {\n if (!isHexColor(hex)) {\n return true\n }\n return colorBrightness(hex) < 170\n}\n\nexport function isLightColor(hex: string): boolean {\n return !isDarkColor(hex)\n}\n\nexport function colorBrightness(hex: string): number {\n const [red, green, blue, alpha] = hexToRgb(hex)\n return (alpha * (red * 299 + green * 587 + blue * 114)) / 1000\n}\n\nexport function rgbToHex([r, g, b]: number[]): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\nexport function alpha(hex: string, alpha: number): string {\n const [red, green, blue] = hexToRgb(hex)\n return `rgba(${red}, ${green}, ${blue}, ${alpha})`\n}\n\nexport function lighten(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#fff'))\n}\n\nexport function darken(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#010101'))\n}\n\nexport function invert(hex: string): string {\n const [red, green, blue] = hexToRgb(hex)\n return rgbToHex([255 - red, 255 - green, 255 - blue])\n}\n\n/**\n * Convert rgba to a transparency-adjusted-hex\n * https://stackoverflow.com/a/15898886\n */\nexport function alphaHexToRgb(\n hex: string,\n alpha: number,\n backgroundHex: string\n): number[] {\n const hexRgb = hexToRgb(hex)\n const backgroundRgb = hexToRgb(backgroundHex)\n\n return hexRgb.map((color, index) => {\n return colorRange(\n Math.floor(\n colorRange(color) * alpha +\n colorRange(backgroundRgb[index]) * (1 - alpha)\n )\n )\n })\n}\n\nfunction colorRange(color: number): number {\n return color < 1 ? 1 : color >= 255 ? 255 : color\n}\n\nfunction hexToFloatAlpha(arg: string) {\n const num = parseInt(arg, 16)\n const max = parseInt('0xff', 16)\n return Number((num / max).toFixed(2))\n}\n","import { isEmpty, isTrue, isBoolean } from './helper'\n\nexport function toBool(value: unknown, defaults?: boolean): boolean {\n if (isEmpty(value)) {\n return defaults || false\n }\n\n if (isBoolean(value)) {\n return value as boolean\n }\n\n return isTrue(value)\n}\n","import { isEmpty } from './helper'\n\nconst second = 1\nconst minute = second * 60\nconst hour = minute * 60\nconst day = hour * 24\nconst week = day * 7\nconst year = day * 365\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(s|m|h|d|w|y)$/i\n\nfunction parse(arg: string): number | undefined {\n if (isEmpty(arg)) {\n return\n }\n\n const str = String(arg)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'y':\n return num * year\n\n case 'w':\n return num * week\n\n case 'd':\n return num * day\n\n case 'h':\n return num * hour\n\n case 'm':\n return num * minute\n\n case 's':\n return num * second\n }\n}\n\nexport function hs(arg: string): number | undefined {\n const value = parse(arg)\n\n if (value) {\n return Math.round(value)\n }\n}\n\nexport function ms(arg: string): number | undefined {\n const value = hs(arg)\n\n if (value) {\n return value * 1e3\n }\n}\n","import { hs } from './hs'\nimport { OpUnitType, QUnitType } from 'dayjs'\nimport dayjs from 'dayjs'\n\nexport function timestamp(): number {\n return Math.floor(Date.now() / 1e3)\n}\n\nexport function date(str?: string, format?: string) {\n return dayjs(str, format)\n}\n\nexport function unixDate(t: number) {\n return dayjs.unix(t)\n}\n\nexport function isDateExpired(\n start: number,\n end: number,\n expire: string\n): boolean {\n return end - start > hs(expire)!\n}\n\nexport function unixDiff(\n start: number,\n end: number,\n unit: QUnitType | OpUnitType = 'day'\n): number {\n if (start > end || start < 0 || end < 0) {\n return 0\n }\n return unixDate(end).diff(unixDate(start), unit)\n}\n\nexport function datePeriod(\n start: number,\n value = 1,\n unit: OpUnitType = 'month'\n): number {\n return unixDate(start)\n .add(value, unit as unknown as any)\n .unix()\n}\n","import * as m from 'mime-types'\n\nexport const commonImageMimeTypes: string[] = [\n m.lookup('.jpg'),\n m.lookup('.png'),\n m.lookup('.bmp'),\n m.lookup('.webp'),\n m.lookup('.gif')\n] as any\n\nexport const commonFileMimeTypes: string[] = [\n ...commonImageMimeTypes,\n m.lookup('.txt'),\n m.lookup('.md'),\n m.lookup('.doc'),\n m.lookup('.docx'),\n m.lookup('.xls'),\n m.lookup('.xlsx'),\n m.lookup('.csv'),\n m.lookup('.ppt'),\n m.lookup('.pptx'),\n m.lookup('.pdf'),\n m.lookup('.mp4'),\n m.lookup('.wmv'),\n m.lookup('.svg')\n] as any\n\nexport const mime = m.lookup\n","import { customAlphabet } from 'nanoid'\n\nconst NANOID_ALPHABET =\n 'ModuleSymbhasOwnPr0123456789ABCDEFGHNRVfgctiUvzKqYTJkLxpZXIjQW'\n\nexport function nanoid(len = 21): string {\n return nanoidCustomAlphabet(NANOID_ALPHABET, len)\n}\n\nexport function nanoidCustomAlphabet(alphabet: string, len = 21): string {\n const generate = customAlphabet(alphabet, len)\n return generate()\n}\n","import { clone } from './clone'\nimport {\n isArray,\n isNan,\n isNil,\n isObject,\n isPlainObject,\n isValid\n} from './helper'\nimport * as objectPath from 'object-path'\n\nexport * from 'fast-equals'\n\nexport function pickObject(\n target: Record<string, any>,\n fields: Array<string | string[]>,\n excludes: Array<string> = []\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const targetKeys = Object.keys(copied)\n\n const fieldAlias: Record<string, any> = {}\n let picked: string[] = []\n\n if (fields.length > 0) {\n fields.forEach(item => {\n if (isArray(item)) {\n if (item.length > 0) {\n const filed = item[0]\n picked.push(filed)\n\n if (item.length > 1) {\n fieldAlias[filed] = item[1]\n }\n }\n } else {\n picked.push(item)\n }\n })\n } else {\n picked = targetKeys\n }\n\n const newObj: Record<string, any> = {}\n\n targetKeys\n .filter(key => !excludes.includes(key) && picked.includes(key))\n .forEach(key => {\n const alias = fieldAlias[key]\n\n if (alias) {\n newObj[alias] = copied[key]\n } else {\n newObj[key] = copied[key]\n }\n })\n\n return newObj\n}\n\nexport function pickValidValues<T = string | number | boolean>(\n target: Record<string, T>,\n fields: Array<string | string[]>\n): Record<string, T> {\n const dist: Record<string, T> = {}\n\n fields.forEach(field => {\n let key = String(field)\n let alias: string | undefined\n\n if (isArray(field)) {\n key = field[0]\n\n if (field.length > 1) {\n alias = field[1]\n }\n }\n\n let value = target[key]\n\n if (isValid(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n\n dist[alias || key] = value\n }\n })\n\n return dist\n}\n\nexport function removeObjectNil(\n target: Record<string, any>\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const newObj: Record<string, any> = {}\n\n for (const field of Object.keys(copied)) {\n const value = copied[field]\n\n if (isNil(value) || isNan(value)) {\n continue\n }\n\n newObj[field] = value\n }\n\n return newObj\n}\n\nexport function copyObjectValues(\n target: Record<string, any>,\n dist: Record<string, any>,\n keyMaps: Array<string | string[]>\n): void {\n if (!isObject(target) || !isObject(dist)) {\n return\n }\n\n for (const keys of keyMaps) {\n let targetKey: string\n let distKey: string\n\n if (isArray(keys)) {\n targetKey = keys[0]\n distKey = keys[1]\n } else {\n targetKey = String(keys)\n distKey = targetKey\n }\n\n let value = objectPath.get(target, targetKey)\n\n if (!isNil(value) && !isNan(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n objectPath.set(dist, distKey, value)\n }\n }\n}\n","import * as helper from './helper'\n\nexport function parseJson(str: string, defaultValue?: any): any {\n let value: any\n\n try {\n value = JSON.parse(str)\n } catch (e) {\n // eslint-disable-line\n }\n\n if (defaultValue && !value) {\n value = defaultValue\n }\n\n return value\n}\n\nexport function parseBool(arg: any, defaultValue?: boolean): boolean {\n if (helper.isEmpty(arg)) {\n return defaultValue || false\n }\n\n if (helper.isBoolean(arg)) {\n return arg\n }\n\n return helper.isTrue(arg)\n}\n\nexport function parseNumber(\n arg: any,\n defaultValue?: number,\n maxValue?: number\n): number | undefined {\n if (helper.isNumber(arg)) {\n if (maxValue && maxValue < Number(arg)) {\n return maxValue\n }\n return Number(arg)\n }\n\n const num = parseInt(arg, 10)\n\n if (isNaN(num)) {\n return defaultValue\n }\n\n if (maxValue && maxValue < num) {\n return maxValue\n }\n\n return num\n}\n\nexport function htmlToText(html: string, limit = 100) {\n let result = html\n .replace(/<style[^<>]*>((?!<\\/).)*<\\/style>/gi, '')\n .replace(/<script[^<>]*>((?!<\\/).)*<\\/script>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/\\t|\\r|\\n|\\r\\n/g, '')\n .replace(/\\s+/g, '')\n .replace(/ /g, ' ')\n .replace(/"/g, '\"')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n if (limit > 0) {\n result = result.slice(0, limit)\n }\n\n return result\n}\n","import { isEmpty, isString } from './helper'\n\ninterface QsOptions {\n encode?: boolean\n decode?: boolean\n separator?: string\n}\n\nexport function stringify(\n arg: Record<string, any>,\n options?: QsOptions\n): string {\n const arr: string[] = []\n\n Object.keys(arg).forEach(key => {\n let val = arg[key]\n\n if (isEmpty(val)) {\n val = ''\n } else {\n val = String(val)\n }\n\n if (options?.encode) {\n val = encodeURIComponent(val)\n }\n\n arr.push(`${key}=${val}`)\n })\n\n return arr.join('&')\n}\n\nexport function parse(str: string, options?: QsOptions): Record<string, any> {\n const obj: Record<string, any> = {}\n\n if (!isString(str)) {\n return obj\n }\n\n const arr = str.replace(/^([^?]+)?\\?/, '').split('&')\n\n arr.forEach(param => {\n const paramArr = param.split('=')\n const key = paramArr[0]\n\n if (!isEmpty(key)) {\n let val: any = paramArr[1]\n\n if (options?.decode) {\n val = decodeURIComponent(val)\n }\n\n val =\n options?.separator && val.includes(options?.separator)\n ? val.split(options?.separator)\n : val\n\n obj[key] = val\n }\n })\n\n return obj\n}\n\nexport default {\n stringify,\n parse\n}\n","const numeric = '0123456789'\nconst hexic = '0123456789abcdef'\nconst lower = 'abcdefghijklmnopqrstuvwxyz'\nconst upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\nconst length = 6\n\nexport enum RandomType {\n LOWER,\n UPPER,\n NUMERIC,\n HEXIC,\n LOWER_NUMERIC,\n UPPER_NUMERIC,\n ALPHANUMERIC\n}\n\nexport function random(\n len = length * 2,\n type = RandomType.ALPHANUMERIC\n): string {\n let alphabet: string = numeric + lower + upper\n\n switch (type) {\n case RandomType.LOWER:\n alphabet = lower\n break\n case RandomType.UPPER:\n alphabet = upper\n break\n case RandomType.HEXIC:\n alphabet = hexic\n break\n case RandomType.NUMERIC:\n alphabet = numeric\n break\n case RandomType.LOWER_NUMERIC:\n alphabet = lower + numeric\n break\n case RandomType.UPPER_NUMERIC:\n alphabet = upper + numeric\n break\n case RandomType.ALPHANUMERIC:\n alphabet = lower + upper + numeric\n break\n default:\n break\n }\n\n let str = ''\n const alphabetLength = alphabet.length\n\n for (let i = 0; i < len; i++) {\n str += alphabet.charAt(Math.floor(Math.random() * alphabetLength))\n }\n\n return str\n}\n","import slug from 'slugify'\n\nexport interface SlugifyOptions {\n replacement?: string\n remove?: RegExp\n lower?: boolean\n strict?: boolean\n locale?: string\n trim?: boolean\n}\n\nexport function slugify(text: string, options?: SlugifyOptions): string {\n return slug(text, {\n replacement: '_',\n lower: true,\n ...options\n })\n}\n","export { v4 as uuidv4, v5 as uuidv5 } from 'uuid'\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/helper.ts","../src/type.ts","../src/bytes.ts","../src/clone.ts","../src/color.ts","../src/conv.ts","../src/hs.ts","../src/date.ts","../src/mime.ts","../src/nanoid.ts","../src/object.ts","../src/parse.ts","../src/qs.ts","../src/random.ts","../src/slugify.ts","../src/uuid.ts"],"names":["type","red","green","blue","alpha","regx","parse","RandomType"],"mappings":"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","sourcesContent":["export * from 'deep-object-diff'\nexport * from './bytes'\nexport * from './clone'\nexport * from './color'\nexport * from './conv'\nexport * from './date'\nexport { default as helper } from './helper'\nexport * from './hs'\nexport * from './mime'\nexport * from './nanoid'\nexport * from './object'\nexport * from './parse'\nexport { default as qs } from './qs'\nexport * from './random'\nexport * from './slugify'\nexport * from './type'\nexport * from './uuid'\n","import visUUID from 'validator/lib/isUUID'\r\nimport visFQDN from 'validator/lib/isFQDN'\r\nimport { default as visNumeric, IsNumericOptions } from 'validator/lib/isNumeric'\r\nimport { default as visEmail, IsEmailOptions } from 'validator/lib/isEmail'\r\nimport { default as visURL, IsURLOptions } from 'validator/lib/isURL'\r\n\r\nimport { type } from './type'\r\n\r\n/* @ts-ignore */\r\nconst whiteSpaceRegx =\r\n /^[\\s\\f\\n\\r\\t\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\x09\\x0a\\x0b\\x0c\\x0d\\x20\\xa0]+$/\r\n\r\nexport const isUUID = visUUID\r\nexport const isFQDN = visFQDN\r\n\r\nexport function isBoolean(arg: any): boolean {\r\n return type(arg) === 'boolean'\r\n}\r\n\r\nexport function isString(arg: any): boolean {\r\n return type(arg) === 'string'\r\n}\r\n\r\nexport function isNumber(arg: any): boolean {\r\n return type(arg) === 'number'\r\n}\r\n\r\nexport const isArray = Array.isArray\r\n\r\nexport function isValidArray(arg: any): boolean {\r\n return isArray(arg) && arg.length > 0\r\n}\r\n\r\nexport function isNan(arg: any): boolean {\r\n return isNumber(arg) && Number.isNaN(arg)\r\n}\r\n\r\nexport function isSet(arg: any): boolean {\r\n return type(arg) === 'set'\r\n}\r\n\r\nexport function isWeakSet(arg: any): boolean {\r\n return type(arg) === 'weakset'\r\n}\r\n\r\nexport function isMap(arg: any): boolean {\r\n return type(arg) === 'map'\r\n}\r\n\r\nexport function isWeakMap(arg: any): boolean {\r\n return type(arg) === 'weakmap'\r\n}\r\n\r\nexport function isSymbol(arg: any): boolean {\r\n return type(arg) === 'symbol'\r\n}\r\n\r\nexport function isObject(arg: any): boolean {\r\n return type(arg) === 'object'\r\n}\r\n\r\nexport function isDate(arg: any): boolean {\r\n return type(arg) === 'date'\r\n}\r\n\r\nexport function isRegExp(arg: any): boolean {\r\n return type(arg) === 'regexp'\r\n}\r\n\r\nexport function isError(arg: any): boolean {\r\n return type(arg) === 'error'\r\n}\r\n\r\nexport function isFunction(arg: any): boolean {\r\n return type(arg) === 'function'\r\n}\r\n\r\nexport function isNull(arg: any): boolean {\r\n return type(arg) === 'null'\r\n}\r\n\r\nexport function isUndefined(arg: any): boolean {\r\n return type(arg) === 'undefined'\r\n}\r\n\r\nexport function isNil(arg: any): boolean {\r\n return isNull(arg) || isUndefined(arg)\r\n}\r\n\r\nexport function isPlainObject(arg: any): boolean {\r\n if (!isObject(arg)) return false\r\n\r\n const ctor = arg.constructor\r\n if (typeof ctor !== 'function') return false\r\n\r\n const proto = ctor.prototype\r\n if (!isObject(proto)) return false\r\n\r\n return proto.hasOwnProperty('isPrototypeOf')\r\n}\r\n\r\nexport function isEmpty(arg: any): boolean {\r\n if (isNil(arg)) return true\r\n\r\n if (isBoolean(arg)) return false\r\n\r\n if (isNumber(arg)) return false\r\n\r\n if (isString(arg)) {\r\n return arg.length === 0 || whiteSpaceRegx.test(arg)\r\n }\r\n\r\n if (isFunction(arg) || isArray(arg)) {\r\n return arg.length === 0\r\n }\r\n\r\n switch (type(arg)) {\r\n case 'file':\r\n case 'map':\r\n case 'weakmap':\r\n case 'set':\r\n case 'weakset': {\r\n return arg.size === 0\r\n }\r\n\r\n case 'object': {\r\n for (const key in arg) {\r\n if (Object.hasOwnProperty.call(arg, key)) return false\r\n }\r\n return true\r\n }\r\n\r\n default:\r\n break\r\n }\r\n\r\n return false\r\n}\r\n\r\nexport function isValid(arg: any): boolean {\r\n return !isEmpty(arg)\r\n}\r\n\r\nexport function isEqual(arg1: any, arg2: any): boolean {\r\n return String(arg1) === String(arg2)\r\n}\r\n\r\nexport function isTrue(arg1: any): boolean {\r\n return arg1 === true || arg1 === 'true' || isEqual(arg1, '1')\r\n}\r\n\r\nexport function isFalse(arg1: any): boolean {\r\n return arg1 === false || arg1 === 'false' || isEqual(arg1, '0')\r\n}\r\n\r\nexport function isBool(arg: any): boolean {\r\n return isTrue(arg) || isFalse(arg)\r\n}\r\n\r\nexport function isFormData(arg: any): boolean {\r\n return type(arg) === 'formdata'\r\n}\r\n\r\nexport function uniqueArray(arg: any): any[] {\r\n if (!isValidArray(arg)) {\r\n return []\r\n }\r\n return Array.from(new Set(arg))\r\n}\r\n\r\nexport function isNumeric(arg: any, options?: IsNumericOptions): boolean {\r\n return isNumber(arg) || (isString(arg) && visNumeric(arg, options))\r\n}\r\n\r\nexport function isURL(arg: any, options?: IsURLOptions): boolean {\r\n return isValid(arg) && isString(arg) && visURL(arg, options)\r\n}\r\n\r\nexport function isEmail(arg: any, options?: IsEmailOptions): boolean {\r\n return isValid(arg) && isString(arg) && visEmail(arg, options)\r\n}\r\n\r\nexport default {\r\n isUUID,\r\n isFQDN,\r\n isBoolean,\r\n isString,\r\n isNumber,\r\n isNumeric,\r\n isArray,\r\n isValidArray,\r\n isNan,\r\n isSet,\r\n isMap,\r\n isSymbol,\r\n isObject,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isNil,\r\n isPlainObject,\r\n isEmpty,\r\n isValid,\r\n isEqual,\r\n isTrue,\r\n isFalse,\r\n isBool,\r\n isURL,\r\n isEmail,\r\n isFormData,\r\n uniqueArray\r\n}\r\n","const toString = Object.prototype.toString\n\nexport function type(obj: any): string {\n if (obj === null) {\n return 'null'\n }\n\n let type: string = typeof obj\n\n if (type !== 'object') {\n return type\n }\n\n type = toString.call(obj).slice(8, -1)\n\n const typeLower = type.toLowerCase()\n\n if (typeLower !== 'object') {\n if (\n typeLower === 'number' ||\n typeLower === 'boolean' ||\n typeLower === 'string'\n ) {\n return type\n }\n return typeLower\n }\n\n return typeLower\n}\n","import { isEmpty } from './helper'\n\nconst BYTE = 1\nconst KB = BYTE * 1024\nconst MB = KB * 1024\nconst GB = MB * 1024\nconst TB = GB * 1024\nconst PB = TB * 1024\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(b|kb|mb|gb|tb|pb)$/i\n\nexport function parseBytes(value: string | number): number | undefined {\n if (isEmpty(value)) {\n return\n }\n\n const str = String(value)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'pb':\n return num * PB\n\n case 'tb':\n return num * TB\n\n case 'gb':\n return num * GB\n\n case 'mb':\n return num * MB\n\n case 'kb':\n return num * KB\n\n case 'b':\n return num * BYTE\n }\n}\n\nexport function bytes(size: string): number | undefined {\n return parseBytes(size)\n}\n\nexport function formatBytes(value: string | number): string {\n const mag = Math.abs(Number(value))\n let unit: string\n let size: number | string\n\n if (mag >= PB) {\n unit = 'PB'\n size = mag / PB\n } else if (mag >= TB) {\n unit = 'TB'\n size = mag / TB\n } else if (mag >= GB) {\n unit = 'GB'\n size = mag / GB\n } else if (mag >= MB) {\n unit = 'MB'\n size = mag / MB\n } else if (mag >= KB) {\n unit = 'KB'\n size = mag / KB\n } else {\n unit = 'B'\n size = mag / BYTE\n }\n\n if (String(size).includes('.')) {\n size = size.toFixed(1)\n }\n\n return size + unit\n}\n","import _clone from 'clone'\n\nexport function clone<T>(obj: T): T {\n return _clone(obj)\n}\n","import { isEmpty } from './helper'\n\nconst HEX_REGEX = /^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$/i\nconst RGBA_REGEX =\n /rgba\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d*(?:\\.\\d+)?)\\)/i\nconst RGB_REGEX = /rgb\\((\\d{1,3}%?),\\s*(\\d{1,3}%?),\\s*(\\d{1,3}%?)\\)/i\n\nexport function isHexColor(color: string): boolean {\n return HEX_REGEX.test(color)\n}\n\nexport function isRgba(color: string): boolean {\n return RGBA_REGEX.test(color)\n}\n\nexport function isRgb(color: string): boolean {\n return RGB_REGEX.test(color)\n}\n\nexport function hexToRgb(hex: string): number[] {\n if (isEmpty(hex)) {\n return []\n }\n\n if (isRgba(hex)) {\n // @ts-ignore\n const [, red, green, blue, alpha] = RGBA_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), Number(alpha)]\n }\n\n if (isRgb(hex)) {\n // @ts-ignore\n const [, red, green, blue] = RGB_REGEX.exec(hex)\n return [Number(red), Number(green), Number(blue), 1]\n }\n\n if (!isHexColor(hex)) {\n return []\n }\n\n hex = hex.replace(/^#/, '')\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]\n }\n\n let alpha = 1\n if (hex.length === 8) {\n alpha = hexToFloatAlpha(hex.slice(6, 8))\n hex = hex.slice(0, 6)\n }\n\n const number = Number.parseInt(hex, 16)\n const red = number >> 16\n const green = (number >> 8) & 255\n const blue = number & 255\n\n return [red, green, blue, alpha]\n}\n\nexport function isDarkColor(hex: string): boolean {\n if (!isHexColor(hex)) {\n return true\n }\n return colorBrightness(hex) < 170\n}\n\nexport function isLightColor(hex: string): boolean {\n return !isDarkColor(hex)\n}\n\nexport function colorBrightness(hex: string): number {\n const [red, green, blue, alpha] = hexToRgb(hex)\n return (alpha * (red * 299 + green * 587 + blue * 114)) / 1000\n}\n\nexport function rgbToHex([r, g, b]: number[]): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\nexport function alpha(hex: string, alpha: number): string {\n const [red, green, blue] = hexToRgb(hex)\n return `rgba(${red}, ${green}, ${blue}, ${alpha})`\n}\n\nexport function lighten(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#fff'))\n}\n\nexport function darken(hex: string, alpha: number): string {\n return rgbToHex(alphaHexToRgb(hex, 1 - alpha, '#010101'))\n}\n\nexport function invert(hex: string): string {\n const [red, green, blue] = hexToRgb(hex)\n return rgbToHex([255 - red, 255 - green, 255 - blue])\n}\n\n/**\n * Convert rgba to a transparency-adjusted-hex\n * https://stackoverflow.com/a/15898886\n */\nexport function alphaHexToRgb(\n hex: string,\n alpha: number,\n backgroundHex: string\n): number[] {\n const hexRgb = hexToRgb(hex)\n const backgroundRgb = hexToRgb(backgroundHex)\n\n return hexRgb.map((color, index) => {\n return colorRange(\n Math.floor(\n colorRange(color) * alpha +\n colorRange(backgroundRgb[index]) * (1 - alpha)\n )\n )\n })\n}\n\nfunction colorRange(color: number): number {\n return color < 1 ? 1 : color >= 255 ? 255 : color\n}\n\nfunction hexToFloatAlpha(arg: string) {\n const num = parseInt(arg, 16)\n const max = parseInt('0xff', 16)\n return Number((num / max).toFixed(2))\n}\n","import { isEmpty, isTrue, isBoolean } from './helper'\n\nexport function toBool(value: unknown, defaults?: boolean): boolean {\n if (isEmpty(value)) {\n return defaults || false\n }\n\n if (isBoolean(value)) {\n return value as boolean\n }\n\n return isTrue(value)\n}\n","import { isEmpty } from './helper'\n\nconst second = 1\nconst minute = second * 60\nconst hour = minute * 60\nconst day = hour * 24\nconst week = day * 7\nconst year = day * 365\nconst regx = /^(-?(?:\\d+)?\\.?\\d+)(s|m|h|d|w|y)$/i\n\nfunction parse(arg: string): number | undefined {\n if (isEmpty(arg)) {\n return\n }\n\n const str = String(arg)\n const matches = str.match(regx)\n\n if (!matches) {\n return\n }\n\n const num = parseFloat(matches[1])\n const type = matches[2].toLowerCase()\n\n switch (type) {\n case 'y':\n return num * year\n\n case 'w':\n return num * week\n\n case 'd':\n return num * day\n\n case 'h':\n return num * hour\n\n case 'm':\n return num * minute\n\n case 's':\n return num * second\n }\n}\n\nexport function hs(arg: string): number | undefined {\n const value = parse(arg)\n\n if (value) {\n return Math.round(value)\n }\n}\n\nexport function ms(arg: string): number | undefined {\n const value = hs(arg)\n\n if (value) {\n return value * 1e3\n }\n}\n","import { hs } from './hs'\nimport { OpUnitType, QUnitType } from 'dayjs'\nimport dayjs from 'dayjs'\n\nexport function timestamp(): number {\n return Math.floor(Date.now() / 1e3)\n}\n\nexport function date(str?: string, format?: string) {\n return dayjs(str, format)\n}\n\nexport function unixDate(t: number) {\n return dayjs.unix(t)\n}\n\nexport function isDateExpired(\n start: number,\n end: number,\n expire: string\n): boolean {\n return end - start > hs(expire)!\n}\n\nexport function unixDiff(\n start: number,\n end: number,\n unit: QUnitType | OpUnitType = 'day'\n): number {\n if (start > end || start < 0 || end < 0) {\n return 0\n }\n return unixDate(end).diff(unixDate(start), unit)\n}\n\nexport function datePeriod(\n start: number,\n value = 1,\n unit: OpUnitType = 'month'\n): number {\n return unixDate(start)\n .add(value, unit as unknown as any)\n .unix()\n}\n","import * as m from 'mime-types'\n\nexport const commonImageMimeTypes: string[] = [\n m.lookup('.jpg'),\n m.lookup('.png'),\n m.lookup('.bmp'),\n m.lookup('.webp'),\n m.lookup('.gif')\n] as any\n\nexport const commonFileMimeTypes: string[] = [\n ...commonImageMimeTypes,\n m.lookup('.txt'),\n m.lookup('.md'),\n m.lookup('.doc'),\n m.lookup('.docx'),\n m.lookup('.xls'),\n m.lookup('.xlsx'),\n m.lookup('.csv'),\n m.lookup('.ppt'),\n m.lookup('.pptx'),\n m.lookup('.pdf'),\n m.lookup('.mp4'),\n m.lookup('.wmv'),\n m.lookup('.svg')\n] as any\n\nexport const mime = m.lookup\n","import { customAlphabet } from 'nanoid'\n\nconst NANOID_ALPHABET =\n 'ModuleSymbhasOwnPr0123456789ABCDEFGHNRVfgctiUvzKqYTJkLxpZXIjQW'\n\nexport function nanoid(len = 21): string {\n return nanoidCustomAlphabet(NANOID_ALPHABET, len)\n}\n\nexport function nanoidCustomAlphabet(alphabet: string, len = 21): string {\n const generate = customAlphabet(alphabet, len)\n return generate()\n}\n","import { clone } from './clone'\nimport {\n isArray,\n isNan,\n isNil,\n isObject,\n isPlainObject,\n isValid\n} from './helper'\nimport * as objectPath from 'object-path'\n\nexport { deepEqual } from 'fast-equals'\n\nexport function pickObject(\n target: Record<string, any>,\n fields: Array<string | string[]>,\n excludes: Array<string> = []\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const targetKeys = Object.keys(copied)\n\n const fieldAlias: Record<string, any> = {}\n let picked: string[] = []\n\n if (fields.length > 0) {\n fields.forEach(item => {\n if (isArray(item)) {\n if (item.length > 0) {\n const filed = item[0]\n picked.push(filed)\n\n if (item.length > 1) {\n fieldAlias[filed] = item[1]\n }\n }\n } else {\n picked.push(item)\n }\n })\n } else {\n picked = targetKeys\n }\n\n const newObj: Record<string, any> = {}\n\n targetKeys\n .filter(key => !excludes.includes(key) && picked.includes(key))\n .forEach(key => {\n const alias = fieldAlias[key]\n\n if (alias) {\n newObj[alias] = copied[key]\n } else {\n newObj[key] = copied[key]\n }\n })\n\n return newObj\n}\n\nexport function pickValidValues<T = string | number | boolean>(\n target: Record<string, T>,\n fields: Array<string | string[]>\n): Record<string, T> {\n const dist: Record<string, T> = {}\n\n fields.forEach(field => {\n let key = String(field)\n let alias: string | undefined\n\n if (isArray(field)) {\n key = field[0]\n\n if (field.length > 1) {\n alias = field[1]\n }\n }\n\n let value = target[key]\n\n if (isValid(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n\n dist[alias || key] = value\n }\n })\n\n return dist\n}\n\nexport function removeObjectNil(\n target: Record<string, any>\n): Record<string, any> {\n if (!isObject(target)) {\n return {}\n }\n\n const copied = clone<Record<string, any>>(target)\n const newObj: Record<string, any> = {}\n\n for (const field of Object.keys(copied)) {\n const value = copied[field]\n\n if (isNil(value) || isNan(value)) {\n continue\n }\n\n newObj[field] = value\n }\n\n return newObj\n}\n\nexport function copyObjectValues(\n target: Record<string, any>,\n dist: Record<string, any>,\n keyMaps: Array<string | string[]>\n): void {\n if (!isObject(target) || !isObject(dist)) {\n return\n }\n\n for (const keys of keyMaps) {\n let targetKey: string\n let distKey: string\n\n if (isArray(keys)) {\n targetKey = keys[0]\n distKey = keys[1]\n } else {\n targetKey = String(keys)\n distKey = targetKey\n }\n\n let value = objectPath.get(target, targetKey)\n\n if (!isNil(value) && !isNan(value)) {\n if (isPlainObject(value) || isArray(value)) {\n value = clone(value)\n }\n objectPath.set(dist, distKey, value)\n }\n }\n}\n","import * as helper from './helper'\n\nexport function parseJson(str: string, defaultValue?: any): any {\n let value: any\n\n try {\n value = JSON.parse(str)\n } catch (e) {\n // eslint-disable-line\n }\n\n if (defaultValue && !value) {\n value = defaultValue\n }\n\n return value\n}\n\nexport function parseBool(arg: any, defaultValue?: boolean): boolean {\n if (helper.isEmpty(arg)) {\n return defaultValue || false\n }\n\n if (helper.isBoolean(arg)) {\n return arg\n }\n\n return helper.isTrue(arg)\n}\n\nexport function parseNumber(\n arg: any,\n defaultValue?: number,\n maxValue?: number\n): number | undefined {\n if (helper.isNumber(arg)) {\n if (maxValue && maxValue < Number(arg)) {\n return maxValue\n }\n return Number(arg)\n }\n\n const num = parseInt(arg, 10)\n\n if (isNaN(num)) {\n return defaultValue\n }\n\n if (maxValue && maxValue < num) {\n return maxValue\n }\n\n return num\n}\n\nexport function htmlToText(html: string, limit = 100) {\n let result = html\n .replace(/<style[^<>]*>((?!<\\/).)*<\\/style>/gi, '')\n .replace(/<script[^<>]*>((?!<\\/).)*<\\/script>/gi, '')\n .replace(/<[^>]+>/g, '')\n .replace(/\\t|\\r|\\n|\\r\\n/g, '')\n .replace(/\\s+/g, '')\n .replace(/ /g, ' ')\n .replace(/"/g, '\"')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n\n if (limit > 0) {\n result = result.slice(0, limit)\n }\n\n return result\n}\n","import { isEmpty, isString } from './helper'\n\ninterface QsOptions {\n encode?: boolean\n decode?: boolean\n separator?: string\n}\n\nexport function stringify(\n arg: Record<string, any>,\n options?: QsOptions\n): string {\n const arr: string[] = []\n\n Object.keys(arg).forEach(key => {\n let val = arg[key]\n\n if (isEmpty(val)) {\n val = ''\n } else {\n val = String(val)\n }\n\n if (options?.encode) {\n val = encodeURIComponent(val)\n }\n\n arr.push(`${key}=${val}`)\n })\n\n return arr.join('&')\n}\n\nexport function parse(str: string, options?: QsOptions): Record<string, any> {\n const obj: Record<string, any> = {}\n\n if (!isString(str)) {\n return obj\n }\n\n const arr = str.replace(/^([^?]+)?\\?/, '').split('&')\n\n arr.forEach(param => {\n const paramArr = param.split('=')\n const key = paramArr[0]\n\n if (!isEmpty(key)) {\n let val: any = paramArr[1]\n\n if (options?.decode) {\n val = decodeURIComponent(val)\n }\n\n val =\n options?.separator && val.includes(options?.separator)\n ? val.split(options?.separator)\n : val\n\n obj[key] = val\n }\n })\n\n return obj\n}\n\nexport default {\n stringify,\n parse\n}\n","const numeric = '0123456789'\nconst hexic = '0123456789abcdef'\nconst lower = 'abcdefghijklmnopqrstuvwxyz'\nconst upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'\nconst length = 6\n\nexport enum RandomType {\n LOWER,\n UPPER,\n NUMERIC,\n HEXIC,\n LOWER_NUMERIC,\n UPPER_NUMERIC,\n ALPHANUMERIC\n}\n\nexport function random(\n len = length * 2,\n type = RandomType.ALPHANUMERIC\n): string {\n let alphabet: string = numeric + lower + upper\n\n switch (type) {\n case RandomType.LOWER:\n alphabet = lower\n break\n case RandomType.UPPER:\n alphabet = upper\n break\n case RandomType.HEXIC:\n alphabet = hexic\n break\n case RandomType.NUMERIC:\n alphabet = numeric\n break\n case RandomType.LOWER_NUMERIC:\n alphabet = lower + numeric\n break\n case RandomType.UPPER_NUMERIC:\n alphabet = upper + numeric\n break\n case RandomType.ALPHANUMERIC:\n alphabet = lower + upper + numeric\n break\n default:\n break\n }\n\n let str = ''\n const alphabetLength = alphabet.length\n\n for (let i = 0; i < len; i++) {\n str += alphabet.charAt(Math.floor(Math.random() * alphabetLength))\n }\n\n return str\n}\n","import slug from 'slugify'\n\nexport interface SlugifyOptions {\n replacement?: string\n remove?: RegExp\n lower?: boolean\n strict?: boolean\n locale?: string\n trim?: boolean\n}\n\nexport function slugify(text: string, options?: SlugifyOptions): string {\n return slug(text, {\n replacement: '_',\n lower: true,\n ...options\n })\n}\n","export { v4 as uuidv4, v5 as uuidv5 } from 'uuid'\n"]}
|
package/package.json
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@heyform-inc/utils",
|
|
3
|
-
"description": "HeyForm utils",
|
|
4
|
-
"version": "1.0.
|
|
5
|
-
"homepage": "https://heyform.net",
|
|
6
|
-
"author": "Heyooo, Inc.",
|
|
7
|
-
"license": "AGPL-3.0",
|
|
8
|
-
"main": "./dist/index.js",
|
|
9
|
-
"module": "./dist/index.mjs",
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"files": [
|
|
12
|
-
"./dist"
|
|
13
|
-
],
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "tsup",
|
|
16
|
-
"test": "jest",
|
|
17
|
-
"cov": "jest --coverage",
|
|
18
|
-
"lint": "eslint . --ext .ts --quiet --fix",
|
|
19
|
-
"clean": "rimraf dist",
|
|
20
|
-
"prebuild": "npm run clean"
|
|
21
|
-
},
|
|
22
|
-
"dependencies": {
|
|
23
|
-
"@types/clone": "^0.1.30",
|
|
24
|
-
"@types/mime-types": "^2.1.0",
|
|
25
|
-
"@types/object-path": "^0.11.0",
|
|
26
|
-
"@types/uuid": "^8.3.0",
|
|
27
|
-
"@types/validator": "^13.1.0",
|
|
28
|
-
"clone": "^2.1.2",
|
|
29
|
-
"dayjs": "^1.8.35",
|
|
30
|
-
"deep-object-diff": "^1.1.0",
|
|
31
|
-
"fast-equals": "^5.0.1",
|
|
32
|
-
"humanize-bytes": "^1.0.1",
|
|
33
|
-
"mime-types": "1.0.2",
|
|
34
|
-
"nanoid": "^3.1.12",
|
|
35
|
-
"object-path": "^0.11.5",
|
|
36
|
-
"slugify": "^1.4.5",
|
|
37
|
-
"uuid": "^8.3.0",
|
|
38
|
-
"validator": "^13.1.1"
|
|
39
|
-
},
|
|
40
|
-
"devDependencies": {
|
|
41
|
-
"@types/jest": "^26.0.3",
|
|
42
|
-
"@types/node": "^13.7.1",
|
|
43
|
-
"@typescript-eslint/eslint-plugin": "3.10.0",
|
|
44
|
-
"@typescript-eslint/parser": "3.10.0",
|
|
45
|
-
"coveralls": "^3.0.9",
|
|
46
|
-
"eslint": "^7.4.0",
|
|
47
|
-
"eslint-config-prettier": "^6.11.0",
|
|
48
|
-
"eslint-import-resolver-typescript": "^2.2.1",
|
|
49
|
-
"eslint-plugin-import": "^2.20.2",
|
|
50
|
-
"eslint-plugin-prettier": "^3.1.3",
|
|
51
|
-
"jest": "^26.1.0",
|
|
52
|
-
"prettier": "^2.0.4",
|
|
53
|
-
"rimraf": "^3.0.2",
|
|
54
|
-
"ts-jest": "^26.1.0",
|
|
55
|
-
"tslib": "^2.0.0",
|
|
56
|
-
"tsup": "^8.0.2",
|
|
57
|
-
"typescript": "4.9.5"
|
|
58
|
-
},
|
|
59
|
-
"jest": {
|
|
60
|
-
"transform": {
|
|
61
|
-
"^.+\\.ts$": "ts-jest"
|
|
62
|
-
},
|
|
63
|
-
"testRegex": "(/tests/.*|(\\.|/)test)\\.ts$",
|
|
64
|
-
"moduleFileExtensions": [
|
|
65
|
-
"ts",
|
|
66
|
-
"js",
|
|
67
|
-
"json",
|
|
68
|
-
"node"
|
|
69
|
-
]
|
|
70
|
-
}
|
|
71
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@heyform-inc/utils",
|
|
3
|
+
"description": "HeyForm utils",
|
|
4
|
+
"version": "1.0.8",
|
|
5
|
+
"homepage": "https://heyform.net",
|
|
6
|
+
"author": "Heyooo, Inc.",
|
|
7
|
+
"license": "AGPL-3.0",
|
|
8
|
+
"main": "./dist/index.js",
|
|
9
|
+
"module": "./dist/index.mjs",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"./dist"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsup",
|
|
16
|
+
"test": "jest",
|
|
17
|
+
"cov": "jest --coverage",
|
|
18
|
+
"lint": "eslint . --ext .ts --quiet --fix",
|
|
19
|
+
"clean": "rimraf dist",
|
|
20
|
+
"prebuild": "npm run clean"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@types/clone": "^0.1.30",
|
|
24
|
+
"@types/mime-types": "^2.1.0",
|
|
25
|
+
"@types/object-path": "^0.11.0",
|
|
26
|
+
"@types/uuid": "^8.3.0",
|
|
27
|
+
"@types/validator": "^13.1.0",
|
|
28
|
+
"clone": "^2.1.2",
|
|
29
|
+
"dayjs": "^1.8.35",
|
|
30
|
+
"deep-object-diff": "^1.1.0",
|
|
31
|
+
"fast-equals": "^5.0.1",
|
|
32
|
+
"humanize-bytes": "^1.0.1",
|
|
33
|
+
"mime-types": "1.0.2",
|
|
34
|
+
"nanoid": "^3.1.12",
|
|
35
|
+
"object-path": "^0.11.5",
|
|
36
|
+
"slugify": "^1.4.5",
|
|
37
|
+
"uuid": "^8.3.0",
|
|
38
|
+
"validator": "^13.1.1"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/jest": "^26.0.3",
|
|
42
|
+
"@types/node": "^13.7.1",
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "3.10.0",
|
|
44
|
+
"@typescript-eslint/parser": "3.10.0",
|
|
45
|
+
"coveralls": "^3.0.9",
|
|
46
|
+
"eslint": "^7.4.0",
|
|
47
|
+
"eslint-config-prettier": "^6.11.0",
|
|
48
|
+
"eslint-import-resolver-typescript": "^2.2.1",
|
|
49
|
+
"eslint-plugin-import": "^2.20.2",
|
|
50
|
+
"eslint-plugin-prettier": "^3.1.3",
|
|
51
|
+
"jest": "^26.1.0",
|
|
52
|
+
"prettier": "^2.0.4",
|
|
53
|
+
"rimraf": "^3.0.2",
|
|
54
|
+
"ts-jest": "^26.1.0",
|
|
55
|
+
"tslib": "^2.0.0",
|
|
56
|
+
"tsup": "^8.0.2",
|
|
57
|
+
"typescript": "4.9.5"
|
|
58
|
+
},
|
|
59
|
+
"jest": {
|
|
60
|
+
"transform": {
|
|
61
|
+
"^.+\\.ts$": "ts-jest"
|
|
62
|
+
},
|
|
63
|
+
"testRegex": "(/tests/.*|(\\.|/)test)\\.ts$",
|
|
64
|
+
"moduleFileExtensions": [
|
|
65
|
+
"ts",
|
|
66
|
+
"js",
|
|
67
|
+
"json",
|
|
68
|
+
"node"
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
}
|