tailwindcss-patch 9.3.3 → 9.3.4

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.
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const require_chunk = require("./chunk-8l464Juk.js");
2
- const require_validate = require("./validate-DABvQ44V.js");
3
- const require_index_bundle = require("./index.bundle-BdxyJef9.js");
2
+ const require_validate = require("./validate-DmELQoI2.js");
3
+ const require_index_bundle = require("./index.bundle-BIcthh-J.js");
4
4
  let node_process = require("node:process");
5
5
  node_process = require_chunk.__toESM(node_process);
6
6
  //#region src/cli.bundle.ts
package/dist/cli.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { j as logger, r as ValidateCommandError } from "./validate-cMWKFUKS.mjs";
2
- import { t as createTailwindcssPatchCli } from "./index.bundle-C39laqrA.mjs";
1
+ import { N as logger, r as ValidateCommandError } from "./validate-BoTQvn7s.mjs";
2
+ import { t as createTailwindcssPatchCli } from "./index.bundle-BU7uUzRH.mjs";
3
3
  import process from "node:process";
4
4
  //#region src/cli.bundle.ts
5
5
  async function main() {
@@ -1,4 +1,4 @@
1
- import { a as ValidateFailureSummary, c as TailwindcssPatchCliMountOptions, d as TailwindcssPatchCommandContext, f as TailwindcssPatchCommandHandler, g as tailwindcssPatchCommands, h as TailwindcssPatchCommandOptions, i as ValidateFailureReason, l as TailwindcssPatchCliOptions, m as TailwindcssPatchCommandOptionDefinition, n as VALIDATE_FAILURE_REASONS, o as ValidateJsonFailurePayload, p as TailwindcssPatchCommandHandlerMap, r as ValidateCommandError, s as ValidateJsonSuccessPayload, t as VALIDATE_EXIT_CODES, u as TailwindcssPatchCommand } from "../validate-DDJnolx2.mjs";
1
+ import { a as ValidateFailureSummary, c as TailwindcssPatchCliMountOptions, d as TailwindcssPatchCommandContext, f as TailwindcssPatchCommandHandler, g as tailwindcssPatchCommands, h as TailwindcssPatchCommandOptions, i as ValidateFailureReason, l as TailwindcssPatchCliOptions, m as TailwindcssPatchCommandOptionDefinition, n as VALIDATE_FAILURE_REASONS, o as ValidateJsonFailurePayload, p as TailwindcssPatchCommandHandlerMap, r as ValidateCommandError, s as ValidateJsonSuccessPayload, t as VALIDATE_EXIT_CODES, u as TailwindcssPatchCommand } from "../validate-Bd5gnHL1.mjs";
2
2
  import { CAC } from "cac";
3
3
 
4
4
  //#region src/commands/cli.d.ts
@@ -1,4 +1,4 @@
1
- import { a as ValidateFailureSummary, c as TailwindcssPatchCliMountOptions, d as TailwindcssPatchCommandContext, f as TailwindcssPatchCommandHandler, g as tailwindcssPatchCommands, h as TailwindcssPatchCommandOptions, i as ValidateFailureReason, l as TailwindcssPatchCliOptions, m as TailwindcssPatchCommandOptionDefinition, n as VALIDATE_FAILURE_REASONS, o as ValidateJsonFailurePayload, p as TailwindcssPatchCommandHandlerMap, r as ValidateCommandError, s as ValidateJsonSuccessPayload, t as VALIDATE_EXIT_CODES, u as TailwindcssPatchCommand } from "../validate-rPPCy1cl.js";
1
+ import { a as ValidateFailureSummary, c as TailwindcssPatchCliMountOptions, d as TailwindcssPatchCommandContext, f as TailwindcssPatchCommandHandler, g as tailwindcssPatchCommands, h as TailwindcssPatchCommandOptions, i as ValidateFailureReason, l as TailwindcssPatchCliOptions, m as TailwindcssPatchCommandOptionDefinition, n as VALIDATE_FAILURE_REASONS, o as ValidateJsonFailurePayload, p as TailwindcssPatchCommandHandlerMap, r as ValidateCommandError, s as ValidateJsonSuccessPayload, t as VALIDATE_EXIT_CODES, u as TailwindcssPatchCommand } from "../validate-ZwyABmFW.js";
2
2
  import { CAC } from "cac";
3
3
 
4
4
  //#region src/commands/cli.d.ts
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../chunk-8l464Juk.js");
3
- const require_validate = require("../validate-DABvQ44V.js");
3
+ const require_validate = require("../validate-DmELQoI2.js");
4
4
  let node_process = require("node:process");
5
5
  node_process = require_chunk.__toESM(node_process);
6
6
  let fs_extra = require("fs-extra");
@@ -1,4 +1,4 @@
1
- import { D as loadPatchOptionsForWorkspace, O as loadWorkspaceConfigModule, a as tailwindcssPatchCommands, b as groupTokensByFile, i as classifyValidateError, j as logger, n as VALIDATE_FAILURE_REASONS, o as migrateConfigFiles, r as ValidateCommandError, s as restoreConfigFiles, t as VALIDATE_EXIT_CODES, u as TailwindcssPatcher } from "../validate-cMWKFUKS.mjs";
1
+ import { A as loadWorkspaceConfigModule, N as logger, S as groupTokensByFile, a as tailwindcssPatchCommands, i as classifyValidateError, k as loadPatchOptionsForWorkspace, n as VALIDATE_FAILURE_REASONS, o as migrateConfigFiles, r as ValidateCommandError, s as restoreConfigFiles, t as VALIDATE_EXIT_CODES, u as TailwindcssPatcher } from "../validate-BoTQvn7s.mjs";
2
2
  import process from "node:process";
3
3
  import fs from "fs-extra";
4
4
  import path from "pathe";
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require("./chunk-8l464Juk.js");
2
- const require_validate = require("./validate-DABvQ44V.js");
2
+ const require_validate = require("./validate-DmELQoI2.js");
3
3
  let node_module = require("node:module");
4
4
  let node_process = require("node:process");
5
5
  node_process = require_chunk.__toESM(node_process);
@@ -1,4 +1,4 @@
1
- import { C as canonicalizeBareArbitraryValueCandidates, E as resolveValidTailwindV4Candidates, S as loadTailwindV4DesignSystem, T as replaceBareArbitraryValueSelectors, _ as extractRawCandidates, k as normalizeOptions, v as extractRawCandidatesWithPositions, w as extractTailwindV4InlineSourceCandidates, x as compileTailwindV4Source } from "./validate-cMWKFUKS.mjs";
1
+ import { C as compileTailwindV4Source, D as replaceBareArbitraryValueSelectors, E as extractTailwindV4InlineSourceCandidates, O as resolveValidTailwindV4Candidates, T as canonicalizeBareArbitraryValueCandidates, _ as extractRawCandidates, j as normalizeOptions, v as extractRawCandidatesWithPositions, w as loadTailwindV4DesignSystem } from "./validate-BoTQvn7s.mjs";
2
2
  import { createRequire } from "node:module";
3
3
  import process from "node:process";
4
4
  import path from "pathe";
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as TailwindV4SourceOptions, A as groupTokensByFile, B as NormalizedTailwindCssPatchOptions, C as MIGRATION_REPORT_SCHEMA_VERSION, D as extractRawCandidates, E as extractProjectCandidatesWithPositions, F as CacheStrategy, G as TailwindV4Options, H as TailwindCssPatchOptions, I as ExposeContextOptions, J as TailwindV4DesignSystem, K as TailwindV4CandidateSource, L as ExtendLengthUnitsOptions, M as normalizeOptions, N as ApplyOptions, O as extractRawCandidatesWithPositions, P as CacheOptions, Q as TailwindV4ResolvedSource, R as ExtractOptions, S as MIGRATION_REPORT_KIND, T as TailwindcssPatcher, U as TailwindV2Options, V as TailwindCssOptions, W as TailwindV3Options, X as TailwindV4GenerateOptions, Y as TailwindV4Engine, Z as TailwindV4GenerateResult, _ as ConfigFileMigrationEntry, _t as CacheContextMetadata, a as ValidateFailureSummary, at as PatchStatusReport, b as RestoreConfigFilesOptions, bt as CacheReadResult, c as TailwindcssPatchCliMountOptions, ct as TailwindTokenFileKey, d as TailwindcssPatchCommandContext, dt as TailwindcssClassCache, et as ExtractResult, f as TailwindcssPatchCommandHandler, ft as TailwindcssRuntimeContext, g as tailwindcssPatchCommands, gt as CacheContextDescriptor, h as TailwindcssPatchCommandOptions, ht as CacheClearScope, i as ValidateFailureReason, it as PatchStatusEntry, j as BareArbitraryValueOptions, k as extractValidCandidates, l as TailwindcssPatchCliOptions, lt as TailwindTokenLocation, m as TailwindcssPatchCommandOptionDefinition, mt as CacheClearResult, n as VALIDATE_FAILURE_REASONS, nt as PatchCheckStatus, o as ValidateJsonFailurePayload, ot as TailwindPatchRuntime, p as TailwindcssPatchCommandHandlerMap, pt as CacheClearOptions, q as TailwindV4CssSource, r as ValidateCommandError, rt as PatchName, s as ValidateJsonSuccessPayload, st as TailwindTokenByFileMap, t as VALIDATE_EXIT_CODES, tt as ILengthUnitsPatchOptions, u as TailwindcssPatchCommand, ut as TailwindTokenReport, v as ConfigFileMigrationReport, vt as CacheIndexFileV2, w as logger, x as RestoreConfigFilesResult, y as MigrateConfigFilesOptions, yt as CacheReadMeta, z as NormalizedCacheOptions } from "./validate-DDJnolx2.mjs";
1
+ import { $ as TailwindV4GenerateResult, A as extractSourceCandidatesWithPositions, B as ExtractOptions, C as MIGRATION_REPORT_SCHEMA_VERSION, D as extractRawCandidates, E as extractProjectCandidatesWithPositions, F as ApplyOptions, G as TailwindV2Options, H as NormalizedTailwindCssPatchOptions, I as CacheOptions, J as TailwindV4CandidateSource, K as TailwindV3Options, L as CacheStrategy, M as groupTokensByFile, N as BareArbitraryValueOptions, O as extractRawCandidatesWithPositions, P as normalizeOptions, Q as TailwindV4GenerateOptions, R as ExposeContextOptions, S as MIGRATION_REPORT_KIND, St as CacheReadResult, T as TailwindcssPatcher, U as TailwindCssOptions, V as NormalizedCacheOptions, W as TailwindCssPatchOptions, X as TailwindV4DesignSystem, Y as TailwindV4CssSource, Z as TailwindV4Engine, _ as ConfigFileMigrationEntry, _t as CacheClearScope, a as ValidateFailureSummary, at as PatchName, b as RestoreConfigFilesOptions, bt as CacheIndexFileV2, c as TailwindcssPatchCliMountOptions, ct as TailwindPatchRuntime, d as TailwindcssPatchCommandContext, dt as TailwindTokenLocation, et as TailwindV4ResolvedSource, f as TailwindcssPatchCommandHandler, ft as TailwindTokenReport, g as tailwindcssPatchCommands, gt as CacheClearResult, h as TailwindcssPatchCommandOptions, ht as CacheClearOptions, i as ValidateFailureReason, it as PatchCheckStatus, j as extractValidCandidates, k as extractSourceCandidates, l as TailwindcssPatchCliOptions, lt as TailwindTokenByFileMap, m as TailwindcssPatchCommandOptionDefinition, mt as TailwindcssRuntimeContext, n as VALIDATE_FAILURE_REASONS, nt as ExtractResult, o as ValidateJsonFailurePayload, ot as PatchStatusEntry, p as TailwindcssPatchCommandHandlerMap, pt as TailwindcssClassCache, q as TailwindV4Options, r as ValidateCommandError, rt as ILengthUnitsPatchOptions, s as ValidateJsonSuccessPayload, st as PatchStatusReport, t as VALIDATE_EXIT_CODES, tt as TailwindV4SourceOptions, u as TailwindcssPatchCommand, ut as TailwindTokenFileKey, v as ConfigFileMigrationReport, vt as CacheContextDescriptor, w as logger, x as RestoreConfigFilesResult, xt as CacheReadMeta, y as MigrateConfigFilesOptions, yt as CacheContextMetadata, z as ExtendLengthUnitsOptions } from "./validate-Bd5gnHL1.mjs";
2
2
  import { PackageInfo } from "local-pkg";
