@bemedev/types
Version:
Type definitions for Bemedev projects
1 lines • 21.1 kB
Source Map (JSON)
{"version":3,"file":"objects.cjs","sources":["../../src/functions/objects.ts"],"sourcesContent":["import {\n _unknown,\n castFn,\n expandFn,\n isPlainObject,\n partialCall,\n} from '~utils';\nimport type {\n AllowedNamesLow,\n DeepNotReadonly,\n DeepOmit,\n DeepReadonly,\n DeepRequired,\n Keys,\n KeyTypes,\n KeyTypesFrom,\n NotReadonly,\n NotSubType,\n Primitive2,\n PrimitiveObjectMap,\n Ra,\n Ru,\n SubType,\n To,\n} from '../types/types';\nimport { commons } from './commons';\n\n// #region Helpers\n\ntype Picker = 'element' | 'key';\n\nconst _isRequiredDeep = (object: any): object is DeepRequired<any> => {\n const isObject = isPlainObject(object);\n if (isObject) {\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n const element = (object as any)[key];\n const isPrimitiveMap = _isRequiredDeep(element);\n if (!isPrimitiveMap) return false;\n }\n }\n return true;\n }\n\n const isArray = Array.isArray(object);\n if (isArray) {\n for (const item of object) {\n const isPrimitiveMap = _isRequiredDeep(item);\n if (!isPrimitiveMap) return false;\n }\n return true;\n }\n\n return commons.isDefined(object);\n};\n\nconst _readonly = expandFn(\n <T extends object>(object: T) => {\n return Object.freeze(object);\n },\n {\n forceCast: <T extends object>(object: unknown) => {\n const out = Object.freeze(object);\n return _unknown<Readonly<T>>(out);\n },\n\n dynamic: <U extends object>(object: U) => {\n return Object.freeze(object);\n },\n\n is: <T>(object: T): object is Readonly<T> => {\n return Object.isFrozen(object);\n },\n\n not: <const T extends object>(object: T) => {\n return _unknown<NotReadonly<T>>(object);\n },\n\n deep: expandFn(\n <T extends object>(object: T) => {\n const out = Object.freeze(object);\n return _unknown<DeepReadonly<T>>(out);\n },\n {\n not: <T extends object>(object: T) => {\n return _unknown<DeepNotReadonly<T>>(object);\n },\n },\n ),\n },\n);\n\nconst _omitDeepIs = (\n by: Picker,\n object: object,\n ...valuesOrKeys: Primitive2[]\n) => {\n const entries = Object.entries(object);\n for (const [key, value] of entries) {\n const isObject = isPlainObject(value);\n if (isObject) {\n const isDeep = _omitDeepIs(by, value, ...valuesOrKeys);\n if (!isDeep) return false;\n } else {\n const shouldOmit =\n by === 'element'\n ? valuesOrKeys.includes(value)\n : valuesOrKeys.includes(key);\n if (shouldOmit) return false;\n }\n }\n return true;\n};\n\nconst _omitIs = (\n by: Picker,\n object: PrimitiveObjectMap,\n ...valuesOrKeys: any[]\n) => {\n const entries = Object.entries(object);\n for (const [key, value] of entries) {\n const checkKey = by === 'key' && valuesOrKeys.includes(key);\n const checkElement = by === 'element' && valuesOrKeys.includes(value);\n if (checkKey) {\n return false;\n } else if (checkElement) {\n return false;\n }\n }\n return true;\n};\n\nconst _omit = (\n by: Picker,\n object: PrimitiveObjectMap,\n ...valuesOrKeys: any[]\n) => {\n const result: any = {};\n\n const entries = Object.entries(object);\n entries.forEach(([key, value]) => {\n const checkKey = by === 'key' && !valuesOrKeys.includes(key);\n const checkElement = by === 'element' && !valuesOrKeys.includes(value);\n if (checkKey) {\n result[key] = value;\n } else if (checkElement) {\n result[key] = value;\n }\n });\n\n return result;\n};\n\nconst __omitDeep = (\n by: Picker,\n object: PrimitiveObjectMap,\n ...valuesOrKeys: any[]\n) => {\n const entries = Object.entries(object);\n const result: PrimitiveObjectMap = {};\n\n entries.forEach(([key, value]) => {\n const isObject = isPlainObject(value);\n if (isObject) {\n const picked = __omitDeep(\n by,\n value as PrimitiveObjectMap,\n ...valuesOrKeys,\n );\n\n result[key] = picked;\n } else if (by === 'key' && !valuesOrKeys.includes(key)) {\n result[key] = value;\n } else if (\n by === 'element' &&\n !!value &&\n !valuesOrKeys.includes(value)\n ) {\n result[key] = value;\n }\n });\n\n return result;\n};\n\nconst _omitDeep = (\n by: Picker,\n object: PrimitiveObjectMap,\n ...valuesOrKeys: any[]\n) => {\n const result = __omitDeep(by, object, ...valuesOrKeys);\n\n return result;\n};\n\nconst _pickDeep = (by: Picker, object: object, ...valuesOrKeys: any[]) => {\n const result: any = {};\n\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n const element = (object as any)[key];\n const isObject = isPlainObject(element);\n\n if (isObject) {\n const picked = _pickDeep(by, element, ...valuesOrKeys);\n if (Object.keys(picked).length > 0) {\n result[key] = picked;\n }\n } else {\n const shouldPick =\n by === 'element'\n ? valuesOrKeys.includes(element)\n : valuesOrKeys.includes(key);\n if (shouldPick) result[key] = element;\n }\n }\n }\n\n return result;\n};\n\nconst _pick = (by: Picker, object: object, ...keys: any[]) => {\n const result: any = {};\n const entries = Object.entries(object);\n\n entries.forEach(([key, value]) => {\n const shouldPick =\n by === 'element' ? keys.includes(value) : keys.includes(key);\n\n if (shouldPick) {\n result[key] = value;\n }\n });\n\n return result;\n};\n\nconst checkEntries = (keys: KeyTypes, object: object) => {\n const entries = Object.entries(keys);\n return entries.every(([key, type]) => {\n const check1 = key in object;\n if (!check1) return false;\n\n const value = (object as any)[key];\n if (typeof type === 'string') {\n return typeof value === type;\n } else if (typeof type === 'function') {\n return type(value);\n }\n return false;\n });\n};\n\n// #endregion\n\nexport const objects = castFn<object>()({\n trueObject: castFn<To>()({ is: isPlainObject }),\n\n type: Object,\n\n keysOf: <T extends object>(object: T): (keyof T)[] => {\n return Object.keys(object) as any;\n },\n\n values: <T extends object>(object: T): T[keyof T][] => {\n return Object.values(object) as any;\n },\n\n entries: <T extends object>(object: T): [keyof T, T[keyof T]][] => {\n return Object.entries(object) as any;\n },\n\n byKey: <T extends object, K extends keyof T>(\n object: T,\n key: K,\n ): T[K] => {\n return object[key];\n },\n\n hasKeys: expandFn(\n <K extends Keys[]>(\n object: object,\n ...keys: K\n ): object is Record<K[number], unknown> => {\n return keys.every(key => key in object);\n },\n {\n typings: <K extends KeyTypes>(\n object: object,\n keys: K,\n ): object is KeyTypesFrom<K> => {\n return checkEntries(keys, object);\n },\n\n all: expandFn(\n <K extends Keys[]>(\n object: object,\n ...keys: K\n ): object is Record<K[number], unknown> => {\n return (\n Object.keys(object).every(key => keys.includes(key)) &&\n keys.every(key => key in object)\n );\n },\n {\n typings: <K extends KeyTypes>(\n object: object,\n keys: K,\n ): object is KeyTypesFrom<K> => {\n const check0 = Object.keys(object).every(key =>\n Object.keys(keys).includes(key),\n );\n if (!check0) return false;\n\n return checkEntries(keys, object);\n },\n },\n ),\n },\n ),\n\n omit: expandFn(\n partialCall(_omit, 'key') as <\n T extends PrimitiveObjectMap,\n K extends any[],\n >(\n object: T,\n ...keys: K\n ) => Omit<T, K[number]>,\n\n {\n strict: expandFn(\n partialCall(_omit, 'key') as <\n T extends object,\n K extends (keyof T)[],\n >(\n object: T,\n ...keys: K\n ) => Omit<T, K[number]>,\n {\n is: partialCall(_omitIs, 'key') as <\n T extends object,\n K extends (keyof T)[],\n >(\n object: T,\n ...keys: K\n ) => boolean,\n },\n ),\n\n const: expandFn(\n partialCall(_omit, 'key') as <\n const T extends object,\n K extends (keyof T)[],\n >(\n object: T,\n ...keys: K\n ) => Omit<T, K[number]>,\n {\n is: partialCall(_omitIs, 'key') as <\n const T extends object,\n K extends (keyof T)[],\n >(\n object: T,\n ...keys: K\n ) => boolean,\n },\n ),\n\n is: partialCall(_omitIs, 'key') as <K extends Keys[]>(\n object: PrimitiveObjectMap,\n ...keys: K\n ) => boolean,\n\n by: expandFn(\n partialCall(_omit, 'element') as <\n T extends object,\n K extends any[],\n >(\n object: T,\n ...values: K\n ) => SubType<T, K[number]>,\n {\n is: partialCall(_omitIs, 'element'),\n },\n ),\n\n deep: expandFn(\n partialCall(_omitDeep, 'key') as <\n T extends PrimitiveObjectMap,\n K extends Keys[],\n >(\n object: T,\n ...keys: K\n ) => DeepOmit<T, K[number]>,\n {\n by: expandFn(\n partialCall(_omitDeep, 'element') as <\n T extends PrimitiveObjectMap,\n K extends Keys[],\n >(\n object: T,\n ...values: K\n ) => NotSubType<T, K[number]>,\n {\n is: partialCall(_omitDeepIs, 'element'),\n },\n ),\n is: partialCall(_omitDeepIs, 'key') as (\n object: PrimitiveObjectMap,\n ...keys: Keys[]\n ) => boolean,\n },\n ),\n },\n ),\n\n reverse: <T extends Record<Keys, Keys>>(\n object: T,\n ): { [K in keyof T as T[K]]: K } => {\n const result: any = {};\n for (const key in object) {\n result[object[key]] = key;\n }\n return result;\n },\n\n readonly: _readonly,\n\n freeze: _readonly,\n\n require: expandFn(\n <T extends object>(object: T, requires: object) => {\n return Object.assign(object, requires);\n },\n {\n strict: <T extends object, K extends AllowedNamesLow<T, undefined>>(\n object: T,\n requires: Pick<T, K>,\n ) => objects.require(object, requires),\n\n const: <\n const T extends object,\n K extends AllowedNamesLow<T, undefined>,\n >(\n object: T,\n requires: Pick<T, K>,\n ) => objects.require(object, requires),\n\n is: expandFn(\n <T extends object>(object: T): object is Required<T> => {\n const values = Object.values(object);\n return values.every(\n value => value !== undefined && value !== null,\n );\n },\n {\n deep: _isRequiredDeep,\n },\n ),\n },\n ),\n\n pick: expandFn(\n partialCall(_pick, 'key') as <T extends object, K extends any[]>(\n object: T,\n ...keys: K\n ) => Pick<T, K[number]>,\n {\n deep: expandFn(partialCall(_pickDeep, 'key'), {\n by: partialCall(_pickDeep, 'element'),\n }),\n\n by: partialCall(_pick, 'element') as <\n T extends object,\n K extends any[],\n >(\n object: T,\n ...keys: K\n ) => SubType<T, K[number]>,\n },\n ),\n\n ru: castFn<Ru>()(),\n\n ra: castFn<Ra>()(),\n\n primitive: castFn<PrimitiveObjectMap>()({\n is: (object: unknown): object is PrimitiveObjectMap => {\n if (!isPlainObject(object)) return false;\n return commons.primitiveObject.is(object);\n },\n }),\n});\n"],"names":["isPlainObject","commons","expandFn","_unknown","castFn","partialCall"],"mappings":"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"}