web-highlighter
Version:
✨A no-runtime dependency lib for text highlighting & persistence on any website ✨🖍️
38 lines (28 loc) • 692 B
text/typescript
interface Deferred<T> {
promise: Promise<T>;
resolve: (args: T) => unknown;
reject: (e?: unknown) => unknown;
}
export default function getDeferred<T>(): Deferred<T> {
let resolve: (args: T) => unknown;
let reject: (e?: unknown) => unknown;
const promise = new Promise<T>((r, j) => {
resolve = r;
reject = j;
});
return {
promise,
resolve,
reject,
};
}
export const resolve = <T>(data) => {
const defer = getDeferred<T>();
defer.resolve(data);
return defer.promise;
};
export const reject = <T>(data) => {
const defer = getDeferred<T>();
defer.reject(data);
return defer.promise;
};