()
| 156 | |
| 157 | let inited = false |
| 158 | async function init() { |
| 159 | if (inited) return |
| 160 | inited = true |
| 161 | |
| 162 | const cachedMetadata = await loadCachedDepOptimizationMetadata(environment) |
| 163 | |
| 164 | firstRunCalled = !!cachedMetadata |
| 165 | |
| 166 | metadata = depsOptimizer.metadata = |
| 167 | cachedMetadata || initDepsOptimizerMetadata(environment, sessionTimestamp) |
| 168 | |
| 169 | if (!cachedMetadata) { |
| 170 | waitingForCrawlEnd = true |
| 171 | |
| 172 | // Enter processing state until crawl of static imports ends |
| 173 | currentlyProcessing = true |
| 174 | |
| 175 | // Initialize discovered deps with manually added optimizeDeps.include info |
| 176 | |
| 177 | const manuallyIncludedDeps: Record<string, string> = {} |
| 178 | await addManuallyIncludedOptimizeDeps(environment, manuallyIncludedDeps) |
| 179 | |
| 180 | const manuallyIncludedDepsInfo = toDiscoveredDependencies( |
| 181 | environment, |
| 182 | manuallyIncludedDeps, |
| 183 | sessionTimestamp, |
| 184 | ) |
| 185 | |
| 186 | for (const depInfo of Object.values(manuallyIncludedDepsInfo)) { |
| 187 | addOptimizedDepInfo(metadata, 'discovered', { |
| 188 | ...depInfo, |
| 189 | processing: depOptimizationProcessing.promise, |
| 190 | }) |
| 191 | newDepsDiscovered = true |
| 192 | } |
| 193 | |
| 194 | environment.waitForRequestsIdle().then(onCrawlEnd) |
| 195 | |
| 196 | if (noDiscovery) { |
| 197 | // We don't need to scan for dependencies or wait for the static crawl to end |
| 198 | // Run the first optimization run immediately |
| 199 | runOptimizer() |
| 200 | } else { |
| 201 | // Important, the scanner is dev only |
| 202 | depsOptimizer.scanProcessing = new Promise((resolve) => { |
| 203 | // Runs in the background in case blocking high priority tasks |
| 204 | ;(async () => { |
| 205 | try { |
| 206 | debug?.(colors.green(`scanning for dependencies...`)) |
| 207 | |
| 208 | const scanTimer = setTimeout(() => { |
| 209 | logger.info('[optimizer] scanning dependencies...', { |
| 210 | timestamp: true, |
| 211 | }) |
| 212 | }, 1000) |
| 213 | |
| 214 | let deps: Record<string, string> |
| 215 | try { |
nothing calls this directly
no test coverage detected