3
3
  import postcss from "postcss";
4
4
  import { CAC } from "cac";
@@ -97,4 +97,4 @@ declare function mountTailwindcssPatchCommands(cli: CAC, options?: TailwindcssPa
97
97
  declare function createTailwindcssPatchCli(options?: TailwindcssPatchCliOptions): CAC;
98
98
  declare function defineConfig<T extends TailwindcssMangleConfig>(config: T): T;
99
99
  //#endregion
100
- export { ApplyOptions, CacheClearOptions, CacheClearResult, CacheClearScope, CacheContextMetadata, CacheOptions, CacheReadMeta, CacheStore, CacheStrategy, type ConfigFileMigrationEntry, type ConfigFileMigrationReport, ExposeContextOptions, ExtendLengthUnitsOptions, ExtractOptions, ExtractResult, ILengthUnitsPatchOptions, MIGRATION_REPORT_KIND, MIGRATION_REPORT_SCHEMA_VERSION, type MigrateConfigFilesOptions, NormalizedTailwindCssPatchOptions, PatchCheckStatus, PatchName, PatchStatusEntry, PatchStatusReport, type RestoreConfigFilesOptions, type RestoreConfigFilesResult, TailwindCssOptions, type TailwindCssPatchOptions, TailwindPatchRuntime, TailwindTokenByFileMap, TailwindTokenFileKey, TailwindTokenLocation, TailwindTokenReport, TailwindV2Options, TailwindV3Options, type TailwindV4CandidateSource, type TailwindV4CssSource, type TailwindV4DesignSystem, type TailwindV4Engine, type TailwindV4GenerateOptions, type TailwindV4GenerateResult, TailwindV4Options, type TailwindV4ResolvedSource, type TailwindV4SourceOptions, TailwindcssClassCache, type TailwindcssPatchCliMountOptions, type TailwindcssPatchCliOptions, type TailwindcssPatchCommand, type TailwindcssPatchCommandContext, type TailwindcssPatchCommandHandler, type TailwindcssPatchCommandHandlerMap, type TailwindcssPatchCommandOptionDefinition, type TailwindcssPatchCommandOptions, TailwindcssPatcher, TailwindcssRuntimeContext, VALIDATE_EXIT_CODES, VALIDATE_FAILURE_REASONS, ValidateCommandError, type ValidateFailureReason, type ValidateFailureSummary, type ValidateJsonFailurePayload, type ValidateJsonSuccessPayload, collectClassesFromContexts, collectClassesFromTailwindV4, createTailwindV4Engine, createTailwindcssPatchCli, defineConfig, extractProjectCandidatesWithPositions, extractRawCandidates, extractRawCandidatesWithPositions, extractValidCandidates, getPatchStatusReport, groupTokensByFile, loadRuntimeContexts, loadTailwindV4DesignSystem, logger, migrateConfigFiles, mountTailwindcssPatchCommands, normalizeOptions, resolveTailwindV4Source, resolveTailwindV4SourceFromPatchOptions, resolveValidTailwindV4Candidates, restoreConfigFiles, runTailwindBuild, tailwindcssPatchCommands };
100
+ export { ApplyOptions, CacheClearOptions, CacheClearResult, CacheClearScope, CacheContextMetadata, CacheOptions, CacheReadMeta, CacheStore, CacheStrategy, type ConfigFileMigrationEntry, type ConfigFileMigrationReport, ExposeContextOptions, ExtendLengthUnitsOptions, ExtractOptions, ExtractResult, ILengthUnitsPatchOptions, MIGRATION_REPORT_KIND, MIGRATION_REPORT_SCHEMA_VERSION, type MigrateConfigFilesOptions, NormalizedTailwindCssPatchOptions, PatchCheckStatus, PatchName, PatchStatusEntry, PatchStatusReport, type RestoreConfigFilesOptions, type RestoreConfigFilesResult, TailwindCssOptions, type TailwindCssPatchOptions, TailwindPatchRuntime, TailwindTokenByFileMap, TailwindTokenFileKey, TailwindTokenLocation, TailwindTokenReport, TailwindV2Options, TailwindV3Options, type TailwindV4CandidateSource, type TailwindV4CssSource, type TailwindV4DesignSystem, type TailwindV4Engine, type TailwindV4GenerateOptions, type TailwindV4GenerateResult, TailwindV4Options, type TailwindV4ResolvedSource, type TailwindV4SourceOptions, TailwindcssClassCache, type TailwindcssPatchCliMountOptions, type TailwindcssPatchCliOptions, type TailwindcssPatchCommand, type TailwindcssPatchCommandContext, type TailwindcssPatchCommandHandler, type TailwindcssPatchCommandHandlerMap, type TailwindcssPatchCommandOptionDefinition, type TailwindcssPatchCommandOptions, TailwindcssPatcher, TailwindcssRuntimeContext, VALIDATE_EXIT_CODES, VALIDATE_FAILURE_REASONS, ValidateCommandError, type ValidateFailureReason, type ValidateFailureSummary, type ValidateJsonFailurePayload, type ValidateJsonSuccessPayload, collectClassesFromContexts, collectClassesFromTailwindV4, createTailwindV4Engine, createTailwindcssPatchCli, defineConfig, extractProjectCandidatesWithPositions, extractRawCandidates, extractRawCandidatesWithPositions, extractSourceCandidates, extractSourceCandidatesWithPositions, extractValidCandidates, getPatchStatusReport, groupTokensByFile, loadRuntimeContexts, loadTailwindV4DesignSystem, logger, migrateConfigFiles, mountTailwindcssPatchCommands, normalizeOptions, resolveTailwindV4Source, resolveTailwindV4SourceFromPatchOptions, resolveValidTailwindV4Candidates, restoreConfigFiles, runTailwindBuild, tailwindcssPatchCommands };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as TailwindV4SourceOptions, A as groupTokensByFile, B as NormalizedTailwindCssPatchOptions, C as MIGRATION_REPORT_SCHEMA_VERSION, D as extractRawCandidates, E as extractProjectCandidatesWithPositions, F as CacheStrategy, G as TailwindV4Options, H as TailwindCssPatchOptions, I as ExposeContextOptions, J as TailwindV4DesignSystem, K as TailwindV4CandidateSource, L as ExtendLengthUnitsOptions, M as normalizeOptions, N as ApplyOptions, O as extractRawCandidatesWithPositions, P as CacheOptions, Q as TailwindV4ResolvedSource, R as ExtractOptions, S as MIGRATION_REPORT_KIND, T as TailwindcssPatcher, U as TailwindV2Options, V as TailwindCssOptions, W as TailwindV3Options, X as TailwindV4GenerateOptions, Y as TailwindV4Engine, Z as TailwindV4GenerateResult, _ as ConfigFileMigrationEntry, _t as CacheContextMetadata, a as ValidateFailureSummary, at as PatchStatusReport, b as RestoreConfigFilesOptions, bt as CacheReadResult, c as TailwindcssPatchCliMountOptions, ct as TailwindTokenFileKey, d as TailwindcssPatchCommandContext, dt as TailwindcssClassCache, et as ExtractResult, f as TailwindcssPatchCommandHandler, ft as TailwindcssRuntimeContext, g as tailwindcssPatchCommands, gt as CacheContextDescriptor, h as TailwindcssPatchCommandOptions, ht as CacheClearScope, i as ValidateFailureReason, it as PatchStatusEntry, j as BareArbitraryValueOptions, k as extractValidCandidates, l as TailwindcssPatchCliOptions, lt as TailwindTokenLocation, m as TailwindcssPatchCommandOptionDefinition, mt as CacheClearResult, n as VALIDATE_FAILURE_REASONS, nt as PatchCheckStatus, o as ValidateJsonFailurePayload, ot as TailwindPatchRuntime, p as TailwindcssPatchCommandHandlerMap, pt as CacheClearOptions, q as TailwindV4CssSource, r as ValidateCommandError, rt as PatchName, s as ValidateJsonSuccessPayload, st as TailwindTokenByFileMap, t as VALIDATE_EXIT_CODES, tt as ILengthUnitsPatchOptions, u as TailwindcssPatchCommand, ut as TailwindTokenReport, v as ConfigFileMigrationReport, vt as CacheIndexFileV2, w as logger, x as RestoreConfigFilesResult, y as MigrateConfigFilesOptions, yt as CacheReadMeta, z as NormalizedCacheOptions } from "./validate-rPPCy1cl.js";
1
+ import { $ as TailwindV4GenerateResult, A as extractSourceCandidatesWithPositions, B as ExtractOptions, C as MIGRATION_REPORT_SCHEMA_VERSION, D as extractRawCandidates, E as extractProjectCandidatesWithPositions, F as ApplyOptions, G as TailwindV2Options, H as NormalizedTailwindCssPatchOptions, I as CacheOptions, J as TailwindV4CandidateSource, K as TailwindV3Options, L as CacheStrategy, M as groupTokensByFile, N as BareArbitraryValueOptions, O as extractRawCandidatesWithPositions, P as normalizeOptions, Q as TailwindV4GenerateOptions, R as ExposeContextOptions, S as MIGRATION_REPORT_KIND, St as CacheReadResult, T as TailwindcssPatcher, U as TailwindCssOptions, V as NormalizedCacheOptions, W as TailwindCssPatchOptions, X as TailwindV4DesignSystem, Y as TailwindV4CssSource, Z as TailwindV4Engine, _ as ConfigFileMigrationEntry, _t as CacheClearScope, a as ValidateFailureSummary, at as PatchName, b as RestoreConfigFilesOptions, bt as CacheIndexFileV2, c as TailwindcssPatchCliMountOptions, ct as TailwindPatchRuntime, d as TailwindcssPatchCommandContext, dt as TailwindTokenLocation, et as TailwindV4ResolvedSource, f as TailwindcssPatchCommandHandler, ft as TailwindTokenReport, g as tailwindcssPatchCommands, gt as CacheClearResult, h as TailwindcssPatchCommandOptions, ht as CacheClearOptions, i as ValidateFailureReason, it as PatchCheckStatus, j as extractValidCandidates, k as extractSourceCandidates, l as TailwindcssPatchCliOptions, lt as TailwindTokenByFileMap, m as TailwindcssPatchCommandOptionDefinition, mt as TailwindcssRuntimeContext, n as VALIDATE_FAILURE_REASONS, nt as ExtractResult, o as ValidateJsonFailurePayload, ot as PatchStatusEntry, p as TailwindcssPatchCommandHandlerMap, pt as TailwindcssClassCache, q as TailwindV4Options, r as ValidateCommandError, rt as ILengthUnitsPatchOptions, s as ValidateJsonSuccessPayload, st as PatchStatusReport, t as VALIDATE_EXIT_CODES, tt as TailwindV4SourceOptions, u as TailwindcssPatchCommand, ut as TailwindTokenFileKey, v as ConfigFileMigrationReport, vt as CacheContextDescriptor, w as logger, x as RestoreConfigFilesResult, xt as CacheReadMeta, y as MigrateConfigFilesOptions, yt as CacheContextMetadata, z as ExtendLengthUnitsOptions } from "./validate-ZwyABmFW.js";
2
2
  import { CAC } from "cac";
