safeword 0.59.0 → 0.60.0
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/{check-QZPVKHZF.js → check-PO4TEYZQ.js} +4 -4
- package/dist/{chunk-PHR2K2Y3.js → chunk-CXGL65PS.js} +6 -1
- package/dist/chunk-CXGL65PS.js.map +1 -0
- package/dist/{chunk-WUJKWUMR.js → chunk-K7QZ6W2K.js} +2 -2
- package/dist/{chunk-N7PFYE7Z.js → chunk-MV7VNFO6.js} +2 -2
- package/dist/{chunk-JSTWB4AX.js → chunk-UIRPUAPO.js} +3 -2
- package/dist/chunk-UIRPUAPO.js.map +1 -0
- package/dist/{chunk-MT4WBU2P.js → chunk-YYBLVWZZ.js} +45 -8
- package/dist/chunk-YYBLVWZZ.js.map +1 -0
- package/dist/cli.js +5 -5
- package/dist/{diff-TFNDFYCX.js → diff-43VUWWRJ.js} +3 -3
- package/dist/index.js +2 -2
- package/dist/presets/typescript/index.d.ts +49 -1
- package/dist/presets/typescript/index.js +4 -2
- package/dist/{reset-W5GEXNGF.js → reset-C423HHTK.js} +3 -3
- package/dist/{setup-4KLD7PGB.js → setup-YAIS4ZQA.js} +5 -5
- package/dist/{upgrade-ZWRVFHXV.js → upgrade-WMWT2WXK.js} +5 -5
- package/package.json +1 -1
- package/dist/chunk-JSTWB4AX.js.map +0 -1
- package/dist/chunk-MT4WBU2P.js.map +0 -1
- package/dist/chunk-PHR2K2Y3.js.map +0 -1
- /package/dist/{check-QZPVKHZF.js.map → check-PO4TEYZQ.js.map} +0 -0
- /package/dist/{chunk-WUJKWUMR.js.map → chunk-K7QZ6W2K.js.map} +0 -0
- /package/dist/{chunk-N7PFYE7Z.js.map → chunk-MV7VNFO6.js.map} +0 -0
- /package/dist/{diff-TFNDFYCX.js.map → diff-43VUWWRJ.js.map} +0 -0
- /package/dist/{reset-W5GEXNGF.js.map → reset-C423HHTK.js.map} +0 -0
- /package/dist/{setup-4KLD7PGB.js.map → setup-YAIS4ZQA.js.map} +0 -0
- /package/dist/{upgrade-ZWRVFHXV.js.map → upgrade-WMWT2WXK.js.map} +0 -0
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
checkHealth,
|
|
10
10
|
reportHealthSummary
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MV7VNFO6.js";
|
|
12
12
|
import "./chunk-HWOJR33A.js";
|
|
13
13
|
import "./chunk-XTLCJKGE.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-UIRPUAPO.js";
|
|
15
15
|
import {
|
|
16
16
|
detectPackageManager
|
|
17
17
|
} from "./chunk-GS3TBFXU.js";
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-D4UGNHLW.js";
|
|
21
21
|
import "./chunk-NHXVS5FL.js";
|
|
22
22
|
import "./chunk-HI7ANNQI.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-CXGL65PS.js";
|
|
24
24
|
import "./chunk-HSC7TELY.js";
|
|
25
25
|
import {
|
|
26
26
|
header,
|
|
@@ -125,4 +125,4 @@ async function check(options) {
|
|
|
125
125
|
export {
|
|
126
126
|
check
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=check-
|
|
128
|
+
//# sourceMappingURL=check-PO4TEYZQ.js.map
|
|
@@ -106,6 +106,10 @@ function hasVitest(dependencies) {
|
|
|
106
106
|
function hasPlaywright(dependencies) {
|
|
107
107
|
return PLAYWRIGHT_PACKAGES.some((pkg) => Object.hasOwn(dependencies, pkg));
|
|
108
108
|
}
|
|
109
|
+
function hasBunTest(dependencies, cwd) {
|
|
110
|
+
if ("bun-types" in dependencies || "@types/bun" in dependencies) return true;
|
|
111
|
+
return existsSync(path.join(cwd, "bun.lock")) || existsSync(path.join(cwd, "bun.lockb"));
|
|
112
|
+
}
|
|
109
113
|
function hasTurbo(dependencies) {
|
|
110
114
|
return "turbo" in dependencies;
|
|
111
115
|
}
|
|
@@ -226,6 +230,7 @@ var detect = {
|
|
|
226
230
|
hasTanstackQuery,
|
|
227
231
|
hasVitest,
|
|
228
232
|
hasPlaywright,
|
|
233
|
+
hasBunTest,
|
|
229
234
|
hasTurbo,
|
|
230
235
|
hasStorybook,
|
|
231
236
|
// Monorepo detection
|
|
@@ -239,4 +244,4 @@ var detect = {
|
|
|
239
244
|
export {
|
|
240
245
|
detect
|
|
241
246
|
};
|
|
242
|
-
//# sourceMappingURL=chunk-
|
|
247
|
+
//# sourceMappingURL=chunk-CXGL65PS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/presets/typescript/detect.ts"],"sourcesContent":["/**\n * Framework detection utilities for safeword ESLint preset\n *\n * Single source of truth for package detection. Used by:\n * - Generated eslint.config.mjs at lint time\n * - CLI's project-detector at init time\n */\n\nimport { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport path from 'node:path';\n\n/**\n * Read workspace glob patterns from a package.json. Inlined here (rather than\n * importing from `utils/workspaces.ts`) so the presets package stays\n * self-contained — see `cli-presets-self-contained` rule in\n * `.dependency-cruiser.cjs`.\n */\nfunction getWorkspacePatterns(cwd: string): string[] {\n const pkgPath = path.join(cwd, 'package.json');\n if (!existsSync(pkgPath)) return [];\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as {\n workspaces?: string[] | { packages?: string[] };\n };\n if (!pkg.workspaces) return [];\n return Array.isArray(pkg.workspaces) ? pkg.workspaces : (pkg.workspaces.packages ?? []);\n } catch {\n return [];\n }\n}\n\n/**\n * TanStack Query package names across all supported frameworks.\n */\nconst TANSTACK_QUERY_PACKAGES = [\n '@tanstack/react-query',\n '@tanstack/vue-query',\n '@tanstack/solid-query',\n '@tanstack/svelte-query',\n '@tanstack/angular-query-experimental',\n] as const;\n\n/**\n * Tailwind CSS package names (v3 and v4 installation methods).\n */\nconst TAILWIND_PACKAGES = ['tailwindcss', '@tailwindcss/vite', '@tailwindcss/postcss'] as const;\n\n/**\n * Playwright test package names.\n */\nconst PLAYWRIGHT_PACKAGES = ['@playwright/test', 'playwright'] as const;\n\n/**\n * Storybook package names (core CLI + common framework integrations).\n */\nconst STORYBOOK_PACKAGES = [\n 'storybook',\n '@storybook/react',\n '@storybook/vue3',\n '@storybook/svelte',\n '@storybook/angular',\n '@storybook/web-components',\n '@storybook/html',\n] as const;\n\n/**\n * Non-Prettier formatter config files (Biome, dprint, Rome, oxfmt, deno).\n * Used to detect if project uses an alternative formatter.\n * Prettier is safeword's default, so its presence doesn't skip config creation.\n *\n * Kept in sync by hand with ALTERNATIVE_FORMATTER_FILES in the hook's\n * `lib/lint-config.ts` (the `cli-presets-self-contained` rule forbids sharing\n * one module). oxfmt config set per oxc docs; deno uses deno.json(c).\n */\nconst ALTERNATIVE_FORMATTER_FILES = [\n // Biome (and legacy Rome)\n 'biome.json',\n 'biome.jsonc',\n 'rome.json',\n // dprint\n 'dprint.json',\n '.dprint.json',\n 'dprint.jsonc',\n '.dprint.jsonc',\n // oxfmt (oxc formatter)\n '.oxfmtrc.json',\n '.oxfmtrc.jsonc',\n 'oxfmt.config.js',\n 'oxfmt.config.cjs',\n 'oxfmt.config.mjs',\n 'oxfmt.config.ts',\n 'oxfmt.config.cts',\n 'oxfmt.config.mts',\n // deno fmt\n 'deno.json',\n 'deno.jsonc',\n] as const;\n\ntype DependenciesRecord = Record<string, string | undefined>;\ntype ScriptsRecord = Record<string, string | undefined>;\n\n/**\n * Read dependencies from a package.json file.\n */\nfunction readPackageDependencies(pkgPath: string): DependenciesRecord {\n try {\n if (!existsSync(pkgPath)) return {};\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));\n return { ...pkg.dependencies, ...pkg.devDependencies };\n } catch {\n return {};\n }\n}\n\n/**\n * Get all monorepo workspace patterns (from package.json + common directories).\n */\nfunction getMonorepoPatterns(rootDirectory: string): string[] {\n const workspacePatterns = getWorkspacePatterns(rootDirectory);\n const commonPatterns = ['apps/*', 'packages/*'];\n return [...new Set([...workspacePatterns, ...commonPatterns])];\n}\n\n/**\n * Scan a workspace directory for package.json files.\n */\nfunction scanWorkspaceDirectory(rootDirectory: string, pattern: string): DependenciesRecord {\n if (!pattern.endsWith('/*')) return {};\n\n const baseDirectory = path.join(rootDirectory, pattern.slice(0, -2));\n if (!existsSync(baseDirectory)) return {};\n\n const allDependencies: DependenciesRecord = {};\n try {\n const entries = readdirSync(baseDirectory, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.isDirectory()) {\n Object.assign(\n allDependencies,\n readPackageDependencies(path.join(baseDirectory, entry.name, 'package.json')),\n );\n }\n }\n } catch {\n // Ignore read errors\n }\n return allDependencies;\n}\n\n/**\n * Collect all dependencies from root and workspace package.json files.\n * Supports npm/yarn workspaces and common monorepo patterns.\n */\nfunction collectAllDependencies(rootDirectory: string): DependenciesRecord {\n const rootPackagePath = path.join(rootDirectory, 'package.json');\n const allDependencies = readPackageDependencies(rootPackagePath);\n\n // Scan each workspace pattern\n for (const pattern of getMonorepoPatterns(rootDirectory)) {\n Object.assign(allDependencies, scanWorkspaceDirectory(rootDirectory, pattern));\n }\n\n return allDependencies;\n}\n\n/**\n * Check if Tailwind CSS is installed.\n */\nfunction hasTailwind(dependencies: DependenciesRecord): boolean {\n return TAILWIND_PACKAGES.some(pkg => Object.hasOwn(dependencies, pkg));\n}\n\n/**\n * Check if TanStack Query is installed.\n */\nfunction hasTanstackQuery(dependencies: DependenciesRecord): boolean {\n return TANSTACK_QUERY_PACKAGES.some(pkg => Object.hasOwn(dependencies, pkg));\n}\n\n/**\n * Check if Vitest is installed.\n */\nfunction hasVitest(dependencies: DependenciesRecord): boolean {\n return 'vitest' in dependencies;\n}\n\n/**\n * Check if Playwright is installed.\n */\nfunction hasPlaywright(dependencies: DependenciesRecord): boolean {\n return PLAYWRIGHT_PACKAGES.some(pkg => Object.hasOwn(dependencies, pkg));\n}\n\n/**\n * Check if the project uses Bun's built-in test runner (`bun:test`).\n *\n * Two independent signals, either is sufficient:\n * - `bun-types`/`@types/bun` devDependency — the typed-project signal.\n * - A Bun lockfile at the project root — catches plain-JS Bun projects that\n * have no reason to install type packages. This is the case that actually\n * needs the fix: Bun's transpiler injects `describe`/`test`/`expect`/etc.\n * without an import, which only TypeScript's `eslint-recommended` override\n * (no-undef: off for .ts) already tolerates — plain .js/.jsx test files\n * still false-positive on `no-undef` (ticket #513).\n *\n * Lockfile presence alone doesn't prove Bun is the *test* runner (it could\n * be package-manager-only), but over-detecting here only widens a globals\n * allowlist to Bun's real `bun:test` export names — harmless if unused.\n *\n * The `bun.lock`/`bun.lockb` filenames are kept in sync by hand with the\n * package-manager check in `utils/install.ts` (the `cli-presets-self-contained`\n * rule forbids importing it from here).\n */\nfunction hasBunTest(dependencies: DependenciesRecord, cwd: string): boolean {\n if ('bun-types' in dependencies || '@types/bun' in dependencies) return true;\n return existsSync(path.join(cwd, 'bun.lock')) || existsSync(path.join(cwd, 'bun.lockb'));\n}\n\n/**\n * Check if Turborepo is installed.\n */\nfunction hasTurbo(dependencies: DependenciesRecord): boolean {\n return 'turbo' in dependencies;\n}\n\n/**\n * Check if Storybook is installed.\n */\nfunction hasStorybook(dependencies: DependenciesRecord): boolean {\n return STORYBOOK_PACKAGES.some(pkg => Object.hasOwn(dependencies, pkg));\n}\n\n/**\n * Detect base framework for config selection.\n * Returns the most specific framework detected.\n */\nfunction detectFramework(\n dependencies: DependenciesRecord,\n): 'next' | 'react' | 'astro' | 'typescript' | 'javascript' {\n if ('next' in dependencies) return 'next';\n if ('astro' in dependencies) return 'astro'; // Check before React (Astro+React has both)\n if ('react' in dependencies) return 'react';\n if ('typescript' in dependencies || 'typescript-eslint' in dependencies) return 'typescript';\n return 'javascript';\n}\n\n/**\n * Standard ignore patterns for ESLint flat config.\n * Includes build output, tool caches, and non-JS ecosystems.\n *\n * `.safeword/` is broadly ignored — once installed in a customer repo,\n * safeword fully owns that directory (hooks, scripts, statusline,\n * version file). Customers can't productively modify it (safeword\n * setup/upgrade regenerates the contents), so linting those files\n * would just surface noise the customer can't act on. The leading\n * glob-anywhere prefix catches the directory at any depth — important\n * for monorepos where each workspace may have its own safeword install.\n */\nfunction getIgnores(): string[] {\n return [\n '**/node_modules/',\n '**/dist/',\n '**/build/',\n '**/coverage/',\n // Safeword-owned directory — customers can't affect it; ignore at any depth.\n '**/.safeword/**/*',\n // Build output directories — always ignore even if framework not currently installed\n '**/.next/',\n '**/.astro/',\n // Non-JS ecosystems that may contain JS files\n '**/.venv/',\n // Tool caches\n '**/.turbo/',\n ];\n}\n\n/**\n * Check if project has an existing linter setup.\n * True if package.json has a \"lint\" script.\n */\nfunction hasExistingLinter(scripts: ScriptsRecord): boolean {\n return 'lint' in scripts;\n}\n\n/**\n * Check if project uses an alternative formatter (Biome, dprint, Rome).\n * Returns false for Prettier since it's safeword's default.\n *\n * We don't check for \"format\" script because safeword adds that itself.\n */\nfunction hasExistingFormatter(cwd: string, _scripts: ScriptsRecord): boolean {\n return ALTERNATIVE_FORMATTER_FILES.some(file => existsSync(path.join(cwd, file)));\n}\n\n// Prettier config filenames, by the exact set prettier resolves — NOT a loose\n// prefix. Prefix-matching (`.prettierrc*`) false-positives on a disabled/backup\n// config (`.prettierrc.bak`, `prettier.config.js.disabled`): prettier won't load\n// those, so they must read as \"no config\". Mirror of `PRETTIER_CONFIG_FILES` in\n// the session-lint-check hook (`hooks/lib/lint-config.ts`, ticket 1J6JKP); the\n// `cli-presets-self-contained` rule forbids importing it, so keep the two in\n// sync. Extension lists verified against prettier 3.8 docs.\nconst PRETTIER_RC_EXTENSIONS = [\n 'json',\n 'yaml',\n 'yml',\n 'json5',\n 'toml',\n 'js',\n 'cjs',\n 'mjs',\n 'ts',\n 'cts',\n 'mts',\n];\nconst PRETTIER_CONFIG_EXTENSIONS = ['js', 'cjs', 'mjs', 'ts', 'cts', 'mts'];\nconst PRETTIER_CONFIG_FILES = new Set<string>([\n '.prettierrc',\n ...PRETTIER_RC_EXTENSIONS.map(extension => `.prettierrc.${extension}`),\n ...PRETTIER_CONFIG_EXTENSIONS.map(extension => `prettier.config.${extension}`),\n]);\n\n/**\n * Check if the project already has its own Prettier config, in any form prettier\n * recognizes: a `.prettierrc` / `.prettierrc.*` / `prettier.config.*` file, or a\n * `\"prettier\"` key in package.json.\n *\n * Unlike {@link hasExistingFormatter} (alternative formatters only), this exists\n * to stop safeword from dropping its own `.prettierrc`/`.safeword/.prettierrc`\n * on top of a config it can't merge into — a bare `.prettierrc` resolves ahead\n * of `prettier.config.mjs` in prettier's search order, so writing one silently\n * shadows the customer's style.\n */\nfunction hasExistingPrettierConfig(cwd: string): boolean {\n let entries: string[];\n try {\n entries = readdirSync(cwd);\n } catch {\n entries = [];\n }\n if (entries.some(name => PRETTIER_CONFIG_FILES.has(name))) return true;\n\n const pkgPath = path.join(cwd, 'package.json');\n if (!existsSync(pkgPath)) return false;\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as { prettier?: unknown };\n return pkg.prettier !== undefined;\n } catch {\n return false;\n }\n}\n\n/**\n * Next.js config file names to look for.\n */\nconst NEXT_CONFIG_FILES = ['next.config.js', 'next.config.mjs', 'next.config.ts'] as const;\n\n/**\n * Check if a directory contains a Next.js config file.\n */\nfunction hasNextConfig(directory: string): boolean {\n return NEXT_CONFIG_FILES.some(file => existsSync(path.join(directory, file)));\n}\n\n/**\n * Scan a workspace directory for Next.js config files.\n * Returns relative glob patterns for directories containing Next.js configs.\n */\nfunction scanDirectoryForNextConfigs(rootDirectory: string, workspacePattern: string): string[] {\n if (!workspacePattern.endsWith('/*')) return [];\n\n const baseDirectory = workspacePattern.slice(0, -2); // Remove '/*'\n const fullBaseDirectory = path.join(rootDirectory, baseDirectory);\n\n if (!existsSync(fullBaseDirectory)) return [];\n\n const nextPaths: string[] = [];\n try {\n const entries = readdirSync(fullBaseDirectory, { withFileTypes: true });\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n const packageDirectory = path.join(fullBaseDirectory, entry.name);\n if (hasNextConfig(packageDirectory)) {\n nextPaths.push(`${baseDirectory}/${entry.name}/**/*.{ts,tsx}`);\n }\n }\n } catch {\n // Ignore read errors\n }\n return nextPaths;\n}\n\n/**\n * Find Next.js config paths for ESLint rule scoping in monorepos.\n *\n * Returns:\n * - `undefined` if Next.js config exists at root (single app, no scoping needed)\n * - `string[]` of glob patterns for directories containing Next.js apps\n * - Empty array if no Next.js configs found anywhere\n *\n * Used to scope Next.js-specific ESLint rules to only the packages that use Next.js,\n * allowing other packages (React, Astro, etc.) to avoid irrelevant Next.js rules.\n */\nfunction findNextConfigPaths(rootDirectory: string): string[] | undefined {\n // Check for root Next.js config - means single app, no scoping needed\n if (hasNextConfig(rootDirectory)) {\n return undefined;\n }\n\n // Scan each workspace pattern for Next.js configs\n return getMonorepoPatterns(rootDirectory).flatMap(pattern =>\n scanDirectoryForNextConfigs(rootDirectory, pattern),\n );\n}\n\n/**\n * All detection utilities bundled together.\n */\nexport const detect = {\n // Package lists\n TAILWIND_PACKAGES,\n TANSTACK_QUERY_PACKAGES,\n PLAYWRIGHT_PACKAGES,\n STORYBOOK_PACKAGES,\n ALTERNATIVE_FORMATTER_FILES,\n NEXT_CONFIG_FILES,\n\n // Core utilities\n collectAllDeps: collectAllDependencies,\n detectFramework,\n getIgnores,\n\n // Feature detection\n hasTailwind,\n hasTanstackQuery,\n hasVitest,\n hasPlaywright,\n hasBunTest,\n hasTurbo,\n hasStorybook,\n\n // Monorepo detection\n findNextConfigPaths,\n\n // Existing tooling detection\n hasExistingLinter,\n hasExistingFormatter,\n hasExistingPrettierConfig,\n};\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
detectLanguages,
|
|
5
5
|
isGitRepo,
|
|
6
6
|
isPackInstalled
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-UIRPUAPO.js";
|
|
8
8
|
import {
|
|
9
9
|
SAFEWORD_PEER_DEPENDENCIES
|
|
10
10
|
} from "./chunk-HSC7TELY.js";
|
|
@@ -546,4 +546,4 @@ export {
|
|
|
546
546
|
getEslintPeerMismatchWarning,
|
|
547
547
|
maybeAutoPatchOrNudge
|
|
548
548
|
};
|
|
549
|
-
//# sourceMappingURL=chunk-
|
|
549
|
+
//# sourceMappingURL=chunk-K7QZ6W2K.js.map
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
createProjectContext,
|
|
16
16
|
getMissingPacks,
|
|
17
17
|
reconcile
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-UIRPUAPO.js";
|
|
19
19
|
import {
|
|
20
20
|
findDanglingDependencies,
|
|
21
21
|
findTicketsInCycles,
|
|
@@ -747,4 +747,4 @@ export {
|
|
|
747
747
|
checkHealth,
|
|
748
748
|
reportHealthSummary
|
|
749
749
|
};
|
|
750
|
-
//# sourceMappingURL=chunk-
|
|
750
|
+
//# sourceMappingURL=chunk-MV7VNFO6.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-HI7ANNQI.js";
|
|
9
9
|
import {
|
|
10
10
|
detect
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-CXGL65PS.js";
|
|
12
12
|
import {
|
|
13
13
|
VERSION
|
|
14
14
|
} from "./chunk-HSC7TELY.js";
|
|
@@ -1991,6 +1991,7 @@ const scopedNextConfigs = nextPaths?.flatMap((filePath) =>
|
|
|
1991
1991
|
}
|
|
1992
1992
|
var OPTIONAL_CONFIGS_SNIPPET = ` // Testing configs - only if detected (plugins have framework peer deps)
|
|
1993
1993
|
...(detect.hasVitest(deps) ? configs.vitest : []),
|
|
1994
|
+
...(detect.hasBunTest(deps, __dirname) ? configs.bunTest : []),
|
|
1994
1995
|
...(detect.hasPlaywright(deps) ? configs.playwright : []),
|
|
1995
1996
|
// Storybook - only if detected (v10+ requires storybook peer dep)
|
|
1996
1997
|
...(detect.hasStorybook(deps) ? configs.storybook : []),
|
|
@@ -4165,4 +4166,4 @@ export {
|
|
|
4165
4166
|
untrackIgnoredFiles,
|
|
4166
4167
|
createProjectContext
|
|
4167
4168
|
};
|
|
4168
|
-
//# sourceMappingURL=chunk-
|
|
4169
|
+
//# sourceMappingURL=chunk-UIRPUAPO.js.map
|