run npm install to generate a package lock
This commit is contained in:
48
node_modules/promise-make-counter/src/index.ts
generated
vendored
Normal file
48
node_modules/promise-make-counter/src/index.ts
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
|
||||
/* IMPORT */
|
||||
|
||||
import makeNakedPromise from 'promise-make-naked';
|
||||
import type {Result} from './types';
|
||||
|
||||
/* MAIN */
|
||||
|
||||
const makeCounterPromise = (): Result => {
|
||||
|
||||
const {promise, resolve, isPending} = makeNakedPromise<void> ();
|
||||
|
||||
let counter = 0;
|
||||
|
||||
const increment = (): void => {
|
||||
|
||||
counter += 1;
|
||||
|
||||
};
|
||||
|
||||
const decrement = (): void => {
|
||||
|
||||
counter -= 1;
|
||||
|
||||
if ( counter ) return;
|
||||
|
||||
resolve ();
|
||||
|
||||
};
|
||||
|
||||
const init = (): void => { // Accounting for no increment/decrement calls
|
||||
|
||||
increment ();
|
||||
|
||||
queueMicrotask ( decrement );
|
||||
|
||||
};
|
||||
|
||||
init ();
|
||||
|
||||
return { promise, isPending, increment, decrement };
|
||||
|
||||
};
|
||||
|
||||
/* EXPORT */
|
||||
|
||||
export default makeCounterPromise;
|
||||
export type {Result};
|
||||
Reference in New Issue
Block a user