3
3
  import { PackageInfo } from "local-pkg";
4
4
  import postcss from "postcss";
@@ -97,4 +97,4 @@ declare function mountTailwindcssPatchCommands(cli: CAC, options?: TailwindcssPa
97
97
  declare function createTailwindcssPatchCli(options?: TailwindcssPatchCliOptions): CAC;
98
98
  declare function defineConfig<T extends TailwindcssMangleConfig>(config: T): T;
99
99
  //#endregion
100
- export { ApplyOptions, CacheClearOptions, CacheClearResult, CacheClearScope, CacheContextMetadata, CacheOptions, CacheReadMeta, CacheStore, CacheStrategy, type ConfigFileMigrationEntry, type ConfigFileMigrationReport, ExposeContextOptions, ExtendLengthUnitsOptions, ExtractOptions, ExtractResult, ILengthUnitsPatchOptions, MIGRATION_REPORT_KIND, MIGRATION_REPORT_SCHEMA_VERSION, type MigrateConfigFilesOptions, NormalizedTailwindCssPatchOptions, PatchCheckStatus, PatchName, PatchStatusEntry, PatchStatusReport, type RestoreConfigFilesOptions, type RestoreConfigFilesResult, TailwindCssOptions, type TailwindCssPatchOptions, TailwindPatchRuntime, TailwindTokenByFileMap, TailwindTokenFileKey, TailwindTokenLocation, TailwindTokenReport, TailwindV2Options, TailwindV3Options, type TailwindV4CandidateSource, type TailwindV4CssSource, type TailwindV4DesignSystem, type TailwindV4Engine, type TailwindV4GenerateOptions, type TailwindV4GenerateResult, TailwindV4Options, type TailwindV4ResolvedSource, type TailwindV4SourceOptions, TailwindcssClassCache, type TailwindcssPatchCliMountOptions, type TailwindcssPatchCliOptions, type TailwindcssPatchCommand, type TailwindcssPatchCommandContext, type TailwindcssPatchCommandHandler, type TailwindcssPatchCommandHandlerMap, type TailwindcssPatchCommandOptionDefinition, type TailwindcssPatchCommandOptions, TailwindcssPatcher, TailwindcssRuntimeContext, VALIDATE_EXIT_CODES, VALIDATE_FAILURE_REASONS, ValidateCommandError, type ValidateFailureReason, type ValidateFailureSummary, type ValidateJsonFailurePayload, type ValidateJsonSuccessPayload, collectClassesFromContexts, collectClassesFromTailwindV4, createTailwindV4Engine, createTailwindcssPatchCli, defineConfig, extractProjectCandidatesWithPositions, extractRawCandidates, extractRawCandidatesWithPositions, extractValidCandidates, getPatchStatusReport, groupTokensByFile, loadRuntimeContexts, loadTailwindV4DesignSystem, logger, migrateConfigFiles, mountTailwindcssPatchCommands, normalizeOptions, resolveTailwindV4Source, resolveTailwindV4SourceFromPatchOptions, resolveValidTailwindV4Candidates, restoreConfigFiles, runTailwindBuild, tailwindcssPatchCommands };
100
+ export { ApplyOptions, CacheClearOptions, CacheClearResult, CacheClearScope, CacheContextMetadata, CacheOptions, CacheReadMeta, CacheStore, CacheStrategy, type ConfigFileMigrationEntry, type ConfigFileMigrationReport, ExposeContextOptions, ExtendLengthUnitsOptions, ExtractOptions, ExtractResult, ILengthUnitsPatchOptions, MIGRATION_REPORT_KIND, MIGRATION_REPORT_SCHEMA_VERSION, type MigrateConfigFilesOptions, NormalizedTailwindCssPatchOptions, PatchCheckStatus, PatchName, PatchStatusEntry, PatchStatusReport, type RestoreConfigFilesOptions, type RestoreConfigFilesResult, TailwindCssOptions, type TailwindCssPatchOptions, TailwindPatchRuntime, TailwindTokenByFileMap, TailwindTokenFileKey, TailwindTokenLocation, TailwindTokenReport, TailwindV2Options, TailwindV3Options, type TailwindV4CandidateSource, type TailwindV4CssSource, type TailwindV4DesignSystem, type TailwindV4Engine, type TailwindV4GenerateOptions, type TailwindV4GenerateResult, TailwindV4Options, type TailwindV4ResolvedSource, type TailwindV4SourceOptions, TailwindcssClassCache, type TailwindcssPatchCliMountOptions, type TailwindcssPatchCliOptions, type TailwindcssPatchCommand, type TailwindcssPatchCommandContext, type TailwindcssPatchCommandHandler, type TailwindcssPatchCommandHandlerMap, type TailwindcssPatchCommandOptionDefinition, type TailwindcssPatchCommandOptions, TailwindcssPatcher, TailwindcssRuntimeContext, VALIDATE_EXIT_CODES, VALIDATE_FAILURE_REASONS, ValidateCommandError, type ValidateFailureReason, type ValidateFailureSummary, type ValidateJsonFailurePayload, type ValidateJsonSuccessPayload, collectClassesFromContexts, collectClassesFromTailwindV4, createTailwindV4Engine, createTailwindcssPatchCli, defineConfig, extractProjectCandidatesWithPositions, extractRawCandidates, extractRawCandidatesWithPositions, extractSourceCandidates, extractSourceCandidatesWithPositions, extractValidCandidates, getPatchStatusReport, groupTokensByFile, loadRuntimeContexts, loadTailwindV4DesignSystem, logger, migrateConfigFiles, mountTailwindcssPatchCommands, normalizeOptions, resolveTailwindV4Source, resolveTailwindV4SourceFromPatchOptions, resolveValidTailwindV4Candidates, restoreConfigFiles, runTailwindBuild, tailwindcssPatchCommands };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_validate = require("./validate-DABvQ44V.js");
3
- const require_index_bundle = require("./index.bundle-BdxyJef9.js");
2
+ const require_validate = require("./validate-DmELQoI2.js");
3
+ const require_index_bundle = require("./index.bundle-BIcthh-J.js");
4
4
  exports.CacheStore = require_validate.CacheStore;
5
5
  exports.MIGRATION_REPORT_KIND = require_validate.MIGRATION_REPORT_KIND;
6
6
  exports.MIGRATION_REPORT_SCHEMA_VERSION = require_validate.MIGRATION_REPORT_SCHEMA_VERSION;
@@ -16,6 +16,8 @@ exports.defineConfig = require_index_bundle.defineConfig;
16
16
  exports.extractProjectCandidatesWithPositions = require_validate.extractProjectCandidatesWithPositions;
17
17
  exports.extractRawCandidates = require_validate.extractRawCandidates;
18
18
  exports.extractRawCandidatesWithPositions = require_validate.extractRawCandidatesWithPositions;
19
+ exports.extractSourceCandidates = require_validate.extractSourceCandidates;
20
+ exports.extractSourceCandidatesWithPositions = require_validate.extractSourceCandidatesWithPositions;
19
21
  exports.extractValidCandidates = require_validate.extractValidCandidates;
20
22
  exports.getPatchStatusReport = require_validate.getPatchStatusReport;
21
23
  exports.groupTokensByFile = require_validate.groupTokensByFile;
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { A as CacheStore, E as resolveValidTailwindV4Candidates, S as loadTailwindV4DesignSystem, _ as extractRawCandidates, a as tailwindcssPatchCommands, b as groupTokensByFile, c as MIGRATION_REPORT_KIND, d as getPatchStatusReport, f as runTailwindBuild, g as extractProjectCandidatesWithPositions, h as collectClassesFromTailwindV4, j as logger, k as normalizeOptions, l as MIGRATION_REPORT_SCHEMA_VERSION, m as collectClassesFromContexts, n as VALIDATE_FAILURE_REASONS, o as migrateConfigFiles, p as loadRuntimeContexts, r as ValidateCommandError, s as restoreConfigFiles, t as VALIDATE_EXIT_CODES, u as TailwindcssPatcher, v as extractRawCandidatesWithPositions, y as extractValidCandidates } from "./validate-cMWKFUKS.mjs";
2
- import { a as resolveTailwindV4SourceFromPatchOptions, i as resolveTailwindV4Source, n as defineConfig, o as createTailwindV4Engine, r as mountTailwindcssPatchCommands, t as createTailwindcssPatchCli } from "./index.bundle-C39laqrA.mjs";
3
- export { CacheStore, MIGRATION_REPORT_KIND, MIGRATION_REPORT_SCHEMA_VERSION, TailwindcssPatcher, VALIDATE_EXIT_CODES, VALIDATE_FAILURE_REASONS, ValidateCommandError, collectClassesFromContexts, collectClassesFromTailwindV4, createTailwindV4Engine, createTailwindcssPatchCli, defineConfig, extractProjectCandidatesWithPositions, extractRawCandidates, extractRawCandidatesWithPositions, extractValidCandidates, getPatchStatusReport, groupTokensByFile, loadRuntimeContexts, loadTailwindV4DesignSystem, logger, migrateConfigFiles, mountTailwindcssPatchCommands, normalizeOptions, resolveTailwindV4Source, resolveTailwindV4SourceFromPatchOptions, resolveValidTailwindV4Candidates, restoreConfigFiles, runTailwindBuild, tailwindcssPatchCommands };
1
+ import { M as CacheStore, N as logger, O as resolveValidTailwindV4Candidates, S as groupTokensByFile, _ as extractRawCandidates, a as tailwindcssPatchCommands, b as extractSourceCandidatesWithPositions, c as MIGRATION_REPORT_KIND, d as getPatchStatusReport, f as runTailwindBuild, g as extractProjectCandidatesWithPositions, h as collectClassesFromTailwindV4, j as normalizeOptions, l as MIGRATION_REPORT_SCHEMA_VERSION, m as collectClassesFromContexts, n as VALIDATE_FAILURE_REASONS, o as migrateConfigFiles, p as loadRuntimeContexts, r as ValidateCommandError, s as restoreConfigFiles, t as VALIDATE_EXIT_CODES, u as TailwindcssPatcher, v as extractRawCandidatesWithPositions, w as loadTailwindV4DesignSystem, x as extractValidCandidates, y as extractSourceCandidates } from "./validate-BoTQvn7s.mjs";
2
+ import { a as resolveTailwindV4SourceFromPatchOptions, i as resolveTailwindV4Source, n as defineConfig, o as createTailwindV4Engine, r as mountTailwindcssPatchCommands, t as createTailwindcssPatchCli } from "./index.bundle-BU7uUzRH.mjs";
3
+ export { CacheStore, MIGRATION_REPORT_KIND, MIGRATION_REPORT_SCHEMA_VERSION, TailwindcssPatcher, VALIDATE_EXIT_CODES, VALIDATE_FAILURE_REASONS, ValidateCommandError, collectClassesFromContexts, collectClassesFromTailwindV4, createTailwindV4Engine, createTailwindcssPatchCli, defineConfig, extractProjectCandidatesWithPositions, extractRawCandidates, extractRawCandidatesWithPositions, extractSourceCandidates, extractSourceCandidatesWithPositions, extractValidCandidates, getPatchStatusReport, groupTokensByFile, loadRuntimeContexts, loadTailwindV4DesignSystem, logger, migrateConfigFiles, mountTailwindcssPatchCommands, normalizeOptions, resolveTailwindV4Source, resolveTailwindV4SourceFromPatchOptions, resolveValidTailwindV4Candidates, restoreConfigFiles, runTailwindBuild, tailwindcssPatchCommands };
@@ -512,11 +512,14 @@ interface ExtractValidCandidatesOption {
512
512
  cwd?: string;
513
513
  bareArbitraryValues?: boolean | BareArbitraryValueOptions;
514
514
  }
515
- declare function extractRawCandidatesWithPositions(content: string, extension?: string): Promise<{
515
+ interface ExtractSourceCandidate {
516
516
  rawCandidate: string;
517
517
  start: number;
518
518
  end: number;
519
- }[]>;
519
+ }
520
+ declare function extractRawCandidatesWithPositions(content: string, extension?: string): Promise<ExtractSourceCandidate[]>;
521
+ declare function extractSourceCandidatesWithPositions(content: string, extension?: string): Promise<ExtractSourceCandidate[]>;
522
+ declare function extractSourceCandidates(content: string, extension?: string): Promise<string[]>;
520
523
  declare function extractRawCandidates(sources?: SourceEntry[]): Promise<string[]>;
521
524
  declare function extractValidCandidates(options?: ExtractValidCandidatesOption): Promise<string[]>;
522
525
  interface ExtractProjectCandidatesOptions {
@@ -773,4 +776,4 @@ declare class ValidateCommandError extends Error {
773
776
  constructor(summary: ValidateFailureSummary, options?: ErrorOptions);
774
777
  }
775
778
  //#endregion
776
- export { TailwindV4SourceOptions as $, groupTokensByFile as A, NormalizedTailwindCssPatchOptions as B, MIGRATION_REPORT_SCHEMA_VERSION as C, extractRawCandidates as D, extractProjectCandidatesWithPositions as E, CacheStrategy as F, TailwindV4Options as G, TailwindCssPatchOptions as H, ExposeContextOptions as I, TailwindV4DesignSystem as J, TailwindV4CandidateSource as K, ExtendLengthUnitsOptions as L, normalizeOptions as M, ApplyOptions as N, extractRawCandidatesWithPositions as O, CacheOptions as P, TailwindV4ResolvedSource as Q, ExtractOptions as R, MIGRATION_REPORT_KIND as S, TailwindcssPatcher as T, TailwindV2Options as U, TailwindCssOptions as V, TailwindV3Options as W, TailwindV4GenerateOptions as X, TailwindV4Engine as Y, TailwindV4GenerateResult as Z, ConfigFileMigrationEntry as _, CacheContextMetadata as _t, ValidateFailureSummary as a, PatchStatusReport as at, RestoreConfigFilesOptions as b, CacheReadResult as bt, TailwindcssPatchCliMountOptions as c, TailwindTokenFileKey as ct, TailwindcssPatchCommandContext as d, TailwindcssClassCache as dt, ExtractResult as et, TailwindcssPatchCommandHandler as f, TailwindcssRuntimeContext as ft, tailwindcssPatchCommands as g, CacheContextDescriptor as gt, TailwindcssPatchCommandOptions as h, CacheClearScope as ht, ValidateFailureReason as i, PatchStatusEntry as it, BareArbitraryValueOptions as j, extractValidCandidates as k, TailwindcssPatchCliOptions as l, TailwindTokenLocation as lt, TailwindcssPatchCommandOptionDefinition as m, CacheClearResult as mt, VALIDATE_FAILURE_REASONS as n, PatchCheckStatus as nt, ValidateJsonFailurePayload as o, TailwindPatchRuntime as ot, TailwindcssPatchCommandHandlerMap as p, CacheClearOptions as pt, TailwindV4CssSource as q, ValidateCommandError as r, PatchName as rt, ValidateJsonSuccessPayload as s, TailwindTokenByFileMap as st, VALIDATE_EXIT_CODES as t, ILengthUnitsPatchOptions as tt, TailwindcssPatchCommand as u, TailwindTokenReport as ut, ConfigFileMigrationReport as v, CacheIndexFileV2 as vt, logger as w, RestoreConfigFilesResult as x, MigrateConfigFilesOptions as y, CacheReadMeta as yt, NormalizedCacheOptions as z };
779
+ export { TailwindV4GenerateResult as $, extractSourceCandidatesWithPositions as A, ExtractOptions as B, MIGRATION_REPORT_SCHEMA_VERSION as C, extractRawCandidates as D, extractProjectCandidatesWithPositions as E, ApplyOptions as F, TailwindV2Options as G, NormalizedTailwindCssPatchOptions as H, CacheOptions as I, TailwindV4CandidateSource as J, TailwindV3Options as K, CacheStrategy as L, groupTokensByFile as M, BareArbitraryValueOptions as N, extractRawCandidatesWithPositions as O, normalizeOptions as P, TailwindV4GenerateOptions as Q, ExposeContextOptions as R, MIGRATION_REPORT_KIND as S, CacheReadResult as St, TailwindcssPatcher as T, TailwindCssOptions as U, NormalizedCacheOptions as V, TailwindCssPatchOptions as W, TailwindV4DesignSystem as X, TailwindV4CssSource as Y, TailwindV4Engine as Z, ConfigFileMigrationEntry as _, CacheClearScope as _t, ValidateFailureSummary as a, PatchName as at, RestoreConfigFilesOptions as b, CacheIndexFileV2 as bt, TailwindcssPatchCliMountOptions as c, TailwindPatchRuntime as ct, TailwindcssPatchCommandContext as d, TailwindTokenLocation as dt, TailwindV4ResolvedSource as et, TailwindcssPatchCommandHandler as f, TailwindTokenReport as ft, tailwindcssPatchCommands as g, CacheClearResult as gt, TailwindcssPatchCommandOptions as h, CacheClearOptions as ht, ValidateFailureReason as i, PatchCheckStatus as it, extractValidCandidates as j, extractSourceCandidates as k, TailwindcssPatchCliOptions as l, TailwindTokenByFileMap as lt, TailwindcssPatchCommandOptionDefinition as m, TailwindcssRuntimeContext as mt, VALIDATE_FAILURE_REASONS as n, ExtractResult as nt, ValidateJsonFailurePayload as o, PatchStatusEntry as ot, TailwindcssPatchCommandHandlerMap as p, TailwindcssClassCache as pt, TailwindV4Options as q, ValidateCommandError as r, ILengthUnitsPatchOptions as rt, ValidateJsonSuccessPayload as s, PatchStatusReport as st, VALIDATE_EXIT_CODES as t, TailwindV4SourceOptions as tt, TailwindcssPatchCommand as u, TailwindTokenFileKey as ut, ConfigFileMigrationReport as v, CacheContextDescriptor as vt, logger as w, RestoreConfigFilesResult as x, CacheReadMeta as xt, MigrateConfigFilesOptions as y, CacheContextMetadata as yt, ExtendLengthUnitsOptions as z };
@@ -16,7 +16,7 @@ import _babelTraverse from "@babel/traverse";
16
16
  import { parse, parse as parse$1 } from "@babel/parser";
17
17
  import { loadConfig } from "tailwindcss-config";
18
18
  //#region package.json
19
- var version = "9.3.3";
19
+ var version = "9.3.4";
20
20
  //#endregion
21
21
  //#region src/constants.ts
22
22
  const pkgName = "tailwindcss-patch";
@@ -2064,6 +2064,132 @@ function getOxideModule() {
2064
2064
  });
2065
2065
  return oxideImportPromise;
2066
2066
  }
