vest-utils 1.3.2 → 1.3.3

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.
@@ -81,11 +81,11 @@ function genMinifiedKey() {
81
81
  return code;
82
82
  };
83
83
  }
84
- function minifyObject(obj, excludeKeys = new Set()) {
84
+ function minifyObject(obj, replacer = v => v) {
85
85
  const countMap = new Map();
86
- countOccurrences(obj, countMap, excludeKeys);
86
+ countOccurrences(obj, countMap, replacer);
87
87
  const maps = genMap(countMap);
88
- const o = minifyObjectImpl(obj, maps.map, excludeKeys);
88
+ const o = minifyObjectImpl(obj, maps.map, replacer);
89
89
  // need to reverse the map so that the minified keys are the keys and the original keys are the values
90
90
  // and turn it into an object
91
91
  return [o, maps.reverseMap];
@@ -124,17 +124,16 @@ function shouldAddToMap(value, keyLength) {
124
124
  function addCount(value, countMap) {
125
125
  countMap.set(value, (countMap.get(value) || 0) + 1);
126
126
  }
127
- // eslint-disable-next-line complexity
128
- function countOccurrences(obj, countMap, excludeKeys) {
127
+ function countOccurrences(obj, countMap, replacer) {
129
128
  for (const key in obj) {
130
- const value = obj[key];
131
- if (!shouldMinify({ key, value }, excludeKeys))
129
+ const value = replacer(obj[key], key);
130
+ if (!shouldMinify(value))
132
131
  continue;
133
132
  if (!Array.isArray(obj)) {
134
133
  addCount(key, countMap);
135
134
  }
136
135
  if (isObject(value)) {
137
- countOccurrences(value, countMap, excludeKeys);
136
+ countOccurrences(value, countMap, replacer);
138
137
  }
139
138
  else {
140
139
  addCount(value, countMap);
@@ -145,10 +144,7 @@ function isNonSerializable(value) {
145
144
  return isNullish(value) || isFunction(value) || typeof value === 'symbol';
146
145
  }
147
146
  // eslint-disable-next-line complexity
148
- function shouldMinify({ key, value }, excludeKeys) {
149
- if (key && excludeKeys.has(key)) {
150
- return false;
151
- }
147
+ function shouldMinify(value) {
152
148
  if (isObject(value) && isEmpty(value)) {
153
149
  return false;
154
150
  }
@@ -160,15 +156,15 @@ function shouldMinify({ key, value }, excludeKeys) {
160
156
  }
161
157
  return true;
162
158
  }
163
- function minifyObjectImpl(obj, map, excludeKeys) {
159
+ function minifyObjectImpl(obj, map, replacer) {
164
160
  const minifiedObject = getRootNode(obj);
165
161
  for (const key in obj) {
166
- const value = obj[key];
167
- if (!shouldMinify({ key, value }, excludeKeys))
162
+ const value = replacer(obj[key], key);
163
+ if (!shouldMinify(value))
168
164
  continue;
169
165
  let minifiedValue;
170
166
  if (isObject(value)) {
171
- minifiedValue = minifyObjectImpl(value, map, excludeKeys);
167
+ minifiedValue = minifyObjectImpl(value, map, replacer);
172
168
  }
173
169
  else {
174
170
  minifiedValue = minifyValue(value, map);
@@ -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\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
+ {"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 replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\n// eslint-disable-next-line complexity\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n 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 replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n"],"names":[],"mappings":";;AAEA;AACA;AACA;AAEM,SAAU,OAAO,CAAC,KAAc,EAAA;IACpC,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC;;ACRA;;AAEG;AACW,SAAU,cAAc,CACpC,GAAM,EACN,GAA6B,EAAA;AAE7B,IAAA,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxD;;ACNM,SAAU,SAAS,CAAC,KAAsB,EAAA;AAC9C,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1B,IAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,MAAM,GACV,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpE,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB;;ACLgB,SAAA,YAAY,CAC1B,KAAsB,EACtB,EAAmB,EAAA;AAEnB,IAAA,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;AAC3E;;ACLgB,SAAA,YAAY,CAC1B,KAAyB,EACzB,IAAqB,EAAA;IAErB,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC1C;;ACNM,SAAU,MAAM,CAAC,KAAc,EAAA;IACnC,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB;;ACFM,SAAU,WAAW,CAAC,KAAe,EAAA;IACzC,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B;;ACCM,SAAU,SAAS,CAAC,KAAU,EAAA;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;AAC7C;;ACLM,SAAU,QAAQ,CAAC,CAAM,EAAA;IAC7B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChD;;ACCM,SAAU,OAAO,CAAC,KAAc,EAAA;IACpC,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAM,SAAA,IAAI,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;AAC1C,QAAA,OAAO,YAAY,CAAC,KAA2B,EAAE,CAAC,CAAC,CAAC;AACrD,KAAA;AAAM,SAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,EAAE,CAAC,CAAC,CAAC;AACvE,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf;;ACfwB,SAAA,UAAU,CAChC,KAAc,EAAA;AAEd,IAAA,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC;;ACJwB,SAAA,aAAa,CAAC,CAAU,EAAA;AAC9C,IAAA,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzB;;ACKA;AACA,SAAS,cAAc,GAAA;IACrB,MAAM,KAAK,GACT,wEAAwE,CAAC;IAC3E,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,IAAA,OAAO,SAAS,IAAI,GAAA;QAClB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,KAAK,CAAC;QAEd,GAAG;YACD,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;SAClC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAChB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,OAAO,IAAI,CAAC;AACd,KAAC,CAAC;AACJ,CAAC;AAEK,SAAU,YAAY,CAC1B,GAAQ,EACR,WAAiC,CAAC,IAAI,CAAC,EAAA;AAEvC,IAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAe,CAAC;AACxC,IAAA,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC1C,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC9B,IAAA,MAAM,CAAC,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;;;AAIpD,IAAA,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,MAAM,CAAC,QAA0B,EAAA;IACxC,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE;QACrC,IAAI,KAAK,GAAG,CAAC,EAAE;YACb,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/B,SAAA;AACF,KAAA;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AAExD,IAAA,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAI;QAClB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AAC1C,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,IAAI,GAAG,CAAC;QACR,GAAG;YACD,GAAG,GAAG,MAAM,EAAE,CAAC;AAChB,SAAA,QAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;AACd,KAAC,EACD;QACE,GAAG,EAAE,IAAI,GAAG,EAAE;AACd,QAAA,UAAU,EAAE,EAAE;AACd,QAAA,SAAS,EAAE,CAAC;AAKb,KAAA,CACF,CAAC;AACJ,CAAC;AAED;AACA,SAAS,cAAc,CAAC,KAAU,EAAE,SAAiB,EAAA;IACnD,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,KAAU,EAAE,QAA0B,EAAA;AACtD,IAAA,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAQ,EACR,QAA0B,EAC1B,QAA8B,EAAA;AAE9B,IAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,SAAS;AAEnC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACvB,YAAA,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,SAAA;AACF,KAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAU,EAAA;AACnC,IAAA,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC5E,CAAC;AAED;AACA,SAAS,YAAY,CAAC,KAAU,EAAA;IAC9B,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACrC,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAC5B,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;IAED,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;AACrC,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAQ,EACR,GAAqB,EACrB,QAA8B,EAAA;AAE9B,IAAA,MAAM,cAAc,GAAQ,WAAW,CAAC,GAAG,CAAC,CAAC;AAE7C,IAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,SAAS;AAEnC,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,aAAa,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxD,SAAA;AAAM,aAAA;AACL,YAAA,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAChE,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,KAAU,EAAE,GAAqB,EAAA;;IACpD,OAAO,CAAA,EAAA,GAAA,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,KAAK,CAAC;AACjC,CAAC;AAED,SAAS,YAAY,CAAC,KAAU,EAAE,GAAwB,EAAA;;AACxD,IAAA,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,MAAA,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,KAAK,CAAC;AAC5B,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEe,SAAA,YAAY,CAAC,WAAgB,EAAE,GAAwB,EAAA;AACrE,IAAA,MAAM,cAAc,GAAQ,WAAW,CAAC,WAAW,CAAC,CAAC;AAErD,IAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,QAAA,IAAI,aAAa,CAAC;AAClB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/B,QAAA,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnB,YAAA,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,aAAa,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC1C,SAAA;QAED,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,QAAA,QAAQ,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;AACtD,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,SAAc,EAAE,KAAU,EAAE,GAAW,EAAA;AACvD,IAAA,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,QAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACvB,KAAA;AAAM,SAAA;AACL,QAAA,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACxB,KAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAS,EAAA;AAC5B,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACjC;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";function n(n){return Boolean(Array.isArray(n))}function t(n){const t=String(n),e=Number(n),r=!isNaN(parseFloat(t))&&!isNaN(Number(n))&&isFinite(e);return Boolean(r)}function e(n,e){return function(n,e){return t(n)&&t(e)&&Number(n)===Number(e)}(n.length,e)}function r(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}function o(n){return"object"==typeof n&&!r(n)}function u(n){return!n||(t=n,r="length",Object.prototype.hasOwnProperty.call(t,r)?e(n,0):!!o(n)&&e(Object.keys(n),0));var t,r}function c(n,t){t.set(n,(t.get(n)||0)+1)}function i(n,t,e){for(const r in n){const u=n[r];f({key:r,value:u},e)&&(Array.isArray(n)||c(r,t),o(u)?i(u,t,e):c(u,t))}}function f({key:n,value:t},e){return(!n||!e.has(n))&&((!o(t)||!u(t))&&(!function(n){return r(n)||function(n){return"function"==typeof n}(n)||"symbol"==typeof n}(t)&&(!o(t)||!u(t))))}function s(n,t,e){const r=y(n);for(const u in n){const c=n[u];if(!f({key:u,value:c},e))continue;let i;i=o(c)?s(c,t,e):a(c,t),p(r,i,a(u,t))}return r}function a(n,t){var e;return null!==(e=t.get(n))&&void 0!==e?e:n}function l(n,t){var e,r;return r=n,String(r)===r&&null!==(e=t[n])&&void 0!==e?e:n}function p(t,e,r){n(t)?t.push(e):t[r]=e}function y(t){return n(t)?[]:{}}exports.expandObject=function n(t,e){const r=y(t);for(const u in t){let c;const i=t[u];c=o(i)?n(i,e):l(i,e);p(r,c,l(u,e))}return r},exports.minifyObject=function(n,t=new Set){const e=new Map;i(n,e,t);const r=function(n){const t=[];for(const[e,r]of n)r>1&&t.push({value:e,count:r});const e=t.sort(((n,t)=>t.count-n.count)),r=function(){const n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";let t=0;return function(){let e="",r=t;do{e+=n[r%70],r=Math.floor(r/70)}while(r>0);return t++,e}}();return e.reduce(((t,{value:e})=>{if(!function(n,t){return n.toString().length>=t}(e,t.keyLength))return t;let o;do{o=r()}while(n.has(o));return t.map.set(e,o),t.reverseMap[o]=e,t.keyLength=o.length,t}),{map:new Map,reverseMap:{},keyLength:1})}(e);return[s(n,r.map,t),r.reverseMap]};
1
+ "use strict";function n(n){return Boolean(Array.isArray(n))}function t(n){const t=String(n),r=Number(n),e=!isNaN(parseFloat(t))&&!isNaN(Number(n))&&isFinite(r);return Boolean(e)}function r(n,r){return function(n,r){return t(n)&&t(r)&&Number(n)===Number(r)}(n.length,r)}function e(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}function o(n){return"object"==typeof n&&!e(n)}function u(n){return!n||(t=n,e="length",Object.prototype.hasOwnProperty.call(t,e)?r(n,0):!!o(n)&&r(Object.keys(n),0));var t,e}function c(n,t){t.set(n,(t.get(n)||0)+1)}function i(n,t,r){for(const e in n){const u=r(n[e],e);f(u)&&(Array.isArray(n)||c(e,t),o(u)?i(u,t,r):c(u,t))}}function f(n){return(!o(n)||!u(n))&&(!function(n){return e(n)||function(n){return"function"==typeof n}(n)||"symbol"==typeof n}(n)&&(!o(n)||!u(n)))}function s(n,t,r){const e=y(n);for(const u in n){const c=r(n[u],u);if(!f(c))continue;let i;i=o(c)?s(c,t,r):a(c,t),p(e,i,a(u,t))}return e}function a(n,t){var r;return null!==(r=t.get(n))&&void 0!==r?r:n}function l(n,t){var r,e;return e=n,String(e)===e&&null!==(r=t[n])&&void 0!==r?r:n}function p(t,r,e){n(t)?t.push(r):t[e]=r}function y(t){return n(t)?[]:{}}exports.expandObject=function n(t,r){const e=y(t);for(const u in t){let c;const i=t[u];c=o(i)?n(i,r):l(i,r);p(e,c,l(u,r))}return e},exports.minifyObject=function(n,t=(n=>n)){const r=new Map;i(n,r,t);const e=function(n){const t=[];for(const[r,e]of n)e>1&&t.push({value:r,count:e});const r=t.sort(((n,t)=>t.count-n.count)),e=function(){const n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";let t=0;return function(){let r="",e=t;do{r+=n[e%70],e=Math.floor(e/70)}while(e>0);return t++,r}}();return r.reduce(((t,{value:r})=>{if(!function(n,t){return n.toString().length>=t}(r,t.keyLength))return t;let o;do{o=e()}while(n.has(o));return t.map.set(r,o),t.reverseMap[o]=r,t.keyLength=o.length,t}),{map:new Map,reverseMap:{},keyLength:1})}(r);return[s(n,e.map,t),e.reverseMap]};
2
2
  //# sourceMappingURL=minifyObject.production.js.map
@@ -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\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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"}
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 replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\n// eslint-disable-next-line complexity\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n 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 replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n","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","replacer","shouldMinify","isFunction","isNonSerializable","minifyObjectImpl","map","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","container","push","node","expandObject","minifiedObj","expandedObject","expandedValue","Map","maps","counts","count","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","has","reverseMap","genMap"],"mappings":"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"}
@@ -79,11 +79,11 @@ function genMinifiedKey() {
79
79
  return code;
80
80
  };
81
81
  }
82
- function minifyObject(obj, excludeKeys = new Set()) {
82
+ function minifyObject(obj, replacer = v => v) {
83
83
  const countMap = new Map();
84
- countOccurrences(obj, countMap, excludeKeys);
84
+ countOccurrences(obj, countMap, replacer);
85
85
  const maps = genMap(countMap);
86
- const o = minifyObjectImpl(obj, maps.map, excludeKeys);
86
+ const o = minifyObjectImpl(obj, maps.map, replacer);
87
87
  // need to reverse the map so that the minified keys are the keys and the original keys are the values
88
88
  // and turn it into an object
89
89
  return [o, maps.reverseMap];
@@ -122,17 +122,16 @@ function shouldAddToMap(value, keyLength) {
122
122
  function addCount(value, countMap) {
123
123
  countMap.set(value, (countMap.get(value) || 0) + 1);
124
124
  }
125
- // eslint-disable-next-line complexity
126
- function countOccurrences(obj, countMap, excludeKeys) {
125
+ function countOccurrences(obj, countMap, replacer) {
127
126
  for (const key in obj) {
128
- const value = obj[key];
129
- if (!shouldMinify({ key, value }, excludeKeys))
127
+ const value = replacer(obj[key], key);
128
+ if (!shouldMinify(value))
130
129
  continue;
131
130
  if (!Array.isArray(obj)) {
132
131
  addCount(key, countMap);
133
132
  }
134
133
  if (isObject(value)) {
135
- countOccurrences(value, countMap, excludeKeys);
134
+ countOccurrences(value, countMap, replacer);
136
135
  }
137
136
  else {
138
137
  addCount(value, countMap);
@@ -143,10 +142,7 @@ function isNonSerializable(value) {
143
142
  return isNullish(value) || isFunction(value) || typeof value === 'symbol';
144
143
  }
145
144
  // eslint-disable-next-line complexity
146
- function shouldMinify({ key, value }, excludeKeys) {
147
- if (key && excludeKeys.has(key)) {
148
- return false;
149
- }
145
+ function shouldMinify(value) {
150
146
  if (isObject(value) && isEmpty(value)) {
151
147
  return false;
152
148
  }
@@ -158,15 +154,15 @@ function shouldMinify({ key, value }, excludeKeys) {
158
154
  }
159
155
  return true;
160
156
  }
161
- function minifyObjectImpl(obj, map, excludeKeys) {
157
+ function minifyObjectImpl(obj, map, replacer) {
162
158
  const minifiedObject = getRootNode(obj);
163
159
  for (const key in obj) {
164
- const value = obj[key];
165
- if (!shouldMinify({ key, value }, excludeKeys))
160
+ const value = replacer(obj[key], key);
161
+ if (!shouldMinify(value))
166
162
  continue;
167
163
  let minifiedValue;
168
164
  if (isObject(value)) {
169
- minifiedValue = minifyObjectImpl(value, map, excludeKeys);
165
+ minifiedValue = minifyObjectImpl(value, map, replacer);
170
166
  }
171
167
  else {
172
168
  minifiedValue = minifyValue(value, map);
@@ -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\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
+ {"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 replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\n// eslint-disable-next-line complexity\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n 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 replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- function n(n){return Boolean(Array.isArray(n))}function t(n){const t=String(n),e=Number(n),r=!isNaN(parseFloat(t))&&!isNaN(Number(n))&&isFinite(e);return Boolean(r)}function e(n,e){return function(n,e){return t(n)&&t(e)&&Number(n)===Number(e)}(n.length,e)}function r(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}function o(n){return"object"==typeof n&&!r(n)}function u(n){return!n||(t=n,r="length",Object.prototype.hasOwnProperty.call(t,r)?e(n,0):!!o(n)&&e(Object.keys(n),0));var t,r}function c(n,t=new Set){const e=new Map;f(n,e,t);const r=function(n){const t=[];for(const[e,r]of n)r>1&&t.push({value:e,count:r});const e=t.sort(((n,t)=>t.count-n.count)),r=function(){const n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";let t=0;return function(){let e="",r=t;do{e+=n[r%70],r=Math.floor(r/70)}while(r>0);return t++,e}}();return e.reduce(((t,{value:e})=>{if(!function(n,t){return n.toString().length>=t}(e,t.keyLength))return t;let o;do{o=r()}while(n.has(o));return t.map.set(e,o),t.reverseMap[o]=e,t.keyLength=o.length,t}),{map:new Map,reverseMap:{},keyLength:1})}(e);return[a(n,r.map,t),r.reverseMap]}function i(n,t){t.set(n,(t.get(n)||0)+1)}function f(n,t,e){for(const r in n){const u=n[r];s({key:r,value:u},e)&&(Array.isArray(n)||i(r,t),o(u)?f(u,t,e):i(u,t))}}function s({key:n,value:t},e){return(!n||!e.has(n))&&((!o(t)||!u(t))&&(!function(n){return r(n)||function(n){return"function"==typeof n}(n)||"symbol"==typeof n}(t)&&(!o(t)||!u(t))))}function a(n,t,e){const r=v(n);for(const u in n){const c=n[u];if(!s({key:u,value:c},e))continue;let i;i=o(c)?a(c,t,e):l(c,t),h(r,i,l(u,t))}return r}function l(n,t){var e;return null!==(e=t.get(n))&&void 0!==e?e:n}function p(n,t){var e,r;return r=n,String(r)===r&&null!==(e=t[n])&&void 0!==e?e:n}function y(n,t){const e=v(n);for(const r in n){let u;const c=n[r];u=o(c)?y(c,t):p(c,t);h(e,u,p(r,t))}return e}function h(t,e,r){n(t)?t.push(e):t[r]=e}function v(t){return n(t)?[]:{}}export{y as expandObject,c as minifyObject};
1
+ function n(n){return Boolean(Array.isArray(n))}function t(n){const t=String(n),r=Number(n),e=!isNaN(parseFloat(t))&&!isNaN(Number(n))&&isFinite(r);return Boolean(e)}function r(n,r){return function(n,r){return t(n)&&t(r)&&Number(n)===Number(r)}(n.length,r)}function e(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}function o(n){return"object"==typeof n&&!e(n)}function u(n){return!n||(t=n,e="length",Object.prototype.hasOwnProperty.call(t,e)?r(n,0):!!o(n)&&r(Object.keys(n),0));var t,e}function c(n,t=(n=>n)){const r=new Map;f(n,r,t);const e=function(n){const t=[];for(const[r,e]of n)e>1&&t.push({value:r,count:e});const r=t.sort(((n,t)=>t.count-n.count)),e=function(){const n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";let t=0;return function(){let r="",e=t;do{r+=n[e%70],e=Math.floor(e/70)}while(e>0);return t++,r}}();return r.reduce(((t,{value:r})=>{if(!function(n,t){return n.toString().length>=t}(r,t.keyLength))return t;let o;do{o=e()}while(n.has(o));return t.map.set(r,o),t.reverseMap[o]=r,t.keyLength=o.length,t}),{map:new Map,reverseMap:{},keyLength:1})}(r);return[a(n,e.map,t),e.reverseMap]}function i(n,t){t.set(n,(t.get(n)||0)+1)}function f(n,t,r){for(const e in n){const u=r(n[e],e);s(u)&&(Array.isArray(n)||i(e,t),o(u)?f(u,t,r):i(u,t))}}function s(n){return(!o(n)||!u(n))&&(!function(n){return e(n)||function(n){return"function"==typeof n}(n)||"symbol"==typeof n}(n)&&(!o(n)||!u(n)))}function a(n,t,r){const e=g(n);for(const u in n){const c=r(n[u],u);if(!s(c))continue;let i;i=o(c)?a(c,t,r):l(c,t),y(e,i,l(u,t))}return e}function l(n,t){var r;return null!==(r=t.get(n))&&void 0!==r?r:n}function p(n,t){var r,e;return e=n,String(e)===e&&null!==(r=t[n])&&void 0!==r?r:n}function h(n,t){const r=g(n);for(const e in n){let u;const c=n[e];u=o(c)?h(c,t):p(c,t);y(r,u,p(e,t))}return r}function y(t,r,e){n(t)?t.push(r):t[e]=r}function g(t){return n(t)?[]:{}}export{h as expandObject,c as minifyObject};
2
2
  //# sourceMappingURL=minifyObject.production.js.map
@@ -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\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
+ {"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 replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\n// eslint-disable-next-line complexity\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n 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 replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n","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","replacer","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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"}
@@ -85,11 +85,11 @@
85
85
  return code;
86
86
  };
87
87
  }
88
- function minifyObject(obj, excludeKeys = new Set()) {
88
+ function minifyObject(obj, replacer = v => v) {
89
89
  const countMap = new Map();
90
- countOccurrences(obj, countMap, excludeKeys);
90
+ countOccurrences(obj, countMap, replacer);
91
91
  const maps = genMap(countMap);
92
- const o = minifyObjectImpl(obj, maps.map, excludeKeys);
92
+ const o = minifyObjectImpl(obj, maps.map, replacer);
93
93
  // need to reverse the map so that the minified keys are the keys and the original keys are the values
94
94
  // and turn it into an object
95
95
  return [o, maps.reverseMap];
@@ -128,17 +128,16 @@
128
128
  function addCount(value, countMap) {
129
129
  countMap.set(value, (countMap.get(value) || 0) + 1);
130
130
  }
131
- // eslint-disable-next-line complexity
132
- function countOccurrences(obj, countMap, excludeKeys) {
131
+ function countOccurrences(obj, countMap, replacer) {
133
132
  for (const key in obj) {
134
- const value = obj[key];
135
- if (!shouldMinify({ key, value }, excludeKeys))
133
+ const value = replacer(obj[key], key);
134
+ if (!shouldMinify(value))
136
135
  continue;
137
136
  if (!Array.isArray(obj)) {
138
137
  addCount(key, countMap);
139
138
  }
140
139
  if (isObject(value)) {
141
- countOccurrences(value, countMap, excludeKeys);
140
+ countOccurrences(value, countMap, replacer);
142
141
  }
143
142
  else {
144
143
  addCount(value, countMap);
@@ -149,10 +148,7 @@
149
148
  return isNullish(value) || isFunction(value) || typeof value === 'symbol';
150
149
  }
151
150
  // eslint-disable-next-line complexity
152
- function shouldMinify({ key, value }, excludeKeys) {
153
- if (key && excludeKeys.has(key)) {
154
- return false;
155
- }
151
+ function shouldMinify(value) {
156
152
  if (isObject(value) && isEmpty(value)) {
157
153
  return false;
158
154
  }
@@ -164,15 +160,15 @@
164
160
  }
165
161
  return true;
166
162
  }
167
- function minifyObjectImpl(obj, map, excludeKeys) {
163
+ function minifyObjectImpl(obj, map, replacer) {
168
164
  const minifiedObject = getRootNode(obj);
169
165
  for (const key in obj) {
170
- const value = obj[key];
171
- if (!shouldMinify({ key, value }, excludeKeys))
166
+ const value = replacer(obj[key], key);
167
+ if (!shouldMinify(value))
172
168
  continue;
173
169
  let minifiedValue;
174
170
  if (isObject(value)) {
175
- minifiedValue = minifyObjectImpl(value, map, excludeKeys);
171
+ minifiedValue = minifyObjectImpl(value, map, replacer);
176
172
  }
177
173
  else {
178
174
  minifiedValue = minifyValue(value, map);
@@ -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\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
+ {"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 replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\n// eslint-disable-next-line complexity\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n 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 replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).minifyObject={})}(this,(function(n){"use strict";function t(n){return Boolean(Array.isArray(n))}function e(n){const t=String(n),e=Number(n),r=!isNaN(parseFloat(t))&&!isNaN(Number(n))&&isFinite(e);return Boolean(r)}function r(n,t){return function(n,t){return e(n)&&e(t)&&Number(n)===Number(t)}(n.length,t)}function o(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}function u(n){return"object"==typeof n&&!o(n)}function i(n){return!n||(t=n,e="length",Object.prototype.hasOwnProperty.call(t,e)?r(n,0):!!u(n)&&r(Object.keys(n),0));var t,e}function c(n,t){t.set(n,(t.get(n)||0)+1)}function f(n,t,e){for(const r in n){const o=n[r];s({key:r,value:o},e)&&(Array.isArray(n)||c(r,t),u(o)?f(o,t,e):c(o,t))}}function s({key:n,value:t},e){return(!n||!e.has(n))&&((!u(t)||!i(t))&&(!function(n){return o(n)||function(n){return"function"==typeof n}(n)||"symbol"==typeof n}(t)&&(!u(t)||!i(t))))}function a(n,t,e){const r=h(n);for(const o in n){const i=n[o];if(!s({key:o,value:i},e))continue;let c;c=u(i)?a(i,t,e):l(i,t),y(r,c,l(o,t))}return r}function l(n,t){var e;return null!==(e=t.get(n))&&void 0!==e?e:n}function p(n,t){var e,r;return r=n,String(r)===r&&null!==(e=t[n])&&void 0!==e?e:n}function y(n,e,r){t(n)?n.push(e):n[r]=e}function h(n){return t(n)?[]:{}}n.expandObject=function n(t,e){const r=h(t);for(const o in t){let i;const c=t[o];i=u(c)?n(c,e):p(c,e);y(r,i,p(o,e))}return r},n.minifyObject=function(n,t=new Set){const e=new Map;f(n,e,t);const r=function(n){const t=[];for(const[e,r]of n)r>1&&t.push({value:e,count:r});const e=t.sort(((n,t)=>t.count-n.count)),r=function(){const n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";let t=0;return function(){let e="",r=t;do{e+=n[r%70],r=Math.floor(r/70)}while(r>0);return t++,e}}();return e.reduce(((t,{value:e})=>{if(!function(n,t){return n.toString().length>=t}(e,t.keyLength))return t;let o;do{o=r()}while(n.has(o));return t.map.set(e,o),t.reverseMap[o]=e,t.keyLength=o.length,t}),{map:new Map,reverseMap:{},keyLength:1})}(e);return[a(n,r.map,t),r.reverseMap]}}));
1
+ !function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).minifyObject={})}(this,(function(n){"use strict";function t(n){return Boolean(Array.isArray(n))}function e(n){const t=String(n),e=Number(n),r=!isNaN(parseFloat(t))&&!isNaN(Number(n))&&isFinite(e);return Boolean(r)}function r(n,t){return function(n,t){return e(n)&&e(t)&&Number(n)===Number(t)}(n.length,t)}function o(n){return function(n){return null===n}(n)||function(n){return void 0===n}(n)}function u(n){return"object"==typeof n&&!o(n)}function i(n){return!n||(t=n,e="length",Object.prototype.hasOwnProperty.call(t,e)?r(n,0):!!u(n)&&r(Object.keys(n),0));var t,e}function c(n,t){t.set(n,(t.get(n)||0)+1)}function f(n,t,e){for(const r in n){const o=e(n[r],r);s(o)&&(Array.isArray(n)||c(r,t),u(o)?f(o,t,e):c(o,t))}}function s(n){return(!u(n)||!i(n))&&(!function(n){return o(n)||function(n){return"function"==typeof n}(n)||"symbol"==typeof n}(n)&&(!u(n)||!i(n)))}function l(n,t,e){const r=h(n);for(const o in n){const i=e(n[o],o);if(!s(i))continue;let c;c=u(i)?l(i,t,e):a(i,t),y(r,c,a(o,t))}return r}function a(n,t){var e;return null!==(e=t.get(n))&&void 0!==e?e:n}function p(n,t){var e,r;return r=n,String(r)===r&&null!==(e=t[n])&&void 0!==e?e:n}function y(n,e,r){t(n)?n.push(e):n[r]=e}function h(n){return t(n)?[]:{}}n.expandObject=function n(t,e){const r=h(t);for(const o in t){let i;const c=t[o];i=u(c)?n(c,e):p(c,e);y(r,i,p(o,e))}return r},n.minifyObject=function(n,t=(n=>n)){const e=new Map;f(n,e,t);const r=function(n){const t=[];for(const[e,r]of n)r>1&&t.push({value:e,count:r});const e=t.sort(((n,t)=>t.count-n.count)),r=function(){const n="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*";let t=0;return function(){let e="",r=t;do{e+=n[r%70],r=Math.floor(r/70)}while(r>0);return t++,e}}();return e.reduce(((t,{value:e})=>{if(!function(n,t){return n.toString().length>=t}(e,t.keyLength))return t;let o;do{o=r()}while(n.has(o));return t.map.set(e,o),t.reverseMap[o]=e,t.keyLength=o.length,t}),{map:new Map,reverseMap:{},keyLength:1})}(e);return[l(n,r.map,t),r.reverseMap]}}));
2
2
  //# sourceMappingURL=minifyObject.production.js.map
@@ -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\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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"}
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 replacer: MinifyObjectReplacer = v => v,\n): [any, any] {\n const countMap = new Map<any, number>();\n countOccurrences(obj, countMap, replacer);\n const maps = genMap(countMap);\n const o = minifyObjectImpl(obj, maps.map, replacer);\n // need to reverse the map so that the minified keys are the keys and the original keys are the values\n // and turn it into an object\n\n return [o, maps.reverseMap];\n}\n\nfunction genMap(countMap: Map<any, number>) {\n const counts = [];\n\n for (const [value, count] of countMap) {\n if (count > 1) {\n counts.push({ value, count });\n }\n }\n\n const sorted = counts.sort((a, z) => z.count - a.count);\n\n const getKey = genMinifiedKey();\n return sorted.reduce(\n (maps, { value }) => {\n if (!shouldAddToMap(value, maps.keyLength)) {\n return maps;\n }\n\n let key;\n do {\n key = getKey();\n } while (countMap.has(key));\n maps.map.set(value, key);\n maps.reverseMap[key] = value;\n maps.keyLength = key.length;\n return maps;\n },\n {\n map: new Map(),\n reverseMap: {},\n keyLength: 1,\n } as {\n map: Map<any, string>;\n reverseMap: Record<string, any>;\n keyLength: number;\n },\n );\n}\n\n// This avoids minification if the original key is shorter than or equals the minified key\nfunction shouldAddToMap(value: any, keyLength: number) {\n return value.toString().length >= keyLength;\n}\n\nfunction addCount(value: any, countMap: Map<any, number>) {\n countMap.set(value, (countMap.get(value) || 0) + 1);\n}\n\nfunction countOccurrences(\n obj: any,\n countMap: Map<any, number>,\n replacer: MinifyObjectReplacer,\n) {\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n if (!Array.isArray(obj)) {\n addCount(key, countMap);\n }\n\n if (isObject(value)) {\n countOccurrences(value, countMap, replacer);\n } else {\n addCount(value, countMap);\n }\n }\n}\n\nfunction isNonSerializable(value: any): boolean {\n return isNullish(value) || isFunction(value) || typeof value === 'symbol';\n}\n\n// eslint-disable-next-line complexity\nfunction shouldMinify(value: any): boolean {\n if (isObject(value) && isEmpty(value)) {\n return false;\n }\n\n if (isNonSerializable(value)) {\n return false;\n }\n\n 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 replacer: MinifyObjectReplacer,\n): any {\n const minifiedObject: any = getRootNode(obj);\n\n for (const key in obj) {\n const value = replacer(obj[key], key);\n if (!shouldMinify(value)) continue;\n\n let minifiedValue;\n if (isObject(value)) {\n minifiedValue = minifyObjectImpl(value, map, replacer);\n } else {\n minifiedValue = minifyValue(value, map);\n }\n\n setValue(minifiedObject, minifiedValue, minifyValue(key, map));\n }\n\n return minifiedObject;\n}\n\nfunction minifyValue(value: any, map: Map<any, string>) {\n return map.get(value) ?? value;\n}\n\nfunction expandSingle(value: any, map: Record<string, any>): any {\n if (isStringValue(value)) {\n return map[value] ?? value;\n }\n\n return value;\n}\n\nexport function expandObject(minifiedObj: any, map: Record<string, any>): any {\n const expandedObject: any = getRootNode(minifiedObj);\n\n for (const key in minifiedObj) {\n let expandedValue;\n const value = minifiedObj[key];\n if (isObject(value)) {\n expandedValue = expandObject(value, map);\n } else {\n expandedValue = expandSingle(value, map);\n }\n\n const expandedKey = expandSingle(key, map);\n setValue(expandedObject, expandedValue, expandedKey);\n }\n\n return expandedObject;\n}\n\nfunction setValue(container: any, value: any, key: string) {\n if (isArray(container)) {\n container.push(value);\n } else {\n container[key] = value;\n }\n}\n\nfunction getRootNode(node: any) {\n return isArray(node) ? [] : {};\n}\n\nexport type MinifyObjectReplacer = (value: any, key: string) => any;\n","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","replacer","shouldMinify","isFunction","isNonSerializable","minifyObjectImpl","map","minifiedObject","getRootNode","minifiedValue","minifyValue","setValue","_a","expandSingle","container","push","node","expandObject","minifiedObj","expandedObject","expandedValue","Map","maps","counts","count","sorted","sort","a","z","getKey","chars","index","code","x","Math","floor","genMinifiedKey","reduce","keyLength","toString","shouldAddToMap","has","reverseMap","genMap"],"mappings":"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"}
@@ -5,5 +5,6 @@
5
5
  "jsdelivr": "../dist/umd/minifyObject.production.js",
6
6
  "name": "minifyObject",
7
7
  "types": "../types/minifyObject.d.ts",
8
+ "license": "MIT",
8
9
  "private": true
9
10
  }
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.2",
2
+ "version": "1.3.3",
3
3
  "name": "vest-utils",
4
4
  "author": "ealush",
5
5
  "scripts": {
@@ -74,5 +74,6 @@
74
74
  "./package.json": "./package.json",
75
75
  "./*": "./*"
76
76
  },
77
- "vxAllowResolve": []
77
+ "vxAllowResolve": [],
78
+ "license": "MIT"
78
79
  }
@@ -1,4 +1,5 @@
1
- declare function minifyObject(obj: any, excludeKeys?: Set<string>): [any, any];
1
+ declare function minifyObject(obj: any, replacer?: MinifyObjectReplacer): [any, any];
2
2
  declare function expandObject(minifiedObj: any, map: Record<string, any>): any;
3
- export { minifyObject, expandObject };
3
+ type MinifyObjectReplacer = (value: any, key: string) => any;
4
+ export { minifyObject, expandObject, MinifyObjectReplacer };
4
5
  //# sourceMappingURL=minifyObject.d.ts.map
@@ -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":"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"}
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,QAAQ,GAAE,oBAA6B,GACtC,CAAC,GAAG,EAAE,GAAG,CAAC,CASZ;AAgID,iBAAgB,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,CAiB5E;AAcD,KAAY,oBAAoB,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,GAAG,CAAC"}