vest-utils 1.5.0 → 2.0.1
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/README.md +7 -2
- package/dist/chunk-CLMFDpHK.mjs +18 -0
- package/dist/exports/minifyObject.cjs +114 -0
- package/dist/exports/minifyObject.cjs.map +1 -0
- package/dist/exports/minifyObject.mjs +113 -0
- package/dist/exports/minifyObject.mjs.map +1 -0
- package/dist/exports/standardSchemaSpec.cjs +0 -0
- package/dist/exports/standardSchemaSpec.mjs +1 -0
- package/dist/isEmpty-BBxAFjjm.mjs +103 -0
- package/dist/isEmpty-BBxAFjjm.mjs.map +1 -0
- package/dist/isEmpty-BuEa-96Q.cjs +235 -0
- package/dist/isEmpty-BuEa-96Q.cjs.map +1 -0
- package/dist/vest-utils.cjs +510 -0
- package/dist/vest-utils.cjs.map +1 -0
- package/dist/vest-utils.mjs +421 -0
- package/dist/vest-utils.mjs.map +1 -0
- package/minifyObject/package.json +12 -8
- package/package.json +43 -58
- package/src/Brand.ts +9 -0
- package/src/IO.ts +2 -0
- package/src/Predicates.ts +13 -0
- package/src/Result.ts +121 -0
- package/src/SimpleStateMachine.ts +157 -0
- package/src/StringObject.ts +6 -0
- package/src/__tests__/Architecture.test.ts +69 -0
- package/src/__tests__/Predicates.test.ts +118 -0
- package/src/__tests__/Result.test.ts +284 -0
- package/src/__tests__/SimpleStateMachine.test.ts +425 -0
- package/src/__tests__/StringObject.test.ts +18 -0
- package/src/__tests__/asArray.test.ts +14 -0
- package/src/__tests__/bindNot.test.ts +39 -0
- package/src/__tests__/bus.test.ts +135 -0
- package/src/__tests__/cache.test.ts +139 -0
- package/src/__tests__/callEach.test.ts +20 -0
- package/src/__tests__/defaultTo.test.ts +52 -0
- package/src/__tests__/deferThrow.test.ts +26 -0
- package/src/__tests__/either.test.ts +17 -0
- package/src/__tests__/freezeAssign.test.ts +24 -0
- package/src/__tests__/greaterThan.test.ts +68 -0
- package/src/__tests__/invariant.test.ts +47 -0
- package/src/__tests__/isArray.test.ts +16 -0
- package/src/__tests__/isBoolean.test.ts +16 -0
- package/src/__tests__/isEmpty.test.ts +55 -0
- package/src/__tests__/isEmptySet.test.ts +22 -0
- package/src/__tests__/isNull.test.ts +26 -0
- package/src/__tests__/isNumeric.test.ts +27 -0
- package/src/__tests__/isPositive.test.ts +38 -0
- package/src/__tests__/isPromise.test.ts +17 -0
- package/src/__tests__/isString.test.ts +13 -0
- package/src/__tests__/isUndefined.test.ts +27 -0
- package/src/__tests__/isUnsafeKey.test.ts +22 -0
- package/src/__tests__/lengthEquals.test.ts +58 -0
- package/src/__tests__/longerThan.test.ts +58 -0
- package/src/__tests__/mapFirst.test.ts +31 -0
- package/src/__tests__/nonnullish.test.ts +25 -0
- package/src/__tests__/noop.test.ts +12 -0
- package/src/__tests__/numberEquals.test.ts +67 -0
- package/src/__tests__/optionalFunctionValue.test.ts +29 -0
- package/src/__tests__/seq.test.ts +29 -0
- package/src/__tests__/text.test.ts +41 -0
- package/src/__tests__/tinyState.test.ts +68 -0
- package/src/__tests__/toNumber.test.ts +39 -0
- package/src/__tests__/vest-utils.test.ts +13 -0
- package/src/__tests__/withCatch.test.ts +17 -0
- package/src/__tests__/withResolvers.test.ts +45 -0
- package/src/asArray.ts +3 -0
- package/src/assign.ts +1 -0
- package/src/bindNot.ts +3 -0
- package/src/bus.ts +52 -0
- package/src/cache.ts +68 -0
- package/src/callEach.ts +5 -0
- package/src/defaultTo.ts +9 -0
- package/src/deferThrow.ts +7 -0
- package/src/dynamicValue.ts +9 -0
- package/src/either.ts +3 -0
- package/src/exports/__tests__/minifyObject.security.test.ts +65 -0
- package/src/exports/__tests__/minifyObject.test.ts +281 -0
- package/src/exports/minifyObject.ts +198 -0
- package/src/exports/standardSchemaSpec.ts +70 -0
- package/src/freezeAssign.ts +5 -0
- package/src/globals.d.ts +3 -0
- package/src/greaterThan.ts +8 -0
- package/src/hasOwnProperty.ts +9 -0
- package/src/invariant.ts +19 -0
- package/src/isArrayValue.ts +11 -0
- package/src/isBooleanValue.ts +3 -0
- package/src/isEmpty.ts +18 -0
- package/src/isEmptySet.ts +15 -0
- package/src/isFunction.ts +5 -0
- package/src/isNull.ts +7 -0
- package/src/isNullish.ts +10 -0
- package/src/isNumeric.ts +11 -0
- package/src/isPositive.ts +5 -0
- package/src/isPromise.ts +5 -0
- package/src/isStringValue.ts +3 -0
- package/src/isUndefined.ts +7 -0
- package/src/isUnsafeKey.ts +3 -0
- package/src/lengthEquals.ts +11 -0
- package/src/longerThan.ts +8 -0
- package/src/mapFirst.ts +25 -0
- package/src/nonnullish.ts +9 -0
- package/src/noop.ts +1 -0
- package/src/numberEquals.ts +11 -0
- package/src/seq.ts +16 -0
- package/src/text.ts +20 -0
- package/src/tinyState.ts +28 -0
- package/src/toNumber.ts +11 -0
- package/src/utilityTypes.ts +25 -0
- package/src/valueIsObject.ts +5 -0
- package/src/vest-utils.ts +73 -0
- package/src/withCatch.ts +11 -0
- package/src/withResolvers.ts +33 -0
- package/standardSchemaSpec/package.json +14 -0
- package/types/{minifyObject.d.ts → exports/minifyObject.d.cts} +4 -2
- package/types/exports/minifyObject.d.cts.map +1 -0
- package/types/exports/minifyObject.d.mts +7 -0
- package/types/exports/minifyObject.d.mts.map +1 -0
- package/types/exports/standardSchemaSpec.d.cts +59 -0
- package/types/exports/standardSchemaSpec.d.cts.map +1 -0
- package/types/exports/standardSchemaSpec.d.mts +59 -0
- package/types/exports/standardSchemaSpec.d.mts.map +1 -0
- package/types/vest-utils.d.cts +296 -0
- package/types/vest-utils.d.cts.map +1 -0
- package/types/vest-utils.d.mts +295 -0
- package/types/vest-utils.d.mts.map +1 -0
- package/types/vest-utils.d.ts +245 -143
- package/vitest.config.ts +9 -45
- package/dist/cjs/minifyObject.development.js +0 -217
- package/dist/cjs/minifyObject.development.js.map +0 -1
- package/dist/cjs/minifyObject.js +0 -6
- package/dist/cjs/minifyObject.production.js +0 -2
- package/dist/cjs/minifyObject.production.js.map +0 -1
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/vest-utils.development.js +0 -378
- package/dist/cjs/vest-utils.development.js.map +0 -1
- package/dist/cjs/vest-utils.js +0 -6
- package/dist/cjs/vest-utils.production.js +0 -2
- package/dist/cjs/vest-utils.production.js.map +0 -1
- package/dist/es/minifyObject.development.js +0 -214
- package/dist/es/minifyObject.development.js.map +0 -1
- package/dist/es/minifyObject.production.js +0 -2
- package/dist/es/minifyObject.production.js.map +0 -1
- package/dist/es/package.json +0 -1
- package/dist/es/vest-utils.development.js +0 -330
- package/dist/es/vest-utils.development.js.map +0 -1
- package/dist/es/vest-utils.production.js +0 -2
- package/dist/es/vest-utils.production.js.map +0 -1
- package/dist/umd/minifyObject.development.js +0 -223
- package/dist/umd/minifyObject.development.js.map +0 -1
- package/dist/umd/minifyObject.production.js +0 -2
- package/dist/umd/minifyObject.production.js.map +0 -1
- package/dist/umd/vest-utils.development.js +0 -384
- package/dist/umd/vest-utils.development.js.map +0 -1
- package/dist/umd/vest-utils.production.js +0 -2
- package/dist/umd/vest-utils.production.js.map +0 -1
- package/types/minifyObject.d.ts.map +0 -1
- package/types/vest-utils.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# vest-utils
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Internal utility collection used across the Vest ecosystem (Vest, n4s/enforce, Context, and more). It includes small, focused helpers such as:
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
- Type guards: `isArray`, `isBoolean`, `isString`, `isNumeric`, `isPromise`, and related predicates.
|
|
6
|
+
- Data helpers: `asArray`, `defaultTo`, `nonnullish`, `text`, `toNumber`, comparison utilities, and length helpers.
|
|
7
|
+
- Control flow: `either`, `bindNot`, `callEach`, `optionalFunctionValue`, `deferThrow`.
|
|
8
|
+
- Lightweight primitives: cache, pub/sub bus, simple state machines, and result wrappers.
|
|
9
|
+
|
|
10
|
+
These modules are maintained for internal consumption and may change between versions. Prefer using higher-level packages (`vest`, `n4s`, `context`, etc.) unless you have a specific need for a particular helper.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region rolldown:runtime
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __export = (all, symbols) => {
|
|
4
|
+
let target = {};
|
|
5
|
+
for (var name in all) {
|
|
6
|
+
__defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: true
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
if (symbols) {
|
|
12
|
+
__defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
13
|
+
}
|
|
14
|
+
return target;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { __export as t };
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
const require_isEmpty = require('../isEmpty-BuEa-96Q.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/exports/minifyObject.ts
|
|
4
|
+
function genMinifiedKey() {
|
|
5
|
+
const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";
|
|
6
|
+
let index = 0;
|
|
7
|
+
return function next() {
|
|
8
|
+
let code = "";
|
|
9
|
+
let x = index;
|
|
10
|
+
do {
|
|
11
|
+
code = code + chars[x % 70];
|
|
12
|
+
x = Math.floor(x / 70);
|
|
13
|
+
} while (x > 0);
|
|
14
|
+
index++;
|
|
15
|
+
return code;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function minifyObject(obj, replacer = (v) => v) {
|
|
19
|
+
const countMap = /* @__PURE__ */ new Map();
|
|
20
|
+
countOccurrences(obj, countMap, replacer);
|
|
21
|
+
const maps = genMap(countMap);
|
|
22
|
+
return [minifyObjectImpl(obj, maps.map, replacer), maps.reverseMap];
|
|
23
|
+
}
|
|
24
|
+
function genMap(countMap) {
|
|
25
|
+
const counts = [];
|
|
26
|
+
for (const [value, count] of countMap) if (count > 1) counts.push({
|
|
27
|
+
value,
|
|
28
|
+
count
|
|
29
|
+
});
|
|
30
|
+
const sorted = counts.sort((a, z) => z.count - a.count);
|
|
31
|
+
const getKey = genMinifiedKey();
|
|
32
|
+
return sorted.reduce((maps, { value }) => {
|
|
33
|
+
if (!shouldAddToMap(value, maps.keyLength)) return maps;
|
|
34
|
+
let key;
|
|
35
|
+
do
|
|
36
|
+
key = getKey();
|
|
37
|
+
while (countMap.has(key));
|
|
38
|
+
maps.map.set(value, key);
|
|
39
|
+
maps.reverseMap[key] = value;
|
|
40
|
+
maps.keyLength = key.length;
|
|
41
|
+
return maps;
|
|
42
|
+
}, {
|
|
43
|
+
map: /* @__PURE__ */ new Map(),
|
|
44
|
+
reverseMap: {},
|
|
45
|
+
keyLength: 1
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function shouldAddToMap(value, keyLength) {
|
|
49
|
+
return value.toString().length >= keyLength;
|
|
50
|
+
}
|
|
51
|
+
function addCount(value, countMap) {
|
|
52
|
+
countMap.set(value, (countMap.get(value) || 0) + 1);
|
|
53
|
+
}
|
|
54
|
+
function countOccurrences(obj, countMap, replacer) {
|
|
55
|
+
for (const key in obj) {
|
|
56
|
+
const value = replacer(obj[key], key);
|
|
57
|
+
if (!shouldMinify(value)) continue;
|
|
58
|
+
if (!Array.isArray(obj)) addCount(key, countMap);
|
|
59
|
+
if (require_isEmpty.isObject(value)) countOccurrences(value, countMap, replacer);
|
|
60
|
+
else addCount(value, countMap);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function isNonSerializable(value) {
|
|
64
|
+
return require_isEmpty.isNullish(value) || require_isEmpty.isFunction(value) || typeof value === "symbol";
|
|
65
|
+
}
|
|
66
|
+
function shouldMinify(value) {
|
|
67
|
+
if (require_isEmpty.isObject(value) && require_isEmpty.isEmpty(value)) return false;
|
|
68
|
+
if (isNonSerializable(value)) return false;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
function minifyObjectImpl(obj, map, replacer) {
|
|
72
|
+
const minifiedObject = getRootNode(obj);
|
|
73
|
+
for (const key in obj) {
|
|
74
|
+
const value = replacer(obj[key], key);
|
|
75
|
+
if (!shouldMinify(value)) continue;
|
|
76
|
+
let minifiedValue;
|
|
77
|
+
if (require_isEmpty.isObject(value)) minifiedValue = minifyObjectImpl(value, map, replacer);
|
|
78
|
+
else minifiedValue = minifyValue(value, map);
|
|
79
|
+
setValue(minifiedObject, minifiedValue, minifyValue(key, map));
|
|
80
|
+
}
|
|
81
|
+
return minifiedObject;
|
|
82
|
+
}
|
|
83
|
+
function minifyValue(value, map) {
|
|
84
|
+
return map.get(value) ?? value;
|
|
85
|
+
}
|
|
86
|
+
function expandSingle(value, map) {
|
|
87
|
+
if (require_isEmpty.isStringValue(value)) return map[value] ?? value;
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
function expandObject(minifiedObj, map) {
|
|
91
|
+
const expandedObject = getRootNode(minifiedObj);
|
|
92
|
+
for (const key in minifiedObj) {
|
|
93
|
+
let expandedValue;
|
|
94
|
+
const value = minifiedObj[key];
|
|
95
|
+
if (require_isEmpty.isObject(value)) expandedValue = expandObject(value, map);
|
|
96
|
+
else expandedValue = expandSingle(value, map);
|
|
97
|
+
const expandedKey = expandSingle(key, map);
|
|
98
|
+
setValue(expandedObject, expandedValue, expandedKey);
|
|
99
|
+
}
|
|
100
|
+
return expandedObject;
|
|
101
|
+
}
|
|
102
|
+
function setValue(container, value, key) {
|
|
103
|
+
if (require_isEmpty.isUnsafeKey(key)) return;
|
|
104
|
+
if (require_isEmpty.isArray(container)) container.push(value);
|
|
105
|
+
else container[key] = value;
|
|
106
|
+
}
|
|
107
|
+
function getRootNode(node) {
|
|
108
|
+
return require_isEmpty.isArray(node) ? [] : {};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
exports.expandObject = expandObject;
|
|
113
|
+
exports.minifyObject = minifyObject;
|
|
114
|
+
//# sourceMappingURL=minifyObject.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minifyObject.cjs","names":["isObject","isNullish","isFunction","isEmpty","minifiedObject: any","isStringValue","expandedObject: any","isUnsafeKey","isArray"],"sources":["../../src/exports/minifyObject.ts"],"sourcesContent":["import isUnsafeKey from '../isUnsafeKey';\nimport { isArray } from '../isArrayValue';\nimport { isEmpty } from '../isEmpty';\nimport isFunction from '../isFunction';\nimport { isNullish } from '../isNullish';\nimport isStringValue from '../isStringValue';\nimport { isObject } from '../valueIsObject';\n\n// Basic key generator that generates keys like a, b, c, ... aa, ab, ac, ...\nfunction genMinifiedKey() {\n const chars =\n '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*';\n let index = 0;\n\n return function next(): string {\n let code = '';\n let x = index;\n\n do {\n code = code + chars[x % chars.length];\n x = Math.floor(x / chars.length);\n } while (x > 0);\n index++;\n return code;\n };\n}\n\nexport function minifyObject(\n obj: any,\n replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isUnsafeKey(key)) {\n return;\n }\n\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { S as isFunction, a as isObject, o as isUnsafeKey, r as isArray, s as isStringValue, t as isEmpty, u as isNullish } from "../isEmpty-BBxAFjjm.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/exports/minifyObject.ts
|
|
4
|
+
function genMinifiedKey() {
|
|
5
|
+
const chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";
|
|
6
|
+
let index = 0;
|
|
7
|
+
return function next() {
|
|
8
|
+
let code = "";
|
|
9
|
+
let x = index;
|
|
10
|
+
do {
|
|
11
|
+
code = code + chars[x % 70];
|
|
12
|
+
x = Math.floor(x / 70);
|
|
13
|
+
} while (x > 0);
|
|
14
|
+
index++;
|
|
15
|
+
return code;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function minifyObject(obj, replacer = (v) => v) {
|
|
19
|
+
const countMap = /* @__PURE__ */ new Map();
|
|
20
|
+
countOccurrences(obj, countMap, replacer);
|
|
21
|
+
const maps = genMap(countMap);
|
|
22
|
+
return [minifyObjectImpl(obj, maps.map, replacer), maps.reverseMap];
|
|
23
|
+
}
|
|
24
|
+
function genMap(countMap) {
|
|
25
|
+
const counts = [];
|
|
26
|
+
for (const [value, count] of countMap) if (count > 1) counts.push({
|
|
27
|
+
value,
|
|
28
|
+
count
|
|
29
|
+
});
|
|
30
|
+
const sorted = counts.sort((a, z) => z.count - a.count);
|
|
31
|
+
const getKey = genMinifiedKey();
|
|
32
|
+
return sorted.reduce((maps, { value }) => {
|
|
33
|
+
if (!shouldAddToMap(value, maps.keyLength)) return maps;
|
|
34
|
+
let key;
|
|
35
|
+
do
|
|
36
|
+
key = getKey();
|
|
37
|
+
while (countMap.has(key));
|
|
38
|
+
maps.map.set(value, key);
|
|
39
|
+
maps.reverseMap[key] = value;
|
|
40
|
+
maps.keyLength = key.length;
|
|
41
|
+
return maps;
|
|
42
|
+
}, {
|
|
43
|
+
map: /* @__PURE__ */ new Map(),
|
|
44
|
+
reverseMap: {},
|
|
45
|
+
keyLength: 1
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function shouldAddToMap(value, keyLength) {
|
|
49
|
+
return value.toString().length >= keyLength;
|
|
50
|
+
}
|
|
51
|
+
function addCount(value, countMap) {
|
|
52
|
+
countMap.set(value, (countMap.get(value) || 0) + 1);
|
|
53
|
+
}
|
|
54
|
+
function countOccurrences(obj, countMap, replacer) {
|
|
55
|
+
for (const key in obj) {
|
|
56
|
+
const value = replacer(obj[key], key);
|
|
57
|
+
if (!shouldMinify(value)) continue;
|
|
58
|
+
if (!Array.isArray(obj)) addCount(key, countMap);
|
|
59
|
+
if (isObject(value)) countOccurrences(value, countMap, replacer);
|
|
60
|
+
else addCount(value, countMap);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function isNonSerializable(value) {
|
|
64
|
+
return isNullish(value) || isFunction(value) || typeof value === "symbol";
|
|
65
|
+
}
|
|
66
|
+
function shouldMinify(value) {
|
|
67
|
+
if (isObject(value) && isEmpty(value)) return false;
|
|
68
|
+
if (isNonSerializable(value)) return false;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
function minifyObjectImpl(obj, map, replacer) {
|
|
72
|
+
const minifiedObject = getRootNode(obj);
|
|
73
|
+
for (const key in obj) {
|
|
74
|
+
const value = replacer(obj[key], key);
|
|
75
|
+
if (!shouldMinify(value)) continue;
|
|
76
|
+
let minifiedValue;
|
|
77
|
+
if (isObject(value)) minifiedValue = minifyObjectImpl(value, map, replacer);
|
|
78
|
+
else minifiedValue = minifyValue(value, map);
|
|
79
|
+
setValue(minifiedObject, minifiedValue, minifyValue(key, map));
|
|
80
|
+
}
|
|
81
|
+
return minifiedObject;
|
|
82
|
+
}
|
|
83
|
+
function minifyValue(value, map) {
|
|
84
|
+
return map.get(value) ?? value;
|
|
85
|
+
}
|
|
86
|
+
function expandSingle(value, map) {
|
|
87
|
+
if (isStringValue(value)) return map[value] ?? value;
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
function expandObject(minifiedObj, map) {
|
|
91
|
+
const expandedObject = getRootNode(minifiedObj);
|
|
92
|
+
for (const key in minifiedObj) {
|
|
93
|
+
let expandedValue;
|
|
94
|
+
const value = minifiedObj[key];
|
|
95
|
+
if (isObject(value)) expandedValue = expandObject(value, map);
|
|
96
|
+
else expandedValue = expandSingle(value, map);
|
|
97
|
+
const expandedKey = expandSingle(key, map);
|
|
98
|
+
setValue(expandedObject, expandedValue, expandedKey);
|
|
99
|
+
}
|
|
100
|
+
return expandedObject;
|
|
101
|
+
}
|
|
102
|
+
function setValue(container, value, key) {
|
|
103
|
+
if (isUnsafeKey(key)) return;
|
|
104
|
+
if (isArray(container)) container.push(value);
|
|
105
|
+
else container[key] = value;
|
|
106
|
+
}
|
|
107
|
+
function getRootNode(node) {
|
|
108
|
+
return isArray(node) ? [] : {};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
//#endregion
|
|
112
|
+
export { expandObject, minifyObject };
|
|
113
|
+
//# sourceMappingURL=minifyObject.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minifyObject.mjs","names":["minifiedObject: any","expandedObject: any"],"sources":["../../src/exports/minifyObject.ts"],"sourcesContent":["import isUnsafeKey from '../isUnsafeKey';\nimport { isArray } from '../isArrayValue';\nimport { isEmpty } from '../isEmpty';\nimport isFunction from '../isFunction';\nimport { isNullish } from '../isNullish';\nimport isStringValue from '../isStringValue';\nimport { isObject } from '../valueIsObject';\n\n// Basic key generator that generates keys like a, b, c, ... aa, ab, ac, ...\nfunction genMinifiedKey() {\n const chars =\n '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*';\n let index = 0;\n\n return function next(): string {\n let code = '';\n let x = index;\n\n do {\n code = code + chars[x % chars.length];\n x = Math.floor(x / chars.length);\n } while (x > 0);\n index++;\n return code;\n };\n}\n\nexport function minifyObject(\n obj: any,\n replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isUnsafeKey(key)) {\n return;\n }\n\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n"],"mappings":";;;AASA,SAAS,iBAAiB;CACxB,MAAM,QACJ;CACF,IAAI,QAAQ;AAEZ,QAAO,SAAS,OAAe;EAC7B,IAAI,OAAO;EACX,IAAI,IAAI;AAER,KAAG;AACD,UAAO,OAAO,MAAM,IAAI;AACxB,OAAI,KAAK,MAAM,IAAI,GAAa;WACzB,IAAI;AACb;AACA,SAAO;;;AAIX,SAAgB,aACd,KACA,YAAiC,MAAK,GAC1B;CACZ,MAAM,2BAAW,IAAI,KAAkB;AACvC,kBAAiB,KAAK,UAAU,SAAS;CACzC,MAAM,OAAO,OAAO,SAAS;AAK7B,QAAO,CAJG,iBAAiB,KAAK,KAAK,KAAK,SAAS,EAIxC,KAAK,WAAW;;AAG7B,SAAS,OAAO,UAA4B;CAC1C,MAAM,SAAS,EAAE;AAEjB,MAAK,MAAM,CAAC,OAAO,UAAU,SAC3B,KAAI,QAAQ,EACV,QAAO,KAAK;EAAE;EAAO;EAAO,CAAC;CAIjC,MAAM,SAAS,OAAO,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM;CAEvD,MAAM,SAAS,gBAAgB;AAC/B,QAAO,OAAO,QACX,MAAM,EAAE,YAAY;AACnB,MAAI,CAAC,eAAe,OAAO,KAAK,UAAU,CACxC,QAAO;EAGT,IAAI;AACJ;AACE,SAAM,QAAQ;SACP,SAAS,IAAI,IAAI;AAC1B,OAAK,IAAI,IAAI,OAAO,IAAI;AACxB,OAAK,WAAW,OAAO;AACvB,OAAK,YAAY,IAAI;AACrB,SAAO;IAET;EACE,qBAAK,IAAI,KAAK;EACd,YAAY,EAAE;EACd,WAAW;EACZ,CAKF;;AAIH,SAAS,eAAe,OAAY,WAAmB;AACrD,QAAO,MAAM,UAAU,CAAC,UAAU;;AAGpC,SAAS,SAAS,OAAY,UAA4B;AACxD,UAAS,IAAI,QAAQ,SAAS,IAAI,MAAM,IAAI,KAAK,EAAE;;AAGrD,SAAS,iBACP,KACA,UACA,UACA;AACA,MAAK,MAAM,OAAO,KAAK;EACrB,MAAM,QAAQ,SAAS,IAAI,MAAM,IAAI;AACrC,MAAI,CAAC,aAAa,MAAM,CAAE;AAE1B,MAAI,CAAC,MAAM,QAAQ,IAAI,CACrB,UAAS,KAAK,SAAS;AAGzB,MAAI,SAAS,MAAM,CACjB,kBAAiB,OAAO,UAAU,SAAS;MAE3C,UAAS,OAAO,SAAS;;;AAK/B,SAAS,kBAAkB,OAAqB;AAC9C,QAAO,UAAU,MAAM,IAAI,WAAW,MAAM,IAAI,OAAO,UAAU;;AAGnE,SAAS,aAAa,OAAqB;AACzC,KAAI,SAAS,MAAM,IAAI,QAAQ,MAAM,CACnC,QAAO;AAGT,KAAI,kBAAkB,MAAM,CAC1B,QAAO;AAGT,QAAO;;AAGT,SAAS,iBACP,KACA,KACA,UACK;CACL,MAAMA,iBAAsB,YAAY,IAAI;AAE5C,MAAK,MAAM,OAAO,KAAK;EACrB,MAAM,QAAQ,SAAS,IAAI,MAAM,IAAI;AACrC,MAAI,CAAC,aAAa,MAAM,CAAE;EAE1B,IAAI;AACJ,MAAI,SAAS,MAAM,CACjB,iBAAgB,iBAAiB,OAAO,KAAK,SAAS;MAEtD,iBAAgB,YAAY,OAAO,IAAI;AAGzC,WAAS,gBAAgB,eAAe,YAAY,KAAK,IAAI,CAAC;;AAGhE,QAAO;;AAGT,SAAS,YAAY,OAAY,KAAuB;AACtD,QAAO,IAAI,IAAI,MAAM,IAAI;;AAG3B,SAAS,aAAa,OAAY,KAA+B;AAC/D,KAAI,cAAc,MAAM,CACtB,QAAO,IAAI,UAAU;AAGvB,QAAO;;AAGT,SAAgB,aAAa,aAAkB,KAA+B;CAC5E,MAAMC,iBAAsB,YAAY,YAAY;AAEpD,MAAK,MAAM,OAAO,aAAa;EAC7B,IAAI;EACJ,MAAM,QAAQ,YAAY;AAC1B,MAAI,SAAS,MAAM,CACjB,iBAAgB,aAAa,OAAO,IAAI;MAExC,iBAAgB,aAAa,OAAO,IAAI;EAG1C,MAAM,cAAc,aAAa,KAAK,IAAI;AAC1C,WAAS,gBAAgB,eAAe,YAAY;;AAGtD,QAAO;;AAGT,SAAS,SAAS,WAAgB,OAAY,KAAa;AACzD,KAAI,YAAY,IAAI,CAClB;AAGF,KAAI,QAAQ,UAAU,CACpB,WAAU,KAAK,MAAM;KAErB,WAAU,OAAO;;AAIrB,SAAS,YAAY,MAAW;AAC9B,QAAO,QAAQ,KAAK,GAAG,EAAE,GAAG,EAAE"}
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
//#region src/isFunction.ts
|
|
2
|
+
function isFunction(value) {
|
|
3
|
+
return typeof value === "function";
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/bindNot.ts
|
|
8
|
+
function bindNot(fn) {
|
|
9
|
+
return (...args) => !fn(...args);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/isNumeric.ts
|
|
14
|
+
function isNumeric(value) {
|
|
15
|
+
const str = String(value);
|
|
16
|
+
const num = Number(value);
|
|
17
|
+
const result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
|
|
18
|
+
return Boolean(result);
|
|
19
|
+
}
|
|
20
|
+
const isNotNumeric = bindNot(isNumeric);
|
|
21
|
+
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/numberEquals.ts
|
|
24
|
+
function numberEquals(value, eq) {
|
|
25
|
+
return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
|
|
26
|
+
}
|
|
27
|
+
const numberNotEquals = bindNot(numberEquals);
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/lengthEquals.ts
|
|
31
|
+
function lengthEquals(value, arg1) {
|
|
32
|
+
return numberEquals(value.length, arg1);
|
|
33
|
+
}
|
|
34
|
+
const lengthNotEquals = bindNot(lengthEquals);
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/isNull.ts
|
|
38
|
+
function isNull(value) {
|
|
39
|
+
return value === null;
|
|
40
|
+
}
|
|
41
|
+
const isNotNull = bindNot(isNull);
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
//#region src/isUndefined.ts
|
|
45
|
+
function isUndefined(value) {
|
|
46
|
+
return value === void 0;
|
|
47
|
+
}
|
|
48
|
+
const isNotUndefined = bindNot(isUndefined);
|
|
49
|
+
|
|
50
|
+
//#endregion
|
|
51
|
+
//#region src/isNullish.ts
|
|
52
|
+
function isNullish(value) {
|
|
53
|
+
return isNull(value) || isUndefined(value);
|
|
54
|
+
}
|
|
55
|
+
const isNotNullish = bindNot(isNullish);
|
|
56
|
+
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/hasOwnProperty.ts
|
|
59
|
+
/**
|
|
60
|
+
* A safe hasOwnProperty access
|
|
61
|
+
*/
|
|
62
|
+
function hasOwnProperty(obj, key) {
|
|
63
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src/isStringValue.ts
|
|
68
|
+
function isStringValue(v) {
|
|
69
|
+
return String(v) === v;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
//#endregion
|
|
73
|
+
//#region src/isUnsafeKey.ts
|
|
74
|
+
function isUnsafeKey(key) {
|
|
75
|
+
return key === "__proto__" || key === "constructor" || key === "prototype";
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/valueIsObject.ts
|
|
80
|
+
function isObject(v) {
|
|
81
|
+
return typeof v === "object" && !isNullish(v);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//#endregion
|
|
85
|
+
//#region src/isArrayValue.ts
|
|
86
|
+
function isArray(value) {
|
|
87
|
+
return Boolean(Array.isArray(value));
|
|
88
|
+
}
|
|
89
|
+
const isNotArray = bindNot(isArray);
|
|
90
|
+
|
|
91
|
+
//#endregion
|
|
92
|
+
//#region src/isEmpty.ts
|
|
93
|
+
function isEmpty(value) {
|
|
94
|
+
if (!value) return true;
|
|
95
|
+
else if (hasOwnProperty(value, "length")) return lengthEquals(value, 0);
|
|
96
|
+
else if (isObject(value)) return lengthEquals(Object.keys(value), 0);
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
const isNotEmpty = bindNot(isEmpty);
|
|
100
|
+
|
|
101
|
+
//#endregion
|
|
102
|
+
export { isFunction as S, numberEquals as _, isObject as a, isNumeric as b, hasOwnProperty as c, isNotUndefined as d, isUndefined as f, lengthNotEquals as g, lengthEquals as h, isNotArray as i, isNotNullish as l, isNull as m, isNotEmpty as n, isUnsafeKey as o, isNotNull as p, isArray as r, isStringValue as s, isEmpty as t, isNullish as u, numberNotEquals as v, bindNot as x, isNotNumeric as y };
|
|
103
|
+
//# sourceMappingURL=isEmpty-BBxAFjjm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty-BBxAFjjm.mjs","names":[],"sources":["../src/isFunction.ts","../src/bindNot.ts","../src/isNumeric.ts","../src/numberEquals.ts","../src/lengthEquals.ts","../src/isNull.ts","../src/isUndefined.ts","../src/isNullish.ts","../src/hasOwnProperty.ts","../src/isStringValue.ts","../src/isUnsafeKey.ts","../src/valueIsObject.ts","../src/isArrayValue.ts","../src/isEmpty.ts"],"sourcesContent":["export default function isFunction(\n value: unknown,\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function bindNot<T extends (...args: any[]) => unknown>(fn: T) {\n return (...args: Parameters<T>): boolean => !fn(...args);\n}\n","import bindNot from './bindNot';\n\nexport function isNumeric(value: string | number): boolean {\n const str = String(value);\n const num = Number(value);\n const result =\n !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);\n return Boolean(result);\n}\n\nexport const isNotNumeric = bindNot(isNumeric);\n","import bindNot from './bindNot';\nimport { isNumeric } from './isNumeric';\n\nexport function numberEquals(\n value: string | number,\n eq: string | number,\n): boolean {\n return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);\n}\n\nexport const numberNotEquals = bindNot(numberEquals);\n","import bindNot from './bindNot';\nimport { numberEquals } from './numberEquals';\n\nexport function lengthEquals(\n value: string | unknown[],\n arg1: string | number,\n): boolean {\n return numberEquals(value.length, arg1);\n}\n\nexport const lengthNotEquals = bindNot(lengthEquals);\n","import bindNot from './bindNot';\n\nexport function isNull(value: unknown): value is null {\n return value === null;\n}\n\nexport const isNotNull = bindNot(isNull);\n","import bindNot from './bindNot';\n\nexport function isUndefined(value?: unknown): value is undefined {\n return value === undefined;\n}\n\nexport const isNotUndefined = bindNot(isUndefined);\n","import bindNot from './bindNot';\nimport { isNull } from './isNull';\nimport { isUndefined } from './isUndefined';\nimport { Nullish } from './utilityTypes';\n\nexport function isNullish(value: any): value is Nullish {\n return isNull(value) || isUndefined(value);\n}\n\nexport const isNotNullish = bindNot(isNullish);\n","/**\n * A safe hasOwnProperty access\n */\nexport default function hasOwnProperty<T>(\n obj: T,\n key: string | number | symbol,\n): key is keyof T {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","export default function isUnsafeKey(key: string): boolean {\n return key === '__proto__' || key === 'constructor' || key === 'prototype';\n}\n","import { isNullish } from './isNullish';\n\nexport function isObject(v: any): v is Record<any, any> {\n return typeof v === 'object' && !isNullish(v);\n}\n","import bindNot from './bindNot';\n\n// The module is named \"isArrayValue\" since it\n// is conflicting with a nested npm dependency.\n// We may need to revisit this in the future.\n\nexport function isArray(value: unknown): value is Array<unknown> {\n return Boolean(Array.isArray(value));\n}\n\nexport const isNotArray = bindNot(isArray);\n","import bindNot from './bindNot';\nimport hasOwnProperty from './hasOwnProperty';\nimport { lengthEquals } from './lengthEquals';\nimport { isObject } from './valueIsObject';\n\nexport function isEmpty(value: unknown): boolean {\n if (!value) {\n return true;\n } else if (hasOwnProperty(value, 'length')) {\n return lengthEquals(value as string | unknown[], 0);\n } else if (isObject(value)) {\n return lengthEquals(Object.keys(value as Record<string, unknown>), 0);\n }\n\n return false;\n}\n\nexport const isNotEmpty = bindNot(isEmpty);\n"],"mappings":";AAAA,SAAwB,WACtB,OAC0C;AAC1C,QAAO,OAAO,UAAU;;;;;ACH1B,SAAwB,QAA+C,IAAO;AAC5E,SAAQ,GAAG,SAAiC,CAAC,GAAG,GAAG,KAAK;;;;;ACC1D,SAAgB,UAAU,OAAiC;CACzD,MAAM,MAAM,OAAO,MAAM;CACzB,MAAM,MAAM,OAAO,MAAM;CACzB,MAAM,SACJ,CAAC,MAAM,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,MAAM,CAAC,IAAI,SAAS,IAAI;AACnE,QAAO,QAAQ,OAAO;;AAGxB,MAAa,eAAe,QAAQ,UAAU;;;;ACP9C,SAAgB,aACd,OACA,IACS;AACT,QAAO,UAAU,MAAM,IAAI,UAAU,GAAG,IAAI,OAAO,MAAM,KAAK,OAAO,GAAG;;AAG1E,MAAa,kBAAkB,QAAQ,aAAa;;;;ACPpD,SAAgB,aACd,OACA,MACS;AACT,QAAO,aAAa,MAAM,QAAQ,KAAK;;AAGzC,MAAa,kBAAkB,QAAQ,aAAa;;;;ACRpD,SAAgB,OAAO,OAA+B;AACpD,QAAO,UAAU;;AAGnB,MAAa,YAAY,QAAQ,OAAO;;;;ACJxC,SAAgB,YAAY,OAAqC;AAC/D,QAAO,UAAU;;AAGnB,MAAa,iBAAiB,QAAQ,YAAY;;;;ACDlD,SAAgB,UAAU,OAA8B;AACtD,QAAO,OAAO,MAAM,IAAI,YAAY,MAAM;;AAG5C,MAAa,eAAe,QAAQ,UAAU;;;;;;;ACN9C,SAAwB,eACtB,KACA,KACgB;AAChB,QAAO,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;;;;;ACPvD,SAAwB,cAAc,GAAyB;AAC7D,QAAO,OAAO,EAAE,KAAK;;;;;ACDvB,SAAwB,YAAY,KAAsB;AACxD,QAAO,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ;;;;;ACCjE,SAAgB,SAAS,GAA+B;AACtD,QAAO,OAAO,MAAM,YAAY,CAAC,UAAU,EAAE;;;;;ACG/C,SAAgB,QAAQ,OAAyC;AAC/D,QAAO,QAAQ,MAAM,QAAQ,MAAM,CAAC;;AAGtC,MAAa,aAAa,QAAQ,QAAQ;;;;ACL1C,SAAgB,QAAQ,OAAyB;AAC/C,KAAI,CAAC,MACH,QAAO;UACE,eAAe,OAAO,SAAS,CACxC,QAAO,aAAa,OAA6B,EAAE;UAC1C,SAAS,MAAM,CACxB,QAAO,aAAa,OAAO,KAAK,MAAiC,EAAE,EAAE;AAGvE,QAAO;;AAGT,MAAa,aAAa,QAAQ,QAAQ"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/isFunction.ts
|
|
3
|
+
function isFunction(value) {
|
|
4
|
+
return typeof value === "function";
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/bindNot.ts
|
|
9
|
+
function bindNot(fn) {
|
|
10
|
+
return (...args) => !fn(...args);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/isNumeric.ts
|
|
15
|
+
function isNumeric(value) {
|
|
16
|
+
const str = String(value);
|
|
17
|
+
const num = Number(value);
|
|
18
|
+
const result = !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);
|
|
19
|
+
return Boolean(result);
|
|
20
|
+
}
|
|
21
|
+
const isNotNumeric = bindNot(isNumeric);
|
|
22
|
+
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/numberEquals.ts
|
|
25
|
+
function numberEquals(value, eq) {
|
|
26
|
+
return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);
|
|
27
|
+
}
|
|
28
|
+
const numberNotEquals = bindNot(numberEquals);
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
//#region src/lengthEquals.ts
|
|
32
|
+
function lengthEquals(value, arg1) {
|
|
33
|
+
return numberEquals(value.length, arg1);
|
|
34
|
+
}
|
|
35
|
+
const lengthNotEquals = bindNot(lengthEquals);
|
|
36
|
+
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/isNull.ts
|
|
39
|
+
function isNull(value) {
|
|
40
|
+
return value === null;
|
|
41
|
+
}
|
|
42
|
+
const isNotNull = bindNot(isNull);
|
|
43
|
+
|
|
44
|
+
//#endregion
|
|
45
|
+
//#region src/isUndefined.ts
|
|
46
|
+
function isUndefined(value) {
|
|
47
|
+
return value === void 0;
|
|
48
|
+
}
|
|
49
|
+
const isNotUndefined = bindNot(isUndefined);
|
|
50
|
+
|
|
51
|
+
//#endregion
|
|
52
|
+
//#region src/isNullish.ts
|
|
53
|
+
function isNullish(value) {
|
|
54
|
+
return isNull(value) || isUndefined(value);
|
|
55
|
+
}
|
|
56
|
+
const isNotNullish = bindNot(isNullish);
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/hasOwnProperty.ts
|
|
60
|
+
/**
|
|
61
|
+
* A safe hasOwnProperty access
|
|
62
|
+
*/
|
|
63
|
+
function hasOwnProperty(obj, key) {
|
|
64
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/isStringValue.ts
|
|
69
|
+
function isStringValue(v) {
|
|
70
|
+
return String(v) === v;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/isUnsafeKey.ts
|
|
75
|
+
function isUnsafeKey(key) {
|
|
76
|
+
return key === "__proto__" || key === "constructor" || key === "prototype";
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/valueIsObject.ts
|
|
81
|
+
function isObject(v) {
|
|
82
|
+
return typeof v === "object" && !isNullish(v);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//#endregion
|
|
86
|
+
//#region src/isArrayValue.ts
|
|
87
|
+
function isArray(value) {
|
|
88
|
+
return Boolean(Array.isArray(value));
|
|
89
|
+
}
|
|
90
|
+
const isNotArray = bindNot(isArray);
|
|
91
|
+
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region src/isEmpty.ts
|
|
94
|
+
function isEmpty(value) {
|
|
95
|
+
if (!value) return true;
|
|
96
|
+
else if (hasOwnProperty(value, "length")) return lengthEquals(value, 0);
|
|
97
|
+
else if (isObject(value)) return lengthEquals(Object.keys(value), 0);
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
const isNotEmpty = bindNot(isEmpty);
|
|
101
|
+
|
|
102
|
+
//#endregion
|
|
103
|
+
Object.defineProperty(exports, 'bindNot', {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
get: function () {
|
|
106
|
+
return bindNot;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(exports, 'hasOwnProperty', {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function () {
|
|
112
|
+
return hasOwnProperty;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
Object.defineProperty(exports, 'isArray', {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: function () {
|
|
118
|
+
return isArray;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
Object.defineProperty(exports, 'isEmpty', {
|
|
122
|
+
enumerable: true,
|
|
123
|
+
get: function () {
|
|
124
|
+
return isEmpty;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
Object.defineProperty(exports, 'isFunction', {
|
|
128
|
+
enumerable: true,
|
|
129
|
+
get: function () {
|
|
130
|
+
return isFunction;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
Object.defineProperty(exports, 'isNotArray', {
|
|
134
|
+
enumerable: true,
|
|
135
|
+
get: function () {
|
|
136
|
+
return isNotArray;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
Object.defineProperty(exports, 'isNotEmpty', {
|
|
140
|
+
enumerable: true,
|
|
141
|
+
get: function () {
|
|
142
|
+
return isNotEmpty;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
Object.defineProperty(exports, 'isNotNull', {
|
|
146
|
+
enumerable: true,
|
|
147
|
+
get: function () {
|
|
148
|
+
return isNotNull;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
Object.defineProperty(exports, 'isNotNullish', {
|
|
152
|
+
enumerable: true,
|
|
153
|
+
get: function () {
|
|
154
|
+
return isNotNullish;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
Object.defineProperty(exports, 'isNotNumeric', {
|
|
158
|
+
enumerable: true,
|
|
159
|
+
get: function () {
|
|
160
|
+
return isNotNumeric;
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
Object.defineProperty(exports, 'isNotUndefined', {
|
|
164
|
+
enumerable: true,
|
|
165
|
+
get: function () {
|
|
166
|
+
return isNotUndefined;
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
Object.defineProperty(exports, 'isNull', {
|
|
170
|
+
enumerable: true,
|
|
171
|
+
get: function () {
|
|
172
|
+
return isNull;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
Object.defineProperty(exports, 'isNullish', {
|
|
176
|
+
enumerable: true,
|
|
177
|
+
get: function () {
|
|
178
|
+
return isNullish;
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
Object.defineProperty(exports, 'isNumeric', {
|
|
182
|
+
enumerable: true,
|
|
183
|
+
get: function () {
|
|
184
|
+
return isNumeric;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
Object.defineProperty(exports, 'isObject', {
|
|
188
|
+
enumerable: true,
|
|
189
|
+
get: function () {
|
|
190
|
+
return isObject;
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
Object.defineProperty(exports, 'isStringValue', {
|
|
194
|
+
enumerable: true,
|
|
195
|
+
get: function () {
|
|
196
|
+
return isStringValue;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
Object.defineProperty(exports, 'isUndefined', {
|
|
200
|
+
enumerable: true,
|
|
201
|
+
get: function () {
|
|
202
|
+
return isUndefined;
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
Object.defineProperty(exports, 'isUnsafeKey', {
|
|
206
|
+
enumerable: true,
|
|
207
|
+
get: function () {
|
|
208
|
+
return isUnsafeKey;
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
Object.defineProperty(exports, 'lengthEquals', {
|
|
212
|
+
enumerable: true,
|
|
213
|
+
get: function () {
|
|
214
|
+
return lengthEquals;
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
Object.defineProperty(exports, 'lengthNotEquals', {
|
|
218
|
+
enumerable: true,
|
|
219
|
+
get: function () {
|
|
220
|
+
return lengthNotEquals;
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
Object.defineProperty(exports, 'numberEquals', {
|
|
224
|
+
enumerable: true,
|
|
225
|
+
get: function () {
|
|
226
|
+
return numberEquals;
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
Object.defineProperty(exports, 'numberNotEquals', {
|
|
230
|
+
enumerable: true,
|
|
231
|
+
get: function () {
|
|
232
|
+
return numberNotEquals;
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
//# sourceMappingURL=isEmpty-BuEa-96Q.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty-BuEa-96Q.cjs","names":[],"sources":["../src/isFunction.ts","../src/bindNot.ts","../src/isNumeric.ts","../src/numberEquals.ts","../src/lengthEquals.ts","../src/isNull.ts","../src/isUndefined.ts","../src/isNullish.ts","../src/hasOwnProperty.ts","../src/isStringValue.ts","../src/isUnsafeKey.ts","../src/valueIsObject.ts","../src/isArrayValue.ts","../src/isEmpty.ts"],"sourcesContent":["export default function isFunction(\n value: unknown,\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function bindNot<T extends (...args: any[]) => unknown>(fn: T) {\n return (...args: Parameters<T>): boolean => !fn(...args);\n}\n","import bindNot from './bindNot';\n\nexport function isNumeric(value: string | number): boolean {\n const str = String(value);\n const num = Number(value);\n const result =\n !isNaN(parseFloat(str)) && !isNaN(Number(value)) && isFinite(num);\n return Boolean(result);\n}\n\nexport const isNotNumeric = bindNot(isNumeric);\n","import bindNot from './bindNot';\nimport { isNumeric } from './isNumeric';\n\nexport function numberEquals(\n value: string | number,\n eq: string | number,\n): boolean {\n return isNumeric(value) && isNumeric(eq) && Number(value) === Number(eq);\n}\n\nexport const numberNotEquals = bindNot(numberEquals);\n","import bindNot from './bindNot';\nimport { numberEquals } from './numberEquals';\n\nexport function lengthEquals(\n value: string | unknown[],\n arg1: string | number,\n): boolean {\n return numberEquals(value.length, arg1);\n}\n\nexport const lengthNotEquals = bindNot(lengthEquals);\n","import bindNot from './bindNot';\n\nexport function isNull(value: unknown): value is null {\n return value === null;\n}\n\nexport const isNotNull = bindNot(isNull);\n","import bindNot from './bindNot';\n\nexport function isUndefined(value?: unknown): value is undefined {\n return value === undefined;\n}\n\nexport const isNotUndefined = bindNot(isUndefined);\n","import bindNot from './bindNot';\nimport { isNull } from './isNull';\nimport { isUndefined } from './isUndefined';\nimport { Nullish } from './utilityTypes';\n\nexport function isNullish(value: any): value is Nullish {\n return isNull(value) || isUndefined(value);\n}\n\nexport const isNotNullish = bindNot(isNullish);\n","/**\n * A safe hasOwnProperty access\n */\nexport default function hasOwnProperty<T>(\n obj: T,\n key: string | number | symbol,\n): key is keyof T {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","export default function isUnsafeKey(key: string): boolean {\n return key === '__proto__' || key === 'constructor' || key === 'prototype';\n}\n","import { isNullish } from './isNullish';\n\nexport function isObject(v: any): v is Record<any, any> {\n return typeof v === 'object' && !isNullish(v);\n}\n","import bindNot from './bindNot';\n\n// The module is named \"isArrayValue\" since it\n// is conflicting with a nested npm dependency.\n// We may need to revisit this in the future.\n\nexport function isArray(value: unknown): value is Array<unknown> {\n return Boolean(Array.isArray(value));\n}\n\nexport const isNotArray = bindNot(isArray);\n","import bindNot from './bindNot';\nimport hasOwnProperty from './hasOwnProperty';\nimport { lengthEquals } from './lengthEquals';\nimport { isObject } from './valueIsObject';\n\nexport function isEmpty(value: unknown): boolean {\n if (!value) {\n return true;\n } else if (hasOwnProperty(value, 'length')) {\n return lengthEquals(value as string | unknown[], 0);\n } else if (isObject(value)) {\n return lengthEquals(Object.keys(value as Record<string, unknown>), 0);\n }\n\n return false;\n}\n\nexport const isNotEmpty = bindNot(isEmpty);\n"],"mappings":";;AAAA,SAAwB,WACtB,OAC0C;AAC1C,QAAO,OAAO,UAAU;;;;;ACH1B,SAAwB,QAA+C,IAAO;AAC5E,SAAQ,GAAG,SAAiC,CAAC,GAAG,GAAG,KAAK;;;;;ACC1D,SAAgB,UAAU,OAAiC;CACzD,MAAM,MAAM,OAAO,MAAM;CACzB,MAAM,MAAM,OAAO,MAAM;CACzB,MAAM,SACJ,CAAC,MAAM,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,OAAO,MAAM,CAAC,IAAI,SAAS,IAAI;AACnE,QAAO,QAAQ,OAAO;;AAGxB,MAAa,eAAe,QAAQ,UAAU;;;;ACP9C,SAAgB,aACd,OACA,IACS;AACT,QAAO,UAAU,MAAM,IAAI,UAAU,GAAG,IAAI,OAAO,MAAM,KAAK,OAAO,GAAG;;AAG1E,MAAa,kBAAkB,QAAQ,aAAa;;;;ACPpD,SAAgB,aACd,OACA,MACS;AACT,QAAO,aAAa,MAAM,QAAQ,KAAK;;AAGzC,MAAa,kBAAkB,QAAQ,aAAa;;;;ACRpD,SAAgB,OAAO,OAA+B;AACpD,QAAO,UAAU;;AAGnB,MAAa,YAAY,QAAQ,OAAO;;;;ACJxC,SAAgB,YAAY,OAAqC;AAC/D,QAAO,UAAU;;AAGnB,MAAa,iBAAiB,QAAQ,YAAY;;;;ACDlD,SAAgB,UAAU,OAA8B;AACtD,QAAO,OAAO,MAAM,IAAI,YAAY,MAAM;;AAG5C,MAAa,eAAe,QAAQ,UAAU;;;;;;;ACN9C,SAAwB,eACtB,KACA,KACgB;AAChB,QAAO,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;;;;;ACPvD,SAAwB,cAAc,GAAyB;AAC7D,QAAO,OAAO,EAAE,KAAK;;;;;ACDvB,SAAwB,YAAY,KAAsB;AACxD,QAAO,QAAQ,eAAe,QAAQ,iBAAiB,QAAQ;;;;;ACCjE,SAAgB,SAAS,GAA+B;AACtD,QAAO,OAAO,MAAM,YAAY,CAAC,UAAU,EAAE;;;;;ACG/C,SAAgB,QAAQ,OAAyC;AAC/D,QAAO,QAAQ,MAAM,QAAQ,MAAM,CAAC;;AAGtC,MAAa,aAAa,QAAQ,QAAQ;;;;ACL1C,SAAgB,QAAQ,OAAyB;AAC/C,KAAI,CAAC,MACH,QAAO;UACE,eAAe,OAAO,SAAS,CACxC,QAAO,aAAa,OAA6B,EAAE;UAC1C,SAAS,MAAM,CACxB,QAAO,aAAa,OAAO,KAAK,MAAiC,EAAE,EAAE;AAGvE,QAAO;;AAGT,MAAa,aAAa,QAAQ,QAAQ"}
|