From bea0272decd908cd04ac0a2c87dd0a676f218a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0=20/=20green?= Date: Fri, 27 Sep 2024 16:54:58 +0900 Subject: [PATCH] refactor: remove `_onCrawlEnd` (#18207) --- packages/vite/src/node/optimizer/optimizer.ts | 2 +- packages/vite/src/node/server/environment.ts | 29 ++----------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/packages/vite/src/node/optimizer/optimizer.ts b/packages/vite/src/node/optimizer/optimizer.ts index 9458ac652413e7..3ba972134ffc7a 100644 --- a/packages/vite/src/node/optimizer/optimizer.ts +++ b/packages/vite/src/node/optimizer/optimizer.ts @@ -159,7 +159,7 @@ export function createDepsOptimizer( cachedMetadata || initDepsOptimizerMetadata(environment, sessionTimestamp) if (!cachedMetadata) { - environment._onCrawlEnd(onCrawlEnd) + environment.waitForRequestsIdle().then(onCrawlEnd) waitingForCrawlEnd = true // Enter processing state until crawl of static imports ends diff --git a/packages/vite/src/node/server/environment.ts b/packages/vite/src/node/server/environment.ts index e2221eb8bba153..5a183818c2a7df 100644 --- a/packages/vite/src/node/server/environment.ts +++ b/packages/vite/src/node/server/environment.ts @@ -78,10 +78,6 @@ export class DevEnvironment extends BaseEnvironment { abort: () => void } > - /** - * @internal - */ - _onCrawlEndCallbacks: (() => void)[] /** * @internal */ @@ -118,10 +114,7 @@ export class DevEnvironment extends BaseEnvironment { this.hot = context.hot || createNoopHotChannel() - this._onCrawlEndCallbacks = [] - this._crawlEndFinder = setupOnCrawlEnd(() => { - this._onCrawlEndCallbacks.forEach((cb) => cb()) - }) + this._crawlEndFinder = setupOnCrawlEnd() this._ssrRunnerOptions = context.runner ?? {} context.runner?.transport?.register(this) @@ -243,13 +236,6 @@ export class DevEnvironment extends BaseEnvironment { _registerRequestProcessing(id: string, done: () => Promise): void { this._crawlEndFinder.registerRequestProcessing(id, done) } - /** - * @internal - * TODO: use waitForRequestsIdle in the optimizer instead of this function - */ - _onCrawlEnd(cb: () => void): void { - this._onCrawlEndCallbacks.push(cb) - } } function invalidateModule( @@ -292,7 +278,7 @@ interface CrawlEndFinder { cancel: () => void } -function setupOnCrawlEnd(onCrawlEnd: () => void): CrawlEndFinder { +function setupOnCrawlEnd(): CrawlEndFinder { const registeredIds = new Set() const seenIds = new Set() const onCrawlEndPromiseWithResolvers = promiseWithResolvers() @@ -304,15 +290,6 @@ function setupOnCrawlEnd(onCrawlEnd: () => void): CrawlEndFinder { cancelled = true } - let crawlEndCalled = false - function callOnCrawlEnd() { - if (!cancelled && !crawlEndCalled) { - crawlEndCalled = true - onCrawlEnd() - } - onCrawlEndPromiseWithResolvers.resolve() - } - function registerRequestProcessing( id: string, done: () => Promise, @@ -352,7 +329,7 @@ function setupOnCrawlEnd(onCrawlEnd: () => void): CrawlEndFinder { } async function callOnCrawlEndWhenIdle() { if (cancelled || registeredIds.size > 0) return - callOnCrawlEnd() + onCrawlEndPromiseWithResolvers.resolve() } return {