diff --git a/package-lock.json b/package-lock.json index 06f1ad0f..4f9ae728 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5872,23 +5872,6 @@ "@types/node": "*" } }, - "node_modules/@types/lodash": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.17.tgz", - "integrity": "sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash.debounce": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz", - "integrity": "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/lodash": "*" - } - }, "node_modules/@types/mime-types": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", @@ -8680,6 +8663,12 @@ "typescript": "^5.4.4" } }, + "node_modules/dettle": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/dettle/-/dettle-1.0.5.tgz", + "integrity": "sha512-ZVyjhAJ7sCe1PNXEGveObOH9AC8QvMga3HJIghHawtG7mE4K5pW9nz/vDGAr/U7a3LWgdOzEE7ac9MURnyfaTA==", + "license": "MIT" + }, "node_modules/devalue": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", @@ -11681,6 +11670,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, "license": "MIT" }, "node_modules/lodash.defaults": { @@ -19380,12 +19370,12 @@ "ansis": "^4.1.0", "chokidar": "^4.0.1", "decache": "^4.6.2", + "dettle": "^1.0.5", "dot-prop": "9.0.0", "empathic": "^2.0.0", "env-paths": "^3.0.0", "image-size": "^2.0.2", "js-image-generator": "^1.0.4", - "lodash.debounce": "^4.0.8", "parse-gitignore": "^2.0.0", "semver": "^7.7.2", "tmp-promise": "^3.0.3", @@ -19394,7 +19384,6 @@ }, "devDependencies": { "@netlify/types": "2.0.1", - "@types/lodash.debounce": "^4.0.9", "@types/node": "^18.19.110", "@types/parse-gitignore": "^1.0.2", "@types/write-file-atomic": "^4.0.3", diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 2d38f722..528a9d22 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -43,7 +43,6 @@ "author": "Netlify Inc.", "devDependencies": { "@netlify/types": "2.0.1", - "@types/lodash.debounce": "^4.0.9", "@types/node": "^18.19.110", "@types/parse-gitignore": "^1.0.2", "@types/write-file-atomic": "^4.0.3", @@ -56,12 +55,12 @@ "ansis": "^4.1.0", "chokidar": "^4.0.1", "decache": "^4.6.2", + "dettle": "^1.0.5", "dot-prop": "9.0.0", "empathic": "^2.0.0", "env-paths": "^3.0.0", "image-size": "^2.0.2", "js-image-generator": "^1.0.4", - "lodash.debounce": "^4.0.8", "parse-gitignore": "^2.0.0", "semver": "^7.7.2", "tmp-promise": "^3.0.3", diff --git a/packages/dev-utils/src/lib/watch-debounced.ts b/packages/dev-utils/src/lib/watch-debounced.ts index 39ec0953..0e4bd1c5 100644 --- a/packages/dev-utils/src/lib/watch-debounced.ts +++ b/packages/dev-utils/src/lib/watch-debounced.ts @@ -1,8 +1,8 @@ import { once } from 'node:events' -import chokidar, { FSWatcher } from 'chokidar' +import chokidar from 'chokidar' import decache from 'decache' -import debounce from 'lodash.debounce' +import { debounce } from 'dettle' const DEBOUNCE_WAIT = 100 @@ -38,18 +38,30 @@ export const watchDebounced = async ( let onAddQueue: string[] = [] let onUnlinkQueue: string[] = [] - const debouncedOnChange = debounce(() => { - onChange(onChangeQueue) - onChangeQueue = [] - }, DEBOUNCE_WAIT) - const debouncedOnAdd = debounce(() => { - onAdd(onAddQueue) - onAddQueue = [] - }, DEBOUNCE_WAIT) - const debouncedOnUnlink = debounce(() => { - onUnlink(onUnlinkQueue) - onUnlinkQueue = [] - }, DEBOUNCE_WAIT) + const debouncedOnChange = debounce( + () => { + onChange(onChangeQueue) + onChangeQueue = [] + }, + DEBOUNCE_WAIT, + { leading: true }, + ) + const debouncedOnAdd = debounce( + () => { + onAdd(onAddQueue) + onAddQueue = [] + }, + DEBOUNCE_WAIT, + { leading: true }, + ) + const debouncedOnUnlink = debounce( + () => { + onUnlink(onUnlinkQueue) + onUnlinkQueue = [] + }, + DEBOUNCE_WAIT, + { leading: true }, + ) watcher .on('change', (path) => {