Skip to content

Commit 642f9bc

Browse files
authoredNov 29, 2023
refactor: align with Promise.withResolvers() (#15171)
1 parent d207c21 commit 642f9bc

File tree

4 files changed

+37
-30
lines changed

4 files changed

+37
-30
lines changed
 

‎packages/vite/src/node/optimizer/index.ts

-13
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,6 @@ export interface DepOptimizationResult {
166166
cancel: () => void
167167
}
168168

169-
export interface DepOptimizationProcessing {
170-
promise: Promise<void>
171-
resolve: () => void
172-
}
173-
174169
export interface OptimizedDepInfo {
175170
id: string
176171
file: string
@@ -885,14 +880,6 @@ export async function addManuallyIncludedOptimizeDeps(
885880
}
886881
}
887882

888-
export function newDepOptimizationProcessing(): DepOptimizationProcessing {
889-
let resolve: () => void
890-
const promise = new Promise((_resolve) => {
891-
resolve = _resolve
892-
}) as Promise<void>
893-
return { promise, resolve: resolve! }
894-
}
895-
896883
// Convert to { id: src }
897884
export function depsFromOptimizedDepInfo(
898885
depsInfo: Record<string, OptimizedDepInfo>,

‎packages/vite/src/node/optimizer/optimizer.ts

+6-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import colors from 'picocolors'
2-
import { createDebugger, getHash } from '../utils'
2+
import { createDebugger, getHash, promiseWithResolvers } from '../utils'
3+
import type { PromiseWithResolvers } from '../utils'
34
import { getDepOptimizationConfig } from '../config'
45
import type { ResolvedConfig, ViteDevServer } from '..'
56
import {
@@ -14,17 +15,11 @@ import {
1415
getOptimizedDepPath,
1516
initDepsOptimizerMetadata,
1617
loadCachedDepOptimizationMetadata,
17-
newDepOptimizationProcessing,
1818
optimizeServerSsrDeps,
1919
runOptimizeDeps,
2020
toDiscoveredDependencies,
2121
} from '.'
22-
import type {
23-
DepOptimizationProcessing,
24-
DepOptimizationResult,
25-
DepsOptimizer,
26-
OptimizedDepInfo,
27-
} from '.'
22+
import type { DepOptimizationResult, DepsOptimizer, OptimizedDepInfo } from '.'
2823

2924
const debug = createDebugger('vite:deps')
3025

@@ -142,8 +137,8 @@ async function createDepsOptimizer(
142137
}
143138
}
144139

145-
let depOptimizationProcessing = newDepOptimizationProcessing()
146-
let depOptimizationProcessingQueue: DepOptimizationProcessing[] = []
140+
let depOptimizationProcessing = promiseWithResolvers<void>()
141+
let depOptimizationProcessingQueue: PromiseWithResolvers<void>[] = []
147142
const resolveEnqueuedProcessingPromises = () => {
148143
// Resolve all the processings (including the ones which were delayed)
149144
for (const processing of depOptimizationProcessingQueue) {
@@ -269,7 +264,7 @@ async function createDepsOptimizer(
269264

270265
// Create a new promise for the next rerun, discovered missing
271266
// dependencies will be assigned this promise from this point
272-
depOptimizationProcessing = newDepOptimizationProcessing()
267+
depOptimizationProcessing = promiseWithResolvers()
273268
}
274269

275270
function prepareKnownDeps() {

‎packages/vite/src/node/utils.ts

+15
Original file line numberDiff line numberDiff line change
@@ -1331,3 +1331,18 @@ export function isDevServer(
13311331
): server is ViteDevServer {
13321332
return 'pluginContainer' in server
13331333
}
1334+
1335+
export interface PromiseWithResolvers<T> {
1336+
promise: Promise<T>
1337+
resolve: (value: T | PromiseLike<T>) => void
1338+
reject: (reason?: any) => void
1339+
}
1340+
export function promiseWithResolvers<T>(): PromiseWithResolvers<T> {
1341+
let resolve: any
1342+
let reject: any
1343+
const promise = new Promise<T>((_resolve, _reject) => {
1344+
resolve = _resolve
1345+
reject = _reject
1346+
})
1347+
return { promise, resolve, reject }
1348+
}

‎playground/test-utils.ts

+16-6
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,7 @@ async function untilBrowserLog(
267267
target?: string | RegExp | Array<string | RegExp>,
268268
expectOrder = true,
269269
): Promise<string[]> {
270-
let resolve: () => void
271-
let reject: (reason: any) => void
272-
const promise = new Promise<void>((_resolve, _reject) => {
273-
resolve = _resolve
274-
reject = _reject
275-
})
270+
const { promise, resolve, reject } = promiseWithResolvers<void>()
276271

277272
const logs = []
278273

@@ -363,3 +358,18 @@ export async function killProcess(
363358
serverProcess.kill('SIGTERM', { forceKillAfterTimeout: 2000 })
364359
}
365360
}
361+
362+
export interface PromiseWithResolvers<T> {
363+
promise: Promise<T>
364+
resolve: (value: T | PromiseLike<T>) => void
365+
reject: (reason?: any) => void
366+
}
367+
export function promiseWithResolvers<T>(): PromiseWithResolvers<T> {
368+
let resolve: any
369+
let reject: any
370+
const promise = new Promise<T>((_resolve, _reject) => {
371+
resolve = _resolve
372+
reject = _reject
373+
})
374+
return { promise, resolve, reject }
375+
}

0 commit comments

Comments
 (0)
Please sign in to comment.