@xylabs/ts-scripts-common 7.5.3 → 7.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +25 -5
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +17 -2
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +15 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +15 -1
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +14 -1
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/index.mjs +25 -5
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -1
- package/dist/actions/deplint/deplint.mjs +25 -5
- package/dist/actions/deplint/deplint.mjs.map +1 -1
- package/dist/actions/deplint/index.mjs +25 -5
- package/dist/actions/deplint/index.mjs.map +1 -1
- package/dist/actions/deplint/tsScriptsAliases.mjs +20 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs.map +1 -0
- package/dist/actions/index.mjs +30 -6
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/packman/convert.mjs +5 -1
- package/dist/actions/packman/convert.mjs.map +1 -1
- package/dist/actions/packman/convertToPnpm.mjs +5 -1
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -1
- package/dist/actions/packman/convertToYarn.mjs +5 -1
- package/dist/actions/packman/convertToYarn.mjs.map +1 -1
- package/dist/actions/packman/index.mjs +5 -1
- package/dist/actions/packman/index.mjs.map +1 -1
- package/dist/actions/packman/rewriteSourceImports.mjs +5 -1
- package/dist/actions/packman/rewriteSourceImports.mjs.map +1 -1
- package/dist/bin/xy.mjs +30 -6
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.mjs +30 -6
- package/dist/index.mjs.map +1 -1
- package/dist/xy/common/index.mjs +5 -1
- package/dist/xy/common/index.mjs.map +1 -1
- package/dist/xy/common/packmanCommand.mjs +5 -1
- package/dist/xy/common/packmanCommand.mjs.map +1 -1
- package/dist/xy/index.mjs +30 -6
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/lint/deplintCommand.mjs +25 -5
- package/dist/xy/lint/deplintCommand.mjs.map +1 -1
- package/dist/xy/lint/index.mjs +25 -5
- package/dist/xy/lint/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +30 -6
- package/dist/xy/xy.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/xy/lint/cycleCommand.ts","../../../src/lib/checkResult.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/initCwd.ts","../../../src/lib/loadConfig.ts","../../../src/lib/runSteps.ts","../../../src/lib/runStepsAsync.ts","../../../src/actions/cycle.ts","../../../src/actions/deplint/deplint.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/getImportsFromFile.ts","../../../src/actions/deplint/getExternalImportsFromFiles.ts","../../../src/actions/deplint/checkPackage/getUnlistedDependencies.ts","../../../src/actions/deplint/checkPackage/getUnlistedDevDependencies.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/getRequiredPeerDependencies.ts","../../../src/actions/deplint/implicitDevDependencies.ts","../../../src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts","../../../src/actions/deplint/checkPackage/checkPackage.ts","../../../src/actions/lint.ts","../../../src/actions/fix.ts","../../../src/actions/knip.ts","../../../src/actions/lintlint.ts","../../../src/actions/package-lint.ts","../../../src/actions/publint.ts","../../../src/actions/relint.ts","../../../src/actions/sonar.ts","../../../src/xy/param.ts","../../../src/xy/lint/deplintCommand.ts","../../../src/xy/lint/fixCommand.ts","../../../src/xy/lint/knipCommand.ts","../../../src/xy/lint/lintCommand.ts","../../../src/xy/lint/lintlintCommand.ts","../../../src/xy/lint/packageLintCommand.ts","../../../src/xy/lint/publintCommand.ts","../../../src/xy/lint/relintCommand.ts","../../../src/xy/lint/sonarCommand.ts","../../../src/xy/lint/index.ts"],"sourcesContent":["import chalk from 'chalk'\nimport 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 const start = Date.now()\n if (argv.verbose) console.log('Cycle')\n process.exitCode = await cycle({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n}\n","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 { 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 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 + `Install @xylabs/ts-scripts-${pmName === 'yarn' ? 'yarn3' : pmName} and ensure it is imported.`,\n )\n }\n return pm\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","export function INIT_CWD(): string | undefined {\n if (!process.env.INIT_CWD) console.error('Missing INIT_CWD')\n return process.env.INIT_CWD\n}\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>\n\nexport const loadConfig = async <T extends object>(params?: T): Promise<T> => {\n if (config === undefined) {\n const cosmicConfigResult = await cosmiconfig('xy', { cache: true, loaders: { '.ts': TypeScriptLoader() } }).search()\n config = cosmicConfigResult?.config\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","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 { safeExit } from './safeExit.ts'\n\nexport type { ScriptStep } from '../pm/index.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\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 { checkResult } from './checkResult.ts'\nimport type { ScriptStep } from './runSteps.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 = process.env.npm_package_name\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 { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport { runSteps } 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 = process.env.npm_package_name\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 console.log(`${pkgName} ✅ No dependency violations`)\n } else {\n console.error(`${pkgName} ❌ Dependency violations found`)\n }\n return result.exitCode\n}\n","import chalk from 'chalk'\n\nimport { loadConfig } from '../../lib/index.ts'\nimport { getPackageManager } from '../../pm/index.ts'\nimport type { XyConfig } from '../package/index.ts'\nimport type { CheckPackageOptions } from './checkPackage/index.ts'\nimport { checkPackage } from './checkPackage/index.ts'\n\nexport interface DepLintOptions extends CheckPackageOptions {\n /** Package names to exclude, passed via --exclude on the command line */\n cliExclude?: string[]\n pkg?: string\n}\n\nexport const deplint = async ({\n pkg, deps, devDeps, peerDeps, verbose, cliExclude,\n}: DepLintOptions) => {\n // Merge excludes from xy.config (deplint.exclude) and the --exclude CLI flag.\n // Both sources are optional; the union of the two is used.\n const config = await loadConfig<XyConfig>()\n const exclude = new Set([\n ...(config.deplint?.exclude ?? []),\n ...(cliExclude ?? []),\n ])\n\n let totalErrors = 0\n\n if (pkg === undefined) {\n const workspaces = getPackageManager().listWorkspaces()\n\n console.info('Deplint Started...')\n\n for (const workspace of workspaces) {\n totalErrors += checkPackage({\n ...workspace, deps, devDeps, exclude, peerDeps, verbose,\n })\n }\n } else {\n const workspace = getPackageManager().findWorkspace(pkg)\n if (!workspace) {\n console.error(chalk.red(`Workspace not found: ${pkg}`))\n return 1\n }\n\n const { location, name } = workspace\n\n console.info(`Running Deplint for ${name}`)\n totalErrors += checkPackage({\n name, location, devDeps, deps, exclude, peerDeps, verbose,\n })\n }\n\n if (totalErrors > 0) {\n console.warn(`Deplint: Found ${chalk.red(totalErrors)} dependency problems. ${chalk.red('✖')}`)\n } else {\n console.info(`Deplint: Found no dependency problems. ${chalk.green('✔')}`)\n }\n return 0\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)\n return pkg.workspaces ?? []\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)\n\n const dependencies = packageJson.dependencies\n ? Object.keys(packageJson.dependencies)\n : []\n\n const devDependencies = packageJson.devDependencies\n ? Object.keys(packageJson.devDependencies)\n : []\n\n const peerDependencies = packageJson.peerDependencies\n ? Object.keys(packageJson.peerDependencies)\n : []\n\n return {\n dependencies, devDependencies, peerDependencies,\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\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 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 const parsed = JSON.parse(cleaned)\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","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'\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const kind: number | undefined = typeof mod === 'number' ? mod : (mod as any)?.kind\n return kind === ts.SyntaxKind.TypeKeyword\n }\n // Older TS fallback\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (clause as any).isTypeOnly\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 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\nexport function getExternalImportsFromFiles({\n allFiles, distFiles, tsconfigExtends = [],\n}: {\n allFiles: string[]\n distFiles: string[]\n tsconfigExtends?: 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 for (const ext of tsconfigExtends) {\n if (!externalAllImports.includes(ext)) externalAllImports.push(ext)\n }\n\n return {\n allImportPaths,\n allImports,\n distImportPaths,\n distImports,\n externalAllImports,\n externalDistImports,\n externalDistTypeImports,\n }\n}\n","import { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\n/**\n * Checks if a runtime import is satisfied by a listed dependency.\n/* alone is not enough\n * since it only provides 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 import is satisfied by a listed dependency.\n * Type-only imports can be covered by @types/<pkg> in any dependency section\n * (including devDependencies) since types are only needed at compile time,\n * not at runtime. The actual package itself also satisfies a type import.\n */\nfunction isTypeImportListed(\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 || peerDependencies.includes(imp)\n || peerDependencies.includes(`@types/${imp}`)\n || devDependencies.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\nexport function getUnlistedDependencies(\n { name, location }: Workspace,\n {\n dependencies, devDependencies, peerDependencies,\n }: CheckPackageParams,\n {\n externalDistImports, externalDistTypeImports, distImportPaths,\n }: CheckSourceParams,\n) {\n let unlistedDependencies = 0\n\n for (const imp of externalDistImports) {\n if (!isRuntimeImportListed(imp, name, dependencies, peerDependencies)) {\n unlistedDependencies++\n logMissing(name, imp, distImportPaths)\n }\n }\n\n for (const imp of externalDistTypeImports) {\n if (!isTypeImportListed(imp, name, dependencies, devDependencies, peerDependencies)) {\n unlistedDependencies++\n logMissing(name, imp, distImportPaths)\n }\n }\n\n if (unlistedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDependencies\n}\n","import { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n allImportPaths, externalAllImports, distImports,\n }: CheckSourceParams,\n) {\n let unlistedDevDependencies = 0\n for (const imp of externalAllImports) {\n if (!distImports.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 ) {\n unlistedDevDependencies++\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 }\n if (unlistedDevDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDevDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedDependencies(\n { name, location }: Workspace,\n { dependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalDistTypeImports,\n externalAllImports,\n }: CheckSourceParams,\n // Package names to skip (from xy.config deplint.exclude)\n exclude?: Set<string>,\n) {\n let unusedDependencies = 0\n for (const dep of dependencies) {\n if (exclude?.has(dep)) continue\n if (!externalDistImports.includes(dep)\n && !externalDistImports.includes(dep.replace(/^@types\\//, ''))\n && !externalDistTypeImports.includes(dep)\n && !externalDistTypeImports.includes(dep.replace(/^@types\\//, ''))) {\n unusedDependencies++\n if (externalAllImports.includes(dep)) {\n console.log(`[${chalk.blue(name)}] dependency should be devDependency in package.json: ${chalk.red(dep)}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n }\n }\n }\n if (unusedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/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 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 return allImports.has(dep)\n}\n\nexport function getUnusedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n // Package names to skip (from xy.config deplint.exclude)\n exclude?: Set<string>,\n) {\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 // Detect packages referenced via child_process calls (execSync, spawn, etc.)\n // in source files, e.g. execSync('npx typedoc ...') marks typedoc as used.\n const cliRefs = getCliReferencedPackagesFromFiles(fileContext.allFiles, location, allDeps)\n let unusedDevDependencies = 0\n for (const dep of devDependencies) {\n if (exclude?.has(dep)) continue\n // Skip devDeps that are also declared as dependencies or peerDependencies\n if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue\n\n if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {\n unusedDevDependencies++\n console.log(`[${chalk.blue(name)}] Unused devDependency in package.json: ${chalk.red(dep)}`)\n }\n }\n if (unusedDevDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDevDependencies\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)\n if (!pkg.bin) return []\n if (typeof pkg.bin === 'string') return [pkg.name?.split('/').pop() ?? dep]\n return Object.keys(pkg.bin)\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)\n scripts = pkg.scripts ?? {}\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'\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)\n if (pkg.peerDependencies) {\n for (const peer of Object.keys(pkg.peerDependencies)) {\n required.add(peer)\n }\n }\n } catch {\n // Package not readable — skip\n }\n }\n return required\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\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'))\n const transitiveDeps = [\n ...Object.keys(pkg.dependencies ?? {}),\n ...Object.keys(pkg.peerDependencies ?? {}),\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: hasDecorators,\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 '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedPeerDependencies(\n { name, location }: Workspace,\n { peerDependencies, dependencies }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n // Package names to skip (from xy.config deplint.exclude)\n exclude?: Set<string>,\n) {\n let unusedDependencies = 0\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\\//, ''))\n && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\\//, ''))) {\n unusedDependencies++\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 }\n if (unusedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDependencies\n}\n","import type { Workspace } from '../../../pm/index.ts'\nimport { findFiles } from '../findFiles.ts'\nimport { getDependenciesFromPackageJson } from '../getDependenciesFromPackageJson.ts'\nimport { getExtendsFromTsconfigs } from '../getExtendsFromTsconfigs.ts'\nimport { getExternalImportsFromFiles } from '../getExternalImportsFromFiles.ts'\nimport { getUnlistedDependencies } from './getUnlistedDependencies.ts'\nimport { getUnlistedDevDependencies } from './getUnlistedDevDependencies.ts'\nimport { getUnusedDependencies } from './getUnusedDependencies.ts'\nimport { getUnusedDevDependencies } from './getUnusedDevDependencies.ts'\nimport { getUnusedPeerDependencies } from './getUnusedPeerDependencies.ts'\n\nexport interface CheckPackageOptions {\n deps?: boolean\n devDeps?: boolean\n /**\n * Set of package names to exclude from unused-dependency checks.\n * Loaded from xy.config's deplint.exclude field.\n */\n exclude?: Set<string>\n peerDeps?: boolean\n verbose?: boolean\n}\n\nfunction logVerbose(\n name: string,\n location: string,\n allFiles: string[],\n distFiles: string[],\n tsconfigExtends: string[],\n) {\n console.info(`Checking package: ${name} at ${location}`)\n console.info(`All files: ${allFiles.length}, Distribution files: ${distFiles.length}`)\n for (const file of allFiles) {\n console.info(`File: ${file}`)\n }\n for (const file of distFiles) {\n console.info(`Distribution file: ${file}`)\n }\n for (const ext of tsconfigExtends) {\n console.info(`Tsconfig extends: ${ext}`)\n }\n}\n\nexport function checkPackage({\n name, location, deps = false, devDeps = false, exclude, peerDeps = false, verbose = false,\n}: CheckPackageOptions & Workspace) {\n const { allFiles, distFiles } = findFiles(location)\n const tsconfigExtends = getExtendsFromTsconfigs(location)\n if (verbose) {\n logVerbose(name, location, allFiles, distFiles, tsconfigExtends)\n }\n const checkDeps = deps || !(deps || devDeps || peerDeps)\n const checkDevDeps = devDeps || !(deps || devDeps || peerDeps)\n const checkPeerDeps = peerDeps // || !(deps || devDeps || peerDeps)\n const sourceParams = getExternalImportsFromFiles({\n allFiles, distFiles, tsconfigExtends,\n })\n\n const packageParams = getDependenciesFromPackageJson(`${location}/package.json`)\n\n const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0\n const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams, exclude) : 0\n const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0\n const fileContext = { allFiles, distFiles }\n const unusedDevDependencies = checkDevDeps\n ? getUnusedDevDependencies({ name, location }, packageParams, sourceParams, fileContext, exclude)\n : 0\n const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams, exclude) : 0\n\n const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + unusedDevDependencies + unusedPeerDependencies\n return totalErrors\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface LintParams {\n cache?: boolean\n fix?: boolean\n incremental?: 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}: LintParams & Required<Pick<LintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const pm = getPackageManager()\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const lint = ({\n pkg, verbose, incremental, fix,\n}: LintParams = {}) => {\n return pkg === undefined\n ? lintAllPackages({\n verbose, incremental, fix,\n })\n : lintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: LintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', ['--cache', '--cache-location', '.eslintcache', '--cache-strategy', 'content', ...fixOptions]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\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'\n\nexport const knip = () => {\n return runSteps('Knip', [['knip', ['--dependencies', '--no-exit-code']]])\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport { findUp } from 'find-up'\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: Array<{ local: RuleEntry; rule: string }>\n overrides: Array<{ local: RuleEntry; rule: string; shared: RuleEntry }>\n redundant: Array<{ 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\nasync function resolveSharedConfig(configDir: string, sharedPkg: string): Promise<ConfigBlock[]> {\n try {\n const sharedModule = await import(sharedPkg)\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n return []\n } catch {\n const distPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'node', 'index.mjs')\n try {\n const sharedModule = await import(distPath)\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n } catch {\n const neutralPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'neutral', 'index.mjs')\n const sharedModule = await import(neutralPath)\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\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)\n const localConfig = localModule.default ?? localModule\n const localBlocks: ConfigBlock[] = Array.isArray(localConfig) ? localConfig : [localConfig]\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, source: string, redundant: RuleComparison['redundant']): void {\n let updated = source\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 updated = updated.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n if (updated !== source) {\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`\\nFixed: removed ${redundant.length} redundant rule(s)`))\n }\n}\n\nexport async function lintlint({ fix, verbose }: LintlintParams = {}): Promise<number> {\n const eslintConfigPath = await findUp('eslint.config.mjs')\n if (!eslintConfigPath) {\n console.error(chalk.red('No eslint.config.mjs 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 sharedRules = await loadSharedRules(configDir, sharedPkg, !!verbose)\n if (!sharedRules) return 1\n\n const { explicit, resolved } = await loadLocalRules(eslintConfigPath, source, !!verbose)\n const results = compareRules(explicit, resolved, sharedRules)\n\n reportResults(results, !!verbose)\n\n if (results.redundant.length > 0 && fix) {\n fixRedundantRules(eslintConfigPath, source, results.redundant)\n }\n\n return results.redundant.length > 0 && !fix ? 1 : 0\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\ninterface 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) {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw)\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 isMonorepo(pkg: Record<string, unknown>): boolean {\n const workspaces = pkg.workspaces\n return Array.isArray(workspaces) && workspaces.length > 0\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 checkDiscoverable(\n pkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pkg.workspaces as string[]\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 result.errors.push(`${name} (${location}) is not matched by any workspace glob in package.json`)\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 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() ?? process.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)) {\n console.log(chalk.gray('Not a monorepo — skipping package-lint checks'))\n return 0\n }\n\n console.log(chalk.green('Package Lint'))\n\n const workspaces = getPackageManager().listWorkspaces()\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 { check: () => checkDiscoverable(pkg, workspaces), label: 'All packages are discoverable from workspace globs' },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\n\n return errors > 0 ? 1 : 0\n}\n","import { runSteps, runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface PublintParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const publint = async ({ verbose, pkg }: PublintParams) => {\n return pkg === undefined\n ? publintAll({ verbose })\n : await publintPackage({ pkg, verbose })\n}\n\nexport const publintPackage = ({ pkg }: PublintPackageParams) => {\n const pm = getPackageManager()\n return runStepsAsync(`Publint [${pkg}]`, [pm.runInWorkspace(pkg, 'package-publint')])\n}\n\nexport const publintAll = ({ verbose }: PublintParams) => {\n const pm = getPackageManager()\n return runSteps('Publint', [pm.foreachWorkspace('package-publint', [], { verbose })])\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RelintParams {\n cache?: boolean\n fix?: boolean\n incremental?: 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}: RelintParams & Required<Pick<RelintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const pm = getPackageManager()\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const relint = ({\n pkg, verbose, incremental, fix,\n}: RelintParams = {}) => {\n return pkg === undefined\n ? relintAllPackages({\n verbose, incremental, fix,\n })\n : relintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const relintAllPackages = ({ fix = false }: RelintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', fixOptions],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['eslint', ['-c', 'sonar.eslintrc', '.']]])\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 chalk from 'chalk'\nimport 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: false,\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 },\n handler: async (argv) => {\n if (argv.verbose) console.log('Deplint')\n const start = Date.now()\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, peerDeps: !!argv.peerDeps, verbose: !!argv.verbose,\n })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 command: 'fix [package]',\n describe: 'Fix - Run Eslint w/fix',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Fix')\n process.exitCode = fix()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 { fix, lint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint [package]',\n describe: 'Lint - Run Eslint',\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 },\n handler: (argv) => {\n if (argv.verbose) console.log('Lint')\n const start = Date.now()\n process.exitCode\n = argv.fix\n ? fix({\n pkg: argv.package as string, cache: argv.cache as boolean, verbose: !!argv.verbose,\n })\n : lint({\n pkg: argv.package as string, cache: argv.cache as boolean, verbose: !!argv.verbose,\n })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 { packageLintMonorepo } from '../../actions/index.ts'\n\nexport const packageLintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n command: 'package-lint',\n describe: 'Package Lint - Check monorepo package structure',\n handler: (argv) => {\n if (argv.verbose) console.log('Package Lint')\n process.exitCode = packageLintMonorepo(!!argv.fix)\n },\n}\n","import chalk from 'chalk'\nimport 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 },\n handler: async (argv) => {\n if (argv.verbose) console.log('Publint')\n const start = Date.now()\n process.exitCode = await publint({ pkg: argv.package as string, verbose: !!argv.verbose })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n}\n","import chalk from 'chalk'\nimport 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 },\n handler: (argv) => {\n if (argv.verbose) console.log('Relinting')\n const start = Date.now()\n process.exitCode = relint()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n}\n","import chalk from 'chalk'\nimport 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 const start = Date.now()\n if (argv.verbose) console.log('Sonar Check')\n process.exitCode = sonar()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 { packageLintCommand } from './packageLintCommand.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(packageLintCommand)\n .command(sonarCommand)\n}\n"],"mappings":"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","names":["chalk","chalk","ex","ex","error","chalk","chalk","existsSync","chalk","chalk","config","existsSync","existsSync","chalk","config","chalk","existsSync","chalk","fs","fs","globSync","globSync","fs","fs","path","fs","path","isDeclarationFile","path","chalk","builtinModules","chalk","chalk","chalk","fs","path","ts","fs","path","fs","path","fs","path","fs","ts","path","fs","fs","chalk","chalk","config","chalk","chalk","fix","chalk","chalk","rules","config","fix","readFileSync","writeFileSync","PATH","chalk","readFileSync","PATH","path","writeFileSync","chalk","fix","chalk","fix","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/xy/lint/cycleCommand.ts","../../../src/lib/checkResult.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/initCwd.ts","../../../src/lib/loadConfig.ts","../../../src/lib/runSteps.ts","../../../src/lib/runStepsAsync.ts","../../../src/actions/cycle.ts","../../../src/actions/deplint/deplint.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/getImportsFromFile.ts","../../../src/actions/deplint/getExternalImportsFromFiles.ts","../../../src/actions/deplint/checkPackage/getUnlistedDependencies.ts","../../../src/actions/deplint/tsScriptsAliases.ts","../../../src/actions/deplint/checkPackage/getUnlistedDevDependencies.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/getRequiredPeerDependencies.ts","../../../src/actions/deplint/implicitDevDependencies.ts","../../../src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts","../../../src/actions/deplint/checkPackage/checkPackage.ts","../../../src/actions/lint.ts","../../../src/actions/fix.ts","../../../src/actions/knip.ts","../../../src/actions/lintlint.ts","../../../src/actions/package-lint.ts","../../../src/actions/publint.ts","../../../src/actions/relint.ts","../../../src/actions/sonar.ts","../../../src/xy/param.ts","../../../src/xy/lint/deplintCommand.ts","../../../src/xy/lint/fixCommand.ts","../../../src/xy/lint/knipCommand.ts","../../../src/xy/lint/lintCommand.ts","../../../src/xy/lint/lintlintCommand.ts","../../../src/xy/lint/packageLintCommand.ts","../../../src/xy/lint/publintCommand.ts","../../../src/xy/lint/relintCommand.ts","../../../src/xy/lint/sonarCommand.ts","../../../src/xy/lint/index.ts"],"sourcesContent":["import chalk from 'chalk'\nimport 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 const start = Date.now()\n if (argv.verbose) console.log('Cycle')\n process.exitCode = await cycle({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n}\n","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 { 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 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 + `Install @xylabs/ts-scripts-${pmName === 'yarn' ? 'yarn3' : pmName} and ensure it is imported.`,\n )\n }\n return pm\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","export function INIT_CWD(): string | undefined {\n if (!process.env.INIT_CWD) console.error('Missing INIT_CWD')\n return process.env.INIT_CWD\n}\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>\n\nexport const loadConfig = async <T extends object>(params?: T): Promise<T> => {\n if (config === undefined) {\n const cosmicConfigResult = await cosmiconfig('xy', { cache: true, loaders: { '.ts': TypeScriptLoader() } }).search()\n config = cosmicConfigResult?.config\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","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 { safeExit } from './safeExit.ts'\n\nexport type { ScriptStep } from '../pm/index.ts'\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\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 { checkResult } from './checkResult.ts'\nimport type { ScriptStep } from './runSteps.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 = process.env.npm_package_name\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 { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport { runSteps } 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 = process.env.npm_package_name\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 console.log(`${pkgName} ✅ No dependency violations`)\n } else {\n console.error(`${pkgName} ❌ Dependency violations found`)\n }\n return result.exitCode\n}\n","import chalk from 'chalk'\n\nimport { loadConfig } from '../../lib/index.ts'\nimport { getPackageManager } from '../../pm/index.ts'\nimport type { XyConfig } from '../package/index.ts'\nimport type { CheckPackageOptions } from './checkPackage/index.ts'\nimport { checkPackage } from './checkPackage/index.ts'\n\nexport interface DepLintOptions extends CheckPackageOptions {\n /** Package names to exclude, passed via --exclude on the command line */\n cliExclude?: string[]\n pkg?: string\n}\n\nexport const deplint = async ({\n pkg, deps, devDeps, peerDeps, verbose, cliExclude,\n}: DepLintOptions) => {\n // Merge excludes from xy.config (deplint.exclude) and the --exclude CLI flag.\n // Both sources are optional; the union of the two is used.\n const config = await loadConfig<XyConfig>()\n const exclude = new Set([\n ...(config.deplint?.exclude ?? []),\n ...(cliExclude ?? []),\n ])\n\n let totalErrors = 0\n\n if (pkg === undefined) {\n const workspaces = getPackageManager().listWorkspaces()\n\n console.info('Deplint Started...')\n\n for (const workspace of workspaces) {\n totalErrors += checkPackage({\n ...workspace, deps, devDeps, exclude, peerDeps, verbose,\n })\n }\n } else {\n const workspace = getPackageManager().findWorkspace(pkg)\n if (!workspace) {\n console.error(chalk.red(`Workspace not found: ${pkg}`))\n return 1\n }\n\n const { location, name } = workspace\n\n console.info(`Running Deplint for ${name}`)\n totalErrors += checkPackage({\n name, location, devDeps, deps, exclude, peerDeps, verbose,\n })\n }\n\n if (totalErrors > 0) {\n console.warn(`Deplint: Found ${chalk.red(totalErrors)} dependency problems. ${chalk.red('✖')}`)\n } else {\n console.info(`Deplint: Found no dependency problems. ${chalk.green('✔')}`)\n }\n return 0\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)\n return pkg.workspaces ?? []\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)\n\n const dependencies = packageJson.dependencies\n ? Object.keys(packageJson.dependencies)\n : []\n\n const devDependencies = packageJson.devDependencies\n ? Object.keys(packageJson.devDependencies)\n : []\n\n const peerDependencies = packageJson.peerDependencies\n ? Object.keys(packageJson.peerDependencies)\n : []\n\n return {\n dependencies, devDependencies, peerDependencies,\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\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 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 const parsed = JSON.parse(cleaned)\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","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'\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const kind: number | undefined = typeof mod === 'number' ? mod : (mod as any)?.kind\n return kind === ts.SyntaxKind.TypeKeyword\n }\n // Older TS fallback\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (clause as any).isTypeOnly\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 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\nexport function getExternalImportsFromFiles({\n allFiles, distFiles, tsconfigExtends = [],\n}: {\n allFiles: string[]\n distFiles: string[]\n tsconfigExtends?: 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 for (const ext of tsconfigExtends) {\n if (!externalAllImports.includes(ext)) externalAllImports.push(ext)\n }\n\n return {\n allImportPaths,\n allImports,\n distImportPaths,\n distImports,\n externalAllImports,\n externalDistImports,\n externalDistTypeImports,\n }\n}\n","import { builtinModules } from 'node:module'\n\nimport chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.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/* alone is not enough\n * since it only provides 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 import is satisfied by a listed dependency.\n * Type-only imports can be covered by @types/<pkg> in any dependency section\n * (including devDependencies) since types are only needed at compile time,\n * not at runtime. The actual package itself also satisfies a type import.\n */\nfunction isTypeImportListed(\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 || peerDependencies.includes(imp)\n || peerDependencies.includes(`@types/${imp}`)\n || devDependencies.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\nexport function getUnlistedDependencies(\n { name, location }: Workspace,\n {\n dependencies, devDependencies, peerDependencies,\n }: CheckPackageParams,\n {\n externalDistImports, externalDistTypeImports, distImportPaths,\n }: CheckSourceParams,\n) {\n let unlistedDependencies = 0\n\n const allDeps = [...dependencies, ...devDependencies, ...peerDependencies]\n\n for (const imp of externalDistImports) {\n if (!isRuntimeImportListed(imp, name, dependencies, peerDependencies)\n && !isSatisfiedByTsScriptsVariant(imp, allDeps)) {\n unlistedDependencies++\n logMissing(name, imp, distImportPaths)\n }\n }\n\n for (const imp of externalDistTypeImports) {\n if (!isTypeImportListed(imp, name, dependencies, devDependencies, peerDependencies)\n && !isSatisfiedByTsScriptsVariant(imp, allDeps)) {\n unlistedDependencies++\n logMissing(name, imp, distImportPaths)\n }\n }\n\n if (unlistedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDependencies\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 '../../../lib/index.ts'\nimport { isSatisfiedByTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnlistedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n {\n allImportPaths, externalAllImports, distImports,\n }: CheckSourceParams,\n) {\n let unlistedDevDependencies = 0\n for (const imp of externalAllImports) {\n if (!distImports.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 unlistedDevDependencies++\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 }\n if (unlistedDevDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unlistedDevDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/index.ts'\nimport { isUsedViaTsScriptsVariant } from '../tsScriptsAliases.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedDependencies(\n { name, location }: Workspace,\n { dependencies }: CheckPackageParams,\n {\n externalDistImports,\n externalDistTypeImports,\n externalAllImports,\n }: CheckSourceParams,\n // Package names to skip (from xy.config deplint.exclude)\n exclude?: Set<string>,\n) {\n let unusedDependencies = 0\n for (const dep of dependencies) {\n if (exclude?.has(dep)) continue\n if (!externalDistImports.includes(dep)\n && !externalDistImports.includes(dep.replace(/^@types\\//, ''))\n && !externalDistTypeImports.includes(dep)\n && !externalDistTypeImports.includes(dep.replace(/^@types\\//, ''))\n && !isUsedViaTsScriptsVariant(dep, [...externalDistImports, ...externalDistTypeImports])) {\n unusedDependencies++\n if (externalAllImports.includes(dep)) {\n console.log(`[${chalk.blue(name)}] dependency should be devDependency in package.json: ${chalk.red(dep)}`)\n } else {\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n }\n }\n }\n if (unusedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDependencies\n}\n","import chalk from 'chalk'\n\nimport type { Workspace } from '../../../lib/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 { 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 getUnusedDevDependencies(\n { name, location }: Workspace,\n {\n devDependencies, dependencies, peerDependencies,\n }: CheckPackageParams,\n sourceParams: CheckSourceParams,\n fileContext: FileContext,\n // Package names to skip (from xy.config deplint.exclude)\n exclude?: Set<string>,\n) {\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 // Detect packages referenced via child_process calls (execSync, spawn, etc.)\n // in source files, e.g. execSync('npx typedoc ...') marks typedoc as used.\n const cliRefs = getCliReferencedPackagesFromFiles(fileContext.allFiles, location, allDeps)\n let unusedDevDependencies = 0\n for (const dep of devDependencies) {\n if (exclude?.has(dep)) continue\n // Skip devDeps that are also declared as dependencies or peerDependencies\n if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue\n\n if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {\n unusedDevDependencies++\n console.log(`[${chalk.blue(name)}] Unused devDependency in package.json: ${chalk.red(dep)}`)\n }\n }\n if (unusedDevDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDevDependencies\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)\n if (!pkg.bin) return []\n if (typeof pkg.bin === 'string') return [pkg.name?.split('/').pop() ?? dep]\n return Object.keys(pkg.bin)\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)\n scripts = pkg.scripts ?? {}\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'\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)\n if (pkg.peerDependencies) {\n for (const peer of Object.keys(pkg.peerDependencies)) {\n required.add(peer)\n }\n }\n } catch {\n // Package not readable — skip\n }\n }\n return required\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\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'))\n const transitiveDeps = [\n ...Object.keys(pkg.dependencies ?? {}),\n ...Object.keys(pkg.peerDependencies ?? {}),\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: hasDecorators,\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 '../../../lib/index.ts'\nimport type { CheckPackageParams, CheckSourceParams } from './checkPackageTypes.ts'\n\nexport function getUnusedPeerDependencies(\n { name, location }: Workspace,\n { peerDependencies, dependencies }: CheckPackageParams,\n { externalDistImports, externalDistTypeImports }: CheckSourceParams,\n // Package names to skip (from xy.config deplint.exclude)\n exclude?: Set<string>,\n) {\n let unusedDependencies = 0\n for (const dep of peerDependencies) {\n if (exclude?.has(dep)) continue\n if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\\//, ''))\n && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\\//, ''))) {\n unusedDependencies++\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 }\n if (unusedDependencies > 0) {\n const packageLocation = `${location}/package.json`\n console.log(` ${chalk.yellow(packageLocation)}\\n`)\n }\n return unusedDependencies\n}\n","import type { Workspace } from '../../../pm/index.ts'\nimport { findFiles } from '../findFiles.ts'\nimport { getDependenciesFromPackageJson } from '../getDependenciesFromPackageJson.ts'\nimport { getExtendsFromTsconfigs } from '../getExtendsFromTsconfigs.ts'\nimport { getExternalImportsFromFiles } from '../getExternalImportsFromFiles.ts'\nimport { getUnlistedDependencies } from './getUnlistedDependencies.ts'\nimport { getUnlistedDevDependencies } from './getUnlistedDevDependencies.ts'\nimport { getUnusedDependencies } from './getUnusedDependencies.ts'\nimport { getUnusedDevDependencies } from './getUnusedDevDependencies.ts'\nimport { getUnusedPeerDependencies } from './getUnusedPeerDependencies.ts'\n\nexport interface CheckPackageOptions {\n deps?: boolean\n devDeps?: boolean\n /**\n * Set of package names to exclude from unused-dependency checks.\n * Loaded from xy.config's deplint.exclude field.\n */\n exclude?: Set<string>\n peerDeps?: boolean\n verbose?: boolean\n}\n\nfunction logVerbose(\n name: string,\n location: string,\n allFiles: string[],\n distFiles: string[],\n tsconfigExtends: string[],\n) {\n console.info(`Checking package: ${name} at ${location}`)\n console.info(`All files: ${allFiles.length}, Distribution files: ${distFiles.length}`)\n for (const file of allFiles) {\n console.info(`File: ${file}`)\n }\n for (const file of distFiles) {\n console.info(`Distribution file: ${file}`)\n }\n for (const ext of tsconfigExtends) {\n console.info(`Tsconfig extends: ${ext}`)\n }\n}\n\nexport function checkPackage({\n name, location, deps = false, devDeps = false, exclude, peerDeps = false, verbose = false,\n}: CheckPackageOptions & Workspace) {\n const { allFiles, distFiles } = findFiles(location)\n const tsconfigExtends = getExtendsFromTsconfigs(location)\n if (verbose) {\n logVerbose(name, location, allFiles, distFiles, tsconfigExtends)\n }\n const checkDeps = deps || !(deps || devDeps || peerDeps)\n const checkDevDeps = devDeps || !(deps || devDeps || peerDeps)\n const checkPeerDeps = peerDeps // || !(deps || devDeps || peerDeps)\n const sourceParams = getExternalImportsFromFiles({\n allFiles, distFiles, tsconfigExtends,\n })\n\n const packageParams = getDependenciesFromPackageJson(`${location}/package.json`)\n\n const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0\n const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams, exclude) : 0\n const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0\n const fileContext = { allFiles, distFiles }\n const unusedDevDependencies = checkDevDeps\n ? getUnusedDevDependencies({ name, location }, packageParams, sourceParams, fileContext, exclude)\n : 0\n const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams, exclude) : 0\n\n const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + unusedDevDependencies + unusedPeerDependencies\n return totalErrors\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface LintParams {\n cache?: boolean\n fix?: boolean\n incremental?: 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}: LintParams & Required<Pick<LintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const pm = getPackageManager()\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const lint = ({\n pkg, verbose, incremental, fix,\n}: LintParams = {}) => {\n return pkg === undefined\n ? lintAllPackages({\n verbose, incremental, fix,\n })\n : lintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: LintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', ['--cache', '--cache-location', '.eslintcache', '--cache-strategy', 'content', ...fixOptions]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\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'\n\nexport const knip = () => {\n return runSteps('Knip', [['knip', ['--dependencies', '--no-exit-code']]])\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport { findUp } from 'find-up'\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: Array<{ local: RuleEntry; rule: string }>\n overrides: Array<{ local: RuleEntry; rule: string; shared: RuleEntry }>\n redundant: Array<{ 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\nasync function resolveSharedConfig(configDir: string, sharedPkg: string): Promise<ConfigBlock[]> {\n try {\n const sharedModule = await import(sharedPkg)\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n return []\n } catch {\n const distPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'node', 'index.mjs')\n try {\n const sharedModule = await import(distPath)\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\n } catch {\n const neutralPath = PATH.resolve(configDir, 'node_modules', sharedPkg, 'dist', 'neutral', 'index.mjs')\n const sharedModule = await import(neutralPath)\n const config = sharedModule.config ?? sharedModule.default\n if (Array.isArray(config)) return config as ConfigBlock[]\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)\n const localConfig = localModule.default ?? localModule\n const localBlocks: ConfigBlock[] = Array.isArray(localConfig) ? localConfig : [localConfig]\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, source: string, redundant: RuleComparison['redundant']): void {\n let updated = source\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 updated = updated.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n if (updated !== source) {\n writeFileSync(eslintConfigPath, updated, 'utf8')\n console.log(chalk.green(`\\nFixed: removed ${redundant.length} redundant rule(s)`))\n }\n}\n\nexport async function lintlint({ fix, verbose }: LintlintParams = {}): Promise<number> {\n const eslintConfigPath = await findUp('eslint.config.mjs')\n if (!eslintConfigPath) {\n console.error(chalk.red('No eslint.config.mjs 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 sharedRules = await loadSharedRules(configDir, sharedPkg, !!verbose)\n if (!sharedRules) return 1\n\n const { explicit, resolved } = await loadLocalRules(eslintConfigPath, source, !!verbose)\n const results = compareRules(explicit, resolved, sharedRules)\n\n reportResults(results, !!verbose)\n\n if (results.redundant.length > 0 && fix) {\n fixRedundantRules(eslintConfigPath, source, results.redundant)\n }\n\n return results.redundant.length > 0 && !fix ? 1 : 0\n}\n","import { readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport picomatch from 'picomatch'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\ninterface 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) {\n const raw = readFileSync(PATH.resolve(cwd, 'package.json'), 'utf8')\n return JSON.parse(raw)\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 isMonorepo(pkg: Record<string, unknown>): boolean {\n const workspaces = pkg.workspaces\n return Array.isArray(workspaces) && workspaces.length > 0\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 checkDiscoverable(\n pkg: Record<string, unknown>,\n workspaces: { location: string; name: string }[],\n): LintResult {\n const result = emptyResult()\n\n const globs = pkg.workspaces as string[]\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 result.errors.push(`${name} (${location}) is not matched by any workspace glob in package.json`)\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 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() ?? process.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)) {\n console.log(chalk.gray('Not a monorepo — skipping package-lint checks'))\n return 0\n }\n\n console.log(chalk.green('Package Lint'))\n\n const workspaces = getPackageManager().listWorkspaces()\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 { check: () => checkDiscoverable(pkg, workspaces), label: 'All packages are discoverable from workspace globs' },\n ]\n\n const { errors, fixed } = runChecks(checks, cwd, pkg, fix)\n logSummary(errors, fixed)\n\n return errors > 0 ? 1 : 0\n}\n","import { runSteps, runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface PublintParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const publint = async ({ verbose, pkg }: PublintParams) => {\n return pkg === undefined\n ? publintAll({ verbose })\n : await publintPackage({ pkg, verbose })\n}\n\nexport const publintPackage = ({ pkg }: PublintPackageParams) => {\n const pm = getPackageManager()\n return runStepsAsync(`Publint [${pkg}]`, [pm.runInWorkspace(pkg, 'package-publint')])\n}\n\nexport const publintAll = ({ verbose }: PublintParams) => {\n const pm = getPackageManager()\n return runSteps('Publint', [pm.foreachWorkspace('package-publint', [], { verbose })])\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RelintParams {\n cache?: boolean\n fix?: boolean\n incremental?: 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}: RelintParams & Required<Pick<RelintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const pm = getPackageManager()\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n pm.runInWorkspace(pkg, fix ? 'package-fix' : verbose ? 'package-lint-verbose' : 'package-lint'),\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const relint = ({\n pkg, verbose, incremental, fix,\n}: RelintParams = {}) => {\n return pkg === undefined\n ? relintAllPackages({\n verbose, incremental, fix,\n })\n : relintPackage({\n pkg, fix, verbose,\n })\n}\n\nexport const relintAllPackages = ({ fix = false }: RelintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['eslint', fixOptions],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['eslint', ['-c', 'sonar.eslintrc', '.']]])\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 chalk from 'chalk'\nimport 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: false,\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 },\n handler: async (argv) => {\n if (argv.verbose) console.log('Deplint')\n const start = Date.now()\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, peerDeps: !!argv.peerDeps, verbose: !!argv.verbose,\n })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 command: 'fix [package]',\n describe: 'Fix - Run Eslint w/fix',\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n handler: (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Fix')\n process.exitCode = fix()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 { fix, lint } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const lintCommand: CommandModule = {\n command: 'lint [package]',\n describe: 'Lint - Run Eslint',\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 },\n handler: (argv) => {\n if (argv.verbose) console.log('Lint')\n const start = Date.now()\n process.exitCode\n = argv.fix\n ? fix({\n pkg: argv.package as string, cache: argv.cache as boolean, verbose: !!argv.verbose,\n })\n : lint({\n pkg: argv.package as string, cache: argv.cache as boolean, verbose: !!argv.verbose,\n })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 { packageLintMonorepo } from '../../actions/index.ts'\n\nexport const packageLintCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.option('fix', {\n default: false,\n description: 'Auto-fix fixable issues',\n type: 'boolean',\n })\n },\n command: 'package-lint',\n describe: 'Package Lint - Check monorepo package structure',\n handler: (argv) => {\n if (argv.verbose) console.log('Package Lint')\n process.exitCode = packageLintMonorepo(!!argv.fix)\n },\n}\n","import chalk from 'chalk'\nimport 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 },\n handler: async (argv) => {\n if (argv.verbose) console.log('Publint')\n const start = Date.now()\n process.exitCode = await publint({ pkg: argv.package as string, verbose: !!argv.verbose })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n}\n","import chalk from 'chalk'\nimport 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 },\n handler: (argv) => {\n if (argv.verbose) console.log('Relinting')\n const start = Date.now()\n process.exitCode = relint()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n}\n","import chalk from 'chalk'\nimport 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 const start = Date.now()\n if (argv.verbose) console.log('Sonar Check')\n process.exitCode = sonar()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\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 { packageLintCommand } from './packageLintCommand.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(packageLintCommand)\n .command(sonarCommand)\n}\n"],"mappings":"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","names":["chalk","chalk","ex","ex","error","chalk","chalk","existsSync","chalk","chalk","config","existsSync","existsSync","chalk","config","chalk","existsSync","chalk","fs","fs","globSync","globSync","fs","fs","path","fs","path","isDeclarationFile","path","chalk","chalk","builtinModules","chalk","builtinModules","chalk","chalk","chalk","chalk","fs","path","ts","fs","path","fs","path","fs","path","fs","ts","path","fs","fs","chalk","chalk","config","chalk","chalk","fix","chalk","chalk","rules","config","fix","readFileSync","writeFileSync","PATH","chalk","readFileSync","PATH","path","writeFileSync","chalk","fix","chalk","fix","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk","chalk"]}
|