2067
+ const HTML_ATTRIBUTE_NAME_CANDIDATE_RE = /^(?:class|className|hover-class|hoverClass)$/;
2068
+ const CSS_DIRECTIVE_CANDIDATE_RE = /^@(?:apply|tailwind|source|config|plugin|theme|utility|custom-variant|variant)$/;
2069
+ const CSS_APPLY_IMPORTANT = "!important";
2070
+ const JS_LIKE_SOURCE_EXTENSION_RE = /^(?:[cm]?[jt]sx?)$/;
2071
+ const MIXED_TEMPLATE_SOURCE_EXTENSION_RE = /^(?:vue|uvue|nvue|svelte|mpx)$/;
2072
+ const CSS_LIKE_SOURCE_EXTENSION_RE = /^(?:css|wxss|acss|jxss|ttss|qss|tyss|scss|sass|less|styl|stylus)$/;
2073
+ const SFC_SCRIPT_BLOCK_RE = /<script\b[^>]*>([\s\S]*?)<\/script>/gi;
2074
+ function isWhitespace(value) {
2075
+ return value === " " || value === "\n" || value === "\r" || value === " " || value === "\f";
2076
+ }
2077
+ function isHtmlAttributeNameCandidate(content, candidate) {
2078
+ if (!HTML_ATTRIBUTE_NAME_CANDIDATE_RE.test(candidate.rawCandidate)) return false;
2079
+ let index = candidate.end;
2080
+ while (isWhitespace(content[index])) index++;
2081
+ return content[index] === "=";
2082
+ }
2083
+ function isInsideHtmlTagText(content, candidate) {
2084
+ if (content.lastIndexOf("<", candidate.start) > content.lastIndexOf(">", candidate.start)) return false;
2085
+ const nextOpen = content.indexOf("<", candidate.end);
2086
+ return nextOpen !== -1 && (nextOpen < content.indexOf(">", candidate.end) || content.indexOf(">", candidate.end) === -1);
2087
+ }
2088
+ function isCssDirectiveCandidate(candidate) {
2089
+ return candidate === CSS_APPLY_IMPORTANT || CSS_DIRECTIVE_CANDIDATE_RE.test(candidate);
2090
+ }
2091
+ function isCandidateInCssApplyParams(content, candidate) {
2092
+ const apply = content.lastIndexOf("@apply", candidate.start);
2093
+ if (apply === -1) return false;
2094
+ const boundary = content.slice(apply + 6, candidate.start);
2095
+ return !/[;{}]/.test(boundary);
2096
+ }
2097
+ function isCandidateInsideJsStringStaticContent(content, start) {
2098
+ let quote;
2099
+ let templateExpressionDepth = 0;
2100
+ for (let index = 0; index < start; index++) {
2101
+ const char = content[index];
2102
+ const next = content[index + 1];
2103
+ if (quote && char === "\\") {
2104
+ index++;
2105
+ continue;
2106
+ }
2107
+ if (quote === "`" && templateExpressionDepth > 0) {
2108
+ if (char === "\"" || char === "'") {
2109
+ const nestedQuote = char;
2110
+ index++;
2111
+ while (index < start) {
2112
+ const nestedChar = content[index];
2113
+ if (nestedChar === "\\") {
2114
+ index += 2;
2115
+ continue;
2116
+ }
2117
+ if (nestedChar === nestedQuote) break;
2118
+ index++;
2119
+ }
2120
+ continue;
2121
+ }
2122
+ if (char === "`") {
2123
+ index++;
2124
+ while (index < start) {
2125
+ const nestedChar = content[index];
2126
+ if (nestedChar === "\\") {
2127
+ index += 2;
2128
+ continue;
2129
+ }
2130
+ if (nestedChar === "`") break;
2131
+ index++;
2132
+ }
2133
+ continue;
2134
+ }
2135
+ if (char === "{") {
2136
+ templateExpressionDepth++;
2137
+ continue;
2138
+ }
2139
+ if (char === "}") {
2140
+ templateExpressionDepth--;
2141
+ continue;
2142
+ }
2143
+ continue;
2144
+ }
2145
+ if (quote) {
2146
+ if (quote === "`" && char === "$" && next === "{") {
2147
+ templateExpressionDepth = 1;
2148
+ index++;
2149
+ continue;
2150
+ }
2151
+ if (char === quote) quote = void 0;
2152
+ continue;
2153
+ }
2154
+ if (char === "\"" || char === "'" || char === "`") quote = char;
2155
+ }
2156
+ return quote !== void 0 && templateExpressionDepth === 0;
2157
+ }
2158
+ function shouldKeepSourceCandidate(content, extension, candidate) {
2159
+ if (!candidate.rawCandidate || isCssDirectiveCandidate(candidate.rawCandidate)) return false;
2160
+ if (CSS_LIKE_SOURCE_EXTENSION_RE.test(extension) && !isCandidateInCssApplyParams(content, candidate)) return false;
2161
+ if (isHtmlAttributeNameCandidate(content, candidate)) return false;
2162
+ if (isInsideHtmlTagText(content, candidate)) return false;
2163
+ if (JS_LIKE_SOURCE_EXTENSION_RE.test(extension) && !isCandidateInsideJsStringStaticContent(content, candidate.start)) return false;
2164
+ return true;
2165
+ }
2166
+ function createLocalCandidate(candidate) {
2167
+ return {
2168
+ rawCandidate: candidate.rawCandidate,
2169
+ start: candidate.localStart,
2170
+ end: candidate.localStart + candidate.rawCandidate.length
2171
+ };
2172
+ }
2173
+ async function extractMixedSourceScriptCandidates(content) {
2174
+ const candidates = [];
2175
+ SFC_SCRIPT_BLOCK_RE.lastIndex = 0;
2176
+ let match = SFC_SCRIPT_BLOCK_RE.exec(content);
2177
+ while (match !== null) {
2178
+ const scriptContent = match[1] ?? "";
2179
+ const scriptStart = match.index + match[0].indexOf(scriptContent);
2180
+ const scriptCandidates = await extractRawCandidatesWithPositions(scriptContent, "js");
2181
+ candidates.push(...scriptCandidates.map((candidate) => ({
2182
+ content: scriptContent,
2183
+ extension: "js",
2184
+ localStart: candidate.start,
2185
+ rawCandidate: candidate.rawCandidate,
2186
+ start: candidate.start + scriptStart,
2187
+ end: candidate.end + scriptStart
2188
+ })));
2189
+ match = SFC_SCRIPT_BLOCK_RE.exec(content);
2190
+ }
2191
+ return candidates;
2192
+ }
2067
2193
  function createCandidateCacheKey(designSystemKey, options) {
2068
2194
  if (options.bareArbitraryValues == null || options.bareArbitraryValues === false) return designSystemKey;
2069
2195
  return `${designSystemKey}:bare-arbitrary:${JSON.stringify(options.bareArbitraryValues)}`;
@@ -2079,6 +2205,32 @@ async function extractRawCandidatesWithPositions(content, extension = "html") {
2079
2205
  end: position + candidate.length
2080
2206
  }));
