@weapp-tailwindcss/engine 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import { SourceEntry } from "@tailwindcss/oxide";
2
2
  import { Root } from "postcss";
3
+ import { expandSourceEntries as expandTailwindV4SourceEntries, expandSourceEntryBraces as expandTailwindV4SourceEntryBraces, groupSourceEntriesByBase as groupTailwindV4SourceEntriesByBase, isFileExcludedByTailwindSourceEntries as isFileExcludedByTailwindV4SourceEntries, mergeSourceEntries as mergeTailwindV4SourceEntries, normalizeGlobPattern, resolveSourceScanPath, toPosixPath } from "@weapp-tailwindcss/source-scan";
3
4
  //#region src/v4/bare-arbitrary-values/escape.d.ts
4
5
  declare function escapeCssClassName(value: string): string;
5
6
  //#endregion
@@ -76,6 +77,12 @@ interface SourceEntry$1 extends TailwindV4CandidateSource {
76
77
  id: string;
77
78
  }
78
79
  interface GenerationRequest {
80
+ /** 使用当前编译会话解析的来源扫描,避免调用方预编译入口。 */
81
+ scanSources?: boolean | TailwindV4SourcePattern[];
82
+ /** 构建输出等明确不能作为输入的文件。 */
83
+ excludeFiles?: string[];
84
+ /** 平台适配器在验证候选之前归一化候选;不负责生成新来源。 */
85
+ prepareCandidates?: (candidates: Set<string>) => Iterable<string>;
79
86
  candidates?: Iterable<string>;
80
87
  sourceEntries?: SourceEntry$1[];
81
88
  /**
@@ -119,6 +126,8 @@ interface TailwindGenerationSession {
119
126
  }
120
127
  interface TailwindV4StyleSource extends TailwindStyleSource {}
121
128
  interface TailwindV4GenerateOptions {
129
+ /** 从候选扫描中排除的输出文件。 */
130
+ excludeFiles?: string[];
122
131
  candidates?: Iterable<string>;
123
132
  sources?: TailwindV4CandidateSource[];
124
133
  /**
@@ -174,6 +183,8 @@ interface TailwindV4DesignSystem {
174
183
  candidatesToCss: (candidates: string[]) => Array<string | null | undefined>;
175
184
  }
176
185
  interface TailwindV4Engine {
186
+ /** 释放内部生成会话;可选以兼容自定义引擎实现。 */
187
+ dispose?: () => void;
177
188
  source: TailwindV4ResolvedSource;
178
189
  loadDesignSystem: () => Promise<TailwindV4DesignSystem>;
179
190
  validateCandidates: (candidates: Iterable<string>) => Promise<Set<string>>;
@@ -206,6 +217,9 @@ interface TailwindV4CompiledSource {
206
217
  build: (candidates: string[]) => string;
207
218
  }
208
219
  interface TailwindV4NodeModule {
220
+ loadModule?: (id: string, base: string, onDependency: (dependency: string) => void) => Promise<{
221
+ module: unknown;
222
+ }>;
209
223
  compile: (css: string, options: {
210
224
  base: string;
211
225
  onDependency: (dependency: string) => void;
@@ -226,34 +240,23 @@ declare function compileTailwindV4Source(source: TailwindV4ResolvedSource): Prom
226
240
  }>;
227
241
  //#endregion
228
242
  //#region src/v4/source-scan/matcher.d.ts
229
- declare function isFileExcludedByTailwindV4SourceEntries(file: string, entries: TailwindV4SourcePattern[] | undefined): boolean;
230
243
  declare function isFileMatchedByTailwindV4SourceEntries(file: string, entries: TailwindV4SourcePattern[] | undefined): boolean;
231
244
  declare function createTailwindV4SourceEntryMatcher(entries: TailwindV4SourcePattern[] | undefined): ((file: string) => boolean) | undefined;
232
245
  declare function createTailwindV4SourceExclusionMatcher(entries: TailwindV4SourcePattern[] | undefined): ((file: string) => boolean) | undefined;
233
- declare function groupTailwindV4SourceEntriesByBase(entries: TailwindV4SourcePattern[]): Map<string, TailwindV4SourcePattern[]>;
234
- declare function expandTailwindV4SourceEntries(entries: TailwindV4SourcePattern[], resolveFiles: (options: {
235
- cwd: string;
236
- sources: TailwindV4SourcePattern[];
237
- }) => Promise<string[]>): Promise<string[]>;
238
- declare function mergeTailwindV4SourceEntries(...entries: Array<TailwindV4SourcePattern[] | undefined>): TailwindV4SourcePattern[];
239
246
  //#endregion
240
247
  //#region src/v4/source-scan/sources.d.ts
241
248
  declare const TAILWIND_V4_IGNORED_CONTENT_DIRS: string[];
242
249
  declare const TAILWIND_V4_IGNORED_EXTENSIONS: string[];
243
250
  declare const TAILWIND_V4_IGNORED_FILES: string[];
244
251
  declare const TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN = "**/*";
245
- declare function toPosixPath(value: string): string;
246
- declare function resolveSourceScanPath(value: string): string;
247
- declare function normalizeGlobPattern(pattern: string): string;
248
252
  declare function createTailwindV4DefaultIgnoreSources(base: string): TailwindV4SourcePattern[];
249
253
  declare function createTailwindV4RootSources(root: TailwindV4CompiledSourceRoot, fallbackBase: string): TailwindV4SourcePattern[];
250
254
  declare function createTailwindV4CompiledSourceEntries(root: TailwindV4CompiledSourceRoot, sources: TailwindV4SourcePattern[], fallbackBase: string): TailwindV4SourcePattern[];
251
- declare function resolveTailwindV4SourceEntry(sourcePath: string, base: string, negated: boolean, defaultPattern?: string): Promise<TailwindV4SourcePattern>;
255
+ declare function resolveTailwindV4SourceEntry(sourcePath: string, base: string, negated: boolean, defaultPattern?: string): Promise<import("@weapp-tailwindcss/source-scan").TailwindSourceEntry>;
252
256
  declare function normalizeTailwindV4SourceEntries(sources: TailwindV4SourcePattern[], options?: {
253
257
  cwd?: string;
254
258
  defaultPattern?: string;
255
- }): Promise<TailwindV4SourcePattern[]>;
256
- declare function expandTailwindV4SourceEntryBraces(sources: TailwindV4SourcePattern[]): TailwindV4SourcePattern[];
259
+ }): Promise<import("@weapp-tailwindcss/source-scan").TailwindSourceEntry[]>;
257
260
  declare function normalizeTailwindV4ScannerSources(sources: TailwindV4SourcePattern[] | undefined, cwd: string, ignoredSources?: TailwindV4SourcePattern[]): SourceEntry[];
258
261
  declare function resolveTailwindV4SourceBaseCandidates(projectRoot: string, base: string, baseFallbacks: string[]): string[];
259
262
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { expandSourceEntries as expandTailwindV4SourceEntries, expandSourceEntryBraces as expandTailwindV4SourceEntryBraces, groupSourceEntriesByBase as groupTailwindV4SourceEntriesByBase, isFileExcludedByTailwindSourceEntries as isFileExcludedByTailwindV4SourceEntries, mergeSourceEntries as mergeTailwindV4SourceEntries, normalizeGlobPattern, resolveSourceScanPath as resolveSourceScanPath$1, toPosixPath } from "@weapp-tailwindcss/source-scan";
1
2
  import { Root } from "postcss";
2
3
  import { SourceEntry } from "@tailwindcss/oxide";
3
4
  //#region src/v4/bare-arbitrary-values/escape.d.ts
@@ -76,6 +77,12 @@ interface SourceEntry$1 extends TailwindV4CandidateSource {
76
77
  id: string;
77
78
  }
78
79
  interface GenerationRequest {
80
+ /** 使用当前编译会话解析的来源扫描,避免调用方预编译入口。 */
81
+ scanSources?: boolean | TailwindV4SourcePattern[];
82
+ /** 构建输出等明确不能作为输入的文件。 */
83
+ excludeFiles?: string[];
84
+ /** 平台适配器在验证候选之前归一化候选;不负责生成新来源。 */
85
+ prepareCandidates?: (candidates: Set<string>) => Iterable<string>;
79
86
  candidates?: Iterable<string>;
80
87
  sourceEntries?: SourceEntry$1[];
81
88
  /**
@@ -119,6 +126,8 @@ interface TailwindGenerationSession {
119
126
  }
120
127
  interface TailwindV4StyleSource extends TailwindStyleSource {}
121
128
  interface TailwindV4GenerateOptions {
129
+ /** 从候选扫描中排除的输出文件。 */
130
+ excludeFiles?: string[];
122
131
  candidates?: Iterable<string>;
123
132
  sources?: TailwindV4CandidateSource[];
124
133
  /**
@@ -174,6 +183,8 @@ interface TailwindV4DesignSystem {
174
183
  candidatesToCss: (candidates: string[]) => Array<string | null | undefined>;
175
184
  }
176
185
  interface TailwindV4Engine {
186
+ /** 释放内部生成会话;可选以兼容自定义引擎实现。 */
187
+ dispose?: () => void;
177
188
  source: TailwindV4ResolvedSource;
178
189
  loadDesignSystem: () => Promise<TailwindV4DesignSystem>;
179
190
  validateCandidates: (candidates: Iterable<string>) => Promise<Set<string>>;
@@ -206,6 +217,9 @@ interface TailwindV4CompiledSource {
206
217
  build: (candidates: string[]) => string;
207
218
  }
208
219
  interface TailwindV4NodeModule {
220
+ loadModule?: (id: string, base: string, onDependency: (dependency: string) => void) => Promise<{
221
+ module: unknown;
222
+ }>;
209
223
  compile: (css: string, options: {
210
224
  base: string;
211
225
  onDependency: (dependency: string) => void;
@@ -226,34 +240,23 @@ declare function compileTailwindV4Source(source: TailwindV4ResolvedSource): Prom
226
240
  }>;
227
241
  //#endregion
228
242
  //#region src/v4/source-scan/matcher.d.ts
229
- declare function isFileExcludedByTailwindV4SourceEntries(file: string, entries: TailwindV4SourcePattern[] | undefined): boolean;
230
243
  declare function isFileMatchedByTailwindV4SourceEntries(file: string, entries: TailwindV4SourcePattern[] | undefined): boolean;
231
244
  declare function createTailwindV4SourceEntryMatcher(entries: TailwindV4SourcePattern[] | undefined): ((file: string) => boolean) | undefined;
232
245
  declare function createTailwindV4SourceExclusionMatcher(entries: TailwindV4SourcePattern[] | undefined): ((file: string) => boolean) | undefined;
233
- declare function groupTailwindV4SourceEntriesByBase(entries: TailwindV4SourcePattern[]): Map<string, TailwindV4SourcePattern[]>;
234
- declare function expandTailwindV4SourceEntries(entries: TailwindV4SourcePattern[], resolveFiles: (options: {
235
- cwd: string;
236
- sources: TailwindV4SourcePattern[];
237
- }) => Promise<string[]>): Promise<string[]>;
238
- declare function mergeTailwindV4SourceEntries(...entries: Array<TailwindV4SourcePattern[] | undefined>): TailwindV4SourcePattern[];
239
246
  //#endregion
240
247
  //#region src/v4/source-scan/sources.d.ts
241
248
  declare const TAILWIND_V4_IGNORED_CONTENT_DIRS: string[];
242
249
  declare const TAILWIND_V4_IGNORED_EXTENSIONS: string[];
243
250
  declare const TAILWIND_V4_IGNORED_FILES: string[];
244
251
  declare const TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN = "**/*";
245
- declare function toPosixPath(value: string): string;
246
- declare function resolveSourceScanPath(value: string): string;
247
- declare function normalizeGlobPattern(pattern: string): string;
248
252
  declare function createTailwindV4DefaultIgnoreSources(base: string): TailwindV4SourcePattern[];
249
253
  declare function createTailwindV4RootSources(root: TailwindV4CompiledSourceRoot, fallbackBase: string): TailwindV4SourcePattern[];
250
254
  declare function createTailwindV4CompiledSourceEntries(root: TailwindV4CompiledSourceRoot, sources: TailwindV4SourcePattern[], fallbackBase: string): TailwindV4SourcePattern[];
251
- declare function resolveTailwindV4SourceEntry(sourcePath: string, base: string, negated: boolean, defaultPattern?: string): Promise<TailwindV4SourcePattern>;
255
+ declare function resolveTailwindV4SourceEntry(sourcePath: string, base: string, negated: boolean, defaultPattern?: string): Promise<import("@weapp-tailwindcss/source-scan").TailwindSourceEntry>;
252
256
  declare function normalizeTailwindV4SourceEntries(sources: TailwindV4SourcePattern[], options?: {
253
257
  cwd?: string;
254
258
  defaultPattern?: string;
255
- }): Promise<TailwindV4SourcePattern[]>;
256
- declare function expandTailwindV4SourceEntryBraces(sources: TailwindV4SourcePattern[]): TailwindV4SourcePattern[];
259
+ }): Promise<import("@weapp-tailwindcss/source-scan").TailwindSourceEntry[]>;
257
260
  declare function normalizeTailwindV4ScannerSources(sources: TailwindV4SourcePattern[] | undefined, cwd: string, ignoredSources?: TailwindV4SourcePattern[]): SourceEntry[];
258
261
  declare function resolveTailwindV4SourceBaseCandidates(projectRoot: string, base: string, baseFallbacks: string[]): string[];
259
262
  //#endregion
@@ -264,4 +267,4 @@ declare function resolveTailwindV4Source(options?: TailwindV4SourceOptions): Pro
264
267
  declare function collectTailwindV4StyleCandidates(options: Pick<TailwindV4StyleGenerateOptions, 'bareArbitraryValues' | 'candidates' | 'sources'>): Promise<Set<string>>;
265
268
  declare function generateTailwindV4Style(options?: TailwindV4StyleGenerateOptions): Promise<TailwindV4StyleGenerateResult>;
266
269
  //#endregion
267
- export { TailwindV4StyleGenerateOptions as $, createTailwindGenerationSession as A, SourceEntry$1 as B, isFileExcludedByTailwindV4SourceEntries as C, getTailwindV4DesignSystemCacheKey as D, compileTailwindV4Source as E, extractTailwindV4InlineSourceCandidates as F, TailwindV4CssSource as G, TailwindGenerationSession as H, CssFragment as I, TailwindV4GenerateOptions as J, TailwindV4DesignSystem as K, CssFragmentKind as L, canonicalizeBareArbitraryValueCandidates as M, replaceBareArbitraryValueSelectors as N, loadTailwindV4DesignSystem as O, resolveValidTailwindV4Candidates as P, TailwindV4SourcePattern as Q, GenerationChange as R, groupTailwindV4SourceEntriesByBase as S, mergeTailwindV4SourceEntries as T, TailwindV4CandidateSource as U, TailwindGenerationArtifact as V, TailwindV4CompiledSourceRoot as W, TailwindV4ResolvedSource as X, TailwindV4GenerateResult as Y, TailwindV4SourceOptions as Z, resolveTailwindV4SourceEntry as _, TAILWIND_V4_IGNORED_CONTENT_DIRS as a, isBareArbitraryValuesEnabled as at, createTailwindV4SourceExclusionMatcher as b, createTailwindV4CompiledSourceEntries as c, extractBareArbitraryValueSourceCandidatesWithPositions as ct, expandTailwindV4SourceEntryBraces as d, BareArbitraryValueSourceCandidate as dt, TailwindV4StyleGenerateResult as et, normalizeGlobPattern as f, escapeCssClassName as ft, resolveTailwindV4SourceBaseCandidates as g, resolveSourceScanPath as h, TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN as i, collectTailwindStyleCandidates as it, createTailwindV4Engine as j, loadTailwindV4NodeModule as k, createTailwindV4DefaultIgnoreSources as l, BareArbitraryValueOptions as lt, normalizeTailwindV4SourceEntries as m, generateTailwindV4Style as n, TailwindStyleCandidateOptions as nt, TAILWIND_V4_IGNORED_EXTENSIONS as o, resolveBareArbitraryValueCandidate as ot, normalizeTailwindV4ScannerSources as p, TailwindV4Engine as q, resolveTailwindV4Source as r, TailwindStyleSource as rt, TAILWIND_V4_IGNORED_FILES as s, extractBareArbitraryValueSourceCandidates as st, collectTailwindV4StyleCandidates as t, TailwindV4StyleSource as tt, createTailwindV4RootSources as u, BareArbitraryValueResolveResult as ut, toPosixPath as v, isFileMatchedByTailwindV4SourceEntries as w, expandTailwindV4SourceEntries as x, createTailwindV4SourceEntryMatcher as y, GenerationRequest as z };
270
+ export { TailwindV4StyleGenerateOptions as $, createTailwindGenerationSession as A, SourceEntry$1 as B, isFileExcludedByTailwindV4SourceEntries as C, getTailwindV4DesignSystemCacheKey as D, compileTailwindV4Source as E, extractTailwindV4InlineSourceCandidates as F, TailwindV4CssSource as G, TailwindGenerationSession as H, CssFragment as I, TailwindV4GenerateOptions as J, TailwindV4DesignSystem as K, CssFragmentKind as L, canonicalizeBareArbitraryValueCandidates as M, replaceBareArbitraryValueSelectors as N, loadTailwindV4DesignSystem as O, resolveValidTailwindV4Candidates as P, TailwindV4SourcePattern as Q, GenerationChange as R, groupTailwindV4SourceEntriesByBase as S, mergeTailwindV4SourceEntries as T, TailwindV4CandidateSource as U, TailwindGenerationArtifact as V, TailwindV4CompiledSourceRoot as W, TailwindV4ResolvedSource as X, TailwindV4GenerateResult as Y, TailwindV4SourceOptions as Z, resolveTailwindV4SourceEntry as _, TAILWIND_V4_IGNORED_CONTENT_DIRS as a, isBareArbitraryValuesEnabled as at, createTailwindV4SourceExclusionMatcher as b, createTailwindV4CompiledSourceEntries as c, extractBareArbitraryValueSourceCandidatesWithPositions as ct, expandTailwindV4SourceEntryBraces as d, BareArbitraryValueSourceCandidate as dt, TailwindV4StyleGenerateResult as et, normalizeGlobPattern as f, escapeCssClassName as ft, resolveTailwindV4SourceBaseCandidates as g, resolveSourceScanPath$1 as h, TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN as i, collectTailwindStyleCandidates as it, createTailwindV4Engine as j, loadTailwindV4NodeModule as k, createTailwindV4DefaultIgnoreSources as l, BareArbitraryValueOptions as lt, normalizeTailwindV4SourceEntries as m, generateTailwindV4Style as n, TailwindStyleCandidateOptions as nt, TAILWIND_V4_IGNORED_EXTENSIONS as o, resolveBareArbitraryValueCandidate as ot, normalizeTailwindV4ScannerSources as p, TailwindV4Engine as q, resolveTailwindV4Source as r, TailwindStyleSource as rt, TAILWIND_V4_IGNORED_FILES as s, extractBareArbitraryValueSourceCandidates as st, collectTailwindV4StyleCandidates as t, TailwindV4StyleSource as tt, createTailwindV4RootSources as u, BareArbitraryValueResolveResult as ut, toPosixPath as v, isFileMatchedByTailwindV4SourceEntries as w, expandTailwindV4SourceEntries as x, createTailwindV4SourceEntryMatcher as y, GenerationRequest as z };
package/dist/index.cjs CHANGED
@@ -1,99 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_v4 = require("./v4-CUw9Iuc5.cjs");
3
- let node_fs = require("node:fs");
4
- let node_path = require("node:path");
5
- node_path = require_v4.__toESM(node_path, 1);
2
+ const require_v4 = require("./v4-_oyKsjgy.cjs");
6
3
  let node_process = require("node:process");
7
4
  node_process = require_v4.__toESM(node_process, 1);
8
- //#region src/extraction/candidate-extractor/project.ts
9
- async function resolveScannerSources(options) {
10
- const cwd = options?.cwd ? node_path.default.resolve(options.cwd) : node_process.default.cwd();
11
- if (options?.sources?.length || options?.css === void 0) return {
12
- cwd,
13
- sources: require_v4.normalizeTailwindV4ScannerSources(options?.sources, cwd, options?.ignoredSources)
14
- };
15
- const base = options.base ? node_path.default.resolve(options.base) : cwd;
16
- const { compiled } = await require_v4.compileTailwindV4Source({
17
- projectRoot: cwd,
18
- base,
19
- baseFallbacks: options.baseFallbacks?.map((baseFallback) => node_path.default.resolve(baseFallback)) ?? [],
20
- css: options.css,
21
- dependencies: []
22
- });
23
- return {
24
- cwd,
25
- sources: require_v4.normalizeTailwindV4ScannerSources(require_v4.createTailwindV4CompiledSourceEntries(compiled.root, compiled.sources, base), cwd, options.ignoredSources)
26
- };
27
- }
28
- async function resolveProjectSourceFiles(options) {
29
- const { sources } = await resolveScannerSources(options);
30
- const { Scanner } = await require_v4.getOxideModule();
31
- const files = new Scanner({ sources }).files ?? [];
32
- return options?.filter ? files.filter(options.filter) : files;
33
- }
34
- async function extractProjectCandidatesWithPositions(options) {
35
- const { cwd, sources } = await resolveScannerSources(options);
36
- const { Scanner } = await require_v4.getOxideModule();
37
- const scanner = new Scanner({ sources });
38
- const files = scanner.files ?? [];
39
- const entries = [];
40
- const skipped = [];
41
- for (const file of files) {
42
- let content;
43
- try {
44
- content = await node_fs.promises.readFile(file, "utf8");
45
- } catch (error) {
46
- skipped.push({
47
- file,
48
- reason: error instanceof Error ? error.message : "Unknown error"
49
- });
50
- continue;
51
- }
52
- const extension = require_v4.toExtension(file);
53
- const matches = scanner.getCandidatesWithPositions({
54
- file,
55
- content,
56
- extension
57
- });
58
- if (!matches.length) continue;
59
- const offsets = require_v4.buildLineOffsets(content);
60
- for (const match of matches) entries.push(require_v4.createTokenLocation({
61
- cwd,
62
- file,
63
- content,
64
- extension,
65
- candidate: match.candidate,
66
- position: match.position,
67
- offsets
68
- }));
69
- }
70
- return {
71
- entries,
72
- filesScanned: files.length,
73
- skippedFiles: skipped,
74
- sources
75
- };
76
- }
77
- function groupTokensByFile(report, options) {
78
- const key = options?.key ?? "relative";
79
- const stripAbsolute = options?.stripAbsolutePaths ?? key !== "absolute";
80
- return report.entries.reduce((acc, entry) => {
81
- const bucketKey = key === "absolute" ? entry.file : entry.relativeFile;
82
- const bucket = acc[bucketKey] ?? (acc[bucketKey] = []);
83
- const value = stripAbsolute ? {
84
- ...entry,
85
- file: entry.relativeFile
86
- } : entry;
87
- bucket.push(value);
88
- return acc;
89
- }, {});
90
- }
91
- //#endregion
5
+ let _weapp_tailwindcss_source_scan = require("@weapp-tailwindcss/source-scan");
92
6
  //#region src/extraction/candidate-extractor/valid.ts
93
- const designSystemCandidateCache = /* @__PURE__ */ new Map();
94
- function createCandidateCacheKey(designSystemKey, options) {
95
- if (options.bareArbitraryValues == null || options.bareArbitraryValues === false) return designSystemKey;
96
- return `${designSystemKey}:bare-arbitrary:${JSON.stringify(options.bareArbitraryValues)}`;
7
+ const designSystemCandidateCache = /* @__PURE__ */ new WeakMap();
8
+ function createCandidateCacheKey(options) {
9
+ if (options.bareArbitraryValues == null || options.bareArbitraryValues === false) return "default";
10
+ return `bare-arbitrary:${JSON.stringify(options.bareArbitraryValues)}`;
97
11
  }
98
12
  async function extractValidCandidates(options) {
99
13
  const providedOptions = options ?? {};
@@ -110,18 +24,18 @@ async function extractValidCandidates(options) {
110
24
  pattern: source.pattern,
111
25
  negated: source.negated
112
26
  }));
113
- const source = {
27
+ const designSystem = await require_v4.loadTailwindV4DesignSystem({
114
28
  projectRoot: defaultCwd,
115
29
  base,
116
30
  baseFallbacks,
117
31
  css,
118
32
  dependencies: []
119
- };
120
- const designSystemKey = require_v4.getTailwindV4DesignSystemCacheKey(source);
121
- const designSystem = await require_v4.loadTailwindV4DesignSystem(source);
122
- const candidateCacheKey = createCandidateCacheKey(designSystemKey, providedOptions);
123
- const candidateCache = designSystemCandidateCache.get(candidateCacheKey) ?? /* @__PURE__ */ new Map();
124
- designSystemCandidateCache.set(candidateCacheKey, candidateCache);
33
+ });
34
+ const candidateCacheKey = createCandidateCacheKey(providedOptions);
35
+ const caches = designSystemCandidateCache.get(designSystem) ?? /* @__PURE__ */ new Map();
36
+ designSystemCandidateCache.set(designSystem, caches);
37
+ const candidateCache = caches.get(candidateCacheKey) ?? /* @__PURE__ */ new Map();
38
+ caches.set(candidateCacheKey, candidateCache);
125
39
  const candidates = await require_v4.extractRawCandidates(sources, providedOptions.bareArbitraryValues === void 0 ? void 0 : { bareArbitraryValues: providedOptions.bareArbitraryValues });
126
40
  const inlineSources = require_v4.extractTailwindV4InlineSourceCandidates(css);
127
41
  for (const candidate of inlineSources.included) candidates.push(candidate);
@@ -234,11 +148,21 @@ exports.createTailwindV4RootSources = require_v4.createTailwindV4RootSources;
234
148
  exports.createTailwindV4SourceEntryMatcher = require_v4.createTailwindV4SourceEntryMatcher;
235
149
  exports.createTailwindV4SourceExclusionMatcher = require_v4.createTailwindV4SourceExclusionMatcher;
236
150
  exports.escapeCssClassName = require_v4.escapeCssClassName;
237
- exports.expandTailwindV4SourceEntries = require_v4.expandTailwindV4SourceEntries;
238
- exports.expandTailwindV4SourceEntryBraces = require_v4.expandTailwindV4SourceEntryBraces;
151
+ Object.defineProperty(exports, "expandTailwindV4SourceEntries", {
152
+ enumerable: true,
153
+ get: function() {
154
+ return _weapp_tailwindcss_source_scan.expandSourceEntries;
155
+ }
156
+ });
157
+ Object.defineProperty(exports, "expandTailwindV4SourceEntryBraces", {
158
+ enumerable: true,
159
+ get: function() {
160
+ return _weapp_tailwindcss_source_scan.expandSourceEntryBraces;
161
+ }
162
+ });
239
163
  exports.extractBareArbitraryValueSourceCandidates = require_v4.extractBareArbitraryValueSourceCandidates;
240
164
  exports.extractBareArbitraryValueSourceCandidatesWithPositions = require_v4.extractBareArbitraryValueSourceCandidatesWithPositions;
241
- exports.extractProjectCandidatesWithPositions = extractProjectCandidatesWithPositions;
165
+ exports.extractProjectCandidatesWithPositions = require_v4.extractProjectCandidatesWithPositions;
242
166
  exports.extractRawCandidates = require_v4.extractRawCandidates;
243
167
  exports.extractRawCandidatesWithPositions = require_v4.extractRawCandidatesWithPositions;
244
168
  exports.extractSourceCandidates = require_v4.extractSourceCandidates;
@@ -247,26 +171,56 @@ exports.extractTailwindV4InlineSourceCandidates = require_v4.extractTailwindV4In
247
171
  exports.extractValidCandidates = extractValidCandidates;
248
172
  exports.generateTailwindV4Style = require_v4.generateTailwindV4Style;
249
173
  exports.getTailwindV4DesignSystemCacheKey = require_v4.getTailwindV4DesignSystemCacheKey;
250
- exports.groupTailwindV4SourceEntriesByBase = require_v4.groupTailwindV4SourceEntriesByBase;
251
- exports.groupTokensByFile = groupTokensByFile;
174
+ Object.defineProperty(exports, "groupTailwindV4SourceEntriesByBase", {
175
+ enumerable: true,
176
+ get: function() {
177
+ return _weapp_tailwindcss_source_scan.groupSourceEntriesByBase;
178
+ }
179
+ });
180
+ exports.groupTokensByFile = require_v4.groupTokensByFile;
252
181
  exports.isBareArbitraryValuesEnabled = require_v4.isBareArbitraryValuesEnabled;
253
- exports.isFileExcludedByTailwindV4SourceEntries = require_v4.isFileExcludedByTailwindV4SourceEntries;
182
+ Object.defineProperty(exports, "isFileExcludedByTailwindV4SourceEntries", {
183
+ enumerable: true,
184
+ get: function() {
185
+ return _weapp_tailwindcss_source_scan.isFileExcludedByTailwindSourceEntries;
186
+ }
187
+ });
254
188
  exports.isFileMatchedByTailwindV4SourceEntries = require_v4.isFileMatchedByTailwindV4SourceEntries;
255
189
  exports.isValidCandidateToken = isValidCandidateToken;
256
190
  exports.loadTailwindV4DesignSystem = require_v4.loadTailwindV4DesignSystem;
257
191
  exports.loadTailwindV4NodeModule = require_v4.loadTailwindV4NodeModule;
258
- exports.mergeTailwindV4SourceEntries = require_v4.mergeTailwindV4SourceEntries;
259
- exports.normalizeGlobPattern = require_v4.normalizeGlobPattern;
192
+ Object.defineProperty(exports, "mergeTailwindV4SourceEntries", {
193
+ enumerable: true,
194
+ get: function() {
195
+ return _weapp_tailwindcss_source_scan.mergeSourceEntries;
196
+ }
197
+ });
198
+ Object.defineProperty(exports, "normalizeGlobPattern", {
199
+ enumerable: true,
200
+ get: function() {
201
+ return _weapp_tailwindcss_source_scan.normalizeGlobPattern;
202
+ }
203
+ });
260
204
  exports.normalizeTailwindV4ScannerSources = require_v4.normalizeTailwindV4ScannerSources;
261
205
  exports.normalizeTailwindV4SourceEntries = require_v4.normalizeTailwindV4SourceEntries;
262
206
  exports.replaceBareArbitraryValueSelectors = require_v4.replaceBareArbitraryValueSelectors;
263
207
  exports.resolveBareArbitraryValueCandidate = require_v4.resolveBareArbitraryValueCandidate;
264
- exports.resolveProjectSourceFiles = resolveProjectSourceFiles;
265
- exports.resolveSourceScanPath = require_v4.resolveSourceScanPath;
208
+ exports.resolveProjectSourceFiles = require_v4.resolveProjectSourceFiles;
209
+ Object.defineProperty(exports, "resolveSourceScanPath", {
210
+ enumerable: true,
211
+ get: function() {
212
+ return _weapp_tailwindcss_source_scan.resolveSourceScanPath;
213
+ }
214
+ });
266
215
  exports.resolveTailwindV4Source = require_v4.resolveTailwindV4Source;
267
216
  exports.resolveTailwindV4SourceBaseCandidates = require_v4.resolveTailwindV4SourceBaseCandidates;
268
217
  exports.resolveTailwindV4SourceEntry = require_v4.resolveTailwindV4SourceEntry;
269
218
  exports.resolveValidTailwindV4Candidates = require_v4.resolveValidTailwindV4Candidates;
270
219
  exports.splitCandidateTokens = splitCandidateTokens;
271
- exports.toPosixPath = require_v4.toPosixPath;
220
+ Object.defineProperty(exports, "toPosixPath", {
221
+ enumerable: true,
222
+ get: function() {
223
+ return _weapp_tailwindcss_source_scan.toPosixPath;
224
+ }
225
+ });
272
226
  exports.validateCandidateTokenRE = validateCandidateTokenRE;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as TailwindV4StyleGenerateOptions, A as createTailwindGenerationSession, B as SourceEntry, C as isFileExcludedByTailwindV4SourceEntries, D as getTailwindV4DesignSystemCacheKey, E as compileTailwindV4Source, F as extractTailwindV4InlineSourceCandidates, G as TailwindV4CssSource, H as TailwindGenerationSession, I as CssFragment, J as TailwindV4GenerateOptions, K as TailwindV4DesignSystem, L as CssFragmentKind, M as canonicalizeBareArbitraryValueCandidates, N as replaceBareArbitraryValueSelectors, O as loadTailwindV4DesignSystem, P as resolveValidTailwindV4Candidates, Q as TailwindV4SourcePattern, R as GenerationChange, S as groupTailwindV4SourceEntriesByBase, T as mergeTailwindV4SourceEntries, U as TailwindV4CandidateSource, V as TailwindGenerationArtifact, W as TailwindV4CompiledSourceRoot, X as TailwindV4ResolvedSource, Y as TailwindV4GenerateResult, Z as TailwindV4SourceOptions, _ as resolveTailwindV4SourceEntry, a as TAILWIND_V4_IGNORED_CONTENT_DIRS, at as isBareArbitraryValuesEnabled, b as createTailwindV4SourceExclusionMatcher, c as createTailwindV4CompiledSourceEntries, ct as extractBareArbitraryValueSourceCandidatesWithPositions, d as expandTailwindV4SourceEntryBraces, dt as BareArbitraryValueSourceCandidate, et as TailwindV4StyleGenerateResult, f as normalizeGlobPattern, ft as escapeCssClassName, g as resolveTailwindV4SourceBaseCandidates, h as resolveSourceScanPath, i as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, it as collectTailwindStyleCandidates, j as createTailwindV4Engine, k as loadTailwindV4NodeModule, l as createTailwindV4DefaultIgnoreSources, lt as BareArbitraryValueOptions, m as normalizeTailwindV4SourceEntries, n as generateTailwindV4Style, nt as TailwindStyleCandidateOptions, o as TAILWIND_V4_IGNORED_EXTENSIONS, ot as resolveBareArbitraryValueCandidate, p as normalizeTailwindV4ScannerSources, q as TailwindV4Engine, r as resolveTailwindV4Source, rt as TailwindStyleSource, s as TAILWIND_V4_IGNORED_FILES, st as extractBareArbitraryValueSourceCandidates, t as collectTailwindV4StyleCandidates, tt as TailwindV4StyleSource, u as createTailwindV4RootSources, ut as BareArbitraryValueResolveResult, v as toPosixPath, w as isFileMatchedByTailwindV4SourceEntries, x as expandTailwindV4SourceEntries, y as createTailwindV4SourceEntryMatcher, z as GenerationRequest } from "./index-BKLDGE3a.cjs";
1
+ import { $ as TailwindV4StyleGenerateOptions, A as createTailwindGenerationSession, B as SourceEntry, C as isFileExcludedByTailwindV4SourceEntries, D as getTailwindV4DesignSystemCacheKey, E as compileTailwindV4Source, F as extractTailwindV4InlineSourceCandidates, G as TailwindV4CssSource, H as TailwindGenerationSession, I as CssFragment, J as TailwindV4GenerateOptions, K as TailwindV4DesignSystem, L as CssFragmentKind, M as canonicalizeBareArbitraryValueCandidates, N as replaceBareArbitraryValueSelectors, O as loadTailwindV4DesignSystem, P as resolveValidTailwindV4Candidates, Q as TailwindV4SourcePattern, R as GenerationChange, S as groupTailwindV4SourceEntriesByBase, T as mergeTailwindV4SourceEntries, U as TailwindV4CandidateSource, V as TailwindGenerationArtifact, W as TailwindV4CompiledSourceRoot, X as TailwindV4ResolvedSource, Y as TailwindV4GenerateResult, Z as TailwindV4SourceOptions, _ as resolveTailwindV4SourceEntry, a as TAILWIND_V4_IGNORED_CONTENT_DIRS, at as isBareArbitraryValuesEnabled, b as createTailwindV4SourceExclusionMatcher, c as createTailwindV4CompiledSourceEntries, ct as extractBareArbitraryValueSourceCandidatesWithPositions, d as expandTailwindV4SourceEntryBraces, dt as BareArbitraryValueSourceCandidate, et as TailwindV4StyleGenerateResult, f as normalizeGlobPattern, ft as escapeCssClassName, g as resolveTailwindV4SourceBaseCandidates, h as resolveSourceScanPath, i as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, it as collectTailwindStyleCandidates, j as createTailwindV4Engine, k as loadTailwindV4NodeModule, l as createTailwindV4DefaultIgnoreSources, lt as BareArbitraryValueOptions, m as normalizeTailwindV4SourceEntries, n as generateTailwindV4Style, nt as TailwindStyleCandidateOptions, o as TAILWIND_V4_IGNORED_EXTENSIONS, ot as resolveBareArbitraryValueCandidate, p as normalizeTailwindV4ScannerSources, q as TailwindV4Engine, r as resolveTailwindV4Source, rt as TailwindStyleSource, s as TAILWIND_V4_IGNORED_FILES, st as extractBareArbitraryValueSourceCandidates, t as collectTailwindV4StyleCandidates, tt as TailwindV4StyleSource, u as createTailwindV4RootSources, ut as BareArbitraryValueResolveResult, v as toPosixPath, w as isFileMatchedByTailwindV4SourceEntries, x as expandTailwindV4SourceEntries, y as createTailwindV4SourceEntryMatcher, z as GenerationRequest } from "./index-BnvpPg0y.cjs";
2
2
  import { SourceEntry as SourceEntry$1 } from "@tailwindcss/oxide";
3
3
  //#region src/types.d.ts
4
4
  export interface TailwindTokenLocation {
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as TailwindV4StyleGenerateOptions, A as createTailwindGenerationSession, B as SourceEntry, C as isFileExcludedByTailwindV4SourceEntries, D as getTailwindV4DesignSystemCacheKey, E as compileTailwindV4Source, F as extractTailwindV4InlineSourceCandidates, G as TailwindV4CssSource, H as TailwindGenerationSession, I as CssFragment, J as TailwindV4GenerateOptions, K as TailwindV4DesignSystem, L as CssFragmentKind, M as canonicalizeBareArbitraryValueCandidates, N as replaceBareArbitraryValueSelectors, O as loadTailwindV4DesignSystem, P as resolveValidTailwindV4Candidates, Q as TailwindV4SourcePattern, R as GenerationChange, S as groupTailwindV4SourceEntriesByBase, T as mergeTailwindV4SourceEntries, U as TailwindV4CandidateSource, V as TailwindGenerationArtifact, W as TailwindV4CompiledSourceRoot, X as TailwindV4ResolvedSource, Y as TailwindV4GenerateResult, Z as TailwindV4SourceOptions, _ as resolveTailwindV4SourceEntry, a as TAILWIND_V4_IGNORED_CONTENT_DIRS, at as isBareArbitraryValuesEnabled, b as createTailwindV4SourceExclusionMatcher, c as createTailwindV4CompiledSourceEntries, ct as extractBareArbitraryValueSourceCandidatesWithPositions, d as expandTailwindV4SourceEntryBraces, dt as BareArbitraryValueSourceCandidate, et as TailwindV4StyleGenerateResult, f as normalizeGlobPattern, ft as escapeCssClassName, g as resolveTailwindV4SourceBaseCandidates, h as resolveSourceScanPath, i as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, it as collectTailwindStyleCandidates, j as createTailwindV4Engine, k as loadTailwindV4NodeModule, l as createTailwindV4DefaultIgnoreSources, lt as BareArbitraryValueOptions, m as normalizeTailwindV4SourceEntries, n as generateTailwindV4Style, nt as TailwindStyleCandidateOptions, o as TAILWIND_V4_IGNORED_EXTENSIONS, ot as resolveBareArbitraryValueCandidate, p as normalizeTailwindV4ScannerSources, q as TailwindV4Engine, r as resolveTailwindV4Source, rt as TailwindStyleSource, s as TAILWIND_V4_IGNORED_FILES, st as extractBareArbitraryValueSourceCandidates, t as collectTailwindV4StyleCandidates, tt as TailwindV4StyleSource, u as createTailwindV4RootSources, ut as BareArbitraryValueResolveResult, v as toPosixPath, w as isFileMatchedByTailwindV4SourceEntries, x as expandTailwindV4SourceEntries, y as createTailwindV4SourceEntryMatcher, z as GenerationRequest } from "./index-CJQBHKch.js";
1
+ import { $ as TailwindV4StyleGenerateOptions, A as createTailwindGenerationSession, B as SourceEntry, C as isFileExcludedByTailwindV4SourceEntries, D as getTailwindV4DesignSystemCacheKey, E as compileTailwindV4Source, F as extractTailwindV4InlineSourceCandidates, G as TailwindV4CssSource, H as TailwindGenerationSession, I as CssFragment, J as TailwindV4GenerateOptions, K as TailwindV4DesignSystem, L as CssFragmentKind, M as canonicalizeBareArbitraryValueCandidates, N as replaceBareArbitraryValueSelectors, O as loadTailwindV4DesignSystem, P as resolveValidTailwindV4Candidates, Q as TailwindV4SourcePattern, R as GenerationChange, S as groupTailwindV4SourceEntriesByBase, T as mergeTailwindV4SourceEntries, U as TailwindV4CandidateSource, V as TailwindGenerationArtifact, W as TailwindV4CompiledSourceRoot, X as TailwindV4ResolvedSource, Y as TailwindV4GenerateResult, Z as TailwindV4SourceOptions, _ as resolveTailwindV4SourceEntry, a as TAILWIND_V4_IGNORED_CONTENT_DIRS, at as isBareArbitraryValuesEnabled, b as createTailwindV4SourceExclusionMatcher, c as createTailwindV4CompiledSourceEntries, ct as extractBareArbitraryValueSourceCandidatesWithPositions, d as expandTailwindV4SourceEntryBraces, dt as BareArbitraryValueSourceCandidate, et as TailwindV4StyleGenerateResult, f as normalizeGlobPattern, ft as escapeCssClassName, g as resolveTailwindV4SourceBaseCandidates, h as resolveSourceScanPath, i as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, it as collectTailwindStyleCandidates, j as createTailwindV4Engine, k as loadTailwindV4NodeModule, l as createTailwindV4DefaultIgnoreSources, lt as BareArbitraryValueOptions, m as normalizeTailwindV4SourceEntries, n as generateTailwindV4Style, nt as TailwindStyleCandidateOptions, o as TAILWIND_V4_IGNORED_EXTENSIONS, ot as resolveBareArbitraryValueCandidate, p as normalizeTailwindV4ScannerSources, q as TailwindV4Engine, r as resolveTailwindV4Source, rt as TailwindStyleSource, s as TAILWIND_V4_IGNORED_FILES, st as extractBareArbitraryValueSourceCandidates, t as collectTailwindV4StyleCandidates, tt as TailwindV4StyleSource, u as createTailwindV4RootSources, ut as BareArbitraryValueResolveResult, v as toPosixPath, w as isFileMatchedByTailwindV4SourceEntries, x as expandTailwindV4SourceEntries, y as createTailwindV4SourceEntryMatcher, z as GenerationRequest } from "./index-CHGSHPWB.js";
2
2
  import { SourceEntry as SourceEntry$1 } from "@tailwindcss/oxide";
3
3
  //#region src/types.d.ts
4
4
  export interface TailwindTokenLocation {
package/dist/index.js CHANGED
@@ -1,96 +1,10 @@
1
- import { A as mergeTailwindV4SourceEntries, B as normalizeTailwindV4ScannerSources, C as getOxideModule, D as groupTailwindV4SourceEntriesByBase, E as expandTailwindV4SourceEntries, F as createTailwindV4CompiledSourceEntries, G as toPosixPath, H as resolveSourceScanPath, I as createTailwindV4DefaultIgnoreSources, J as loadTailwindV4DesignSystem, K as compileTailwindV4Source, L as createTailwindV4RootSources, M as TAILWIND_V4_IGNORED_CONTENT_DIRS, N as TAILWIND_V4_IGNORED_EXTENSIONS, O as isFileExcludedByTailwindV4SourceEntries, P as TAILWIND_V4_IGNORED_FILES, R as expandTailwindV4SourceEntryBraces, S as toExtension, T as createTailwindV4SourceExclusionMatcher, U as resolveTailwindV4SourceBaseCandidates, V as normalizeTailwindV4SourceEntries, W as resolveTailwindV4SourceEntry, Y as loadTailwindV4NodeModule, _ as isBareArbitraryValuesEnabled, a as createTailwindGenerationSession, b as buildLineOffsets, c as replaceBareArbitraryValueSelectors, d as extractRawCandidates, f as extractRawCandidatesWithPositions, g as extractBareArbitraryValueSourceCandidatesWithPositions, h as extractBareArbitraryValueSourceCandidates, i as createTailwindV4Engine, j as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, k as isFileMatchedByTailwindV4SourceEntries, l as resolveValidTailwindV4Candidates, m as extractSourceCandidatesWithPositions, n as generateTailwindV4Style, o as collectTailwindStyleCandidates, p as extractSourceCandidates, q as getTailwindV4DesignSystemCacheKey, r as resolveTailwindV4Source, s as canonicalizeBareArbitraryValueCandidates, t as collectTailwindV4StyleCandidates, u as extractTailwindV4InlineSourceCandidates, v as resolveBareArbitraryValueCandidate, w as createTailwindV4SourceEntryMatcher, x as createTokenLocation, y as escapeCssClassName, z as normalizeGlobPattern } from "./v4-BdeIFyye.js";
2
- import { promises } from "node:fs";
3
- import path from "node:path";
1
+ import { A as expandTailwindV4SourceEntryBraces, B as expandTailwindV4SourceEntries, C as TAILWIND_V4_AUTO_SOURCE_SCAN_PATTERN, D as createTailwindV4CompiledSourceEntries, E as TAILWIND_V4_IGNORED_FILES, F as resolveTailwindV4SourceBaseCandidates, G as compileTailwindV4Source, H as isFileExcludedByTailwindV4SourceEntries, I as resolveTailwindV4SourceEntry, J as loadTailwindV4NodeModule, K as getTailwindV4DesignSystemCacheKey, L as toPosixPath, M as normalizeTailwindV4ScannerSources, N as normalizeTailwindV4SourceEntries, O as createTailwindV4DefaultIgnoreSources, P as resolveSourceScanPath, R as createTailwindV4SourceEntryMatcher, S as resolveProjectSourceFiles, T as TAILWIND_V4_IGNORED_EXTENSIONS, U as isFileMatchedByTailwindV4SourceEntries, V as groupTailwindV4SourceEntriesByBase, W as mergeTailwindV4SourceEntries, _ as isBareArbitraryValuesEnabled, a as createTailwindGenerationSession, b as extractProjectCandidatesWithPositions, c as replaceBareArbitraryValueSelectors, d as extractRawCandidates, f as extractRawCandidatesWithPositions, g as extractBareArbitraryValueSourceCandidatesWithPositions, h as extractBareArbitraryValueSourceCandidates, i as createTailwindV4Engine, j as normalizeGlobPattern, k as createTailwindV4RootSources, l as resolveValidTailwindV4Candidates, m as extractSourceCandidatesWithPositions, n as generateTailwindV4Style, o as collectTailwindStyleCandidates, p as extractSourceCandidates, q as loadTailwindV4DesignSystem, r as resolveTailwindV4Source, s as canonicalizeBareArbitraryValueCandidates, t as collectTailwindV4StyleCandidates, u as extractTailwindV4InlineSourceCandidates, v as resolveBareArbitraryValueCandidate, w as TAILWIND_V4_IGNORED_CONTENT_DIRS, x as groupTokensByFile, y as escapeCssClassName, z as createTailwindV4SourceExclusionMatcher } from "./v4-Ct27rkAi.js";
4
2
  import process from "node:process";
5
- //#region src/extraction/candidate-extractor/project.ts
6
- async function resolveScannerSources(options) {
7
- const cwd = options?.cwd ? path.resolve(options.cwd) : process.cwd();
8
- if (options?.sources?.length || options?.css === void 0) return {
9
- cwd,
10
- sources: normalizeTailwindV4ScannerSources(options?.sources, cwd, options?.ignoredSources)
11
- };
12
- const base = options.base ? path.resolve(options.base) : cwd;
13
- const { compiled } = await compileTailwindV4Source({
14
- projectRoot: cwd,
15
- base,
16
- baseFallbacks: options.baseFallbacks?.map((baseFallback) => path.resolve(baseFallback)) ?? [],
17
- css: options.css,
18
- dependencies: []
19
- });
20
- return {
21
- cwd,
22
- sources: normalizeTailwindV4ScannerSources(createTailwindV4CompiledSourceEntries(compiled.root, compiled.sources, base), cwd, options.ignoredSources)
23
- };
24
- }
25
- async function resolveProjectSourceFiles(options) {
26
- const { sources } = await resolveScannerSources(options);
27
- const { Scanner } = await getOxideModule();
28
- const files = new Scanner({ sources }).files ?? [];
29
- return options?.filter ? files.filter(options.filter) : files;
30
- }
31
- async function extractProjectCandidatesWithPositions(options) {
32
- const { cwd, sources } = await resolveScannerSources(options);
33
- const { Scanner } = await getOxideModule();
34
- const scanner = new Scanner({ sources });
35
- const files = scanner.files ?? [];
36
- const entries = [];
37
- const skipped = [];
38
- for (const file of files) {
39
- let content;
40
- try {
41
- content = await promises.readFile(file, "utf8");
42
- } catch (error) {
43
- skipped.push({
44
- file,
45
- reason: error instanceof Error ? error.message : "Unknown error"
46
- });
47
- continue;
48
- }
49
- const extension = toExtension(file);
50
- const matches = scanner.getCandidatesWithPositions({
51
- file,
52
- content,
53
- extension
54
- });
55
- if (!matches.length) continue;
56
- const offsets = buildLineOffsets(content);
57
- for (const match of matches) entries.push(createTokenLocation({
58
- cwd,
59
- file,
60
- content,
61
- extension,
62
- candidate: match.candidate,
63
- position: match.position,
64
- offsets
65
- }));
66
- }
67
- return {
68
- entries,
69
- filesScanned: files.length,
70
- skippedFiles: skipped,
71
- sources
72
- };
73
- }
74
- function groupTokensByFile(report, options) {
75
- const key = options?.key ?? "relative";
76
- const stripAbsolute = options?.stripAbsolutePaths ?? key !== "absolute";
77
- return report.entries.reduce((acc, entry) => {
78
- const bucketKey = key === "absolute" ? entry.file : entry.relativeFile;
79
- const bucket = acc[bucketKey] ?? (acc[bucketKey] = []);
80
- const value = stripAbsolute ? {
81
- ...entry,
82
- file: entry.relativeFile
83
- } : entry;
84
- bucket.push(value);
85
- return acc;
86
- }, {});
87
- }
88
- //#endregion
89
3
  //#region src/extraction/candidate-extractor/valid.ts
90
- const designSystemCandidateCache = /* @__PURE__ */ new Map();
91
- function createCandidateCacheKey(designSystemKey, options) {
92
- if (options.bareArbitraryValues == null || options.bareArbitraryValues === false) return designSystemKey;
93
- return `${designSystemKey}:bare-arbitrary:${JSON.stringify(options.bareArbitraryValues)}`;
4
+ const designSystemCandidateCache = /* @__PURE__ */ new WeakMap();
5
+ function createCandidateCacheKey(options) {
6
+ if (options.bareArbitraryValues == null || options.bareArbitraryValues === false) return "default";
7
+ return `bare-arbitrary:${JSON.stringify(options.bareArbitraryValues)}`;
94
8
  }
95
9
  async function extractValidCandidates(options) {
96
10
  const providedOptions = options ?? {};
@@ -107,18 +21,18 @@ async function extractValidCandidates(options) {
107
21
  pattern: source.pattern,
108
22
  negated: source.negated
109
23
  }));
110
- const source = {
24
+ const designSystem = await loadTailwindV4DesignSystem({
111
25
  projectRoot: defaultCwd,
112
26
  base,
113
27
  baseFallbacks,
114
28
  css,
115
29
  dependencies: []
116
- };
117
- const designSystemKey = getTailwindV4DesignSystemCacheKey(source);
118
- const designSystem = await loadTailwindV4DesignSystem(source);
119
- const candidateCacheKey = createCandidateCacheKey(designSystemKey, providedOptions);
120
- const candidateCache = designSystemCandidateCache.get(candidateCacheKey) ?? /* @__PURE__ */ new Map();
121
- designSystemCandidateCache.set(candidateCacheKey, candidateCache);
30
+ });
31
+ const candidateCacheKey = createCandidateCacheKey(providedOptions);
32
+ const caches = designSystemCandidateCache.get(designSystem) ?? /* @__PURE__ */ new Map();
33
+ designSystemCandidateCache.set(designSystem, caches);
34
+ const candidateCache = caches.get(candidateCacheKey) ?? /* @__PURE__ */ new Map();
35
+ caches.set(candidateCacheKey, candidateCache);
122
36
  const candidates = await extractRawCandidates(sources, providedOptions.bareArbitraryValues === void 0 ? void 0 : { bareArbitraryValues: providedOptions.bareArbitraryValues });
123
37
  const inlineSources = extractTailwindV4InlineSourceCandidates(css);
124
38
  for (const candidate of inlineSources.included) candidates.push(candidate);