@avstantso/core 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/_global/generic.ts","../src/_global/func.ts","../src/_global/catch/_register.ts","../src/_global/atomic-objects/_register.ts","../src/_global/X.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n /**\n * @summary TypeScript helpers\n */\n export namespace TS {\n /**\n * @summary Object key types union supported by TypeScript\n */\n export type Key = string | number | symbol;\n\n /**\n * @summary Array of object keys types union supported by TypeScript\n * @see Key\n */\n export type Keys = readonly Key[];\n\n /**\n * @summary Record of key to key\n * @example\n * type k2k = CheckType<Key2Key<'a' | 'b' | 'c'>, { a: 'a', b: 'b', c: 'c' }>;\n */\n export type Key2Key<K extends Key> = { [K0 in K]: K0 };\n\n /**\n * @summary Any array.\\\n * ⚠ Please use for check or constraint, not for define\n * @example\n * type IsStruct<T extends object> = T extends Arr ? false : true;\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export type Arr = any[];\n\n /**\n * @summary Any readonly array.\\\n * ⚠ Please use for check or constraint, not for define\n * @example\n * type IsStruct<T extends object> = T extends ArrR ? false : true;\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export type ArrR = readonly any[];\n\n /**\n * @summary [O]ne or readonly [L]ist of `T`\n * @template T Value or item type\n */\n export type OL<T> = T | readonly T[];\n\n /**\n * @summary Function type\n * @template R Result type\n * @template P Params array\n */\n export type Func<R = unknown, P extends Arr = Arr> = (...params: P) => R;\n export namespace Func {\n //#region Is\n /**\n * @summary Check extends `T` to `Function`\n * @template T Tested type\n * @template IfTrue Result, if `T` extends `Function`\n * @template IfFalse Result, if NOT `T` extends `Function`\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@Is.Flat.Tests)\n */\n export type Is<T, IfTrue = true, IfFalse = false> = T extends undefined\n ? false\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n : T extends Function\n ? IfTrue\n : IfFalse;\n\n namespace Is {\n //#region @Is.Flat.Tests — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type */\n\n type n = CheckType<Is<never>, never>;\n type ud = CheckType<Is<undefined>, false>;\n type uk = CheckType<Is<unknown>, false>;\n\n type o = CheckType<Is<{ name: string }>, false>;\n type e = CheckType<Is<{}>, false>;\n type f = CheckType<Is<() => 42>, true>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type */\n //#endregion\n }\n //#endregion\n\n /**\n * @summary Function type returns `Promise`\n * @template R Result of promise type\n * @template P Params array\n */\n export type Promise<R = unknown, P extends Arr = Arr> = Func<globalThis.Promise<R>, P>;\n }\n\n /**\n * @summary Procedure type\n * @template P Params array\n */\n export type Proc<P extends Arr = Arr> = (...params: P) => void;\n export namespace Proc {\n /**\n * @summary Procedure type returns `Promise<void>`\n * @template P Params array\n */\n export type Promise<P extends Arr = Arr> = Func.Promise<void, P>;\n }\n\n /**\n * @summary Function type\n * @template I Instance type\n * @template P Params array\n */\n export type Class<I = unknown, P extends Arr = Arr> = new (...params: P) => I;\n\n\n //#region HasString\n /**\n * @summary `U` union includes `string`, not a set of literals only or other types\n * @template U Tested type union\n * @template IfTrue Result, if `T` includes `string`\n * @template IfFalse Result, if `T` NOT includes `string`\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@HasString)\n */\n export type HasString<U, IfTrue = true, IfFalse = false> =\n 'some string unused elsewhere: fd3d7784-363b-415f-817a-8575171d736f' extends U\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n ? {} extends U\n ? IfFalse\n : IfTrue\n : IfFalse;\n //#endregion\n\n namespace HasString {\n //#region @HasString — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type */\n\n type n = CheckType<HasString<never>, false>;\n type u = CheckType<HasString<undefined>, false>;\n type uk = CheckType<HasString<unknown>, false>;\n type a = CheckType<HasString<any>, false>;\n\n type r1 = CheckType<HasString<string>, true>;\n type r2 = CheckType<HasString<1 | 2 | 3>, false>;\n type r3 = CheckType<HasString<'A' | 'B' | 'C'>, false>;\n type r4 = CheckType<HasString<'A' | 'B' | 'C' | string>, true>;\n type r5 = CheckType<HasString<''>, false>;\n type r6 = CheckType<HasString<{}>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type */\n //#endregion\n }\n }\n\n /**\n * Global namespace registration types\n */\n export namespace _CodeReg {\n /**\n * Global namespace administration interface\n */\n export interface Administration {\n /**\n * @summary Recursively freeze all internals.\\\n * ⚠ Must called from applications index files after all extensions by libraries\\\n * Unavailable after call `freeze` method\n */\n freeze?(): void;\n\n /**\n * @summary `symbol` for custom freeze\n * @see freeze\n */\n symbolFreeze: symbol;\n\n /**\n * @summary External state for debugging\\\n * Unavailable after call `freeze` method\n * @description Used in tests, for separate initilizing code and test code\n * @example\n * // in debugging _global file\n * namespace AVStantso {\n * avstantso._reg.foo(() => () => {\n * if (avstantso.debugState) console.log(`foo called!`);\n *\n * return 123;\n * });\n *\n * avstantso.foo(); // don`t write to console\n * }\n *\n * // in test file\n * avstantso.debugState = true;\n *\n * avstantso.foo(); // write to console\n */\n debugState: unknown;\n }\n\n namespace Initializer {\n export type Func<TCode extends Administration, T> = (code: Partial<TCode>) => T;\n }\n\n /**\n * @summary Registration method\n * @template TCode `interface` of full executable code of this global namespace\n * @param initializer Initializer for field `TField`\n */\n export type Method<\n TCode extends Administration,\n T extends object,\n TField extends keyof T,\n F extends T[TField] = T[TField],\n P extends Partial<F> = Partial<F>\n > =\n // ⚠ TS.Func.Is not works in this place\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n (initializer: F extends Function\n ? Initializer.Func<TCode, F>\n : P | Initializer.Func<TCode, P>\n ) => F;\n\n /**\n * @summary Registration recursion\n * @template TCode `interface` of full executable code of this global namespace\n */\n export type Recursive<TCode extends Administration, T extends object = TCode> =\n {\n [K in keyof T]: T[K] extends object\n ? T[K] extends TS.Arr[]\n ? Method<TCode, T, K>\n : Recursive<TCode, T[K]> & Method<TCode, T, K>\n : Method<TCode, T, K>;\n };\n\n /**\n * @summary Registration result entity `TCode & { _reg }`\n * @template TCode `interface` of full executable code of this global namespace\n */\n export type Entity<TCode extends Administration = Administration> = TCode & {\n /**\n * @summary Access to registration proxy structure.\\\n * Unavailable after call `freeze` method\n */\n _reg?: Recursive<TCode>;\n };\n\n /**\n * @summary Register global namespace and singleton, like it's made `AVStantso/avstantso`\n * @template TGlobalName Global name to register in `globalThis`\n * - TGlobalName — namespace\n * - Lowercase(TGlobalName) — singleton\n * @template TCode `interface` of full executable code of this global namespace\n * @param namespaceName Global name to register in `globalThis`\n * @param statics Any static part of implementation\n * @returns singleton.\n * Lowercase singleton uses for avoid errors in `Jest`\n *\n * ⚠ In all cases usage constants and functions from namespace (UPPERCASE)\\\n * this must be through singleton global variable\n *\n * ⚠ All exported namespace (UPPERCASE) constants and functions\\\n * must be expressed through (lowercase)` global variable\n */\n export type Factory = {\n <\n TCode extends Administration,\n TGlobalName extends string\n >(\n namespaceName: TGlobalName,\n statics?: Partial<TCode>\n ): TGlobalName extends Lowercase<TGlobalName>\n ? '`TGlobalName` must have one or more capital letters'\n : Entity<TCode>;\n };\n }\n\n /**\n * @summary Interface for access to `AVStantso` namespace code through `avstantso` global property\n */\n export interface Code extends AVStantso._CodeReg.Administration {\n /**\n * @see AVStantso._CodeReg.Factory\n */\n RegisterGlobalNamespace: AVStantso._CodeReg.Factory;\n }\n}\n\n/**\n * @summary Access to `AVStantso` namespace code\n * @description Lowercase uses in `avstantso` for avoid errors in `Jest`\n *\n * ⚠ In all cases usage constants and functions from namespace `AVStantso`\\\n * this must be through `avstantso` global variable\n *\n * ⚠ All exported namespace `AVStantso` constants and functions\\\n * must be expressed through `avstantso` global variable\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst avstantso = (() => {\n const RegisterGlobalNamespace = ((\n namespaceName: string,\n statics?: object\n ) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type Level = object & any;\n type Field = keyof Level;\n\n const structs = ['object', 'function'];\n const symbolFreeze = Symbol('freeze');\n const singleton = { ...statics };\n\n /**\n * @summary Register `field`. ⚠ Override not supported now\n * @this this Hierarchy level\n * @param field Field for registration\n * @param initializer Initializaton value or callback\n * @returns Current value of `field`\n */\n function regField(this: Level, field: Field, initializer: unknown) {\n if (field in this) return this[field]; // Override not supported now\n\n const value = 'function' === typeof initializer\n ? initializer(singleton)\n : initializer;\n\n Object.defineProperty(this, field, { value, writable: false });\n\n return value;\n }\n\n /**\n * @summary `_reg` factory for one level\n * @param level Hierarchy level\n * @returns Registration proxy\n */\n function RegLevel(level: Level): unknown {\n return new Proxy(regField.bind(level), {\n get(target, p) {\n return p in target\n ? Reflect.get(target, p)\n : p in level\n ? RegLevel(level[p])\n : regField.bind(level, p);\n }\n });\n }\n\n\n function freeze(this: AVStantso._CodeReg.Entity) {\n delete this._reg;\n delete this.debugState;\n delete this.freeze;\n\n const walked = new Set();\n\n const hasCustomFreeze = Symbol.Has(symbolFreeze, () => {});\n\n function deepFreeze(obj: unknown, path: string[] = []) {\n try {\n const ti = structs.indexOf(typeof obj);\n\n if (!obj || ti < 0 || walked.has(obj)) return obj;\n\n walked.add(obj);\n\n if (hasCustomFreeze(obj))\n return obj[symbolFreeze].call(obj);\n\n const entries = Object.entries(Object.getOwnPropertyDescriptors(obj));\n\n for (const [key, dsc] of entries)\n if (ti\n ? !(key in deepFreeze) // Except standard function properties\n : !Array.isArray(dsc.value)\n )\n deepFreeze(dsc.value, [...path, key]);\n\n return Object.freeze(obj);\n } catch (e) {\n throw ('path' in e) ? e : Object.assign(e, { path });\n }\n };\n\n deepFreeze(this);\n }\n\n Object.definePropertiesOnce(singleton, {\n _reg: {\n value: RegLevel(singleton),\n configurable: true\n },\n\n symbolFreeze: {\n value: symbolFreeze,\n writable: false\n },\n\n freeze: {\n value: freeze,\n configurable: true\n },\n\n debugState: {\n value: undefined, writable: true, configurable: true\n }\n });\n\n Object.definePropertyOnce(globalThis, namespaceName.toLowerCase(), {\n value: singleton,\n writable: false,\n configurable: false\n });\n\n Object.definePropertyOnce(globalThis, namespaceName, {\n value: singleton,\n writable: false,\n configurable: false\n });\n\n return singleton;\n }) as AVStantso._CodeReg.Factory;\n\n const avs_singleton = RegisterGlobalNamespace('AVStantso');\n Object.definePropertiesOnce(avs_singleton, {\n RegisterGlobalNamespace: {\n value: RegisterGlobalNamespace,\n writable: false,\n configurable: false\n }\n });\n\n return avs_singleton as AVStantso._CodeReg.Entity<AVStantso.Code>;\n})();\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export namespace Code {\n /**\n * @summary Generics utils\n */\n export namespace Generic {\n /**\n * @summary Generics validator\n * @template B Base type\n */\n export interface Validator<B = unknown> {\n /**\n * @summary Type validation function\n * @template T Type for validation\n */\n <T extends B>(value: T): T;\n\n /**\n * @summary Type validation with `Object.freeze` function\n * @template T Type for validation\n */\n withFreeze<T extends B>(value: T): Readonly<T>;\n }\n\n /**\n * @summary Cast to avoid generics problem.\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `any` or `TTo`\n */\n export interface Cast {\n /**\n * @summary Cast to avoid generics problem\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `any`\n */\n <TFrom = any>(from: TFrom): any;\n\n /**\n * @summary Cast to avoid generics problem\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `TTo`\n */\n To<TTo = any, TFrom = any>(from: TFrom): TTo;\n }\n }\n\n export interface Generic {\n /**\n * @summary Generics validator factory\n * @template B Base type\n */\n Validator<B = unknown>(): Generic.Validator<B>;\n\n /**\n * @summary Type validation function\n * @template T Type for validation\n */\n validate: Generic.Validator;\n\n /**\n * @summary Cast to avoid generics problem.\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `any` or `TTo`\n */\n Cast: Generic.Cast;\n }\n }\n\n export interface Code {\n /**\n * @summary Generics utils\n */\n Generic: Code.Generic;\n }\n\n export const Generic: Code.Generic = avstantso._reg.Generic(() => {\n function Validator<B = unknown>() {\n function validate<T extends B>(value: T): T {\n return value;\n };\n\n function validateWithFreez<T extends B>(value: T): T {\n return Object.freeze(value);\n };\n\n return Object.assign(\n validate,\n { withFreeze: validateWithFreez }\n );\n }\n\n function Cast<TFrom = any>(from: TFrom): any {\n return from as any;\n }\n\n return {\n Validator,\n validate: Validator(),\n Cast: Object.assign(\n Cast,\n { To: Cast }\n )\n };\n });\n}\n","namespace AVStantso {\n const fpd = Object.assign(\n {},\n Object.getOwnPropertyDescriptors(Function.prototype),\n Object.getOwnPropertyDescriptors(function () {})\n );\n\n export namespace TS.Func {\n /**\n * @summary `getOwnPropertyDescriptors` of basic function type\n */\n export type PropertyDescriptors = {\n [K in keyof typeof fpd as TS.HasString<K, never, K>]: (typeof fpd)[K]\n };\n\n /**\n * @summary You must exclude this keys on add new props of function\n * @example\n * type MyKeys = 'id' | 'value' | 'name';\n *\n * // ❌\n * type Is_$Bad: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in MyKeys]: (candidate: unknown) => candidate is K;\n * }\n *\n * // ✅\n * type Is_$Good: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in TS.Func.Restrict<MyKeys>]: (candidate: unknown) => candidate is K;\n * }\n */\n export type RestrictionsForExt = keyof PropertyDescriptors;\n\n /**\n * @summary Restricted keys exclude shortcut\n * @example\n * type MyKeys = 'id' | 'value' | 'name';\n *\n * // ❌\n * type Is_$Bad: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in MyKeys]: (candidate: unknown) => candidate is K;\n * }\n *\n * // ✅\n * type Is_$Good: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in TS.Func.Restrict<MyKeys>]: (candidate: unknown) => candidate is K;\n * }\n */\n export type Restrict<T extends Key> = Exclude<T, RestrictionsForExt>;\n }\n\n export namespace Code {\n /**\n * @summary Functions utilities\n */\n export interface Func {\n /**\n * @summary `getOwnPropertyDescriptors` of basic function\n */\n OwnPropertyDescriptors: AVStantso.TS.Func.PropertyDescriptors;\n\n /**\n * @summary Check can use prop for function extends\n * @param propName Ext prop name\n * @returns `true` — can add to function, else `false`\n * @example\n * const Types = ['insert', 'update', 'name'] as const;\n * type Type = typeof Types[number];\n * type Data<T extends Type> =\n * | (T extends 'insert' ? {\n * type: 'insert',\n * value: 'xxx'\n * } : never)\n * | (T extends 'update' ? {\n * type: 'update',\n * value: 15\n * } : never)\n * | (T extends 'name' ? {\n * type: 'name',\n * id: string;\n * value: string;\n * }: never);\n *\n * function _isTypeOfData<T extends Type>(type: T, data: Data<Type>): data is Data<T> {\n * return data.type === type;\n * }\n *\n * const isTypeOfData = Object.assign(\n * _isTypeOfData,\n * Object.fromEntries(\n * Types\n * // 👇\n * .filter(Func.isPropAllowed)\n * .map((type) => [\n * type,\n * _isTypeOfData.bind(null, type)\n * ])\n * )\n * )\n * @EXAMPLE(@Code.Func.isPropAllowed)\n */\n isPropAllowed: {\n (propName: TS.Key): boolean;\n\n /**\n * @summary Check can NOT use prop for function extends\n * @param propName Ext prop name\n * @returns `true` — can't add to function, else `false`\n * @EXAMPLE(@Code.Func.isPropAllowed.Not)\n */\n Not: (propName: TS.Key) => boolean\n }\n\n /**\n * @summary Function has extended properties\n * @param f Function being tested\n * @returns 'true' if has extended properties, else 'false'\n * @example\n * function a() {\n * return 14;\n * }\n * expect(isExt(a)).toBe(false);\n *\n * const aa = () => 'xyz';\n * expect(isExt(aa)).toBe(false);\n *\n * const b = Object.assign(\n * function b() {\n * return 14;\n * },\n * { x: 19 }\n * );\n * expect(isExt(b)).toBe(true);\n *\n * const bb = Object.assign(\n * () => 14,\n * { x: 19 }\n * );\n * expect(isExt(bb)).toBe(true);\n *\n * function c() {\n * return 'abc';\n * }\n * Object.defineProperties(c, { y: { value: 34 } });\n * expect(isExt(c)).toBe(true);\n *\n * const cc = () => 'abc';\n * Object.defineProperties(cc, { y: { value: 34 } });\n * expect(isExt(cc)).toBe(true);\n *\n * function d() {\n * return 'abcd';\n * }\n * d.z = 16;\n * expect(isExt(d)).toBe(true);\n *\n * const dd = () => 'abcd';\n * dd.z = 16;\n * expect(isExt(dd)).toBe(true);\n * @EXAMPLE(@Code.Func.isExt)\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n isExt(f: Function): boolean;\n\n /**\n * @summary `DEV` dynamic function named as `name`. No affect in `PROD`.\n * @param name Name\n * @param func Implementation\n * @returns In `DEV` — Named function; In `PROD` — `func`\n */\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n Dynamic<N extends string, F extends Function>(name: N, func: F): F;\n }\n }\n\n export interface Code {\n /**\n * @summary Functions utilities\n */\n Func: Code.Func;\n }\n\n export const Func = avstantso._reg.Func( {\n OwnPropertyDescriptors: fpd,\n isPropAllowed: Object.assign(\n function isPropAllowed(propName: string): boolean {\n return !(propName in fpd);\n },\n {\n /**\n * @summary Check can NOT use prop for function extends\n */\n Not: function isPropNotAllowed(propName: string): boolean {\n return propName in fpd;\n }\n }\n ),\n isExt(f: unknown) {\n for (const k in Object.getOwnPropertyDescriptors(f))\n if (!(k in fpd))\n return true;\n\n return false;\n },\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n Dynamic<N extends string, F extends Function>(\n name: N,\n func: F\n ): F {\n return !process.env.IS_DEV\n ? func\n : new Function(\n 'func',\n `return function ${name}(...params){ return func(...params); };`\n )(func);\n }\n } as Code.Func);\n}\n","namespace AVStantso {\n export namespace Catch {\n /**\n * @summary Catch handler\n * @param error Error\n */\n export type Handler<T = unknown> = (error: T) => unknown;\n\n export namespace Core {\n /**\n * @summary `Core` catch handler version\n * @param error Error\n */\n export type Handler = Catch.Handler;\n }\n }\n\n /**\n * @summary Common catch method for errors\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Catch extends Catch.Core.Handler { }\n\n export namespace Code {\n export namespace Catch {\n /**\n * @summary Catch filter handler\n * @param error Error\n */\n export type Filter<T = unknown> = (error: T) => boolean;\n }\n\n /**\n * @summary Catch helpers utility\n */\n export interface Catch extends AVStantso.Catch {\n _addFilter(...filters: [Catch.Filter, ...Catch.Filter[]]): void;\n _default: AVStantso.Catch.Handler;\n }\n }\n\n export interface Code {\n /**\n * @summary Catch helpers utility\n */\n Catch: Code.Catch;\n }\n\n export const Catch = avstantso._reg.Catch(() => {\n type Filter = Code.Catch.Filter;\n\n const catchFilters: Filter[] = [];\n\n function DoCatch(error: unknown): unknown {\n return catchFilters.length && catchFilters.some((f) => f(error))\n ? undefined\n : DoCatch._default(error);\n }\n\n DoCatch._addFilter = (...filters: [Filter, ...Filter[]]): void => {\n catchFilters.push(...filters);\n };\n\n DoCatch._default = (error: unknown) => {\n if (error instanceof Error)\n throw error;\n else\n throw new Error(`${error}`);\n };\n\n return DoCatch;\n });\n}\n","namespace AVStantso {\n /**\n * @summary Interface registry of atomic objects types\n */\n export namespace AtomicObjects {\n /**\n * @summary Atomic object class options\n */\n export interface Options<TClass extends TS.Class = TS.Class> {\n empty?(): InstanceType<TClass>;\n\n /**\n * @summary Clone rule for atomic object\n */\n clone(instance: InstanceType<TClass>): InstanceType<TClass>\n }\n\n /**\n * @summary Atomic object class descriptor\n */\n export type Descriptor<TClass extends TS.Class = TS.Class> =\n { Class: TClass } & Options<TClass>;\n }\n\n export interface AtomicObjects {\n Date: Date;\n\n /**\n * @requires `'buffer'` library required for browser and register manually.\\\n * For Node-js: automatic register builtin class `Buffer`\n */\n Buffer: Buffer;\n }\n\n export namespace Code {\n /**\n * @summary Atomic objects registry management\n */\n export interface AtomicObjects {\n /**\n * @summary Readonly map of registered classes of atomic objects and class options\n */\n classes: ReadonlyMap<TS.Class, AVStantso.AtomicObjects.Options>;\n\n /**\n * @summary Class registration of atomic object and add options\n * @param atomicObjectClass Class of atomic object\n * @param options Atomic object class options\n */\n register<TClass extends TS.Class>(\n atomicObjectClass: TClass,\n options : AVStantso.AtomicObjects.Options<TClass>\n ): void;\n\n /**\n * @summary Check object is atomic. 'false' for non-object values\n * @param testObject Tested object\n * @returns 'true' is object is atomic, else `false`\n */\n is(testObject: object | unknown): boolean;\n\n /**\n * @summary Get atomic object descriptor or `undefined`, if not class name, object not atomic or non-object value\n * @param testObjectOrClassName Tested object or class name\n * @returns 'AtomicObjects.AVStantso.AtomicObjects.Descriptor' if object is atomic or find class name, else `undefined`\n * @see AVStantso.AtomicObjects.Descriptor\n */\n descriptor: {\n /**\n * @summary Get atomic object descriptor or `undefined`, if object not atomic or non-object value\n * @param testObject Tested object\n * @returns 'AtomicObjects.AVStantso.AtomicObjects.Descriptor' if object is atomic, else `undefined`\n * @see AVStantso.AtomicObjects.Descriptor\n */\n (testObject: object | unknown): AVStantso.AtomicObjects.Descriptor;\n\n /**\n * @summary Get atomic object descriptor or `undefined`, if class name not found\n * @param className Class name\n * @returns 'AtomicObjects.AVStantso.AtomicObjects.Descriptor' if find class name, else `undefined`\n * @see AVStantso.AtomicObjects.Descriptor\n */\n (className: string): AVStantso.AtomicObjects.Descriptor;\n }\n }\n }\n\n export interface Code {\n /**\n * @summary Atomic objects registry management\n */\n AtomicObjects: Code.AtomicObjects;\n }\n\n export const AtomicObjects = avstantso._reg.AtomicObjects(() => {\n const classes = new Map<TS.Class, AVStantso.AtomicObjects.Options>();\n\n function register<TClass extends TS.Class>(\n atomicObjectClass: TClass,\n options : AVStantso.AtomicObjects.Options<TClass>\n ) {\n classes.set(atomicObjectClass, options);\n }\n\n function is(testObject: object): boolean {\n if ('object' === typeof testObject)\n for (const Class of classes.keys())\n if (testObject instanceof Class) return true;\n\n return false;\n }\n\n function descriptor(param: object | string): AVStantso.AtomicObjects.Descriptor {\n const i = ['object', 'string'].indexOf(typeof param);\n\n if (i >= 0)\n for (const [Class, options] of classes.entries())\n if (i ? param === Class.name : param instanceof Class)\n return { Class, ...options };\n }\n\n register(Date, {\n empty: () => new Date(0),\n clone: (instance) => new Date(instance)\n });\n\n // Only if Buffer is available (Node.js or browser polyfill)\n if (globalThis.Buffer) register(Buffer, {\n empty: () => Buffer.from(''),\n clone: (instance) => Buffer.from(instance)\n });\n\n return { classes, register, is, descriptor } as AVStantso.Code.AtomicObjects;\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export interface Code {\n /**\n * @summary Not `X`, but an oblique cross `❌`. It can be fed to `Promise.then` / `Promise.catch` instead of an empty value\n * @returns `undefined`\n */\n X<T = any>(): T;\n }\n\n /**\n * @summary Not `X`, but an oblique cross `❌`. It can be fed to `Promise.then` / `Promise.catch` instead of an empty value\n * @returns `undefined`\n */\n export const X = avstantso._reg.X(() => function X(){} as Code['X']);\n}\n","import Func = AVStantso.Func;\nimport X = AVStantso.X;\nimport Generic = AVStantso.Generic;\nexport { Func, X, Generic };\n"],"names":["AVStantso"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/_global/_register.ts","../src/_global/generic.ts","../src/_global/func.ts","../src/_global/catch/_register.ts","../src/_global/atomic-objects/_register.ts","../src/_global/X.ts","../src/_global/low-level.ts","../src/_global/deep-ops.ts","../src/export.ts"],"sourcesContent":["namespace AVStantso {\n /**\n * @summary TypeScript helpers\n */\n export namespace TS {\n /**\n * @summary Object key types union supported by TypeScript\n */\n export type Key = string | number | symbol;\n\n /**\n * @summary Array of object keys types union supported by TypeScript\n * @see Key\n */\n export type Keys = readonly Key[];\n\n /**\n * @summary Record of key to key\n * @example\n * type k2k = CheckType<Key2Key<'a' | 'b' | 'c'>, { a: 'a', b: 'b', c: 'c' }>;\n */\n export type Key2Key<K extends Key> = { [K0 in K]: K0 };\n\n /**\n * @summary Any array.\\\n * ⚠ Please use for check or constraint, not for define\n * @example\n * type IsStruct<T extends object> = T extends Arr ? false : true;\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export type Arr = any[];\n\n /**\n * @summary Any readonly array.\\\n * ⚠ Please use for check or constraint, not for define\n * @example\n * type IsStruct<T extends object> = T extends ArrR ? false : true;\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export type ArrR = readonly any[];\n\n /**\n * @summary [O]ne or readonly [L]ist of `T`\n * @template T Value or item type\n */\n export type OL<T> = T | readonly T[];\n\n /**\n * @summary Function type\n * @template R Result type\n * @template P Params array\n */\n export type Func<R = unknown, P extends Arr = Arr> = (...params: P) => R;\n export namespace Func {\n //#region Is\n /**\n * @summary Check extends `T` to `Function`\n * @template T Tested type\n * @template IfTrue Result, if `T` extends `Function`\n * @template IfFalse Result, if NOT `T` extends `Function`\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@Is.Flat.Tests)\n */\n export type Is<T, IfTrue = true, IfFalse = false> = T extends undefined\n ? false\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n : T extends Function\n ? IfTrue\n : IfFalse;\n\n namespace Is {\n //#region @Is.Flat.Tests — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type */\n\n type n = CheckType<Is<never>, never>;\n type ud = CheckType<Is<undefined>, false>;\n type uk = CheckType<Is<unknown>, false>;\n\n type o = CheckType<Is<{ name: string }>, false>;\n type e = CheckType<Is<{}>, false>;\n type f = CheckType<Is<() => 42>, true>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-object-type */\n //#endregion\n }\n //#endregion\n\n /**\n * @summary Function type returns `Promise`\n * @template R Result of promise type\n * @template P Params array\n */\n export type Promise<R = unknown, P extends Arr = Arr> = Func<globalThis.Promise<R>, P>;\n }\n\n /**\n * @summary Procedure type\n * @template P Params array\n */\n export type Proc<P extends Arr = Arr> = (...params: P) => void;\n export namespace Proc {\n /**\n * @summary Procedure type returns `Promise<void>`\n * @template P Params array\n */\n export type Promise<P extends Arr = Arr> = Func.Promise<void, P>;\n }\n\n /**\n * @summary Function type\n * @template I Instance type\n * @template P Params array\n */\n export type Class<I = unknown, P extends Arr = Arr> = new (...params: P) => I;\n\n\n //#region HasString\n /**\n * @summary `U` union includes `string`, not a set of literals only or other types\n * @template U Tested type union\n * @template IfTrue Result, if `T` includes `string`\n * @template IfFalse Result, if `T` NOT includes `string`\n * @returns `IfFalse` or `IfTrue` param\n * @EXAMPLE(@HasString)\n */\n export type HasString<U, IfTrue = true, IfFalse = false> =\n 'some string unused elsewhere: fd3d7784-363b-415f-817a-8575171d736f' extends U\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n ? {} extends U\n ? IfFalse\n : IfTrue\n : IfFalse;\n //#endregion\n\n namespace HasString {\n //#region @HasString — Tests:\n /* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type */\n\n type n = CheckType<HasString<never>, false>;\n type u = CheckType<HasString<undefined>, false>;\n type uk = CheckType<HasString<unknown>, false>;\n type a = CheckType<HasString<any>, false>;\n\n type r1 = CheckType<HasString<string>, true>;\n type r2 = CheckType<HasString<1 | 2 | 3>, false>;\n type r3 = CheckType<HasString<'A' | 'B' | 'C'>, false>;\n type r4 = CheckType<HasString<'A' | 'B' | 'C' | string>, true>;\n type r5 = CheckType<HasString<''>, false>;\n type r6 = CheckType<HasString<{}>, false>;\n\n /* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-empty-object-type */\n //#endregion\n }\n }\n\n /**\n * Global namespace registration types\n */\n export namespace _CodeReg {\n /**\n * Global namespace administration interface\n */\n export interface Administration {\n /**\n * @summary Recursively freeze all internals.\\\n * ⚠ Must called from applications index files after all extensions by libraries\\\n * Unavailable after call `freeze` method\n */\n freeze?(): void;\n\n /**\n * @summary `symbol` for custom freeze.\\\n * Same symbol of {@link Code.DeepOps.Freeze.symbol}\n * @see freeze\n */\n symbolFreeze: symbol;\n\n /**\n * @summary External state for debugging\\\n * Unavailable after call `freeze` method\n * @description Used in tests, for separate initilizing code and test code\n * @example\n * // in debugging _global file\n * namespace AVStantso {\n * avstantso._reg.foo(() => () => {\n * if (avstantso.debugState) console.log(`foo called!`);\n *\n * return 123;\n * });\n *\n * avstantso.foo(); // don`t write to console\n * }\n *\n * // in test file\n * avstantso.debugState = true;\n *\n * avstantso.foo(); // write to console\n */\n debugState: unknown;\n }\n\n namespace Initializer {\n export type Func<TCode extends Administration, T> = (code: Partial<TCode>) => T;\n }\n\n /**\n * @summary Registration method\n * @template TCode `interface` of full executable code of this global namespace\n * @param initializer Initializer for field `TField`\n */\n export type Method<\n TCode extends Administration,\n T extends object,\n TField extends keyof T,\n F extends T[TField] = T[TField],\n P extends Partial<F> = Partial<F>\n > =\n // ⚠ TS.Func.Is not works in this place\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n (initializer: F extends Function\n ? Initializer.Func<TCode, F>\n : P | Initializer.Func<TCode, P>\n ) => F;\n\n /**\n * @summary Registration recursion\n * @template TCode `interface` of full executable code of this global namespace\n */\n export type Recursive<TCode extends Administration, T extends object = TCode> =\n {\n [K in keyof T]: T[K] extends object\n ? T[K] extends TS.Arr[]\n ? Method<TCode, T, K>\n : Recursive<TCode, T[K]> & Method<TCode, T, K>\n : Method<TCode, T, K>;\n };\n\n /**\n * @summary Registration result entity `TCode & { _reg }`\n * @template TCode `interface` of full executable code of this global namespace\n */\n export type Entity<TCode extends Administration = Administration> = TCode & {\n /**\n * @summary Access to registration proxy structure.\\\n * Unavailable after call `freeze` method\n */\n _reg?: Recursive<TCode>;\n };\n\n /**\n * @summary Register global namespace and singleton, like it's made `AVStantso/avstantso`\n * @template TGlobalName Global name to register in `globalThis`\n * - TGlobalName — namespace\n * - Lowercase(TGlobalName) — singleton\n * @template TCode `interface` of full executable code of this global namespace\n * @param namespaceName Global name to register in `globalThis`\n * @param statics Any static part of implementation\n * @returns singleton.\n * Lowercase singleton uses for avoid errors in `Jest`\n *\n * ⚠ In all cases usage constants and functions from namespace (UPPERCASE)\\\n * this must be through singleton global variable\n *\n * ⚠ All exported namespace (UPPERCASE) constants and functions\\\n * must be expressed through (lowercase)` global variable\n */\n export type Factory = {\n <\n TCode extends Administration,\n TGlobalName extends string\n >(\n namespaceName: TGlobalName,\n statics?: Partial<TCode>\n ): TGlobalName extends Lowercase<TGlobalName>\n ? '`TGlobalName` must have one or more capital letters'\n : Entity<TCode>;\n };\n }\n\n /**\n * @summary Interface for access to `AVStantso` namespace code through `avstantso` global property\n */\n export interface Code extends AVStantso._CodeReg.Administration {\n /**\n * @see AVStantso._CodeReg.Factory\n */\n RegisterGlobalNamespace: AVStantso._CodeReg.Factory;\n }\n}\n\n/**\n * @summary Access to `AVStantso` namespace code\n * @description Lowercase uses in `avstantso` for avoid errors in `Jest`\n *\n * ⚠ In all cases usage constants and functions from namespace `AVStantso`\\\n * this must be through `avstantso` global variable\n *\n * ⚠ All exported namespace `AVStantso` constants and functions\\\n * must be expressed through `avstantso` global variable\n */\n\nconst avstantso = (() => {\n const symbolFreeze = Symbol('freeze');\n\n const RegisterGlobalNamespace = ((\n namespaceName: string,\n statics?: object\n ) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type Level = object & any;\n type Field = keyof Level;\n\n const singleton = { ...statics };\n\n /**\n * @summary Register `field`. ⚠ Override not supported now\n * @this this Hierarchy level\n * @param field Field for registration\n * @param initializer Initializaton value or callback\n * @returns Current value of `field`\n */\n function regField(this: Level, field: Field, initializer: unknown) {\n if (field in this) return this[field]; // Override not supported now\n\n const value = 'function' === typeof initializer\n ? initializer(singleton)\n : initializer;\n\n Object.defineProperty(this, field, { value, writable: false });\n\n return value;\n }\n\n /**\n * @summary `_reg` factory for one level\n * @param level Hierarchy level\n * @returns Registration proxy\n */\n function RegLevel(level: Level): unknown {\n return new Proxy(regField.bind(level), {\n get(target, p) {\n return p in target\n ? Reflect.get(target, p)\n : p in level && Object.isExtensible(level[p])\n ? RegLevel(level[p])\n : regField.bind(level, p);\n }\n });\n }\n\n function freeze(this: AVStantso._CodeReg.Entity) {\n delete this._reg;\n delete this.debugState;\n delete this.freeze;\n\n avstantso.DeepOps.freeze(this, { ownProps: true });\n }\n\n Object.definePropertiesOnce(singleton, {\n _reg: {\n value: RegLevel(singleton),\n configurable: true\n },\n\n symbolFreeze: {\n value: symbolFreeze,\n writable: false\n },\n\n freeze: {\n value: freeze,\n configurable: true\n },\n\n debugState: {\n value: undefined, writable: true, configurable: true\n }\n });\n\n Object.definePropertyOnce(globalThis, namespaceName.toLowerCase(), {\n value: singleton,\n writable: false,\n configurable: false\n });\n\n Object.definePropertyOnce(globalThis, namespaceName, {\n value: singleton,\n writable: false,\n configurable: false\n });\n\n return singleton;\n }) as AVStantso._CodeReg.Factory;\n\n const avs_singleton = RegisterGlobalNamespace('AVStantso');\n Object.definePropertiesOnce(avs_singleton, {\n RegisterGlobalNamespace: {\n value: RegisterGlobalNamespace,\n writable: false,\n configurable: false\n }\n });\n\n return avs_singleton as AVStantso._CodeReg.Entity<AVStantso.Code>;\n})();\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export namespace Code {\n /**\n * @summary Generics utils\n */\n export namespace Generic {\n /**\n * @summary Generics validator\n * @template B Base type\n */\n export interface Validator<B = unknown> {\n /**\n * @summary Type validation function\n * @template T Type for validation\n */\n <T extends B>(value: T): T;\n\n /**\n * @summary Type validation with `Object.freeze` function\n * @template T Type for validation\n */\n withFreeze<T extends B>(value: T): Readonly<T>;\n }\n\n /**\n * @summary Cast to avoid generics problem.\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `any` or `TTo`\n */\n export interface Cast {\n /**\n * @summary Cast to avoid generics problem\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `any`\n */\n <TFrom = any>(from: TFrom): any;\n\n /**\n * @summary Cast to avoid generics problem\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `TTo`\n */\n To<TTo = any, TFrom = any>(from: TFrom): TTo;\n }\n }\n\n export interface Generic {\n /**\n * @summary Generics validator factory\n * @template B Base type\n */\n Validator<B = unknown>(): Generic.Validator<B>;\n\n /**\n * @summary Type validation function\n * @template T Type for validation\n */\n validate: Generic.Validator;\n\n /**\n * @summary Cast to avoid generics problem.\\\n * ⛔ Use with caution, risk of bad code\n * @param from as TFrom\n * @returns `from` as `any` or `TTo`\n */\n Cast: Generic.Cast;\n }\n }\n\n export interface Code {\n /**\n * @summary Generics utils\n */\n Generic: Code.Generic;\n }\n\n export const Generic: Code.Generic = avstantso._reg.Generic(({ symbolFreeze }) => {\n function Validator<B = unknown>() {\n function validate<T extends B>(value: T): T {\n return value;\n };\n\n function validateWithFreez<T extends B>(value: T): T {\n return Object.freeze(value);\n };\n\n return Object.assign(\n validate,\n { withFreeze: validateWithFreez }\n );\n }\n\n function Cast<TFrom = any>(from: TFrom): any {\n return from as any;\n }\n\n const Generic = {\n Validator,\n validate: Validator(),\n Cast: Object.assign(\n Cast,\n { To: Cast }\n ),\n [symbolFreeze]() {\n Object.freeze(Generic);\n }\n };\n\n return Generic;\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-unsafe-function-type */\n\n const fpd = Object.assign(\n {},\n Object.getOwnPropertyDescriptors(Function.prototype),\n Object.getOwnPropertyDescriptors(function () {})\n );\n\n const runtimeFuncTypes = [\n 'plain',\n 'async', // adds if generators/async needed\n 'generator', // can't be `new`-called — distinct from plain\n 'class',\n 'arrow',\n 'bound'\n ] as const;\n\n const generatorClasses = [\n 'GeneratorFunction',\n 'AsyncGeneratorFunction'\n ] as const;\n\n export namespace TS.Func {\n /**\n * Runtime function type\n */\n export type Type = typeof runtimeFuncTypes[number];\n\n /**\n * @summary `getOwnPropertyDescriptors` of basic function type\n */\n export type PropertyDescriptors = {\n [K in keyof typeof fpd as TS.HasString<K, never, K>]: (typeof fpd)[K]\n };\n\n /**\n * @summary You must exclude this keys on add new props of function\n * @example\n * type MyKeys = 'id' | 'value' | 'name';\n *\n * // ❌\n * type Is_$Bad: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in MyKeys]: (candidate: unknown) => candidate is K;\n * }\n *\n * // ✅\n * type Is_$Good: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in TS.Func.Restrict<MyKeys>]: (candidate: unknown) => candidate is K;\n * }\n */\n export type RestrictionsForExt = keyof PropertyDescriptors;\n\n /**\n * @summary Restricted keys exclude shortcut\n * @example\n * type MyKeys = 'id' | 'value' | 'name';\n *\n * // ❌\n * type Is_$Bad: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in MyKeys]: (candidate: unknown) => candidate is K;\n * }\n *\n * // ✅\n * type Is_$Good: (<T extends MyKeys>(k: T, candidate: unknown) => candidate is T) & {\n * [K in TS.Func.Restrict<MyKeys>]: (candidate: unknown) => candidate is K;\n * }\n */\n export type Restrict<T extends Key> = Exclude<T, RestrictionsForExt>;\n }\n\n export namespace Code {\n\n\n /**\n * @summary Functions utilities\n */\n export interface Func {\n /**\n * @summary Types of runtime function Key2Key record\n */\n Types: TS.Key2Key<TS.Func.Type>;\n\n /**\n * @summary Determines a type of runtime function\n */\n determineType(func: Function | TS.Func): TS.Func.Type;\n\n /**\n * @summary `getOwnPropertyDescriptors` of basic function\n */\n OwnPropertyDescriptors: AVStantso.TS.Func.PropertyDescriptors;\n\n /**\n * @summary Check can use prop for function extends\n * @param propName Ext prop name\n * @returns `true` — can add to function, else `false`\n * @example\n * const Types = ['insert', 'update', 'name'] as const;\n * type Type = typeof Types[number];\n * type Data<T extends Type> =\n * | (T extends 'insert' ? {\n * type: 'insert',\n * value: 'xxx'\n * } : never)\n * | (T extends 'update' ? {\n * type: 'update',\n * value: 15\n * } : never)\n * | (T extends 'name' ? {\n * type: 'name',\n * id: string;\n * value: string;\n * }: never);\n *\n * function _isTypeOfData<T extends Type>(type: T, data: Data<Type>): data is Data<T> {\n * return data.type === type;\n * }\n *\n * const isTypeOfData = Object.assign(\n * _isTypeOfData,\n * Object.fromEntries(\n * Types\n * // 👇\n * .filter(Func.isPropAllowed)\n * .map((type) => [\n * type,\n * _isTypeOfData.bind(null, type)\n * ])\n * )\n * )\n * @EXAMPLE(@Code.Func.isPropAllowed)\n */\n isPropAllowed: {\n (propName: TS.Key): boolean;\n\n /**\n * @summary Check can NOT use prop for function extends\n * @param propName Ext prop name\n * @returns `true` — can't add to function, else `false`\n * @EXAMPLE(@Code.Func.isPropAllowed.Not)\n */\n Not: (propName: TS.Key) => boolean\n }\n\n /**\n * @summary Function has extended properties\n * @param f Function being tested\n * @returns 'true' if has extended properties, else 'false'\n * @example\n * function a() {\n * return 14;\n * }\n * expect(isExt(a)).toBe(false);\n *\n * const aa = () => 'xyz';\n * expect(isExt(aa)).toBe(false);\n *\n * const b = Object.assign(\n * function b() {\n * return 14;\n * },\n * { x: 19 }\n * );\n * expect(isExt(b)).toBe(true);\n *\n * const bb = Object.assign(\n * () => 14,\n * { x: 19 }\n * );\n * expect(isExt(bb)).toBe(true);\n *\n * function c() {\n * return 'abc';\n * }\n * Object.defineProperties(c, { y: { value: 34 } });\n * expect(isExt(c)).toBe(true);\n *\n * const cc = () => 'abc';\n * Object.defineProperties(cc, { y: { value: 34 } });\n * expect(isExt(cc)).toBe(true);\n *\n * function d() {\n * return 'abcd';\n * }\n * d.z = 16;\n * expect(isExt(d)).toBe(true);\n *\n * const dd = () => 'abcd';\n * dd.z = 16;\n * expect(isExt(dd)).toBe(true);\n * @EXAMPLE(@Code.Func.isExt)\n */\n\n isExt(f: Function | TS.Func): boolean;\n\n /**\n * @summary `DEV` dynamic function named as `name`. No affect in `PROD`.\n * @param name Name\n * @param func Implementation\n * @returns In `DEV` — Named function; In `PROD` — `func`\n */\n\n Dynamic<N extends string, F extends Function | TS.Func>(name: N, func: F): F;\n }\n }\n\n export interface Code {\n /**\n * @summary Functions utilities\n */\n Func: Code.Func;\n }\n\n export const Func: Code.Func = avstantso._reg.Func(({ symbolFreeze }) => Object.assign({\n Types: Object.freeze(Object.fromEntries(runtimeFuncTypes.map((k) => [k, k]))),\n\n determineType(func: Function): TS.Func.Type {\n const protoDsc = Object.getOwnPropertyDescriptor(func, 'prototype');\n const ctorName = func.constructor.name;\n\n if (!protoDsc)\n return func.name?.startsWith('bound ')\n ? 'bound'\n : 'AsyncFunction' === ctorName\n ? 'async'\n : 'arrow';\n\n if (!protoDsc.writable)\n return 'class';\n\n if (generatorClasses.includes(ctorName as typeof generatorClasses[number]))\n return 'generator';\n\n return 'plain';\n },\n\n OwnPropertyDescriptors: fpd,\n\n isPropAllowed: Object.assign(\n function isPropAllowed(propName: string): boolean {\n return !(propName in fpd);\n },\n {\n /**\n * @summary Check can NOT use prop for function extends\n */\n Not: function isPropNotAllowed(propName: string): boolean {\n return propName in fpd;\n }\n }\n ),\n\n isExt(f: unknown) {\n for (const k in Object.getOwnPropertyDescriptors(f))\n if (!(k in fpd))\n return true;\n\n return false;\n },\n\n Dynamic<N extends string, F extends Function>(\n name: N,\n func: F\n ): F {\n return !process.env.IS_DEV\n ? func\n : new Function(\n 'func',\n `return function ${name}(...params){ return func(...params); };`\n )(func);\n }\n } as Code.Func, {\n [symbolFreeze]() {\n for (const field of Object.values(this))\n Object.freeze(field);\n }\n }));\n}\n","namespace AVStantso {\n export namespace Catch {\n /**\n * @summary Catch handler\n * @param error Error\n */\n export type Handler<T = unknown> = (error: T) => unknown;\n\n export namespace Core {\n /**\n * @summary `Core` catch handler version\n * @param error Error\n */\n export type Handler = Catch.Handler;\n }\n }\n\n /**\n * @summary Common catch method for errors\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Catch extends Catch.Core.Handler { }\n\n export namespace Code {\n export namespace Catch {\n /**\n * @summary Catch filter handler\n * @param error Error\n */\n export type Filter<T = unknown> = (error: T) => boolean;\n }\n\n /**\n * @summary Catch helpers utility\n */\n export interface Catch extends AVStantso.Catch {\n _addFilter(...filters: [Catch.Filter, ...Catch.Filter[]]): void;\n _default: AVStantso.Catch.Handler;\n }\n }\n\n export interface Code {\n /**\n * @summary Catch helpers utility\n */\n Catch: Code.Catch;\n }\n\n export const Catch = avstantso._reg.Catch(() => {\n type Filter = Code.Catch.Filter;\n\n const catchFilters: Filter[] = [];\n\n function DoCatch(error: unknown): unknown {\n return catchFilters.length && catchFilters.some((f) => f(error))\n ? undefined\n : DoCatch._default(error);\n }\n\n DoCatch._addFilter = (...filters: [Filter, ...Filter[]]): void => {\n catchFilters.push(...filters);\n };\n\n DoCatch._default = (error: unknown) => {\n if (error instanceof Error)\n throw error;\n else\n throw new Error(`${error}`);\n };\n\n return DoCatch;\n });\n}\n","namespace AVStantso {\n /**\n * @summary Interface registry of atomic objects types\n */\n export namespace AtomicObjects {\n /**\n * @summary Atomic object class options\n */\n export interface Options<TClass extends TS.Class = TS.Class> {\n empty?(): InstanceType<TClass>;\n\n /**\n * @summary Clone rule for atomic object\n */\n clone(instance: InstanceType<TClass>): InstanceType<TClass>\n }\n\n /**\n * @summary Atomic object class descriptor\n */\n export type Descriptor<TClass extends TS.Class = TS.Class> =\n { Class: TClass } & Options<TClass>;\n }\n\n export interface AtomicObjects {\n Date: Date;\n\n /**\n * @requires `'buffer'` library required for browser and register manually.\\\n * For Node-js: automatic register builtin class `Buffer`\n */\n Buffer: Buffer;\n }\n\n export namespace Code {\n /**\n * @summary Atomic objects registry management\n */\n export interface AtomicObjects {\n /**\n * @summary Readonly map of registered classes of atomic objects and class options\n */\n classes: ReadonlyMap<TS.Class, AVStantso.AtomicObjects.Options>;\n\n /**\n * @summary Class registration of atomic object and add options\n * @param atomicObjectClass Class of atomic object\n * @param options Atomic object class options\n */\n register<TClass extends TS.Class>(\n atomicObjectClass: TClass,\n options : AVStantso.AtomicObjects.Options<TClass>\n ): void;\n\n /**\n * @summary Check object is atomic. 'false' for non-object values\n * @param testObject Tested object\n * @returns 'true' is object is atomic, else `false`\n */\n is(testObject: object | unknown): boolean;\n\n /**\n * @summary Get atomic object descriptor or `undefined`, if not class name, object not atomic or non-object value\n * @param testObjectOrClassName Tested object or class name\n * @returns 'AtomicObjects.AVStantso.AtomicObjects.Descriptor' if object is atomic or find class name, else `undefined`\n * @see AVStantso.AtomicObjects.Descriptor\n */\n descriptor: {\n /**\n * @summary Get atomic object descriptor or `undefined`, if object not atomic or non-object value\n * @param testObject Tested object\n * @returns 'AtomicObjects.AVStantso.AtomicObjects.Descriptor' if object is atomic, else `undefined`\n * @see AVStantso.AtomicObjects.Descriptor\n */\n (testObject: object | unknown): AVStantso.AtomicObjects.Descriptor;\n\n /**\n * @summary Get atomic object descriptor or `undefined`, if class name not found\n * @param className Class name\n * @returns 'AtomicObjects.AVStantso.AtomicObjects.Descriptor' if find class name, else `undefined`\n * @see AVStantso.AtomicObjects.Descriptor\n */\n (className: string): AVStantso.AtomicObjects.Descriptor;\n }\n }\n }\n\n export interface Code {\n /**\n * @summary Atomic objects registry management\n */\n AtomicObjects: Code.AtomicObjects;\n }\n\n export const AtomicObjects: Code.AtomicObjects = avstantso._reg.AtomicObjects(\n ({ symbolFreeze }) => {\n const classes = new Map<TS.Class, AVStantso.AtomicObjects.Options>();\n const derivedCache = new Map<TS.Class, AVStantso.AtomicObjects.Descriptor | null>();\n\n function register<TClass extends TS.Class>(\n atomicObjectClass: TClass,\n options : AVStantso.AtomicObjects.Options<TClass>\n ) {\n classes.set(atomicObjectClass, options);\n derivedCache.clear();\n }\n\n function resolve(obj: object): AVStantso.AtomicObjects.Descriptor | null {\n const ctor = Object.getPrototypeOf(obj)?.constructor as TS.Class;\n if (!ctor) return null;\n if (derivedCache.has(ctor)) return derivedCache.get(ctor);\n\n for (const [Class, options] of classes.entries())\n if (obj instanceof Class) {\n const d = { Class, ...options } as AVStantso.AtomicObjects.Descriptor;\n derivedCache.set(ctor, d);\n return d;\n }\n\n derivedCache.set(ctor, null);\n return null;\n }\n\n function is(testObject: object): boolean {\n return 'object' === typeof testObject\n && null !== testObject\n && null !== resolve(testObject);\n }\n\n function descriptor(param: object | string): AVStantso.AtomicObjects.Descriptor {\n if ('string' === typeof param) {\n for (const [Class, options] of classes.entries())\n if (param === Class.name) return { Class, ...options };\n return;\n }\n\n if ('object' === typeof param && null !== param)\n return resolve(param) ?? undefined;\n }\n\n register(Date, {\n empty: () => new Date(0),\n clone: (instance) => new Date(instance)\n });\n\n // Only if Buffer is available (Node.js or browser polyfill)\n if (globalThis.Buffer) register(Buffer, {\n empty: () => Buffer.from(''),\n clone: (instance) => Buffer.from(instance)\n });\n\n return Object.assign(\n { classes, register, is, descriptor } as AVStantso.Code.AtomicObjects,\n { [symbolFreeze]() {\n for (const field of Object.values(this))\n Object.freeze(field);\n } });\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n export interface Code {\n /**\n * @summary Not `X`, but an oblique cross `❌`. It can be fed to `Promise.then` / `Promise.catch` instead of an empty value\n * @returns `undefined`\n */\n X<T = any>(): T;\n }\n\n /**\n * @summary Not `X`, but an oblique cross `❌`. It can be fed to `Promise.then` / `Promise.catch` instead of an empty value\n * @returns `undefined`\n */\n export const X = avstantso._reg.X(() => function X(){} as Code['X']);\n}\n","namespace AVStantso {\n const unknown = undefined as unknown;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const jstype = typeof unknown;\n\n const JSStucturalTypes = Object.freeze(\n ['object', 'function'] as const\n );\n\n enum TypeGroupEnum {\n /**\n * `foo === null || !JSStucturalTypes.includes(typeof foo)`\n */\n scalar = 0,\n\n /**\n * `AVStantso.AtomicObjects.is(foo)`\n */\n atomic = 1,\n\n /**\n * `typeof foo === 'object' && Object.isPlainObject(foo)`\n */\n plain = 2,\n\n /**\n * `typeof foo === 'object' && !Object.isPlainObject(foo)`\n */\n rich = 3,\n\n /**\n * `typeof foo === 'function'`\n */\n func = 4\n }\n Object.freeze(TypeGroupEnum);\n\n const TypeGroups = Object.freeze(\n [\n 'scalar',\n 'atomic',\n 'plain',\n 'rich',\n 'func'\n ] as const\n );\n\n /**\n * @summary Low level types and utils\n */\n export namespace LowLevel {\n /**\n * @summary JavaScript native types union\n */\n export type JSType = typeof jstype;\n\n export namespace JSType {\n /**\n * @summary JavaScript native scalar types + `null`\n */\n export type Scalar = Exclude<JSType, typeof JSStucturalTypes[number]> | 'null';\n }\n\n /**\n * The group of value type\n */\n export type TypeGroup = TypeGroupEnum;\n\n export namespace TypeGroup {\n /**\n * A type union for a group of value type\n */\n export type Union<TG extends TypeGroup> = TG extends TypeGroupEnum.scalar\n ? string | number | bigint | boolean | symbol | undefined | null\n : TG extends TypeGroupEnum.func\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n ? Function\n : object;\n\n export namespace Union {\n /**\n * A type union for a group of value type\\\n * for `scalar`\n */\n export type Scalar = Union<TypeGroupEnum.scalar>;\n\n /**\n * A type union for a group of value type\\\n * for `atomic`\n */\n export type Atomic = Union<TypeGroupEnum.atomic>;\n\n /**\n * A type union for a group of value type\\\n * for `plain`\n */\n export type Plain = Union<TypeGroupEnum.plain>;\n\n /**\n * A type union for a group of value type\\\n * for `rich`\n */\n export type Rich = Union<TypeGroupEnum.rich>;\n\n /**\n * A type union for a group of value type\\\n * for `func`\n */\n export type Func = Union<TypeGroupEnum.func>;\n }\n }\n\n /**\n * The group of value types array\n */\n export type TypeGroups = typeof TypeGroups;\n }\n\n export namespace Code {\n /**\n * @summary Low level utils\n */\n export namespace LowLevel {\n }\n\n export interface LowLevel {\n /**\n * @summary Array of JavaScript structural types\n */\n JSStucturalTypes: typeof JSStucturalTypes;\n\n /**\n * The group of value type enum\n */\n TypeGroup: typeof TypeGroupEnum;\n\n /**\n * The group of value types array\n */\n TypeGroups: typeof TypeGroups;\n\n /**\n * Classify the type group of value\n */\n typeGroupOf(a: unknown): TypeGroupEnum;\n }\n }\n\n export interface Code {\n /**\n * @summary Low level utils\n */\n LowLevel: Code.LowLevel;\n }\n\n export const LowLevel: Code.LowLevel = avstantso._reg.LowLevel(({ AtomicObjects }) => {\n function typeGroupOf(a: unknown): TypeGroupEnum {\n if (null === a) return TypeGroupEnum.scalar;\n\n const t = typeof a;\n const i = (JSStucturalTypes as ReadonlyArray<LowLevel.JSType>).indexOf(t);\n\n if (i < 0) return TypeGroupEnum.scalar;\n if (i) return TypeGroupEnum.func;\n if (AtomicObjects.is(a)) return TypeGroupEnum.atomic;\n\n return Object.isPlainObject(a as object) ? TypeGroupEnum.plain : TypeGroupEnum.rich;\n }\n\n return {\n JSStucturalTypes,\n TypeGroup: TypeGroupEnum,\n TypeGroups,\n typeGroupOf\n };\n });\n}\n","namespace AVStantso {\n\n /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-function-type */\n\n const symbolClone = Symbol('clone');\n const symbolMerge = Symbol('merge');\n\n type TypeMap = DeepOps.TypeMap;\n namespace TypeMap {\n export type Wildcard = DeepOps.TypeMap.Wildcard;\n export type Derive<\n TOverrides extends Partial<TypeMap>,\n TTypeMap extends TypeMap = TypeMap\n > = DeepOps.TypeMap.Derive<TOverrides, TTypeMap>;\n }\n\n /**\n * @summary Deep operations\n */\n export namespace DeepOps {\n /**\n * @summary Deep operation node type to walk\n */\n export type NodeType = keyof typeof AVStantso.LowLevel.TypeGroup;\n\n export namespace NodeType {\n /**\n * @summary Deep operation node type to walk: supports recursion next\n */\n export type Nextable = Exclude<NodeType, 'scalar' | 'atomic'>;\n }\n\n /**\n * @summary Deep operation node type tuple type\n */\n export type NodeTypes = AVStantso.LowLevel.TypeGroups;\n\n /**\n * @summary Deep operation recursion generics types map\n */\n export type TypeMap = {\n walker?: Function;\n nodes?: NodeType;\n // args?: readonly string[];\n // walked?: Walked.Kind;\n // parentFirst?: boolean;\n // generalOptions?: DeepOps.Options;\n // returns?: unknown;\n };\n\n export namespace TypeMap {\n /**\n * @summary Types map wildcard\n */\n export type Wildcard = { [K in keyof TypeMap]-?: any };\n\n /**\n * @summary Derive types map from previous\n */\n export type Derive<\n TOverrides extends Partial<TypeMap>,\n TTypeMap extends TypeMap = TypeMap\n > = Omit<\n TTypeMap, keyof TOverrides\n > & TOverrides extends infer R extends Omit<\n TTypeMap, keyof TOverrides\n > & TOverrides\n ? { [K in keyof R]-?: R[K] }\n : never;\n }\n\n /**\n * @summary Walk rules types.\\\n * Walk rules by node types\n */\n export namespace Walk {\n /**\n * @summary Class map for walk rules.\n */\n export type ClassMap<\n TTypeMap extends TypeMap = TypeMap\n > = ReadonlyMap<\n AVStantso.TS.Class,\n boolean | TTypeMap['walker']\n >;\n\n /**\n * @summary Walk scalar (not objects and functions) types rule.\\\n * Process falsy values too (`undefined`, `null`).\\\n * If `null`, translated to `true` for inclusive / to `false` for exclusive behaviour.\\\n * If truthy, recursion will walk `string`, `number` etc.\\\n * If value is general `CustomWalker`:\n * - All will be walked custom\n * If value is record object:\n * - Unexists / `null` — see `null` above\n * - Exists as `CustomWalker` will be walked custom\n * - Exists as thruthy will be walked\n * - Exists as falsy will be NOT walked\n */\n export type Scalar<\n TTypeMap extends TypeMap = TypeMap\n > = | null\n | boolean\n | TTypeMap['walker']\n | Partial<Record<\n LowLevel.JSType.Scalar,\n boolean | TTypeMap['walker']\n >>;\n\n /**\n * @summary Walk atomic ({@link AtomicObjects}) objects rule.\\\n * These objects are similar to scalars.\\\n * If `null`, translated to `true` for inclusive / to `false` for exclusive behaviour.\\\n * If truthy, recursion will walk `{}`.\\\n * If value is general `CustomWalker`:\n * - All will be walked custom\n * If value is Map object:\n * - Unexists / `null` — see `null` above\n * - Exists as `CustomWalker` will be walked custom\n * - Exists as thruthy will be walked\n * - Exists as falsy will be NOT walked\n * @see AtomicObjects\n */\n export type Atomic<\n TTypeMap extends TypeMap = TypeMap\n > = null\n | boolean\n | TTypeMap['walker']\n | ClassMap<TypeMap>;\n\n /**\n * @summary Walk plain (`Object.isPlainObject`) objects rule.\\\n * If `null`, translated to `true` for inclusive / to `false` for exclusive behaviour.\\\n * If truthy, recursion will walk `{}`.\\\n * If value is general `CustomWalker`:\n * - All will be walked custom\n */\n export type Plain<\n TTypeMap extends TypeMap = TypeMap\n > = null\n | boolean\n | TTypeMap['walker'];\n\n /**\n * @summary Walk rich (not `Object.isPlainObject`) objects rule.\\\n * If `null`, translated to `true` for inclusive / to `false` for exclusive behaviour.\\\n * If truthy, recursion will walk `Array`, `Set`, `Map`, classes instances etc.\\\n * If value is general `CustomWalker`:\n * - All will be walked custom\n * If value is Map object:\n * - Unexists / `null` — see `null` above\n * - Exists as `CustomWalker` will be walked custom\n * - Exists as thruthy will be walked\n * - Exists as falsy will be NOT walked\n */\n export type Rich<\n TTypeMap extends TypeMap = TypeMap\n > = null\n | boolean\n | TTypeMap['walker']\n | ClassMap<TTypeMap>;\n\n /**\n * @summary Walk functions rule.\\\n * If `null`, translated to `true` for inclusive / to `false` for exclusive behaviour.\\\n * If truthy, recursion will walk functions, async/arrow/generator functions, classes etc.\\\n * If value is general `CustomWalker`:\n * - All will be walked custom\n * If value is record object:\n * - Unexists / `null` — see `null` above\n * - Exists as `CustomWalker` will be walked custom\n * - Exists as thruthy will be walked\n * - Exists as falsy will be NOT walked\n */\n export type Funcs<\n TTypeMap extends TypeMap = TypeMap\n > = null\n | boolean\n | TTypeMap['walker']\n | Partial<Record<TS.Func.Type, boolean | TTypeMap['walker']>>;\n\n type InclusiveExclusive<TNodeType extends NodeType, TWalk> =\n [\n `walk${Capitalize<TNodeType>}Inc`,\n `walk${Capitalize<TNodeType>}Exc`\n ] extends [infer I extends string, infer E extends string]\n ? [{\n [K in I]?: TWalk;\n } & {\n [K in E]?: never;\n }, {\n [K in I]?: never;\n } & {\n [K in E]?: TWalk;\n }] extends [infer WI, infer WE]\n ? { [K in keyof WI]: WI[K] } | { [K in keyof WE]: WE[K] }\n : never\n : never;\n\n type _Static<\n TTypeMap extends TypeMap,\n NTA extends readonly NodeType[] = NodeTypes,\n R = never\n > = NTA extends readonly [infer C extends NodeType, ...infer Rest extends readonly NodeType[]]\n ? _Static<\n TTypeMap,\n Rest,\n R | (C extends TypeMap['nodes']\n ? InclusiveExclusive<C, Walk<TTypeMap>[C]>\n : never\n )\n >\n : R;\n\n /**\n * @summary Walk static (not extensible) rules pack alternatives.\n */\n export type Static<\n TTypeMap extends TypeMap = TypeMap\n > = _Static<TTypeMap> & {};\n\n export namespace Static {\n type _United<\n TTypeMap extends TypeMap,\n NTA extends readonly NodeType[] = NodeTypes,\n R = unknown\n > = NTA extends readonly [\n infer C extends NodeType,\n ...infer Rest extends readonly NodeType[]\n ]\n ? _United<\n TTypeMap,\n Rest,\n R & (C extends TypeMap['nodes']\n ? { [K in `walk${Capitalize<C>}${'Inc' | 'Exc'}`] : Walk<TTypeMap>[C] }\n : unknown\n )\n >\n : { [K in keyof R]: R[K] };\n\n /**\n * @summary Walk static (not extensible) rules pack (alternatives is united).\n */\n export type United<\n TTypeMap extends TypeMap = TypeMap\n > = _United<TTypeMap>;\n }\n }\n\n export type Walk<TTypeMap extends TypeMap = TypeMap> = {\n scalar: Walk.Scalar<TTypeMap>;\n atomic: Walk.Atomic<TTypeMap>;\n plain: Walk.Plain<TTypeMap>;\n rich: Walk.Rich<TTypeMap>;\n func: Walk.Funcs<TTypeMap>;\n };\n\n /**\n * @summary Deep operation options (extensible `interface`).\\\n * Used in pair with `Walk.Static<XXX>` (not extensible)\n * @see Walk.Static\n */\n export interface Options {\n /**\n * @summary If truthy, walks enumirale and own properties,\\\n * if falsy — enumirale properties only\n */\n ownProps?: boolean;\n }\n }\n\n export namespace Code {\n /**\n * @summary Deep operations utils\n */\n export namespace DeepOps {\n /**\n * @summary Deep operations utils common\n */\n export namespace Common {\n /**\n * @summary Deep operations common options\n */\n export type Options<\n TTypeMap extends TypeMap = TypeMap\n > =\n AVStantso.DeepOps.Options & AVStantso.DeepOps.Walk.Static<\n TTypeMap\n >;\n\n /**\n * @summary Deep copy operations commons:\n * - `Clone`\n * - `Merge`\n */\n export namespace CopyOps {\n /**\n * @summary Deep copy operations common options\n * - `Clone`\n * - `Merge`\n */\n export interface Options {\n /**\n * @summary If `true`, copies reference of function instead cloning\n */\n copyFuncs?: boolean;\n }\n }\n\n /**\n * @summary Options option\n */\n export namespace Option {\n /**\n * @summary Option value callback\n * @param node Node value the option is being resolved for\n * @param key Node's key/index within its parent, if any (`undefined` at the root)\n */\n export type Callback<R> = (node: unknown, key?: TS.Key) => R;\n }\n\n export type Option<T> = T | Option.Callback<T>;\n }\n\n /**\n * @summary `DeepOps` typeguards\n */\n export namespace Is {\n /**\n * @summary `DeepOps` options typeguards\n */\n export interface Options {\n /**\n * @summary {@link DeepOps.Common.Options} typeguard\n */\n common<\n TTypeMap extends TypeMap = TypeMap\n >(candidate: unknown): candidate is DeepOps.Common.Options<TTypeMap>;\n\n /**\n * @summary {@link DeepOps.Clone.Options} typeguard\n */\n clone(candidate: unknown): candidate is DeepOps.Clone.Options;\n\n /**\n * @summary {@link DeepOps.Merge.Options} typeguard\n */\n merge(candidate: unknown): candidate is DeepOps.Merge.Options;\n }\n }\n\n export interface Is {\n /**\n * @summary `DeepOps` options typeguards\n */\n options: Is.Options;\n }\n\n //#region Freeze\n /**\n * @summary Deep feeze operation\n * @template T Argument type\n * @param obj Data for freeze\n * @param options Options for freeze\n */\n export namespace Freeze {\n /**\n * Typemap for freeze\n */\n export type TypeMap = TypeMap.Derive<{\n walker<T extends object | Function>(node: T): Readonly<T>;\n nodes: 'plain' | 'rich' | 'func',\n }>;\n\n /**\n * Options for freeze\n */\n export type Options = Common.Options<TypeMap>;\n }\n\n export interface Freeze {\n /**\n * @summary `symbol` for custom freeze.\\\n * Same symbol of {@link _CodeReg.Administration.symbolFreeze}\n */\n symbol: symbol;\n\n /**\n * @summary Deep feeze operation\n * @template T Argument type\n * @param obj Data for freeze\n * @param options Options for freeze\n */\n <T>(obj: T, options?: Freeze.Options): Readonly<T>;\n }\n //#endregion\n\n //#region Clone\n /**\n * @summary Deep clone operation\n * @template T Argument type\n * @param obj Data for clone\n * @param options Options for clone\n */\n export namespace Clone {\n /**\n * Typemap for clone\n */\n export type TypeMap = TypeMap.Derive<{\n walker<T>(node: T): T;\n }>;\n\n /**\n * @summary Deep clone operation options\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n export interface Options extends Common.CopyOps.Options {\n }\n\n export namespace Options {\n /**\n * @summary Deep clone operation merged options\n */\n export type Merged = Options & Common.Options<TypeMap>;\n }\n }\n\n export interface Clone {\n /**\n * @summary `symbol` for custom clone.\n */\n symbol: symbol;\n\n /**\n * @summary Deep clone operation\n * @template T Argument type\n * @param obj Data for clone\n * @param options Options for clone\n */\n <T>(obj: T, options?: Clone.Options.Merged): T;\n }\n //#endregion\n\n //#region Merge\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S Source arguments type\n * @param target Data target for merge\n * @param sources Data sources for merge\n * @param options Options for merge\n */\n export namespace Merge {\n /**\n * Typemap for merge\n */\n export type TypeMap = TypeMap.Derive<{\n walker<T, S extends TS.ArrR>(target: T, ...sources: S): T;\n }>;\n\n\n /**\n * @summary Deep merge operation options\n */\n export interface Options extends Common.CopyOps.Options {\n /**\n * If resolved as truthy: node for merge must exists in source node\n */\n onlyExists?: Common.Option<boolean>;\n\n /**\n * If resolved as truthy: array nodes will merjed as `[...new Set( XXX )]`\n */\n isUniqueArrItems?: Common.Option<boolean>;\n\n /**\n * If resolved as truthy: source `null` will delete target key\n */\n nullAsDelete?: Common.Option<boolean>;\n\n /**\n * If resolved as truthy: array nodes will be merged by concatenation\n * (`[...target, ...source]`), instead of the default by-index merge\n */\n concatArrays?: Common.Option<boolean>;\n }\n\n export namespace Options {\n /**\n * @summary Deep merge operation merged options\n */\n export type Merged = Options & Common.Options<TypeMap>;\n }\n }\n\n export interface Merge {\n /**\n * @summary `symbol` for custom merge.\n */\n symbol: symbol;\n\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S Source argument type\n * @param target Data target for merge\n * @param source Data source for merge\n * @param options Options for merge\n */\n <T, S>(\n target: T, source: S, options: Merge.Options.Merged\n ): T & Partial<S>;\n\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S0 Source0 argument type\n * @template S1 Source1 argument type\n * @param target Data target for merge\n * @param source0 Data source0 for merge\n * @param source1 Data source1 for merge\n * @param options Options for merge\n */\n <T, S0, S1>(\n target: T,\n source0: S0,\n source1: S1,\n options: Merge.Options.Merged\n ): T & Partial<S0 & S1>;\n\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S0 Source0 argument type\n * @template S1 Source1 argument type\n * @template S2 Source2 argument type\n * @param target Data target for merge\n * @param source0 Data source0 for merge\n * @param source1 Data source1 for merge\n * @param source2 Data source2 for merge\n * @param options Options for merge\n */\n <T, S0, S1, S2>(\n target: T,\n source0: S0,\n source1: S1,\n source2: S2,\n options: Merge.Options.Merged\n ): T & Partial<S0 & S1 & S2>;\n\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S0 Source0 argument type\n * @template S1 Source1 argument type\n * @template S2 Source2 argument type\n * @template S3 Source3 argument type\n * @param target Data target for merge\n * @param source0 Data source0 for merge\n * @param source1 Data source1 for merge\n * @param source2 Data source2 for merge\n * @param source3 Data source3 for merge\n * @param options Options for merge\n */\n <T, S0, S1, S2, S3>(\n target: T,\n source0: S0,\n source1: S1,\n source2: S2,\n source3: S3,\n options: Merge.Options.Merged\n ): T & Partial<S0 & S1 & S2 & S3>;\n\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S0 Source0 argument type\n * @template S1 Source1 argument type\n * @template S2 Source2 argument type\n * @template S3 Source3 argument type\n * @template S4 Source4 argument type\n * @param target Data target for merge\n * @param source0 Data source0 for merge\n * @param source1 Data source1 for merge\n * @param source2 Data source2 for merge\n * @param source3 Data source3 for merge\n * @param source4 Data source4 for merge\n * @param options Options for merge\n */\n <T, S0, S1, S2, S3, S4>(\n target: T,\n source0: S0,\n source1: S1,\n source2: S2,\n source3: S3,\n source4: S4,\n options: Merge.Options.Merged\n ): T & Partial<S0 & S1 & S2 & S3 & S4>;\n\n /**\n * @summary Deep merge operation\n * @template T Target argument type\n * @template S Source arguments type\n * @param target Data target for merge\n * @param sources Data sources for merge\n * @param options Options for merge\n */\n <T, S extends TS.ArrR>(\n target: T, ...params: [...[...sources: S], ...[options: Merge.Options.Merged]]\n ): T & unknown;\n }\n //#endregion\n }\n\n export interface DeepOps {\n /**\n * @summary Deep walk node types\n */\n NodeTypes: TS.Key2Key<AVStantso.DeepOps.NodeType>;\n\n /**\n * @summary `DeepOps` typeguards\n */\n is: DeepOps.Is;\n\n /**\n * @summary Deep feeze operation.\\\n * Default walks logic:\n * - plain objects (`{}`)\n * - `Array`, `Set`, 'Map', class instances\n * - functions, except `class` and `generator` kinds\n * @template T Argument type\n * @param obj Data for freeze\n * @param options Options for freeze\n */\n freeze: DeepOps.Freeze;\n\n /**\n * @summary Deep clone operation.\\\n * Default walks logic:\n * - scalars (`string`, `number`, etc.)\n * - atomics (`Date`, `Buffer`, etc.)\n * - plain objects (`{}`)\n * - `Array`, `Set`, 'Map'. Not class instances\n * - functions, except `class` and `generator` kinds\n * @template T Argument type\n * @param obj Data for clone\n * @param options Options for clone\n */\n clone: DeepOps.Clone;\n\n /**\n * @summary Deep merge operation\\\n * Default walks logic:\n * - scalars (`string`, `number`, etc.)\n * - atomics (`Date`, `Buffer`, etc.)\n * - plain objects (`{}`)\n * - `Array`, `Set`, 'Map'. Not class instances\n * - functions, except `class` and `generator` kinds\n * @template T Target argument type\n * @template S Source arguments type\n * @param target Data target for merge\n * @param sources Data sources for merge\n * @param options Options for merge\n */\n merge: DeepOps.Merge;\n }\n }\n\n export interface Code {\n /**\n * @summary Deep operations utils\n */\n DeepOps: Code.DeepOps;\n }\n\n export const DeepOps: Code.DeepOps = avstantso._reg.DeepOps(({\n symbolFreeze,\n Func,\n AtomicObjects,\n LowLevel\n }) => {\n function nodeTypePrefix<NT extends DeepOps.NodeType>(nodeType: NT) {\n return `walk${nodeType.toCapitalized()}` as const;\n }\n\n function AllowsClassMap(...classes: TS.Class[]) {\n return new Map(\n classes.map((c) => [c, true])\n );\n }\n\n //#region shared node helpers\n function nodeTypeOf(value: unknown): DeepOps.NodeType {\n return LowLevel.TypeGroups[LowLevel.typeGroupOf(value)] as DeepOps.NodeType;\n }\n\n /**\n * @summary Resolve a single `walk{NodeType}Inc`/`walk{NodeType}Exc` rule against `value`\n */\n function resolveWalkRule(\n _options: any,\n nodeType: DeepOps.NodeType,\n value: unknown\n ): { walk: boolean; custom?: Function } {\n function resolve(behavior: unknown, fallback: boolean) {\n if (null == behavior) return { walk: fallback };\n if ('boolean' === typeof behavior) return { walk: behavior };\n if ('function' === typeof behavior) return { walk: true, custom: behavior as Function };\n return { walk: fallback };\n }\n\n const p = nodeTypePrefix(nodeType);\n const isInc = `${p}Inc` in _options;\n const raw = isInc ? _options[`${p}Inc`] : _options[`${p}Exc`];\n const fallback = isInc;\n\n if (null == raw || 'boolean' === typeof raw || 'function' === typeof raw)\n return resolve(raw, fallback);\n\n if (raw instanceof Map) {\n const ctor = (value as any)?.constructor;\n return resolve(ctor && raw.has(ctor) ? raw.get(ctor) : undefined, fallback);\n }\n\n const subKey = 'scalar' === nodeType\n ? (null === value ? 'null' : typeof value)\n : Func.determineType(value as Function);\n\n return resolve(subKey in raw ? raw[subKey] : undefined, fallback);\n }\n\n /**\n * @summary Iterate `[key, value, descriptor?]` entries of a `plain`/`func` node\n */\n function* plainEntries(\n value: object,\n ownProps: boolean | undefined,\n isFunc: boolean\n ): Generator<[TS.Key, unknown, PropertyDescriptor?]> {\n if (!ownProps) {\n for (const kv of Object.entries(value))\n yield kv as [TS.Key, unknown];\n return;\n }\n\n for (const [key, dsc] of Object.entries(Object.getOwnPropertyDescriptors(value))) {\n if (isFunc && !Func.isPropAllowed(key)) continue;\n\n if ('value' in dsc) yield [key, dsc.value, dsc];\n else if (dsc.get) yield [key, dsc.get.call(value), dsc];\n }\n }\n\n /**\n * @summary Iterate `[key, value]` entries of an `Array`/`Set`/`Map` node\n */\n function* richIterate(value: object): Generator<[TS.Key, unknown]> {\n if (value instanceof Map) {\n for (const [k, v] of value) yield [k as TS.Key, v];\n return;\n }\n\n let i = 0;\n for (const v of value as Iterable<unknown>) yield [i++, v];\n }\n\n function resolveOption<T>(opt: unknown, node: unknown, key?: TS.Key): T | undefined {\n return ('function' === typeof opt ? (opt as Function)(node, key) : opt) as T | undefined;\n }\n //#endregion\n\n //#region WalkDef\n function WalkDef(options: DeepOps.Options) {\n function walkDef<\n NT extends DeepOps.NodeType\n >(\n nodeType: NT,\n defaults: DeepOps.Walk.Static<TypeMap.Derive<{ nodes: NT }>>\n ) {\n const p = nodeTypePrefix(nodeType);\n if (options && (`${p}Inc` in options || `${p}Exc` in options))\n return {};\n\n return defaults;\n }\n for (const nt of LowLevel.TypeGroups)\n Object.defineProperty(walkDef, nt.toCapitalized(), {\n value(defaults: any) {\n return walkDef(nt, defaults);\n }\n });\n\n return walkDef as {\n <NT extends DeepOps.NodeType>(\n nodeType: NT,\n defaults: DeepOps.Walk.Static<TypeMap.Derive<{ nodes: NT }>>\n ): DeepOps.Walk.Static<TypeMap.Derive<{ nodes: NT }>>\n } & {\n [K in DeepOps.NodeType as Capitalize<K>]: {\n (\n defaults: DeepOps.Walk.Static<TypeMap.Derive<{ nodes: K }>>\n ): DeepOps.Walk.Static<TypeMap.Derive<{ nodes: K }>>\n }\n };\n };\n //#endregion\n\n //#region Is\n const deepOpsIs: Code.DeepOps.Is = (() => {\n const walkFieldNames = LowLevel.TypeGroups.flatMap(\n (nt) => {\n const p = `walk${nt.toCapitalized()}`;\n return [`${p}Inc`, `${p}Exc`];\n }\n );\n\n type Obj = Record<string, unknown>;\n\n function isObj(candidate: unknown): candidate is Obj {\n return candidate != null\n && 'object' === typeof candidate;\n }\n\n function isOptBool(v: unknown) {\n return v === undefined || 'boolean' === typeof v;\n }\n\n function isOptBoolOrFunc(v: unknown) {\n return isOptBool || 'function' === typeof v;\n }\n\n function isCommonOptions(candidate: unknown) {\n if (!isObj(candidate)) return false;\n\n if (isOptBool(candidate.ownProps)) return true;\n\n for (const f of walkFieldNames)\n if (f in candidate && candidate[f] !== undefined) return true;\n\n return false;\n }\n\n function isCopyOpsOptions(candidate: unknown) {\n if (!isObj(candidate)) return false;\n return isOptBool(candidate.copyFuncs);\n }\n\n function isMergeOptions(candidate: unknown) {\n if (!isObj(candidate)) return false;\n\n const obj = candidate as Obj;\n return !isCopyOpsOptions(candidate)\n || isOptBoolOrFunc(obj.onlyExists)\n || isOptBoolOrFunc(obj.isUniqueArrItems)\n || isOptBoolOrFunc(obj.nullAsDelete);\n }\n\n return {\n options: {\n common: isCommonOptions,\n clone: isCopyOpsOptions,\n merge: isMergeOptions\n }\n } as Code.DeepOps.Is;\n })();\n //#endregion\n\n //#region deepFreeze\n function deepFreeze<T>(obj: T, options: DeepOps.Options): Readonly<T> {\n const WD = WalkDef(options);\n const _options = {\n ...options,\n symbol: symbolFreeze,\n ...WD.Scalar({ walkScalarExc: false }),\n ...WD.Atomic({ walkAtomicExc: false }),\n ...WD.Plain({ walkPlainInc: true }),\n ...WD.Rich({ walkRichInc: true }),\n ...WD.Func({\n walkFuncInc: {\n class: false,\n generator: false\n }\n }) as any\n } as any;\n\n const seen = new Set<unknown>();\n const hasCustomFreeze = Symbol.Has(symbolFreeze);\n\n function walk(value: unknown): unknown {\n const nt = nodeTypeOf(value);\n const isContainer = 'plain' === nt || 'rich' === nt || 'func' === nt;\n\n if (isContainer && seen.has(value)) return value;\n\n if (isContainer && hasCustomFreeze(value)) {\n seen.add(value);\n (value as any)[symbolFreeze]();\n return value;\n }\n\n const rule = resolveWalkRule(_options, nt, value);\n if (!rule.walk) return undefined;\n\n if (isContainer) seen.add(value);\n\n if (rule.custom) {\n rule.custom(value);\n return value;\n }\n\n if ('plain' === nt || 'func' === nt)\n for (const [, child] of plainEntries(value as object, _options.ownProps, 'func' === nt))\n walk(child);\n\n else if ('rich' === nt) {\n const v = value as object;\n if (Array.isArray(v) || v instanceof Set || v instanceof Map)\n for (const [, child] of richIterate(v)) walk(child);\n else\n for (const [, child] of plainEntries(v, _options.ownProps, false)) walk(child);\n }\n\n if (isContainer) Object.freeze(value);\n\n return value;\n }\n\n return walk(obj) as Readonly<T>;\n }\n deepFreeze.symbol = symbolFreeze;\n //#endregion\n\n //#region deepClone\n const deepCloneRich = AllowsClassMap(Array, Set, Map);\n const SKIP = Symbol('deep-clone-skip');\n\n function deepClone<T>(obj: T, options: DeepOps.Options): T {\n const WD = WalkDef(options);\n const _options = {\n ...options,\n symbol: symbolClone,\n parentFirst: true,\n ...WD.Scalar({ walkScalarInc: true }),\n ...WD.Atomic({ walkAtomicInc: true }),\n ...WD.Plain({ walkPlainInc: true }),\n ...WD.Rich({ walkRichExc: deepCloneRich }),\n ...WD.Func({\n walkFuncInc: {\n class: false,\n generator: false\n }\n }) as any\n } as any;\n\n const hasCustomClone = Symbol.Has(symbolClone);\n const cloned = new Map<unknown, unknown>();\n\n function clone(value: unknown): unknown {\n const nt = nodeTypeOf(value);\n const isContainer = 'plain' === nt || 'rich' === nt || 'func' === nt;\n\n if (isContainer && cloned.has(value)) return cloned.get(value);\n\n if (isContainer && hasCustomClone(value)) {\n const r = (value as any)[symbolClone]();\n cloned.set(value, r);\n return r;\n }\n\n const rule = resolveWalkRule(_options, nt, value);\n if (!rule.walk) return SKIP;\n\n if (rule.custom) {\n const r = rule.custom(value);\n if (isContainer) cloned.set(value, r);\n return r;\n }\n\n switch (nt) {\n case 'scalar':\n return value;\n\n case 'atomic':\n return AtomicObjects.descriptor(value as object).clone(value as object);\n\n case 'plain': {\n const r: any = {};\n cloned.set(value, r);\n\n const entries = plainEntries(value as object, _options.ownProps, false);\n for (const [key, child, dsc] of entries) {\n const c = clone(child);\n if (c === SKIP) continue;\n\n if (dsc) Object.defineProperty(r, key, { ...dsc, value: c });\n else r[key] = c;\n }\n\n return r;\n }\n\n case 'rich': {\n const v = value as object;\n\n if (Array.isArray(v)) {\n const r: unknown[] = [];\n cloned.set(value, r);\n for (const item of v) {\n const c = clone(item);\n if (c !== SKIP) r.push(c);\n }\n return r;\n }\n\n if (v instanceof Set) {\n const r = new Set();\n cloned.set(value, r);\n for (const item of v) {\n const c = clone(item);\n if (c !== SKIP) r.add(c);\n }\n return r;\n }\n\n if (v instanceof Map) {\n const r = new Map();\n cloned.set(value, r);\n for (const [k, item] of v) {\n const c = clone(item);\n if (c !== SKIP) r.set(clone(k), c);\n }\n return r;\n }\n\n throw Error(`Cannot clone rich object \"${(v as any)?.constructor?.name}\"`);\n }\n\n case 'func': {\n const fn = value as unknown as Function;\n\n if ((_options as Code.DeepOps.Clone.Options).copyFuncs) {\n cloned.set(value, fn);\n return fn;\n }\n\n const wrapper = 'async' === Func.determineType(fn)\n ? async (...params: TS.Arr) => fn(...params)\n : (...params: TS.Arr) => fn(...params);\n\n cloned.set(value, wrapper);\n return wrapper;\n }\n }\n }\n\n const r = clone(obj);\n return (r === SKIP ? undefined : r) as T;\n }\n deepClone.symbol = symbolClone;\n //#endregion\n\n //#region deepMerge\n function deepMerge<T, S extends TS.ArrR>(\n target: T,\n ...params: [\n ...[...sources: S],\n ...[options: Code.DeepOps.Merge.Options.Merged]\n ]\n ): T {\n const {\n onlyExists,\n nullAsDelete,\n isUniqueArrItems,\n concatArrays,\n ...options\n }: any = params.pop();\n\n if (params.length <= 0) return target;\n\n const WD = WalkDef(options);\n const _options = {\n ...options,\n symbol: symbolMerge,\n ...WD.Scalar({ walkScalarInc: true }),\n ...WD.Atomic({ walkAtomicInc: true }),\n ...WD.Plain({ walkPlainInc: true }),\n ...WD.Rich({ walkRichExc: deepCloneRich }),\n ...WD.Func({\n walkFuncInc: {\n class: false,\n generator: false\n }\n }) as any\n } as any;\n\n const hasCustomMerge = Symbol.Has(symbolMerge);\n\n function mergeValue(t: unknown, s: unknown, ownKey?: TS.Key): unknown {\n if (hasCustomMerge(t)) return (t as any)[symbolMerge](s);\n\n const nt = nodeTypeOf(t);\n const ns = nodeTypeOf(s);\n\n if (nt !== ns || 'scalar' === nt || 'atomic' === nt)\n return deepClone(s, options);\n\n if ('plain' === nt || 'func' === nt) {\n const entries = plainEntries(s as object, options.ownProps, 'func' === nt);\n for (const [key, sChild] of entries) {\n if (!resolveWalkRule(_options, nodeTypeOf(sChild), sChild).walk) continue;\n\n if (resolveOption(nullAsDelete, sChild, key) && null === sChild) {\n delete (t as any)[key];\n continue;\n }\n\n if (resolveOption(onlyExists, sChild, key) && !(key in (t as object))) continue;\n\n (t as any)[key] = mergeValue((t as any)[key], sChild, key);\n }\n return t;\n }\n\n const tv = t as object;\n const sv = s as object;\n\n if (Array.isArray(tv)) {\n const arr = tv as unknown[];\n const src = sv as unknown[];\n\n if (resolveOption(concatArrays, arr, ownKey))\n for (const sChild of src) arr.push(deepClone(sChild, options));\n\n else\n for (let i = 0; i < src.length; i++) {\n const sChild = src[i];\n if (!resolveWalkRule(_options, nodeTypeOf(sChild), sChild).walk) continue;\n\n if (resolveOption(nullAsDelete, sChild, i) && null === sChild) {\n if (i < arr.length) arr.splice(i, 1);\n continue;\n }\n\n if (i >= arr.length) {\n if (!resolveOption(onlyExists, sChild, i)) arr.push(deepClone(sChild, options));\n } else\n arr[i] = mergeValue(arr[i], sChild, i);\n }\n\n if (resolveOption(isUniqueArrItems, arr, ownKey))\n arr.splice(0, arr.length, ...new Set(arr));\n\n return arr;\n }\n\n if (tv instanceof Set) {\n for (const sChild of sv as Set<unknown>) {\n if (resolveOption(onlyExists, sChild, ownKey) && !tv.has(sChild)) continue;\n tv.add('scalar' === nodeTypeOf(sChild) ? sChild : deepClone(sChild, options));\n }\n return tv;\n }\n\n if (tv instanceof Map) {\n for (const [mapKey, sChild] of sv as Map<unknown, unknown>) {\n const k = mapKey as TS.Key;\n\n if (resolveOption(nullAsDelete, sChild, k) && null === sChild) {\n tv.delete(mapKey);\n continue;\n }\n\n if (resolveOption(onlyExists, sChild, k) && !tv.has(mapKey)) continue;\n\n tv.set(\n mapKey,\n tv.has(mapKey) ? mergeValue(tv.get(mapKey), sChild, k) : deepClone(sChild, options)\n );\n }\n return tv;\n }\n\n throw Error(`Cannot merge rich object \"${(tv as any)?.constructor?.name}\"`);\n }\n\n let result: any = deepClone(target, options);\n for (const source of params)\n result = mergeValue(result, source);\n\n return result as T;\n }\n deepMerge.symbol = symbolMerge;\n //#endregion\n\n return {\n NodeTypes: LowLevel.TypeGroups,\n is: deepOpsIs,\n freeze: deepFreeze,\n clone: deepClone,\n merge: deepMerge\n } as unknown as Code.DeepOps;\n });\n}\n","import Func = AVStantso.Func;\nimport X = AVStantso.X;\nimport Generic = AVStantso.Generic;\nimport DeepOps = AVStantso.DeepOps;\nexport { Func, X, Generic, DeepOps };\n"],"names":["avstantso","AVStantso"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@avstantso/core",
3
3
  "license": "MIT",
4
4
  "author": "avstantso",
5
- "version": "1.2.2",
5
+ "version": "1.3.0",
6
6
  "description": "Core global AVStantso singleton",
7
7
  "keywords": [
8
8
  "AVStantso singleton"
@@ -23,6 +23,6 @@
23
23
  "test": "NODE_ENV=test jest --coverage"
24
24
  },
25
25
  "dependencies": {
26
- "@avstantso/std-ext": "1.2.2"
26
+ "@avstantso/std-ext": "1.2.3"
27
27
  }
28
28
  }