2081
2207
  }
2208
+ async function extractSourceCandidatesWithPositions(content, extension = "html") {
2209
+ const normalizedExtension = extension.replace(/^\./, "");
2210
+ const candidates = (await extractRawCandidatesWithPositions(content, normalizedExtension)).map((candidate) => ({
2211
+ ...candidate,
2212
+ content,
2213
+ extension: normalizedExtension,
2214
+ localStart: candidate.start
2215
+ }));
2216
+ if (MIXED_TEMPLATE_SOURCE_EXTENSION_RE.test(normalizedExtension)) candidates.push(...await extractMixedSourceScriptCandidates(content));
2217
+ const seen = /* @__PURE__ */ new Set();
2218
+ return candidates.filter((candidate) => {
2219
+ if (!shouldKeepSourceCandidate(candidate.content, candidate.extension, createLocalCandidate(candidate))) return false;
2220
+ const key = `${candidate.start}:${candidate.end}:${candidate.rawCandidate}`;
2221
+ if (seen.has(key)) return false;
2222
+ seen.add(key);
2223
+ return true;
2224
+ }).map(({ rawCandidate, start, end }) => ({
2225
+ rawCandidate,
2226
+ start,
2227
+ end
2228
+ }));
2229
+ }
2230
+ async function extractSourceCandidates(content, extension = "html") {
2231
+ const candidates = await extractSourceCandidatesWithPositions(content, extension);
2232
+ return [...new Set(candidates.map((candidate) => candidate.rawCandidate))];
2233
+ }
2082
2234
  async function extractRawCandidates(sources) {
2083
2235
  const { Scanner } = await getOxideModule();
2084
2236
  return new Scanner(sources === void 0 ? {} : { sources }).scan();
@@ -3934,4 +4086,4 @@ var ValidateCommandError = class extends Error {
3934
4086
  }
3935
4087
  };
3936
4088
  //#endregion
