update
This commit is contained in:
13
dist_ts/constants.d.ts
vendored
Normal file
13
dist_ts/constants.d.ts
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
declare const DEBOUNCE = 300;
|
||||
declare const DEPTH = 20;
|
||||
declare const LIMIT = 10000000;
|
||||
declare const PLATFORM: NodeJS.Platform;
|
||||
declare const IS_LINUX: boolean;
|
||||
declare const IS_MAC: boolean;
|
||||
declare const IS_WINDOWS: boolean;
|
||||
declare const HAS_NATIVE_RECURSION: boolean;
|
||||
declare const POLLING_INTERVAL = 3000;
|
||||
declare const POLLING_TIMEOUT = 20000;
|
||||
declare const RENAME_TIMEOUT = 1250;
|
||||
export { DEBOUNCE, DEPTH, LIMIT, HAS_NATIVE_RECURSION, IS_LINUX, IS_MAC, IS_WINDOWS, PLATFORM, POLLING_INTERVAL, POLLING_TIMEOUT, RENAME_TIMEOUT };
|
17
dist_ts/constants.js
Normal file
17
dist_ts/constants.js
Normal file
@ -0,0 +1,17 @@
|
||||
/* IMPORT */
|
||||
import os from 'node:os';
|
||||
/* MAIN */
|
||||
const DEBOUNCE = 300;
|
||||
const DEPTH = 20;
|
||||
const LIMIT = 10_000_000;
|
||||
const PLATFORM = os.platform();
|
||||
const IS_LINUX = (PLATFORM === 'linux');
|
||||
const IS_MAC = (PLATFORM === 'darwin');
|
||||
const IS_WINDOWS = (PLATFORM === 'win32');
|
||||
const HAS_NATIVE_RECURSION = IS_MAC || IS_WINDOWS;
|
||||
const POLLING_INTERVAL = 3000;
|
||||
const POLLING_TIMEOUT = 20000;
|
||||
const RENAME_TIMEOUT = 1250;
|
||||
/* EXPORT */
|
||||
export { DEBOUNCE, DEPTH, LIMIT, HAS_NATIVE_RECURSION, IS_LINUX, IS_MAC, IS_WINDOWS, PLATFORM, POLLING_INTERVAL, POLLING_TIMEOUT, RENAME_TIMEOUT };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFlBQVk7QUFFWixPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekIsVUFBVTtBQUVWLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztBQUVyQixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFFakIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDO0FBRXpCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUcsQ0FBQztBQUVoQyxNQUFNLFFBQVEsR0FBRyxDQUFFLFFBQVEsS0FBSyxPQUFPLENBQUUsQ0FBQztBQUUxQyxNQUFNLE1BQU0sR0FBRyxDQUFFLFFBQVEsS0FBSyxRQUFRLENBQUUsQ0FBQztBQUV6QyxNQUFNLFVBQVUsR0FBRyxDQUFFLFFBQVEsS0FBSyxPQUFPLENBQUUsQ0FBQztBQUU1QyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUM7QUFFbEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFFOUIsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDO0FBRTlCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQztBQUU1QixZQUFZO0FBRVosT0FBTyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFDLENBQUMifQ==
|
7
dist_ts/dettle/debounce.d.ts
vendored
Normal file
7
dist_ts/dettle/debounce.d.ts
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
import type { FN, Debounced } from './types.js';
|
||||
declare const debounce: <Args extends unknown[]>(fn: FN<Args, unknown>, wait?: number, options?: {
|
||||
leading?: boolean;
|
||||
trailing?: boolean;
|
||||
maxWait?: number;
|
||||
}) => Debounced<Args>;
|
||||
export default debounce;
|
92
dist_ts/dettle/debounce.js
Normal file
92
dist_ts/dettle/debounce.js
Normal file
@ -0,0 +1,92 @@
|
||||
/* IMPORT */
|
||||
/* MAIN */
|
||||
const debounce = (fn, wait = 1, options) => {
|
||||
/* VARIABLES */
|
||||
wait = Math.max(1, wait);
|
||||
const leading = options?.leading ?? false;
|
||||
const trailing = options?.trailing ?? true;
|
||||
const maxWait = Math.max(options?.maxWait ?? Infinity, wait);
|
||||
let args;
|
||||
let timeout;
|
||||
let timestampCall = 0;
|
||||
let timestampInvoke = 0;
|
||||
/* HELPERS */
|
||||
const getInstantData = () => {
|
||||
const timestamp = Date.now();
|
||||
const elapsedCall = timestamp - timestampCall;
|
||||
const elapsedInvoke = timestamp - timestampInvoke;
|
||||
const isInvoke = (elapsedCall >= wait || elapsedInvoke >= maxWait);
|
||||
return [timestamp, isInvoke];
|
||||
};
|
||||
const invoke = (timestamp) => {
|
||||
timestampInvoke = timestamp;
|
||||
if (!args)
|
||||
return; // This should never happen
|
||||
const _args = args;
|
||||
args = undefined;
|
||||
fn.apply(undefined, _args);
|
||||
};
|
||||
const onCancel = () => {
|
||||
resetTimeout(0);
|
||||
};
|
||||
const onFlush = () => {
|
||||
if (!timeout)
|
||||
return;
|
||||
onCancel();
|
||||
invoke(Date.now());
|
||||
};
|
||||
const onLeading = (timestamp) => {
|
||||
timestampInvoke = timestamp;
|
||||
if (leading)
|
||||
return invoke(timestamp);
|
||||
};
|
||||
const onTrailing = (timestamp) => {
|
||||
if (trailing && args)
|
||||
return invoke(timestamp);
|
||||
args = undefined;
|
||||
};
|
||||
const onTimeout = () => {
|
||||
timeout = undefined;
|
||||
const [timestamp, isInvoking] = getInstantData();
|
||||
if (isInvoking)
|
||||
return onTrailing(timestamp);
|
||||
return updateTimeout(timestamp);
|
||||
};
|
||||
const updateTimeout = (timestamp) => {
|
||||
const elapsedCall = timestamp - timestampCall;
|
||||
const elapsedInvoke = timestamp - timestampInvoke;
|
||||
const remainingCall = wait - elapsedCall;
|
||||
const remainingInvoke = maxWait - elapsedInvoke;
|
||||
const ms = Math.min(remainingCall, remainingInvoke);
|
||||
return resetTimeout(ms);
|
||||
};
|
||||
const resetTimeout = (ms) => {
|
||||
if (timeout)
|
||||
clearTimeout(timeout);
|
||||
if (ms <= 0)
|
||||
return;
|
||||
timeout = setTimeout(onTimeout, ms);
|
||||
};
|
||||
/* DEBOUNCED */
|
||||
const debounced = (...argsLatest) => {
|
||||
const [timestamp, isInvoking] = getInstantData();
|
||||
const hadTimeout = !!timeout;
|
||||
args = argsLatest;
|
||||
timestampCall = timestamp;
|
||||
if (isInvoking || !timeout)
|
||||
resetTimeout(wait);
|
||||
if (isInvoking) {
|
||||
if (!hadTimeout)
|
||||
return onLeading(timestamp);
|
||||
return invoke(timestamp);
|
||||
}
|
||||
};
|
||||
/* DEBOUNCED UTILITIES */
|
||||
debounced.cancel = onCancel;
|
||||
debounced.flush = onFlush;
|
||||
/* RETURN */
|
||||
return debounced;
|
||||
};
|
||||
/* EXPORT */
|
||||
export default debounce;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVib3VuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kZXR0bGUvZGVib3VuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUlaLFVBQVU7QUFFVixNQUFNLFFBQVEsR0FBRyxDQUEyQixFQUFxQixFQUFFLE9BQWUsQ0FBQyxFQUFFLE9BQXFFLEVBQW9CLEVBQUU7SUFFOUssZUFBZTtJQUVmLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFHLENBQUMsRUFBRSxJQUFJLENBQUUsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUssQ0FBQztJQUMxQyxNQUFNLFFBQVEsR0FBRyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQztJQUMzQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFHLE9BQU8sRUFBRSxPQUFPLElBQUksUUFBUSxFQUFFLElBQUksQ0FBRSxDQUFDO0lBRWhFLElBQUksSUFBc0IsQ0FBQztJQUMzQixJQUFJLE9BQWtELENBQUM7SUFDdkQsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztJQUV4QixhQUFhO0lBRWIsTUFBTSxjQUFjLEdBQUcsR0FBc0IsRUFBRTtRQUU3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFHLENBQUM7UUFDOUIsTUFBTSxXQUFXLEdBQUcsU0FBUyxHQUFHLGFBQWEsQ0FBQztRQUM5QyxNQUFNLGFBQWEsR0FBRyxTQUFTLEdBQUcsZUFBZSxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLENBQUUsV0FBVyxJQUFJLElBQUksSUFBSSxhQUFhLElBQUksT0FBTyxDQUFFLENBQUM7UUFFckUsT0FBTyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUUvQixDQUFDLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxDQUFFLFNBQWlCLEVB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
|
3
dist_ts/dettle/index.d.ts
vendored
Normal file
3
dist_ts/dettle/index.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import debounce from './debounce.js';
|
||||
import throttle from './throttle.js';
|
||||
export { debounce, throttle };
|
6
dist_ts/dettle/index.js
Normal file
6
dist_ts/dettle/index.js
Normal file
@ -0,0 +1,6 @@
|
||||
/* IMPORT */
|
||||
import debounce from './debounce.js';
|
||||
import throttle from './throttle.js';
|
||||
/* EXPORT */
|
||||
export { debounce, throttle };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kZXR0bGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUVaLE9BQU8sUUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFFckMsWUFBWTtBQUVaLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFDLENBQUMifQ==
|
6
dist_ts/dettle/throttle.d.ts
vendored
Normal file
6
dist_ts/dettle/throttle.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import type { FN, Throttled } from './types.js';
|
||||
declare const throttle: <Args extends unknown[]>(fn: FN<Args, unknown>, wait?: number, options?: {
|
||||
leading?: boolean;
|
||||
trailing?: boolean;
|
||||
}) => Throttled<Args>;
|
||||
export default throttle;
|
13
dist_ts/dettle/throttle.js
Normal file
13
dist_ts/dettle/throttle.js
Normal file
@ -0,0 +1,13 @@
|
||||
/* IMPORT */
|
||||
import debounce from './debounce.js';
|
||||
/* MAIN */
|
||||
const throttle = (fn, wait = 1, options) => {
|
||||
return debounce(fn, wait, {
|
||||
maxWait: wait,
|
||||
leading: options?.leading ?? true,
|
||||
trailing: options?.trailing ?? true
|
||||
});
|
||||
};
|
||||
/* EXPORT */
|
||||
export default throttle;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGhyb3R0bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kZXR0bGUvdGhyb3R0bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUVaLE9BQU8sUUFBUSxNQUFNLGVBQWUsQ0FBQztBQUdyQyxVQUFVO0FBRVYsTUFBTSxRQUFRLEdBQUcsQ0FBMkIsRUFBcUIsRUFBRSxPQUFlLENBQUMsRUFBRSxPQUFtRCxFQUFvQixFQUFFO0lBRTVKLE9BQU8sUUFBUSxDQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUU7UUFDMUIsT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJO1FBQ2pDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUk7S0FDcEMsQ0FBQyxDQUFDO0FBRUwsQ0FBQyxDQUFDO0FBRUYsWUFBWTtBQUVaLGVBQWUsUUFBUSxDQUFDIn0=
|
11
dist_ts/dettle/types.d.ts
vendored
Normal file
11
dist_ts/dettle/types.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
type Callback = () => void;
|
||||
type FN<Args extends unknown[], Return> = (...args: Args) => Return;
|
||||
type Debounced<Args extends unknown[]> = FN<Args, void> & {
|
||||
cancel: Callback;
|
||||
flush: Callback;
|
||||
};
|
||||
type Throttled<Args extends unknown[]> = FN<Args, void> & {
|
||||
cancel: Callback;
|
||||
flush: Callback;
|
||||
};
|
||||
export type { Callback, FN, Debounced, Throttled };
|
3
dist_ts/dettle/types.js
Normal file
3
dist_ts/dettle/types.js
Normal file
@ -0,0 +1,3 @@
|
||||
/* MAIN */
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9kZXR0bGUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsVUFBVSJ9
|
28
dist_ts/enums.d.ts
vendored
Normal file
28
dist_ts/enums.d.ts
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
declare const enum FileType {
|
||||
DIR = 1,
|
||||
FILE = 2
|
||||
}
|
||||
declare const enum FSTargetEvent {
|
||||
CHANGE = "change",
|
||||
RENAME = "rename"
|
||||
}
|
||||
declare const enum FSWatcherEvent {
|
||||
CHANGE = "change",
|
||||
ERROR = "error"
|
||||
}
|
||||
declare const enum TargetEvent {
|
||||
ADD = "add",
|
||||
ADD_DIR = "addDir",
|
||||
CHANGE = "change",
|
||||
RENAME = "rename",
|
||||
RENAME_DIR = "renameDir",
|
||||
UNLINK = "unlink",
|
||||
UNLINK_DIR = "unlinkDir"
|
||||
}
|
||||
declare const enum WatcherEvent {
|
||||
ALL = "all",
|
||||
CLOSE = "close",
|
||||
ERROR = "error",
|
||||
READY = "ready"
|
||||
}
|
||||
export { FileType, FSTargetEvent, FSWatcherEvent, TargetEvent, WatcherEvent };
|
36
dist_ts/enums.js
Normal file
36
dist_ts/enums.js
Normal file
@ -0,0 +1,36 @@
|
||||
/* MAIN */
|
||||
var FileType;
|
||||
(function (FileType) {
|
||||
FileType[FileType["DIR"] = 1] = "DIR";
|
||||
FileType[FileType["FILE"] = 2] = "FILE";
|
||||
})(FileType || (FileType = {}));
|
||||
var FSTargetEvent;
|
||||
(function (FSTargetEvent) {
|
||||
FSTargetEvent["CHANGE"] = "change";
|
||||
FSTargetEvent["RENAME"] = "rename";
|
||||
})(FSTargetEvent || (FSTargetEvent = {}));
|
||||
var FSWatcherEvent;
|
||||
(function (FSWatcherEvent) {
|
||||
FSWatcherEvent["CHANGE"] = "change";
|
||||
FSWatcherEvent["ERROR"] = "error";
|
||||
})(FSWatcherEvent || (FSWatcherEvent = {}));
|
||||
var TargetEvent;
|
||||
(function (TargetEvent) {
|
||||
TargetEvent["ADD"] = "add";
|
||||
TargetEvent["ADD_DIR"] = "addDir";
|
||||
TargetEvent["CHANGE"] = "change";
|
||||
TargetEvent["RENAME"] = "rename";
|
||||
TargetEvent["RENAME_DIR"] = "renameDir";
|
||||
TargetEvent["UNLINK"] = "unlink";
|
||||
TargetEvent["UNLINK_DIR"] = "unlinkDir";
|
||||
})(TargetEvent || (TargetEvent = {}));
|
||||
var WatcherEvent;
|
||||
(function (WatcherEvent) {
|
||||
WatcherEvent["ALL"] = "all";
|
||||
WatcherEvent["CLOSE"] = "close";
|
||||
WatcherEvent["ERROR"] = "error";
|
||||
WatcherEvent["READY"] = "ready";
|
||||
})(WatcherEvent || (WatcherEvent = {}));
|
||||
/* EXPORT */
|
||||
export { FileType, FSTargetEvent, FSWatcherEvent, TargetEvent, WatcherEvent };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9lbnVtcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxVQUFVO0FBRVYsSUFBVyxRQUdWO0FBSEQsV0FBVyxRQUFRO0lBQ2pCLHFDQUFPLENBQUE7SUFDUCx1Q0FBUSxDQUFBO0FBQ1YsQ0FBQyxFQUhVLFFBQVEsS0FBUixRQUFRLFFBR2xCO0FBRUQsSUFBVyxhQUdWO0FBSEQsV0FBVyxhQUFhO0lBQ3RCLGtDQUFpQixDQUFBO0lBQ2pCLGtDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFIVSxhQUFhLEtBQWIsYUFBYSxRQUd2QjtBQUVELElBQVcsY0FHVjtBQUhELFdBQVcsY0FBYztJQUN2QixtQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFIVSxjQUFjLEtBQWQsY0FBYyxRQUd4QjtBQUVELElBQVcsV0FRVjtBQVJELFdBQVcsV0FBVztJQUNwQiwwQkFBVyxDQUFBO0lBQ1gsaUNBQWtCLENBQUE7SUFDbEIsZ0NBQWlCLENBQUE7SUFDakIsZ0NBQWlCLENBQUE7SUFDakIsdUNBQXdCLENBQUE7SUFDeEIsZ0NBQWlCLENBQUE7SUFDakIsdUNBQXdCLENBQUE7QUFDMUIsQ0FBQyxFQVJVLFdBQVcsS0FBWCxXQUFXLFFBUXJCO0FBRUQsSUFBVyxZQUtWO0FBTEQsV0FBVyxZQUFZO0lBQ3JCLDJCQUFXLENBQUE7SUFDWCwrQkFBZSxDQUFBO0lBQ2YsK0JBQWUsQ0FBQTtJQUNmLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxVLFlBQVksS0FBWixZQUFZLFFBS3RCO0FBRUQsWUFBWTtBQUVaLE9BQU8sRUFBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFDLENBQUMifQ==
|
10
dist_ts/lazy_map_set.d.ts
vendored
Normal file
10
dist_ts/lazy_map_set.d.ts
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
declare class LazyMapSet<K, V> {
|
||||
private map;
|
||||
clear(): void;
|
||||
delete(key: K, value?: V): boolean;
|
||||
find(key: K, iterator: (value: V) => boolean): V | undefined;
|
||||
get(key: K): Set<V> | V | undefined;
|
||||
has(key: K, value?: V): boolean;
|
||||
set(key: K, value: V): this;
|
||||
}
|
||||
export default LazyMapSet;
|
82
dist_ts/lazy_map_set.js
Normal file
82
dist_ts/lazy_map_set.js
Normal file
@ -0,0 +1,82 @@
|
||||
/* IMPORT */
|
||||
import Utils from './utils.js';
|
||||
/* MAIN */
|
||||
//TODO: Maybe publish this as a standalone module
|
||||
class LazyMapSet {
|
||||
constructor() {
|
||||
/* VARIABLES */
|
||||
this.map = new Map();
|
||||
}
|
||||
/* API */
|
||||
clear() {
|
||||
this.map.clear();
|
||||
}
|
||||
delete(key, value) {
|
||||
if (Utils.lang.isUndefined(value)) {
|
||||
return this.map.delete(key);
|
||||
}
|
||||
else if (this.map.has(key)) {
|
||||
const values = this.map.get(key);
|
||||
if (Utils.lang.isSet(values)) {
|
||||
const deleted = values.delete(value);
|
||||
if (!values.size) {
|
||||
this.map.delete(key);
|
||||
}
|
||||
return deleted;
|
||||
}
|
||||
else if (values === value) {
|
||||
this.map.delete(key);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
find(key, iterator) {
|
||||
if (this.map.has(key)) {
|
||||
const values = this.map.get(key);
|
||||
if (Utils.lang.isSet(values)) {
|
||||
return Array.from(values).find(iterator);
|
||||
}
|
||||
else if (iterator(values)) { //TSC
|
||||
return values;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
get(key) {
|
||||
return this.map.get(key);
|
||||
}
|
||||
has(key, value) {
|
||||
if (Utils.lang.isUndefined(value)) {
|
||||
return this.map.has(key);
|
||||
}
|
||||
else if (this.map.has(key)) {
|
||||
const values = this.map.get(key);
|
||||
if (Utils.lang.isSet(values)) {
|
||||
return values.has(value);
|
||||
}
|
||||
else {
|
||||
return (values === value);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
set(key, value) {
|
||||
if (this.map.has(key)) {
|
||||
const values = this.map.get(key);
|
||||
if (Utils.lang.isSet(values)) {
|
||||
values.add(value);
|
||||
}
|
||||
else if (values !== value) {
|
||||
this.map.set(key, new Set([values, value])); //TSC
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.map.set(key, value);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
/* EXPORT */
|
||||
export default LazyMapSet;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eV9tYXBfc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvbGF6eV9tYXBfc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLFlBQVk7QUFFWixPQUFPLEtBQUssTUFBTSxZQUFZLENBQUM7QUFFL0IsVUFBVTtBQUVWLGlEQUFpRDtBQUVqRCxNQUFNLFVBQVU7SUFBaEI7UUFFRSxlQUFlO1FBRVAsUUFBRyxHQUF1QixJQUFJLEdBQUcsRUFBRyxDQUFDO0lBOEgvQyxDQUFDO0lBNUhDLFNBQVM7SUFFVCxLQUFLO1FBRUgsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUcsQ0FBQztJQUVwQixDQUFDO0lBRUQsTUFBTSxDQUFHLEdBQU0sRUFBRSxLQUFTO1FBRXhCLElBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUcsS0FBSyxDQUFFLEVBQUcsQ0FBQztZQUV2QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFHLEdBQUcsQ0FBRSxDQUFDO1FBRWpDLENBQUM7YUFBTSxJQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFHLEdBQUcsQ0FBRSxFQUFHLENBQUM7WUFFbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUcsR0FBRyxDQUFFLENBQUM7WUFFcEMsSUFBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBRyxNQUFNLENBQUUsRUFBRyxDQUFDO2dCQUVsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFHLEtBQUssQ0FBRSxDQUFDO2dCQUV4QyxJQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRyxDQUFDO29CQUVuQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRyxHQUFHLENBQUUsQ0FBQztnQkFFMUIsQ0FBQztnQkFFRCxPQUFPLE9BQU8sQ0FBQztZQUVqQixDQUFDO2lCQUFNLElBQUssTUFBTSxLQUFLLEtBQUssRUFBRyxD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
|
2
dist_ts/promise-make-naked/constants.d.ts
vendored
Normal file
2
dist_ts/promise-make-naked/constants.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
declare const NOOP: () => void;
|
||||
export { NOOP };
|
5
dist_ts/promise-make-naked/constants.js
Normal file
5
dist_ts/promise-make-naked/constants.js
Normal file
@ -0,0 +1,5 @@
|
||||
/* MAIN */
|
||||
const NOOP = () => { };
|
||||
/* EXPORT */
|
||||
export { NOOP };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcHJvbWlzZS1tYWtlLW5ha2VkL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxVQUFVO0FBRVYsTUFBTSxJQUFJLEdBQUcsR0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBRTVCLFlBQVk7QUFFWixPQUFPLEVBQUMsSUFBSSxFQUFDLENBQUMifQ==
|
6
dist_ts/promise-make-naked/index.d.ts
vendored
Normal file
6
dist_ts/promise-make-naked/index.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import type { Result } from './types.js';
|
||||
declare const makeNakedPromise: {
|
||||
<T>(): Result<T>;
|
||||
wrap<T_1>(fn: (result: Result<T_1>) => void): Promise<T_1>;
|
||||
};
|
||||
export default makeNakedPromise;
|
32
dist_ts/promise-make-naked/index.js
Normal file
32
dist_ts/promise-make-naked/index.js
Normal file
@ -0,0 +1,32 @@
|
||||
/* IMPORT */
|
||||
import { NOOP } from './constants.js';
|
||||
/* MAIN */
|
||||
const makeNakedPromise = () => {
|
||||
let resolve = NOOP;
|
||||
let reject = NOOP;
|
||||
let resolved = false;
|
||||
let rejected = false;
|
||||
const promise = new Promise((res, rej) => {
|
||||
resolve = value => {
|
||||
resolved = true;
|
||||
return res(value);
|
||||
};
|
||||
reject = value => {
|
||||
rejected = true;
|
||||
return rej(value);
|
||||
};
|
||||
});
|
||||
const isPending = () => !resolved && !rejected;
|
||||
const isResolved = () => resolved;
|
||||
const isRejected = () => rejected;
|
||||
return { promise, resolve, reject, isPending, isResolved, isRejected };
|
||||
};
|
||||
/* UTILITIES */
|
||||
makeNakedPromise.wrap = async (fn) => {
|
||||
const result = makeNakedPromise();
|
||||
await fn(result);
|
||||
return result.promise;
|
||||
};
|
||||
/* EXPORT */
|
||||
export default makeNakedPromise;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9wcm9taXNlLW1ha2UtbmFrZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUVaLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdwQyxVQUFVO0FBRVYsTUFBTSxnQkFBZ0IsR0FBRyxHQUFrQixFQUFFO0lBRTNDLElBQUksT0FBTyxHQUFzQixJQUFJLENBQUM7SUFDdEMsSUFBSSxNQUFNLEdBQWtCLElBQUksQ0FBQztJQUVqQyxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDckIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBRXJCLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFNLENBQUUsR0FBRyxFQUFFLEdBQUcsRUFBUyxFQUFFO1FBRXBELE9BQU8sR0FBRyxLQUFLLENBQUMsRUFBRTtZQUNoQixRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLE9BQU8sR0FBRyxDQUFHLEtBQUssQ0FBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVGLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRTtZQUNmLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsT0FBTyxHQUFHLENBQUcsS0FBSyxDQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDO0lBRUosQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxHQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN4RCxNQUFNLFVBQVUsR0FBRyxHQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDM0MsTUFBTSxVQUFVLEdBQUcsR0FBWSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBRTNDLE9BQU8sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxDQUFDO0FBRXZFLENBQUMsQ0FBQztBQUVGLGVBQWU7QUFFZixnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsS0FBSyxFQUFPLEVBQWlDLEVBQWUsRUFBRTtJQUVwRixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsRUFBTSxDQUFDO0lBRXRDLE1BQU0sRUFBRSxDQUFHLE1BQU0sQ0FBRSxDQUFDO0lBRXBCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUV4QixDQUFDLENBQUM7QUFFRixZQUFZO0FBRVosZUFBZSxnQkFBZ0IsQ0FBQyJ9
|
11
dist_ts/promise-make-naked/types.d.ts
vendored
Normal file
11
dist_ts/promise-make-naked/types.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
type PromiseResolve<T> = (value: T | PromiseLike<T>) => void;
|
||||
type PromiseReject = (reason?: unknown) => void;
|
||||
type Result<T> = {
|
||||
promise: Promise<T>;
|
||||
resolve: PromiseResolve<T>;
|
||||
reject: PromiseReject;
|
||||
isPending: () => boolean;
|
||||
isResolved: () => boolean;
|
||||
isRejected: () => boolean;
|
||||
};
|
||||
export type { PromiseResolve, PromiseReject, Result };
|
3
dist_ts/promise-make-naked/types.js
Normal file
3
dist_ts/promise-make-naked/types.js
Normal file
@ -0,0 +1,3 @@
|
||||
/* MAIN */
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9wcm9taXNlLW1ha2UtbmFrZWQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsVUFBVSJ9
|
3
dist_ts/tiny-readdir/index.d.ts
vendored
Normal file
3
dist_ts/tiny-readdir/index.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
import type { Options, Result } from './types.js';
|
||||
declare const readdir: (rootPath: string, options?: Options) => Promise<Result>;
|
||||
export default readdir;
|
179
dist_ts/tiny-readdir/index.js
Normal file
179
dist_ts/tiny-readdir/index.js
Normal file
File diff suppressed because one or more lines are too long
28
dist_ts/tiny-readdir/types.d.ts
vendored
Normal file
28
dist_ts/tiny-readdir/types.d.ts
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
type Callback = () => void;
|
||||
type Options = {
|
||||
depth?: number;
|
||||
limit?: number;
|
||||
followSymlinks?: boolean;
|
||||
ignore?: ((targetPath: string) => boolean) | RegExp;
|
||||
signal?: {
|
||||
aborted: boolean;
|
||||
};
|
||||
};
|
||||
type ResultDirectory = {
|
||||
directories: string[];
|
||||
directoriesNames: Set<string>;
|
||||
directoriesNamesToPaths: Record<string, string[]>;
|
||||
files: string[];
|
||||
filesNames: Set<string>;
|
||||
filesNamesToPaths: Record<string, string[]>;
|
||||
symlinks: string[];
|
||||
symlinksNames: Set<string>;
|
||||
symlinksNamesToPaths: Record<string, string[]>;
|
||||
};
|
||||
type ResultDirectories = {
|
||||
[path: string]: ResultDirectory;
|
||||
};
|
||||
type Result = ResultDirectory & {
|
||||
map: ResultDirectories;
|
||||
};
|
||||
export type { Callback, Options, ResultDirectory, ResultDirectories, Result };
|
3
dist_ts/tiny-readdir/types.js
Normal file
3
dist_ts/tiny-readdir/types.js
Normal file
@ -0,0 +1,3 @@
|
||||
/* HELPERS */
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90aW55LXJlYWRkaXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsYUFBYSJ9
|
8
dist_ts/tiny-readdir/utils.d.ts
vendored
Normal file
8
dist_ts/tiny-readdir/utils.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
import type { Callback } from './types.js';
|
||||
declare const isFunction: (value: unknown) => value is Function;
|
||||
declare const makeCounterPromise: () => {
|
||||
promise: Promise<void>;
|
||||
increment: Callback;
|
||||
decrement: Callback;
|
||||
};
|
||||
export { isFunction, makeCounterPromise };
|
23
dist_ts/tiny-readdir/utils.js
Normal file
23
dist_ts/tiny-readdir/utils.js
Normal file
@ -0,0 +1,23 @@
|
||||
/* IMPORT */
|
||||
import makeNakedPromise from '../promise-make-naked/index.js';
|
||||
/* MAIN */
|
||||
const isFunction = (value) => {
|
||||
return (typeof value === 'function');
|
||||
};
|
||||
const makeCounterPromise = () => {
|
||||
const { promise, resolve } = makeNakedPromise();
|
||||
let counter = 0;
|
||||
const increment = () => {
|
||||
counter += 1;
|
||||
};
|
||||
const decrement = () => {
|
||||
counter -= 1;
|
||||
if (counter)
|
||||
return;
|
||||
resolve();
|
||||
};
|
||||
return { promise, increment, decrement };
|
||||
};
|
||||
/* EXPORT */
|
||||
export { isFunction, makeCounterPromise };
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90aW55LXJlYWRkaXIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUVaLE9BQU8sZ0JBQWdCLE1BQU0sZ0NBQWdDLENBQUM7QUFHOUQsVUFBVTtBQUVWLE1BQU0sVUFBVSxHQUFHLENBQUUsS0FBYyxFQUFzQixFQUFFO0lBRXpELE9BQU8sQ0FBRSxPQUFPLEtBQUssS0FBSyxVQUFVLENBQUUsQ0FBQztBQUV6QyxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLEdBQXlFLEVBQUU7SUFFcEcsTUFBTSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsR0FBRyxnQkFBZ0IsRUFBUyxDQUFDO0lBRXJELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztJQUVoQixNQUFNLFNBQVMsR0FBRyxHQUFTLEVBQUU7UUFFM0IsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUVmLENBQUMsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLEdBQVMsRUFBRTtRQUUzQixPQUFPLElBQUksQ0FBQyxDQUFDO1FBRWIsSUFBSyxPQUFPO1lBQUcsT0FBTztRQUV0QixPQUFPLEVBQUcsQ0FBQztJQUViLENBQUMsQ0FBQztJQUVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRTNDLENBQUMsQ0FBQztBQUVGLFlBQVk7QUFFWixPQUFPLEVBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFDLENBQUMifQ==
|
77
dist_ts/types.d.ts
vendored
Normal file
77
dist_ts/types.d.ts
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
import type { FSWatcher, BigIntStats } from 'node:fs';
|
||||
import type { FSTargetEvent, TargetEvent } from './enums.js';
|
||||
import type WatcherStats from './watcher_stats.js';
|
||||
type ResultDirectory = {
|
||||
directories: string[];
|
||||
directoriesNames: Set<string>;
|
||||
directoriesNamesToPaths: Record<string, string[]>;
|
||||
files: string[];
|
||||
filesNames: Set<string>;
|
||||
filesNamesToPaths: Record<string, string[]>;
|
||||
symlinks: string[];
|
||||
symlinksNames: Set<string>;
|
||||
symlinksNamesToPaths: Record<string, string[]>;
|
||||
};
|
||||
type ResultDirectories = {
|
||||
[path: string]: ResultDirectory;
|
||||
};
|
||||
type Callback = () => void;
|
||||
type Disposer = () => void;
|
||||
type Event = [TargetEvent, Path, Path?];
|
||||
type FSHandler = (event?: FSTargetEvent, targetName?: string) => void;
|
||||
type Handler = (event: TargetEvent, targetPath: Path, targetPathNext?: Path) => void;
|
||||
type HandlerBatched = (event?: FSTargetEvent, targetPath?: Path, isInitial?: boolean) => Promise<void>;
|
||||
type Ignore = ((targetPath: Path) => boolean) | RegExp;
|
||||
type INO = bigint | number;
|
||||
type Path = string;
|
||||
type ReaddirMap = ResultDirectories;
|
||||
type Stats = BigIntStats;
|
||||
type LocksAdd = Map<INO, () => void>;
|
||||
type LocksUnlink = Map<INO, () => Path>;
|
||||
type LocksPair = {
|
||||
add: LocksAdd;
|
||||
unlink: LocksUnlink;
|
||||
};
|
||||
type LockConfig = {
|
||||
ino?: INO;
|
||||
targetPath: Path;
|
||||
locks: LocksPair;
|
||||
events: {
|
||||
add: TargetEvent.ADD | TargetEvent.ADD_DIR;
|
||||
change?: TargetEvent.CHANGE;
|
||||
rename: TargetEvent.RENAME | TargetEvent.RENAME_DIR;
|
||||
unlink: TargetEvent.UNLINK | TargetEvent.UNLINK_DIR;
|
||||
};
|
||||
};
|
||||
type PollerConfig = {
|
||||
options: WatcherOptions;
|
||||
targetPath: Path;
|
||||
};
|
||||
type SubwatcherConfig = {
|
||||
options: WatcherOptions;
|
||||
targetPath: Path;
|
||||
};
|
||||
type WatcherConfig = {
|
||||
handler: Handler;
|
||||
watcher: FSWatcher;
|
||||
options: WatcherOptions;
|
||||
folderPath: Path;
|
||||
filePath?: Path;
|
||||
};
|
||||
type WatcherOptions = {
|
||||
debounce?: number;
|
||||
depth?: number;
|
||||
limit?: number;
|
||||
ignore?: Ignore;
|
||||
ignoreInitial?: boolean;
|
||||
native?: boolean;
|
||||
persistent?: boolean;
|
||||
pollingInterval?: number;
|
||||
pollingTimeout?: number;
|
||||
readdirMap?: ReaddirMap;
|
||||
recursive?: boolean;
|
||||
renameDetection?: boolean;
|
||||
renameTimeout?: number;
|
||||
};
|
||||
export type { Callback, Disposer, Event, FSHandler, FSWatcher, Handler, HandlerBatched, Ignore, INO, Path, ReaddirMap, Stats, LocksAdd, LocksUnlink, LocksPair, LockConfig, PollerConfig, SubwatcherConfig, WatcherConfig, WatcherOptions, WatcherStats };
|
3
dist_ts/types.js
Normal file
3
dist_ts/types.js
Normal file
@ -0,0 +1,3 @@
|
||||
/* IMPORT */
|
||||
export {};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxZQUFZIn0=
|
41
dist_ts/utils.d.ts
vendored
Normal file
41
dist_ts/utils.d.ts
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
import type { Callback, Ignore, ReaddirMap, Stats } from './types.js';
|
||||
declare const Utils: {
|
||||
lang: {
|
||||
debounce: <Args extends unknown[]>(fn: import("./dettle/types.js").FN<Args, unknown>, wait?: number, options?: {
|
||||
leading?: boolean;
|
||||
trailing?: boolean;
|
||||
maxWait?: number;
|
||||
}) => import("./dettle/types.js").Debounced<Args>;
|
||||
attempt: <T>(fn: () => T) => Error | T;
|
||||
castArray: <T_1>(x: T_1 | T_1[]) => T_1[];
|
||||
castError: (exception: unknown) => Error;
|
||||
defer: (callback: Callback) => NodeJS.Timeout;
|
||||
isArray: (value: unknown) => value is unknown[];
|
||||
isError: (value: unknown) => value is Error;
|
||||
isFunction: (value: unknown) => value is Function;
|
||||
isNaN: (value: unknown) => value is number;
|
||||
isNumber: (value: unknown) => value is number;
|
||||
isPrimitive: (value: unknown) => value is string | number | bigint | boolean | symbol;
|
||||
isShallowEqual: (x: any, y: any) => boolean;
|
||||
isSet: (value: unknown) => value is Set<unknown>;
|
||||
isString: (value: unknown) => value is string;
|
||||
isUndefined: (value: unknown) => value is undefined;
|
||||
noop: () => undefined;
|
||||
uniq: <T_2>(arr: T_2[]) => T_2[];
|
||||
};
|
||||
fs: {
|
||||
getDepth: (targetPath: string) => number;
|
||||
getRealPath: (targetPath: string, native?: boolean) => string | undefined;
|
||||
isSubPath: (targetPath: string, subPath: string) => boolean;
|
||||
poll: (targetPath: string, timeout?: number) => Promise<Stats | undefined>;
|
||||
readdir: (rootPath: string, ignore?: Ignore, depth?: number, limit?: number, signal?: {
|
||||
aborted: boolean;
|
||||
}, readdirMap?: ReaddirMap) => Promise<[string[], string[]]>;
|
||||
};
|
||||
};
|
||||
export default Utils;
|
121
dist_ts/utils.js
Normal file
121
dist_ts/utils.js
Normal file
File diff suppressed because one or more lines are too long
55
dist_ts/watcher.d.ts
vendored
Normal file
55
dist_ts/watcher.d.ts
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
import { EventEmitter } from 'node:events';
|
||||
import { TargetEvent } from './enums.js';
|
||||
import WatcherHandler from './watcher_handler.js';
|
||||
import WatcherLocker from './watcher_locker.js';
|
||||
import WatcherPoller from './watcher_poller.js';
|
||||
import type { Callback, Disposer, Handler, Ignore, Path, PollerConfig, SubwatcherConfig, WatcherOptions, WatcherConfig } from './types.js';
|
||||
declare class Watcher extends EventEmitter {
|
||||
_closed: boolean;
|
||||
_ready: boolean;
|
||||
_closeAborter: AbortController;
|
||||
_closeSignal: {
|
||||
aborted: boolean;
|
||||
};
|
||||
_closeWait: Promise<void>;
|
||||
_readyWait: Promise<void>;
|
||||
_locker: WatcherLocker;
|
||||
_roots: Set<Path>;
|
||||
_poller: WatcherPoller;
|
||||
_pollers: Set<PollerConfig>;
|
||||
_subwatchers: Set<SubwatcherConfig>;
|
||||
_watchers: Record<Path, WatcherConfig[]>;
|
||||
_watchersLock: Promise<void>;
|
||||
_watchersRestorable: Record<Path, WatcherConfig>;
|
||||
_watchersRestoreTimeout?: NodeJS.Timeout;
|
||||
constructor(target?: Path[] | Path | Handler, options?: WatcherOptions | Handler, handler?: Handler);
|
||||
isClosed(): boolean;
|
||||
isIgnored(targetPath: Path, ignore?: Ignore): boolean;
|
||||
isReady(): boolean;
|
||||
close(): boolean;
|
||||
error(exception: unknown): boolean;
|
||||
event(event: TargetEvent, targetPath: Path, targetPathNext?: Path): boolean;
|
||||
ready(): boolean;
|
||||
pollerExists(targetPath: Path, options: WatcherOptions): boolean;
|
||||
subwatcherExists(targetPath: Path, options: WatcherOptions): boolean;
|
||||
watchersClose(folderPath?: Path, filePath?: Path, recursive?: boolean): void;
|
||||
watchersLock(callback: Callback): Promise<void>;
|
||||
watchersRestore(): void;
|
||||
watcherAdd(config: WatcherConfig, baseWatcherHandler?: WatcherHandler): Promise<WatcherHandler>;
|
||||
watcherClose(config: WatcherConfig): void;
|
||||
watcherExists(folderPath: Path, options: WatcherOptions, handler: Handler, filePath?: Path): boolean;
|
||||
watchDirectories(foldersPaths: Path[], options: WatcherOptions, handler: Handler, filePath?: Path, baseWatcherHandler?: WatcherHandler): Promise<WatcherHandler | undefined>;
|
||||
watchDirectory(folderPath: Path, options: WatcherOptions, handler: Handler, filePath?: Path, baseWatcherHandler?: WatcherHandler): Promise<void>;
|
||||
watchFileOnce(filePath: Path, options: WatcherOptions, callback: Callback): Promise<void>;
|
||||
watchFile(filePath: Path, options: WatcherOptions, handler: Handler): Promise<void>;
|
||||
watchPollingOnce(targetPath: Path, options: WatcherOptions, callback: Callback): Promise<void>;
|
||||
watchPolling(targetPath: Path, options: WatcherOptions, callback: Callback): Promise<Disposer>;
|
||||
watchUnknownChild(targetPath: Path, options: WatcherOptions, handler: Handler): Promise<void>;
|
||||
watchUnknownTarget(targetPath: Path, options: WatcherOptions, handler: Handler): Promise<void>;
|
||||
watchPaths(targetPaths: Path[], options: WatcherOptions, handler: Handler): Promise<void>;
|
||||
watchPath(targetPath: Path, options: WatcherOptions, handler: Handler): Promise<void>;
|
||||
watch(target?: Path[] | Path | Handler, options?: WatcherOptions | Handler, handler?: Handler): Promise<void>;
|
||||
}
|
||||
export default Watcher;
|
397
dist_ts/watcher.js
Normal file
397
dist_ts/watcher.js
Normal file
File diff suppressed because one or more lines are too long
36
dist_ts/watcher_handler.d.ts
vendored
Normal file
36
dist_ts/watcher_handler.d.ts
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
import { FSTargetEvent } from './enums.js';
|
||||
import type Watcher from './watcher.js';
|
||||
import type { Event, FSWatcher, Handler, HandlerBatched, Path, WatcherOptions, WatcherConfig } from './types.js';
|
||||
declare class WatcherHandler {
|
||||
base?: WatcherHandler;
|
||||
watcher: Watcher;
|
||||
handler: Handler;
|
||||
handlerBatched: HandlerBatched;
|
||||
fswatcher: FSWatcher;
|
||||
options: WatcherOptions;
|
||||
folderPath: Path;
|
||||
filePath?: Path;
|
||||
constructor(watcher: Watcher, config: WatcherConfig, base?: WatcherHandler);
|
||||
_isSubRoot(targetPath: Path): boolean;
|
||||
_makeHandlerBatched(delay?: number): (event: FSTargetEvent, targetPath?: Path, isInitial?: boolean) => Promise<void>;
|
||||
eventsDeduplicate(events: Event[]): Event[];
|
||||
eventsPopulate(targetPaths: Path[], events?: Event[], isInitial?: boolean): Promise<Event[]>;
|
||||
eventsPopulateAddDir(targetPaths: Path[], targetPath: Path, events?: Event[], isInitial?: boolean): Promise<Event[]>;
|
||||
eventsPopulateUnlinkDir(targetPaths: Path[], targetPath: Path, events?: Event[], isInitial?: boolean): Promise<Event[]>;
|
||||
onTargetAdd(targetPath: Path): void;
|
||||
onTargetAddDir(targetPath: Path): void;
|
||||
onTargetChange(targetPath: Path): void;
|
||||
onTargetUnlink(targetPath: Path): void;
|
||||
onTargetUnlinkDir(targetPath: Path): void;
|
||||
onTargetEvent(event: Event): void;
|
||||
onTargetEvents(events: Event[]): void;
|
||||
onWatcherEvent(event?: FSTargetEvent, targetPath?: Path, isInitial?: boolean): Promise<void>;
|
||||
onWatcherChange(event?: FSTargetEvent, targetName?: string | null): void;
|
||||
onWatcherError(error: NodeJS.ErrnoException): void;
|
||||
init(): Promise<void>;
|
||||
initWatcherEvents(): Promise<void>;
|
||||
initInitialEvents(): Promise<void>;
|
||||
}
|
||||
export default WatcherHandler;
|
249
dist_ts/watcher_handler.js
Normal file
249
dist_ts/watcher_handler.js
Normal file
File diff suppressed because one or more lines are too long
32
dist_ts/watcher_locker.d.ts
vendored
Normal file
32
dist_ts/watcher_locker.d.ts
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
import { TargetEvent } from './enums.js';
|
||||
import type Watcher from './watcher.js';
|
||||
import type { Path, LocksAdd, LocksUnlink, LocksPair, LockConfig } from './types.js';
|
||||
declare class WatcherLocker {
|
||||
_locksAdd: LocksAdd;
|
||||
_locksAddDir: LocksAdd;
|
||||
_locksUnlink: LocksUnlink;
|
||||
_locksUnlinkDir: LocksUnlink;
|
||||
_locksDir: LocksPair;
|
||||
_locksFile: LocksPair;
|
||||
_watcher: Watcher;
|
||||
static DIR_EVENTS: {
|
||||
readonly add: TargetEvent.ADD_DIR;
|
||||
readonly rename: TargetEvent.RENAME_DIR;
|
||||
readonly unlink: TargetEvent.UNLINK_DIR;
|
||||
};
|
||||
static FILE_EVENTS: {
|
||||
readonly add: TargetEvent.ADD;
|
||||
readonly change: TargetEvent.CHANGE;
|
||||
readonly rename: TargetEvent.RENAME;
|
||||
readonly unlink: TargetEvent.UNLINK;
|
||||
};
|
||||
constructor(watcher: Watcher);
|
||||
getLockAdd(config: LockConfig, timeout?: number): void;
|
||||
getLockUnlink(config: LockConfig, timeout?: number): void;
|
||||
getLockTargetAdd(targetPath: Path, timeout?: number): void;
|
||||
getLockTargetAddDir(targetPath: Path, timeout?: number): void;
|
||||
getLockTargetUnlink(targetPath: Path, timeout?: number): void;
|
||||
getLockTargetUnlinkDir(targetPath: Path, timeout?: number): void;
|
||||
reset(): void;
|
||||
}
|
||||
export default WatcherLocker;
|
140
dist_ts/watcher_locker.js
Normal file
140
dist_ts/watcher_locker.js
Normal file
File diff suppressed because one or more lines are too long
12
dist_ts/watcher_locks_resolver.d.ts
vendored
Normal file
12
dist_ts/watcher_locks_resolver.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
/// <reference types="node" resolution-mode="require"/>
|
||||
declare const WatcherLocksResolver: {
|
||||
interval: number;
|
||||
intervalId: NodeJS.Timeout;
|
||||
fns: Map<Function, number>;
|
||||
init: () => void;
|
||||
reset: () => void;
|
||||
add: (fn: Function, timeout: number) => void;
|
||||
remove: (fn: Function) => void;
|
||||
resolve: () => void;
|
||||
};
|
||||
export default WatcherLocksResolver;
|
43
dist_ts/watcher_locks_resolver.js
Normal file
43
dist_ts/watcher_locks_resolver.js
Normal file
@ -0,0 +1,43 @@
|
||||
/* MAIN */
|
||||
// Registering a single interval scales much better than registering N timeouts
|
||||
// Timeouts are respected within the interval margin
|
||||
const WatcherLocksResolver = {
|
||||
/* VARIABLES */
|
||||
interval: 100,
|
||||
intervalId: undefined,
|
||||
fns: new Map(),
|
||||
/* LIFECYCLE API */
|
||||
init: () => {
|
||||
if (WatcherLocksResolver.intervalId)
|
||||
return;
|
||||
WatcherLocksResolver.intervalId = setInterval(WatcherLocksResolver.resolve, WatcherLocksResolver.interval);
|
||||
},
|
||||
reset: () => {
|
||||
if (!WatcherLocksResolver.intervalId)
|
||||
return;
|
||||
clearInterval(WatcherLocksResolver.intervalId);
|
||||
delete WatcherLocksResolver.intervalId;
|
||||
},
|
||||
/* API */
|
||||
add: (fn, timeout) => {
|
||||
WatcherLocksResolver.fns.set(fn, Date.now() + timeout);
|
||||
WatcherLocksResolver.init();
|
||||
},
|
||||
remove: (fn) => {
|
||||
WatcherLocksResolver.fns.delete(fn);
|
||||
},
|
||||
resolve: () => {
|
||||
if (!WatcherLocksResolver.fns.size)
|
||||
return WatcherLocksResolver.reset();
|
||||
const now = Date.now();
|
||||
for (const [fn, timestamp] of WatcherLocksResolver.fns) {
|
||||
if (timestamp >= now)
|
||||
continue; // We should still wait some more for this
|
||||
WatcherLocksResolver.remove(fn);
|
||||
fn();
|
||||
}
|
||||
}
|
||||
};
|
||||
/* EXPORT */
|
||||
export default WatcherLocksResolver;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlcl9sb2Nrc19yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3dhdGNoZXJfbG9ja3NfcmVzb2x2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsVUFBVTtBQUVWLCtFQUErRTtBQUMvRSxvREFBb0Q7QUFFcEQsTUFBTSxvQkFBb0IsR0FBRztJQUUzQixlQUFlO0lBRWYsUUFBUSxFQUFFLEdBQUc7SUFDYixVQUFVLEVBQUUsU0FBdUM7SUFDbkQsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFxQjtJQUVqQyxtQkFBbUI7SUFFbkIsSUFBSSxFQUFFLEdBQVMsRUFBRTtRQUVmLElBQUssb0JBQW9CLENBQUMsVUFBVTtZQUFHLE9BQU87UUFFOUMsb0JBQW9CLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBRyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsUUFBUSxDQUFFLENBQUM7SUFFaEgsQ0FBQztJQUVELEtBQUssRUFBRSxHQUFTLEVBQUU7UUFFaEIsSUFBSyxDQUFDLG9CQUFvQixDQUFDLFVBQVU7WUFBRyxPQUFPO1FBRS9DLGFBQWEsQ0FBRyxvQkFBb0IsQ0FBQyxVQUFVLENBQUUsQ0FBQztRQUVsRCxPQUFPLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztJQUV6QyxDQUFDO0lBRUQsU0FBUztJQUVULEdBQUcsRUFBRSxDQUFFLEVBQVksRUFBRSxPQUFlLEVBQVMsRUFBRTtRQUU3QyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFHLEdBQUcsT0FBTyxDQUFFLENBQUM7UUFFM0Qsb0JBQW9CLENBQUMsSUFBSSxFQUFHLENBQUM7SUFFL0IsQ0FBQztJQUVELE1BQU0sRUFBRSxDQUFFLEVBQVksRUFBUyxFQUFFO1FBRS9CLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUcsRUFBRSxDQUFFLENBQUM7SUFFekMsQ0FBQztJQUVELE9BQU8sRUFBRSxHQUFTLEVBQUU7UUFFbEIsSUFBSyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxJQUFJO1lBQUcsT0FBTyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUcsQ0FBQztRQUUzRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFHLENBQUM7UUFFeEIsS0FBTSxNQUFNLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLEdBQUcsRUFBRyxDQUFDO1lBRXpELElBQUssU0FBUyxJQUFJLEdBQUc7Z0JBQUcsU0FBUyxDQUFDLDBDQUEwQztZQUU1RSxvQkFBb0IsQ0FBQyxNQUFNLENBQUcsRUFBRSxDQUFFLENBQUM7WUFFbkMsRUFBRSxFQUFHLENBQUM7UUFFUixDQUFDO0lBRUgsQ0FBQztDQUVGLENBQUM7QUFFRixZQUFZO0FBRVosZUFBZSxvQkFBb0IsQ0FBQyJ9
|
17
dist_ts/watcher_poller.d.ts
vendored
Normal file
17
dist_ts/watcher_poller.d.ts
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
import { FileType, TargetEvent } from './enums.js';
|
||||
import LazyMapSet from './lazy_map_set.js';
|
||||
import WatcherStats from './watcher_stats.js';
|
||||
import type { INO, Path } from './types.js';
|
||||
declare class WatcherPoller {
|
||||
inos: Partial<Record<TargetEvent, Record<Path, [INO, FileType]>>>;
|
||||
paths: LazyMapSet<INO, Path>;
|
||||
stats: Map<Path, WatcherStats>;
|
||||
getIno(targetPath: Path, event: TargetEvent, type?: FileType): INO | undefined;
|
||||
getStats(targetPath: Path): WatcherStats | undefined;
|
||||
poll(targetPath: Path, timeout?: number): Promise<WatcherStats | undefined>;
|
||||
reset(): void;
|
||||
update(targetPath: Path, timeout?: number): Promise<TargetEvent[]>;
|
||||
updateIno(targetPath: Path, event: TargetEvent, stats: WatcherStats): void;
|
||||
updateStats(targetPath: Path, stats?: WatcherStats): void;
|
||||
}
|
||||
export default WatcherPoller;
|
117
dist_ts/watcher_poller.js
Normal file
117
dist_ts/watcher_poller.js
Normal file
File diff suppressed because one or more lines are too long
17
dist_ts/watcher_stats.d.ts
vendored
Normal file
17
dist_ts/watcher_stats.d.ts
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
import type { INO, Stats } from './types.js';
|
||||
declare class WatcherStats {
|
||||
ino: INO;
|
||||
size: number;
|
||||
atimeMs: number;
|
||||
mtimeMs: number;
|
||||
ctimeMs: number;
|
||||
birthtimeMs: number;
|
||||
_isFile: boolean;
|
||||
_isDirectory: boolean;
|
||||
_isSymbolicLink: boolean;
|
||||
constructor(stats: Stats);
|
||||
isFile(): boolean;
|
||||
isDirectory(): boolean;
|
||||
isSymbolicLink(): boolean;
|
||||
}
|
||||
export default WatcherStats;
|
30
dist_ts/watcher_stats.js
Normal file
30
dist_ts/watcher_stats.js
Normal file
@ -0,0 +1,30 @@
|
||||
/* IMPORT */
|
||||
/* MAIN */
|
||||
// An more memory-efficient representation of the useful subset of stats objects
|
||||
class WatcherStats {
|
||||
/* CONSTRUCTOR */
|
||||
constructor(stats) {
|
||||
this.ino = (stats.ino <= Number.MAX_SAFE_INTEGER) ? Number(stats.ino) : stats.ino;
|
||||
this.size = Number(stats.size);
|
||||
this.atimeMs = Number(stats.atimeMs);
|
||||
this.mtimeMs = Number(stats.mtimeMs);
|
||||
this.ctimeMs = Number(stats.ctimeMs);
|
||||
this.birthtimeMs = Number(stats.birthtimeMs);
|
||||
this._isFile = stats.isFile();
|
||||
this._isDirectory = stats.isDirectory();
|
||||
this._isSymbolicLink = stats.isSymbolicLink();
|
||||
}
|
||||
/* API */
|
||||
isFile() {
|
||||
return this._isFile;
|
||||
}
|
||||
isDirectory() {
|
||||
return this._isDirectory;
|
||||
}
|
||||
isSymbolicLink() {
|
||||
return this._isSymbolicLink;
|
||||
}
|
||||
}
|
||||
/* EXPORT */
|
||||
export default WatcherStats;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hlcl9zdGF0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3dhdGNoZXJfc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWTtBQUlaLFVBQVU7QUFFVixnRkFBZ0Y7QUFFaEYsTUFBTSxZQUFZO0lBY2hCLGlCQUFpQjtJQUVqQixZQUFjLEtBQVk7UUFFeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBRyxLQUFLLENBQUMsR0FBRyxDQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDdkYsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUcsS0FBSyxDQUFDLElBQUksQ0FBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFHLEtBQUssQ0FBQyxPQUFPLENBQUUsQ0FBQztRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBRyxLQUFLLENBQUMsT0FBTyxDQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFHLEtBQUssQ0FBQyxXQUFXLENBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUcsQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUcsQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxjQUFjLEVBQUcsQ0FBQztJQUVqRCxDQUFDO0lBRUQsU0FBUztJQUVULE1BQU07UUFFSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFFdEIsQ0FBQztJQUVELFdBQVc7UUFFVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFFM0IsQ0FBQztJQUVELGNBQWM7UUFFWixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFFOUIsQ0FBQztDQUVGO0FBRUQsWUFBWTtBQUVaLGVBQWUsWUFBWSxDQUFDIn0=
|
Reference in New Issue
Block a user