vest-utils 1.2.6 → 1.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/minifyObject.development.js +1 -0
- package/dist/cjs/minifyObject.development.js.map +1 -1
- package/dist/cjs/minifyObject.production.js.map +1 -1
- package/dist/es/minifyObject.development.js +1 -0
- package/dist/es/minifyObject.development.js.map +1 -1
- package/dist/es/minifyObject.production.js.map +1 -1
- package/dist/umd/minifyObject.development.js +1 -0
- package/dist/umd/minifyObject.development.js.map +1 -1
- package/dist/umd/minifyObject.production.js.map +1 -1
- package/package.json +1 -1
- package/types/minifyObject.d.ts.map +1 -1
|
@@ -66,6 +66,7 @@ function isStringValue(v) {
|
|
|
66
66
|
return String(v) === v;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
+
// Basic key generator that generates keys like a, b, c, ... aa, ab, ac, ...
|
|
69
70
|
function genMinifiedKey() {
|
|
70
71
|
const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*';
|
|
71
72
|
let index = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.development.js","sources":["../../src/isArrayValue.ts","../../src/hasOwnProperty.ts","../../src/isNumeric.ts","../../src/numberEquals.ts","../../src/lengthEquals.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/isNullish.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/isFunction.ts","../../src/isStringValue.ts","../../src/exports/minifyObject.ts"],"sourcesContent":["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","/**\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","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","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';\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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","import { isArray } from 'isArrayValue';\nimport { isEmpty } from 'isEmpty';\nimport isFunction from 'isFunction';\nimport { isNullish } from 'isNullish';\nimport isStringValue from 'isStringValue';\nimport { isObject } from 'valueIsObject';\n\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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minifyObject.development.js","sources":["../../src/isArrayValue.ts","../../src/hasOwnProperty.ts","../../src/isNumeric.ts","../../src/numberEquals.ts","../../src/lengthEquals.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/isNullish.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/isFunction.ts","../../src/isStringValue.ts","../../src/exports/minifyObject.ts"],"sourcesContent":["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","/**\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","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","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';\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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","import { 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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.production.js","sources":["../../src/isArrayValue.ts","../../src/isNumeric.ts","../../src/lengthEquals.ts","../../src/numberEquals.ts","../../src/isNullish.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/hasOwnProperty.ts","../../src/exports/minifyObject.ts","../../src/isFunction.ts","../../src/isStringValue.ts"],"sourcesContent":["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';\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 { 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';\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 { 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","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 { 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';\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","/**\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","import { isArray } from 'isArrayValue';\nimport { isEmpty } from 'isEmpty';\nimport isFunction from 'isFunction';\nimport { isNullish } from 'isNullish';\nimport isStringValue from 'isStringValue';\nimport { isObject } from 'valueIsObject';\n\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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n"],"names":["isArray","value","Boolean","Array","isNumeric","str","String","num","Number","result","isNaN","parseFloat","isFinite","lengthEquals","arg1","eq","numberEquals","length","isNullish","isNull","undefined","isUndefined","isObject","v","isEmpty","obj","key","Object","prototype","hasOwnProperty","call","keys","addCount","countMap","set","get","countOccurrences","excludeKeys","shouldMinify","has","isFunction","isNonSerializable","minifyObjectImpl","map","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","container","push","node","expandObject","minifiedObj","expandedObject","expandedValue","Set","Map","maps","counts","count","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","reverseMap","genMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minifyObject.production.js","sources":["../../src/isArrayValue.ts","../../src/isNumeric.ts","../../src/lengthEquals.ts","../../src/numberEquals.ts","../../src/isNullish.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/hasOwnProperty.ts","../../src/exports/minifyObject.ts","../../src/isFunction.ts","../../src/isStringValue.ts"],"sourcesContent":["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';\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 { 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';\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 { 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","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 { 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';\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","/**\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","import { 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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n"],"names":["isArray","value","Boolean","Array","isNumeric","str","String","num","Number","result","isNaN","parseFloat","isFinite","lengthEquals","arg1","eq","numberEquals","length","isNullish","isNull","undefined","isUndefined","isObject","v","isEmpty","obj","key","Object","prototype","hasOwnProperty","call","keys","addCount","countMap","set","get","countOccurrences","excludeKeys","shouldMinify","has","isFunction","isNonSerializable","minifyObjectImpl","map","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","container","push","node","expandObject","minifiedObj","expandedObject","expandedValue","Set","Map","maps","counts","count","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","reverseMap","genMap"],"mappings":"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"}
|
|
@@ -64,6 +64,7 @@ function isStringValue(v) {
|
|
|
64
64
|
return String(v) === v;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
// Basic key generator that generates keys like a, b, c, ... aa, ab, ac, ...
|
|
67
68
|
function genMinifiedKey() {
|
|
68
69
|
const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*';
|
|
69
70
|
let index = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.development.js","sources":["../../src/isArrayValue.ts","../../src/hasOwnProperty.ts","../../src/isNumeric.ts","../../src/numberEquals.ts","../../src/lengthEquals.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/isNullish.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/isFunction.ts","../../src/isStringValue.ts","../../src/exports/minifyObject.ts"],"sourcesContent":["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","/**\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","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","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';\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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","import { isArray } from 'isArrayValue';\nimport { isEmpty } from 'isEmpty';\nimport isFunction from 'isFunction';\nimport { isNullish } from 'isNullish';\nimport isStringValue from 'isStringValue';\nimport { isObject } from 'valueIsObject';\n\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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minifyObject.development.js","sources":["../../src/isArrayValue.ts","../../src/hasOwnProperty.ts","../../src/isNumeric.ts","../../src/numberEquals.ts","../../src/lengthEquals.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/isNullish.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/isFunction.ts","../../src/isStringValue.ts","../../src/exports/minifyObject.ts"],"sourcesContent":["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","/**\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","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","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';\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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","import { 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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.production.js","sources":["../../src/isArrayValue.ts","../../src/isNumeric.ts","../../src/lengthEquals.ts","../../src/numberEquals.ts","../../src/isNullish.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/hasOwnProperty.ts","../../src/exports/minifyObject.ts","../../src/isFunction.ts","../../src/isStringValue.ts"],"sourcesContent":["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';\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 { 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';\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 { 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","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 { 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';\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","/**\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","import { isArray } from 'isArrayValue';\nimport { isEmpty } from 'isEmpty';\nimport isFunction from 'isFunction';\nimport { isNullish } from 'isNullish';\nimport isStringValue from 'isStringValue';\nimport { isObject } from 'valueIsObject';\n\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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n"],"names":["isArray","value","Boolean","Array","isNumeric","str","String","num","Number","result","isNaN","parseFloat","isFinite","lengthEquals","arg1","eq","numberEquals","length","isNullish","isNull","undefined","isUndefined","isObject","v","isEmpty","obj","key","Object","prototype","hasOwnProperty","call","keys","minifyObject","excludeKeys","Set","countMap","Map","countOccurrences","maps","counts","count","push","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","has","map","set","reverseMap","genMap","minifyObjectImpl","addCount","get","shouldMinify","isFunction","isNonSerializable","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","expandObject","minifiedObj","expandedObject","expandedValue","container","node"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minifyObject.production.js","sources":["../../src/isArrayValue.ts","../../src/isNumeric.ts","../../src/lengthEquals.ts","../../src/numberEquals.ts","../../src/isNullish.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/hasOwnProperty.ts","../../src/exports/minifyObject.ts","../../src/isFunction.ts","../../src/isStringValue.ts"],"sourcesContent":["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';\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 { 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';\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 { 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","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 { 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';\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","/**\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","import { 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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n"],"names":["isArray","value","Boolean","Array","isNumeric","str","String","num","Number","result","isNaN","parseFloat","isFinite","lengthEquals","arg1","eq","numberEquals","length","isNullish","isNull","undefined","isUndefined","isObject","v","isEmpty","obj","key","Object","prototype","hasOwnProperty","call","keys","minifyObject","excludeKeys","Set","countMap","Map","countOccurrences","maps","counts","count","push","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","has","map","set","reverseMap","genMap","minifyObjectImpl","addCount","get","shouldMinify","isFunction","isNonSerializable","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","expandObject","minifiedObj","expandedObject","expandedValue","container","node"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.development.js","sources":["../../src/isArrayValue.ts","../../src/hasOwnProperty.ts","../../src/isNumeric.ts","../../src/numberEquals.ts","../../src/lengthEquals.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/isNullish.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/isFunction.ts","../../src/isStringValue.ts","../../src/exports/minifyObject.ts"],"sourcesContent":["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","/**\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","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","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';\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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","import { isArray } from 'isArrayValue';\nimport { isEmpty } from 'isEmpty';\nimport isFunction from 'isFunction';\nimport { isNullish } from 'isNullish';\nimport isStringValue from 'isStringValue';\nimport { isObject } from 'valueIsObject';\n\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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minifyObject.development.js","sources":["../../src/isArrayValue.ts","../../src/hasOwnProperty.ts","../../src/isNumeric.ts","../../src/numberEquals.ts","../../src/lengthEquals.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/isNullish.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/isFunction.ts","../../src/isStringValue.ts","../../src/exports/minifyObject.ts"],"sourcesContent":["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","/**\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","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","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';\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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n","import { 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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.production.js","sources":["../../src/isArrayValue.ts","../../src/isNumeric.ts","../../src/lengthEquals.ts","../../src/numberEquals.ts","../../src/isNullish.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/hasOwnProperty.ts","../../src/exports/minifyObject.ts","../../src/isFunction.ts","../../src/isStringValue.ts"],"sourcesContent":["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';\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 { 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';\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 { 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","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 { 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';\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","/**\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","import { isArray } from 'isArrayValue';\nimport { isEmpty } from 'isEmpty';\nimport isFunction from 'isFunction';\nimport { isNullish } from 'isNullish';\nimport isStringValue from 'isStringValue';\nimport { isObject } from 'valueIsObject';\n\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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n"],"names":["isArray","value","Boolean","Array","isNumeric","str","String","num","Number","result","isNaN","parseFloat","isFinite","lengthEquals","arg1","eq","numberEquals","length","isNullish","isNull","undefined","isUndefined","isObject","v","isEmpty","obj","key","Object","prototype","hasOwnProperty","call","keys","addCount","countMap","set","get","countOccurrences","excludeKeys","shouldMinify","has","isFunction","isNonSerializable","minifyObjectImpl","map","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","container","push","node","expandObject","minifiedObj","expandedObject","expandedValue","Set","Map","maps","counts","count","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","reverseMap","genMap"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"minifyObject.production.js","sources":["../../src/isArrayValue.ts","../../src/isNumeric.ts","../../src/lengthEquals.ts","../../src/numberEquals.ts","../../src/isNullish.ts","../../src/isNull.ts","../../src/isUndefined.ts","../../src/valueIsObject.ts","../../src/isEmpty.ts","../../src/hasOwnProperty.ts","../../src/exports/minifyObject.ts","../../src/isFunction.ts","../../src/isStringValue.ts"],"sourcesContent":["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';\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 { 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';\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 { 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","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 { 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';\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","/**\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","import { 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 excludeKeys: Set<string> = new Set(),\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, excludeKeys);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n excludeKeys: Set<string>,\n) {\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, excludeKeys);\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\n// eslint-disable-next-line complexity\nfunction shouldMinify(\n { key, value }: { key?: string; value?: any },\n excludeKeys: Set<string>,\n): boolean {\n if (key && excludeKeys.has(key)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n return true;\n}\n\nfunction minifyObjectImpl(\n obj: any,\n map: Map<any, string>,\n excludeKeys: Set<string>,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = obj[key];\n if (!shouldMinify({ key, value }, excludeKeys)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, excludeKeys);\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 (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","export default function isFunction(\n value: unknown\n): value is (...args: unknown[]) => unknown {\n return typeof value === 'function';\n}\n","export default function isStringValue(v: unknown): v is string {\n return String(v) === v;\n}\n"],"names":["isArray","value","Boolean","Array","isNumeric","str","String","num","Number","result","isNaN","parseFloat","isFinite","lengthEquals","arg1","eq","numberEquals","length","isNullish","isNull","undefined","isUndefined","isObject","v","isEmpty","obj","key","Object","prototype","hasOwnProperty","call","keys","addCount","countMap","set","get","countOccurrences","excludeKeys","shouldMinify","has","isFunction","isNonSerializable","minifyObjectImpl","map","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","container","push","node","expandObject","minifiedObj","expandedObject","expandedValue","Set","Map","maps","counts","count","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","reverseMap","genMap"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minifyObject.d.ts","sourceRoot":"","sources":["../src/exports/minifyObject.ts","../src/bindNot.ts","../src/isArrayValue.ts","../src/hasOwnProperty.ts","../src/isNumeric.ts","../src/numberEquals.ts","../src/lengthEquals.ts","../src/isNull.ts","../src/isUndefined.ts","../src/utilityTypes.ts","../src/isNullish.ts","../src/valueIsObject.ts","../src/isEmpty.ts","../src/isFunction.ts","../src/isStringValue.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"minifyObject.d.ts","sourceRoot":"","sources":["../src/exports/minifyObject.ts","../src/bindNot.ts","../src/isArrayValue.ts","../src/hasOwnProperty.ts","../src/isNumeric.ts","../src/numberEquals.ts","../src/lengthEquals.ts","../src/isNull.ts","../src/isUndefined.ts","../src/utilityTypes.ts","../src/isNullish.ts","../src/valueIsObject.ts","../src/isEmpty.ts","../src/isFunction.ts","../src/isStringValue.ts"],"names":[],"mappings":"AA0BA,iBAAgB,YAAY,CAC1B,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,GAAG,CAAC,MAAM,CAAa,GACnC,CAAC,GAAG,EAAE,GAAG,CAAC,CASZ;AAwID,iBAAgB,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAiB5E"}
|