@xylabs/toolchain 7.10.2 → 7.10.3

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 +1 @@
1
- {"version":3,"sources":["../src/lib/checkResult.ts","../src/lib/claudeMdTemplate.ts","../src/lib/concurrency.ts","../src/lib/createBuildConfig.ts","../src/lib/defaultBuildConfig.ts","../src/lib/deleteGlob.ts","../src/lib/dependencies/detectDuplicateDependencies.ts","../src/pm/detectPackageManager.ts","../src/pm/detectReact.ts","../src/pm/registry.ts","../src/pm/pnpmPackageManager.ts","../src/pm/yarnPackageManager.ts","../src/lib/yarn/isYarnVersionOrGreater.ts","../src/lib/yarn/workspace/yarnWorkspaces.ts","../src/lib/yarn/workspace/yarnWorkspace.ts","../src/lib/processEx.ts","../src/lib/withError.ts","../src/lib/withErrnoException.ts","../src/lib/safeExit.ts","../src/lib/dependencies/DuplicateDetector.ts","../src/lib/jsonFormatters.ts","../src/lib/dependencies/workspaceCycles.ts","../src/lib/deprecationMigrate.ts","../src/lib/file/constants.ts","../src/lib/file/fileLines.ts","../src/lib/string/empty.ts","../src/lib/string/union.ts","../src/lib/file/ReadFileSyncOptions.ts","../src/lib/file/tryReadFileSync.ts","../src/lib/fillTemplate.ts","../src/lib/generateIgnoreFiles.ts","../src/lib/initCwd.ts","../src/lib/generateReadmeFiles.ts","../src/lib/gitignoreTemplate.ts","../src/lib/latestVersions.ts","../src/lib/loadConfig.ts","../src/lib/packageName.ts","../src/lib/parsedPackageJSON.ts","../src/lib/repoTemplates.ts","../src/lib/runInstall.ts","../src/lib/runSteps.ts","../src/lib/runStepsAsync.ts","../src/lib/runXy.ts","../src/lib/runXyWithWarning.ts","../src/lib/tryRunLocalScript.ts","../src/lib/updo/applyUpdates.ts","../src/lib/updo/collectWorkspaceDeps.ts","../src/lib/updo/fetchRegistryInfo.ts","../src/lib/updo/interactiveSelect.ts","../src/lib/updo/renderTable.ts","../src/lib/updo/resolveVersions.ts","../src/lib/updo/runUpdo.ts","../src/actions/analyze.ts","../src/actions/build.ts","../src/actions/claude-check.ts","../src/actions/claude-clean.ts","../src/actions/claude-commands.ts","../src/actions/claude-rules.ts","../src/actions/claude-settings.ts","../src/actions/claude-skills.ts","../src/actions/clean.ts","../src/actions/clean-docs.ts","../src/actions/clean-eslint.ts","../src/actions/compile.ts","../src/actions/copy-assets.ts","../src/actions/cycle.ts","../src/actions/dead.ts","../src/actions/deplint/deplint.ts","../src/actions/deplint/packageJsonEditor.ts","../src/actions/deplint/getRequiredPeerDependencies.ts","../src/actions/deplint/packageEditor.ts","../src/actions/deplint/fixer.ts","../src/actions/deplint/findFiles.ts","../src/actions/deplint/findFilesByGlob.ts","../src/actions/deplint/getDependenciesFromPackageJson.ts","../src/actions/deplint/getExtendsFromTsconfigs.ts","../src/actions/deplint/getBasePackageName.ts","../src/actions/deplint/getExternalImportsFromFiles.ts","../src/actions/deplint/getImportsFromFile.ts","../src/actions/deplint/checkPackage/getMismatchedPeerDevVersions.ts","../src/actions/deplint/checkPackage/getUnlistedDependencies.ts","../src/actions/deplint/tsScriptsAliases.ts","../src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts","../src/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.ts","../src/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.ts","../src/actions/deplint/checkPackage/getUnusedDependencies.ts","../src/actions/deplint/checkPackage/getUnusedDevDependencies.ts","../src/actions/deplint/getCliReferencedPackagesFromFiles.ts","../src/actions/deplint/getScriptReferencedPackages.ts","../src/actions/deplint/implicitDevDependencies.ts","../src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts","../src/actions/deplint/checkPackage/getWorkspaceVersionProblems.ts","../src/actions/deplint/rules.ts","../src/actions/deplint/snapshot.ts","../src/actions/deplint/engine.ts","../src/actions/deplint/reporters.ts","../src/actions/deploy.ts","../src/actions/package-lint-deps.ts","../src/actions/dupdeps.ts","../src/actions/eject.ts","../src/actions/lintNext.ts","../src/actions/lint.ts","../src/actions/fix.ts","../src/actions/gen-docs.ts","../src/actions/gitignore.ts","../src/actions/gitlint.ts","../src/actions/gitlint-fix.ts","../src/actions/knip.ts","../src/actions/license.ts","../src/actions/lint-init.ts","../src/actions/lintlint.ts","../src/actions/npmignore-gen.ts","../src/actions/orphan.ts","../src/actions/package/clean-outputs.ts","../src/actions/package/clean-typescript.ts","../src/actions/package/clean.ts","../src/actions/package/compile/compile.ts","../src/actions/package/compile/packageCompileTsup.ts","../src/actions/package/compile/inputs.ts","../src/actions/package/compile/buildEntries.ts","../src/actions/package/compile/deepMerge.ts","../src/actions/package/compile/packageCompileTsc.ts","../src/actions/package/compile/getCompilerOptions.ts","../src/actions/package/compile/packageCompileTscTypes.ts","../src/actions/package/compile/XyConfig.ts","../src/actions/package/copy-assets.ts","../src/actions/package/cycle.ts","../src/actions/package/gen-docs.ts","../src/actions/package/lint.ts","../src/actions/package/publint.ts","../src/actions/package/recompile.ts","../src/actions/package-lint.ts","../src/actions/packman/clean.ts","../src/actions/packman/convert.ts","../src/actions/packman/convertToPnpm.ts","../src/actions/packman/rewriteScripts.ts","../src/actions/packman/rewriteSourceImports.ts","../src/actions/packman/swapTsScriptsDependency.ts","../src/actions/packman/convertToYarn.ts","../src/actions/packman/lint.ts","../src/actions/publint.ts","../src/actions/publish.ts","../src/actions/reactTest.ts","../src/actions/readme-gen.ts","../src/actions/readme-init.ts","../src/actions/readme-lint.ts","../src/actions/rebuild.ts","../src/actions/recompile.ts","../src/actions/reinstall.ts","../src/actions/relint.ts","../src/actions/repo-init.ts","../src/actions/retest.ts","../src/actions/sitemap.ts","../src/actions/sonar.ts","../src/actions/start.ts","../src/actions/statics.ts","../src/actions/test.ts","../src/actions/up.ts","../src/actions/updo.ts","../src/actions/upplug.ts","../src/actions/upyarn.ts","../src/actions/yarn3only.ts","../src/loadPackageConfig.ts","../src/xy/build/buildCommand.ts","../src/xy/build/compileCommand.ts","../src/xy/build/compileOnlyCommand.ts","../src/xy/build/copyAssetsCommand.ts","../src/xy/build/rebuildCommand.ts","../src/xy/build/recompileCommand.ts","../src/xy/build/index.ts","../src/xy/common/checkCommand.ts","../src/xy/common/claude/checkCommand.ts","../src/xy/common/claude/cleanCommand.ts","../src/xy/common/claude/commandsCommand.ts","../src/xy/common/claude/initCommand.ts","../src/xy/common/claude/rulesCommand.ts","../src/xy/common/claude/settingsCommand.ts","../src/xy/common/claude/skillsCommand.ts","../src/xy/common/claude/index.ts","../src/xy/common/cleanDocsCommand.ts","../src/xy/param.ts","../src/xy/common/deadCommand.ts","../src/xy/common/genDocsCommand.ts","../src/xy/common/gitignoreCommand.ts","../src/xy/common/gitlintCommand.ts","../src/xy/common/licenseCommand.ts","../src/xy/common/npmignoreGenCommand.ts","../src/xy/common/orphan/cleanCommand.ts","../src/xy/common/orphan/listCommand.ts","../src/xy/common/orphan/index.ts","../src/xy/common/packmanCommand.ts","../src/xy/common/readme/genCommand.ts","../src/xy/common/readme/initCommand.ts","../src/xy/common/readme/lintCommand.ts","../src/xy/common/readme/index.ts","../src/xy/common/repo/initCommand.ts","../src/xy/common/repo/lintCommand.ts","../src/xy/common/repo/index.ts","../src/xy/common/retestCommand.ts","../src/xy/common/testCommand.ts","../src/xy/common/index.ts","../src/xy/deploy/deployCommand.ts","../src/xy/deploy/publishCommand.ts","../src/xy/deploy/index.ts","../src/xy/install/cleanCommand.ts","../src/xy/install/dupdepsCommand.ts","../src/xy/install/reinstallCommand.ts","../src/xy/install/staticsCommand.ts","../src/xy/install/upCommand.ts","../src/xy/install/updoCommand.ts","../src/xy/install/index.ts","../src/xy/lint/cycleCommand.ts","../src/xy/lint/deplintCommand.ts","../src/xy/lint/fixCommand.ts","../src/xy/lint/knipCommand.ts","../src/xy/lint/lint/index.ts","../src/xy/lint/lint/initCommand.ts","../src/xy/lint/lint/runCommand.ts","../src/xy/lint/lintlintCommand.ts","../src/xy/lint/publintCommand.ts","../src/xy/lint/relintCommand.ts","../src/xy/lint/sonarCommand.ts","../src/xy/lint/index.ts","../src/xy/react/analyzeCommand.ts","../src/xy/react/ejectCommand.ts","../src/xy/react/sitemapCommand.ts","../src/xy/react/startCommand.ts","../src/xy/react/index.ts","../src/xy/xy.ts","../src/xy/xyParseOptions.ts","../src/xy/yarn/upplugCommand.ts","../src/xy/yarn/upyarnCommand.ts","../src/xy/yarn/yarn3OnlyCommand.ts","../src/xy/yarn/index.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import {\n readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nimport type { PackageManagerName } from '../pm/index.ts'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'claude')\n\nexport function applyPackageManager(content: string, pm: PackageManagerName): string {\n return content.replaceAll('yarn xy', `${pm} xy`).replaceAll('yarn add', `${pm} add`)\n}\n\nexport const XYLABS_RULES_PREFIX = 'xylabs-'\nexport const XYLABS_COMMANDS_PREFIX = 'xy-'\nexport const LEGACY_COMMANDS_PREFIX = 'xylabs-'\nexport const XYLABS_SKILLS_PREFIX = 'xylabs-'\n\nexport const claudeMdRuleTemplates = (): Record<string, string> => {\n const rulesDir = PATH.resolve(templatesDir, 'rules')\n const files = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(rulesDir, file), 'utf8')\n }\n return result\n}\n\nexport const claudeCommandTemplates = (): Record<string, string> => {\n const commandsDir = PATH.resolve(templatesDir, 'commands')\n const files = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(commandsDir, file), 'utf8')\n }\n return result\n}\n\n// Returns { 'xylabs-foo': { 'SKILL.md': '...', 'other.ts': '...' } }\nexport const claudeSkillTemplates = (): Record<string, Record<string, string>> => {\n const skillsDir = PATH.resolve(templatesDir, 'skills')\n const dirs = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n const result: Record<string, Record<string, string>> = {}\n for (const dir of dirs) {\n const dirPath = PATH.resolve(skillsDir, dir)\n const files = readdirSync(dirPath, { recursive: true, encoding: 'utf8' })\n result[dir] = {}\n for (const file of files) {\n if (statSync(PATH.resolve(dirPath, file)).isFile()) {\n result[dir][file] = readFileSync(PATH.resolve(dirPath, file), 'utf8')\n }\n }\n }\n return result\n}\n\nexport const claudeMdProjectTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-project.md'), 'utf8')\n\nexport const claudeMdLocalTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-local.md'), 'utf8')\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nexport const outputStorage = new AsyncLocalStorage<string[]>()\n\nlet captureInstalled = false\n\nexport function installOutputCapture(): void {\n if (captureInstalled) return\n captureInstalled = true\n\n const originalStdoutWrite = process.stdout.write.bind(process.stdout)\n const originalStderrWrite = process.stderr.write.bind(process.stderr)\n\n function intercept(\n original: typeof process.stdout.write,\n ): typeof process.stdout.write {\n return function (chunk: string | Uint8Array, ...args: unknown[]) {\n const buffer = outputStorage.getStore()\n if (buffer) {\n buffer.push(typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk))\n return true\n }\n return (original as (...params: unknown[]) => boolean)(chunk, ...args)\n } as typeof process.stdout.write\n }\n\n process.stdout.write = intercept(originalStdoutWrite)\n process.stderr.write = intercept(originalStderrWrite)\n}\n\nexport async function runWithConcurrency<T>(\n items: T[],\n concurrency: number,\n fn: (item: T) => Promise<void>,\n): Promise<void> {\n let next = 0\n async function worker(): Promise<void> {\n while (next < items.length) {\n const i = next++\n await fn(items[i])\n }\n }\n await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, () => worker()))\n}\n","import { readFileSync } from 'node:fs'\n\nimport { defaultBuildConfig } from './defaultBuildConfig.ts'\n\ninterface TsConfig {\n [key: string]: unknown\n compilerOptions?: Record<string, unknown>\n exclude?: string[]\n include?: string[]\n}\n\nconst getGeneralTypescriptConfig = (location: string): TsConfig | false => {\n let generalConfig: string | undefined\n try {\n generalConfig = readFileSync(`${location}/tsconfig.json`, { encoding: 'utf8' })\n } catch {\n return false\n }\n return JSON.parse(generalConfig) as TsConfig\n}\n\nexport const createBuildConfig = (\n location: string,\n module: 'ESNext' | 'CommonJS',\n target: 'ESNext' | 'ES6',\n outDirSuffix: string,\n): Record<string, unknown> | undefined => {\n const generalConfigObject = getGeneralTypescriptConfig(location)\n if (generalConfigObject === false) {\n return undefined\n }\n return {\n ...generalConfigObject,\n compilerOptions: {\n ...defaultBuildConfig.compilerOptions,\n ...generalConfigObject.compilerOptions,\n module,\n outDir: `./${(generalConfigObject.compilerOptions?.outDir as string | undefined) ?? 'dist'}/${outDirSuffix}`,\n target,\n },\n exclude: [...(generalConfigObject.exclude ?? []), ...defaultBuildConfig.exclude],\n include: [...(generalConfigObject.include ?? []), ...defaultBuildConfig.include],\n }\n}\n","export const defaultBuildConfig = {\n compilerOptions: {\n rootDir: 'src',\n rootDirs: ['package.json'],\n },\n exclude: [\n '**/build',\n '**/dist',\n '**/node_modules',\n '**/*.spec.*',\n '**/*.spec',\n '**/*.stories.*',\n '**/*.example.*',\n '**/spec/*',\n '**/stories/*',\n ],\n include: ['src'],\n}\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n","import { execSync } from 'node:child_process'\n\nimport { getPackageManager } from '../../pm/index.ts'\nimport { safeExit } from '../safeExit.ts'\nimport { DuplicateDetector } from './DuplicateDetector.ts'\n\nexport const detectDuplicateDependencies = (depsFromPackageJSON?: string[], DefaultDependencies?: string[]) => {\n let exitCode = 0\n\n const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies\n\n return safeExit(() => {\n if (dependencies) {\n for (const dependency of dependencies) {\n let output: string\n\n try {\n const pm = getPackageManager()\n const cmd = `${pm.command} why ${dependency} --json`\n output = execSync(cmd, { maxBuffer: 64 * 1024 * 1024 }).toString()\n } catch (e) {\n console.error(`Error running dependency check: ${String(e)}`)\n exitCode = 1\n continue\n }\n\n if (output) {\n exitCode = new DuplicateDetector(output, dependency).detect()\n } else {\n console.log(`${dependency} - N/A`)\n if (depsFromPackageJSON) {\n exitCode = 1\n console.log(`🚨 Library ${dependency} was requested in package.json but not found`)\n }\n }\n }\n return exitCode\n } else {\n console.log('🚨 No dependencies where passed')\n return exitCode\n }\n })\n}\n","import { existsSync } from 'node:fs'\n\nexport type PackageManagerName = 'pnpm' | 'yarn'\n\nexport function detectPackageManager(): PackageManagerName {\n if (existsSync('pnpm-lock.yaml') || existsSync('pnpm-workspace.yaml')) return 'pnpm'\n return 'yarn'\n}\n","import { readFileSync } from 'node:fs'\n\nimport { getPackageManager } from './registry.ts'\n\nlet cached: boolean | undefined\n\nexport function detectReact(): boolean {\n if (cached !== undefined) return cached\n try {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n cached = workspaces.some((ws) => {\n try {\n const pkg = JSON.parse(readFileSync(`${ws.location}/package.json`, 'utf8')) as Record<string, unknown>\n const allDeps = {\n ...(pkg.dependencies as Record<string, string> | undefined),\n ...(pkg.devDependencies as Record<string, string> | undefined),\n ...(pkg.peerDependencies as Record<string, string> | undefined),\n }\n return 'react' in allDeps || 'react-dom' in allDeps\n } catch {\n return false\n }\n })\n } catch {\n cached = false\n }\n return cached\n}\n","import type { PackageManagerName } from './detectPackageManager.ts'\nimport { detectPackageManager } from './detectPackageManager.ts'\nimport type { PackageManager } from './PackageManager.ts'\n\nconst implementations = new Map<PackageManagerName, PackageManager>()\n\nexport function registerPackageManager(pm: PackageManager): void {\n implementations.set(pm.name, pm)\n}\n\nexport function getPackageManager(name?: PackageManagerName): PackageManager {\n const pmName = name ?? detectPackageManager()\n const pm = implementations.get(pmName)\n if (!pm) {\n throw new Error(\n `No package manager implementation registered for \"${pmName}\". `\n + 'Ensure registerPackageManager() has been called before getPackageManager().',\n )\n }\n return pm\n}\n","import { spawnSync } from 'node:child_process'\nimport PATH from 'node:path'\n\nimport type {\n PackageManager, ScriptStep, Workspace, WorkspaceForeachOptions,\n} from './PackageManager.ts'\n\nexport class PnpmPackageManager implements PackageManager {\n readonly command = 'pnpm'\n readonly lockfile = 'pnpm-lock.yaml'\n readonly name = 'pnpm' as const\n\n dedupe(): ScriptStep {\n return ['pnpm', ['dedupe']]\n }\n\n findWorkspace(name: string): Workspace | undefined {\n return this.listWorkspaces().find(ws => ws.name === name)\n }\n\n foreachWorkspace(script: string, args: string[] = [], options: WorkspaceForeachOptions): ScriptStep {\n const filter = options.incremental ? ['--filter', '...[HEAD~1]'] : []\n return ['pnpm', ['-r', `--workspace-concurrency=${options.jobs}`, ...filter, 'exec', 'run-or-exec', script, ...args]]\n }\n\n install(): ScriptStep {\n return ['pnpm', ['install']]\n }\n\n listInstalledVersions(): Map<string, string> {\n const result = spawnSync('pnpm', ['list', '--recursive', '--json', '--depth=0'], {\n encoding: 'utf8',\n maxBuffer: 64 * 1024 * 1024,\n shell: true,\n })\n const versions = new Map<string, string>()\n if (result.error) return versions\n try {\n const parsed: unknown = JSON.parse(result.stdout)\n if (Array.isArray(parsed)) {\n for (const workspace of parsed) {\n for (const depField of ['dependencies', 'devDependencies', 'optionalDependencies'] as const) {\n const deps = (workspace as Record<string, Record<string, { version: string }>>)[depField]\n if (!deps) continue\n for (const [name, info] of Object.entries(deps)) {\n if (info.version && !versions.has(name)) {\n versions.set(name, info.version)\n }\n }\n }\n }\n }\n } catch {\n // fallback for unexpected output\n }\n return versions\n }\n\n listWorkspaces(): Workspace[] {\n const result = spawnSync('pnpm', ['list', '--recursive', '--json', '--depth=0'], {\n encoding: 'utf8',\n maxBuffer: 64 * 1024 * 1024,\n shell: true,\n })\n if (result.error) {\n throw result.error\n }\n try {\n const parsed: unknown = JSON.parse(result.stdout)\n if (Array.isArray(parsed)) {\n const cwd = process.env.INIT_CWD ?? process.cwd()\n return parsed.map((pkg: { name: string; path: string }) => {\n const rel = PATH.relative(cwd, pkg.path)\n return {\n location: rel === '' ? '.' : rel,\n name: pkg.name,\n }\n })\n }\n } catch {\n // fallback for unexpected output\n }\n return []\n }\n\n outdated(): ScriptStep {\n return ['pnpm', ['outdated', '-r']]\n }\n\n publish(): ScriptStep {\n return ['pnpm', ['publish', '-r']]\n }\n\n runInWorkspace(pkg: string, script: string, args: string[] = []): ScriptStep {\n return ['pnpm', ['--filter', pkg, 'exec', 'run-or-exec', script, ...args]]\n }\n\n runXy(args: string[]): ScriptStep {\n return ['pnpm', ['xy', ...args]]\n }\n\n versionApply(): ScriptStep {\n // pnpm doesn't have a deferred version apply — versions are applied in bump\n return ['pnpm', ['install', '--lockfile-only']]\n }\n\n versionBump(type: 'major' | 'minor' | 'patch' | 'prerelease'): ScriptStep[] {\n return [\n ['pnpm', ['-r', 'exec', '--', 'pnpm', 'version', type, '--no-git-tag-version']],\n ]\n }\n}\n","import { spawnSync } from 'node:child_process'\n\nimport { yarnWorkspace, yarnWorkspaces } from '../lib/yarn/index.ts'\nimport type {\n PackageManager, ScriptStep, Workspace, WorkspaceForeachOptions,\n} from './PackageManager.ts'\n\nexport class YarnPackageManager implements PackageManager {\n readonly command = 'yarn'\n readonly lockfile = 'yarn.lock'\n readonly name = 'yarn' as const\n\n dedupe(): ScriptStep {\n return ['yarn', ['dedupe']]\n }\n\n findWorkspace(name: string): Workspace | undefined {\n try {\n return yarnWorkspace(name)\n } catch {\n return undefined\n }\n }\n\n foreachWorkspace(script: string, args: string[] = [], options: WorkspaceForeachOptions): ScriptStep {\n const verboseOptions = options.verbose ? ['--verbose'] : ['--no-verbose']\n const incrementalOptions = options.incremental\n ? ['--since', '-Ap', '--topological-dev']\n : ['--parallel', '-Ap', '--topological-dev']\n return ['yarn', [\n 'workspaces',\n 'foreach',\n ...incrementalOptions,\n '-j',\n `${options.jobs}`,\n ...verboseOptions,\n 'run',\n script,\n ...args,\n ]]\n }\n\n install(): ScriptStep {\n return ['yarn', ['install']]\n }\n\n listInstalledVersions(): Map<string, string> {\n const result = spawnSync('yarn', ['info', '--all', '--json'], {\n encoding: 'utf8',\n maxBuffer: 64 * 1024 * 1024,\n })\n const versions = new Map<string, string>()\n if (result.error) return versions\n try {\n const lines = result.stdout.split('\\n').filter(Boolean)\n for (const line of lines) {\n const entry = JSON.parse(line) as { value: string }\n // yarn info --all --json outputs lines like: {\"value\":\"package@npm:1.2.3#optional!...\",\"children\":{...}}\n const match = /^(.+)@(?:npm|patch|workspace):(\\d+\\.\\d+\\.\\d+[^#]*)/.exec(entry.value)\n if (match) {\n const [, name, rawVersion] = match\n // Strip any trailing yarn metadata after the semver\n const version = rawVersion?.split('#')[0]?.split('::')[0]\n if (name && version && !versions.has(name)) {\n versions.set(name, version)\n }\n }\n }\n } catch {\n // fallback for unexpected output\n }\n return versions\n }\n\n listWorkspaces(): Workspace[] {\n return yarnWorkspaces()\n }\n\n outdated(): ScriptStep {\n return ['yarn', ['outdated']]\n }\n\n publish(): ScriptStep {\n return ['npm', ['publish', '--workspaces']]\n }\n\n runInWorkspace(pkg: string, script: string, args: string[] = []): ScriptStep {\n return ['yarn', ['workspace', pkg, 'run', script, ...args]]\n }\n\n runXy(args: string[]): ScriptStep {\n return ['yarn', ['xy', ...args]]\n }\n\n versionApply(): ScriptStep {\n return ['yarn', ['version', 'apply', '--all']]\n }\n\n versionBump(type: 'major' | 'minor' | 'patch' | 'prerelease'): ScriptStep[] {\n if (type === 'prerelease') {\n return [\n ['yarn', 'workspaces foreach --all --no-private version patch --deferred --prerelease'],\n ]\n }\n return [\n ['yarn', `workspaces foreach --all --no-private version ${type} --deferred`],\n ]\n }\n}\n","import { spawnSync } from 'node:child_process'\n\nexport const isYarnVersionOrGreater = (major: number, minor?: number, patch?: number): [boolean, string] => {\n const result = spawnSync('yarn', ['-v'], { encoding: 'utf8', shell: true })\n const version = result.stdout.toString().replaceAll('\\n', '')\n const versionNumbers = version.split('.').map(ver => Number.parseInt(ver))\n const majorDelta = versionNumbers[0] - major\n const minorDelta = versionNumbers[1] - (minor ?? versionNumbers[1])\n const patchDelta = versionNumbers[2] - (patch ?? versionNumbers[2])\n\n const majorOk = majorDelta >= 0\n const minorOk = majorDelta > 0 || minorDelta >= 0\n const patchOk = majorDelta > 0 || minorDelta > 0 || patchDelta >= 0\n\n return [majorOk && minorOk && patchOk, version]\n}\n","import { spawnSync } from 'node:child_process'\n\nimport type { Workspace } from './Workspace.ts'\n\nexport const yarnWorkspaces = (): Workspace[] => {\n const result = spawnSync('yarn', ['workspaces', 'list', '--json', '--recursive'], { encoding: 'utf8' })\n if (result.error) {\n throw result.error\n }\n return (\n result.stdout\n .toString()\n // NOTE: This probably doesn't work on Windows\n // TODO: Replace /r/n with /n first\n .split('\\n')\n .slice(0, -1)\n .map((item) => {\n return JSON.parse(item) as Workspace\n })\n )\n}\n","import type { Workspace } from './Workspace.ts'\nimport { yarnWorkspaces } from './yarnWorkspaces.ts'\n\nexport const yarnWorkspace = (pkg: string): Workspace => {\n const workspace = yarnWorkspaces().find(({ name }) => name === pkg)\n if (!workspace) throw new Error(`Workspace ${pkg} not found`)\n return workspace\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { EOL } from 'node:os'\n\nimport chalk from 'chalk'\n\nimport { multiLineToJSONArray } from '../jsonFormatters.ts'\n\ninterface ChildFields {\n descriptor: string\n locator: string\n}\n\nconst trimVirtualMeta = (value: string): string => {\n const virtualParts = value.split('virtual:')\n if (virtualParts.length > 1) {\n const hashParts = virtualParts[1].split('#')\n return virtualParts[0] + hashParts[1]\n } else {\n return value\n }\n}\n\nconst trimObjectDependencyVirtualMeta = (obj: Record<string, ChildFields>): Record<string, ChildFields> => {\n const resultObj: Record<string, ChildFields> = {}\n for (const [key, value] of Object.entries(obj)) {\n resultObj[trimVirtualMeta(key)] = {\n descriptor: trimVirtualMeta(value.descriptor),\n locator: trimVirtualMeta(value.locator),\n }\n }\n return resultObj\n}\n\nconst trimDependencyVirtualMeta = (dependencies: DependencyEntries): DependencyEntries => {\n return dependencies.map((dependency) => {\n return { children: trimObjectDependencyVirtualMeta(dependency.children), value: trimVirtualMeta(dependency.value) }\n })\n}\n\ninterface DependencyEntry {\n children: Record<string, ChildFields>\n value: string\n}\n\ntype DependencyEntries = DependencyEntry[]\n\n/**\n * Extracts all versions of a named dependency from pnpm's `why --json` output.\n * The output is a JSON array of workspace packages, each containing nested\n * dependency trees with `version` fields.\n */\nfunction extractPnpmVersions(data: unknown, depName: string): string[] {\n const versions = new Set<string>()\n function walk(obj: unknown): void {\n if (Array.isArray(obj)) {\n for (const item of obj) walk(item)\n } else if (obj && typeof obj === 'object') {\n const record = obj as Record<string, unknown>\n if (typeof record.version === 'string' && typeof record.from === 'string' && record.from === depName) {\n versions.add(record.version)\n }\n for (const val of Object.values(record)) walk(val)\n }\n }\n walk(data)\n return [...versions]\n}\n\nexport class DuplicateDetector {\n private dependency: string\n private duplicateVersions: string[]\n\n constructor(output: string, dependency: string) {\n this.dependency = dependency\n this.duplicateVersions = this.parseVersions(output, dependency)\n }\n\n detect(): number {\n if (this.duplicateVersions.length > 1) {\n console.log(chalk.yellow(`${EOL}Duplicates found for: ${this.dependency}`))\n const duplicateVersions = this.duplicateVersions.join(`${EOL} `)\n console.log(chalk.grey(` ${duplicateVersions}`, EOL))\n return 1\n } else {\n console.log(`${this.dependency} - OK`)\n return 0\n }\n }\n\n private parseVersions(output: string, dependency: string): string[] {\n // Try pnpm format first (valid JSON array)\n try {\n const parsed: unknown = JSON.parse(output)\n if (Array.isArray(parsed)) {\n return extractPnpmVersions(parsed, dependency)\n }\n } catch {\n // Not pnpm format, try yarn NDJSON format\n }\n\n try {\n const entries: DependencyEntries = trimDependencyVirtualMeta(multiLineToJSONArray(output) as DependencyEntries)\n const versions = new Set<string>()\n for (const entry of entries) {\n for (const key of Object.keys(entry.children)) {\n const version = key.includes('@virtual:') ? undefined : key\n if (version) versions.add(version)\n }\n }\n return [...versions]\n } catch {\n console.warn(chalk.yellow(`Could not parse dependency output for ${dependency}`))\n return []\n }\n }\n}\n","export const multiLineToJSONArray = (output: string): unknown[] => {\n const withCommas = output.replaceAll('\\r\\n', '').replaceAll('\\n', ',')\n const cleanCollection = withCommas.slice(0, Math.max(0, withCommas.length - 1))\n const collection = `[${cleanCollection}]`\n return JSON.parse(collection) as unknown[]\n}\n","import { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../pm/index.ts'\n\ninterface WorkspaceEdge {\n name: string\n type: 'dep' | 'devDep'\n}\n\nexport interface CycleEdge {\n from: string\n to: string\n type: 'dep' | 'devDep'\n}\n\n/**\n * Detects cycles in the workspace dependency graph (including devDependencies).\n * This catches cycles that break `yarn workspaces foreach --topological-dev`\n * but are invisible to source-level import analysis.\n * @returns An array of cycle paths, each represented as an array of edges. Empty if no cycles.\n */\nexport function detectWorkspaceCycles(workspaces: Workspace[]): CycleEdge[][] {\n const workspaceNames = new Set(workspaces.map(ws => ws.name))\n\n // Build adjacency list: edges from deps + devDeps to other workspace packages\n const graph = new Map<string, WorkspaceEdge[]>()\n for (const ws of workspaces) {\n const pkgPath = PATH.join(ws.location, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const deps: Record<string, string> = (pkg.dependencies ?? {}) as Record<string, string>\n const devDeps: Record<string, string> = (pkg.devDependencies ?? {}) as Record<string, string>\n const edges: WorkspaceEdge[] = []\n for (const dep of Object.keys(deps)) {\n if (workspaceNames.has(dep)) edges.push({ name: dep, type: 'dep' })\n }\n for (const dep of Object.keys(devDeps)) {\n if (workspaceNames.has(dep)) edges.push({ name: dep, type: 'devDep' })\n }\n graph.set(ws.name, edges)\n }\n\n // DFS with explicit path stack to correctly extract cycles\n const WHITE = 0\n const GRAY = 1\n const BLACK = 2\n const color = new Map<string, number>()\n const cycles: CycleEdge[][] = []\n // path tracks the current DFS recursion stack as [nodeName, edgeType used to reach it]\n const path: { edgeType?: 'dep' | 'devDep'; name: string }[] = []\n const onPath = new Set<string>()\n\n for (const name of workspaceNames) color.set(name, WHITE)\n\n function dfs(u: string, incomingEdgeType?: 'dep' | 'devDep'): void {\n color.set(u, GRAY)\n onPath.add(u)\n path.push({ name: u, edgeType: incomingEdgeType })\n\n for (const edge of graph.get(u) ?? []) {\n const v = edge.name\n if (onPath.has(v)) {\n // Found a cycle — extract from path\n const cycleEdges: CycleEdge[] = []\n const startIdx = path.findIndex(p => p.name === v)\n for (let i = startIdx; i < path.length - 1; i++) {\n const nextEdgeType = path[i + 1].edgeType ?? 'dep'\n cycleEdges.push({\n from: path[i].name, to: path[i + 1].name, type: nextEdgeType,\n })\n }\n // Close: last node back to v\n cycleEdges.push({\n from: u, to: v, type: edge.type,\n })\n cycles.push(cycleEdges)\n } else if (color.get(v) === WHITE) {\n dfs(v, edge.type)\n }\n }\n\n path.pop()\n onPath.delete(u)\n color.set(u, BLACK)\n }\n\n for (const name of workspaceNames) {\n if (color.get(name) === WHITE) dfs(name)\n }\n\n return cycles\n}\n\nexport function printWorkspaceCycles(cycles: CycleEdge[][]): void {\n for (const cycle of cycles) {\n console.error(chalk.red(' Workspace dependency cycle:'))\n for (const edge of cycle) {\n const edgeLabel = edge.type === 'devDep' ? chalk.yellow('devDep') : chalk.cyan('dep')\n console.error(` ${chalk.white(edge.from)} --(${edgeLabel})--> ${chalk.white(edge.to)}`)\n }\n }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nfunction findProjectRoot(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n\nfunction askYesNo(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stderr })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.trim().toLowerCase().startsWith('y'))\n })\n })\n}\n\nfunction replaceInFile(filePath: string, oldStr: string, newStr: string): boolean {\n if (!existsSync(filePath)) return false\n const content = readFileSync(filePath, 'utf8')\n if (!content.includes(oldStr)) return false\n writeFileSync(filePath, content.replaceAll(oldStr, newStr), 'utf8')\n return true\n}\n\nfunction migrateRootPackageJson(\n pkg: Record<string, Record<string, string>>,\n pkgPath: string,\n oldPackage: string,\n depField: string,\n): void {\n const version = pkg[depField][oldPackage]\n delete pkg[depField][oldPackage]\n pkg[depField]['@xylabs/toolchain'] = version\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.warn(chalk.green(` āœ“ Replaced ${oldPackage} → @xylabs/toolchain in ${depField}`))\n}\n\nfunction migrateWorkspacePackageJson(wsPkgPath: string, dir: string, oldPackage: string): void {\n if (!existsSync(wsPkgPath)) return\n const wsPkg = JSON.parse(readFileSync(wsPkgPath, 'utf8')) as Record<string, Record<string, string>>\n let changed = false\n for (const field of ['dependencies', 'devDependencies', 'peerDependencies'] as const) {\n if (wsPkg[field]?.[oldPackage]) {\n const ver = wsPkg[field][oldPackage]\n delete wsPkg[field][oldPackage]\n wsPkg[field]['@xylabs/toolchain'] = ver\n changed = true\n }\n }\n if (changed) {\n writeFileSync(wsPkgPath, `${JSON.stringify(wsPkg, null, 2)}\\n`, 'utf8')\n console.warn(chalk.green(` āœ“ Updated ${dir}/package.json`))\n }\n}\n\nasync function migrateWorkspaces(root: string, workspacesGlob: unknown, oldPackage: string): Promise<void> {\n if (!Array.isArray(workspacesGlob)) return\n const { globSync } = await import('glob')\n for (const pattern of workspacesGlob) {\n const dirs = globSync(pattern as string, { cwd: root })\n for (const dir of dirs) {\n if (replaceInFile(PATH.join(root, dir, 'xy.config.ts'), oldPackage, '@xylabs/toolchain')) {\n console.warn(chalk.green(` āœ“ Updated ${dir}/xy.config.ts imports`))\n }\n migrateWorkspacePackageJson(PATH.join(root, dir, 'package.json'), dir, oldPackage)\n }\n }\n}\n\nfunction printManualInstructions(oldPackage: string): void {\n console.warn(chalk.gray(' Skipped. To migrate manually:\\n'))\n console.warn(chalk.gray(` 1. Replace \"${oldPackage}\" with \"@xylabs/toolchain\" in package.json`))\n console.warn(chalk.gray(' 2. Update xy.config.ts imports'))\n console.warn(chalk.gray(' 3. Run your package manager install\\n'))\n}\n\nexport async function deprecationMigrate(oldPackage: string): Promise<void> {\n const root = findProjectRoot()\n const pkgPath = PATH.join(root, 'package.json')\n\n if (!existsSync(pkgPath)) return\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, Record<string, string>>\n const depField = pkg.dependencies?.[oldPackage]\n ? 'dependencies'\n : pkg.devDependencies?.[oldPackage]\n ? 'devDependencies'\n : undefined\n\n if (!depField) return\n\n console.warn(chalk.yellow(`\\n⚠ ${oldPackage} is deprecated. Use @xylabs/toolchain instead.\\n`))\n\n const shouldMigrate = await askYesNo(chalk.cyan(' Auto-migrate to @xylabs/toolchain? [y/N] '))\n\n if (!shouldMigrate) {\n printManualInstructions(oldPackage)\n return\n }\n\n migrateRootPackageJson(pkg, pkgPath, oldPackage, depField)\n\n if (replaceInFile(PATH.join(root, 'xy.config.ts'), oldPackage, '@xylabs/toolchain')) {\n console.warn(chalk.green(' āœ“ Updated xy.config.ts imports'))\n }\n\n await migrateWorkspaces(root, pkg.workspaces, oldPackage)\n\n console.warn(chalk.yellow('\\n Run your package manager install to complete the migration.\\n'))\n}\n","export const WINDOWS_NEWLINE_REGEX = /\\r\\n/g\nexport const CROSS_PLATFORM_NEWLINE = '\\n'\n","import type { PathLike, WriteFileOptions } from 'node:fs'\nimport {\n existsSync, readFileSync,\n writeFileSync,\n} from 'node:fs'\n\nimport { notEmpty } from '../string/index.ts'\nimport { CROSS_PLATFORM_NEWLINE, WINDOWS_NEWLINE_REGEX } from './constants.ts'\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const readLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n existsSync(uri)\n ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE)\n : []\n\nexport const readNonEmptyLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n readLines(uri, options).filter(notEmpty)\n\nexport const writeLines = (uri: PathLike, lines: string[], options: WriteFileOptions = defaultReadFileSyncOptions) => {\n const existing = existsSync(uri) ? readFileSync(uri, options) : undefined\n const desired = lines.join(CROSS_PLATFORM_NEWLINE)\n // Check if the file is different before writing\n if (existing !== desired) writeFileSync(uri, desired, options)\n}\n","export const empty = (value?: string): boolean => value?.trim().length === 0\nexport const notEmpty = (value?: string): boolean => !empty(value)\n","export const union = (a: string[], b: string[]): Set<string> => new Set([...new Set(a), ...new Set(b)])\n","export type ReadFileSyncOptions = BufferEncoding | {\n encoding: BufferEncoding\n flags?: string\n}\n\nexport const defaultReadFileSyncOptions: ReadFileSyncOptions = { encoding: 'utf8' }\n","import type { PathLike } from 'node:fs'\nimport { existsSync, readFileSync } from 'node:fs'\n\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const tryReadFileSync = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string | undefined => {\n return existsSync(uri) ? readFileSync(uri, options) : undefined\n}\n","export function fillTemplate(template: string, data: Record<string, string>): string {\n return template.replaceAll(/\\{\\{(.*?)\\}\\}/g, (_, key: string) => data[key.trim()] ?? '')\n}\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { readNonEmptyLines, writeLines } from './file/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\nimport { union } from './string/index.ts'\n\nconst localeCompare = (a: string, b: string) => a.localeCompare(b)\n\nconst mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].toSorted(localeCompare)\n\nexport const generateIgnoreFiles = (filename: string, pkg?: string) => {\n console.log(chalk.green(`Generate ${filename} Files`))\n const cwd = INIT_CWD()\n const pm = getPackageManager()\n const singleWorkspace = pkg ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const readEntries = (location: string): string[] => readNonEmptyLines(`${location}/${filename}`)\n const writeEntries = (location: string, entries: string[]) => writeLines(`${location}/${filename}`, entries)\n const results = workspaces.map(({ location, name }) => {\n try {\n writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)))\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(`Generate ${filename} Files [${name}] [${error.message}]`)\n return 1\n }\n })\n const succeeded = results.every(result => result === 0)\n return succeeded ? 0 : 1\n}\n","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import { execFile } from 'node:child_process'\nimport FS, { readFileSync } from 'node:fs'\nimport {\n mkdir, readFile, writeFile,\n} from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\nimport { promisify } from 'node:util'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport { fillTemplate } from './fillTemplate.ts'\nimport { INIT_CWD } from './initCwd.ts'\n\nconst execFileAsync = promisify(execFile)\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst readmeTemplatesDir = PATH.resolve(packageRoot, 'templates', 'readme')\n\ninterface GenerateReadmeFilesParams {\n jobs: number\n logoLinkUrl?: string\n logoUrl?: string\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nfunction fillReadmeTemplate(template: string, data: Record<string, string>): string {\n const additionalData: Record<string, string> = { ...data, safeName: data.name.replaceAll('/', '__').replaceAll('@', '') }\n return fillTemplate(template, additionalData)\n}\n\nasync function generateTypedoc(packageLocation: string, entryPoints: string[]): Promise<string> {\n const tempDir = PATH.join(packageLocation, '.temp-typedoc')\n\n try {\n if (!FS.existsSync(tempDir)) {\n FS.mkdirSync(tempDir, { recursive: true })\n }\n\n const typedocConfig = {\n disableSources: true,\n entryPointStrategy: 'expand',\n entryPoints: entryPoints.map(ep => PATH.resolve(packageLocation, ep)),\n excludeExternals: true,\n excludeInternal: true,\n excludePrivate: true,\n githubPages: false,\n hideBreadcrumbs: true,\n hideGenerator: true,\n hidePageTitle: true,\n out: tempDir,\n plugin: ['typedoc-plugin-markdown'],\n readme: 'none',\n skipErrorChecking: true,\n sort: ['source-order'],\n theme: 'markdown',\n useCodeBlocks: true,\n }\n\n const typedocJsonPath = PATH.join(tempDir, 'typedoc.json')\n FS.writeFileSync(typedocJsonPath, JSON.stringify(typedocConfig, null, 2))\n\n try {\n await execFileAsync('npx', ['typedoc', '--options', typedocJsonPath], { cwd: process.cwd() })\n } catch {\n return ''\n }\n\n return consolidateMarkdown(tempDir)\n } catch {\n return ''\n } finally {\n try {\n FS.rmSync(tempDir, { force: true, recursive: true })\n } catch {\n // ignore cleanup errors\n }\n }\n}\n\nfunction consolidateMarkdown(tempDir: string): string {\n let consolidated = '## Reference\\n\\n'\n\n const mainReadmePath = PATH.join(tempDir, 'README.md')\n if (FS.existsSync(mainReadmePath)) {\n const mainContent = FS.readFileSync(mainReadmePath, 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n\n consolidated += mainContent + '\\n\\n'\n }\n\n consolidated += processDirectory(tempDir)\n\n return consolidated\n .replaceAll(/\\n\\n\\n+/g, '\\n\\n')\n .replaceAll(/^#### /gm, '### ')\n .replaceAll(/^##### /gm, '#### ')\n .replaceAll(/^###### /gm, '##### ')\n}\n\nfunction processDirectory(dir: string, level = 0): string {\n const indent = ' '.repeat(level)\n let content = ''\n\n try {\n const items = FS.readdirSync(dir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.isDirectory()) continue\n if (item.name === 'README.md' || !item.name.endsWith('.md')) continue\n\n const fileContent = FS.readFileSync(PATH.join(dir, item.name), 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n const moduleName = item.name.replace('.md', '')\n\n content += `\\n\\n${indent}### <a id=\"${moduleName}\"></a>${moduleName}\\n\\n`\n content += fileContent\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n }\n\n for (const item of items) {\n if (!item.isDirectory()) continue\n if (item.name === 'spec' || item.name.includes('.spec')) continue\n\n content += `\\n\\n${indent}### ${item.name}\\n`\n content += processDirectory(PATH.join(dir, item.name), level + 1)\n }\n } catch {\n // skip unreadable directories\n }\n\n return content\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport const DEFAULT_README_TEMPLATE = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.template.md'), 'utf8')\nexport const DEFAULT_README_BODY = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.body.md'), 'utf8')\n\nexport function applyLogoConfig(template: string, logoUrl?: string, logoLinkUrl?: string): string {\n let result = template\n if (logoUrl) {\n result = result.replace(/\\[logo]: .+/, `[logo]: ${logoUrl}`)\n if (logoLinkUrl) {\n result = result.replace(/\\[!\\[logo]\\[]][^)]*\\)/, `[![logo][]](${logoLinkUrl})`)\n }\n } else {\n result = result.replace(/\\[!\\[logo]\\[]][^\\n]*\\n*/, '')\n result = result.replace(/\\[logo]: [^\\n]*\\n?/, '')\n }\n return result\n}\n\nexport function resolveTemplatePath(templatePath?: string): string {\n const cwd = INIT_CWD()\n return templatePath ?? PATH.join(cwd, '.xy', 'README.template.md')\n}\n\nasync function loadOrCreateTemplate(resolvedTemplatePath: string): Promise<{\n created: boolean\n template: string\n}> {\n try {\n const template = await readFile(resolvedTemplatePath, 'utf8')\n return { created: false, template }\n } catch {\n console.log(chalk.yellow(`Template not found: ${resolvedTemplatePath}`))\n const shouldCreate = await askConfirmation('Would you like to create a stock template? (y/N) ')\n if (!shouldCreate) {\n throw new Error('Template creation declined')\n }\n const template = DEFAULT_README_TEMPLATE\n await scaffoldTemplate(resolvedTemplatePath, template)\n return { created: true, template }\n }\n}\n\nexport async function scaffoldTemplate(resolvedTemplatePath: string, template: string): Promise<void> {\n const xyDir = PATH.dirname(resolvedTemplatePath)\n await mkdir(xyDir, { recursive: true })\n await writeFile(resolvedTemplatePath, template)\n console.log(chalk.green(`Created template: ${resolvedTemplatePath}`))\n const bodyPath = PATH.join(xyDir, 'README.body.md')\n await writeFile(bodyPath, DEFAULT_README_BODY)\n console.log(chalk.green(`Created body template: ${bodyPath}`))\n}\n\nasync function resolveBody(location: string, defaultBody: string): Promise<string> {\n const localBodyPath = PATH.join(location, 'README.body.md')\n try {\n return await readFile(localBodyPath, 'utf8')\n } catch {\n return defaultBody\n }\n}\n\nasync function generateReadmeForWorkspace(\n location: string,\n name: string,\n template: string,\n defaultBody: string,\n typedoc: boolean,\n verbose: boolean,\n pm: string,\n): Promise<boolean> {\n try {\n const pkgJsonPath = PATH.join(location, 'package.json')\n const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) as Record<string, string>\n const body = await resolveBody(location, defaultBody)\n const typedocContent = typedoc ? await generateTypedoc(location, ['src/index*.ts']) : ''\n const readmeContent = fillReadmeTemplate(template, {\n ...pkgJson, body, pm, typedoc: typedocContent,\n })\n await writeFile(PATH.join(location, 'README.md'), readmeContent)\n if (verbose) console.log(chalk.green(` ${name}`))\n return true\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.yellow(` Skipped ${location}: ${error.message}`))\n return false\n }\n}\n\nimport {\n installOutputCapture, outputStorage, runWithConcurrency,\n} from './concurrency.ts'\n\ninterface CapturedResult {\n output: string[]\n success: boolean\n}\n\nasync function loadDefaultBody(resolvedTemplatePath: string): Promise<string> {\n const xyBodyPath = PATH.join(PATH.dirname(resolvedTemplatePath), 'README.body.md')\n try {\n return await readFile(xyBodyPath, 'utf8')\n } catch {\n return DEFAULT_README_BODY\n }\n}\n\nfunction flushResults(results: CapturedResult[]): boolean {\n let failed = false\n for (const { output, success } of results) {\n for (const line of output) {\n process.stdout.write(line)\n }\n if (!success) failed = true\n }\n return failed\n}\n\nexport async function generateReadmeFiles({\n jobs, logoLinkUrl, logoUrl, pkg, templatePath, typedoc = false, verbose = false,\n}: GenerateReadmeFilesParams): Promise<number> {\n console.log(chalk.green('Generate README Files'))\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n\n let template: string\n let templateCreated: boolean\n try {\n ({ template, created: templateCreated } = await loadOrCreateTemplate(resolvedTemplatePath))\n } catch {\n return 1\n }\n\n template = applyLogoConfig(template, logoUrl, logoLinkUrl)\n\n if (templateCreated) {\n console.log(chalk.green('Generating README files for all packages...'))\n }\n\n const defaultBody = await loadDefaultBody(resolvedTemplatePath)\n const pmName = detectPackageManager()\n const pm = getPackageManager()\n const singleWorkspace = pkg && !templateCreated ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const concurrency = jobs\n const results: CapturedResult[] = Array.from({ length: workspaces.length }, () => ({ output: [], success: true }))\n\n installOutputCapture()\n\n const start = performance.now()\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n const success = await generateReadmeForWorkspace(ws.location, ws.name, template, defaultBody, typedoc, verbose, pmName)\n results[i] = { output, success }\n })\n },\n )\n\n const failed = flushResults(results)\n const ms = performance.now() - start\n console.log(chalk.blue(`Generated ${workspaces.length} README(s) in ${ms.toFixed(0)}ms`))\n\n return failed ? 1 : 0\n}\n","import { readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'gitignore')\n\nexport const gitignoreTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'template.gitignore'), 'utf8')\n","// Auto-generated — run `yarn update-latest-versions` to refresh\n// Source: nodejs.org/dist/index.json, npm registry\n\nexport const latestVersions = {\n node: '24.14.1',\n nodeLtsCodename: 'Krypton',\n npm: '11.11.0',\n pnpm: '10.33.0',\n yarn: '4.13.0',\n} as const\n","import chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { TypeScriptLoader } from 'cosmiconfig-typescript-loader'\nimport deepmerge from 'deepmerge'\n\nlet config: Record<string, unknown>\nlet rootConfigPath: string | undefined\n\nconst workspaceConfigCache = new Map<string, Record<string, unknown>>()\nconst deprecationWarned = new Set<string>()\n\nfunction createExplorer() {\n return cosmiconfig('xy', { cache: true, loaders: { '.ts': TypeScriptLoader() } })\n}\n\nexport const loadConfig = async <T extends object>(params?: T): Promise<T> => {\n if (config === undefined) {\n const cosmicConfigResult = await createExplorer().search()\n config = (cosmicConfigResult?.config ?? {}) as Record<string, unknown>\n rootConfigPath = cosmicConfigResult?.filepath\n const configFilePath = cosmicConfigResult?.filepath\n if (configFilePath !== undefined) {\n console.log(chalk.green(`Loaded config from ${configFilePath}`))\n if (config.verbose) {\n console.log(chalk.gray(`${JSON.stringify(config, null, 2)}`))\n }\n }\n }\n return deepmerge(config, params ?? {}) as T\n}\n\n/**\n * Loads the xy.config from a specific workspace directory.\n * Returns an empty object if the workspace has no config or if\n * the found config is the root config (avoids double-applying).\n */\nasync function loadWorkspaceConfig(workspaceDir: string): Promise<Record<string, unknown>> {\n const cached = workspaceConfigCache.get(workspaceDir)\n if (cached !== undefined) return cached\n\n const result = await createExplorer().search(workspaceDir)\n\n // If no config found or it's the root config, no workspace override\n if (!result || result.filepath === rootConfigPath) {\n workspaceConfigCache.set(workspaceDir, {})\n return {}\n }\n\n const wsConfig = (result.config ?? {}) as Record<string, unknown>\n workspaceConfigCache.set(workspaceDir, wsConfig)\n return wsConfig\n}\n\n/** Deprecated top-level fields that should be under `commands`. */\nconst DEPRECATED_COMMAND_FIELDS = new Set(['deplint', 'publint'])\n\n/**\n * Resolves a command's config field from a config object.\n * Prefers `commands.[name]` over top-level `[name]`.\n * Warns once per config file when a deprecated top-level field is used.\n */\nfunction resolveCommandField(\n cfg: Record<string, unknown>,\n commandName: string,\n configPath?: string,\n): Record<string, unknown> {\n const commands = cfg.commands as Record<string, unknown> | undefined\n const fromCommands = commands?.[commandName]\n const fromTopLevel = cfg[commandName]\n\n if (fromCommands !== undefined && typeof fromCommands === 'object') {\n return fromCommands as Record<string, unknown>\n }\n\n if (fromTopLevel !== undefined && typeof fromTopLevel === 'object'\n && DEPRECATED_COMMAND_FIELDS.has(commandName)) {\n const key = `${configPath ?? 'unknown'}:${commandName}`\n if (!deprecationWarned.has(key)) {\n deprecationWarned.add(key)\n console.warn(chalk.yellow(\n `[xy] Deprecated: top-level \"${commandName}\" in ${configPath ?? 'xy.config'} — move to \"commands.${commandName}\"`,\n ))\n }\n return fromTopLevel as Record<string, unknown>\n }\n\n return {}\n}\n\n/**\n * Loads a command-specific config merged from root and workspace levels.\n * The root config provides defaults; the workspace config extends/overrides.\n * Arrays (e.g. `exclude`) are unioned and maps (e.g. `packages`) are merged\n * via deepmerge, with workspace entries overriding root entries for the same key.\n */\nexport async function loadWorkspaceCommandConfig<C>(\n workspaceDir: string,\n commandName: string,\n): Promise<C> {\n // Ensure root config is loaded\n const root = await loadConfig()\n const rootCmd = resolveCommandField(root as Record<string, unknown>, commandName, rootConfigPath)\n\n const wsConfig = await loadWorkspaceConfig(workspaceDir)\n const wsConfigPath = workspaceConfigCache.has(workspaceDir) ? workspaceDir : undefined\n const wsCmd = resolveCommandField(wsConfig, commandName, wsConfigPath)\n\n return deepmerge(rootCmd, wsCmd) as C\n}\n","import { readFileSync } from 'node:fs'\nimport path from 'node:path'\n\nimport { INIT_CWD } from './initCwd.ts'\n\nexport function packageName(): string | undefined {\n if (process.env.npm_package_name) {\n return process.env.npm_package_name\n }\n try {\n const pkgPath = path.join(INIT_CWD(), 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return pkg.name as string | undefined\n } catch {\n return undefined\n }\n}\n","import { readFileSync } from 'node:fs'\n\nexport const parsedPackageJSON = (path?: string): Record<string, unknown> => {\n const pathToPackageJSON = path ?? process.env.npm_package_json ?? ''\n const packageJSON = readFileSync(pathToPackageJSON).toString()\n return JSON.parse(packageJSON) as Record<string, unknown>\n}\n","import { readdirSync, readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst repoTemplatesDir = PATH.resolve(packageRoot, 'templates', 'repo')\n\nexport interface TemplateFile {\n content: string\n relativePath: string\n}\n\nfunction collectFiles(dir: string, prefix: string): TemplateFile[] {\n const results: TemplateFile[] = []\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isDirectory()) {\n results.push(...collectFiles(PATH.resolve(dir, entry.name), rel))\n } else {\n results.push({\n content: readFileSync(PATH.resolve(dir, entry.name), 'utf8'),\n relativePath: rel,\n })\n }\n }\n return results\n}\n\nexport function loadRepoTemplateFiles(template: string, section: string): TemplateFile[] {\n const dir = PATH.resolve(repoTemplatesDir, template, section)\n return collectFiles(dir, '')\n}\n\nexport function listRepoTemplates(): string[] {\n return readdirSync(repoTemplatesDir, { withFileTypes: true })\n .filter(entry => entry.isDirectory())\n .map(entry => entry.name)\n}\n","import { spawnSync } from 'node:child_process'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager } from '../pm/index.ts'\n\nexport function runInstall(cwd?: string): boolean {\n const pm = detectPackageManager()\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n","import { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { packageName } from './packageName.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = packageName()\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import { spawn } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { packageName } from './packageName.ts'\nimport { safeExitAsync } from './safeExit.ts'\n\nexport const runStepAsync = (name: string, step: ScriptStep, exitOnFail = true, message?: string) => {\n return new Promise<number>((resolve) => {\n const [command, args, config] = step\n if (message) {\n console.log(chalk.gray(message))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n spawn(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).on('close', (code) => {\n if (code) {\n console.error(\n chalk.red(\n `Command Exited With Non-Zero Result [${chalk.gray(code)}] | ${chalk.yellow(command)} ${chalk.white(\n Array.isArray(args) ? args.join(' ') : args,\n )}`,\n ),\n )\n checkResult(name, code, 'error', exitOnFail)\n resolve(code)\n } else {\n resolve(0)\n }\n })\n })\n}\n\nexport const runStepsAsync = async (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]) => {\n return await safeExitAsync(async () => {\n const pkgName = packageName()\n console.log(chalk.green(`${name} [${pkgName}]`))\n let result = 0\n for (const [i, step] of steps.entries()) {\n result += await runStepAsync(name, step, exitOnFail, messages?.[i])\n }\n return result\n })\n}\n","import { getPackageManager } from '../pm/index.ts'\nimport { runSteps } from './runSteps.ts'\n\nexport const runXy = (command: string) => {\n const pm = getPackageManager()\n return runSteps(\n `XY [${command}]`,\n [pm.runXy([command, ...process.argv.filter((value, index) => (index > 1 ? value : undefined))])],\n )\n}\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const runXyWithWarning = (command: string) => {\n const pm = getPackageManager()\n const commandString = `${pm.command} ${command}`\n const commandXyString = `${pm.command} xy ${command}`\n console.warn(chalk.yellow(`WARNING: [${chalk.white(commandString)}] is deprecated for XY Labs Scripts.`))\n console.warn(chalk.gray(`Did you mean [${chalk.magenta(commandXyString)}]?`))\n return 1\n}\n","import { spawnSync } from 'node:child_process'\nimport { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\n\n/**\n * Attempts to run a local root package.json script instead of the built-in\n * xy command. Returns the exit code if the override ran, or undefined if\n * no override applies (no matching script or recursion guard).\n */\nexport function tryRunLocalScript(commandName: string): number | undefined {\n // Prevent infinite recursion if the local script calls yarn xy\n if (process.env.XY_LOCAL_SCRIPT === '1') return undefined\n\n // Check if root package.json has a matching script\n const rootPkgPath = PATH.resolve(process.cwd(), 'package.json')\n let rootPkg: { scripts?: Record<string, string> }\n try {\n rootPkg = JSON.parse(readFileSync(rootPkgPath, 'utf8')) as { scripts?: Record<string, string> }\n } catch {\n return undefined\n }\n\n if (!rootPkg.scripts?.[commandName]) return undefined\n\n const extraArgs = process.argv.slice(process.argv.indexOf(commandName) + 1)\n console.log(chalk.blue(`Delegating \"${commandName}\" to local script`))\n const pm = getPackageManager()\n const result = spawnSync(pm.command, ['run', commandName, ...extraArgs], {\n cwd: process.cwd(),\n encoding: 'utf8',\n env: {\n FORCE_COLOR: '3', ...process.env, XY_LOCAL_SCRIPT: '1',\n },\n shell: true,\n stdio: 'inherit',\n })\n return result.status ?? 1\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport type { SelectedUpdate } from './interfaces.ts'\n\nexport function applyUpdates(\n cwd: string,\n workspaces: Workspace[],\n updates: SelectedUpdate[],\n): number {\n const updateMap = new Map(updates.map(u => [u.name, u]))\n let modified = 0\n\n for (const ws of workspaces) {\n const pkgPath = PATH.resolve(cwd, ws.location, 'package.json')\n let content: string\n try {\n content = readFileSync(pkgPath, 'utf8')\n } catch {\n continue\n }\n\n const pkg = JSON.parse(content) as Record<string, Record<string, string>>\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies', 'peerDependencies'] as const) {\n const deps = pkg[depField]\n if (!deps) continue\n\n for (const [name, currentRange] of Object.entries(deps)) {\n const update = updateMap.get(name)\n if (!update) continue\n\n // Preserve the range prefix (~, ^, etc.)\n const prefix = (/^([~^]|>=?|<=?)/.exec(currentRange))?.[0] ?? '~'\n const newRange = `${prefix}${update.targetVersion}`\n\n if (deps[name] !== newRange) {\n deps[name] = newRange\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`)\n modified++\n console.log(chalk.gray(` Updated ${ws.name}`))\n }\n }\n\n return modified\n}\n","import { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport type { DeclaredDep, DepType } from './interfaces.ts'\n\nconst DEP_FIELDS: DepType[] = ['dependencies', 'devDependencies', 'peerDependencies']\n\nexport function collectWorkspaceDeps(\n cwd: string,\n workspaces: Workspace[],\n workspaceNames: Set<string>,\n): Map<string, DeclaredDep> {\n const depMap = new Map<string, DeclaredDep>()\n\n for (const ws of workspaces) {\n const pkgPath = PATH.resolve(cwd, ws.location, 'package.json')\n let pkg: Record<string, unknown>\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n continue\n }\n\n for (const depField of DEP_FIELDS) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [name, range] of Object.entries(deps)) {\n if (workspaceNames.has(name)) continue\n if (range.startsWith('workspace:')) continue\n\n const existing = depMap.get(name)\n if (existing) {\n if (!existing.workspaces.includes(ws.name)) {\n existing.workspaces.push(ws.name)\n }\n if (!existing.depTypes.includes(depField)) {\n existing.depTypes.push(depField)\n }\n if (!existing.ranges.includes(range)) {\n existing.ranges.push(range)\n }\n } else {\n depMap.set(name, {\n depTypes: [depField],\n name,\n ranges: [range],\n workspaces: [ws.name],\n })\n }\n }\n }\n }\n\n return depMap\n}\n","import { runWithConcurrency } from '../concurrency.ts'\nimport type { RegistryInfo } from './interfaces.ts'\n\nconst REGISTRY_BASE = 'https://registry.npmjs.org'\n\nexport async function fetchRegistryInfo(packageName: string): Promise<RegistryInfo> {\n try {\n const url = `${REGISTRY_BASE}/${encodeURIComponent(packageName)}`\n const res = await fetch(url, { headers: { Accept: 'application/vnd.npm.install-v1+json' } })\n if (!res.ok) {\n return { distTags: {}, versions: [] }\n }\n const data = await res.json() as {\n 'dist-tags'?: Record<string, string>\n 'versions'?: Record<string, unknown>\n }\n return {\n distTags: data['dist-tags'] ?? {},\n versions: Object.keys(data.versions ?? {}),\n }\n } catch {\n return { distTags: {}, versions: [] }\n }\n}\n\nexport async function fetchAllRegistryInfo(\n packageNames: string[],\n concurrency = 16,\n): Promise<Map<string, RegistryInfo>> {\n const results = new Map<string, RegistryInfo>()\n let completed = 0\n const total = packageNames.length\n\n await runWithConcurrency(packageNames, concurrency, async (name) => {\n results.set(name, await fetchRegistryInfo(name))\n completed++\n if (completed % 25 === 0 || completed === total) {\n process.stderr.write(`\\r Fetched ${completed}/${total} packages...`)\n }\n })\n\n if (total > 0) {\n process.stderr.write('\\n')\n }\n\n return results\n}\n","import {\n createPrompt,\n ExitPromptError,\n isDownKey,\n isEnterKey,\n isSpaceKey,\n isUpKey,\n useKeypress,\n useRef,\n useState,\n} from '@inquirer/core'\nimport chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { ResolvedDep, SelectedUpdate } from './interfaces.ts'\n\n// Selection: -1 = skip, 0 = wanted, 1 = latest, 2 = next\ntype Selection = -1 | 0 | 1 | 2\n\ninterface ColumnWidths {\n current: number\n latest: number\n name: number\n next: number\n wanted: number\n}\n\nfunction versionColor(version: string | undefined, current: string | undefined): (text: string) => string {\n if (!version || !current) return chalk.gray\n if (version === current) return chalk.gray\n const diff = semver.diff(current, version)\n if (diff === 'major' || diff === 'premajor') return chalk.red\n if (diff === 'minor' || diff === 'preminor') return chalk.yellow\n return chalk.green\n}\n\nfunction pad(raw: string, colored: string, width: number): string {\n return colored + ' '.repeat(Math.max(0, width - raw.length))\n}\n\nfunction dot(selected: boolean): string {\n return selected ? chalk.green('ā—') : chalk.dim('ā—‹')\n}\n\nfunction renderHeader(w: ColumnWidths): string {\n const header = [\n ' ',\n chalk.bold('Package'.padEnd(w.name)),\n chalk.bold('Current'.padEnd(w.current)),\n chalk.bold(' Wanted'.padEnd(w.wanted + 2)),\n chalk.bold(' Latest'.padEnd(w.latest + 2)),\n chalk.bold(' Next/RC'.padEnd(w.next + 2)),\n ].join(' ')\n const totalWidth = w.name + w.current + w.wanted + w.latest + w.next + 24\n return `${header}\\n${chalk.gray('─'.repeat(totalWidth))}`\n}\n\nfunction renderRow(\n dep: ResolvedDep,\n selection: Selection,\n active: boolean,\n w: ColumnWidths,\n): string {\n const pointer = active ? chalk.cyan('āÆ') : ' '\n const rawName = dep.name\n const name = active ? chalk.white(rawName) : chalk.gray(rawName)\n const rawCurrent = dep.current ?? '-'\n const current = chalk.gray(rawCurrent)\n\n const rawWanted = dep.wanted ?? '-'\n const wantedColorFn = dep.wanted ? versionColor(dep.wanted, dep.current) : chalk.gray\n const wantedDot = dep.wanted ? dot(selection === 0) : ' '\n const wanted = `${wantedDot} ${pad(rawWanted, wantedColorFn(rawWanted), w.wanted)}`\n\n const rawLatest = dep.latest ?? '-'\n const latestColorFn = dep.latest ? versionColor(dep.latest, dep.current) : chalk.gray\n const latestDot = dep.latest ? dot(selection === 1) : ' '\n const latest = `${latestDot} ${pad(rawLatest, latestColorFn(rawLatest), w.latest)}`\n\n const rawNext = dep.next ?? '-'\n const nextColorFn = dep.next ? versionColor(dep.next, dep.current) : chalk.gray\n const nextDot = dep.next ? dot(selection === 2) : ' '\n const next = `${nextDot} ${pad(rawNext, nextColorFn(rawNext), w.next)}`\n\n return `${pointer} ${pad(rawName, name, w.name)} ${pad(rawCurrent, current, w.current)} ${wanted} ${latest} ${next}`\n}\n\nfunction getAvailableSelections(dep: ResolvedDep): Selection[] {\n const available: Selection[] = [-1]\n if (dep.wanted) available.push(0)\n if (dep.latest && dep.latest !== dep.wanted) available.push(1)\n if (dep.next) available.push(2)\n return available\n}\n\nfunction getTargetVersion(dep: ResolvedDep, selection: Selection): string | undefined {\n if (selection === 0) return dep.wanted\n if (selection === 1) return dep.latest\n if (selection === 2) return dep.next\n return undefined\n}\n\nfunction computeWidths(rows: ResolvedDep[]): ColumnWidths {\n let name = 7\n let current = 7\n let wanted = 6\n let latest = 6\n let next = 7\n for (const dep of rows) {\n name = Math.max(name, dep.name.length)\n current = Math.max(current, (dep.current ?? '-').length)\n wanted = Math.max(wanted, (dep.wanted ?? '-').length)\n latest = Math.max(latest, (dep.latest ?? '-').length)\n next = Math.max(next, (dep.next ?? '-').length)\n }\n return {\n current,\n latest,\n name,\n next,\n wanted,\n }\n}\n\nfunction renderPage(\n rows: ResolvedDep[],\n cursor: number,\n selections: Selection[],\n w: ColumnWidths,\n pageSize: number,\n): string {\n const total = rows.length\n let start = 0\n if (total > pageSize) {\n start = Math.max(0, Math.min(cursor - Math.floor(pageSize / 2), total - pageSize))\n }\n const end = Math.min(start + pageSize, total)\n\n const lines: string[] = []\n for (let i = start; i < end; i++) {\n lines.push(renderRow(rows[i], selections[i], i === cursor, w))\n }\n\n if (total > pageSize) {\n if (start > 0) lines.unshift(chalk.dim(' ↑ more'))\n if (end < total) lines.push(chalk.dim(' ↓ more'))\n }\n\n return lines.join('\\n')\n}\n\nconst updoPrompt = createPrompt<SelectedUpdate[], { rows: ResolvedDep[] }>((config, done) => {\n const { rows } = config\n const [cursor, setCursor] = useState(0)\n const [tick, setTick] = useState(0)\n const availableSelections = useRef(rows.map(r => getAvailableSelections(r)))\n const selections = useRef<Selection[]>(rows.map(() => -1))\n const widths = useRef(computeWidths(rows))\n\n useKeypress((key) => {\n if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {\n done([])\n return\n }\n\n if (isEnterKey(key)) {\n const results: SelectedUpdate[] = []\n for (const [i, dep] of rows.entries()) {\n const version = getTargetVersion(dep, selections.current[i])\n if (version) {\n results.push({\n depTypes: dep.depTypes,\n name: dep.name,\n targetVersion: version,\n workspaces: dep.workspaces,\n })\n }\n }\n done(results)\n return\n }\n\n if (isUpKey(key)) {\n setCursor(Math.max(0, cursor - 1))\n } else if (isDownKey(key)) {\n setCursor(Math.min(rows.length - 1, cursor + 1))\n } else if (isSpaceKey(key)) {\n const available = availableSelections.current[cursor]\n const currentSel = selections.current[cursor]\n const currentIdx = available.indexOf(currentSel)\n const nextIdx = (currentIdx + 1) % available.length\n selections.current[cursor] = available[nextIdx]\n setTick(tick + 1)\n }\n })\n\n const w = widths.current\n const header = renderHeader(w)\n const page = renderPage(rows, cursor, selections.current, w, 20)\n\n const selectedCount = selections.current.filter(s => s >= 0).length\n const status = chalk.gray(` ${selectedCount} selected ↑/↓ navigate space cycle version enter confirm`)\n\n return `${header}\\n${page}\\n${status}`\n})\n\nexport async function interactiveSelect(\n deps: ResolvedDep[],\n): Promise<SelectedUpdate[]> {\n const updatable = deps.filter(d => d.updateAvailable)\n if (updatable.length === 0) {\n console.log(chalk.green('\\nAll packages are up to date!'))\n return []\n }\n\n if (!process.stdout.isTTY) {\n console.log(chalk.yellow('Non-interactive environment detected, skipping selection.'))\n return []\n }\n\n try {\n return await updoPrompt({ rows: updatable })\n } catch (error) {\n if (error instanceof ExitPromptError) {\n return []\n }\n throw error\n }\n}\n","import chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { ResolvedDep } from './interfaces.ts'\n\ninterface Column {\n color: (value: string, dep: ResolvedDep) => string\n header: string\n value: (dep: ResolvedDep) => string\n}\n\nfunction versionColor(version: string | undefined, current: string | undefined): string {\n if (!version || !current) return chalk.gray(version ?? '-')\n if (version === current) return chalk.gray(version)\n const diff = semver.diff(current, version)\n if (diff === 'major' || diff === 'premajor') return chalk.red(version)\n if (diff === 'minor' || diff === 'preminor') return chalk.yellow(version)\n return chalk.green(version)\n}\n\nconst columns: Column[] = [\n {\n color: (_v, dep) => dep.updateAvailable ? chalk.white(dep.name) : chalk.gray(dep.name),\n header: 'Package',\n value: dep => dep.name,\n },\n {\n color: (_v, dep) => chalk.gray(dep.current ?? '-'),\n header: 'Current',\n value: dep => dep.current ?? '-',\n },\n {\n color: (_v, dep) => versionColor(dep.wanted, dep.current),\n header: 'Wanted',\n value: dep => dep.wanted ?? '-',\n },\n {\n color: (_v, dep) => versionColor(dep.latest, dep.current),\n header: 'Latest',\n value: dep => dep.latest ?? '-',\n },\n {\n color: (_v, dep) => versionColor(dep.next, dep.current),\n header: 'Next/RC',\n value: dep => dep.next ?? '-',\n },\n {\n color: (_v, dep) => chalk.gray(dep.depTypes.join(', ')),\n header: 'Type',\n value: dep => dep.depTypes.join(', '),\n },\n]\n\nexport function renderTable(deps: ResolvedDep[]): void {\n const updatable = deps.filter(d => d.updateAvailable)\n if (updatable.length === 0) {\n console.log(chalk.green('\\nAll packages are up to date!'))\n return\n }\n\n // Calculate column widths\n const widths = columns.map((col) => {\n let maxData = 0\n for (const dep of updatable) {\n maxData = Math.max(maxData, col.value(dep).length)\n }\n return Math.max(col.header.length, maxData)\n })\n\n // Render header\n const header = columns.map((col, i) => chalk.bold(col.header.padEnd(widths[i]))).join(' ')\n console.log(`\\n${header}`)\n let totalWidth = -2\n for (const w of widths) {\n totalWidth += w + 2\n }\n console.log(chalk.gray('─'.repeat(totalWidth)))\n\n // Render rows\n for (const dep of updatable) {\n const row = columns.map((col, i) => {\n const raw = col.value(dep)\n const colored = col.color(raw, dep)\n // Pad based on raw length, not colored length (chalk adds escape codes)\n const padding = widths[i] - raw.length\n return colored + ' '.repeat(Math.max(0, padding))\n }).join(' ')\n console.log(row)\n }\n\n console.log()\n}\n","import semver from 'semver'\n\nimport type {\n DeclaredDep, RegistryInfo, ResolvedDep,\n} from './interfaces.ts'\n\nfunction computeWanted(info: RegistryInfo, ranges: string[]): string | undefined {\n const candidates = ranges.map(range => semver.maxSatisfying(info.versions, range))\n const valid = candidates.filter((v): v is string => v !== null)\n if (valid.length === 0) return undefined\n\n let min = valid[0]\n for (const v of valid) {\n if (semver.lt(v, min)) min = v\n }\n return min\n}\n\nfunction hasNewerVersion(version: string | undefined, current: string): boolean {\n return version !== undefined && semver.gt(version, current)\n}\n\nfunction isUpdateAvailable(current: string | undefined, wanted: string | undefined, latest: string | undefined, next: string | undefined): boolean {\n if (!current) return false\n return hasNewerVersion(wanted, current)\n || hasNewerVersion(latest, current)\n || hasNewerVersion(next, current)\n}\n\nexport function resolveVersions(\n deps: Map<string, DeclaredDep>,\n registry: Map<string, RegistryInfo>,\n installedVersions: Map<string, string>,\n): ResolvedDep[] {\n const resolved: ResolvedDep[] = []\n\n for (const [name, dep] of deps) {\n const info = registry.get(name)\n const current = installedVersions.get(name)\n const wanted = info ? computeWanted(info, dep.ranges) : undefined\n const latest = info?.distTags.latest\n const next = info?.distTags.next ?? info?.distTags.rc\n const updateAvailable = isUpdateAvailable(current, wanted, latest, next)\n\n resolved.push({\n current,\n declaredRange: dep.ranges.length === 1 ? dep.ranges[0] : dep.ranges.join(' | '),\n depTypes: dep.depTypes,\n latest,\n name,\n next: next && latest && next !== latest ? next : undefined,\n updateAvailable,\n wanted: wanted && current && wanted !== current ? wanted : undefined,\n workspaces: dep.workspaces,\n })\n }\n\n return resolved.toSorted((a, b) => {\n if (a.updateAvailable !== b.updateAvailable) return a.updateAvailable ? -1 : 1\n return a.name.localeCompare(b.name)\n })\n}\n","import chalk from 'chalk'\n\nimport type { PackageManager } from '../../pm/index.ts'\nimport { INIT_CWD } from '../initCwd.ts'\nimport { runSteps } from '../runSteps.ts'\nimport { applyUpdates } from './applyUpdates.ts'\nimport { collectWorkspaceDeps } from './collectWorkspaceDeps.ts'\nimport { fetchAllRegistryInfo } from './fetchRegistryInfo.ts'\nimport { interactiveSelect } from './interactiveSelect.ts'\nimport { resolveVersions } from './resolveVersions.ts'\n\nexport interface UpdoOptions {\n latest?: boolean\n}\n\nexport async function runUpdo(\n pm: PackageManager,\n _options: UpdoOptions = {},\n): Promise<number> {\n const cwd = INIT_CWD()\n const workspaces = pm.listWorkspaces()\n const workspaceNames = new Set(workspaces.map(ws => ws.name))\n\n // Step 1: Collect all declared dependencies\n console.log(chalk.gray('Scanning workspace dependencies...'))\n const declaredDeps = collectWorkspaceDeps(cwd, workspaces, workspaceNames)\n console.log(chalk.gray(` Found ${declaredDeps.size} unique dependencies across ${workspaces.length} workspaces`))\n\n // Step 2: Fetch registry info in parallel\n console.log(chalk.gray('Fetching registry info...'))\n const registryInfo = await fetchAllRegistryInfo([...declaredDeps.keys()])\n\n // Step 3: Get currently installed versions\n console.log(chalk.gray('Reading installed versions...'))\n const installedVersions = pm.listInstalledVersions()\n\n // Step 4: Resolve and compare\n const resolved = resolveVersions(declaredDeps, registryInfo, installedVersions)\n\n // Step 5: Interactive table + selection (unified)\n const updates = await interactiveSelect(resolved)\n if (updates.length === 0) {\n console.log(chalk.gray('No updates selected.'))\n return 0\n }\n\n // Step 6: Apply updates to package.json files\n console.log(chalk.gray(`\\nApplying ${updates.length} updates...`))\n const modified = applyUpdates(cwd, workspaces, updates)\n console.log(chalk.gray(` Modified ${modified} package.json files`))\n\n // Step 7: Install and dedupe\n console.log(chalk.gray('Installing updated dependencies...'))\n return runSteps('Updo', [\n pm.install(),\n pm.dedupe(),\n ], true)\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const analyze = () => {\n const pm = getPackageManager()\n return runSteps('Analyze', [[pm.command, ['source-map-explorer', 'build/static/js/*.ts']]])\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface BuildParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const build = async ({\n incremental, jobs, target, verbose, pkg,\n}: BuildParams) => {\n const pkgOptions = (pkg === undefined) ? [] : [pkg] // must go first\n const incrementalOptions = incremental ? ['-i'] : []\n const verboseOptions = verbose ? ['-v'] : []\n const targetOptions = (target === undefined) ? [] : ['-t', target]\n const jobsOptions = ['-j', `${jobs}`]\n\n const pm = getPackageManager()\n return runStepsAsync(`Build${incremental ? '-Incremental' : ''} [${pkg ?? 'All'}]`, [\n pm.runXy(['compile', ...pkgOptions, ...targetOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions, '--types', 'tsup']),\n pm.runXy(['publint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['deplint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['lint', ...pkgOptions, ...verboseOptions, ...incrementalOptions]),\n ])\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeCommandTemplates, claudeMdRuleTemplates, claudeSkillTemplates,\n INIT_CWD, XYLABS_COMMANDS_PREFIX, XYLABS_RULES_PREFIX, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\ninterface CheckResult {\n missing: string[]\n outdated: string[]\n stale: string[]\n}\n\nconst checkCommands = (commandsDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeCommandTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(filename)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(filename)\n }\n }\n\n const templateNames = new Set(Object.keys(templates))\n const stale = existsSync(commandsDir)\n ? readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md') && !templateNames.has(f))\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst checkRules = (rulesDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeMdRuleTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(filename)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(filename)\n }\n }\n\n const templateNames = new Set(Object.keys(templates))\n const stale = existsSync(rulesDir)\n ? readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md') && !templateNames.has(f))\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst checkSkills = (skillsDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeSkillTemplates()\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [skillName, files] of Object.entries(rawTemplates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n if (!existsSync(skillDir)) {\n missing.push(skillName)\n continue\n }\n for (const [filename, rawContent] of Object.entries(files)) {\n const content = applyPackageManager(rawContent, pm)\n const targetPath = PATH.resolve(skillDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(`${skillName}/${filename}`)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(`${skillName}/${filename}`)\n }\n }\n }\n\n const templateNames = new Set(Object.keys(rawTemplates))\n const stale = existsSync(skillsDir)\n ? readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory() && !templateNames.has(f),\n )\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst logSection = (label: string, result: CheckResult): boolean => {\n const issues = [...result.missing, ...result.outdated, ...result.stale]\n if (issues.length === 0) {\n console.log(chalk.green(` \\u2714 ${label}`))\n return true\n }\n\n console.log(chalk.red(` \\u2718 ${label}`))\n for (const file of result.missing) {\n console.log(chalk.yellow(` missing: ${file}`))\n }\n for (const file of result.outdated) {\n console.log(chalk.yellow(` outdated: ${file}`))\n }\n for (const file of result.stale) {\n console.log(chalk.yellow(` stale: ${file}`))\n }\n return false\n}\n\nexport function claudeCheck(): number {\n const cwd = INIT_CWD()\n const claudeDir = PATH.resolve(cwd, '.claude')\n\n console.log(chalk.bold('Claude configuration check:'))\n console.log()\n\n const commandsResult = checkCommands(PATH.resolve(claudeDir, 'commands'))\n const rulesResult = checkRules(PATH.resolve(claudeDir, 'rules'))\n const skillsResult = checkSkills(PATH.resolve(claudeDir, 'skills'))\n\n const commandsOk = logSection('commands', commandsResult)\n const rulesOk = logSection('rules', rulesResult)\n const skillsOk = logSection('skills', skillsResult)\n\n console.log()\n if (commandsOk && rulesOk && skillsOk) {\n console.log(chalk.green('All Claude configuration is up to date.'))\n } else {\n console.log(chalk.yellow('Run `xy claude init` to sync all configuration.'))\n }\n\n return 0\n}\n","import {\n existsSync, readdirSync, rmSync, unlinkSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nfunction removeFile(filePath: string, label: string): boolean {\n if (existsSync(filePath)) {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nfunction removeDir(dirPath: string, label: string): boolean {\n if (existsSync(dirPath)) {\n rmSync(dirPath, { recursive: true })\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nexport function claudeClean(): number {\n console.log(chalk.green('Clean Claude configuration'))\n const cwd = INIT_CWD()\n let removed = 0\n\n // Root-level files\n const rootFiles = ['CLAUDE.md', 'CLAUDE.local.md']\n for (const file of rootFiles) {\n if (removeFile(PATH.resolve(cwd, file), file)) removed++\n }\n\n // .claude directory\n if (removeDir(PATH.resolve(cwd, '.claude'), '.claude/')) removed++\n\n // Package-level CLAUDE.md files\n const packagesDir = PATH.resolve(cwd, 'packages')\n if (existsSync(packagesDir)) {\n const findClaudeFiles = (dir: string, prefix: string) => {\n const entries = readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = PATH.resolve(dir, entry.name)\n const label = `${prefix}${entry.name}`\n if (entry.isFile() && (entry.name === 'CLAUDE.md' || entry.name === 'CLAUDE.local.md')) {\n if (removeFile(fullPath, label)) removed++\n } else if (entry.isDirectory() && entry.name === '.claude') {\n if (removeDir(fullPath, `${label}/`)) removed++\n } else if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {\n findClaudeFiles(fullPath, `${label}/`)\n }\n }\n }\n findClaudeFiles(packagesDir, 'packages/')\n }\n\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} item(s)`))\n } else {\n console.log(chalk.gray(' Nothing to clean'))\n }\n\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeCommandTemplates, INIT_CWD,\n LEGACY_COMMANDS_PREFIX, XYLABS_COMMANDS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncCommandFiles = (commandsDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeCommandTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleCommands = (commandsDir: string, templateNames: Set<string>) => {\n const existingCommands = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingCommands) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(commandsDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst removeLegacyCommands = (commandsDir: string): number => {\n const legacyFiles = readdirSync(commandsDir).filter(f => f.startsWith(LEGACY_COMMANDS_PREFIX) && f.endsWith('.md'))\n for (const file of legacyFiles) {\n unlinkSync(PATH.resolve(commandsDir, file))\n }\n return legacyFiles.length\n}\n\nconst logCommandsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: already up to date`))\n }\n}\n\nexport const claudeCommands = (): number => {\n const cwd = INIT_CWD()\n const commandsDir = PATH.resolve(cwd, '.claude', 'commands')\n\n mkdirSync(commandsDir, { recursive: true })\n\n const legacy = removeLegacyCommands(commandsDir)\n const {\n created, templateNames, updated,\n } = syncCommandFiles(commandsDir)\n const removed = removeStaleCommands(commandsDir, templateNames)\n logCommandsResult(created, updated, removed + legacy)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeMdLocalTemplate, claudeMdRuleTemplates, INIT_CWD,\n XYLABS_RULES_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncRuleFiles = (rulesDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeMdRuleTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleRules = (rulesDir: string, templateNames: Set<string>) => {\n const existingRules = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingRules) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(rulesDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst logRulesResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: already up to date`))\n }\n}\n\nconst ensureProjectClaudeMd = (cwd: string, force?: boolean) => {\n const projectPath = PATH.resolve(cwd, 'CLAUDE.md')\n\n if (!existsSync(projectPath) || force) {\n if (force && existsSync(projectPath)) {\n console.log(chalk.yellow('Regenerating CLAUDE.md'))\n }\n console.log(chalk.green('Generating CLAUDE.md via claude /init...'))\n const result = spawnSync('claude', ['-p', '/init', '--allowedTools', 'Read', 'Write', 'Glob', 'Grep'], {\n cwd,\n shell: true,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.error(chalk.red('claude /init failed — is Claude Code installed?'))\n return 1\n }\n } else {\n console.log(chalk.gray('CLAUDE.md already exists (skipped, use --force to regenerate)'))\n }\n return 0\n}\n\nconst ensureLocalClaudeMd = (cwd: string) => {\n const localPath = PATH.resolve(cwd, 'CLAUDE.local.md')\n\n if (existsSync(localPath)) {\n console.log(chalk.gray('CLAUDE.local.md already exists (skipped)'))\n } else {\n writeFileSync(localPath, claudeMdLocalTemplate(), 'utf8')\n console.log(chalk.green('Generated CLAUDE.local.md'))\n }\n}\n\nexport const claudeRules = ({ force }: { force?: boolean } = {}): number => {\n const cwd = INIT_CWD()\n const rulesDir = PATH.resolve(cwd, '.claude', 'rules')\n\n mkdirSync(rulesDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncRuleFiles(rulesDir)\n const removed = removeStaleRules(rulesDir, templateNames)\n logRulesResult(created, updated, removed)\n const claudeMdResult = ensureProjectClaudeMd(cwd, force)\n ensureLocalClaudeMd(cwd)\n\n return claudeMdResult ?? 0\n}\n","import {\n existsSync, mkdirSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nexport type SettingsLevel = 'restrictive' | 'permissive'\n\nconst DENY_LIST = [\n 'Bash(git push --force *)',\n 'Bash(git reset --hard *)',\n 'Bash(rm -rf /*)',\n]\n\nconst RESTRICTIVE_ALLOW = [\n 'Bash(git *)',\n 'Bash(yarn *)',\n 'Bash(pnpm *)',\n 'Bash(npx *)',\n 'Bash(ls *)',\n 'Bash(mkdir *)',\n 'Bash(cp *)',\n 'Bash(mv *)',\n 'Bash(rm *)',\n 'Bash(cat *)',\n 'Bash(head *)',\n 'Bash(tail *)',\n 'Bash(echo *)',\n 'Bash(pwd)',\n 'Bash(which *)',\n 'Bash(grep *)',\n 'Bash(find *)',\n 'Bash(wc *)',\n 'Bash(npm view *)',\n 'Bash(gh *)',\n 'Read',\n 'Edit',\n 'Write',\n 'Glob',\n 'Grep',\n 'Skill',\n]\n\nconst PERMISSIVE_ALLOW = [\n ...RESTRICTIVE_ALLOW,\n 'Bash(node *)',\n 'Bash(python3 *)',\n 'Bash(claude *)',\n 'Bash(sed *)',\n 'Bash(xargs *)',\n 'Bash(tee *)',\n]\n\nfunction buildSettings(level: SettingsLevel): object {\n return {\n permissions: {\n allow: level === 'restrictive' ? RESTRICTIVE_ALLOW : PERMISSIVE_ALLOW,\n deny: DENY_LIST,\n },\n }\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport async function claudeSettings({ level = 'permissive' }: { level?: SettingsLevel } = {}): Promise<number> {\n const cwd = INIT_CWD()\n const claudeDir = PATH.resolve(cwd, '.claude')\n const settingsPath = PATH.resolve(claudeDir, 'settings.local.json')\n\n mkdirSync(claudeDir, { recursive: true })\n\n if (existsSync(settingsPath)) {\n const confirmed = await askConfirmation(\n chalk.yellow(`${settingsPath} already exists. Replace it? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray('Skipped — existing settings.local.json preserved'))\n return 0\n }\n }\n\n const settings = buildSettings(level)\n writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(`Generated .claude/settings.local.json (${level})`))\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeSkillTemplates, INIT_CWD, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncSkillFiles = (skillsDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeSkillTemplates()\n const templateNames = new Set(Object.keys(rawTemplates))\n let updated = 0\n let created = 0\n\n for (const [skillName, files] of Object.entries(rawTemplates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n mkdirSync(skillDir, { recursive: true })\n\n for (const [filename, rawContent] of Object.entries(files)) {\n const content = applyPackageManager(rawContent, pm)\n const targetPath = PATH.resolve(skillDir, filename)\n mkdirSync(PATH.dirname(targetPath), { recursive: true })\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleSkills = (skillsDir: string, templateNames: Set<string>) => {\n const existingSkills = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n let removed = 0\n\n for (const dir of existingSkills) {\n if (!templateNames.has(dir)) {\n rmSync(PATH.resolve(skillsDir, dir), { recursive: true })\n removed++\n }\n }\n\n return removed\n}\n\nconst logSkillsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: already up to date`))\n }\n}\n\nexport const claudeSkills = (): number => {\n const cwd = INIT_CWD()\n const skillsDir = PATH.resolve(cwd, '.claude', 'skills')\n\n mkdirSync(skillsDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncSkillFiles(skillsDir)\n const removed = removeStaleSkills(skillsDir, templateNames)\n logSkillsResult(created, updated, removed)\n\n return 0\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CleanParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface CleanPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const clean = async ({ verbose, pkg }: CleanParams) => {\n return pkg\n ? await cleanPackage({ pkg, verbose })\n : cleanAll({ verbose })\n}\n\nexport const cleanPackage = ({ pkg }: CleanPackageParams) => {\n const pm = getPackageManager()\n return runStepsAsync(`Clean [${pkg}]`, [pm.runInWorkspace(pkg, 'package-clean')])\n}\n\nexport const cleanAll = ({ verbose }: CleanParams) => {\n const pm = getPackageManager()\n return runStepsAsync('Clean', [pm.foreachWorkspace('package-clean', [], { jobs: 64, verbose })])\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob, packageName } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const cleanDocs = () => {\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning Docs [${pkgName}]`))\n for (const { location } of getPackageManager().listWorkspaces()) deleteGlob(path.join(location, 'docs'))\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n deleteGlob, INIT_CWD, packageName,\n} from '../lib/index.ts'\n\nexport const cleanESLint = () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning ESLint [${pkgName}]`))\n\n deleteGlob(path.join(pkg, '.eslintcache'))\n\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CompileParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\ninterface CompilePackageParams {\n pkg: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const compile = ({\n verbose, target, pkg, incremental, publint, jobs,\n}: CompileParams) => {\n return pkg\n ? compilePackage({\n pkg, publint, target, verbose,\n })\n : compileAll({\n incremental, jobs, publint, target, verbose,\n })\n}\n\nexport const compilePackage = ({ target, pkg }: CompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runSteps(\n `Compile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-compile', targetOptions)],\n )\n}\n\nexport const compileAll = ({\n jobs, verbose, target, incremental,\n}: CompileParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n return runSteps(`Compile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-compile', targetOptions, {\n incremental, jobs, topological: true, verbose,\n }),\n ])\n}\n","import path from 'node:path/posix'\n\nimport chalk from 'chalk'\nimport cpy from 'cpy'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CopyAssetsParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nconst copyPackageTargetAssets = async (target: 'esm' | 'cjs', name: string, location: string) => {\n try {\n const values = await cpy(\n ['**/*.jpg', '**/*.png', '**/*.gif', '**/*.svg', '**/*.webp', '**/*.sass', '**/*.scss', '**/*.gif', '**/*.css'],\n `../dist/${target}`,\n {\n cwd: path.join(process.cwd(), location, 'src'),\n flat: false,\n },\n )\n for (const value of values) {\n console.log(`${value.split('/').pop()} => ./dist/${target}`)\n }\n return 0\n } catch (reason) {\n console.log(`Copy Failed: ${name}: ${String(reason)}`)\n return 1\n }\n}\n\nconst copyTargetAssets = async (target: 'esm' | 'cjs', pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n\n console.log(chalk.green(`Copying Assets [${target.toUpperCase()}]`))\n\n // finds the package or returns all if undefined\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n if (workspaceList.length === 0) {\n console.error(`Package not found [${pkg}]`)\n } else {\n const results = await Promise.all(\n workspaceList.map(async (workspace) => {\n const { location, name } = workspace\n return await copyPackageTargetAssets(target, name, location)\n }),\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n return results.reduce((prev, result) => prev || result, 0)\n }\n return 0\n}\n\nexport const copyAssets = async ({ target, pkg }: CopyAssetsParams) => {\n switch (target) {\n case 'esm': {\n return await copyTargetAssets('esm', pkg)\n }\n case 'cjs': {\n return await copyTargetAssets('cjs', pkg)\n }\n default: {\n return (await copyTargetAssets('esm', pkg)) || (await copyTargetAssets('cjs', pkg))\n }\n }\n}\n","import { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport {\n detectWorkspaceCycles, packageName, printWorkspaceCycles, runSteps,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CycleParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n verbose?: boolean\n}\n\ninterface CyclePackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const cycle = async ({ verbose, pkg }: CycleParams) => {\n return pkg\n ? cyclePackage({ pkg, verbose })\n : await cycleAll({ verbose })\n}\n\nexport const cyclePackage = ({ pkg, verbose }: CyclePackageParams) => {\n const pm = getPackageManager()\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n return runSteps(\n `Cycle [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-cycle', verboseOptions)],\n )\n}\n\nexport const cycleAll = async ({ verbose = false }: { verbose?: boolean }) => {\n const pkgName = packageName()\n let exitCode = 0\n\n // Check workspace package.json dependency graph for cycles (including devDependencies).\n // These cycles break `yarn workspaces foreach --topological-dev` but are invisible\n // to source-level import analysis.\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceCycles = detectWorkspaceCycles(workspaces)\n if (workspaceCycles.length > 0) {\n console.error(`${pkgName} workspace dependency graph has ${workspaceCycles.length} cycle(s):`)\n printWorkspaceCycles(workspaceCycles)\n exitCode = 1\n } else if (verbose) {\n console.log(`${pkgName} workspace dependency graph has no cycles`)\n }\n\n const cruiseOptions: ICruiseOptions = {\n ruleSet: {\n forbidden: [\n {\n name: 'no-circular',\n severity: 'error',\n comment: 'This dependency creates a circular reference',\n from: {},\n to: { circular: true },\n },\n ],\n },\n exclude: 'node_modules|packages/.*/packages',\n validate: true,\n doNotFollow: { path: 'node_modules|packages/.*/packages' },\n tsPreCompilationDeps: false,\n combinedDependencies: true,\n outputType: verbose ? 'text' : 'err',\n }\n\n const target = '**/packages/*/src'\n\n console.log(`Checking for circular dependencies in ${target}...`)\n\n const result = await cruise([target], cruiseOptions)\n if (result.output) {\n console.log(result.output)\n }\n\n if (result.exitCode !== 0) {\n exitCode = result.exitCode\n }\n\n if (exitCode === 0) {\n console.log(`${pkgName} āœ… No dependency violations`)\n } else {\n console.error(`${pkgName} āŒ Dependency violations found`)\n }\n return exitCode\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const dead = () => {\n return runSteps('Dead', [['ts-prune', ['-p', 'tsconfig.json']]])\n}\n","import chalk from 'chalk'\n\nimport { runInstall } from '../../lib/index.ts'\nimport { getPackageManager } from '../../pm/index.ts'\nimport { runDeplint } from './engine.ts'\nimport { getDeplintReporter } from './reporters.ts'\n\nexport interface DepLintOptions {\n /** Package names to exclude, passed via --exclude on the command line */\n cliExclude?: string[]\n deps?: boolean\n devDeps?: boolean\n fix?: boolean\n format?: 'human' | 'json'\n peerDeps?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport const deplint = async ({\n pkg, deps, devDeps, fix, peerDeps, verbose, cliExclude, format = 'human',\n}: DepLintOptions) => {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n\n // For pnpm repos, enforce workspace: protocol on internal deps\n const workspaceNames = pm.name === 'pnpm'\n ? new Set(workspaces.map(ws => ws.name))\n : undefined\n\n if (pkg === undefined && format === 'human') {\n console.info('Deplint Started...')\n }\n\n const targetWorkspace = pkg === undefined ? undefined : pm.findWorkspace(pkg)\n const targetWorkspaces = pkg === undefined ? workspaces : targetWorkspace ? [targetWorkspace] : []\n if (targetWorkspaces.length === 0) {\n console.error(chalk.red(`Workspace not found: ${pkg}`))\n return 1\n }\n\n const result = await runDeplint(targetWorkspaces, {\n cliExclude, deps, devDeps, fix, peerDeps, reporter: format, verbose,\n }, workspaceNames)\n\n getDeplintReporter(format).render(result)\n\n if (fix && result.summary.appliedFixes > 0) {\n runInstall()\n }\n\n return result.summary.errorCount > 0 ? 1 : 0\n}\n","import fs from 'node:fs'\n\nimport chalk from 'chalk'\nimport sortPackageJson from 'sort-package-json'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport { findDepPackageJson } from './getRequiredPeerDependencies.ts'\n\nexport interface PackageJson {\n [key: string]: unknown\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n}\n\nexport function readPackageJson(location: string): PackageJson {\n return JSON.parse(fs.readFileSync(`${location}/package.json`, 'utf8')) as PackageJson\n}\n\nexport function writePackageJson(location: string, pkg: PackageJson): void {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n fs.writeFileSync(`${location}/package.json`, `${sorted}\\n`)\n}\n\n/**\n * Move a dependency from one section to another (e.g. dependencies → devDependencies).\n */\nexport function moveDep(pkg: PackageJson, dep: string, from: string, to: string): void {\n const fromSection = pkg[from] as Record<string, string> | undefined\n if (!fromSection?.[dep]) return\n\n const version = fromSection[dep]\n delete fromSection[dep]\n if (Object.keys(fromSection).length === 0) {\n delete pkg[from]\n }\n\n const toSection = (pkg[to] ?? {}) as Record<string, string>\n toSection[dep] = version\n pkg[to] = toSection\n}\n\n/**\n * Remove a dependency from a section.\n */\nexport function removeDep(pkg: PackageJson, dep: string, section: string): void {\n const sectionObj = pkg[section] as Record<string, string> | undefined\n if (!sectionObj?.[dep]) return\n\n delete sectionObj[dep]\n if (Object.keys(sectionObj).length === 0) {\n delete pkg[section]\n }\n}\n\n/**\n * Add a dependency to a section with a resolved version.\n */\nexport function addDep(pkg: PackageJson, dep: string, version: string, section: string): void {\n const sectionObj = (pkg[section] ?? {}) as Record<string, string>\n sectionObj[dep] = version\n pkg[section] = sectionObj\n}\n\n/**\n * Resolve the version for a missing dependency.\n * Looks in node_modules first, then falls back to '*'.\n */\nexport function resolveDepVersion(location: string, dep: string): string {\n const depPkgPath = findDepPackageJson(location, dep)\n if (depPkgPath) {\n try {\n const depPkg = JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n const version = depPkg.version as string | undefined\n if (version) return `~${version}`\n } catch {\n // Fall through\n }\n }\n return '*'\n}\n\n/**\n * Compute the expected peerDependency version range for a dependency,\n * preserving the current range style (^ vs ~).\n *\n * - If the current range uses ^, returns ^<major> (e.g. ^7)\n * - Otherwise returns ~<major>.<minor> (e.g. ~7.6)\n * - Falls back to resolveDepVersion if no installed version found\n */\nexport function resolveExpectedPeerVersion(location: string, dep: string, currentRange?: string): string {\n const depPkgPath = findDepPackageJson(location, dep)\n if (depPkgPath) {\n try {\n const depPkg = JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n const version = depPkg.version as string | undefined\n if (version) {\n const match = /^(\\d+)\\.(\\d+)/.exec(version)\n if (match) {\n if (currentRange?.startsWith('^')) {\n return `^${match[1]}`\n }\n return `~${match[1]}.${match[2]}`\n }\n return `~${version}`\n }\n } catch {\n // Fall through\n }\n }\n return '*'\n}\n\nexport function logFix(workspace: Workspace, action: string, dep: string, detail?: string): void {\n const detailStr = detail ? ` (${detail})` : ''\n console.log(`[${chalk.blue(workspace.name)}] Fixed: ${action} ${chalk.green(dep)}${detailStr}`)\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport function findDepPackageJson(location: string, dep: string): string | undefined {\n let dir = location\n while (true) {\n const candidate = path.join(dir, 'node_modules', dep, 'package.json')\n if (fs.existsSync(candidate)) return candidate\n const parent = path.dirname(dir)\n if (parent === dir) return undefined\n dir = parent\n }\n}\n\n/**\n * Collects the peerDependencies declared by all of a package's\n * dependencies and devDependencies. A devDependency that satisfies\n * one of these peer requirements should not be flagged as unused.\n */\nexport function getRequiredPeerDependencies(\n location: string,\n allDeps: string[],\n): Set<string> {\n const required = new Set<string>()\n for (const dep of allDeps) {\n const depPkgPath = findDepPackageJson(location, dep)\n if (!depPkgPath) continue\n try {\n const raw = fs.readFileSync(depPkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (peerDeps) {\n for (const peer of Object.keys(peerDeps)) {\n required.add(peer)\n }\n }\n } catch {\n // Package not readable — skip\n }\n }\n return required\n}\n","import type { Workspace } from '../../pm/index.ts'\nimport {\n addDep,\n moveDep,\n type PackageJson,\n readPackageJson,\n removeDep,\n writePackageJson,\n} from './packageJsonEditor.ts'\nimport type { DeplintAppliedFix, DeplintFix } from './types.ts'\n\nexport class DeplintPackageEditor {\n private readonly pkg: PackageJson\n\n constructor(\n private readonly workspace: Workspace,\n ) {\n this.pkg = readPackageJson(workspace.location)\n }\n\n applyFix(fix: DeplintFix): DeplintAppliedFix {\n switch (fix.action) {\n case 'add': {\n addDep(this.pkg, fix.dependency, fix.version, fix.section)\n break\n }\n case 'move': {\n moveDep(this.pkg, fix.dependency, fix.fromSection, fix.toSection)\n if (fix.version !== undefined && this.pkg[fix.toSection]?.[fix.dependency] !== undefined) {\n this.pkg[fix.toSection]![fix.dependency] = fix.version\n }\n break\n }\n case 'remove': {\n removeDep(this.pkg, fix.dependency, fix.section)\n break\n }\n case 'set-version': {\n addDep(this.pkg, fix.dependency, fix.version, fix.section)\n break\n }\n }\n\n return {\n dependency: fix.dependency,\n detail: fix.detail,\n workspace: this.workspace,\n }\n }\n\n save(): void {\n writePackageJson(this.workspace.location, this.pkg)\n }\n}\n","import { DeplintPackageEditor } from './packageEditor.ts'\nimport type { DeplintAppliedFix, DeplintDiagnostic } from './types.ts'\n\nexport function applyDeplintFixes(diagnostics: DeplintDiagnostic[]): DeplintAppliedFix[] {\n const editors = new Map<string, DeplintPackageEditor>()\n const applied: DeplintAppliedFix[] = []\n\n for (const diagnostic of diagnostics) {\n for (const fix of diagnostic.fixes ?? []) {\n const workspaceKey = diagnostic.workspace.location\n let editor = editors.get(workspaceKey)\n if (!editor) {\n editor = new DeplintPackageEditor(diagnostic.workspace)\n editors.set(workspaceKey, editor)\n }\n applied.push(editor.applyFix(fix))\n }\n }\n\n for (const editor of editors.values()) {\n editor.save()\n }\n\n return applied\n}\n","import fs from 'node:fs'\n\nimport { findFilesByGlob } from './findFilesByGlob.ts'\n\nconst codeExtensions = '*.{ts,tsx,mts,cts,js,mjs,cjs}'\n\nfunction getWorkspaceIgnores(location: string): string[] {\n try {\n const raw = fs.readFileSync(`${location}/package.json`, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n return (pkg.workspaces ?? []) as string[]\n } catch {\n return []\n }\n}\n\nexport function findFiles(location: string) {\n const workspaceIgnores = getWorkspaceIgnores(location).map(w => `${w}/**`)\n const ignore = ['**/node_modules/**', 'dist/**', ...workspaceIgnores]\n const allFiles = findFilesByGlob(location, `./**/${codeExtensions}`, ignore)\n const distFiles = [\n ...findFilesByGlob(location, './dist/**/*.d.ts'),\n ...findFilesByGlob(location, `./dist/**/${codeExtensions}`),\n ]\n\n return { allFiles, distFiles }\n}\n","import { globSync } from 'glob'\n\nexport function findFilesByGlob(cwd: string, pattern: string, ignore?: string[]) {\n return globSync(pattern, {\n cwd, absolute: true, ignore, nodir: true,\n })\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport function getDependenciesFromPackageJson(packageJsonPath: string) {\n const packageJsonFullPath = path.resolve(packageJsonPath)\n const rawContent = fs.readFileSync(packageJsonFullPath, 'utf8')\n const packageJson = JSON.parse(rawContent) as Record<string, unknown>\n\n const depsRecord = (packageJson.dependencies ?? {}) as Record<string, string>\n const devDepsRecord = (packageJson.devDependencies ?? {}) as Record<string, string>\n const peerDepsRecord = (packageJson.peerDependencies ?? {}) as Record<string, string>\n\n const dependencies = Object.keys(depsRecord)\n const devDependencies = Object.keys(devDepsRecord)\n const peerDependencies = Object.keys(peerDepsRecord)\n\n const dependencyVersions = depsRecord\n const devDependencyVersions = devDepsRecord\n const peerDependencyVersions = peerDepsRecord\n\n return {\n dependencies,\n dependencyVersions,\n devDependencies,\n devDependencyVersions,\n peerDependencies,\n peerDependencyVersions,\n }\n}\n","import fs from 'node:fs'\n\nimport { globSync } from 'glob'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\n\nconst isExternalReference = (ref: string) => !ref.startsWith('.') && !ref.startsWith('/')\n\nfunction parseExtendsField(value: unknown): string[] {\n if (typeof value === 'string') return [value]\n if (Array.isArray(value)) return value.filter((v): v is string => typeof v === 'string')\n return []\n}\n\nfunction parseTypesField(value: unknown): string[] {\n if (Array.isArray(value)) return value.filter((v): v is string => typeof v === 'string')\n return []\n}\n\nfunction parseTsconfig(file: string): Record<string, unknown> {\n const content = fs.readFileSync(file, 'utf8')\n // Strip single-line comments (tsconfig allows them) and trailing commas before parsing\n const cleaned = content\n .replaceAll(/\\/\\/.*/g, '')\n .replaceAll(/,\\s*([}\\]])/g, '$1')\n return JSON.parse(cleaned) as Record<string, unknown>\n}\n\nexport function getExtendsFromTsconfigs(location: string): string[] {\n const tsconfigFiles = globSync('./tsconfig*.json', { cwd: location, absolute: true })\n const packages = new Set<string>()\n\n for (const file of tsconfigFiles) {\n try {\n const parsed = parseTsconfig(file)\n const refs = parseExtendsField(parsed.extends)\n for (const ref of refs) {\n if (isExternalReference(ref)) {\n packages.add(getBasePackageName(ref))\n }\n }\n } catch {\n // Skip files that can't be parsed\n }\n }\n\n return [...packages]\n}\n\nexport function getTypesFromTsconfigs(location: string): string[] {\n const tsconfigFiles = globSync('./tsconfig*.json', { cwd: location, absolute: true })\n const packages = new Set<string>()\n\n for (const file of tsconfigFiles) {\n try {\n const parsed = parseTsconfig(file)\n const compilerOptions = parsed.compilerOptions as Record<string, unknown> | undefined\n const refs = parseTypesField(compilerOptions?.types)\n for (const ref of refs) {\n packages.add(getBasePackageName(ref))\n }\n } catch {\n // Skip files that can't be parsed\n }\n }\n\n return [...packages]\n}\n","export function getBasePackageName(importName: string) {\n const importNameScrubbed = importName.replaceAll('\"', '').trim()\n if (importNameScrubbed.startsWith('@')) {\n const parts = importNameScrubbed.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importNameScrubbed\n }\n return importNameScrubbed.split('/')[0]\n}\n","import fs from 'node:fs'\n\nimport type { CheckSourceParams } from './checkPackage/index.ts'\nimport { getImportsFromFile } from './getImportsFromFile.ts'\n\nconst internalImportPrefixes = ['.', '#', 'node:']\n\nconst removeInternalImports = (imports: string[]) => {\n return imports.filter(imp => !internalImportPrefixes.some(prefix => imp.startsWith(prefix)))\n}\n\nconst isDeclarationFile = (file: string) =>\n file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')\n\nfunction shipsTsconfig(location: string): boolean {\n try {\n const raw = fs.readFileSync(`${location}/package.json`, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n const files = pkg.files as string[] | undefined\n return files?.some((f: string) => f === 'tsconfig.json' || f.includes('tsconfig')) ?? false\n } catch {\n return false\n }\n}\n\nexport function getExternalImportsFromFiles({\n allFiles, distFiles, location, tsconfigExtends = [], tsconfigTypes = [],\n}: {\n allFiles: string[]\n distFiles: string[]\n location: string\n tsconfigExtends?: string[]\n tsconfigTypes?: string[]\n}): CheckSourceParams {\n const allImportPaths: Record<string, string[]> = {}\n const distImportPaths: Record<string, string[]> = {}\n const distTypeImportPaths: Record<string, string[]> = {}\n\n for (const path of allFiles) getImportsFromFile(path, allImportPaths, allImportPaths).flat()\n\n const distTypeFiles = distFiles.filter(isDeclarationFile)\n const distCodeFiles = distFiles.filter(file => !isDeclarationFile(file))\n for (const path of distCodeFiles) getImportsFromFile(path, distImportPaths, distImportPaths).flat()\n for (const path of distTypeFiles) getImportsFromFile(path, distTypeImportPaths, distTypeImportPaths).flat()\n\n const allImports = Object.keys(allImportPaths)\n const distImports = Object.keys(distImportPaths)\n\n const externalAllImports = removeInternalImports(allImports)\n const externalDistImports = removeInternalImports(distImports)\n const externalDistTypeImports = removeInternalImports(Object.keys(distTypeImportPaths))\n\n // Tsconfig extends references count as used imports.\n // If the package ships its tsconfig.json, extends refs are dist imports\n // (consumers need them), otherwise they are build-time only (devDep).\n const isDistTsconfig = shipsTsconfig(location)\n for (const ext of tsconfigExtends) {\n if (!externalAllImports.includes(ext)) externalAllImports.push(ext)\n if (isDistTsconfig && !externalDistImports.includes(ext)) externalDistImports.push(ext)\n }\n\n // Tsconfig compilerOptions.types references count as build-time imports (devDep).\n for (const typ of tsconfigTypes) {\n if (!externalAllImports.includes(typ)) externalAllImports.push(typ)\n }\n\n return {\n allImportPaths,\n allImports,\n distImportPaths,\n distImports,\n externalAllImports,\n externalDistImports,\n externalDistTypeImports,\n tsconfigExtends: [...tsconfigExtends],\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport ts from 'typescript'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\n\nexport function isTypeOnlyImportClause(clause?: ts.ImportClause): boolean {\n if (clause === undefined) {\n return false\n }\n // Newer TS: clause.phaseModifier -> token or number\n if ('phaseModifier' in clause) {\n const mod = clause.phaseModifier\n // handle number enum or token node with .kind\n const kind: number | undefined = typeof mod === 'number' ? mod : (mod as { kind?: number } | undefined)?.kind\n return kind === ts.SyntaxKind.TypeKeyword\n }\n // Older TS fallback\n return (clause as unknown as { isTypeOnly?: boolean }).isTypeOnly ?? false\n}\n\nexport function getImportsFromFile(filePath: string, importPaths: Record<string, string[]>, typeImportPaths: Record<string, string[]>) {\n const sourceCode = fs.readFileSync(filePath, 'utf8')\n\n const isMjsFile = filePath.endsWith('.mjs')\n\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n isMjsFile ? ts.ScriptKind.JS : undefined,\n )\n\n const imports: string[] = []\n const typeImports: string[] = []\n\n const isDeclarationFile = filePath.endsWith('.d.ts')\n\n function visit(node: ts.Node) {\n if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n const moduleSpecifier = (node.moduleSpecifier)?.getFullText()\n const isTypeImport = ts.isImportDeclaration(node) ? isTypeOnlyImportClause(node.importClause) : false\n if (typeof moduleSpecifier === 'string') {\n const trimmed = moduleSpecifier.replaceAll(\"'\", '').replaceAll('\"', '').trim()\n // we are determining if the type import is being imported in an exported d.ts file\n if (isTypeImport || isDeclarationFile) {\n typeImports.push(trimmed)\n } else {\n imports.push(trimmed)\n }\n }\n } else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {\n const [arg] = node.arguments\n if (ts.isStringLiteral(arg)) {\n imports.push(arg.text)\n }\n } else if (\n ts.isCallExpression(node)\n && ts.isIdentifier(node.expression)\n && node.expression.text === 'require'\n && node.arguments.length > 0\n && ts.isStringLiteral(node.arguments[0])\n ) {\n imports.push(node.arguments[0].text)\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n\n // Detect /// <reference types=\"package\" /> directives\n for (const ref of sourceFile.typeReferenceDirectives) {\n typeImports.push(ref.fileName)\n }\n\n const importsStartsWithExcludes = ['.', '#', 'node:']\n\n const isValidImport = (imp: string) =>\n !importsStartsWithExcludes.some(exc => imp.startsWith(exc))\n && !imp.includes('*')\n && !imp.includes('!')\n\n const cleanedImports = imports.filter(isValidImport).map(getBasePackageName)\n const cleanedTypeImports = typeImports.filter(isValidImport).map(getBasePackageName)\n\n for (const imp of cleanedImports) {\n importPaths[imp] = importPaths[imp] ?? []\n importPaths[imp].push(filePath)\n }\n\n for (const imp of cleanedTypeImports) {\n typeImportPaths[imp] = typeImportPaths[imp] ?? []\n typeImportPaths[imp].push(filePath)\n }\n\n return [cleanedImports, cleanedTypeImports]\n}\n","import chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { readPackageJson, writePackageJson } from '../packageJsonEditor.ts'\nimport type { CheckPackageParams } from './checkPackageTypes.ts'\n\nexport interface PeerDevMismatch {\n dep: string\n devVersion: string\n peerVersion: string\n}\n\nexport function findMismatchedPeerDevVersions(\n {\n peerDependencies, peerDependencyVersions, devDependencyVersions,\n }: CheckPackageParams,\n exclude?: Set<string>,\n): PeerDevMismatch[] {\n const mismatches: PeerDevMismatch[] = []\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n const peerVersion = peerDependencyVersions[dep]\n const devVersion = devDependencyVersions[dep]\n // Skip semver comparison for workspace protocol versions — they resolve at install time\n const hasWorkspaceProtocol = devVersion?.startsWith('workspace:') || peerVersion?.startsWith('workspace:')\n if (devVersion && peerVersion !== devVersion && !hasWorkspaceProtocol && !semver.subset(devVersion, peerVersion)) {\n mismatches.push({\n dep, devVersion, peerVersion,\n })\n }\n }\n return mismatches\n}\n\nexport function getMismatchedPeerDevVersions(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const mismatches = findMismatchedPeerDevVersions(packageParams, exclude)\n\n for (const {\n dep, peerVersion, devVersion,\n } of mismatches) {\n console.log(\n `[${chalk.blue(name)}] Peer/dev version mismatch ${chalk.red(dep)}`\n + ` — peer: ${chalk.yellow(peerVersion)}, dev: ${chalk.cyan(devVersion)}`,\n )\n }\n if (mismatches.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return mismatches.length\n}\n\nexport function fixMismatchedPeerDevVersions(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const mismatches = findMismatchedPeerDevVersions(packageParams, exclude)\n if (mismatches.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const { dep, devVersion } of mismatches) {\n if (pkg.peerDependencies?.[dep]) {\n pkg.peerDependencies[dep] = devVersion\n console.log(\n `[${chalk.blue(workspace.name)}] Fixed: synced peerDependency ${chalk.green(dep)}`\n + ` to devDependency version ${chalk.cyan(devVersion)}`,\n )\n }\n }\n\n writePackageJson(workspace.location, pkg)\n return mismatches.length\n}\n","import fs from 'node:fs'\nimport { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { findDepPackageJson } from '../getRequiredPeerDependencies.ts'\nimport {\n addDep, logFix, readPackageJson, resolveDepVersion, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isSatisfiedByTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\n/**\n * Checks if a runtime import is satisfied by a listed dependency.\n * An `@types` package alone is not enough since it only provides\n * type declarations, not runnable code.\n */\nfunction isRuntimeImportListed(\n imp: string,\n name: string,\n dependencies: string[],\n peerDependencies: string[],\n) {\n return dependencies.includes(imp)\n || imp === name\n || peerDependencies.includes(imp)\n || builtinModules.includes(imp)\n}\n\n/**\n * Checks if a type-only dist import is satisfied by a listed dependency.\n * These appear in published .d.ts files, so consumers need them installed.\n * They must be in dependencies or peerDependencies (not just devDependencies)\n * because they ship in the published package.\n */\nfunction isDistTypeImportListed(\n imp: string,\n name: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n) {\n return dependencies.includes(imp)\n || imp === name\n || dependencies.includes(`@types/${imp}`)\n || devDependencies.includes(`@types/${imp}`)\n || peerDependencies.includes(imp)\n || peerDependencies.includes(`@types/${imp}`)\n || builtinModules.includes(imp)\n}\n\nfunction logMissing(name: string, imp: string, importPaths: Record<string, string[]>) {\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n if (importPaths[imp]) {\n console.log(` ${importPaths[imp].join('\\n ')}`)\n }\n}\n\n/**\n * Determines whether an import should be a peerDependency in a library\n * package. Returns true when all of the import's own peer dependencies\n * are both listed in the package's peerDependencies AND directly imported\n * in the dist output. This distinguishes companion packages like react-dom\n * (whose peers the library independently imports) from implementation\n * dependencies like a widget library that merely consume a framework.\n */\nexport function shouldBePeerDependency(\n imp: string,\n location: string,\n currentPeers: string[],\n distImports: string[],\n): boolean {\n if (currentPeers.length === 0) return false\n const depPkgPath = findDepPackageJson(location, imp)\n if (!depPkgPath) return false\n try {\n const pkg = JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n const importPeers = Object.keys((pkg.peerDependencies ?? {}) as Record<string, unknown>)\n // Every peer of the import must be a first-class peer of the package —\n // i.e. both listed as a peerDependency and directly imported in dist.\n return importPeers.length > 0 && importPeers.every(\n peer => currentPeers.includes(peer) && distImports.includes(peer),\n )\n } catch {\n return false\n }\n}\n\nexport interface UnlistedDep {\n imp: string\n section: 'dependencies' | 'devDependencies'\n}\n\nexport function findUnlistedDependencies(\n name: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n externalDistImports: string[],\n externalDistTypeImports: string[],\n): UnlistedDep[] {\n const allDeps = [...dependencies, ...devDependencies, ...peerDependencies]\n const results: UnlistedDep[] = []\n\n for (const imp of externalDistImports) {\n if (!isRuntimeImportListed(imp, name, dependencies, peerDependencies)\n && !isSatisfiedByTsScriptsVariant(imp, allDeps)) {\n results.push({ imp, section: 'dependencies' })\n }\n }\n\n for (const imp of externalDistTypeImports) {\n if (!isDistTypeImportListed(imp, name, dependencies, devDependencies, peerDependencies)\n && !isSatisfiedByTsScriptsVariant(imp, allDeps)) {\n results.push({ imp, section: 'dependencies' })\n }\n }\n\n return results\n}\n\nexport function getUnlistedDependencies(\n { name, location }: Workspace,\n {\n dependencies, devDependencies, peerDependencies,\n }: CheckPackageParams,\n {\n externalDistImports, externalDistTypeImports, distImportPaths,\n }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDependencies(name, dependencies, devDependencies, peerDependencies, externalDistImports, externalDistTypeImports)\n\n for (const { imp } of unlisted) {\n logMissing(name, imp, distImportPaths)\n }\n if (unlisted.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unlisted.length\n}\n\nexport function fixUnlistedDependencies(\n workspace: Workspace,\n {\n dependencies, devDependencies, peerDependencies,\n }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDependencies(workspace.name, dependencies, devDependencies, peerDependencies, externalDistImports, externalDistTypeImports)\n if (unlisted.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n const isTerminal = pkg.private === true\n\n for (const { imp, section } of unlisted) {\n const version = resolveDepVersion(workspace.location, imp)\n // For library packages, if the import shares peers with existing\n // peerDependencies, add it as a peer + dev instead of a dependency.\n const isPeer = !isTerminal\n && section === 'dependencies'\n && shouldBePeerDependency(imp, workspace.location, peerDependencies, externalDistImports)\n if (isPeer) {\n addDep(pkg, imp, version, 'peerDependencies')\n logFix(workspace, 'added to peerDependencies', imp, version)\n addDep(pkg, imp, version, 'devDependencies')\n logFix(workspace, 'added to devDependencies', imp, version)\n } else {\n addDep(pkg, imp, version, section)\n logFix(workspace, `added to ${section}`, imp, version)\n }\n }\n\n writePackageJson(workspace.location, pkg)\n return unlisted.length\n}\n","/**\n * After a packman convert, source files may still import from the old\n * ts-scripts variant (e.g. yarn3 → pnpm). Deplint should not flag\n * these as missing when the correct PM variant is installed.\n *\n * Maps each ts-scripts package to the variant it can be satisfied by.\n */\nconst VARIANT_MAP: Record<string, string> = {\n '@xylabs/ts-scripts-yarn3': '@xylabs/ts-scripts-pnpm',\n '@xylabs/ts-scripts-pnpm': '@xylabs/ts-scripts-yarn3',\n '@xylabs/ts-scripts-react-yarn3': '@xylabs/ts-scripts-react-pnpm',\n '@xylabs/ts-scripts-react-pnpm': '@xylabs/ts-scripts-react-yarn3',\n}\n\n/**\n * Returns true if `imp` is a ts-scripts import whose other PM variant\n * is present in the dependency lists, meaning the import is satisfied.\n */\nexport function isSatisfiedByTsScriptsVariant(\n imp: string,\n allDeps: string[],\n): boolean {\n const variant = VARIANT_MAP[imp]\n return variant !== undefined && allDeps.includes(variant)\n}\n\n/**\n * Returns true if `dep` is a ts-scripts package whose other PM variant\n * appears in the import list, meaning the dep is effectively used.\n */\nexport function isUsedViaTsScriptsVariant(\n dep: string,\n imports: string[],\n): boolean {\n const variant = VARIANT_MAP[dep]\n return variant !== undefined && imports.includes(variant)\n}\n","import { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n addDep, logFix, readPackageJson, resolveDepVersion, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isSatisfiedByTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function findUnlistedDevDeps(\n name: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n externalAllImports: string[],\n distImports: string[],\n externalDistTypeImports: string[],\n): string[] {\n const results: string[] = []\n for (const imp of externalAllImports) {\n if (!distImports.includes(imp)\n && !externalDistTypeImports.includes(imp)\n && imp !== name\n && !dependencies.includes(imp)\n && !dependencies.includes(`@types/${imp}`)\n && !peerDependencies.includes(imp)\n && !peerDependencies.includes(`@types/${imp}`)\n && !devDependencies.includes(imp)\n && !devDependencies.includes(`@types/${imp}`)\n && !builtinModules.includes(imp)\n && !isSatisfiedByTsScriptsVariant(imp, [...dependencies, ...devDependencies, ...peerDependencies])\n ) {\n results.push(imp)\n }\n }\n return results\n}\n\nexport function getUnlistedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n allImportPaths, externalAllImports, distImports, externalDistTypeImports,\n }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDevDeps(name, dependencies, devDependencies, peerDependencies, externalAllImports, distImports, externalDistTypeImports)\n\n for (const imp of unlisted) {\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n if (allImportPaths[imp]) {\n console.log(` ${allImportPaths[imp].join('\\n ')}`)\n }\n }\n if (unlisted.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unlisted.length\n}\n\nexport function fixUnlistedDevDependencies(\n workspace: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n externalAllImports, distImports, externalDistTypeImports,\n }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDevDeps(workspace.name, dependencies, devDependencies, peerDependencies, externalAllImports, distImports, externalDistTypeImports)\n if (unlisted.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const imp of unlisted) {\n const version = resolveDepVersion(workspace.location, imp)\n addDep(pkg, imp, version, 'devDependencies')\n logFix(workspace, 'added to devDependencies', imp, version)\n }\n\n writePackageJson(workspace.location, pkg)\n return unlisted.length\n}\n","import fs from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n logFix, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\nimport { getRequiredTransitivePeers } from './getUnsatisfiedPeerDependencies.ts'\n\n// --- Check A: Unrequested peers (imported but no dep requires it as a peer) ---\n\nfunction isPeerImportedInDist(dep: string, externalDistImports: string[], externalDistTypeImports: string[]): boolean {\n const baseName = dep.replace(/^@types\\//, '')\n return externalDistImports.includes(dep)\n || externalDistImports.includes(baseName)\n || externalDistTypeImports.includes(dep)\n || externalDistTypeImports.includes(baseName)\n}\n\nexport function findUnrequestedPeerDeps(\n location: string,\n packageParams: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n exclude?: Set<string>,\n): string[] {\n const requiredPeers = getRequiredTransitivePeers(location, packageParams)\n\n const unrequested: string[] = []\n for (const dep of packageParams.peerDependencies) {\n if (exclude?.has(dep)) continue\n if (packageParams.dependencies.includes(dep)) continue\n if (!isPeerImportedInDist(dep, externalDistImports, externalDistTypeImports)) continue\n if (!requiredPeers.has(dep)) {\n unrequested.push(dep)\n }\n }\n return unrequested\n}\n\nexport function getUnrequestedPeerDependencies(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n sourceParams: CheckSourceParams,\n exclude?: Set<string>,\n): number {\n // For library packages, importing a peerDep in dist is the normal pattern —\n // the library uses it but wants consumers to provide it.\n if (!isTerminalPackage(location)) return 0\n\n const unrequested = findUnrequestedPeerDeps(location, packageParams, sourceParams, exclude)\n\n for (const dep of unrequested) {\n console.log(\n `[${chalk.blue(name)}] Unnecessary peerDependency ${chalk.red(dep)}`\n + ' — imported in dist but no dependency requires it as a peer; should be a dependency',\n )\n }\n if (unrequested.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unrequested.length\n}\n\nfunction isTerminalPackage(location: string): boolean {\n try {\n const pkg = JSON.parse(fs.readFileSync(`${location}/package.json`, 'utf8')) as Record<string, unknown>\n return pkg.private === true\n } catch {\n return false\n }\n}\n\nexport function fixUnrequestedPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n sourceParams: CheckSourceParams,\n exclude?: Set<string>,\n): number {\n const unrequested = findUnrequestedPeerDeps(workspace.location, packageParams, sourceParams, exclude)\n if (unrequested.length === 0) return 0\n\n const isTerminal = isTerminalPackage(workspace.location)\n const tsconfigExtendsSet = new Set(sourceParams.tsconfigExtends)\n\n // For library packages (non-private), unrequested peers are intentional —\n // the library wants consumers to provide them. Only move to dependencies\n // for terminal/private packages (apps, CLIs) or when the dep is only\n // referenced via tsconfig extends (a build-time need, not a runtime peer).\n const fixable = isTerminal\n ? unrequested\n : unrequested.filter(dep => tsconfigExtendsSet.has(dep))\n\n if (fixable.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of fixable) {\n const version = packageParams.peerDependencyVersions[dep] ?? '*'\n removeDep(pkg, dep, 'peerDependencies')\n pkg.dependencies = pkg.dependencies ?? {}\n pkg.dependencies[dep] = version\n logFix(workspace, 'moved from peerDependencies to dependencies', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return fixable.length\n}\n\n// --- Check B: Redundant peers (also in dependencies) ---\n\nexport function findRedundantPeerDeps(\n { peerDependencies, dependencies }: CheckPackageParams,\n exclude?: Set<string>,\n): string[] {\n const depsSet = new Set(dependencies)\n const redundant: string[] = []\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n if (depsSet.has(dep)) {\n redundant.push(dep)\n }\n }\n return redundant\n}\n\nexport function getRedundantPeerDependencies(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const redundant = findRedundantPeerDeps(packageParams, exclude)\n\n for (const dep of redundant) {\n console.log(\n `[${chalk.blue(name)}] Redundant peerDependency ${chalk.red(dep)}`\n + ' — already listed in dependencies',\n )\n }\n if (redundant.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return redundant.length\n}\n\nexport function fixRedundantPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const redundant = findRedundantPeerDeps(packageParams, exclude)\n if (redundant.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of redundant) {\n removeDep(pkg, dep, 'peerDependencies')\n logFix(workspace, 'removed redundant peerDependency (kept in dependencies)', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return redundant.length\n}\n","import fs from 'node:fs'\n\nimport chalk from 'chalk'\nimport semver from 'semver'\nimport sortPackageJson from 'sort-package-json'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { findDepPackageJson } from '../getRequiredPeerDependencies.ts'\nimport type { CheckPackageParams } from './checkPackageTypes.ts'\n\nexport interface PeerSource {\n /** Dependency chain for transitive peers, e.g. ['direct-dep', 'transitive-dep'] */\n chain?: string[]\n isRuntimeDep: boolean\n requiredBy: string\n}\n\nexport interface UnsatisfiedPeer {\n hasRuntimeSource: boolean\n installedVersion?: string\n peer: string\n reason: 'missing' | 'version-mismatch'\n sources: PeerSource[]\n versionRange: string\n}\n\nfunction readDepPackageJson(location: string, dep: string): Record<string, unknown> | undefined {\n const depPkgPath = findDepPackageJson(location, dep)\n if (!depPkgPath) return undefined\n try {\n return JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n return undefined\n }\n}\n\nfunction readPeerDeps(location: string, dep: string): string[] {\n const pkg = readDepPackageJson(location, dep)\n if (!pkg) return []\n const peers = pkg.peerDependencies as Record<string, string> | undefined\n return Object.keys(peers ?? {})\n}\n\nfunction readPeerVersionRange(location: string, dep: string, peer: string): string | undefined {\n const pkg = readDepPackageJson(location, dep)\n if (!pkg) return undefined\n const peers = pkg.peerDependencies as Record<string, string> | undefined\n return peers?.[peer]\n}\n\nfunction readInstalledVersion(location: string, dep: string): string | undefined {\n const pkg = readDepPackageJson(location, dep)\n if (!pkg) return undefined\n return pkg.version as string | undefined\n}\n\nfunction isPeerOptionalInAll(location: string, peer: string, sources: PeerSource[]): boolean {\n for (const source of sources) {\n const pkg = readDepPackageJson(location, source.requiredBy)\n if (!pkg) continue\n const meta = (pkg.peerDependenciesMeta as Record<string, { optional?: boolean }> | undefined)?.[peer]\n if (!meta?.optional) return false\n }\n return true\n}\n\nconst MAX_TRANSITIVE_DEPTH = 2\n\nfunction collectPeerSources(\n location: string,\n dependencies: string[],\n devDependencies: string[],\n): Map<string, PeerSource[]> {\n const peerSources = new Map<string, PeerSource[]>()\n const visited = new Set<string>()\n\n function addPeerSource(peer: string, source: PeerSource): void {\n const sources = peerSources.get(peer) ?? []\n sources.push(source)\n peerSources.set(peer, sources)\n }\n\n function collectFromDeps(deps: string[], isRuntime: boolean, chain: string[]): void {\n for (const dep of deps) {\n const visitKey = `${dep}:${chain.join('>')}`\n if (visited.has(visitKey)) continue\n visited.add(visitKey)\n\n for (const peer of readPeerDeps(location, dep)) {\n addPeerSource(peer, {\n chain: chain.length > 0 ? [...chain, dep] : undefined,\n isRuntimeDep: isRuntime,\n requiredBy: dep,\n })\n }\n\n // Recurse into this dep's own runtime dependencies (not devDeps)\n if (chain.length < MAX_TRANSITIVE_DEPTH) {\n const depPkg = readDepPackageJson(location, dep)\n if (depPkg) {\n const transitiveDeps = Object.keys((depPkg.dependencies as Record<string, string> | undefined) ?? {})\n collectFromDeps(transitiveDeps, isRuntime, [...chain, dep])\n }\n }\n }\n }\n\n collectFromDeps(dependencies, true, [])\n\n const devOnly = devDependencies.filter(d => !dependencies.includes(d))\n collectFromDeps(devOnly, false, [])\n\n return peerSources\n}\n\nfunction formatChain(sources: PeerSource[]): string {\n const chainsWithDepth = sources.filter(s => s.chain && s.chain.length > 0)\n if (chainsWithDepth.length === 0) return ''\n const first = chainsWithDepth[0]\n return ` (via ${chalk.dim(first.chain!.join(' → '))})`\n}\n\n/**\n * Returns the full set of peer dependency names required by all deps and devDeps.\n * Used to prevent the unused-dependency checks from removing deps that satisfy\n * transitive peer requirements.\n */\nexport function getRequiredTransitivePeers(\n location: string,\n { dependencies, devDependencies }: CheckPackageParams,\n): Set<string> {\n const peerSources = collectPeerSources(location, dependencies, devDependencies)\n return new Set(peerSources.keys())\n}\n\nfunction logUnsatisfiedPeer(name: string, unsatisfied: UnsatisfiedPeer): void {\n const {\n peer, sources, reason, hasRuntimeSource, installedVersion, versionRange,\n } = unsatisfied\n const chainInfo = formatChain(sources)\n\n if (reason === 'version-mismatch') {\n const requiredByList = sources.map(s => s.requiredBy)\n console.log(\n `[${chalk.blue(name)}] Peer dependency version mismatch ${chalk.red(peer)}`\n + ` — installed ${chalk.yellow(installedVersion ?? 'unknown')}`\n + ` does not satisfy ${chalk.cyan(versionRange)}`\n + ` (required by ${chalk.cyan(requiredByList.join(', '))})`\n + chainInfo,\n )\n } else if (hasRuntimeSource) {\n const requiredByList = sources.filter(s => s.isRuntimeDep).map(s => s.requiredBy)\n console.log(\n `[${chalk.blue(name)}] Unsatisfied peer dependency ${chalk.red(peer)}`\n + ` (required by ${chalk.cyan(requiredByList.join(', '))})`\n + chainInfo\n + ' — must be in dependencies or peerDependencies',\n )\n } else {\n const requiredByList = sources.map(s => s.requiredBy)\n console.log(\n `[${chalk.blue(name)}] Unsatisfied peer dependency ${chalk.red(peer)}`\n + ` (required by devDependency ${chalk.cyan(requiredByList.join(', '))})`\n + chainInfo\n + ' — must be in dependencies, devDependencies, or peerDependencies',\n )\n }\n}\n\nfunction resolveVersionRange(location: string, sources: PeerSource[], peer: string): string {\n for (const source of sources) {\n const range = readPeerVersionRange(location, source.requiredBy, peer)\n if (range) return range\n }\n return '*'\n}\n\nfunction checkVersionSatisfaction(location: string, peer: string, requestedRange: string): { installedVersion?: string; satisfied: boolean } {\n const installedVersion = readInstalledVersion(location, peer)\n if (!installedVersion) return { satisfied: true }\n if (requestedRange === '*') return { installedVersion, satisfied: true }\n // workspace: protocol versions resolve at install time — always satisfied\n if (requestedRange.startsWith('workspace:')) return { installedVersion, satisfied: true }\n\n try {\n const satisfied = semver.satisfies(installedVersion, requestedRange, { includePrerelease: true })\n return { installedVersion, satisfied }\n } catch {\n // Invalid semver range or version — skip version check\n return { installedVersion, satisfied: true }\n }\n}\n\nfunction findDeclaredPeerVersionMismatches(\n name: string,\n location: string,\n peerDependencies: string[],\n peerDependencyVersions: Record<string, string>,\n exclude?: Set<string>,\n): UnsatisfiedPeer[] {\n const results: UnsatisfiedPeer[] = []\n for (const peer of peerDependencies) {\n if (exclude?.has(peer) || peer === name) continue\n const declaredRange = peerDependencyVersions[peer]\n if (!declaredRange || declaredRange === '*') continue\n const { installedVersion, satisfied } = checkVersionSatisfaction(location, peer, declaredRange)\n if (!satisfied) {\n results.push({\n hasRuntimeSource: true,\n installedVersion,\n peer,\n reason: 'version-mismatch',\n sources: [{ isRuntimeDep: true, requiredBy: name }],\n versionRange: declaredRange,\n })\n }\n }\n return results\n}\n\nexport function findUnsatisfiedPeers(\n { name, location }: Workspace,\n {\n dependencies, devDependencies, peerDependencies, peerDependencyVersions,\n }: CheckPackageParams,\n exclude?: Set<string>,\n): UnsatisfiedPeer[] {\n const peerSources = collectPeerSources(location, dependencies, devDependencies)\n const depsSet = new Set(dependencies)\n const devDepsSet = new Set(devDependencies)\n const unsatisfied: UnsatisfiedPeer[] = []\n\n for (const [peer, sources] of peerSources) {\n if (exclude?.has(peer) || peer === name) continue\n if (isPeerOptionalInAll(location, peer, sources)) continue\n\n const hasRuntimeSource = sources.some(s => s.isRuntimeDep)\n // A peer is provided if it's in dependencies or devDependencies.\n // Being in peerDependencies alone only passes the requirement to consumers\n // but doesn't actually provide the package (yarn will warn \"doesn't provide\").\n const isPresent = depsSet.has(peer) || devDepsSet.has(peer)\n\n if (!isPresent) {\n const versionRange = resolveVersionRange(location, sources, peer)\n unsatisfied.push({\n hasRuntimeSource, peer, reason: 'missing', sources, versionRange,\n })\n continue\n }\n\n const versionRange = resolveVersionRange(location, sources, peer)\n const { installedVersion, satisfied } = checkVersionSatisfaction(location, peer, versionRange)\n if (!satisfied) {\n unsatisfied.push({\n hasRuntimeSource, installedVersion, peer, reason: 'version-mismatch', sources, versionRange,\n })\n }\n }\n\n return [\n ...unsatisfied,\n ...findDeclaredPeerVersionMismatches(name, location, peerDependencies, peerDependencyVersions, exclude),\n ]\n}\n\n/**\n * Checks that peerDependencies of all dependencies and devDependencies are\n * properly satisfied — both present and version-compatible.\n *\n * Rules:\n * - If a dep in `dependencies` requires peer P, then P must be in\n * `dependencies` or `peerDependencies`.\n * - If a dep in `devDependencies` requires peer P, then P can also be\n * in `devDependencies`.\n * - If multiple deps require the same peer P and at least one is a runtime\n * dependency, the runtime rule applies (P must be in deps or peerDeps).\n * - Checks peers transitively up to 2 levels deep in the dependency tree.\n * - Validates that installed versions satisfy the requested peer ranges.\n */\nexport interface CheckPeerResult {\n count: number\n unsatisfiedPeers: Set<string>\n}\n\nexport function getUnsatisfiedPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): CheckPeerResult {\n const unsatisfied = findUnsatisfiedPeers(workspace, packageParams, exclude)\n\n for (const entry of unsatisfied) {\n logUnsatisfiedPeer(workspace.name, entry)\n }\n\n if (unsatisfied.length > 0) {\n console.log(` ${chalk.yellow(`${workspace.location}/package.json`)}\\n`)\n }\n return {\n count: unsatisfied.length,\n unsatisfiedPeers: new Set(unsatisfied.map(u => u.peer)),\n }\n}\n\n/**\n * Determines if a package is \"terminal\" (an app, CLI, or website — not a library).\n * Terminal packages have their peers added to dependencies; libraries use peerDependencies.\n */\nfunction isTerminalPackage(packageJsonPath: string): boolean {\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as Record<string, unknown>\n return pkg.private === true\n } catch {\n return false\n }\n}\n\n/**\n * Fixes unsatisfied peer dependencies by adding them to package.json.\n *\n * - Terminal packages (private: true): runtime peers go to dependencies,\n * dev-only peers go to devDependencies\n * - Library packages: runtime peers go to peerDependencies,\n * dev-only peers go to devDependencies\n * - Version mismatches are reported but not auto-fixed (requires manual review)\n */\nexport interface FixPeerResult {\n addedPeers: Set<string>\n count: number\n}\n\nfunction fixVersionMismatch(\n workspaceName: string,\n entry: UnsatisfiedPeer,\n pkg: Record<string, Record<string, string>>,\n): boolean {\n const {\n installedVersion, peer, versionRange,\n } = entry\n if (!installedVersion) {\n logUnsatisfiedPeer(workspaceName, entry)\n console.log(\n ` ${chalk.dim('(version mismatch — could not resolve installed version)')}`,\n )\n return false\n }\n\n const match = /^(\\d+)\\.(\\d+)/.exec(installedVersion)\n if (!match) {\n logUnsatisfiedPeer(workspaceName, entry)\n console.log(\n ` ${chalk.dim('(version mismatch — could not resolve installed version)')}`,\n )\n return false\n }\n\n const expectedVersion = versionRange.startsWith('^')\n ? `^${match[1]}`\n : `~${match[1]}.${match[2]}`\n\n if (pkg.peerDependencies?.[peer]) {\n pkg.peerDependencies[peer] = expectedVersion\n }\n if (pkg.devDependencies?.[peer] && !pkg.devDependencies[peer].startsWith('workspace:')) {\n pkg.devDependencies[peer] = expectedVersion\n }\n\n console.log(\n `[${chalk.blue(workspaceName)}] Fixed: updated ${chalk.green(peer)}`\n + ` version to ${chalk.cyan(expectedVersion)} (was ${chalk.yellow(versionRange)})`,\n )\n return true\n}\n\nexport function fixUnsatisfiedPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): FixPeerResult {\n const unsatisfied = findUnsatisfiedPeers(workspace, packageParams, exclude)\n if (unsatisfied.length === 0) return { addedPeers: new Set(), count: 0 }\n\n const packageJsonPath = `${workspace.location}/package.json`\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as Record<string, Record<string, string>>\n const isTerminal = isTerminalPackage(packageJsonPath)\n\n const addedPeers = new Set<string>()\n let fixedCount = 0\n for (const entry of unsatisfied) {\n const {\n hasRuntimeSource,\n peer,\n reason,\n sources,\n versionRange,\n } = entry\n\n if (reason === 'version-mismatch') {\n if (fixVersionMismatch(workspace.name, entry, pkg)) fixedCount++\n continue\n }\n\n const sections = resolvePeerTargetSections(hasRuntimeSource, isTerminal)\n for (const section of sections) {\n pkg[section] = pkg[section] ?? {}\n pkg[section][peer] = versionRange\n }\n addedPeers.add(peer)\n\n const requiredByList = sources.map(s => s.requiredBy).join(', ')\n console.log(\n `[${chalk.blue(workspace.name)}] Fixed: added ${chalk.green(peer)}@${versionRange}`\n + ` to ${chalk.cyan(sections.join(' + '))} (required by ${requiredByList})`,\n )\n fixedCount++\n }\n\n if (fixedCount > 0) {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n fs.writeFileSync(packageJsonPath, `${sorted}\\n`)\n }\n\n return { addedPeers, count: unsatisfied.length }\n}\n\n/**\n * For terminal packages (apps): runtime peers → dependencies, dev-only → devDependencies.\n * For library packages: runtime peers → peerDependencies + devDependencies (peer passes\n * the requirement to consumers, devDep satisfies it for the library's own development).\n * Dev-only peers → devDependencies only.\n */\nexport function resolvePeerTargetSections(hasRuntimeSource: boolean, isTerminal: boolean): string[] {\n if (!hasRuntimeSource) return ['devDependencies']\n if (isTerminal) return ['dependencies']\n return ['peerDependencies', 'devDependencies']\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { getRequiredPeerDependencies } from '../getRequiredPeerDependencies.ts'\nimport {\n logFix, moveDep, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isUsedViaTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nfunction isDepImported(dep: string, distImports: string[], distTypeImports: string[]): boolean {\n const baseName = dep.replace(/^@types\\//, '')\n return distImports.includes(dep)\n || distImports.includes(baseName)\n || distTypeImports.includes(dep)\n || distTypeImports.includes(baseName)\n}\n\nexport type UnusedDepKind = 'move-to-dev' | 'remove'\n\nexport interface UnusedDep {\n dep: string\n kind: UnusedDepKind\n reason?: string\n}\n\nexport function findUnusedDependencies(\n location: string,\n dependencies: string[],\n devDependencies: string[],\n externalDistImports: string[],\n externalDistTypeImports: string[],\n externalAllImports: string[],\n exclude?: Set<string>,\n): UnusedDep[] {\n const runtimeRequiredPeers = getRequiredPeerDependencies(location, dependencies)\n const devRequiredPeers = getRequiredPeerDependencies(location, devDependencies)\n const results: UnusedDep[] = []\n\n for (const dep of dependencies) {\n if (exclude?.has(dep)) continue\n if (runtimeRequiredPeers.has(dep)) continue\n\n const isImported = isDepImported(dep, externalDistImports, externalDistTypeImports)\n if (isImported || isUsedViaTsScriptsVariant(dep, [...externalDistImports, ...externalDistTypeImports])) continue\n\n if (devRequiredPeers.has(dep)) {\n results.push({\n dep, kind: 'move-to-dev', reason: 'only needed as peer of devDependencies',\n })\n } else if (externalAllImports.includes(dep)) {\n results.push({ dep, kind: 'move-to-dev' })\n } else {\n results.push({ dep, kind: 'remove' })\n }\n }\n\n return results\n}\n\nexport function getUnusedDependencies(\n { name, location }: Workspace,\n { dependencies, devDependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalDistTypeImports,\n externalAllImports,\n }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDependencies(location, dependencies, devDependencies, externalDistImports, externalDistTypeImports, externalAllImports, exclude)\n\n for (const {\n dep, kind, reason,\n } of unused) {\n const reasonStr = reason ? ` (${reason})` : ''\n if (kind === 'move-to-dev') {\n console.log(`[${chalk.blue(name)}] dependency should be devDependency in package.json: ${chalk.red(dep)}${reasonStr}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n }\n }\n if (unused.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unused.length\n}\n\nexport function fixUnusedDependencies(\n workspace: Workspace,\n { dependencies, devDependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalDistTypeImports,\n externalAllImports,\n }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDependencies(workspace.location, dependencies, devDependencies, externalDistImports, externalDistTypeImports, externalAllImports, exclude)\n if (unused.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const { dep, kind } of unused) {\n if (kind === 'move-to-dev') {\n moveDep(pkg, dep, 'dependencies', 'devDependencies')\n logFix(workspace, 'moved to devDependencies', dep)\n } else {\n removeDep(pkg, dep, 'dependencies')\n logFix(workspace, 'removed from dependencies', dep)\n }\n }\n\n writePackageJson(workspace.location, pkg)\n return unused.length\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { getCliReferencedPackagesFromFiles } from '../getCliReferencedPackagesFromFiles.ts'\nimport { getRequiredPeerDependencies } from '../getRequiredPeerDependencies.ts'\nimport { getScriptReferencedPackages } from '../getScriptReferencedPackages.ts'\nimport type { FileContext } from '../implicitDevDependencies.ts'\nimport { getImplicitDevDependencies } from '../implicitDevDependencies.ts'\nimport {\n logFix, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isUsedViaTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nconst allExternalImports = ({\n externalAllImports,\n externalDistImports,\n externalDistTypeImports,\n}: CheckSourceParams) => {\n return new Set<string>([\n ...externalAllImports,\n ...externalDistImports,\n ...externalDistTypeImports,\n ])\n}\n\nfunction isDevDepUsed(\n dep: string,\n allImports: Set<string>,\n implicitDeps: Set<string>,\n requiredPeers: Set<string>,\n scriptRefs: Set<string>,\n cliRefs: Set<string>,\n) {\n if (implicitDeps.has(dep)) return true\n if (requiredPeers.has(dep)) return true\n if (scriptRefs.has(dep)) return true\n if (cliRefs.has(dep)) return true\n\n if (dep.startsWith('@types/')) {\n const baseName = dep.replace(/^@types\\//, '')\n return allImports.has(baseName) || allImports.has(dep) || implicitDeps.has(baseName)\n }\n\n if (allImports.has(dep)) return true\n return isUsedViaTsScriptsVariant(dep, [...allImports])\n}\n\nexport function findUnusedDevDeps(\n location: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n exclude?: Set<string>,\n): string[] {\n const allImports = allExternalImports(sourceParams)\n const allDeps = [...dependencies, ...devDependencies, ...peerDependencies]\n const implicitDeps = getImplicitDevDependencies({\n ...fileContext, allDependencies: allDeps, location,\n })\n const requiredPeers = getRequiredPeerDependencies(location, allDeps)\n const scriptRefs = getScriptReferencedPackages(location, allDeps)\n const cliRefs = getCliReferencedPackagesFromFiles(fileContext.allFiles, location, allDeps)\n const unused: string[] = []\n\n for (const dep of devDependencies) {\n if (exclude?.has(dep)) continue\n if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue\n\n if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {\n unused.push(dep)\n }\n }\n\n return unused\n}\n\nexport function getUnusedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDevDeps(location, dependencies, devDependencies, peerDependencies, sourceParams, fileContext, exclude)\n\n for (const dep of unused) {\n console.log(`[${chalk.blue(name)}] Unused devDependency in package.json: ${chalk.red(dep)}`)\n }\n if (unused.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unused.length\n}\n\nexport function fixUnusedDevDependencies(\n workspace: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDevDeps(workspace.location, dependencies, devDependencies, peerDependencies, sourceParams, fileContext, exclude)\n if (unused.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of unused) {\n removeDep(pkg, dep, 'devDependencies')\n logFix(workspace, 'removed from devDependencies', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return unused.length\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport ts from 'typescript'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\nimport { getBinNames, tokenizeScript } from './getScriptReferencedPackages.ts'\n\n/**\n * Names of child_process functions that execute shell commands as a single\n * string (first argument is a command string to tokenize).\n */\nconst shellCommandFunctions = new Set(['execSync', 'exec'])\n\n/**\n * Names of child_process functions where the first argument is the\n * executable name directly (not a full shell command string).\n */\nconst directExecFunctions = new Set(['spawn', 'spawnSync', 'execFile', 'execFileSync'])\n\n/**\n * All child_process function names we scan for.\n */\nconst allExecFunctions = new Set([...shellCommandFunctions, ...directExecFunctions])\n\n/**\n * Extracts command strings from child_process calls (execSync, spawn, etc.)\n * found in a single source file.\n *\n * For shell-style calls (execSync, exec) the first argument is a command\n * string like \"npx typedoc --options foo\" — we tokenize it and return the\n * tokens. For direct-exec calls (spawn, spawnSync, execFile, execFileSync)\n * the first argument is the executable name itself.\n */\nfunction getCommandTokensFromFile(filePath: string): Set<string> {\n const tokens = new Set<string>()\n let sourceCode: string\n try {\n sourceCode = fs.readFileSync(filePath, 'utf8')\n } catch {\n return tokens\n }\n\n const isMjsFile = filePath.endsWith('.mjs')\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n isMjsFile ? ts.ScriptKind.JS : undefined,\n )\n\n function visit(node: ts.Node) {\n if (ts.isCallExpression(node) && node.arguments.length > 0) {\n const fnName = getFunctionName(node.expression)\n if (fnName && allExecFunctions.has(fnName)) {\n const firstArg = node.arguments[0]\n if (ts.isStringLiteral(firstArg) || ts.isNoSubstitutionTemplateLiteral(firstArg)) {\n const value = firstArg.text\n if (shellCommandFunctions.has(fnName)) {\n // Shell command string — tokenize to extract the executable and args\n for (const token of tokenizeScript(value)) {\n tokens.add(token)\n }\n } else {\n // Direct exec — first arg is the executable name\n tokens.add(value)\n }\n } else if (ts.isTemplateExpression(firstArg)) {\n // Template literal like `npx typedoc --options ${path}` — extract\n // the static head which usually contains the command name\n const head = firstArg.head.text\n if (head) {\n for (const token of tokenizeScript(head)) {\n tokens.add(token)\n }\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n return tokens\n}\n\n/**\n * Resolves the function name from a call expression, handling both direct\n * calls like `execSync(...)` and qualified calls like `child_process.execSync(...)`.\n */\nfunction getFunctionName(expr: ts.Expression): string | undefined {\n if (ts.isIdentifier(expr)) {\n return expr.text\n }\n if (ts.isPropertyAccessExpression(expr) && ts.isIdentifier(expr.name)) {\n return expr.name.text\n }\n return undefined\n}\n\n/**\n * Scans source files for child_process calls (execSync, spawn, etc.) and\n * resolves referenced packages by matching command tokens against known\n * dependency binary names.\n *\n * This complements getScriptReferencedPackages (which scans package.json\n * scripts) by catching CLI usage in actual source code, e.g.:\n * execSync(`npx typedoc --options ${configPath}`)\n * spawnSync('eslint', ['--fix', '.'])\n */\nexport function getCliReferencedPackagesFromFiles(\n allFiles: string[],\n location: string,\n allDeps: string[],\n): Set<string> {\n // Collect all command tokens from every source file\n const allTokens = new Set<string>()\n for (const file of allFiles) {\n for (const token of getCommandTokensFromFile(file)) {\n allTokens.add(token)\n }\n }\n\n if (allTokens.size === 0) return new Set()\n\n // Build bin-name -> package-name map (same approach as getScriptReferencedPackages)\n const binToPackage = new Map<string, string>()\n for (const dep of allDeps) {\n for (const bin of getBinNames(location, dep)) {\n binToPackage.set(bin, dep)\n }\n }\n\n const referenced = new Set<string>()\n for (const token of allTokens) {\n // Direct package name match\n const baseName = getBasePackageName(token)\n if (allDeps.includes(baseName)) {\n referenced.add(baseName)\n }\n // Binary name match (e.g. token \"typedoc\" -> package \"typedoc\")\n const pkg = binToPackage.get(token)\n if (pkg) {\n referenced.add(pkg)\n }\n }\n\n return referenced\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\nimport { findDepPackageJson } from './getRequiredPeerDependencies.ts'\n\nexport function getBinNames(location: string, dep: string): string[] {\n const depPkgPath = findDepPackageJson(location, dep)\n if (!depPkgPath) return []\n try {\n const raw = fs.readFileSync(depPkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (!pkg.bin) return []\n if (typeof pkg.bin === 'string') return [((pkg.name as string | undefined)?.split('/').pop()) ?? dep]\n return Object.keys(pkg.bin as Record<string, unknown>)\n } catch {\n return []\n }\n}\n\nexport function tokenizeScript(script: string): string[] {\n // Split on shell operators and whitespace to get command tokens\n return script\n .split(/[&|;$()\"`\\s]+/)\n .map(t => t.trim())\n .filter(Boolean)\n}\n\n/**\n * Scans package.json scripts for references to installed packages,\n * either by package name or by binary name they provide.\n */\nexport function getScriptReferencedPackages(\n location: string,\n allDeps: string[],\n): Set<string> {\n const pkgPath = path.join(location, 'package.json')\n let scripts: Record<string, string>\n try {\n const raw = fs.readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n scripts = (pkg.scripts ?? {}) as Record<string, string>\n } catch {\n return new Set()\n }\n\n const scriptText = Object.values(scripts).join(' ')\n const tokens = new Set(tokenizeScript(scriptText))\n\n // Build a map from bin name -> package name\n const binToPackage = new Map<string, string>()\n for (const dep of allDeps) {\n const bins = getBinNames(location, dep)\n for (const bin of bins) {\n binToPackage.set(bin, dep)\n }\n }\n\n const referenced = new Set<string>()\n for (const token of tokens) {\n // Direct package name match (e.g. \"yarn rimraf\" -> token \"rimraf\")\n const baseName = getBasePackageName(token)\n if (allDeps.includes(baseName)) {\n referenced.add(baseName)\n }\n // Binary name match (e.g. \"tsup\" -> @xylabs/ts-scripts-yarn3 provides \"tsup\"? no, tsup provides \"tsup\")\n const pkg = binToPackage.get(token)\n if (pkg) {\n referenced.add(pkg)\n }\n }\n\n return referenced\n}\n","import fs from 'node:fs'\n\nimport { detectPackageManager } from '../../pm/index.ts'\nimport { findDepPackageJson } from './getRequiredPeerDependencies.ts'\n\nexport interface ImplicitDevDependencyRule {\n isNeeded: (context: ImplicitDepContext) => boolean\n package: string\n}\n\nexport interface FileContext {\n allFiles: string[]\n distFiles: string[]\n}\n\nexport interface ImplicitDepContext extends FileContext {\n allDependencies: string[]\n location: string\n}\n\nconst hasFileWithExtension = (files: string[], extensions: string[]) =>\n files.some(f => extensions.some(ext => f.endsWith(ext)))\n\nconst tsExtensions = ['.ts', '.tsx', '.mts', '.cts']\n\nconst hasTypescriptFiles = ({ allFiles }: ImplicitDepContext) =>\n hasFileWithExtension(allFiles, tsExtensions)\n\n// Matches decorator usage: @something at the start of a line (after optional whitespace).\n// Safe from JSDoc false positives since those appear after * in comment blocks.\nconst decoratorPattern = /^\\s*@[a-zA-Z]\\w*/m\n\nconst hasDecorators = ({ allFiles }: ImplicitDepContext) =>\n allFiles\n .filter(f => tsExtensions.some(ext => f.endsWith(ext)))\n .some((file) => {\n try {\n const content = fs.readFileSync(file, 'utf8')\n return decoratorPattern.test(content)\n } catch {\n return false\n }\n })\n\n/**\n * Checks if any direct dependency declares tslib as a peer dependency.\n * Many compiled TypeScript packages require tslib at runtime even when\n * the consuming package doesn't use decorators itself.\n */\nconst hasDependencyRequiringTslib = ({ location, allDependencies }: ImplicitDepContext) =>\n allDependencies.some((dep) => {\n const pkgPath = findDepPackageJson(location, dep)\n if (!pkgPath) return false\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const peers = pkg.peerDependencies as Record<string, string> | undefined\n return peers !== undefined && 'tslib' in peers\n } catch {\n return false\n }\n })\n\nconst importPlugins = new Set(['eslint-plugin-import-x', 'eslint-plugin-import'])\n\n/**\n * Checks whether any dependency (direct or transitive) pulls in\n * one of the eslint import plugins that require a resolver.\n */\nfunction hasImportPlugin({ location, allDependencies }: ImplicitDepContext): boolean {\n // Direct dependency on the plugin\n if (allDependencies.some(d => importPlugins.has(d))) return true\n\n // Transitive: a dependency bundles the plugin as a dep or peer\n for (const dep of allDependencies) {\n const pkgPath = findDepPackageJson(location, dep)\n if (!pkgPath) continue\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const transitiveDeps = [\n ...Object.keys((pkg.dependencies ?? {}) as Record<string, unknown>),\n ...Object.keys((pkg.peerDependencies ?? {}) as Record<string, unknown>),\n ]\n if (transitiveDeps.some(d => importPlugins.has(d))) return true\n } catch {\n // skip unreadable packages\n }\n }\n return false\n}\n\nconst hasVitest = ({ allDependencies }: ImplicitDepContext) =>\n allDependencies.includes('vitest')\n\nconst isYarnRepo = () => detectPackageManager() === 'yarn'\nconst isPnpmRepo = () => detectPackageManager() === 'pnpm'\n\nconst rules: ImplicitDevDependencyRule[] = [\n {\n package: 'typescript',\n isNeeded: hasTypescriptFiles,\n },\n {\n package: 'eslint-import-resolver-typescript',\n isNeeded: context =>\n hasTypescriptFiles(context)\n && context.allDependencies.includes('eslint')\n && hasImportPlugin(context),\n },\n {\n package: 'tslib',\n isNeeded: context => hasDecorators(context) || hasDependencyRequiringTslib(context),\n },\n {\n package: '@vitest/coverage-v8',\n isNeeded: hasVitest,\n },\n {\n package: '@xylabs/ts-scripts-yarn3',\n isNeeded: isYarnRepo,\n },\n {\n package: '@xylabs/ts-scripts-react-yarn3',\n isNeeded: isYarnRepo,\n },\n {\n package: '@xylabs/ts-scripts-pnpm',\n isNeeded: isPnpmRepo,\n },\n {\n package: '@xylabs/ts-scripts-react-pnpm',\n isNeeded: isPnpmRepo,\n },\n]\n\nexport function getImplicitDevDependencies(context: ImplicitDepContext): Set<string> {\n const implicit = new Set<string>()\n for (const rule of rules) {\n if (rule.isNeeded(context)) {\n implicit.add(rule.package)\n }\n }\n return implicit\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n logFix, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nfunction isPeerUsed(dep: string, externalDistImports: string[], externalDistTypeImports: string[]): boolean {\n const baseName = dep.replace(/^@types\\//, '')\n return externalDistImports.includes(dep)\n || externalDistImports.includes(baseName)\n || externalDistTypeImports.includes(dep)\n || externalDistTypeImports.includes(baseName)\n}\n\nexport function findUnusedPeerDeps(\n peerDependencies: string[],\n externalDistImports: string[],\n externalDistTypeImports: string[],\n exclude?: Set<string>,\n): string[] {\n const unused: string[] = []\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n if (!isPeerUsed(dep, externalDistImports, externalDistTypeImports)) {\n unused.push(dep)\n }\n }\n return unused\n}\n\nexport function getUnusedPeerDependencies(\n { name, location }: Workspace,\n { peerDependencies, dependencies }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedPeerDeps(peerDependencies, externalDistImports, externalDistTypeImports, exclude)\n\n for (const dep of unused) {\n if (dependencies.includes(dep)) {\n console.log(`[${chalk.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk.red(dep)}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused peerDependency in package.json: ${chalk.red(dep)}`)\n }\n }\n if (unused.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unused.length\n}\n\nexport function fixUnusedPeerDependencies(\n workspace: Workspace,\n { peerDependencies }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedPeerDeps(peerDependencies, externalDistImports, externalDistTypeImports, exclude)\n if (unused.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of unused) {\n removeDep(pkg, dep, 'peerDependencies')\n logFix(workspace, 'removed from peerDependencies', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return unused.length\n}\n","import chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n addDep, logFix, readPackageJson, resolveDepVersion, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport type { CheckPackageParams } from './checkPackageTypes.ts'\n\ntype DepSection = 'dependencies' | 'devDependencies' | 'peerDependencies'\n\nexport interface VersionProblem {\n dep: string\n section: DepSection\n version: string\n}\n\nexport interface PeerVersionIncompatibility {\n actualVersion: string\n declaredRange: string\n dep: string\n}\n\nfunction checkSection(\n deps: string[],\n versions: Record<string, string>,\n section: DepSection,\n workspaceNames: Set<string>,\n problems: VersionProblem[],\n): void {\n for (const dep of deps) {\n if (!workspaceNames.has(dep)) continue\n const version = versions[dep]\n if (version && !version.startsWith('workspace:')) {\n problems.push({\n dep, section, version,\n })\n }\n }\n}\n\nexport function findWorkspaceVersionProblems(\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n): VersionProblem[] {\n const problems: VersionProblem[] = []\n\n checkSection(packageParams.dependencies, packageParams.dependencyVersions, 'dependencies', workspaceNames, problems)\n checkSection(packageParams.devDependencies, packageParams.devDependencyVersions, 'devDependencies', workspaceNames, problems)\n\n return problems\n}\n\nexport function findWorkspacePeerVersionProblems(\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n location: string,\n): PeerVersionIncompatibility[] {\n const problems: PeerVersionIncompatibility[] = []\n\n for (const dep of packageParams.peerDependencies) {\n if (!workspaceNames.has(dep)) continue\n const declaredRange = packageParams.peerDependencyVersions[dep]\n if (!declaredRange || declaredRange.startsWith('workspace:')) continue\n\n const resolved = resolveDepVersion(location, dep)\n // resolveDepVersion returns ~X.Y.Z or *, extract the raw version\n const actualVersion = resolved.startsWith('~') ? resolved.slice(1) : resolved\n if (actualVersion === '*') continue\n\n if (!semver.satisfies(actualVersion, declaredRange)) {\n problems.push({\n actualVersion, declaredRange, dep,\n })\n }\n }\n\n return problems\n}\n\nexport function getWorkspaceVersionProblems(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n): number {\n const problems = findWorkspaceVersionProblems(packageParams, workspaceNames)\n\n for (const {\n dep, section, version,\n } of problems) {\n console.log(\n `[${chalk.blue(name)}] Workspace dependency ${chalk.red(dep)} in ${chalk.cyan(section)}`\n + ` should use workspace: protocol — found ${chalk.yellow(version)}`,\n )\n }\n if (problems.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return problems.length\n}\n\nexport function fixWorkspaceVersionProblems(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n): number {\n const problems = findWorkspaceVersionProblems(packageParams, workspaceNames)\n if (problems.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const { dep, section } of problems) {\n addDep(pkg, dep, 'workspace:~', section)\n logFix(workspace, `set workspace:~ for ${section}`, dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return problems.length\n}\n","import type { UnsatisfiedPeer } from './checkPackage/index.ts'\nimport {\n findMismatchedPeerDevVersions,\n findRedundantPeerDeps,\n findUnlistedDependencies,\n findUnlistedDevDeps,\n findUnrequestedPeerDeps,\n findUnsatisfiedPeers,\n findUnusedDependencies,\n findUnusedDevDeps,\n findUnusedPeerDeps,\n findWorkspacePeerVersionProblems,\n findWorkspaceVersionProblems,\n resolvePeerTargetSections,\n shouldBePeerDependency,\n} from './checkPackage/index.ts'\nimport { resolveDepVersion, resolveExpectedPeerVersion } from './packageJsonEditor.ts'\nimport type {\n DeplintDiagnostic, DeplintFix, DeplintRule, DeplintSection, DeplintWorkspaceContext,\n} from './types.ts'\n\nfunction diagnostic(\n context: DeplintWorkspaceContext,\n id: string,\n message: string,\n dependency?: string,\n evidence?: string[],\n fixes?: DeplintFix[],\n): DeplintDiagnostic {\n return {\n dependency,\n evidence,\n file: context.packageJsonPath,\n fixes,\n id,\n message,\n severity: 'error',\n workspace: context.workspace,\n }\n}\n\nfunction resolvedAddFix(\n context: DeplintWorkspaceContext,\n dependency: string,\n section: DeplintSection,\n detail: string,\n): DeplintFix {\n return {\n action: 'add',\n dependency,\n detail,\n section,\n version: resolveDepVersion(context.workspace.location, dependency),\n }\n}\n\nconst unlistedDependenciesRule: DeplintRule = {\n category: 'dependencies',\n id: 'deplint.dependencies.unlisted',\n evaluate(context) {\n const findings = findUnlistedDependencies(\n context.workspace.name,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.packageParams.peerDependencies,\n context.sourceParams.externalDistImports,\n context.sourceParams.externalDistTypeImports,\n )\n\n return findings.map(({ imp, section }) => {\n // For library packages, check if this import shares peers with the\n // package's existing peerDependencies (e.g. react-dom peers on react).\n // If so, it should be a peerDependency + devDependency, not a dependency.\n const isPeer = !context.isTerminalPackage\n && section === 'dependencies'\n && !context.forceDeps.has(imp)\n && shouldBePeerDependency(imp, context.workspace.location, context.packageParams.peerDependencies, context.sourceParams.externalDistImports)\n\n const fixes = isPeer\n ? (['peerDependencies', 'devDependencies'] as DeplintSection[]).map(\n s => resolvedAddFix(context, imp, s, `added to ${s}`),\n )\n : [resolvedAddFix(context, imp, section, `added to ${section}`)]\n\n return diagnostic(\n context,\n 'deplint.dependencies.unlisted',\n `Missing dependency in package.json: ${imp}`,\n imp,\n context.sourceParams.distImportPaths[imp],\n fixes,\n )\n })\n },\n}\n\nconst unusedDependenciesRule: DeplintRule = {\n category: 'dependencies',\n id: 'deplint.dependencies.unused',\n evaluate(context) {\n const findings = findUnusedDependencies(\n context.workspace.location,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.sourceParams.externalDistImports,\n context.sourceParams.externalDistTypeImports,\n context.sourceParams.externalAllImports,\n context.unusedDependencyExclude,\n )\n\n return findings.map(({\n dep, kind, reason,\n }) => diagnostic(\n context,\n 'deplint.dependencies.unused',\n kind === 'move-to-dev'\n ? `dependency should be devDependency in package.json: ${dep}${reason ? ` (${reason})` : ''}`\n : `Unused dependency in package.json: ${dep}`,\n dep,\n undefined,\n [kind === 'move-to-dev'\n ? {\n action: 'move',\n dependency: dep,\n detail: 'moved to devDependencies',\n fromSection: 'dependencies',\n toSection: 'devDependencies',\n }\n : {\n action: 'remove',\n dependency: dep,\n detail: 'removed from dependencies',\n section: 'dependencies',\n }],\n ))\n },\n}\n\nconst unlistedDevDependenciesRule: DeplintRule = {\n category: 'devDependencies',\n id: 'deplint.devDependencies.unlisted',\n evaluate(context) {\n const findings = findUnlistedDevDeps(\n context.workspace.name,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.packageParams.peerDependencies,\n context.sourceParams.externalAllImports,\n context.sourceParams.distImports,\n context.sourceParams.externalDistTypeImports,\n )\n\n return findings.map(imp => diagnostic(\n context,\n 'deplint.devDependencies.unlisted',\n `Missing devDependency in package.json: ${imp}`,\n imp,\n context.sourceParams.allImportPaths[imp],\n [resolvedAddFix(context, imp, 'devDependencies', 'added to devDependencies')],\n ))\n },\n}\n\nconst unusedDevDependenciesRule: DeplintRule = {\n category: 'devDependencies',\n id: 'deplint.devDependencies.unused',\n evaluate(context) {\n const findings = findUnusedDevDeps(\n context.workspace.location,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.packageParams.peerDependencies,\n context.sourceParams,\n context.fileContext,\n context.unusedDependencyExclude,\n )\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.devDependencies.unused',\n `Unused devDependency in package.json: ${dep}`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed from devDependencies', section: 'devDependencies',\n }],\n ))\n },\n}\n\nconst redundantDevDependenciesRule: DeplintRule = {\n category: 'devDependencies',\n id: 'deplint.devDependencies.redundant',\n evaluate(context) {\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const dep of context.packageParams.devDependencies) {\n if (!context.packageParams.dependencies.includes(dep)) continue\n // Skip if this dep will be moved to peerDependencies (the devDep is needed as the peer's companion)\n if (!context.isTerminalPackage\n && !context.forceDeps.has(dep)\n && shouldBePeerDependency(dep, context.workspace.location, context.packageParams.peerDependencies, context.sourceParams.externalDistImports)) {\n continue\n }\n diagnostics.push(diagnostic(\n context,\n 'deplint.devDependencies.redundant',\n `Redundant devDependency ${dep} — already listed in dependencies`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed redundant devDependency (kept in dependencies)', section: 'devDependencies',\n }],\n ))\n }\n\n return diagnostics\n },\n}\n\nfunction generateVersionMismatchFixes(\n context: DeplintWorkspaceContext,\n finding: UnsatisfiedPeer,\n): DeplintFix[] {\n const expectedVersion = resolveExpectedPeerVersion(\n context.workspace.location,\n finding.peer,\n finding.versionRange,\n )\n if (expectedVersion === '*') return []\n\n const fixes: DeplintFix[] = []\n\n // Fix peerDependencies if the package declares this peer\n if (context.packageParams.peerDependencies.includes(finding.peer)) {\n fixes.push({\n action: 'set-version',\n dependency: finding.peer,\n detail: `updated peerDependency version to match installed (${finding.installedVersion})`,\n section: 'peerDependencies',\n version: expectedVersion,\n })\n }\n\n // Fix devDependencies if it also has a mismatched version\n if (context.packageParams.devDependencies.includes(finding.peer)) {\n const devVersion = context.packageParams.devDependencyVersions[finding.peer]\n // Only fix non-workspace devDep versions\n if (devVersion && !devVersion.startsWith('workspace:')) {\n fixes.push({\n action: 'set-version',\n dependency: finding.peer,\n detail: `updated devDependency version to match installed (${finding.installedVersion})`,\n section: 'devDependencies',\n version: expectedVersion,\n })\n }\n }\n\n return fixes\n}\n\nconst unsatisfiedPeersRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.unsatisfied',\n evaluate(context) {\n const findings = findUnsatisfiedPeers(context.workspace, context.packageParams, context.exclude)\n\n return findings.map((finding) => {\n const requiredBy = finding.sources.map(source => source.requiredBy).join(', ')\n const chain = finding.sources.find(source => source.chain && source.chain.length > 0)?.chain?.join(' -> ')\n const evidence = chain ? [`via ${chain}`] : undefined\n const message = finding.reason === 'version-mismatch'\n ? `Peer dependency version mismatch ${finding.peer} — installed ${finding.installedVersion ?? 'unknown'} does not satisfy ${finding.versionRange} (required by ${requiredBy})`\n : finding.hasRuntimeSource\n ? `Unsatisfied peer dependency ${finding.peer} (required by ${requiredBy}) — must be in dependencies or peerDependencies`\n : `Unsatisfied peer dependency ${finding.peer} (required by devDependency ${requiredBy}) — must be in dependencies, devDependencies, or peerDependencies`\n\n const fixes = finding.reason === 'missing'\n ? resolvePeerTargetSections(finding.hasRuntimeSource, context.isTerminalPackage).map((section): DeplintFix => ({\n action: 'add',\n dependency: finding.peer,\n detail: `added to ${section}`,\n section: section as DeplintSection,\n version: finding.versionRange,\n }))\n : finding.reason === 'version-mismatch'\n ? generateVersionMismatchFixes(context, finding)\n : undefined\n\n return diagnostic(\n context,\n 'deplint.peerDependencies.unsatisfied',\n message,\n finding.peer,\n evidence,\n fixes,\n )\n })\n },\n}\n\nconst unusedPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.unused',\n evaluate(context) {\n const findings = findUnusedPeerDeps(\n context.packageParams.peerDependencies,\n context.sourceParams.externalDistImports,\n context.sourceParams.externalDistTypeImports,\n context.unusedDependencyExclude,\n )\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.peerDependencies.unused',\n context.packageParams.dependencies.includes(dep)\n ? `Unused peerDependency [already a dependency] in package.json: ${dep}`\n : `Unused peerDependency in package.json: ${dep}`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed from peerDependencies', section: 'peerDependencies',\n }],\n ))\n },\n}\n\nconst unrequestedPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.unrequested',\n evaluate(context) {\n if (!context.isTerminalPackage) return []\n\n const findings = findUnrequestedPeerDeps(\n context.workspace.location,\n context.packageParams,\n context.sourceParams,\n context.exclude,\n )\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.peerDependencies.unrequested',\n `Unnecessary peerDependency ${dep} — imported in dist but no dependency requires it as a peer; should be a dependency`,\n dep,\n undefined,\n [{\n action: 'move',\n dependency: dep,\n detail: 'moved from peerDependencies to dependencies',\n fromSection: 'peerDependencies',\n toSection: 'dependencies',\n version: context.packageParams.peerDependencyVersions[dep] ?? '*',\n }],\n ))\n },\n}\n\nconst misplacedDependenciesRule: DeplintRule = {\n category: 'dependencies',\n id: 'deplint.dependencies.misplaced',\n evaluate(context) {\n // Only applies to library packages — terminal packages keep deps in dependencies\n if (context.isTerminalPackage) return []\n\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const dep of context.packageParams.dependencies) {\n // Skip packages explicitly configured as dependencies via deplint.deps\n if (context.forceDeps.has(dep)) continue\n // Check if this dependency is configured as refType 'peer', or if it shares peers\n // with the package's existing peerDependencies (e.g. react-dom peers on react)\n if (context.forcePeers.has(dep)\n || shouldBePeerDependency(dep, context.workspace.location, context.packageParams.peerDependencies, context.sourceParams.externalDistImports)) {\n const fixes: DeplintFix[] = [{\n action: 'move',\n dependency: dep,\n detail: 'moved from dependencies to peerDependencies',\n fromSection: 'dependencies',\n toSection: 'peerDependencies',\n }]\n // Also ensure it's in devDependencies if not already\n if (!context.packageParams.devDependencies.includes(dep)) {\n fixes.push(resolvedAddFix(context, dep, 'devDependencies', 'added to devDependencies'))\n }\n\n const reason = context.forcePeers.has(dep)\n ? 'configured as refType \"peer\"'\n : 'it shares peers with existing peerDependencies'\n diagnostics.push(diagnostic(\n context,\n 'deplint.dependencies.misplaced',\n `dependency ${dep} should be a peerDependency — ${reason}`,\n dep,\n undefined,\n fixes,\n ))\n }\n }\n\n return diagnostics\n },\n}\n\nconst misplacedPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.misplaced',\n evaluate(context) {\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const dep of context.packageParams.peerDependencies) {\n if (context.forceDeps.has(dep)) {\n const fixes: DeplintFix[] = [{\n action: 'move',\n dependency: dep,\n detail: 'moved from peerDependencies to dependencies',\n fromSection: 'peerDependencies',\n toSection: 'dependencies',\n version: context.packageParams.peerDependencyVersions[dep] ?? '*',\n }]\n\n diagnostics.push(diagnostic(\n context,\n 'deplint.peerDependencies.misplaced',\n `peerDependency ${dep} should be a dependency — configured as refType \"dep\"`,\n dep,\n undefined,\n fixes,\n ))\n }\n }\n\n return diagnostics\n },\n}\n\nconst redundantPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.redundant',\n evaluate(context) {\n const findings = findRedundantPeerDeps(context.packageParams, context.exclude)\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.peerDependencies.redundant',\n `Redundant peerDependency ${dep} — already listed in dependencies`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed redundant peerDependency (kept in dependencies)', section: 'peerDependencies',\n }],\n ))\n },\n}\n\nconst mismatchedPeerDevVersionsRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.version-mismatch',\n evaluate(context) {\n const findings = findMismatchedPeerDevVersions(context.packageParams, context.exclude)\n\n return findings.map(({\n dep, devVersion, peerVersion,\n }) => diagnostic(\n context,\n 'deplint.peerDependencies.version-mismatch',\n `Peer/dev version mismatch ${dep} — peer: ${peerVersion}, dev: ${devVersion}`,\n dep,\n undefined,\n [{\n action: 'set-version', dependency: dep, detail: 'synced peerDependency to devDependency version', section: 'peerDependencies', version: devVersion,\n }],\n ))\n },\n}\n\nconst workspaceVersionProblemsRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.workspace.protocol',\n evaluate(context) {\n if (!context.workspaceNames) return []\n\n const protocolFindings = findWorkspaceVersionProblems(context.packageParams, context.workspaceNames)\n const protocolDiagnostics = protocolFindings.map(({\n dep, section, version,\n }) => diagnostic(\n context,\n 'deplint.workspace.protocol',\n `Workspace dependency ${dep} in ${section} should use workspace: protocol — found ${version}`,\n dep,\n undefined,\n [{\n action: 'set-version', dependency: dep, detail: `set workspace:~ for ${section}`, section, version: 'workspace:~',\n }],\n ))\n\n const peerFindings = findWorkspacePeerVersionProblems(\n context.packageParams,\n context.workspaceNames,\n context.workspace.location,\n )\n const peerDiagnostics = peerFindings.map(({\n dep, actualVersion, declaredRange,\n }) => {\n const expectedRange = resolveExpectedPeerVersion(\n context.workspace.location,\n dep,\n declaredRange,\n )\n return diagnostic(\n context,\n 'deplint.workspace.protocol',\n `Workspace peerDependency ${dep} range ${declaredRange} does not satisfy workspace version ${actualVersion}`,\n dep,\n undefined,\n expectedRange === '*'\n ? undefined\n : [{\n action: 'set-version', dependency: dep, detail: 'updated peerDependency to match workspace version', section: 'peerDependencies', version: expectedRange,\n }],\n )\n })\n\n return [...protocolDiagnostics, ...peerDiagnostics]\n },\n}\n\nexport const deplintRules: DeplintRule[] = [\n unlistedDependenciesRule,\n unusedDependenciesRule,\n misplacedDependenciesRule,\n unlistedDevDependenciesRule,\n unusedDevDependenciesRule,\n redundantDevDependenciesRule,\n unsatisfiedPeersRule,\n unusedPeerDependenciesRule,\n unrequestedPeerDependenciesRule,\n misplacedPeerDependenciesRule,\n redundantPeerDependenciesRule,\n mismatchedPeerDevVersionsRule,\n workspaceVersionProblemsRule,\n]\n","import fs from 'node:fs'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport { getRequiredTransitivePeers } from './checkPackage/index.ts'\nimport { findFiles } from './findFiles.ts'\nimport { getDependenciesFromPackageJson } from './getDependenciesFromPackageJson.ts'\nimport { getExtendsFromTsconfigs, getTypesFromTsconfigs } from './getExtendsFromTsconfigs.ts'\nimport { getExternalImportsFromFiles } from './getExternalImportsFromFiles.ts'\nimport type { DeplintWorkspaceContext } from './types.ts'\n\nfunction isTerminalPackage(location: string): boolean {\n try {\n const pkg = JSON.parse(fs.readFileSync(`${location}/package.json`, 'utf8')) as Record<string, unknown>\n return pkg.private === true\n } catch {\n return false\n }\n}\n\nexport function buildWorkspaceContext(\n workspace: Workspace,\n exclude?: Set<string>,\n workspaceNames?: Set<string>,\n forceDeps?: Set<string>,\n forcePeers?: Set<string>,\n): DeplintWorkspaceContext {\n const { allFiles, distFiles } = findFiles(workspace.location)\n const tsconfigExtends = getExtendsFromTsconfigs(workspace.location)\n const tsconfigTypes = getTypesFromTsconfigs(workspace.location)\n const sourceParams = getExternalImportsFromFiles({\n allFiles, distFiles, location: workspace.location, tsconfigExtends, tsconfigTypes,\n })\n const packageJsonPath = `${workspace.location}/package.json`\n const packageParams = getDependenciesFromPackageJson(packageJsonPath)\n const requiredTransitivePeers = getRequiredTransitivePeers(workspace.location, packageParams)\n\n return {\n exclude,\n fileContext: { allFiles, distFiles },\n forceDeps: forceDeps ?? new Set(),\n forcePeers: forcePeers ?? new Set(),\n isTerminalPackage: isTerminalPackage(workspace.location),\n packageJsonPath,\n packageParams,\n sourceParams,\n unusedDependencyExclude: new Set([...(exclude ?? []), ...requiredTransitivePeers]),\n workspace,\n workspaceNames,\n }\n}\n","import { loadWorkspaceCommandConfig } from '../../lib/index.ts'\nimport type { Workspace } from '../../pm/index.ts'\nimport type { DeplintConfig } from '../package/index.ts'\nimport { applyDeplintFixes } from './fixer.ts'\nimport { deplintRules } from './rules.ts'\nimport { buildWorkspaceContext } from './snapshot.ts'\nimport type {\n DeplintDiagnostic, DeplintRunOptions, DeplintRunResult,\n} from './types.ts'\n\nfunction resolveCheckFlags(deps = false, devDeps = false, peerDeps = false) {\n const noneExplicit = !(deps || devDeps || peerDeps)\n return {\n checkDependencies: deps || noneExplicit,\n checkDevDependencies: devDeps || noneExplicit,\n checkPeerDependencies: peerDeps || noneExplicit,\n }\n}\n\nfunction shouldRunRule(\n category: 'dependencies' | 'devDependencies' | 'peerDependencies',\n ruleId: string,\n options: DeplintRunOptions,\n): boolean {\n const flags = resolveCheckFlags(options.deps, options.devDeps, options.peerDeps)\n if (ruleId === 'deplint.peerDependencies.unsatisfied') {\n return flags.checkDependencies || flags.checkDevDependencies || flags.checkPeerDependencies\n }\n if (ruleId === 'deplint.workspace.protocol') {\n return flags.checkDependencies || flags.checkDevDependencies || flags.checkPeerDependencies\n }\n if (category === 'dependencies') return flags.checkDependencies\n if (category === 'devDependencies') return flags.checkDevDependencies\n return flags.checkPeerDependencies\n}\n\nasync function evaluateWorkspaces(\n workspaces: Workspace[],\n options: DeplintRunOptions,\n workspaceNames?: Set<string>,\n): Promise<DeplintDiagnostic[]> {\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const workspace of workspaces) {\n // Load per-workspace deplint config (root merged with package-level)\n const wsConfig = await loadWorkspaceCommandConfig<DeplintConfig>(workspace.location, 'deplint')\n\n // Build exclude set: config + CLI overrides\n const exclude = new Set([\n ...(wsConfig.exclude ?? []),\n ...(options.cliExclude ?? []),\n ])\n\n // Build forceDeps/forcePeers from packages map\n const packageEntries = Object.entries(wsConfig.packages ?? {})\n const forceDeps = new Set(\n packageEntries.filter(([, cfg]) => cfg.refType === 'dep').map(([name]) => name),\n )\n const forcePeers = new Set(\n packageEntries.filter(([, cfg]) => cfg.refType === 'peer').map(([name]) => name),\n )\n\n const context = buildWorkspaceContext(workspace, exclude, workspaceNames, forceDeps, forcePeers)\n if (options.verbose) {\n console.info(`Checking package: ${workspace.name} at ${workspace.location}`)\n console.info(`All files: ${context.fileContext.allFiles.length}, Distribution files: ${context.fileContext.distFiles.length}`)\n }\n\n for (const rule of deplintRules) {\n if (shouldRunRule(rule.category, rule.id, options)) {\n diagnostics.push(...rule.evaluate(context))\n }\n }\n }\n\n return diagnostics\n}\n\nexport async function runDeplint(\n workspaces: Workspace[],\n options: DeplintRunOptions,\n workspaceNames?: Set<string>,\n): Promise<DeplintRunResult> {\n let diagnostics = await evaluateWorkspaces(workspaces, options, workspaceNames)\n const appliedFixes = [] as DeplintRunResult['appliedFixes']\n\n // Fix loop: fixes can cascade (e.g. moving a dep to peer may make a devDep redundant),\n // so re-evaluate and fix until stable or a safety cap is reached.\n const MAX_FIX_PASSES = 5\n for (let pass = 0; options.fix && diagnostics.length > 0 && pass < MAX_FIX_PASSES; pass++) {\n appliedFixes.push(...applyDeplintFixes(diagnostics))\n diagnostics = await evaluateWorkspaces(workspaces, options, workspaceNames)\n }\n\n const errorCount = diagnostics.filter(diagnostic => diagnostic.severity === 'error').length\n const warningCount = diagnostics.filter(diagnostic => diagnostic.severity === 'warning').length\n\n return {\n appliedFixes,\n diagnostics,\n summary: {\n appliedFixes: appliedFixes.length,\n errorCount,\n warningCount,\n workspacesChecked: workspaces.length,\n },\n }\n}\n","import chalk from 'chalk'\n\nimport type { DeplintReporter } from './types.ts'\n\nexport const humanDeplintReporter: DeplintReporter = {\n render(result) {\n for (const fix of result.appliedFixes) {\n console.log(`[${chalk.blue(fix.workspace.name)}] Fixed: ${fix.detail} ${chalk.green(fix.dependency)}`)\n }\n\n for (const diagnostic of result.diagnostics) {\n console.log(`[${chalk.blue(diagnostic.workspace.name)}] ${diagnostic.message}`)\n for (const line of diagnostic.evidence ?? []) {\n console.log(` ${line}`)\n }\n console.log(` ${chalk.yellow(diagnostic.file)}\\n`)\n }\n\n if (result.summary.errorCount > 0) {\n console.warn(`Deplint: Found ${chalk.red(result.summary.errorCount)} dependency problems. ${chalk.red('āœ–')}`)\n return\n }\n\n console.info(`Deplint: Found no dependency problems. ${chalk.green('āœ”')}`)\n },\n}\n\nexport const jsonDeplintReporter: DeplintReporter = {\n render(result) {\n console.log(JSON.stringify(result, null, 2))\n },\n}\n\nexport function getDeplintReporter(format: 'human' | 'json'): DeplintReporter {\n return format === 'json' ? jsonDeplintReporter : humanDeplintReporter\n}\n","import { readFileSync } from 'node:fs'\n\nimport { runSteps } from '../lib/index.ts'\nimport type { Workspace } from '../pm/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { logMonorepoVersion } from './package-lint-deps.ts'\n\nexport type DeployLevel = 'major' | 'minor' | 'patch' | 'prerelease'\n\nconst privatePackageExcludeList = () => {\n const pm = getPackageManager()\n const possibleDeployablePackages: [Workspace, { private?: boolean }][] = pm.listWorkspaces().map(workspace => [workspace,\n JSON.parse(readFileSync(`${workspace.location}/package.json`, { encoding: 'utf8' })) as object])\n\n const privatePackages = possibleDeployablePackages.filter(([_, pkg]) => pkg.private).map(([workspace]) => workspace)\n const excludeList = privatePackages.map(workspace => `--exclude ${workspace.name}`)\n return excludeList\n}\n\nexport function deploy(level: DeployLevel = 'patch'): number {\n const excludeList = privatePackageExcludeList()\n if (excludeList.length > 0) {\n console.log('Excluding private packages from deployment:', excludeList)\n }\n\n const label = level === 'prerelease' ? 'Next' : level.charAt(0).toUpperCase() + level.slice(1)\n const pm = getPackageManager()\n const result = runSteps(`Deploy [${label}]`, [\n ...pm.versionBump(level),\n pm.runXy(['clean']),\n pm.runXy(['build']),\n pm.versionApply(),\n ])\n logMonorepoVersion()\n return result\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport semver from 'semver'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { LintResult } from './package-lint.ts'\n\nfunction readWorkspacePackageJson(cwd: string, location: string): Record<string, unknown> | undefined {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n return JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n return undefined\n }\n}\n\nfunction writeWorkspacePackageJson(cwd: string, location: string, pkg: Record<string, unknown>) {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction buildWorkspaceVersionMap(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Map<string, string> {\n const map = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) map.set(name, version)\n }\n return map\n}\n\n/**\n * Derives the expected peerDep range from the workspace protocol used in\n * the matching devDependency and the current version of the target package.\n *\n * workspace:~ + version 7.6.21 → ~7.6\n * workspace:^ + version 7.6.21 → ^7\n *\n * Falls back to ~major.minor if no matching devDep is found.\n */\nfunction expectedPeerRange(devDepVersion: string | undefined, targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n\n if (devDepVersion === 'workspace:^') {\n return `^${parsed.major}`\n }\n return `~${parsed.major}.${parsed.minor}`\n}\n\n// --- Version consistency checks ---\n\nexport function checkVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n\n if (rootPkg.version !== undefined) {\n result.fixable.push('Root package.json should not have a \"version\" field in a monorepo')\n }\n\n const versions = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n versions.set(name, version)\n } else {\n result.errors.push(`${name} (${location}) is missing a \"version\" field`)\n }\n }\n\n const uniqueVersions = new Set(versions.values())\n if (uniqueVersions.size > 1) {\n const versionList = [...uniqueVersions].toSorted(semver.rcompare)\n for (const [name, version] of versions) {\n if (version !== versionList[0]) {\n result.fixable.push(`${name} has version ${version} (expected ${versionList[0]})`)\n }\n }\n }\n\n return result\n}\n\nexport function fixVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n writeRootPackageJson: (cwd: string, pkg: Record<string, unknown>) => void,\n workspaces: { location: string; name: string }[],\n): void {\n if (rootPkg.version !== undefined) {\n delete rootPkg.version\n writeRootPackageJson(cwd, rootPkg)\n console.log(chalk.green(' āœ” Fixed: removed \"version\" from root package.json'))\n }\n\n const versions: string[] = []\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version && semver.valid(version)) {\n versions.push(version)\n }\n }\n\n if (versions.length === 0) return\n\n const highest = versions.toSorted(semver.rcompare)[0]\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n if (pkg.version !== highest) {\n pkg.version = highest\n writeWorkspacePackageJson(cwd, location, pkg)\n console.log(chalk.green(` āœ” Fixed: set version to ${highest} in ${name} (${location})`))\n }\n }\n}\n\n// --- Internal dependency version checks (dependencies and devDependencies only) ---\n\nfunction expectedDepVersion(targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n return `~${targetVersion}`\n}\n\nexport function checkInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\" (not workspace: protocol)`,\n )\n } else if (version !== expected) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\"`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version !== expected) {\n deps[dep] = expected\n console.log(chalk.green(` āœ” Fixed: set ${depField}.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Workspace protocol checks (pnpm — dependencies and devDependencies only) ---\n\nexport function checkWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should use workspace: protocol`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n deps[dep] = 'workspace:~'\n console.log(chalk.green(` āœ” Fixed: set ${depField}.${dep} to \"workspace:~\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Internal peerDependency version checks ---\n\nexport function checkInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n if (version.startsWith('workspace:')) {\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} uses workspace: protocol — should be \"${expected}\"`,\n )\n continue\n }\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected && !semver.satisfies(targetVersion, version)) {\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} is \"${version}\" — current version ${targetVersion} is not satisfied; expected \"${expected}\"`,\n )\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(` āœ” Fixed: set peerDependencies.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n/**\n * Syncs all internal peerDependency versions to match current workspace versions.\n * Called by xy publish to ensure peerDeps are correct before publishing.\n */\nexport function syncInternalPeerVersions(): number {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n let updated = 0\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(`Publish: updated ${name} peerDependencies.${dep} to \"${expected}\"`))\n modified = true\n updated++\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n\n return updated\n}\n\n/**\n * Reads the shared monorepo version from the first non-root workspace\n * and logs it. Call at the end of deploy to report the new version.\n */\nexport function logMonorepoVersion(): void {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n console.log(chalk.green(`\\nDeployed version: ${chalk.bold(version)}`))\n return\n }\n }\n}\n","import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nexport const dupdeps = () => {\n console.log(chalk.green('Checking all Dependencies for Duplicates'))\n\n const pkg = parsedPackageJSON()\n const allDependencies = {\n ...(pkg?.dependencies as Record<string, string> | undefined),\n ...(pkg?.devDependencies as Record<string, string> | undefined),\n }\n const dependencies = Object.keys(allDependencies)\n\n return detectDuplicateDependencies(dependencies)\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const eject = () => {\n const pm = getPackageManager()\n return runSteps('Eject', [[pm.command, 'react-scripts eject']])\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\nimport { ESLint } from 'eslint'\n\nimport {\n INIT_CWD,\n installOutputCapture,\n outputStorage,\n runWithConcurrency,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface LintNextParams {\n cache?: boolean\n fix?: boolean\n jobs: number\n pkg?: string\n verbose?: boolean\n}\n\ninterface PackageLintResult {\n errors: number\n files: number\n output: string[]\n pkg: string\n timeMs: number\n warnings: number\n}\n\nconst dumpMessages = (lintResults: ESLint.LintResult[]): void => {\n const colors: ('white' | 'red' | 'yellow')[] = ['white', 'yellow', 'red']\n const severity: string[] = ['none', 'warning', 'error']\n\n for (const lintResult of lintResults) {\n if (lintResult.messages.length > 0) {\n console.log(chalk.gray(`\\n${lintResult.filePath}`))\n for (const message of lintResult.messages) {\n console.log(\n chalk.gray(`\\t${message.line}:${message.column}`),\n chalk[colors[message.severity]](`\\t${severity[message.severity]}`),\n chalk.white(`\\t${message.message}`),\n chalk.gray(`\\t${message.ruleId}`),\n )\n }\n }\n }\n}\n\nasync function lintOnePackage({\n cache, cwd, fix, verbose,\n}: {\n cache: boolean\n cwd: string\n fix: boolean\n verbose: boolean\n}): Promise<{ errors: number; files: number; warnings: number }> {\n const engine = new ESLint({\n cache,\n cacheLocation: path.join(cwd, '.eslintcache'),\n cacheStrategy: 'content',\n cwd,\n fix,\n warnIgnored: false,\n })\n\n const lintResults = await engine.lintFiles('.')\n\n dumpMessages(lintResults)\n\n if (fix) {\n await ESLint.outputFixes(lintResults)\n }\n\n const errors = lintResults.reduce((sum, r) => sum + r.errorCount, 0)\n const warnings = lintResults.reduce((sum, r) => sum + r.warningCount, 0)\n const files = lintResults.length\n\n if (verbose) {\n const filesColor = files < 100 ? 'green' : files < 1000 ? 'yellow' : 'red'\n console.log(chalk.white(` ${chalk[filesColor](files)} files linted`))\n }\n\n return {\n errors, files, warnings,\n }\n}\n\nexport async function lintNext({\n cache = false,\n fix = false,\n jobs,\n pkg,\n verbose = false,\n}: LintNextParams): Promise<number> {\n const rootDir = INIT_CWD()\n const pm = getPackageManager()\n const allWorkspaces = pm.listWorkspaces()\n\n const workspaces = pkg\n ? allWorkspaces.filter(ws => ws.name === pkg)\n : allWorkspaces\n\n if (workspaces.length === 0) {\n console.log(chalk.red(pkg ? `Package \"${pkg}\" not found` : 'No workspaces found'))\n return 1\n }\n\n const concurrency = jobs\n const label = fix ? 'Fix' : 'Lint'\n\n installOutputCapture()\n\n const results: PackageLintResult[] = Array.from(\n { length: workspaces.length },\n () => ({\n errors: 0, files: 0, output: [], pkg: '', timeMs: 0, warnings: 0,\n }),\n )\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n const pkgStart = Date.now()\n const absCwd = path.resolve(rootDir, ws.location)\n\n console.log(chalk.green(`${label} [${ws.name}]`))\n\n try {\n const {\n errors, files, warnings,\n } = await lintOnePackage({\n cache, cwd: absCwd, fix, verbose,\n })\n const timeMs = Date.now() - pkgStart\n results[i] = {\n errors, files, output, pkg: ws.name, timeMs, warnings,\n }\n } catch (ex) {\n output.push(chalk.red(`${label} failed for ${ws.name}: ${(ex as Error).message}\\n`))\n results[i] = {\n errors: 1, files: 0, output, pkg: ws.name, timeMs: Date.now() - pkgStart, warnings: 0,\n }\n }\n })\n },\n )\n\n // Flush results sequentially, grouped by package\n let totalErrors = 0\n let totalWarnings = 0\n let totalFiles = 0\n\n for (const result of results) {\n for (const line of result.output) {\n process.stdout.write(line)\n }\n totalErrors += result.errors\n totalWarnings += result.warnings\n totalFiles += result.files\n }\n\n // Summary\n const errColor = totalErrors > 0 ? 'red' : 'green'\n const warnColor = totalWarnings > 0 ? 'yellow' : 'green'\n\n console.log(\n chalk[errColor](`${totalErrors} errors`)\n + chalk.gray(', ')\n + chalk[warnColor](`${totalWarnings} warnings`)\n + chalk.gray(` across ${totalFiles} files in ${workspaces.length} packages`),\n )\n\n return totalErrors\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { lintNext } from './lintNext.ts'\n\nexport interface LintParams {\n cache?: boolean\n fix?: boolean\n incremental?: boolean\n jobs: number\n next?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface LintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const lintPackage = ({\n pkg, fix, verbose,\n}: { fix?: boolean; pkg: string; verbose?: boolean }) => {\n const pm = getPackageManager()\n return runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n}\n\nexport const lint = ({\n cache, fix, jobs, next, pkg, verbose,\n}: LintParams): number | Promise<number> => {\n if (next) {\n return lintNext({\n cache, fix, jobs, pkg, verbose,\n })\n }\n return pkg === undefined\n ? lintAllPackages({ fix })\n : lintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: { fix?: boolean } = {}) => {\n const fixOptions = fix ? ['--fix'] : []\n return runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', ['--cache', '--cache-location', '.eslintcache', '--cache-strategy', 'content', ...fixOptions]],\n ])\n}\n","import type { LintParams } from './lint.ts'\nimport { lint } from './lint.ts'\n\nexport const fix = (params: LintParams) => {\n return lint({ ...params, fix: true })\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface GenDocsParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n}\n\nexport interface GenDocsPackageParams { pkg: string }\n\nexport const genDocs = ({\n jobs, pkg, incremental,\n}: GenDocsParams) => {\n return pkg ? genDocsPackage({ pkg }) : genDocsAll({ incremental, jobs })\n}\n\nexport const genDocsPackage = ({ pkg }: GenDocsPackageParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [${pkg}]`, [pm.runInWorkspace(pkg, 'package-gen-docs')])\n}\n\nexport const genDocsAll = ({ incremental, jobs }: GenDocsParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [All${incremental ? '-Incremental' : ''}]`, [\n pm.foreachWorkspace('package-gen-docs', [], { incremental, jobs }),\n ])\n}\n","import { unlinkSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport {\n gitignoreTemplate, INIT_CWD,\n readNonEmptyLines, writeLines,\n} from '../lib/index.ts'\nimport { union } from '../lib/string/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nconst COMMENT_PREFIX = '#'\n\nconst isComment = (line: string): boolean => line.startsWith(COMMENT_PREFIX)\n\nconst isNegation = (line: string): boolean => line.startsWith('!')\n\n/** Parse the template into sections (comment + entries) */\nfunction parseTemplateSections(lines: string[]): string[][] {\n const sections: string[][] = []\n let current: string[] = []\n for (const line of lines) {\n if (isComment(line)) {\n if (current.length > 0) {\n sections.push(current)\n }\n current = [line]\n } else {\n current.push(line)\n }\n }\n if (current.length > 0) {\n sections.push(current)\n }\n return sections\n}\n\n/** Merge template entries into existing entries, preserving structure */\nfunction mergeWithTemplate(existing: string[], templateContent: string): string[] {\n const templateLines = templateContent.split('\\n').filter(line => line.trim().length > 0)\n const sections = parseTemplateSections(templateLines)\n\n // Collect all existing non-comment, non-negation entries\n const existingEntries = new Set(existing.filter(line => !isComment(line)))\n\n // Find template entries that are missing from existing\n const templateEntries = new Set(templateLines.filter(line => !isComment(line)))\n\n // Find custom entries (in existing but not in template)\n const customEntries = [...existingEntries].filter(entry => !templateEntries.has(entry))\n\n // Build the output: template sections first, then custom entries\n const result: string[] = []\n for (const section of sections) {\n for (const line of section) {\n result.push(line)\n }\n result.push('')\n }\n\n if (customEntries.length > 0) {\n result.push('# Custom')\n const sorted = [...union(customEntries, [])].toSorted((a, b) => {\n // Negation patterns sort after their positive counterparts\n if (isNegation(a) && !isNegation(b)) return 1\n if (!isNegation(a) && isNegation(b)) return -1\n return a.localeCompare(b)\n })\n for (const entry of sorted) {\n result.push(entry)\n }\n result.push('')\n }\n\n return result\n}\n\nfunction removePackageGitignores(cwd: string): number {\n let removed = 0\n const workspaces = getPackageManager().listWorkspaces()\n for (const { location } of workspaces) {\n // Skip root workspace\n if (location === '.') continue\n const filePath = `${cwd}/${location}/.gitignore`\n try {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${location}/.gitignore`))\n removed++\n } catch {\n // File doesn't exist — nothing to do\n }\n }\n return removed\n}\n\n/** @deprecated Use gitignore instead */\nexport const gitignoreGen = gitignore\n\nexport function gitignore(): number {\n console.log(chalk.green('Generate .gitignore'))\n const cwd = INIT_CWD()\n const gitignorePath = `${cwd}/.gitignore`\n\n try {\n const templateContent = gitignoreTemplate()\n const existing = readNonEmptyLines(gitignorePath)\n const merged = mergeWithTemplate(existing, templateContent)\n writeLines(gitignorePath, merged)\n console.log(chalk.green(' Root .gitignore updated'))\n\n const removed = removePackageGitignores(cwd)\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} package .gitignore file(s)`))\n }\n\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(chalk.red(`Generate .gitignore failed: ${error.message}`))\n return 1\n }\n}\n","import chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlint = () => {\n console.log(`\\nGitlint Start [${process.cwd()}]\\n`)\n let valid = 0\n let warnings = 0\n const errors = 0\n const gitConfig = ParseGitConfig.sync() as Record<string, Record<string, unknown>>\n\n const warn = (message: string) => {\n console.warn(chalk.yellow(`Warning: ${message}`))\n warnings++\n }\n\n if (gitConfig.core.ignorecase) {\n warn('Please set core.ignorecase to FALSE in .git/config file [run yarn gitlint-fix]')\n } else {\n valid++\n }\n\n if (gitConfig.core.autocrlf === false) {\n valid++\n } else {\n warn('Please set core.autocrlf to FALSE in .git/config file [run yarn gitlint-fix]')\n }\n\n if (gitConfig.core.eol === 'lf') {\n valid++\n } else {\n warn('Please set core.eol to \"lf\" in .git/config file [run yarn gitlint-fix]')\n }\n\n const resultMessages: string[] = []\n if (valid > 0) {\n resultMessages.push(chalk.green(`Passed: ${valid}`))\n }\n if (warnings > 0) {\n resultMessages.push(chalk.yellow(`Warnings: ${warnings}`))\n }\n if (errors > 0) {\n resultMessages.push(chalk.red(` Errors: ${errors}`))\n }\n console.warn(`Gitlint Finish [ ${resultMessages.join(' | ')} ]\\n`)\n return warnings + errors === 0 ? 0 : 1\n}\n","import { execSync } from 'node:child_process'\n\nimport chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlintFix = () => {\n console.log(`\\nGitlint Fix Start [${process.cwd()}]\\n`)\n\n const gitConfig = ParseGitConfig.sync() as Record<string, Record<string, unknown>>\n\n if (gitConfig.core.ignorecase) {\n execSync('git config core.ignorecase false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.ignorecase to be false\\n'))\n }\n\n if (gitConfig.core.autocrlf !== false) {\n execSync('git config core.autocrlf false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.autocrlf to be false\\n'))\n }\n\n if (gitConfig.core.eol !== 'lf') {\n execSync('git config core.eol lf', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.eol to be \"lf\"\\n'))\n }\n\n return 1\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const knip = () => {\n return runSteps('Knip', [['knip', ['--dependencies', '--no-exit-code']]])\n}\n","import chalk from 'chalk'\nimport { init } from 'license-checker'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const license = async (pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n const exclude = new Set([\n 'MIT',\n 'MIT*',\n 'ISC',\n 'Apache-2.0',\n 'BSD',\n 'BSD*',\n 'BSD-2-Clause',\n 'BSD-3-Clause',\n 'CC-BY-4.0',\n 'Unlicense',\n 'CC-BY-3.0',\n 'CC0-1.0',\n 'LGPL-3.0-only',\n 'LGPL-3.0',\n 'LGPL-3.0-or-later',\n 'Python-2.0',\n ])\n\n console.log(chalk.green('License Checker'))\n\n return (\n (\n await Promise.all(\n workspaceList.map(({ location, name }) => {\n return new Promise<number>((resolve) => {\n init({ production: true, start: location }, (error, packages) => {\n if (error) {\n console.error(chalk.red(`License Checker [${name}] Error`))\n console.error(chalk.gray(error))\n console.log('\\n')\n resolve(1)\n } else {\n console.log(chalk.green(`License Checker [${name}]`))\n let count = 0\n for (const [name, info] of Object.entries(packages)) {\n const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses]\n for (const license of licenses) {\n if (license) {\n // remove surrounding parens on some string\n const processedLicense = (license.startsWith('(') && license.at(-1) === ')')\n ? license.slice(1, -2)\n : license\n // get list of OR licenses from string\n const orLicenses = processedLicense.split(' OR ')\n let orLicenseFound = false\n for (const orLicense of orLicenses) {\n if (exclude.has(orLicense)) {\n orLicenseFound = true\n }\n }\n if (!orLicenseFound) {\n count++\n console.warn(chalk.yellow(`${name}: Package License not allowed [${license}]`))\n }\n }\n }\n }\n console.log('\\n')\n resolve(count)\n }\n })\n })\n }),\n )\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, value) => prev || value, 0)\n )\n}\n","import {\n existsSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\nimport { INIT_CWD, runInstall } from '../lib/index.ts'\n\nexport interface LintInitParams {\n verbose?: boolean\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nconst DISALLOWED_IMPORTS_XYLABS = [\n '@xylabs/api',\n '@xylabs/array',\n '@xylabs/arraybuffer',\n '@xylabs/assert',\n '@xylabs/axios',\n '@xylabs/base',\n '@xylabs/bignumber',\n '@xylabs/buffer',\n '@xylabs/creatable',\n '@xylabs/decimal-precision',\n '@xylabs/delay',\n '@xylabs/enum',\n '@xylabs/error',\n '@xylabs/eth-address',\n '@xylabs/events',\n '@xylabs/exists',\n '@xylabs/forget',\n '@xylabs/function-name',\n '@xylabs/hex',\n '@xylabs/log',\n '@xylabs/logger',\n '@xylabs/object',\n '@xylabs/platform',\n '@xylabs/profile',\n '@xylabs/promise',\n '@xylabs/retry',\n '@xylabs/set',\n '@xylabs/static-implements',\n '@xylabs/storage',\n '@xylabs/telemetry',\n '@xylabs/telemetry-exporter',\n '@xylabs/timer',\n '@xylabs/typeof',\n '@xylabs/url',\n '@xylabs/zod',\n]\n\nconst DISALLOWED_IMPORTS_XYO = [\n '@xyo-network/core-payload-plugins',\n '@xyo-network/manifest',\n '@xyo-network/modules',\n '@xyo-network/protocol',\n '@xyo-network/sdk-utils',\n '@xyo-network/shared',\n '@xyo-network/manifest-model',\n '@xyo-network/manifest-wrapper',\n '@xyo-network/boundwitness',\n '@xyo-network/core',\n '@xyo-network/crypto',\n '@xyo-network/payload',\n '@xyo-network/api',\n '@xyo-network/api-models',\n '@xyo-network/dns',\n '@xyo-network/metamask-connector',\n '@xyo-network/module-factory-locator',\n '@xyo-network/schema-payload-plugin',\n '@xyo-network/archivist-memory',\n '@xyo-network/id-payload-plugin',\n '@xyo-network/wallet',\n '@xyo-network/network',\n '@xyo-network/payload-plugin',\n '@xyo-network/payloadset-plugin',\n '@xyo-network/quadkey',\n '@xyo-network/schema-cache',\n '@xyo-network/schema-name-validator',\n '@xyo-network/witnesses',\n]\n\nfunction getRequiredDevDependencies(react: boolean): Record<string, string> {\n const configPkg = react ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n return {\n [configPkg]: 'workspace:^',\n eslint: '^10.0.0',\n }\n}\n\nfunction formatDisallowedArray(name: string, imports: readonly string[]): string {\n const items = imports.map(i => ` '${i}',`).join('\\n')\n return `const ${name} = [\\n${items}\\n]`\n}\n\nfunction generateEslintConfig({\n react, useXyLabsBarrel, useXyoBarrel,\n}: { react: boolean; useXyLabsBarrel: boolean; useXyoBarrel: boolean }): string {\n const configPkg = react ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n const lines: string[] = [\n \"import type { Linter } from 'eslint'\",\n '',\n `import { config as xylabsConfig } from '${configPkg}'`,\n '',\n ]\n\n if (useXyLabsBarrel) {\n lines.push(formatDisallowedArray('disallowedImportsXyLabs', DISALLOWED_IMPORTS_XYLABS), '')\n }\n\n if (useXyoBarrel) {\n lines.push(formatDisallowedArray('disallowedImportsXyo', DISALLOWED_IMPORTS_XYO), '')\n }\n\n // eslint-disable-next-line @stylistic/max-len\n lines.push('const config: Linter.Config[] = [', \" { ignores: ['.yarn/**', 'build', '**/build/**', '**/dist/**', 'dist', 'node_modules/**', '**/node_modules/**', '**/*.md/**', '.claude/worktrees/*'] },\", ' ...xylabsConfig,')\n\n if (useXyLabsBarrel || useXyoBarrel) {\n lines.push(' {', ' rules:', ' {', \" 'no-restricted-imports': [\", \" 'warn',\", ' {')\n\n if (useXyLabsBarrel && useXyoBarrel) {\n lines.push(' paths: [', ' ...disallowedImportsXyLabs,', ' ...disallowedImportsXyo,', ' ],')\n } else if (useXyLabsBarrel) {\n lines.push(' paths: [', ' ...disallowedImportsXyLabs,', ' ],')\n } else {\n lines.push(' paths: [', ' ...disallowedImportsXyo,', ' ],')\n }\n\n lines.push(' },', ' ],', ' },', ' },')\n }\n\n lines.push(']', '', 'export default config', '')\n\n return lines.join('\\n')\n}\n\nfunction addDevDependencies(packageJsonPath: string, requiredDeps: Record<string, string>, verbose?: boolean): boolean {\n const content = readFileSync(packageJsonPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>\n let changed = false\n\n for (const [name, version] of Object.entries(requiredDeps)) {\n if (!devDeps[name]) {\n devDeps[name] = version\n changed = true\n if (verbose) console.log(chalk.gray(` Added ${name}@${version} to devDependencies`))\n } else if (verbose) {\n console.log(chalk.gray(` ${name} already in devDependencies`))\n }\n }\n\n if (changed) {\n // sort devDependencies alphabetically\n const sorted = Object.fromEntries(Object.entries(devDeps).toSorted(([a], [b]) => a.localeCompare(b)))\n pkg.devDependencies = sorted\n writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green('Updated package.json devDependencies'))\n } else {\n console.log(chalk.gray('package.json devDependencies already up to date'))\n }\n return changed\n}\n\nexport function detectReactInMonorepo(cwd: string, verbose?: boolean): boolean {\n const packageJsonPaths = globSync('packages/**/package.json', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n for (const relPath of packageJsonPaths) {\n const fullPath = PATH.resolve(cwd, relPath)\n try {\n const content = readFileSync(fullPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n // Only check dependencies and peerDependencies — devDependencies on react\n // can appear in tooling packages (eslint configs, test utilities) that don't\n // indicate the repo actually uses React\n const deps = pkg.dependencies as Record<string, string> | undefined\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (deps?.react || peerDeps?.react) {\n if (verbose) console.log(chalk.gray(` React detected in ${relPath}`))\n return true\n }\n } catch {\n // skip unreadable package.json\n }\n }\n return false\n}\n\nfunction findExistingConfig(configPath: string, legacyConfigPath: string): string | undefined {\n if (existsSync(configPath)) return configPath\n if (existsSync(legacyConfigPath)) return legacyConfigPath\n return undefined\n}\n\nfunction removeLegacyConfig(legacyConfigPath: string): void {\n if (existsSync(legacyConfigPath)) {\n unlinkSync(legacyConfigPath)\n console.log(chalk.gray('Removed legacy eslint.config.mjs'))\n }\n}\n\nfunction updateDependencies(packageJsonPath: string, react: boolean, cwd: string, verbose?: boolean): void {\n if (!existsSync(packageJsonPath)) {\n console.log(chalk.yellow('No package.json found — skipping dependency updates'))\n return\n }\n const changed = addDevDependencies(packageJsonPath, getRequiredDevDependencies(react), verbose)\n if (changed) {\n runInstall(cwd)\n }\n}\n\nexport async function lintInit({ verbose }: LintInitParams = {}): Promise<number> {\n const cwd = INIT_CWD()\n const configPath = PATH.resolve(cwd, 'eslint.config.ts')\n const legacyConfigPath = PATH.resolve(cwd, 'eslint.config.mjs')\n\n const existingPath = findExistingConfig(configPath, legacyConfigPath)\n if (existingPath) {\n const filename = PATH.basename(existingPath)\n const confirmed = await askConfirmation(\n chalk.yellow(`${filename} already exists. Replace it with eslint.config.ts? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray(`Skipped — existing ${filename} preserved`))\n return 0\n }\n }\n\n const react = detectReactInMonorepo(cwd, verbose)\n if (react) {\n console.log(chalk.cyan('Detected React packages — using @xylabs/eslint-config-react-flat'))\n } else if (verbose) {\n console.log(chalk.gray(' No React packages detected — using @xylabs/eslint-config-flat'))\n }\n\n const useXyLabsBarrel = await askConfirmation(\n chalk.cyan('Disallow @xylabs/sdk-js barrel imports? (y/N) '),\n )\n const useXyoBarrel = await askConfirmation(\n chalk.cyan('Disallow @xyo-network/sdk-js barrel imports? (y/N) '),\n )\n\n const config = generateEslintConfig({\n react, useXyLabsBarrel, useXyoBarrel,\n })\n writeFileSync(configPath, config, 'utf8')\n console.log(chalk.green('Generated eslint.config.ts'))\n\n removeLegacyConfig(legacyConfigPath)\n updateDependencies(PATH.resolve(cwd, 'package.json'), react, cwd, verbose)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport { findUp } from 'find-up'\n\nimport { runInstall } from '../lib/index.ts'\nimport { detectReactInMonorepo } from './lint-init.ts'\n\ninterface RuleEntry {\n level: string\n options?: unknown[]\n}\n\ninterface LintlintParams {\n fix?: boolean\n verbose?: boolean\n}\n\ninterface ConfigBlock {\n rules?: Record<string, unknown>\n}\n\ninterface RuleComparison {\n additions: { local: RuleEntry; rule: string }[]\n overrides: { local: RuleEntry; rule: string; shared: RuleEntry }[]\n redundant: { local: RuleEntry; rule: string; shared: RuleEntry }[]\n}\n\nfunction parseRuleValue(value: unknown): RuleEntry | undefined {\n if (typeof value === 'string') {\n return { level: value }\n }\n if (typeof value === 'number') {\n return { level: String(value) }\n }\n if (Array.isArray(value) && value.length > 0) {\n return {\n level: String(value[0]),\n options: value.length > 1 ? value.slice(1) : undefined,\n }\n }\n return undefined\n}\n\nfunction normalizeLevel(level: string): string {\n if (level === '0' || level === 'off') return 'off'\n if (level === '1' || level === 'warn') return 'warn'\n if (level === '2' || level === 'error') return 'error'\n return level\n}\n\nfunction rulesMatch(a: RuleEntry, b: RuleEntry): boolean {\n if (normalizeLevel(a.level) !== normalizeLevel(b.level)) return false\n return JSON.stringify(a.options) === JSON.stringify(b.options)\n}\n\nfunction formatRule(entry: RuleEntry): string {\n if (entry.options) {\n return JSON.stringify([entry.level, ...entry.options])\n }\n return JSON.stringify([entry.level])\n}\n\nfunction mergeRulesFromBlocks(blocks: ConfigBlock[]): Map<string, RuleEntry> {\n const merged = new Map<string, RuleEntry>()\n for (const block of blocks) {\n if (!block.rules) continue\n for (const [name, value] of Object.entries(block.rules)) {\n const parsed = parseRuleValue(value)\n if (parsed) merged.set(name, parsed)\n }\n }\n return merged\n}\n\nfunction detectSharedPackage(source: string): string | undefined {\n if (source.includes('@xylabs/eslint-config-react-flat')) return '@xylabs/eslint-config-react-flat'\n if (source.includes('@xylabs/eslint-config-flat')) return '@xylabs/eslint-config-flat'\n return undefined\n}\n\nfunction extractLocalRuleBlocks(source: string): string[] {\n const blocks: string[] = []\n const ruleBlockRegex = /\\{\\s*(?:files\\s*:\\s*\\[.*?\\]\\s*,\\s*)?rules\\s*:\\s*\\{([^}]*(?:\\{[^}]*\\}[^}]*)*)\\}/g\n let match\n while ((match = ruleBlockRegex.exec(source)) !== null) {\n blocks.push(match[1])\n }\n return blocks\n}\n\nfunction extractRulesFromSourceBlocks(blocks: string[]): Map<string, string> {\n const rules = new Map<string, string>()\n for (const block of blocks) {\n const ruleRegex = /['\"]([^'\"]+)['\"]\\s*:\\s*(\\[[\\s\\S]*?\\](?=\\s*,|\\s*$))/gm\n let match\n while ((match = ruleRegex.exec(block)) !== null) {\n rules.set(match[1], match[2])\n }\n }\n return rules\n}\n\nfunction extractConfigBlocks(sharedModule: Record<string, unknown>): ConfigBlock[] {\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n return []\n}\n\nasync function resolveSharedConfig(configDir: string, sharedPkg: string): Promise<ConfigBlock[]> {\n try {\n const sharedModule = await import(sharedPkg) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n } catch {\n const distPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'node', 'index.mjs')\n try {\n const sharedModule = await import(distPath) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n } catch {\n const neutralPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'neutral', 'index.mjs')\n const sharedModule = await import(neutralPath) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n }\n return []\n }\n}\n\nasync function loadSharedRules(configDir: string, sharedPkg: string, verbose: boolean): Promise<Map<string, RuleEntry> | undefined> {\n const sharedBlocks = await resolveSharedConfig(configDir, sharedPkg)\n const sharedRules = mergeRulesFromBlocks(sharedBlocks)\n\n if (verbose) {\n console.log(chalk.gray(`Shared config defines ${sharedRules.size} rules`))\n }\n\n if (sharedRules.size === 0) {\n console.error(chalk.red('Could not load rules from shared config. Is it installed and built?'))\n return undefined\n }\n\n return sharedRules\n}\n\nasync function loadLocalRules(eslintConfigPath: string, source: string, verbose: boolean): Promise<{ explicit: Map<string, string>; resolved: Map<string, RuleEntry> }> {\n const localModule = await import(eslintConfigPath) as Record<string, unknown>\n const localConfig = localModule.default ?? localModule\n const localBlocks: ConfigBlock[] = Array.isArray(localConfig) ? localConfig as ConfigBlock[] : [localConfig as ConfigBlock]\n const resolved = mergeRulesFromBlocks(localBlocks)\n\n const localRuleBlocks = extractLocalRuleBlocks(source)\n const explicit = extractRulesFromSourceBlocks(localRuleBlocks)\n\n if (verbose) {\n console.log(chalk.gray(`Local config has ${explicit.size} explicit rule setting(s)`))\n }\n\n return { explicit, resolved }\n}\n\nfunction compareRules(\n explicitRuleNames: Map<string, string>,\n allResolvedRules: Map<string, RuleEntry>,\n sharedRules: Map<string, RuleEntry>,\n): RuleComparison {\n const redundant: RuleComparison['redundant'] = []\n const overrides: RuleComparison['overrides'] = []\n const additions: RuleComparison['additions'] = []\n\n for (const ruleName of explicitRuleNames.keys()) {\n const resolvedEntry = allResolvedRules.get(ruleName)\n const sharedEntry = sharedRules.get(ruleName)\n\n if (!resolvedEntry) continue\n\n if (!sharedEntry) {\n additions.push({ local: resolvedEntry, rule: ruleName })\n } else if (rulesMatch(resolvedEntry, sharedEntry)) {\n redundant.push({\n local: resolvedEntry, rule: ruleName, shared: sharedEntry,\n })\n } else {\n overrides.push({\n local: resolvedEntry, rule: ruleName, shared: sharedEntry,\n })\n }\n }\n\n return {\n additions,\n overrides,\n redundant,\n }\n}\n\nfunction reportResults({\n additions, overrides, redundant,\n}: RuleComparison, verbose: boolean): void {\n if (redundant.length > 0) {\n console.log(chalk.yellow(`\\n${redundant.length} redundant rule(s) (same as shared config — can be removed):`))\n for (const { rule, local } of redundant) {\n console.log(chalk.yellow(` ${rule}: ${formatRule(local)}`))\n }\n }\n\n if (overrides.length > 0) {\n console.log(chalk.cyan(`\\n${overrides.length} rule override(s) (different from shared config):`))\n for (const {\n rule, local, shared,\n } of overrides) {\n console.log(chalk.cyan(` ${rule}:`))\n console.log(chalk.gray(` shared: ${formatRule(shared)}`))\n console.log(chalk.white(` local: ${formatRule(local)}`))\n }\n }\n\n if (additions.length > 0 && verbose) {\n console.log(chalk.gray(`\\n${additions.length} local addition(s) (not in shared config):`))\n for (const { rule, local } of additions) {\n console.log(chalk.gray(` ${rule}: ${formatRule(local)}`))\n }\n }\n\n if (redundant.length === 0 && overrides.length === 0) {\n console.log(chalk.green('No redundant or overridden rules found'))\n }\n}\n\nfunction fixRedundantRules(eslintConfigPath: string, redundant: RuleComparison['redundant']): void {\n let updated = readFileSync(eslintConfigPath, 'utf8')\n const original = updated\n for (const { rule } of redundant) {\n const escaped = rule.replaceAll('/', String.raw`\\/`)\n const pattern = new RegExp(String.raw`[ \\t]*['\"]${escaped}['\"]\\s*:\\s*\\[[^\\]]*\\],?[ \\t]*\\n?`, 'g')\n updated = updated.replace(pattern, '')\n }\n // Clean up empty rule blocks left behind\n updated = updated.replaceAll(/\\{\\s*rules\\s*:\\s*\\{\\s*\\}\\s*,?\\s*\\}\\s*,?/g, '')\n updated = updated.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n if (updated !== original) {\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`\\nFixed: removed ${redundant.length} redundant rule(s)`))\n }\n}\n\nfunction formatConfigFile(eslintConfigPath: string): void {\n spawnSync('eslint', ['--fix', eslintConfigPath], { stdio: 'inherit' })\n}\n\nfunction fixConfigMismatch(\n eslintConfigPath: string,\n configDir: string,\n source: string,\n sharedPkg: string,\n expectedPkg: string,\n): void {\n const updated = source.replaceAll(sharedPkg, expectedPkg)\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`Fixed: replaced ${sharedPkg} with ${expectedPkg}`))\n\n const packageJsonPath = PATH.resolve(configDir, 'package.json')\n if (!existsSync(packageJsonPath)) return\n\n const content = readFileSync(packageJsonPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>\n const oldVersion = devDeps[sharedPkg]\n if (!oldVersion) return\n\n delete devDeps[sharedPkg]\n devDeps[expectedPkg] = oldVersion\n const sorted = Object.fromEntries(Object.entries(devDeps).toSorted(([a], [b]) => a.localeCompare(b)))\n pkg.devDependencies = sorted\n writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(`Updated package.json: ${sharedPkg} → ${expectedPkg}`))\n runInstall(configDir)\n}\n\nfunction checkConfigVariant(\n eslintConfigPath: string,\n configDir: string,\n source: string,\n sharedPkg: string,\n fix: boolean,\n verbose: boolean,\n): boolean {\n const hasReact = detectReactInMonorepo(configDir, verbose)\n const expectedPkg = hasReact ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n\n if (sharedPkg === expectedPkg) return false\n\n console.log(chalk.yellow(`\\nConfig mismatch: using ${sharedPkg} but ${hasReact ? 'React packages detected' : 'no React packages found'}`))\n console.log(chalk.yellow(` Expected: ${expectedPkg}`))\n\n if (fix) {\n fixConfigMismatch(eslintConfigPath, configDir, source, sharedPkg, expectedPkg)\n }\n\n return true\n}\n\nexport async function lintlint({ fix, verbose }: LintlintParams = {}): Promise<number> {\n const eslintConfigPath = await findUp(['eslint.config.ts', 'eslint.config.mjs'])\n if (!eslintConfigPath) {\n console.error(chalk.red('No eslint.config.ts found'))\n return 1\n }\n\n const configDir = PATH.dirname(eslintConfigPath)\n\n if (verbose) {\n console.log(chalk.gray(`Found config: ${eslintConfigPath}`))\n }\n\n const source = readFileSync(eslintConfigPath, 'utf8')\n const sharedPkg = detectSharedPackage(source)\n\n if (!sharedPkg) {\n console.log(chalk.yellow('No @xylabs/eslint-config-flat or @xylabs/eslint-config-react-flat imports found'))\n return 0\n }\n\n if (verbose) {\n console.log(chalk.gray(`Shared package: ${sharedPkg}`))\n }\n\n const hasMismatch = checkConfigVariant(eslintConfigPath, configDir, source, sharedPkg, !!fix, !!verbose)\n\n // Re-read source after potential mismatch fix to avoid overwriting changes\n const currentSource = (hasMismatch && fix) ? readFileSync(eslintConfigPath, 'utf8') : source\n\n const sharedRules = await loadSharedRules(configDir, sharedPkg, !!verbose)\n if (!sharedRules) return 1\n\n const { explicit, resolved } = await loadLocalRules(eslintConfigPath, currentSource, !!verbose)\n const results = compareRules(explicit, resolved, sharedRules)\n\n reportResults(results, !!verbose)\n\n if (results.redundant.length > 0 && fix) {\n fixRedundantRules(eslintConfigPath, results.redundant)\n }\n\n const didFix = fix && (hasMismatch || results.redundant.length > 0)\n if (didFix) {\n formatConfigFile(eslintConfigPath)\n }\n\n const hasUnfixedMismatch = hasMismatch && !fix\n const hasUnfixedRedundant = results.redundant.length > 0 && !fix\n return hasUnfixedMismatch || hasUnfixedRedundant ? 1 : 0\n}\n","import { generateIgnoreFiles } from '../lib/index.ts'\n\nconst filename = '.npmignore'\n\nexport const npmignoreGen = (pkg?: string) => generateIgnoreFiles(filename, pkg)\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface OrphanParams {\n verbose?: boolean\n}\n\nfunction isAncestorOfWorkspace(dir: string, workspaceLocations: Set<string>): boolean {\n const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep\n for (const ws of workspaceLocations) {\n if (ws.startsWith(dirWithSep)) return true\n }\n return false\n}\n\nfunction findOrphans(cwd: string, verbose?: boolean): string[] {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceLocations = new Set(\n workspaces.map(ws => path.resolve(cwd, ws.location)),\n )\n\n // Find all dist/ directories, excluding node_modules\n const distDirs = glob.sync('**/dist', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n const orphans = new Set<string>()\n\n for (const distDir of distDirs) {\n const parentRel = path.dirname(distDir)\n const parentAbs = path.resolve(cwd, parentRel)\n\n // Skip root-level dist\n if (parentRel === '.') continue\n\n // Skip if it's a registered workspace\n if (workspaceLocations.has(parentAbs)) continue\n\n // Skip if it has a package.json (real package, just not in workspaces)\n if (fs.existsSync(path.join(parentAbs, 'package.json'))) continue\n\n if (verbose) {\n console.log(chalk.gray(` Found orphan: ${parentRel}`))\n }\n\n // Walk up to find the top-level orphan directory\n // Stop at workspace boundaries, package.json boundaries, or ancestor directories of workspaces\n let topOrphan = parentRel\n let current = path.dirname(parentRel)\n while (current !== '.') {\n const currentAbs = path.resolve(cwd, current)\n if (workspaceLocations.has(currentAbs)) break\n if (fs.existsSync(path.join(currentAbs, 'package.json'))) break\n if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break\n topOrphan = current\n current = path.dirname(current)\n }\n\n orphans.add(topOrphan)\n }\n\n return [...orphans].toSorted()\n}\n\nexport function orphanList({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan List'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n console.log(chalk.yellow(` ${orphan}`))\n }\n\n console.log(chalk.yellow(`\\n Found ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 1\n}\n\nexport function orphanClean({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan Clean'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n const absPath = path.resolve(cwd, orphan)\n fs.rmSync(absPath, { force: true, recursive: true })\n console.log(chalk.yellow(` Removed ${orphan}`))\n }\n\n console.log(chalk.green(`\\n Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n deleteGlob, INIT_CWD, packageName,\n} from '../../lib/index.ts'\n\nexport const packageCleanOutputs = () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n const folders: string[] = [path.join(pkg, 'dist'), path.join(pkg, 'build'), path.join(pkg, 'docs')]\n console.log(chalk.green(`Cleaning Outputs [${pkgName}]`))\n\n for (const folder of folders) {\n deleteGlob(folder)\n }\n\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n deleteGlob, INIT_CWD, packageName,\n} from '../../lib/index.ts'\n\nexport const packageCleanTypescript = () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning Typescript [${pkgName}]`))\n const files: string[] = [path.join(pkg, '*.tsbuildinfo'), path.join(pkg, '.tsconfig.*'), path.join(pkg, '.eslintcache')]\n\n for (const file of files) {\n deleteGlob(file)\n }\n\n return 0\n}\n","import { packageCleanOutputs } from './clean-outputs.ts'\nimport { packageCleanTypescript } from './clean-typescript.ts'\n\nexport const packageClean = () => {\n return [packageCleanOutputs(), packageCleanTypescript()].reduce((prev, value) => prev + value, 0)\n}\n","import { cwd } from 'node:process'\n\nimport chalk from 'chalk'\n\nimport { loadConfig } from '../../../lib/index.ts'\nimport { packageCompileTsup } from './packageCompileTsup.ts'\nimport type { XyConfig } from './XyConfig.ts'\n\nexport const packageCompile = async (inConfig: XyConfig = {}): Promise<number> => {\n const pkg = cwd()\n console.log(chalk.green(`Compiling ${pkg}`))\n const config = await loadConfig(inConfig)\n\n return await packageCompileTsup(config)\n}\n","import chalk from 'chalk'\nimport type { Loader } from 'esbuild'\nimport type { Options } from 'tsup'\nimport { build, defineConfig } from 'tsup'\n\nimport { buildEntries } from './buildEntries.ts'\nimport { deepMergeObjects } from './deepMerge.ts'\nimport { packageCompileTsc } from './packageCompileTsc.ts'\nimport { packageCompileTscTypes } from './packageCompileTscTypes.ts'\nimport type { XyTsupConfig } from './XyConfig.ts'\n\nconst compileFolder = async (\n srcDir: string,\n entries: string[],\n buildDir: string,\n options?: Options,\n bundleTypes = false,\n verbose?: boolean,\n): Promise<number> => {\n const outDir = options?.outDir ?? 'dist'\n\n if (verbose) {\n console.log(`compileFolder [${srcDir}, ${options?.outDir}]`)\n }\n\n if (entries.length === 0) {\n console.warn(chalk.yellow(`No entries found in ${srcDir} to compile`))\n return 0\n }\n\n if (verbose) {\n console.log(chalk.gray(`buildDir [${buildDir}]`))\n }\n\n const validationResult = packageCompileTsc(options?.platform ?? 'neutral', entries, srcDir, buildDir, undefined, verbose)\n if (validationResult !== 0) {\n console.error(chalk.red(`Compile:Validation had ${validationResult} errors`))\n return validationResult\n }\n\n const optionsParams: Options = tsupOptions([{\n bundle: true,\n cjsInterop: true,\n clean: false,\n dts: false,\n format: ['esm'],\n outDir,\n silent: true,\n sourcemap: true,\n splitting: false,\n tsconfig: 'tsconfig.json',\n ...options,\n entry: entries.map(entry => `${srcDir}/${entry}`),\n }])\n\n const optionsResult = defineConfig(optionsParams)\n\n const optionsList = (\n await Promise.all(\n (Array.isArray(optionsResult) ? optionsResult : [optionsResult]).flatMap<Promise<Options[]>>(async (options) => {\n const result = typeof options === 'function' ? await options({}) : [options]\n return Array.isArray(result) ? result : [result]\n }),\n )\n ).flat()\n\n if (verbose) {\n console.log(chalk.cyan(`TSUP:build:start [${srcDir}]`))\n console.log(chalk.gray(`TSUP:build:options [${JSON.stringify(optionsList, null, 2)}]`))\n }\n\n await Promise.all(optionsList.map(options => build(options)))\n\n if (verbose) {\n console.log(chalk.cyan(`TSUP:build:stop [${srcDir}]`))\n }\n if (bundleTypes) {\n await packageCompileTscTypes(entries, outDir, options?.platform ?? 'neutral', buildDir, verbose)\n }\n\n return 0\n}\n\nexport const tsupOptions = (options: Options[] = []): Options => {\n const standardLoaders: Record<string, Loader> = {\n '.gif': 'copy', '.html': 'copy', '.jpg': 'copy', '.json': 'json', '.png': 'copy', '.svg': 'text', '.webp': 'copy',\n }\n\n const standardOptions: Options = {\n bundle: true,\n format: ['esm'],\n loader: standardLoaders,\n outExtension: ({ format }) => (format === 'esm' ? { js: '.mjs' } : { js: '.cjs' }),\n skipNodeModulesBundle: true,\n sourcemap: true,\n target: 'esnext',\n }\n\n return deepMergeObjects([standardOptions, ...options])\n}\n\nexport const packageCompileTsup = async (config?: XyTsupConfig) => {\n const compile = config?.compile\n const verbose = config?.verbose ?? false\n const outDirAsBuildDir = compile?.outDirAsBuildDir ?? true\n const bundleTypes = compile?.bundleTypes ?? false\n if (verbose) {\n console.log('Compiling with TSUP')\n }\n\n const compileForNode = compile?.node ?? { src: {} }\n const compileForBrowser = compile?.browser ?? { src: {} }\n const compileForNeutral = compile?.neutral ?? { src: {} }\n\n return (\n (\n await Promise.all(\n Object.entries(compileForNode).map(async ([srcDir, options]) => {\n const optionsObject: Options = typeof options === 'object' ? options : {}\n const inEsBuildOptions = typeof compile?.node?.esbuildOptions === 'object' ? compile?.node?.esbuildOptions : {}\n const entry = buildEntries(srcDir, compile?.entryMode, options, true, verbose)\n const platform = 'node'\n const rootOutDir = (optionsObject.outDir ?? 'dist')\n const outDir = rootOutDir + '/' + platform\n return typeof srcDir === 'string'\n ? await compileFolder(\n srcDir,\n entry,\n outDirAsBuildDir ? rootOutDir : 'build',\n tsupOptions([inEsBuildOptions,\n compile?.tsup?.options ?? {},\n (typeof options === 'object' ? options : {}),\n { platform: 'node', outDir }]),\n bundleTypes,\n verbose,\n )\n : 0\n }),\n )\n ).reduce((prev, value) => prev + value, 0)\n + (\n await Promise.all(\n Object.entries(compileForBrowser).map(async ([srcDir, options]) => {\n const optionsObject: Options = typeof options === 'object' ? options : {}\n const inEsBuildOptions = typeof compile?.browser?.esbuildOptions === 'object' ? compile?.browser?.esbuildOptions : {}\n const entry = buildEntries(srcDir, compile?.entryMode, options, true, verbose)\n const platform = 'browser'\n const rootOutDir = (optionsObject.outDir ?? 'dist')\n const outDir = rootOutDir + '/' + platform\n return typeof srcDir === 'string'\n ? await compileFolder(\n srcDir,\n entry,\n outDirAsBuildDir ? rootOutDir : 'build',\n tsupOptions([inEsBuildOptions,\n compile?.tsup?.options ?? {},\n (typeof options === 'object' ? options : {}),\n { platform: 'browser', outDir }]),\n bundleTypes,\n verbose,\n )\n : 0\n }),\n )\n ).reduce((prev, value) => prev + value, 0)\n + (\n await Promise.all(\n Object.entries(compileForNeutral).map(async ([srcDir, options]) => {\n const optionsObject: Options = typeof options === 'object' ? options : {}\n const inEsBuildOptions = typeof compile?.neutral?.esbuildOptions === 'object' ? compile?.neutral?.esbuildOptions : {}\n const entry = buildEntries(srcDir, compile?.entryMode, options, true, verbose)\n const platform = 'neutral'\n const rootOutDir = (optionsObject.outDir ?? 'dist')\n const outDir = rootOutDir + '/' + platform\n return typeof srcDir === 'string'\n ? await compileFolder(\n srcDir,\n entry,\n outDirAsBuildDir ? rootOutDir : 'build',\n tsupOptions([inEsBuildOptions,\n compile?.tsup?.options ?? {},\n (typeof options === 'object' ? options : {}),\n { platform: 'neutral', outDir }]),\n bundleTypes,\n verbose,\n )\n : 0\n }),\n )\n ).reduce((prev, value) => prev + value, 0)\n + 0\n )\n}\n","import chalk from 'chalk'\nimport { glob } from 'glob'\n\nexport const getAllInputs = (srcDir: string, verbose = false) => {\n /* tsup wants posix paths */\n return [...glob.sync(`${srcDir}/**/*.ts`, { posix: true }).map((file) => {\n const result = file.slice(Math.max(0, srcDir.length + 1)) // Remove the folder prefix\n if (verbose) {\n console.log(chalk.gray(`getAllInputs: ${JSON.stringify(result, null, 2)}`))\n }\n return result\n }), ...glob.sync(`${srcDir}/**/*.tsx`, { posix: true }).map((file) => {\n const result = file.slice(Math.max(0, srcDir.length + 1)) // Remove the folder prefix\n if (verbose) {\n console.log(chalk.gray(`getAllInputs: ${JSON.stringify(result, null, 2)}`))\n }\n return result\n })]\n}\n","import type { Options } from 'tsup'\n\nimport { getAllInputs } from './inputs.ts'\nimport type { EntryMode } from './XyConfig.ts'\n\nconst isSpecOrStory = (entry: string) => {\n return entry.includes('.spec.') || entry.includes('.stories.')\n || entry.startsWith('spec/') || entry.includes('/spec/')\n || entry.startsWith('stories/') || entry.includes('/stories/')\n || entry === 'spec.ts' || entry.endsWith('/spec.ts')\n || entry === 'stories.ts' || entry.endsWith('/stories.ts')\n}\n\nexport const buildEntries = (srcDir: string, entryMode: EntryMode = 'single', options?: Options | boolean, excludeSpecAndStories = true, verbose = false) => {\n let entries: string[]\n switch (entryMode) {\n case 'platform': {\n entries = ['index-node.ts', 'index-browser.ts']\n break\n }\n case 'all': {\n entries = (excludeSpecAndStories\n ? getAllInputs(srcDir).filter(entry => !isSpecOrStory(entry))\n : getAllInputs(srcDir)).filter(entry => !entry.endsWith('.d.ts'))\n break\n }\n case 'custom': {\n entries = []\n break\n }\n default: {\n entries = ['index.ts']\n break\n }\n }\n\n if (typeof options !== 'boolean' && Array.isArray(options?.entry)) {\n entries.push(...options.entry)\n }\n\n if (verbose) console.log(`buildEntries [${entryMode}] ${entries.length}`)\n return entries\n}\n","type AnyObject = Record<string, unknown>\n\nfunction deepMerge<T extends AnyObject>(target: AnyObject, source: AnyObject): T {\n if (!source || typeof source !== 'object') return target as T\n\n for (const key of Object.keys(source)) {\n const sourceVal = source[key]\n if (\n typeof sourceVal === 'object'\n && sourceVal !== null\n && !Array.isArray(sourceVal)\n ) {\n // Recursively merge nested objects\n if (!target[key] || typeof target[key] !== 'object') {\n target[key] = {}\n }\n deepMerge(target[key] as AnyObject, sourceVal as AnyObject)\n } else {\n // Overwrite with non-object values\n target[key] = sourceVal\n }\n }\n\n return target as T\n}\n\nexport function deepMergeObjects<T extends AnyObject>(objects: T[]): T {\n const result = {} as T\n for (const obj of objects) {\n deepMerge(result, obj)\n }\n return result\n}\n","import { cwd } from 'node:process'\n\nimport chalk from 'chalk'\nimport type { TsConfigCompilerOptions } from 'tsc-prog'\nimport { createProgramFromConfig } from 'tsc-prog'\nimport type { CompilerOptions } from 'typescript'\nimport ts, {\n DiagnosticCategory, formatDiagnosticsWithColorAndContext, getPreEmitDiagnostics, sys,\n} from 'typescript'\n\nimport { getCompilerOptions } from './getCompilerOptions.ts'\n\nexport const packageCompileTsc = (\n platform: 'browser' | 'neutral' | 'node',\n entries: string[],\n srcDir = 'src',\n outDir = 'dist',\n compilerOptionsParam?: CompilerOptions,\n verbose = false,\n): number => {\n const pkg = cwd()\n\n if (verbose) {\n console.log(chalk.cyan(`Validating code START: ${entries.length} files to ${outDir} from ${srcDir}`))\n }\n\n const configFilePath = ts.findConfigFile(\n pkg,\n (fileName: string) => ts.sys.fileExists(fileName),\n 'tsconfig.json',\n )\n\n if (configFilePath === undefined) {\n throw new Error('Could not find tsconfig.json')\n }\n\n const compilerOptions = {\n ...(getCompilerOptions({\n removeComments: false,\n skipDefaultLibCheck: true,\n skipLibCheck: true,\n sourceMap: false,\n })),\n ...compilerOptionsParam,\n outDir: `${outDir}/${platform}`,\n emitDeclarationOnly: true,\n noEmit: false,\n } as TsConfigCompilerOptions\n\n console.log(chalk.cyan(`Validating Files: ${entries.length}`))\n if (verbose) {\n for (const entry of entries) {\n console.log(chalk.grey(`Validating: ${entry}`))\n }\n }\n\n try {\n if (entries.length > 0) {\n const program = createProgramFromConfig({\n configFilePath,\n basePath: pkg,\n compilerOptions,\n files: entries.map(entry => `${srcDir}/${entry}`),\n include: [`${srcDir}/**/*.*`],\n })\n\n const diagnostics = getPreEmitDiagnostics(program)\n\n if (diagnostics.length > 0) {\n const formattedDiagnostics = formatDiagnosticsWithColorAndContext(\n diagnostics,\n {\n getCanonicalFileName: fileName => fileName,\n getCurrentDirectory: () => srcDir,\n getNewLine: () => sys.newLine,\n },\n )\n console.error(formattedDiagnostics)\n }\n\n // We use a custom writeFile callback to prevent non-entry files (like\n // .stories.* and .spec.* files) from emitting .d.ts output into dist.\n //\n // Background: The `include` glob above intentionally brings ALL source\n // files into the TypeScript program so they get type-checked during build\n // (catching errors in storybook/test files too). However, we only want\n // .d.ts output for the actual library entries — not for stories, specs,\n // or examples. Without this filter, every file matched by the include\n // glob would produce a .d.ts file in the dist folder.\n const nonEmitPatterns = ['.stories.', '/stories/', '/stories.', '.spec.', '/spec/', '/spec.', '.example.']\n program.emit(undefined, (fileName, text, writeByteOrderMark) => {\n if (nonEmitPatterns.some(pattern => fileName.includes(pattern))) {\n return\n }\n ts.sys.writeFile(fileName, text, writeByteOrderMark)\n })\n return diagnostics.reduce((acc, diag) => acc + (diag.category === DiagnosticCategory.Error ? 1 : 0), 0)\n }\n return 0\n } finally {\n if (verbose) {\n console.log(chalk.cyan(`Validating code FINISH: ${entries.length} files to ${outDir} from ${srcDir}`))\n }\n }\n}\n","import { cwd } from 'node:process'\n\nimport deepmerge from 'deepmerge'\nimport { getTsconfig } from 'get-tsconfig'\nimport type { CompilerOptions } from 'typescript'\n\nexport const getCompilerOptions = (options: CompilerOptions = {}, fileName = 'tsconfig.json'): CompilerOptions => {\n const resolvedTsConfigCompilerOptions = getTsconfig(cwd(), fileName)?.config?.compilerOptions ?? {}\n\n return deepmerge(resolvedTsConfigCompilerOptions, options)\n}\n","import path from 'node:path'\nimport { cwd } from 'node:process'\n\nimport chalk from 'chalk'\nimport { rollup } from 'rollup'\nimport type { Options } from 'rollup-plugin-dts'\nimport dts from 'rollup-plugin-dts'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { getCompilerOptions } from './getCompilerOptions.ts'\n\nconst ignoredWarningCodes = new Set(['EMPTY_BUNDLE', 'UNRESOLVED_IMPORT'])\n\nexport async function bundleDts(inputPath: string, outputPath: string, platform: 'node' | 'browser' | 'neutral', options?: Options, verbose = false) {\n // Find the tsconfig.json path\n const pkg = cwd()\n const tsconfigPath = path.resolve(pkg, 'tsconfig.json')\n\n const nodePlugIns = platform === 'node' ? [nodeExternals()] : []\n try {\n const bundle = await rollup({\n input: inputPath,\n\n plugins: [dts({\n ...options,\n tsconfig: tsconfigPath,\n compilerOptions: {\n emitDeclarationOnly: true, noEmit: false, declarationMap: true,\n },\n\n }), ...nodePlugIns],\n onwarn(warning, warn) {\n if (ignoredWarningCodes.has(warning.code ?? '')) {\n return\n }\n console.warn(chalk.yellow(`[${warning.code}] ${warning.message}`))\n console.warn(chalk.gray(inputPath))\n warn(warning)\n },\n })\n await bundle.write({\n file: outputPath,\n format: 'es',\n })\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.red(error))\n console.warn(chalk.gray(inputPath))\n }\n\n if (verbose) {\n console.log(`Bundled declarations written to ${outputPath}`)\n }\n}\n\nexport const packageCompileTscTypes = async (\n entries: string[],\n outDir: string,\n platform: 'node' | 'browser' | 'neutral',\n srcDir = 'build',\n verbose = false,\n): Promise<number> => {\n if (verbose) {\n console.log(chalk.cyan(`Compiling Types START [${platform}]: ${entries.length} files to ${outDir} from ${srcDir}`))\n console.log(`Entries: ${entries.join(', ')}`)\n }\n const pkg = cwd()\n const srcRoot = `${pkg}/${srcDir}/${platform}`\n\n const entryNameToTypeName = (entry: string): string => {\n const splitEntryName = entry.split('.')\n const newEntryExtension = 'd.' + splitEntryName.at(-1)\n return [...splitEntryName.slice(0, -1), newEntryExtension].join('.')\n }\n\n const compilerOptions = getCompilerOptions({\n removeComments: false,\n skipDefaultLibCheck: true,\n skipLibCheck: true,\n declarationMap: true,\n emitDeclarationOnly: true,\n noEmit: true,\n })\n\n const entryNames = entries.map(entry => entry.split(`${srcDir}/`).at(-1) ?? entry)\n\n await Promise.all(entryNames.map(async (entryName) => {\n const entryTypeName = entryNameToTypeName(entryName)\n await bundleDts(`${srcRoot}/${entryTypeName}`, `${outDir}/${entryTypeName}`, platform, { compilerOptions }, verbose)\n }))\n\n if (verbose) {\n console.log(chalk.cyan(`Compiling Types FINISH: ${entries.length} files to ${outDir} from ${srcDir}`))\n }\n\n return 0\n}\n","import type { Options } from 'tsup'\n\nexport type EntryMode = 'all' | 'single' | 'auto' | 'platform' | 'custom'\n\n/**\n * Configuration for specifying which paths are targeted.\n */\nexport interface PathConfig {\n /**\n * Glob patterns to exclude (takes precedence over include).\n */\n exclude?: string[]\n /**\n * Glob patterns to include.\n */\n include?: string[]\n}\n\n/**\n * Configuration for Dynamic Share.\n */\n\nexport interface DynamicShareConfig extends PathConfig {}\n\n/**\n * Configuration for Live Share.\n */\n\nexport interface LiveShareConfig extends PathConfig {}\n\nexport interface CompileConfig {\n bundleTypes?: boolean\n /** @param entryMode all, single, custom, platform, or auto */\n entryMode?: EntryMode\n /** @param when building types with tsc, should it use the outDir to write to? */\n outDirAsBuildDir?: boolean\n}\n\nexport type PackageCompileTsupConfig = CompileConfig & {\n browser?: Record<string, Options | boolean>\n neutral?: Record<string, Options | boolean>\n node?: Record<string, Options | boolean>\n tsup?: { options?: Options }\n verbose?: boolean\n}\n\nexport type PackageCompileTscConfig = CompileConfig & { mode: 'tsc' }\n\n/**\n * How deplint should classify a dependency.\n * - `dep`: must stay in `dependencies` (never promoted to peerDependencies)\n * - `peer`: should be treated as a peerDependency (overrides a parent `dep` setting)\n */\nexport type DeplintRefType = 'dep' | 'peer'\n\n/**\n * Per-package configuration within deplint.\n */\nexport interface DeplintPackageConfig {\n /** How this dependency should be classified. */\n refType: DeplintRefType\n}\n\n/**\n * Configuration for deplint (dependency linting).\n */\nexport interface DeplintConfig {\n /**\n * Package names to exclude from unused-dependency checks.\n * Packages listed here will never be reported as \"unused\" by deplint,\n * even if no import for them is detected in source or dist files.\n * Useful for packages that are used implicitly (e.g. runtime plugins,\n * CSS-in-JS themes, or polyfills that have side effects on import).\n */\n exclude?: string[]\n /**\n * Per-dependency configuration keyed by package name.\n * Cascades from root to package configs (maps are merged, with\n * package-level entries overriding root-level entries for the same key).\n */\n packages?: Record<string, DeplintPackageConfig>\n}\n\n/**\n * Canonical names for individually toggleable publint checks.\n */\nexport type PublintCheckName\n = | 'files'\n | 'importToDefault'\n | 'main'\n | 'module'\n | 'peerDeps'\n | 'publint'\n | 'resolutions'\n | 'rootSource'\n | 'rootTypes'\n | 'sideEffects'\n | 'source'\n | 'types'\n\nexport const ALL_PUBLINT_CHECKS: PublintCheckName[] = [\n 'files', 'importToDefault', 'main', 'module', 'peerDeps', 'publint', 'resolutions', 'rootSource', 'rootTypes', 'sideEffects', 'source', 'types',\n]\n\n/** Checks that only apply to published (non-private) packages */\nexport const PUBLISH_ONLY_CHECKS: PublintCheckName[] = [\n 'files', 'importToDefault', 'main', 'module', 'publint', 'rootSource', 'rootTypes', 'sideEffects', 'source', 'types',\n]\n\n/**\n * Configuration for publint (package publishing linting).\n */\nexport interface PublintConfig {\n /**\n * Check names to exclude from publint runs.\n * All checks run by default; listed names are skipped.\n * Cannot be used together with `include`.\n */\n exclude?: PublintCheckName[]\n /**\n * Check names to include (whitelist) in publint runs.\n * Only listed checks will run; all others are skipped.\n * Cannot be used together with `exclude`.\n */\n include?: PublintCheckName[]\n /**\n * Whether to run `pack` when invoking the publint library.\n * When true (default), the package manager is used to determine which\n * files would be published. Set to false to skip packing for faster runs.\n */\n pack?: boolean\n}\n\n/**\n * Configuration for readme generation.\n */\nexport interface ReadmeConfig {\n /**\n * URL that the logo links to when clicked.\n * Replaces the placeholder in the template's [![logo][]](url) link.\n */\n logoLinkUrl?: string\n /**\n * Public URL for the logo image displayed at the top of generated READMEs.\n * Replaces the placeholder in the template's [logo] reference link.\n */\n logoUrl?: string\n}\n\n/**\n * Configuration for packman lint (package manager config linting).\n */\nexport interface PackmanConfig {\n /**\n * Minimum age in minutes that a package must be published before pnpm will install it.\n * Only applies when pnpm is the detected package manager.\n * @default 4320 (3 days)\n */\n minimumReleaseAge?: number\n /**\n * Package patterns to exclude from the minimumReleaseAge requirement.\n * These packages can be installed immediately upon release.\n * Supports exact names and scoped wildcards (e.g. '@myorg/*').\n * @default [\"'@xylabs/*'\", \"'@xyo-network/*'\"]\n */\n minimumReleaseAgeExclude?: string[]\n}\n\n/**\n * Command-specific configuration that cascades from root to package.\n * Settings here override the legacy top-level equivalents.\n */\nexport interface CommandsConfig {\n deplint?: DeplintConfig\n packman?: PackmanConfig\n publint?: boolean | PublintConfig\n}\n\nexport interface XyConfigBase {\n /**\n * Command-specific settings grouped under `commands`.\n * These cascade from root xy.config down to per-package xy.config files.\n * Takes precedence over the legacy top-level `deplint`/`publint` fields.\n */\n commands?: CommandsConfig\n compile?: CompileConfig\n /** @deprecated Use `commands.deplint` instead. */\n deplint?: DeplintConfig\n dynamicShare?: DynamicShareConfig\n liveShare?: LiveShareConfig\n /** @deprecated Use `commands.publint` instead. */\n publint?: boolean | PublintConfig\n\n readme?: ReadmeConfig\n verbose?: boolean\n}\n\nexport interface XyTsupConfig extends XyConfigBase { compile?: PackageCompileTsupConfig }\n\nexport interface XyTscConfig extends XyConfigBase { compile?: PackageCompileTscConfig }\n\nexport type XyConfigLegacy = XyTsupConfig | XyTscConfig\n\nexport type XyConfig = XyConfigLegacy & {\n dev?: {\n build?: {\n clean?: boolean /* default: true */\n compile?: boolean /* default: true */\n deplint?: boolean /* default: true */\n gendocs?: boolean /* default: false */\n gitlint?: boolean /* default: true */\n knip?: boolean /* default: true */\n license?: boolean /* default: true */\n lint?: boolean /* default: true */\n publint?: boolean /* default: true */\n statics?: boolean /* default: true */\n verbose?: boolean\n }\n compile?: PackageCompileTsupConfig\n verbose?: boolean\n }\n verbose?: boolean\n}\n","import path from 'node:path/posix'\n\nimport chalk from 'chalk'\nimport cpy from 'cpy'\n\nimport { INIT_CWD, packageName } from '../../lib/index.ts'\n\nexport interface PackageCopyAssetsParams { target?: 'esm' | 'cjs' }\n\nconst copyTargetAssets = async (target: 'esm' | 'cjs', name: string, location: string) => {\n try {\n const values = await cpy(\n ['**/*.jpg', '**/*.png', '**/*.gif', '**/*.svg', '**/*.webp', '**/*.sass', '**/*.scss', '**/*.gif', '**/*.css'],\n `../dist/${target}`,\n {\n cwd: path.join(location, 'src'),\n flat: false,\n },\n )\n if (values.length > 0) {\n console.log(chalk.green(`Copying Assets [${target.toUpperCase()}] - ${name} - ${location}`))\n }\n for (const value of values) {\n console.log(`${value.split('/').pop()} => ./dist/${target}`)\n }\n return 0\n } catch (ex) {\n const error = ex as Error\n console.log(`Copy Assets Failed: ${name}: ${error.message}`)\n return 1\n }\n}\n\nexport const packageCopyAssets = async ({ target }: PackageCopyAssetsParams) => {\n const pkg = INIT_CWD()\n const pkgName = packageName() ?? 'Unknown'\n switch (target) {\n case 'esm': {\n return await copyTargetAssets('esm', pkgName, pkg)\n }\n case 'cjs': {\n return await copyTargetAssets('cjs', pkgName, pkg)\n }\n default: {\n return (await copyTargetAssets('esm', pkgName, pkg)) || (await copyTargetAssets('cjs', pkgName, pkg))\n }\n }\n}\n","import type { ICruiseOptions } from 'dependency-cruiser'\nimport { cruise } from 'dependency-cruiser'\n\nimport { INIT_CWD, packageName } from '../../lib/index.ts'\n\nexport const packageCycle = async () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n\n const cruiseOptions: ICruiseOptions = {\n ruleSet: {\n forbidden: [\n {\n name: 'no-circular',\n severity: 'error',\n comment: 'This dependency creates a circular reference',\n from: {},\n to: { circular: true },\n },\n ],\n },\n exclude: 'node_modules|packages/.*/packages',\n validate: true,\n doNotFollow: { path: 'node_modules|packages/.*/packages' },\n tsPreCompilationDeps: false,\n combinedDependencies: true,\n outputType: 'err',\n }\n\n const target = `${pkg}/src`\n\n console.log(`Checking for circular dependencies in ${target}...`)\n\n const result = await cruise([target], cruiseOptions)\n console.log(result.output)\n\n if (result.exitCode === 0) {\n console.log(`${pkgName} āœ… No dependency violations`)\n } else {\n console.error(`${pkgName} āŒ Dependency violations found`)\n }\n return result.exitCode\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport { existsSync } from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport {\n Application, ArgumentsReader, TSConfigReader, TypeDocReader,\n} from 'typedoc'\n\nimport { INIT_CWD, packageName } from '../../lib/index.ts'\n\nconst ExitCodes = {\n CompileError: 3,\n ExceptionThrown: 6,\n NoEntryPoints: 2,\n Ok: 0,\n OptionError: 1,\n OutputError: 5,\n ValidationError: 4,\n}\n\nexport const packageGenDocs = async () => {\n const pkg = INIT_CWD()\n\n if (pkg !== undefined && !existsSync(path.join(pkg, 'typedoc.json'))) {\n return\n }\n\n const app = await Application.bootstrap({\n entryPointStrategy: 'merge',\n entryPoints: [`${pkg}/src/**/*.ts`, `${pkg}/packages/*/dist/docs.json`],\n excludeExternals: true,\n json: `${pkg}/dist/docs.json`,\n logLevel: 'Error',\n tsconfig: `${pkg}/tsconfig.json`,\n })\n\n app.options.addReader(new ArgumentsReader(0))\n app.options.addReader(new TypeDocReader())\n app.options.addReader(new TSConfigReader())\n app.options.addReader(new ArgumentsReader(300))\n\n return await runTypeDoc(app)\n}\n\nconst runTypeDoc = async (app: Application) => {\n const pkgName = packageName()\n if (app.options.getValue('version')) {\n console.log(app.toString())\n return ExitCodes.Ok\n }\n\n if (app.options.getValue('showConfig')) {\n console.log(app.options.getRawValues())\n return ExitCodes.Ok\n }\n\n if (app.logger.hasErrors()) {\n return ExitCodes.OptionError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.OptionError\n }\n\n if (app.options.getValue('entryPoints').length === 0) {\n app.logger.error('No entry points provided')\n return ExitCodes.NoEntryPoints\n }\n\n if (app.options.getValue('watch')) {\n await app.convertAndWatch(async (project) => {\n const out = app.options.getValue('out')\n if (out) {\n await app.generateDocs(project, out)\n }\n const json = app.options.getValue('json')\n if (json) {\n await app.generateJson(project, json)\n }\n\n if (!out && !json) {\n await app.generateDocs(project, './docs')\n }\n })\n return ExitCodes.Ok\n }\n\n const project = await app.convert()\n if (!project) {\n return ExitCodes.CompileError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.CompileError\n }\n\n app.validate(project)\n if (app.logger.hasErrors()) {\n return ExitCodes.ValidationError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.ValidationError\n }\n\n if (app.options.getValue('emit') !== 'none') {\n const out = app.options.getValue('out')\n if (out) {\n await app.generateDocs(project, out)\n }\n const json = app.options.getValue('json')\n if (json) {\n await app.generateJson(project, json)\n }\n\n if (!out && !json) {\n await app.generateDocs(project, './docs')\n }\n\n if (app.logger.hasErrors()) {\n return ExitCodes.OutputError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.OutputError\n }\n }\n console.log(chalk.green(`${pkgName} - Ok`))\n return ExitCodes.Ok\n}\n","import { readdirSync } from 'node:fs'\nimport path from 'node:path'\nimport { cwd } from 'node:process'\nimport { pathToFileURL } from 'node:url'\n\nimport chalk from 'chalk'\nimport { ESLint, type Linter } from 'eslint'\nimport { findUp } from 'find-up'\nimport picomatch from 'picomatch'\n\nimport { INIT_CWD } from '../../lib/index.ts'\n\nconst dumpMessages = (lintResults: ESLint.LintResult[]) => {\n const colors: ('white' | 'red' | 'yellow')[] = ['white', 'yellow', 'red']\n const severity: string[] = ['none', 'warning', 'error']\n\n for (const lintResult of lintResults) {\n if (lintResult.messages.length > 0) {\n console.log(chalk.gray(`\\n${lintResult.filePath}`))\n for (const message of lintResult.messages) {\n console.log(\n chalk.gray(`\\t${message.line}:${message.column}`),\n chalk[colors[message.severity]](`\\t${severity[message.severity]}`),\n chalk.white(`\\t${message.message}`),\n chalk.gray(`\\t${message.ruleId}`),\n )\n }\n }\n }\n}\n\nasync function getRootESLintConfig() {\n const configPath = await findUp(['eslint.config.ts', 'eslint.config.mjs'])\n\n if (configPath === undefined) {\n throw new Error('eslint.config.ts not found in the monorepo')\n }\n\n return pathToFileURL(configPath)\n}\n\nfunction getFiles(dir: string, ignoreFolders: string[]): string[] {\n const currentDirectory = cwd()\n const subDirectory = dir.split(currentDirectory)[1]?.split('/')[1]\n if (ignoreFolders.includes(subDirectory)) return []\n return readdirSync(dir, { withFileTypes: true })\n .flatMap((dirent) => {\n const res = path.resolve(dir, dirent.name)\n const relativePath = (subDirectory === undefined) ? dirent.name : `${subDirectory}/${dirent.name}`\n\n const ignoreMatchers = ignoreFolders.map(pattern => picomatch(pattern))\n\n // Exclude ignored paths\n if (ignoreMatchers.some(isMatch => isMatch(relativePath))) return []\n\n return dirent.isDirectory()\n ? getFiles(res, ignoreFolders)\n : [res]\n })\n}\n\nexport const packageLint = async (fix = false, verbose = false, cache = true) => {\n const pkg = INIT_CWD()\n const configPath = await getRootESLintConfig()\n const { default: eslintConfig } = await import(configPath.href) as { default: Linter.Config[] }\n\n const start = Date.now()\n\n // List of folders to ignore\n const ignoreFolders = ['node_modules', 'dist', 'packages', '.git', 'build', '.yarn', '.vscode', '.github']\n\n const engine = new ESLint({\n baseConfig: [...eslintConfig], fix, warnIgnored: false, cache,\n })\n\n const files = getFiles(cwd(), ignoreFolders)\n console.log(chalk.green(`Linting ${pkg} [files = ${files.length}]`))\n if (verbose) {\n for (const file of files) {\n console.log(chalk.gray(`\\t${file}`))\n }\n }\n const lintResults = await engine.lintFiles(files)\n\n dumpMessages(lintResults)\n\n if (fix) {\n await ESLint.outputFixes(lintResults)\n }\n const filesCountColor = files.length < 100 ? 'green' : files.length < 1000 ? 'yellow' : 'red'\n const lintTime = Date.now() - start\n const lintTimeColor = lintTime < 1000 ? 'green' : lintTime < 3000 ? 'yellow' : 'red'\n console.log(chalk.white(`Linted ${chalk[filesCountColor](files.length)} files in ${chalk[lintTimeColor](lintTime)}ms`))\n return lintResults.reduce((prev, lintResult) => prev + lintResult.errorCount, 0)\n}\n","import { promises as fs } from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\nimport sortPackageJson from 'sort-package-json'\n\nimport { INIT_CWD } from '../../lib/index.ts'\n// eslint-disable-next-line import-x/no-internal-modules\nimport type { PublintCheckName } from './compile/XyConfig.ts'\n// eslint-disable-next-line import-x/no-internal-modules\nimport { PUBLISH_ONLY_CHECKS } from './compile/XyConfig.ts'\n\nexport interface PackagePublintParams {\n exclude?: Set<PublintCheckName>\n fix?: boolean\n pack?: boolean\n pkgDir?: string\n strict?: boolean\n verbose?: boolean\n}\n\nconst removeSourceFromExports = (exports: Record<string, unknown>): boolean => {\n let removed = false\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'source') {\n delete exports[key]\n removed = true\n } else if (typeof value === 'object' && value !== null && removeSourceFromExports(value as Record<string, unknown>)) removed = true\n }\n return removed\n}\n\nconst hasSourceInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'source') return true\n if (typeof value === 'object' && value !== null && hasSourceInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nconst hasImportKeyInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'import' && typeof value === 'string' && value.endsWith('.mjs')) return true\n if (typeof value === 'object' && value !== null && hasImportKeyInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nconst replaceImportWithDefault = (exports: Record<string, unknown>): boolean => {\n let modified = false\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'import' && typeof value === 'string' && value.endsWith('.mjs')) {\n if (exports.default === undefined) {\n exports.default = value\n }\n delete exports.import\n if (exports.types === undefined) {\n exports.types = value.replace(/\\.mjs$/, '.d.ts')\n }\n modified = true\n } else if (typeof value === 'object' && value !== null && replaceImportWithDefault(value as Record<string, unknown>)) modified = true\n }\n return modified\n}\n\nconst hasTypesInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'types') return true\n if (typeof value === 'object' && value !== null && hasTypesInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nfunction ensureExportsPath(value: string): string {\n if (value.startsWith('./') || value.startsWith('../')) return value\n return `./${value}`\n}\n\ninterface CustomLintResult {\n errors: number\n modified: boolean\n warnings: number\n}\n\nfunction emptyCustomResult(): CustomLintResult {\n return {\n errors: 0, modified: false, warnings: 0,\n }\n}\n\nfunction mergeResults(target: CustomLintResult, source: CustomLintResult): void {\n target.errors += source.errors\n target.warnings += source.warnings\n target.modified = target.modified || source.modified\n}\n\nfunction checkFiles(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const files = pkg.files as string[] | undefined\n if (files === undefined) {\n console.warn(chalk.yellow('Publint [custom]: \"files\" field is missing'))\n result.warnings++\n }\n if (Array.isArray(files) && !files.includes('README.md')) {\n files.push('README.md')\n console.warn(chalk.yellow('Publint [custom]: added \"README.md\" to \"files\"'))\n result.modified = true\n result.warnings++\n }\n if (Array.isArray(files) && files.includes('src')) {\n if (fix) {\n pkg.files = files.filter((f: string) => f !== 'src')\n console.warn(chalk.yellow('Publint [custom]: removed \"src\" from \"files\"'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"src\" should not be in \"files\" (use --fix to remove)'))\n }\n result.warnings++\n }\n return result\n}\n\nfunction checkExportsSource(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (exports && typeof exports === 'object' && hasSourceInExports(exports)) {\n if (fix) {\n removeSourceFromExports(exports)\n console.warn(chalk.yellow('Publint [custom]: removed \"source\" entries from \"exports\"'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"source\" entries should not be in \"exports\" (use --fix to remove)'))\n }\n result.warnings++\n }\n return result\n}\n\nfunction migrateFieldToExports(\n pkg: Record<string, unknown>,\n field: string,\n exportKey: string,\n fix: boolean,\n): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg[field] === undefined) return result\n\n // Skip non-JS files (e.g. tsconfig packages use \"main\": \"./tsconfig.json\")\n const fieldValue = pkg[field] as string\n if (!fieldValue.endsWith('.js') && !fieldValue.endsWith('.mjs') && !fieldValue.endsWith('.cjs')) return result\n\n if (fix) {\n const exportValue = ensureExportsPath(fieldValue)\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (exports && typeof exports === 'object') {\n const dot = exports['.']\n if (dot && typeof dot === 'object' && !(dot as Record<string, unknown>)[exportKey]) {\n (dot as Record<string, unknown>)[exportKey] = exportValue\n console.warn(chalk.yellow(`Publint [custom]: migrated \"${field}\" to \"exports['.'].${exportKey}\" (${fieldValue})`))\n }\n } else if (!pkg.exports) {\n pkg.exports = { '.': { [exportKey]: exportValue } }\n console.warn(chalk.yellow(`Publint [custom]: migrated \"${field}\" to \"exports\" (.→${fieldValue})`))\n }\n delete pkg[field]\n console.warn(chalk.yellow(`Publint [custom]: removed deprecated \"${field}\" field`))\n result.modified = true\n } else {\n console.warn(chalk.yellow(`Publint [custom]: \"${field}\" field is deprecated, use \"exports\" instead (use --fix to remove)`))\n }\n result.warnings++\n return result\n}\n\nfunction checkSideEffects(pkg: Record<string, unknown>): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.sideEffects !== false) {\n console.warn(chalk.yellow('Publint [custom]: \"sideEffects\" field should be set to false'))\n result.warnings++\n }\n return result\n}\n\nfunction checkRootSource(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n for (const field of ['source', 'src']) {\n if (pkg[field] !== undefined) {\n if (fix) {\n delete pkg[field]\n console.warn(chalk.yellow(`Publint [custom]: removed root-level \"${field}\" field`))\n result.modified = true\n } else {\n console.warn(chalk.yellow(`Publint [custom]: root-level \"${field}\" field should not be in package.json (use --fix to remove)`))\n }\n result.warnings++\n }\n }\n return result\n}\n\nfunction checkResolutions(pkg: Record<string, unknown>): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.resolutions !== undefined) {\n console.warn(chalk.yellow('Publint [custom]: \"resolutions\" in use'))\n console.warn(chalk.gray(JSON.stringify(pkg.resolutions, null, 2)))\n result.warnings++\n }\n return result\n}\n\nfunction checkImportToDefault(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (!exports || typeof exports !== 'object') return result\n if (!hasImportKeyInExports(exports)) return result\n\n if (fix) {\n replaceImportWithDefault(exports)\n console.warn(chalk.yellow('Publint [custom]: renamed \"import\" to \"default\" in \"exports\" and ensured \"types\" siblings'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"import\" entries in \"exports\" should use \"default\" instead (use --fix to rename)'))\n }\n result.warnings++\n return result\n}\n\nfunction checkRootTypes(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.types === undefined) return result\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (!exports || typeof exports !== 'object' || !hasTypesInExports(exports)) return result\n\n if (fix) {\n delete pkg.types\n console.warn(chalk.yellow('Publint [custom]: removed redundant root \"types\" field (already defined in \"exports\")'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: root \"types\" field is redundant when \"exports\" defines types (use --fix to remove)'))\n }\n result.warnings++\n return result\n}\n\nfunction customPubLint(\n pkg: Record<string, unknown>,\n fix = false,\n exclude = new Set<PublintCheckName>(),\n): [number, number, boolean] {\n const result = emptyCustomResult()\n if (!exclude.has('files')) mergeResults(result, checkFiles(pkg, fix))\n if (!exclude.has('source')) mergeResults(result, checkExportsSource(pkg, fix))\n if (!exclude.has('rootSource')) mergeResults(result, checkRootSource(pkg, fix))\n if (!exclude.has('main')) mergeResults(result, migrateFieldToExports(pkg, 'main', 'default', fix))\n if (!exclude.has('types')) mergeResults(result, migrateFieldToExports(pkg, 'types', 'types', fix))\n if (!exclude.has('module')) mergeResults(result, migrateFieldToExports(pkg, 'module', 'default', fix))\n if (!exclude.has('importToDefault')) mergeResults(result, checkImportToDefault(pkg, fix))\n if (!exclude.has('rootTypes')) mergeResults(result, checkRootTypes(pkg, fix))\n if (!exclude.has('sideEffects')) mergeResults(result, checkSideEffects(pkg))\n if (!exclude.has('resolutions')) mergeResults(result, checkResolutions(pkg))\n return [result.errors, result.warnings, result.modified]\n}\n\n// Always-included files that npm packs regardless of the \"files\" field\nconst ALWAYS_INCLUDED_PATTERNS = [\n 'package.json',\n 'README',\n 'README.*',\n 'LICENCE',\n 'LICENCE.*',\n 'LICENSE',\n 'LICENSE.*',\n 'CHANGELOG',\n 'CHANGELOG.*',\n]\n\ninterface PackFile {\n data: string\n name: string\n}\n\nasync function resolvePackFiles(pkgDir: string, filesField?: string[]): Promise<PackFile[]> {\n const patterns = [...ALWAYS_INCLUDED_PATTERNS]\n if (filesField) {\n for (const pattern of filesField) {\n // Negation patterns (e.g. \"!**/*.spec.*\") are exclusions, pass through as-is\n if (pattern.startsWith('!')) {\n patterns.push(pattern)\n } else {\n // Include pattern — glob both the pattern itself and its contents if it's a directory\n patterns.push(pattern, `${pattern}/**`)\n }\n }\n }\n\n const matched = await glob(patterns, {\n cwd: pkgDir,\n nodir: true,\n dot: false,\n })\n\n const files: PackFile[] = await Promise.all(\n matched.map(async (rel) => {\n const abs = path.join(pkgDir, rel)\n const data = await fs.readFile(abs, 'utf8').catch(() => '')\n // publint's tarball VFS looks up files by path.join(pkgDir, rel),\n // so names must be prefixed with pkgDir to match\n return { name: path.join(pkgDir, rel), data }\n }),\n )\n return files\n}\n\nasync function runPublintLibrary(pkgDir: string, pkg: Record<string, unknown>, strict: boolean, pack: boolean): Promise<{ errors: number; total: number }> {\n const { publint } = await import('publint')\n\n let packOption: { files: PackFile[] } | false = false\n if (pack) {\n const files = await resolvePackFiles(pkgDir, pkg.files as string[] | undefined)\n packOption = { files }\n }\n\n const { messages } = await publint({\n level: 'suggestion',\n pack: packOption,\n pkgDir,\n strict,\n })\n\n // eslint-disable-next-line import-x/no-internal-modules\n const { formatMessage } = await import('publint/utils')\n\n for (const message of messages) {\n switch (message.type) {\n case 'error': {\n console.error(chalk.red(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n case 'warning': {\n console.warn(chalk.yellow(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n default: {\n console.log(chalk.white(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n }\n }\n\n return {\n errors: messages.filter(message => message.type === 'error').length,\n total: messages.length,\n }\n}\n\nexport const packagePublint = async ({\n exclude = new Set(), fix = false, pack = true, pkgDir: pkgDirParam, strict = true, verbose: _verbose = false,\n}: PackagePublintParams = {}): Promise<number> => {\n const pkgDir = pkgDirParam ?? INIT_CWD()\n\n const sortedPkg = sortPackageJson(await fs.readFile(`${pkgDir}/package.json`, 'utf8'))\n await fs.writeFile(`${pkgDir}/package.json`, sortedPkg)\n\n const pkg = JSON.parse(await fs.readFile(`${pkgDir}/package.json`, 'utf8')) as Record<string, unknown>\n\n const effectiveExclude = pkg.private\n ? new Set([...exclude, ...PUBLISH_ONLY_CHECKS])\n : exclude\n\n console.log(chalk.green(`Publint: ${String(pkg.name)}${pkg.private ? chalk.gray(' (private)') : ''}`))\n console.log(chalk.gray(pkgDir))\n\n let libraryErrors = 0\n if (!effectiveExclude.has('publint')) {\n const library = await runPublintLibrary(pkgDir, pkg, strict, pack)\n libraryErrors = library.errors\n }\n\n const [errorCount, _warningCount, modified] = customPubLint(pkg, fix, effectiveExclude)\n\n if (modified) {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n await fs.writeFile(`${pkgDir}/package.json`, sorted)\n }\n\n return libraryErrors + errorCount\n}\n","import { packageClean } from './clean.ts'\nimport { packageCompile } from './compile/index.ts'\n\nexport const packageRecompile = async () => {\n return packageClean() || await packageCompile()\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\nimport semver from 'semver'\n\nimport {\n INIT_CWD, latestVersions, runInstall,\n} from '../lib/index.ts'\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport {\n checkInternalDepVersions,\n checkInternalPeerVersions,\n checkVersionConsistency,\n checkWorkspaceProtocol,\n fixInternalDepVersions,\n fixInternalPeerVersions,\n fixVersionConsistency,\n fixWorkspaceProtocol,\n} from './package-lint-deps.ts'\n\nexport interface LintResult {\n errors: string[]\n fixable: string[]\n warnings: string[]\n}\n\nfunction emptyResult(): LintResult {\n return {\n errors: [], fixable: [], warnings: [],\n }\n}\n\nfunction readRootPackageJson(cwd: string): Record<string, unknown> {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw) as Record<string, unknown>\n}\n\nfunction writeRootPackageJson(cwd: string, pkg: Record<string, unknown>) {\n const path = PATH.resolve(cwd, 'package.json')\n writeFileSync(path, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction readPnpmWorkspaceGlobs(cwd: string): string[] | undefined {\n const wsPath = PATH.resolve(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return undefined\n const raw = readFileSync(wsPath, 'utf8')\n const globs: string[] = []\n let inPackages = false\n for (const line of raw.split('\\n')) {\n if (/^packages\\s*:/.test(line)) {\n inPackages = true\n continue\n }\n if (inPackages) {\n const match = /^\\s+-\\s+['\"]?([^'\"]+)['\"]?\\s*$/.exec(line)\n if (match) {\n globs.push(match[1])\n } else if (/^\\S/.test(line) && line.trim() !== '') {\n break\n }\n }\n }\n return globs.length > 0 ? globs : undefined\n}\n\nfunction isMonorepo(pkg: Record<string, unknown>, cwd: string): boolean {\n const workspaces = pkg.workspaces\n if (Array.isArray(workspaces) && workspaces.length > 0) return true\n return readPnpmWorkspaceGlobs(cwd) !== undefined\n}\n\nfunction checkPackagesFolder(workspaces: { location: string; name: string }[]): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!location.startsWith('packages/') && !location.startsWith('packages\\\\')) {\n result.errors.push(`${name} (${location}) is not inside a packages/ folder`)\n }\n }\n\n return result\n}\n\nfunction checkRootPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (!pkg.private) {\n result.fixable.push('Root package.json must be private to prevent accidental publishing')\n }\n\n return result\n}\n\nfunction fixRootPrivate(cwd: string, pkg: Record<string, unknown>) {\n pkg.private = true\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' āœ” Fixed: set \"private\": true in root package.json'))\n}\n\nfunction checkNoPublishConfigOnPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (pkg.private && pkg.publishConfig) {\n result.fixable.push('Root package.json has publishConfig but is private — publishConfig is unnecessary')\n }\n\n return result\n}\n\nfunction fixNoPublishConfigOnPrivate(cwd: string, pkg: Record<string, unknown>) {\n delete pkg.publishConfig\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' āœ” Fixed: removed publishConfig from private root package.json'))\n}\n\nfunction checkNoPackageManagerInWorkspaces(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n result.fixable.push(`${name} (${location}) has a packageManager field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixNoPackageManagerInWorkspaces(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n delete pkg.packageManager\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: removed packageManager from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction checkWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n // For pnpm: no package should have workspaces (including root)\n // For yarn: only root should have workspaces\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n const label = location === '.' ? 'Root' : `${name} (${location})`\n const reason = pm === 'pnpm'\n ? 'pnpm uses pnpm-workspace.yaml instead'\n : 'only the root should define workspaces'\n result.fixable.push(`${label} has a workspaces field — ${reason}`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n\n return result\n}\n\nfunction fixWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): void {\n for (const { location } of workspaces) {\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n delete pkg.workspaces\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n const label = location === '.' ? 'root' : location\n console.log(chalk.green(` āœ” Fixed: removed workspaces from ${label}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n}\n\nfunction checkWorkspaceGlobCoverage(\n pkg: Record<string, unknown>,\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pm === 'pnpm'\n ? readPnpmWorkspaceGlobs(cwd) ?? []\n : (Array.isArray(pkg.workspaces) ? pkg.workspaces as string[] : [])\n\n if (globs.length === 0) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`No workspace globs found in ${source}`)\n return result\n }\n\n const matchers = globs.map(glob => picomatch(glob))\n const isMatch = (location: string) => matchers.some(m => m(location))\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!isMatch(location)) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`${name} (${location}) is not matched by any glob in ${source}`)\n }\n }\n\n return result\n}\n\nfunction logResults(label: string, result: LintResult, fix: boolean): { errors: number; fixed: number } {\n let errors = 0\n let fixed = 0\n\n for (const error of result.errors) {\n console.log(chalk.red(` āœ— ${error}`))\n errors++\n }\n for (const fixable of result.fixable) {\n if (fix) {\n fixed++\n } else {\n console.log(chalk.red(` āœ— ${fixable} (fixable)`))\n errors++\n }\n }\n for (const warning of result.warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n }\n if (errors === 0 && fixed === 0 && result.warnings.length === 0) {\n console.log(chalk.green(` āœ“ ${label}`))\n }\n\n return { errors, fixed }\n}\n\ninterface CheckEntry {\n check: () => LintResult\n fix?: (cwd: string, pkg: Record<string, unknown>) => void\n label: string\n}\n\nfunction runChecks(entries: CheckEntry[], cwd: string, pkg: Record<string, unknown>, fix: boolean): { errors: number; fixed: number } {\n let totalErrors = 0\n let totalFixed = 0\n\n for (const entry of entries) {\n const result = entry.check()\n const log = logResults(entry.label, result, fix)\n if (fix && entry.fix && result.fixable.length > 0) {\n entry.fix(cwd, pkg)\n }\n totalErrors += log.errors\n totalFixed += log.fixed\n }\n\n return { errors: totalErrors, fixed: totalFixed }\n}\n\nfunction checkVoltaOnlyInRoot(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.volta) {\n result.fixable.push(`${name} (${location}) has a volta field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixVoltaOnlyInRoot(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.volta) {\n delete pkg.volta\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: removed volta from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction isTerminalPackage(pkg: Record<string, unknown>): boolean {\n return pkg.private === true\n}\n\nfunction checkEnginesOnlyInNonTerminal(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n // Check root (always terminal/private) — should not have engines\n const rootPkg = JSON.parse(readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')) as Record<string, unknown>\n if (rootPkg.engines) {\n result.fixable.push('Root package.json has engines — terminal packages should not declare engines (use volta instead)')\n }\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n result.fixable.push(`${name} (${location}) is terminal (private) but has engines — terminal packages should not declare engines`)\n }\n if (!isTerminalPackage(pkg) && !pkg.engines) {\n result.fixable.push(`${name} (${location}) is a library but has no engines field`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixEnginesOnlyInNonTerminal(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n // Remove engines from root\n const rootPath = PATH.resolve(cwd, 'package.json')\n const rootRaw = readFileSync(rootPath, 'utf8')\n const rootPkg = JSON.parse(rootRaw) as Record<string, unknown>\n if (rootPkg.engines) {\n delete rootPkg.engines\n writeFileSync(rootPath, `${JSON.stringify(rootPkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(' āœ” Fixed: removed engines from root package.json'))\n }\n\n // Remove engines from terminal workspace packages, add engines to libraries missing them\n const enginesTemplate = resolveEnginesTemplate(cwd, workspaces)\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n delete pkg.engines\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: removed engines from ${location}/package.json`))\n }\n if (!isTerminalPackage(pkg) && !pkg.engines && enginesTemplate) {\n pkg.engines = enginesTemplate\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: added engines to ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction resolveEnginesTemplate(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Record<string, string> | undefined {\n // Use engines from the first sibling library package that has one\n for (const { location } of workspaces) {\n if (location === '.') continue\n try {\n const pkg = JSON.parse(readFileSync(PATH.resolve(cwd, location, 'package.json'), 'utf8')) as Record<string, unknown>\n if (!isTerminalPackage(pkg) && pkg.engines) {\n return pkg.engines as Record<string, string>\n }\n } catch {\n // skip\n }\n }\n return undefined\n}\n\nfunction checkVersionsIncludeLts(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const toolVersions: Record<string, string> = {\n node: latestVersions.node,\n npm: latestVersions.npm,\n pnpm: latestVersions.pnpm,\n yarn: latestVersions.yarn,\n }\n\n // Check engines in all non-terminal packages\n for (const { location, name } of workspaces) {\n const pkgPath = location === '.'\n ? PATH.resolve(cwd, 'package.json')\n : PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const label = location === '.' ? 'root' : `${name} (${location})`\n\n // Check engines ranges\n const engines = pkg.engines as Record<string, string> | undefined\n if (engines) {\n for (const [tool, range] of Object.entries(engines)) {\n const latest = toolVersions[tool]\n if (latest && !semver.satisfies(latest, range)) {\n result.errors.push(\n `${label} engines.${tool} \"${range}\" does not include latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n\n // Check volta pins\n const volta = pkg.volta as Record<string, string> | undefined\n if (volta) {\n for (const [tool, pinnedVersion] of Object.entries(volta)) {\n const latest = toolVersions[tool]\n if (latest && semver.lt(pinnedVersion, latest)) {\n result.warnings.push(\n `${label} volta.${tool} \"${pinnedVersion}\" is older than latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction logSummary(errors: number, fixed: number) {\n if (fixed > 0) {\n console.log(chalk.green(`\\n Fixed ${fixed} issue(s)`))\n }\n if (errors > 0) {\n console.log(chalk.red(`\\n ${errors} error(s) found`))\n } else if (fixed === 0) {\n console.log(chalk.green('\\n All checks passed'))\n }\n}\n\nexport function packageLintMonorepo(fix = false): number {\n const cwd = INIT_CWD()\n\n let pkg: Record<string, unknown>\n try {\n pkg = readRootPackageJson(cwd)\n } catch {\n console.error(chalk.red('Could not read package.json'))\n return 1\n }\n\n if (!isMonorepo(pkg, cwd)) {\n console.log(chalk.gray('Not a monorepo — skipping repo lint checks'))\n return 0\n }\n\n console.log(chalk.green('Repo Lint'))\n\n const pm = detectPackageManager()\n const workspaces = getPackageManager().listWorkspaces()\n\n const internalDepCheck: CheckEntry = pm === 'pnpm'\n ? {\n check: () => checkWorkspaceProtocol(cwd, workspaces),\n fix: () => fixWorkspaceProtocol(cwd, workspaces),\n label: 'Internal deps/devDeps use workspace: protocol',\n }\n : {\n check: () => checkInternalDepVersions(cwd, workspaces),\n fix: () => fixInternalDepVersions(cwd, workspaces),\n label: 'Internal deps/devDeps use correct version ranges',\n }\n\n const checks: CheckEntry[] = [\n {\n check: () => checkRootPrivate(pkg), fix: fixRootPrivate, label: 'Root package is private',\n },\n {\n check: () => checkNoPublishConfigOnPrivate(pkg), fix: fixNoPublishConfigOnPrivate, label: 'No publishConfig on private root',\n },\n { check: () => checkPackagesFolder(workspaces), label: 'All packages are in packages/ folder' },\n {\n check: () => checkWorkspacesFieldPlacement(cwd, pm, workspaces),\n fix: () => fixWorkspacesFieldPlacement(cwd, pm, workspaces),\n label: pm === 'pnpm' ? 'No workspaces field in package.json (use pnpm-workspace.yaml)' : 'Workspaces field only in root package.json',\n },\n {\n check: () => checkWorkspaceGlobCoverage(pkg, cwd, pm, workspaces),\n label: 'Workspace globs cover all packages',\n },\n {\n check: () => checkNoPackageManagerInWorkspaces(cwd, workspaces),\n fix: () => fixNoPackageManagerInWorkspaces(cwd, pkg, workspaces),\n label: 'No packageManager in workspace packages',\n },\n {\n check: () => checkVoltaOnlyInRoot(cwd, workspaces),\n fix: () => fixVoltaOnlyInRoot(cwd, pkg, workspaces),\n label: 'Volta only in root package.json',\n },\n {\n check: () => checkEnginesOnlyInNonTerminal(cwd, workspaces),\n fix: () => fixEnginesOnlyInNonTerminal(cwd, pkg, workspaces),\n label: 'Engines only in non-terminal (library) packages',\n },\n {\n check: () => checkVersionsIncludeLts(cwd, workspaces),\n label: 'Engine/volta versions include latest LTS',\n },\n {\n check: () => checkVersionConsistency(cwd, pkg, workspaces),\n fix: () => fixVersionConsistency(cwd, pkg, writeRootPackageJson, workspaces),\n label: 'Consistent versions across packages',\n },\n internalDepCheck,\n {\n check: () => checkInternalPeerVersions(cwd, workspaces),\n fix: () => fixInternalPeerVersions(cwd, workspaces),\n label: 'Internal peerDeps use semver ranges (not workspace: protocol)',\n },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\n\n if (fix && fixed > 0) {\n runInstall()\n }\n\n return errors > 0 ? 1 : 0\n}\n","import {\n existsSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { detectCurrentPM, findWorkspacePackagePaths } from './convert.ts'\n\nexport interface PackmanCleanParams {\n verbose?: boolean\n}\n\nfunction removeNodeModules(dir: string, verbose?: boolean): boolean {\n const nmPath = PATH.join(dir, 'node_modules')\n if (existsSync(nmPath)) {\n if (verbose) console.log(chalk.gray(`Removing ${nmPath}`))\n rmSync(nmPath, { force: true, recursive: true })\n return true\n }\n return false\n}\n\nexport function packmanClean({ verbose }: PackmanCleanParams): number {\n const cwd = process.cwd()\n const pm = detectCurrentPM(cwd)\n\n if (pm === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n console.log(chalk.blue(`Detected package manager: ${pm}`))\n\n // Remove node_modules from root and all workspace packages\n let removedCount = 0\n\n if (removeNodeModules(cwd, verbose)) removedCount++\n\n const workspacePaths = findWorkspacePackagePaths(cwd)\n for (const wsPath of workspacePaths) {\n const fullPath = PATH.join(cwd, wsPath)\n if (removeNodeModules(fullPath, verbose)) removedCount++\n }\n\n console.log(chalk.green(`Removed ${removedCount} node_modules folder${removedCount === 1 ? '' : 's'}`))\n\n // Handle lock files\n if (pm === 'yarn') {\n const lockPath = PATH.join(cwd, 'yarn.lock')\n if (existsSync(lockPath)) {\n writeFileSync(lockPath, '')\n console.log(chalk.green('Truncated yarn.lock'))\n }\n } else if (pm === 'pnpm') {\n const lockPath = PATH.join(cwd, 'pnpm-lock.yaml')\n if (existsSync(lockPath)) {\n rmSync(lockPath)\n console.log(chalk.green('Deleted pnpm-lock.yaml'))\n }\n }\n\n console.log(chalk.green('Ready for a clean install'))\n return 0\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { packageLintMonorepo } from '../package-lint.ts'\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nexport function detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nexport function findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n const patterns: string[] = (pkg.workspaces ?? []) as string[]\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n const result = target === 'pnpm'\n ? convertToPnpm(cwd, workspacePaths)\n : convertToYarn(cwd, workspacePaths)\n\n if (result !== 0) return result\n\n console.log(chalk.green('\\nRunning repo lint --fix...'))\n packageLintMonorepo(true)\n\n return result\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n // Save workspace patterns before removing — fall back to pnpm-workspace.yaml if already converted\n const workspacePatterns: string[] = (pkg.workspaces as string[] | undefined) ?? readPnpmWorkspacePatterns(cwd)\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8')) as Record<string, unknown>\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Swap ts-scripts devDependency (yarn3 → pnpm) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'yarn-to-pnpm')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'yarn-to-pnpm')\n\n // 8. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n // 9. Run pnpm install\n console.log(chalk.blue('\\nRunning pnpm install...'))\n const install = spawnSync('pnpm', ['install'], {\n cwd,\n encoding: 'utf8',\n shell: true,\n stdio: 'inherit',\n })\n if (install.status !== 0) {\n console.error(chalk.red('pnpm install failed'))\n return 1\n }\n\n console.log(chalk.blue('\\nConversion complete.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst IMPORT_SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ['@xylabs/ts-scripts-react-yarn3', '@xylabs/ts-scripts-react-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ['@xylabs/ts-scripts-react-pnpm', '@xylabs/ts-scripts-react-yarn3'],\n ],\n}\n\nconst SOURCE_GLOBS = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.mjs',\n]\n\nconst IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.yarn/**',\n]\n\nexport function rewriteSourceImports(cwd: string, direction: Direction): void {\n const swaps = IMPORT_SWAP_MAP[direction]\n const files = globSync(SOURCE_GLOBS, {\n cwd,\n absolute: true,\n ignore: IGNORE_PATTERNS,\n })\n\n let count = 0\n for (const file of files) {\n if (!existsSync(file)) continue\n const original = readFileSync(file, 'utf8')\n let content = original\n for (const [from, to] of swaps) {\n content = content.replaceAll(from, to)\n }\n if (content !== original) {\n writeFileSync(file, content, 'utf8')\n count++\n }\n }\n\n if (count > 0) {\n console.log(chalk.green(` Rewrote ts-scripts imports in ${count} source file(s)`))\n }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ],\n}\n\nfunction swapInPackageJson(pkgPath: string, direction: Direction): boolean {\n if (!existsSync(pkgPath)) return false\n\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies']) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [from, to] of SWAP_MAP[direction]) {\n if (deps[from]) {\n deps[to] = deps[from]\n delete deps[from]\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n', 'utf8')\n }\n return changed\n}\n\nexport function swapTsScriptsDependency(cwd: string, workspacePackageJsonPaths: string[], direction: Direction): void {\n let count = 0\n\n // Swap in root package.json\n if (swapInPackageJson(PATH.join(cwd, 'package.json'), direction)) {\n count++\n }\n\n // Swap in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (swapInPackageJson(fullPath, direction)) {\n count++\n }\n }\n\n if (count > 0) {\n const target = direction === 'yarn-to-pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`))\n }\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nfunction readWorkspacePatternsFromPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n if (!existsSync(pkgPath)) return []\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return (pkg.workspaces ?? []) as string[]\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns — try pnpm-workspace.yaml first, fall back to pkg.workspaces if already converted\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n const fromPkg = readWorkspacePatternsFromPackageJson(cwd)\n if (fromPkg.length > 0) {\n workspacePatterns.push(...fromPkg)\n } else {\n console.warn(chalk.yellow(' No workspace patterns found'))\n }\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8')) as Record<string, unknown>\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Swap ts-scripts devDependency (pnpm → yarn3) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'pnpm-to-yarn')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'pnpm-to-yarn')\n\n // 8. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n // 9. Run yarn install\n console.log(chalk.blue('\\nRunning yarn install...'))\n const install = spawnSync('yarn', ['install'], {\n cwd,\n encoding: 'utf8',\n shell: true,\n stdio: 'inherit',\n })\n if (install.status !== 0) {\n console.error(chalk.red('yarn install failed'))\n return 1\n }\n\n console.log(chalk.blue('\\nConversion complete.\\n'))\n return 0\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { loadConfig } from '../../lib/index.ts'\nimport { detectPackageManager } from '../../pm/index.ts'\nimport type { PackmanConfig } from '../package/compile/index.ts'\n\nexport interface PackmanLintParams {\n fix?: boolean\n verbose?: boolean\n}\n\ninterface ResolvedPackmanConfig {\n minimumReleaseAge: number\n minimumReleaseAgeExclude: string[]\n}\n\nconst DEFAULT_MINIMUM_RELEASE_AGE = 4320 // 3 days in minutes\nconst DEFAULT_RELEASE_AGE_EXCLUDES = [\"'@xylabs/*'\", \"'@xyo-network/*'\"]\n\nfunction resolvePackmanConfig(cfg?: PackmanConfig): ResolvedPackmanConfig {\n return {\n minimumReleaseAge: cfg?.minimumReleaseAge ?? DEFAULT_MINIMUM_RELEASE_AGE,\n minimumReleaseAgeExclude: cfg?.minimumReleaseAgeExclude ?? DEFAULT_RELEASE_AGE_EXCLUDES,\n }\n}\n\nfunction readPnpmWorkspaceYaml(cwd: string): string | undefined {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return undefined\n return readFileSync(wsPath, 'utf8')\n}\n\nfunction writePnpmWorkspaceYaml(cwd: string, content: string): void {\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), content, 'utf8')\n}\n\nfunction parseYamlListSection(content: string, sectionName: string): string[] {\n const items: string[] = []\n let inSection = false\n for (const line of content.split('\\n')) {\n if (new RegExp(String.raw`^${sectionName}\\s*:`).test(line)) {\n inSection = true\n continue\n }\n if (inSection) {\n const match = /^\\s+-\\s+(.+)$/.exec(line)\n if (match) {\n items.push(match[1].trim())\n } else if (line.trim() && !/^\\s/.test(line)) {\n break\n }\n }\n }\n return items\n}\n\n// --- Yarn checks ---\n\nfunction checkEnableScripts(cwd: string, verbose?: boolean, silent?: boolean): boolean {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (!existsSync(yarnrcPath)) {\n if (verbose) console.log(chalk.gray(' No .yarnrc.yml found, skipping enableScripts check'))\n return true\n }\n\n const content = readFileSync(yarnrcPath, 'utf8')\n for (const line of content.split('\\n')) {\n const trimmed = line.trim()\n if (/^enableScripts\\s*:/.test(trimmed)) {\n const value = trimmed.replace(/^enableScripts\\s*:\\s*/, '').trim()\n if (value === 'false') {\n if (verbose) console.log(chalk.green(' enableScripts is correctly set to false'))\n return true\n }\n if (!silent) console.log(chalk.red(' enableScripts is set to', value, '(expected false)'))\n return false\n }\n }\n\n if (!silent) console.log(chalk.red(' enableScripts is not set in .yarnrc.yml (expected false)'))\n return false\n}\n\nfunction fixEnableScripts(cwd: string): boolean {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (!existsSync(yarnrcPath)) return true\n\n const content = readFileSync(yarnrcPath, 'utf8')\n const lines = content.split('\\n')\n\n let found = false\n const newLines = lines.map((line) => {\n if (/^\\s*enableScripts\\s*:/.test(line)) {\n found = true\n return 'enableScripts: false'\n }\n return line\n })\n\n if (!found) {\n let inserted = false\n for (let i = 0; i < newLines.length; i++) {\n const trimmed = newLines[i].trim()\n if (trimmed && !trimmed.startsWith('#') && trimmed > 'enableScripts:') {\n newLines.splice(i, 0, 'enableScripts: false', '')\n inserted = true\n break\n }\n }\n if (!inserted) {\n const lastLine = newLines.at(-1)\n if (lastLine === '') {\n newLines.splice(-1, 0, 'enableScripts: false', '')\n } else {\n newLines.push('', 'enableScripts: false')\n }\n }\n }\n\n writeFileSync(yarnrcPath, newLines.join('\\n'), 'utf8')\n console.log(chalk.green(' Fixed: enableScripts set to false'))\n return true\n}\n\n// --- pnpm checks ---\n\nfunction checkMinimumReleaseAge(cwd: string, config: ResolvedPackmanConfig, verbose?: boolean, silent?: boolean): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) {\n if (!silent) console.log(chalk.red(' No pnpm-workspace.yaml found'))\n return false\n }\n\n const { minimumReleaseAge } = config\n for (const line of content.split('\\n')) {\n const match = /^minimumReleaseAge\\s*:\\s*(\\d+)/.exec(line.trim())\n if (match) {\n const value = Number.parseInt(match[1], 10)\n if (value >= minimumReleaseAge) {\n if (verbose) console.log(chalk.green(` minimumReleaseAge is ${value} (>= ${minimumReleaseAge})`))\n return true\n }\n if (!silent) console.log(chalk.red(` minimumReleaseAge is ${value} (expected >= ${minimumReleaseAge})`))\n return false\n }\n }\n\n if (!silent) console.log(chalk.red(` minimumReleaseAge is not set in pnpm-workspace.yaml (expected >= ${minimumReleaseAge})`))\n return false\n}\n\nfunction fixMinimumReleaseAge(cwd: string, config: ResolvedPackmanConfig): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) return false\n\n const { minimumReleaseAge } = config\n const lines = content.split('\\n')\n let found = false\n const newLines = lines.map((line) => {\n if (/^minimumReleaseAge\\s*:/.test(line)) {\n found = true\n return `minimumReleaseAge: ${minimumReleaseAge}`\n }\n return line\n })\n\n if (!found) {\n const lastLine = newLines.at(-1)\n if (lastLine === '') {\n newLines.splice(-1, 0, `minimumReleaseAge: ${minimumReleaseAge}`)\n } else {\n newLines.push(`minimumReleaseAge: ${minimumReleaseAge}`)\n }\n }\n\n writePnpmWorkspaceYaml(cwd, newLines.join('\\n'))\n console.log(chalk.green(` Fixed: minimumReleaseAge set to ${minimumReleaseAge}`))\n return true\n}\n\nfunction checkMinimumReleaseAgeExclude(cwd: string, config: ResolvedPackmanConfig, verbose?: boolean, silent?: boolean): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) {\n if (!silent) console.log(chalk.red(' No pnpm-workspace.yaml found'))\n return false\n }\n\n const excludes = parseYamlListSection(content, 'minimumReleaseAgeExclude')\n const missing = config.minimumReleaseAgeExclude.filter(scope => !excludes.includes(scope))\n\n if (missing.length === 0) {\n if (verbose) console.log(chalk.green(' minimumReleaseAgeExclude includes all required scopes'))\n return true\n }\n\n if (!silent) console.log(chalk.red(` minimumReleaseAgeExclude is missing: ${missing.join(', ')}`))\n return false\n}\n\nfunction fixMinimumReleaseAgeExclude(cwd: string, config: ResolvedPackmanConfig): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) return false\n\n const existingExcludes = parseYamlListSection(content, 'minimumReleaseAgeExclude')\n const toAdd = config.minimumReleaseAgeExclude.filter(scope => !existingExcludes.includes(scope))\n if (toAdd.length === 0) return true\n\n const lines = content.split('\\n')\n const sectionIndex = lines.findIndex(line => /^minimumReleaseAgeExclude\\s*:/.test(line))\n\n if (sectionIndex === -1) {\n const newSection = ['minimumReleaseAgeExclude:', ...config.minimumReleaseAgeExclude.map(s => ` - ${s}`)]\n const lastLine = lines.at(-1)\n if (lastLine === '') {\n lines.splice(-1, 0, ...newSection)\n } else {\n lines.push(...newSection)\n }\n } else {\n let insertAt = sectionIndex + 1\n while (insertAt < lines.length && /^\\s+-/.test(lines[insertAt])) {\n insertAt++\n }\n for (const scope of toAdd) {\n lines.splice(insertAt, 0, ` - ${scope}`)\n insertAt++\n }\n }\n\n writePnpmWorkspaceYaml(cwd, lines.join('\\n'))\n console.log(chalk.green(` Fixed: added ${toAdd.join(', ')} to minimumReleaseAgeExclude`))\n return true\n}\n\nexport async function packmanLint({ fix, verbose }: PackmanLintParams = {}): Promise<number> {\n const cwd = process.cwd()\n const rootConfig = await loadConfig()\n const packmanConfig = resolvePackmanConfig((rootConfig as Record<string, unknown>).commands\n ? ((rootConfig as Record<string, Record<string, unknown>>).commands.packman as PackmanConfig | undefined)\n : undefined)\n\n let failures = 0\n\n // Yarn checks\n const enableScriptsPassed = checkEnableScripts(cwd, verbose, fix)\n if (!enableScriptsPassed) {\n if (fix) {\n if (!fixEnableScripts(cwd)) failures++\n } else {\n failures++\n }\n }\n\n // pnpm checks\n const agePassed = checkMinimumReleaseAge(cwd, packmanConfig, verbose, fix)\n if (!agePassed) {\n if (fix) {\n if (!fixMinimumReleaseAge(cwd, packmanConfig)) failures++\n } else {\n failures++\n }\n }\n\n const excludePassed = checkMinimumReleaseAgeExclude(cwd, packmanConfig, verbose, fix)\n if (!excludePassed) {\n if (fix) {\n if (!fixMinimumReleaseAgeExclude(cwd, packmanConfig)) failures++\n } else {\n failures++\n }\n }\n\n if (failures > 0) {\n console.log(chalk.red(`\\npackman lint: ${failures} check(s) failed`))\n if (!fix) {\n console.log(chalk.yellow('Run with --fix to auto-fix issues'))\n }\n } else {\n console.log(chalk.green('\\npackman lint: all checks passed'))\n }\n\n return failures > 0 ? 1 : 0\n}\n","import chalk from 'chalk'\n\nimport {\n INIT_CWD,\n installOutputCapture,\n loadConfig,\n loadWorkspaceCommandConfig,\n outputStorage,\n runInstall,\n runWithConcurrency,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type {\n PublintCheckName, PublintConfig, XyConfig,\n} from './package/index.ts'\nimport { ALL_PUBLINT_CHECKS, packagePublint } from './package/index.ts'\nimport {\n checkInternalPeerVersions,\n fixInternalPeerVersions,\n} from './package-lint-deps.ts'\n\nexport interface PublintParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n jobs: number\n pack?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n exclude: Set<PublintCheckName>\n fix?: boolean\n pack?: boolean\n pkg: string\n verbose?: boolean\n}\n\nfunction resolveExclude(\n publintConfig: { exclude?: PublintCheckName[]; include?: PublintCheckName[] },\n cliExclude?: string[],\n cliInclude?: string[],\n): Set<PublintCheckName> | undefined {\n const hasExclude = (publintConfig.exclude?.length ?? 0) > 0 || (cliExclude?.length ?? 0) > 0\n const hasInclude = (publintConfig.include?.length ?? 0) > 0 || (cliInclude?.length ?? 0) > 0\n\n if (hasExclude && hasInclude) {\n console.error(chalk.red('Publint: --include and --exclude cannot be used together'))\n return undefined\n }\n\n if (hasInclude) {\n const include = new Set<PublintCheckName>([\n ...((publintConfig.include ?? [])),\n ...((cliInclude ?? []) as PublintCheckName[]),\n ])\n return new Set(ALL_PUBLINT_CHECKS.filter(c => !include.has(c)))\n }\n\n return new Set<PublintCheckName>([\n ...(publintConfig.exclude ?? []),\n ...((cliExclude ?? []) as PublintCheckName[]),\n ])\n}\n\nfunction normalizePublintConfig(value: boolean | PublintConfig | undefined): PublintConfig {\n if (typeof value === 'object') return value\n return {}\n}\n\nexport interface ResolvedPublintOptions {\n exclude: Set<PublintCheckName>\n pack: boolean\n}\n\nexport async function loadPublintOptions(): Promise<ResolvedPublintOptions> {\n const config = await loadConfig<XyConfig>()\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const publintConfig = normalizePublintConfig(config.commands?.publint ?? config.publint)\n const exclude = resolveExclude(publintConfig) ?? new Set<PublintCheckName>()\n return { exclude, pack: publintConfig.pack ?? true }\n}\n\nexport const publint = async ({\n cliExclude, cliInclude, fix, jobs, pack, verbose, pkg,\n}: PublintParams) => {\n return pkg === undefined\n ? await publintAll({\n cliExclude, cliInclude, fix, jobs, pack, verbose,\n })\n : await publintSingle({\n cliExclude, cliInclude, fix, pack, pkg, verbose,\n })\n}\n\nfunction logPublintSummary(packages: number, errors: number, ms: number): void {\n const color = errors > 0 ? chalk.red : chalk.blue\n console.log(color(`Checked ${packages} package(s) in ${ms.toFixed(0)}ms with ${errors} issue(s) found.`))\n}\n\ninterface PublintSingleParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n pack?: boolean\n pkg: string\n verbose?: boolean\n}\n\nexport const publintSingle = async ({\n cliExclude, cliInclude, fix, pack, pkg, verbose,\n}: PublintSingleParams) => {\n const start = performance.now()\n const pm = getPackageManager()\n const workspace = pm.findWorkspace(pkg)\n if (!workspace) {\n console.error(chalk.red(`Publint: workspace \"${pkg}\" not found`))\n return 1\n }\n const wsPublintConfig = normalizePublintConfig(\n await loadWorkspaceCommandConfig<boolean | PublintConfig>(workspace.location, 'publint'),\n )\n const exclude = resolveExclude(wsPublintConfig, cliExclude, cliInclude)\n if (!exclude) return 1\n const shouldPack = pack ?? wsPublintConfig.pack ?? true\n\n const errors = await packagePublint({\n exclude, fix, pack: shouldPack, pkgDir: workspace.location, verbose,\n })\n logPublintSummary(1, errors, performance.now() - start)\n return errors\n}\n\ninterface PublintAllParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n jobs: number\n pack?: boolean\n verbose?: boolean\n}\n\ninterface CapturedResult {\n errors: number\n output: string[]\n}\n\nexport const publintAll = async ({\n cliExclude, cliInclude, fix, jobs, pack, verbose,\n}: PublintAllParams) => {\n const start = performance.now()\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const concurrency = jobs\n\n const results: CapturedResult[] = Array.from({ length: workspaces.length }, () => ({ errors: 0, output: [] }))\n\n installOutputCapture()\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n try {\n const wsPublintConfig = normalizePublintConfig(\n await loadWorkspaceCommandConfig<boolean | PublintConfig>(ws.location, 'publint'),\n )\n const exclude = resolveExclude(wsPublintConfig, cliExclude, cliInclude)\n ?? new Set<PublintCheckName>()\n const shouldPack = pack ?? wsPublintConfig.pack ?? true\n\n const errors = await packagePublint({\n exclude, fix, pack: shouldPack, pkgDir: ws.location, verbose,\n })\n results[i] = { errors, output }\n } catch (ex) {\n output.push(chalk.red(`Publint failed for ${ws.name}: ${(ex as Error).message}\\n`))\n results[i] = { errors: 1, output }\n }\n })\n },\n )\n\n let totalErrors = 0\n for (const { errors, output } of results) {\n for (const line of output) {\n process.stdout.write(line)\n }\n totalErrors += errors\n }\n\n // Check internal peerDependencies use semver ranges (not workspace: protocol)\n const allExclude = resolveExclude({}, cliExclude, cliInclude) ?? new Set<PublintCheckName>()\n if (!allExclude.has('peerDeps')) {\n const cwd = INIT_CWD()\n const peerResult = checkInternalPeerVersions(cwd, workspaces)\n if (peerResult.fixable.length > 0) {\n if (fix) {\n fixInternalPeerVersions(cwd, workspaces)\n runInstall()\n } else {\n for (const msg of peerResult.fixable) {\n console.log(chalk.red(` āœ— ${msg} (fixable)`))\n }\n totalErrors += peerResult.fixable.length\n }\n }\n totalErrors += peerResult.errors.length\n }\n\n logPublintSummary(workspaces.length, totalErrors, performance.now() - start)\n return totalErrors\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { syncInternalPeerVersions } from './package-lint-deps.ts'\n\nexport const publish = () => {\n syncInternalPeerVersions()\n const pm = getPackageManager()\n return runSteps('Publish', [pm.publish()])\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const test = () => {\n const pm = getPackageManager()\n return runSteps('Test', [[pm.command, 'react-scripts test']])\n}\n","import { generateReadmeFiles, loadConfig } from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeGenParams {\n jobs: number\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nexport async function readmeGen({\n jobs, pkg, templatePath, typedoc, verbose,\n}: ReadmeGenParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n return await generateReadmeFiles({\n jobs,\n logoLinkUrl: config.readme?.logoLinkUrl,\n logoUrl: config.readme?.logoUrl,\n pkg,\n templatePath,\n typedoc,\n verbose,\n })\n}\n","import {\n applyLogoConfig, DEFAULT_README_TEMPLATE, loadConfig, resolveTemplatePath, scaffoldTemplate,\n} from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeInitParams {\n templatePath?: string\n verbose?: boolean\n}\n\nexport async function readmeInit({ templatePath }: ReadmeInitParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n const template = applyLogoConfig(DEFAULT_README_TEMPLATE, config.readme?.logoUrl, config.readme?.logoLinkUrl)\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n await scaffoldTemplate(resolvedTemplatePath, template)\n return 0\n}\n","import { existsSync, readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD, resolveTemplatePath } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\ninterface ReadmeLintResult {\n errors: string[]\n warnings: string[]\n}\n\nfunction lintTemplate(cwd: string): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const templatePath = resolveTemplatePath()\n\n if (!existsSync(templatePath)) {\n result.errors.push('Missing .xy/README.template.md (run \"xy readme init\" to create)')\n return result\n }\n\n const template = readFileSync(templatePath, 'utf8')\n\n if (!template.includes('{{body}}')) {\n result.warnings.push('.xy/README.template.md does not contain a {{body}} placeholder')\n }\n if (!template.includes('{{description}}')) {\n result.warnings.push('.xy/README.template.md does not contain a {{description}} placeholder')\n }\n\n const bodyPath = PATH.join(cwd, '.xy', 'README.body.md')\n if (!existsSync(bodyPath)) {\n result.errors.push('Missing .xy/README.body.md (run \"xy readme init\" to create)')\n }\n\n return result\n}\n\nfunction lintLogoConfig(cwd: string, config: XyConfig): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const templatePath = resolveTemplatePath()\n\n if (existsSync(templatePath)) {\n const template = readFileSync(templatePath, 'utf8')\n const logoRef = /\\[logo]: (.+)/.exec(template)\n if (logoRef?.[1].includes('example.com')) {\n result.warnings.push('.xy/README.template.md still has the example.com logo placeholder — update it or set readme.logoUrl in xy.config.ts')\n } else if (!logoRef && !config.readme?.logoUrl) {\n result.warnings.push('No logo URL configured in xy.config.ts (readme.logoUrl) or template')\n }\n }\n\n if (!config.readme?.logoUrl && !config.readme?.logoLinkUrl) {\n result.warnings.push('No readme.logoUrl or readme.logoLinkUrl configured in xy.config.ts')\n }\n\n return result\n}\n\nfunction lintPackages(cwd: string): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n\n const pkgPath = PATH.join(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n if (pkg.private) continue\n\n if (!pkg.description) {\n result.warnings.push(`${name} is missing a \"description\" in package.json`)\n }\n\n const readmePath = PATH.join(cwd, location, 'README.md')\n if (!existsSync(readmePath)) {\n result.errors.push(`${name} is missing README.md`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nexport interface ReadmeLintParams {\n config: XyConfig\n verbose?: boolean\n}\n\nexport function readmeLint({ config, verbose }: ReadmeLintParams): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Readme Lint'))\n\n const checks = [\n lintTemplate(cwd),\n lintLogoConfig(cwd, config),\n lintPackages(cwd),\n ]\n\n let errorCount = 0\n let warningCount = 0\n\n for (const { errors, warnings } of checks) {\n for (const error of errors) {\n console.log(chalk.red(` āœ— ${error}`))\n errorCount++\n }\n for (const warning of warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n warningCount++\n }\n }\n\n if (errorCount === 0 && warningCount === 0) {\n console.log(chalk.green(' All checks passed'))\n } else {\n if (verbose) {\n console.log(chalk.gray(` ${errorCount} error(s), ${warningCount} warning(s)`))\n }\n }\n\n return errorCount > 0 ? 1 : 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RebuildParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nexport const rebuild = ({ target }: RebuildParams) => {\n const pm = getPackageManager()\n return runSteps('Rebuild', [\n pm.runXy(['clean']),\n pm.runXy(target ? ['build', '-t', target] : ['build']),\n ])\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RecompileParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport interface RecompilePackageParams {\n pkg: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const recompile = async ({\n incremental, jobs, pkg, target, verbose,\n}: RecompileParams) => {\n return pkg\n ? await recompilePackage({ pkg, target })\n : await recompileAll({\n incremental, jobs, target, verbose,\n })\n}\n\nexport const recompilePackage = ({ target, pkg }: RecompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runStepsAsync(\n `Recompile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-recompile', targetOptions)],\n )\n}\n\nexport const recompileAll = async ({\n jobs, verbose, target, incremental,\n}: RecompileParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n const foreachOptions = {\n incremental, jobs, topological: true, verbose,\n }\n\n return runStepsAsync(`Recompile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-clean', targetOptions, foreachOptions),\n pm.foreachWorkspace('package-compile', targetOptions, foreachOptions),\n ])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { packmanClean } from './packman/index.ts'\n\nexport const reinstall = (verbose?: boolean): number => {\n const cleanResult = packmanClean({ verbose })\n if (cleanResult !== 0) return cleanResult\n\n const pm = getPackageManager()\n return runSteps('Reinstall', [pm.install()])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { lintNext } from './lintNext.ts'\n\nexport interface RelintParams {\n cache?: boolean\n fix?: boolean\n incremental?: boolean\n jobs: number\n next?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface RelintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const relintPackage = ({\n pkg, fix, verbose,\n}: { fix?: boolean; pkg: string; verbose?: boolean }) => {\n const pm = getPackageManager()\n return runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n}\n\nexport const relint = ({\n fix, jobs, next, pkg, verbose,\n}: RelintParams): number | Promise<number> => {\n if (next) {\n return lintNext({\n cache: false, fix, jobs, pkg, verbose,\n })\n }\n return pkg === undefined\n ? relintAllPackages({ fix })\n : relintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const relintAllPackages = ({ fix = false }: { fix?: boolean } = {}) => {\n const fixOptions = fix ? ['--fix'] : []\n return runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', fixOptions],\n ])\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { fillTemplate, loadRepoTemplateFiles } from '../lib/index.ts'\n\nexport interface RepoInitParams {\n description: string\n githubOrg?: string\n name?: string\n packageName?: string\n pm: 'pnpm' | 'yarn'\n scope: string\n skipGit?: boolean\n skipInstall?: boolean\n template: string\n verbose?: boolean\n}\n\nfunction askQuestion(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.trim())\n })\n })\n}\n\nfunction getConfigVersion(): string {\n const require = createRequire(import.meta.url)\n const pkgPath = require.resolve('@xylabs/ts-scripts-common/package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, string>\n return pkg.version.replace(/\\.\\d+$/, '')\n}\n\nfunction mapOutputPath(relativePath: string, variables: Record<string, string>): string | undefined {\n let result = relativePath\n\n // Strip .tmpl suffix\n if (result.endsWith('.tmpl')) {\n result = result.slice(0, -5)\n }\n\n // Map gitignore -> .gitignore\n if (result === 'gitignore') {\n result = '.gitignore'\n }\n\n // Map github/ -> .github/\n if (result.startsWith('github/')) {\n result = `.${result}`\n }\n\n // Replace __packageName__ in paths\n result = result.replaceAll('__packageName__', variables.packageName)\n\n return result\n}\n\nfunction isPmSpecificFile(relativePath: string, pm: string): boolean {\n // Skip pnpm-workspace.yaml for yarn\n if (relativePath === 'pnpm-workspace.yaml' && pm === 'yarn') return true\n\n // PM-specific build files: build-pnpm.yml.tmpl vs build-yarn.yml.tmpl\n if (relativePath.includes('build-pnpm') && pm !== 'pnpm') return true\n if (relativePath.includes('build-yarn') && pm !== 'yarn') return true\n\n return false\n}\n\nfunction mapBuildWorkflowName(outputPath: string): string {\n // build-pnpm.yml -> build.yml, build-yarn.yml -> build.yml\n return outputPath.replace(/build-(pnpm|yarn)\\.yml/, 'build.yml')\n}\n\nfunction buildVariables(params: {\n description: string\n githubOrg: string\n packageName: string\n pm: 'pnpm' | 'yarn'\n projectName: string\n scope: string\n}): Record<string, string> {\n const {\n description, githubOrg, packageName, pm, projectName, scope,\n } = params\n const identifierName = packageName.replaceAll(/-([a-z])/g, (_, c: string) => c.toUpperCase())\n const pmPackage = pm === 'pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n return {\n configVersion: getConfigVersion(),\n description,\n githubOrg,\n identifierName,\n npmScope: scope,\n packageName,\n pmName: pm,\n pmPackage,\n projectName,\n }\n}\n\nfunction ensureEmptyDir(projectDir: string, name: string): boolean {\n if (existsSync(projectDir)) {\n const entries = readdirSync(projectDir)\n if (entries.length > 0) {\n console.error(chalk.red(`Directory '${name}' already exists and is not empty`))\n return false\n }\n }\n mkdirSync(projectDir, { recursive: true })\n return true\n}\n\nfunction scaffoldFiles(\n templateName: string,\n layer: 'package' | 'root',\n outputDir: string,\n pm: string,\n variables: Record<string, string>,\n verbose?: boolean,\n): number {\n const files = loadRepoTemplateFiles(templateName, layer)\n let count = 0\n for (const file of files) {\n if (isPmSpecificFile(file.relativePath, pm)) continue\n const content = fillTemplate(file.content, variables)\n let outputPath = mapOutputPath(file.relativePath, variables)\n if (!outputPath) continue\n if (layer === 'root') outputPath = mapBuildWorkflowName(outputPath)\n\n const fullPath = PATH.resolve(outputDir, outputPath)\n mkdirSync(PATH.dirname(fullPath), { recursive: true })\n writeFileSync(fullPath, content)\n count++\n if (verbose) console.log(chalk.gray(` ${layer === 'root' ? outputPath : `packages/${variables.packageName}/${outputPath}`}`))\n }\n return count\n}\n\nfunction initGitRepo(projectDir: string, verbose?: boolean): void {\n if (verbose) console.log(chalk.gray('Initializing git repository...'))\n const result = spawnSync('git', ['init', '-b', 'main'], {\n cwd: projectDir,\n stdio: verbose ? 'inherit' : 'pipe',\n })\n if (result.status === 0) {\n console.log(chalk.green('Initialized git repository'))\n } else {\n console.warn(chalk.yellow('git init failed, skipping'))\n }\n}\n\nfunction installDependencies(projectDir: string, pm: string): boolean {\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd: projectDir,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n\nexport async function repoInit(params: RepoInitParams): Promise<number> {\n const {\n description, pm, scope, skipGit, skipInstall, template, verbose,\n } = params\n\n let name = params.name\n if (!name) {\n name = await askQuestion(chalk.cyan('Project name: '))\n if (!name) {\n console.error(chalk.red('Project name is required'))\n return 1\n }\n }\n\n const projectName = PATH.basename(name)\n const packageName = params.packageName ?? projectName\n const githubOrg = params.githubOrg ?? scope.replace(/^@/, '')\n\n const variables = buildVariables({\n description, githubOrg, packageName, pm, projectName, scope,\n })\n\n if (verbose) {\n console.log(chalk.gray('Template variables:'))\n for (const [key, value] of Object.entries(variables)) {\n console.log(chalk.gray(` ${key}: ${value}`))\n }\n }\n\n const projectDir = PATH.resolve(process.cwd(), name)\n if (!ensureEmptyDir(projectDir, name)) return 1\n\n const rootCount = scaffoldFiles(template, 'root', projectDir, pm, variables, verbose)\n const pkgDir = PATH.resolve(projectDir, 'packages', packageName)\n const pkgCount = scaffoldFiles(template, 'package', pkgDir, pm, variables, verbose)\n console.log(chalk.green(`Scaffolded ${rootCount + pkgCount} files into ${name}/`))\n\n if (!skipGit) initGitRepo(projectDir, verbose)\n if (!skipInstall && !installDependencies(projectDir, pm)) return 1\n\n console.log('')\n console.log(chalk.cyan(`Project ${name} created successfully!`))\n console.log('')\n console.log(chalk.gray('Next steps:'))\n console.log(chalk.gray(` cd ${name}`))\n if (skipInstall) console.log(chalk.gray(` ${pm} install`))\n console.log(chalk.gray(` ${pm} xy build`))\n\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RetestParams {\n target?: string\n}\n\nexport const retest = ({ target }: RetestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Re-Test [${target}]`, [\n pm.runInWorkspace(target, 'vitest', ['--clearCache']),\n pm.runInWorkspace(target, 'vitest', ['.']),\n ])\n }\n const path = target ?? '.'\n return runSteps('Re-Test', [\n ['vitest', ['--clearCache']],\n ['vitest', [path]],\n ])\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\n\nexport const sitemap = () => {\n return runSteps('Sitemap', [['ts-node-script', './scripts/sitemap.ts']])\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['eslint', ['-c', 'sonar.eslintrc', '.']]])\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const start = () => {\n const pm = getPackageManager()\n return runSteps('Start', [[pm.command, 'react-scripts start']])\n}\n","import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nconst DefaultDependencies = ['axios', '@xylabs/pixel', 'react', 'graphql', 'react-router', '@mui/material', '@mui/system']\n\nexport const statics = () => {\n console.log(chalk.green('Check Required Static Dependencies'))\n\n const pkg = parsedPackageJSON()\n const xy = pkg?.xy as Record<string, unknown> | undefined\n const deps = xy?.deps as Record<string, unknown> | undefined\n const staticsValue = deps?.statics as string[] | undefined\n\n return detectDuplicateDependencies(staticsValue, DefaultDependencies)\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface TestParams {\n target?: string\n}\n\nexport const test = ({ target }: TestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, 'vitest', ['.'])])\n }\n const path = target ?? '.'\n return runSteps('Test', [['vitest', [path]]])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const up = () => {\n const pm = getPackageManager()\n return runSteps('Up', [pm.outdated()])\n}\n","import { runUpdo } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const updo = async ({ latest = true }: { latest?: boolean } = {}): Promise<number> => {\n const pm = getPackageManager()\n return await runUpdo(pm, { latest })\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const updateYarnPlugins = () => {\n return runSteps('Update Yarn Plugins', [\n ['yarn', ['plugin', 'import', 'https://mskelton.dev/yarn-outdated/v3']],\n ['yarn', ['plugin', 'import', 'version']],\n ['yarn', ['plugin', 'import', 'interactive-tools']],\n ['yarn', ['plugin', 'import', 'workspace-tools']],\n ])\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const updateYarnVersion = () => {\n return runSteps('Update Yarn Version', [['yarn', ['set', 'version', 'latest']]])\n}\n","import { isYarnVersionOrGreater, processEx } from '../lib/index.ts'\n\nexport const yarn3Only = () => {\n const [valid, version] = isYarnVersionOrGreater(3)\n if (!valid) {\n processEx(`Invalid Yarn version [${version}]`)\n }\n return 0\n}\n","import { readFile } from 'node:fs/promises'\n\nimport type { PackageJson } from 'types-package-json'\n\nimport { INIT_CWD } from './lib/index.ts'\n\nexport type PackageJsonEx = PackageJson & { type: 'module' | 'commonjs' }\n\nexport const loadPackageConfig = async () => {\n const pkg = INIT_CWD()\n\n const pkgConfig = await readFile(`${pkg}/package.json`, { encoding: 'utf8' })\n\n return JSON.parse(pkgConfig) as PackageJsonEx\n}\n","import type { CommandModule } from 'yargs'\n\nimport { build } from '../../actions/index.ts'\n\nexport const buildCommand: CommandModule = {\n command: 'build [package]',\n describe: 'Build - Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to build' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Building: ${argv.package ?? 'all'}`)\n }\n\n process.exitCode = await build({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileCommand: CommandModule = {\n command: 'compile [package]',\n describe: 'Compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileOnlyCommand: CommandModule = {\n command: 'compile-only [package]',\n describe: 'Compile with Typescript & Copy Images (No Publint)',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n publint: false,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { copyAssets } from '../../actions/index.ts'\n\nexport const copyAssetsCommand: CommandModule = {\n command: 'copy-assets [package]',\n describe: 'Copy Assets - Copy the assets from src to dist',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to copy assets' })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log(`Copying Assets: ${argv.package ?? 'all'}`)\n process.exitCode = await copyAssets({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { rebuild } from '../../actions/index.ts'\n\nexport const rebuildCommand: CommandModule = {\n command: 'rebuild [package]',\n describe: 'Rebuild - Clean, Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to rebuild' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Rebuilding: ${argv.package ?? 'all'}`)\n process.exitCode = rebuild({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { recompile } from '../../actions/index.ts'\n\nexport const recompileCommand: CommandModule = {\n command: 'recompile [package]',\n describe: 'Re-compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to re-compile' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Re-compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = await recompile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { buildCommand } from './buildCommand.ts'\nimport { compileCommand } from './compileCommand.ts'\nimport { compileOnlyCommand } from './compileOnlyCommand.ts'\nimport { copyAssetsCommand } from './copyAssetsCommand.ts'\nimport { rebuildCommand } from './rebuildCommand.ts'\nimport { recompileCommand } from './recompileCommand.ts'\n\nexport const xyBuildCommands = (args: Argv) => {\n return args\n .command(buildCommand)\n .command(compileCommand)\n .command(compileOnlyCommand)\n .command(recompileCommand)\n .command(rebuildCommand)\n .command(copyAssetsCommand)\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport type { XyConfig } from '../../actions/index.ts'\nimport {\n gitlint, gitlintFix, lintlint, packageLintMonorepo, publint, readmeLint,\n} from '../../actions/index.ts'\nimport { loadConfig } from '../../lib/index.ts'\n\nexport const checkCommand: CommandModule = {\n command: 'check',\n describe: 'Check - Run gitlint, publint, repo lint, lintlint, and readme lint',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n const verbose = !!argv.verbose\n const fix = !!argv.fix\n const jobs = argv.jobs as number\n let errors = 0\n\n if (verbose) console.log('Check')\n\n console.log(chalk.blue('\\n— gitlint —'))\n errors += fix ? gitlintFix() : gitlint()\n\n console.log(chalk.blue('\\n— publint —'))\n errors += await publint({\n fix, jobs, verbose,\n })\n\n console.log(chalk.blue('\\n— repo lint —'))\n errors += packageLintMonorepo(fix)\n\n console.log(chalk.blue('\\n— lintlint —'))\n errors += await lintlint({ fix, verbose })\n\n console.log(chalk.blue('\\n— readme lint —'))\n const config = await loadConfig<XyConfig>()\n errors += readmeLint({ config, verbose })\n\n if (errors > 0) {\n console.log(chalk.red(`${errors} issue(s) found`))\n } else {\n console.log(chalk.green('All checks passed'))\n }\n process.exitCode = errors > 0 ? 1 : 0\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCheck } from '../../../actions/index.ts'\n\nexport const checkCommand: CommandModule = {\n command: 'check',\n describe: 'Check if Claude configuration is up to date with templates',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Check')\n process.exitCode = claudeCheck()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove all Claude configuration files from the repo',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Clean')\n process.exitCode = claudeClean()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCommands } from '../../../actions/index.ts'\n\nexport const commandsCommand: CommandModule = {\n command: 'commands',\n describe: 'Sync XY Labs standard Claude slash commands to .claude/commands/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Commands')\n process.exitCode = claudeCommands()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { SettingsLevel } from '../../../actions/index.ts'\nimport {\n claudeCommands, claudeRules, claudeSettings, claudeSkills,\n} from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n .option('level', {\n choices: ['restrictive', 'permissive'] as const,\n default: 'permissive',\n description: 'Permission level for settings (restrictive omits node, python3, claude, sed, xargs, tee)',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize all Claude configuration (commands, rules, skills, settings)',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Init')\n const commandsResult = claudeCommands()\n const rulesResult = claudeRules({ force: argv.force as boolean | undefined })\n const skillsResult = claudeSkills()\n const settingsResult = await claudeSettings({ level: argv.level as SettingsLevel })\n process.exitCode = commandsResult || rulesResult || skillsResult || settingsResult\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeRules } from '../../../actions/index.ts'\n\nexport const rulesCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'rules',\n describe: 'Sync XY Labs standard Claude rules to .claude/rules/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Rules')\n process.exitCode = claudeRules({ force: argv.force as boolean | undefined })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { SettingsLevel } from '../../../actions/index.ts'\nimport { claudeSettings } from '../../../actions/index.ts'\n\nexport const settingsCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('level', {\n choices: ['restrictive', 'permissive'] as const,\n default: 'permissive',\n description: 'Permission level (restrictive omits node, python3, claude, sed, xargs, tee)',\n type: 'string',\n })\n },\n command: 'settings',\n describe: 'Initialize .claude/settings.local.json with XY Labs defaults',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Settings')\n process.exitCode = await claudeSettings({ level: argv.level as SettingsLevel })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSkills } from '../../../actions/index.ts'\n\nexport const skillsCommand: CommandModule = {\n builder: yargs => yargs,\n command: 'skills',\n describe: 'Sync XY Labs standard Claude skills to .claude/skills/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Skills')\n process.exitCode = claudeSkills()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { checkCommand } from './checkCommand.ts'\nimport { cleanCommand } from './cleanCommand.ts'\nimport { commandsCommand } from './commandsCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { rulesCommand } from './rulesCommand.ts'\nimport { settingsCommand } from './settingsCommand.ts'\nimport { skillsCommand } from './skillsCommand.ts'\n\nexport const claudeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(checkCommand)\n .command(cleanCommand)\n .command(commandsCommand)\n .command(initCommand)\n .command(rulesCommand)\n .command(settingsCommand)\n .command(skillsCommand)\n .demandCommand(1, 'Please specify a claude subcommand')\n .strictCommands()\n },\n command: 'claude',\n describe: 'Claude - Claude Code configuration utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanDocs } from '../../actions/index.ts'\n\nexport const cleanDocsCommand: CommandModule = {\n command: 'clean-docs',\n describe: 'CleanDocs - Clean TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log('Cleaning TypeDocs: all')\n process.exitCode = cleanDocs()\n },\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target', type: 'string' })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dead } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deadCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'dead [package]',\n describe: 'Dead - Check for dead code',\n handler: (argv) => {\n if (argv.verbose) console.log('Dead')\n process.exitCode = dead()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genDocs } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const genDocsCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'gen-docs [package]',\n describe: 'GenDocs - Generate TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log(`Generating TypeDocs: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = genDocs({\n incremental: !!argv.incremental, jobs: argv.jobs as number, pkg: argv.package as string,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitignore } from '../../actions/index.ts'\n\nexport const gitignoreCommand: CommandModule = {\n command: 'gitignore',\n describe: 'GitIgnore - Generate root .gitignore and remove package .gitignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('GitIgnore')\n process.exitCode = gitignore()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitlint, gitlintFix } from '../../actions/index.ts'\n\nexport const gitlintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix git config issues',\n type: 'boolean',\n })\n },\n command: 'gitlint',\n describe: 'Gitlint - Lint your git config',\n handler: (argv) => {\n if (argv.verbose) console.log('Gitlint')\n process.exitCode = argv.fix ? gitlintFix() : gitlint()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { license } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const licenseCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'license [package]',\n describe: 'License - Check licenses of dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log(`License: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = await license()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { npmignoreGen } from '../../actions/index.ts'\n\nexport const npmignoreGenCommand: CommandModule = {\n command: 'npmignore-gen',\n describe: 'NpmIgnore Gen - Generate .npmignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('NpmIgnore Gen')\n process.exitCode = npmignoreGen()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan Clean')\n process.exitCode = orphanClean({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanList } from '../../../actions/index.ts'\n\nexport const listCommand: CommandModule = {\n command: 'list',\n describe: 'List orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan List')\n process.exitCode = orphanList({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { listCommand } from './listCommand.ts'\n\nexport const orphanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(listCommand)\n .command(cleanCommand)\n .demandCommand(1, 'Please specify an orphan subcommand')\n .strictCommands()\n },\n command: 'orphan',\n describe: 'Orphan - Detect and clean orphaned build artifacts',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport {\n convert, packmanClean, packmanLint,\n} from '../../actions/index.ts'\n\nconst convertCommand: CommandModule = {\n command: 'convert <target>',\n describe: 'Convert repo to a different package manager (pnpm or yarn)',\n builder: (yargs) => {\n return yargs.positional('target', {\n choices: ['pnpm', 'yarn'] as const,\n describe: 'Target package manager',\n type: 'string',\n })\n },\n handler: (argv) => {\n process.exitCode = convert({\n target: argv.target as string,\n verbose: !!argv.verbose,\n })\n },\n}\n\nconst cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove node_modules and lock files for a clean install',\n handler: (argv) => {\n process.exitCode = packmanClean({ verbose: !!argv.verbose })\n },\n}\n\nconst lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check package manager configuration settings',\n builder: (yargs) => {\n return yargs.option('fix', {\n alias: 'f',\n default: false,\n description: 'Auto-fix configuration issues',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n process.exitCode = await packmanLint({\n fix: !!argv.fix,\n verbose: !!argv.verbose,\n })\n },\n}\n\nexport const packmanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(cleanCommand)\n .command(convertCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a packman subcommand')\n .strictCommands()\n },\n command: 'packman',\n describe: 'Package Manager - Configuration and conversion utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeGen } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const genCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n .option('notypedoc', {\n default: false,\n description: 'Disable TypeDoc reference sections',\n type: 'boolean',\n })\n },\n aliases: ['$0'],\n command: 'gen [package]',\n describe: 'Generate README.md files from template',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Gen')\n process.exitCode = await readmeGen({\n jobs: argv.jobs as number,\n pkg: argv.package as string | undefined,\n templatePath: argv.template as string | undefined,\n typedoc: !argv.notypedoc,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize README template and logo files',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Init')\n process.exitCode = await readmeInit({\n templatePath: argv.template as string | undefined,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { XyConfig } from '../../../actions/index.ts'\nimport { readmeLint } from '../../../actions/index.ts'\nimport { loadConfig } from '../../../lib/index.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check for missing readme templates, body files, logos, and descriptions',\n handler: async (argv) => {\n const config = await loadConfig<XyConfig>()\n process.exitCode = readmeLint({ config, verbose: !!argv.verbose })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genCommand } from './genCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\n\nexport const readmeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(genCommand)\n .command(initCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a readme subcommand')\n .strictCommands()\n },\n command: 'readme',\n describe: 'Readme - README file utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { repoInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n command: 'init <template> [name]',\n describe: 'Scaffold a new monorepo from a template',\n builder: (yargs) => {\n return yargs\n .positional('template', {\n choices: ['cli'] as const,\n describe: 'Template to use',\n type: 'string',\n })\n .positional('name', {\n describe: 'Project name (also used as directory name)',\n type: 'string',\n })\n .option('scope', {\n default: '@xylabs',\n describe: 'npm scope for packages',\n type: 'string',\n })\n .option('package', {\n describe: 'Package name within the monorepo (defaults to project name)',\n type: 'string',\n })\n .option('description', {\n default: '',\n describe: 'Project description',\n type: 'string',\n })\n .option('github-org', {\n describe: 'GitHub organization (derived from scope if not set)',\n type: 'string',\n })\n .option('pm', {\n choices: ['pnpm', 'yarn'] as const,\n default: 'pnpm',\n describe: 'Package manager to configure',\n type: 'string',\n })\n .option('skip-install', {\n default: false,\n describe: 'Skip dependency installation after scaffolding',\n type: 'boolean',\n })\n .option('skip-git', {\n default: false,\n describe: 'Skip git init after scaffolding',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Repo Init')\n process.exitCode = await repoInit({\n description: argv.description as string,\n githubOrg: argv['github-org'] as string | undefined,\n name: argv.name as string | undefined,\n packageName: argv.package as string | undefined,\n pm: argv.pm as 'pnpm' | 'yarn',\n scope: argv.scope as string,\n skipGit: !!argv.skipGit,\n skipInstall: !!argv.skipInstall,\n template: argv.template as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { packageLintMonorepo } from '../../../actions/index.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check monorepo package structure',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Repo Lint')\n process.exitCode = packageLintMonorepo(!!argv.fix)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { initCommand } from './initCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\n\nexport const repoCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(initCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a repo subcommand')\n .strictCommands()\n },\n command: 'repo',\n describe: 'Repo - Repository structure utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { retest } from '../../actions/index.ts'\n\nexport const retestCommand: CommandModule = {\n command: 'retest [target]',\n describe: 'Re-Test - Run Vitest Tests with cleaned cache',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Re-Testing: ${(argv.target as string | undefined) ?? 'all'}`)\n process.exitCode = retest({ target: argv.target as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { test } from '../../actions/index.ts'\n\nexport const testCommand: CommandModule = {\n command: 'test [target]',\n describe: 'Test - Run Vitest Tests',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Testing: ${(argv.target as string | undefined) ?? 'all'}`)\n process.exitCode = test({ target: argv.target as string })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { checkCommand } from './checkCommand.ts'\nimport { claudeCommand } from './claude/index.ts'\nimport { cleanDocsCommand } from './cleanDocsCommand.ts'\nimport { deadCommand } from './deadCommand.ts'\nimport { genDocsCommand } from './genDocsCommand.ts'\nimport { gitignoreCommand } from './gitignoreCommand.ts'\nimport { gitlintCommand } from './gitlintCommand.ts'\nimport { licenseCommand } from './licenseCommand.ts'\nimport { npmignoreGenCommand } from './npmignoreGenCommand.ts'\nimport { orphanCommand } from './orphan/index.ts'\nimport { packmanCommand } from './packmanCommand.ts'\nimport { readmeCommand } from './readme/index.ts'\nimport { repoCommand } from './repo/index.ts'\nimport { retestCommand } from './retestCommand.ts'\nimport { testCommand } from './testCommand.ts'\n\nexport const xyCommonCommands = (args: Argv) => {\n return args\n .command(checkCommand)\n .command(claudeCommand)\n .command(licenseCommand)\n .command(deadCommand)\n .command(genDocsCommand)\n .command(cleanDocsCommand)\n .command(gitlintCommand)\n .command(gitignoreCommand)\n .command(npmignoreGenCommand)\n .command(orphanCommand)\n .command(packmanCommand)\n .command(readmeCommand)\n .command(repoCommand)\n .command(retestCommand)\n .command(testCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { DeployLevel } from '../../actions/index.ts'\nimport { deploy } from '../../actions/index.ts'\n\nconst VALID_LEVELS: DeployLevel[] = ['patch', 'minor', 'major', 'prerelease']\n\nexport const deployCommand: CommandModule = {\n command: 'deploy [level]',\n describe: 'Deploy - Version bump, build, and apply (default: patch)',\n builder: (yargs) => {\n return yargs.positional('level', {\n choices: VALID_LEVELS,\n default: 'patch',\n describe: 'Semver bump level',\n type: 'string',\n })\n },\n handler: (argv) => {\n const level = (argv.level as DeployLevel) ?? 'patch'\n if (argv.verbose) console.log(`Deploy ${level}`)\n process.exitCode = deploy(level)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { publish } from '../../actions/index.ts'\n\nexport const publishCommand: CommandModule = {\n command: 'publish',\n describe: 'Publish - Publish packages to npmjs',\n handler: (argv) => {\n if (argv.verbose) console.log('Publish packages to npmjs')\n process.exitCode = publish()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { deployCommand } from './deployCommand.ts'\nimport { publishCommand } from './publishCommand.ts'\n\nexport const xyDeployCommands = (args: Argv) => {\n return args\n .command(deployCommand)\n .command(publishCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { clean } from '../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean [package]',\n describe: 'Clean',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to clean' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Cleaning: ${(argv.package as string | undefined) ?? 'all'}`)\n }\n process.exitCode = await clean({\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dupdeps } from '../../actions/index.ts'\n\nexport const dupdepsCommand: CommandModule = {\n command: 'dupdeps',\n describe: 'Dupdeps - Duplicate Dependencies in package.json',\n handler: (argv) => {\n if (argv.verbose) console.log('Dupdeps')\n process.exitCode = dupdeps()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { reinstall } from '../../actions/index.ts'\n\nexport const reinstallCommand: CommandModule = {\n command: 'reinstall',\n describe: 'Reinstall - Clean & Install',\n handler: (argv) => {\n process.exitCode = reinstall(!!argv.verbose)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { statics } from '../../actions/index.ts'\n\nexport const staticsCommand: CommandModule = {\n command: 'statics',\n describe: 'Statics - Confirming Static Packages',\n handler: (argv) => {\n if (argv.verbose) console.log('Statics')\n process.exitCode = statics()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { up } from '../../actions/index.ts'\n\nexport const upCommand: CommandModule = {\n command: 'up',\n describe: 'Up - Update dependencies',\n handler: (argv) => {\n if (argv.verbose) console.log('Up')\n process.exitCode = up()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { updo } from '../../actions/index.ts'\n\nexport const updoCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('latest', {\n default: true,\n description: 'Ignore version ranges and update to latest versions',\n type: 'boolean',\n })\n },\n command: 'updo',\n describe: 'Updo - Update dependencies [Interactive]',\n handler: async (argv) => {\n if (argv.verbose) console.log('Updo')\n process.exitCode = await updo({ latest: argv.latest as boolean })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { dupdepsCommand } from './dupdepsCommand.ts'\nimport { reinstallCommand } from './reinstallCommand.ts'\nimport { staticsCommand } from './staticsCommand.ts'\nimport { upCommand } from './upCommand.ts'\nimport { updoCommand } from './updoCommand.ts'\n\nexport const xyInstallCommands = (args: Argv) => {\n return args\n .command(cleanCommand)\n .command(reinstallCommand)\n .command(upCommand)\n .command(updoCommand)\n .command(staticsCommand)\n .command(dupdepsCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cycle } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const cycleCommand: CommandModule = {\n command: 'cycle [package]',\n describe: 'Cycle - Check for dependency cycles',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Cycle')\n process.exitCode = await cycle({ jobs: argv.jobs as number, pkg: argv.package as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { deplint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deplintCommand: CommandModule = {\n command: 'deplint [package]',\n describe: 'Deplint - Run Deplint',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('deps', {\n alias: 'd',\n default: false,\n description: 'Check dependencies',\n type: 'boolean',\n })\n .option('devDeps', {\n alias: 'v',\n default: false,\n description: 'Check devDependencies',\n type: 'boolean',\n })\n .option('peerDeps', {\n alias: 'p',\n default: true,\n description: 'Check peerDependencies',\n type: 'boolean',\n })\n .option('exclude', {\n alias: 'e',\n description: 'Package names to exclude from unused checks (comma-separated or repeated)',\n type: 'array',\n })\n .option('fix', {\n alias: 'f',\n default: false,\n description: 'Fix unsatisfied peer dependencies by adding them to package.json',\n type: 'boolean',\n })\n .option('format', {\n choices: ['human', 'json'],\n default: 'human',\n description: 'Output format',\n type: 'string',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Deplint')\n // Flatten comma-separated values so both --exclude a,b and --exclude a --exclude b work\n const cliExclude = (argv.exclude as string[] | undefined)\n ?.flatMap(v => String(v).split(','))\n .map(v => v.trim())\n .filter(Boolean)\n process.exitCode = await deplint({\n cliExclude, pkg: argv.package as string, deps: !!argv.deps, devDeps: !!argv.devDeps, fix: !!argv.fix, format: argv.format as 'human' | 'json', peerDeps: !!argv.peerDeps, verbose: !!argv.verbose,\n })\n },\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport { fix } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const fixCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('cache', {\n alias: 'c',\n default: false,\n description: 'Use caching for performance',\n type: 'boolean',\n })\n .option('next', {\n alias: 'n',\n default: false,\n description: 'Fix per-package (lower memory, parallel)',\n type: 'boolean',\n })\n },\n command: 'fix [package]',\n deprecated: 'Use \"xy lint --fix\" instead',\n describe: 'Fix - Run Eslint w/fix',\n handler: async (argv) => {\n console.warn(chalk.yellow('Deprecated: use \"xy lint --fix\" instead of \"xy fix\"'))\n if (argv.verbose) console.log('Fix')\n process.exitCode = await fix({\n cache: argv.cache as boolean,\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport { knip } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const knipCommand: CommandModule = {\n command: 'knip',\n describe: 'Knip - Run Knip',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Knip')\n const start = Date.now()\n process.exitCode = knip()\n console.log(chalk.blue(`Knip finished in ${Date.now() - start}ms`))\n },\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport { lintInit } from '../../../actions/index.ts'\nimport { initCommand } from './initCommand.ts'\nimport { runCommand } from './runCommand.ts'\n\nexport const lintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(runCommand)\n .command(initCommand)\n .option('init', {\n default: false,\n description: 'Generate eslint.config.ts and add ESLint dependencies',\n hidden: true,\n type: 'boolean',\n })\n },\n command: 'lint',\n describe: 'Lint - Run ESLint',\n handler: async (argv) => {\n if (argv.init) {\n console.warn(chalk.yellow('Deprecated: use \"xy lint init\" instead of \"xy lint --init\"'))\n process.exitCode = await lintInit({ verbose: !!argv.verbose })\n }\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { lintInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n command: 'init',\n describe: 'Generate eslint.config.ts and add ESLint dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log('Lint Init')\n process.exitCode = await lintInit({ verbose: !!argv.verbose })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { fix, lint } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const runCommand: CommandModule = {\n aliases: ['$0'],\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('fix', {\n alias: 'f',\n default: false,\n description: 'Fix fixable issues',\n type: 'boolean',\n })\n .option('cache', {\n alias: 'c',\n default: false,\n description: 'Use caching for performance',\n type: 'boolean',\n })\n .option('next', {\n alias: 'n',\n default: false,\n description: 'Lint per-package (lower memory, parallel)',\n type: 'boolean',\n })\n },\n command: 'run [package]',\n describe: 'Run ESLint',\n handler: async (argv) => {\n if (argv.verbose) console.log('Lint')\n process.exitCode\n = argv.fix\n ? await fix({\n cache: argv.cache as boolean,\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n : await lint({\n cache: argv.cache as boolean,\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { lintlint } from '../../actions/index.ts'\n\nexport const lintlintCommand: CommandModule = {\n command: 'lintlint',\n describe: 'Lint Lint - Check for redundant or overridden ESLint rules vs shared config',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Remove redundant rules from local config',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Lint Lint')\n process.exitCode = await lintlint({\n fix: argv.fix as boolean,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { publint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const publintCommand: CommandModule = {\n command: 'publint [package]',\n describe: 'Publint - Run Publint',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('fix', {\n describe: 'Auto-fix issues (e.g. remove \"src\" from files, \"source\" from exports, root-level \"source\"/\"src\" fields)',\n type: 'boolean',\n default: false,\n })\n .option('exclude', {\n alias: 'e',\n description: 'Checks to skip (comma-separated): publint, files, source, rootSource, main, types, module, sideEffects, resolutions, peerDeps',\n type: 'string',\n })\n .option('include', {\n description: 'Only run these checks (comma-separated): publint, files, source, rootSource, main, types, module, sideEffects, resolutions, peerDeps',\n type: 'string',\n })\n .option('pack', {\n description: 'Run pack before publint to verify published files (default: true)',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Publint')\n const parseList = (raw: string | undefined) => raw\n ?.split(',')\n .map(v => v.trim())\n .filter(Boolean)\n process.exitCode = await publint({\n cliExclude: parseList(argv.exclude as string | undefined),\n cliInclude: parseList(argv.include as string | undefined),\n fix: !!argv.fix,\n jobs: argv.jobs as number,\n pack: argv.pack as boolean | undefined,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { relint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const relintCommand: CommandModule = {\n command: 'relint [package]',\n describe: 'Relint - Clean & Lint',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('next', {\n alias: 'n',\n default: false,\n description: 'Relint per-package (lower memory, parallel)',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Relinting')\n process.exitCode = await relint({\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { sonar } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const sonarCommand: CommandModule = {\n command: 'sonar',\n describe: 'Sonar - Run Sonar Check',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Sonar Check')\n process.exitCode = sonar()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { cycleCommand } from './cycleCommand.ts'\nimport { deplintCommand } from './deplintCommand.ts'\nimport { fixCommand } from './fixCommand.ts'\nimport { knipCommand } from './knipCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\nimport { lintlintCommand } from './lintlintCommand.ts'\nimport { publintCommand } from './publintCommand.ts'\nimport { relintCommand } from './relintCommand.ts'\nimport { sonarCommand } from './sonarCommand.ts'\n\nexport const xyLintCommands = (args: Argv) => {\n return args\n .command(cycleCommand)\n .command(lintCommand)\n .command(lintlintCommand)\n .command(deplintCommand)\n .command(fixCommand)\n .command(relintCommand)\n .command(publintCommand)\n .command(knipCommand)\n .command(sonarCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { analyze } from '../../actions/index.ts'\n\nexport const analyzeCommand: CommandModule = {\n command: 'analyze',\n describe: 'Analyze - Analyze Bundles',\n handler: (argv) => {\n if (argv.verbose) console.log('Analyzing')\n process.exitCode = analyze()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { eject } from '../../actions/index.ts'\n\nexport const ejectCommand: CommandModule = {\n command: 'eject',\n describe: 'Eject - Eject React project',\n handler: (argv) => {\n if (argv.verbose) console.log('Ejecting')\n process.exitCode = eject()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { sitemap } from '../../actions/index.ts'\n\nexport const sitemapCommand: CommandModule = {\n command: 'sitemap',\n describe: 'Sitemap - Generate sitemap for the project',\n handler: (argv) => {\n if (argv.verbose) console.log('Generating Sitemap')\n process.exitCode = sitemap()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { start } from '../../actions/index.ts'\n\nexport const startCommand: CommandModule = {\n command: 'start',\n describe: 'Start - Start project in browser',\n handler: (argv) => {\n if (argv.verbose) console.log('Starting')\n process.exitCode = start()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { analyzeCommand } from './analyzeCommand.ts'\nimport { ejectCommand } from './ejectCommand.ts'\nimport { sitemapCommand } from './sitemapCommand.ts'\nimport { startCommand } from './startCommand.ts'\n\nexport const xyReactCommands = (args: Argv) => {\n return args\n .command(analyzeCommand)\n .command(ejectCommand)\n .command(sitemapCommand)\n .command(startCommand)\n}\n","import chalk from 'chalk'\nimport type { Argv } from 'yargs'\n\nimport {\n detectPackageManager, detectReact, PnpmPackageManager, registerPackageManager,\n YarnPackageManager,\n} from '../pm/index.ts'\nimport { xyBuildCommands } from './build/index.ts'\nimport { xyCommonCommands } from './common/index.ts'\nimport { xyDeployCommands } from './deploy/index.ts'\nimport { xyInstallCommands } from './install/index.ts'\nimport { xyLintCommands } from './lint/index.ts'\nimport { xyReactCommands } from './react/index.ts'\nimport { xyParseOptions } from './xyParseOptions.ts'\nimport { xyYarnCommands } from './yarn/index.ts'\n\n// Register both PM implementations so getPackageManager() always works\nregisterPackageManager(new YarnPackageManager())\nregisterPackageManager(new PnpmPackageManager())\n\nexport const xyBase = async (plugins?: (args: Argv) => Argv) => {\n const options = xyParseOptions()\n let args = xyBuildCommands(xyCommonCommands(xyLintCommands(options)))\n if (plugins) args = plugins(args)\n return await args\n .demandCommand(1)\n .command('*', '', () => {\n console.error(chalk.yellow(`Command not found [${chalk.magenta(process.argv[2])}]`))\n console.log(chalk.gray('Try \\'xy --help\\' for list of commands'))\n })\n .version()\n .help().argv\n}\n\nexport const xy = async () => {\n const pmName = detectPackageManager()\n\n return await xyBase((args) => {\n let result = xyInstallCommands(xyDeployCommands(args))\n\n if (pmName === 'yarn') {\n result = xyYarnCommands(result)\n }\n\n if (detectReact()) {\n result = xyReactCommands(result)\n }\n\n return result\n })\n}\n","import { availableParallelism } from 'node:os'\n\nimport chalk from 'chalk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport { tryRunLocalScript } from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`\n if (ms < 60_000) return `${(ms / 1000).toFixed(2)}s`\n const minutes = Math.floor(ms / 60_000)\n const seconds = ((ms % 60_000) / 1000).toFixed(1)\n return `${minutes}m ${seconds}s`\n}\n\nlet timerRegistered = false\n\nexport const xyParseOptions = (): Argv => {\n return yargs(hideBin(process.argv))\n .scriptName(`${detectPackageManager() === 'pnpm' ? 'pnpm' : 'yarn'} xy`)\n .middleware((argv) => {\n const commandName = argv._[0] as string\n if (commandName && argv._.length <= 1) {\n const result = tryRunLocalScript(commandName)\n if (result !== undefined) {\n process.exit(result)\n }\n }\n }, true)\n .middleware((argv) => {\n if (!timerRegistered) {\n timerRegistered = true\n const commandName = argv._[0] as string | undefined\n const jobs = argv.jobs as number\n const label = commandName ? ` [${chalk.white(commandName)}]` : ''\n console.log(\n chalk.blue('⬔ XY')\n + label\n + chalk.gray(` [threads: ${jobs}]`),\n )\n const start = Date.now()\n process.on('exit', () => {\n const exitLabel = commandName ? ` [${chalk.white(commandName)}]` : ''\n console.log(chalk.blue(`Finished${exitLabel} in ${formatDuration(Date.now() - start)}`))\n })\n }\n }, true)\n .option('jobs', {\n alias: 'j',\n default: availableParallelism(),\n description: 'Max parallel jobs',\n type: 'number',\n })\n .option('verbose', {\n alias: 'v',\n default: false,\n description: 'Run with verbose logging',\n type: 'boolean',\n })\n .option('incremental', {\n alias: 'i',\n default: false,\n description: 'Attempt to perform the action only on changed packages',\n type: 'boolean',\n })\n .option('profile', {\n alias: 'p',\n default: false,\n description: 'Profile action',\n type: 'boolean',\n })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { updateYarnPlugins } from '../../actions/index.ts'\n\nexport const upplugCommand: CommandModule = {\n command: 'upplug',\n describe: 'UpPlug - Update Yarn Plugins',\n handler: (argv) => {\n if (argv.verbose) console.log('UpPlug')\n process.exitCode = updateYarnPlugins()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { updateYarnVersion } from '../../actions/index.ts'\n\nexport const upyarnCommand: CommandModule = {\n command: 'upyarn',\n describe: 'UpYarn - Update Yarn Version',\n handler: (argv) => {\n if (argv.verbose) console.log('UpYarn')\n process.exitCode = updateYarnVersion()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { yarn3Only } from '../../actions/index.ts'\n\nexport const yarn3OnlyCommand: CommandModule = {\n command: 'yarn3only',\n describe: 'Yarn3Only - Check if using Yarn v3',\n handler: (argv) => {\n if (argv.verbose) console.log('Yarn 3 Check')\n process.exitCode = yarn3Only()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { upplugCommand } from './upplugCommand.ts'\nimport { upyarnCommand } from './upyarnCommand.ts'\nimport { yarn3OnlyCommand } from './yarn3OnlyCommand.ts'\n\nexport const xyYarnCommands = (args: Argv) => {\n return args\n .command(upplugCommand)\n .command(upyarnCommand)\n .command(yarn3OnlyCommand)\n}\n"],"mappings":"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","names":["require","readFileSync","readFileSync","readFileSync","readFileSync","PATH","cwd","spawnSync","spawnSync","spawnSync","spawnSync","chalk","ex","ex","error","chalk","chalk","chalk","DefaultDependencies","readFileSync","PATH","chalk","path","cycle","existsSync","readFileSync","PATH","chalk","globSync","existsSync","readFileSync","writeFileSync","existsSync","readFileSync","writeFileSync","existsSync","readFileSync","existsSync","readFileSync","chalk","filename","chalk","cwd","readFileSync","createRequire","PATH","createInterface","chalk","require","createRequire","packageRoot","PATH","createInterface","readFileSync","cwd","chalk","start","readFileSync","createRequire","PATH","require","packageRoot","templatesDir","chalk","cached","readFileSync","readFileSync","readFileSync","path","readdirSync","readFileSync","createRequire","PATH","require","packageRoot","spawnSync","chalk","cwd","chalk","spawnSync","spawnSync","existsSync","chalk","chalk","config","existsSync","spawnSync","existsSync","chalk","config","chalk","existsSync","chalk","chalk","spawnSync","readFileSync","PATH","chalk","PATH","readFileSync","chalk","spawnSync","readFileSync","writeFileSync","PATH","chalk","cwd","readFileSync","PATH","cwd","packageName","chalk","start","config","chalk","semver","versionColor","semver","chalk","cwd","chalk","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","filename","PATH","existsSync","readFileSync","readdirSync","statSync","chalk","cwd","existsSync","readdirSync","PATH","chalk","existsSync","chalk","cwd","PATH","readdirSync","existsSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","cwd","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","cwd","spawnSync","mkdirSync","existsSync","mkdirSync","writeFileSync","PATH","createInterface","chalk","askConfirmation","createInterface","cwd","PATH","mkdirSync","existsSync","chalk","writeFileSync","existsSync","mkdirSync","readdirSync","readFileSync","rmSync","statSync","writeFileSync","PATH","chalk","PATH","mkdirSync","filename","existsSync","readFileSync","writeFileSync","readdirSync","statSync","rmSync","chalk","cwd","path","chalk","chalk","path","path","chalk","chalk","path","publint","path","chalk","path","chalk","chalk","fs","chalk","fs","path","fs","fix","diagnostic","fix","fs","cwd","fs","fs","path","fs","globSync","fs","globSync","fs","fs","path","fs","path","isDeclarationFile","fs","path","chalk","semver","semver","fs","chalk","fs","builtinModules","chalk","builtinModules","fs","chalk","fs","chalk","semver","sortPackageJson","fs","semver","versionRange","chalk","chalk","fs","path","ts","fs","path","fs","path","fs","ts","path","fs","fs","chalk","chalk","semver","semver","fs","fs","diagnostic","chalk","fix","diagnostic","fix","chalk","readFileSync","readFileSync","writeFileSync","PATH","chalk","semver","cwd","PATH","readFileSync","writeFileSync","semver","writeRootPackageJson","chalk","expected","readFileSync","chalk","chalk","path","chalk","chalk","cwd","fix","path","fix","unlinkSync","chalk","cwd","unlinkSync","chalk","chalk","execSync","chalk","ParseGitConfig","chalk","chalk","name","license","existsSync","readFileSync","unlinkSync","writeFileSync","PATH","createInterface","chalk","globSync","askConfirmation","createInterface","readFileSync","chalk","writeFileSync","cwd","globSync","PATH","existsSync","unlinkSync","filename","config","spawnSync","existsSync","readFileSync","writeFileSync","PATH","chalk","rules","config","PATH","chalk","readFileSync","writeFileSync","spawnSync","existsSync","fix","fs","path","chalk","glob","path","cwd","glob","fs","chalk","path","chalk","path","chalk","path","chalk","chalk","path","cwd","chalk","chalk","build","chalk","glob","cwd","chalk","ts","deepmerge","cwd","chalk","ts","path","cwd","chalk","cwd","path","chalk","chalk","options","build","config","compile","cwd","chalk","config","path","chalk","cpy","copyTargetAssets","cpy","path","chalk","cruise","cruise","existsSync","path","chalk","existsSync","path","project","chalk","readdirSync","path","cwd","chalk","ESLint","findUp","dumpMessages","chalk","findUp","cwd","readdirSync","path","fix","start","ESLint","fs","path","chalk","glob","sortPackageJson","fix","chalk","dot","glob","path","fs","publint","sortPackageJson","existsSync","readFileSync","writeFileSync","PATH","chalk","picomatch","semver","cwd","readFileSync","PATH","path","writeFileSync","existsSync","chalk","glob","picomatch","fix","isTerminalPackage","semver","existsSync","rmSync","writeFileSync","PATH","chalk","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","spawnSync","existsSync","mkdirSync","readFileSync","rmSync","writeFileSync","PATH","chalk","existsSync","readFileSync","writeFileSync","chalk","globSync","cwd","existsSync","readFileSync","writeFileSync","PATH","chalk","cwd","cwd","writeFileSync","PATH","chalk","existsSync","readFileSync","rmSync","mkdirSync","spawnSync","spawnSync","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","readPnpmWorkspacePatterns","cwd","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","spawnSync","cwd","existsSync","PATH","readFileSync","statSync","readdirSync","subPath","chalk","PATH","existsSync","chalk","rmSync","cwd","writeFileSync","existsSync","readFileSync","writeFileSync","PATH","chalk","cwd","PATH","existsSync","readFileSync","writeFileSync","chalk","config","fix","chalk","chalk","config","fix","start","cwd","config","config","existsSync","readFileSync","PATH","chalk","cwd","existsSync","readFileSync","PATH","config","chalk","fix","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","writeFileSync","createRequire","PATH","createInterface","chalk","createInterface","require","createRequire","readFileSync","packageName","existsSync","readdirSync","chalk","mkdirSync","PATH","writeFileSync","spawnSync","path","chalk","chalk","xy","test","path","readFile","readFile","yargs","yargs","yargs","yargs","yargs","yargs","chalk","yargs","fix","chalk","config","checkCommand","yargs","yargs","yargs","yargs","yargs","checkCommand","yargs","yargs","yargs","yargs","yargs","cleanCommand","yargs","cleanCommand","yargs","cleanCommand","yargs","initCommand","yargs","lintCommand","config","yargs","initCommand","lintCommand","initCommand","yargs","lintCommand","yargs","yargs","initCommand","lintCommand","yargs","yargs","test","yargs","cleanCommand","yargs","yargs","cleanCommand","yargs","yargs","chalk","yargs","chalk","chalk","yargs","start","chalk","chalk","initCommand","yargs","lintCommand","yargs","initCommand","chalk","yargs","yargs","yargs","yargs","lintCommand","chalk","chalk","chalk","start","chalk"]}
1
+ {"version":3,"sources":["../src/lib/checkResult.ts","../src/lib/claudeMdTemplate.ts","../src/lib/concurrency.ts","../src/lib/createBuildConfig.ts","../src/lib/defaultBuildConfig.ts","../src/lib/deleteGlob.ts","../src/lib/dependencies/detectDuplicateDependencies.ts","../src/pm/detectPackageManager.ts","../src/pm/detectReact.ts","../src/pm/registry.ts","../src/pm/pnpmPackageManager.ts","../src/pm/yarnPackageManager.ts","../src/lib/yarn/isYarnVersionOrGreater.ts","../src/lib/yarn/workspace/yarnWorkspaces.ts","../src/lib/yarn/workspace/yarnWorkspace.ts","../src/lib/processEx.ts","../src/lib/withError.ts","../src/lib/withErrnoException.ts","../src/lib/safeExit.ts","../src/lib/dependencies/DuplicateDetector.ts","../src/lib/jsonFormatters.ts","../src/lib/dependencies/workspaceCycles.ts","../src/lib/deprecationMigrate.ts","../src/lib/file/constants.ts","../src/lib/file/fileLines.ts","../src/lib/string/empty.ts","../src/lib/string/union.ts","../src/lib/file/ReadFileSyncOptions.ts","../src/lib/file/tryReadFileSync.ts","../src/lib/fillTemplate.ts","../src/lib/generateIgnoreFiles.ts","../src/lib/initCwd.ts","../src/lib/generateReadmeFiles.ts","../src/lib/gitignoreTemplate.ts","../src/lib/latestVersions.ts","../src/lib/loadConfig.ts","../src/lib/packageName.ts","../src/lib/parsedPackageJSON.ts","../src/lib/repoTemplates.ts","../src/lib/runInstall.ts","../src/lib/runSteps.ts","../src/lib/runStepsAsync.ts","../src/lib/runXy.ts","../src/lib/runXyWithWarning.ts","../src/lib/tryRunLocalScript.ts","../src/lib/updo/applyUpdates.ts","../src/lib/updo/collectWorkspaceDeps.ts","../src/lib/updo/fetchRegistryInfo.ts","../src/lib/updo/interactiveSelect.ts","../src/lib/updo/renderTable.ts","../src/lib/updo/resolveVersions.ts","../src/lib/updo/runUpdo.ts","../src/actions/analyze.ts","../src/actions/build.ts","../src/actions/claude-check.ts","../src/actions/claude-clean.ts","../src/actions/claude-commands.ts","../src/actions/claude-rules.ts","../src/actions/claude-settings.ts","../src/actions/claude-skills.ts","../src/actions/clean.ts","../src/actions/clean-docs.ts","../src/actions/clean-eslint.ts","../src/actions/compile.ts","../src/actions/copy-assets.ts","../src/actions/cycle.ts","../src/actions/dead.ts","../src/actions/deplint/deplint.ts","../src/actions/deplint/packageJsonEditor.ts","../src/actions/deplint/getRequiredPeerDependencies.ts","../src/actions/deplint/packageEditor.ts","../src/actions/deplint/fixer.ts","../src/actions/deplint/findFiles.ts","../src/actions/deplint/findFilesByGlob.ts","../src/actions/deplint/getDependenciesFromPackageJson.ts","../src/actions/deplint/getExtendsFromTsconfigs.ts","../src/actions/deplint/getBasePackageName.ts","../src/actions/deplint/getExternalImportsFromFiles.ts","../src/actions/deplint/getImportsFromFile.ts","../src/actions/deplint/checkPackage/getMismatchedPeerDevVersions.ts","../src/actions/deplint/checkPackage/getUnlistedDependencies.ts","../src/actions/deplint/tsScriptsAliases.ts","../src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts","../src/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.ts","../src/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.ts","../src/actions/deplint/checkPackage/getUnusedDependencies.ts","../src/actions/deplint/checkPackage/getUnusedDevDependencies.ts","../src/actions/deplint/getCliReferencedPackagesFromFiles.ts","../src/actions/deplint/getScriptReferencedPackages.ts","../src/actions/deplint/implicitDevDependencies.ts","../src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts","../src/actions/deplint/checkPackage/getWorkspaceVersionProblems.ts","../src/actions/deplint/rules.ts","../src/actions/deplint/snapshot.ts","../src/actions/deplint/engine.ts","../src/actions/deplint/reporters.ts","../src/actions/deploy.ts","../src/actions/package-lint-deps.ts","../src/actions/dupdeps.ts","../src/actions/eject.ts","../src/actions/lintNext.ts","../src/actions/lint.ts","../src/actions/fix.ts","../src/actions/gen-docs.ts","../src/actions/gitignore.ts","../src/actions/gitlint.ts","../src/actions/gitlint-fix.ts","../src/actions/knip.ts","../src/actions/license.ts","../src/actions/lint-init.ts","../src/actions/lintlint.ts","../src/actions/npmignore-gen.ts","../src/actions/orphan.ts","../src/actions/package/clean-outputs.ts","../src/actions/package/clean-typescript.ts","../src/actions/package/clean.ts","../src/actions/package/compile/compile.ts","../src/actions/package/compile/packageCompileTsup.ts","../src/actions/package/compile/inputs.ts","../src/actions/package/compile/buildEntries.ts","../src/actions/package/compile/deepMerge.ts","../src/actions/package/compile/packageCompileTsc.ts","../src/actions/package/compile/getCompilerOptions.ts","../src/actions/package/compile/packageCompileTscTypes.ts","../src/actions/package/compile/XyConfig.ts","../src/actions/package/copy-assets.ts","../src/actions/package/cycle.ts","../src/actions/package/gen-docs.ts","../src/actions/package/lint.ts","../src/actions/package/publint.ts","../src/actions/package/recompile.ts","../src/actions/package-lint.ts","../src/actions/packman/clean.ts","../src/actions/packman/convert.ts","../src/actions/packman/convertToPnpm.ts","../src/actions/packman/rewriteScripts.ts","../src/actions/packman/rewriteSourceImports.ts","../src/actions/packman/swapTsScriptsDependency.ts","../src/actions/packman/convertToYarn.ts","../src/actions/packman/lint.ts","../src/actions/publint.ts","../src/actions/publish.ts","../src/actions/reactTest.ts","../src/actions/readme-gen.ts","../src/actions/readme-init.ts","../src/actions/readme-lint.ts","../src/actions/rebuild.ts","../src/actions/recompile.ts","../src/actions/reinstall.ts","../src/actions/relint.ts","../src/actions/repo-init.ts","../src/actions/retest.ts","../src/actions/sitemap.ts","../src/actions/sonar.ts","../src/actions/start.ts","../src/actions/statics.ts","../src/actions/test.ts","../src/actions/up.ts","../src/actions/updo.ts","../src/actions/upplug.ts","../src/actions/upyarn.ts","../src/actions/yarn3only.ts","../src/loadPackageConfig.ts","../src/xy/build/buildCommand.ts","../src/xy/build/compileCommand.ts","../src/xy/build/compileOnlyCommand.ts","../src/xy/build/copyAssetsCommand.ts","../src/xy/build/rebuildCommand.ts","../src/xy/build/recompileCommand.ts","../src/xy/build/index.ts","../src/xy/common/checkCommand.ts","../src/xy/common/claude/checkCommand.ts","../src/xy/common/claude/cleanCommand.ts","../src/xy/common/claude/commandsCommand.ts","../src/xy/common/claude/initCommand.ts","../src/xy/common/claude/rulesCommand.ts","../src/xy/common/claude/settingsCommand.ts","../src/xy/common/claude/skillsCommand.ts","../src/xy/common/claude/index.ts","../src/xy/common/cleanDocsCommand.ts","../src/xy/param.ts","../src/xy/common/deadCommand.ts","../src/xy/common/genDocsCommand.ts","../src/xy/common/gitignoreCommand.ts","../src/xy/common/gitlintCommand.ts","../src/xy/common/licenseCommand.ts","../src/xy/common/npmignoreGenCommand.ts","../src/xy/common/orphan/cleanCommand.ts","../src/xy/common/orphan/listCommand.ts","../src/xy/common/orphan/index.ts","../src/xy/common/packmanCommand.ts","../src/xy/common/readme/genCommand.ts","../src/xy/common/readme/initCommand.ts","../src/xy/common/readme/lintCommand.ts","../src/xy/common/readme/index.ts","../src/xy/common/repo/initCommand.ts","../src/xy/common/repo/lintCommand.ts","../src/xy/common/repo/index.ts","../src/xy/common/retestCommand.ts","../src/xy/common/testCommand.ts","../src/xy/common/index.ts","../src/xy/deploy/deployCommand.ts","../src/xy/deploy/publishCommand.ts","../src/xy/deploy/index.ts","../src/xy/install/cleanCommand.ts","../src/xy/install/dupdepsCommand.ts","../src/xy/install/reinstallCommand.ts","../src/xy/install/staticsCommand.ts","../src/xy/install/upCommand.ts","../src/xy/install/updoCommand.ts","../src/xy/install/index.ts","../src/xy/lint/cycleCommand.ts","../src/xy/lint/deplintCommand.ts","../src/xy/lint/fixCommand.ts","../src/xy/lint/knipCommand.ts","../src/xy/lint/lint/index.ts","../src/xy/lint/lint/initCommand.ts","../src/xy/lint/lint/runCommand.ts","../src/xy/lint/lintlintCommand.ts","../src/xy/lint/publintCommand.ts","../src/xy/lint/relintCommand.ts","../src/xy/lint/sonarCommand.ts","../src/xy/lint/index.ts","../src/xy/react/analyzeCommand.ts","../src/xy/react/ejectCommand.ts","../src/xy/react/sitemapCommand.ts","../src/xy/react/startCommand.ts","../src/xy/react/index.ts","../src/xy/xy.ts","../src/xy/xyParseOptions.ts","../src/xy/yarn/upplugCommand.ts","../src/xy/yarn/upyarnCommand.ts","../src/xy/yarn/yarn3OnlyCommand.ts","../src/xy/yarn/index.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import {\n readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nimport type { PackageManagerName } from '../pm/index.ts'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'claude')\n\nexport function applyPackageManager(content: string, pm: PackageManagerName): string {\n return content.replaceAll('yarn xy', `${pm} xy`).replaceAll('yarn add', `${pm} add`)\n}\n\nexport const XYLABS_RULES_PREFIX = 'xylabs-'\nexport const XYLABS_COMMANDS_PREFIX = 'xy-'\nexport const LEGACY_COMMANDS_PREFIX = 'xylabs-'\nexport const XYLABS_SKILLS_PREFIX = 'xylabs-'\n\nexport const claudeMdRuleTemplates = (): Record<string, string> => {\n const rulesDir = PATH.resolve(templatesDir, 'rules')\n const files = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(rulesDir, file), 'utf8')\n }\n return result\n}\n\nexport const claudeCommandTemplates = (): Record<string, string> => {\n const commandsDir = PATH.resolve(templatesDir, 'commands')\n const files = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(commandsDir, file), 'utf8')\n }\n return result\n}\n\n// Returns { 'xylabs-foo': { 'SKILL.md': '...', 'other.ts': '...' } }\nexport const claudeSkillTemplates = (): Record<string, Record<string, string>> => {\n const skillsDir = PATH.resolve(templatesDir, 'skills')\n const dirs = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n const result: Record<string, Record<string, string>> = {}\n for (const dir of dirs) {\n const dirPath = PATH.resolve(skillsDir, dir)\n const files = readdirSync(dirPath, { recursive: true, encoding: 'utf8' })\n result[dir] = {}\n for (const file of files) {\n if (statSync(PATH.resolve(dirPath, file)).isFile()) {\n result[dir][file] = readFileSync(PATH.resolve(dirPath, file), 'utf8')\n }\n }\n }\n return result\n}\n\nexport const claudeMdProjectTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-project.md'), 'utf8')\n\nexport const claudeMdLocalTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-local.md'), 'utf8')\n","import { AsyncLocalStorage } from 'node:async_hooks'\n\nexport const outputStorage = new AsyncLocalStorage<string[]>()\n\nlet captureInstalled = false\n\nexport function installOutputCapture(): void {\n if (captureInstalled) return\n captureInstalled = true\n\n const originalStdoutWrite = process.stdout.write.bind(process.stdout)\n const originalStderrWrite = process.stderr.write.bind(process.stderr)\n\n function intercept(\n original: typeof process.stdout.write,\n ): typeof process.stdout.write {\n return function (chunk: string | Uint8Array, ...args: unknown[]) {\n const buffer = outputStorage.getStore()\n if (buffer) {\n buffer.push(typeof chunk === 'string' ? chunk : new TextDecoder().decode(chunk))\n return true\n }\n return (original as (...params: unknown[]) => boolean)(chunk, ...args)\n } as typeof process.stdout.write\n }\n\n process.stdout.write = intercept(originalStdoutWrite)\n process.stderr.write = intercept(originalStderrWrite)\n}\n\nexport async function runWithConcurrency<T>(\n items: T[],\n concurrency: number,\n fn: (item: T) => Promise<void>,\n): Promise<void> {\n let next = 0\n async function worker(): Promise<void> {\n while (next < items.length) {\n const i = next++\n await fn(items[i])\n }\n }\n await Promise.all(Array.from({ length: Math.min(concurrency, items.length) }, () => worker()))\n}\n","import { readFileSync } from 'node:fs'\n\nimport { defaultBuildConfig } from './defaultBuildConfig.ts'\n\ninterface TsConfig {\n [key: string]: unknown\n compilerOptions?: Record<string, unknown>\n exclude?: string[]\n include?: string[]\n}\n\nconst getGeneralTypescriptConfig = (location: string): TsConfig | false => {\n let generalConfig: string | undefined\n try {\n generalConfig = readFileSync(`${location}/tsconfig.json`, { encoding: 'utf8' })\n } catch {\n return false\n }\n return JSON.parse(generalConfig) as TsConfig\n}\n\nexport const createBuildConfig = (\n location: string,\n module: 'ESNext' | 'CommonJS',\n target: 'ESNext' | 'ES6',\n outDirSuffix: string,\n): Record<string, unknown> | undefined => {\n const generalConfigObject = getGeneralTypescriptConfig(location)\n if (generalConfigObject === false) {\n return undefined\n }\n return {\n ...generalConfigObject,\n compilerOptions: {\n ...defaultBuildConfig.compilerOptions,\n ...generalConfigObject.compilerOptions,\n module,\n outDir: `./${(generalConfigObject.compilerOptions?.outDir as string | undefined) ?? 'dist'}/${outDirSuffix}`,\n target,\n },\n exclude: [...(generalConfigObject.exclude ?? []), ...defaultBuildConfig.exclude],\n include: [...(generalConfigObject.include ?? []), ...defaultBuildConfig.include],\n }\n}\n","export const defaultBuildConfig = {\n compilerOptions: {\n rootDir: 'src',\n rootDirs: ['package.json'],\n },\n exclude: [\n '**/build',\n '**/dist',\n '**/node_modules',\n '**/*.spec.*',\n '**/*.spec',\n '**/*.stories.*',\n '**/*.example.*',\n '**/spec/*',\n '**/stories/*',\n ],\n include: ['src'],\n}\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n","import { execSync } from 'node:child_process'\n\nimport { getPackageManager } from '../../pm/index.ts'\nimport { safeExit } from '../safeExit.ts'\nimport { DuplicateDetector } from './DuplicateDetector.ts'\n\nexport const detectDuplicateDependencies = (depsFromPackageJSON?: string[], DefaultDependencies?: string[]) => {\n let exitCode = 0\n\n const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies\n\n return safeExit(() => {\n if (dependencies) {\n for (const dependency of dependencies) {\n let output: string\n\n try {\n const pm = getPackageManager()\n const cmd = `${pm.command} why ${dependency} --json`\n output = execSync(cmd, { maxBuffer: 64 * 1024 * 1024 }).toString()\n } catch (e) {\n console.error(`Error running dependency check: ${String(e)}`)\n exitCode = 1\n continue\n }\n\n if (output) {\n exitCode = new DuplicateDetector(output, dependency).detect()\n } else {\n console.log(`${dependency} - N/A`)\n if (depsFromPackageJSON) {\n exitCode = 1\n console.log(`🚨 Library ${dependency} was requested in package.json but not found`)\n }\n }\n }\n return exitCode\n } else {\n console.log('🚨 No dependencies where passed')\n return exitCode\n }\n })\n}\n","import { existsSync } from 'node:fs'\n\nexport type PackageManagerName = 'pnpm' | 'yarn'\n\nexport function detectPackageManager(): PackageManagerName {\n if (existsSync('pnpm-lock.yaml') || existsSync('pnpm-workspace.yaml')) return 'pnpm'\n return 'yarn'\n}\n","import { readFileSync } from 'node:fs'\n\nimport { getPackageManager } from './registry.ts'\n\nlet cached: boolean | undefined\n\nexport function detectReact(): boolean {\n if (cached !== undefined) return cached\n try {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n cached = workspaces.some((ws) => {\n try {\n const pkg = JSON.parse(readFileSync(`${ws.location}/package.json`, 'utf8')) as Record<string, unknown>\n const allDeps = {\n ...(pkg.dependencies as Record<string, string> | undefined),\n ...(pkg.devDependencies as Record<string, string> | undefined),\n ...(pkg.peerDependencies as Record<string, string> | undefined),\n }\n return 'react' in allDeps || 'react-dom' in allDeps\n } catch {\n return false\n }\n })\n } catch {\n cached = false\n }\n return cached\n}\n","import type { PackageManagerName } from './detectPackageManager.ts'\nimport { detectPackageManager } from './detectPackageManager.ts'\nimport type { PackageManager } from './PackageManager.ts'\n\nconst implementations = new Map<PackageManagerName, PackageManager>()\n\nexport function registerPackageManager(pm: PackageManager): void {\n implementations.set(pm.name, pm)\n}\n\nexport function getPackageManager(name?: PackageManagerName): PackageManager {\n const pmName = name ?? detectPackageManager()\n const pm = implementations.get(pmName)\n if (!pm) {\n throw new Error(\n `No package manager implementation registered for \"${pmName}\". `\n + 'Ensure registerPackageManager() has been called before getPackageManager().',\n )\n }\n return pm\n}\n","import { spawnSync } from 'node:child_process'\nimport PATH from 'node:path'\n\nimport type {\n PackageManager, ScriptStep, Workspace, WorkspaceForeachOptions,\n} from './PackageManager.ts'\n\nexport class PnpmPackageManager implements PackageManager {\n readonly command = 'pnpm'\n readonly lockfile = 'pnpm-lock.yaml'\n readonly name = 'pnpm' as const\n\n dedupe(): ScriptStep {\n return ['pnpm', ['dedupe']]\n }\n\n findWorkspace(name: string): Workspace | undefined {\n return this.listWorkspaces().find(ws => ws.name === name)\n }\n\n foreachWorkspace(script: string, args: string[] = [], options: WorkspaceForeachOptions): ScriptStep {\n const filter = options.incremental ? ['--filter', '...[HEAD~1]'] : []\n return ['pnpm', ['-r', `--workspace-concurrency=${options.jobs}`, ...filter, 'exec', 'run-or-exec', script, ...args]]\n }\n\n install(): ScriptStep {\n return ['pnpm', ['install']]\n }\n\n listInstalledVersions(): Map<string, string> {\n const result = spawnSync('pnpm', ['list', '--recursive', '--json', '--depth=0'], {\n encoding: 'utf8',\n maxBuffer: 64 * 1024 * 1024,\n shell: true,\n })\n const versions = new Map<string, string>()\n if (result.error) return versions\n try {\n const parsed: unknown = JSON.parse(result.stdout)\n if (Array.isArray(parsed)) {\n for (const workspace of parsed) {\n for (const depField of ['dependencies', 'devDependencies', 'optionalDependencies'] as const) {\n const deps = (workspace as Record<string, Record<string, { version: string }>>)[depField]\n if (!deps) continue\n for (const [name, info] of Object.entries(deps)) {\n if (info.version && !versions.has(name)) {\n versions.set(name, info.version)\n }\n }\n }\n }\n }\n } catch {\n // fallback for unexpected output\n }\n return versions\n }\n\n listWorkspaces(): Workspace[] {\n const result = spawnSync('pnpm', ['list', '--recursive', '--json', '--depth=0'], {\n encoding: 'utf8',\n maxBuffer: 64 * 1024 * 1024,\n shell: true,\n })\n if (result.error) {\n throw result.error\n }\n try {\n const parsed: unknown = JSON.parse(result.stdout)\n if (Array.isArray(parsed)) {\n const cwd = process.env.INIT_CWD ?? process.cwd()\n return parsed.map((pkg: { name: string; path: string }) => {\n const rel = PATH.relative(cwd, pkg.path)\n return {\n location: rel === '' ? '.' : rel,\n name: pkg.name,\n }\n })\n }\n } catch {\n // fallback for unexpected output\n }\n return []\n }\n\n outdated(): ScriptStep {\n return ['pnpm', ['outdated', '-r']]\n }\n\n publish(): ScriptStep {\n return ['pnpm', ['publish', '-r']]\n }\n\n runInWorkspace(pkg: string, script: string, args: string[] = []): ScriptStep {\n return ['pnpm', ['--filter', pkg, 'exec', 'run-or-exec', script, ...args]]\n }\n\n runXy(args: string[]): ScriptStep {\n return ['pnpm', ['xy', ...args]]\n }\n\n versionApply(): ScriptStep {\n // pnpm doesn't have a deferred version apply — versions are applied in bump\n return ['pnpm', ['install', '--lockfile-only']]\n }\n\n versionBump(type: 'major' | 'minor' | 'patch' | 'prerelease'): ScriptStep[] {\n return [\n ['pnpm', ['-r', 'exec', '--', 'pnpm', 'version', type, '--no-git-tag-version']],\n ]\n }\n}\n","import { spawnSync } from 'node:child_process'\n\nimport { yarnWorkspace, yarnWorkspaces } from '../lib/yarn/index.ts'\nimport type {\n PackageManager, ScriptStep, Workspace, WorkspaceForeachOptions,\n} from './PackageManager.ts'\n\nexport class YarnPackageManager implements PackageManager {\n readonly command = 'yarn'\n readonly lockfile = 'yarn.lock'\n readonly name = 'yarn' as const\n\n dedupe(): ScriptStep {\n return ['yarn', ['dedupe']]\n }\n\n findWorkspace(name: string): Workspace | undefined {\n try {\n return yarnWorkspace(name)\n } catch {\n return undefined\n }\n }\n\n foreachWorkspace(script: string, args: string[] = [], options: WorkspaceForeachOptions): ScriptStep {\n const verboseOptions = options.verbose ? ['--verbose'] : ['--no-verbose']\n const incrementalOptions = options.incremental\n ? ['--since', '-Ap', '--topological-dev']\n : ['--parallel', '-Ap', '--topological-dev']\n return ['yarn', [\n 'workspaces',\n 'foreach',\n ...incrementalOptions,\n '-j',\n `${options.jobs}`,\n ...verboseOptions,\n 'run',\n script,\n ...args,\n ]]\n }\n\n install(): ScriptStep {\n return ['yarn', ['install']]\n }\n\n listInstalledVersions(): Map<string, string> {\n const result = spawnSync('yarn', ['info', '--all', '--json'], {\n encoding: 'utf8',\n maxBuffer: 64 * 1024 * 1024,\n })\n const versions = new Map<string, string>()\n if (result.error) return versions\n try {\n const lines = result.stdout.split('\\n').filter(Boolean)\n for (const line of lines) {\n const entry = JSON.parse(line) as { value: string }\n // yarn info --all --json outputs lines like: {\"value\":\"package@npm:1.2.3#optional!...\",\"children\":{...}}\n const match = /^(.+)@(?:npm|patch|workspace):(\\d+\\.\\d+\\.\\d+[^#]*)/.exec(entry.value)\n if (match) {\n const [, name, rawVersion] = match\n // Strip any trailing yarn metadata after the semver\n const version = rawVersion?.split('#')[0]?.split('::')[0]\n if (name && version && !versions.has(name)) {\n versions.set(name, version)\n }\n }\n }\n } catch {\n // fallback for unexpected output\n }\n return versions\n }\n\n listWorkspaces(): Workspace[] {\n return yarnWorkspaces()\n }\n\n outdated(): ScriptStep {\n return ['yarn', ['outdated']]\n }\n\n publish(): ScriptStep {\n return ['npm', ['publish', '--workspaces']]\n }\n\n runInWorkspace(pkg: string, script: string, args: string[] = []): ScriptStep {\n return ['yarn', ['workspace', pkg, 'run', script, ...args]]\n }\n\n runXy(args: string[]): ScriptStep {\n return ['yarn', ['xy', ...args]]\n }\n\n versionApply(): ScriptStep {\n return ['yarn', ['version', 'apply', '--all']]\n }\n\n versionBump(type: 'major' | 'minor' | 'patch' | 'prerelease'): ScriptStep[] {\n if (type === 'prerelease') {\n return [\n ['yarn', 'workspaces foreach --all --no-private version patch --deferred --prerelease'],\n ]\n }\n return [\n ['yarn', `workspaces foreach --all --no-private version ${type} --deferred`],\n ]\n }\n}\n","import { spawnSync } from 'node:child_process'\n\nexport const isYarnVersionOrGreater = (major: number, minor?: number, patch?: number): [boolean, string] => {\n const result = spawnSync('yarn', ['-v'], { encoding: 'utf8', shell: true })\n const version = result.stdout.toString().replaceAll('\\n', '')\n const versionNumbers = version.split('.').map(ver => Number.parseInt(ver))\n const majorDelta = versionNumbers[0] - major\n const minorDelta = versionNumbers[1] - (minor ?? versionNumbers[1])\n const patchDelta = versionNumbers[2] - (patch ?? versionNumbers[2])\n\n const majorOk = majorDelta >= 0\n const minorOk = majorDelta > 0 || minorDelta >= 0\n const patchOk = majorDelta > 0 || minorDelta > 0 || patchDelta >= 0\n\n return [majorOk && minorOk && patchOk, version]\n}\n","import { spawnSync } from 'node:child_process'\n\nimport type { Workspace } from './Workspace.ts'\n\nexport const yarnWorkspaces = (): Workspace[] => {\n const result = spawnSync('yarn', ['workspaces', 'list', '--json', '--recursive'], { encoding: 'utf8' })\n if (result.error) {\n throw result.error\n }\n return (\n result.stdout\n .toString()\n // NOTE: This probably doesn't work on Windows\n // TODO: Replace /r/n with /n first\n .split('\\n')\n .slice(0, -1)\n .map((item) => {\n return JSON.parse(item) as Workspace\n })\n )\n}\n","import type { Workspace } from './Workspace.ts'\nimport { yarnWorkspaces } from './yarnWorkspaces.ts'\n\nexport const yarnWorkspace = (pkg: string): Workspace => {\n const workspace = yarnWorkspaces().find(({ name }) => name === pkg)\n if (!workspace) throw new Error(`Workspace ${pkg} not found`)\n return workspace\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { EOL } from 'node:os'\n\nimport chalk from 'chalk'\n\nimport { multiLineToJSONArray } from '../jsonFormatters.ts'\n\ninterface ChildFields {\n descriptor: string\n locator: string\n}\n\nconst trimVirtualMeta = (value: string): string => {\n const virtualParts = value.split('virtual:')\n if (virtualParts.length > 1) {\n const hashParts = virtualParts[1].split('#')\n return virtualParts[0] + hashParts[1]\n } else {\n return value\n }\n}\n\nconst trimObjectDependencyVirtualMeta = (obj: Record<string, ChildFields>): Record<string, ChildFields> => {\n const resultObj: Record<string, ChildFields> = {}\n for (const [key, value] of Object.entries(obj)) {\n resultObj[trimVirtualMeta(key)] = {\n descriptor: trimVirtualMeta(value.descriptor),\n locator: trimVirtualMeta(value.locator),\n }\n }\n return resultObj\n}\n\nconst trimDependencyVirtualMeta = (dependencies: DependencyEntries): DependencyEntries => {\n return dependencies.map((dependency) => {\n return { children: trimObjectDependencyVirtualMeta(dependency.children), value: trimVirtualMeta(dependency.value) }\n })\n}\n\ninterface DependencyEntry {\n children: Record<string, ChildFields>\n value: string\n}\n\ntype DependencyEntries = DependencyEntry[]\n\n/**\n * Extracts all versions of a named dependency from pnpm's `why --json` output.\n * The output is a JSON array of workspace packages, each containing nested\n * dependency trees with `version` fields.\n */\nfunction extractPnpmVersions(data: unknown, depName: string): string[] {\n const versions = new Set<string>()\n function walk(obj: unknown): void {\n if (Array.isArray(obj)) {\n for (const item of obj) walk(item)\n } else if (obj && typeof obj === 'object') {\n const record = obj as Record<string, unknown>\n if (typeof record.version === 'string' && typeof record.from === 'string' && record.from === depName) {\n versions.add(record.version)\n }\n for (const val of Object.values(record)) walk(val)\n }\n }\n walk(data)\n return [...versions]\n}\n\nexport class DuplicateDetector {\n private dependency: string\n private duplicateVersions: string[]\n\n constructor(output: string, dependency: string) {\n this.dependency = dependency\n this.duplicateVersions = this.parseVersions(output, dependency)\n }\n\n detect(): number {\n if (this.duplicateVersions.length > 1) {\n console.log(chalk.yellow(`${EOL}Duplicates found for: ${this.dependency}`))\n const duplicateVersions = this.duplicateVersions.join(`${EOL} `)\n console.log(chalk.grey(` ${duplicateVersions}`, EOL))\n return 1\n } else {\n console.log(`${this.dependency} - OK`)\n return 0\n }\n }\n\n private parseVersions(output: string, dependency: string): string[] {\n // Try pnpm format first (valid JSON array)\n try {\n const parsed: unknown = JSON.parse(output)\n if (Array.isArray(parsed)) {\n return extractPnpmVersions(parsed, dependency)\n }\n } catch {\n // Not pnpm format, try yarn NDJSON format\n }\n\n try {\n const entries: DependencyEntries = trimDependencyVirtualMeta(multiLineToJSONArray(output) as DependencyEntries)\n const versions = new Set<string>()\n for (const entry of entries) {\n for (const key of Object.keys(entry.children)) {\n const version = key.includes('@virtual:') ? undefined : key\n if (version) versions.add(version)\n }\n }\n return [...versions]\n } catch {\n console.warn(chalk.yellow(`Could not parse dependency output for ${dependency}`))\n return []\n }\n }\n}\n","export const multiLineToJSONArray = (output: string): unknown[] => {\n const withCommas = output.replaceAll('\\r\\n', '').replaceAll('\\n', ',')\n const cleanCollection = withCommas.slice(0, Math.max(0, withCommas.length - 1))\n const collection = `[${cleanCollection}]`\n return JSON.parse(collection) as unknown[]\n}\n","import { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../pm/index.ts'\n\ninterface WorkspaceEdge {\n name: string\n type: 'dep' | 'devDep'\n}\n\nexport interface CycleEdge {\n from: string\n to: string\n type: 'dep' | 'devDep'\n}\n\n/**\n * Detects cycles in the workspace dependency graph (including devDependencies).\n * This catches cycles that break `yarn workspaces foreach --topological-dev`\n * but are invisible to source-level import analysis.\n * @returns An array of cycle paths, each represented as an array of edges. Empty if no cycles.\n */\nexport function detectWorkspaceCycles(workspaces: Workspace[]): CycleEdge[][] {\n const workspaceNames = new Set(workspaces.map(ws => ws.name))\n\n // Build adjacency list: edges from deps + devDeps to other workspace packages\n const graph = new Map<string, WorkspaceEdge[]>()\n for (const ws of workspaces) {\n const pkgPath = PATH.join(ws.location, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const deps: Record<string, string> = (pkg.dependencies ?? {}) as Record<string, string>\n const devDeps: Record<string, string> = (pkg.devDependencies ?? {}) as Record<string, string>\n const edges: WorkspaceEdge[] = []\n for (const dep of Object.keys(deps)) {\n if (workspaceNames.has(dep)) edges.push({ name: dep, type: 'dep' })\n }\n for (const dep of Object.keys(devDeps)) {\n if (workspaceNames.has(dep)) edges.push({ name: dep, type: 'devDep' })\n }\n graph.set(ws.name, edges)\n }\n\n // DFS with explicit path stack to correctly extract cycles\n const WHITE = 0\n const GRAY = 1\n const BLACK = 2\n const color = new Map<string, number>()\n const cycles: CycleEdge[][] = []\n // path tracks the current DFS recursion stack as [nodeName, edgeType used to reach it]\n const path: { edgeType?: 'dep' | 'devDep'; name: string }[] = []\n const onPath = new Set<string>()\n\n for (const name of workspaceNames) color.set(name, WHITE)\n\n function dfs(u: string, incomingEdgeType?: 'dep' | 'devDep'): void {\n color.set(u, GRAY)\n onPath.add(u)\n path.push({ name: u, edgeType: incomingEdgeType })\n\n for (const edge of graph.get(u) ?? []) {\n const v = edge.name\n if (onPath.has(v)) {\n // Found a cycle — extract from path\n const cycleEdges: CycleEdge[] = []\n const startIdx = path.findIndex(p => p.name === v)\n for (let i = startIdx; i < path.length - 1; i++) {\n const nextEdgeType = path[i + 1].edgeType ?? 'dep'\n cycleEdges.push({\n from: path[i].name, to: path[i + 1].name, type: nextEdgeType,\n })\n }\n // Close: last node back to v\n cycleEdges.push({\n from: u, to: v, type: edge.type,\n })\n cycles.push(cycleEdges)\n } else if (color.get(v) === WHITE) {\n dfs(v, edge.type)\n }\n }\n\n path.pop()\n onPath.delete(u)\n color.set(u, BLACK)\n }\n\n for (const name of workspaceNames) {\n if (color.get(name) === WHITE) dfs(name)\n }\n\n return cycles\n}\n\nexport function printWorkspaceCycles(cycles: CycleEdge[][]): void {\n for (const cycle of cycles) {\n console.error(chalk.red(' Workspace dependency cycle:'))\n for (const edge of cycle) {\n const edgeLabel = edge.type === 'devDep' ? chalk.yellow('devDep') : chalk.cyan('dep')\n console.error(` ${chalk.white(edge.from)} --(${edgeLabel})--> ${chalk.white(edge.to)}`)\n }\n }\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst DEPRECATED_PACKAGES = [\n '@xylabs/ts-scripts-common',\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/ts-scripts-pnpm',\n '@xylabs/ts-scripts-react-yarn3',\n]\n\nfunction findProjectRoot(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n\nfunction askYesNo(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stderr })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.trim().toLowerCase().startsWith('y'))\n })\n })\n}\n\nfunction replaceAllOldPackagesInFile(filePath: string): boolean {\n if (!existsSync(filePath)) return false\n let content = readFileSync(filePath, 'utf8')\n let changed = false\n for (const oldPkg of DEPRECATED_PACKAGES) {\n if (content.includes(oldPkg)) {\n content = content.replaceAll(oldPkg, '@xylabs/toolchain')\n changed = true\n }\n }\n if (changed) {\n writeFileSync(filePath, content, 'utf8')\n }\n return changed\n}\n\nfunction migratePackageJson(pkgPath: string, label: string): boolean {\n if (!existsSync(pkgPath)) return false\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, Record<string, string>>\n let changed = false\n\n for (const field of ['dependencies', 'devDependencies', 'peerDependencies'] as const) {\n for (const oldPkg of DEPRECATED_PACKAGES) {\n if (pkg[field]?.[oldPkg]) {\n const ver = pkg[field][oldPkg]\n delete pkg[field][oldPkg]\n // Only add toolchain if not already present in this field\n if (!pkg[field]['@xylabs/toolchain']) {\n pkg[field]['@xylabs/toolchain'] = ver\n }\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.warn(chalk.green(` āœ“ Updated ${label}`))\n }\n return changed\n}\n\nasync function migrateWorkspaces(root: string): Promise<void> {\n const { globSync } = await import('glob')\n const packageJsonFiles = globSync('**/package.json', {\n cwd: root,\n ignore: ['node_modules/**', '**/node_modules/**', 'dist/**', '**/dist/**'],\n })\n\n for (const relPath of packageJsonFiles) {\n // Skip root package.json (already handled)\n if (relPath === 'package.json') continue\n\n const dir = PATH.dirname(relPath)\n migratePackageJson(PATH.join(root, relPath), relPath)\n\n const xyConfigPath = PATH.join(root, dir, 'xy.config.ts')\n if (replaceAllOldPackagesInFile(xyConfigPath)) {\n console.warn(chalk.green(` āœ“ Updated ${dir}/xy.config.ts`))\n }\n }\n}\n\nfunction printManualInstructions(): void {\n console.warn(chalk.gray(' Skipped. To migrate manually:\\n'))\n console.warn(chalk.gray(' 1. Replace all @xylabs/ts-scripts-* deps with @xylabs/toolchain in package.json'))\n console.warn(chalk.gray(' 2. Update imports in xy.config.ts files'))\n console.warn(chalk.gray(' 3. Run your package manager install\\n'))\n}\n\nexport async function deprecationMigrate(oldPackage: string): Promise<void> {\n const root = findProjectRoot()\n const pkgPath = PATH.join(root, 'package.json')\n\n if (!existsSync(pkgPath)) return\n\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, Record<string, string>>\n\n // Check if any deprecated package is present\n const hasOldDep = DEPRECATED_PACKAGES.some(dep =>\n pkg.dependencies?.[dep] || pkg.devDependencies?.[dep])\n if (!hasOldDep) return\n\n console.warn(chalk.yellow(`\\n⚠ ${oldPackage} is deprecated. Use @xylabs/toolchain instead.\\n`))\n\n const shouldMigrate = await askYesNo(chalk.cyan(' Auto-migrate to @xylabs/toolchain? [y/N] '))\n\n if (!shouldMigrate) {\n printManualInstructions()\n return\n }\n\n // Migrate root package.json (all old packages at once)\n migratePackageJson(pkgPath, 'package.json')\n\n // Migrate root xy.config.ts\n if (replaceAllOldPackagesInFile(PATH.join(root, 'xy.config.ts'))) {\n console.warn(chalk.green(' āœ“ Updated xy.config.ts'))\n }\n\n // Migrate all workspace files\n await migrateWorkspaces(root)\n\n // Run install to resolve the new dependency\n const pm = detectPackageManager()\n console.warn(chalk.cyan(`\\n Running ${pm} install...\\n`))\n const result = spawnSync(pm, ['install'], { cwd: root, stdio: 'inherit' })\n\n if (result.status === 0) {\n console.warn(chalk.green(' āœ“ Migration complete. Re-run your command.\\n'))\n } else {\n console.warn(chalk.red(` Install failed (exit ${result.status}). Run \"${pm} install\" manually.\\n`))\n }\n\n process.exit(result.status ?? 1)\n}\n","export const WINDOWS_NEWLINE_REGEX = /\\r\\n/g\nexport const CROSS_PLATFORM_NEWLINE = '\\n'\n","import type { PathLike, WriteFileOptions } from 'node:fs'\nimport {\n existsSync, readFileSync,\n writeFileSync,\n} from 'node:fs'\n\nimport { notEmpty } from '../string/index.ts'\nimport { CROSS_PLATFORM_NEWLINE, WINDOWS_NEWLINE_REGEX } from './constants.ts'\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const readLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n existsSync(uri)\n ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE)\n : []\n\nexport const readNonEmptyLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n readLines(uri, options).filter(notEmpty)\n\nexport const writeLines = (uri: PathLike, lines: string[], options: WriteFileOptions = defaultReadFileSyncOptions) => {\n const existing = existsSync(uri) ? readFileSync(uri, options) : undefined\n const desired = lines.join(CROSS_PLATFORM_NEWLINE)\n // Check if the file is different before writing\n if (existing !== desired) writeFileSync(uri, desired, options)\n}\n","export const empty = (value?: string): boolean => value?.trim().length === 0\nexport const notEmpty = (value?: string): boolean => !empty(value)\n","export const union = (a: string[], b: string[]): Set<string> => new Set([...new Set(a), ...new Set(b)])\n","export type ReadFileSyncOptions = BufferEncoding | {\n encoding: BufferEncoding\n flags?: string\n}\n\nexport const defaultReadFileSyncOptions: ReadFileSyncOptions = { encoding: 'utf8' }\n","import type { PathLike } from 'node:fs'\nimport { existsSync, readFileSync } from 'node:fs'\n\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const tryReadFileSync = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string | undefined => {\n return existsSync(uri) ? readFileSync(uri, options) : undefined\n}\n","export function fillTemplate(template: string, data: Record<string, string>): string {\n return template.replaceAll(/\\{\\{(.*?)\\}\\}/g, (_, key: string) => data[key.trim()] ?? '')\n}\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { readNonEmptyLines, writeLines } from './file/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\nimport { union } from './string/index.ts'\n\nconst localeCompare = (a: string, b: string) => a.localeCompare(b)\n\nconst mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].toSorted(localeCompare)\n\nexport const generateIgnoreFiles = (filename: string, pkg?: string) => {\n console.log(chalk.green(`Generate ${filename} Files`))\n const cwd = INIT_CWD()\n const pm = getPackageManager()\n const singleWorkspace = pkg ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const readEntries = (location: string): string[] => readNonEmptyLines(`${location}/${filename}`)\n const writeEntries = (location: string, entries: string[]) => writeLines(`${location}/${filename}`, entries)\n const results = workspaces.map(({ location, name }) => {\n try {\n writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)))\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(`Generate ${filename} Files [${name}] [${error.message}]`)\n return 1\n }\n })\n const succeeded = results.every(result => result === 0)\n return succeeded ? 0 : 1\n}\n","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import { execFile } from 'node:child_process'\nimport FS, { readFileSync } from 'node:fs'\nimport {\n mkdir, readFile, writeFile,\n} from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\nimport { promisify } from 'node:util'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport { fillTemplate } from './fillTemplate.ts'\nimport { INIT_CWD } from './initCwd.ts'\n\nconst execFileAsync = promisify(execFile)\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst readmeTemplatesDir = PATH.resolve(packageRoot, 'templates', 'readme')\n\ninterface GenerateReadmeFilesParams {\n jobs: number\n logoLinkUrl?: string\n logoUrl?: string\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nfunction fillReadmeTemplate(template: string, data: Record<string, string>): string {\n const additionalData: Record<string, string> = { ...data, safeName: data.name.replaceAll('/', '__').replaceAll('@', '') }\n return fillTemplate(template, additionalData)\n}\n\nasync function generateTypedoc(packageLocation: string, entryPoints: string[]): Promise<string> {\n const tempDir = PATH.join(packageLocation, '.temp-typedoc')\n\n try {\n if (!FS.existsSync(tempDir)) {\n FS.mkdirSync(tempDir, { recursive: true })\n }\n\n const typedocConfig = {\n disableSources: true,\n entryPointStrategy: 'expand',\n entryPoints: entryPoints.map(ep => PATH.resolve(packageLocation, ep)),\n excludeExternals: true,\n excludeInternal: true,\n excludePrivate: true,\n githubPages: false,\n hideBreadcrumbs: true,\n hideGenerator: true,\n hidePageTitle: true,\n out: tempDir,\n plugin: ['typedoc-plugin-markdown'],\n readme: 'none',\n skipErrorChecking: true,\n sort: ['source-order'],\n theme: 'markdown',\n useCodeBlocks: true,\n }\n\n const typedocJsonPath = PATH.join(tempDir, 'typedoc.json')\n FS.writeFileSync(typedocJsonPath, JSON.stringify(typedocConfig, null, 2))\n\n try {\n await execFileAsync('npx', ['typedoc', '--options', typedocJsonPath], { cwd: process.cwd() })\n } catch {\n return ''\n }\n\n return consolidateMarkdown(tempDir)\n } catch {\n return ''\n } finally {\n try {\n FS.rmSync(tempDir, { force: true, recursive: true })\n } catch {\n // ignore cleanup errors\n }\n }\n}\n\nfunction consolidateMarkdown(tempDir: string): string {\n let consolidated = '## Reference\\n\\n'\n\n const mainReadmePath = PATH.join(tempDir, 'README.md')\n if (FS.existsSync(mainReadmePath)) {\n const mainContent = FS.readFileSync(mainReadmePath, 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n\n consolidated += mainContent + '\\n\\n'\n }\n\n consolidated += processDirectory(tempDir)\n\n return consolidated\n .replaceAll(/\\n\\n\\n+/g, '\\n\\n')\n .replaceAll(/^#### /gm, '### ')\n .replaceAll(/^##### /gm, '#### ')\n .replaceAll(/^###### /gm, '##### ')\n}\n\nfunction processDirectory(dir: string, level = 0): string {\n const indent = ' '.repeat(level)\n let content = ''\n\n try {\n const items = FS.readdirSync(dir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.isDirectory()) continue\n if (item.name === 'README.md' || !item.name.endsWith('.md')) continue\n\n const fileContent = FS.readFileSync(PATH.join(dir, item.name), 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n const moduleName = item.name.replace('.md', '')\n\n content += `\\n\\n${indent}### <a id=\"${moduleName}\"></a>${moduleName}\\n\\n`\n content += fileContent\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n }\n\n for (const item of items) {\n if (!item.isDirectory()) continue\n if (item.name === 'spec' || item.name.includes('.spec')) continue\n\n content += `\\n\\n${indent}### ${item.name}\\n`\n content += processDirectory(PATH.join(dir, item.name), level + 1)\n }\n } catch {\n // skip unreadable directories\n }\n\n return content\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport const DEFAULT_README_TEMPLATE = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.template.md'), 'utf8')\nexport const DEFAULT_README_BODY = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.body.md'), 'utf8')\n\nexport function applyLogoConfig(template: string, logoUrl?: string, logoLinkUrl?: string): string {\n let result = template\n if (logoUrl) {\n result = result.replace(/\\[logo]: .+/, `[logo]: ${logoUrl}`)\n if (logoLinkUrl) {\n result = result.replace(/\\[!\\[logo]\\[]][^)]*\\)/, `[![logo][]](${logoLinkUrl})`)\n }\n } else {\n result = result.replace(/\\[!\\[logo]\\[]][^\\n]*\\n*/, '')\n result = result.replace(/\\[logo]: [^\\n]*\\n?/, '')\n }\n return result\n}\n\nexport function resolveTemplatePath(templatePath?: string): string {\n const cwd = INIT_CWD()\n return templatePath ?? PATH.join(cwd, '.xy', 'README.template.md')\n}\n\nasync function loadOrCreateTemplate(resolvedTemplatePath: string): Promise<{\n created: boolean\n template: string\n}> {\n try {\n const template = await readFile(resolvedTemplatePath, 'utf8')\n return { created: false, template }\n } catch {\n console.log(chalk.yellow(`Template not found: ${resolvedTemplatePath}`))\n const shouldCreate = await askConfirmation('Would you like to create a stock template? (y/N) ')\n if (!shouldCreate) {\n throw new Error('Template creation declined')\n }\n const template = DEFAULT_README_TEMPLATE\n await scaffoldTemplate(resolvedTemplatePath, template)\n return { created: true, template }\n }\n}\n\nexport async function scaffoldTemplate(resolvedTemplatePath: string, template: string): Promise<void> {\n const xyDir = PATH.dirname(resolvedTemplatePath)\n await mkdir(xyDir, { recursive: true })\n await writeFile(resolvedTemplatePath, template)\n console.log(chalk.green(`Created template: ${resolvedTemplatePath}`))\n const bodyPath = PATH.join(xyDir, 'README.body.md')\n await writeFile(bodyPath, DEFAULT_README_BODY)\n console.log(chalk.green(`Created body template: ${bodyPath}`))\n}\n\nasync function resolveBody(location: string, defaultBody: string): Promise<string> {\n const localBodyPath = PATH.join(location, 'README.body.md')\n try {\n return await readFile(localBodyPath, 'utf8')\n } catch {\n return defaultBody\n }\n}\n\nasync function generateReadmeForWorkspace(\n location: string,\n name: string,\n template: string,\n defaultBody: string,\n typedoc: boolean,\n verbose: boolean,\n pm: string,\n): Promise<boolean> {\n try {\n const pkgJsonPath = PATH.join(location, 'package.json')\n const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8')) as Record<string, string>\n const body = await resolveBody(location, defaultBody)\n const typedocContent = typedoc ? await generateTypedoc(location, ['src/index*.ts']) : ''\n const readmeContent = fillReadmeTemplate(template, {\n ...pkgJson, body, pm, typedoc: typedocContent,\n })\n await writeFile(PATH.join(location, 'README.md'), readmeContent)\n if (verbose) console.log(chalk.green(` ${name}`))\n return true\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.yellow(` Skipped ${location}: ${error.message}`))\n return false\n }\n}\n\nimport {\n installOutputCapture, outputStorage, runWithConcurrency,\n} from './concurrency.ts'\n\ninterface CapturedResult {\n output: string[]\n success: boolean\n}\n\nasync function loadDefaultBody(resolvedTemplatePath: string): Promise<string> {\n const xyBodyPath = PATH.join(PATH.dirname(resolvedTemplatePath), 'README.body.md')\n try {\n return await readFile(xyBodyPath, 'utf8')\n } catch {\n return DEFAULT_README_BODY\n }\n}\n\nfunction flushResults(results: CapturedResult[]): boolean {\n let failed = false\n for (const { output, success } of results) {\n for (const line of output) {\n process.stdout.write(line)\n }\n if (!success) failed = true\n }\n return failed\n}\n\nexport async function generateReadmeFiles({\n jobs, logoLinkUrl, logoUrl, pkg, templatePath, typedoc = false, verbose = false,\n}: GenerateReadmeFilesParams): Promise<number> {\n console.log(chalk.green('Generate README Files'))\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n\n let template: string\n let templateCreated: boolean\n try {\n ({ template, created: templateCreated } = await loadOrCreateTemplate(resolvedTemplatePath))\n } catch {\n return 1\n }\n\n template = applyLogoConfig(template, logoUrl, logoLinkUrl)\n\n if (templateCreated) {\n console.log(chalk.green('Generating README files for all packages...'))\n }\n\n const defaultBody = await loadDefaultBody(resolvedTemplatePath)\n const pmName = detectPackageManager()\n const pm = getPackageManager()\n const singleWorkspace = pkg && !templateCreated ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const concurrency = jobs\n const results: CapturedResult[] = Array.from({ length: workspaces.length }, () => ({ output: [], success: true }))\n\n installOutputCapture()\n\n const start = performance.now()\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n const success = await generateReadmeForWorkspace(ws.location, ws.name, template, defaultBody, typedoc, verbose, pmName)\n results[i] = { output, success }\n })\n },\n )\n\n const failed = flushResults(results)\n const ms = performance.now() - start\n console.log(chalk.blue(`Generated ${workspaces.length} README(s) in ${ms.toFixed(0)}ms`))\n\n return failed ? 1 : 0\n}\n","import { readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'gitignore')\n\nexport const gitignoreTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'template.gitignore'), 'utf8')\n","// Auto-generated — run `yarn update-latest-versions` to refresh\n// Source: nodejs.org/dist/index.json, npm registry\n\nexport const latestVersions = {\n node: '24.14.1',\n nodeLtsCodename: 'Krypton',\n npm: '11.11.0',\n pnpm: '10.33.0',\n yarn: '4.13.0',\n} as const\n","import chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { TypeScriptLoader } from 'cosmiconfig-typescript-loader'\nimport deepmerge from 'deepmerge'\n\nlet config: Record<string, unknown>\nlet rootConfigPath: string | undefined\n\nconst workspaceConfigCache = new Map<string, Record<string, unknown>>()\nconst deprecationWarned = new Set<string>()\n\nfunction createExplorer() {\n return cosmiconfig('xy', { cache: true, loaders: { '.ts': TypeScriptLoader() } })\n}\n\nexport const loadConfig = async <T extends object>(params?: T): Promise<T> => {\n if (config === undefined) {\n const cosmicConfigResult = await createExplorer().search()\n config = (cosmicConfigResult?.config ?? {}) as Record<string, unknown>\n rootConfigPath = cosmicConfigResult?.filepath\n const configFilePath = cosmicConfigResult?.filepath\n if (configFilePath !== undefined) {\n console.log(chalk.green(`Loaded config from ${configFilePath}`))\n if (config.verbose) {\n console.log(chalk.gray(`${JSON.stringify(config, null, 2)}`))\n }\n }\n }\n return deepmerge(config, params ?? {}) as T\n}\n\n/**\n * Loads the xy.config from a specific workspace directory.\n * Returns an empty object if the workspace has no config or if\n * the found config is the root config (avoids double-applying).\n */\nasync function loadWorkspaceConfig(workspaceDir: string): Promise<Record<string, unknown>> {\n const cached = workspaceConfigCache.get(workspaceDir)\n if (cached !== undefined) return cached\n\n const result = await createExplorer().search(workspaceDir)\n\n // If no config found or it's the root config, no workspace override\n if (!result || result.filepath === rootConfigPath) {\n workspaceConfigCache.set(workspaceDir, {})\n return {}\n }\n\n const wsConfig = (result.config ?? {}) as Record<string, unknown>\n workspaceConfigCache.set(workspaceDir, wsConfig)\n return wsConfig\n}\n\n/** Deprecated top-level fields that should be under `commands`. */\nconst DEPRECATED_COMMAND_FIELDS = new Set(['deplint', 'publint'])\n\n/**\n * Resolves a command's config field from a config object.\n * Prefers `commands.[name]` over top-level `[name]`.\n * Warns once per config file when a deprecated top-level field is used.\n */\nfunction resolveCommandField(\n cfg: Record<string, unknown>,\n commandName: string,\n configPath?: string,\n): Record<string, unknown> {\n const commands = cfg.commands as Record<string, unknown> | undefined\n const fromCommands = commands?.[commandName]\n const fromTopLevel = cfg[commandName]\n\n if (fromCommands !== undefined && typeof fromCommands === 'object') {\n return fromCommands as Record<string, unknown>\n }\n\n if (fromTopLevel !== undefined && typeof fromTopLevel === 'object'\n && DEPRECATED_COMMAND_FIELDS.has(commandName)) {\n const key = `${configPath ?? 'unknown'}:${commandName}`\n if (!deprecationWarned.has(key)) {\n deprecationWarned.add(key)\n console.warn(chalk.yellow(\n `[xy] Deprecated: top-level \"${commandName}\" in ${configPath ?? 'xy.config'} — move to \"commands.${commandName}\"`,\n ))\n }\n return fromTopLevel as Record<string, unknown>\n }\n\n return {}\n}\n\n/**\n * Loads a command-specific config merged from root and workspace levels.\n * The root config provides defaults; the workspace config extends/overrides.\n * Arrays (e.g. `exclude`) are unioned and maps (e.g. `packages`) are merged\n * via deepmerge, with workspace entries overriding root entries for the same key.\n */\nexport async function loadWorkspaceCommandConfig<C>(\n workspaceDir: string,\n commandName: string,\n): Promise<C> {\n // Ensure root config is loaded\n const root = await loadConfig()\n const rootCmd = resolveCommandField(root as Record<string, unknown>, commandName, rootConfigPath)\n\n const wsConfig = await loadWorkspaceConfig(workspaceDir)\n const wsConfigPath = workspaceConfigCache.has(workspaceDir) ? workspaceDir : undefined\n const wsCmd = resolveCommandField(wsConfig, commandName, wsConfigPath)\n\n return deepmerge(rootCmd, wsCmd) as C\n}\n","import { readFileSync } from 'node:fs'\nimport path from 'node:path'\n\nimport { INIT_CWD } from './initCwd.ts'\n\nexport function packageName(): string | undefined {\n if (process.env.npm_package_name) {\n return process.env.npm_package_name\n }\n try {\n const pkgPath = path.join(INIT_CWD(), 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return pkg.name as string | undefined\n } catch {\n return undefined\n }\n}\n","import { readFileSync } from 'node:fs'\n\nexport const parsedPackageJSON = (path?: string): Record<string, unknown> => {\n const pathToPackageJSON = path ?? process.env.npm_package_json ?? ''\n const packageJSON = readFileSync(pathToPackageJSON).toString()\n return JSON.parse(packageJSON) as Record<string, unknown>\n}\n","import { readdirSync, readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst repoTemplatesDir = PATH.resolve(packageRoot, 'templates', 'repo')\n\nexport interface TemplateFile {\n content: string\n relativePath: string\n}\n\nfunction collectFiles(dir: string, prefix: string): TemplateFile[] {\n const results: TemplateFile[] = []\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n const rel = prefix ? `${prefix}/${entry.name}` : entry.name\n if (entry.isDirectory()) {\n results.push(...collectFiles(PATH.resolve(dir, entry.name), rel))\n } else {\n results.push({\n content: readFileSync(PATH.resolve(dir, entry.name), 'utf8'),\n relativePath: rel,\n })\n }\n }\n return results\n}\n\nexport function loadRepoTemplateFiles(template: string, section: string): TemplateFile[] {\n const dir = PATH.resolve(repoTemplatesDir, template, section)\n return collectFiles(dir, '')\n}\n\nexport function listRepoTemplates(): string[] {\n return readdirSync(repoTemplatesDir, { withFileTypes: true })\n .filter(entry => entry.isDirectory())\n .map(entry => entry.name)\n}\n","import { spawnSync } from 'node:child_process'\n\nimport chalk from 'chalk'\n\nimport { detectPackageManager } from '../pm/index.ts'\n\nexport function runInstall(cwd?: string): boolean {\n const pm = detectPackageManager()\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n","import { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { packageName } from './packageName.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = packageName()\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import { spawn } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { packageName } from './packageName.ts'\nimport { safeExitAsync } from './safeExit.ts'\n\nexport const runStepAsync = (name: string, step: ScriptStep, exitOnFail = true, message?: string) => {\n return new Promise<number>((resolve) => {\n const [command, args, config] = step\n if (message) {\n console.log(chalk.gray(message))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n spawn(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).on('close', (code) => {\n if (code) {\n console.error(\n chalk.red(\n `Command Exited With Non-Zero Result [${chalk.gray(code)}] | ${chalk.yellow(command)} ${chalk.white(\n Array.isArray(args) ? args.join(' ') : args,\n )}`,\n ),\n )\n checkResult(name, code, 'error', exitOnFail)\n resolve(code)\n } else {\n resolve(0)\n }\n })\n })\n}\n\nexport const runStepsAsync = async (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]) => {\n return await safeExitAsync(async () => {\n const pkgName = packageName()\n console.log(chalk.green(`${name} [${pkgName}]`))\n let result = 0\n for (const [i, step] of steps.entries()) {\n result += await runStepAsync(name, step, exitOnFail, messages?.[i])\n }\n return result\n })\n}\n","import { getPackageManager } from '../pm/index.ts'\nimport { runSteps } from './runSteps.ts'\n\nexport const runXy = (command: string) => {\n const pm = getPackageManager()\n return runSteps(\n `XY [${command}]`,\n [pm.runXy([command, ...process.argv.filter((value, index) => (index > 1 ? value : undefined))])],\n )\n}\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const runXyWithWarning = (command: string) => {\n const pm = getPackageManager()\n const commandString = `${pm.command} ${command}`\n const commandXyString = `${pm.command} xy ${command}`\n console.warn(chalk.yellow(`WARNING: [${chalk.white(commandString)}] is deprecated for XY Labs Scripts.`))\n console.warn(chalk.gray(`Did you mean [${chalk.magenta(commandXyString)}]?`))\n return 1\n}\n","import { spawnSync } from 'node:child_process'\nimport { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\n\n/**\n * Attempts to run a local root package.json script instead of the built-in\n * xy command. Returns the exit code if the override ran, or undefined if\n * no override applies (no matching script or recursion guard).\n */\nexport function tryRunLocalScript(commandName: string): number | undefined {\n // Prevent infinite recursion if the local script calls yarn xy\n if (process.env.XY_LOCAL_SCRIPT === '1') return undefined\n\n // Check if root package.json has a matching script\n const rootPkgPath = PATH.resolve(process.cwd(), 'package.json')\n let rootPkg: { scripts?: Record<string, string> }\n try {\n rootPkg = JSON.parse(readFileSync(rootPkgPath, 'utf8')) as { scripts?: Record<string, string> }\n } catch {\n return undefined\n }\n\n if (!rootPkg.scripts?.[commandName]) return undefined\n\n const extraArgs = process.argv.slice(process.argv.indexOf(commandName) + 1)\n console.log(chalk.blue(`Delegating \"${commandName}\" to local script`))\n const pm = getPackageManager()\n const result = spawnSync(pm.command, ['run', commandName, ...extraArgs], {\n cwd: process.cwd(),\n encoding: 'utf8',\n env: {\n FORCE_COLOR: '3', ...process.env, XY_LOCAL_SCRIPT: '1',\n },\n shell: true,\n stdio: 'inherit',\n })\n return result.status ?? 1\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport type { SelectedUpdate } from './interfaces.ts'\n\nexport function applyUpdates(\n cwd: string,\n workspaces: Workspace[],\n updates: SelectedUpdate[],\n): number {\n const updateMap = new Map(updates.map(u => [u.name, u]))\n let modified = 0\n\n for (const ws of workspaces) {\n const pkgPath = PATH.resolve(cwd, ws.location, 'package.json')\n let content: string\n try {\n content = readFileSync(pkgPath, 'utf8')\n } catch {\n continue\n }\n\n const pkg = JSON.parse(content) as Record<string, Record<string, string>>\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies', 'peerDependencies'] as const) {\n const deps = pkg[depField]\n if (!deps) continue\n\n for (const [name, currentRange] of Object.entries(deps)) {\n const update = updateMap.get(name)\n if (!update) continue\n\n // Preserve the range prefix (~, ^, etc.)\n const prefix = (/^([~^]|>=?|<=?)/.exec(currentRange))?.[0] ?? '~'\n const newRange = `${prefix}${update.targetVersion}`\n\n if (deps[name] !== newRange) {\n deps[name] = newRange\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`)\n modified++\n console.log(chalk.gray(` Updated ${ws.name}`))\n }\n }\n\n return modified\n}\n","import { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport type { DeclaredDep, DepType } from './interfaces.ts'\n\nconst DEP_FIELDS: DepType[] = ['dependencies', 'devDependencies', 'peerDependencies']\n\nexport function collectWorkspaceDeps(\n cwd: string,\n workspaces: Workspace[],\n workspaceNames: Set<string>,\n): Map<string, DeclaredDep> {\n const depMap = new Map<string, DeclaredDep>()\n\n for (const ws of workspaces) {\n const pkgPath = PATH.resolve(cwd, ws.location, 'package.json')\n let pkg: Record<string, unknown>\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n continue\n }\n\n for (const depField of DEP_FIELDS) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [name, range] of Object.entries(deps)) {\n if (workspaceNames.has(name)) continue\n if (range.startsWith('workspace:')) continue\n\n const existing = depMap.get(name)\n if (existing) {\n if (!existing.workspaces.includes(ws.name)) {\n existing.workspaces.push(ws.name)\n }\n if (!existing.depTypes.includes(depField)) {\n existing.depTypes.push(depField)\n }\n if (!existing.ranges.includes(range)) {\n existing.ranges.push(range)\n }\n } else {\n depMap.set(name, {\n depTypes: [depField],\n name,\n ranges: [range],\n workspaces: [ws.name],\n })\n }\n }\n }\n }\n\n return depMap\n}\n","import { runWithConcurrency } from '../concurrency.ts'\nimport type { RegistryInfo } from './interfaces.ts'\n\nconst REGISTRY_BASE = 'https://registry.npmjs.org'\n\nexport async function fetchRegistryInfo(packageName: string): Promise<RegistryInfo> {\n try {\n const url = `${REGISTRY_BASE}/${encodeURIComponent(packageName)}`\n const res = await fetch(url, { headers: { Accept: 'application/vnd.npm.install-v1+json' } })\n if (!res.ok) {\n return { distTags: {}, versions: [] }\n }\n const data = await res.json() as {\n 'dist-tags'?: Record<string, string>\n 'versions'?: Record<string, unknown>\n }\n return {\n distTags: data['dist-tags'] ?? {},\n versions: Object.keys(data.versions ?? {}),\n }\n } catch {\n return { distTags: {}, versions: [] }\n }\n}\n\nexport async function fetchAllRegistryInfo(\n packageNames: string[],\n concurrency = 16,\n): Promise<Map<string, RegistryInfo>> {\n const results = new Map<string, RegistryInfo>()\n let completed = 0\n const total = packageNames.length\n\n await runWithConcurrency(packageNames, concurrency, async (name) => {\n results.set(name, await fetchRegistryInfo(name))\n completed++\n if (completed % 25 === 0 || completed === total) {\n process.stderr.write(`\\r Fetched ${completed}/${total} packages...`)\n }\n })\n\n if (total > 0) {\n process.stderr.write('\\n')\n }\n\n return results\n}\n","import {\n createPrompt,\n ExitPromptError,\n isDownKey,\n isEnterKey,\n isSpaceKey,\n isUpKey,\n useKeypress,\n useRef,\n useState,\n} from '@inquirer/core'\nimport chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { ResolvedDep, SelectedUpdate } from './interfaces.ts'\n\n// Selection: -1 = skip, 0 = wanted, 1 = latest, 2 = next\ntype Selection = -1 | 0 | 1 | 2\n\ninterface ColumnWidths {\n current: number\n latest: number\n name: number\n next: number\n wanted: number\n}\n\nfunction versionColor(version: string | undefined, current: string | undefined): (text: string) => string {\n if (!version || !current) return chalk.gray\n if (version === current) return chalk.gray\n const diff = semver.diff(current, version)\n if (diff === 'major' || diff === 'premajor') return chalk.red\n if (diff === 'minor' || diff === 'preminor') return chalk.yellow\n return chalk.green\n}\n\nfunction pad(raw: string, colored: string, width: number): string {\n return colored + ' '.repeat(Math.max(0, width - raw.length))\n}\n\nfunction dot(selected: boolean): string {\n return selected ? chalk.green('ā—') : chalk.dim('ā—‹')\n}\n\nfunction renderHeader(w: ColumnWidths): string {\n const header = [\n ' ',\n chalk.bold('Package'.padEnd(w.name)),\n chalk.bold('Current'.padEnd(w.current)),\n chalk.bold(' Wanted'.padEnd(w.wanted + 2)),\n chalk.bold(' Latest'.padEnd(w.latest + 2)),\n chalk.bold(' Next/RC'.padEnd(w.next + 2)),\n ].join(' ')\n const totalWidth = w.name + w.current + w.wanted + w.latest + w.next + 24\n return `${header}\\n${chalk.gray('─'.repeat(totalWidth))}`\n}\n\nfunction renderRow(\n dep: ResolvedDep,\n selection: Selection,\n active: boolean,\n w: ColumnWidths,\n): string {\n const pointer = active ? chalk.cyan('āÆ') : ' '\n const rawName = dep.name\n const name = active ? chalk.white(rawName) : chalk.gray(rawName)\n const rawCurrent = dep.current ?? '-'\n const current = chalk.gray(rawCurrent)\n\n const rawWanted = dep.wanted ?? '-'\n const wantedColorFn = dep.wanted ? versionColor(dep.wanted, dep.current) : chalk.gray\n const wantedDot = dep.wanted ? dot(selection === 0) : ' '\n const wanted = `${wantedDot} ${pad(rawWanted, wantedColorFn(rawWanted), w.wanted)}`\n\n const rawLatest = dep.latest ?? '-'\n const latestColorFn = dep.latest ? versionColor(dep.latest, dep.current) : chalk.gray\n const latestDot = dep.latest ? dot(selection === 1) : ' '\n const latest = `${latestDot} ${pad(rawLatest, latestColorFn(rawLatest), w.latest)}`\n\n const rawNext = dep.next ?? '-'\n const nextColorFn = dep.next ? versionColor(dep.next, dep.current) : chalk.gray\n const nextDot = dep.next ? dot(selection === 2) : ' '\n const next = `${nextDot} ${pad(rawNext, nextColorFn(rawNext), w.next)}`\n\n return `${pointer} ${pad(rawName, name, w.name)} ${pad(rawCurrent, current, w.current)} ${wanted} ${latest} ${next}`\n}\n\nfunction getAvailableSelections(dep: ResolvedDep): Selection[] {\n const available: Selection[] = [-1]\n if (dep.wanted) available.push(0)\n if (dep.latest && dep.latest !== dep.wanted) available.push(1)\n if (dep.next) available.push(2)\n return available\n}\n\nfunction getTargetVersion(dep: ResolvedDep, selection: Selection): string | undefined {\n if (selection === 0) return dep.wanted\n if (selection === 1) return dep.latest\n if (selection === 2) return dep.next\n return undefined\n}\n\nfunction computeWidths(rows: ResolvedDep[]): ColumnWidths {\n let name = 7\n let current = 7\n let wanted = 6\n let latest = 6\n let next = 7\n for (const dep of rows) {\n name = Math.max(name, dep.name.length)\n current = Math.max(current, (dep.current ?? '-').length)\n wanted = Math.max(wanted, (dep.wanted ?? '-').length)\n latest = Math.max(latest, (dep.latest ?? '-').length)\n next = Math.max(next, (dep.next ?? '-').length)\n }\n return {\n current,\n latest,\n name,\n next,\n wanted,\n }\n}\n\nfunction renderPage(\n rows: ResolvedDep[],\n cursor: number,\n selections: Selection[],\n w: ColumnWidths,\n pageSize: number,\n): string {\n const total = rows.length\n let start = 0\n if (total > pageSize) {\n start = Math.max(0, Math.min(cursor - Math.floor(pageSize / 2), total - pageSize))\n }\n const end = Math.min(start + pageSize, total)\n\n const lines: string[] = []\n for (let i = start; i < end; i++) {\n lines.push(renderRow(rows[i], selections[i], i === cursor, w))\n }\n\n if (total > pageSize) {\n if (start > 0) lines.unshift(chalk.dim(' ↑ more'))\n if (end < total) lines.push(chalk.dim(' ↓ more'))\n }\n\n return lines.join('\\n')\n}\n\nconst updoPrompt = createPrompt<SelectedUpdate[], { rows: ResolvedDep[] }>((config, done) => {\n const { rows } = config\n const [cursor, setCursor] = useState(0)\n const [tick, setTick] = useState(0)\n const availableSelections = useRef(rows.map(r => getAvailableSelections(r)))\n const selections = useRef<Selection[]>(rows.map(() => -1))\n const widths = useRef(computeWidths(rows))\n\n useKeypress((key) => {\n if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {\n done([])\n return\n }\n\n if (isEnterKey(key)) {\n const results: SelectedUpdate[] = []\n for (const [i, dep] of rows.entries()) {\n const version = getTargetVersion(dep, selections.current[i])\n if (version) {\n results.push({\n depTypes: dep.depTypes,\n name: dep.name,\n targetVersion: version,\n workspaces: dep.workspaces,\n })\n }\n }\n done(results)\n return\n }\n\n if (isUpKey(key)) {\n setCursor(Math.max(0, cursor - 1))\n } else if (isDownKey(key)) {\n setCursor(Math.min(rows.length - 1, cursor + 1))\n } else if (isSpaceKey(key)) {\n const available = availableSelections.current[cursor]\n const currentSel = selections.current[cursor]\n const currentIdx = available.indexOf(currentSel)\n const nextIdx = (currentIdx + 1) % available.length\n selections.current[cursor] = available[nextIdx]\n setTick(tick + 1)\n }\n })\n\n const w = widths.current\n const header = renderHeader(w)\n const page = renderPage(rows, cursor, selections.current, w, 20)\n\n const selectedCount = selections.current.filter(s => s >= 0).length\n const status = chalk.gray(` ${selectedCount} selected ↑/↓ navigate space cycle version enter confirm`)\n\n return `${header}\\n${page}\\n${status}`\n})\n\nexport async function interactiveSelect(\n deps: ResolvedDep[],\n): Promise<SelectedUpdate[]> {\n const updatable = deps.filter(d => d.updateAvailable)\n if (updatable.length === 0) {\n console.log(chalk.green('\\nAll packages are up to date!'))\n return []\n }\n\n if (!process.stdout.isTTY) {\n console.log(chalk.yellow('Non-interactive environment detected, skipping selection.'))\n return []\n }\n\n try {\n return await updoPrompt({ rows: updatable })\n } catch (error) {\n if (error instanceof ExitPromptError) {\n return []\n }\n throw error\n }\n}\n","import chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { ResolvedDep } from './interfaces.ts'\n\ninterface Column {\n color: (value: string, dep: ResolvedDep) => string\n header: string\n value: (dep: ResolvedDep) => string\n}\n\nfunction versionColor(version: string | undefined, current: string | undefined): string {\n if (!version || !current) return chalk.gray(version ?? '-')\n if (version === current) return chalk.gray(version)\n const diff = semver.diff(current, version)\n if (diff === 'major' || diff === 'premajor') return chalk.red(version)\n if (diff === 'minor' || diff === 'preminor') return chalk.yellow(version)\n return chalk.green(version)\n}\n\nconst columns: Column[] = [\n {\n color: (_v, dep) => dep.updateAvailable ? chalk.white(dep.name) : chalk.gray(dep.name),\n header: 'Package',\n value: dep => dep.name,\n },\n {\n color: (_v, dep) => chalk.gray(dep.current ?? '-'),\n header: 'Current',\n value: dep => dep.current ?? '-',\n },\n {\n color: (_v, dep) => versionColor(dep.wanted, dep.current),\n header: 'Wanted',\n value: dep => dep.wanted ?? '-',\n },\n {\n color: (_v, dep) => versionColor(dep.latest, dep.current),\n header: 'Latest',\n value: dep => dep.latest ?? '-',\n },\n {\n color: (_v, dep) => versionColor(dep.next, dep.current),\n header: 'Next/RC',\n value: dep => dep.next ?? '-',\n },\n {\n color: (_v, dep) => chalk.gray(dep.depTypes.join(', ')),\n header: 'Type',\n value: dep => dep.depTypes.join(', '),\n },\n]\n\nexport function renderTable(deps: ResolvedDep[]): void {\n const updatable = deps.filter(d => d.updateAvailable)\n if (updatable.length === 0) {\n console.log(chalk.green('\\nAll packages are up to date!'))\n return\n }\n\n // Calculate column widths\n const widths = columns.map((col) => {\n let maxData = 0\n for (const dep of updatable) {\n maxData = Math.max(maxData, col.value(dep).length)\n }\n return Math.max(col.header.length, maxData)\n })\n\n // Render header\n const header = columns.map((col, i) => chalk.bold(col.header.padEnd(widths[i]))).join(' ')\n console.log(`\\n${header}`)\n let totalWidth = -2\n for (const w of widths) {\n totalWidth += w + 2\n }\n console.log(chalk.gray('─'.repeat(totalWidth)))\n\n // Render rows\n for (const dep of updatable) {\n const row = columns.map((col, i) => {\n const raw = col.value(dep)\n const colored = col.color(raw, dep)\n // Pad based on raw length, not colored length (chalk adds escape codes)\n const padding = widths[i] - raw.length\n return colored + ' '.repeat(Math.max(0, padding))\n }).join(' ')\n console.log(row)\n }\n\n console.log()\n}\n","import semver from 'semver'\n\nimport type {\n DeclaredDep, RegistryInfo, ResolvedDep,\n} from './interfaces.ts'\n\nfunction computeWanted(info: RegistryInfo, ranges: string[]): string | undefined {\n const candidates = ranges.map(range => semver.maxSatisfying(info.versions, range))\n const valid = candidates.filter((v): v is string => v !== null)\n if (valid.length === 0) return undefined\n\n let min = valid[0]\n for (const v of valid) {\n if (semver.lt(v, min)) min = v\n }\n return min\n}\n\nfunction hasNewerVersion(version: string | undefined, current: string): boolean {\n return version !== undefined && semver.gt(version, current)\n}\n\nfunction isUpdateAvailable(current: string | undefined, wanted: string | undefined, latest: string | undefined, next: string | undefined): boolean {\n if (!current) return false\n return hasNewerVersion(wanted, current)\n || hasNewerVersion(latest, current)\n || hasNewerVersion(next, current)\n}\n\nexport function resolveVersions(\n deps: Map<string, DeclaredDep>,\n registry: Map<string, RegistryInfo>,\n installedVersions: Map<string, string>,\n): ResolvedDep[] {\n const resolved: ResolvedDep[] = []\n\n for (const [name, dep] of deps) {\n const info = registry.get(name)\n const current = installedVersions.get(name)\n const wanted = info ? computeWanted(info, dep.ranges) : undefined\n const latest = info?.distTags.latest\n const next = info?.distTags.next ?? info?.distTags.rc\n const updateAvailable = isUpdateAvailable(current, wanted, latest, next)\n\n resolved.push({\n current,\n declaredRange: dep.ranges.length === 1 ? dep.ranges[0] : dep.ranges.join(' | '),\n depTypes: dep.depTypes,\n latest,\n name,\n next: next && latest && next !== latest ? next : undefined,\n updateAvailable,\n wanted: wanted && current && wanted !== current ? wanted : undefined,\n workspaces: dep.workspaces,\n })\n }\n\n return resolved.toSorted((a, b) => {\n if (a.updateAvailable !== b.updateAvailable) return a.updateAvailable ? -1 : 1\n return a.name.localeCompare(b.name)\n })\n}\n","import chalk from 'chalk'\n\nimport type { PackageManager } from '../../pm/index.ts'\nimport { INIT_CWD } from '../initCwd.ts'\nimport { runSteps } from '../runSteps.ts'\nimport { applyUpdates } from './applyUpdates.ts'\nimport { collectWorkspaceDeps } from './collectWorkspaceDeps.ts'\nimport { fetchAllRegistryInfo } from './fetchRegistryInfo.ts'\nimport { interactiveSelect } from './interactiveSelect.ts'\nimport { resolveVersions } from './resolveVersions.ts'\n\nexport interface UpdoOptions {\n latest?: boolean\n}\n\nexport async function runUpdo(\n pm: PackageManager,\n _options: UpdoOptions = {},\n): Promise<number> {\n const cwd = INIT_CWD()\n const workspaces = pm.listWorkspaces()\n const workspaceNames = new Set(workspaces.map(ws => ws.name))\n\n // Step 1: Collect all declared dependencies\n console.log(chalk.gray('Scanning workspace dependencies...'))\n const declaredDeps = collectWorkspaceDeps(cwd, workspaces, workspaceNames)\n console.log(chalk.gray(` Found ${declaredDeps.size} unique dependencies across ${workspaces.length} workspaces`))\n\n // Step 2: Fetch registry info in parallel\n console.log(chalk.gray('Fetching registry info...'))\n const registryInfo = await fetchAllRegistryInfo([...declaredDeps.keys()])\n\n // Step 3: Get currently installed versions\n console.log(chalk.gray('Reading installed versions...'))\n const installedVersions = pm.listInstalledVersions()\n\n // Step 4: Resolve and compare\n const resolved = resolveVersions(declaredDeps, registryInfo, installedVersions)\n\n // Step 5: Interactive table + selection (unified)\n const updates = await interactiveSelect(resolved)\n if (updates.length === 0) {\n console.log(chalk.gray('No updates selected.'))\n return 0\n }\n\n // Step 6: Apply updates to package.json files\n console.log(chalk.gray(`\\nApplying ${updates.length} updates...`))\n const modified = applyUpdates(cwd, workspaces, updates)\n console.log(chalk.gray(` Modified ${modified} package.json files`))\n\n // Step 7: Install and dedupe\n console.log(chalk.gray('Installing updated dependencies...'))\n return runSteps('Updo', [\n pm.install(),\n pm.dedupe(),\n ], true)\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const analyze = () => {\n const pm = getPackageManager()\n return runSteps('Analyze', [[pm.command, ['source-map-explorer', 'build/static/js/*.ts']]])\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface BuildParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const build = async ({\n incremental, jobs, target, verbose, pkg,\n}: BuildParams) => {\n const pkgOptions = (pkg === undefined) ? [] : [pkg] // must go first\n const incrementalOptions = incremental ? ['-i'] : []\n const verboseOptions = verbose ? ['-v'] : []\n const targetOptions = (target === undefined) ? [] : ['-t', target]\n const jobsOptions = ['-j', `${jobs}`]\n\n const pm = getPackageManager()\n return runStepsAsync(`Build${incremental ? '-Incremental' : ''} [${pkg ?? 'All'}]`, [\n pm.runXy(['compile', ...pkgOptions, ...targetOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions, '--types', 'tsup']),\n pm.runXy(['publint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['deplint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['lint', ...pkgOptions, ...verboseOptions, ...incrementalOptions]),\n ])\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeCommandTemplates, claudeMdRuleTemplates, claudeSkillTemplates,\n INIT_CWD, XYLABS_COMMANDS_PREFIX, XYLABS_RULES_PREFIX, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\ninterface CheckResult {\n missing: string[]\n outdated: string[]\n stale: string[]\n}\n\nconst checkCommands = (commandsDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeCommandTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(filename)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(filename)\n }\n }\n\n const templateNames = new Set(Object.keys(templates))\n const stale = existsSync(commandsDir)\n ? readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md') && !templateNames.has(f))\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst checkRules = (rulesDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeMdRuleTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(filename)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(filename)\n }\n }\n\n const templateNames = new Set(Object.keys(templates))\n const stale = existsSync(rulesDir)\n ? readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md') && !templateNames.has(f))\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst checkSkills = (skillsDir: string): CheckResult => {\n const pm = detectPackageManager()\n const rawTemplates = claudeSkillTemplates()\n\n const missing: string[] = []\n const outdated: string[] = []\n\n for (const [skillName, files] of Object.entries(rawTemplates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n if (!existsSync(skillDir)) {\n missing.push(skillName)\n continue\n }\n for (const [filename, rawContent] of Object.entries(files)) {\n const content = applyPackageManager(rawContent, pm)\n const targetPath = PATH.resolve(skillDir, filename)\n if (!existsSync(targetPath)) {\n missing.push(`${skillName}/${filename}`)\n } else if (readFileSync(targetPath, 'utf8') !== content) {\n outdated.push(`${skillName}/${filename}`)\n }\n }\n }\n\n const templateNames = new Set(Object.keys(rawTemplates))\n const stale = existsSync(skillsDir)\n ? readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory() && !templateNames.has(f),\n )\n : []\n\n return {\n missing, outdated, stale,\n }\n}\n\nconst logSection = (label: string, result: CheckResult): boolean => {\n const issues = [...result.missing, ...result.outdated, ...result.stale]\n if (issues.length === 0) {\n console.log(chalk.green(` \\u2714 ${label}`))\n return true\n }\n\n console.log(chalk.red(` \\u2718 ${label}`))\n for (const file of result.missing) {\n console.log(chalk.yellow(` missing: ${file}`))\n }\n for (const file of result.outdated) {\n console.log(chalk.yellow(` outdated: ${file}`))\n }\n for (const file of result.stale) {\n console.log(chalk.yellow(` stale: ${file}`))\n }\n return false\n}\n\nexport function claudeCheck(): number {\n const cwd = INIT_CWD()\n const claudeDir = PATH.resolve(cwd, '.claude')\n\n console.log(chalk.bold('Claude configuration check:'))\n console.log()\n\n const commandsResult = checkCommands(PATH.resolve(claudeDir, 'commands'))\n const rulesResult = checkRules(PATH.resolve(claudeDir, 'rules'))\n const skillsResult = checkSkills(PATH.resolve(claudeDir, 'skills'))\n\n const commandsOk = logSection('commands', commandsResult)\n const rulesOk = logSection('rules', rulesResult)\n const skillsOk = logSection('skills', skillsResult)\n\n console.log()\n if (commandsOk && rulesOk && skillsOk) {\n console.log(chalk.green('All Claude configuration is up to date.'))\n } else {\n console.log(chalk.yellow('Run `xy claude init` to sync all configuration.'))\n }\n\n return 0\n}\n","import {\n existsSync, readdirSync, rmSync, unlinkSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nfunction removeFile(filePath: string, label: string): boolean {\n if (existsSync(filePath)) {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nfunction removeDir(dirPath: string, label: string): boolean {\n if (existsSync(dirPath)) {\n rmSync(dirPath, { recursive: true })\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nexport function claudeClean(): number {\n console.log(chalk.green('Clean Claude configuration'))\n const cwd = INIT_CWD()\n let removed = 0\n\n // Root-level files\n const rootFiles = ['CLAUDE.md', 'CLAUDE.local.md']\n for (const file of rootFiles) {\n if (removeFile(PATH.resolve(cwd, file), file)) removed++\n }\n\n // .claude directory\n if (removeDir(PATH.resolve(cwd, '.claude'), '.claude/')) removed++\n\n // Package-level CLAUDE.md files\n const packagesDir = PATH.resolve(cwd, 'packages')\n if (existsSync(packagesDir)) {\n const findClaudeFiles = (dir: string, prefix: string) => {\n const entries = readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = PATH.resolve(dir, entry.name)\n const label = `${prefix}${entry.name}`\n if (entry.isFile() && (entry.name === 'CLAUDE.md' || entry.name === 'CLAUDE.local.md')) {\n if (removeFile(fullPath, label)) removed++\n } else if (entry.isDirectory() && entry.name === '.claude') {\n if (removeDir(fullPath, `${label}/`)) removed++\n } else if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {\n findClaudeFiles(fullPath, `${label}/`)\n }\n }\n }\n findClaudeFiles(packagesDir, 'packages/')\n }\n\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} item(s)`))\n } else {\n console.log(chalk.gray(' Nothing to clean'))\n }\n\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeCommandTemplates, INIT_CWD,\n LEGACY_COMMANDS_PREFIX, XYLABS_COMMANDS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncCommandFiles = (commandsDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeCommandTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleCommands = (commandsDir: string, templateNames: Set<string>) => {\n const existingCommands = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingCommands) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(commandsDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst removeLegacyCommands = (commandsDir: string): number => {\n const legacyFiles = readdirSync(commandsDir).filter(f => f.startsWith(LEGACY_COMMANDS_PREFIX) && f.endsWith('.md'))\n for (const file of legacyFiles) {\n unlinkSync(PATH.resolve(commandsDir, file))\n }\n return legacyFiles.length\n}\n\nconst logCommandsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: already up to date`))\n }\n}\n\nexport const claudeCommands = (): number => {\n const cwd = INIT_CWD()\n const commandsDir = PATH.resolve(cwd, '.claude', 'commands')\n\n mkdirSync(commandsDir, { recursive: true })\n\n const legacy = removeLegacyCommands(commandsDir)\n const {\n created, templateNames, updated,\n } = syncCommandFiles(commandsDir)\n const removed = removeStaleCommands(commandsDir, templateNames)\n logCommandsResult(created, updated, removed + legacy)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeMdLocalTemplate, claudeMdRuleTemplates, INIT_CWD,\n XYLABS_RULES_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncRuleFiles = (rulesDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeMdRuleTemplates()\n const templates: Record<string, string> = {}\n for (const [name, content] of Object.entries(rawTemplates)) {\n templates[name] = applyPackageManager(content, pm)\n }\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleRules = (rulesDir: string, templateNames: Set<string>) => {\n const existingRules = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingRules) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(rulesDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst logRulesResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: already up to date`))\n }\n}\n\nconst ensureProjectClaudeMd = (cwd: string, force?: boolean) => {\n const projectPath = PATH.resolve(cwd, 'CLAUDE.md')\n\n if (!existsSync(projectPath) || force) {\n if (force && existsSync(projectPath)) {\n console.log(chalk.yellow('Regenerating CLAUDE.md'))\n }\n console.log(chalk.green('Generating CLAUDE.md via claude /init...'))\n const result = spawnSync('claude', ['-p', '/init', '--allowedTools', 'Read', 'Write', 'Glob', 'Grep'], {\n cwd,\n shell: true,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.error(chalk.red('claude /init failed — is Claude Code installed?'))\n return 1\n }\n } else {\n console.log(chalk.gray('CLAUDE.md already exists (skipped, use --force to regenerate)'))\n }\n return 0\n}\n\nconst ensureLocalClaudeMd = (cwd: string) => {\n const localPath = PATH.resolve(cwd, 'CLAUDE.local.md')\n\n if (existsSync(localPath)) {\n console.log(chalk.gray('CLAUDE.local.md already exists (skipped)'))\n } else {\n writeFileSync(localPath, claudeMdLocalTemplate(), 'utf8')\n console.log(chalk.green('Generated CLAUDE.local.md'))\n }\n}\n\nexport const claudeRules = ({ force }: { force?: boolean } = {}): number => {\n const cwd = INIT_CWD()\n const rulesDir = PATH.resolve(cwd, '.claude', 'rules')\n\n mkdirSync(rulesDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncRuleFiles(rulesDir)\n const removed = removeStaleRules(rulesDir, templateNames)\n logRulesResult(created, updated, removed)\n const claudeMdResult = ensureProjectClaudeMd(cwd, force)\n ensureLocalClaudeMd(cwd)\n\n return claudeMdResult ?? 0\n}\n","import {\n existsSync, mkdirSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nexport type SettingsLevel = 'restrictive' | 'permissive'\n\nconst DENY_LIST = [\n 'Bash(git push --force *)',\n 'Bash(git reset --hard *)',\n 'Bash(rm -rf /*)',\n]\n\nconst RESTRICTIVE_ALLOW = [\n 'Bash(git *)',\n 'Bash(yarn *)',\n 'Bash(pnpm *)',\n 'Bash(npx *)',\n 'Bash(ls *)',\n 'Bash(mkdir *)',\n 'Bash(cp *)',\n 'Bash(mv *)',\n 'Bash(rm *)',\n 'Bash(cat *)',\n 'Bash(head *)',\n 'Bash(tail *)',\n 'Bash(echo *)',\n 'Bash(pwd)',\n 'Bash(which *)',\n 'Bash(grep *)',\n 'Bash(find *)',\n 'Bash(wc *)',\n 'Bash(npm view *)',\n 'Bash(gh *)',\n 'Read',\n 'Edit',\n 'Write',\n 'Glob',\n 'Grep',\n 'Skill',\n]\n\nconst PERMISSIVE_ALLOW = [\n ...RESTRICTIVE_ALLOW,\n 'Bash(node *)',\n 'Bash(python3 *)',\n 'Bash(claude *)',\n 'Bash(sed *)',\n 'Bash(xargs *)',\n 'Bash(tee *)',\n]\n\nfunction buildSettings(level: SettingsLevel): object {\n return {\n permissions: {\n allow: level === 'restrictive' ? RESTRICTIVE_ALLOW : PERMISSIVE_ALLOW,\n deny: DENY_LIST,\n },\n }\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport async function claudeSettings({ level = 'permissive' }: { level?: SettingsLevel } = {}): Promise<number> {\n const cwd = INIT_CWD()\n const claudeDir = PATH.resolve(cwd, '.claude')\n const settingsPath = PATH.resolve(claudeDir, 'settings.local.json')\n\n mkdirSync(claudeDir, { recursive: true })\n\n if (existsSync(settingsPath)) {\n const confirmed = await askConfirmation(\n chalk.yellow(`${settingsPath} already exists. Replace it? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray('Skipped — existing settings.local.json preserved'))\n return 0\n }\n }\n\n const settings = buildSettings(level)\n writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(`Generated .claude/settings.local.json (${level})`))\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n applyPackageManager, claudeSkillTemplates, INIT_CWD, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nconst syncSkillFiles = (skillsDir: string) => {\n const pm = detectPackageManager()\n const rawTemplates = claudeSkillTemplates()\n const templateNames = new Set(Object.keys(rawTemplates))\n let updated = 0\n let created = 0\n\n for (const [skillName, files] of Object.entries(rawTemplates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n mkdirSync(skillDir, { recursive: true })\n\n for (const [filename, rawContent] of Object.entries(files)) {\n const content = applyPackageManager(rawContent, pm)\n const targetPath = PATH.resolve(skillDir, filename)\n mkdirSync(PATH.dirname(targetPath), { recursive: true })\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleSkills = (skillsDir: string, templateNames: Set<string>) => {\n const existingSkills = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n let removed = 0\n\n for (const dir of existingSkills) {\n if (!templateNames.has(dir)) {\n rmSync(PATH.resolve(skillsDir, dir), { recursive: true })\n removed++\n }\n }\n\n return removed\n}\n\nconst logSkillsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: already up to date`))\n }\n}\n\nexport const claudeSkills = (): number => {\n const cwd = INIT_CWD()\n const skillsDir = PATH.resolve(cwd, '.claude', 'skills')\n\n mkdirSync(skillsDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncSkillFiles(skillsDir)\n const removed = removeStaleSkills(skillsDir, templateNames)\n logSkillsResult(created, updated, removed)\n\n return 0\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CleanParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface CleanPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const clean = async ({ verbose, pkg }: CleanParams) => {\n return pkg\n ? await cleanPackage({ pkg, verbose })\n : cleanAll({ verbose })\n}\n\nexport const cleanPackage = ({ pkg }: CleanPackageParams) => {\n const pm = getPackageManager()\n return runStepsAsync(`Clean [${pkg}]`, [pm.runInWorkspace(pkg, 'package-clean')])\n}\n\nexport const cleanAll = ({ verbose }: CleanParams) => {\n const pm = getPackageManager()\n return runStepsAsync('Clean', [pm.foreachWorkspace('package-clean', [], { jobs: 64, verbose })])\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob, packageName } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const cleanDocs = () => {\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning Docs [${pkgName}]`))\n for (const { location } of getPackageManager().listWorkspaces()) deleteGlob(path.join(location, 'docs'))\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n deleteGlob, INIT_CWD, packageName,\n} from '../lib/index.ts'\n\nexport const cleanESLint = () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning ESLint [${pkgName}]`))\n\n deleteGlob(path.join(pkg, '.eslintcache'))\n\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CompileParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\ninterface CompilePackageParams {\n pkg: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const compile = ({\n verbose, target, pkg, incremental, publint, jobs,\n}: CompileParams) => {\n return pkg\n ? compilePackage({\n pkg, publint, target, verbose,\n })\n : compileAll({\n incremental, jobs, publint, target, verbose,\n })\n}\n\nexport const compilePackage = ({ target, pkg }: CompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runSteps(\n `Compile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-compile', targetOptions)],\n )\n}\n\nexport const compileAll = ({\n jobs, verbose, target, incremental,\n}: CompileParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n return runSteps(`Compile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-compile', targetOptions, {\n incremental, jobs, topological: true, verbose,\n }),\n ])\n}\n","import path from 'node:path/posix'\n\nimport chalk from 'chalk'\nimport cpy from 'cpy'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CopyAssetsParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nconst copyPackageTargetAssets = async (target: 'esm' | 'cjs', name: string, location: string) => {\n try {\n const values = await cpy(\n ['**/*.jpg', '**/*.png', '**/*.gif', '**/*.svg', '**/*.webp', '**/*.sass', '**/*.scss', '**/*.gif', '**/*.css'],\n `../dist/${target}`,\n {\n cwd: path.join(process.cwd(), location, 'src'),\n flat: false,\n },\n )\n for (const value of values) {\n console.log(`${value.split('/').pop()} => ./dist/${target}`)\n }\n return 0\n } catch (reason) {\n console.log(`Copy Failed: ${name}: ${String(reason)}`)\n return 1\n }\n}\n\nconst copyTargetAssets = async (target: 'esm' | 'cjs', pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n\n console.log(chalk.green(`Copying Assets [${target.toUpperCase()}]`))\n\n // finds the package or returns all if undefined\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n if (workspaceList.length === 0) {\n console.error(`Package not found [${pkg}]`)\n } else {\n const results = await Promise.all(\n workspaceList.map(async (workspace) => {\n const { location, name } = workspace\n return await copyPackageTargetAssets(target, name, location)\n }),\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n return results.reduce((prev, result) => prev || result, 0)\n }\n return 0\n}\n\nexport const copyAssets = async ({ target, pkg }: CopyAssetsParams) => {\n switch (target) {\n case 'esm': {\n return await copyTargetAssets('esm', pkg)\n }\n case 'cjs': {\n return await copyTargetAssets('cjs', pkg)\n }\n default: {\n return (await copyTargetAssets('esm', pkg)) || (await copyTargetAssets('cjs', pkg))\n }\n }\n}\n","import { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport {\n detectWorkspaceCycles, packageName, printWorkspaceCycles, runSteps,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CycleParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n verbose?: boolean\n}\n\ninterface CyclePackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const cycle = async ({ verbose, pkg }: CycleParams) => {\n return pkg\n ? cyclePackage({ pkg, verbose })\n : await cycleAll({ verbose })\n}\n\nexport const cyclePackage = ({ pkg, verbose }: CyclePackageParams) => {\n const pm = getPackageManager()\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n return runSteps(\n `Cycle [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-cycle', verboseOptions)],\n )\n}\n\nexport const cycleAll = async ({ verbose = false }: { verbose?: boolean }) => {\n const pkgName = packageName()\n let exitCode = 0\n\n // Check workspace package.json dependency graph for cycles (including devDependencies).\n // These cycles break `yarn workspaces foreach --topological-dev` but are invisible\n // to source-level import analysis.\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceCycles = detectWorkspaceCycles(workspaces)\n if (workspaceCycles.length > 0) {\n console.error(`${pkgName} workspace dependency graph has ${workspaceCycles.length} cycle(s):`)\n printWorkspaceCycles(workspaceCycles)\n exitCode = 1\n } else if (verbose) {\n console.log(`${pkgName} workspace dependency graph has no cycles`)\n }\n\n const cruiseOptions: ICruiseOptions = {\n ruleSet: {\n forbidden: [\n {\n name: 'no-circular',\n severity: 'error',\n comment: 'This dependency creates a circular reference',\n from: {},\n to: { circular: true },\n },\n ],\n },\n exclude: 'node_modules|packages/.*/packages',\n validate: true,\n doNotFollow: { path: 'node_modules|packages/.*/packages' },\n tsPreCompilationDeps: false,\n combinedDependencies: true,\n outputType: verbose ? 'text' : 'err',\n }\n\n const target = '**/packages/*/src'\n\n console.log(`Checking for circular dependencies in ${target}...`)\n\n const result = await cruise([target], cruiseOptions)\n if (result.output) {\n console.log(result.output)\n }\n\n if (result.exitCode !== 0) {\n exitCode = result.exitCode\n }\n\n if (exitCode === 0) {\n console.log(`${pkgName} āœ… No dependency violations`)\n } else {\n console.error(`${pkgName} āŒ Dependency violations found`)\n }\n return exitCode\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const dead = () => {\n return runSteps('Dead', [['ts-prune', ['-p', 'tsconfig.json']]])\n}\n","import chalk from 'chalk'\n\nimport { runInstall } from '../../lib/index.ts'\nimport { getPackageManager } from '../../pm/index.ts'\nimport { runDeplint } from './engine.ts'\nimport { getDeplintReporter } from './reporters.ts'\n\nexport interface DepLintOptions {\n /** Package names to exclude, passed via --exclude on the command line */\n cliExclude?: string[]\n deps?: boolean\n devDeps?: boolean\n fix?: boolean\n format?: 'human' | 'json'\n peerDeps?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport const deplint = async ({\n pkg, deps, devDeps, fix, peerDeps, verbose, cliExclude, format = 'human',\n}: DepLintOptions) => {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n\n // For pnpm repos, enforce workspace: protocol on internal deps\n const workspaceNames = pm.name === 'pnpm'\n ? new Set(workspaces.map(ws => ws.name))\n : undefined\n\n if (pkg === undefined && format === 'human') {\n console.info('Deplint Started...')\n }\n\n const targetWorkspace = pkg === undefined ? undefined : pm.findWorkspace(pkg)\n const targetWorkspaces = pkg === undefined ? workspaces : targetWorkspace ? [targetWorkspace] : []\n if (targetWorkspaces.length === 0) {\n console.error(chalk.red(`Workspace not found: ${pkg}`))\n return 1\n }\n\n const result = await runDeplint(targetWorkspaces, {\n cliExclude, deps, devDeps, fix, peerDeps, reporter: format, verbose,\n }, workspaceNames)\n\n getDeplintReporter(format).render(result)\n\n if (fix && result.summary.appliedFixes > 0) {\n runInstall()\n }\n\n return result.summary.errorCount > 0 ? 1 : 0\n}\n","import fs from 'node:fs'\n\nimport chalk from 'chalk'\nimport sortPackageJson from 'sort-package-json'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport { findDepPackageJson } from './getRequiredPeerDependencies.ts'\n\nexport interface PackageJson {\n [key: string]: unknown\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n}\n\nexport function readPackageJson(location: string): PackageJson {\n return JSON.parse(fs.readFileSync(`${location}/package.json`, 'utf8')) as PackageJson\n}\n\nexport function writePackageJson(location: string, pkg: PackageJson): void {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n fs.writeFileSync(`${location}/package.json`, `${sorted}\\n`)\n}\n\n/**\n * Move a dependency from one section to another (e.g. dependencies → devDependencies).\n */\nexport function moveDep(pkg: PackageJson, dep: string, from: string, to: string): void {\n const fromSection = pkg[from] as Record<string, string> | undefined\n if (!fromSection?.[dep]) return\n\n const version = fromSection[dep]\n delete fromSection[dep]\n if (Object.keys(fromSection).length === 0) {\n delete pkg[from]\n }\n\n const toSection = (pkg[to] ?? {}) as Record<string, string>\n toSection[dep] = version\n pkg[to] = toSection\n}\n\n/**\n * Remove a dependency from a section.\n */\nexport function removeDep(pkg: PackageJson, dep: string, section: string): void {\n const sectionObj = pkg[section] as Record<string, string> | undefined\n if (!sectionObj?.[dep]) return\n\n delete sectionObj[dep]\n if (Object.keys(sectionObj).length === 0) {\n delete pkg[section]\n }\n}\n\n/**\n * Add a dependency to a section with a resolved version.\n */\nexport function addDep(pkg: PackageJson, dep: string, version: string, section: string): void {\n const sectionObj = (pkg[section] ?? {}) as Record<string, string>\n sectionObj[dep] = version\n pkg[section] = sectionObj\n}\n\n/**\n * Resolve the version for a missing dependency.\n * Looks in node_modules first, then falls back to '*'.\n */\nexport function resolveDepVersion(location: string, dep: string): string {\n const depPkgPath = findDepPackageJson(location, dep)\n if (depPkgPath) {\n try {\n const depPkg = JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n const version = depPkg.version as string | undefined\n if (version) return `~${version}`\n } catch {\n // Fall through\n }\n }\n return '*'\n}\n\n/**\n * Compute the expected peerDependency version range for a dependency,\n * preserving the current range style (^ vs ~).\n *\n * - If the current range uses ^, returns ^<major> (e.g. ^7)\n * - Otherwise returns ~<major>.<minor> (e.g. ~7.6)\n * - Falls back to resolveDepVersion if no installed version found\n */\nexport function resolveExpectedPeerVersion(location: string, dep: string, currentRange?: string): string {\n const depPkgPath = findDepPackageJson(location, dep)\n if (depPkgPath) {\n try {\n const depPkg = JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n const version = depPkg.version as string | undefined\n if (version) {\n const match = /^(\\d+)\\.(\\d+)/.exec(version)\n if (match) {\n if (currentRange?.startsWith('^')) {\n return `^${match[1]}`\n }\n return `~${match[1]}.${match[2]}`\n }\n return `~${version}`\n }\n } catch {\n // Fall through\n }\n }\n return '*'\n}\n\nexport function logFix(workspace: Workspace, action: string, dep: string, detail?: string): void {\n const detailStr = detail ? ` (${detail})` : ''\n console.log(`[${chalk.blue(workspace.name)}] Fixed: ${action} ${chalk.green(dep)}${detailStr}`)\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport function findDepPackageJson(location: string, dep: string): string | undefined {\n let dir = location\n while (true) {\n const candidate = path.join(dir, 'node_modules', dep, 'package.json')\n if (fs.existsSync(candidate)) return candidate\n const parent = path.dirname(dir)\n if (parent === dir) return undefined\n dir = parent\n }\n}\n\n/**\n * Collects the peerDependencies declared by all of a package's\n * dependencies and devDependencies. A devDependency that satisfies\n * one of these peer requirements should not be flagged as unused.\n */\nexport function getRequiredPeerDependencies(\n location: string,\n allDeps: string[],\n): Set<string> {\n const required = new Set<string>()\n for (const dep of allDeps) {\n const depPkgPath = findDepPackageJson(location, dep)\n if (!depPkgPath) continue\n try {\n const raw = fs.readFileSync(depPkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (peerDeps) {\n for (const peer of Object.keys(peerDeps)) {\n required.add(peer)\n }\n }\n } catch {\n // Package not readable — skip\n }\n }\n return required\n}\n","import type { Workspace } from '../../pm/index.ts'\nimport {\n addDep,\n moveDep,\n type PackageJson,\n readPackageJson,\n removeDep,\n writePackageJson,\n} from './packageJsonEditor.ts'\nimport type { DeplintAppliedFix, DeplintFix } from './types.ts'\n\nexport class DeplintPackageEditor {\n private readonly pkg: PackageJson\n\n constructor(\n private readonly workspace: Workspace,\n ) {\n this.pkg = readPackageJson(workspace.location)\n }\n\n applyFix(fix: DeplintFix): DeplintAppliedFix {\n switch (fix.action) {\n case 'add': {\n addDep(this.pkg, fix.dependency, fix.version, fix.section)\n break\n }\n case 'move': {\n moveDep(this.pkg, fix.dependency, fix.fromSection, fix.toSection)\n if (fix.version !== undefined && this.pkg[fix.toSection]?.[fix.dependency] !== undefined) {\n this.pkg[fix.toSection]![fix.dependency] = fix.version\n }\n break\n }\n case 'remove': {\n removeDep(this.pkg, fix.dependency, fix.section)\n break\n }\n case 'set-version': {\n addDep(this.pkg, fix.dependency, fix.version, fix.section)\n break\n }\n }\n\n return {\n dependency: fix.dependency,\n detail: fix.detail,\n workspace: this.workspace,\n }\n }\n\n save(): void {\n writePackageJson(this.workspace.location, this.pkg)\n }\n}\n","import { DeplintPackageEditor } from './packageEditor.ts'\nimport type { DeplintAppliedFix, DeplintDiagnostic } from './types.ts'\n\nexport function applyDeplintFixes(diagnostics: DeplintDiagnostic[]): DeplintAppliedFix[] {\n const editors = new Map<string, DeplintPackageEditor>()\n const applied: DeplintAppliedFix[] = []\n\n for (const diagnostic of diagnostics) {\n for (const fix of diagnostic.fixes ?? []) {\n const workspaceKey = diagnostic.workspace.location\n let editor = editors.get(workspaceKey)\n if (!editor) {\n editor = new DeplintPackageEditor(diagnostic.workspace)\n editors.set(workspaceKey, editor)\n }\n applied.push(editor.applyFix(fix))\n }\n }\n\n for (const editor of editors.values()) {\n editor.save()\n }\n\n return applied\n}\n","import fs from 'node:fs'\n\nimport { findFilesByGlob } from './findFilesByGlob.ts'\n\nconst codeExtensions = '*.{ts,tsx,mts,cts,js,mjs,cjs}'\n\nfunction getWorkspaceIgnores(location: string): string[] {\n try {\n const raw = fs.readFileSync(`${location}/package.json`, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n return (pkg.workspaces ?? []) as string[]\n } catch {\n return []\n }\n}\n\nexport function findFiles(location: string) {\n const workspaceIgnores = getWorkspaceIgnores(location).map(w => `${w}/**`)\n const ignore = ['**/node_modules/**', 'dist/**', ...workspaceIgnores]\n const allFiles = findFilesByGlob(location, `./**/${codeExtensions}`, ignore)\n const distFiles = [\n ...findFilesByGlob(location, './dist/**/*.d.ts'),\n ...findFilesByGlob(location, `./dist/**/${codeExtensions}`),\n ]\n\n return { allFiles, distFiles }\n}\n","import { globSync } from 'glob'\n\nexport function findFilesByGlob(cwd: string, pattern: string, ignore?: string[]) {\n return globSync(pattern, {\n cwd, absolute: true, ignore, nodir: true,\n })\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport function getDependenciesFromPackageJson(packageJsonPath: string) {\n const packageJsonFullPath = path.resolve(packageJsonPath)\n const rawContent = fs.readFileSync(packageJsonFullPath, 'utf8')\n const packageJson = JSON.parse(rawContent) as Record<string, unknown>\n\n const depsRecord = (packageJson.dependencies ?? {}) as Record<string, string>\n const devDepsRecord = (packageJson.devDependencies ?? {}) as Record<string, string>\n const peerDepsRecord = (packageJson.peerDependencies ?? {}) as Record<string, string>\n\n const dependencies = Object.keys(depsRecord)\n const devDependencies = Object.keys(devDepsRecord)\n const peerDependencies = Object.keys(peerDepsRecord)\n\n const dependencyVersions = depsRecord\n const devDependencyVersions = devDepsRecord\n const peerDependencyVersions = peerDepsRecord\n\n return {\n dependencies,\n dependencyVersions,\n devDependencies,\n devDependencyVersions,\n peerDependencies,\n peerDependencyVersions,\n }\n}\n","import fs from 'node:fs'\n\nimport { globSync } from 'glob'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\n\nconst isExternalReference = (ref: string) => !ref.startsWith('.') && !ref.startsWith('/')\n\nfunction parseExtendsField(value: unknown): string[] {\n if (typeof value === 'string') return [value]\n if (Array.isArray(value)) return value.filter((v): v is string => typeof v === 'string')\n return []\n}\n\nfunction parseTypesField(value: unknown): string[] {\n if (Array.isArray(value)) return value.filter((v): v is string => typeof v === 'string')\n return []\n}\n\nfunction parseTsconfig(file: string): Record<string, unknown> {\n const content = fs.readFileSync(file, 'utf8')\n // Strip single-line comments (tsconfig allows them) and trailing commas before parsing\n const cleaned = content\n .replaceAll(/\\/\\/.*/g, '')\n .replaceAll(/,\\s*([}\\]])/g, '$1')\n return JSON.parse(cleaned) as Record<string, unknown>\n}\n\nexport function getExtendsFromTsconfigs(location: string): string[] {\n const tsconfigFiles = globSync('./tsconfig*.json', { cwd: location, absolute: true })\n const packages = new Set<string>()\n\n for (const file of tsconfigFiles) {\n try {\n const parsed = parseTsconfig(file)\n const refs = parseExtendsField(parsed.extends)\n for (const ref of refs) {\n if (isExternalReference(ref)) {\n packages.add(getBasePackageName(ref))\n }\n }\n } catch {\n // Skip files that can't be parsed\n }\n }\n\n return [...packages]\n}\n\nexport function getTypesFromTsconfigs(location: string): string[] {\n const tsconfigFiles = globSync('./tsconfig*.json', { cwd: location, absolute: true })\n const packages = new Set<string>()\n\n for (const file of tsconfigFiles) {\n try {\n const parsed = parseTsconfig(file)\n const compilerOptions = parsed.compilerOptions as Record<string, unknown> | undefined\n const refs = parseTypesField(compilerOptions?.types)\n for (const ref of refs) {\n packages.add(getBasePackageName(ref))\n }\n } catch {\n // Skip files that can't be parsed\n }\n }\n\n return [...packages]\n}\n","export function getBasePackageName(importName: string) {\n const importNameScrubbed = importName.replaceAll('\"', '').trim()\n if (importNameScrubbed.startsWith('@')) {\n const parts = importNameScrubbed.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importNameScrubbed\n }\n return importNameScrubbed.split('/')[0]\n}\n","import fs from 'node:fs'\n\nimport type { CheckSourceParams } from './checkPackage/index.ts'\nimport { getImportsFromFile } from './getImportsFromFile.ts'\n\nconst internalImportPrefixes = ['.', '#', 'node:']\n\nconst removeInternalImports = (imports: string[]) => {\n return imports.filter(imp => !internalImportPrefixes.some(prefix => imp.startsWith(prefix)))\n}\n\nconst isDeclarationFile = (file: string) =>\n file.endsWith('.d.ts') || file.endsWith('.d.cts') || file.endsWith('.d.mts')\n\nfunction shipsTsconfig(location: string): boolean {\n try {\n const raw = fs.readFileSync(`${location}/package.json`, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n const files = pkg.files as string[] | undefined\n return files?.some((f: string) => f === 'tsconfig.json' || f.includes('tsconfig')) ?? false\n } catch {\n return false\n }\n}\n\nexport function getExternalImportsFromFiles({\n allFiles, distFiles, location, tsconfigExtends = [], tsconfigTypes = [],\n}: {\n allFiles: string[]\n distFiles: string[]\n location: string\n tsconfigExtends?: string[]\n tsconfigTypes?: string[]\n}): CheckSourceParams {\n const allImportPaths: Record<string, string[]> = {}\n const distImportPaths: Record<string, string[]> = {}\n const distTypeImportPaths: Record<string, string[]> = {}\n\n for (const path of allFiles) getImportsFromFile(path, allImportPaths, allImportPaths).flat()\n\n const distTypeFiles = distFiles.filter(isDeclarationFile)\n const distCodeFiles = distFiles.filter(file => !isDeclarationFile(file))\n for (const path of distCodeFiles) getImportsFromFile(path, distImportPaths, distImportPaths).flat()\n for (const path of distTypeFiles) getImportsFromFile(path, distTypeImportPaths, distTypeImportPaths).flat()\n\n const allImports = Object.keys(allImportPaths)\n const distImports = Object.keys(distImportPaths)\n\n const externalAllImports = removeInternalImports(allImports)\n const externalDistImports = removeInternalImports(distImports)\n const externalDistTypeImports = removeInternalImports(Object.keys(distTypeImportPaths))\n\n // Tsconfig extends references count as used imports.\n // If the package ships its tsconfig.json, extends refs are dist imports\n // (consumers need them), otherwise they are build-time only (devDep).\n const isDistTsconfig = shipsTsconfig(location)\n for (const ext of tsconfigExtends) {\n if (!externalAllImports.includes(ext)) externalAllImports.push(ext)\n if (isDistTsconfig && !externalDistImports.includes(ext)) externalDistImports.push(ext)\n }\n\n // Tsconfig compilerOptions.types references count as build-time imports (devDep).\n for (const typ of tsconfigTypes) {\n if (!externalAllImports.includes(typ)) externalAllImports.push(typ)\n }\n\n return {\n allImportPaths,\n allImports,\n distImportPaths,\n distImports,\n externalAllImports,\n externalDistImports,\n externalDistTypeImports,\n tsconfigExtends: [...tsconfigExtends],\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport ts from 'typescript'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\n\nexport function isTypeOnlyImportClause(clause?: ts.ImportClause): boolean {\n if (clause === undefined) {\n return false\n }\n // Newer TS: clause.phaseModifier -> token or number\n if ('phaseModifier' in clause) {\n const mod = clause.phaseModifier\n // handle number enum or token node with .kind\n const kind: number | undefined = typeof mod === 'number' ? mod : (mod as { kind?: number } | undefined)?.kind\n return kind === ts.SyntaxKind.TypeKeyword\n }\n // Older TS fallback\n return (clause as unknown as { isTypeOnly?: boolean }).isTypeOnly ?? false\n}\n\nexport function getImportsFromFile(filePath: string, importPaths: Record<string, string[]>, typeImportPaths: Record<string, string[]>) {\n const sourceCode = fs.readFileSync(filePath, 'utf8')\n\n const isMjsFile = filePath.endsWith('.mjs')\n\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n isMjsFile ? ts.ScriptKind.JS : undefined,\n )\n\n const imports: string[] = []\n const typeImports: string[] = []\n\n const isDeclarationFile = filePath.endsWith('.d.ts')\n\n function visit(node: ts.Node) {\n if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n const moduleSpecifier = (node.moduleSpecifier)?.getFullText()\n const isTypeImport = ts.isImportDeclaration(node) ? isTypeOnlyImportClause(node.importClause) : false\n if (typeof moduleSpecifier === 'string') {\n const trimmed = moduleSpecifier.replaceAll(\"'\", '').replaceAll('\"', '').trim()\n // we are determining if the type import is being imported in an exported d.ts file\n if (isTypeImport || isDeclarationFile) {\n typeImports.push(trimmed)\n } else {\n imports.push(trimmed)\n }\n }\n } else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {\n const [arg] = node.arguments\n if (ts.isStringLiteral(arg)) {\n imports.push(arg.text)\n }\n } else if (\n ts.isCallExpression(node)\n && ts.isIdentifier(node.expression)\n && node.expression.text === 'require'\n && node.arguments.length > 0\n && ts.isStringLiteral(node.arguments[0])\n ) {\n imports.push(node.arguments[0].text)\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n\n // Detect /// <reference types=\"package\" /> directives\n for (const ref of sourceFile.typeReferenceDirectives) {\n typeImports.push(ref.fileName)\n }\n\n const importsStartsWithExcludes = ['.', '#', 'node:']\n\n const isValidImport = (imp: string) =>\n !importsStartsWithExcludes.some(exc => imp.startsWith(exc))\n && !imp.includes('*')\n && !imp.includes('!')\n\n const cleanedImports = imports.filter(isValidImport).map(getBasePackageName)\n const cleanedTypeImports = typeImports.filter(isValidImport).map(getBasePackageName)\n\n for (const imp of cleanedImports) {\n importPaths[imp] = importPaths[imp] ?? []\n importPaths[imp].push(filePath)\n }\n\n for (const imp of cleanedTypeImports) {\n typeImportPaths[imp] = typeImportPaths[imp] ?? []\n typeImportPaths[imp].push(filePath)\n }\n\n return [cleanedImports, cleanedTypeImports]\n}\n","import chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { readPackageJson, writePackageJson } from '../packageJsonEditor.ts'\nimport type { CheckPackageParams } from './checkPackageTypes.ts'\n\nexport interface PeerDevMismatch {\n dep: string\n devVersion: string\n peerVersion: string\n}\n\nexport function findMismatchedPeerDevVersions(\n {\n peerDependencies, peerDependencyVersions, devDependencyVersions,\n }: CheckPackageParams,\n exclude?: Set<string>,\n): PeerDevMismatch[] {\n const mismatches: PeerDevMismatch[] = []\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n const peerVersion = peerDependencyVersions[dep]\n const devVersion = devDependencyVersions[dep]\n // Skip semver comparison for workspace protocol versions — they resolve at install time\n const hasWorkspaceProtocol = devVersion?.startsWith('workspace:') || peerVersion?.startsWith('workspace:')\n if (devVersion && peerVersion !== devVersion && !hasWorkspaceProtocol && !semver.subset(devVersion, peerVersion)) {\n mismatches.push({\n dep, devVersion, peerVersion,\n })\n }\n }\n return mismatches\n}\n\nexport function getMismatchedPeerDevVersions(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const mismatches = findMismatchedPeerDevVersions(packageParams, exclude)\n\n for (const {\n dep, peerVersion, devVersion,\n } of mismatches) {\n console.log(\n `[${chalk.blue(name)}] Peer/dev version mismatch ${chalk.red(dep)}`\n + ` — peer: ${chalk.yellow(peerVersion)}, dev: ${chalk.cyan(devVersion)}`,\n )\n }\n if (mismatches.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return mismatches.length\n}\n\nexport function fixMismatchedPeerDevVersions(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const mismatches = findMismatchedPeerDevVersions(packageParams, exclude)\n if (mismatches.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const { dep, devVersion } of mismatches) {\n if (pkg.peerDependencies?.[dep]) {\n pkg.peerDependencies[dep] = devVersion\n console.log(\n `[${chalk.blue(workspace.name)}] Fixed: synced peerDependency ${chalk.green(dep)}`\n + ` to devDependency version ${chalk.cyan(devVersion)}`,\n )\n }\n }\n\n writePackageJson(workspace.location, pkg)\n return mismatches.length\n}\n","import fs from 'node:fs'\nimport { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { findDepPackageJson } from '../getRequiredPeerDependencies.ts'\nimport {\n addDep, logFix, readPackageJson, resolveDepVersion, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isSatisfiedByTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\n/**\n * Checks if a runtime import is satisfied by a listed dependency.\n * An `@types` package alone is not enough since it only provides\n * type declarations, not runnable code.\n */\nfunction isRuntimeImportListed(\n imp: string,\n name: string,\n dependencies: string[],\n peerDependencies: string[],\n) {\n return dependencies.includes(imp)\n || imp === name\n || peerDependencies.includes(imp)\n || builtinModules.includes(imp)\n}\n\n/**\n * Checks if a type-only dist import is satisfied by a listed dependency.\n * These appear in published .d.ts files, so consumers need them installed.\n * They must be in dependencies or peerDependencies (not just devDependencies)\n * because they ship in the published package.\n */\nfunction isDistTypeImportListed(\n imp: string,\n name: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n) {\n return dependencies.includes(imp)\n || imp === name\n || dependencies.includes(`@types/${imp}`)\n || devDependencies.includes(`@types/${imp}`)\n || peerDependencies.includes(imp)\n || peerDependencies.includes(`@types/${imp}`)\n || builtinModules.includes(imp)\n}\n\nfunction logMissing(name: string, imp: string, importPaths: Record<string, string[]>) {\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n if (importPaths[imp]) {\n console.log(` ${importPaths[imp].join('\\n ')}`)\n }\n}\n\n/**\n * Determines whether an import should be a peerDependency in a library\n * package. Returns true when all of the import's own peer dependencies\n * are both listed in the package's peerDependencies AND directly imported\n * in the dist output. This distinguishes companion packages like react-dom\n * (whose peers the library independently imports) from implementation\n * dependencies like a widget library that merely consume a framework.\n */\nexport function shouldBePeerDependency(\n imp: string,\n location: string,\n currentPeers: string[],\n distImports: string[],\n): boolean {\n if (currentPeers.length === 0) return false\n const depPkgPath = findDepPackageJson(location, imp)\n if (!depPkgPath) return false\n try {\n const pkg = JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n const importPeers = Object.keys((pkg.peerDependencies ?? {}) as Record<string, unknown>)\n // Every peer of the import must be a first-class peer of the package —\n // i.e. both listed as a peerDependency and directly imported in dist.\n return importPeers.length > 0 && importPeers.every(\n peer => currentPeers.includes(peer) && distImports.includes(peer),\n )\n } catch {\n return false\n }\n}\n\nexport interface UnlistedDep {\n imp: string\n section: 'dependencies' | 'devDependencies'\n}\n\nexport function findUnlistedDependencies(\n name: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n externalDistImports: string[],\n externalDistTypeImports: string[],\n): UnlistedDep[] {\n const allDeps = [...dependencies, ...devDependencies, ...peerDependencies]\n const results: UnlistedDep[] = []\n\n for (const imp of externalDistImports) {\n if (!isRuntimeImportListed(imp, name, dependencies, peerDependencies)\n && !isSatisfiedByTsScriptsVariant(imp, allDeps)) {\n results.push({ imp, section: 'dependencies' })\n }\n }\n\n for (const imp of externalDistTypeImports) {\n if (!isDistTypeImportListed(imp, name, dependencies, devDependencies, peerDependencies)\n && !isSatisfiedByTsScriptsVariant(imp, allDeps)) {\n results.push({ imp, section: 'dependencies' })\n }\n }\n\n return results\n}\n\nexport function getUnlistedDependencies(\n { name, location }: Workspace,\n {\n dependencies, devDependencies, peerDependencies,\n }: CheckPackageParams,\n {\n externalDistImports, externalDistTypeImports, distImportPaths,\n }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDependencies(name, dependencies, devDependencies, peerDependencies, externalDistImports, externalDistTypeImports)\n\n for (const { imp } of unlisted) {\n logMissing(name, imp, distImportPaths)\n }\n if (unlisted.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unlisted.length\n}\n\nexport function fixUnlistedDependencies(\n workspace: Workspace,\n {\n dependencies, devDependencies, peerDependencies,\n }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDependencies(workspace.name, dependencies, devDependencies, peerDependencies, externalDistImports, externalDistTypeImports)\n if (unlisted.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n const isTerminal = pkg.private === true\n\n for (const { imp, section } of unlisted) {\n const version = resolveDepVersion(workspace.location, imp)\n // For library packages, if the import shares peers with existing\n // peerDependencies, add it as a peer + dev instead of a dependency.\n const isPeer = !isTerminal\n && section === 'dependencies'\n && shouldBePeerDependency(imp, workspace.location, peerDependencies, externalDistImports)\n if (isPeer) {\n addDep(pkg, imp, version, 'peerDependencies')\n logFix(workspace, 'added to peerDependencies', imp, version)\n addDep(pkg, imp, version, 'devDependencies')\n logFix(workspace, 'added to devDependencies', imp, version)\n } else {\n addDep(pkg, imp, version, section)\n logFix(workspace, `added to ${section}`, imp, version)\n }\n }\n\n writePackageJson(workspace.location, pkg)\n return unlisted.length\n}\n","/**\n * After a packman convert, source files may still import from the old\n * ts-scripts variant (e.g. yarn3 → pnpm). Deplint should not flag\n * these as missing when the correct PM variant is installed.\n *\n * Maps each ts-scripts package to the variant it can be satisfied by.\n */\nconst VARIANT_MAP: Record<string, string> = {\n '@xylabs/ts-scripts-yarn3': '@xylabs/ts-scripts-pnpm',\n '@xylabs/ts-scripts-pnpm': '@xylabs/ts-scripts-yarn3',\n '@xylabs/ts-scripts-react-yarn3': '@xylabs/ts-scripts-react-pnpm',\n '@xylabs/ts-scripts-react-pnpm': '@xylabs/ts-scripts-react-yarn3',\n}\n\n/**\n * Returns true if `imp` is a ts-scripts import whose other PM variant\n * is present in the dependency lists, meaning the import is satisfied.\n */\nexport function isSatisfiedByTsScriptsVariant(\n imp: string,\n allDeps: string[],\n): boolean {\n const variant = VARIANT_MAP[imp]\n return variant !== undefined && allDeps.includes(variant)\n}\n\n/**\n * Returns true if `dep` is a ts-scripts package whose other PM variant\n * appears in the import list, meaning the dep is effectively used.\n */\nexport function isUsedViaTsScriptsVariant(\n dep: string,\n imports: string[],\n): boolean {\n const variant = VARIANT_MAP[dep]\n return variant !== undefined && imports.includes(variant)\n}\n","import { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n addDep, logFix, readPackageJson, resolveDepVersion, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isSatisfiedByTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function findUnlistedDevDeps(\n name: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n externalAllImports: string[],\n distImports: string[],\n externalDistTypeImports: string[],\n): string[] {\n const results: string[] = []\n for (const imp of externalAllImports) {\n if (!distImports.includes(imp)\n && !externalDistTypeImports.includes(imp)\n && imp !== name\n && !dependencies.includes(imp)\n && !dependencies.includes(`@types/${imp}`)\n && !peerDependencies.includes(imp)\n && !peerDependencies.includes(`@types/${imp}`)\n && !devDependencies.includes(imp)\n && !devDependencies.includes(`@types/${imp}`)\n && !builtinModules.includes(imp)\n && !isSatisfiedByTsScriptsVariant(imp, [...dependencies, ...devDependencies, ...peerDependencies])\n ) {\n results.push(imp)\n }\n }\n return results\n}\n\nexport function getUnlistedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n allImportPaths, externalAllImports, distImports, externalDistTypeImports,\n }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDevDeps(name, dependencies, devDependencies, peerDependencies, externalAllImports, distImports, externalDistTypeImports)\n\n for (const imp of unlisted) {\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n if (allImportPaths[imp]) {\n console.log(` ${allImportPaths[imp].join('\\n ')}`)\n }\n }\n if (unlisted.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unlisted.length\n}\n\nexport function fixUnlistedDevDependencies(\n workspace: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n externalAllImports, distImports, externalDistTypeImports,\n }: CheckSourceParams,\n) {\n const unlisted = findUnlistedDevDeps(workspace.name, dependencies, devDependencies, peerDependencies, externalAllImports, distImports, externalDistTypeImports)\n if (unlisted.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const imp of unlisted) {\n const version = resolveDepVersion(workspace.location, imp)\n addDep(pkg, imp, version, 'devDependencies')\n logFix(workspace, 'added to devDependencies', imp, version)\n }\n\n writePackageJson(workspace.location, pkg)\n return unlisted.length\n}\n","import fs from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n logFix, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\nimport { getRequiredTransitivePeers } from './getUnsatisfiedPeerDependencies.ts'\n\n// --- Check A: Unrequested peers (imported but no dep requires it as a peer) ---\n\nfunction isPeerImportedInDist(dep: string, externalDistImports: string[], externalDistTypeImports: string[]): boolean {\n const baseName = dep.replace(/^@types\\//, '')\n return externalDistImports.includes(dep)\n || externalDistImports.includes(baseName)\n || externalDistTypeImports.includes(dep)\n || externalDistTypeImports.includes(baseName)\n}\n\nexport function findUnrequestedPeerDeps(\n location: string,\n packageParams: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n exclude?: Set<string>,\n): string[] {\n const requiredPeers = getRequiredTransitivePeers(location, packageParams)\n\n const unrequested: string[] = []\n for (const dep of packageParams.peerDependencies) {\n if (exclude?.has(dep)) continue\n if (packageParams.dependencies.includes(dep)) continue\n if (!isPeerImportedInDist(dep, externalDistImports, externalDistTypeImports)) continue\n if (!requiredPeers.has(dep)) {\n unrequested.push(dep)\n }\n }\n return unrequested\n}\n\nexport function getUnrequestedPeerDependencies(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n sourceParams: CheckSourceParams,\n exclude?: Set<string>,\n): number {\n // For library packages, importing a peerDep in dist is the normal pattern —\n // the library uses it but wants consumers to provide it.\n if (!isTerminalPackage(location)) return 0\n\n const unrequested = findUnrequestedPeerDeps(location, packageParams, sourceParams, exclude)\n\n for (const dep of unrequested) {\n console.log(\n `[${chalk.blue(name)}] Unnecessary peerDependency ${chalk.red(dep)}`\n + ' — imported in dist but no dependency requires it as a peer; should be a dependency',\n )\n }\n if (unrequested.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unrequested.length\n}\n\nfunction isTerminalPackage(location: string): boolean {\n try {\n const pkg = JSON.parse(fs.readFileSync(`${location}/package.json`, 'utf8')) as Record<string, unknown>\n return pkg.private === true\n } catch {\n return false\n }\n}\n\nexport function fixUnrequestedPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n sourceParams: CheckSourceParams,\n exclude?: Set<string>,\n): number {\n const unrequested = findUnrequestedPeerDeps(workspace.location, packageParams, sourceParams, exclude)\n if (unrequested.length === 0) return 0\n\n const isTerminal = isTerminalPackage(workspace.location)\n const tsconfigExtendsSet = new Set(sourceParams.tsconfigExtends)\n\n // For library packages (non-private), unrequested peers are intentional —\n // the library wants consumers to provide them. Only move to dependencies\n // for terminal/private packages (apps, CLIs) or when the dep is only\n // referenced via tsconfig extends (a build-time need, not a runtime peer).\n const fixable = isTerminal\n ? unrequested\n : unrequested.filter(dep => tsconfigExtendsSet.has(dep))\n\n if (fixable.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of fixable) {\n const version = packageParams.peerDependencyVersions[dep] ?? '*'\n removeDep(pkg, dep, 'peerDependencies')\n pkg.dependencies = pkg.dependencies ?? {}\n pkg.dependencies[dep] = version\n logFix(workspace, 'moved from peerDependencies to dependencies', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return fixable.length\n}\n\n// --- Check B: Redundant peers (also in dependencies) ---\n\nexport function findRedundantPeerDeps(\n { peerDependencies, dependencies }: CheckPackageParams,\n exclude?: Set<string>,\n): string[] {\n const depsSet = new Set(dependencies)\n const redundant: string[] = []\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n if (depsSet.has(dep)) {\n redundant.push(dep)\n }\n }\n return redundant\n}\n\nexport function getRedundantPeerDependencies(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const redundant = findRedundantPeerDeps(packageParams, exclude)\n\n for (const dep of redundant) {\n console.log(\n `[${chalk.blue(name)}] Redundant peerDependency ${chalk.red(dep)}`\n + ' — already listed in dependencies',\n )\n }\n if (redundant.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return redundant.length\n}\n\nexport function fixRedundantPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): number {\n const redundant = findRedundantPeerDeps(packageParams, exclude)\n if (redundant.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of redundant) {\n removeDep(pkg, dep, 'peerDependencies')\n logFix(workspace, 'removed redundant peerDependency (kept in dependencies)', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return redundant.length\n}\n","import fs from 'node:fs'\n\nimport chalk from 'chalk'\nimport semver from 'semver'\nimport sortPackageJson from 'sort-package-json'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { findDepPackageJson } from '../getRequiredPeerDependencies.ts'\nimport type { CheckPackageParams } from './checkPackageTypes.ts'\n\nexport interface PeerSource {\n /** Dependency chain for transitive peers, e.g. ['direct-dep', 'transitive-dep'] */\n chain?: string[]\n isRuntimeDep: boolean\n requiredBy: string\n}\n\nexport interface UnsatisfiedPeer {\n hasRuntimeSource: boolean\n installedVersion?: string\n peer: string\n reason: 'missing' | 'version-mismatch'\n sources: PeerSource[]\n versionRange: string\n}\n\nfunction readDepPackageJson(location: string, dep: string): Record<string, unknown> | undefined {\n const depPkgPath = findDepPackageJson(location, dep)\n if (!depPkgPath) return undefined\n try {\n return JSON.parse(fs.readFileSync(depPkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n return undefined\n }\n}\n\nfunction readPeerDeps(location: string, dep: string): string[] {\n const pkg = readDepPackageJson(location, dep)\n if (!pkg) return []\n const peers = pkg.peerDependencies as Record<string, string> | undefined\n return Object.keys(peers ?? {})\n}\n\nfunction readPeerVersionRange(location: string, dep: string, peer: string): string | undefined {\n const pkg = readDepPackageJson(location, dep)\n if (!pkg) return undefined\n const peers = pkg.peerDependencies as Record<string, string> | undefined\n return peers?.[peer]\n}\n\nfunction readInstalledVersion(location: string, dep: string): string | undefined {\n const pkg = readDepPackageJson(location, dep)\n if (!pkg) return undefined\n return pkg.version as string | undefined\n}\n\nfunction isPeerOptionalInAll(location: string, peer: string, sources: PeerSource[]): boolean {\n for (const source of sources) {\n const pkg = readDepPackageJson(location, source.requiredBy)\n if (!pkg) continue\n const meta = (pkg.peerDependenciesMeta as Record<string, { optional?: boolean }> | undefined)?.[peer]\n if (!meta?.optional) return false\n }\n return true\n}\n\nconst MAX_TRANSITIVE_DEPTH = 2\n\nfunction collectPeerSources(\n location: string,\n dependencies: string[],\n devDependencies: string[],\n): Map<string, PeerSource[]> {\n const peerSources = new Map<string, PeerSource[]>()\n const visited = new Set<string>()\n\n function addPeerSource(peer: string, source: PeerSource): void {\n const sources = peerSources.get(peer) ?? []\n sources.push(source)\n peerSources.set(peer, sources)\n }\n\n function collectFromDeps(deps: string[], isRuntime: boolean, chain: string[]): void {\n for (const dep of deps) {\n const visitKey = `${dep}:${chain.join('>')}`\n if (visited.has(visitKey)) continue\n visited.add(visitKey)\n\n for (const peer of readPeerDeps(location, dep)) {\n addPeerSource(peer, {\n chain: chain.length > 0 ? [...chain, dep] : undefined,\n isRuntimeDep: isRuntime,\n requiredBy: dep,\n })\n }\n\n // Recurse into this dep's own runtime dependencies (not devDeps)\n if (chain.length < MAX_TRANSITIVE_DEPTH) {\n const depPkg = readDepPackageJson(location, dep)\n if (depPkg) {\n const transitiveDeps = Object.keys((depPkg.dependencies as Record<string, string> | undefined) ?? {})\n collectFromDeps(transitiveDeps, isRuntime, [...chain, dep])\n }\n }\n }\n }\n\n collectFromDeps(dependencies, true, [])\n\n const devOnly = devDependencies.filter(d => !dependencies.includes(d))\n collectFromDeps(devOnly, false, [])\n\n return peerSources\n}\n\nfunction formatChain(sources: PeerSource[]): string {\n const chainsWithDepth = sources.filter(s => s.chain && s.chain.length > 0)\n if (chainsWithDepth.length === 0) return ''\n const first = chainsWithDepth[0]\n return ` (via ${chalk.dim(first.chain!.join(' → '))})`\n}\n\n/**\n * Returns the full set of peer dependency names required by all deps and devDeps.\n * Used to prevent the unused-dependency checks from removing deps that satisfy\n * transitive peer requirements.\n */\nexport function getRequiredTransitivePeers(\n location: string,\n { dependencies, devDependencies }: CheckPackageParams,\n): Set<string> {\n const peerSources = collectPeerSources(location, dependencies, devDependencies)\n return new Set(peerSources.keys())\n}\n\nfunction logUnsatisfiedPeer(name: string, unsatisfied: UnsatisfiedPeer): void {\n const {\n peer, sources, reason, hasRuntimeSource, installedVersion, versionRange,\n } = unsatisfied\n const chainInfo = formatChain(sources)\n\n if (reason === 'version-mismatch') {\n const requiredByList = sources.map(s => s.requiredBy)\n console.log(\n `[${chalk.blue(name)}] Peer dependency version mismatch ${chalk.red(peer)}`\n + ` — installed ${chalk.yellow(installedVersion ?? 'unknown')}`\n + ` does not satisfy ${chalk.cyan(versionRange)}`\n + ` (required by ${chalk.cyan(requiredByList.join(', '))})`\n + chainInfo,\n )\n } else if (hasRuntimeSource) {\n const requiredByList = sources.filter(s => s.isRuntimeDep).map(s => s.requiredBy)\n console.log(\n `[${chalk.blue(name)}] Unsatisfied peer dependency ${chalk.red(peer)}`\n + ` (required by ${chalk.cyan(requiredByList.join(', '))})`\n + chainInfo\n + ' — must be in dependencies or peerDependencies',\n )\n } else {\n const requiredByList = sources.map(s => s.requiredBy)\n console.log(\n `[${chalk.blue(name)}] Unsatisfied peer dependency ${chalk.red(peer)}`\n + ` (required by devDependency ${chalk.cyan(requiredByList.join(', '))})`\n + chainInfo\n + ' — must be in dependencies, devDependencies, or peerDependencies',\n )\n }\n}\n\nfunction resolveVersionRange(location: string, sources: PeerSource[], peer: string): string {\n for (const source of sources) {\n const range = readPeerVersionRange(location, source.requiredBy, peer)\n if (range) return range\n }\n return '*'\n}\n\nfunction checkVersionSatisfaction(location: string, peer: string, requestedRange: string): { installedVersion?: string; satisfied: boolean } {\n const installedVersion = readInstalledVersion(location, peer)\n if (!installedVersion) return { satisfied: true }\n if (requestedRange === '*') return { installedVersion, satisfied: true }\n // workspace: protocol versions resolve at install time — always satisfied\n if (requestedRange.startsWith('workspace:')) return { installedVersion, satisfied: true }\n\n try {\n const satisfied = semver.satisfies(installedVersion, requestedRange, { includePrerelease: true })\n return { installedVersion, satisfied }\n } catch {\n // Invalid semver range or version — skip version check\n return { installedVersion, satisfied: true }\n }\n}\n\nfunction findDeclaredPeerVersionMismatches(\n name: string,\n location: string,\n peerDependencies: string[],\n peerDependencyVersions: Record<string, string>,\n exclude?: Set<string>,\n): UnsatisfiedPeer[] {\n const results: UnsatisfiedPeer[] = []\n for (const peer of peerDependencies) {\n if (exclude?.has(peer) || peer === name) continue\n const declaredRange = peerDependencyVersions[peer]\n if (!declaredRange || declaredRange === '*') continue\n const { installedVersion, satisfied } = checkVersionSatisfaction(location, peer, declaredRange)\n if (!satisfied) {\n results.push({\n hasRuntimeSource: true,\n installedVersion,\n peer,\n reason: 'version-mismatch',\n sources: [{ isRuntimeDep: true, requiredBy: name }],\n versionRange: declaredRange,\n })\n }\n }\n return results\n}\n\nexport function findUnsatisfiedPeers(\n { name, location }: Workspace,\n {\n dependencies, devDependencies, peerDependencies, peerDependencyVersions,\n }: CheckPackageParams,\n exclude?: Set<string>,\n): UnsatisfiedPeer[] {\n const peerSources = collectPeerSources(location, dependencies, devDependencies)\n const depsSet = new Set(dependencies)\n const devDepsSet = new Set(devDependencies)\n const unsatisfied: UnsatisfiedPeer[] = []\n\n for (const [peer, sources] of peerSources) {\n if (exclude?.has(peer) || peer === name) continue\n if (isPeerOptionalInAll(location, peer, sources)) continue\n\n const hasRuntimeSource = sources.some(s => s.isRuntimeDep)\n // A peer is provided if it's in dependencies or devDependencies.\n // Being in peerDependencies alone only passes the requirement to consumers\n // but doesn't actually provide the package (yarn will warn \"doesn't provide\").\n const isPresent = depsSet.has(peer) || devDepsSet.has(peer)\n\n if (!isPresent) {\n const versionRange = resolveVersionRange(location, sources, peer)\n unsatisfied.push({\n hasRuntimeSource, peer, reason: 'missing', sources, versionRange,\n })\n continue\n }\n\n const versionRange = resolveVersionRange(location, sources, peer)\n const { installedVersion, satisfied } = checkVersionSatisfaction(location, peer, versionRange)\n if (!satisfied) {\n unsatisfied.push({\n hasRuntimeSource, installedVersion, peer, reason: 'version-mismatch', sources, versionRange,\n })\n }\n }\n\n return [\n ...unsatisfied,\n ...findDeclaredPeerVersionMismatches(name, location, peerDependencies, peerDependencyVersions, exclude),\n ]\n}\n\n/**\n * Checks that peerDependencies of all dependencies and devDependencies are\n * properly satisfied — both present and version-compatible.\n *\n * Rules:\n * - If a dep in `dependencies` requires peer P, then P must be in\n * `dependencies` or `peerDependencies`.\n * - If a dep in `devDependencies` requires peer P, then P can also be\n * in `devDependencies`.\n * - If multiple deps require the same peer P and at least one is a runtime\n * dependency, the runtime rule applies (P must be in deps or peerDeps).\n * - Checks peers transitively up to 2 levels deep in the dependency tree.\n * - Validates that installed versions satisfy the requested peer ranges.\n */\nexport interface CheckPeerResult {\n count: number\n unsatisfiedPeers: Set<string>\n}\n\nexport function getUnsatisfiedPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): CheckPeerResult {\n const unsatisfied = findUnsatisfiedPeers(workspace, packageParams, exclude)\n\n for (const entry of unsatisfied) {\n logUnsatisfiedPeer(workspace.name, entry)\n }\n\n if (unsatisfied.length > 0) {\n console.log(` ${chalk.yellow(`${workspace.location}/package.json`)}\\n`)\n }\n return {\n count: unsatisfied.length,\n unsatisfiedPeers: new Set(unsatisfied.map(u => u.peer)),\n }\n}\n\n/**\n * Determines if a package is \"terminal\" (an app, CLI, or website — not a library).\n * Terminal packages have their peers added to dependencies; libraries use peerDependencies.\n */\nfunction isTerminalPackage(packageJsonPath: string): boolean {\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as Record<string, unknown>\n return pkg.private === true\n } catch {\n return false\n }\n}\n\n/**\n * Fixes unsatisfied peer dependencies by adding them to package.json.\n *\n * - Terminal packages (private: true): runtime peers go to dependencies,\n * dev-only peers go to devDependencies\n * - Library packages: runtime peers go to peerDependencies,\n * dev-only peers go to devDependencies\n * - Version mismatches are reported but not auto-fixed (requires manual review)\n */\nexport interface FixPeerResult {\n addedPeers: Set<string>\n count: number\n}\n\nfunction fixVersionMismatch(\n workspaceName: string,\n entry: UnsatisfiedPeer,\n pkg: Record<string, Record<string, string>>,\n): boolean {\n const {\n installedVersion, peer, versionRange,\n } = entry\n if (!installedVersion) {\n logUnsatisfiedPeer(workspaceName, entry)\n console.log(\n ` ${chalk.dim('(version mismatch — could not resolve installed version)')}`,\n )\n return false\n }\n\n const match = /^(\\d+)\\.(\\d+)/.exec(installedVersion)\n if (!match) {\n logUnsatisfiedPeer(workspaceName, entry)\n console.log(\n ` ${chalk.dim('(version mismatch — could not resolve installed version)')}`,\n )\n return false\n }\n\n const expectedVersion = versionRange.startsWith('^')\n ? `^${match[1]}`\n : `~${match[1]}.${match[2]}`\n\n if (pkg.peerDependencies?.[peer]) {\n pkg.peerDependencies[peer] = expectedVersion\n }\n if (pkg.devDependencies?.[peer] && !pkg.devDependencies[peer].startsWith('workspace:')) {\n pkg.devDependencies[peer] = expectedVersion\n }\n\n console.log(\n `[${chalk.blue(workspaceName)}] Fixed: updated ${chalk.green(peer)}`\n + ` version to ${chalk.cyan(expectedVersion)} (was ${chalk.yellow(versionRange)})`,\n )\n return true\n}\n\nexport function fixUnsatisfiedPeerDependencies(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n exclude?: Set<string>,\n): FixPeerResult {\n const unsatisfied = findUnsatisfiedPeers(workspace, packageParams, exclude)\n if (unsatisfied.length === 0) return { addedPeers: new Set(), count: 0 }\n\n const packageJsonPath = `${workspace.location}/package.json`\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')) as Record<string, Record<string, string>>\n const isTerminal = isTerminalPackage(packageJsonPath)\n\n const addedPeers = new Set<string>()\n let fixedCount = 0\n for (const entry of unsatisfied) {\n const {\n hasRuntimeSource,\n peer,\n reason,\n sources,\n versionRange,\n } = entry\n\n if (reason === 'version-mismatch') {\n if (fixVersionMismatch(workspace.name, entry, pkg)) fixedCount++\n continue\n }\n\n const sections = resolvePeerTargetSections(hasRuntimeSource, isTerminal)\n for (const section of sections) {\n pkg[section] = pkg[section] ?? {}\n pkg[section][peer] = versionRange\n }\n addedPeers.add(peer)\n\n const requiredByList = sources.map(s => s.requiredBy).join(', ')\n console.log(\n `[${chalk.blue(workspace.name)}] Fixed: added ${chalk.green(peer)}@${versionRange}`\n + ` to ${chalk.cyan(sections.join(' + '))} (required by ${requiredByList})`,\n )\n fixedCount++\n }\n\n if (fixedCount > 0) {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n fs.writeFileSync(packageJsonPath, `${sorted}\\n`)\n }\n\n return { addedPeers, count: unsatisfied.length }\n}\n\n/**\n * For terminal packages (apps): runtime peers → dependencies, dev-only → devDependencies.\n * For library packages: runtime peers → peerDependencies + devDependencies (peer passes\n * the requirement to consumers, devDep satisfies it for the library's own development).\n * Dev-only peers → devDependencies only.\n */\nexport function resolvePeerTargetSections(hasRuntimeSource: boolean, isTerminal: boolean): string[] {\n if (!hasRuntimeSource) return ['devDependencies']\n if (isTerminal) return ['dependencies']\n return ['peerDependencies', 'devDependencies']\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { getRequiredPeerDependencies } from '../getRequiredPeerDependencies.ts'\nimport {\n logFix, moveDep, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isUsedViaTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nfunction isDepImported(dep: string, distImports: string[], distTypeImports: string[]): boolean {\n const baseName = dep.replace(/^@types\\//, '')\n return distImports.includes(dep)\n || distImports.includes(baseName)\n || distTypeImports.includes(dep)\n || distTypeImports.includes(baseName)\n}\n\nexport type UnusedDepKind = 'move-to-dev' | 'remove'\n\nexport interface UnusedDep {\n dep: string\n kind: UnusedDepKind\n reason?: string\n}\n\nexport function findUnusedDependencies(\n location: string,\n dependencies: string[],\n devDependencies: string[],\n externalDistImports: string[],\n externalDistTypeImports: string[],\n externalAllImports: string[],\n exclude?: Set<string>,\n): UnusedDep[] {\n const runtimeRequiredPeers = getRequiredPeerDependencies(location, dependencies)\n const devRequiredPeers = getRequiredPeerDependencies(location, devDependencies)\n const results: UnusedDep[] = []\n\n for (const dep of dependencies) {\n if (exclude?.has(dep)) continue\n if (runtimeRequiredPeers.has(dep)) continue\n\n const isImported = isDepImported(dep, externalDistImports, externalDistTypeImports)\n if (isImported || isUsedViaTsScriptsVariant(dep, [...externalDistImports, ...externalDistTypeImports])) continue\n\n if (devRequiredPeers.has(dep)) {\n results.push({\n dep, kind: 'move-to-dev', reason: 'only needed as peer of devDependencies',\n })\n } else if (externalAllImports.includes(dep)) {\n results.push({ dep, kind: 'move-to-dev' })\n } else {\n results.push({ dep, kind: 'remove' })\n }\n }\n\n return results\n}\n\nexport function getUnusedDependencies(\n { name, location }: Workspace,\n { dependencies, devDependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalDistTypeImports,\n externalAllImports,\n }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDependencies(location, dependencies, devDependencies, externalDistImports, externalDistTypeImports, externalAllImports, exclude)\n\n for (const {\n dep, kind, reason,\n } of unused) {\n const reasonStr = reason ? ` (${reason})` : ''\n if (kind === 'move-to-dev') {\n console.log(`[${chalk.blue(name)}] dependency should be devDependency in package.json: ${chalk.red(dep)}${reasonStr}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n }\n }\n if (unused.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unused.length\n}\n\nexport function fixUnusedDependencies(\n workspace: Workspace,\n { dependencies, devDependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalDistTypeImports,\n externalAllImports,\n }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDependencies(workspace.location, dependencies, devDependencies, externalDistImports, externalDistTypeImports, externalAllImports, exclude)\n if (unused.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const { dep, kind } of unused) {\n if (kind === 'move-to-dev') {\n moveDep(pkg, dep, 'dependencies', 'devDependencies')\n logFix(workspace, 'moved to devDependencies', dep)\n } else {\n removeDep(pkg, dep, 'dependencies')\n logFix(workspace, 'removed from dependencies', dep)\n }\n }\n\n writePackageJson(workspace.location, pkg)\n return unused.length\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport { getCliReferencedPackagesFromFiles } from '../getCliReferencedPackagesFromFiles.ts'\nimport { getRequiredPeerDependencies } from '../getRequiredPeerDependencies.ts'\nimport { getScriptReferencedPackages } from '../getScriptReferencedPackages.ts'\nimport type { FileContext } from '../implicitDevDependencies.ts'\nimport { getImplicitDevDependencies } from '../implicitDevDependencies.ts'\nimport {\n logFix, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport { isUsedViaTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nconst allExternalImports = ({\n externalAllImports,\n externalDistImports,\n externalDistTypeImports,\n}: CheckSourceParams) => {\n return new Set<string>([\n ...externalAllImports,\n ...externalDistImports,\n ...externalDistTypeImports,\n ])\n}\n\nfunction isDevDepUsed(\n dep: string,\n allImports: Set<string>,\n implicitDeps: Set<string>,\n requiredPeers: Set<string>,\n scriptRefs: Set<string>,\n cliRefs: Set<string>,\n) {\n if (implicitDeps.has(dep)) return true\n if (requiredPeers.has(dep)) return true\n if (scriptRefs.has(dep)) return true\n if (cliRefs.has(dep)) return true\n\n if (dep.startsWith('@types/')) {\n const baseName = dep.replace(/^@types\\//, '')\n return allImports.has(baseName) || allImports.has(dep) || implicitDeps.has(baseName)\n }\n\n if (allImports.has(dep)) return true\n return isUsedViaTsScriptsVariant(dep, [...allImports])\n}\n\nexport function findUnusedDevDeps(\n location: string,\n dependencies: string[],\n devDependencies: string[],\n peerDependencies: string[],\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n exclude?: Set<string>,\n): string[] {\n const allImports = allExternalImports(sourceParams)\n const allDeps = [...dependencies, ...devDependencies, ...peerDependencies]\n const implicitDeps = getImplicitDevDependencies({\n ...fileContext, allDependencies: allDeps, location,\n })\n const requiredPeers = getRequiredPeerDependencies(location, allDeps)\n const scriptRefs = getScriptReferencedPackages(location, allDeps)\n const cliRefs = getCliReferencedPackagesFromFiles(fileContext.allFiles, location, allDeps)\n const unused: string[] = []\n\n for (const dep of devDependencies) {\n if (exclude?.has(dep)) continue\n if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue\n\n if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {\n unused.push(dep)\n }\n }\n\n return unused\n}\n\nexport function getUnusedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDevDeps(location, dependencies, devDependencies, peerDependencies, sourceParams, fileContext, exclude)\n\n for (const dep of unused) {\n console.log(`[${chalk.blue(name)}] Unused devDependency in package.json: ${chalk.red(dep)}`)\n }\n if (unused.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unused.length\n}\n\nexport function fixUnusedDevDependencies(\n workspace: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n exclude?: Set<string>,\n) {\n const unused = findUnusedDevDeps(workspace.location, dependencies, devDependencies, peerDependencies, sourceParams, fileContext, exclude)\n if (unused.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of unused) {\n removeDep(pkg, dep, 'devDependencies')\n logFix(workspace, 'removed from devDependencies', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return unused.length\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport ts from 'typescript'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\nimport { getBinNames, tokenizeScript } from './getScriptReferencedPackages.ts'\n\n/**\n * Names of child_process functions that execute shell commands as a single\n * string (first argument is a command string to tokenize).\n */\nconst shellCommandFunctions = new Set(['execSync', 'exec'])\n\n/**\n * Names of child_process functions where the first argument is the\n * executable name directly (not a full shell command string).\n */\nconst directExecFunctions = new Set(['spawn', 'spawnSync', 'execFile', 'execFileSync'])\n\n/**\n * All child_process function names we scan for.\n */\nconst allExecFunctions = new Set([...shellCommandFunctions, ...directExecFunctions])\n\n/**\n * Extracts command strings from child_process calls (execSync, spawn, etc.)\n * found in a single source file.\n *\n * For shell-style calls (execSync, exec) the first argument is a command\n * string like \"npx typedoc --options foo\" — we tokenize it and return the\n * tokens. For direct-exec calls (spawn, spawnSync, execFile, execFileSync)\n * the first argument is the executable name itself.\n */\nfunction getCommandTokensFromFile(filePath: string): Set<string> {\n const tokens = new Set<string>()\n let sourceCode: string\n try {\n sourceCode = fs.readFileSync(filePath, 'utf8')\n } catch {\n return tokens\n }\n\n const isMjsFile = filePath.endsWith('.mjs')\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n isMjsFile ? ts.ScriptKind.JS : undefined,\n )\n\n function visit(node: ts.Node) {\n if (ts.isCallExpression(node) && node.arguments.length > 0) {\n const fnName = getFunctionName(node.expression)\n if (fnName && allExecFunctions.has(fnName)) {\n const firstArg = node.arguments[0]\n if (ts.isStringLiteral(firstArg) || ts.isNoSubstitutionTemplateLiteral(firstArg)) {\n const value = firstArg.text\n if (shellCommandFunctions.has(fnName)) {\n // Shell command string — tokenize to extract the executable and args\n for (const token of tokenizeScript(value)) {\n tokens.add(token)\n }\n } else {\n // Direct exec — first arg is the executable name\n tokens.add(value)\n }\n } else if (ts.isTemplateExpression(firstArg)) {\n // Template literal like `npx typedoc --options ${path}` — extract\n // the static head which usually contains the command name\n const head = firstArg.head.text\n if (head) {\n for (const token of tokenizeScript(head)) {\n tokens.add(token)\n }\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n return tokens\n}\n\n/**\n * Resolves the function name from a call expression, handling both direct\n * calls like `execSync(...)` and qualified calls like `child_process.execSync(...)`.\n */\nfunction getFunctionName(expr: ts.Expression): string | undefined {\n if (ts.isIdentifier(expr)) {\n return expr.text\n }\n if (ts.isPropertyAccessExpression(expr) && ts.isIdentifier(expr.name)) {\n return expr.name.text\n }\n return undefined\n}\n\n/**\n * Scans source files for child_process calls (execSync, spawn, etc.) and\n * resolves referenced packages by matching command tokens against known\n * dependency binary names.\n *\n * This complements getScriptReferencedPackages (which scans package.json\n * scripts) by catching CLI usage in actual source code, e.g.:\n * execSync(`npx typedoc --options ${configPath}`)\n * spawnSync('eslint', ['--fix', '.'])\n */\nexport function getCliReferencedPackagesFromFiles(\n allFiles: string[],\n location: string,\n allDeps: string[],\n): Set<string> {\n // Collect all command tokens from every source file\n const allTokens = new Set<string>()\n for (const file of allFiles) {\n for (const token of getCommandTokensFromFile(file)) {\n allTokens.add(token)\n }\n }\n\n if (allTokens.size === 0) return new Set()\n\n // Build bin-name -> package-name map (same approach as getScriptReferencedPackages)\n const binToPackage = new Map<string, string>()\n for (const dep of allDeps) {\n for (const bin of getBinNames(location, dep)) {\n binToPackage.set(bin, dep)\n }\n }\n\n const referenced = new Set<string>()\n for (const token of allTokens) {\n // Direct package name match\n const baseName = getBasePackageName(token)\n if (allDeps.includes(baseName)) {\n referenced.add(baseName)\n }\n // Binary name match (e.g. token \"typedoc\" -> package \"typedoc\")\n const pkg = binToPackage.get(token)\n if (pkg) {\n referenced.add(pkg)\n }\n }\n\n return referenced\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport { getBasePackageName } from './getBasePackageName.ts'\nimport { findDepPackageJson } from './getRequiredPeerDependencies.ts'\n\nexport function getBinNames(location: string, dep: string): string[] {\n const depPkgPath = findDepPackageJson(location, dep)\n if (!depPkgPath) return []\n try {\n const raw = fs.readFileSync(depPkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (!pkg.bin) return []\n if (typeof pkg.bin === 'string') return [((pkg.name as string | undefined)?.split('/').pop()) ?? dep]\n return Object.keys(pkg.bin as Record<string, unknown>)\n } catch {\n return []\n }\n}\n\nexport function tokenizeScript(script: string): string[] {\n // Split on shell operators and whitespace to get command tokens\n return script\n .split(/[&|;$()\"`\\s]+/)\n .map(t => t.trim())\n .filter(Boolean)\n}\n\n/**\n * Scans package.json scripts for references to installed packages,\n * either by package name or by binary name they provide.\n */\nexport function getScriptReferencedPackages(\n location: string,\n allDeps: string[],\n): Set<string> {\n const pkgPath = path.join(location, 'package.json')\n let scripts: Record<string, string>\n try {\n const raw = fs.readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n scripts = (pkg.scripts ?? {}) as Record<string, string>\n } catch {\n return new Set()\n }\n\n const scriptText = Object.values(scripts).join(' ')\n const tokens = new Set(tokenizeScript(scriptText))\n\n // Build a map from bin name -> package name\n const binToPackage = new Map<string, string>()\n for (const dep of allDeps) {\n const bins = getBinNames(location, dep)\n for (const bin of bins) {\n binToPackage.set(bin, dep)\n }\n }\n\n const referenced = new Set<string>()\n for (const token of tokens) {\n // Direct package name match (e.g. \"yarn rimraf\" -> token \"rimraf\")\n const baseName = getBasePackageName(token)\n if (allDeps.includes(baseName)) {\n referenced.add(baseName)\n }\n // Binary name match (e.g. \"tsup\" -> @xylabs/ts-scripts-yarn3 provides \"tsup\"? no, tsup provides \"tsup\")\n const pkg = binToPackage.get(token)\n if (pkg) {\n referenced.add(pkg)\n }\n }\n\n return referenced\n}\n","import fs from 'node:fs'\n\nimport { detectPackageManager } from '../../pm/index.ts'\nimport { findDepPackageJson } from './getRequiredPeerDependencies.ts'\n\nexport interface ImplicitDevDependencyRule {\n isNeeded: (context: ImplicitDepContext) => boolean\n package: string\n}\n\nexport interface FileContext {\n allFiles: string[]\n distFiles: string[]\n}\n\nexport interface ImplicitDepContext extends FileContext {\n allDependencies: string[]\n location: string\n}\n\nconst hasFileWithExtension = (files: string[], extensions: string[]) =>\n files.some(f => extensions.some(ext => f.endsWith(ext)))\n\nconst tsExtensions = ['.ts', '.tsx', '.mts', '.cts']\n\nconst hasTypescriptFiles = ({ allFiles }: ImplicitDepContext) =>\n hasFileWithExtension(allFiles, tsExtensions)\n\n// Matches decorator usage: @something at the start of a line (after optional whitespace).\n// Safe from JSDoc false positives since those appear after * in comment blocks.\nconst decoratorPattern = /^\\s*@[a-zA-Z]\\w*/m\n\nconst hasDecorators = ({ allFiles }: ImplicitDepContext) =>\n allFiles\n .filter(f => tsExtensions.some(ext => f.endsWith(ext)))\n .some((file) => {\n try {\n const content = fs.readFileSync(file, 'utf8')\n return decoratorPattern.test(content)\n } catch {\n return false\n }\n })\n\n/**\n * Checks if any direct dependency declares tslib as a peer dependency.\n * Many compiled TypeScript packages require tslib at runtime even when\n * the consuming package doesn't use decorators itself.\n */\nconst hasDependencyRequiringTslib = ({ location, allDependencies }: ImplicitDepContext) =>\n allDependencies.some((dep) => {\n const pkgPath = findDepPackageJson(location, dep)\n if (!pkgPath) return false\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const peers = pkg.peerDependencies as Record<string, string> | undefined\n return peers !== undefined && 'tslib' in peers\n } catch {\n return false\n }\n })\n\nconst importPlugins = new Set(['eslint-plugin-import-x', 'eslint-plugin-import'])\n\n/**\n * Checks whether any dependency (direct or transitive) pulls in\n * one of the eslint import plugins that require a resolver.\n */\nfunction hasImportPlugin({ location, allDependencies }: ImplicitDepContext): boolean {\n // Direct dependency on the plugin\n if (allDependencies.some(d => importPlugins.has(d))) return true\n\n // Transitive: a dependency bundles the plugin as a dep or peer\n for (const dep of allDependencies) {\n const pkgPath = findDepPackageJson(location, dep)\n if (!pkgPath) continue\n try {\n const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const transitiveDeps = [\n ...Object.keys((pkg.dependencies ?? {}) as Record<string, unknown>),\n ...Object.keys((pkg.peerDependencies ?? {}) as Record<string, unknown>),\n ]\n if (transitiveDeps.some(d => importPlugins.has(d))) return true\n } catch {\n // skip unreadable packages\n }\n }\n return false\n}\n\nconst hasVitest = ({ allDependencies }: ImplicitDepContext) =>\n allDependencies.includes('vitest')\n\nconst isYarnRepo = () => detectPackageManager() === 'yarn'\nconst isPnpmRepo = () => detectPackageManager() === 'pnpm'\n\nconst rules: ImplicitDevDependencyRule[] = [\n {\n package: 'typescript',\n isNeeded: hasTypescriptFiles,\n },\n {\n package: 'eslint-import-resolver-typescript',\n isNeeded: context =>\n hasTypescriptFiles(context)\n && context.allDependencies.includes('eslint')\n && hasImportPlugin(context),\n },\n {\n package: 'tslib',\n isNeeded: context => hasDecorators(context) || hasDependencyRequiringTslib(context),\n },\n {\n package: '@vitest/coverage-v8',\n isNeeded: hasVitest,\n },\n {\n package: '@xylabs/ts-scripts-yarn3',\n isNeeded: isYarnRepo,\n },\n {\n package: '@xylabs/ts-scripts-react-yarn3',\n isNeeded: isYarnRepo,\n },\n {\n package: '@xylabs/ts-scripts-pnpm',\n isNeeded: isPnpmRepo,\n },\n {\n package: '@xylabs/ts-scripts-react-pnpm',\n isNeeded: isPnpmRepo,\n },\n]\n\nexport function getImplicitDevDependencies(context: ImplicitDepContext): Set<string> {\n const implicit = new Set<string>()\n for (const rule of rules) {\n if (rule.isNeeded(context)) {\n implicit.add(rule.package)\n }\n }\n return implicit\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n logFix, readPackageJson, removeDep, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nfunction isPeerUsed(dep: string, externalDistImports: string[], externalDistTypeImports: string[]): boolean {\n const baseName = dep.replace(/^@types\\//, '')\n return externalDistImports.includes(dep)\n || externalDistImports.includes(baseName)\n || externalDistTypeImports.includes(dep)\n || externalDistTypeImports.includes(baseName)\n}\n\nexport function findUnusedPeerDeps(\n peerDependencies: string[],\n externalDistImports: string[],\n externalDistTypeImports: string[],\n exclude?: Set<string>,\n): string[] {\n const unused: string[] = []\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n if (!isPeerUsed(dep, externalDistImports, externalDistTypeImports)) {\n unused.push(dep)\n }\n }\n return unused\n}\n\nexport function getUnusedPeerDependencies(\n { name, location }: Workspace,\n { peerDependencies, dependencies }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedPeerDeps(peerDependencies, externalDistImports, externalDistTypeImports, exclude)\n\n for (const dep of unused) {\n if (dependencies.includes(dep)) {\n console.log(`[${chalk.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk.red(dep)}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused peerDependency in package.json: ${chalk.red(dep)}`)\n }\n }\n if (unused.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return unused.length\n}\n\nexport function fixUnusedPeerDependencies(\n workspace: Workspace,\n { peerDependencies }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n exclude?: Set<string>,\n) {\n const unused = findUnusedPeerDeps(peerDependencies, externalDistImports, externalDistTypeImports, exclude)\n if (unused.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const dep of unused) {\n removeDep(pkg, dep, 'peerDependencies')\n logFix(workspace, 'removed from peerDependencies', dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return unused.length\n}\n","import chalk from 'chalk'\nimport semver from 'semver'\n\nimport type { Workspace } from '../../../pm/index.ts'\nimport {\n addDep, logFix, readPackageJson, resolveDepVersion, writePackageJson,\n} from '../packageJsonEditor.ts'\nimport type { CheckPackageParams } from './checkPackageTypes.ts'\n\ntype DepSection = 'dependencies' | 'devDependencies' | 'peerDependencies'\n\nexport interface VersionProblem {\n dep: string\n section: DepSection\n version: string\n}\n\nexport interface PeerVersionIncompatibility {\n actualVersion: string\n declaredRange: string\n dep: string\n}\n\nfunction checkSection(\n deps: string[],\n versions: Record<string, string>,\n section: DepSection,\n workspaceNames: Set<string>,\n problems: VersionProblem[],\n): void {\n for (const dep of deps) {\n if (!workspaceNames.has(dep)) continue\n const version = versions[dep]\n if (version && !version.startsWith('workspace:')) {\n problems.push({\n dep, section, version,\n })\n }\n }\n}\n\nexport function findWorkspaceVersionProblems(\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n): VersionProblem[] {\n const problems: VersionProblem[] = []\n\n checkSection(packageParams.dependencies, packageParams.dependencyVersions, 'dependencies', workspaceNames, problems)\n checkSection(packageParams.devDependencies, packageParams.devDependencyVersions, 'devDependencies', workspaceNames, problems)\n\n return problems\n}\n\nexport function findWorkspacePeerVersionProblems(\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n location: string,\n): PeerVersionIncompatibility[] {\n const problems: PeerVersionIncompatibility[] = []\n\n for (const dep of packageParams.peerDependencies) {\n if (!workspaceNames.has(dep)) continue\n const declaredRange = packageParams.peerDependencyVersions[dep]\n if (!declaredRange || declaredRange.startsWith('workspace:')) continue\n\n const resolved = resolveDepVersion(location, dep)\n // resolveDepVersion returns ~X.Y.Z or *, extract the raw version\n const actualVersion = resolved.startsWith('~') ? resolved.slice(1) : resolved\n if (actualVersion === '*') continue\n\n if (!semver.satisfies(actualVersion, declaredRange)) {\n problems.push({\n actualVersion, declaredRange, dep,\n })\n }\n }\n\n return problems\n}\n\nexport function getWorkspaceVersionProblems(\n { name, location }: Workspace,\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n): number {\n const problems = findWorkspaceVersionProblems(packageParams, workspaceNames)\n\n for (const {\n dep, section, version,\n } of problems) {\n console.log(\n `[${chalk.blue(name)}] Workspace dependency ${chalk.red(dep)} in ${chalk.cyan(section)}`\n + ` should use workspace: protocol — found ${chalk.yellow(version)}`,\n )\n }\n if (problems.length > 0) {\n console.log(` ${chalk.yellow(`${location}/package.json`)}\\n`)\n }\n return problems.length\n}\n\nexport function fixWorkspaceVersionProblems(\n workspace: Workspace,\n packageParams: CheckPackageParams,\n workspaceNames: Set<string>,\n): number {\n const problems = findWorkspaceVersionProblems(packageParams, workspaceNames)\n if (problems.length === 0) return 0\n\n const pkg = readPackageJson(workspace.location)\n\n for (const { dep, section } of problems) {\n addDep(pkg, dep, 'workspace:~', section)\n logFix(workspace, `set workspace:~ for ${section}`, dep)\n }\n\n writePackageJson(workspace.location, pkg)\n return problems.length\n}\n","import type { UnsatisfiedPeer } from './checkPackage/index.ts'\nimport {\n findMismatchedPeerDevVersions,\n findRedundantPeerDeps,\n findUnlistedDependencies,\n findUnlistedDevDeps,\n findUnrequestedPeerDeps,\n findUnsatisfiedPeers,\n findUnusedDependencies,\n findUnusedDevDeps,\n findUnusedPeerDeps,\n findWorkspacePeerVersionProblems,\n findWorkspaceVersionProblems,\n resolvePeerTargetSections,\n shouldBePeerDependency,\n} from './checkPackage/index.ts'\nimport { resolveDepVersion, resolveExpectedPeerVersion } from './packageJsonEditor.ts'\nimport type {\n DeplintDiagnostic, DeplintFix, DeplintRule, DeplintSection, DeplintWorkspaceContext,\n} from './types.ts'\n\nfunction diagnostic(\n context: DeplintWorkspaceContext,\n id: string,\n message: string,\n dependency?: string,\n evidence?: string[],\n fixes?: DeplintFix[],\n): DeplintDiagnostic {\n return {\n dependency,\n evidence,\n file: context.packageJsonPath,\n fixes,\n id,\n message,\n severity: 'error',\n workspace: context.workspace,\n }\n}\n\nfunction resolvedAddFix(\n context: DeplintWorkspaceContext,\n dependency: string,\n section: DeplintSection,\n detail: string,\n): DeplintFix {\n return {\n action: 'add',\n dependency,\n detail,\n section,\n version: resolveDepVersion(context.workspace.location, dependency),\n }\n}\n\nconst unlistedDependenciesRule: DeplintRule = {\n category: 'dependencies',\n id: 'deplint.dependencies.unlisted',\n evaluate(context) {\n const findings = findUnlistedDependencies(\n context.workspace.name,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.packageParams.peerDependencies,\n context.sourceParams.externalDistImports,\n context.sourceParams.externalDistTypeImports,\n )\n\n return findings.map(({ imp, section }) => {\n // For library packages, check if this import shares peers with the\n // package's existing peerDependencies (e.g. react-dom peers on react).\n // If so, it should be a peerDependency + devDependency, not a dependency.\n const isPeer = !context.isTerminalPackage\n && section === 'dependencies'\n && !context.forceDeps.has(imp)\n && shouldBePeerDependency(imp, context.workspace.location, context.packageParams.peerDependencies, context.sourceParams.externalDistImports)\n\n const fixes = isPeer\n ? (['peerDependencies', 'devDependencies'] as DeplintSection[]).map(\n s => resolvedAddFix(context, imp, s, `added to ${s}`),\n )\n : [resolvedAddFix(context, imp, section, `added to ${section}`)]\n\n return diagnostic(\n context,\n 'deplint.dependencies.unlisted',\n `Missing dependency in package.json: ${imp}`,\n imp,\n context.sourceParams.distImportPaths[imp],\n fixes,\n )\n })\n },\n}\n\nconst unusedDependenciesRule: DeplintRule = {\n category: 'dependencies',\n id: 'deplint.dependencies.unused',\n evaluate(context) {\n const findings = findUnusedDependencies(\n context.workspace.location,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.sourceParams.externalDistImports,\n context.sourceParams.externalDistTypeImports,\n context.sourceParams.externalAllImports,\n context.unusedDependencyExclude,\n )\n\n return findings.map(({\n dep, kind, reason,\n }) => diagnostic(\n context,\n 'deplint.dependencies.unused',\n kind === 'move-to-dev'\n ? `dependency should be devDependency in package.json: ${dep}${reason ? ` (${reason})` : ''}`\n : `Unused dependency in package.json: ${dep}`,\n dep,\n undefined,\n [kind === 'move-to-dev'\n ? {\n action: 'move',\n dependency: dep,\n detail: 'moved to devDependencies',\n fromSection: 'dependencies',\n toSection: 'devDependencies',\n }\n : {\n action: 'remove',\n dependency: dep,\n detail: 'removed from dependencies',\n section: 'dependencies',\n }],\n ))\n },\n}\n\nconst unlistedDevDependenciesRule: DeplintRule = {\n category: 'devDependencies',\n id: 'deplint.devDependencies.unlisted',\n evaluate(context) {\n const findings = findUnlistedDevDeps(\n context.workspace.name,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.packageParams.peerDependencies,\n context.sourceParams.externalAllImports,\n context.sourceParams.distImports,\n context.sourceParams.externalDistTypeImports,\n )\n\n return findings.map(imp => diagnostic(\n context,\n 'deplint.devDependencies.unlisted',\n `Missing devDependency in package.json: ${imp}`,\n imp,\n context.sourceParams.allImportPaths[imp],\n [resolvedAddFix(context, imp, 'devDependencies', 'added to devDependencies')],\n ))\n },\n}\n\nconst unusedDevDependenciesRule: DeplintRule = {\n category: 'devDependencies',\n id: 'deplint.devDependencies.unused',\n evaluate(context) {\n const findings = findUnusedDevDeps(\n context.workspace.location,\n context.packageParams.dependencies,\n context.packageParams.devDependencies,\n context.packageParams.peerDependencies,\n context.sourceParams,\n context.fileContext,\n context.unusedDependencyExclude,\n )\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.devDependencies.unused',\n `Unused devDependency in package.json: ${dep}`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed from devDependencies', section: 'devDependencies',\n }],\n ))\n },\n}\n\nconst redundantDevDependenciesRule: DeplintRule = {\n category: 'devDependencies',\n id: 'deplint.devDependencies.redundant',\n evaluate(context) {\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const dep of context.packageParams.devDependencies) {\n if (!context.packageParams.dependencies.includes(dep)) continue\n // Skip if this dep will be moved to peerDependencies (the devDep is needed as the peer's companion)\n if (!context.isTerminalPackage\n && !context.forceDeps.has(dep)\n && shouldBePeerDependency(dep, context.workspace.location, context.packageParams.peerDependencies, context.sourceParams.externalDistImports)) {\n continue\n }\n diagnostics.push(diagnostic(\n context,\n 'deplint.devDependencies.redundant',\n `Redundant devDependency ${dep} — already listed in dependencies`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed redundant devDependency (kept in dependencies)', section: 'devDependencies',\n }],\n ))\n }\n\n return diagnostics\n },\n}\n\nfunction generateVersionMismatchFixes(\n context: DeplintWorkspaceContext,\n finding: UnsatisfiedPeer,\n): DeplintFix[] {\n const expectedVersion = resolveExpectedPeerVersion(\n context.workspace.location,\n finding.peer,\n finding.versionRange,\n )\n if (expectedVersion === '*') return []\n\n const fixes: DeplintFix[] = []\n\n // Fix peerDependencies if the package declares this peer\n if (context.packageParams.peerDependencies.includes(finding.peer)) {\n fixes.push({\n action: 'set-version',\n dependency: finding.peer,\n detail: `updated peerDependency version to match installed (${finding.installedVersion})`,\n section: 'peerDependencies',\n version: expectedVersion,\n })\n }\n\n // Fix devDependencies if it also has a mismatched version\n if (context.packageParams.devDependencies.includes(finding.peer)) {\n const devVersion = context.packageParams.devDependencyVersions[finding.peer]\n // Only fix non-workspace devDep versions\n if (devVersion && !devVersion.startsWith('workspace:')) {\n fixes.push({\n action: 'set-version',\n dependency: finding.peer,\n detail: `updated devDependency version to match installed (${finding.installedVersion})`,\n section: 'devDependencies',\n version: expectedVersion,\n })\n }\n }\n\n return fixes\n}\n\nconst unsatisfiedPeersRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.unsatisfied',\n evaluate(context) {\n const findings = findUnsatisfiedPeers(context.workspace, context.packageParams, context.exclude)\n\n return findings.map((finding) => {\n const requiredBy = finding.sources.map(source => source.requiredBy).join(', ')\n const chain = finding.sources.find(source => source.chain && source.chain.length > 0)?.chain?.join(' -> ')\n const evidence = chain ? [`via ${chain}`] : undefined\n const message = finding.reason === 'version-mismatch'\n ? `Peer dependency version mismatch ${finding.peer} — installed ${finding.installedVersion ?? 'unknown'} does not satisfy ${finding.versionRange} (required by ${requiredBy})`\n : finding.hasRuntimeSource\n ? `Unsatisfied peer dependency ${finding.peer} (required by ${requiredBy}) — must be in dependencies or peerDependencies`\n : `Unsatisfied peer dependency ${finding.peer} (required by devDependency ${requiredBy}) — must be in dependencies, devDependencies, or peerDependencies`\n\n const fixes = finding.reason === 'missing'\n ? resolvePeerTargetSections(finding.hasRuntimeSource, context.isTerminalPackage).map((section): DeplintFix => ({\n action: 'add',\n dependency: finding.peer,\n detail: `added to ${section}`,\n section: section as DeplintSection,\n version: finding.versionRange,\n }))\n : finding.reason === 'version-mismatch'\n ? generateVersionMismatchFixes(context, finding)\n : undefined\n\n return diagnostic(\n context,\n 'deplint.peerDependencies.unsatisfied',\n message,\n finding.peer,\n evidence,\n fixes,\n )\n })\n },\n}\n\nconst unusedPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.unused',\n evaluate(context) {\n const findings = findUnusedPeerDeps(\n context.packageParams.peerDependencies,\n context.sourceParams.externalDistImports,\n context.sourceParams.externalDistTypeImports,\n context.unusedDependencyExclude,\n )\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.peerDependencies.unused',\n context.packageParams.dependencies.includes(dep)\n ? `Unused peerDependency [already a dependency] in package.json: ${dep}`\n : `Unused peerDependency in package.json: ${dep}`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed from peerDependencies', section: 'peerDependencies',\n }],\n ))\n },\n}\n\nconst unrequestedPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.unrequested',\n evaluate(context) {\n if (!context.isTerminalPackage) return []\n\n const findings = findUnrequestedPeerDeps(\n context.workspace.location,\n context.packageParams,\n context.sourceParams,\n context.exclude,\n )\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.peerDependencies.unrequested',\n `Unnecessary peerDependency ${dep} — imported in dist but no dependency requires it as a peer; should be a dependency`,\n dep,\n undefined,\n [{\n action: 'move',\n dependency: dep,\n detail: 'moved from peerDependencies to dependencies',\n fromSection: 'peerDependencies',\n toSection: 'dependencies',\n version: context.packageParams.peerDependencyVersions[dep] ?? '*',\n }],\n ))\n },\n}\n\nconst misplacedDependenciesRule: DeplintRule = {\n category: 'dependencies',\n id: 'deplint.dependencies.misplaced',\n evaluate(context) {\n // Only applies to library packages — terminal packages keep deps in dependencies\n if (context.isTerminalPackage) return []\n\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const dep of context.packageParams.dependencies) {\n // Skip packages explicitly configured as dependencies via deplint.deps\n if (context.forceDeps.has(dep)) continue\n // Check if this dependency is configured as refType 'peer', or if it shares peers\n // with the package's existing peerDependencies (e.g. react-dom peers on react)\n if (context.forcePeers.has(dep)\n || shouldBePeerDependency(dep, context.workspace.location, context.packageParams.peerDependencies, context.sourceParams.externalDistImports)) {\n const fixes: DeplintFix[] = [{\n action: 'move',\n dependency: dep,\n detail: 'moved from dependencies to peerDependencies',\n fromSection: 'dependencies',\n toSection: 'peerDependencies',\n }]\n // Also ensure it's in devDependencies if not already\n if (!context.packageParams.devDependencies.includes(dep)) {\n fixes.push(resolvedAddFix(context, dep, 'devDependencies', 'added to devDependencies'))\n }\n\n const reason = context.forcePeers.has(dep)\n ? 'configured as refType \"peer\"'\n : 'it shares peers with existing peerDependencies'\n diagnostics.push(diagnostic(\n context,\n 'deplint.dependencies.misplaced',\n `dependency ${dep} should be a peerDependency — ${reason}`,\n dep,\n undefined,\n fixes,\n ))\n }\n }\n\n return diagnostics\n },\n}\n\nconst misplacedPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.misplaced',\n evaluate(context) {\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const dep of context.packageParams.peerDependencies) {\n if (context.forceDeps.has(dep)) {\n const fixes: DeplintFix[] = [{\n action: 'move',\n dependency: dep,\n detail: 'moved from peerDependencies to dependencies',\n fromSection: 'peerDependencies',\n toSection: 'dependencies',\n version: context.packageParams.peerDependencyVersions[dep] ?? '*',\n }]\n\n diagnostics.push(diagnostic(\n context,\n 'deplint.peerDependencies.misplaced',\n `peerDependency ${dep} should be a dependency — configured as refType \"dep\"`,\n dep,\n undefined,\n fixes,\n ))\n }\n }\n\n return diagnostics\n },\n}\n\nconst redundantPeerDependenciesRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.redundant',\n evaluate(context) {\n const findings = findRedundantPeerDeps(context.packageParams, context.exclude)\n\n return findings.map(dep => diagnostic(\n context,\n 'deplint.peerDependencies.redundant',\n `Redundant peerDependency ${dep} — already listed in dependencies`,\n dep,\n undefined,\n [{\n action: 'remove', dependency: dep, detail: 'removed redundant peerDependency (kept in dependencies)', section: 'peerDependencies',\n }],\n ))\n },\n}\n\nconst mismatchedPeerDevVersionsRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.peerDependencies.version-mismatch',\n evaluate(context) {\n const findings = findMismatchedPeerDevVersions(context.packageParams, context.exclude)\n\n return findings.map(({\n dep, devVersion, peerVersion,\n }) => diagnostic(\n context,\n 'deplint.peerDependencies.version-mismatch',\n `Peer/dev version mismatch ${dep} — peer: ${peerVersion}, dev: ${devVersion}`,\n dep,\n undefined,\n [{\n action: 'set-version', dependency: dep, detail: 'synced peerDependency to devDependency version', section: 'peerDependencies', version: devVersion,\n }],\n ))\n },\n}\n\nconst workspaceVersionProblemsRule: DeplintRule = {\n category: 'peerDependencies',\n id: 'deplint.workspace.protocol',\n evaluate(context) {\n if (!context.workspaceNames) return []\n\n const protocolFindings = findWorkspaceVersionProblems(context.packageParams, context.workspaceNames)\n const protocolDiagnostics = protocolFindings.map(({\n dep, section, version,\n }) => diagnostic(\n context,\n 'deplint.workspace.protocol',\n `Workspace dependency ${dep} in ${section} should use workspace: protocol — found ${version}`,\n dep,\n undefined,\n [{\n action: 'set-version', dependency: dep, detail: `set workspace:~ for ${section}`, section, version: 'workspace:~',\n }],\n ))\n\n const peerFindings = findWorkspacePeerVersionProblems(\n context.packageParams,\n context.workspaceNames,\n context.workspace.location,\n )\n const peerDiagnostics = peerFindings.map(({\n dep, actualVersion, declaredRange,\n }) => {\n const expectedRange = resolveExpectedPeerVersion(\n context.workspace.location,\n dep,\n declaredRange,\n )\n return diagnostic(\n context,\n 'deplint.workspace.protocol',\n `Workspace peerDependency ${dep} range ${declaredRange} does not satisfy workspace version ${actualVersion}`,\n dep,\n undefined,\n expectedRange === '*'\n ? undefined\n : [{\n action: 'set-version', dependency: dep, detail: 'updated peerDependency to match workspace version', section: 'peerDependencies', version: expectedRange,\n }],\n )\n })\n\n return [...protocolDiagnostics, ...peerDiagnostics]\n },\n}\n\nexport const deplintRules: DeplintRule[] = [\n unlistedDependenciesRule,\n unusedDependenciesRule,\n misplacedDependenciesRule,\n unlistedDevDependenciesRule,\n unusedDevDependenciesRule,\n redundantDevDependenciesRule,\n unsatisfiedPeersRule,\n unusedPeerDependenciesRule,\n unrequestedPeerDependenciesRule,\n misplacedPeerDependenciesRule,\n redundantPeerDependenciesRule,\n mismatchedPeerDevVersionsRule,\n workspaceVersionProblemsRule,\n]\n","import fs from 'node:fs'\n\nimport type { Workspace } from '../../pm/index.ts'\nimport { getRequiredTransitivePeers } from './checkPackage/index.ts'\nimport { findFiles } from './findFiles.ts'\nimport { getDependenciesFromPackageJson } from './getDependenciesFromPackageJson.ts'\nimport { getExtendsFromTsconfigs, getTypesFromTsconfigs } from './getExtendsFromTsconfigs.ts'\nimport { getExternalImportsFromFiles } from './getExternalImportsFromFiles.ts'\nimport type { DeplintWorkspaceContext } from './types.ts'\n\nfunction isTerminalPackage(location: string): boolean {\n try {\n const pkg = JSON.parse(fs.readFileSync(`${location}/package.json`, 'utf8')) as Record<string, unknown>\n return pkg.private === true\n } catch {\n return false\n }\n}\n\nexport function buildWorkspaceContext(\n workspace: Workspace,\n exclude?: Set<string>,\n workspaceNames?: Set<string>,\n forceDeps?: Set<string>,\n forcePeers?: Set<string>,\n): DeplintWorkspaceContext {\n const { allFiles, distFiles } = findFiles(workspace.location)\n const tsconfigExtends = getExtendsFromTsconfigs(workspace.location)\n const tsconfigTypes = getTypesFromTsconfigs(workspace.location)\n const sourceParams = getExternalImportsFromFiles({\n allFiles, distFiles, location: workspace.location, tsconfigExtends, tsconfigTypes,\n })\n const packageJsonPath = `${workspace.location}/package.json`\n const packageParams = getDependenciesFromPackageJson(packageJsonPath)\n const requiredTransitivePeers = getRequiredTransitivePeers(workspace.location, packageParams)\n\n return {\n exclude,\n fileContext: { allFiles, distFiles },\n forceDeps: forceDeps ?? new Set(),\n forcePeers: forcePeers ?? new Set(),\n isTerminalPackage: isTerminalPackage(workspace.location),\n packageJsonPath,\n packageParams,\n sourceParams,\n unusedDependencyExclude: new Set([...(exclude ?? []), ...requiredTransitivePeers]),\n workspace,\n workspaceNames,\n }\n}\n","import { loadWorkspaceCommandConfig } from '../../lib/index.ts'\nimport type { Workspace } from '../../pm/index.ts'\nimport type { DeplintConfig } from '../package/index.ts'\nimport { applyDeplintFixes } from './fixer.ts'\nimport { deplintRules } from './rules.ts'\nimport { buildWorkspaceContext } from './snapshot.ts'\nimport type {\n DeplintDiagnostic, DeplintRunOptions, DeplintRunResult,\n} from './types.ts'\n\nfunction resolveCheckFlags(deps = false, devDeps = false, peerDeps = false) {\n const noneExplicit = !(deps || devDeps || peerDeps)\n return {\n checkDependencies: deps || noneExplicit,\n checkDevDependencies: devDeps || noneExplicit,\n checkPeerDependencies: peerDeps || noneExplicit,\n }\n}\n\nfunction shouldRunRule(\n category: 'dependencies' | 'devDependencies' | 'peerDependencies',\n ruleId: string,\n options: DeplintRunOptions,\n): boolean {\n const flags = resolveCheckFlags(options.deps, options.devDeps, options.peerDeps)\n if (ruleId === 'deplint.peerDependencies.unsatisfied') {\n return flags.checkDependencies || flags.checkDevDependencies || flags.checkPeerDependencies\n }\n if (ruleId === 'deplint.workspace.protocol') {\n return flags.checkDependencies || flags.checkDevDependencies || flags.checkPeerDependencies\n }\n if (category === 'dependencies') return flags.checkDependencies\n if (category === 'devDependencies') return flags.checkDevDependencies\n return flags.checkPeerDependencies\n}\n\nasync function evaluateWorkspaces(\n workspaces: Workspace[],\n options: DeplintRunOptions,\n workspaceNames?: Set<string>,\n): Promise<DeplintDiagnostic[]> {\n const diagnostics: DeplintDiagnostic[] = []\n\n for (const workspace of workspaces) {\n // Load per-workspace deplint config (root merged with package-level)\n const wsConfig = await loadWorkspaceCommandConfig<DeplintConfig>(workspace.location, 'deplint')\n\n // Build exclude set: config + CLI overrides\n const exclude = new Set([\n ...(wsConfig.exclude ?? []),\n ...(options.cliExclude ?? []),\n ])\n\n // Build forceDeps/forcePeers from packages map\n const packageEntries = Object.entries(wsConfig.packages ?? {})\n const forceDeps = new Set(\n packageEntries.filter(([, cfg]) => cfg.refType === 'dep').map(([name]) => name),\n )\n const forcePeers = new Set(\n packageEntries.filter(([, cfg]) => cfg.refType === 'peer').map(([name]) => name),\n )\n\n const context = buildWorkspaceContext(workspace, exclude, workspaceNames, forceDeps, forcePeers)\n if (options.verbose) {\n console.info(`Checking package: ${workspace.name} at ${workspace.location}`)\n console.info(`All files: ${context.fileContext.allFiles.length}, Distribution files: ${context.fileContext.distFiles.length}`)\n }\n\n for (const rule of deplintRules) {\n if (shouldRunRule(rule.category, rule.id, options)) {\n diagnostics.push(...rule.evaluate(context))\n }\n }\n }\n\n return diagnostics\n}\n\nexport async function runDeplint(\n workspaces: Workspace[],\n options: DeplintRunOptions,\n workspaceNames?: Set<string>,\n): Promise<DeplintRunResult> {\n let diagnostics = await evaluateWorkspaces(workspaces, options, workspaceNames)\n const appliedFixes = [] as DeplintRunResult['appliedFixes']\n\n // Fix loop: fixes can cascade (e.g. moving a dep to peer may make a devDep redundant),\n // so re-evaluate and fix until stable or a safety cap is reached.\n const MAX_FIX_PASSES = 5\n for (let pass = 0; options.fix && diagnostics.length > 0 && pass < MAX_FIX_PASSES; pass++) {\n appliedFixes.push(...applyDeplintFixes(diagnostics))\n diagnostics = await evaluateWorkspaces(workspaces, options, workspaceNames)\n }\n\n const errorCount = diagnostics.filter(diagnostic => diagnostic.severity === 'error').length\n const warningCount = diagnostics.filter(diagnostic => diagnostic.severity === 'warning').length\n\n return {\n appliedFixes,\n diagnostics,\n summary: {\n appliedFixes: appliedFixes.length,\n errorCount,\n warningCount,\n workspacesChecked: workspaces.length,\n },\n }\n}\n","import chalk from 'chalk'\n\nimport type { DeplintReporter } from './types.ts'\n\nexport const humanDeplintReporter: DeplintReporter = {\n render(result) {\n for (const fix of result.appliedFixes) {\n console.log(`[${chalk.blue(fix.workspace.name)}] Fixed: ${fix.detail} ${chalk.green(fix.dependency)}`)\n }\n\n for (const diagnostic of result.diagnostics) {\n console.log(`[${chalk.blue(diagnostic.workspace.name)}] ${diagnostic.message}`)\n for (const line of diagnostic.evidence ?? []) {\n console.log(` ${line}`)\n }\n console.log(` ${chalk.yellow(diagnostic.file)}\\n`)\n }\n\n if (result.summary.errorCount > 0) {\n console.warn(`Deplint: Found ${chalk.red(result.summary.errorCount)} dependency problems. ${chalk.red('āœ–')}`)\n return\n }\n\n console.info(`Deplint: Found no dependency problems. ${chalk.green('āœ”')}`)\n },\n}\n\nexport const jsonDeplintReporter: DeplintReporter = {\n render(result) {\n console.log(JSON.stringify(result, null, 2))\n },\n}\n\nexport function getDeplintReporter(format: 'human' | 'json'): DeplintReporter {\n return format === 'json' ? jsonDeplintReporter : humanDeplintReporter\n}\n","import { readFileSync } from 'node:fs'\n\nimport { runSteps } from '../lib/index.ts'\nimport type { Workspace } from '../pm/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { logMonorepoVersion } from './package-lint-deps.ts'\n\nexport type DeployLevel = 'major' | 'minor' | 'patch' | 'prerelease'\n\nconst privatePackageExcludeList = () => {\n const pm = getPackageManager()\n const possibleDeployablePackages: [Workspace, { private?: boolean }][] = pm.listWorkspaces().map(workspace => [workspace,\n JSON.parse(readFileSync(`${workspace.location}/package.json`, { encoding: 'utf8' })) as object])\n\n const privatePackages = possibleDeployablePackages.filter(([_, pkg]) => pkg.private).map(([workspace]) => workspace)\n const excludeList = privatePackages.map(workspace => `--exclude ${workspace.name}`)\n return excludeList\n}\n\nexport function deploy(level: DeployLevel = 'patch'): number {\n const excludeList = privatePackageExcludeList()\n if (excludeList.length > 0) {\n console.log('Excluding private packages from deployment:', excludeList)\n }\n\n const label = level === 'prerelease' ? 'Next' : level.charAt(0).toUpperCase() + level.slice(1)\n const pm = getPackageManager()\n const result = runSteps(`Deploy [${label}]`, [\n ...pm.versionBump(level),\n pm.runXy(['clean']),\n pm.runXy(['build']),\n pm.versionApply(),\n ])\n logMonorepoVersion()\n return result\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport semver from 'semver'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { LintResult } from './package-lint.ts'\n\nfunction readWorkspacePackageJson(cwd: string, location: string): Record<string, unknown> | undefined {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n return JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n } catch {\n return undefined\n }\n}\n\nfunction writeWorkspacePackageJson(cwd: string, location: string, pkg: Record<string, unknown>) {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction buildWorkspaceVersionMap(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Map<string, string> {\n const map = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) map.set(name, version)\n }\n return map\n}\n\n/**\n * Derives the expected peerDep range from the workspace protocol used in\n * the matching devDependency and the current version of the target package.\n *\n * workspace:~ + version 7.6.21 → ~7.6\n * workspace:^ + version 7.6.21 → ^7\n *\n * Falls back to ~major.minor if no matching devDep is found.\n */\nfunction expectedPeerRange(devDepVersion: string | undefined, targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n\n if (devDepVersion === 'workspace:^') {\n return `^${parsed.major}`\n }\n return `~${parsed.major}.${parsed.minor}`\n}\n\n// --- Version consistency checks ---\n\nexport function checkVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n\n if (rootPkg.version !== undefined) {\n result.fixable.push('Root package.json should not have a \"version\" field in a monorepo')\n }\n\n const versions = new Map<string, string>()\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n versions.set(name, version)\n } else {\n result.errors.push(`${name} (${location}) is missing a \"version\" field`)\n }\n }\n\n const uniqueVersions = new Set(versions.values())\n if (uniqueVersions.size > 1) {\n const versionList = [...uniqueVersions].toSorted(semver.rcompare)\n for (const [name, version] of versions) {\n if (version !== versionList[0]) {\n result.fixable.push(`${name} has version ${version} (expected ${versionList[0]})`)\n }\n }\n }\n\n return result\n}\n\nexport function fixVersionConsistency(\n cwd: string,\n rootPkg: Record<string, unknown>,\n writeRootPackageJson: (cwd: string, pkg: Record<string, unknown>) => void,\n workspaces: { location: string; name: string }[],\n): void {\n if (rootPkg.version !== undefined) {\n delete rootPkg.version\n writeRootPackageJson(cwd, rootPkg)\n console.log(chalk.green(' āœ” Fixed: removed \"version\" from root package.json'))\n }\n\n const versions: string[] = []\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version && semver.valid(version)) {\n versions.push(version)\n }\n }\n\n if (versions.length === 0) return\n\n const highest = versions.toSorted(semver.rcompare)[0]\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n if (pkg.version !== highest) {\n pkg.version = highest\n writeWorkspacePackageJson(cwd, location, pkg)\n console.log(chalk.green(` āœ” Fixed: set version to ${highest} in ${name} (${location})`))\n }\n }\n}\n\n// --- Internal dependency version checks (dependencies and devDependencies only) ---\n\nfunction expectedDepVersion(targetVersion: string): string {\n const parsed = semver.parse(targetVersion)\n if (!parsed) return `~${targetVersion}`\n return `~${targetVersion}`\n}\n\nexport function checkInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\" (not workspace: protocol)`,\n )\n } else if (version !== expected) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should be \"${expected}\"`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalDepVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n const expected = expectedDepVersion(targetVersion)\n if (version !== expected) {\n deps[dep] = expected\n console.log(chalk.green(` āœ” Fixed: set ${depField}.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Workspace protocol checks (pnpm — dependencies and devDependencies only) ---\n\nexport function checkWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n result.fixable.push(\n `${name} (${location}) ${depField}.${dep} is \"${version}\" — should use workspace: protocol`,\n )\n }\n }\n }\n }\n\n return result\n}\n\nexport function fixWorkspaceProtocol(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceNames = new Set(workspaces.map(w => w.name))\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n let modified = false\n\n for (const depField of ['dependencies', 'devDependencies'] as const) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n for (const [dep, version] of Object.entries(deps)) {\n if (!workspaceNames.has(dep)) continue\n if (!version.startsWith('workspace:')) {\n deps[dep] = 'workspace:~'\n console.log(chalk.green(` āœ” Fixed: set ${depField}.${dep} to \"workspace:~\" in ${name} (${location})`))\n modified = true\n }\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n// --- Internal peerDependency version checks ---\n\nexport function checkInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result: LintResult = {\n errors: [], fixable: [], warnings: [],\n }\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n if (version.startsWith('workspace:')) {\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} uses workspace: protocol — should be \"${expected}\"`,\n )\n continue\n }\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected && !semver.satisfies(targetVersion, version)) {\n result.fixable.push(\n `${name} (${location}) peerDependencies.${dep} is \"${version}\" — current version ${targetVersion} is not satisfied; expected \"${expected}\"`,\n )\n }\n }\n }\n\n return result\n}\n\nexport function fixInternalPeerVersions(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): void {\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(` āœ” Fixed: set peerDependencies.${dep} to \"${expected}\" in ${name} (${location})`))\n modified = true\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n}\n\n/**\n * Syncs all internal peerDependency versions to match current workspace versions.\n * Called by xy publish to ensure peerDeps are correct before publishing.\n */\nexport function syncInternalPeerVersions(): number {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceVersions = buildWorkspaceVersionMap(cwd, workspaces)\n let updated = 0\n\n for (const { location, name } of workspaces) {\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (!peerDeps) continue\n const devDeps = pkg.devDependencies as Record<string, string> | undefined\n let modified = false\n\n for (const [dep, version] of Object.entries(peerDeps)) {\n const targetVersion = workspaceVersions.get(dep)\n if (!targetVersion) continue\n\n const expected = expectedPeerRange(devDeps?.[dep], targetVersion)\n if (version !== expected) {\n peerDeps[dep] = expected\n console.log(chalk.green(`Publish: updated ${name} peerDependencies.${dep} to \"${expected}\"`))\n modified = true\n updated++\n }\n }\n\n if (modified) {\n writeWorkspacePackageJson(cwd, location, pkg)\n }\n }\n\n return updated\n}\n\n/**\n * Reads the shared monorepo version from the first non-root workspace\n * and logs it. Call at the end of deploy to report the new version.\n */\nexport function logMonorepoVersion(): void {\n const cwd = INIT_CWD()\n const workspaces = getPackageManager().listWorkspaces()\n\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkg = readWorkspacePackageJson(cwd, location)\n if (!pkg) continue\n const version = pkg.version as string | undefined\n if (version) {\n console.log(chalk.green(`\\nDeployed version: ${chalk.bold(version)}`))\n return\n }\n }\n}\n","import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nexport const dupdeps = () => {\n console.log(chalk.green('Checking all Dependencies for Duplicates'))\n\n const pkg = parsedPackageJSON()\n const allDependencies = {\n ...(pkg?.dependencies as Record<string, string> | undefined),\n ...(pkg?.devDependencies as Record<string, string> | undefined),\n }\n const dependencies = Object.keys(allDependencies)\n\n return detectDuplicateDependencies(dependencies)\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const eject = () => {\n const pm = getPackageManager()\n return runSteps('Eject', [[pm.command, 'react-scripts eject']])\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\nimport { ESLint } from 'eslint'\n\nimport {\n INIT_CWD,\n installOutputCapture,\n outputStorage,\n runWithConcurrency,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface LintNextParams {\n cache?: boolean\n fix?: boolean\n jobs: number\n pkg?: string\n verbose?: boolean\n}\n\ninterface PackageLintResult {\n errors: number\n files: number\n output: string[]\n pkg: string\n timeMs: number\n warnings: number\n}\n\nconst dumpMessages = (lintResults: ESLint.LintResult[]): void => {\n const colors: ('white' | 'red' | 'yellow')[] = ['white', 'yellow', 'red']\n const severity: string[] = ['none', 'warning', 'error']\n\n for (const lintResult of lintResults) {\n if (lintResult.messages.length > 0) {\n console.log(chalk.gray(`\\n${lintResult.filePath}`))\n for (const message of lintResult.messages) {\n console.log(\n chalk.gray(`\\t${message.line}:${message.column}`),\n chalk[colors[message.severity]](`\\t${severity[message.severity]}`),\n chalk.white(`\\t${message.message}`),\n chalk.gray(`\\t${message.ruleId}`),\n )\n }\n }\n }\n}\n\nasync function lintOnePackage({\n cache, cwd, fix, verbose,\n}: {\n cache: boolean\n cwd: string\n fix: boolean\n verbose: boolean\n}): Promise<{ errors: number; files: number; warnings: number }> {\n const engine = new ESLint({\n cache,\n cacheLocation: path.join(cwd, '.eslintcache'),\n cacheStrategy: 'content',\n cwd,\n fix,\n warnIgnored: false,\n })\n\n const lintResults = await engine.lintFiles('.')\n\n dumpMessages(lintResults)\n\n if (fix) {\n await ESLint.outputFixes(lintResults)\n }\n\n const errors = lintResults.reduce((sum, r) => sum + r.errorCount, 0)\n const warnings = lintResults.reduce((sum, r) => sum + r.warningCount, 0)\n const files = lintResults.length\n\n if (verbose) {\n const filesColor = files < 100 ? 'green' : files < 1000 ? 'yellow' : 'red'\n console.log(chalk.white(` ${chalk[filesColor](files)} files linted`))\n }\n\n return {\n errors, files, warnings,\n }\n}\n\nexport async function lintNext({\n cache = false,\n fix = false,\n jobs,\n pkg,\n verbose = false,\n}: LintNextParams): Promise<number> {\n const rootDir = INIT_CWD()\n const pm = getPackageManager()\n const allWorkspaces = pm.listWorkspaces()\n\n const workspaces = pkg\n ? allWorkspaces.filter(ws => ws.name === pkg)\n : allWorkspaces\n\n if (workspaces.length === 0) {\n console.log(chalk.red(pkg ? `Package \"${pkg}\" not found` : 'No workspaces found'))\n return 1\n }\n\n const concurrency = jobs\n const label = fix ? 'Fix' : 'Lint'\n\n installOutputCapture()\n\n const results: PackageLintResult[] = Array.from(\n { length: workspaces.length },\n () => ({\n errors: 0, files: 0, output: [], pkg: '', timeMs: 0, warnings: 0,\n }),\n )\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n const pkgStart = Date.now()\n const absCwd = path.resolve(rootDir, ws.location)\n\n console.log(chalk.green(`${label} [${ws.name}]`))\n\n try {\n const {\n errors, files, warnings,\n } = await lintOnePackage({\n cache, cwd: absCwd, fix, verbose,\n })\n const timeMs = Date.now() - pkgStart\n results[i] = {\n errors, files, output, pkg: ws.name, timeMs, warnings,\n }\n } catch (ex) {\n output.push(chalk.red(`${label} failed for ${ws.name}: ${(ex as Error).message}\\n`))\n results[i] = {\n errors: 1, files: 0, output, pkg: ws.name, timeMs: Date.now() - pkgStart, warnings: 0,\n }\n }\n })\n },\n )\n\n // Flush results sequentially, grouped by package\n let totalErrors = 0\n let totalWarnings = 0\n let totalFiles = 0\n\n for (const result of results) {\n for (const line of result.output) {\n process.stdout.write(line)\n }\n totalErrors += result.errors\n totalWarnings += result.warnings\n totalFiles += result.files\n }\n\n // Summary\n const errColor = totalErrors > 0 ? 'red' : 'green'\n const warnColor = totalWarnings > 0 ? 'yellow' : 'green'\n\n console.log(\n chalk[errColor](`${totalErrors} errors`)\n + chalk.gray(', ')\n + chalk[warnColor](`${totalWarnings} warnings`)\n + chalk.gray(` across ${totalFiles} files in ${workspaces.length} packages`),\n )\n\n return totalErrors\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { lintNext } from './lintNext.ts'\n\nexport interface LintParams {\n cache?: boolean\n fix?: boolean\n incremental?: boolean\n jobs: number\n next?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface LintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const lintPackage = ({\n pkg, fix, verbose,\n}: { fix?: boolean; pkg: string; verbose?: boolean }) => {\n const pm = getPackageManager()\n return runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n}\n\nexport const lint = ({\n cache, fix, jobs, next, pkg, verbose,\n}: LintParams): number | Promise<number> => {\n if (next) {\n return lintNext({\n cache, fix, jobs, pkg, verbose,\n })\n }\n return pkg === undefined\n ? lintAllPackages({ fix })\n : lintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: { fix?: boolean } = {}) => {\n const fixOptions = fix ? ['--fix'] : []\n return runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', ['--cache', '--cache-location', '.eslintcache', '--cache-strategy', 'content', ...fixOptions]],\n ])\n}\n","import type { LintParams } from './lint.ts'\nimport { lint } from './lint.ts'\n\nexport const fix = (params: LintParams) => {\n return lint({ ...params, fix: true })\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface GenDocsParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n}\n\nexport interface GenDocsPackageParams { pkg: string }\n\nexport const genDocs = ({\n jobs, pkg, incremental,\n}: GenDocsParams) => {\n return pkg ? genDocsPackage({ pkg }) : genDocsAll({ incremental, jobs })\n}\n\nexport const genDocsPackage = ({ pkg }: GenDocsPackageParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [${pkg}]`, [pm.runInWorkspace(pkg, 'package-gen-docs')])\n}\n\nexport const genDocsAll = ({ incremental, jobs }: GenDocsParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [All${incremental ? '-Incremental' : ''}]`, [\n pm.foreachWorkspace('package-gen-docs', [], { incremental, jobs }),\n ])\n}\n","import { unlinkSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport {\n gitignoreTemplate, INIT_CWD,\n readNonEmptyLines, writeLines,\n} from '../lib/index.ts'\nimport { union } from '../lib/string/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nconst COMMENT_PREFIX = '#'\n\nconst isComment = (line: string): boolean => line.startsWith(COMMENT_PREFIX)\n\nconst isNegation = (line: string): boolean => line.startsWith('!')\n\n/** Parse the template into sections (comment + entries) */\nfunction parseTemplateSections(lines: string[]): string[][] {\n const sections: string[][] = []\n let current: string[] = []\n for (const line of lines) {\n if (isComment(line)) {\n if (current.length > 0) {\n sections.push(current)\n }\n current = [line]\n } else {\n current.push(line)\n }\n }\n if (current.length > 0) {\n sections.push(current)\n }\n return sections\n}\n\n/** Merge template entries into existing entries, preserving structure */\nfunction mergeWithTemplate(existing: string[], templateContent: string): string[] {\n const templateLines = templateContent.split('\\n').filter(line => line.trim().length > 0)\n const sections = parseTemplateSections(templateLines)\n\n // Collect all existing non-comment, non-negation entries\n const existingEntries = new Set(existing.filter(line => !isComment(line)))\n\n // Find template entries that are missing from existing\n const templateEntries = new Set(templateLines.filter(line => !isComment(line)))\n\n // Find custom entries (in existing but not in template)\n const customEntries = [...existingEntries].filter(entry => !templateEntries.has(entry))\n\n // Build the output: template sections first, then custom entries\n const result: string[] = []\n for (const section of sections) {\n for (const line of section) {\n result.push(line)\n }\n result.push('')\n }\n\n if (customEntries.length > 0) {\n result.push('# Custom')\n const sorted = [...union(customEntries, [])].toSorted((a, b) => {\n // Negation patterns sort after their positive counterparts\n if (isNegation(a) && !isNegation(b)) return 1\n if (!isNegation(a) && isNegation(b)) return -1\n return a.localeCompare(b)\n })\n for (const entry of sorted) {\n result.push(entry)\n }\n result.push('')\n }\n\n return result\n}\n\nfunction removePackageGitignores(cwd: string): number {\n let removed = 0\n const workspaces = getPackageManager().listWorkspaces()\n for (const { location } of workspaces) {\n // Skip root workspace\n if (location === '.') continue\n const filePath = `${cwd}/${location}/.gitignore`\n try {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${location}/.gitignore`))\n removed++\n } catch {\n // File doesn't exist — nothing to do\n }\n }\n return removed\n}\n\n/** @deprecated Use gitignore instead */\nexport const gitignoreGen = gitignore\n\nexport function gitignore(): number {\n console.log(chalk.green('Generate .gitignore'))\n const cwd = INIT_CWD()\n const gitignorePath = `${cwd}/.gitignore`\n\n try {\n const templateContent = gitignoreTemplate()\n const existing = readNonEmptyLines(gitignorePath)\n const merged = mergeWithTemplate(existing, templateContent)\n writeLines(gitignorePath, merged)\n console.log(chalk.green(' Root .gitignore updated'))\n\n const removed = removePackageGitignores(cwd)\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} package .gitignore file(s)`))\n }\n\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(chalk.red(`Generate .gitignore failed: ${error.message}`))\n return 1\n }\n}\n","import chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlint = () => {\n console.log(`\\nGitlint Start [${process.cwd()}]\\n`)\n let valid = 0\n let warnings = 0\n const errors = 0\n const gitConfig = ParseGitConfig.sync() as Record<string, Record<string, unknown>>\n\n const warn = (message: string) => {\n console.warn(chalk.yellow(`Warning: ${message}`))\n warnings++\n }\n\n if (gitConfig.core.ignorecase) {\n warn('Please set core.ignorecase to FALSE in .git/config file [run yarn gitlint-fix]')\n } else {\n valid++\n }\n\n if (gitConfig.core.autocrlf === false) {\n valid++\n } else {\n warn('Please set core.autocrlf to FALSE in .git/config file [run yarn gitlint-fix]')\n }\n\n if (gitConfig.core.eol === 'lf') {\n valid++\n } else {\n warn('Please set core.eol to \"lf\" in .git/config file [run yarn gitlint-fix]')\n }\n\n const resultMessages: string[] = []\n if (valid > 0) {\n resultMessages.push(chalk.green(`Passed: ${valid}`))\n }\n if (warnings > 0) {\n resultMessages.push(chalk.yellow(`Warnings: ${warnings}`))\n }\n if (errors > 0) {\n resultMessages.push(chalk.red(` Errors: ${errors}`))\n }\n console.warn(`Gitlint Finish [ ${resultMessages.join(' | ')} ]\\n`)\n return warnings + errors === 0 ? 0 : 1\n}\n","import { execSync } from 'node:child_process'\n\nimport chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlintFix = () => {\n console.log(`\\nGitlint Fix Start [${process.cwd()}]\\n`)\n\n const gitConfig = ParseGitConfig.sync() as Record<string, Record<string, unknown>>\n\n if (gitConfig.core.ignorecase) {\n execSync('git config core.ignorecase false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.ignorecase to be false\\n'))\n }\n\n if (gitConfig.core.autocrlf !== false) {\n execSync('git config core.autocrlf false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.autocrlf to be false\\n'))\n }\n\n if (gitConfig.core.eol !== 'lf') {\n execSync('git config core.eol lf', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.eol to be \"lf\"\\n'))\n }\n\n return 1\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const knip = () => {\n return runSteps('Knip', [['knip', ['--dependencies', '--no-exit-code']]])\n}\n","import chalk from 'chalk'\nimport { init } from 'license-checker'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const license = async (pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n const exclude = new Set([\n 'MIT',\n 'MIT*',\n 'ISC',\n 'Apache-2.0',\n 'BSD',\n 'BSD*',\n 'BSD-2-Clause',\n 'BSD-3-Clause',\n 'CC-BY-4.0',\n 'Unlicense',\n 'CC-BY-3.0',\n 'CC0-1.0',\n 'LGPL-3.0-only',\n 'LGPL-3.0',\n 'LGPL-3.0-or-later',\n 'Python-2.0',\n ])\n\n console.log(chalk.green('License Checker'))\n\n return (\n (\n await Promise.all(\n workspaceList.map(({ location, name }) => {\n return new Promise<number>((resolve) => {\n init({ production: true, start: location }, (error, packages) => {\n if (error) {\n console.error(chalk.red(`License Checker [${name}] Error`))\n console.error(chalk.gray(error))\n console.log('\\n')\n resolve(1)\n } else {\n console.log(chalk.green(`License Checker [${name}]`))\n let count = 0\n for (const [name, info] of Object.entries(packages)) {\n const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses]\n for (const license of licenses) {\n if (license) {\n // remove surrounding parens on some string\n const processedLicense = (license.startsWith('(') && license.at(-1) === ')')\n ? license.slice(1, -2)\n : license\n // get list of OR licenses from string\n const orLicenses = processedLicense.split(' OR ')\n let orLicenseFound = false\n for (const orLicense of orLicenses) {\n if (exclude.has(orLicense)) {\n orLicenseFound = true\n }\n }\n if (!orLicenseFound) {\n count++\n console.warn(chalk.yellow(`${name}: Package License not allowed [${license}]`))\n }\n }\n }\n }\n console.log('\\n')\n resolve(count)\n }\n })\n })\n }),\n )\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, value) => prev || value, 0)\n )\n}\n","import {\n existsSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\nimport { INIT_CWD, runInstall } from '../lib/index.ts'\n\nexport interface LintInitParams {\n verbose?: boolean\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nconst DISALLOWED_IMPORTS_XYLABS = [\n '@xylabs/api',\n '@xylabs/array',\n '@xylabs/arraybuffer',\n '@xylabs/assert',\n '@xylabs/axios',\n '@xylabs/base',\n '@xylabs/bignumber',\n '@xylabs/buffer',\n '@xylabs/creatable',\n '@xylabs/decimal-precision',\n '@xylabs/delay',\n '@xylabs/enum',\n '@xylabs/error',\n '@xylabs/eth-address',\n '@xylabs/events',\n '@xylabs/exists',\n '@xylabs/forget',\n '@xylabs/function-name',\n '@xylabs/hex',\n '@xylabs/log',\n '@xylabs/logger',\n '@xylabs/object',\n '@xylabs/platform',\n '@xylabs/profile',\n '@xylabs/promise',\n '@xylabs/retry',\n '@xylabs/set',\n '@xylabs/static-implements',\n '@xylabs/storage',\n '@xylabs/telemetry',\n '@xylabs/telemetry-exporter',\n '@xylabs/timer',\n '@xylabs/typeof',\n '@xylabs/url',\n '@xylabs/zod',\n]\n\nconst DISALLOWED_IMPORTS_XYO = [\n '@xyo-network/core-payload-plugins',\n '@xyo-network/manifest',\n '@xyo-network/modules',\n '@xyo-network/protocol',\n '@xyo-network/sdk-utils',\n '@xyo-network/shared',\n '@xyo-network/manifest-model',\n '@xyo-network/manifest-wrapper',\n '@xyo-network/boundwitness',\n '@xyo-network/core',\n '@xyo-network/crypto',\n '@xyo-network/payload',\n '@xyo-network/api',\n '@xyo-network/api-models',\n '@xyo-network/dns',\n '@xyo-network/metamask-connector',\n '@xyo-network/module-factory-locator',\n '@xyo-network/schema-payload-plugin',\n '@xyo-network/archivist-memory',\n '@xyo-network/id-payload-plugin',\n '@xyo-network/wallet',\n '@xyo-network/network',\n '@xyo-network/payload-plugin',\n '@xyo-network/payloadset-plugin',\n '@xyo-network/quadkey',\n '@xyo-network/schema-cache',\n '@xyo-network/schema-name-validator',\n '@xyo-network/witnesses',\n]\n\nfunction getRequiredDevDependencies(react: boolean): Record<string, string> {\n const configPkg = react ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n return {\n [configPkg]: 'workspace:^',\n eslint: '^10.0.0',\n }\n}\n\nfunction formatDisallowedArray(name: string, imports: readonly string[]): string {\n const items = imports.map(i => ` '${i}',`).join('\\n')\n return `const ${name} = [\\n${items}\\n]`\n}\n\nfunction generateEslintConfig({\n react, useXyLabsBarrel, useXyoBarrel,\n}: { react: boolean; useXyLabsBarrel: boolean; useXyoBarrel: boolean }): string {\n const configPkg = react ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n const lines: string[] = [\n \"import type { Linter } from 'eslint'\",\n '',\n `import { config as xylabsConfig } from '${configPkg}'`,\n '',\n ]\n\n if (useXyLabsBarrel) {\n lines.push(formatDisallowedArray('disallowedImportsXyLabs', DISALLOWED_IMPORTS_XYLABS), '')\n }\n\n if (useXyoBarrel) {\n lines.push(formatDisallowedArray('disallowedImportsXyo', DISALLOWED_IMPORTS_XYO), '')\n }\n\n // eslint-disable-next-line @stylistic/max-len\n lines.push('const config: Linter.Config[] = [', \" { ignores: ['.yarn/**', 'build', '**/build/**', '**/dist/**', 'dist', 'node_modules/**', '**/node_modules/**', '**/*.md/**', '.claude/worktrees/*'] },\", ' ...xylabsConfig,')\n\n if (useXyLabsBarrel || useXyoBarrel) {\n lines.push(' {', ' rules:', ' {', \" 'no-restricted-imports': [\", \" 'warn',\", ' {')\n\n if (useXyLabsBarrel && useXyoBarrel) {\n lines.push(' paths: [', ' ...disallowedImportsXyLabs,', ' ...disallowedImportsXyo,', ' ],')\n } else if (useXyLabsBarrel) {\n lines.push(' paths: [', ' ...disallowedImportsXyLabs,', ' ],')\n } else {\n lines.push(' paths: [', ' ...disallowedImportsXyo,', ' ],')\n }\n\n lines.push(' },', ' ],', ' },', ' },')\n }\n\n lines.push(']', '', 'export default config', '')\n\n return lines.join('\\n')\n}\n\nfunction addDevDependencies(packageJsonPath: string, requiredDeps: Record<string, string>, verbose?: boolean): boolean {\n const content = readFileSync(packageJsonPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>\n let changed = false\n\n for (const [name, version] of Object.entries(requiredDeps)) {\n if (!devDeps[name]) {\n devDeps[name] = version\n changed = true\n if (verbose) console.log(chalk.gray(` Added ${name}@${version} to devDependencies`))\n } else if (verbose) {\n console.log(chalk.gray(` ${name} already in devDependencies`))\n }\n }\n\n if (changed) {\n // sort devDependencies alphabetically\n const sorted = Object.fromEntries(Object.entries(devDeps).toSorted(([a], [b]) => a.localeCompare(b)))\n pkg.devDependencies = sorted\n writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green('Updated package.json devDependencies'))\n } else {\n console.log(chalk.gray('package.json devDependencies already up to date'))\n }\n return changed\n}\n\nexport function detectReactInMonorepo(cwd: string, verbose?: boolean): boolean {\n const packageJsonPaths = globSync('packages/**/package.json', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n for (const relPath of packageJsonPaths) {\n const fullPath = PATH.resolve(cwd, relPath)\n try {\n const content = readFileSync(fullPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n // Only check dependencies and peerDependencies — devDependencies on react\n // can appear in tooling packages (eslint configs, test utilities) that don't\n // indicate the repo actually uses React\n const deps = pkg.dependencies as Record<string, string> | undefined\n const peerDeps = pkg.peerDependencies as Record<string, string> | undefined\n if (deps?.react || peerDeps?.react) {\n if (verbose) console.log(chalk.gray(` React detected in ${relPath}`))\n return true\n }\n } catch {\n // skip unreadable package.json\n }\n }\n return false\n}\n\nfunction findExistingConfig(configPath: string, legacyConfigPath: string): string | undefined {\n if (existsSync(configPath)) return configPath\n if (existsSync(legacyConfigPath)) return legacyConfigPath\n return undefined\n}\n\nfunction removeLegacyConfig(legacyConfigPath: string): void {\n if (existsSync(legacyConfigPath)) {\n unlinkSync(legacyConfigPath)\n console.log(chalk.gray('Removed legacy eslint.config.mjs'))\n }\n}\n\nfunction updateDependencies(packageJsonPath: string, react: boolean, cwd: string, verbose?: boolean): void {\n if (!existsSync(packageJsonPath)) {\n console.log(chalk.yellow('No package.json found — skipping dependency updates'))\n return\n }\n const changed = addDevDependencies(packageJsonPath, getRequiredDevDependencies(react), verbose)\n if (changed) {\n runInstall(cwd)\n }\n}\n\nexport async function lintInit({ verbose }: LintInitParams = {}): Promise<number> {\n const cwd = INIT_CWD()\n const configPath = PATH.resolve(cwd, 'eslint.config.ts')\n const legacyConfigPath = PATH.resolve(cwd, 'eslint.config.mjs')\n\n const existingPath = findExistingConfig(configPath, legacyConfigPath)\n if (existingPath) {\n const filename = PATH.basename(existingPath)\n const confirmed = await askConfirmation(\n chalk.yellow(`${filename} already exists. Replace it with eslint.config.ts? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray(`Skipped — existing ${filename} preserved`))\n return 0\n }\n }\n\n const react = detectReactInMonorepo(cwd, verbose)\n if (react) {\n console.log(chalk.cyan('Detected React packages — using @xylabs/eslint-config-react-flat'))\n } else if (verbose) {\n console.log(chalk.gray(' No React packages detected — using @xylabs/eslint-config-flat'))\n }\n\n const useXyLabsBarrel = await askConfirmation(\n chalk.cyan('Disallow @xylabs/sdk-js barrel imports? (y/N) '),\n )\n const useXyoBarrel = await askConfirmation(\n chalk.cyan('Disallow @xyo-network/sdk-js barrel imports? (y/N) '),\n )\n\n const config = generateEslintConfig({\n react, useXyLabsBarrel, useXyoBarrel,\n })\n writeFileSync(configPath, config, 'utf8')\n console.log(chalk.green('Generated eslint.config.ts'))\n\n removeLegacyConfig(legacyConfigPath)\n updateDependencies(PATH.resolve(cwd, 'package.json'), react, cwd, verbose)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport { findUp } from 'find-up'\n\nimport { runInstall } from '../lib/index.ts'\nimport { detectReactInMonorepo } from './lint-init.ts'\n\ninterface RuleEntry {\n level: string\n options?: unknown[]\n}\n\ninterface LintlintParams {\n fix?: boolean\n verbose?: boolean\n}\n\ninterface ConfigBlock {\n rules?: Record<string, unknown>\n}\n\ninterface RuleComparison {\n additions: { local: RuleEntry; rule: string }[]\n overrides: { local: RuleEntry; rule: string; shared: RuleEntry }[]\n redundant: { local: RuleEntry; rule: string; shared: RuleEntry }[]\n}\n\nfunction parseRuleValue(value: unknown): RuleEntry | undefined {\n if (typeof value === 'string') {\n return { level: value }\n }\n if (typeof value === 'number') {\n return { level: String(value) }\n }\n if (Array.isArray(value) && value.length > 0) {\n return {\n level: String(value[0]),\n options: value.length > 1 ? value.slice(1) : undefined,\n }\n }\n return undefined\n}\n\nfunction normalizeLevel(level: string): string {\n if (level === '0' || level === 'off') return 'off'\n if (level === '1' || level === 'warn') return 'warn'\n if (level === '2' || level === 'error') return 'error'\n return level\n}\n\nfunction rulesMatch(a: RuleEntry, b: RuleEntry): boolean {\n if (normalizeLevel(a.level) !== normalizeLevel(b.level)) return false\n return JSON.stringify(a.options) === JSON.stringify(b.options)\n}\n\nfunction formatRule(entry: RuleEntry): string {\n if (entry.options) {\n return JSON.stringify([entry.level, ...entry.options])\n }\n return JSON.stringify([entry.level])\n}\n\nfunction mergeRulesFromBlocks(blocks: ConfigBlock[]): Map<string, RuleEntry> {\n const merged = new Map<string, RuleEntry>()\n for (const block of blocks) {\n if (!block.rules) continue\n for (const [name, value] of Object.entries(block.rules)) {\n const parsed = parseRuleValue(value)\n if (parsed) merged.set(name, parsed)\n }\n }\n return merged\n}\n\nfunction detectSharedPackage(source: string): string | undefined {\n if (source.includes('@xylabs/eslint-config-react-flat')) return '@xylabs/eslint-config-react-flat'\n if (source.includes('@xylabs/eslint-config-flat')) return '@xylabs/eslint-config-flat'\n return undefined\n}\n\nfunction extractLocalRuleBlocks(source: string): string[] {\n const blocks: string[] = []\n const ruleBlockRegex = /\\{\\s*(?:files\\s*:\\s*\\[.*?\\]\\s*,\\s*)?rules\\s*:\\s*\\{([^}]*(?:\\{[^}]*\\}[^}]*)*)\\}/g\n let match\n while ((match = ruleBlockRegex.exec(source)) !== null) {\n blocks.push(match[1])\n }\n return blocks\n}\n\nfunction extractRulesFromSourceBlocks(blocks: string[]): Map<string, string> {\n const rules = new Map<string, string>()\n for (const block of blocks) {\n const ruleRegex = /['\"]([^'\"]+)['\"]\\s*:\\s*(\\[[\\s\\S]*?\\](?=\\s*,|\\s*$))/gm\n let match\n while ((match = ruleRegex.exec(block)) !== null) {\n rules.set(match[1], match[2])\n }\n }\n return rules\n}\n\nfunction extractConfigBlocks(sharedModule: Record<string, unknown>): ConfigBlock[] {\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n return []\n}\n\nasync function resolveSharedConfig(configDir: string, sharedPkg: string): Promise<ConfigBlock[]> {\n try {\n const sharedModule = await import(sharedPkg) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n } catch {\n const distPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'node', 'index.mjs')\n try {\n const sharedModule = await import(distPath) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n } catch {\n const neutralPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'neutral', 'index.mjs')\n const sharedModule = await import(neutralPath) as Record<string, unknown>\n return extractConfigBlocks(sharedModule)\n }\n return []\n }\n}\n\nasync function loadSharedRules(configDir: string, sharedPkg: string, verbose: boolean): Promise<Map<string, RuleEntry> | undefined> {\n const sharedBlocks = await resolveSharedConfig(configDir, sharedPkg)\n const sharedRules = mergeRulesFromBlocks(sharedBlocks)\n\n if (verbose) {\n console.log(chalk.gray(`Shared config defines ${sharedRules.size} rules`))\n }\n\n if (sharedRules.size === 0) {\n console.error(chalk.red('Could not load rules from shared config. Is it installed and built?'))\n return undefined\n }\n\n return sharedRules\n}\n\nasync function loadLocalRules(eslintConfigPath: string, source: string, verbose: boolean): Promise<{ explicit: Map<string, string>; resolved: Map<string, RuleEntry> }> {\n const localModule = await import(eslintConfigPath) as Record<string, unknown>\n const localConfig = localModule.default ?? localModule\n const localBlocks: ConfigBlock[] = Array.isArray(localConfig) ? localConfig as ConfigBlock[] : [localConfig as ConfigBlock]\n const resolved = mergeRulesFromBlocks(localBlocks)\n\n const localRuleBlocks = extractLocalRuleBlocks(source)\n const explicit = extractRulesFromSourceBlocks(localRuleBlocks)\n\n if (verbose) {\n console.log(chalk.gray(`Local config has ${explicit.size} explicit rule setting(s)`))\n }\n\n return { explicit, resolved }\n}\n\nfunction compareRules(\n explicitRuleNames: Map<string, string>,\n allResolvedRules: Map<string, RuleEntry>,\n sharedRules: Map<string, RuleEntry>,\n): RuleComparison {\n const redundant: RuleComparison['redundant'] = []\n const overrides: RuleComparison['overrides'] = []\n const additions: RuleComparison['additions'] = []\n\n for (const ruleName of explicitRuleNames.keys()) {\n const resolvedEntry = allResolvedRules.get(ruleName)\n const sharedEntry = sharedRules.get(ruleName)\n\n if (!resolvedEntry) continue\n\n if (!sharedEntry) {\n additions.push({ local: resolvedEntry, rule: ruleName })\n } else if (rulesMatch(resolvedEntry, sharedEntry)) {\n redundant.push({\n local: resolvedEntry, rule: ruleName, shared: sharedEntry,\n })\n } else {\n overrides.push({\n local: resolvedEntry, rule: ruleName, shared: sharedEntry,\n })\n }\n }\n\n return {\n additions,\n overrides,\n redundant,\n }\n}\n\nfunction reportResults({\n additions, overrides, redundant,\n}: RuleComparison, verbose: boolean): void {\n if (redundant.length > 0) {\n console.log(chalk.yellow(`\\n${redundant.length} redundant rule(s) (same as shared config — can be removed):`))\n for (const { rule, local } of redundant) {\n console.log(chalk.yellow(` ${rule}: ${formatRule(local)}`))\n }\n }\n\n if (overrides.length > 0) {\n console.log(chalk.cyan(`\\n${overrides.length} rule override(s) (different from shared config):`))\n for (const {\n rule, local, shared,\n } of overrides) {\n console.log(chalk.cyan(` ${rule}:`))\n console.log(chalk.gray(` shared: ${formatRule(shared)}`))\n console.log(chalk.white(` local: ${formatRule(local)}`))\n }\n }\n\n if (additions.length > 0 && verbose) {\n console.log(chalk.gray(`\\n${additions.length} local addition(s) (not in shared config):`))\n for (const { rule, local } of additions) {\n console.log(chalk.gray(` ${rule}: ${formatRule(local)}`))\n }\n }\n\n if (redundant.length === 0 && overrides.length === 0) {\n console.log(chalk.green('No redundant or overridden rules found'))\n }\n}\n\nfunction fixRedundantRules(eslintConfigPath: string, redundant: RuleComparison['redundant']): void {\n let updated = readFileSync(eslintConfigPath, 'utf8')\n const original = updated\n for (const { rule } of redundant) {\n const escaped = rule.replaceAll('/', String.raw`\\/`)\n const pattern = new RegExp(String.raw`[ \\t]*['\"]${escaped}['\"]\\s*:\\s*\\[[^\\]]*\\],?[ \\t]*\\n?`, 'g')\n updated = updated.replace(pattern, '')\n }\n // Clean up empty rule blocks left behind\n updated = updated.replaceAll(/\\{\\s*rules\\s*:\\s*\\{\\s*\\}\\s*,?\\s*\\}\\s*,?/g, '')\n updated = updated.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n if (updated !== original) {\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`\\nFixed: removed ${redundant.length} redundant rule(s)`))\n }\n}\n\nfunction formatConfigFile(eslintConfigPath: string): void {\n spawnSync('eslint', ['--fix', eslintConfigPath], { stdio: 'inherit' })\n}\n\nfunction fixConfigMismatch(\n eslintConfigPath: string,\n configDir: string,\n source: string,\n sharedPkg: string,\n expectedPkg: string,\n): void {\n const updated = source.replaceAll(sharedPkg, expectedPkg)\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`Fixed: replaced ${sharedPkg} with ${expectedPkg}`))\n\n const packageJsonPath = PATH.resolve(configDir, 'package.json')\n if (!existsSync(packageJsonPath)) return\n\n const content = readFileSync(packageJsonPath, 'utf8')\n const pkg = JSON.parse(content) as Record<string, unknown>\n const devDeps = (pkg.devDependencies ?? {}) as Record<string, string>\n const oldVersion = devDeps[sharedPkg]\n if (!oldVersion) return\n\n delete devDeps[sharedPkg]\n devDeps[expectedPkg] = oldVersion\n const sorted = Object.fromEntries(Object.entries(devDeps).toSorted(([a], [b]) => a.localeCompare(b)))\n pkg.devDependencies = sorted\n writeFileSync(packageJsonPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(`Updated package.json: ${sharedPkg} → ${expectedPkg}`))\n runInstall(configDir)\n}\n\nfunction checkConfigVariant(\n eslintConfigPath: string,\n configDir: string,\n source: string,\n sharedPkg: string,\n fix: boolean,\n verbose: boolean,\n): boolean {\n const hasReact = detectReactInMonorepo(configDir, verbose)\n const expectedPkg = hasReact ? '@xylabs/eslint-config-react-flat' : '@xylabs/eslint-config-flat'\n\n if (sharedPkg === expectedPkg) return false\n\n console.log(chalk.yellow(`\\nConfig mismatch: using ${sharedPkg} but ${hasReact ? 'React packages detected' : 'no React packages found'}`))\n console.log(chalk.yellow(` Expected: ${expectedPkg}`))\n\n if (fix) {\n fixConfigMismatch(eslintConfigPath, configDir, source, sharedPkg, expectedPkg)\n }\n\n return true\n}\n\nexport async function lintlint({ fix, verbose }: LintlintParams = {}): Promise<number> {\n const eslintConfigPath = await findUp(['eslint.config.ts', 'eslint.config.mjs'])\n if (!eslintConfigPath) {\n console.error(chalk.red('No eslint.config.ts found'))\n return 1\n }\n\n const configDir = PATH.dirname(eslintConfigPath)\n\n if (verbose) {\n console.log(chalk.gray(`Found config: ${eslintConfigPath}`))\n }\n\n const source = readFileSync(eslintConfigPath, 'utf8')\n const sharedPkg = detectSharedPackage(source)\n\n if (!sharedPkg) {\n console.log(chalk.yellow('No @xylabs/eslint-config-flat or @xylabs/eslint-config-react-flat imports found'))\n return 0\n }\n\n if (verbose) {\n console.log(chalk.gray(`Shared package: ${sharedPkg}`))\n }\n\n const hasMismatch = checkConfigVariant(eslintConfigPath, configDir, source, sharedPkg, !!fix, !!verbose)\n\n // Re-read source after potential mismatch fix to avoid overwriting changes\n const currentSource = (hasMismatch && fix) ? readFileSync(eslintConfigPath, 'utf8') : source\n\n const sharedRules = await loadSharedRules(configDir, sharedPkg, !!verbose)\n if (!sharedRules) return 1\n\n const { explicit, resolved } = await loadLocalRules(eslintConfigPath, currentSource, !!verbose)\n const results = compareRules(explicit, resolved, sharedRules)\n\n reportResults(results, !!verbose)\n\n if (results.redundant.length > 0 && fix) {\n fixRedundantRules(eslintConfigPath, results.redundant)\n }\n\n const didFix = fix && (hasMismatch || results.redundant.length > 0)\n if (didFix) {\n formatConfigFile(eslintConfigPath)\n }\n\n const hasUnfixedMismatch = hasMismatch && !fix\n const hasUnfixedRedundant = results.redundant.length > 0 && !fix\n return hasUnfixedMismatch || hasUnfixedRedundant ? 1 : 0\n}\n","import { generateIgnoreFiles } from '../lib/index.ts'\n\nconst filename = '.npmignore'\n\nexport const npmignoreGen = (pkg?: string) => generateIgnoreFiles(filename, pkg)\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface OrphanParams {\n verbose?: boolean\n}\n\nfunction isAncestorOfWorkspace(dir: string, workspaceLocations: Set<string>): boolean {\n const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep\n for (const ws of workspaceLocations) {\n if (ws.startsWith(dirWithSep)) return true\n }\n return false\n}\n\nfunction findOrphans(cwd: string, verbose?: boolean): string[] {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceLocations = new Set(\n workspaces.map(ws => path.resolve(cwd, ws.location)),\n )\n\n // Find all dist/ directories, excluding node_modules\n const distDirs = glob.sync('**/dist', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n const orphans = new Set<string>()\n\n for (const distDir of distDirs) {\n const parentRel = path.dirname(distDir)\n const parentAbs = path.resolve(cwd, parentRel)\n\n // Skip root-level dist\n if (parentRel === '.') continue\n\n // Skip if it's a registered workspace\n if (workspaceLocations.has(parentAbs)) continue\n\n // Skip if it has a package.json (real package, just not in workspaces)\n if (fs.existsSync(path.join(parentAbs, 'package.json'))) continue\n\n if (verbose) {\n console.log(chalk.gray(` Found orphan: ${parentRel}`))\n }\n\n // Walk up to find the top-level orphan directory\n // Stop at workspace boundaries, package.json boundaries, or ancestor directories of workspaces\n let topOrphan = parentRel\n let current = path.dirname(parentRel)\n while (current !== '.') {\n const currentAbs = path.resolve(cwd, current)\n if (workspaceLocations.has(currentAbs)) break\n if (fs.existsSync(path.join(currentAbs, 'package.json'))) break\n if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break\n topOrphan = current\n current = path.dirname(current)\n }\n\n orphans.add(topOrphan)\n }\n\n return [...orphans].toSorted()\n}\n\nexport function orphanList({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan List'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n console.log(chalk.yellow(` ${orphan}`))\n }\n\n console.log(chalk.yellow(`\\n Found ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 1\n}\n\nexport function orphanClean({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan Clean'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n const absPath = path.resolve(cwd, orphan)\n fs.rmSync(absPath, { force: true, recursive: true })\n console.log(chalk.yellow(` Removed ${orphan}`))\n }\n\n console.log(chalk.green(`\\n Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n deleteGlob, INIT_CWD, packageName,\n} from '../../lib/index.ts'\n\nexport const packageCleanOutputs = () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n const folders: string[] = [path.join(pkg, 'dist'), path.join(pkg, 'build'), path.join(pkg, 'docs')]\n console.log(chalk.green(`Cleaning Outputs [${pkgName}]`))\n\n for (const folder of folders) {\n deleteGlob(folder)\n }\n\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n deleteGlob, INIT_CWD, packageName,\n} from '../../lib/index.ts'\n\nexport const packageCleanTypescript = () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n console.log(chalk.green(`Cleaning Typescript [${pkgName}]`))\n const files: string[] = [path.join(pkg, '*.tsbuildinfo'), path.join(pkg, '.tsconfig.*'), path.join(pkg, '.eslintcache')]\n\n for (const file of files) {\n deleteGlob(file)\n }\n\n return 0\n}\n","import { packageCleanOutputs } from './clean-outputs.ts'\nimport { packageCleanTypescript } from './clean-typescript.ts'\n\nexport const packageClean = () => {\n return [packageCleanOutputs(), packageCleanTypescript()].reduce((prev, value) => prev + value, 0)\n}\n","import { cwd } from 'node:process'\n\nimport chalk from 'chalk'\n\nimport { loadConfig } from '../../../lib/index.ts'\nimport { packageCompileTsup } from './packageCompileTsup.ts'\nimport type { XyConfig } from './XyConfig.ts'\n\nexport const packageCompile = async (inConfig: XyConfig = {}): Promise<number> => {\n const pkg = cwd()\n console.log(chalk.green(`Compiling ${pkg}`))\n const config = await loadConfig(inConfig)\n\n return await packageCompileTsup(config)\n}\n","import chalk from 'chalk'\nimport type { Loader } from 'esbuild'\nimport type { Options } from 'tsup'\nimport { build, defineConfig } from 'tsup'\n\nimport { buildEntries } from './buildEntries.ts'\nimport { deepMergeObjects } from './deepMerge.ts'\nimport { packageCompileTsc } from './packageCompileTsc.ts'\nimport { packageCompileTscTypes } from './packageCompileTscTypes.ts'\nimport type { XyTsupConfig } from './XyConfig.ts'\n\nconst compileFolder = async (\n srcDir: string,\n entries: string[],\n buildDir: string,\n options?: Options,\n bundleTypes = false,\n verbose?: boolean,\n): Promise<number> => {\n const outDir = options?.outDir ?? 'dist'\n\n if (verbose) {\n console.log(`compileFolder [${srcDir}, ${options?.outDir}]`)\n }\n\n if (entries.length === 0) {\n console.warn(chalk.yellow(`No entries found in ${srcDir} to compile`))\n return 0\n }\n\n if (verbose) {\n console.log(chalk.gray(`buildDir [${buildDir}]`))\n }\n\n const validationResult = packageCompileTsc(options?.platform ?? 'neutral', entries, srcDir, buildDir, undefined, verbose)\n if (validationResult !== 0) {\n console.error(chalk.red(`Compile:Validation had ${validationResult} errors`))\n return validationResult\n }\n\n const optionsParams: Options = tsupOptions([{\n bundle: true,\n cjsInterop: true,\n clean: false,\n dts: false,\n format: ['esm'],\n outDir,\n silent: true,\n sourcemap: true,\n splitting: false,\n tsconfig: 'tsconfig.json',\n ...options,\n entry: entries.map(entry => `${srcDir}/${entry}`),\n }])\n\n const optionsResult = defineConfig(optionsParams)\n\n const optionsList = (\n await Promise.all(\n (Array.isArray(optionsResult) ? optionsResult : [optionsResult]).flatMap<Promise<Options[]>>(async (options) => {\n const result = typeof options === 'function' ? await options({}) : [options]\n return Array.isArray(result) ? result : [result]\n }),\n )\n ).flat()\n\n if (verbose) {\n console.log(chalk.cyan(`TSUP:build:start [${srcDir}]`))\n console.log(chalk.gray(`TSUP:build:options [${JSON.stringify(optionsList, null, 2)}]`))\n }\n\n await Promise.all(optionsList.map(options => build(options)))\n\n if (verbose) {\n console.log(chalk.cyan(`TSUP:build:stop [${srcDir}]`))\n }\n if (bundleTypes) {\n await packageCompileTscTypes(entries, outDir, options?.platform ?? 'neutral', buildDir, verbose)\n }\n\n return 0\n}\n\nexport const tsupOptions = (options: Options[] = []): Options => {\n const standardLoaders: Record<string, Loader> = {\n '.gif': 'copy', '.html': 'copy', '.jpg': 'copy', '.json': 'json', '.png': 'copy', '.svg': 'text', '.webp': 'copy',\n }\n\n const standardOptions: Options = {\n bundle: true,\n format: ['esm'],\n loader: standardLoaders,\n outExtension: ({ format }) => (format === 'esm' ? { js: '.mjs' } : { js: '.cjs' }),\n skipNodeModulesBundle: true,\n sourcemap: true,\n target: 'esnext',\n }\n\n return deepMergeObjects([standardOptions, ...options])\n}\n\nexport const packageCompileTsup = async (config?: XyTsupConfig) => {\n const compile = config?.compile\n const verbose = config?.verbose ?? false\n const outDirAsBuildDir = compile?.outDirAsBuildDir ?? true\n const bundleTypes = compile?.bundleTypes ?? false\n if (verbose) {\n console.log('Compiling with TSUP')\n }\n\n const compileForNode = compile?.node ?? { src: {} }\n const compileForBrowser = compile?.browser ?? { src: {} }\n const compileForNeutral = compile?.neutral ?? { src: {} }\n\n return (\n (\n await Promise.all(\n Object.entries(compileForNode).map(async ([srcDir, options]) => {\n const optionsObject: Options = typeof options === 'object' ? options : {}\n const inEsBuildOptions = typeof compile?.node?.esbuildOptions === 'object' ? compile?.node?.esbuildOptions : {}\n const entry = buildEntries(srcDir, compile?.entryMode, options, true, verbose)\n const platform = 'node'\n const rootOutDir = (optionsObject.outDir ?? 'dist')\n const outDir = rootOutDir + '/' + platform\n return typeof srcDir === 'string'\n ? await compileFolder(\n srcDir,\n entry,\n outDirAsBuildDir ? rootOutDir : 'build',\n tsupOptions([inEsBuildOptions,\n compile?.tsup?.options ?? {},\n (typeof options === 'object' ? options : {}),\n { platform: 'node', outDir }]),\n bundleTypes,\n verbose,\n )\n : 0\n }),\n )\n ).reduce((prev, value) => prev + value, 0)\n + (\n await Promise.all(\n Object.entries(compileForBrowser).map(async ([srcDir, options]) => {\n const optionsObject: Options = typeof options === 'object' ? options : {}\n const inEsBuildOptions = typeof compile?.browser?.esbuildOptions === 'object' ? compile?.browser?.esbuildOptions : {}\n const entry = buildEntries(srcDir, compile?.entryMode, options, true, verbose)\n const platform = 'browser'\n const rootOutDir = (optionsObject.outDir ?? 'dist')\n const outDir = rootOutDir + '/' + platform\n return typeof srcDir === 'string'\n ? await compileFolder(\n srcDir,\n entry,\n outDirAsBuildDir ? rootOutDir : 'build',\n tsupOptions([inEsBuildOptions,\n compile?.tsup?.options ?? {},\n (typeof options === 'object' ? options : {}),\n { platform: 'browser', outDir }]),\n bundleTypes,\n verbose,\n )\n : 0\n }),\n )\n ).reduce((prev, value) => prev + value, 0)\n + (\n await Promise.all(\n Object.entries(compileForNeutral).map(async ([srcDir, options]) => {\n const optionsObject: Options = typeof options === 'object' ? options : {}\n const inEsBuildOptions = typeof compile?.neutral?.esbuildOptions === 'object' ? compile?.neutral?.esbuildOptions : {}\n const entry = buildEntries(srcDir, compile?.entryMode, options, true, verbose)\n const platform = 'neutral'\n const rootOutDir = (optionsObject.outDir ?? 'dist')\n const outDir = rootOutDir + '/' + platform\n return typeof srcDir === 'string'\n ? await compileFolder(\n srcDir,\n entry,\n outDirAsBuildDir ? rootOutDir : 'build',\n tsupOptions([inEsBuildOptions,\n compile?.tsup?.options ?? {},\n (typeof options === 'object' ? options : {}),\n { platform: 'neutral', outDir }]),\n bundleTypes,\n verbose,\n )\n : 0\n }),\n )\n ).reduce((prev, value) => prev + value, 0)\n + 0\n )\n}\n","import chalk from 'chalk'\nimport { glob } from 'glob'\n\nexport const getAllInputs = (srcDir: string, verbose = false) => {\n /* tsup wants posix paths */\n return [...glob.sync(`${srcDir}/**/*.ts`, { posix: true }).map((file) => {\n const result = file.slice(Math.max(0, srcDir.length + 1)) // Remove the folder prefix\n if (verbose) {\n console.log(chalk.gray(`getAllInputs: ${JSON.stringify(result, null, 2)}`))\n }\n return result\n }), ...glob.sync(`${srcDir}/**/*.tsx`, { posix: true }).map((file) => {\n const result = file.slice(Math.max(0, srcDir.length + 1)) // Remove the folder prefix\n if (verbose) {\n console.log(chalk.gray(`getAllInputs: ${JSON.stringify(result, null, 2)}`))\n }\n return result\n })]\n}\n","import type { Options } from 'tsup'\n\nimport { getAllInputs } from './inputs.ts'\nimport type { EntryMode } from './XyConfig.ts'\n\nconst isSpecOrStory = (entry: string) => {\n return entry.includes('.spec.') || entry.includes('.stories.')\n || entry.startsWith('spec/') || entry.includes('/spec/')\n || entry.startsWith('stories/') || entry.includes('/stories/')\n || entry === 'spec.ts' || entry.endsWith('/spec.ts')\n || entry === 'stories.ts' || entry.endsWith('/stories.ts')\n}\n\nexport const buildEntries = (srcDir: string, entryMode: EntryMode = 'single', options?: Options | boolean, excludeSpecAndStories = true, verbose = false) => {\n let entries: string[]\n switch (entryMode) {\n case 'platform': {\n entries = ['index-node.ts', 'index-browser.ts']\n break\n }\n case 'all': {\n entries = (excludeSpecAndStories\n ? getAllInputs(srcDir).filter(entry => !isSpecOrStory(entry))\n : getAllInputs(srcDir)).filter(entry => !entry.endsWith('.d.ts'))\n break\n }\n case 'custom': {\n entries = []\n break\n }\n default: {\n entries = ['index.ts']\n break\n }\n }\n\n if (typeof options !== 'boolean' && Array.isArray(options?.entry)) {\n entries.push(...options.entry)\n }\n\n if (verbose) console.log(`buildEntries [${entryMode}] ${entries.length}`)\n return entries\n}\n","type AnyObject = Record<string, unknown>\n\nfunction deepMerge<T extends AnyObject>(target: AnyObject, source: AnyObject): T {\n if (!source || typeof source !== 'object') return target as T\n\n for (const key of Object.keys(source)) {\n const sourceVal = source[key]\n if (\n typeof sourceVal === 'object'\n && sourceVal !== null\n && !Array.isArray(sourceVal)\n ) {\n // Recursively merge nested objects\n if (!target[key] || typeof target[key] !== 'object') {\n target[key] = {}\n }\n deepMerge(target[key] as AnyObject, sourceVal as AnyObject)\n } else {\n // Overwrite with non-object values\n target[key] = sourceVal\n }\n }\n\n return target as T\n}\n\nexport function deepMergeObjects<T extends AnyObject>(objects: T[]): T {\n const result = {} as T\n for (const obj of objects) {\n deepMerge(result, obj)\n }\n return result\n}\n","import { cwd } from 'node:process'\n\nimport chalk from 'chalk'\nimport type { TsConfigCompilerOptions } from 'tsc-prog'\nimport { createProgramFromConfig } from 'tsc-prog'\nimport type { CompilerOptions } from 'typescript'\nimport ts, {\n DiagnosticCategory, formatDiagnosticsWithColorAndContext, getPreEmitDiagnostics, sys,\n} from 'typescript'\n\nimport { getCompilerOptions } from './getCompilerOptions.ts'\n\nexport const packageCompileTsc = (\n platform: 'browser' | 'neutral' | 'node',\n entries: string[],\n srcDir = 'src',\n outDir = 'dist',\n compilerOptionsParam?: CompilerOptions,\n verbose = false,\n): number => {\n const pkg = cwd()\n\n if (verbose) {\n console.log(chalk.cyan(`Validating code START: ${entries.length} files to ${outDir} from ${srcDir}`))\n }\n\n const configFilePath = ts.findConfigFile(\n pkg,\n (fileName: string) => ts.sys.fileExists(fileName),\n 'tsconfig.json',\n )\n\n if (configFilePath === undefined) {\n throw new Error('Could not find tsconfig.json')\n }\n\n const compilerOptions = {\n ...(getCompilerOptions({\n removeComments: false,\n skipDefaultLibCheck: true,\n skipLibCheck: true,\n sourceMap: false,\n })),\n ...compilerOptionsParam,\n outDir: `${outDir}/${platform}`,\n emitDeclarationOnly: true,\n noEmit: false,\n } as TsConfigCompilerOptions\n\n console.log(chalk.cyan(`Validating Files: ${entries.length}`))\n if (verbose) {\n for (const entry of entries) {\n console.log(chalk.grey(`Validating: ${entry}`))\n }\n }\n\n try {\n if (entries.length > 0) {\n const program = createProgramFromConfig({\n configFilePath,\n basePath: pkg,\n compilerOptions,\n files: entries.map(entry => `${srcDir}/${entry}`),\n include: [`${srcDir}/**/*.*`],\n })\n\n const diagnostics = getPreEmitDiagnostics(program)\n\n if (diagnostics.length > 0) {\n const formattedDiagnostics = formatDiagnosticsWithColorAndContext(\n diagnostics,\n {\n getCanonicalFileName: fileName => fileName,\n getCurrentDirectory: () => srcDir,\n getNewLine: () => sys.newLine,\n },\n )\n console.error(formattedDiagnostics)\n }\n\n // We use a custom writeFile callback to prevent non-entry files (like\n // .stories.* and .spec.* files) from emitting .d.ts output into dist.\n //\n // Background: The `include` glob above intentionally brings ALL source\n // files into the TypeScript program so they get type-checked during build\n // (catching errors in storybook/test files too). However, we only want\n // .d.ts output for the actual library entries — not for stories, specs,\n // or examples. Without this filter, every file matched by the include\n // glob would produce a .d.ts file in the dist folder.\n const nonEmitPatterns = ['.stories.', '/stories/', '/stories.', '.spec.', '/spec/', '/spec.', '.example.']\n program.emit(undefined, (fileName, text, writeByteOrderMark) => {\n if (nonEmitPatterns.some(pattern => fileName.includes(pattern))) {\n return\n }\n ts.sys.writeFile(fileName, text, writeByteOrderMark)\n })\n return diagnostics.reduce((acc, diag) => acc + (diag.category === DiagnosticCategory.Error ? 1 : 0), 0)\n }\n return 0\n } finally {\n if (verbose) {\n console.log(chalk.cyan(`Validating code FINISH: ${entries.length} files to ${outDir} from ${srcDir}`))\n }\n }\n}\n","import { cwd } from 'node:process'\n\nimport deepmerge from 'deepmerge'\nimport { getTsconfig } from 'get-tsconfig'\nimport type { CompilerOptions } from 'typescript'\n\nexport const getCompilerOptions = (options: CompilerOptions = {}, fileName = 'tsconfig.json'): CompilerOptions => {\n const resolvedTsConfigCompilerOptions = getTsconfig(cwd(), fileName)?.config?.compilerOptions ?? {}\n\n return deepmerge(resolvedTsConfigCompilerOptions, options)\n}\n","import path from 'node:path'\nimport { cwd } from 'node:process'\n\nimport chalk from 'chalk'\nimport { rollup } from 'rollup'\nimport type { Options } from 'rollup-plugin-dts'\nimport dts from 'rollup-plugin-dts'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { getCompilerOptions } from './getCompilerOptions.ts'\n\nconst ignoredWarningCodes = new Set(['EMPTY_BUNDLE', 'UNRESOLVED_IMPORT'])\n\nexport async function bundleDts(inputPath: string, outputPath: string, platform: 'node' | 'browser' | 'neutral', options?: Options, verbose = false) {\n // Find the tsconfig.json path\n const pkg = cwd()\n const tsconfigPath = path.resolve(pkg, 'tsconfig.json')\n\n const nodePlugIns = platform === 'node' ? [nodeExternals()] : []\n try {\n const bundle = await rollup({\n input: inputPath,\n\n plugins: [dts({\n ...options,\n tsconfig: tsconfigPath,\n compilerOptions: {\n emitDeclarationOnly: true, noEmit: false, declarationMap: true,\n },\n\n }), ...nodePlugIns],\n onwarn(warning, warn) {\n if (ignoredWarningCodes.has(warning.code ?? '')) {\n return\n }\n console.warn(chalk.yellow(`[${warning.code}] ${warning.message}`))\n console.warn(chalk.gray(inputPath))\n warn(warning)\n },\n })\n await bundle.write({\n file: outputPath,\n format: 'es',\n })\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.red(error))\n console.warn(chalk.gray(inputPath))\n }\n\n if (verbose) {\n console.log(`Bundled declarations written to ${outputPath}`)\n }\n}\n\nexport const packageCompileTscTypes = async (\n entries: string[],\n outDir: string,\n platform: 'node' | 'browser' | 'neutral',\n srcDir = 'build',\n verbose = false,\n): Promise<number> => {\n if (verbose) {\n console.log(chalk.cyan(`Compiling Types START [${platform}]: ${entries.length} files to ${outDir} from ${srcDir}`))\n console.log(`Entries: ${entries.join(', ')}`)\n }\n const pkg = cwd()\n const srcRoot = `${pkg}/${srcDir}/${platform}`\n\n const entryNameToTypeName = (entry: string): string => {\n const splitEntryName = entry.split('.')\n const newEntryExtension = 'd.' + splitEntryName.at(-1)\n return [...splitEntryName.slice(0, -1), newEntryExtension].join('.')\n }\n\n const compilerOptions = getCompilerOptions({\n removeComments: false,\n skipDefaultLibCheck: true,\n skipLibCheck: true,\n declarationMap: true,\n emitDeclarationOnly: true,\n noEmit: true,\n })\n\n const entryNames = entries.map(entry => entry.split(`${srcDir}/`).at(-1) ?? entry)\n\n await Promise.all(entryNames.map(async (entryName) => {\n const entryTypeName = entryNameToTypeName(entryName)\n await bundleDts(`${srcRoot}/${entryTypeName}`, `${outDir}/${entryTypeName}`, platform, { compilerOptions }, verbose)\n }))\n\n if (verbose) {\n console.log(chalk.cyan(`Compiling Types FINISH: ${entries.length} files to ${outDir} from ${srcDir}`))\n }\n\n return 0\n}\n","import type { Options } from 'tsup'\n\nexport type EntryMode = 'all' | 'single' | 'auto' | 'platform' | 'custom'\n\n/**\n * Configuration for specifying which paths are targeted.\n */\nexport interface PathConfig {\n /**\n * Glob patterns to exclude (takes precedence over include).\n */\n exclude?: string[]\n /**\n * Glob patterns to include.\n */\n include?: string[]\n}\n\n/**\n * Configuration for Dynamic Share.\n */\n\nexport interface DynamicShareConfig extends PathConfig {}\n\n/**\n * Configuration for Live Share.\n */\n\nexport interface LiveShareConfig extends PathConfig {}\n\nexport interface CompileConfig {\n bundleTypes?: boolean\n /** @param entryMode all, single, custom, platform, or auto */\n entryMode?: EntryMode\n /** @param when building types with tsc, should it use the outDir to write to? */\n outDirAsBuildDir?: boolean\n}\n\nexport type PackageCompileTsupConfig = CompileConfig & {\n browser?: Record<string, Options | boolean>\n neutral?: Record<string, Options | boolean>\n node?: Record<string, Options | boolean>\n tsup?: { options?: Options }\n verbose?: boolean\n}\n\nexport type PackageCompileTscConfig = CompileConfig & { mode: 'tsc' }\n\n/**\n * How deplint should classify a dependency.\n * - `dep`: must stay in `dependencies` (never promoted to peerDependencies)\n * - `peer`: should be treated as a peerDependency (overrides a parent `dep` setting)\n */\nexport type DeplintRefType = 'dep' | 'peer'\n\n/**\n * Per-package configuration within deplint.\n */\nexport interface DeplintPackageConfig {\n /** How this dependency should be classified. */\n refType: DeplintRefType\n}\n\n/**\n * Configuration for deplint (dependency linting).\n */\nexport interface DeplintConfig {\n /**\n * Package names to exclude from unused-dependency checks.\n * Packages listed here will never be reported as \"unused\" by deplint,\n * even if no import for them is detected in source or dist files.\n * Useful for packages that are used implicitly (e.g. runtime plugins,\n * CSS-in-JS themes, or polyfills that have side effects on import).\n */\n exclude?: string[]\n /**\n * Per-dependency configuration keyed by package name.\n * Cascades from root to package configs (maps are merged, with\n * package-level entries overriding root-level entries for the same key).\n */\n packages?: Record<string, DeplintPackageConfig>\n}\n\n/**\n * Canonical names for individually toggleable publint checks.\n */\nexport type PublintCheckName\n = | 'files'\n | 'importToDefault'\n | 'main'\n | 'module'\n | 'peerDeps'\n | 'publint'\n | 'resolutions'\n | 'rootSource'\n | 'rootTypes'\n | 'sideEffects'\n | 'source'\n | 'types'\n\nexport const ALL_PUBLINT_CHECKS: PublintCheckName[] = [\n 'files', 'importToDefault', 'main', 'module', 'peerDeps', 'publint', 'resolutions', 'rootSource', 'rootTypes', 'sideEffects', 'source', 'types',\n]\n\n/** Checks that only apply to published (non-private) packages */\nexport const PUBLISH_ONLY_CHECKS: PublintCheckName[] = [\n 'files', 'importToDefault', 'main', 'module', 'publint', 'rootSource', 'rootTypes', 'sideEffects', 'source', 'types',\n]\n\n/**\n * Configuration for publint (package publishing linting).\n */\nexport interface PublintConfig {\n /**\n * Check names to exclude from publint runs.\n * All checks run by default; listed names are skipped.\n * Cannot be used together with `include`.\n */\n exclude?: PublintCheckName[]\n /**\n * Check names to include (whitelist) in publint runs.\n * Only listed checks will run; all others are skipped.\n * Cannot be used together with `exclude`.\n */\n include?: PublintCheckName[]\n /**\n * Whether to run `pack` when invoking the publint library.\n * When true (default), the package manager is used to determine which\n * files would be published. Set to false to skip packing for faster runs.\n */\n pack?: boolean\n}\n\n/**\n * Configuration for readme generation.\n */\nexport interface ReadmeConfig {\n /**\n * URL that the logo links to when clicked.\n * Replaces the placeholder in the template's [![logo][]](url) link.\n */\n logoLinkUrl?: string\n /**\n * Public URL for the logo image displayed at the top of generated READMEs.\n * Replaces the placeholder in the template's [logo] reference link.\n */\n logoUrl?: string\n}\n\n/**\n * Configuration for packman lint (package manager config linting).\n */\nexport interface PackmanConfig {\n /**\n * Minimum age in minutes that a package must be published before pnpm will install it.\n * Only applies when pnpm is the detected package manager.\n * @default 4320 (3 days)\n */\n minimumReleaseAge?: number\n /**\n * Package patterns to exclude from the minimumReleaseAge requirement.\n * These packages can be installed immediately upon release.\n * Supports exact names and scoped wildcards (e.g. '@myorg/*').\n * @default [\"'@xylabs/*'\", \"'@xyo-network/*'\"]\n */\n minimumReleaseAgeExclude?: string[]\n}\n\n/**\n * Command-specific configuration that cascades from root to package.\n * Settings here override the legacy top-level equivalents.\n */\nexport interface CommandsConfig {\n deplint?: DeplintConfig\n packman?: PackmanConfig\n publint?: boolean | PublintConfig\n}\n\nexport interface XyConfigBase {\n /**\n * Command-specific settings grouped under `commands`.\n * These cascade from root xy.config down to per-package xy.config files.\n * Takes precedence over the legacy top-level `deplint`/`publint` fields.\n */\n commands?: CommandsConfig\n compile?: CompileConfig\n /** @deprecated Use `commands.deplint` instead. */\n deplint?: DeplintConfig\n dynamicShare?: DynamicShareConfig\n liveShare?: LiveShareConfig\n /** @deprecated Use `commands.publint` instead. */\n publint?: boolean | PublintConfig\n\n readme?: ReadmeConfig\n verbose?: boolean\n}\n\nexport interface XyTsupConfig extends XyConfigBase { compile?: PackageCompileTsupConfig }\n\nexport interface XyTscConfig extends XyConfigBase { compile?: PackageCompileTscConfig }\n\nexport type XyConfigLegacy = XyTsupConfig | XyTscConfig\n\nexport type XyConfig = XyConfigLegacy & {\n dev?: {\n build?: {\n clean?: boolean /* default: true */\n compile?: boolean /* default: true */\n deplint?: boolean /* default: true */\n gendocs?: boolean /* default: false */\n gitlint?: boolean /* default: true */\n knip?: boolean /* default: true */\n license?: boolean /* default: true */\n lint?: boolean /* default: true */\n publint?: boolean /* default: true */\n statics?: boolean /* default: true */\n verbose?: boolean\n }\n compile?: PackageCompileTsupConfig\n verbose?: boolean\n }\n verbose?: boolean\n}\n","import path from 'node:path/posix'\n\nimport chalk from 'chalk'\nimport cpy from 'cpy'\n\nimport { INIT_CWD, packageName } from '../../lib/index.ts'\n\nexport interface PackageCopyAssetsParams { target?: 'esm' | 'cjs' }\n\nconst copyTargetAssets = async (target: 'esm' | 'cjs', name: string, location: string) => {\n try {\n const values = await cpy(\n ['**/*.jpg', '**/*.png', '**/*.gif', '**/*.svg', '**/*.webp', '**/*.sass', '**/*.scss', '**/*.gif', '**/*.css'],\n `../dist/${target}`,\n {\n cwd: path.join(location, 'src'),\n flat: false,\n },\n )\n if (values.length > 0) {\n console.log(chalk.green(`Copying Assets [${target.toUpperCase()}] - ${name} - ${location}`))\n }\n for (const value of values) {\n console.log(`${value.split('/').pop()} => ./dist/${target}`)\n }\n return 0\n } catch (ex) {\n const error = ex as Error\n console.log(`Copy Assets Failed: ${name}: ${error.message}`)\n return 1\n }\n}\n\nexport const packageCopyAssets = async ({ target }: PackageCopyAssetsParams) => {\n const pkg = INIT_CWD()\n const pkgName = packageName() ?? 'Unknown'\n switch (target) {\n case 'esm': {\n return await copyTargetAssets('esm', pkgName, pkg)\n }\n case 'cjs': {\n return await copyTargetAssets('cjs', pkgName, pkg)\n }\n default: {\n return (await copyTargetAssets('esm', pkgName, pkg)) || (await copyTargetAssets('cjs', pkgName, pkg))\n }\n }\n}\n","import type { ICruiseOptions } from 'dependency-cruiser'\nimport { cruise } from 'dependency-cruiser'\n\nimport { INIT_CWD, packageName } from '../../lib/index.ts'\n\nexport const packageCycle = async () => {\n const pkg = INIT_CWD()\n const pkgName = packageName()\n\n const cruiseOptions: ICruiseOptions = {\n ruleSet: {\n forbidden: [\n {\n name: 'no-circular',\n severity: 'error',\n comment: 'This dependency creates a circular reference',\n from: {},\n to: { circular: true },\n },\n ],\n },\n exclude: 'node_modules|packages/.*/packages',\n validate: true,\n doNotFollow: { path: 'node_modules|packages/.*/packages' },\n tsPreCompilationDeps: false,\n combinedDependencies: true,\n outputType: 'err',\n }\n\n const target = `${pkg}/src`\n\n console.log(`Checking for circular dependencies in ${target}...`)\n\n const result = await cruise([target], cruiseOptions)\n console.log(result.output)\n\n if (result.exitCode === 0) {\n console.log(`${pkgName} āœ… No dependency violations`)\n } else {\n console.error(`${pkgName} āŒ Dependency violations found`)\n }\n return result.exitCode\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport { existsSync } from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport {\n Application, ArgumentsReader, TSConfigReader, TypeDocReader,\n} from 'typedoc'\n\nimport { INIT_CWD, packageName } from '../../lib/index.ts'\n\nconst ExitCodes = {\n CompileError: 3,\n ExceptionThrown: 6,\n NoEntryPoints: 2,\n Ok: 0,\n OptionError: 1,\n OutputError: 5,\n ValidationError: 4,\n}\n\nexport const packageGenDocs = async () => {\n const pkg = INIT_CWD()\n\n if (pkg !== undefined && !existsSync(path.join(pkg, 'typedoc.json'))) {\n return\n }\n\n const app = await Application.bootstrap({\n entryPointStrategy: 'merge',\n entryPoints: [`${pkg}/src/**/*.ts`, `${pkg}/packages/*/dist/docs.json`],\n excludeExternals: true,\n json: `${pkg}/dist/docs.json`,\n logLevel: 'Error',\n tsconfig: `${pkg}/tsconfig.json`,\n })\n\n app.options.addReader(new ArgumentsReader(0))\n app.options.addReader(new TypeDocReader())\n app.options.addReader(new TSConfigReader())\n app.options.addReader(new ArgumentsReader(300))\n\n return await runTypeDoc(app)\n}\n\nconst runTypeDoc = async (app: Application) => {\n const pkgName = packageName()\n if (app.options.getValue('version')) {\n console.log(app.toString())\n return ExitCodes.Ok\n }\n\n if (app.options.getValue('showConfig')) {\n console.log(app.options.getRawValues())\n return ExitCodes.Ok\n }\n\n if (app.logger.hasErrors()) {\n return ExitCodes.OptionError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.OptionError\n }\n\n if (app.options.getValue('entryPoints').length === 0) {\n app.logger.error('No entry points provided')\n return ExitCodes.NoEntryPoints\n }\n\n if (app.options.getValue('watch')) {\n await app.convertAndWatch(async (project) => {\n const out = app.options.getValue('out')\n if (out) {\n await app.generateDocs(project, out)\n }\n const json = app.options.getValue('json')\n if (json) {\n await app.generateJson(project, json)\n }\n\n if (!out && !json) {\n await app.generateDocs(project, './docs')\n }\n })\n return ExitCodes.Ok\n }\n\n const project = await app.convert()\n if (!project) {\n return ExitCodes.CompileError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.CompileError\n }\n\n app.validate(project)\n if (app.logger.hasErrors()) {\n return ExitCodes.ValidationError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.ValidationError\n }\n\n if (app.options.getValue('emit') !== 'none') {\n const out = app.options.getValue('out')\n if (out) {\n await app.generateDocs(project, out)\n }\n const json = app.options.getValue('json')\n if (json) {\n await app.generateJson(project, json)\n }\n\n if (!out && !json) {\n await app.generateDocs(project, './docs')\n }\n\n if (app.logger.hasErrors()) {\n return ExitCodes.OutputError\n }\n if (app.options.getValue('treatWarningsAsErrors') && app.logger.hasWarnings()) {\n return ExitCodes.OutputError\n }\n }\n console.log(chalk.green(`${pkgName} - Ok`))\n return ExitCodes.Ok\n}\n","import { readdirSync } from 'node:fs'\nimport path from 'node:path'\nimport { cwd } from 'node:process'\nimport { pathToFileURL } from 'node:url'\n\nimport chalk from 'chalk'\nimport { ESLint, type Linter } from 'eslint'\nimport { findUp } from 'find-up'\nimport picomatch from 'picomatch'\n\nimport { INIT_CWD } from '../../lib/index.ts'\n\nconst dumpMessages = (lintResults: ESLint.LintResult[]) => {\n const colors: ('white' | 'red' | 'yellow')[] = ['white', 'yellow', 'red']\n const severity: string[] = ['none', 'warning', 'error']\n\n for (const lintResult of lintResults) {\n if (lintResult.messages.length > 0) {\n console.log(chalk.gray(`\\n${lintResult.filePath}`))\n for (const message of lintResult.messages) {\n console.log(\n chalk.gray(`\\t${message.line}:${message.column}`),\n chalk[colors[message.severity]](`\\t${severity[message.severity]}`),\n chalk.white(`\\t${message.message}`),\n chalk.gray(`\\t${message.ruleId}`),\n )\n }\n }\n }\n}\n\nasync function getRootESLintConfig() {\n const configPath = await findUp(['eslint.config.ts', 'eslint.config.mjs'])\n\n if (configPath === undefined) {\n throw new Error('eslint.config.ts not found in the monorepo')\n }\n\n return pathToFileURL(configPath)\n}\n\nfunction getFiles(dir: string, ignoreFolders: string[]): string[] {\n const currentDirectory = cwd()\n const subDirectory = dir.split(currentDirectory)[1]?.split('/')[1]\n if (ignoreFolders.includes(subDirectory)) return []\n return readdirSync(dir, { withFileTypes: true })\n .flatMap((dirent) => {\n const res = path.resolve(dir, dirent.name)\n const relativePath = (subDirectory === undefined) ? dirent.name : `${subDirectory}/${dirent.name}`\n\n const ignoreMatchers = ignoreFolders.map(pattern => picomatch(pattern))\n\n // Exclude ignored paths\n if (ignoreMatchers.some(isMatch => isMatch(relativePath))) return []\n\n return dirent.isDirectory()\n ? getFiles(res, ignoreFolders)\n : [res]\n })\n}\n\nexport const packageLint = async (fix = false, verbose = false, cache = true) => {\n const pkg = INIT_CWD()\n const configPath = await getRootESLintConfig()\n const { default: eslintConfig } = await import(configPath.href) as { default: Linter.Config[] }\n\n const start = Date.now()\n\n // List of folders to ignore\n const ignoreFolders = ['node_modules', 'dist', 'packages', '.git', 'build', '.yarn', '.vscode', '.github']\n\n const engine = new ESLint({\n baseConfig: [...eslintConfig], fix, warnIgnored: false, cache,\n })\n\n const files = getFiles(cwd(), ignoreFolders)\n console.log(chalk.green(`Linting ${pkg} [files = ${files.length}]`))\n if (verbose) {\n for (const file of files) {\n console.log(chalk.gray(`\\t${file}`))\n }\n }\n const lintResults = await engine.lintFiles(files)\n\n dumpMessages(lintResults)\n\n if (fix) {\n await ESLint.outputFixes(lintResults)\n }\n const filesCountColor = files.length < 100 ? 'green' : files.length < 1000 ? 'yellow' : 'red'\n const lintTime = Date.now() - start\n const lintTimeColor = lintTime < 1000 ? 'green' : lintTime < 3000 ? 'yellow' : 'red'\n console.log(chalk.white(`Linted ${chalk[filesCountColor](files.length)} files in ${chalk[lintTimeColor](lintTime)}ms`))\n return lintResults.reduce((prev, lintResult) => prev + lintResult.errorCount, 0)\n}\n","import { promises as fs } from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\nimport sortPackageJson from 'sort-package-json'\n\nimport { INIT_CWD } from '../../lib/index.ts'\n// eslint-disable-next-line import-x/no-internal-modules\nimport type { PublintCheckName } from './compile/XyConfig.ts'\n// eslint-disable-next-line import-x/no-internal-modules\nimport { PUBLISH_ONLY_CHECKS } from './compile/XyConfig.ts'\n\nexport interface PackagePublintParams {\n exclude?: Set<PublintCheckName>\n fix?: boolean\n pack?: boolean\n pkgDir?: string\n strict?: boolean\n verbose?: boolean\n}\n\nconst removeSourceFromExports = (exports: Record<string, unknown>): boolean => {\n let removed = false\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'source') {\n delete exports[key]\n removed = true\n } else if (typeof value === 'object' && value !== null && removeSourceFromExports(value as Record<string, unknown>)) removed = true\n }\n return removed\n}\n\nconst hasSourceInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'source') return true\n if (typeof value === 'object' && value !== null && hasSourceInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nconst hasImportKeyInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'import' && typeof value === 'string' && value.endsWith('.mjs')) return true\n if (typeof value === 'object' && value !== null && hasImportKeyInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nconst replaceImportWithDefault = (exports: Record<string, unknown>): boolean => {\n let modified = false\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'import' && typeof value === 'string' && value.endsWith('.mjs')) {\n if (exports.default === undefined) {\n exports.default = value\n }\n delete exports.import\n if (exports.types === undefined) {\n exports.types = value.replace(/\\.mjs$/, '.d.ts')\n }\n modified = true\n } else if (typeof value === 'object' && value !== null && replaceImportWithDefault(value as Record<string, unknown>)) modified = true\n }\n return modified\n}\n\nconst hasTypesInExports = (exports: Record<string, unknown>): boolean => {\n for (const [key, value] of Object.entries(exports)) {\n if (key === 'types') return true\n if (typeof value === 'object' && value !== null && hasTypesInExports(value as Record<string, unknown>)) return true\n }\n return false\n}\n\nfunction ensureExportsPath(value: string): string {\n if (value.startsWith('./') || value.startsWith('../')) return value\n return `./${value}`\n}\n\ninterface CustomLintResult {\n errors: number\n modified: boolean\n warnings: number\n}\n\nfunction emptyCustomResult(): CustomLintResult {\n return {\n errors: 0, modified: false, warnings: 0,\n }\n}\n\nfunction mergeResults(target: CustomLintResult, source: CustomLintResult): void {\n target.errors += source.errors\n target.warnings += source.warnings\n target.modified = target.modified || source.modified\n}\n\nfunction checkFiles(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const files = pkg.files as string[] | undefined\n if (files === undefined) {\n console.warn(chalk.yellow('Publint [custom]: \"files\" field is missing'))\n result.warnings++\n }\n if (Array.isArray(files) && !files.includes('README.md')) {\n files.push('README.md')\n console.warn(chalk.yellow('Publint [custom]: added \"README.md\" to \"files\"'))\n result.modified = true\n result.warnings++\n }\n if (Array.isArray(files) && files.includes('src')) {\n if (fix) {\n pkg.files = files.filter((f: string) => f !== 'src')\n console.warn(chalk.yellow('Publint [custom]: removed \"src\" from \"files\"'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"src\" should not be in \"files\" (use --fix to remove)'))\n }\n result.warnings++\n }\n return result\n}\n\nfunction checkExportsSource(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (exports && typeof exports === 'object' && hasSourceInExports(exports)) {\n if (fix) {\n removeSourceFromExports(exports)\n console.warn(chalk.yellow('Publint [custom]: removed \"source\" entries from \"exports\"'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"source\" entries should not be in \"exports\" (use --fix to remove)'))\n }\n result.warnings++\n }\n return result\n}\n\nfunction migrateFieldToExports(\n pkg: Record<string, unknown>,\n field: string,\n exportKey: string,\n fix: boolean,\n): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg[field] === undefined) return result\n\n // Skip non-JS files (e.g. tsconfig packages use \"main\": \"./tsconfig.json\")\n const fieldValue = pkg[field] as string\n if (!fieldValue.endsWith('.js') && !fieldValue.endsWith('.mjs') && !fieldValue.endsWith('.cjs')) return result\n\n if (fix) {\n const exportValue = ensureExportsPath(fieldValue)\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (exports && typeof exports === 'object') {\n const dot = exports['.']\n if (dot && typeof dot === 'object' && !(dot as Record<string, unknown>)[exportKey]) {\n (dot as Record<string, unknown>)[exportKey] = exportValue\n console.warn(chalk.yellow(`Publint [custom]: migrated \"${field}\" to \"exports['.'].${exportKey}\" (${fieldValue})`))\n }\n } else if (!pkg.exports) {\n pkg.exports = { '.': { [exportKey]: exportValue } }\n console.warn(chalk.yellow(`Publint [custom]: migrated \"${field}\" to \"exports\" (.→${fieldValue})`))\n }\n delete pkg[field]\n console.warn(chalk.yellow(`Publint [custom]: removed deprecated \"${field}\" field`))\n result.modified = true\n } else {\n console.warn(chalk.yellow(`Publint [custom]: \"${field}\" field is deprecated, use \"exports\" instead (use --fix to remove)`))\n }\n result.warnings++\n return result\n}\n\nfunction checkSideEffects(pkg: Record<string, unknown>): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.sideEffects !== false) {\n console.warn(chalk.yellow('Publint [custom]: \"sideEffects\" field should be set to false'))\n result.warnings++\n }\n return result\n}\n\nfunction checkRootSource(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n for (const field of ['source', 'src']) {\n if (pkg[field] !== undefined) {\n if (fix) {\n delete pkg[field]\n console.warn(chalk.yellow(`Publint [custom]: removed root-level \"${field}\" field`))\n result.modified = true\n } else {\n console.warn(chalk.yellow(`Publint [custom]: root-level \"${field}\" field should not be in package.json (use --fix to remove)`))\n }\n result.warnings++\n }\n }\n return result\n}\n\nfunction checkResolutions(pkg: Record<string, unknown>): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.resolutions !== undefined) {\n console.warn(chalk.yellow('Publint [custom]: \"resolutions\" in use'))\n console.warn(chalk.gray(JSON.stringify(pkg.resolutions, null, 2)))\n result.warnings++\n }\n return result\n}\n\nfunction checkImportToDefault(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (!exports || typeof exports !== 'object') return result\n if (!hasImportKeyInExports(exports)) return result\n\n if (fix) {\n replaceImportWithDefault(exports)\n console.warn(chalk.yellow('Publint [custom]: renamed \"import\" to \"default\" in \"exports\" and ensured \"types\" siblings'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: \"import\" entries in \"exports\" should use \"default\" instead (use --fix to rename)'))\n }\n result.warnings++\n return result\n}\n\nfunction checkRootTypes(pkg: Record<string, unknown>, fix: boolean): CustomLintResult {\n const result = emptyCustomResult()\n if (pkg.types === undefined) return result\n const exports = pkg.exports as Record<string, unknown> | undefined\n if (!exports || typeof exports !== 'object' || !hasTypesInExports(exports)) return result\n\n if (fix) {\n delete pkg.types\n console.warn(chalk.yellow('Publint [custom]: removed redundant root \"types\" field (already defined in \"exports\")'))\n result.modified = true\n } else {\n console.warn(chalk.yellow('Publint [custom]: root \"types\" field is redundant when \"exports\" defines types (use --fix to remove)'))\n }\n result.warnings++\n return result\n}\n\nfunction customPubLint(\n pkg: Record<string, unknown>,\n fix = false,\n exclude = new Set<PublintCheckName>(),\n): [number, number, boolean] {\n const result = emptyCustomResult()\n if (!exclude.has('files')) mergeResults(result, checkFiles(pkg, fix))\n if (!exclude.has('source')) mergeResults(result, checkExportsSource(pkg, fix))\n if (!exclude.has('rootSource')) mergeResults(result, checkRootSource(pkg, fix))\n if (!exclude.has('main')) mergeResults(result, migrateFieldToExports(pkg, 'main', 'default', fix))\n if (!exclude.has('types')) mergeResults(result, migrateFieldToExports(pkg, 'types', 'types', fix))\n if (!exclude.has('module')) mergeResults(result, migrateFieldToExports(pkg, 'module', 'default', fix))\n if (!exclude.has('importToDefault')) mergeResults(result, checkImportToDefault(pkg, fix))\n if (!exclude.has('rootTypes')) mergeResults(result, checkRootTypes(pkg, fix))\n if (!exclude.has('sideEffects')) mergeResults(result, checkSideEffects(pkg))\n if (!exclude.has('resolutions')) mergeResults(result, checkResolutions(pkg))\n return [result.errors, result.warnings, result.modified]\n}\n\n// Always-included files that npm packs regardless of the \"files\" field\nconst ALWAYS_INCLUDED_PATTERNS = [\n 'package.json',\n 'README',\n 'README.*',\n 'LICENCE',\n 'LICENCE.*',\n 'LICENSE',\n 'LICENSE.*',\n 'CHANGELOG',\n 'CHANGELOG.*',\n]\n\ninterface PackFile {\n data: string\n name: string\n}\n\nasync function resolvePackFiles(pkgDir: string, filesField?: string[]): Promise<PackFile[]> {\n const patterns = [...ALWAYS_INCLUDED_PATTERNS]\n if (filesField) {\n for (const pattern of filesField) {\n // Negation patterns (e.g. \"!**/*.spec.*\") are exclusions, pass through as-is\n if (pattern.startsWith('!')) {\n patterns.push(pattern)\n } else {\n // Include pattern — glob both the pattern itself and its contents if it's a directory\n patterns.push(pattern, `${pattern}/**`)\n }\n }\n }\n\n const matched = await glob(patterns, {\n cwd: pkgDir,\n nodir: true,\n dot: false,\n })\n\n const files: PackFile[] = await Promise.all(\n matched.map(async (rel) => {\n const abs = path.join(pkgDir, rel)\n const data = await fs.readFile(abs, 'utf8').catch(() => '')\n // publint's tarball VFS looks up files by path.join(pkgDir, rel),\n // so names must be prefixed with pkgDir to match\n return { name: path.join(pkgDir, rel), data }\n }),\n )\n return files\n}\n\nasync function runPublintLibrary(pkgDir: string, pkg: Record<string, unknown>, strict: boolean, pack: boolean): Promise<{ errors: number; total: number }> {\n const { publint } = await import('publint')\n\n let packOption: { files: PackFile[] } | false = false\n if (pack) {\n const files = await resolvePackFiles(pkgDir, pkg.files as string[] | undefined)\n packOption = { files }\n }\n\n const { messages } = await publint({\n level: 'suggestion',\n pack: packOption,\n pkgDir,\n strict,\n })\n\n // eslint-disable-next-line import-x/no-internal-modules\n const { formatMessage } = await import('publint/utils')\n\n for (const message of messages) {\n switch (message.type) {\n case 'error': {\n console.error(chalk.red(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n case 'warning': {\n console.warn(chalk.yellow(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n default: {\n console.log(chalk.white(`[${message.code}] ${formatMessage(message, pkg)}`))\n break\n }\n }\n }\n\n return {\n errors: messages.filter(message => message.type === 'error').length,\n total: messages.length,\n }\n}\n\nexport const packagePublint = async ({\n exclude = new Set(), fix = false, pack = true, pkgDir: pkgDirParam, strict = true, verbose: _verbose = false,\n}: PackagePublintParams = {}): Promise<number> => {\n const pkgDir = pkgDirParam ?? INIT_CWD()\n\n const sortedPkg = sortPackageJson(await fs.readFile(`${pkgDir}/package.json`, 'utf8'))\n await fs.writeFile(`${pkgDir}/package.json`, sortedPkg)\n\n const pkg = JSON.parse(await fs.readFile(`${pkgDir}/package.json`, 'utf8')) as Record<string, unknown>\n\n const effectiveExclude = pkg.private\n ? new Set([...exclude, ...PUBLISH_ONLY_CHECKS])\n : exclude\n\n console.log(chalk.green(`Publint: ${String(pkg.name)}${pkg.private ? chalk.gray(' (private)') : ''}`))\n console.log(chalk.gray(pkgDir))\n\n let libraryErrors = 0\n if (!effectiveExclude.has('publint')) {\n const library = await runPublintLibrary(pkgDir, pkg, strict, pack)\n libraryErrors = library.errors\n }\n\n const [errorCount, _warningCount, modified] = customPubLint(pkg, fix, effectiveExclude)\n\n if (modified) {\n const sorted = sortPackageJson(JSON.stringify(pkg, null, 2))\n await fs.writeFile(`${pkgDir}/package.json`, sorted)\n }\n\n return libraryErrors + errorCount\n}\n","import { packageClean } from './clean.ts'\nimport { packageCompile } from './compile/index.ts'\n\nexport const packageRecompile = async () => {\n return packageClean() || await packageCompile()\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\nimport semver from 'semver'\n\nimport {\n INIT_CWD, latestVersions, runInstall,\n} from '../lib/index.ts'\nimport { detectPackageManager, getPackageManager } from '../pm/index.ts'\nimport {\n checkInternalDepVersions,\n checkInternalPeerVersions,\n checkVersionConsistency,\n checkWorkspaceProtocol,\n fixInternalDepVersions,\n fixInternalPeerVersions,\n fixVersionConsistency,\n fixWorkspaceProtocol,\n} from './package-lint-deps.ts'\n\nexport interface LintResult {\n errors: string[]\n fixable: string[]\n warnings: string[]\n}\n\nfunction emptyResult(): LintResult {\n return {\n errors: [], fixable: [], warnings: [],\n }\n}\n\nfunction readRootPackageJson(cwd: string): Record<string, unknown> {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw) as Record<string, unknown>\n}\n\nfunction writeRootPackageJson(cwd: string, pkg: Record<string, unknown>) {\n const path = PATH.resolve(cwd, 'package.json')\n writeFileSync(path, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n}\n\nfunction readPnpmWorkspaceGlobs(cwd: string): string[] | undefined {\n const wsPath = PATH.resolve(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return undefined\n const raw = readFileSync(wsPath, 'utf8')\n const globs: string[] = []\n let inPackages = false\n for (const line of raw.split('\\n')) {\n if (/^packages\\s*:/.test(line)) {\n inPackages = true\n continue\n }\n if (inPackages) {\n const match = /^\\s+-\\s+['\"]?([^'\"]+)['\"]?\\s*$/.exec(line)\n if (match) {\n globs.push(match[1])\n } else if (/^\\S/.test(line) && line.trim() !== '') {\n break\n }\n }\n }\n return globs.length > 0 ? globs : undefined\n}\n\nfunction isMonorepo(pkg: Record<string, unknown>, cwd: string): boolean {\n const workspaces = pkg.workspaces\n if (Array.isArray(workspaces) && workspaces.length > 0) return true\n return readPnpmWorkspaceGlobs(cwd) !== undefined\n}\n\nfunction checkPackagesFolder(workspaces: { location: string; name: string }[]): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!location.startsWith('packages/') && !location.startsWith('packages\\\\')) {\n result.errors.push(`${name} (${location}) is not inside a packages/ folder`)\n }\n }\n\n return result\n}\n\nfunction checkRootPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (!pkg.private) {\n result.fixable.push('Root package.json must be private to prevent accidental publishing')\n }\n\n return result\n}\n\nfunction fixRootPrivate(cwd: string, pkg: Record<string, unknown>) {\n pkg.private = true\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' āœ” Fixed: set \"private\": true in root package.json'))\n}\n\nfunction checkNoPublishConfigOnPrivate(pkg: Record<string, unknown>): LintResult {\n const result = emptyResult()\n\n if (pkg.private && pkg.publishConfig) {\n result.fixable.push('Root package.json has publishConfig but is private — publishConfig is unnecessary')\n }\n\n return result\n}\n\nfunction fixNoPublishConfigOnPrivate(cwd: string, pkg: Record<string, unknown>) {\n delete pkg.publishConfig\n writeRootPackageJson(cwd, pkg)\n console.log(chalk.green(' āœ” Fixed: removed publishConfig from private root package.json'))\n}\n\nfunction checkNoPackageManagerInWorkspaces(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n result.fixable.push(`${name} (${location}) has a packageManager field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixNoPackageManagerInWorkspaces(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.packageManager) {\n delete pkg.packageManager\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: removed packageManager from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction checkWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n // For pnpm: no package should have workspaces (including root)\n // For yarn: only root should have workspaces\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n const label = location === '.' ? 'Root' : `${name} (${location})`\n const reason = pm === 'pnpm'\n ? 'pnpm uses pnpm-workspace.yaml instead'\n : 'only the root should define workspaces'\n result.fixable.push(`${label} has a workspaces field — ${reason}`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n\n return result\n}\n\nfunction fixWorkspacesFieldPlacement(\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): void {\n for (const { location } of workspaces) {\n if (pm === 'pnpm' ? true : location !== '.') {\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.workspaces) {\n delete pkg.workspaces\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n const label = location === '.' ? 'root' : location\n console.log(chalk.green(` āœ” Fixed: removed workspaces from ${label}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n }\n}\n\nfunction checkWorkspaceGlobCoverage(\n pkg: Record<string, unknown>,\n cwd: string,\n pm: 'pnpm' | 'yarn',\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pm === 'pnpm'\n ? readPnpmWorkspaceGlobs(cwd) ?? []\n : (Array.isArray(pkg.workspaces) ? pkg.workspaces as string[] : [])\n\n if (globs.length === 0) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`No workspace globs found in ${source}`)\n return result\n }\n\n const matchers = globs.map(glob => picomatch(glob))\n const isMatch = (location: string) => matchers.some(m => m(location))\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n if (!isMatch(location)) {\n const source = pm === 'pnpm' ? 'pnpm-workspace.yaml' : 'root package.json workspaces'\n result.errors.push(`${name} (${location}) is not matched by any glob in ${source}`)\n }\n }\n\n return result\n}\n\nfunction logResults(label: string, result: LintResult, fix: boolean): { errors: number; fixed: number } {\n let errors = 0\n let fixed = 0\n\n for (const error of result.errors) {\n console.log(chalk.red(` āœ— ${error}`))\n errors++\n }\n for (const fixable of result.fixable) {\n if (fix) {\n fixed++\n } else {\n console.log(chalk.red(` āœ— ${fixable} (fixable)`))\n errors++\n }\n }\n for (const warning of result.warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n }\n if (errors === 0 && fixed === 0 && result.warnings.length === 0) {\n console.log(chalk.green(` āœ“ ${label}`))\n }\n\n return { errors, fixed }\n}\n\ninterface CheckEntry {\n check: () => LintResult\n fix?: (cwd: string, pkg: Record<string, unknown>) => void\n label: string\n}\n\nfunction runChecks(entries: CheckEntry[], cwd: string, pkg: Record<string, unknown>, fix: boolean): { errors: number; fixed: number } {\n let totalErrors = 0\n let totalFixed = 0\n\n for (const entry of entries) {\n const result = entry.check()\n const log = logResults(entry.label, result, fix)\n if (fix && entry.fix && result.fixable.length > 0) {\n entry.fix(cwd, pkg)\n }\n totalErrors += log.errors\n totalFixed += log.fixed\n }\n\n return { errors: totalErrors, fixed: totalFixed }\n}\n\nfunction checkVoltaOnlyInRoot(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (pkg.volta) {\n result.fixable.push(`${name} (${location}) has a volta field — only the root should define this`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixVoltaOnlyInRoot(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (pkg.volta) {\n delete pkg.volta\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: removed volta from ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction isTerminalPackage(pkg: Record<string, unknown>): boolean {\n return pkg.private === true\n}\n\nfunction checkEnginesOnlyInNonTerminal(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n // Check root (always terminal/private) — should not have engines\n const rootPkg = JSON.parse(readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')) as Record<string, unknown>\n if (rootPkg.engines) {\n result.fixable.push('Root package.json has engines — terminal packages should not declare engines (use volta instead)')\n }\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n result.fixable.push(`${name} (${location}) is terminal (private) but has engines — terminal packages should not declare engines`)\n }\n if (!isTerminalPackage(pkg) && !pkg.engines) {\n result.fixable.push(`${name} (${location}) is a library but has no engines field`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction fixEnginesOnlyInNonTerminal(cwd: string, _pkg: Record<string, unknown>, workspaces: { location: string; name: string }[]) {\n // Remove engines from root\n const rootPath = PATH.resolve(cwd, 'package.json')\n const rootRaw = readFileSync(rootPath, 'utf8')\n const rootPkg = JSON.parse(rootRaw) as Record<string, unknown>\n if (rootPkg.engines) {\n delete rootPkg.engines\n writeFileSync(rootPath, `${JSON.stringify(rootPkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(' āœ” Fixed: removed engines from root package.json'))\n }\n\n // Remove engines from terminal workspace packages, add engines to libraries missing them\n const enginesTemplate = resolveEnginesTemplate(cwd, workspaces)\n for (const { location } of workspaces) {\n if (location === '.') continue\n const pkgPath = PATH.resolve(cwd, location, 'package.json')\n try {\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n if (isTerminalPackage(pkg) && pkg.engines) {\n delete pkg.engines\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: removed engines from ${location}/package.json`))\n }\n if (!isTerminalPackage(pkg) && !pkg.engines && enginesTemplate) {\n pkg.engines = enginesTemplate\n writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\\n`, 'utf8')\n console.log(chalk.green(` āœ” Fixed: added engines to ${location}/package.json`))\n }\n } catch {\n // skip unreadable packages\n }\n }\n}\n\nfunction resolveEnginesTemplate(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): Record<string, string> | undefined {\n // Use engines from the first sibling library package that has one\n for (const { location } of workspaces) {\n if (location === '.') continue\n try {\n const pkg = JSON.parse(readFileSync(PATH.resolve(cwd, location, 'package.json'), 'utf8')) as Record<string, unknown>\n if (!isTerminalPackage(pkg) && pkg.engines) {\n return pkg.engines as Record<string, string>\n }\n } catch {\n // skip\n }\n }\n return undefined\n}\n\nfunction checkVersionsIncludeLts(\n cwd: string,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const toolVersions: Record<string, string> = {\n node: latestVersions.node,\n npm: latestVersions.npm,\n pnpm: latestVersions.pnpm,\n yarn: latestVersions.yarn,\n }\n\n // Check engines in all non-terminal packages\n for (const { location, name } of workspaces) {\n const pkgPath = location === '.'\n ? PATH.resolve(cwd, 'package.json')\n : PATH.resolve(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n const label = location === '.' ? 'root' : `${name} (${location})`\n\n // Check engines ranges\n const engines = pkg.engines as Record<string, string> | undefined\n if (engines) {\n for (const [tool, range] of Object.entries(engines)) {\n const latest = toolVersions[tool]\n if (latest && !semver.satisfies(latest, range)) {\n result.errors.push(\n `${label} engines.${tool} \"${range}\" does not include latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n\n // Check volta pins\n const volta = pkg.volta as Record<string, string> | undefined\n if (volta) {\n for (const [tool, pinnedVersion] of Object.entries(volta)) {\n const latest = toolVersions[tool]\n if (latest && semver.lt(pinnedVersion, latest)) {\n result.warnings.push(\n `${label} volta.${tool} \"${pinnedVersion}\" is older than latest ${tool === 'node' ? 'LTS ' : ''}version ${latest}`,\n )\n }\n }\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nfunction logSummary(errors: number, fixed: number) {\n if (fixed > 0) {\n console.log(chalk.green(`\\n Fixed ${fixed} issue(s)`))\n }\n if (errors > 0) {\n console.log(chalk.red(`\\n ${errors} error(s) found`))\n } else if (fixed === 0) {\n console.log(chalk.green('\\n All checks passed'))\n }\n}\n\nexport function packageLintMonorepo(fix = false): number {\n const cwd = INIT_CWD()\n\n let pkg: Record<string, unknown>\n try {\n pkg = readRootPackageJson(cwd)\n } catch {\n console.error(chalk.red('Could not read package.json'))\n return 1\n }\n\n if (!isMonorepo(pkg, cwd)) {\n console.log(chalk.gray('Not a monorepo — skipping repo lint checks'))\n return 0\n }\n\n console.log(chalk.green('Repo Lint'))\n\n const pm = detectPackageManager()\n const workspaces = getPackageManager().listWorkspaces()\n\n const internalDepCheck: CheckEntry = pm === 'pnpm'\n ? {\n check: () => checkWorkspaceProtocol(cwd, workspaces),\n fix: () => fixWorkspaceProtocol(cwd, workspaces),\n label: 'Internal deps/devDeps use workspace: protocol',\n }\n : {\n check: () => checkInternalDepVersions(cwd, workspaces),\n fix: () => fixInternalDepVersions(cwd, workspaces),\n label: 'Internal deps/devDeps use correct version ranges',\n }\n\n const checks: CheckEntry[] = [\n {\n check: () => checkRootPrivate(pkg), fix: fixRootPrivate, label: 'Root package is private',\n },\n {\n check: () => checkNoPublishConfigOnPrivate(pkg), fix: fixNoPublishConfigOnPrivate, label: 'No publishConfig on private root',\n },\n { check: () => checkPackagesFolder(workspaces), label: 'All packages are in packages/ folder' },\n {\n check: () => checkWorkspacesFieldPlacement(cwd, pm, workspaces),\n fix: () => fixWorkspacesFieldPlacement(cwd, pm, workspaces),\n label: pm === 'pnpm' ? 'No workspaces field in package.json (use pnpm-workspace.yaml)' : 'Workspaces field only in root package.json',\n },\n {\n check: () => checkWorkspaceGlobCoverage(pkg, cwd, pm, workspaces),\n label: 'Workspace globs cover all packages',\n },\n {\n check: () => checkNoPackageManagerInWorkspaces(cwd, workspaces),\n fix: () => fixNoPackageManagerInWorkspaces(cwd, pkg, workspaces),\n label: 'No packageManager in workspace packages',\n },\n {\n check: () => checkVoltaOnlyInRoot(cwd, workspaces),\n fix: () => fixVoltaOnlyInRoot(cwd, pkg, workspaces),\n label: 'Volta only in root package.json',\n },\n {\n check: () => checkEnginesOnlyInNonTerminal(cwd, workspaces),\n fix: () => fixEnginesOnlyInNonTerminal(cwd, pkg, workspaces),\n label: 'Engines only in non-terminal (library) packages',\n },\n {\n check: () => checkVersionsIncludeLts(cwd, workspaces),\n label: 'Engine/volta versions include latest LTS',\n },\n {\n check: () => checkVersionConsistency(cwd, pkg, workspaces),\n fix: () => fixVersionConsistency(cwd, pkg, writeRootPackageJson, workspaces),\n label: 'Consistent versions across packages',\n },\n internalDepCheck,\n {\n check: () => checkInternalPeerVersions(cwd, workspaces),\n fix: () => fixInternalPeerVersions(cwd, workspaces),\n label: 'Internal peerDeps use semver ranges (not workspace: protocol)',\n },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\n\n if (fix && fixed > 0) {\n runInstall()\n }\n\n return errors > 0 ? 1 : 0\n}\n","import {\n existsSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { detectCurrentPM, findWorkspacePackagePaths } from './convert.ts'\n\nexport interface PackmanCleanParams {\n verbose?: boolean\n}\n\nfunction removeNodeModules(dir: string, verbose?: boolean): boolean {\n const nmPath = PATH.join(dir, 'node_modules')\n if (existsSync(nmPath)) {\n if (verbose) console.log(chalk.gray(`Removing ${nmPath}`))\n rmSync(nmPath, { force: true, recursive: true })\n return true\n }\n return false\n}\n\nexport function packmanClean({ verbose }: PackmanCleanParams): number {\n const cwd = process.cwd()\n const pm = detectCurrentPM(cwd)\n\n if (pm === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n console.log(chalk.blue(`Detected package manager: ${pm}`))\n\n // Remove node_modules from root and all workspace packages\n let removedCount = 0\n\n if (removeNodeModules(cwd, verbose)) removedCount++\n\n const workspacePaths = findWorkspacePackagePaths(cwd)\n for (const wsPath of workspacePaths) {\n const fullPath = PATH.join(cwd, wsPath)\n if (removeNodeModules(fullPath, verbose)) removedCount++\n }\n\n console.log(chalk.green(`Removed ${removedCount} node_modules folder${removedCount === 1 ? '' : 's'}`))\n\n // Handle lock files\n if (pm === 'yarn') {\n const lockPath = PATH.join(cwd, 'yarn.lock')\n if (existsSync(lockPath)) {\n writeFileSync(lockPath, '')\n console.log(chalk.green('Truncated yarn.lock'))\n }\n } else if (pm === 'pnpm') {\n const lockPath = PATH.join(cwd, 'pnpm-lock.yaml')\n if (existsSync(lockPath)) {\n rmSync(lockPath)\n console.log(chalk.green('Deleted pnpm-lock.yaml'))\n }\n }\n\n console.log(chalk.green('Ready for a clean install'))\n return 0\n}\n","import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { packageLintMonorepo } from '../package-lint.ts'\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nexport function detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nexport function findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n const patterns: string[] = (pkg.workspaces ?? []) as string[]\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n const result = target === 'pnpm'\n ? convertToPnpm(cwd, workspacePaths)\n : convertToYarn(cwd, workspacePaths)\n\n if (result !== 0) return result\n\n console.log(chalk.green('\\nRunning repo lint --fix...'))\n packageLintMonorepo(true)\n\n return result\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n // Save workspace patterns before removing — fall back to pnpm-workspace.yaml if already converted\n const workspacePatterns: string[] = (pkg.workspaces as string[] | undefined) ?? readPnpmWorkspacePatterns(cwd)\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8')) as Record<string, unknown>\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Swap ts-scripts devDependency (yarn3 → pnpm) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'yarn-to-pnpm')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'yarn-to-pnpm')\n\n // 8. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n // 9. Run pnpm install\n console.log(chalk.blue('\\nRunning pnpm install...'))\n const install = spawnSync('pnpm', ['install'], {\n cwd,\n encoding: 'utf8',\n shell: true,\n stdio: 'inherit',\n })\n if (install.status !== 0) {\n console.error(chalk.red('pnpm install failed'))\n return 1\n }\n\n console.log(chalk.blue('\\nConversion complete.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst IMPORT_SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ['@xylabs/ts-scripts-react-yarn3', '@xylabs/ts-scripts-react-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ['@xylabs/ts-scripts-react-pnpm', '@xylabs/ts-scripts-react-yarn3'],\n ],\n}\n\nconst SOURCE_GLOBS = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.mjs',\n]\n\nconst IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.yarn/**',\n]\n\nexport function rewriteSourceImports(cwd: string, direction: Direction): void {\n const swaps = IMPORT_SWAP_MAP[direction]\n const files = globSync(SOURCE_GLOBS, {\n cwd,\n absolute: true,\n ignore: IGNORE_PATTERNS,\n })\n\n let count = 0\n for (const file of files) {\n if (!existsSync(file)) continue\n const original = readFileSync(file, 'utf8')\n let content = original\n for (const [from, to] of swaps) {\n content = content.replaceAll(from, to)\n }\n if (content !== original) {\n writeFileSync(file, content, 'utf8')\n count++\n }\n }\n\n if (count > 0) {\n console.log(chalk.green(` Rewrote ts-scripts imports in ${count} source file(s)`))\n }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ],\n}\n\nfunction swapInPackageJson(pkgPath: string, direction: Direction): boolean {\n if (!existsSync(pkgPath)) return false\n\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw) as Record<string, unknown>\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies']) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [from, to] of SWAP_MAP[direction]) {\n if (deps[from]) {\n deps[to] = deps[from]\n delete deps[from]\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n', 'utf8')\n }\n return changed\n}\n\nexport function swapTsScriptsDependency(cwd: string, workspacePackageJsonPaths: string[], direction: Direction): void {\n let count = 0\n\n // Swap in root package.json\n if (swapInPackageJson(PATH.join(cwd, 'package.json'), direction)) {\n count++\n }\n\n // Swap in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (swapInPackageJson(fullPath, direction)) {\n count++\n }\n }\n\n if (count > 0) {\n const target = direction === 'yarn-to-pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`))\n }\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nfunction readWorkspacePatternsFromPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n if (!existsSync(pkgPath)) return []\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return (pkg.workspaces ?? []) as string[]\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns — try pnpm-workspace.yaml first, fall back to pkg.workspaces if already converted\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n const fromPkg = readWorkspacePatternsFromPackageJson(cwd)\n if (fromPkg.length > 0) {\n workspacePatterns.push(...fromPkg)\n } else {\n console.warn(chalk.yellow(' No workspace patterns found'))\n }\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8')) as Record<string, unknown>\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Swap ts-scripts devDependency (pnpm → yarn3) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'pnpm-to-yarn')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'pnpm-to-yarn')\n\n // 8. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n // 9. Run yarn install\n console.log(chalk.blue('\\nRunning yarn install...'))\n const install = spawnSync('yarn', ['install'], {\n cwd,\n encoding: 'utf8',\n shell: true,\n stdio: 'inherit',\n })\n if (install.status !== 0) {\n console.error(chalk.red('yarn install failed'))\n return 1\n }\n\n console.log(chalk.blue('\\nConversion complete.\\n'))\n return 0\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { loadConfig } from '../../lib/index.ts'\nimport { detectPackageManager } from '../../pm/index.ts'\nimport type { PackmanConfig } from '../package/compile/index.ts'\n\nexport interface PackmanLintParams {\n fix?: boolean\n verbose?: boolean\n}\n\ninterface ResolvedPackmanConfig {\n minimumReleaseAge: number\n minimumReleaseAgeExclude: string[]\n}\n\nconst DEFAULT_MINIMUM_RELEASE_AGE = 4320 // 3 days in minutes\nconst DEFAULT_RELEASE_AGE_EXCLUDES = [\"'@xylabs/*'\", \"'@xyo-network/*'\"]\n\nfunction resolvePackmanConfig(cfg?: PackmanConfig): ResolvedPackmanConfig {\n return {\n minimumReleaseAge: cfg?.minimumReleaseAge ?? DEFAULT_MINIMUM_RELEASE_AGE,\n minimumReleaseAgeExclude: cfg?.minimumReleaseAgeExclude ?? DEFAULT_RELEASE_AGE_EXCLUDES,\n }\n}\n\nfunction readPnpmWorkspaceYaml(cwd: string): string | undefined {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return undefined\n return readFileSync(wsPath, 'utf8')\n}\n\nfunction writePnpmWorkspaceYaml(cwd: string, content: string): void {\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), content, 'utf8')\n}\n\nfunction parseYamlListSection(content: string, sectionName: string): string[] {\n const items: string[] = []\n let inSection = false\n for (const line of content.split('\\n')) {\n if (new RegExp(String.raw`^${sectionName}\\s*:`).test(line)) {\n inSection = true\n continue\n }\n if (inSection) {\n const match = /^\\s+-\\s+(.+)$/.exec(line)\n if (match) {\n items.push(match[1].trim())\n } else if (line.trim() && !/^\\s/.test(line)) {\n break\n }\n }\n }\n return items\n}\n\n// --- Yarn checks ---\n\nfunction checkEnableScripts(cwd: string, verbose?: boolean, silent?: boolean): boolean {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (!existsSync(yarnrcPath)) {\n if (verbose) console.log(chalk.gray(' No .yarnrc.yml found, skipping enableScripts check'))\n return true\n }\n\n const content = readFileSync(yarnrcPath, 'utf8')\n for (const line of content.split('\\n')) {\n const trimmed = line.trim()\n if (/^enableScripts\\s*:/.test(trimmed)) {\n const value = trimmed.replace(/^enableScripts\\s*:\\s*/, '').trim()\n if (value === 'false') {\n if (verbose) console.log(chalk.green(' enableScripts is correctly set to false'))\n return true\n }\n if (!silent) console.log(chalk.red(' enableScripts is set to', value, '(expected false)'))\n return false\n }\n }\n\n if (!silent) console.log(chalk.red(' enableScripts is not set in .yarnrc.yml (expected false)'))\n return false\n}\n\nfunction fixEnableScripts(cwd: string): boolean {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (!existsSync(yarnrcPath)) return true\n\n const content = readFileSync(yarnrcPath, 'utf8')\n const lines = content.split('\\n')\n\n let found = false\n const newLines = lines.map((line) => {\n if (/^\\s*enableScripts\\s*:/.test(line)) {\n found = true\n return 'enableScripts: false'\n }\n return line\n })\n\n if (!found) {\n let inserted = false\n for (let i = 0; i < newLines.length; i++) {\n const trimmed = newLines[i].trim()\n if (trimmed && !trimmed.startsWith('#') && trimmed > 'enableScripts:') {\n newLines.splice(i, 0, 'enableScripts: false', '')\n inserted = true\n break\n }\n }\n if (!inserted) {\n const lastLine = newLines.at(-1)\n if (lastLine === '') {\n newLines.splice(-1, 0, 'enableScripts: false', '')\n } else {\n newLines.push('', 'enableScripts: false')\n }\n }\n }\n\n writeFileSync(yarnrcPath, newLines.join('\\n'), 'utf8')\n console.log(chalk.green(' Fixed: enableScripts set to false'))\n return true\n}\n\n// --- pnpm checks ---\n\nfunction checkMinimumReleaseAge(cwd: string, config: ResolvedPackmanConfig, verbose?: boolean, silent?: boolean): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) {\n if (!silent) console.log(chalk.red(' No pnpm-workspace.yaml found'))\n return false\n }\n\n const { minimumReleaseAge } = config\n for (const line of content.split('\\n')) {\n const match = /^minimumReleaseAge\\s*:\\s*(\\d+)/.exec(line.trim())\n if (match) {\n const value = Number.parseInt(match[1], 10)\n if (value >= minimumReleaseAge) {\n if (verbose) console.log(chalk.green(` minimumReleaseAge is ${value} (>= ${minimumReleaseAge})`))\n return true\n }\n if (!silent) console.log(chalk.red(` minimumReleaseAge is ${value} (expected >= ${minimumReleaseAge})`))\n return false\n }\n }\n\n if (!silent) console.log(chalk.red(` minimumReleaseAge is not set in pnpm-workspace.yaml (expected >= ${minimumReleaseAge})`))\n return false\n}\n\nfunction fixMinimumReleaseAge(cwd: string, config: ResolvedPackmanConfig): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) return false\n\n const { minimumReleaseAge } = config\n const lines = content.split('\\n')\n let found = false\n const newLines = lines.map((line) => {\n if (/^minimumReleaseAge\\s*:/.test(line)) {\n found = true\n return `minimumReleaseAge: ${minimumReleaseAge}`\n }\n return line\n })\n\n if (!found) {\n const lastLine = newLines.at(-1)\n if (lastLine === '') {\n newLines.splice(-1, 0, `minimumReleaseAge: ${minimumReleaseAge}`)\n } else {\n newLines.push(`minimumReleaseAge: ${minimumReleaseAge}`)\n }\n }\n\n writePnpmWorkspaceYaml(cwd, newLines.join('\\n'))\n console.log(chalk.green(` Fixed: minimumReleaseAge set to ${minimumReleaseAge}`))\n return true\n}\n\nfunction checkMinimumReleaseAgeExclude(cwd: string, config: ResolvedPackmanConfig, verbose?: boolean, silent?: boolean): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) {\n if (!silent) console.log(chalk.red(' No pnpm-workspace.yaml found'))\n return false\n }\n\n const excludes = parseYamlListSection(content, 'minimumReleaseAgeExclude')\n const missing = config.minimumReleaseAgeExclude.filter(scope => !excludes.includes(scope))\n\n if (missing.length === 0) {\n if (verbose) console.log(chalk.green(' minimumReleaseAgeExclude includes all required scopes'))\n return true\n }\n\n if (!silent) console.log(chalk.red(` minimumReleaseAgeExclude is missing: ${missing.join(', ')}`))\n return false\n}\n\nfunction fixMinimumReleaseAgeExclude(cwd: string, config: ResolvedPackmanConfig): boolean {\n if (detectPackageManager() !== 'pnpm') return true\n\n const content = readPnpmWorkspaceYaml(cwd)\n if (!content) return false\n\n const existingExcludes = parseYamlListSection(content, 'minimumReleaseAgeExclude')\n const toAdd = config.minimumReleaseAgeExclude.filter(scope => !existingExcludes.includes(scope))\n if (toAdd.length === 0) return true\n\n const lines = content.split('\\n')\n const sectionIndex = lines.findIndex(line => /^minimumReleaseAgeExclude\\s*:/.test(line))\n\n if (sectionIndex === -1) {\n const newSection = ['minimumReleaseAgeExclude:', ...config.minimumReleaseAgeExclude.map(s => ` - ${s}`)]\n const lastLine = lines.at(-1)\n if (lastLine === '') {\n lines.splice(-1, 0, ...newSection)\n } else {\n lines.push(...newSection)\n }\n } else {\n let insertAt = sectionIndex + 1\n while (insertAt < lines.length && /^\\s+-/.test(lines[insertAt])) {\n insertAt++\n }\n for (const scope of toAdd) {\n lines.splice(insertAt, 0, ` - ${scope}`)\n insertAt++\n }\n }\n\n writePnpmWorkspaceYaml(cwd, lines.join('\\n'))\n console.log(chalk.green(` Fixed: added ${toAdd.join(', ')} to minimumReleaseAgeExclude`))\n return true\n}\n\nexport async function packmanLint({ fix, verbose }: PackmanLintParams = {}): Promise<number> {\n const cwd = process.cwd()\n const rootConfig = await loadConfig()\n const packmanConfig = resolvePackmanConfig((rootConfig as Record<string, unknown>).commands\n ? ((rootConfig as Record<string, Record<string, unknown>>).commands.packman as PackmanConfig | undefined)\n : undefined)\n\n let failures = 0\n\n // Yarn checks\n const enableScriptsPassed = checkEnableScripts(cwd, verbose, fix)\n if (!enableScriptsPassed) {\n if (fix) {\n if (!fixEnableScripts(cwd)) failures++\n } else {\n failures++\n }\n }\n\n // pnpm checks\n const agePassed = checkMinimumReleaseAge(cwd, packmanConfig, verbose, fix)\n if (!agePassed) {\n if (fix) {\n if (!fixMinimumReleaseAge(cwd, packmanConfig)) failures++\n } else {\n failures++\n }\n }\n\n const excludePassed = checkMinimumReleaseAgeExclude(cwd, packmanConfig, verbose, fix)\n if (!excludePassed) {\n if (fix) {\n if (!fixMinimumReleaseAgeExclude(cwd, packmanConfig)) failures++\n } else {\n failures++\n }\n }\n\n if (failures > 0) {\n console.log(chalk.red(`\\npackman lint: ${failures} check(s) failed`))\n if (!fix) {\n console.log(chalk.yellow('Run with --fix to auto-fix issues'))\n }\n } else {\n console.log(chalk.green('\\npackman lint: all checks passed'))\n }\n\n return failures > 0 ? 1 : 0\n}\n","import chalk from 'chalk'\n\nimport {\n INIT_CWD,\n installOutputCapture,\n loadConfig,\n loadWorkspaceCommandConfig,\n outputStorage,\n runInstall,\n runWithConcurrency,\n} from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type {\n PublintCheckName, PublintConfig, XyConfig,\n} from './package/index.ts'\nimport { ALL_PUBLINT_CHECKS, packagePublint } from './package/index.ts'\nimport {\n checkInternalPeerVersions,\n fixInternalPeerVersions,\n} from './package-lint-deps.ts'\n\nexport interface PublintParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n jobs: number\n pack?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n exclude: Set<PublintCheckName>\n fix?: boolean\n pack?: boolean\n pkg: string\n verbose?: boolean\n}\n\nfunction resolveExclude(\n publintConfig: { exclude?: PublintCheckName[]; include?: PublintCheckName[] },\n cliExclude?: string[],\n cliInclude?: string[],\n): Set<PublintCheckName> | undefined {\n const hasExclude = (publintConfig.exclude?.length ?? 0) > 0 || (cliExclude?.length ?? 0) > 0\n const hasInclude = (publintConfig.include?.length ?? 0) > 0 || (cliInclude?.length ?? 0) > 0\n\n if (hasExclude && hasInclude) {\n console.error(chalk.red('Publint: --include and --exclude cannot be used together'))\n return undefined\n }\n\n if (hasInclude) {\n const include = new Set<PublintCheckName>([\n ...((publintConfig.include ?? [])),\n ...((cliInclude ?? []) as PublintCheckName[]),\n ])\n return new Set(ALL_PUBLINT_CHECKS.filter(c => !include.has(c)))\n }\n\n return new Set<PublintCheckName>([\n ...(publintConfig.exclude ?? []),\n ...((cliExclude ?? []) as PublintCheckName[]),\n ])\n}\n\nfunction normalizePublintConfig(value: boolean | PublintConfig | undefined): PublintConfig {\n if (typeof value === 'object') return value\n return {}\n}\n\nexport interface ResolvedPublintOptions {\n exclude: Set<PublintCheckName>\n pack: boolean\n}\n\nexport async function loadPublintOptions(): Promise<ResolvedPublintOptions> {\n const config = await loadConfig<XyConfig>()\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const publintConfig = normalizePublintConfig(config.commands?.publint ?? config.publint)\n const exclude = resolveExclude(publintConfig) ?? new Set<PublintCheckName>()\n return { exclude, pack: publintConfig.pack ?? true }\n}\n\nexport const publint = async ({\n cliExclude, cliInclude, fix, jobs, pack, verbose, pkg,\n}: PublintParams) => {\n return pkg === undefined\n ? await publintAll({\n cliExclude, cliInclude, fix, jobs, pack, verbose,\n })\n : await publintSingle({\n cliExclude, cliInclude, fix, pack, pkg, verbose,\n })\n}\n\nfunction logPublintSummary(packages: number, errors: number, ms: number): void {\n const color = errors > 0 ? chalk.red : chalk.blue\n console.log(color(`Checked ${packages} package(s) in ${ms.toFixed(0)}ms with ${errors} issue(s) found.`))\n}\n\ninterface PublintSingleParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n pack?: boolean\n pkg: string\n verbose?: boolean\n}\n\nexport const publintSingle = async ({\n cliExclude, cliInclude, fix, pack, pkg, verbose,\n}: PublintSingleParams) => {\n const start = performance.now()\n const pm = getPackageManager()\n const workspace = pm.findWorkspace(pkg)\n if (!workspace) {\n console.error(chalk.red(`Publint: workspace \"${pkg}\" not found`))\n return 1\n }\n const wsPublintConfig = normalizePublintConfig(\n await loadWorkspaceCommandConfig<boolean | PublintConfig>(workspace.location, 'publint'),\n )\n const exclude = resolveExclude(wsPublintConfig, cliExclude, cliInclude)\n if (!exclude) return 1\n const shouldPack = pack ?? wsPublintConfig.pack ?? true\n\n const errors = await packagePublint({\n exclude, fix, pack: shouldPack, pkgDir: workspace.location, verbose,\n })\n logPublintSummary(1, errors, performance.now() - start)\n return errors\n}\n\ninterface PublintAllParams {\n cliExclude?: string[]\n cliInclude?: string[]\n fix?: boolean\n jobs: number\n pack?: boolean\n verbose?: boolean\n}\n\ninterface CapturedResult {\n errors: number\n output: string[]\n}\n\nexport const publintAll = async ({\n cliExclude, cliInclude, fix, jobs, pack, verbose,\n}: PublintAllParams) => {\n const start = performance.now()\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const concurrency = jobs\n\n const results: CapturedResult[] = Array.from({ length: workspaces.length }, () => ({ errors: 0, output: [] }))\n\n installOutputCapture()\n\n await runWithConcurrency(\n workspaces.map((ws, i) => ({ i, ws })),\n concurrency,\n async ({ i, ws }) => {\n const output: string[] = []\n await outputStorage.run(output, async () => {\n try {\n const wsPublintConfig = normalizePublintConfig(\n await loadWorkspaceCommandConfig<boolean | PublintConfig>(ws.location, 'publint'),\n )\n const exclude = resolveExclude(wsPublintConfig, cliExclude, cliInclude)\n ?? new Set<PublintCheckName>()\n const shouldPack = pack ?? wsPublintConfig.pack ?? true\n\n const errors = await packagePublint({\n exclude, fix, pack: shouldPack, pkgDir: ws.location, verbose,\n })\n results[i] = { errors, output }\n } catch (ex) {\n output.push(chalk.red(`Publint failed for ${ws.name}: ${(ex as Error).message}\\n`))\n results[i] = { errors: 1, output }\n }\n })\n },\n )\n\n let totalErrors = 0\n for (const { errors, output } of results) {\n for (const line of output) {\n process.stdout.write(line)\n }\n totalErrors += errors\n }\n\n // Check internal peerDependencies use semver ranges (not workspace: protocol)\n const allExclude = resolveExclude({}, cliExclude, cliInclude) ?? new Set<PublintCheckName>()\n if (!allExclude.has('peerDeps')) {\n const cwd = INIT_CWD()\n const peerResult = checkInternalPeerVersions(cwd, workspaces)\n if (peerResult.fixable.length > 0) {\n if (fix) {\n fixInternalPeerVersions(cwd, workspaces)\n runInstall()\n } else {\n for (const msg of peerResult.fixable) {\n console.log(chalk.red(` āœ— ${msg} (fixable)`))\n }\n totalErrors += peerResult.fixable.length\n }\n }\n totalErrors += peerResult.errors.length\n }\n\n logPublintSummary(workspaces.length, totalErrors, performance.now() - start)\n return totalErrors\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { syncInternalPeerVersions } from './package-lint-deps.ts'\n\nexport const publish = () => {\n syncInternalPeerVersions()\n const pm = getPackageManager()\n return runSteps('Publish', [pm.publish()])\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const test = () => {\n const pm = getPackageManager()\n return runSteps('Test', [[pm.command, 'react-scripts test']])\n}\n","import { generateReadmeFiles, loadConfig } from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeGenParams {\n jobs: number\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nexport async function readmeGen({\n jobs, pkg, templatePath, typedoc, verbose,\n}: ReadmeGenParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n return await generateReadmeFiles({\n jobs,\n logoLinkUrl: config.readme?.logoLinkUrl,\n logoUrl: config.readme?.logoUrl,\n pkg,\n templatePath,\n typedoc,\n verbose,\n })\n}\n","import {\n applyLogoConfig, DEFAULT_README_TEMPLATE, loadConfig, resolveTemplatePath, scaffoldTemplate,\n} from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeInitParams {\n templatePath?: string\n verbose?: boolean\n}\n\nexport async function readmeInit({ templatePath }: ReadmeInitParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n const template = applyLogoConfig(DEFAULT_README_TEMPLATE, config.readme?.logoUrl, config.readme?.logoLinkUrl)\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n await scaffoldTemplate(resolvedTemplatePath, template)\n return 0\n}\n","import { existsSync, readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD, resolveTemplatePath } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\ninterface ReadmeLintResult {\n errors: string[]\n warnings: string[]\n}\n\nfunction lintTemplate(cwd: string): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const templatePath = resolveTemplatePath()\n\n if (!existsSync(templatePath)) {\n result.errors.push('Missing .xy/README.template.md (run \"xy readme init\" to create)')\n return result\n }\n\n const template = readFileSync(templatePath, 'utf8')\n\n if (!template.includes('{{body}}')) {\n result.warnings.push('.xy/README.template.md does not contain a {{body}} placeholder')\n }\n if (!template.includes('{{description}}')) {\n result.warnings.push('.xy/README.template.md does not contain a {{description}} placeholder')\n }\n\n const bodyPath = PATH.join(cwd, '.xy', 'README.body.md')\n if (!existsSync(bodyPath)) {\n result.errors.push('Missing .xy/README.body.md (run \"xy readme init\" to create)')\n }\n\n return result\n}\n\nfunction lintLogoConfig(cwd: string, config: XyConfig): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const templatePath = resolveTemplatePath()\n\n if (existsSync(templatePath)) {\n const template = readFileSync(templatePath, 'utf8')\n const logoRef = /\\[logo]: (.+)/.exec(template)\n if (logoRef?.[1].includes('example.com')) {\n result.warnings.push('.xy/README.template.md still has the example.com logo placeholder — update it or set readme.logoUrl in xy.config.ts')\n } else if (!logoRef && !config.readme?.logoUrl) {\n result.warnings.push('No logo URL configured in xy.config.ts (readme.logoUrl) or template')\n }\n }\n\n if (!config.readme?.logoUrl && !config.readme?.logoLinkUrl) {\n result.warnings.push('No readme.logoUrl or readme.logoLinkUrl configured in xy.config.ts')\n }\n\n return result\n}\n\nfunction lintPackages(cwd: string): ReadmeLintResult {\n const result: ReadmeLintResult = { errors: [], warnings: [] }\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n\n for (const { location, name } of workspaces) {\n if (location === '.') continue\n\n const pkgPath = PATH.join(cwd, location, 'package.json')\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n\n if (pkg.private) continue\n\n if (!pkg.description) {\n result.warnings.push(`${name} is missing a \"description\" in package.json`)\n }\n\n const readmePath = PATH.join(cwd, location, 'README.md')\n if (!existsSync(readmePath)) {\n result.errors.push(`${name} is missing README.md`)\n }\n } catch {\n // skip unreadable packages\n }\n }\n\n return result\n}\n\nexport interface ReadmeLintParams {\n config: XyConfig\n verbose?: boolean\n}\n\nexport function readmeLint({ config, verbose }: ReadmeLintParams): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Readme Lint'))\n\n const checks = [\n lintTemplate(cwd),\n lintLogoConfig(cwd, config),\n lintPackages(cwd),\n ]\n\n let errorCount = 0\n let warningCount = 0\n\n for (const { errors, warnings } of checks) {\n for (const error of errors) {\n console.log(chalk.red(` āœ— ${error}`))\n errorCount++\n }\n for (const warning of warnings) {\n console.log(chalk.yellow(` ⚠ ${warning}`))\n warningCount++\n }\n }\n\n if (errorCount === 0 && warningCount === 0) {\n console.log(chalk.green(' All checks passed'))\n } else {\n if (verbose) {\n console.log(chalk.gray(` ${errorCount} error(s), ${warningCount} warning(s)`))\n }\n }\n\n return errorCount > 0 ? 1 : 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RebuildParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nexport const rebuild = ({ target }: RebuildParams) => {\n const pm = getPackageManager()\n return runSteps('Rebuild', [\n pm.runXy(['clean']),\n pm.runXy(target ? ['build', '-t', target] : ['build']),\n ])\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RecompileParams {\n incremental?: boolean\n jobs: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport interface RecompilePackageParams {\n pkg: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const recompile = async ({\n incremental, jobs, pkg, target, verbose,\n}: RecompileParams) => {\n return pkg\n ? await recompilePackage({ pkg, target })\n : await recompileAll({\n incremental, jobs, target, verbose,\n })\n}\n\nexport const recompilePackage = ({ target, pkg }: RecompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runStepsAsync(\n `Recompile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-recompile', targetOptions)],\n )\n}\n\nexport const recompileAll = async ({\n jobs, verbose, target, incremental,\n}: RecompileParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n const foreachOptions = {\n incremental, jobs, topological: true, verbose,\n }\n\n return runStepsAsync(`Recompile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-clean', targetOptions, foreachOptions),\n pm.foreachWorkspace('package-compile', targetOptions, foreachOptions),\n ])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { packmanClean } from './packman/index.ts'\n\nexport const reinstall = (verbose?: boolean): number => {\n const cleanResult = packmanClean({ verbose })\n if (cleanResult !== 0) return cleanResult\n\n const pm = getPackageManager()\n return runSteps('Reinstall', [pm.install()])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\nimport { lintNext } from './lintNext.ts'\n\nexport interface RelintParams {\n cache?: boolean\n fix?: boolean\n incremental?: boolean\n jobs: number\n next?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface RelintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const relintPackage = ({\n pkg, fix, verbose,\n}: { fix?: boolean; pkg: string; verbose?: boolean }) => {\n const pm = getPackageManager()\n return runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n}\n\nexport const relint = ({\n fix, jobs, next, pkg, verbose,\n}: RelintParams): number | Promise<number> => {\n if (next) {\n return lintNext({\n cache: false, fix, jobs, pkg, verbose,\n })\n }\n return pkg === undefined\n ? relintAllPackages({ fix })\n : relintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const relintAllPackages = ({ fix = false }: { fix?: boolean } = {}) => {\n const fixOptions = fix ? ['--fix'] : []\n return runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', fixOptions],\n ])\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { fillTemplate, loadRepoTemplateFiles } from '../lib/index.ts'\n\nexport interface RepoInitParams {\n description: string\n githubOrg?: string\n name?: string\n packageName?: string\n pm: 'pnpm' | 'yarn'\n scope: string\n skipGit?: boolean\n skipInstall?: boolean\n template: string\n verbose?: boolean\n}\n\nfunction askQuestion(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.trim())\n })\n })\n}\n\nfunction getConfigVersion(): string {\n const require = createRequire(import.meta.url)\n const pkgPath = require.resolve('@xylabs/ts-scripts-common/package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, string>\n return pkg.version.replace(/\\.\\d+$/, '')\n}\n\nfunction mapOutputPath(relativePath: string, variables: Record<string, string>): string | undefined {\n let result = relativePath\n\n // Strip .tmpl suffix\n if (result.endsWith('.tmpl')) {\n result = result.slice(0, -5)\n }\n\n // Map gitignore -> .gitignore\n if (result === 'gitignore') {\n result = '.gitignore'\n }\n\n // Map github/ -> .github/\n if (result.startsWith('github/')) {\n result = `.${result}`\n }\n\n // Replace __packageName__ in paths\n result = result.replaceAll('__packageName__', variables.packageName)\n\n return result\n}\n\nfunction isPmSpecificFile(relativePath: string, pm: string): boolean {\n // Skip pnpm-workspace.yaml for yarn\n if (relativePath === 'pnpm-workspace.yaml' && pm === 'yarn') return true\n\n // PM-specific build files: build-pnpm.yml.tmpl vs build-yarn.yml.tmpl\n if (relativePath.includes('build-pnpm') && pm !== 'pnpm') return true\n if (relativePath.includes('build-yarn') && pm !== 'yarn') return true\n\n return false\n}\n\nfunction mapBuildWorkflowName(outputPath: string): string {\n // build-pnpm.yml -> build.yml, build-yarn.yml -> build.yml\n return outputPath.replace(/build-(pnpm|yarn)\\.yml/, 'build.yml')\n}\n\nfunction buildVariables(params: {\n description: string\n githubOrg: string\n packageName: string\n pm: 'pnpm' | 'yarn'\n projectName: string\n scope: string\n}): Record<string, string> {\n const {\n description, githubOrg, packageName, pm, projectName, scope,\n } = params\n const identifierName = packageName.replaceAll(/-([a-z])/g, (_, c: string) => c.toUpperCase())\n const pmPackage = pm === 'pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n return {\n configVersion: getConfigVersion(),\n description,\n githubOrg,\n identifierName,\n npmScope: scope,\n packageName,\n pmName: pm,\n pmPackage,\n projectName,\n }\n}\n\nfunction ensureEmptyDir(projectDir: string, name: string): boolean {\n if (existsSync(projectDir)) {\n const entries = readdirSync(projectDir)\n if (entries.length > 0) {\n console.error(chalk.red(`Directory '${name}' already exists and is not empty`))\n return false\n }\n }\n mkdirSync(projectDir, { recursive: true })\n return true\n}\n\nfunction scaffoldFiles(\n templateName: string,\n layer: 'package' | 'root',\n outputDir: string,\n pm: string,\n variables: Record<string, string>,\n verbose?: boolean,\n): number {\n const files = loadRepoTemplateFiles(templateName, layer)\n let count = 0\n for (const file of files) {\n if (isPmSpecificFile(file.relativePath, pm)) continue\n const content = fillTemplate(file.content, variables)\n let outputPath = mapOutputPath(file.relativePath, variables)\n if (!outputPath) continue\n if (layer === 'root') outputPath = mapBuildWorkflowName(outputPath)\n\n const fullPath = PATH.resolve(outputDir, outputPath)\n mkdirSync(PATH.dirname(fullPath), { recursive: true })\n writeFileSync(fullPath, content)\n count++\n if (verbose) console.log(chalk.gray(` ${layer === 'root' ? outputPath : `packages/${variables.packageName}/${outputPath}`}`))\n }\n return count\n}\n\nfunction initGitRepo(projectDir: string, verbose?: boolean): void {\n if (verbose) console.log(chalk.gray('Initializing git repository...'))\n const result = spawnSync('git', ['init', '-b', 'main'], {\n cwd: projectDir,\n stdio: verbose ? 'inherit' : 'pipe',\n })\n if (result.status === 0) {\n console.log(chalk.green('Initialized git repository'))\n } else {\n console.warn(chalk.yellow('git init failed, skipping'))\n }\n}\n\nfunction installDependencies(projectDir: string, pm: string): boolean {\n console.log(chalk.gray(`Running ${pm} install...`))\n const result = spawnSync(pm, ['install'], {\n cwd: projectDir,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.warn(chalk.yellow(`${pm} install failed`))\n return false\n }\n console.log(chalk.green('Dependencies installed'))\n return true\n}\n\nexport async function repoInit(params: RepoInitParams): Promise<number> {\n const {\n description, pm, scope, skipGit, skipInstall, template, verbose,\n } = params\n\n let name = params.name\n if (!name) {\n name = await askQuestion(chalk.cyan('Project name: '))\n if (!name) {\n console.error(chalk.red('Project name is required'))\n return 1\n }\n }\n\n const projectName = PATH.basename(name)\n const packageName = params.packageName ?? projectName\n const githubOrg = params.githubOrg ?? scope.replace(/^@/, '')\n\n const variables = buildVariables({\n description, githubOrg, packageName, pm, projectName, scope,\n })\n\n if (verbose) {\n console.log(chalk.gray('Template variables:'))\n for (const [key, value] of Object.entries(variables)) {\n console.log(chalk.gray(` ${key}: ${value}`))\n }\n }\n\n const projectDir = PATH.resolve(process.cwd(), name)\n if (!ensureEmptyDir(projectDir, name)) return 1\n\n const rootCount = scaffoldFiles(template, 'root', projectDir, pm, variables, verbose)\n const pkgDir = PATH.resolve(projectDir, 'packages', packageName)\n const pkgCount = scaffoldFiles(template, 'package', pkgDir, pm, variables, verbose)\n console.log(chalk.green(`Scaffolded ${rootCount + pkgCount} files into ${name}/`))\n\n if (!skipGit) initGitRepo(projectDir, verbose)\n if (!skipInstall && !installDependencies(projectDir, pm)) return 1\n\n console.log('')\n console.log(chalk.cyan(`Project ${name} created successfully!`))\n console.log('')\n console.log(chalk.gray('Next steps:'))\n console.log(chalk.gray(` cd ${name}`))\n if (skipInstall) console.log(chalk.gray(` ${pm} install`))\n console.log(chalk.gray(` ${pm} xy build`))\n\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RetestParams {\n target?: string\n}\n\nexport const retest = ({ target }: RetestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Re-Test [${target}]`, [\n pm.runInWorkspace(target, 'vitest', ['--clearCache']),\n pm.runInWorkspace(target, 'vitest', ['.']),\n ])\n }\n const path = target ?? '.'\n return runSteps('Re-Test', [\n ['vitest', ['--clearCache']],\n ['vitest', [path]],\n ])\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\n\nexport const sitemap = () => {\n return runSteps('Sitemap', [['ts-node-script', './scripts/sitemap.ts']])\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['eslint', ['-c', 'sonar.eslintrc', '.']]])\n}\n","#!/usr/bin/env node\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const start = () => {\n const pm = getPackageManager()\n return runSteps('Start', [[pm.command, 'react-scripts start']])\n}\n","import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nconst DefaultDependencies = ['axios', '@xylabs/pixel', 'react', 'graphql', 'react-router', '@mui/material', '@mui/system']\n\nexport const statics = () => {\n console.log(chalk.green('Check Required Static Dependencies'))\n\n const pkg = parsedPackageJSON()\n const xy = pkg?.xy as Record<string, unknown> | undefined\n const deps = xy?.deps as Record<string, unknown> | undefined\n const staticsValue = deps?.statics as string[] | undefined\n\n return detectDuplicateDependencies(staticsValue, DefaultDependencies)\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface TestParams {\n target?: string\n}\n\nexport const test = ({ target }: TestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, 'vitest', ['.'])])\n }\n const path = target ?? '.'\n return runSteps('Test', [['vitest', [path]]])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const up = () => {\n const pm = getPackageManager()\n return runSteps('Up', [pm.outdated()])\n}\n","import { runUpdo } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const updo = async ({ latest = true }: { latest?: boolean } = {}): Promise<number> => {\n const pm = getPackageManager()\n return await runUpdo(pm, { latest })\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const updateYarnPlugins = () => {\n return runSteps('Update Yarn Plugins', [\n ['yarn', ['plugin', 'import', 'https://mskelton.dev/yarn-outdated/v3']],\n ['yarn', ['plugin', 'import', 'version']],\n ['yarn', ['plugin', 'import', 'interactive-tools']],\n ['yarn', ['plugin', 'import', 'workspace-tools']],\n ])\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const updateYarnVersion = () => {\n return runSteps('Update Yarn Version', [['yarn', ['set', 'version', 'latest']]])\n}\n","import { isYarnVersionOrGreater, processEx } from '../lib/index.ts'\n\nexport const yarn3Only = () => {\n const [valid, version] = isYarnVersionOrGreater(3)\n if (!valid) {\n processEx(`Invalid Yarn version [${version}]`)\n }\n return 0\n}\n","import { readFile } from 'node:fs/promises'\n\nimport type { PackageJson } from 'types-package-json'\n\nimport { INIT_CWD } from './lib/index.ts'\n\nexport type PackageJsonEx = PackageJson & { type: 'module' | 'commonjs' }\n\nexport const loadPackageConfig = async () => {\n const pkg = INIT_CWD()\n\n const pkgConfig = await readFile(`${pkg}/package.json`, { encoding: 'utf8' })\n\n return JSON.parse(pkgConfig) as PackageJsonEx\n}\n","import type { CommandModule } from 'yargs'\n\nimport { build } from '../../actions/index.ts'\n\nexport const buildCommand: CommandModule = {\n command: 'build [package]',\n describe: 'Build - Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to build' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Building: ${argv.package ?? 'all'}`)\n }\n\n process.exitCode = await build({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileCommand: CommandModule = {\n command: 'compile [package]',\n describe: 'Compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileOnlyCommand: CommandModule = {\n command: 'compile-only [package]',\n describe: 'Compile with Typescript & Copy Images (No Publint)',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n publint: false,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { copyAssets } from '../../actions/index.ts'\n\nexport const copyAssetsCommand: CommandModule = {\n command: 'copy-assets [package]',\n describe: 'Copy Assets - Copy the assets from src to dist',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to copy assets' })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log(`Copying Assets: ${argv.package ?? 'all'}`)\n process.exitCode = await copyAssets({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { rebuild } from '../../actions/index.ts'\n\nexport const rebuildCommand: CommandModule = {\n command: 'rebuild [package]',\n describe: 'Rebuild - Clean, Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to rebuild' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Rebuilding: ${argv.package ?? 'all'}`)\n process.exitCode = rebuild({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { recompile } from '../../actions/index.ts'\n\nexport const recompileCommand: CommandModule = {\n command: 'recompile [package]',\n describe: 'Re-compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to re-compile' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Re-compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = await recompile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { buildCommand } from './buildCommand.ts'\nimport { compileCommand } from './compileCommand.ts'\nimport { compileOnlyCommand } from './compileOnlyCommand.ts'\nimport { copyAssetsCommand } from './copyAssetsCommand.ts'\nimport { rebuildCommand } from './rebuildCommand.ts'\nimport { recompileCommand } from './recompileCommand.ts'\n\nexport const xyBuildCommands = (args: Argv) => {\n return args\n .command(buildCommand)\n .command(compileCommand)\n .command(compileOnlyCommand)\n .command(recompileCommand)\n .command(rebuildCommand)\n .command(copyAssetsCommand)\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport type { XyConfig } from '../../actions/index.ts'\nimport {\n gitlint, gitlintFix, lintlint, packageLintMonorepo, publint, readmeLint,\n} from '../../actions/index.ts'\nimport { loadConfig } from '../../lib/index.ts'\n\nexport const checkCommand: CommandModule = {\n command: 'check',\n describe: 'Check - Run gitlint, publint, repo lint, lintlint, and readme lint',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n const verbose = !!argv.verbose\n const fix = !!argv.fix\n const jobs = argv.jobs as number\n let errors = 0\n\n if (verbose) console.log('Check')\n\n console.log(chalk.blue('\\n— gitlint —'))\n errors += fix ? gitlintFix() : gitlint()\n\n console.log(chalk.blue('\\n— publint —'))\n errors += await publint({\n fix, jobs, verbose,\n })\n\n console.log(chalk.blue('\\n— repo lint —'))\n errors += packageLintMonorepo(fix)\n\n console.log(chalk.blue('\\n— lintlint —'))\n errors += await lintlint({ fix, verbose })\n\n console.log(chalk.blue('\\n— readme lint —'))\n const config = await loadConfig<XyConfig>()\n errors += readmeLint({ config, verbose })\n\n if (errors > 0) {\n console.log(chalk.red(`${errors} issue(s) found`))\n } else {\n console.log(chalk.green('All checks passed'))\n }\n process.exitCode = errors > 0 ? 1 : 0\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCheck } from '../../../actions/index.ts'\n\nexport const checkCommand: CommandModule = {\n command: 'check',\n describe: 'Check if Claude configuration is up to date with templates',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Check')\n process.exitCode = claudeCheck()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove all Claude configuration files from the repo',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Clean')\n process.exitCode = claudeClean()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCommands } from '../../../actions/index.ts'\n\nexport const commandsCommand: CommandModule = {\n command: 'commands',\n describe: 'Sync XY Labs standard Claude slash commands to .claude/commands/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Commands')\n process.exitCode = claudeCommands()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { SettingsLevel } from '../../../actions/index.ts'\nimport {\n claudeCommands, claudeRules, claudeSettings, claudeSkills,\n} from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n .option('level', {\n choices: ['restrictive', 'permissive'] as const,\n default: 'permissive',\n description: 'Permission level for settings (restrictive omits node, python3, claude, sed, xargs, tee)',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize all Claude configuration (commands, rules, skills, settings)',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Init')\n const commandsResult = claudeCommands()\n const rulesResult = claudeRules({ force: argv.force as boolean | undefined })\n const skillsResult = claudeSkills()\n const settingsResult = await claudeSettings({ level: argv.level as SettingsLevel })\n process.exitCode = commandsResult || rulesResult || skillsResult || settingsResult\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeRules } from '../../../actions/index.ts'\n\nexport const rulesCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'rules',\n describe: 'Sync XY Labs standard Claude rules to .claude/rules/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Rules')\n process.exitCode = claudeRules({ force: argv.force as boolean | undefined })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { SettingsLevel } from '../../../actions/index.ts'\nimport { claudeSettings } from '../../../actions/index.ts'\n\nexport const settingsCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('level', {\n choices: ['restrictive', 'permissive'] as const,\n default: 'permissive',\n description: 'Permission level (restrictive omits node, python3, claude, sed, xargs, tee)',\n type: 'string',\n })\n },\n command: 'settings',\n describe: 'Initialize .claude/settings.local.json with XY Labs defaults',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Settings')\n process.exitCode = await claudeSettings({ level: argv.level as SettingsLevel })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSkills } from '../../../actions/index.ts'\n\nexport const skillsCommand: CommandModule = {\n builder: yargs => yargs,\n command: 'skills',\n describe: 'Sync XY Labs standard Claude skills to .claude/skills/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Skills')\n process.exitCode = claudeSkills()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { checkCommand } from './checkCommand.ts'\nimport { cleanCommand } from './cleanCommand.ts'\nimport { commandsCommand } from './commandsCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { rulesCommand } from './rulesCommand.ts'\nimport { settingsCommand } from './settingsCommand.ts'\nimport { skillsCommand } from './skillsCommand.ts'\n\nexport const claudeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(checkCommand)\n .command(cleanCommand)\n .command(commandsCommand)\n .command(initCommand)\n .command(rulesCommand)\n .command(settingsCommand)\n .command(skillsCommand)\n .demandCommand(1, 'Please specify a claude subcommand')\n .strictCommands()\n },\n command: 'claude',\n describe: 'Claude - Claude Code configuration utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanDocs } from '../../actions/index.ts'\n\nexport const cleanDocsCommand: CommandModule = {\n command: 'clean-docs',\n describe: 'CleanDocs - Clean TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log('Cleaning TypeDocs: all')\n process.exitCode = cleanDocs()\n },\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target', type: 'string' })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dead } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deadCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'dead [package]',\n describe: 'Dead - Check for dead code',\n handler: (argv) => {\n if (argv.verbose) console.log('Dead')\n process.exitCode = dead()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genDocs } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const genDocsCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'gen-docs [package]',\n describe: 'GenDocs - Generate TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log(`Generating TypeDocs: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = genDocs({\n incremental: !!argv.incremental, jobs: argv.jobs as number, pkg: argv.package as string,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitignore } from '../../actions/index.ts'\n\nexport const gitignoreCommand: CommandModule = {\n command: 'gitignore',\n describe: 'GitIgnore - Generate root .gitignore and remove package .gitignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('GitIgnore')\n process.exitCode = gitignore()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitlint, gitlintFix } from '../../actions/index.ts'\n\nexport const gitlintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix git config issues',\n type: 'boolean',\n })\n },\n command: 'gitlint',\n describe: 'Gitlint - Lint your git config',\n handler: (argv) => {\n if (argv.verbose) console.log('Gitlint')\n process.exitCode = argv.fix ? gitlintFix() : gitlint()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { license } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const licenseCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'license [package]',\n describe: 'License - Check licenses of dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log(`License: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = await license()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { npmignoreGen } from '../../actions/index.ts'\n\nexport const npmignoreGenCommand: CommandModule = {\n command: 'npmignore-gen',\n describe: 'NpmIgnore Gen - Generate .npmignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('NpmIgnore Gen')\n process.exitCode = npmignoreGen()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan Clean')\n process.exitCode = orphanClean({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanList } from '../../../actions/index.ts'\n\nexport const listCommand: CommandModule = {\n command: 'list',\n describe: 'List orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan List')\n process.exitCode = orphanList({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { listCommand } from './listCommand.ts'\n\nexport const orphanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(listCommand)\n .command(cleanCommand)\n .demandCommand(1, 'Please specify an orphan subcommand')\n .strictCommands()\n },\n command: 'orphan',\n describe: 'Orphan - Detect and clean orphaned build artifacts',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport {\n convert, packmanClean, packmanLint,\n} from '../../actions/index.ts'\n\nconst convertCommand: CommandModule = {\n command: 'convert <target>',\n describe: 'Convert repo to a different package manager (pnpm or yarn)',\n builder: (yargs) => {\n return yargs.positional('target', {\n choices: ['pnpm', 'yarn'] as const,\n describe: 'Target package manager',\n type: 'string',\n })\n },\n handler: (argv) => {\n process.exitCode = convert({\n target: argv.target as string,\n verbose: !!argv.verbose,\n })\n },\n}\n\nconst cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove node_modules and lock files for a clean install',\n handler: (argv) => {\n process.exitCode = packmanClean({ verbose: !!argv.verbose })\n },\n}\n\nconst lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check package manager configuration settings',\n builder: (yargs) => {\n return yargs.option('fix', {\n alias: 'f',\n default: false,\n description: 'Auto-fix configuration issues',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n process.exitCode = await packmanLint({\n fix: !!argv.fix,\n verbose: !!argv.verbose,\n })\n },\n}\n\nexport const packmanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(cleanCommand)\n .command(convertCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a packman subcommand')\n .strictCommands()\n },\n command: 'packman',\n describe: 'Package Manager - Configuration and conversion utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeGen } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const genCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n .option('notypedoc', {\n default: false,\n description: 'Disable TypeDoc reference sections',\n type: 'boolean',\n })\n },\n aliases: ['$0'],\n command: 'gen [package]',\n describe: 'Generate README.md files from template',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Gen')\n process.exitCode = await readmeGen({\n jobs: argv.jobs as number,\n pkg: argv.package as string | undefined,\n templatePath: argv.template as string | undefined,\n typedoc: !argv.notypedoc,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize README template and logo files',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Init')\n process.exitCode = await readmeInit({\n templatePath: argv.template as string | undefined,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { XyConfig } from '../../../actions/index.ts'\nimport { readmeLint } from '../../../actions/index.ts'\nimport { loadConfig } from '../../../lib/index.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check for missing readme templates, body files, logos, and descriptions',\n handler: async (argv) => {\n const config = await loadConfig<XyConfig>()\n process.exitCode = readmeLint({ config, verbose: !!argv.verbose })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genCommand } from './genCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\n\nexport const readmeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(genCommand)\n .command(initCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a readme subcommand')\n .strictCommands()\n },\n command: 'readme',\n describe: 'Readme - README file utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { repoInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n command: 'init <template> [name]',\n describe: 'Scaffold a new monorepo from a template',\n builder: (yargs) => {\n return yargs\n .positional('template', {\n choices: ['cli'] as const,\n describe: 'Template to use',\n type: 'string',\n })\n .positional('name', {\n describe: 'Project name (also used as directory name)',\n type: 'string',\n })\n .option('scope', {\n default: '@xylabs',\n describe: 'npm scope for packages',\n type: 'string',\n })\n .option('package', {\n describe: 'Package name within the monorepo (defaults to project name)',\n type: 'string',\n })\n .option('description', {\n default: '',\n describe: 'Project description',\n type: 'string',\n })\n .option('github-org', {\n describe: 'GitHub organization (derived from scope if not set)',\n type: 'string',\n })\n .option('pm', {\n choices: ['pnpm', 'yarn'] as const,\n default: 'pnpm',\n describe: 'Package manager to configure',\n type: 'string',\n })\n .option('skip-install', {\n default: false,\n describe: 'Skip dependency installation after scaffolding',\n type: 'boolean',\n })\n .option('skip-git', {\n default: false,\n describe: 'Skip git init after scaffolding',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Repo Init')\n process.exitCode = await repoInit({\n description: argv.description as string,\n githubOrg: argv['github-org'] as string | undefined,\n name: argv.name as string | undefined,\n packageName: argv.package as string | undefined,\n pm: argv.pm as 'pnpm' | 'yarn',\n scope: argv.scope as string,\n skipGit: !!argv.skipGit,\n skipInstall: !!argv.skipInstall,\n template: argv.template as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { packageLintMonorepo } from '../../../actions/index.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint',\n describe: 'Check monorepo package structure',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Repo Lint')\n process.exitCode = packageLintMonorepo(!!argv.fix)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { initCommand } from './initCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\n\nexport const repoCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(initCommand)\n .command(lintCommand)\n .demandCommand(1, 'Please specify a repo subcommand')\n .strictCommands()\n },\n command: 'repo',\n describe: 'Repo - Repository structure utilities',\n handler: () => { /* parent command — no-op */ },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { retest } from '../../actions/index.ts'\n\nexport const retestCommand: CommandModule = {\n command: 'retest [target]',\n describe: 'Re-Test - Run Vitest Tests with cleaned cache',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Re-Testing: ${(argv.target as string | undefined) ?? 'all'}`)\n process.exitCode = retest({ target: argv.target as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { test } from '../../actions/index.ts'\n\nexport const testCommand: CommandModule = {\n command: 'test [target]',\n describe: 'Test - Run Vitest Tests',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Testing: ${(argv.target as string | undefined) ?? 'all'}`)\n process.exitCode = test({ target: argv.target as string })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { checkCommand } from './checkCommand.ts'\nimport { claudeCommand } from './claude/index.ts'\nimport { cleanDocsCommand } from './cleanDocsCommand.ts'\nimport { deadCommand } from './deadCommand.ts'\nimport { genDocsCommand } from './genDocsCommand.ts'\nimport { gitignoreCommand } from './gitignoreCommand.ts'\nimport { gitlintCommand } from './gitlintCommand.ts'\nimport { licenseCommand } from './licenseCommand.ts'\nimport { npmignoreGenCommand } from './npmignoreGenCommand.ts'\nimport { orphanCommand } from './orphan/index.ts'\nimport { packmanCommand } from './packmanCommand.ts'\nimport { readmeCommand } from './readme/index.ts'\nimport { repoCommand } from './repo/index.ts'\nimport { retestCommand } from './retestCommand.ts'\nimport { testCommand } from './testCommand.ts'\n\nexport const xyCommonCommands = (args: Argv) => {\n return args\n .command(checkCommand)\n .command(claudeCommand)\n .command(licenseCommand)\n .command(deadCommand)\n .command(genDocsCommand)\n .command(cleanDocsCommand)\n .command(gitlintCommand)\n .command(gitignoreCommand)\n .command(npmignoreGenCommand)\n .command(orphanCommand)\n .command(packmanCommand)\n .command(readmeCommand)\n .command(repoCommand)\n .command(retestCommand)\n .command(testCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport type { DeployLevel } from '../../actions/index.ts'\nimport { deploy } from '../../actions/index.ts'\n\nconst VALID_LEVELS: DeployLevel[] = ['patch', 'minor', 'major', 'prerelease']\n\nexport const deployCommand: CommandModule = {\n command: 'deploy [level]',\n describe: 'Deploy - Version bump, build, and apply (default: patch)',\n builder: (yargs) => {\n return yargs.positional('level', {\n choices: VALID_LEVELS,\n default: 'patch',\n describe: 'Semver bump level',\n type: 'string',\n })\n },\n handler: (argv) => {\n const level = (argv.level as DeployLevel) ?? 'patch'\n if (argv.verbose) console.log(`Deploy ${level}`)\n process.exitCode = deploy(level)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { publish } from '../../actions/index.ts'\n\nexport const publishCommand: CommandModule = {\n command: 'publish',\n describe: 'Publish - Publish packages to npmjs',\n handler: (argv) => {\n if (argv.verbose) console.log('Publish packages to npmjs')\n process.exitCode = publish()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { deployCommand } from './deployCommand.ts'\nimport { publishCommand } from './publishCommand.ts'\n\nexport const xyDeployCommands = (args: Argv) => {\n return args\n .command(deployCommand)\n .command(publishCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { clean } from '../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean [package]',\n describe: 'Clean',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to clean' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Cleaning: ${(argv.package as string | undefined) ?? 'all'}`)\n }\n process.exitCode = await clean({\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dupdeps } from '../../actions/index.ts'\n\nexport const dupdepsCommand: CommandModule = {\n command: 'dupdeps',\n describe: 'Dupdeps - Duplicate Dependencies in package.json',\n handler: (argv) => {\n if (argv.verbose) console.log('Dupdeps')\n process.exitCode = dupdeps()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { reinstall } from '../../actions/index.ts'\n\nexport const reinstallCommand: CommandModule = {\n command: 'reinstall',\n describe: 'Reinstall - Clean & Install',\n handler: (argv) => {\n process.exitCode = reinstall(!!argv.verbose)\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { statics } from '../../actions/index.ts'\n\nexport const staticsCommand: CommandModule = {\n command: 'statics',\n describe: 'Statics - Confirming Static Packages',\n handler: (argv) => {\n if (argv.verbose) console.log('Statics')\n process.exitCode = statics()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { up } from '../../actions/index.ts'\n\nexport const upCommand: CommandModule = {\n command: 'up',\n describe: 'Up - Update dependencies',\n handler: (argv) => {\n if (argv.verbose) console.log('Up')\n process.exitCode = up()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { updo } from '../../actions/index.ts'\n\nexport const updoCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('latest', {\n default: true,\n description: 'Ignore version ranges and update to latest versions',\n type: 'boolean',\n })\n },\n command: 'updo',\n describe: 'Updo - Update dependencies [Interactive]',\n handler: async (argv) => {\n if (argv.verbose) console.log('Updo')\n process.exitCode = await updo({ latest: argv.latest as boolean })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { dupdepsCommand } from './dupdepsCommand.ts'\nimport { reinstallCommand } from './reinstallCommand.ts'\nimport { staticsCommand } from './staticsCommand.ts'\nimport { upCommand } from './upCommand.ts'\nimport { updoCommand } from './updoCommand.ts'\n\nexport const xyInstallCommands = (args: Argv) => {\n return args\n .command(cleanCommand)\n .command(reinstallCommand)\n .command(upCommand)\n .command(updoCommand)\n .command(staticsCommand)\n .command(dupdepsCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cycle } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const cycleCommand: CommandModule = {\n command: 'cycle [package]',\n describe: 'Cycle - Check for dependency cycles',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Cycle')\n process.exitCode = await cycle({ jobs: argv.jobs as number, pkg: argv.package as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { deplint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deplintCommand: CommandModule = {\n command: 'deplint [package]',\n describe: 'Deplint - Run Deplint',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('deps', {\n alias: 'd',\n default: false,\n description: 'Check dependencies',\n type: 'boolean',\n })\n .option('devDeps', {\n alias: 'v',\n default: false,\n description: 'Check devDependencies',\n type: 'boolean',\n })\n .option('peerDeps', {\n alias: 'p',\n default: true,\n description: 'Check peerDependencies',\n type: 'boolean',\n })\n .option('exclude', {\n alias: 'e',\n description: 'Package names to exclude from unused checks (comma-separated or repeated)',\n type: 'array',\n })\n .option('fix', {\n alias: 'f',\n default: false,\n description: 'Fix unsatisfied peer dependencies by adding them to package.json',\n type: 'boolean',\n })\n .option('format', {\n choices: ['human', 'json'],\n default: 'human',\n description: 'Output format',\n type: 'string',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Deplint')\n // Flatten comma-separated values so both --exclude a,b and --exclude a --exclude b work\n const cliExclude = (argv.exclude as string[] | undefined)\n ?.flatMap(v => String(v).split(','))\n .map(v => v.trim())\n .filter(Boolean)\n process.exitCode = await deplint({\n cliExclude, pkg: argv.package as string, deps: !!argv.deps, devDeps: !!argv.devDeps, fix: !!argv.fix, format: argv.format as 'human' | 'json', peerDeps: !!argv.peerDeps, verbose: !!argv.verbose,\n })\n },\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport { fix } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const fixCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('cache', {\n alias: 'c',\n default: false,\n description: 'Use caching for performance',\n type: 'boolean',\n })\n .option('next', {\n alias: 'n',\n default: false,\n description: 'Fix per-package (lower memory, parallel)',\n type: 'boolean',\n })\n },\n command: 'fix [package]',\n deprecated: 'Use \"xy lint --fix\" instead',\n describe: 'Fix - Run Eslint w/fix',\n handler: async (argv) => {\n console.warn(chalk.yellow('Deprecated: use \"xy lint --fix\" instead of \"xy fix\"'))\n if (argv.verbose) console.log('Fix')\n process.exitCode = await fix({\n cache: argv.cache as boolean,\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport { knip } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const knipCommand: CommandModule = {\n command: 'knip',\n describe: 'Knip - Run Knip',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Knip')\n const start = Date.now()\n process.exitCode = knip()\n console.log(chalk.blue(`Knip finished in ${Date.now() - start}ms`))\n },\n}\n","import chalk from 'chalk'\nimport type { CommandModule } from 'yargs'\n\nimport { lintInit } from '../../../actions/index.ts'\nimport { initCommand } from './initCommand.ts'\nimport { runCommand } from './runCommand.ts'\n\nexport const lintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(runCommand)\n .command(initCommand)\n .option('init', {\n default: false,\n description: 'Generate eslint.config.ts and add ESLint dependencies',\n hidden: true,\n type: 'boolean',\n })\n },\n command: 'lint',\n describe: 'Lint - Run ESLint',\n handler: async (argv) => {\n if (argv.init) {\n console.warn(chalk.yellow('Deprecated: use \"xy lint init\" instead of \"xy lint --init\"'))\n process.exitCode = await lintInit({ verbose: !!argv.verbose })\n }\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { lintInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n command: 'init',\n describe: 'Generate eslint.config.ts and add ESLint dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log('Lint Init')\n process.exitCode = await lintInit({ verbose: !!argv.verbose })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { fix, lint } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const runCommand: CommandModule = {\n aliases: ['$0'],\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('fix', {\n alias: 'f',\n default: false,\n description: 'Fix fixable issues',\n type: 'boolean',\n })\n .option('cache', {\n alias: 'c',\n default: false,\n description: 'Use caching for performance',\n type: 'boolean',\n })\n .option('next', {\n alias: 'n',\n default: false,\n description: 'Lint per-package (lower memory, parallel)',\n type: 'boolean',\n })\n },\n command: 'run [package]',\n describe: 'Run ESLint',\n handler: async (argv) => {\n if (argv.verbose) console.log('Lint')\n process.exitCode\n = argv.fix\n ? await fix({\n cache: argv.cache as boolean,\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n : await lint({\n cache: argv.cache as boolean,\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { lintlint } from '../../actions/index.ts'\n\nexport const lintlintCommand: CommandModule = {\n command: 'lintlint',\n describe: 'Lint Lint - Check for redundant or overridden ESLint rules vs shared config',\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Remove redundant rules from local config',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Lint Lint')\n process.exitCode = await lintlint({\n fix: argv.fix as boolean,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { publint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const publintCommand: CommandModule = {\n command: 'publint [package]',\n describe: 'Publint - Run Publint',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('fix', {\n describe: 'Auto-fix issues (e.g. remove \"src\" from files, \"source\" from exports, root-level \"source\"/\"src\" fields)',\n type: 'boolean',\n default: false,\n })\n .option('exclude', {\n alias: 'e',\n description: 'Checks to skip (comma-separated): publint, files, source, rootSource, main, types, module, sideEffects, resolutions, peerDeps',\n type: 'string',\n })\n .option('include', {\n description: 'Only run these checks (comma-separated): publint, files, source, rootSource, main, types, module, sideEffects, resolutions, peerDeps',\n type: 'string',\n })\n .option('pack', {\n description: 'Run pack before publint to verify published files (default: true)',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Publint')\n const parseList = (raw: string | undefined) => raw\n ?.split(',')\n .map(v => v.trim())\n .filter(Boolean)\n process.exitCode = await publint({\n cliExclude: parseList(argv.exclude as string | undefined),\n cliInclude: parseList(argv.include as string | undefined),\n fix: !!argv.fix,\n jobs: argv.jobs as number,\n pack: argv.pack as boolean | undefined,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { relint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const relintCommand: CommandModule = {\n command: 'relint [package]',\n describe: 'Relint - Clean & Lint',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('next', {\n alias: 'n',\n default: false,\n description: 'Relint per-package (lower memory, parallel)',\n type: 'boolean',\n })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log('Relinting')\n process.exitCode = await relint({\n jobs: argv.jobs as number,\n next: argv.next as boolean,\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { sonar } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const sonarCommand: CommandModule = {\n command: 'sonar',\n describe: 'Sonar - Run Sonar Check',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: (argv) => {\n if (argv.verbose) console.log('Sonar Check')\n process.exitCode = sonar()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { cycleCommand } from './cycleCommand.ts'\nimport { deplintCommand } from './deplintCommand.ts'\nimport { fixCommand } from './fixCommand.ts'\nimport { knipCommand } from './knipCommand.ts'\nimport { lintCommand } from './lintCommand.ts'\nimport { lintlintCommand } from './lintlintCommand.ts'\nimport { publintCommand } from './publintCommand.ts'\nimport { relintCommand } from './relintCommand.ts'\nimport { sonarCommand } from './sonarCommand.ts'\n\nexport const xyLintCommands = (args: Argv) => {\n return args\n .command(cycleCommand)\n .command(lintCommand)\n .command(lintlintCommand)\n .command(deplintCommand)\n .command(fixCommand)\n .command(relintCommand)\n .command(publintCommand)\n .command(knipCommand)\n .command(sonarCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { analyze } from '../../actions/index.ts'\n\nexport const analyzeCommand: CommandModule = {\n command: 'analyze',\n describe: 'Analyze - Analyze Bundles',\n handler: (argv) => {\n if (argv.verbose) console.log('Analyzing')\n process.exitCode = analyze()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { eject } from '../../actions/index.ts'\n\nexport const ejectCommand: CommandModule = {\n command: 'eject',\n describe: 'Eject - Eject React project',\n handler: (argv) => {\n if (argv.verbose) console.log('Ejecting')\n process.exitCode = eject()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { sitemap } from '../../actions/index.ts'\n\nexport const sitemapCommand: CommandModule = {\n command: 'sitemap',\n describe: 'Sitemap - Generate sitemap for the project',\n handler: (argv) => {\n if (argv.verbose) console.log('Generating Sitemap')\n process.exitCode = sitemap()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { start } from '../../actions/index.ts'\n\nexport const startCommand: CommandModule = {\n command: 'start',\n describe: 'Start - Start project in browser',\n handler: (argv) => {\n if (argv.verbose) console.log('Starting')\n process.exitCode = start()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { analyzeCommand } from './analyzeCommand.ts'\nimport { ejectCommand } from './ejectCommand.ts'\nimport { sitemapCommand } from './sitemapCommand.ts'\nimport { startCommand } from './startCommand.ts'\n\nexport const xyReactCommands = (args: Argv) => {\n return args\n .command(analyzeCommand)\n .command(ejectCommand)\n .command(sitemapCommand)\n .command(startCommand)\n}\n","import chalk from 'chalk'\nimport type { Argv } from 'yargs'\n\nimport {\n detectPackageManager, detectReact, PnpmPackageManager, registerPackageManager,\n YarnPackageManager,\n} from '../pm/index.ts'\nimport { xyBuildCommands } from './build/index.ts'\nimport { xyCommonCommands } from './common/index.ts'\nimport { xyDeployCommands } from './deploy/index.ts'\nimport { xyInstallCommands } from './install/index.ts'\nimport { xyLintCommands } from './lint/index.ts'\nimport { xyReactCommands } from './react/index.ts'\nimport { xyParseOptions } from './xyParseOptions.ts'\nimport { xyYarnCommands } from './yarn/index.ts'\n\n// Register both PM implementations so getPackageManager() always works\nregisterPackageManager(new YarnPackageManager())\nregisterPackageManager(new PnpmPackageManager())\n\nexport const xyBase = async (plugins?: (args: Argv) => Argv) => {\n const options = xyParseOptions()\n let args = xyBuildCommands(xyCommonCommands(xyLintCommands(options)))\n if (plugins) args = plugins(args)\n return await args\n .demandCommand(1)\n .command('*', '', () => {\n console.error(chalk.yellow(`Command not found [${chalk.magenta(process.argv[2])}]`))\n console.log(chalk.gray('Try \\'xy --help\\' for list of commands'))\n })\n .version()\n .help().argv\n}\n\nexport const xy = async () => {\n const pmName = detectPackageManager()\n\n return await xyBase((args) => {\n let result = xyInstallCommands(xyDeployCommands(args))\n\n if (pmName === 'yarn') {\n result = xyYarnCommands(result)\n }\n\n if (detectReact()) {\n result = xyReactCommands(result)\n }\n\n return result\n })\n}\n","import { availableParallelism } from 'node:os'\n\nimport chalk from 'chalk'\nimport type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport { tryRunLocalScript } from '../lib/index.ts'\nimport { detectPackageManager } from '../pm/index.ts'\n\nfunction formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`\n if (ms < 60_000) return `${(ms / 1000).toFixed(2)}s`\n const minutes = Math.floor(ms / 60_000)\n const seconds = ((ms % 60_000) / 1000).toFixed(1)\n return `${minutes}m ${seconds}s`\n}\n\nlet timerRegistered = false\n\nexport const xyParseOptions = (): Argv => {\n return yargs(hideBin(process.argv))\n .scriptName(`${detectPackageManager() === 'pnpm' ? 'pnpm' : 'yarn'} xy`)\n .middleware((argv) => {\n const commandName = argv._[0] as string\n if (commandName && argv._.length <= 1) {\n const result = tryRunLocalScript(commandName)\n if (result !== undefined) {\n process.exit(result)\n }\n }\n }, true)\n .middleware((argv) => {\n if (!timerRegistered) {\n timerRegistered = true\n const commandName = argv._[0] as string | undefined\n const jobs = argv.jobs as number\n const label = commandName ? ` [${chalk.white(commandName)}]` : ''\n console.log(\n chalk.blue('⬔ XY')\n + label\n + chalk.gray(` [threads: ${jobs}]`),\n )\n const start = Date.now()\n process.on('exit', () => {\n const exitLabel = commandName ? ` [${chalk.white(commandName)}]` : ''\n console.log(chalk.blue(`Finished${exitLabel} in ${formatDuration(Date.now() - start)}`))\n })\n }\n }, true)\n .option('jobs', {\n alias: 'j',\n default: availableParallelism(),\n description: 'Max parallel jobs',\n type: 'number',\n })\n .option('verbose', {\n alias: 'v',\n default: false,\n description: 'Run with verbose logging',\n type: 'boolean',\n })\n .option('incremental', {\n alias: 'i',\n default: false,\n description: 'Attempt to perform the action only on changed packages',\n type: 'boolean',\n })\n .option('profile', {\n alias: 'p',\n default: false,\n description: 'Profile action',\n type: 'boolean',\n })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { updateYarnPlugins } from '../../actions/index.ts'\n\nexport const upplugCommand: CommandModule = {\n command: 'upplug',\n describe: 'UpPlug - Update Yarn Plugins',\n handler: (argv) => {\n if (argv.verbose) console.log('UpPlug')\n process.exitCode = updateYarnPlugins()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { updateYarnVersion } from '../../actions/index.ts'\n\nexport const upyarnCommand: CommandModule = {\n command: 'upyarn',\n describe: 'UpYarn - Update Yarn Version',\n handler: (argv) => {\n if (argv.verbose) console.log('UpYarn')\n process.exitCode = updateYarnVersion()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { yarn3Only } from '../../actions/index.ts'\n\nexport const yarn3OnlyCommand: CommandModule = {\n command: 'yarn3only',\n describe: 'Yarn3Only - Check if using Yarn v3',\n handler: (argv) => {\n if (argv.verbose) console.log('Yarn 3 Check')\n process.exitCode = yarn3Only()\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { upplugCommand } from './upplugCommand.ts'\nimport { upyarnCommand } from './upyarnCommand.ts'\nimport { yarn3OnlyCommand } from './yarn3OnlyCommand.ts'\n\nexport const xyYarnCommands = (args: Argv) => {\n return args\n .command(upplugCommand)\n .command(upyarnCommand)\n .command(yarn3OnlyCommand)\n}\n"],"mappings":"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","names":["require","readFileSync","readFileSync","readFileSync","readFileSync","PATH","cwd","spawnSync","spawnSync","spawnSync","spawnSync","chalk","ex","ex","error","chalk","chalk","chalk","DefaultDependencies","readFileSync","PATH","chalk","path","cycle","spawnSync","existsSync","readFileSync","PATH","chalk","existsSync","readFileSync","chalk","globSync","PATH","spawnSync","existsSync","readFileSync","writeFileSync","existsSync","readFileSync","writeFileSync","existsSync","readFileSync","existsSync","readFileSync","chalk","filename","chalk","cwd","readFileSync","createRequire","PATH","createInterface","chalk","require","createRequire","packageRoot","PATH","createInterface","readFileSync","cwd","chalk","start","readFileSync","createRequire","PATH","require","packageRoot","templatesDir","chalk","cached","readFileSync","readFileSync","readFileSync","path","readdirSync","readFileSync","createRequire","PATH","require","packageRoot","spawnSync","chalk","cwd","chalk","spawnSync","spawnSync","existsSync","chalk","chalk","config","existsSync","spawnSync","existsSync","chalk","config","chalk","existsSync","chalk","chalk","spawnSync","readFileSync","PATH","chalk","PATH","readFileSync","chalk","spawnSync","readFileSync","writeFileSync","PATH","chalk","cwd","readFileSync","PATH","cwd","packageName","chalk","start","config","chalk","semver","versionColor","semver","chalk","cwd","chalk","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","filename","PATH","existsSync","readFileSync","readdirSync","statSync","chalk","cwd","existsSync","readdirSync","PATH","chalk","existsSync","chalk","cwd","PATH","readdirSync","existsSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","cwd","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","cwd","spawnSync","mkdirSync","existsSync","mkdirSync","writeFileSync","PATH","createInterface","chalk","askConfirmation","createInterface","cwd","PATH","mkdirSync","existsSync","chalk","writeFileSync","existsSync","mkdirSync","readdirSync","readFileSync","rmSync","statSync","writeFileSync","PATH","chalk","PATH","mkdirSync","filename","existsSync","readFileSync","writeFileSync","readdirSync","statSync","rmSync","chalk","cwd","path","chalk","chalk","path","path","chalk","chalk","path","publint","path","chalk","path","chalk","chalk","fs","chalk","fs","path","fs","fix","diagnostic","fix","fs","cwd","fs","fs","path","fs","globSync","fs","globSync","fs","fs","path","fs","path","isDeclarationFile","fs","path","chalk","semver","semver","fs","chalk","fs","builtinModules","chalk","builtinModules","fs","chalk","fs","chalk","semver","sortPackageJson","fs","semver","versionRange","chalk","chalk","fs","path","ts","fs","path","fs","path","fs","ts","path","fs","fs","chalk","chalk","semver","semver","fs","fs","diagnostic","chalk","fix","diagnostic","fix","chalk","readFileSync","readFileSync","writeFileSync","PATH","chalk","semver","cwd","PATH","readFileSync","writeFileSync","semver","writeRootPackageJson","chalk","expected","readFileSync","chalk","chalk","path","chalk","chalk","cwd","fix","path","fix","unlinkSync","chalk","cwd","unlinkSync","chalk","chalk","execSync","chalk","ParseGitConfig","chalk","chalk","name","license","existsSync","readFileSync","unlinkSync","writeFileSync","PATH","createInterface","chalk","globSync","askConfirmation","createInterface","readFileSync","chalk","writeFileSync","cwd","globSync","PATH","existsSync","unlinkSync","filename","config","spawnSync","existsSync","readFileSync","writeFileSync","PATH","chalk","rules","config","PATH","chalk","readFileSync","writeFileSync","spawnSync","existsSync","fix","fs","path","chalk","glob","path","cwd","glob","fs","chalk","path","chalk","path","chalk","path","chalk","chalk","path","cwd","chalk","chalk","build","chalk","glob","cwd","chalk","ts","deepmerge","cwd","chalk","ts","path","cwd","chalk","cwd","path","chalk","chalk","options","build","config","compile","cwd","chalk","config","path","chalk","cpy","copyTargetAssets","cpy","path","chalk","cruise","cruise","existsSync","path","chalk","existsSync","path","project","chalk","readdirSync","path","cwd","chalk","ESLint","findUp","dumpMessages","chalk","findUp","cwd","readdirSync","path","fix","start","ESLint","fs","path","chalk","glob","sortPackageJson","fix","chalk","dot","glob","path","fs","publint","sortPackageJson","existsSync","readFileSync","writeFileSync","PATH","chalk","picomatch","semver","cwd","readFileSync","PATH","path","writeFileSync","existsSync","chalk","glob","picomatch","fix","isTerminalPackage","semver","existsSync","rmSync","writeFileSync","PATH","chalk","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","spawnSync","existsSync","mkdirSync","readFileSync","rmSync","writeFileSync","PATH","chalk","existsSync","readFileSync","writeFileSync","chalk","globSync","cwd","existsSync","readFileSync","writeFileSync","PATH","chalk","cwd","cwd","writeFileSync","PATH","chalk","existsSync","readFileSync","rmSync","mkdirSync","spawnSync","spawnSync","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","readPnpmWorkspacePatterns","cwd","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","spawnSync","cwd","existsSync","PATH","readFileSync","statSync","readdirSync","subPath","chalk","PATH","existsSync","chalk","rmSync","cwd","writeFileSync","existsSync","readFileSync","writeFileSync","PATH","chalk","cwd","PATH","existsSync","readFileSync","writeFileSync","chalk","config","fix","chalk","chalk","config","fix","start","cwd","config","config","existsSync","readFileSync","PATH","chalk","cwd","existsSync","readFileSync","PATH","config","chalk","fix","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","writeFileSync","createRequire","PATH","createInterface","chalk","createInterface","require","createRequire","readFileSync","packageName","existsSync","readdirSync","chalk","mkdirSync","PATH","writeFileSync","spawnSync","path","chalk","chalk","xy","test","path","readFile","readFile","yargs","yargs","yargs","yargs","yargs","yargs","chalk","yargs","fix","chalk","config","checkCommand","yargs","yargs","yargs","yargs","yargs","checkCommand","yargs","yargs","yargs","yargs","yargs","cleanCommand","yargs","cleanCommand","yargs","cleanCommand","yargs","initCommand","yargs","lintCommand","config","yargs","initCommand","lintCommand","initCommand","yargs","lintCommand","yargs","yargs","initCommand","lintCommand","yargs","yargs","test","yargs","cleanCommand","yargs","yargs","cleanCommand","yargs","yargs","chalk","yargs","chalk","chalk","yargs","start","chalk","chalk","initCommand","yargs","lintCommand","yargs","initCommand","chalk","yargs","yargs","yargs","yargs","lintCommand","chalk","chalk","chalk","start","chalk"]}