3937
- export { CacheStore as A, canonicalizeBareArbitraryValueCandidates as C, loadPatchOptionsForWorkspace as D, resolveValidTailwindV4Candidates as E, loadWorkspaceConfigModule as O, loadTailwindV4DesignSystem as S, replaceBareArbitraryValueSelectors as T, extractRawCandidates as _, tailwindcssPatchCommands as a, groupTokensByFile as b, MIGRATION_REPORT_KIND as c, getPatchStatusReport as d, runTailwindBuild as f, extractProjectCandidatesWithPositions as g, collectClassesFromTailwindV4 as h, classifyValidateError as i, logger as j, normalizeOptions as k, MIGRATION_REPORT_SCHEMA_VERSION as l, collectClassesFromContexts as m, VALIDATE_FAILURE_REASONS as n, migrateConfigFiles as o, loadRuntimeContexts as p, ValidateCommandError as r, restoreConfigFiles as s, VALIDATE_EXIT_CODES as t, TailwindcssPatcher as u, extractRawCandidatesWithPositions as v, extractTailwindV4InlineSourceCandidates as w, compileTailwindV4Source as x, extractValidCandidates as y };
4089
+ export { loadWorkspaceConfigModule as A, compileTailwindV4Source as C, replaceBareArbitraryValueSelectors as D, extractTailwindV4InlineSourceCandidates as E, CacheStore as M, logger as N, resolveValidTailwindV4Candidates as O, groupTokensByFile as S, canonicalizeBareArbitraryValueCandidates as T, extractRawCandidates as _, tailwindcssPatchCommands as a, extractSourceCandidatesWithPositions as b, MIGRATION_REPORT_KIND as c, getPatchStatusReport as d, runTailwindBuild as f, extractProjectCandidatesWithPositions as g, collectClassesFromTailwindV4 as h, classifyValidateError as i, normalizeOptions as j, loadPatchOptionsForWorkspace as k, MIGRATION_REPORT_SCHEMA_VERSION as l, collectClassesFromContexts as m, VALIDATE_FAILURE_REASONS as n, migrateConfigFiles as o, loadRuntimeContexts as p, ValidateCommandError as r, restoreConfigFiles as s, VALIDATE_EXIT_CODES as t, TailwindcssPatcher as u, extractRawCandidatesWithPositions as v, loadTailwindV4DesignSystem as w, extractValidCandidates as x, extractSourceCandidates as y };
@@ -23,7 +23,7 @@ _babel_traverse = require_chunk.__toESM(_babel_traverse);
23
23
  let _babel_parser = require("@babel/parser");
24
24
  let tailwindcss_config = require("tailwindcss-config");
25
25
  //#region package.json
26
- var version = "9.3.3";
26
+ var version = "9.3.4";
27
27
  //#endregion
28
28
  //#region src/constants.ts
29
29
  const pkgName = "tailwindcss-patch";
@@ -2066,6 +2066,132 @@ function getOxideModule() {
2066
2066
  });
2067
2067
  return oxideImportPromise;
2068
2068
  }
2069
+ const HTML_ATTRIBUTE_NAME_CANDIDATE_RE = /^(?:class|className|hover-class|hoverClass)$/;
2070
+ const CSS_DIRECTIVE_CANDIDATE_RE = /^@(?:apply|tailwind|source|config|plugin|theme|utility|custom-variant|variant)$/;
2071
+ const CSS_APPLY_IMPORTANT = "!important";
2072
+ const JS_LIKE_SOURCE_EXTENSION_RE = /^(?:[cm]?[jt]sx?)$/;
2073
+ const MIXED_TEMPLATE_SOURCE_EXTENSION_RE = /^(?:vue|uvue|nvue|svelte|mpx)$/;
2074
+ const CSS_LIKE_SOURCE_EXTENSION_RE = /^(?:css|wxss|acss|jxss|ttss|qss|tyss|scss|sass|less|styl|stylus)$/;
2075
+ const SFC_SCRIPT_BLOCK_RE = /<script\b[^>]*>([\s\S]*?)<\/script>/gi;
2076
+ function isWhitespace(value) {
2077
+ return value === " " || value === "\n" || value === "\r" || value === " " || value === "\f";
2078
+ }
2079
+ function isHtmlAttributeNameCandidate(content, candidate) {
2080
+ if (!HTML_ATTRIBUTE_NAME_CANDIDATE_RE.test(candidate.rawCandidate)) return false;
2081
+ let index = candidate.end;
2082
+ while (isWhitespace(content[index])) index++;
2083
+ return content[index] === "=";
2084
+ }
2085
+ function isInsideHtmlTagText(content, candidate) {
2086
+ if (content.lastIndexOf("<", candidate.start) > content.lastIndexOf(">", candidate.start)) return false;
2087
+ const nextOpen = content.indexOf("<", candidate.end);
2088
+ return nextOpen !== -1 && (nextOpen < content.indexOf(">", candidate.end) || content.indexOf(">", candidate.end) === -1);
2089
+ }
2090
+ function isCssDirectiveCandidate(candidate) {
2091
+ return candidate === CSS_APPLY_IMPORTANT || CSS_DIRECTIVE_CANDIDATE_RE.test(candidate);
2092
+ }
2093
+ function isCandidateInCssApplyParams(content, candidate) {
2094
+ const apply = content.lastIndexOf("@apply", candidate.start);
2095
+ if (apply === -1) return false;
2096
+ const boundary = content.slice(apply + 6, candidate.start);
2097
+ return !/[;{}]/.test(boundary);
2098
+ }
2099
+ function isCandidateInsideJsStringStaticContent(content, start) {
2100
+ let quote;
2101
+ let templateExpressionDepth = 0;
2102
+ for (let index = 0; index < start; index++) {
2103
+ const char = content[index];
2104
+ const next = content[index + 1];
2105
+ if (quote && char === "\\") {
2106
+ index++;
2107
+ continue;
2108
+ }
2109
+ if (quote === "`" && templateExpressionDepth > 0) {
2110
+ if (char === "\"" || char === "'") {
2111
+ const nestedQuote = char;
2112
+ index++;
2113
+ while (index < start) {
2114
+ const nestedChar = content[index];
2115
+ if (nestedChar === "\\") {
2116
+ index += 2;
2117
+ continue;
2118
+ }
2119
+ if (nestedChar === nestedQuote) break;
2120
+ index++;
2121
+ }
2122
+ continue;
2123
+ }
2124
+ if (char === "`") {
2125
+ index++;
2126
+ while (index < start) {
2127
+ const nestedChar = content[index];
2128
+ if (nestedChar === "\\") {
2129
+ index += 2;
2130
+ continue;
2131
+ }
2132
+ if (nestedChar === "`") break;
2133
+ index++;
2134
+ }
2135
+ continue;
2136
+ }
2137
+ if (char === "{") {
2138
+ templateExpressionDepth++;
2139
+ continue;
2140
+ }
2141
+ if (char === "}") {
2142
+ templateExpressionDepth--;
2143
+ continue;
2144
+ }
2145
+ continue;
2146
+ }
2147
+ if (quote) {
2148
+ if (quote === "`" && char === "$" && next === "{") {
2149
+ templateExpressionDepth = 1;
2150
+ index++;
2151
+ continue;
2152
+ }
2153
+ if (char === quote) quote = void 0;
2154
+ continue;
2155
+ }
2156
+ if (char === "\"" || char === "'" || char === "`") quote = char;
2157
+ }
2158
+ return quote !== void 0 && templateExpressionDepth === 0;
2159
+ }
2160
+ function shouldKeepSourceCandidate(content, extension, candidate) {
2161
+ if (!candidate.rawCandidate || isCssDirectiveCandidate(candidate.rawCandidate)) return false;
2162
+ if (CSS_LIKE_SOURCE_EXTENSION_RE.test(extension) && !isCandidateInCssApplyParams(content, candidate)) return false;
2163
+ if (isHtmlAttributeNameCandidate(content, candidate)) return false;
2164
+ if (isInsideHtmlTagText(content, candidate)) return false;
2165
+ if (JS_LIKE_SOURCE_EXTENSION_RE.test(extension) && !isCandidateInsideJsStringStaticContent(content, candidate.start)) return false;
2166
+ return true;
2167
+ }
2168
+ function createLocalCandidate(candidate) {
2169
+ return {
2170
+ rawCandidate: candidate.rawCandidate,
2171
+ start: candidate.localStart,
2172
+ end: candidate.localStart + candidate.rawCandidate.length
2173
+ };
2174
+ }
2175
+ async function extractMixedSourceScriptCandidates(content) {
2176
+ const candidates = [];
2177
+ SFC_SCRIPT_BLOCK_RE.lastIndex = 0;
2178
+ let match = SFC_SCRIPT_BLOCK_RE.exec(content);
2179
+ while (match !== null) {
2180
+ const scriptContent = match[1] ?? "";
2181
+ const scriptStart = match.index + match[0].indexOf(scriptContent);
2182
+ const scriptCandidates = await extractRawCandidatesWithPositions(scriptContent, "js");
2183
+ candidates.push(...scriptCandidates.map((candidate) => ({
2184
+ content: scriptContent,
2185
+ extension: "js",
2186
+ localStart: candidate.start,
2187
+ rawCandidate: candidate.rawCandidate,
2188
+ start: candidate.start + scriptStart,
2189
+ end: candidate.end + scriptStart
2190
+ })));
2191
+ match = SFC_SCRIPT_BLOCK_RE.exec(content);
2192
+ }
2193
+ return candidates;
2194
+ }
2069
2195
  function createCandidateCacheKey(designSystemKey, options) {
2070
2196
  if (options.bareArbitraryValues == null || options.bareArbitraryValues === false) return designSystemKey;
2071
2197
  return `${designSystemKey}:bare-arbitrary:${JSON.stringify(options.bareArbitraryValues)}`;
@@ -2081,6 +2207,32 @@ async function extractRawCandidatesWithPositions(content, extension = "html") {
2081
2207
  end: position + candidate.length
2082
2208
  }));
2083
2209
  }
