Refactor nip46

This commit is contained in:
Jon Staab
2024-12-02 15:17:22 -08:00
parent 2fa49e0dec
commit d52b192daa
3 changed files with 349 additions and 248 deletions
+19 -6
View File
@@ -1,14 +1,27 @@
export type Deferred<T> = Promise<T> & {
resolve: (arg: T) => void
reject: (arg: T) => void
export type CustomPromise<T, E> = Promise<T> & {
__errorType: E
}
export const defer = <T>(): Deferred<T> => {
export function makePromise<T, E>(
executor: (
resolve: (value: T | PromiseLike<T>) => void,
reject: (reason: E) => void
) => void
): CustomPromise<T, E> {
return new Promise(executor) as CustomPromise<T, E>
}
export type Deferred<T, E = T> = CustomPromise<T, E> & {
resolve: (arg: T) => void
reject: (arg: E) => void
}
export const defer = <T, E = T>(): Deferred<T, E> => {
let resolve, reject
const p = new Promise((resolve_, reject_) => {
const p = makePromise((resolve_, reject_) => {
resolve = resolve_
reject = reject_
})
return (Object.assign(p, {resolve, reject}) as unknown) as Deferred<T>
return (Object.assign(p, {resolve, reject}) as unknown) as Deferred<T, E>
}