@nmtjs/common 0.7.3 → 0.7.5

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/types.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"","names":[],"sources":["src/types.ts"],"sourcesContent":["export interface TypeProvider {\n readonly input: unknown\n readonly output: unknown\n}\n\nexport type CallTypeProvider<T extends TypeProvider, V> = (T & {\n input: V\n})['output']\n\nexport type ClassConstructor<T> = new (...args: any[]) => T\nexport type Callback<T extends any[] = any[], R = any> = (...args: T) => R\nexport type OmitFirstItem<T extends any[]> = T extends [any, ...infer U]\n ? U\n : []\nexport type ErrorClass = new (...args: any[]) => Error\nexport type Extra = Record<string, any>\nexport type Async<T> = T | Promise<T>\n\nexport type UnionToIntersection<U> = (\n U extends any\n ? (k: U) => void\n : never\n) extends (k: infer I) => void\n ? I\n : never\n\nexport type Merge<\n T1 extends Record<string, any>,\n T2 extends Record<string, any>,\n> = {\n [K in keyof T1 | keyof T2]: K extends keyof T2\n ? T2[K]\n : K extends keyof T1\n ? T1[K]\n : never\n}\n"],"version":3}
1
+ {"mappings":"","names":[],"sources":["src/types.ts"],"sourcesContent":["export interface TypeProvider {\n readonly input: unknown\n readonly output: unknown\n}\n\nexport type CallTypeProvider<T extends TypeProvider, V> = (T & {\n input: V\n})['output']\n\nexport type ClassConstructor<T> = new (...args: any[]) => T\nexport type ClassInstance<T> = T extends ClassConstructor<infer U> ? U : never\nexport type ClassConstructorArgs<T, A = never> = T extends new (\n ...args: infer U\n) => any\n ? U\n : A\n\nexport type Callback<T extends any[] = any[], R = any> = (...args: T) => R\nexport type OmitFirstItem<T extends any[]> = T extends [any, ...infer U]\n ? U\n : []\nexport type ErrorClass = new (...args: any[]) => Error\nexport type Extra = Record<string, any>\nexport type Async<T> = T | Promise<T>\n\nexport type UnionToIntersection<U> = (\n U extends any\n ? (k: U) => void\n : never\n) extends (k: infer I) => void\n ? I\n : never\n\nexport type Merge<\n T1 extends Record<string, any>,\n T2 extends Record<string, any>,\n> = {\n [K in keyof T1 | keyof T2]: K extends keyof T2\n ? T2[K]\n : K extends keyof T1\n ? T1[K]\n : never\n}\n"],"version":3}
package/dist/utils.js CHANGED
@@ -68,8 +68,8 @@ export function withTimeout(value, timeout, timeoutError, controller) {
68
68
  value.then(resolve).catch(rejectWithTimeout).finally(clearTimer);
69
69
  });
70
70
  }
