watcher/ts/tiny-readdir/utils.ts
2024-04-18 21:12:37 +02:00

44 lines
695 B
TypeScript

/* IMPORT */
import makeNakedPromise from '../promise-make-naked/index.js';
import type {Callback} from './types.js';
/* MAIN */
const isFunction = ( value: unknown ): value is Function => {
return ( typeof value === 'function' );
};
const makeCounterPromise = (): { promise: Promise<void>, increment: Callback, decrement: Callback } => {
const {promise, resolve} = makeNakedPromise<void> ();
let counter = 0;
const increment = (): void => {
counter += 1;
};
const decrement = (): void => {
counter -= 1;
if ( counter ) return;
resolve ();
};
return { promise, increment, decrement };
};
/* EXPORT */
export {isFunction, makeCounterPromise};