@avstantso/core 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## [1.2.3] - 2026-06-19
5
+
6
+ ### Changed
7
+
8
+ - Makes singleton idempotent for VM-reload. Like it need for Jest
9
+
10
+
4
11
  ## [1.2.2] - 2026-02-04
5
12
 
6
13
  ### Changed
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ require('@avstantso/std-ext');
44
44
  get(target, p) {
45
45
  return p in target
46
46
  ? Reflect.get(target, p)
47
- : p in level
47
+ : p in level && Object.isExtensible(level[p])
48
48
  ? RegLevel(level[p])
49
49
  : regField.bind(level, p);
50
50
  }
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/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 && Object.isExtensible(level[p])\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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"}
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.2.3",
6
6
  "description": "Core global AVStantso singleton",
7
7
  "keywords": [
8
8
  "AVStantso singleton"