71
- export function tryCaptureStackTrace() {
72
- return new Error().stack?.split("\n").slice(3).join("\n") ?? undefined;
71
+ export function tryCaptureStackTrace(depth = 0) {
72
+ return new Error().stack?.split("\n").slice(3 + depth).join("\n") ?? undefined;
73
73
  }
74
74
  export function isGeneratorFunction(value) {
75
75
  return typeof value === "function" && value.constructor.name === "GeneratorFunction";
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"AAEA,OAAO,MAAM,SAAS,MAAM,CAAE;AAE9B,OAAO,SAAS,MAAuB,GAAG,SAAY;AACpD,QAAO,OAAO,OAAO,CAAE,GAAE,GAAG,QAAQ;AACrC;AAED,OAAO,SAAS,MACdA,IACA,KAAK,GACL,GAAG,MAC8B;AACjC,QAAO,IAAI,QAAQ,CAAC,SAAS,WAC3B,WAAW,YAAY;AACrB,MAAI;AACF,WAAQ,MAAM,GAAG,GAAG,KAAK,CAAC;EAC3B,SAAQ,OAAO;AACd,UAAO,MAAM;EACd;CACF,GAAE,GAAG;AAET;AAED,OAAO,SAAS,MAAMC,OAAe,QAAQ,GAAG;CAC9C,IAAI,UAAU;AACd,QAAO,EACL,CAAC,OAAO,YAAY;AAClB,SAAO,EACL,OAAO;AACL,OAAI,UAAU,OAAO;AACnB,WAAO;KAAE,MAAM;KAAO,OAAO;IAAW;GACzC,OAAM;AACL,WAAO;KAAE,MAAM;KAAM,OAAO;IAAS;GACtC;EACF,EACF;CACF,EACF;AACF;AAED,OAAO,SAAS,SAASC,IAAcC,OAAe;CACpD,IAAIC;CACJ,MAAM,QAAQ,MAAM,SAAS,aAAa,MAAM;CAChD,MAAM,KAAK,CAAC,GAAG,SAAgB;AAC7B,SAAO;AACP,UAAQ,WAAW,IAAI,OAAO,GAAG,KAAK;CACvC;AACD,QAAO,OAAO,OAAO,IAAI,EAAE,MAAO,EAAC;AACpC;AAUD,OAAO,SAAS,gBAA0C;CACxD,IAAIC;CACJ,IAAIC;CACJ,MAAM,UAAU,IAAI,QAAW,CAAC,GAAG,SAAS;AAC1C,YAAU,KAAK;AACf,WAAS,KAAK;CACf;AAED,QAAO;EAAE;EAAS;EAAQ;EAAS,QAAQ,MAAM,CAAC,SAAS,MAAO;CAAE;AACrE;AAED,OAAO,SAAS,QACdC,QACAP,IACAQ,QACA;CACA,MAAM,WAAW,MAAM,GAAG,UAAU,OAAO,OAAO;AAClD,QAAO,iBAAiB,SAAS,UAAU,EAAE,MAAM,KAAM,EAAC;AAC1D,QAAO,MAAM,OAAO,oBAAoB,SAAS,SAAS;AAC3D;AAED,OAAO,SAAS,YACdC,OACAC,SACAC,cACAC,YACA;AACA,QAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;EACtC,MAAM,QAAQ,WAAW,QAAQ,SAAS,aAAa;EACvD,MAAM,aAAa,MAAM,aAAa,MAAM;EAC5C,MAAM,oBAAoB,CAACC,UAAe;AACxC,UAAO,MAAM;AACb,eAAY,MAAM,MAAM;EACzB;AACD,QAAM,KAAK,QAAQ,CAAC,MAAM,kBAAkB,CAAC,QAAQ,WAAW;CACjE;AACF;AAED,OAAO,SAAS,uBAAuB;AACrC,QAAO,IAAI,QAAQ,OAAO,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI;AAC9D;AAED,OAAO,SAAS,oBAAoBC,OAAwC;AAC1E,eACS,UAAU,cACjB,MAAM,YAAY,SAAS;AAE9B;AAED,OAAO,SAAS,yBACdA,OACiC;AACjC,eACS,UAAU,cACjB,MAAM,YAAY,SAAS;AAE9B;AAED,OAAO,SAAS,WAAWC,SAAiB,aAAa,OAAc;AACrE,OAAM,IAAI,WAAW;AACtB;AAED,OAAO,SAAS,KAAKC,QAAqBC,OAAe;AACvD,QAAO,IAAI,QAAc,CAAC,YAAY;AACpC,SAAO,iBAAiB,OAAO,MAAM,SAAS,EAAE,EAAE,MAAM,KAAM,EAAC;CAChE;AACF;AAED,OAAO,SAAS,YAAYV,QAAqB;AAC/C,QAAO,KAAK,QAAQ,QAAQ;AAC7B","names":["cb: T","count: number","cb: Callback","delay: number","timer: any","resolve: InteractivePromise<T>['resolve']","reject: InteractivePromise<T>['reject']","signal: AbortSignal","reason?: any","value: Promise<any>","timeout: number","timeoutError: Error","controller?: AbortController","error: any","value: any","message: string","target: EventTarget","event: string"],"sources":["src/utils.ts"],"sourcesContent":["import type { Callback } from './types.ts'\n\nexport const noopFn = () => {}\n\nexport function merge<T extends any[]>(...objects: T) {\n return Object.assign({}, ...objects)\n}\n\nexport function defer<T extends Callback>(\n cb: T,\n ms = 1,\n ...args: Parameters<T>\n): Promise<Awaited<ReturnType<T>>> {\n return new Promise((resolve, reject) =>\n setTimeout(async () => {\n try {\n resolve(await cb(...args))\n } catch (error) {\n reject(error)\n }\n }, ms),\n )\n}\n\nexport function range(count: number, start = 0) {\n let current = start\n return {\n [Symbol.iterator]() {\n return {\n next() {\n if (current < count) {\n return { done: false, value: current++ }\n } else {\n return { done: true, value: current }\n }\n },\n }\n },\n }\n}\n\nexport function debounce(cb: Callback, delay: number) {\n let timer: any\n const clear = () => timer && clearTimeout(timer)\n const fn = (...args: any[]) => {\n clear()\n timer = setTimeout(cb, delay, ...args)\n }\n return Object.assign(fn, { clear })\n}\n\n// TODO: Promise.withResolvers?\nexport type InteractivePromise<T = any> = {\n promise: Promise<T>\n resolve: (value: T) => void\n reject: (error: any) => void\n toArgs: () => [resolve: (value: T) => void, reject: (error: any) => void]\n}\n\nexport function createPromise<T>(): InteractivePromise<T> {\n let resolve: InteractivePromise<T>['resolve']\n let reject: InteractivePromise<T>['reject']\n const promise = new Promise<T>((...args) => {\n resolve = args[0]\n reject = args[1]\n })\n // @ts-expect-error\n return { resolve, reject, promise, toArgs: () => [resolve, reject] }\n}\n\nexport function onAbort<T extends Callback>(\n signal: AbortSignal,\n cb: T,\n reason?: any,\n) {\n const listener = () => cb(reason ?? signal.reason)\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n}\n\nexport function withTimeout(\n value: Promise<any>,\n timeout: number,\n timeoutError: Error,\n controller?: AbortController,\n) {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(reject, timeout, timeoutError)\n const clearTimer = () => clearTimeout(timer)\n const rejectWithTimeout = (error: any) => {\n reject(error)\n controller?.abort(error)\n }\n value.then(resolve).catch(rejectWithTimeout).finally(clearTimer)\n })\n}\n\nexport function tryCaptureStackTrace() {\n return new Error().stack?.split('\\n').slice(3).join('\\n') ?? undefined\n}\n\nexport function isGeneratorFunction(value: any): value is GeneratorFunction {\n return (\n typeof value === 'function' &&\n value.constructor.name === 'GeneratorFunction'\n )\n}\n\nexport function isAsyncGeneratorFunction(\n value: any,\n): value is AsyncGeneratorFunction {\n return (\n typeof value === 'function' &&\n value.constructor.name === 'AsyncGeneratorFunction'\n )\n}\n\nexport function throwError(message: string, ErrorClass = Error): never {\n throw new ErrorClass(message)\n}\n\nexport function once(target: EventTarget, event: string) {\n return new Promise<void>((resolve) => {\n target.addEventListener(event, () => resolve(), { once: true })\n })\n}\n\nexport function onceAborted(signal: AbortSignal) {\n return once(signal, 'abort')\n}\n"],"version":3}
1
+ {"mappings":"AAEA,OAAO,MAAM,SAAS,MAAM,CAAE;AAE9B,OAAO,SAAS,MAAuB,GAAG,SAAY;AACpD,QAAO,OAAO,OAAO,CAAE,GAAE,GAAG,QAAQ;AACrC;AAED,OAAO,SAAS,MACdA,IACA,KAAK,GACL,GAAG,MAC8B;AACjC,QAAO,IAAI,QAAQ,CAAC,SAAS,WAC3B,WAAW,YAAY;AACrB,MAAI;AACF,WAAQ,MAAM,GAAG,GAAG,KAAK,CAAC;EAC3B,SAAQ,OAAO;AACd,UAAO,MAAM;EACd;CACF,GAAE,GAAG;AAET;AAED,OAAO,SAAS,MAAMC,OAAe,QAAQ,GAAG;CAC9C,IAAI,UAAU;AACd,QAAO,EACL,CAAC,OAAO,YAAY;AAClB,SAAO,EACL,OAAO;AACL,OAAI,UAAU,OAAO;AACnB,WAAO;KAAE,MAAM;KAAO,OAAO;IAAW;GACzC,OAAM;AACL,WAAO;KAAE,MAAM;KAAM,OAAO;IAAS;GACtC;EACF,EACF;CACF,EACF;AACF;AAED,OAAO,SAAS,SAASC,IAAcC,OAAe;CACpD,IAAIC;CACJ,MAAM,QAAQ,MAAM,SAAS,aAAa,MAAM;CAChD,MAAM,KAAK,CAAC,GAAG,SAAgB;AAC7B,SAAO;AACP,UAAQ,WAAW,IAAI,OAAO,GAAG,KAAK;CACvC;AACD,QAAO,OAAO,OAAO,IAAI,EAAE,MAAO,EAAC;AACpC;AAUD,OAAO,SAAS,gBAA0C;CACxD,IAAIC;CACJ,IAAIC;CACJ,MAAM,UAAU,IAAI,QAAW,CAAC,GAAG,SAAS;AAC1C,YAAU,KAAK;AACf,WAAS,KAAK;CACf;AAED,QAAO;EAAE;EAAS;EAAQ;EAAS,QAAQ,MAAM,CAAC,SAAS,MAAO;CAAE;AACrE;AAED,OAAO,SAAS,QACdC,QACAP,IACAQ,QACA;CACA,MAAM,WAAW,MAAM,GAAG,UAAU,OAAO,OAAO;AAClD,QAAO,iBAAiB,SAAS,UAAU,EAAE,MAAM,KAAM,EAAC;AAC1D,QAAO,MAAM,OAAO,oBAAoB,SAAS,SAAS;AAC3D;AAED,OAAO,SAAS,YACdC,OACAC,SACAC,cACAC,YACA;AACA,QAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;EACtC,MAAM,QAAQ,WAAW,QAAQ,SAAS,aAAa;EACvD,MAAM,aAAa,MAAM,aAAa,MAAM;EAC5C,MAAM,oBAAoB,CAACC,UAAe;AACxC,UAAO,MAAM;AACb,eAAY,MAAM,MAAM;EACzB;AACD,QAAM,KAAK,QAAQ,CAAC,MAAM,kBAAkB,CAAC,QAAQ,WAAW;CACjE;AACF;AAED,OAAO,SAAS,qBAAqB,QAAQ,GAAG;AAC9C,QACE,IAAI,QAAQ,OACR,MAAM,KAAK,CACZ,MAAM,IAAI,MAAM,CAChB,KAAK,KAAK,IAAI;AAEpB;AAED,OAAO,SAAS,oBAAoBC,OAAwC;AAC1E,eACS,UAAU,cACjB,MAAM,YAAY,SAAS;AAE9B;AAED,OAAO,SAAS,yBACdA,OACiC;AACjC,eACS,UAAU,cACjB,MAAM,YAAY,SAAS;AAE9B;AAED,OAAO,SAAS,WAAWC,SAAiB,aAAa,OAAc;AACrE,OAAM,IAAI,WAAW;AACtB;AAED,OAAO,SAAS,KAAKC,QAAqBC,OAAe;AACvD,QAAO,IAAI,QAAc,CAAC,YAAY;AACpC,SAAO,iBAAiB,OAAO,MAAM,SAAS,EAAE,EAAE,MAAM,KAAM,EAAC;CAChE;AACF;AAED,OAAO,SAAS,YAAYV,QAAqB;AAC/C,QAAO,KAAK,QAAQ,QAAQ;AAC7B","names":["cb: T","count: number","cb: Callback","delay: number","timer: any","resolve: InteractivePromise<T>['resolve']","reject: InteractivePromise<T>['reject']","signal: AbortSignal","reason?: any","value: Promise<any>","timeout: number","timeoutError: Error","controller?: AbortController","error: any","value: any","message: string","target: EventTarget","event: string"],"sources":["src/utils.ts"],"sourcesContent":["import type { Callback } from './types.ts'\n\nexport const noopFn = () => {}\n\nexport function merge<T extends any[]>(...objects: T) {\n return Object.assign({}, ...objects)\n}\n\nexport function defer<T extends Callback>(\n cb: T,\n ms = 1,\n ...args: Parameters<T>\n): Promise<Awaited<ReturnType<T>>> {\n return new Promise((resolve, reject) =>\n setTimeout(async () => {\n try {\n resolve(await cb(...args))\n } catch (error) {\n reject(error)\n }\n }, ms),\n )\n}\n\nexport function range(count: number, start = 0) {\n let current = start\n return {\n [Symbol.iterator]() {\n return {\n next() {\n if (current < count) {\n return { done: false, value: current++ }\n } else {\n return { done: true, value: current }\n }\n },\n }\n },\n }\n}\n\nexport function debounce(cb: Callback, delay: number) {\n let timer: any\n const clear = () => timer && clearTimeout(timer)\n const fn = (...args: any[]) => {\n clear()\n timer = setTimeout(cb, delay, ...args)\n }\n return Object.assign(fn, { clear })\n}\n\n// TODO: Promise.withResolvers?\nexport type InteractivePromise<T = any> = {\n promise: Promise<T>\n resolve: (value: T) => void\n reject: (error: any) => void\n toArgs: () => [resolve: (value: T) => void, reject: (error: any) => void]\n}\n\nexport function createPromise<T>(): InteractivePromise<T> {\n let resolve: InteractivePromise<T>['resolve']\n let reject: InteractivePromise<T>['reject']\n const promise = new Promise<T>((...args) => {\n resolve = args[0]\n reject = args[1]\n })\n // @ts-expect-error\n return { resolve, reject, promise, toArgs: () => [resolve, reject] }\n}\n\nexport function onAbort<T extends Callback>(\n signal: AbortSignal,\n cb: T,\n reason?: any,\n) {\n const listener = () => cb(reason ?? signal.reason)\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n}\n\nexport function withTimeout(\n value: Promise<any>,\n timeout: number,\n timeoutError: Error,\n controller?: AbortController,\n) {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(reject, timeout, timeoutError)\n const clearTimer = () => clearTimeout(timer)\n const rejectWithTimeout = (error: any) => {\n reject(error)\n controller?.abort(error)\n }\n value.then(resolve).catch(rejectWithTimeout).finally(clearTimer)\n })\n}\n\nexport function tryCaptureStackTrace(depth = 0) {\n return (\n new Error().stack\n ?.split('\\n')\n .slice(3 + depth)\n .join('\\n') ?? undefined\n )\n}\n\nexport function isGeneratorFunction(value: any): value is GeneratorFunction {\n return (\n typeof value === 'function' &&\n value.constructor.name === 'GeneratorFunction'\n )\n}\n\nexport function isAsyncGeneratorFunction(\n value: any,\n): value is AsyncGeneratorFunction {\n return (\n typeof value === 'function' &&\n value.constructor.name === 'AsyncGeneratorFunction'\n )\n}\n\nexport function throwError(message: string, ErrorClass = Error): never {\n throw new ErrorClass(message)\n}\n\nexport function once(target: EventTarget, event: string) {\n return new Promise<void>((resolve) => {\n target.addEventListener(event, () => resolve(), { once: true })\n })\n}\n\nexport function onceAborted(signal: AbortSignal) {\n return once(signal, 'abort')\n}\n"],"version":3}
package/package.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "LICENSE.md",
14
14
  "README.md"
15
15
  ],