2210
+ async function extractSourceCandidatesWithPositions(content, extension = "html") {
2211
+ const normalizedExtension = extension.replace(/^\./, "");
2212
+ const candidates = (await extractRawCandidatesWithPositions(content, normalizedExtension)).map((candidate) => ({
2213
+ ...candidate,
2214
+ content,
2215
+ extension: normalizedExtension,
2216
+ localStart: candidate.start
2217
+ }));
2218
+ if (MIXED_TEMPLATE_SOURCE_EXTENSION_RE.test(normalizedExtension)) candidates.push(...await extractMixedSourceScriptCandidates(content));
2219
+ const seen = /* @__PURE__ */ new Set();
2220
+ return candidates.filter((candidate) => {
2221
+ if (!shouldKeepSourceCandidate(candidate.content, candidate.extension, createLocalCandidate(candidate))) return false;
2222
+ const key = `${candidate.start}:${candidate.end}:${candidate.rawCandidate}`;
2223
+ if (seen.has(key)) return false;
2224
+ seen.add(key);
2225
+ return true;
2226
+ }).map(({ rawCandidate, start, end }) => ({
2227
+ rawCandidate,
2228
+ start,
2229
+ end
2230
+ }));
2231
+ }
2232
+ async function extractSourceCandidates(content, extension = "html") {
2233
+ const candidates = await extractSourceCandidatesWithPositions(content, extension);
2234
+ return [...new Set(candidates.map((candidate) => candidate.rawCandidate))];
2235
+ }
2084
2236
  async function extractRawCandidates(sources) {
2085
2237
  const { Scanner } = await getOxideModule();
2086
2238
  return new Scanner(sources === void 0 ? {} : { sources }).scan();
@@ -4026,6 +4178,18 @@ Object.defineProperty(exports, "extractRawCandidatesWithPositions", {
4026
4178
  return extractRawCandidatesWithPositions;
4027
4179
  }
4028
4180
  });
