@nmtjs/common 0.12.6 → 0.12.8

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/package.json CHANGED
@@ -9,12 +9,11 @@
9
9
  }
10
10
  },
11
11
  "files": [
12
- "src",
13
12
  "dist",
14
13
  "LICENSE.md",
15
14
  "README.md"
16
15
  ],
17
- "version": "0.12.6",
16
+ "version": "0.12.8",
18
17
  "scripts": {
19
18
  "build": "tsc",
20
19
  "type-check": "tsc --noEmit"
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './types.ts'
2
- export * from './utils.ts'
package/src/types.ts DELETED
@@ -1,72 +0,0 @@
1
- export interface TypeProvider {
2
- readonly input: unknown
3
- readonly output: unknown
4
- }
5
-
6
- export type CallTypeProvider<T extends TypeProvider, V> = (T & {
7
- input: V
8
- })['output']
9
-
10
- export type ClassConstructor<T = any, A extends any[] = any[]> =
11
- | (abstract new (
12
- ...args: A
13
- ) => T)
14
- | (new (
15
- ...args: A
16
- ) => T)
17
-
18
- export type ClassInstance<T> = T extends ClassConstructor<infer U> ? U : never
19
- export type ClassConstructorArgs<T, A = never> = T extends ClassConstructor<
20
- any,
21
- infer U
22
- >
23
- ? U
24
- : A
25
-
26
- export type Callback<T extends any[] = any[], R = any> = (...args: T) => R
27
- export type OmitFirstItem<T extends any[]> = T extends [any, ...infer U]
28
- ? U
29
- : []
30
- export type ErrorClass = new (...args: any[]) => Error
31
- export type Extra = Record<string, any>
32
- export type Async<T> = T | Promise<T>
33
-
34
- export type ArrayMap<T extends readonly any[], K extends keyof T[number]> = {
35
- [I in keyof T]: T[I][K]
36
- }
37
-
38
- export type UnionToIntersection<U> = (
39
- U extends any
40
- ? (k: U) => void
41
- : never
42
- ) extends (k: infer I) => void
43
- ? I
44
- : never
45
-
46
- export type Merge<
47
- T1 extends Record<string, any>,
48
- T2 extends Record<string, any>,
49
- > = {
50
- [K in keyof T1 | keyof T2]: K extends keyof T2
51
- ? T2[K]
52
- : K extends keyof T1
53
- ? T1[K]
54
- : never
55
- }
56
-
57
- export type OneOf<
58
- TypesArray extends any[],
59
- Res = never,
60
- AllProperties = MergeTypes<TypesArray>,
61
- > = TypesArray extends [infer Head, ...infer Rem]
62
- ? OneOf<Rem, Res | OnlyFirst<Head, AllProperties>, AllProperties>
63
- : Res
64
-
65
- type MergeTypes<TypesArray extends any[], Res = {}> = TypesArray extends [
66
- infer Head,
67
- ...infer Rem,
68
- ]
69
- ? MergeTypes<Rem, Res & Head>
70
- : Res
71
-
72
- type OnlyFirst<F, S> = F & { [Key in keyof Omit<S, keyof F>]?: never }
package/src/utils.ts DELETED
@@ -1,139 +0,0 @@
1
- import type { Callback } from './types.ts'
2
-
3
- export const noopFn = () => {}
4
-
5
- export function merge<T extends any[]>(...objects: T) {
6
- return Object.assign({}, ...objects)
7
- }
8
-
9
- export function defer<T extends Callback>(
10
- cb: T,
11
- ms = 1,
12
- ...args: Parameters<T>
13
- ): Promise<Awaited<ReturnType<T>>> {
14
- return new Promise((resolve, reject) =>
15
- setTimeout(async () => {
16
- try {
17
- resolve(await cb(...args))
18
- } catch (error) {
19
- reject(error)
20
- }
21
- }, ms),
22
- )
23
- }
24
-
25
- export function range(count: number, start = 0) {
26
- let current = start
27
- return {
28
- [Symbol.iterator]() {
29
- return {
30
- next() {
31
- if (current < count) {
32
- return { done: false, value: current++ }
33
- } else {
34
- return { done: true, value: current }
35
- }
36
- },
37
- }
38
- },
39
- }
40
- }
41
-
42
- export function debounce(cb: Callback, delay: number) {
43
- let timer: any
44
- const clear = () => timer && clearTimeout(timer)
45
- const fn = (...args: any[]) => {
46
- clear()
47
- timer = setTimeout(cb, delay, ...args)
48
- }
49
- return Object.assign(fn, { clear })
50
- }
51
-
52
- // TODO: Promise.withResolvers?
53
- export interface InteractivePromise<T = any> {
54
- promise: Promise<T>
55
- resolve: (value: T) => void
56
- reject: (error: any) => void
57
- toArgs: () => [resolve: this['resolve'], reject: this['reject']]
58
- }
59
- // TODO: Promise.withResolvers?
60
- export function createPromise<T>(): InteractivePromise<T> {
61
- let resolve: InteractivePromise<T>['resolve']
62
- let reject: InteractivePromise<T>['reject']
63
- const promise = new Promise<T>((res, rej) => {
64
- resolve = res
65
- reject = rej
66
- })
67
- // @ts-expect-error
68
- return { resolve, reject, promise, toArgs: () => [resolve, reject] }
69
- }
70
-
71
- export function onAbort<T extends Callback>(
72
- signal: AbortSignal,
73
- cb: T,
74
- reason?: any,
75
- ) {
76
- const listener = () => cb(reason ?? signal.reason)
77
- signal.addEventListener('abort', listener, { once: true })
78
- return () => signal.removeEventListener('abort', listener)
79
- }
80
-
81
- export function withTimeout(
82
- value: Promise<any>,
83
- timeout: number,
84
- timeoutError: Error,
85
- controller?: AbortController,
86
- ) {
87
- return new Promise((resolve, reject) => {
88
- const timer = setTimeout(reject, timeout, timeoutError)
89
- const clearTimer = () => clearTimeout(timer)
90
- const rejectWithTimeout = (error: any) => {
91
- reject(error)
92
- controller?.abort(error)
93
- }
94
- value.then(resolve).catch(rejectWithTimeout).finally(clearTimer)
95
- })
96
- }
97
-
98
- export function tryCaptureStackTrace(depth = 0) {
99
- return (
100
- new Error().stack
101
- ?.split('\n')
102
- .slice(4 + depth)
103
- .join('\n') ?? undefined
104
- )
105
- }
106
-
107
- export function isGeneratorFunction(value: any): value is GeneratorFunction {
108
- return (
109
- typeof value === 'function' &&
110
- value.constructor.name === 'GeneratorFunction'
111
- )
112
- }
113
-
114
- export function isAsyncGeneratorFunction(
115
- value: any,
116
- ): value is AsyncGeneratorFunction {
117
- return (
118
- typeof value === 'function' &&
119
- value.constructor.name === 'AsyncGeneratorFunction'
120
- )
121
- }
122
-
123
- export function throwError(message: string, ErrorClass = Error): never {
124
- throw new ErrorClass(message)
125
- }
126
-
127
- export function once(target: EventTarget, event: string) {
128
- return new Promise<void>((resolve) => {
129
- target.addEventListener(event, () => resolve(), { once: true })
130
- })
131
- }
132
-
133
- export function onceAborted(signal: AbortSignal) {
134
- return once(signal, 'abort')
135
- }
136
-
137
- export function isAbortError(error: any): boolean {
138
- return error.name === 'AbortError' || error.code === DOMException.ABORT_ERR
139
- }