16
- "version": "0.7.3",
16
+ "version": "0.7.5",
17
17
  "scripts": {
18
18
  "build": "neemata-build --root=./src './**/*.ts'",
19
19
  "type-check": "tsc --noEmit"
package/src/types.ts CHANGED
@@ -8,6 +8,13 @@ export type CallTypeProvider<T extends TypeProvider, V> = (T & {
8
8
  })['output']
9
9
 
10
10
  export type ClassConstructor<T> = new (...args: any[]) => T
11
+ export type ClassInstance<T> = T extends ClassConstructor<infer U> ? U : never
12
+ export type ClassConstructorArgs<T, A = never> = T extends new (
13
+ ...args: infer U
14
+ ) => any
15
+ ? U
16
+ : A
17
+
11
18
  export type Callback<T extends any[] = any[], R = any> = (...args: T) => R
12
19
  export type OmitFirstItem<T extends any[]> = T extends [any, ...infer U]
13
20
  ? U
package/src/utils.ts CHANGED
@@ -95,8 +95,13 @@ export function withTimeout(
95
95
  })
96
96
  }
97
97
 
98
- export function tryCaptureStackTrace() {
99
- return new Error().stack?.split('\n').slice(3).join('\n') ?? undefined
98
+ export function tryCaptureStackTrace(depth = 0) {
99
+ return (
100
+ new Error().stack
101
+ ?.split('\n')
102
+ .slice(3 + depth)
103
+ .join('\n') ?? undefined
104
+ )
100
105
  }
101
106
 
102
107
  export function isGeneratorFunction(value: any): value is GeneratorFunction {