UNPKG

weapp-tailwindcss

Version:

把 tailwindcss 原子化样式思想,带给小程序开发者们! bring tailwindcss to miniprogram developers!

825 lines (824 loc) 144 kB
const require_rolldown_runtime = require("./rolldown-runtime-CVvi-lCc.cjs"); const require_generator = require("./generator-BE34PYSC.cjs"); const require_object = require("./object-C_Vr6_S5.cjs"); const require_options = require("./options-hVsoTfwL.cjs"); const require_utils = require("./utils-CuKLf1Zv.cjs"); const require_v4_generation_core = require("./v4-generation-core-CDI6ChiH.cjs"); const require_wxml = require("./wxml-DSMNuUaP.cjs"); const require_hmr_timing = require("./hmr-timing-Cye_A4mI.cjs"); const require_context = require("./context-OqD_eBxQ.cjs"); const require_tailwindcss = require("./tailwindcss-DcpiKvmJ.cjs"); const require_style_options = require("./style-options-B_ppaVIg.cjs"); const require_source_candidate_scan_signature = require("./source-candidate-scan-signature-D4X_VprL.cjs"); const require_pipeline_helpers = require("./pipeline-helpers-DMO0otI8.cjs"); const require_css_loader_runtime = require("./css-loader-runtime-CSv0lKqV.cjs"); const require_runtime_registry = require("./runtime-registry-Y7NrD2WH.cjs"); let node_fs = require("node:fs"); node_fs = require_rolldown_runtime.__toESM(node_fs, 1); let node_path = require("node:path"); node_path = require_rolldown_runtime.__toESM(node_path, 1); let node_process = require("node:process"); node_process = require_rolldown_runtime.__toESM(node_process, 1); let _weapp_tailwindcss_postcss = require("@weapp-tailwindcss/postcss"); let node_module = require("node:module"); node_module = require_rolldown_runtime.__toESM(node_module, 1); let node_fs_promises = require("node:fs/promises"); let micromatch = require("micromatch"); micromatch = require_rolldown_runtime.__toESM(micromatch, 1); let _weapp_core_escape = require("@weapp-core/escape"); let _weapp_tailwindcss_shared_node = require("@weapp-tailwindcss/shared/node"); //#region src/bundlers/webpack/BaseUnifiedPlugin/shared.ts function getCacheKey(filename) { return filename; } function stripResourceQuery(resource) { if (typeof resource !== "string") return resource; return require_v4_generation_core.stripRequestQuery(resource); } function isCssLikeModuleResource(resource, cssMatcher) { if (typeof resource !== "string") return false; const normalizedResource = stripResourceQuery(resource); if (normalizedResource && cssMatcher(normalizedResource)) return true; if (require_v4_generation_core.isSourceStyleRequest(resource)) return true; return false; } function hasLoaderEntry(entries, target) { if (!target) return false; return entries.some((entry) => entry.loader?.includes?.(target)); } function normalizeWatchPath(file) { return node_path.default.resolve(file); } function isFileInContext(file, context) { const relative = node_path.default.relative(normalizeWatchPath(context), normalizeWatchPath(file)); return relative.length > 0 && !relative.startsWith("..") && !node_path.default.isAbsolute(relative); } function toChunkFiles(files) { if (!files) return []; if (Array.isArray(files)) return files; return [...files]; } function inferWebpackMainCssFiles(chunks, cssMatcher, options = {}) { const mainCssFiles = /* @__PURE__ */ new Set(); const shouldCheckSourceResources = Boolean(options.mainSourceFiles?.size); for (const chunk of chunks) { const files = toChunkFiles(chunk.files); if (!(chunk.hasRuntime?.() === true)) continue; for (const file of files) { if (!cssMatcher(file)) continue; if (shouldCheckSourceResources) { const resources = options.resourcesByAsset?.get(file); if (!resources || ![...resources].some((resource) => options.mainSourceFiles?.has(resource))) continue; } mainCssFiles.add(file); } } return mainCssFiles; } function resolveSingleActiveWebpackCssResource(assetResources, activeWebpackAssetResourceFiles) { const activeAssetResourceMatches = [...assetResources ?? []].map((sourceFile) => node_path.default.resolve(sourceFile)).filter((sourceFile) => activeWebpackAssetResourceFiles.has(sourceFile)).sort(); return activeAssetResourceMatches.length === 1 ? activeAssetResourceMatches[0] : void 0; } function resolveWebpackCssModuleIdentifierResource(module) { if (!module.type?.startsWith("css/") || typeof module.identifier !== "function") return; const identifier = module.identifier(); const request = identifier.startsWith("css|") ? identifier.slice(4) : identifier; const resourceWithMetadata = request.slice(request.lastIndexOf("!") + 1); const metadataIndex = resourceWithMetadata.indexOf("|"); return metadataIndex === -1 ? resourceWithMetadata : resourceWithMetadata.slice(0, metadataIndex); } function createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, onlyUnambiguousCssAssets) { const resourcesByAsset = /* @__PURE__ */ new Map(); if (!chunkGraph?.getChunkModulesIterable) return resourcesByAsset; const collectModuleResources = (module, resources, seen = /* @__PURE__ */ new Set()) => { if (!module || seen.has(module)) return; seen.add(module); const candidates = [ module.resource, module.request, module.userRequest ]; if (onlyUnambiguousCssAssets) candidates.push(resolveWebpackCssModuleIdentifierResource(module)); for (const candidate of candidates) { if (typeof candidate !== "string") continue; const normalized = normalizeResource(candidate, module); if (normalized) resources.add(normalized); } for (const nested of [module.rootModule, chunkGraph.getIssuer?.(module)]) if (nested) collectModuleResources(nested, resources, seen); for (const nested of module.modules ?? []) collectModuleResources(nested, resources, seen); for (const dependency of module.dependencies ?? []) { const dependencyLike = dependency; for (const candidate of [dependencyLike.request, dependencyLike.userRequest]) { if (typeof candidate !== "string") continue; const normalized = normalizeResource(candidate, module); if (normalized) resources.add(normalized); } const dependencyModule = chunkGraph.getModule?.(dependency); if (dependencyModule) collectModuleResources(dependencyModule, resources, seen); } }; for (const chunk of chunks) { const cssFiles = toChunkFiles(chunk.files).filter((file) => cssMatcher(file)); if (cssFiles.length === 0 || onlyUnambiguousCssAssets && cssFiles.length !== 1) continue; const modules = chunkGraph.getChunkModulesIterable(chunk); if (!modules) continue; const cssResources = /* @__PURE__ */ new Set(); for (const module of modules) collectModuleResources(module, cssResources); if (cssResources.size === 0) continue; for (const cssFile of cssFiles) resourcesByAsset.set(cssFile, cssResources); } return resourcesByAsset; } function createWebpackCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) { return createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, false); } function createWebpackDirectCssAssetResourceMap(chunks, chunkGraph, cssMatcher, normalizeResource) { return createWebpackCssAssetResourceMapInternal(chunks, chunkGraph, cssMatcher, normalizeResource, true); } function createAssetHashByChunkMap(chunks) { const partsByFile = /* @__PURE__ */ new Map(); for (const chunk of chunks) { const hash = typeof chunk.hash === "string" ? chunk.hash : void 0; if (!hash) continue; const chunkId = String(chunk.id ?? chunk.name ?? ""); for (const file of toChunkFiles(chunk.files)) { if (!file) continue; let parts = partsByFile.get(file); if (!parts) { parts = []; partsByFile.set(file, parts); } parts.push(`${chunkId}:${hash}`); } } const hashByFile = /* @__PURE__ */ new Map(); for (const [file, parts] of partsByFile.entries()) hashByFile.set(file, parts.sort().join("|")); return hashByFile; } function createRuntimeAwareCssHash(assetHash, sourceHash, runtimeSetHash) { return `${assetHash ?? sourceHash}:${runtimeSetHash}`; } function isWatchFileInRuntimeDependencies(file, dependencies) { const normalizedFile = normalizeWatchPath(file); for (const dependency of dependencies.files ?? []) if (normalizeWatchPath(dependency) === normalizedFile) return true; for (const context of dependencies.contexts ?? []) if (isFileInContext(normalizedFile, context)) return true; return false; } //#endregion //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/pipeline-helpers/resources.ts function isWindowsAbsoluteResourcePath(file) { return /^[a-z]:[\\/]/i.test(file) || /^[/\\]{2}[^/\\]/.test(file); } function isPosixAbsoluteResourcePath(file) { return file.startsWith("/"); } function resolveWebpackResourcePath(file, base) { if (isWindowsAbsoluteResourcePath(file)) return node_path.default.win32.resolve(file); if (isPosixAbsoluteResourcePath(file)) return node_path.default.posix.resolve(file); if (base) { if (isWindowsAbsoluteResourcePath(base)) return node_path.default.win32.resolve(base, file); if (isPosixAbsoluteResourcePath(base)) return node_path.default.posix.resolve(base, file); return node_path.default.resolve(base, file); } } function dirnameWebpackResourcePath(file) { if (isWindowsAbsoluteResourcePath(file)) return node_path.default.win32.dirname(file); if (isPosixAbsoluteResourcePath(file)) return node_path.default.posix.dirname(file); return node_path.default.dirname(file); } function resolveWebpackCssAssetModuleResource(resource, issuer, options) { if (!isCssLikeModuleResource(resource, options.cssMatcher, options.appType)) return; const normalized = stripResourceQuery(resource); if (!normalized) return; const absoluteResource = resolveWebpackResourcePath(normalized); if (absoluteResource) return absoluteResource; const issuerResource = issuer?.resource ? stripResourceQuery(issuer.resource) : void 0; const issuerResourcePath = issuerResource ? resolveWebpackResourcePath(issuerResource) : void 0; return resolveWebpackResourcePath(normalized, issuerResourcePath ? dirnameWebpackResourcePath(issuerResourcePath) : issuer?.context); } function isSameWebpackCssSourceScope(options) { if (!options.currentSourceFile) return false; const candidateKey = resolveWebpackResourcePath(options.candidateSourceFile) ?? node_path.default.resolve(options.candidateSourceFile); if (candidateKey === (resolveWebpackResourcePath(options.currentSourceFile) ?? node_path.default.resolve(options.currentSourceFile))) return true; const outputResources = options.resourcesByAsset.get(options.outputFile); if (!outputResources) return false; return [...outputResources].some((resource) => { return (resolveWebpackResourcePath(resource) ?? node_path.default.resolve(resource)) === candidateKey; }); } function shouldAppendCurrentWebpackAssetUserCss(options) { const hasGeneratedAssetUserCss = options.currentAssetLooksGenerated && options.currentAssetHasUserCss; return !options.currentAssetHasBundlerGeneratedMarker && !options.shouldPreserveGeneratedWebAssetUserCss && (hasGeneratedAssetUserCss || !options.sourceCssProcessed || options.registeredUserRawSource === void 0 || options.currentAssetHasUserCss) && !(options.sourceCssProcessed && options.currentAssetLooksGenerated && !options.currentAssetHasUserCss); } function createWebpackCurrentAssetUserRawSource(options) { if (!options.shouldAppendCurrentAssetUserCss) return; if (options.sourceCssProcessed) return { css: options.currentAssetUserCssSource, processed: true }; if (!options.currentAssetHasUserCss) return; return { css: options.currentAssetUserCssSource, processed: options.currentAssetLooksGenerated }; } //#endregion //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/css-source-resolvers.ts function normalizeWebpackCssSourceRef(file) { return file.replaceAll("\\", "/"); } function collectWebpackCssTokenSourceRefs(source) { const refs = /* @__PURE__ */ new Set(); for (const line of source.split("\n")) { if (!line.includes("/* tokens:") || !line.includes("<=")) continue; const traceStart = line.indexOf("<="); const traceEnd = line.indexOf("*/", traceStart); const trace = line.slice(traceStart + 2, traceEnd >= 0 ? traceEnd : void 0); for (const segment of trace.split("|")) { const sourceList = segment.replace(/^[^<]*<=\s*/, "").split(","); for (const ref of sourceList) { const normalizedRef = ref.trim(); if (normalizedRef) refs.add(normalizeWebpackCssSourceRef(normalizedRef)); } } } return refs; } function readWebpackCompilationAssetSource(compilation, file) { const source = compilation.getAsset?.(file)?.source?.source?.(); if (source === void 0) return; return typeof source === "string" ? source : source.toString(); } function resolveWebpackCssImportFile(file, request) { if (/^(?:https?:)?\/\//i.test(request) || request.startsWith("/")) return; if (!/\.(?:css|wxss|acss|ttss|qss|jxss|tyss)(?:$|[?#])/i.test(request)) return; const cleanRequest = request.replace(/[?#].*$/, ""); return normalizeWebpackCssSourceRef(node_path.default.posix.join(node_path.default.posix.dirname(normalizeWebpackCssSourceRef(file)), cleanRequest)); } function collectCssImportRequests(source) { return [...source.matchAll(/@import\s+(?:url\(\s*)?(?:"([^"]+)"|'([^']+)'|([^\s;)]+))/g)].map((match) => match[1] ?? match[2] ?? match[3]).filter((request) => typeof request === "string" && request.length > 0); } function collectMainImportedCssFiles(compilation, cssAssetFiles, cssMatcher, isMainCssFile) { const files = /* @__PURE__ */ new Set(); const candidates = new Set(cssAssetFiles); for (const chunk of compilation.chunks) for (const file of chunk.files ?? []) candidates.add(file); for (const file of candidates) { if (!cssMatcher(file) || !isMainCssFile(file)) continue; const source = readWebpackCompilationAssetSource(compilation, file); if (!source?.includes("@import")) continue; for (const request of collectCssImportRequests(source)) { const importedFile = resolveWebpackCssImportFile(file, request); if (importedFile) files.add(importedFile); } } return files; } function createWebpackCssSourceResolvers(options) { const { activeWebpackAssetResourceFiles, appType, compilerOptions, compilation, cssAssetFiles, cssAssetResources, directCssAssetResources, cssHandlerOptionsCache, cssSources, cssUserHandlerOptionsCache, groupedCssEntriesLength, singleCssAssetFile, isWebGeneratorTarget, outputDir, runtimeState } = options; const hasConfiguredTailwindV4SourceRoots = () => { const tailwindOptions = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options); return (tailwindOptions?.v4?.cssEntries?.length ?? 0) > 0 || (tailwindOptions?.v4?.cssSources?.length ?? 0) > 0; }; const configuredCssEntryFiles = (() => { const tailwindOptions = require_generator.resolveTailwindcssOptions(runtimeState.tailwindRuntime.options); const entries = [...compilerOptions.cssEntries ?? [], ...tailwindOptions?.v4?.cssEntries ?? []].filter((file) => typeof file === "string" && file.length > 0).map((file) => node_path.default.resolve(file)); return [...new Set(entries)]; })(); const configuredMainCssEntryFiles = configuredCssEntryFiles.slice(0, 1); const scoreCssSourceOutputMatch = (file, sourceFile) => require_v4_generation_core.scoreTailwindV4CssSourceFileMatch(file, sourceFile, { outputRoot: outputDir, projectRoot: compilerOptions.tailwindcssBasedir, cwd: compilerOptions.tailwindcssBasedir }); const isConfiguredMainCssEntryFile = (sourceFile) => configuredMainCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile)); const isCssSourceAllowedForOutput = (file, sourceFile) => !isConfiguredMainCssEntryFile(sourceFile) || directCssAssetResources.get(file)?.has(sourceFile) === true || scoreCssSourceOutputMatch(file, sourceFile) > 0; const inferredMainCssFiles = new Set([...inferWebpackMainCssFiles(compilation.chunks, compilerOptions.cssMatcher, { mainSourceFiles: new Set(configuredMainCssEntryFiles), resourcesByAsset: cssAssetResources })].filter((file) => { if (configuredMainCssEntryFiles.length === 0) return true; return [...cssAssetResources.get(file) ?? []].some((resource) => isConfiguredMainCssEntryFile(resource) && isCssSourceAllowedForOutput(file, resource)); })); const mainImportedCssFiles = collectMainImportedCssFiles(compilation, cssAssetFiles, compilerOptions.cssMatcher, (file) => compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file)); const singleConfiguredCssAsset = isWebGeneratorTarget && configuredMainCssEntryFiles.length > 0 && groupedCssEntriesLength === 1 ? singleCssAssetFile : void 0; const isMainCssChunk = (file) => { const resources = cssAssetResources.get(file); if (resources && configuredCssEntryFiles.length > 0) for (const resource of resources) { const index = configuredCssEntryFiles.findIndex((entry) => node_path.default.resolve(entry) === node_path.default.resolve(resource)); if (index >= 0) return index === 0; } if (configuredCssEntryFiles.length > 1) return false; return compilerOptions.mainCssChunkMatcher(file, appType) || inferredMainCssFiles.has(file) || mainImportedCssFiles.has(normalizeWebpackCssSourceRef(file)) || file === singleConfiguredCssAsset; }; const activeWebpackCssSourceFiles = /* @__PURE__ */ new Set(); const resolveConfiguredMainCssSourceFile = (file) => { if (!isMainCssChunk(file)) return; if (configuredMainCssEntryFiles.length !== 1) return; if (groupedCssEntriesLength !== 1 && file !== singleCssAssetFile) return; for (const sourceFile of configuredMainCssEntryFiles) if (cssSources.has(sourceFile)) { activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } }; const resolveWebpackCssSourceFile = (file, rawSource) => { const assetResources = cssAssetResources.get(file); const activeAssetResource = resolveSingleActiveWebpackCssResource(assetResources, activeWebpackAssetResourceFiles); if (cssSources.size === 0) { if (activeAssetResource && isCssSourceAllowedForOutput(file, activeAssetResource)) { activeWebpackCssSourceFiles.add(activeAssetResource); return activeAssetResource; } if (assetResources && assetResources.size > 0) return; return resolveConfiguredMainCssSourceFile(file); } const resourceMatches = [...assetResources ?? []].filter((sourceFile) => cssSources.has(sourceFile)).filter((sourceFile) => isCssSourceAllowedForOutput(file, sourceFile)).sort(); const configuredResourceMatches = resourceMatches.filter((sourceFile) => configuredCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile))); if (configuredResourceMatches.length === 1) { const sourceFile = configuredResourceMatches[0]; activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } if (resourceMatches.length === 1) { const sourceFile = resourceMatches[0]; activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } const tailwindSourceMatches = resourceMatches.filter((sourceFile) => { const sourceCss = cssSources.get(sourceFile)?.css; return sourceCss && (require_generator.hasTailwindRootDirectives(sourceCss, { importFallback: true }) || require_generator.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || require_generator.hasTailwindApplyDirective(sourceCss) || require_generator.hasTailwindGeneratedCss(sourceCss) || require_generator.hasTailwindGeneratedCssMarkers(sourceCss)); }); if (tailwindSourceMatches.length === 1) { const sourceFile = tailwindSourceMatches[0]; activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } if (activeAssetResource && isCssSourceAllowedForOutput(file, activeAssetResource)) { activeWebpackCssSourceFiles.add(activeAssetResource); return activeAssetResource; } if (rawSource) { const tokenSourceRefs = collectWebpackCssTokenSourceRefs(rawSource); if (tokenSourceRefs.size > 0) { const tokenSourceMatches = [...cssSources.keys()].filter((sourceFile) => { const relativeSourceFile = normalizeWebpackCssSourceRef(node_path.default.relative(compilerOptions.tailwindcssBasedir, sourceFile)); const absoluteSourceFile = normalizeWebpackCssSourceRef(node_path.default.resolve(sourceFile)); return tokenSourceRefs.has(relativeSourceFile) || tokenSourceRefs.has(absoluteSourceFile); }).sort(); if (tokenSourceMatches.length === 1) { const sourceFile = tokenSourceMatches[0]; activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } } const representedTailwindSourceMatches = [...cssSources.entries()].filter(([, source]) => require_pipeline_helpers.isWebpackCssSourceRepresentedInAsset(rawSource, source.css)).map(([sourceFile]) => ({ sourceFile, score: require_v4_generation_core.scoreTailwindV4CssSourceFileMatch(file, sourceFile, { outputRoot: outputDir, projectRoot: compilerOptions.tailwindcssBasedir, cwd: compilerOptions.tailwindcssBasedir }) })).filter((match) => match.score > 0).sort((a, b) => b.score - a.score || a.sourceFile.localeCompare(b.sourceFile)); const bestScore = representedTailwindSourceMatches[0]?.score ?? 0; const bestMatches = representedTailwindSourceMatches.filter((match) => match.score === bestScore); if (bestMatches.length === 1) { const sourceFile = bestMatches[0].sourceFile; activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } } const pathMatches = [...cssSources.keys()].map((sourceFile) => ({ sourceFile, score: require_v4_generation_core.scoreTailwindV4CssSourceFileMatch(file, sourceFile, { outputRoot: outputDir, projectRoot: compilerOptions.tailwindcssBasedir, cwd: compilerOptions.tailwindcssBasedir }) })).filter((match) => match.score >= 1e3).sort((a, b) => b.score - a.score || a.sourceFile.localeCompare(b.sourceFile)); const bestPathScore = pathMatches[0]?.score ?? 0; const bestPathMatches = pathMatches.filter((match) => match.score === bestPathScore); if (bestPathMatches.length === 1) { const sourceFile = bestPathMatches[0].sourceFile; activeWebpackCssSourceFiles.add(sourceFile); return sourceFile; } if (assetResources && assetResources.size > 0) return; return resolveConfiguredMainCssSourceFile(file); }; const isSameWebpackSourceScope = (outputFile, candidateSourceFile, currentSourceFile) => isSameWebpackCssSourceScope({ candidateSourceFile, currentSourceFile, outputFile, resourcesByAsset: cssAssetResources }); const getCssHandlerOptions = (file, rawSource) => { const majorVersion = runtimeState.tailwindRuntime.majorVersion; const isMainCssAsset = isMainCssChunk(file); const sourceFile = resolveWebpackCssSourceFile(file, rawSource); const sourceMatchedMainCssEntry = sourceFile !== void 0 && isConfiguredMainCssEntryFile(sourceFile) && isCssSourceAllowedForOutput(file, sourceFile); const isMainChunk = isMainCssAsset || sourceMatchedMainCssEntry; const sourceCss = sourceFile ? cssSources.get(sourceFile)?.css : void 0; const generatorSourceCss = require_pipeline_helpers.removeWebpackGeneratorNonTailwindImports(sourceCss); const generatorCssSource = require_pipeline_helpers.createWebpackGeneratorCssSource(sourceFile, generatorSourceCss); const cacheKey = [ majorVersion ?? "unknown", isMainChunk ? "1" : "0", sourceFile ?? "asset", sourceCss === void 0 ? "source:0" : compilerOptions.cache.computeHash(sourceCss), generatorSourceCss === sourceCss || generatorSourceCss === void 0 ? "generator-source:0" : compilerOptions.cache.computeHash(generatorSourceCss), file ].join(":"); const cached = cssHandlerOptionsCache.get(cacheKey); if (cached) return cached; const created = { isMainChunk, postcssOptions: { options: { from: sourceFile ?? file } }, sourceOptions: { outputRoot: outputDir, ...generatorCssSource === void 0 ? {} : { cssSources: [generatorCssSource] }, ...generatorSourceCss === void 0 ? {} : { sourceCss: generatorSourceCss }, ...sourceFile === void 0 ? {} : { sourceFile } }, ...require_style_options.normalizeStyleHandlerMajorVersion(majorVersion) === void 0 ? {} : { majorVersion: 4 } }; cssHandlerOptionsCache.set(cacheKey, created); return created; }; const getCssUserHandlerOptions = (file) => { const majorVersion = runtimeState.tailwindRuntime.majorVersion; const sourceFile = resolveWebpackCssSourceFile(file); const sourceCss = sourceFile ? cssSources.get(sourceFile)?.css : void 0; const generatorSourceCss = require_pipeline_helpers.removeWebpackGeneratorNonTailwindImports(sourceCss); const cacheKey = [ majorVersion ?? "unknown", sourceFile ?? "asset", sourceCss === void 0 ? "source:0" : compilerOptions.cache.computeHash(sourceCss), generatorSourceCss === sourceCss || generatorSourceCss === void 0 ? "generator-source:0" : compilerOptions.cache.computeHash(generatorSourceCss), file ].join(":"); const cached = cssUserHandlerOptionsCache.get(cacheKey); if (cached) return cached; const created = { ...getCssHandlerOptions(file), isMainChunk: false }; cssUserHandlerOptionsCache.set(cacheKey, created); return created; }; return { activeWebpackCssSourceFiles, configuredCssEntryFiles, configuredMainCssEntryFiles, getCssHandlerOptions, getCssUserHandlerOptions, hasConfiguredTailwindV4SourceRoots, isSameWebpackSourceScope, resolveWebpackCssSourceFile }; } //#endregion //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/finalize-assets.ts async function finalizeWebpackProcessAssets(context) { const { activeProcessCacheKeys, activeProcessHashKeys, activeWebpackCssSourceFiles, compilerOptions, cssAssetResources, cssHandlerOptionsCache, cssTaskFactories, cssUserHandlerOptionsCache, debug, entries, groupedEntries, hmrTimingStartedAt, htmlTaskFactories, jsTaskFactories, pruneWebpackCssSources, recordTimingDetail, registeredWebpackCssSourceFiles, taskConcurrency, tasks, timingDetails, watchMode, webpackSourceCandidateScanCache } = context; if (!watchMode) { require_v4_generation_core.pushConcurrentTaskFactories(tasks, htmlTaskFactories, taskConcurrency); await Promise.all(tasks); tasks.length = 0; require_v4_generation_core.pushConcurrentTaskFactories(tasks, jsTaskFactories, taskConcurrency); await Promise.all(tasks); tasks.length = 0; require_v4_generation_core.pushConcurrentTaskFactories(tasks, cssTaskFactories, taskConcurrency); } const taskWaitStartedAt = performance.now(); await Promise.all(tasks); recordTimingDetail("tasks.wait", taskWaitStartedAt); const pruneStartedAt = performance.now(); compilerOptions.cache.prune?.({ cacheKeys: activeProcessCacheKeys, hashKeys: activeProcessHashKeys }); const activeCssFiles = new Set(groupedEntries.css.map(([file]) => file)); require_pipeline_helpers.pruneWebpackCssHandlerOptionCaches(cssHandlerOptionsCache, cssUserHandlerOptionsCache, activeCssFiles); if (activeCssFiles.size > 0) pruneWebpackCssSources?.(/* @__PURE__ */ new Set([ ...registeredWebpackCssSourceFiles, ...activeWebpackCssSourceFiles, ...[...cssAssetResources.values()].flatMap((resources) => [...resources]) ]), { watchMode }); recordTimingDetail("cache.prune", pruneStartedAt); debug("end"); require_hmr_timing.emitHmrTiming("webpack", "processAssets", performance.now() - hmrTimingStartedAt, { ...timingDetails, memoryDebug: require_pipeline_helpers.resolveWebpackMemoryDebugStats({ activeAssetFiles: entries.length, activeCssFiles: activeCssFiles.size, activeProcessCacheKeys, activeProcessHashKeys, cache: compilerOptions.cache, cssHandlerOptionsCache, cssUserHandlerOptionsCache, phase: "processAssets", sourceCandidateScan: webpackSourceCandidateScanCache.getMemoryStats() }) }); compilerOptions.onEnd(); } //#endregion //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/generated-css-result.ts async function finalizeWebpackGeneratedCssResult(context) { const { ConcatSource, compilerOptions, cssHandlerOptions, currentRawSource, debug, file, finalizeCssAssetSource, finalizeTracedCss, generated, generatorRawSource, generatorRuntimeSet, isWebGeneratorTarget, runtimeState, shouldPreserveExistingPreflight, sourceCss, sourceCssProcessed, userRawSource } = context; const finalizedGeneratedCss = generated ? finalizeCssAssetSource(isWebGeneratorTarget && currentRawSource.includes("tailwindcss v4.") ? require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend({ css: generated.css, processed: true }, { css: require_pipeline_helpers.removeWebpackTailwindGeneratedAssetCss(currentRawSource), processed: true })?.css ?? generated.css : generated.css, { cssPreflight: cssHandlerOptions.isMainChunk, generatedCss: true, preserveExistingPreflight: shouldPreserveExistingPreflight }) : isWebGeneratorTarget ? finalizeCssAssetSource(generatorRawSource, { generatedCss: false }) : finalizeCssAssetSource((await compilerOptions.styleHandler(generatorRawSource, cssHandlerOptions)).css, { generatedCss: false }); const sourceBareUserCss = isWebGeneratorTarget ? void 0 : require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend(...[ userRawSource, sourceCss === void 0 ? void 0 : { css: sourceCss, processed: sourceCssProcessed }, { css: generatorRawSource, processed: false } ].map((source) => { if (source === void 0) return; return { css: require_pipeline_helpers.collectWebpackBareSelectorUserCss(source.css), processed: source.processed }; })); const handledSourceBareUserCss = sourceBareUserCss === void 0 ? "" : sourceBareUserCss.processed ? sourceBareUserCss.css : (await compilerOptions.styleHandler(sourceBareUserCss.css, cssHandlerOptions)).css; const finalizedSourceBareUserCss = handledSourceBareUserCss.trim().length === 0 ? "" : finalizeCssAssetSource(handledSourceBareUserCss, { cssPreflight: false, generatedCss: false }); const missingSourceBareUserCss = finalizedSourceBareUserCss.trim().length === 0 ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(finalizedGeneratedCss, finalizedSourceBareUserCss); const source = new ConcatSource(finalizeTracedCss(missingSourceBareUserCss.trim().length === 0 ? finalizedGeneratedCss : require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend({ css: finalizedGeneratedCss, processed: true }, { css: missingSourceBareUserCss, processed: true }).css, cssHandlerOptions, { finalized: true })); if (generated) { for (const className of generated.classSet) generatorRuntimeSet.add(className); debug("css handle via tailwind v%s engine(%s): %s", runtimeState.tailwindRuntime.majorVersion, generated.target, file); } else debug("css handle: %s", file); return { result: source }; } //#endregion //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/generated-css-task.ts async function processWebpackGeneratedCssAsset(element, context) { const { ConcatSource, affectedCompilationScopes, assetHashByChunk, compilation, compilationChanges, compilerOptions, configuredCssEntryFiles, configuredMainCssEntryFiles, createRuntimeSetHash, cssSourceTraceSignature, cssSources, cssTaskFactories, debug, enqueueTask, finalizeCssAssetSource, finalizeTracedCss, generatedCssSources, generatorRuntimeSet, getCompilationDependencyRevision, getCssHandlerOptions, getCssUserHandlerOptions, getGeneratorRuntimeSet, hasConfiguredTailwindV4SourceRoots, isSameWebpackSourceScope, isWebGeneratorTarget, rememberProcessCacheKey, resolveWebpackCssSourceFile, runtimeAffectingSourceHash, runtimeState, transformRuntimeSet, updateAssetIfChanged, watchMode, webpackSourceCandidateValueSignature, webpackSourceCandidates } = context; const [file, originalSource] = element; const currentRawSource = originalSource.source().toString(); const chunkHash = assetHashByChunk.get(file); const cacheKey = file; const hashKey = `${file}:asset`; rememberProcessCacheKey(cacheKey, hashKey); const cssHandlerOptionsForHash = getCssHandlerOptions(file, currentRawSource); const compilationScope = { id: file, kind: cssHandlerOptionsForHash.isMainChunk ? "global" : "component" }; const scopeCompilationChanges = affectedCompilationScopes.has(compilationScope.id) ? compilationChanges : void 0; const compilationDependencyRevision = getCompilationDependencyRevision(compilationScope.id); const cssChunkHash = watchMode && cssHandlerOptionsForHash.isMainChunk ? void 0 : chunkHash; const cssSourceHash = (() => { const sourceFile = resolveWebpackCssSourceFile(file, currentRawSource); const sourceCss = sourceFile ? cssSources.get(sourceFile)?.css : void 0; const generatorSourceCss = require_pipeline_helpers.removeWebpackGeneratorNonTailwindImports(sourceCss); if (sourceCss === void 0) return sourceFile === void 0 ? "webpack-css-source:0" : `webpack-css-source:0:${sourceFile}`; return `webpack-css-source:1:${compilerOptions.cache.computeHash(sourceCss)}:${generatorSourceCss === sourceCss || generatorSourceCss === void 0 ? "generator-source:0" : compilerOptions.cache.computeHash(generatorSourceCss)}`; })(); const runtimeAwareHash = createRuntimeAwareCssHash(cssChunkHash, compilerOptions.cache.computeHash(currentRawSource), `${createRuntimeSetHash(getGeneratorRuntimeSet())}:${runtimeAffectingSourceHash}:${webpackSourceCandidates?.signatureHash ?? "source-candidates:0"}:${webpackSourceCandidateValueSignature}:${cssSourceTraceSignature}:${cssSourceHash}:compiler-dependencies:${compilationDependencyRevision}`); await enqueueTask(async () => { await require_hmr_timing.processCachedTask({ cache: compilerOptions.cache, cacheKey, hashKey, rawSource: currentRawSource, hash: runtimeAwareHash, applyResult(source, { cacheHit }) { updateAssetIfChanged(file, source, { compare: !cacheHit, notifyUpdate: !cacheHit }); }, onCacheHit() { debug("css cache hit: %s", file); }, transform: async () => { await runtimeState.readyPromise; const cssHandlerOptions = getCssHandlerOptions(file, currentRawSource); const generatorRawSource = require_pipeline_helpers.resolveWebpackGeneratorRawSource(currentRawSource, cssHandlerOptions); if (require_css_loader_runtime.isWebpackCssLoaderRuntimeSource(generatorRawSource)) return { result: new ConcatSource(currentRawSource) }; const sourceFile = cssHandlerOptions.sourceOptions?.sourceFile; const sourceCss = sourceFile ? cssSources.get(node_path.default.resolve(sourceFile))?.css : void 0; const isConfiguredCssSource = sourceFile !== void 0 && configuredCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile)); const isConfiguredMainCssSource = sourceFile !== void 0 && configuredMainCssEntryFiles.some((entry) => node_path.default.resolve(entry) === node_path.default.resolve(sourceFile)); const sourceCssHasTailwindRoot = sourceCss !== void 0 && require_generator.hasTailwindRootDirectives(sourceCss, { importFallback: true }); const shouldPreserveExistingPreflight = cssHandlerOptions.isMainChunk || !isConfiguredMainCssSource && (isConfiguredCssSource || sourceCssHasTailwindRoot); const loaderGeneratedCss = sourceFile ? generatedCssSources.get(node_path.default.resolve(sourceFile)) : void 0; const shouldRegenerateExplicitTailwindV4CssSource = sourceCss !== void 0 && (require_generator.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config")); const explicitTailwindV4SourceCandidates = shouldRegenerateExplicitTailwindV4CssSource && sourceCss && sourceFile && webpackSourceCandidates?.getSourceCandidatesForEntries ? await require_options.resolveTailwindV4EntriesFromCssCached(sourceCss, node_path.default.dirname(sourceFile)).then((resolved) => resolved?.entries ? webpackSourceCandidates.getSourceCandidatesForEntries(resolved.entries) : void 0) : void 0; if (loaderGeneratedCss && require_pipeline_helpers.shouldConsumeWebpackLoaderGeneratedCss({ allowMarkerlessRegistryMatch: configuredCssEntryFiles.length === 1, hasBundlerGeneratedCssMarker: require_v4_generation_core.hasBundlerGeneratedCssMarker(currentRawSource), loaderGeneratedClassSet: loaderGeneratedCss.classSet, sourceCandidates: explicitTailwindV4SourceCandidates, shouldRegenerateExplicitTailwindV4CssSource, watchMode })) { for (const className of loaderGeneratedCss.classSet) { generatorRuntimeSet.add(className); transformRuntimeSet.add(className); } for (const dependency of loaderGeneratedCss.dependencies) compilation.fileDependencies?.add?.(dependency); const currentRawSourceWithoutBundlerMarkers = require_v4_generation_core.stripBundlerGeneratedCssMarkers(currentRawSource); const currentAssetHasProcessedUrl = require_pipeline_helpers.hasProcessedCssAssetUrl(currentRawSourceWithoutBundlerMarkers) && currentRawSourceWithoutBundlerMarkers !== loaderGeneratedCss.css; const currentAssetUserCss = currentAssetHasProcessedUrl ? currentRawSourceWithoutBundlerMarkers : require_pipeline_helpers.shouldUseWebpackAssetAsGeneratorUserCss(currentRawSourceWithoutBundlerMarkers, loaderGeneratedCss.css, { processed: true }) ? require_v4_generation_core.removeGeneratedSelectorCompatCss(currentRawSourceWithoutBundlerMarkers, loaderGeneratedCss.css) : void 0; const loaderGeneratedCssWithoutMarkers = require_v4_generation_core.stripBundlerGeneratedCssMarkers(loaderGeneratedCss.css); const currentAssetUserCssWithoutMarkers = currentAssetUserCss === void 0 ? "" : require_v4_generation_core.stripBundlerGeneratedCssMarkers(currentAssetUserCss); const currentAssetMissingUserCss = !(currentAssetUserCssWithoutMarkers.trim().length > 0 && !require_generator.isCommentOnlyCss(currentAssetUserCssWithoutMarkers)) ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(currentAssetUserCssWithoutMarkers, loaderGeneratedCssWithoutMarkers); if (isConfiguredMainCssSource && !cssHandlerOptions.isMainChunk) { debug("css skip duplicate webpack loader main generation: %s <- %s", file, sourceFile); const userCss = currentAssetMissingUserCss.trim().length === 0 || require_generator.isCommentOnlyCss(currentAssetMissingUserCss) ? "" : finalizeCssAssetSource(currentAssetMissingUserCss, { cssPreflight: false, generatedCss: false }); return { result: new ConcatSource(finalizeTracedCss(userCss, cssHandlerOptions)) }; } const mergedLoaderCss = currentAssetUserCss === void 0 ? loaderGeneratedCss.css : require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend({ css: currentAssetUserCss === void 0 ? loaderGeneratedCss.css : currentAssetHasProcessedUrl ? require_v4_generation_core.removeGeneratedSelectorCompatCss(loaderGeneratedCss.css, currentAssetUserCss) : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(currentAssetUserCss, loaderGeneratedCss.css), processed: true }, currentAssetUserCss === void 0 ? void 0 : { css: currentAssetUserCss, processed: true }).css; const handledLoaderCss = isWebGeneratorTarget ? mergedLoaderCss : (await compilerOptions.styleHandler(mergedLoaderCss, cssHandlerOptions)).css; const finalizedLoaderCss = finalizeCssAssetSource(handledLoaderCss, { cssPreflight: cssHandlerOptions.isMainChunk, generatedCss: true, preserveExistingPreflight: shouldPreserveExistingPreflight }); const loaderSourceBareUserCss = isWebGeneratorTarget ? void 0 : require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend(...[currentAssetUserCss === void 0 ? void 0 : { css: currentAssetUserCss, processed: true }, sourceCss === void 0 ? void 0 : { css: sourceCss, processed: false }].map((source) => { if (source === void 0) return; return { css: require_pipeline_helpers.collectWebpackBareSelectorUserCss(source.css), processed: source.processed }; })); const handledLoaderSourceBareUserCss = loaderSourceBareUserCss === void 0 ? "" : loaderSourceBareUserCss.processed ? loaderSourceBareUserCss.css : (await compilerOptions.styleHandler(loaderSourceBareUserCss.css, cssHandlerOptions)).css; const finalizedLoaderSourceBareUserCss = handledLoaderSourceBareUserCss.trim().length === 0 ? "" : finalizeCssAssetSource(handledLoaderSourceBareUserCss, { cssPreflight: false, generatedCss: false }); const missingLoaderSourceBareUserCss = finalizedLoaderSourceBareUserCss.trim().length === 0 ? "" : (0, _weapp_tailwindcss_postcss.filterExistingCssRules)(finalizedLoaderCss, finalizedLoaderSourceBareUserCss); const css = finalizeTracedCss(missingLoaderSourceBareUserCss.trim().length === 0 ? finalizedLoaderCss : require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend({ css: finalizedLoaderCss, processed: true }, { css: missingLoaderSourceBareUserCss, processed: true }).css, cssHandlerOptions, { finalized: true }); debug("css consume webpack loader generation: %s <- %s", file, sourceFile); return { result: new ConcatSource(css) }; } const sourceCssProcessed = sourceFile ? cssSources.get(node_path.default.resolve(sourceFile))?.processed === true : false; const registeredUserRawSource = require_pipeline_helpers.createWebpackUserCssSourceAppend([...cssSources.entries()].map(([registeredSourceFile, source]) => ({ ...source, file: registeredSourceFile })), generatorRawSource, sourceFile, (registeredSourceFile) => isSameWebpackSourceScope(file, registeredSourceFile, sourceFile)); const currentAssetLooksGenerated = require_generator.hasTailwindGeneratedCss(currentRawSource) || require_generator.hasTailwindGeneratedCssMarkers(currentRawSource); const currentAssetHasBundlerGeneratedMarker = require_v4_generation_core.hasBundlerGeneratedCssMarker(currentRawSource); const currentAssetUserCssSource = currentAssetLooksGenerated ? require_pipeline_helpers.removeWebpackTailwindGeneratedAssetCss(currentRawSource) : currentRawSource; if (sourceFile === void 0 && currentAssetHasBundlerGeneratedMarker && (currentAssetUserCssSource.trim().length === 0 || require_generator.isCommentOnlyCss(currentAssetUserCssSource))) return { result: new ConcatSource(finalizeTracedCss("", cssHandlerOptions)) }; const currentAssetHasAdditionalUserCss = currentAssetLooksGenerated && (require_pipeline_helpers.hasAdditionalWebpackAssetUserCssMarkers(currentAssetUserCssSource, generatorRawSource) || currentAssetUserCssSource.trim().length > 0); const shouldPreserveGeneratedWebAssetUserCss = isWebGeneratorTarget && currentAssetLooksGenerated && !currentAssetHasBundlerGeneratedMarker && !currentAssetHasAdditionalUserCss; const hasExplicitSourceCssForCurrentAsset = sourceCss !== void 0 && (require_generator.hasTailwindRootDirectives(sourceCss, { importFallback: true }) || require_generator.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || require_generator.hasTailwindApplyDirective(sourceCss)); const currentAssetHasUserCss = (sourceCssProcessed || hasExplicitSourceCssForCurrentAsset) && currentAssetLooksGenerated && !shouldPreserveGeneratedWebAssetUserCss ? currentAssetHasAdditionalUserCss : require_pipeline_helpers.shouldUseWebpackAssetAsGeneratorUserCss(currentAssetUserCssSource, generatorRawSource, { processed: sourceCssProcessed || shouldPreserveGeneratedWebAssetUserCss }); const userRawSource = require_pipeline_helpers.createWebpackGeneratorUserCssSourceAppend(createWebpackCurrentAssetUserRawSource({ currentAssetHasUserCss, currentAssetLooksGenerated, currentAssetUserCssSource, shouldAppendCurrentAssetUserCss: shouldAppendCurrentWebpackAssetUserCss({ currentAssetHasBundlerGeneratedMarker, currentAssetHasUserCss, currentAssetLooksGenerated, registeredUserRawSource, shouldPreserveGeneratedWebAssetUserCss, sourceCssProcessed }), sourceCssProcessed }), registeredUserRawSource); if ((0, _weapp_tailwindcss_postcss.isPureLocalCssImportWrapper)(currentRawSource)) return { result: new ConcatSource(require_generator.removeTailwindSourceDirectives(require_v4_generation_core.stripBundlerGeneratedCssMarkers(currentRawSource), { importFallback: true })) }; const fallbackGeneratorRuntimeSet = getGeneratorRuntimeSet(); const hasExplicitTailwindV4SourceCss = sourceCss !== void 0 && (require_generator.hasTailwindSourceDirectives(sourceCss, { importFallback: true }) || sourceCss.includes("@config")); const currentAssetHasTailwindDirectives = require_generator.hasTailwindRootDirectives(generatorRawSource, { importFallback: true }) || require_generator.hasTailwindSourceDirectives(generatorRawSource, { importFallback: true }) || require_generator.hasTailwindApplyDirective(generatorRawSource); const shouldForceTailwindV4Generation = hasConfiguredTailwindV4SourceRoots() && (configuredMainCssEntryFiles.length > 0 && sourceFile !== void 0 || currentAssetHasTailwindDirectives || hasExplicitTailwindV4SourceCss); const shouldSkipUnmatchedMainCssGeneration = !isWebGeneratorTarget && cssHandlerOptions.isMainChunk && sourceFile === void 0 && configuredMainCssEntryFiles.length > 0 && !currentAssetHasTailwindDirectives; const shouldSkipPlainNonMainCssGeneration = !cssHandlerOptions.isMainChunk && sourceCss !== void 0 && !hasExplicitSourceCssForCurrentAsset && !hasExplicitTailwindV4SourceCss && !currentAssetHasTailwindDirectives; const shouldMergeFallbackGeneratorRuntime = cssHandlerOptions.isMainChunk || currentAssetHasTailwindDirectives || hasExplicitSourceCssForCurrentAsset; const scopedFallbackGeneratorRuntimeSet = hasExplicitTailwindV4SourceCss || !shouldMergeFallbackGeneratorRuntime ? /* @__PURE__ */ new Set() : fallbackGeneratorRuntimeSet; const resolvedScopedGeneratorRuntimeSet = await require_source_candidate_scan_signature.createScopedGeneratorRuntime({ cssHandlerOptions, fallbackRuntime: scopedFallbackGeneratorRuntimeSet, getSourceCandidatesForEntries: webpackSourceCandidates?.getSourceCandidatesForEntries, majorVersion: runtimeState.tailwindRuntime.majorVersion, outputFile: file, rawSource: sourceFile ? cssSources.get(node_path.default.resolve(sourceFile))?.css ?? generatorRawSource : generatorRawSource, shouldExcludeSubpackageSourceCandidates: () => false, sourceFile: sourceFile ?? file, scopedSourceCandidateGetter: webpackSourceCandidates?.getSourceCandidatesForEntries }); const scopedGeneratorRuntimeSet = !hasExplicitTailwindV4SourceCss && resolvedScopedGeneratorRuntimeSet !== scopedFallbackGeneratorRuntimeSet && shouldMergeFallbackGeneratorRuntime ? /* @__PURE__ */ new Set([...fallbackGeneratorRuntimeSet, ...resolvedScopedGeneratorRuntimeSet]) : resolvedScopedGeneratorRuntimeSet; const generatorCssSources = require_pipeline_helpers.normalizeWebpackGeneratorCssSources(cssHandlerOptions.sourceOptions?.cssSources); const scopedGeneratorCompilerOptions = require_pipeline_helpers.scopeWebpackGeneratorOptionsToCssSource(compilerOptions, sourceFile, { disableUnmatchedCssEntries: !isWebGeneratorTarget && cssHandlerOptions.isMainChunk }); const generatorCssHandlerOptions = generatorCssSources === void 0 ? cssHandlerOptions : { ...cssHandlerOptions, sourceOptions: { ...cssHandlerOptions.sourceOptions, cssSources: generatorCssSources } }; const generatorOptions = { opts: scopedGeneratorCompilerOptions, runtimeState, runtime: scopedGeneratorRuntimeSet, rawSource: generatorRawSource, forceGenerator: shouldForceTailwindV4Generation, ...require_pipeline_helpers.hasUsableWebpackGeneratorCssSources(generatorCssSources) ? { cssSources: generatorCssSources } : {}, ...userRawSource === void 0 ? {} : { userRawSource: userRawSource.css }, ...userRawSource?.processed === true ? { userRawSourceProcessed: true } : {}, file, cssHandlerOptions: generatorCssHandlerOptions, cssUserHandlerOptions: getCssUserHandlerOptions(file), compilationChanges: scopeCompilationChanges, frameworkPostcssOwner: compilerOptions, cssStage: "framework-processed", getSourceCandidatesForEntries: webpackSourceCandidates?.getSourceCandidatesForEntries, sourceCandidates: scopedGeneratorRuntimeSet, restoreLocalCssImports: false, scope: compilationScope, styleHandler: compilerOptions.styleHandler, debug }; let generated; if (!shouldSkipUnmatchedMainCssGeneration && !shouldSkipPlainNonMainCssGeneration) try { generated = await require_v4_generation_core.generateTailwindV4Css({ ...generatorOptions, outputFile: file }); } catch (error) { if (!require_pipeline_helpers.shouldFallbackToWebpackUserCssOnGeneratorError({ configuredMainCssEntryFilesLength: configuredMainCssEntryFiles.length, generatorRawSource, hasExplicitTailwindV4SourceCss })) throw error; debug("css generator skipped for plain webpack css asset: %s %O", file, error); generated = void 0; } else debug("css generator skipped for plain webpack css asset: %s", file); for (const dependency of generated?.dependencies ?? []) compilation.fileDependencies?.add?.(dependency); return finalizeWebpackGeneratedCssResult({ ConcatSource, compilerOptions, cssHandlerOptions, currentRawSource, debug, file, finalizeCssAssetSource, finalizeTracedCss, generated, generatorRawSource, generatorRuntimeSet, isWebGeneratorTarget, runtimeState, shouldPreserveExistingPreflight, sourceCss, sourceCssProcessed, userRawSource }); } }); }, cssTaskFactories, "tasks.css"); } //#endregion //#region src/bundlers/webpack/BaseUnifiedPlugin/v5-assets/asset-emission-plan.ts function applyWebpackAssetEmissionPlan(plan, options) { for (const operation of plan.operations()) { if (operation.kind === "delete") { options.compilation.deleteAsset?.(operation.assetId);