@heyform-inc/utils 1.0.6 → 1.0.7
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 +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12 -97
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -97
- package/dist/index.mjs.map +1 -1
- package/package.json +71 -71
package/dist/index.d.mts
CHANGED
|
@@ -6,7 +6,7 @@ import { IsEmailOptions } from 'validator/lib/isEmail';
|
|
|
6
6
|
import { IsURLOptions } from 'validator/lib/isURL';
|
|
7
7
|
import * as m from 'mime-types';
|
|
8
8
|
export { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
|
|
9
|
-
export
|
|
9
|
+
export { deepEqual } from 'fast-equals';
|
|
10
10
|
|
|
11
11
|
declare function parseBytes(value: string | number): number | undefined;
|
|
12
12
|
declare function bytes(size: string): number | undefined;
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { IsEmailOptions } from 'validator/lib/isEmail';
|
|
|
6
6
|
import { IsURLOptions } from 'validator/lib/isURL';
|
|
7
7
|
import * as m from 'mime-types';
|
|
8
8
|
export { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
|
|
9
|
-
export
|
|
9
|
+
export { deepEqual } from 'fast-equals';
|
|
10
10
|
|
|
11
11
|
declare function parseBytes(value: string | number): number | undefined;
|
|
12
12
|
declare function bytes(size: string): number | undefined;
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ var dayjs = require('dayjs');
|
|
|
10
10
|
var m = require('mime-types');
|
|
11
11
|
var nanoid$1 = require('nanoid');
|
|
12
12
|
var objectPath = require('object-path');
|
|
13
|
-
var
|
|
13
|
+
var fastEquals = require('fast-equals');
|
|
14
14
|
var slug = require('slugify');
|
|
15
15
|
var uuid = require('uuid');
|
|
16
16
|
|
|
@@ -42,78 +42,9 @@ var _clone__default = /*#__PURE__*/_interopDefault(_clone);
|
|
|
42
42
|
var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
|
|
43
43
|
var m__namespace = /*#__PURE__*/_interopNamespace(m);
|
|
44
44
|
var objectPath__namespace = /*#__PURE__*/_interopNamespace(objectPath);
|
|
45
|
-
var fast_equals_star__namespace = /*#__PURE__*/_interopNamespace(fast_equals_star);
|
|
46
45
|
var slug__default = /*#__PURE__*/_interopDefault(slug);
|
|
47
46
|
|
|
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
47
|
// 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
48
|
|
|
118
49
|
// src/type.ts
|
|
119
50
|
var toString = Object.prototype.toString;
|
|
@@ -189,23 +120,17 @@ function isNil(arg) {
|
|
|
189
120
|
return isNull(arg) || isUndefined(arg);
|
|
190
121
|
}
|
|
191
122
|
function isPlainObject(arg) {
|
|
192
|
-
if (!isObject(arg))
|
|
193
|
-
return false;
|
|
123
|
+
if (!isObject(arg)) return false;
|
|
194
124
|
const ctor = arg.constructor;
|
|
195
|
-
if (typeof ctor !== "function")
|
|
196
|
-
return false;
|
|
125
|
+
if (typeof ctor !== "function") return false;
|
|
197
126
|
const proto = ctor.prototype;
|
|
198
|
-
if (!isObject(proto))
|
|
199
|
-
return false;
|
|
127
|
+
if (!isObject(proto)) return false;
|
|
200
128
|
return proto.hasOwnProperty("isPrototypeOf");
|
|
201
129
|
}
|
|
202
130
|
function isEmpty(arg) {
|
|
203
|
-
if (isNil(arg))
|
|
204
|
-
|
|
205
|
-
if (
|
|
206
|
-
return false;
|
|
207
|
-
if (isNumber(arg))
|
|
208
|
-
return false;
|
|
131
|
+
if (isNil(arg)) return true;
|
|
132
|
+
if (isBoolean(arg)) return false;
|
|
133
|
+
if (isNumber(arg)) return false;
|
|
209
134
|
if (isString(arg)) {
|
|
210
135
|
return arg.length === 0 || whiteSpaceRegx.test(arg);
|
|
211
136
|
}
|
|
@@ -222,8 +147,7 @@ function isEmpty(arg) {
|
|
|
222
147
|
}
|
|
223
148
|
case "object": {
|
|
224
149
|
for (const key in arg) {
|
|
225
|
-
if (Object.hasOwnProperty.call(arg, key))
|
|
226
|
-
return false;
|
|
150
|
+
if (Object.hasOwnProperty.call(arg, key)) return false;
|
|
227
151
|
}
|
|
228
152
|
return true;
|
|
229
153
|
}
|
|
@@ -568,16 +492,6 @@ function nanoidCustomAlphabet(alphabet, len = 21) {
|
|
|
568
492
|
const generate = nanoid$1.customAlphabet(alphabet, len);
|
|
569
493
|
return generate();
|
|
570
494
|
}
|
|
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
495
|
function pickObject(target, fields, excludes = []) {
|
|
582
496
|
if (!isObject(target)) {
|
|
583
497
|
return {};
|
|
@@ -674,9 +588,6 @@ function copyObjectValues(target, dist, keyMaps) {
|
|
|
674
588
|
}
|
|
675
589
|
}
|
|
676
590
|
|
|
677
|
-
// src/index.ts
|
|
678
|
-
__reExport(src_exports, object_exports);
|
|
679
|
-
|
|
680
591
|
// src/parse.ts
|
|
681
592
|
function parseJson(str, defaultValue) {
|
|
682
593
|
let value;
|
|
@@ -820,6 +731,10 @@ function slugify(text, options) {
|
|
|
820
731
|
});
|
|
821
732
|
}
|
|
822
733
|
|
|
734
|
+
Object.defineProperty(exports, "deepEqual", {
|
|
735
|
+
enumerable: true,
|
|
736
|
+
get: function () { return fastEquals.deepEqual; }
|
|
737
|
+
});
|
|
823
738
|
Object.defineProperty(exports, "uuidv4", {
|
|
824
739
|
enumerable: true,
|
|
825
740
|
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":"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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 { 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\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 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'\r\nimport {\r\n isArray,\r\n isNan,\r\n isNil,\r\n isObject,\r\n isPlainObject,\r\n isValid\r\n} from './helper'\r\nimport * as objectPath from 'object-path'\r\n\r\nexport { deepEqual } from 'fast-equals'\r\n\r\nexport function pickObject(\r\n target: Record<string, any>,\r\n fields: Array<string | string[]>,\r\n excludes: Array<string> = []\r\n): Record<string, any> {\r\n if (!isObject(target)) {\r\n return {}\r\n }\r\n\r\n const copied = clone<Record<string, any>>(target)\r\n const targetKeys = Object.keys(copied)\r\n\r\n const fieldAlias: Record<string, any> = {}\r\n let picked: string[] = []\r\n\r\n if (fields.length > 0) {\r\n fields.forEach(item => {\r\n if (isArray(item)) {\r\n if (item.length > 0) {\r\n const filed = item[0]\r\n picked.push(filed)\r\n\r\n if (item.length > 1) {\r\n fieldAlias[filed] = item[1]\r\n }\r\n }\r\n } else {\r\n picked.push(item)\r\n }\r\n })\r\n } else {\r\n picked = targetKeys\r\n }\r\n\r\n const newObj: Record<string, any> = {}\r\n\r\n targetKeys\r\n .filter(key => !excludes.includes(key) && picked.includes(key))\r\n .forEach(key => {\r\n const alias = fieldAlias[key]\r\n\r\n if (alias) {\r\n newObj[alias] = copied[key]\r\n } else {\r\n newObj[key] = copied[key]\r\n }\r\n })\r\n\r\n return newObj\r\n}\r\n\r\nexport function pickValidValues<T = string | number | boolean>(\r\n target: Record<string, T>,\r\n fields: Array<string | string[]>\r\n): Record<string, T> {\r\n const dist: Record<string, T> = {}\r\n\r\n fields.forEach(field => {\r\n let key = String(field)\r\n let alias: string | undefined\r\n\r\n if (isArray(field)) {\r\n key = field[0]\r\n\r\n if (field.length > 1) {\r\n alias = field[1]\r\n }\r\n }\r\n\r\n let value = target[key]\r\n\r\n if (isValid(value)) {\r\n if (isPlainObject(value) || isArray(value)) {\r\n value = clone(value)\r\n }\r\n\r\n dist[alias || key] = value\r\n }\r\n })\r\n\r\n return dist\r\n}\r\n\r\nexport function removeObjectNil(\r\n target: Record<string, any>\r\n): Record<string, any> {\r\n if (!isObject(target)) {\r\n return {}\r\n }\r\n\r\n const copied = clone<Record<string, any>>(target)\r\n const newObj: Record<string, any> = {}\r\n\r\n for (const field of Object.keys(copied)) {\r\n const value = copied[field]\r\n\r\n if (isNil(value) || isNan(value)) {\r\n continue\r\n }\r\n\r\n newObj[field] = value\r\n }\r\n\r\n return newObj\r\n}\r\n\r\nexport function copyObjectValues(\r\n target: Record<string, any>,\r\n dist: Record<string, any>,\r\n keyMaps: Array<string | string[]>\r\n): void {\r\n if (!isObject(target) || !isObject(dist)) {\r\n return\r\n }\r\n\r\n for (const keys of keyMaps) {\r\n let targetKey: string\r\n let distKey: string\r\n\r\n if (isArray(keys)) {\r\n targetKey = keys[0]\r\n distKey = keys[1]\r\n } else {\r\n targetKey = String(keys)\r\n distKey = targetKey\r\n }\r\n\r\n let value = objectPath.get(target, targetKey)\r\n\r\n if (!isNil(value) && !isNan(value)) {\r\n if (isPlainObject(value) || isArray(value)) {\r\n value = clone(value)\r\n }\r\n objectPath.set(dist, distKey, value)\r\n }\r\n }\r\n}\r\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
|
@@ -8,80 +8,11 @@ import dayjs from 'dayjs';
|
|
|
8
8
|
import * as m from 'mime-types';
|
|
9
9
|
import { customAlphabet } from 'nanoid';
|
|
10
10
|
import * as objectPath from 'object-path';
|
|
11
|
-
|
|
11
|
+
export { deepEqual } from 'fast-equals';
|
|
12
12
|
import slug from 'slugify';
|
|
13
|
-
import { v4, v5 } from 'uuid';
|
|
14
13
|
export { v4 as uuidv4, v5 as uuidv5 } from 'uuid';
|
|
15
14
|
|
|
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
15
|
// 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
16
|
|
|
86
17
|
// src/type.ts
|
|
87
18
|
var toString = Object.prototype.toString;
|
|
@@ -157,23 +88,17 @@ function isNil(arg) {
|
|
|
157
88
|
return isNull(arg) || isUndefined(arg);
|
|
158
89
|
}
|
|
159
90
|
function isPlainObject(arg) {
|
|
160
|
-
if (!isObject(arg))
|
|
161
|
-
return false;
|
|
91
|
+
if (!isObject(arg)) return false;
|
|
162
92
|
const ctor = arg.constructor;
|
|
163
|
-
if (typeof ctor !== "function")
|
|
164
|
-
return false;
|
|
93
|
+
if (typeof ctor !== "function") return false;
|
|
165
94
|
const proto = ctor.prototype;
|
|
166
|
-
if (!isObject(proto))
|
|
167
|
-
return false;
|
|
95
|
+
if (!isObject(proto)) return false;
|
|
168
96
|
return proto.hasOwnProperty("isPrototypeOf");
|
|
169
97
|
}
|
|
170
98
|
function isEmpty(arg) {
|
|
171
|
-
if (isNil(arg))
|
|
172
|
-
|
|
173
|
-
if (
|
|
174
|
-
return false;
|
|
175
|
-
if (isNumber(arg))
|
|
176
|
-
return false;
|
|
99
|
+
if (isNil(arg)) return true;
|
|
100
|
+
if (isBoolean(arg)) return false;
|
|
101
|
+
if (isNumber(arg)) return false;
|
|
177
102
|
if (isString(arg)) {
|
|
178
103
|
return arg.length === 0 || whiteSpaceRegx.test(arg);
|
|
179
104
|
}
|
|
@@ -190,8 +115,7 @@ function isEmpty(arg) {
|
|
|
190
115
|
}
|
|
191
116
|
case "object": {
|
|
192
117
|
for (const key in arg) {
|
|
193
|
-
if (Object.hasOwnProperty.call(arg, key))
|
|
194
|
-
return false;
|
|
118
|
+
if (Object.hasOwnProperty.call(arg, key)) return false;
|
|
195
119
|
}
|
|
196
120
|
return true;
|
|
197
121
|
}
|
|
@@ -536,16 +460,6 @@ function nanoidCustomAlphabet(alphabet, len = 21) {
|
|
|
536
460
|
const generate = customAlphabet(alphabet, len);
|
|
537
461
|
return generate();
|
|
538
462
|
}
|
|
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
463
|
function pickObject(target, fields, excludes = []) {
|
|
550
464
|
if (!isObject(target)) {
|
|
551
465
|
return {};
|
|
@@ -642,9 +556,6 @@ function copyObjectValues(target, dist, keyMaps) {
|
|
|
642
556
|
}
|
|
643
557
|
}
|
|
644
558
|
|
|
645
|
-
// src/index.ts
|
|
646
|
-
__reExport(src_exports, object_exports);
|
|
647
|
-
|
|
648
559
|
// src/parse.ts
|
|
649
560
|
function parseJson(str, defaultValue) {
|
|
650
561
|
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 { 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\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 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'\r\nimport {\r\n isArray,\r\n isNan,\r\n isNil,\r\n isObject,\r\n isPlainObject,\r\n isValid\r\n} from './helper'\r\nimport * as objectPath from 'object-path'\r\n\r\nexport { deepEqual } from 'fast-equals'\r\n\r\nexport function pickObject(\r\n target: Record<string, any>,\r\n fields: Array<string | string[]>,\r\n excludes: Array<string> = []\r\n): Record<string, any> {\r\n if (!isObject(target)) {\r\n return {}\r\n }\r\n\r\n const copied = clone<Record<string, any>>(target)\r\n const targetKeys = Object.keys(copied)\r\n\r\n const fieldAlias: Record<string, any> = {}\r\n let picked: string[] = []\r\n\r\n if (fields.length > 0) {\r\n fields.forEach(item => {\r\n if (isArray(item)) {\r\n if (item.length > 0) {\r\n const filed = item[0]\r\n picked.push(filed)\r\n\r\n if (item.length > 1) {\r\n fieldAlias[filed] = item[1]\r\n }\r\n }\r\n } else {\r\n picked.push(item)\r\n }\r\n })\r\n } else {\r\n picked = targetKeys\r\n }\r\n\r\n const newObj: Record<string, any> = {}\r\n\r\n targetKeys\r\n .filter(key => !excludes.includes(key) && picked.includes(key))\r\n .forEach(key => {\r\n const alias = fieldAlias[key]\r\n\r\n if (alias) {\r\n newObj[alias] = copied[key]\r\n } else {\r\n newObj[key] = copied[key]\r\n }\r\n })\r\n\r\n return newObj\r\n}\r\n\r\nexport function pickValidValues<T = string | number | boolean>(\r\n target: Record<string, T>,\r\n fields: Array<string | string[]>\r\n): Record<string, T> {\r\n const dist: Record<string, T> = {}\r\n\r\n fields.forEach(field => {\r\n let key = String(field)\r\n let alias: string | undefined\r\n\r\n if (isArray(field)) {\r\n key = field[0]\r\n\r\n if (field.length > 1) {\r\n alias = field[1]\r\n }\r\n }\r\n\r\n let value = target[key]\r\n\r\n if (isValid(value)) {\r\n if (isPlainObject(value) || isArray(value)) {\r\n value = clone(value)\r\n }\r\n\r\n dist[alias || key] = value\r\n }\r\n })\r\n\r\n return dist\r\n}\r\n\r\nexport function removeObjectNil(\r\n target: Record<string, any>\r\n): Record<string, any> {\r\n if (!isObject(target)) {\r\n return {}\r\n }\r\n\r\n const copied = clone<Record<string, any>>(target)\r\n const newObj: Record<string, any> = {}\r\n\r\n for (const field of Object.keys(copied)) {\r\n const value = copied[field]\r\n\r\n if (isNil(value) || isNan(value)) {\r\n continue\r\n }\r\n\r\n newObj[field] = value\r\n }\r\n\r\n return newObj\r\n}\r\n\r\nexport function copyObjectValues(\r\n target: Record<string, any>,\r\n dist: Record<string, any>,\r\n keyMaps: Array<string | string[]>\r\n): void {\r\n if (!isObject(target) || !isObject(dist)) {\r\n return\r\n }\r\n\r\n for (const keys of keyMaps) {\r\n let targetKey: string\r\n let distKey: string\r\n\r\n if (isArray(keys)) {\r\n targetKey = keys[0]\r\n distKey = keys[1]\r\n } else {\r\n targetKey = String(keys)\r\n distKey = targetKey\r\n }\r\n\r\n let value = objectPath.get(target, targetKey)\r\n\r\n if (!isNil(value) && !isNan(value)) {\r\n if (isPlainObject(value) || isArray(value)) {\r\n value = clone(value)\r\n }\r\n objectPath.set(dist, distKey, value)\r\n }\r\n }\r\n}\r\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
|
-
|
|
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.7",
|
|
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
|
+
}
|