UNPKG

@bemedev/types

Version:

Type definitions for Bemedev projects

1 lines 8.93 kB
{"version":3,"file":"commons.cjs","sources":["../../src/functions/commons.ts"],"sourcesContent":["import { _unknown, castFn, expandFn, isPlainObject } from '~utils';\nimport type {\n Checker,\n DeepNotReadonly,\n DeepPartial,\n DeepReadonly,\n DeepRequired,\n Defaulted,\n Fn,\n Neverify,\n NonN,\n NotReadonly,\n NotUndefined,\n Primitive,\n PrimitiveObject,\n} from '../types/types';\nimport { Checker2 } from './../types/commons.types';\nimport deepClone from './deepclone';\n\n// #region Helpers\n\nconst _isPrimitive = (value: unknown): value is Primitive => {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null ||\n value === undefined\n );\n};\n\nconst _isPrimitiveObject = (object: any): object is PrimitiveObject => {\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 = _isPrimitiveObject(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 = _isPrimitiveObject(item);\n if (!isPrimitiveMap) return false;\n }\n return true;\n }\n\n return _isPrimitive(object);\n};\n\nconst _identity = <T>(value: T) => value;\n\nconst _partial = <T>(value: T) => {\n return _unknown<Partial<T>>(value);\n};\n\nconst _required = <T>(value: T) => {\n return _unknown<NotUndefined<T>>(value);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst _function = <T extends any[], R = any>(..._: [...T, R]) =>\n _identity<Fn<T, R>>;\n\n// #endregion\n\nexport const commons = expandFn(<T>(value: unknown) => value as T, {\n partial: expandFn(_partial, {\n deep: <T>(value: T) => {\n return _unknown<DeepPartial<T>>(value);\n },\n }),\n\n const: <const T>(value: T) => value,\n\n clone: <T extends PrimitiveObject>(object: T): T => {\n return deepClone(object);\n },\n\n identity: _identity,\n\n isDefined: <T>(value: T): value is NonNullable<T> => {\n return value !== undefined && value !== null;\n },\n\n isUndefined: (value: unknown): value is undefined => {\n return value === undefined;\n },\n\n isNull: (value: unknown): value is null => {\n return value === null;\n },\n\n unknown: <T>(value: unknown) => value as T,\n\n any: castFn<any>()(),\n\n neverify: <T>(value: T) => {\n return _unknown<Neverify<T>>(value);\n },\n\n required: expandFn(_required, {\n deep: <T extends object | undefined>(value: T) => {\n return _unknown<DeepRequired<T>>(value);\n },\n }),\n\n readonly: expandFn(<T>(value: T) => value as Readonly<T>, {\n deep: expandFn(\n <T extends object>(value: T) => _unknown<DeepReadonly<T>>(value),\n {\n not: <const T extends object>(value: T) =>\n _unknown<DeepNotReadonly<T>>(value),\n },\n ),\n\n not: <T extends object>(value: T) => _unknown<NotReadonly<T>>(value),\n }),\n\n primitive: castFn<Primitive>()({\n is: _isPrimitive,\n }),\n\n primitiveObject: castFn<PrimitiveObject>()({\n is: _isPrimitiveObject,\n }),\n\n function: expandFn(_function, {\n is: expandFn(\n (value: unknown): value is Fn => {\n return typeof value === 'function';\n },\n {\n strict: <T extends any[] = any[], R = any>(\n fn: Checker<Fn<T, R>>,\n ) => {\n return (value: unknown): value is Fn<T, R> =>\n typeof value === 'function' && fn(value);\n },\n },\n ),\n\n forceCast: <T extends any[], R = any>(value: unknown) => {\n return _unknown<Fn<T, R>>(value);\n },\n\n dynamic: <T extends any[], R = any>(value: Fn<T, R>) => value,\n\n checker: castFn<Checker>()({\n /**\n * Very low\n * Checks if value is a function with one argument\n * @param value value to check\n * @returns true if value is a function with one argument\n */\n is: <T = unknown>(value: unknown): value is Checker2<T> => {\n return (\n typeof value === 'function' &&\n value.length === 1 &&\n !/^\\s*class\\s+/.test(value.toString())\n );\n },\n\n byType: expandFn(<T>(checker: Checker2<T>) => checker, {\n forceCast: <T>(value: Checker<T>) => _unknown<Checker2<T>>(value),\n }),\n }),\n }),\n\n undefined: _identity(undefined),\n\n null: _identity(null),\n\n symbol: castFn<symbol>()({\n is: (value: unknown): value is symbol => typeof value === 'symbol',\n }),\n\n date: castFn<Date>()({\n is: (value: unknown): value is Date => {\n return value instanceof Date;\n },\n } as const),\n\n undefiny: <T>(value?: T) => value,\n\n defaulted: <T, const U extends NonN<T>>(value: T, defaultValue: U) => {\n const out =\n value === undefined || value === null ? defaultValue : value;\n return _unknown<Defaulted<T, U>>(out);\n },\n});\n"],"names":["isPlainObject","_unknown","expandFn","deepClone","castFn"],"mappings":"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"}