4181
+ Object.defineProperty(exports, "extractSourceCandidates", {
4182
+ enumerable: true,
4183
+ get: function() {
4184
+ return extractSourceCandidates;
4185
+ }
4186
+ });
4187
+ Object.defineProperty(exports, "extractSourceCandidatesWithPositions", {
4188
+ enumerable: true,
4189
+ get: function() {
4190
+ return extractSourceCandidatesWithPositions;
4191
+ }
4192
+ });
4029
4193
  Object.defineProperty(exports, "extractTailwindV4InlineSourceCandidates", {
4030
4194
  enumerable: true,
4031
4195
  get: function() {
@@ -513,11 +513,14 @@ interface ExtractValidCandidatesOption {
513
513
  cwd?: string;
514
514
  bareArbitraryValues?: boolean | BareArbitraryValueOptions;
515
515
  }
516
- declare function extractRawCandidatesWithPositions(content: string, extension?: string): Promise<{
516
+ interface ExtractSourceCandidate {
517
517
  rawCandidate: string;
518
518
  start: number;
519
519
  end: number;
520
- }[]>;
520
+ }
521
+ declare function extractRawCandidatesWithPositions(content: string, extension?: string): Promise<ExtractSourceCandidate[]>;
522
+ declare function extractSourceCandidatesWithPositions(content: string, extension?: string): Promise<ExtractSourceCandidate[]>;
523
+ declare function extractSourceCandidates(content: string, extension?: string): Promise<string[]>;
521
524
  declare function extractRawCandidates(sources?: SourceEntry[]): Promise<string[]>;
522
525
  declare function extractValidCandidates(options?: ExtractValidCandidatesOption): Promise<string[]>;
523
526
  interface ExtractProjectCandidatesOptions {
@@ -774,4 +777,4 @@ declare class ValidateCommandError extends Error {
774
777
  constructor(summary: ValidateFailureSummary, options?: ErrorOptions);
775
778
  }
776
779
  //#endregion
777
- export { TailwindV4SourceOptions as $, groupTokensByFile as A, NormalizedTailwindCssPatchOptions as B, MIGRATION_REPORT_SCHEMA_VERSION as C, extractRawCandidates as D, extractProjectCandidatesWithPositions as E, CacheStrategy as F, TailwindV4Options as G, TailwindCssPatchOptions as H, ExposeContextOptions as I, TailwindV4DesignSystem as J, TailwindV4CandidateSource as K, ExtendLengthUnitsOptions as L, normalizeOptions as M, ApplyOptions as N, extractRawCandidatesWithPositions as O, CacheOptions as P, TailwindV4ResolvedSource as Q, ExtractOptions as R, MIGRATION_REPORT_KIND as S, TailwindcssPatcher as T, TailwindV2Options as U, TailwindCssOptions as V, TailwindV3Options as W, TailwindV4GenerateOptions as X, TailwindV4Engine as Y, TailwindV4GenerateResult as Z, ConfigFileMigrationEntry as _, CacheContextMetadata as _t, ValidateFailureSummary as a, PatchStatusReport as at, RestoreConfigFilesOptions as b, CacheReadResult as bt, TailwindcssPatchCliMountOptions as c, TailwindTokenFileKey as ct, TailwindcssPatchCommandContext as d, TailwindcssClassCache as dt, ExtractResult as et, TailwindcssPatchCommandHandler as f, TailwindcssRuntimeContext as ft, tailwindcssPatchCommands as g, CacheContextDescriptor as gt, TailwindcssPatchCommandOptions as h, CacheClearScope as ht, ValidateFailureReason as i, PatchStatusEntry as it, BareArbitraryValueOptions as j, extractValidCandidates as k, TailwindcssPatchCliOptions as l, TailwindTokenLocation as lt, TailwindcssPatchCommandOptionDefinition as m, CacheClearResult as mt, VALIDATE_FAILURE_REASONS as n, PatchCheckStatus as nt, ValidateJsonFailurePayload as o, TailwindPatchRuntime as ot, TailwindcssPatchCommandHandlerMap as p, CacheClearOptions as pt, TailwindV4CssSource as q, ValidateCommandError as r, PatchName as rt, ValidateJsonSuccessPayload as s, TailwindTokenByFileMap as st, VALIDATE_EXIT_CODES as t, ILengthUnitsPatchOptions as tt, TailwindcssPatchCommand as u, TailwindTokenReport as ut, ConfigFileMigrationReport as v, CacheIndexFileV2 as vt, logger as w, RestoreConfigFilesResult as x, MigrateConfigFilesOptions as y, CacheReadMeta as yt, NormalizedCacheOptions as z };
780
+ export { TailwindV4GenerateResult as $, extractSourceCandidatesWithPositions as A, ExtractOptions as B, MIGRATION_REPORT_SCHEMA_VERSION as C, extractRawCandidates as D, extractProjectCandidatesWithPositions as E, ApplyOptions as F, TailwindV2Options as G, NormalizedTailwindCssPatchOptions as H, CacheOptions as I, TailwindV4CandidateSource as J, TailwindV3Options as K, CacheStrategy as L, groupTokensByFile as M, BareArbitraryValueOptions as N, extractRawCandidatesWithPositions as O, normalizeOptions as P, TailwindV4GenerateOptions as Q, ExposeContextOptions as R, MIGRATION_REPORT_KIND as S, CacheReadResult as St, TailwindcssPatcher as T, TailwindCssOptions as U, NormalizedCacheOptions as V, TailwindCssPatchOptions as W, TailwindV4DesignSystem as X, TailwindV4CssSource as Y, TailwindV4Engine as Z, ConfigFileMigrationEntry as _, CacheClearScope as _t, ValidateFailureSummary as a, PatchName as at, RestoreConfigFilesOptions as b, CacheIndexFileV2 as bt, TailwindcssPatchCliMountOptions as c, TailwindPatchRuntime as ct, TailwindcssPatchCommandContext as d, TailwindTokenLocation as dt, TailwindV4ResolvedSource as et, TailwindcssPatchCommandHandler as f, TailwindTokenReport as ft, tailwindcssPatchCommands as g, CacheClearResult as gt, TailwindcssPatchCommandOptions as h, CacheClearOptions as ht, ValidateFailureReason as i, PatchCheckStatus as it, extractValidCandidates as j, extractSourceCandidates as k, TailwindcssPatchCliOptions as l, TailwindTokenByFileMap as lt, TailwindcssPatchCommandOptionDefinition as m, TailwindcssRuntimeContext as mt, VALIDATE_FAILURE_REASONS as n, ExtractResult as nt, ValidateJsonFailurePayload as o, PatchStatusEntry as ot, TailwindcssPatchCommandHandlerMap as p, TailwindcssClassCache as pt, TailwindV4Options as q, ValidateCommandError as r, ILengthUnitsPatchOptions as rt, ValidateJsonSuccessPayload as s, PatchStatusReport as st, VALIDATE_EXIT_CODES as t, TailwindV4SourceOptions as tt, TailwindcssPatchCommand as u, TailwindTokenFileKey as ut, ConfigFileMigrationReport as v, CacheContextDescriptor as vt, logger as w, RestoreConfigFilesResult as x, CacheReadMeta as xt, MigrateConfigFilesOptions as y, CacheContextMetadata as yt, ExtendLengthUnitsOptions as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwindcss-patch",
3
- "version": "9.3.3",
3
+ "version": "9.3.4",
4
4
  "description": "patch tailwindcss for exposing context and extract classes",
5
5
  "author": "ice breaker <1324318532@qq.com>",
6
6
  "license": "MIT",
@@ -55,6 +55,190 @@ export interface ExtractValidCandidatesOption {
55
55
  bareArbitraryValues?: boolean | BareArbitraryValueOptions
56
56
  }
57
57
 
58
+ export interface ExtractSourceCandidate {
59
+ rawCandidate: string
60
+ start: number
61
+ end: number
62
+ }
63
+
64
+ interface ExtractSourceCandidateWithContext extends ExtractSourceCandidate {
65
+ content: string
66
+ extension: string
67
+ localStart: number
68
+ }
69
+
70
+ const HTML_ATTRIBUTE_NAME_CANDIDATE_RE = /^(?:class|className|hover-class|hoverClass)$/
71
+ const CSS_DIRECTIVE_CANDIDATE_RE = /^@(?:apply|tailwind|source|config|plugin|theme|utility|custom-variant|variant)$/
72
+ const CSS_APPLY_IMPORTANT = '!important'
73
+ const JS_LIKE_SOURCE_EXTENSION_RE = /^(?:[cm]?[jt]sx?)$/
74
+ const MIXED_TEMPLATE_SOURCE_EXTENSION_RE = /^(?:vue|uvue|nvue|svelte|mpx)$/
75
+ const CSS_LIKE_SOURCE_EXTENSION_RE = /^(?:css|wxss|acss|jxss|ttss|qss|tyss|scss|sass|less|styl|stylus)$/
76
+ const SFC_SCRIPT_BLOCK_RE = /<script\b[^>]*>([\s\S]*?)<\/script>/gi
77
+
78
+ function isWhitespace(value: string | undefined) {
79
+ return value === ' ' || value === '\n' || value === '\r' || value === '\t' || value === '\f'
80
+ }
81
+
82
+ function isHtmlAttributeNameCandidate(content: string, candidate: ExtractSourceCandidate) {
83
+ if (!HTML_ATTRIBUTE_NAME_CANDIDATE_RE.test(candidate.rawCandidate)) {
84
+ return false
85
+ }
86
+ let index = candidate.end
87
+ while (isWhitespace(content[index])) {
88
+ index++
89
+ }
90
+ return content[index] === '='
91
+ }
92
+
93
+ function isInsideHtmlTagText(content: string, candidate: ExtractSourceCandidate) {
94
+ const open = content.lastIndexOf('<', candidate.start)
95
+ const close = content.lastIndexOf('>', candidate.start)
96
+ if (open > close) {
97
+ return false
98
+ }
99
+ const nextOpen = content.indexOf('<', candidate.end)
100
+ return nextOpen !== -1 && (nextOpen < content.indexOf('>', candidate.end) || content.indexOf('>', candidate.end) === -1)
101
+ }
102
+
103
+ function isCssDirectiveCandidate(candidate: string) {
104
+ return candidate === CSS_APPLY_IMPORTANT || CSS_DIRECTIVE_CANDIDATE_RE.test(candidate)
105
+ }
106
+
107
+ function isCandidateInCssApplyParams(content: string, candidate: ExtractSourceCandidate) {
108
+ const apply = content.lastIndexOf('@apply', candidate.start)
109
+ if (apply === -1) {
110
+ return false
111
+ }
112
+ const boundary = content.slice(apply + '@apply'.length, candidate.start)
113
+ return !/[;{}]/.test(boundary)
114
+ }
115
+
116
+ function isCandidateInsideJsStringStaticContent(content: string, start: number) {
117
+ let quote: '"' | '\'' | '`' | undefined
118
+ let templateExpressionDepth = 0
119
+ for (let index = 0; index < start; index++) {
120
+ const char = content[index]
121
+ const next = content[index + 1]
122
+
123
+ if (quote && char === '\\') {
124
+ index++
125
+ continue
126
+ }
127
+
128
+ if (quote === '`' && templateExpressionDepth > 0) {
129
+ if (char === '"' || char === '\'') {
130
+ const nestedQuote = char
131
+ index++
132
+ while (index < start) {
133
+ const nestedChar = content[index]
134
+ if (nestedChar === '\\') {
135
+ index += 2
136
+ continue
137
+ }
138
+ if (nestedChar === nestedQuote) {
139
+ break
140
+ }
141
+ index++
142
+ }
143
+ continue
144
+ }
145
+ if (char === '`') {
146
+ index++
147
+ while (index < start) {
148
+ const nestedChar = content[index]
149
+ if (nestedChar === '\\') {
150
+ index += 2
151
+ continue
152
+ }
153
+ if (nestedChar === '`') {
154
+ break
155
+ }
156
+ index++
157
+ }
158
+ continue
159
+ }
160
+ if (char === '{') {
161
+ templateExpressionDepth++
162
+ continue
163
+ }
164
+ if (char === '}') {
165
+ templateExpressionDepth--
166
+ continue
167
+ }
168
+ continue
169
+ }
170
+
171
+ if (quote) {
172
+ if (quote === '`' && char === '$' && next === '{') {
173
+ templateExpressionDepth = 1
174
+ index++
175
+ continue
176
+ }
177
+ if (char === quote) {
178
+ quote = undefined
179
+ }
180
+ continue
181
+ }
182
+
183
+ if (char === '"' || char === '\'' || char === '`') {
184
+ quote = char
185
+ }
186
+ }
187
+
188
+ return quote !== undefined && templateExpressionDepth === 0
189
+ }
190
+
191
+ function shouldKeepSourceCandidate(content: string, extension: string, candidate: ExtractSourceCandidate) {
192
+ if (!candidate.rawCandidate || isCssDirectiveCandidate(candidate.rawCandidate)) {
193
+ return false
194
+ }
195
+ if (CSS_LIKE_SOURCE_EXTENSION_RE.test(extension) && !isCandidateInCssApplyParams(content, candidate)) {
196
+ return false
197
+ }
198
+ if (isHtmlAttributeNameCandidate(content, candidate)) {
199
+ return false
200
+ }
201
+ if (isInsideHtmlTagText(content, candidate)) {
202
+ return false
203
+ }
204
+ if (
205
+ JS_LIKE_SOURCE_EXTENSION_RE.test(extension)
206
+ && !isCandidateInsideJsStringStaticContent(content, candidate.start)
207
+ ) {
208
+ return false
209
+ }
210
+ return true
211
+ }
212
+
213
+ function createLocalCandidate(candidate: ExtractSourceCandidateWithContext): ExtractSourceCandidate {
214
+ return {
215
+ rawCandidate: candidate.rawCandidate,
216
+ start: candidate.localStart,
217
+ end: candidate.localStart + candidate.rawCandidate.length,
218
+ }
219
+ }
220
+
221
+ async function extractMixedSourceScriptCandidates(content: string) {
222
+ const candidates: ExtractSourceCandidateWithContext[] = []
223
+ SFC_SCRIPT_BLOCK_RE.lastIndex = 0
224
+ let match = SFC_SCRIPT_BLOCK_RE.exec(content)
225
+ while (match !== null) {
226
+ const scriptContent = match[1] ?? ''
227
+ const scriptStart = match.index + match[0].indexOf(scriptContent)
228
+ const scriptCandidates = await extractRawCandidatesWithPositions(scriptContent, 'js')
229
+ candidates.push(...scriptCandidates.map(candidate => ({
230
+ content: scriptContent,
231
+ extension: 'js',
232
+ localStart: candidate.start,
233
+ rawCandidate: candidate.rawCandidate,
234
+ start: candidate.start + scriptStart,
235
+ end: candidate.end + scriptStart,
236
+ })))
237
+ match = SFC_SCRIPT_BLOCK_RE.exec(content)
238
+ }
239
+ return candidates
240
+ }
241
+
58
242
  function createCandidateCacheKey(
59
243
  designSystemKey: string,
60
244
  options: Pick<ExtractValidCandidatesOption, 'bareArbitraryValues'>,
@@ -68,7 +252,7 @@ function createCandidateCacheKey(
68
252
  export async function extractRawCandidatesWithPositions(
69
253
  content: string,
70
254
  extension: string = 'html',
71
- ): Promise<{ rawCandidate: string, start: number, end: number }[]> {
255
+ ): Promise<ExtractSourceCandidate[]> {
72
256
  const { Scanner } = await getOxideModule()
73
257
  const scanner = new Scanner({})
74
258
  const result = scanner.getCandidatesWithPositions({ content, extension })
@@ -80,6 +264,43 @@ export async function extractRawCandidatesWithPositions(
80
264
  }))
81
265
  }
82
266
 
267
+ export async function extractSourceCandidatesWithPositions(
268
+ content: string,
269
+ extension: string = 'html',
270
+ ): Promise<ExtractSourceCandidate[]> {
271
+ const normalizedExtension = extension.replace(/^\./, '')
272
+ const candidates: ExtractSourceCandidateWithContext[] = (await extractRawCandidatesWithPositions(content, normalizedExtension))
273
+ .map(candidate => ({
274
+ ...candidate,
275
+ content,
276
+ extension: normalizedExtension,
277
+ localStart: candidate.start,
278
+ }))
279
+ if (MIXED_TEMPLATE_SOURCE_EXTENSION_RE.test(normalizedExtension)) {
280
+ candidates.push(...await extractMixedSourceScriptCandidates(content))
281
+ }
282
+ const seen = new Set<string>()
283
+ return candidates.filter((candidate) => {
284
+ if (!shouldKeepSourceCandidate(candidate.content, candidate.extension, createLocalCandidate(candidate))) {
285
+ return false
286
+ }
287
+ const key = `${candidate.start}:${candidate.end}:${candidate.rawCandidate}`
288
+ if (seen.has(key)) {
289
+ return false
290
+ }
291
+ seen.add(key)
292
+ return true
293
+ }).map(({ rawCandidate, start, end }) => ({ rawCandidate, start, end }))
294
+ }
295
+
296
+ export async function extractSourceCandidates(
297
+ content: string,
298
+ extension: string = 'html',
299
+ ): Promise<string[]> {
300
+ const candidates = await extractSourceCandidatesWithPositions(content, extension)
301
+ return [...new Set(candidates.map(candidate => candidate.rawCandidate))]
302
+ }
303
+
83
304
  export async function extractRawCandidates(
84
305
  sources?: SourceEntry[],
85
306
  ): Promise<string[]> {
@@ -22,6 +22,8 @@ import {
22
22
  extractProjectCandidatesWithPositions,
23
23
  extractRawCandidates,
24
24
  extractRawCandidatesWithPositions,
25
+ extractSourceCandidates,
26
+ extractSourceCandidatesWithPositions,
25
27
  extractValidCandidates,
26
28
  groupTokensByFile,
27
29
  } from './extraction/candidate-extractor'
@@ -57,6 +59,8 @@ export {
57
59
  extractProjectCandidatesWithPositions,
58
60
  extractRawCandidates,
59
61
  extractRawCandidatesWithPositions,
62
+ extractSourceCandidates,
63
+ extractSourceCandidatesWithPositions,
60
64
  extractValidCandidates,
61
65
  getPatchStatusReport,
62
66
  groupTokensByFile,
package/src/index.ts CHANGED
@@ -39,8 +39,11 @@ export {
39
39
  extractProjectCandidatesWithPositions,
40
40
  extractRawCandidates,
41
41
  extractRawCandidatesWithPositions,
42
+ extractSourceCandidates,
43
+ extractSourceCandidatesWithPositions,
42
44
  extractValidCandidates,
43
45
  groupTokensByFile,
46
+ type ExtractSourceCandidate,
44
47
  } from './extraction/candidate-extractor'
45
48
  export {
46
49
  collectClassesFromContexts,