@xylabs/ts-scripts-common 7.5.2 → 7.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +27 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +27 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -1
- package/dist/actions/deplint/checkPackage/index.mjs +27 -0
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -1
- package/dist/actions/deplint/deplint.mjs +18 -0
- package/dist/actions/deplint/deplint.mjs.map +1 -1
- package/dist/actions/deplint/implicitDevDependencies.mjs +25 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -1
- package/dist/actions/deplint/index.mjs +18 -0
- package/dist/actions/deplint/index.mjs.map +1 -1
- package/dist/actions/index.mjs +168 -95
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/packman/convert.mjs +140 -85
- package/dist/actions/packman/convert.mjs.map +1 -1
- package/dist/actions/packman/convertToPnpm.mjs +92 -38
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -1
- package/dist/actions/packman/convertToYarn.mjs +93 -39
- package/dist/actions/packman/convertToYarn.mjs.map +1 -1
- package/dist/actions/packman/index.mjs +140 -85
- package/dist/actions/packman/index.mjs.map +1 -1
- package/dist/actions/packman/rewriteSourceImports.mjs +56 -0
- package/dist/actions/packman/rewriteSourceImports.mjs.map +1 -0
- package/dist/bin/xy.mjs +185 -112
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.mjs +187 -114
- package/dist/index.mjs.map +1 -1
- package/dist/xy/common/index.mjs +140 -85
- package/dist/xy/common/index.mjs.map +1 -1
- package/dist/xy/common/packmanCommand.mjs +140 -85
- package/dist/xy/common/packmanCommand.mjs.map +1 -1
- package/dist/xy/index.mjs +185 -112
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/lint/deplintCommand.mjs +18 -0
- package/dist/xy/lint/deplintCommand.mjs.map +1 -1
- package/dist/xy/lint/index.mjs +18 -0
- package/dist/xy/lint/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +185 -112
- package/dist/xy/xy.mjs.map +1 -1
- package/package.json +2 -2
package/dist/xy/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/actions/build.ts","../../src/lib/checkResult.ts","../../src/lib/claudeMdTemplate.ts","../../src/lib/deleteGlob.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/file/constants.ts","../../src/lib/file/fileLines.ts","../../src/lib/string/empty.ts","../../src/lib/string/union.ts","../../src/lib/file/ReadFileSyncOptions.ts","../../src/lib/generateIgnoreFiles.ts","../../src/lib/initCwd.ts","../../src/lib/generateReadmeFiles.ts","../../src/lib/gitignoreTemplate.ts","../../src/lib/loadConfig.ts","../../src/lib/runSteps.ts","../../src/lib/runStepsAsync.ts","../../src/lib/tryRunLocalScript.ts","../../src/actions/claude-clean.ts","../../src/actions/claude-commands.ts","../../src/actions/claude-rules.ts","../../src/actions/claude-settings.ts","../../src/actions/claude-skills.ts","../../src/actions/clean-docs.ts","../../src/actions/compile.ts","../../src/actions/copy-assets.ts","../../src/actions/cycle.ts","../../src/actions/dead.ts","../../src/actions/deplint/deplint.ts","../../src/actions/deplint/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/gen-docs.ts","../../src/actions/gitignore.ts","../../src/actions/gitlint.ts","../../src/actions/gitlint-fix.ts","../../src/actions/knip.ts","../../src/actions/license.ts","../../src/actions/lintlint.ts","../../src/actions/npmignore-gen.ts","../../src/actions/package-lint.ts","../../src/actions/packman/convert.ts","../../src/actions/packman/convertToPnpm.ts","../../src/actions/packman/rewriteScripts.ts","../../src/actions/packman/swapTsScriptsDependency.ts","../../src/actions/packman/convertToYarn.ts","../../src/actions/publint.ts","../../src/actions/readme-gen.ts","../../src/actions/readme-init.ts","../../src/actions/rebuild.ts","../../src/actions/recompile.ts","../../src/actions/relint.ts","../../src/actions/retest.ts","../../src/actions/sonar.ts","../../src/actions/test.ts","../../src/xy/build/buildCommand.ts","../../src/xy/build/compileCommand.ts","../../src/xy/build/compileOnlyCommand.ts","../../src/xy/build/copyAssetsCommand.ts","../../src/xy/build/rebuildCommand.ts","../../src/xy/build/recompileCommand.ts","../../src/xy/build/index.ts","../../src/xy/common/claude/cleanCommand.ts","../../src/xy/common/claude/commandsCommand.ts","../../src/xy/common/claude/initCommand.ts","../../src/xy/common/claude/rulesCommand.ts","../../src/xy/common/claude/settingsCommand.ts","../../src/xy/common/claude/skillsCommand.ts","../../src/xy/common/claude/index.ts","../../src/xy/common/cleanDocsCommand.ts","../../src/xy/param.ts","../../src/xy/common/deadCommand.ts","../../src/xy/common/genDocsCommand.ts","../../src/xy/common/gitignoreCommand.ts","../../src/xy/common/gitlintCommand.ts","../../src/xy/common/licenseCommand.ts","../../src/xy/common/npmignoreGenCommand.ts","../../src/xy/common/packmanCommand.ts","../../src/xy/common/readme/genCommand.ts","../../src/xy/common/readme/initCommand.ts","../../src/xy/common/readme/index.ts","../../src/xy/common/retestCommand.ts","../../src/xy/common/testCommand.ts","../../src/xy/common/index.ts","../../src/xy/lint/cycleCommand.ts","../../src/xy/lint/deplintCommand.ts","../../src/xy/lint/fixCommand.ts","../../src/xy/lint/knipCommand.ts","../../src/xy/lint/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","../../src/xy/xy.ts","../../src/xy/xyParseOptions.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface BuildParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const build = async ({\n incremental, jobs, target, verbose, pkg,\n}: BuildParams) => {\n const start = Date.now()\n const pkgOptions = (pkg === undefined) ? [] : [pkg] // must go first\n const incrementalOptions = incremental ? ['-i'] : []\n const verboseOptions = verbose ? ['-v'] : []\n const targetOptions = (target === undefined) ? [] : ['-t', target]\n const jobsOptions = (jobs === undefined) ? [] : ['-j', `${jobs}`]\n if (jobs !== undefined) {\n console.log(chalk.blue(`Jobs set to [${jobs}]`))\n }\n\n const pm = getPackageManager()\n const result = await runStepsAsync(`Build${incremental ? '-Incremental' : ''} [${pkg ?? 'All'}]`, [\n pm.runXy(['compile', ...pkgOptions, ...targetOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions, '--types', 'tsup']),\n pm.runXy(['publint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['deplint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['lint', ...pkgOptions, ...verboseOptions, ...incrementalOptions]),\n ])\n console.log(`${chalk.gray('Built in')} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`)\n return result\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 {\n readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'claude')\n\nexport const XYLABS_RULES_PREFIX = 'xylabs-'\nexport const XYLABS_COMMANDS_PREFIX = 'xy-'\nexport const LEGACY_COMMANDS_PREFIX = 'xylabs-'\nexport const XYLABS_SKILLS_PREFIX = 'xylabs-'\n\nexport const claudeMdRuleTemplates = (): Record<string, string> => {\n const rulesDir = PATH.resolve(templatesDir, 'rules')\n const files = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(rulesDir, file), 'utf8')\n }\n return result\n}\n\nexport const claudeCommandTemplates = (): Record<string, string> => {\n const commandsDir = PATH.resolve(templatesDir, 'commands')\n const files = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(commandsDir, file), 'utf8')\n }\n return result\n}\n\n// Returns { 'xylabs-foo': { 'SKILL.md': '...', 'other.ts': '...' } }\nexport const claudeSkillTemplates = (): Record<string, Record<string, string>> => {\n const skillsDir = PATH.resolve(templatesDir, 'skills')\n const dirs = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n const result: Record<string, Record<string, string>> = {}\n for (const dir of dirs) {\n const dirPath = PATH.resolve(skillsDir, dir)\n const files = readdirSync(dirPath, { recursive: true, encoding: 'utf8' }) as string[]\n result[dir] = {}\n for (const file of files) {\n if (statSync(PATH.resolve(dirPath, file)).isFile()) {\n result[dir][file] = readFileSync(PATH.resolve(dirPath, file), 'utf8')\n }\n }\n }\n return result\n}\n\nexport const claudeMdProjectTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-project.md'), 'utf8')\n\nexport const claudeMdLocalTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-local.md'), 'utf8')\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n","import { 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 const WINDOWS_NEWLINE_REGEX = /\\r\\n/g\nexport const CROSS_PLATFORM_NEWLINE = '\\n'\n","import type { PathLike, WriteFileOptions } from 'node:fs'\nimport {\n existsSync, readFileSync,\n writeFileSync,\n} from 'node:fs'\n\nimport { notEmpty } from '../string/index.ts'\nimport { CROSS_PLATFORM_NEWLINE, WINDOWS_NEWLINE_REGEX } from './constants.ts'\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const readLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n existsSync(uri)\n ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE)\n : []\n\nexport const readNonEmptyLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n readLines(uri, options).filter(notEmpty)\n\nexport const writeLines = (uri: PathLike, lines: string[], options: WriteFileOptions = defaultReadFileSyncOptions) => {\n const existing = existsSync(uri) ? readFileSync(uri, options) : undefined\n const desired = lines.join(CROSS_PLATFORM_NEWLINE)\n // Check if the file is different before writing\n if (existing !== desired) writeFileSync(uri, desired, options)\n}\n","export const empty = (value?: string | undefined): boolean => value?.trim().length === 0\nexport const notEmpty = (value?: string | undefined): boolean => !empty(value)\n","export const union = (a: string[], b: string[]): Set<string> => new Set([...new Set(a), ...new Set(b)])\n","export type ReadFileSyncOptions = BufferEncoding | {\n encoding: BufferEncoding\n flags?: string\n}\n\nexport const defaultReadFileSyncOptions: ReadFileSyncOptions = { encoding: 'utf8' }\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { readNonEmptyLines, writeLines } from './file/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\nimport { union } from './string/index.ts'\n\nconst localeCompare = (a: string, b: string) => a.localeCompare(b)\n\nconst mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].toSorted(localeCompare)\n\nexport const generateIgnoreFiles = (filename: string, pkg?: string) => {\n console.log(chalk.green(`Generate ${filename} Files`))\n const cwd = INIT_CWD() ?? '.'\n const pm = getPackageManager()\n const singleWorkspace = pkg ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const readEntries = (location: string): string[] => readNonEmptyLines(`${location}/${filename}`)\n const writeEntries = (location: string, entries: string[]) => writeLines(`${location}/${filename}`, entries)\n const results = workspaces.map(({ location, name }) => {\n try {\n writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)))\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(`Generate ${filename} Files [${name}] [${error.message}]`)\n return 1\n }\n })\n const succeeded = results.every(result => result === 0)\n return succeeded ? 0 : 1\n}\n","export function INIT_CWD(): string | undefined {\n if (!process.env.INIT_CWD) console.error('Missing INIT_CWD')\n return process.env.INIT_CWD\n}\n","import { execSync } from 'node:child_process'\nimport FS, { readFileSync } from 'node:fs'\nimport {\n mkdir, readFile, writeFile,\n} from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst readmeTemplatesDir = PATH.resolve(packageRoot, 'templates', 'readme')\n\ninterface GenerateReadmeFilesParams {\n logoLinkUrl?: string\n logoUrl?: string\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nfunction fillTemplate(template: string, data: Record<string, string>): string {\n const additionalData: Record<string, string> = { ...data, safeName: data.name.replaceAll('/', '__').replaceAll('@', '') }\n return template.replaceAll(/\\{\\{(.*?)\\}\\}/g, (_, key: string) => additionalData[key.trim()] ?? '')\n}\n\nfunction generateTypedoc(packageLocation: string, entryPoints: string[]): string {\n const tempDir = PATH.join(packageLocation, '.temp-typedoc')\n\n try {\n if (!FS.existsSync(tempDir)) {\n FS.mkdirSync(tempDir, { recursive: true })\n }\n\n const typedocConfig = {\n disableSources: true,\n entryPointStrategy: 'expand',\n entryPoints: entryPoints.map(ep => PATH.resolve(packageLocation, ep)),\n excludeExternals: true,\n excludeInternal: true,\n excludePrivate: true,\n githubPages: false,\n hideBreadcrumbs: true,\n hideGenerator: true,\n hidePageTitle: true,\n out: tempDir,\n plugin: ['typedoc-plugin-markdown'],\n readme: 'none',\n skipErrorChecking: true,\n sort: ['source-order'],\n theme: 'markdown',\n useCodeBlocks: true,\n }\n\n const typedocJsonPath = PATH.join(tempDir, 'typedoc.json')\n FS.writeFileSync(typedocJsonPath, JSON.stringify(typedocConfig, null, 2))\n\n try {\n execSync(`npx typedoc --options ${typedocJsonPath}`, {\n cwd: process.cwd(),\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n } catch {\n return ''\n }\n\n return consolidateMarkdown(tempDir)\n } catch {\n return ''\n } finally {\n try {\n FS.rmSync(tempDir, { force: true, recursive: true })\n } catch {\n // ignore cleanup errors\n }\n }\n}\n\nfunction consolidateMarkdown(tempDir: string): string {\n let consolidated = '## Reference\\n\\n'\n\n const mainReadmePath = PATH.join(tempDir, 'README.md')\n if (FS.existsSync(mainReadmePath)) {\n const mainContent = FS.readFileSync(mainReadmePath, 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n\n consolidated += mainContent + '\\n\\n'\n }\n\n consolidated += processDirectory(tempDir)\n\n return consolidated\n .replaceAll(/\\n\\n\\n+/g, '\\n\\n')\n .replaceAll(/^#### /gm, '### ')\n .replaceAll(/^##### /gm, '#### ')\n .replaceAll(/^###### /gm, '##### ')\n}\n\nfunction processDirectory(dir: string, level = 0): string {\n const indent = ' '.repeat(level)\n let content = ''\n\n try {\n const items = FS.readdirSync(dir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.isDirectory()) continue\n if (item.name === 'README.md' || !item.name.endsWith('.md')) continue\n\n const fileContent = FS.readFileSync(PATH.join(dir, item.name), 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n const moduleName = item.name.replace('.md', '')\n\n content += `\\n\\n${indent}### <a id=\"${moduleName}\"></a>${moduleName}\\n\\n`\n content += fileContent\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n }\n\n for (const item of items) {\n if (!item.isDirectory()) continue\n if (item.name === 'spec' || item.name.includes('.spec')) continue\n\n content += `\\n\\n${indent}### ${item.name}\\n`\n content += processDirectory(PATH.join(dir, item.name), level + 1)\n }\n } catch {\n // skip unreadable directories\n }\n\n return content\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport const DEFAULT_README_TEMPLATE = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.template.md'), 'utf8')\nexport const DEFAULT_README_BODY = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.body.md'), 'utf8')\n\nexport function applyLogoConfig(template: string, logoUrl?: string, logoLinkUrl?: string): string {\n let result = template\n if (logoUrl) {\n result = result.replace(/\\[logo]: .+/, `[logo]: ${logoUrl}`)\n if (logoLinkUrl) {\n result = result.replace(/\\[!\\[logo]\\[]][^)]*\\)/, `[![logo][]](${logoLinkUrl})`)\n }\n } else {\n result = result.replace(/\\[!\\[logo]\\[]][^\\n]*\\n*/, '')\n result = result.replace(/\\[logo]: [^\\n]*\\n?/, '')\n }\n return result\n}\n\nexport function resolveTemplatePath(templatePath: string | undefined): string {\n const cwd = INIT_CWD() ?? '.'\n return templatePath ?? PATH.join(cwd, '.xy', 'README.template.md')\n}\n\nasync function loadOrCreateTemplate(resolvedTemplatePath: string): Promise<{\n created: boolean\n template: string\n}> {\n try {\n const template = await readFile(resolvedTemplatePath, 'utf8')\n return { created: false, template }\n } catch {\n console.log(chalk.yellow(`Template not found: ${resolvedTemplatePath}`))\n const shouldCreate = await askConfirmation('Would you like to create a stock template? (y/N) ')\n if (!shouldCreate) {\n throw new Error('Template creation declined')\n }\n const template = DEFAULT_README_TEMPLATE\n await scaffoldTemplate(resolvedTemplatePath, template)\n return { created: true, template }\n }\n}\n\nexport async function scaffoldTemplate(resolvedTemplatePath: string, template: string): Promise<void> {\n const xyDir = PATH.dirname(resolvedTemplatePath)\n await mkdir(xyDir, { recursive: true })\n await writeFile(resolvedTemplatePath, template)\n console.log(chalk.green(`Created template: ${resolvedTemplatePath}`))\n const bodyPath = PATH.join(xyDir, 'README.body.md')\n await writeFile(bodyPath, DEFAULT_README_BODY)\n console.log(chalk.green(`Created body template: ${bodyPath}`))\n}\n\nasync function resolveBody(location: string, defaultBody: string): Promise<string> {\n const localBodyPath = PATH.join(location, 'README.body.md')\n try {\n return await readFile(localBodyPath, 'utf8')\n } catch {\n return defaultBody\n }\n}\n\nasync function generateReadmeForWorkspace(\n location: string,\n name: string,\n template: string,\n defaultBody: string,\n typedoc: boolean,\n verbose: boolean,\n): Promise<boolean> {\n try {\n const pkgJsonPath = PATH.join(location, 'package.json')\n const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8'))\n const body = await resolveBody(location, defaultBody)\n const typedocContent = typedoc ? generateTypedoc(location, ['src/index*.ts']) : ''\n const readmeContent = fillTemplate(template, {\n ...pkgJson, body, typedoc: typedocContent,\n })\n await writeFile(PATH.join(location, 'README.md'), readmeContent)\n if (verbose) console.log(chalk.green(` ${name}`))\n return true\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.yellow(` Skipped ${location}: ${error.message}`))\n return false\n }\n}\n\nexport async function generateReadmeFiles({\n logoLinkUrl, logoUrl, pkg, templatePath, typedoc = false, verbose = false,\n}: GenerateReadmeFilesParams): Promise<number> {\n console.log(chalk.green('Generate README Files'))\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n\n let template: string\n let templateCreated: boolean\n try {\n ({ template, created: templateCreated } = await loadOrCreateTemplate(resolvedTemplatePath))\n } catch {\n return 1\n }\n\n template = applyLogoConfig(template, logoUrl, logoLinkUrl)\n\n if (templateCreated) {\n console.log(chalk.green('Generating README files for all packages...'))\n }\n\n const xyDir = PATH.dirname(resolvedTemplatePath)\n const xyBodyPath = PATH.join(xyDir, 'README.body.md')\n let defaultBody: string\n try {\n defaultBody = await readFile(xyBodyPath, 'utf8')\n } catch {\n defaultBody = DEFAULT_README_BODY\n }\n\n const pm = getPackageManager()\n const singleWorkspace = pkg && !templateCreated ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n let failed = false\n\n for (const { location, name } of workspaces) {\n const success = await generateReadmeForWorkspace(location, name, template, defaultBody, typedoc, verbose)\n if (!success) failed = true\n }\n\n return failed ? 1 : 0\n}\n","import { readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'gitignore')\n\nexport const gitignoreTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'template.gitignore'), 'utf8')\n","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 { spawnSync } from 'node:child_process'\nimport { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\n\n/**\n * Attempts to run a local root package.json script instead of the built-in\n * xy command. Returns the exit code if the override ran, or undefined if\n * no override applies (no matching script or recursion guard).\n */\nexport function tryRunLocalScript(commandName: string): number | undefined {\n // Prevent infinite recursion if the local script calls yarn xy\n if (process.env.XY_LOCAL_SCRIPT === '1') return undefined\n\n // Check if root package.json has a matching script\n const rootPkgPath = PATH.resolve(process.cwd(), 'package.json')\n let rootPkg: { scripts?: Record<string, string> }\n try {\n rootPkg = JSON.parse(readFileSync(rootPkgPath, 'utf8'))\n } catch {\n return undefined\n }\n\n if (!rootPkg.scripts?.[commandName]) return undefined\n\n console.log(chalk.blue(`Delegating \"${commandName}\" to local script`))\n const pm = getPackageManager()\n const result = spawnSync(pm.command, ['run', commandName], {\n cwd: process.cwd(),\n encoding: 'utf8',\n env: {\n FORCE_COLOR: '3', ...process.env, XY_LOCAL_SCRIPT: '1',\n },\n shell: true,\n stdio: 'inherit',\n })\n return result.status ?? 1\n}\n","import {\n existsSync, readdirSync, rmSync, unlinkSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nfunction removeFile(filePath: string, label: string): boolean {\n if (existsSync(filePath)) {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nfunction removeDir(dirPath: string, label: string): boolean {\n if (existsSync(dirPath)) {\n rmSync(dirPath, { recursive: true })\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nexport function claudeClean(): number {\n console.log(chalk.green('Clean Claude configuration'))\n const cwd = INIT_CWD() ?? process.cwd()\n let removed = 0\n\n // Root-level files\n const rootFiles = ['CLAUDE.md', 'CLAUDE.local.md']\n for (const file of rootFiles) {\n if (removeFile(PATH.resolve(cwd, file), file)) removed++\n }\n\n // .claude directory\n if (removeDir(PATH.resolve(cwd, '.claude'), '.claude/')) removed++\n\n // Package-level CLAUDE.md files\n const packagesDir = PATH.resolve(cwd, 'packages')\n if (existsSync(packagesDir)) {\n const findClaudeFiles = (dir: string, prefix: string) => {\n const entries = readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = PATH.resolve(dir, entry.name)\n const label = `${prefix}${entry.name}`\n if (entry.isFile() && (entry.name === 'CLAUDE.md' || entry.name === 'CLAUDE.local.md')) {\n if (removeFile(fullPath, label)) removed++\n } else if (entry.isDirectory() && entry.name === '.claude') {\n if (removeDir(fullPath, `${label}/`)) removed++\n } else if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {\n findClaudeFiles(fullPath, `${label}/`)\n }\n }\n }\n findClaudeFiles(packagesDir, 'packages/')\n }\n\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} item(s)`))\n } else {\n console.log(chalk.gray(' Nothing to clean'))\n }\n\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n claudeCommandTemplates, INIT_CWD,\n LEGACY_COMMANDS_PREFIX, XYLABS_COMMANDS_PREFIX,\n} from '../lib/index.ts'\n\nconst syncCommandFiles = (commandsDir: string) => {\n const templates = claudeCommandTemplates()\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleCommands = (commandsDir: string, templateNames: Set<string>) => {\n const existingCommands = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingCommands) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(commandsDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst removeLegacyCommands = (commandsDir: string): number => {\n const legacyFiles = readdirSync(commandsDir).filter(f => f.startsWith(LEGACY_COMMANDS_PREFIX) && f.endsWith('.md'))\n for (const file of legacyFiles) {\n unlinkSync(PATH.resolve(commandsDir, file))\n }\n return legacyFiles.length\n}\n\nconst logCommandsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: already up to date`))\n }\n}\n\nexport const claudeCommands = (): number => {\n const cwd = INIT_CWD() ?? process.cwd()\n const commandsDir = PATH.resolve(cwd, '.claude', 'commands')\n\n mkdirSync(commandsDir, { recursive: true })\n\n const legacy = removeLegacyCommands(commandsDir)\n const {\n created, templateNames, updated,\n } = syncCommandFiles(commandsDir)\n const removed = removeStaleCommands(commandsDir, templateNames)\n logCommandsResult(created, updated, removed + legacy)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n claudeMdLocalTemplate, claudeMdRuleTemplates, INIT_CWD,\n XYLABS_RULES_PREFIX,\n} from '../lib/index.ts'\n\nconst syncRuleFiles = (rulesDir: string) => {\n const templates = claudeMdRuleTemplates()\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleRules = (rulesDir: string, templateNames: Set<string>) => {\n const existingRules = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingRules) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(rulesDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst logRulesResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: already up to date`))\n }\n}\n\nconst ensureProjectClaudeMd = (cwd: string, force?: boolean) => {\n const projectPath = PATH.resolve(cwd, 'CLAUDE.md')\n\n if (!existsSync(projectPath) || force) {\n if (force && existsSync(projectPath)) {\n console.log(chalk.yellow('Regenerating CLAUDE.md'))\n }\n console.log(chalk.green('Generating CLAUDE.md via claude /init...'))\n const result = spawnSync('claude', ['-p', '/init', '--allowedTools', 'Read', 'Write', 'Glob', 'Grep'], {\n cwd,\n shell: true,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.error(chalk.red('claude /init failed — is Claude Code installed?'))\n return 1\n }\n } else {\n console.log(chalk.gray('CLAUDE.md already exists (skipped, use --force to regenerate)'))\n }\n return 0\n}\n\nconst ensureLocalClaudeMd = (cwd: string) => {\n const localPath = PATH.resolve(cwd, 'CLAUDE.local.md')\n\n if (existsSync(localPath)) {\n console.log(chalk.gray('CLAUDE.local.md already exists (skipped)'))\n } else {\n writeFileSync(localPath, claudeMdLocalTemplate(), 'utf8')\n console.log(chalk.green('Generated CLAUDE.local.md'))\n }\n}\n\nexport const claudeRules = ({ force }: { force?: boolean } = {}): number => {\n const cwd = INIT_CWD() ?? process.cwd()\n const rulesDir = PATH.resolve(cwd, '.claude', 'rules')\n\n mkdirSync(rulesDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncRuleFiles(rulesDir)\n const removed = removeStaleRules(rulesDir, templateNames)\n logRulesResult(created, updated, removed)\n const claudeMdResult = ensureProjectClaudeMd(cwd, force)\n ensureLocalClaudeMd(cwd)\n\n return claudeMdResult ?? 0\n}\n","import {\n existsSync, mkdirSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nconst DEFAULT_SETTINGS = {\n permissions: {\n allow: [\n 'Bash(git *)',\n 'Bash(yarn *)',\n 'Bash(npx *)',\n 'Bash(node *)',\n 'Bash(ls *)',\n 'Bash(mkdir *)',\n 'Bash(cp *)',\n 'Bash(mv *)',\n 'Bash(rm *)',\n 'Bash(cat *)',\n 'Bash(head *)',\n 'Bash(tail *)',\n 'Bash(echo *)',\n 'Bash(pwd)',\n 'Bash(which *)',\n 'Bash(grep *)',\n 'Bash(find *)',\n 'Bash(npm view *)',\n 'Bash(gh *)',\n 'Read',\n 'Edit',\n 'Write',\n 'Glob',\n 'Grep',\n 'Skill',\n ],\n deny: [\n 'Bash(git push --force *)',\n 'Bash(git reset --hard *)',\n 'Bash(rm -rf /*)',\n ],\n },\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport async function claudeSettings(): Promise<number> {\n const cwd = INIT_CWD() ?? process.cwd()\n const claudeDir = PATH.resolve(cwd, '.claude')\n const settingsPath = PATH.resolve(claudeDir, 'settings.local.json')\n\n mkdirSync(claudeDir, { recursive: true })\n\n if (existsSync(settingsPath)) {\n const confirmed = await askConfirmation(\n chalk.yellow(`${settingsPath} already exists. Replace it? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray('Skipped — existing settings.local.json preserved'))\n return 0\n }\n }\n\n writeFileSync(settingsPath, `${JSON.stringify(DEFAULT_SETTINGS, null, 2)}\\n`, 'utf8')\n console.log(chalk.green('Generated .claude/settings.local.json'))\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n claudeSkillTemplates, INIT_CWD, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\n\nconst syncSkillFiles = (skillsDir: string) => {\n const templates = claudeSkillTemplates()\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [skillName, files] of Object.entries(templates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n mkdirSync(skillDir, { recursive: true })\n\n for (const [filename, content] of Object.entries(files)) {\n const targetPath = PATH.resolve(skillDir, filename)\n mkdirSync(PATH.dirname(targetPath), { recursive: true })\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleSkills = (skillsDir: string, templateNames: Set<string>) => {\n const existingSkills = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n let removed = 0\n\n for (const dir of existingSkills) {\n if (!templateNames.has(dir)) {\n rmSync(PATH.resolve(skillsDir, dir), { recursive: true })\n removed++\n }\n }\n\n return removed\n}\n\nconst logSkillsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: already up to date`))\n }\n}\n\nexport const claudeSkills = (): number => {\n const cwd = INIT_CWD() ?? process.cwd()\n const skillsDir = PATH.resolve(cwd, '.claude', 'skills')\n\n mkdirSync(skillsDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncSkillFiles(skillsDir)\n const removed = removeStaleSkills(skillsDir, templateNames)\n logSkillsResult(created, updated, removed)\n\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const cleanDocs = () => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`Cleaning Docs [${pkgName}]`))\n for (const { location } of getPackageManager().listWorkspaces()) deleteGlob(path.join(location, 'docs'))\n return 0\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CompileParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\ninterface CompilePackageParams {\n pkg: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const compile = ({\n verbose, target, pkg, incremental, publint, jobs,\n}: CompileParams) => {\n return pkg\n ? compilePackage({\n pkg, publint, target, verbose,\n })\n : compileAll({\n incremental, jobs, publint, target, verbose,\n })\n}\n\nexport const compilePackage = ({ target, pkg }: CompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runSteps(\n `Compile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-compile', targetOptions)],\n )\n}\n\nexport const compileAll = ({\n jobs, verbose, target, incremental,\n}: CompileParams) => {\n const pm = getPackageManager()\n const start = Date.now()\n const targetOptions = target ? ['-t', target] : []\n if (jobs) {\n console.log(chalk.blue(`Jobs set to [${jobs}]`))\n }\n\n const result = runSteps(`Compile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-compile', targetOptions, {\n incremental, jobs, topological: true, verbose,\n }),\n ])\n console.log(`${chalk.gray('Compiled in')} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`)\n return result\n}\n","import path from 'node:path/posix'\n\nimport chalk from 'chalk'\nimport cpy from 'cpy'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CopyAssetsParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nconst copyPackageTargetAssets = async (target: 'esm' | 'cjs', name: string, location: string) => {\n try {\n const values = await cpy(\n ['**/*.jpg', '**/*.png', '**/*.gif', '**/*.svg', '**/*.webp', '**/*.sass', '**/*.scss', '**/*.gif', '**/*.css'],\n `../dist/${target}`,\n {\n cwd: path.join(process.cwd(), location, 'src'),\n flat: false,\n },\n )\n for (const value of values) {\n console.log(`${value.split('/').pop()} => ./dist/${target}`)\n }\n return 0\n } catch (reason) {\n console.log(`Copy Failed: ${name}: ${reason}`)\n return 1\n }\n}\n\nconst copyTargetAssets = async (target: 'esm' | 'cjs', pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n\n console.log(chalk.green(`Copying Assets [${target.toUpperCase()}]`))\n\n // finds the package or returns all if undefined\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n if (workspaceList.length === 0) {\n console.error(`Package not found [${pkg}]`)\n } else {\n const results = await Promise.all(\n workspaceList.map(async (workspace) => {\n const { location, name } = workspace\n return await copyPackageTargetAssets(target, name, location)\n }),\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n return results.reduce((prev, result) => prev || result, 0)\n }\n return 0\n}\n\nexport const copyAssets = async ({ target, pkg }: CopyAssetsParams) => {\n switch (target) {\n case 'esm': {\n return await copyTargetAssets('esm', pkg)\n }\n case 'cjs': {\n return await copyTargetAssets('cjs', pkg)\n }\n default: {\n return (await copyTargetAssets('esm', pkg)) || (await copyTargetAssets('cjs', pkg))\n }\n }\n}\n","import { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport { 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 { runSteps } from '../lib/index.ts'\n\nexport const dead = () => {\n return runSteps('Dead', [['ts-prune', ['-p', 'tsconfig.json']]])\n}\n","import chalk from 'chalk'\n\nimport { 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 { 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 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\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'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface GenDocsParams {\n incremental?: boolean\n pkg?: string\n}\n\nexport interface GenDocsPackageParams { pkg: string }\n\nexport const genDocs = ({ pkg, incremental }: GenDocsParams) => {\n return pkg ? genDocsPackage({ pkg }) : genDocsAll({ incremental })\n}\n\nexport const genDocsPackage = ({ pkg }: GenDocsPackageParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [${pkg}]`, [pm.runInWorkspace(pkg, 'package-gen-docs')])\n}\n\nexport const genDocsAll = ({ incremental }: GenDocsParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [All${incremental ? '-Incremental' : ''}]`, [\n pm.foreachWorkspace('package-gen-docs', [], { incremental }),\n ])\n}\n","import { unlinkSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport {\n gitignoreTemplate, INIT_CWD,\n readNonEmptyLines, writeLines,\n} from '../lib/index.ts'\nimport { union } from '../lib/string/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nconst COMMENT_PREFIX = '#'\n\nconst isComment = (line: string): boolean => line.startsWith(COMMENT_PREFIX)\n\nconst isNegation = (line: string): boolean => line.startsWith('!')\n\n/** Parse the template into sections (comment + entries) */\nfunction parseTemplateSections(lines: string[]): string[][] {\n const sections: string[][] = []\n let current: string[] = []\n for (const line of lines) {\n if (isComment(line)) {\n if (current.length > 0) {\n sections.push(current)\n }\n current = [line]\n } else {\n current.push(line)\n }\n }\n if (current.length > 0) {\n sections.push(current)\n }\n return sections\n}\n\n/** Merge template entries into existing entries, preserving structure */\nfunction mergeWithTemplate(existing: string[], templateContent: string): string[] {\n const templateLines = templateContent.split('\\n').filter(line => line.trim().length > 0)\n const sections = parseTemplateSections(templateLines)\n\n // Collect all existing non-comment, non-negation entries\n const existingEntries = new Set(existing.filter(line => !isComment(line)))\n\n // Find template entries that are missing from existing\n const templateEntries = new Set(templateLines.filter(line => !isComment(line)))\n\n // Find custom entries (in existing but not in template)\n const customEntries = [...existingEntries].filter(entry => !templateEntries.has(entry))\n\n // Build the output: template sections first, then custom entries\n const result: string[] = []\n for (const section of sections) {\n for (const line of section) {\n result.push(line)\n }\n result.push('')\n }\n\n if (customEntries.length > 0) {\n result.push('# Custom')\n const sorted = [...union(customEntries, [])].toSorted((a, b) => {\n // Negation patterns sort after their positive counterparts\n if (isNegation(a) && !isNegation(b)) return 1\n if (!isNegation(a) && isNegation(b)) return -1\n return a.localeCompare(b)\n })\n for (const entry of sorted) {\n result.push(entry)\n }\n result.push('')\n }\n\n return result\n}\n\nfunction removePackageGitignores(cwd: string): number {\n let removed = 0\n const workspaces = getPackageManager().listWorkspaces()\n for (const { location } of workspaces) {\n // Skip root workspace\n if (location === '.') continue\n const filePath = `${cwd}/${location}/.gitignore`\n try {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${location}/.gitignore`))\n removed++\n } catch {\n // File doesn't exist — nothing to do\n }\n }\n return removed\n}\n\n/** @deprecated Use gitignore instead */\nexport const gitignoreGen = gitignore\n\nexport function gitignore(): number {\n console.log(chalk.green('Generate .gitignore'))\n const cwd = INIT_CWD() ?? '.'\n const gitignorePath = `${cwd}/.gitignore`\n\n try {\n const templateContent = gitignoreTemplate()\n const existing = readNonEmptyLines(gitignorePath)\n const merged = mergeWithTemplate(existing, templateContent)\n writeLines(gitignorePath, merged)\n console.log(chalk.green(' Root .gitignore updated'))\n\n const removed = removePackageGitignores(cwd)\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} package .gitignore file(s)`))\n }\n\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(chalk.red(`Generate .gitignore failed: ${error.message}`))\n return 1\n }\n}\n","import chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlint = () => {\n console.log(`\\nGitlint Start [${process.cwd()}]\\n`)\n let valid = 0\n let warnings = 0\n const errors = 0\n const gitConfig = ParseGitConfig.sync()\n\n const warn = (message: string) => {\n console.warn(chalk.yellow(`Warning: ${message}`))\n warnings++\n }\n\n if (gitConfig.core.ignorecase) {\n warn('Please set core.ignorecase to FALSE in .git/config file [run yarn gitlint-fix]')\n } else {\n valid++\n }\n\n if (gitConfig.core.autocrlf === false) {\n valid++\n } else {\n warn('Please set core.autocrlf to FALSE in .git/config file [run yarn gitlint-fix]')\n }\n\n if (gitConfig.core.eol === 'lf') {\n valid++\n } else {\n warn('Please set core.eol to \"lf\" in .git/config file [run yarn gitlint-fix]')\n }\n\n const resultMessages: string[] = []\n if (valid > 0) {\n resultMessages.push(chalk.green(`Passed: ${valid}`))\n }\n if (warnings > 0) {\n resultMessages.push(chalk.yellow(`Warnings: ${warnings}`))\n }\n if (errors > 0) {\n resultMessages.push(chalk.red(` Errors: ${errors}`))\n }\n console.warn(`Gitlint Finish [ ${resultMessages.join(' | ')} ]\\n`)\n return warnings + errors === 0 ? 1 : 0\n}\n","import { execSync } from 'node:child_process'\n\nimport chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlintFix = () => {\n console.log(`\\nGitlint Fix Start [${process.cwd()}]\\n`)\n\n const gitConfig = ParseGitConfig.sync()\n\n if (gitConfig.core.ignorecase) {\n execSync('git config core.ignorecase false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.ignorecase to be false\\n'))\n }\n\n if (gitConfig.core.autocrlf !== false) {\n execSync('git config core.autocrlf false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.autocrlf to be false\\n'))\n }\n\n if (gitConfig.core.eol !== 'lf') {\n execSync('git config core.eol lf', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.eol to be \"lf\"\\n'))\n }\n\n return 1\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const knip = () => {\n return runSteps('Knip', [['knip', ['--dependencies', '--no-exit-code']]])\n}\n","import chalk from 'chalk'\nimport { init } from 'license-checker'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const license = async (pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n const exclude = new Set([\n 'MIT',\n 'MIT*',\n 'ISC',\n 'Apache-2.0',\n 'BSD',\n 'BSD*',\n 'BSD-2-Clause',\n 'BSD-3-Clause',\n 'CC-BY-4.0',\n 'Unlicense',\n 'CC-BY-3.0',\n 'CC0-1.0',\n 'LGPL-3.0-only',\n 'LGPL-3.0',\n 'LGPL-3.0-or-later',\n 'Python-2.0',\n ])\n\n console.log(chalk.green('License Checker'))\n\n return (\n (\n await Promise.all(\n workspaceList.map(({ location, name }) => {\n return new Promise<number>((resolve) => {\n init({ production: true, start: location }, (error, packages) => {\n if (error) {\n console.error(chalk.red(`License Checker [${name}] Error`))\n console.error(chalk.gray(error))\n console.log('\\n')\n resolve(1)\n } else {\n console.log(chalk.green(`License Checker [${name}]`))\n let count = 0\n for (const [name, info] of Object.entries(packages)) {\n const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses]\n for (let license of licenses) {\n if (license) {\n // remove surrounding parens on some string\n const processedLicense = (license[0] === '(' && license.at(-1) === ')')\n ? license.slice(1, -2)\n : license\n // get list of OR licenses from string\n const orLicenses = processedLicense.split(' OR ')\n let orLicenseFound = false\n for (const orLicense of orLicenses) {\n if (exclude.has(orLicense)) {\n orLicenseFound = true\n }\n }\n if (!orLicenseFound) {\n count++\n console.warn(chalk.yellow(`${name}: Package License not allowed [${license}]`))\n }\n }\n }\n }\n console.log('\\n')\n resolve(count)\n }\n })\n })\n }),\n )\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, value) => prev || value, 0)\n )\n}\n","import { 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 { generateIgnoreFiles } from '../lib/index.ts'\n\nconst filename = '.npmignore'\n\nexport const npmignoreGen = (pkg?: string) => generateIgnoreFiles(filename, pkg)\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 {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nfunction detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nfunction findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n let patterns: string[] = pkg.workspaces ?? []\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n if (target === 'pnpm') {\n return convertToPnpm(cwd, workspacePaths)\n }\n return convertToYarn(cwd, workspacePaths)\n}\n","import {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Save workspace patterns before removing — fall back to pnpm-workspace.yaml if already converted\n const workspacePatterns: string[] = pkg.workspaces ?? readPnpmWorkspacePatterns(cwd)\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Swap ts-scripts devDependency (yarn3 → pnpm) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'yarn-to-pnpm')\n\n // 7. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ],\n}\n\nfunction swapInPackageJson(pkgPath: string, direction: Direction): boolean {\n if (!existsSync(pkgPath)) return false\n\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw)\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies']) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [from, to] of SWAP_MAP[direction]) {\n if (deps[from]) {\n deps[to] = deps[from]\n delete deps[from]\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n', 'utf8')\n }\n return changed\n}\n\nexport function swapTsScriptsDependency(cwd: string, workspacePackageJsonPaths: string[], direction: Direction): void {\n let count = 0\n\n // Swap in root package.json\n if (swapInPackageJson(PATH.join(cwd, 'package.json'), direction)) {\n count++\n }\n\n // Swap in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (swapInPackageJson(fullPath, direction)) {\n count++\n }\n }\n\n if (count > 0) {\n const target = direction === 'yarn-to-pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`))\n }\n}\n","import {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nfunction readWorkspacePatternsFromPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n if (!existsSync(pkgPath)) return []\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n return pkg.workspaces ?? []\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns — try pnpm-workspace.yaml first, fall back to pkg.workspaces if already converted\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n const fromPkg = readWorkspacePatternsFromPackageJson(cwd)\n if (fromPkg.length > 0) {\n workspacePatterns.push(...fromPkg)\n } else {\n console.warn(chalk.yellow(' No workspace patterns found'))\n }\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Swap ts-scripts devDependency (pnpm → yarn3) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'pnpm-to-yarn')\n\n // 7. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\\n'))\n return 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 { generateReadmeFiles, loadConfig } from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeGenParams {\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nexport async function readmeGen({\n pkg, templatePath, typedoc, verbose,\n}: ReadmeGenParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n return await generateReadmeFiles({\n logoLinkUrl: config.readme?.logoLinkUrl,\n logoUrl: config.readme?.logoUrl,\n pkg,\n templatePath,\n typedoc,\n verbose,\n })\n}\n","import {\n applyLogoConfig, DEFAULT_README_TEMPLATE, loadConfig, resolveTemplatePath, scaffoldTemplate,\n} from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeInitParams {\n templatePath?: string\n verbose?: boolean\n}\n\nexport async function readmeInit({ templatePath }: ReadmeInitParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n const template = applyLogoConfig(DEFAULT_README_TEMPLATE, config.readme?.logoUrl, config.readme?.logoLinkUrl)\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n await scaffoldTemplate(resolvedTemplatePath, template)\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RebuildParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nexport const rebuild = ({ target }: RebuildParams) => {\n const pm = getPackageManager()\n return runSteps('Rebuild', [\n pm.runXy(['clean']),\n pm.runXy(target ? ['build', '-t', target] : ['build']),\n ])\n}\n","import chalk from 'chalk'\n\nimport { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RecompileParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport interface RecompilePackageParams {\n pkg: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const recompile = async ({\n verbose, target, pkg, incremental,\n}: RecompileParams) => {\n return pkg\n ? await recompilePackage({\n pkg, target, verbose,\n })\n : await recompileAll({\n incremental, target, verbose,\n })\n}\n\nexport const recompilePackage = ({ target, pkg }: RecompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runStepsAsync(\n `Recompile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-recompile', targetOptions)],\n )\n}\n\nexport const recompileAll = async ({\n jobs, verbose, target, incremental,\n}: RecompileParams) => {\n const pm = getPackageManager()\n const start = Date.now()\n const targetOptions = target ? ['-t', target] : []\n if (jobs) {\n console.log(chalk.blue(`Jobs set to [${jobs}]`))\n }\n\n const foreachOptions = {\n incremental, jobs, topological: true, verbose,\n }\n\n const result = await runStepsAsync(`Recompile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-clean', targetOptions, foreachOptions),\n pm.foreachWorkspace('package-compile', targetOptions, foreachOptions),\n ])\n console.log(\n `${chalk.gray('Recompiled in')} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`,\n )\n return result\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'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RetestParams {\n target?: string\n}\n\nexport const retest = ({ target }: RetestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Re-Test [${target}]`, [\n pm.runInWorkspace(target, 'vitest', ['--clearCache']),\n pm.runInWorkspace(target, 'vitest', ['.']),\n ])\n }\n const path = target ?? '.'\n return runSteps('Re-Test', [\n ['vitest', ['--clearCache']],\n ['vitest', [path]],\n ])\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['eslint', ['-c', 'sonar.eslintrc', '.']]])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface TestParams {\n target?: string\n}\n\nexport const test = ({ target }: TestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, 'vitest', ['.'])])\n }\n const path = target ?? '.'\n return runSteps('Test', [['vitest', [path]]])\n}\n","import type { CommandModule } from 'yargs'\n\nimport { build } from '../../actions/index.ts'\n\nexport const buildCommand: CommandModule = {\n command: 'build [package]',\n describe: 'Build - Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to build' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Building: ${argv.package ?? 'all'}`)\n }\n\n process.exitCode = await build({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileCommand: CommandModule = {\n command: 'compile [package]',\n describe: 'Compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileOnlyCommand: CommandModule = {\n command: 'compile-only [package]',\n describe: 'Compile with Typescript & Copy Images (No Publint)',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n publint: false,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { copyAssets } from '../../actions/index.ts'\n\nexport const copyAssetsCommand: CommandModule = {\n command: 'copy-assets [package]',\n describe: 'Copy Assets - Copy the assets from src to dist',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to copy assets' })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log(`Copying Assets: ${argv.package ?? 'all'}`)\n process.exitCode = await copyAssets({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { rebuild } from '../../actions/index.ts'\n\nexport const rebuildCommand: CommandModule = {\n command: 'rebuild [package]',\n describe: 'Rebuild - Clean, Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to rebuild' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Rebuilding: ${argv.package ?? 'all'}`)\n process.exitCode = rebuild({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { recompile } from '../../actions/index.ts'\n\nexport const recompileCommand: CommandModule = {\n command: 'recompile [package]',\n describe: 'Re-compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to re-compile' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Re-compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = await recompile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { buildCommand } from './buildCommand.ts'\nimport { compileCommand } from './compileCommand.ts'\nimport { compileOnlyCommand } from './compileOnlyCommand.ts'\nimport { copyAssetsCommand } from './copyAssetsCommand.ts'\nimport { rebuildCommand } from './rebuildCommand.ts'\nimport { recompileCommand } from './recompileCommand.ts'\n\nexport const xyBuildCommands = (args: Argv) => {\n return args\n .command(buildCommand)\n .command(compileCommand)\n .command(compileOnlyCommand)\n .command(recompileCommand)\n .command(rebuildCommand)\n .command(copyAssetsCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove all Claude configuration files from the repo',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Clean')\n process.exitCode = claudeClean()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCommands } from '../../../actions/index.ts'\n\nexport const commandsCommand: CommandModule = {\n command: 'commands',\n describe: 'Sync XY Labs standard Claude slash commands to .claude/commands/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Commands')\n process.exitCode = claudeCommands()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport {\n claudeCommands, claudeRules, claudeSettings,\n} from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'init',\n describe: 'Initialize all Claude configuration (commands, rules, settings)',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Init')\n const commandsResult = claudeCommands()\n const rulesResult = claudeRules({ force: argv.force as boolean | undefined })\n const settingsResult = await claudeSettings()\n process.exitCode = commandsResult || rulesResult || settingsResult\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeRules } from '../../../actions/index.ts'\n\nexport const rulesCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'rules',\n describe: 'Sync XY Labs standard Claude rules to .claude/rules/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Rules')\n process.exitCode = claudeRules({ force: argv.force as boolean | undefined })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSettings } from '../../../actions/index.ts'\n\nexport const settingsCommand: CommandModule = {\n command: 'settings',\n describe: 'Initialize .claude/settings.local.json with XY Labs defaults',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Settings')\n process.exitCode = await claudeSettings()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSkills } from '../../../actions/index.ts'\n\nexport const skillsCommand: CommandModule = {\n builder: yargs => yargs,\n command: 'skills',\n describe: 'Sync XY Labs standard Claude skills to .claude/skills/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Skills')\n process.exitCode = claudeSkills()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { commandsCommand } from './commandsCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { rulesCommand } from './rulesCommand.ts'\nimport { settingsCommand } from './settingsCommand.ts'\nimport { skillsCommand } from './skillsCommand.ts'\n\nexport const claudeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(cleanCommand)\n .command(commandsCommand)\n .command(initCommand)\n .command(rulesCommand)\n .command(settingsCommand)\n .command(skillsCommand)\n .demandCommand(1, 'Please specify a claude subcommand')\n },\n command: 'claude',\n describe: 'Claude - Claude Code configuration utilities',\n handler: () => {},\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanDocs } from '../../actions/index.ts'\n\nexport const cleanDocsCommand: CommandModule = {\n command: 'clean-docs',\n describe: 'CleanDocs - Clean TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log('Cleaning TypeDocs: all')\n process.exitCode = cleanDocs()\n },\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target', type: 'string' })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dead } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deadCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'dead [package]',\n describe: 'Dead - Check for dead code',\n handler: (argv) => {\n if (argv.verbose) console.log('Dead')\n process.exitCode = dead()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genDocs } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const genDocsCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'gen-docs [package]',\n describe: 'GenDocs - Generate TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log(`Generating TypeDocs: ${argv.package ?? 'all'}`)\n process.exitCode = genDocs({ incremental: !!argv.incremental, pkg: argv.package as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitignore } from '../../actions/index.ts'\n\nexport const gitignoreCommand: CommandModule = {\n command: 'gitignore',\n describe: 'GitIgnore - Generate root .gitignore and remove package .gitignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('GitIgnore')\n process.exitCode = gitignore()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitlint, gitlintFix } from '../../actions/index.ts'\n\nexport const gitlintCommand: CommandModule = {\n command: 'gitlint [package]',\n describe: 'Gitlint - Lint your git config',\n handler: (argv) => {\n if (argv.verbose) console.log('Gitlint')\n process.exitCode = argv.fix ? gitlintFix() : gitlint()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { license } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const licenseCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'license [package]',\n describe: 'License - Check licenses of dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log(`License: ${argv.package ?? 'all'}`)\n process.exitCode = await license()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { npmignoreGen } from '../../actions/index.ts'\n\nexport const npmignoreGenCommand: CommandModule = {\n command: 'npmignore-gen',\n describe: 'NpmIgnore Gen - Generate .npmignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('NpmIgnore Gen')\n process.exitCode = npmignoreGen()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { convert } from '../../actions/index.ts'\n\nconst convertCommand: CommandModule = {\n command: 'convert <target>',\n describe: 'Convert repo to a different package manager (pnpm or yarn)',\n builder: (yargs) => {\n return yargs.positional('target', {\n choices: ['pnpm', 'yarn'] as const,\n describe: 'Target package manager',\n type: 'string',\n })\n },\n handler: (argv) => {\n process.exitCode = convert({\n target: argv.target as string,\n verbose: !!argv.verbose,\n })\n },\n}\n\nexport const packmanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(convertCommand)\n .demandCommand(1, 'Please specify a packman subcommand')\n },\n command: 'packman',\n describe: 'Package Manager - Conversion utilities',\n handler: () => {},\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeGen } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const genCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n .option('typedoc', {\n default: false,\n description: 'Generate TypeDoc reference sections',\n type: 'boolean',\n })\n },\n aliases: ['$0'],\n command: 'gen [package]',\n describe: 'Generate README.md files from template',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Gen')\n process.exitCode = await readmeGen({\n pkg: argv.package as string | undefined,\n templatePath: argv.template as string | undefined,\n typedoc: argv.typedoc as boolean,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize README template and logo files',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Init')\n process.exitCode = await readmeInit({\n templatePath: argv.template as string | undefined,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genCommand } from './genCommand.ts'\nimport { initCommand } from './initCommand.ts'\n\nexport const readmeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.command(genCommand).command(initCommand)\n },\n command: 'readme',\n describe: 'Readme - README file utilities',\n handler: () => {},\n}\n","import type { CommandModule } from 'yargs'\n\nimport { retest } from '../../actions/index.ts'\n\nexport const retestCommand: CommandModule = {\n command: 'retest [target]',\n describe: 'Re-Test - Run Vitest Tests with cleaned cache',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Re-Testing: ${argv.target ?? 'all'}`)\n process.exitCode = retest({ target: argv.target as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { test } from '../../actions/index.ts'\n\nexport const testCommand: CommandModule = {\n command: 'test [target]',\n describe: 'Test - Run Vitest Tests',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Testing: ${argv.target ?? 'all'}`)\n process.exitCode = test({ target: argv.target as string })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { claudeCommand } from './claude/index.ts'\nimport { cleanDocsCommand } from './cleanDocsCommand.ts'\nimport { deadCommand } from './deadCommand.ts'\nimport { genDocsCommand } from './genDocsCommand.ts'\nimport { gitignoreCommand } from './gitignoreCommand.ts'\nimport { gitlintCommand } from './gitlintCommand.ts'\nimport { licenseCommand } from './licenseCommand.ts'\nimport { npmignoreGenCommand } from './npmignoreGenCommand.ts'\nimport { packmanCommand } from './packmanCommand.ts'\nimport { readmeCommand } from './readme/index.ts'\nimport { retestCommand } from './retestCommand.ts'\nimport { testCommand } from './testCommand.ts'\n\nexport const xyCommonCommands = (args: Argv) => {\n return args\n .command(claudeCommand)\n .command(licenseCommand)\n .command(deadCommand)\n .command(genDocsCommand)\n .command(cleanDocsCommand)\n .command(gitlintCommand)\n .command(gitignoreCommand)\n .command(npmignoreGenCommand)\n .command(packmanCommand)\n .command(readmeCommand)\n .command(retestCommand)\n .command(testCommand)\n}\n","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'\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","import chalk from 'chalk'\nimport type { Argv } from 'yargs'\n\nimport { xyBuildCommands } from './build/index.ts'\nimport { xyCommonCommands } from './common/index.ts'\nimport { xyLintCommands } from './lint/index.ts'\nimport { xyParseOptions } from './xyParseOptions.ts'\n\nexport const xyBase = async (plugins?: (args: Argv) => Argv) => {\n const options = xyParseOptions()\n let args = xyBuildCommands(xyCommonCommands(xyLintCommands(options)))\n if (plugins) args = plugins(args)\n return await args\n .demandCommand(1)\n .command('*', '', () => {\n console.error(chalk.yellow(`Command not found [${chalk.magenta(process.argv[2])}]`))\n console.log(chalk.gray('Try \\'xy --help\\' for list of commands'))\n })\n .version()\n .help().argv\n}\n","import type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport { tryRunLocalScript } from '../lib/index.ts'\n\nexport const xyParseOptions = (): Argv => {\n return yargs(hideBin(process.argv))\n .scriptName('yarn xy')\n .middleware((argv) => {\n const commandName = argv._[0] as string\n if (commandName && argv._.length <= 1) {\n const result = tryRunLocalScript(commandName)\n if (result !== undefined) {\n process.exit(result)\n }\n }\n }, true)\n .option('jobs', {\n alias: 'j',\n default: undefined,\n description: 'Max parallel jobs',\n type: 'number',\n })\n .option('verbose', {\n alias: 'v',\n default: false,\n description: 'Run with verbose logging',\n type: 'boolean',\n })\n .option('incremental', {\n alias: 'i',\n default: false,\n description: 'Attempt to perform the action only on changed packages',\n type: 'boolean',\n })\n .option('profile', {\n alias: 'p',\n default: false,\n description: 'Profile action',\n type: 'boolean',\n })\n}\n"],"mappings":"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","names":["chalk","require","chalk","ex","ex","error","chalk","existsSync","readFileSync","existsSync","readFileSync","chalk","filename","chalk","readFileSync","createRequire","PATH","chalk","require","createRequire","packageRoot","PATH","readFileSync","chalk","readFileSync","createRequire","PATH","require","packageRoot","templatesDir","chalk","existsSync","chalk","chalk","config","existsSync","existsSync","chalk","config","chalk","existsSync","spawnSync","readFileSync","PATH","chalk","PATH","readFileSync","chalk","spawnSync","chalk","existsSync","readdirSync","PATH","chalk","existsSync","chalk","PATH","readdirSync","existsSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","spawnSync","mkdirSync","existsSync","mkdirSync","writeFileSync","PATH","createInterface","chalk","askConfirmation","createInterface","PATH","mkdirSync","existsSync","chalk","writeFileSync","existsSync","mkdirSync","readdirSync","readFileSync","rmSync","statSync","writeFileSync","PATH","chalk","PATH","mkdirSync","filename","existsSync","readFileSync","writeFileSync","readdirSync","statSync","rmSync","chalk","chalk","chalk","chalk","publint","chalk","path","chalk","path","chalk","chalk","fs","fs","fs","path","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","unlinkSync","chalk","unlinkSync","chalk","chalk","chalk","execSync","chalk","ParseGitConfig","chalk","chalk","name","license","readFileSync","writeFileSync","PATH","chalk","rules","config","fix","readFileSync","writeFileSync","PATH","chalk","readFileSync","PATH","path","writeFileSync","chalk","glob","fix","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","existsSync","mkdirSync","readFileSync","rmSync","writeFileSync","PATH","chalk","existsSync","readFileSync","writeFileSync","PATH","chalk","writeFileSync","PATH","chalk","existsSync","readFileSync","rmSync","mkdirSync","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","readPnpmWorkspacePatterns","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","existsSync","PATH","readFileSync","statSync","readdirSync","subPath","chalk","config","config","chalk","chalk","chalk","fix","chalk","path","path","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","initCommand","yargs","yargs","initCommand","yargs","yargs","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","yargs","yargs","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","chalk","chalk"]}
|
|
1
|
+
{"version":3,"sources":["../../src/actions/build.ts","../../src/lib/checkResult.ts","../../src/lib/claudeMdTemplate.ts","../../src/lib/deleteGlob.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/file/constants.ts","../../src/lib/file/fileLines.ts","../../src/lib/string/empty.ts","../../src/lib/string/union.ts","../../src/lib/file/ReadFileSyncOptions.ts","../../src/lib/generateIgnoreFiles.ts","../../src/lib/initCwd.ts","../../src/lib/generateReadmeFiles.ts","../../src/lib/gitignoreTemplate.ts","../../src/lib/loadConfig.ts","../../src/lib/runSteps.ts","../../src/lib/runStepsAsync.ts","../../src/lib/tryRunLocalScript.ts","../../src/actions/claude-clean.ts","../../src/actions/claude-commands.ts","../../src/actions/claude-rules.ts","../../src/actions/claude-settings.ts","../../src/actions/claude-skills.ts","../../src/actions/clean-docs.ts","../../src/actions/compile.ts","../../src/actions/copy-assets.ts","../../src/actions/cycle.ts","../../src/actions/dead.ts","../../src/actions/deplint/deplint.ts","../../src/actions/deplint/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/gen-docs.ts","../../src/actions/gitignore.ts","../../src/actions/gitlint.ts","../../src/actions/gitlint-fix.ts","../../src/actions/knip.ts","../../src/actions/license.ts","../../src/actions/lintlint.ts","../../src/actions/npmignore-gen.ts","../../src/actions/package-lint.ts","../../src/actions/packman/convert.ts","../../src/actions/packman/convertToPnpm.ts","../../src/actions/packman/rewriteScripts.ts","../../src/actions/packman/rewriteSourceImports.ts","../../src/actions/packman/swapTsScriptsDependency.ts","../../src/actions/packman/convertToYarn.ts","../../src/actions/publint.ts","../../src/actions/readme-gen.ts","../../src/actions/readme-init.ts","../../src/actions/rebuild.ts","../../src/actions/recompile.ts","../../src/actions/relint.ts","../../src/actions/retest.ts","../../src/actions/sonar.ts","../../src/actions/test.ts","../../src/xy/build/buildCommand.ts","../../src/xy/build/compileCommand.ts","../../src/xy/build/compileOnlyCommand.ts","../../src/xy/build/copyAssetsCommand.ts","../../src/xy/build/rebuildCommand.ts","../../src/xy/build/recompileCommand.ts","../../src/xy/build/index.ts","../../src/xy/common/claude/cleanCommand.ts","../../src/xy/common/claude/commandsCommand.ts","../../src/xy/common/claude/initCommand.ts","../../src/xy/common/claude/rulesCommand.ts","../../src/xy/common/claude/settingsCommand.ts","../../src/xy/common/claude/skillsCommand.ts","../../src/xy/common/claude/index.ts","../../src/xy/common/cleanDocsCommand.ts","../../src/xy/param.ts","../../src/xy/common/deadCommand.ts","../../src/xy/common/genDocsCommand.ts","../../src/xy/common/gitignoreCommand.ts","../../src/xy/common/gitlintCommand.ts","../../src/xy/common/licenseCommand.ts","../../src/xy/common/npmignoreGenCommand.ts","../../src/xy/common/packmanCommand.ts","../../src/xy/common/readme/genCommand.ts","../../src/xy/common/readme/initCommand.ts","../../src/xy/common/readme/index.ts","../../src/xy/common/retestCommand.ts","../../src/xy/common/testCommand.ts","../../src/xy/common/index.ts","../../src/xy/lint/cycleCommand.ts","../../src/xy/lint/deplintCommand.ts","../../src/xy/lint/fixCommand.ts","../../src/xy/lint/knipCommand.ts","../../src/xy/lint/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","../../src/xy/xy.ts","../../src/xy/xyParseOptions.ts"],"sourcesContent":["import chalk from 'chalk'\n\nimport { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface BuildParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const build = async ({\n incremental, jobs, target, verbose, pkg,\n}: BuildParams) => {\n const start = Date.now()\n const pkgOptions = (pkg === undefined) ? [] : [pkg] // must go first\n const incrementalOptions = incremental ? ['-i'] : []\n const verboseOptions = verbose ? ['-v'] : []\n const targetOptions = (target === undefined) ? [] : ['-t', target]\n const jobsOptions = (jobs === undefined) ? [] : ['-j', `${jobs}`]\n if (jobs !== undefined) {\n console.log(chalk.blue(`Jobs set to [${jobs}]`))\n }\n\n const pm = getPackageManager()\n const result = await runStepsAsync(`Build${incremental ? '-Incremental' : ''} [${pkg ?? 'All'}]`, [\n pm.runXy(['compile', ...pkgOptions, ...targetOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions, '--types', 'tsup']),\n pm.runXy(['publint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['deplint', ...pkgOptions, ...verboseOptions, ...jobsOptions, ...incrementalOptions]),\n pm.runXy(['lint', ...pkgOptions, ...verboseOptions, ...incrementalOptions]),\n ])\n console.log(`${chalk.gray('Built in')} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`)\n return result\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 {\n readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'claude')\n\nexport const XYLABS_RULES_PREFIX = 'xylabs-'\nexport const XYLABS_COMMANDS_PREFIX = 'xy-'\nexport const LEGACY_COMMANDS_PREFIX = 'xylabs-'\nexport const XYLABS_SKILLS_PREFIX = 'xylabs-'\n\nexport const claudeMdRuleTemplates = (): Record<string, string> => {\n const rulesDir = PATH.resolve(templatesDir, 'rules')\n const files = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(rulesDir, file), 'utf8')\n }\n return result\n}\n\nexport const claudeCommandTemplates = (): Record<string, string> => {\n const commandsDir = PATH.resolve(templatesDir, 'commands')\n const files = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n const result: Record<string, string> = {}\n for (const file of files) {\n result[file] = readFileSync(PATH.resolve(commandsDir, file), 'utf8')\n }\n return result\n}\n\n// Returns { 'xylabs-foo': { 'SKILL.md': '...', 'other.ts': '...' } }\nexport const claudeSkillTemplates = (): Record<string, Record<string, string>> => {\n const skillsDir = PATH.resolve(templatesDir, 'skills')\n const dirs = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n const result: Record<string, Record<string, string>> = {}\n for (const dir of dirs) {\n const dirPath = PATH.resolve(skillsDir, dir)\n const files = readdirSync(dirPath, { recursive: true, encoding: 'utf8' }) as string[]\n result[dir] = {}\n for (const file of files) {\n if (statSync(PATH.resolve(dirPath, file)).isFile()) {\n result[dir][file] = readFileSync(PATH.resolve(dirPath, file), 'utf8')\n }\n }\n }\n return result\n}\n\nexport const claudeMdProjectTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-project.md'), 'utf8')\n\nexport const claudeMdLocalTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'CLAUDE-local.md'), 'utf8')\n","import fs from 'node:fs'\n\nimport { glob } from 'glob'\n\nexport const deleteGlob = (globPath: string) => {\n // Find all files matching the glob pattern\n const files = glob.sync(globPath)\n\n // Remove each file or directory\n for (const file of files) {\n fs.rmSync(file, { recursive: true, force: true })\n }\n}\n","import { 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 const WINDOWS_NEWLINE_REGEX = /\\r\\n/g\nexport const CROSS_PLATFORM_NEWLINE = '\\n'\n","import type { PathLike, WriteFileOptions } from 'node:fs'\nimport {\n existsSync, readFileSync,\n writeFileSync,\n} from 'node:fs'\n\nimport { notEmpty } from '../string/index.ts'\nimport { CROSS_PLATFORM_NEWLINE, WINDOWS_NEWLINE_REGEX } from './constants.ts'\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const readLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n existsSync(uri)\n ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE)\n : []\n\nexport const readNonEmptyLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n readLines(uri, options).filter(notEmpty)\n\nexport const writeLines = (uri: PathLike, lines: string[], options: WriteFileOptions = defaultReadFileSyncOptions) => {\n const existing = existsSync(uri) ? readFileSync(uri, options) : undefined\n const desired = lines.join(CROSS_PLATFORM_NEWLINE)\n // Check if the file is different before writing\n if (existing !== desired) writeFileSync(uri, desired, options)\n}\n","export const empty = (value?: string | undefined): boolean => value?.trim().length === 0\nexport const notEmpty = (value?: string | undefined): boolean => !empty(value)\n","export const union = (a: string[], b: string[]): Set<string> => new Set([...new Set(a), ...new Set(b)])\n","export type ReadFileSyncOptions = BufferEncoding | {\n encoding: BufferEncoding\n flags?: string\n}\n\nexport const defaultReadFileSyncOptions: ReadFileSyncOptions = { encoding: 'utf8' }\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { readNonEmptyLines, writeLines } from './file/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\nimport { union } from './string/index.ts'\n\nconst localeCompare = (a: string, b: string) => a.localeCompare(b)\n\nconst mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].toSorted(localeCompare)\n\nexport const generateIgnoreFiles = (filename: string, pkg?: string) => {\n console.log(chalk.green(`Generate ${filename} Files`))\n const cwd = INIT_CWD() ?? '.'\n const pm = getPackageManager()\n const singleWorkspace = pkg ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const readEntries = (location: string): string[] => readNonEmptyLines(`${location}/${filename}`)\n const writeEntries = (location: string, entries: string[]) => writeLines(`${location}/${filename}`, entries)\n const results = workspaces.map(({ location, name }) => {\n try {\n writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)))\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(`Generate ${filename} Files [${name}] [${error.message}]`)\n return 1\n }\n })\n const succeeded = results.every(result => result === 0)\n return succeeded ? 0 : 1\n}\n","export function INIT_CWD(): string | undefined {\n if (!process.env.INIT_CWD) console.error('Missing INIT_CWD')\n return process.env.INIT_CWD\n}\n","import { execSync } from 'node:child_process'\nimport FS, { readFileSync } from 'node:fs'\nimport {\n mkdir, readFile, writeFile,\n} from 'node:fs/promises'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst readmeTemplatesDir = PATH.resolve(packageRoot, 'templates', 'readme')\n\ninterface GenerateReadmeFilesParams {\n logoLinkUrl?: string\n logoUrl?: string\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nfunction fillTemplate(template: string, data: Record<string, string>): string {\n const additionalData: Record<string, string> = { ...data, safeName: data.name.replaceAll('/', '__').replaceAll('@', '') }\n return template.replaceAll(/\\{\\{(.*?)\\}\\}/g, (_, key: string) => additionalData[key.trim()] ?? '')\n}\n\nfunction generateTypedoc(packageLocation: string, entryPoints: string[]): string {\n const tempDir = PATH.join(packageLocation, '.temp-typedoc')\n\n try {\n if (!FS.existsSync(tempDir)) {\n FS.mkdirSync(tempDir, { recursive: true })\n }\n\n const typedocConfig = {\n disableSources: true,\n entryPointStrategy: 'expand',\n entryPoints: entryPoints.map(ep => PATH.resolve(packageLocation, ep)),\n excludeExternals: true,\n excludeInternal: true,\n excludePrivate: true,\n githubPages: false,\n hideBreadcrumbs: true,\n hideGenerator: true,\n hidePageTitle: true,\n out: tempDir,\n plugin: ['typedoc-plugin-markdown'],\n readme: 'none',\n skipErrorChecking: true,\n sort: ['source-order'],\n theme: 'markdown',\n useCodeBlocks: true,\n }\n\n const typedocJsonPath = PATH.join(tempDir, 'typedoc.json')\n FS.writeFileSync(typedocJsonPath, JSON.stringify(typedocConfig, null, 2))\n\n try {\n execSync(`npx typedoc --options ${typedocJsonPath}`, {\n cwd: process.cwd(),\n stdio: ['ignore', 'pipe', 'pipe'],\n })\n } catch {\n return ''\n }\n\n return consolidateMarkdown(tempDir)\n } catch {\n return ''\n } finally {\n try {\n FS.rmSync(tempDir, { force: true, recursive: true })\n } catch {\n // ignore cleanup errors\n }\n }\n}\n\nfunction consolidateMarkdown(tempDir: string): string {\n let consolidated = '## Reference\\n\\n'\n\n const mainReadmePath = PATH.join(tempDir, 'README.md')\n if (FS.existsSync(mainReadmePath)) {\n const mainContent = FS.readFileSync(mainReadmePath, 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n\n consolidated += mainContent + '\\n\\n'\n }\n\n consolidated += processDirectory(tempDir)\n\n return consolidated\n .replaceAll(/\\n\\n\\n+/g, '\\n\\n')\n .replaceAll(/^#### /gm, '### ')\n .replaceAll(/^##### /gm, '#### ')\n .replaceAll(/^###### /gm, '##### ')\n}\n\nfunction processDirectory(dir: string, level = 0): string {\n const indent = ' '.repeat(level)\n let content = ''\n\n try {\n const items = FS.readdirSync(dir, { withFileTypes: true })\n\n for (const item of items) {\n if (item.isDirectory()) continue\n if (item.name === 'README.md' || !item.name.endsWith('.md')) continue\n\n const fileContent = FS.readFileSync(PATH.join(dir, item.name), 'utf8')\n .replace(/^---(.|\\n)*?---\\n/, '')\n const moduleName = item.name.replace('.md', '')\n\n content += `\\n\\n${indent}### <a id=\"${moduleName}\"></a>${moduleName}\\n\\n`\n content += fileContent\n .replace(/^# .+\\n/, '')\n .replaceAll(/\\]\\((.+?)\\.md\\)/g, '](#$1)')\n }\n\n for (const item of items) {\n if (!item.isDirectory()) continue\n if (item.name === 'spec' || item.name.includes('.spec')) continue\n\n content += `\\n\\n${indent}### ${item.name}\\n`\n content += processDirectory(PATH.join(dir, item.name), level + 1)\n }\n } catch {\n // skip unreadable directories\n }\n\n return content\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport const DEFAULT_README_TEMPLATE = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.template.md'), 'utf8')\nexport const DEFAULT_README_BODY = readFileSync(PATH.resolve(readmeTemplatesDir, 'README.body.md'), 'utf8')\n\nexport function applyLogoConfig(template: string, logoUrl?: string, logoLinkUrl?: string): string {\n let result = template\n if (logoUrl) {\n result = result.replace(/\\[logo]: .+/, `[logo]: ${logoUrl}`)\n if (logoLinkUrl) {\n result = result.replace(/\\[!\\[logo]\\[]][^)]*\\)/, `[![logo][]](${logoLinkUrl})`)\n }\n } else {\n result = result.replace(/\\[!\\[logo]\\[]][^\\n]*\\n*/, '')\n result = result.replace(/\\[logo]: [^\\n]*\\n?/, '')\n }\n return result\n}\n\nexport function resolveTemplatePath(templatePath: string | undefined): string {\n const cwd = INIT_CWD() ?? '.'\n return templatePath ?? PATH.join(cwd, '.xy', 'README.template.md')\n}\n\nasync function loadOrCreateTemplate(resolvedTemplatePath: string): Promise<{\n created: boolean\n template: string\n}> {\n try {\n const template = await readFile(resolvedTemplatePath, 'utf8')\n return { created: false, template }\n } catch {\n console.log(chalk.yellow(`Template not found: ${resolvedTemplatePath}`))\n const shouldCreate = await askConfirmation('Would you like to create a stock template? (y/N) ')\n if (!shouldCreate) {\n throw new Error('Template creation declined')\n }\n const template = DEFAULT_README_TEMPLATE\n await scaffoldTemplate(resolvedTemplatePath, template)\n return { created: true, template }\n }\n}\n\nexport async function scaffoldTemplate(resolvedTemplatePath: string, template: string): Promise<void> {\n const xyDir = PATH.dirname(resolvedTemplatePath)\n await mkdir(xyDir, { recursive: true })\n await writeFile(resolvedTemplatePath, template)\n console.log(chalk.green(`Created template: ${resolvedTemplatePath}`))\n const bodyPath = PATH.join(xyDir, 'README.body.md')\n await writeFile(bodyPath, DEFAULT_README_BODY)\n console.log(chalk.green(`Created body template: ${bodyPath}`))\n}\n\nasync function resolveBody(location: string, defaultBody: string): Promise<string> {\n const localBodyPath = PATH.join(location, 'README.body.md')\n try {\n return await readFile(localBodyPath, 'utf8')\n } catch {\n return defaultBody\n }\n}\n\nasync function generateReadmeForWorkspace(\n location: string,\n name: string,\n template: string,\n defaultBody: string,\n typedoc: boolean,\n verbose: boolean,\n): Promise<boolean> {\n try {\n const pkgJsonPath = PATH.join(location, 'package.json')\n const pkgJson = JSON.parse(await readFile(pkgJsonPath, 'utf8'))\n const body = await resolveBody(location, defaultBody)\n const typedocContent = typedoc ? generateTypedoc(location, ['src/index*.ts']) : ''\n const readmeContent = fillTemplate(template, {\n ...pkgJson, body, typedoc: typedocContent,\n })\n await writeFile(PATH.join(location, 'README.md'), readmeContent)\n if (verbose) console.log(chalk.green(` ${name}`))\n return true\n } catch (ex) {\n const error = ex as Error\n console.warn(chalk.yellow(` Skipped ${location}: ${error.message}`))\n return false\n }\n}\n\nexport async function generateReadmeFiles({\n logoLinkUrl, logoUrl, pkg, templatePath, typedoc = false, verbose = false,\n}: GenerateReadmeFilesParams): Promise<number> {\n console.log(chalk.green('Generate README Files'))\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n\n let template: string\n let templateCreated: boolean\n try {\n ({ template, created: templateCreated } = await loadOrCreateTemplate(resolvedTemplatePath))\n } catch {\n return 1\n }\n\n template = applyLogoConfig(template, logoUrl, logoLinkUrl)\n\n if (templateCreated) {\n console.log(chalk.green('Generating README files for all packages...'))\n }\n\n const xyDir = PATH.dirname(resolvedTemplatePath)\n const xyBodyPath = PATH.join(xyDir, 'README.body.md')\n let defaultBody: string\n try {\n defaultBody = await readFile(xyBodyPath, 'utf8')\n } catch {\n defaultBody = DEFAULT_README_BODY\n }\n\n const pm = getPackageManager()\n const singleWorkspace = pkg && !templateCreated ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n let failed = false\n\n for (const { location, name } of workspaces) {\n const success = await generateReadmeForWorkspace(location, name, template, defaultBody, typedoc, verbose)\n if (!success) failed = true\n }\n\n return failed ? 1 : 0\n}\n","import { readFileSync } from 'node:fs'\nimport { createRequire } from 'node:module'\nimport PATH from 'node:path'\n\nconst require = createRequire(import.meta.url)\nconst packageRoot = PATH.dirname(require.resolve('@xylabs/ts-scripts-common/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'gitignore')\n\nexport const gitignoreTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'template.gitignore'), 'utf8')\n","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 { spawnSync } from 'node:child_process'\nimport { readFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\n\n/**\n * Attempts to run a local root package.json script instead of the built-in\n * xy command. Returns the exit code if the override ran, or undefined if\n * no override applies (no matching script or recursion guard).\n */\nexport function tryRunLocalScript(commandName: string): number | undefined {\n // Prevent infinite recursion if the local script calls yarn xy\n if (process.env.XY_LOCAL_SCRIPT === '1') return undefined\n\n // Check if root package.json has a matching script\n const rootPkgPath = PATH.resolve(process.cwd(), 'package.json')\n let rootPkg: { scripts?: Record<string, string> }\n try {\n rootPkg = JSON.parse(readFileSync(rootPkgPath, 'utf8'))\n } catch {\n return undefined\n }\n\n if (!rootPkg.scripts?.[commandName]) return undefined\n\n console.log(chalk.blue(`Delegating \"${commandName}\" to local script`))\n const pm = getPackageManager()\n const result = spawnSync(pm.command, ['run', commandName], {\n cwd: process.cwd(),\n encoding: 'utf8',\n env: {\n FORCE_COLOR: '3', ...process.env, XY_LOCAL_SCRIPT: '1',\n },\n shell: true,\n stdio: 'inherit',\n })\n return result.status ?? 1\n}\n","import {\n existsSync, readdirSync, rmSync, unlinkSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nfunction removeFile(filePath: string, label: string): boolean {\n if (existsSync(filePath)) {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nfunction removeDir(dirPath: string, label: string): boolean {\n if (existsSync(dirPath)) {\n rmSync(dirPath, { recursive: true })\n console.log(chalk.yellow(` Removed ${label}`))\n return true\n }\n return false\n}\n\nexport function claudeClean(): number {\n console.log(chalk.green('Clean Claude configuration'))\n const cwd = INIT_CWD() ?? process.cwd()\n let removed = 0\n\n // Root-level files\n const rootFiles = ['CLAUDE.md', 'CLAUDE.local.md']\n for (const file of rootFiles) {\n if (removeFile(PATH.resolve(cwd, file), file)) removed++\n }\n\n // .claude directory\n if (removeDir(PATH.resolve(cwd, '.claude'), '.claude/')) removed++\n\n // Package-level CLAUDE.md files\n const packagesDir = PATH.resolve(cwd, 'packages')\n if (existsSync(packagesDir)) {\n const findClaudeFiles = (dir: string, prefix: string) => {\n const entries = readdirSync(dir, { withFileTypes: true })\n for (const entry of entries) {\n const fullPath = PATH.resolve(dir, entry.name)\n const label = `${prefix}${entry.name}`\n if (entry.isFile() && (entry.name === 'CLAUDE.md' || entry.name === 'CLAUDE.local.md')) {\n if (removeFile(fullPath, label)) removed++\n } else if (entry.isDirectory() && entry.name === '.claude') {\n if (removeDir(fullPath, `${label}/`)) removed++\n } else if (entry.isDirectory() && entry.name !== 'node_modules' && entry.name !== 'dist') {\n findClaudeFiles(fullPath, `${label}/`)\n }\n }\n }\n findClaudeFiles(packagesDir, 'packages/')\n }\n\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} item(s)`))\n } else {\n console.log(chalk.gray(' Nothing to clean'))\n }\n\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n claudeCommandTemplates, INIT_CWD,\n LEGACY_COMMANDS_PREFIX, XYLABS_COMMANDS_PREFIX,\n} from '../lib/index.ts'\n\nconst syncCommandFiles = (commandsDir: string) => {\n const templates = claudeCommandTemplates()\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(commandsDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleCommands = (commandsDir: string, templateNames: Set<string>) => {\n const existingCommands = readdirSync(commandsDir).filter(f => f.startsWith(XYLABS_COMMANDS_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingCommands) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(commandsDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst removeLegacyCommands = (commandsDir: string): number => {\n const legacyFiles = readdirSync(commandsDir).filter(f => f.startsWith(LEGACY_COMMANDS_PREFIX) && f.endsWith('.md'))\n for (const file of legacyFiles) {\n unlinkSync(PATH.resolve(commandsDir, file))\n }\n return legacyFiles.length\n}\n\nconst logCommandsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/commands/${XYLABS_COMMANDS_PREFIX}*.md: already up to date`))\n }\n}\n\nexport const claudeCommands = (): number => {\n const cwd = INIT_CWD() ?? process.cwd()\n const commandsDir = PATH.resolve(cwd, '.claude', 'commands')\n\n mkdirSync(commandsDir, { recursive: true })\n\n const legacy = removeLegacyCommands(commandsDir)\n const {\n created, templateNames, updated,\n } = syncCommandFiles(commandsDir)\n const removed = removeStaleCommands(commandsDir, templateNames)\n logCommandsResult(created, updated, removed + legacy)\n\n return 0\n}\n","import { spawnSync } from 'node:child_process'\nimport {\n existsSync, mkdirSync, readdirSync, readFileSync, unlinkSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n claudeMdLocalTemplate, claudeMdRuleTemplates, INIT_CWD,\n XYLABS_RULES_PREFIX,\n} from '../lib/index.ts'\n\nconst syncRuleFiles = (rulesDir: string) => {\n const templates = claudeMdRuleTemplates()\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [filename, content] of Object.entries(templates)) {\n const targetPath = PATH.resolve(rulesDir, filename)\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleRules = (rulesDir: string, templateNames: Set<string>) => {\n const existingRules = readdirSync(rulesDir).filter(f => f.startsWith(XYLABS_RULES_PREFIX) && f.endsWith('.md'))\n let removed = 0\n\n for (const file of existingRules) {\n if (!templateNames.has(file)) {\n unlinkSync(PATH.resolve(rulesDir, file))\n removed++\n }\n }\n\n return removed\n}\n\nconst logRulesResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/rules/${XYLABS_RULES_PREFIX}*.md: already up to date`))\n }\n}\n\nconst ensureProjectClaudeMd = (cwd: string, force?: boolean) => {\n const projectPath = PATH.resolve(cwd, 'CLAUDE.md')\n\n if (!existsSync(projectPath) || force) {\n if (force && existsSync(projectPath)) {\n console.log(chalk.yellow('Regenerating CLAUDE.md'))\n }\n console.log(chalk.green('Generating CLAUDE.md via claude /init...'))\n const result = spawnSync('claude', ['-p', '/init', '--allowedTools', 'Read', 'Write', 'Glob', 'Grep'], {\n cwd,\n shell: true,\n stdio: 'inherit',\n })\n if (result.status !== 0) {\n console.error(chalk.red('claude /init failed — is Claude Code installed?'))\n return 1\n }\n } else {\n console.log(chalk.gray('CLAUDE.md already exists (skipped, use --force to regenerate)'))\n }\n return 0\n}\n\nconst ensureLocalClaudeMd = (cwd: string) => {\n const localPath = PATH.resolve(cwd, 'CLAUDE.local.md')\n\n if (existsSync(localPath)) {\n console.log(chalk.gray('CLAUDE.local.md already exists (skipped)'))\n } else {\n writeFileSync(localPath, claudeMdLocalTemplate(), 'utf8')\n console.log(chalk.green('Generated CLAUDE.local.md'))\n }\n}\n\nexport const claudeRules = ({ force }: { force?: boolean } = {}): number => {\n const cwd = INIT_CWD() ?? process.cwd()\n const rulesDir = PATH.resolve(cwd, '.claude', 'rules')\n\n mkdirSync(rulesDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncRuleFiles(rulesDir)\n const removed = removeStaleRules(rulesDir, templateNames)\n logRulesResult(created, updated, removed)\n const claudeMdResult = ensureProjectClaudeMd(cwd, force)\n ensureLocalClaudeMd(cwd)\n\n return claudeMdResult ?? 0\n}\n","import {\n existsSync, mkdirSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\nimport { createInterface } from 'node:readline'\n\nimport chalk from 'chalk'\n\nimport { INIT_CWD } from '../lib/index.ts'\n\nconst DEFAULT_SETTINGS = {\n permissions: {\n allow: [\n 'Bash(git *)',\n 'Bash(yarn *)',\n 'Bash(npx *)',\n 'Bash(node *)',\n 'Bash(ls *)',\n 'Bash(mkdir *)',\n 'Bash(cp *)',\n 'Bash(mv *)',\n 'Bash(rm *)',\n 'Bash(cat *)',\n 'Bash(head *)',\n 'Bash(tail *)',\n 'Bash(echo *)',\n 'Bash(pwd)',\n 'Bash(which *)',\n 'Bash(grep *)',\n 'Bash(find *)',\n 'Bash(npm view *)',\n 'Bash(gh *)',\n 'Read',\n 'Edit',\n 'Write',\n 'Glob',\n 'Grep',\n 'Skill',\n ],\n deny: [\n 'Bash(git push --force *)',\n 'Bash(git reset --hard *)',\n 'Bash(rm -rf /*)',\n ],\n },\n}\n\nfunction askConfirmation(question: string): Promise<boolean> {\n const rl = createInterface({ input: process.stdin, output: process.stdout })\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close()\n resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes')\n })\n })\n}\n\nexport async function claudeSettings(): Promise<number> {\n const cwd = INIT_CWD() ?? process.cwd()\n const claudeDir = PATH.resolve(cwd, '.claude')\n const settingsPath = PATH.resolve(claudeDir, 'settings.local.json')\n\n mkdirSync(claudeDir, { recursive: true })\n\n if (existsSync(settingsPath)) {\n const confirmed = await askConfirmation(\n chalk.yellow(`${settingsPath} already exists. Replace it? (y/N) `),\n )\n if (!confirmed) {\n console.log(chalk.gray('Skipped — existing settings.local.json preserved'))\n return 0\n }\n }\n\n writeFileSync(settingsPath, `${JSON.stringify(DEFAULT_SETTINGS, null, 2)}\\n`, 'utf8')\n console.log(chalk.green('Generated .claude/settings.local.json'))\n return 0\n}\n","import {\n existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport {\n claudeSkillTemplates, INIT_CWD, XYLABS_SKILLS_PREFIX,\n} from '../lib/index.ts'\n\nconst syncSkillFiles = (skillsDir: string) => {\n const templates = claudeSkillTemplates()\n const templateNames = new Set(Object.keys(templates))\n let updated = 0\n let created = 0\n\n for (const [skillName, files] of Object.entries(templates)) {\n const skillDir = PATH.resolve(skillsDir, skillName)\n mkdirSync(skillDir, { recursive: true })\n\n for (const [filename, content] of Object.entries(files)) {\n const targetPath = PATH.resolve(skillDir, filename)\n mkdirSync(PATH.dirname(targetPath), { recursive: true })\n const existing = existsSync(targetPath) ? readFileSync(targetPath, 'utf8') : undefined\n if (existing === content) continue\n writeFileSync(targetPath, content, 'utf8')\n if (existing) {\n updated++\n } else {\n created++\n }\n }\n }\n\n return {\n created, templateNames, updated,\n }\n}\n\nconst removeStaleSkills = (skillsDir: string, templateNames: Set<string>) => {\n const existingSkills = readdirSync(skillsDir).filter(\n f => f.startsWith(XYLABS_SKILLS_PREFIX) && statSync(PATH.resolve(skillsDir, f)).isDirectory(),\n )\n let removed = 0\n\n for (const dir of existingSkills) {\n if (!templateNames.has(dir)) {\n rmSync(PATH.resolve(skillsDir, dir), { recursive: true })\n removed++\n }\n }\n\n return removed\n}\n\nconst logSkillsResult = (created: number, updated: number, removed: number) => {\n if (created || updated || removed) {\n const parts = [\n created ? `${created} created` : '',\n updated ? `${updated} updated` : '',\n removed ? `${removed} removed` : '',\n ].filter(Boolean)\n console.log(chalk.green(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: ${parts.join(', ')}`))\n } else {\n console.log(chalk.gray(`.claude/skills/${XYLABS_SKILLS_PREFIX}*/: already up to date`))\n }\n}\n\nexport const claudeSkills = (): number => {\n const cwd = INIT_CWD() ?? process.cwd()\n const skillsDir = PATH.resolve(cwd, '.claude', 'skills')\n\n mkdirSync(skillsDir, { recursive: true })\n\n const {\n created, templateNames, updated,\n } = syncSkillFiles(skillsDir)\n const removed = removeStaleSkills(skillsDir, templateNames)\n logSkillsResult(created, updated, removed)\n\n return 0\n}\n","import path from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { deleteGlob } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const cleanDocs = () => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`Cleaning Docs [${pkgName}]`))\n for (const { location } of getPackageManager().listWorkspaces()) deleteGlob(path.join(location, 'docs'))\n return 0\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CompileParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\ninterface CompilePackageParams {\n pkg: string\n publint?: boolean\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const compile = ({\n verbose, target, pkg, incremental, publint, jobs,\n}: CompileParams) => {\n return pkg\n ? compilePackage({\n pkg, publint, target, verbose,\n })\n : compileAll({\n incremental, jobs, publint, target, verbose,\n })\n}\n\nexport const compilePackage = ({ target, pkg }: CompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runSteps(\n `Compile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-compile', targetOptions)],\n )\n}\n\nexport const compileAll = ({\n jobs, verbose, target, incremental,\n}: CompileParams) => {\n const pm = getPackageManager()\n const start = Date.now()\n const targetOptions = target ? ['-t', target] : []\n if (jobs) {\n console.log(chalk.blue(`Jobs set to [${jobs}]`))\n }\n\n const result = runSteps(`Compile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-compile', targetOptions, {\n incremental, jobs, topological: true, verbose,\n }),\n ])\n console.log(`${chalk.gray('Compiled in')} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`)\n return result\n}\n","import path from 'node:path/posix'\n\nimport chalk from 'chalk'\nimport cpy from 'cpy'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CopyAssetsParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nconst copyPackageTargetAssets = async (target: 'esm' | 'cjs', name: string, location: string) => {\n try {\n const values = await cpy(\n ['**/*.jpg', '**/*.png', '**/*.gif', '**/*.svg', '**/*.webp', '**/*.sass', '**/*.scss', '**/*.gif', '**/*.css'],\n `../dist/${target}`,\n {\n cwd: path.join(process.cwd(), location, 'src'),\n flat: false,\n },\n )\n for (const value of values) {\n console.log(`${value.split('/').pop()} => ./dist/${target}`)\n }\n return 0\n } catch (reason) {\n console.log(`Copy Failed: ${name}: ${reason}`)\n return 1\n }\n}\n\nconst copyTargetAssets = async (target: 'esm' | 'cjs', pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n\n console.log(chalk.green(`Copying Assets [${target.toUpperCase()}]`))\n\n // finds the package or returns all if undefined\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n if (workspaceList.length === 0) {\n console.error(`Package not found [${pkg}]`)\n } else {\n const results = await Promise.all(\n workspaceList.map(async (workspace) => {\n const { location, name } = workspace\n return await copyPackageTargetAssets(target, name, location)\n }),\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n return results.reduce((prev, result) => prev || result, 0)\n }\n return 0\n}\n\nexport const copyAssets = async ({ target, pkg }: CopyAssetsParams) => {\n switch (target) {\n case 'esm': {\n return await copyTargetAssets('esm', pkg)\n }\n case 'cjs': {\n return await copyTargetAssets('cjs', pkg)\n }\n default: {\n return (await copyTargetAssets('esm', pkg)) || (await copyTargetAssets('cjs', pkg))\n }\n }\n}\n","import { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport { 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 { runSteps } from '../lib/index.ts'\n\nexport const dead = () => {\n return runSteps('Dead', [['ts-prune', ['-p', 'tsconfig.json']]])\n}\n","import chalk from 'chalk'\n\nimport { 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'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface GenDocsParams {\n incremental?: boolean\n pkg?: string\n}\n\nexport interface GenDocsPackageParams { pkg: string }\n\nexport const genDocs = ({ pkg, incremental }: GenDocsParams) => {\n return pkg ? genDocsPackage({ pkg }) : genDocsAll({ incremental })\n}\n\nexport const genDocsPackage = ({ pkg }: GenDocsPackageParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [${pkg}]`, [pm.runInWorkspace(pkg, 'package-gen-docs')])\n}\n\nexport const genDocsAll = ({ incremental }: GenDocsParams) => {\n const pm = getPackageManager()\n return runSteps(`GenDocs [All${incremental ? '-Incremental' : ''}]`, [\n pm.foreachWorkspace('package-gen-docs', [], { incremental }),\n ])\n}\n","import { unlinkSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport {\n gitignoreTemplate, INIT_CWD,\n readNonEmptyLines, writeLines,\n} from '../lib/index.ts'\nimport { union } from '../lib/string/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nconst COMMENT_PREFIX = '#'\n\nconst isComment = (line: string): boolean => line.startsWith(COMMENT_PREFIX)\n\nconst isNegation = (line: string): boolean => line.startsWith('!')\n\n/** Parse the template into sections (comment + entries) */\nfunction parseTemplateSections(lines: string[]): string[][] {\n const sections: string[][] = []\n let current: string[] = []\n for (const line of lines) {\n if (isComment(line)) {\n if (current.length > 0) {\n sections.push(current)\n }\n current = [line]\n } else {\n current.push(line)\n }\n }\n if (current.length > 0) {\n sections.push(current)\n }\n return sections\n}\n\n/** Merge template entries into existing entries, preserving structure */\nfunction mergeWithTemplate(existing: string[], templateContent: string): string[] {\n const templateLines = templateContent.split('\\n').filter(line => line.trim().length > 0)\n const sections = parseTemplateSections(templateLines)\n\n // Collect all existing non-comment, non-negation entries\n const existingEntries = new Set(existing.filter(line => !isComment(line)))\n\n // Find template entries that are missing from existing\n const templateEntries = new Set(templateLines.filter(line => !isComment(line)))\n\n // Find custom entries (in existing but not in template)\n const customEntries = [...existingEntries].filter(entry => !templateEntries.has(entry))\n\n // Build the output: template sections first, then custom entries\n const result: string[] = []\n for (const section of sections) {\n for (const line of section) {\n result.push(line)\n }\n result.push('')\n }\n\n if (customEntries.length > 0) {\n result.push('# Custom')\n const sorted = [...union(customEntries, [])].toSorted((a, b) => {\n // Negation patterns sort after their positive counterparts\n if (isNegation(a) && !isNegation(b)) return 1\n if (!isNegation(a) && isNegation(b)) return -1\n return a.localeCompare(b)\n })\n for (const entry of sorted) {\n result.push(entry)\n }\n result.push('')\n }\n\n return result\n}\n\nfunction removePackageGitignores(cwd: string): number {\n let removed = 0\n const workspaces = getPackageManager().listWorkspaces()\n for (const { location } of workspaces) {\n // Skip root workspace\n if (location === '.') continue\n const filePath = `${cwd}/${location}/.gitignore`\n try {\n unlinkSync(filePath)\n console.log(chalk.yellow(` Removed ${location}/.gitignore`))\n removed++\n } catch {\n // File doesn't exist — nothing to do\n }\n }\n return removed\n}\n\n/** @deprecated Use gitignore instead */\nexport const gitignoreGen = gitignore\n\nexport function gitignore(): number {\n console.log(chalk.green('Generate .gitignore'))\n const cwd = INIT_CWD() ?? '.'\n const gitignorePath = `${cwd}/.gitignore`\n\n try {\n const templateContent = gitignoreTemplate()\n const existing = readNonEmptyLines(gitignorePath)\n const merged = mergeWithTemplate(existing, templateContent)\n writeLines(gitignorePath, merged)\n console.log(chalk.green(' Root .gitignore updated'))\n\n const removed = removePackageGitignores(cwd)\n if (removed > 0) {\n console.log(chalk.green(` Removed ${removed} package .gitignore file(s)`))\n }\n\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(chalk.red(`Generate .gitignore failed: ${error.message}`))\n return 1\n }\n}\n","import chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlint = () => {\n console.log(`\\nGitlint Start [${process.cwd()}]\\n`)\n let valid = 0\n let warnings = 0\n const errors = 0\n const gitConfig = ParseGitConfig.sync()\n\n const warn = (message: string) => {\n console.warn(chalk.yellow(`Warning: ${message}`))\n warnings++\n }\n\n if (gitConfig.core.ignorecase) {\n warn('Please set core.ignorecase to FALSE in .git/config file [run yarn gitlint-fix]')\n } else {\n valid++\n }\n\n if (gitConfig.core.autocrlf === false) {\n valid++\n } else {\n warn('Please set core.autocrlf to FALSE in .git/config file [run yarn gitlint-fix]')\n }\n\n if (gitConfig.core.eol === 'lf') {\n valid++\n } else {\n warn('Please set core.eol to \"lf\" in .git/config file [run yarn gitlint-fix]')\n }\n\n const resultMessages: string[] = []\n if (valid > 0) {\n resultMessages.push(chalk.green(`Passed: ${valid}`))\n }\n if (warnings > 0) {\n resultMessages.push(chalk.yellow(`Warnings: ${warnings}`))\n }\n if (errors > 0) {\n resultMessages.push(chalk.red(` Errors: ${errors}`))\n }\n console.warn(`Gitlint Finish [ ${resultMessages.join(' | ')} ]\\n`)\n return warnings + errors === 0 ? 1 : 0\n}\n","import { execSync } from 'node:child_process'\n\nimport chalk from 'chalk'\nimport ParseGitConfig from 'parse-git-config'\n\nexport const gitlintFix = () => {\n console.log(`\\nGitlint Fix Start [${process.cwd()}]\\n`)\n\n const gitConfig = ParseGitConfig.sync()\n\n if (gitConfig.core.ignorecase) {\n execSync('git config core.ignorecase false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.ignorecase to be false\\n'))\n }\n\n if (gitConfig.core.autocrlf !== false) {\n execSync('git config core.autocrlf false', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.autocrlf to be false\\n'))\n }\n\n if (gitConfig.core.eol !== 'lf') {\n execSync('git config core.eol lf', { stdio: 'inherit' })\n console.warn(chalk.yellow('\\nGitlint Fix: Updated core.eol to be \"lf\"\\n'))\n }\n\n return 1\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const knip = () => {\n return runSteps('Knip', [['knip', ['--dependencies', '--no-exit-code']]])\n}\n","import chalk from 'chalk'\nimport { init } from 'license-checker'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const license = async (pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n const exclude = new Set([\n 'MIT',\n 'MIT*',\n 'ISC',\n 'Apache-2.0',\n 'BSD',\n 'BSD*',\n 'BSD-2-Clause',\n 'BSD-3-Clause',\n 'CC-BY-4.0',\n 'Unlicense',\n 'CC-BY-3.0',\n 'CC0-1.0',\n 'LGPL-3.0-only',\n 'LGPL-3.0',\n 'LGPL-3.0-or-later',\n 'Python-2.0',\n ])\n\n console.log(chalk.green('License Checker'))\n\n return (\n (\n await Promise.all(\n workspaceList.map(({ location, name }) => {\n return new Promise<number>((resolve) => {\n init({ production: true, start: location }, (error, packages) => {\n if (error) {\n console.error(chalk.red(`License Checker [${name}] Error`))\n console.error(chalk.gray(error))\n console.log('\\n')\n resolve(1)\n } else {\n console.log(chalk.green(`License Checker [${name}]`))\n let count = 0\n for (const [name, info] of Object.entries(packages)) {\n const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses]\n for (let license of licenses) {\n if (license) {\n // remove surrounding parens on some string\n const processedLicense = (license[0] === '(' && license.at(-1) === ')')\n ? license.slice(1, -2)\n : license\n // get list of OR licenses from string\n const orLicenses = processedLicense.split(' OR ')\n let orLicenseFound = false\n for (const orLicense of orLicenses) {\n if (exclude.has(orLicense)) {\n orLicenseFound = true\n }\n }\n if (!orLicenseFound) {\n count++\n console.warn(chalk.yellow(`${name}: Package License not allowed [${license}]`))\n }\n }\n }\n }\n console.log('\\n')\n resolve(count)\n }\n })\n })\n }),\n )\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, value) => prev || value, 0)\n )\n}\n","import { 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 { generateIgnoreFiles } from '../lib/index.ts'\n\nconst filename = '.npmignore'\n\nexport const npmignoreGen = (pkg?: string) => generateIgnoreFiles(filename, pkg)\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 {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nfunction detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nfunction findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n let patterns: string[] = pkg.workspaces ?? []\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n if (target === 'pnpm') {\n return convertToPnpm(cwd, workspacePaths)\n }\n return convertToYarn(cwd, workspacePaths)\n}\n","import {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Save workspace patterns before removing — fall back to pnpm-workspace.yaml if already converted\n const workspacePatterns: string[] = pkg.workspaces ?? readPnpmWorkspacePatterns(cwd)\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Swap ts-scripts devDependency (yarn3 → pnpm) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'yarn-to-pnpm')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'yarn-to-pnpm')\n\n // 8. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import { existsSync, readFileSync, writeFileSync } from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst IMPORT_SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ['@xylabs/ts-scripts-react-yarn3', '@xylabs/ts-scripts-react-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ['@xylabs/ts-scripts-react-pnpm', '@xylabs/ts-scripts-react-yarn3'],\n ],\n}\n\nconst SOURCE_GLOBS = [\n '**/*.ts',\n '**/*.tsx',\n '**/*.mts',\n '**/*.cts',\n '**/*.js',\n '**/*.mjs',\n]\n\nconst IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/.yarn/**',\n]\n\nexport function rewriteSourceImports(cwd: string, direction: Direction): void {\n const swaps = IMPORT_SWAP_MAP[direction]\n const files = globSync(SOURCE_GLOBS, {\n cwd,\n absolute: true,\n ignore: IGNORE_PATTERNS,\n })\n\n let count = 0\n for (const file of files) {\n if (!existsSync(file)) continue\n const original = readFileSync(file, 'utf8')\n let content = original\n for (const [from, to] of swaps) {\n content = content.replaceAll(from, to)\n }\n if (content !== original) {\n writeFileSync(file, content, 'utf8')\n count++\n }\n }\n\n if (count > 0) {\n console.log(chalk.green(` Rewrote ts-scripts imports in ${count} source file(s)`))\n }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ],\n}\n\nfunction swapInPackageJson(pkgPath: string, direction: Direction): boolean {\n if (!existsSync(pkgPath)) return false\n\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw)\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies']) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [from, to] of SWAP_MAP[direction]) {\n if (deps[from]) {\n deps[to] = deps[from]\n delete deps[from]\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n', 'utf8')\n }\n return changed\n}\n\nexport function swapTsScriptsDependency(cwd: string, workspacePackageJsonPaths: string[], direction: Direction): void {\n let count = 0\n\n // Swap in root package.json\n if (swapInPackageJson(PATH.join(cwd, 'package.json'), direction)) {\n count++\n }\n\n // Swap in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (swapInPackageJson(fullPath, direction)) {\n count++\n }\n }\n\n if (count > 0) {\n const target = direction === 'yarn-to-pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`))\n }\n}\n","import {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { rewriteSourceImports } from './rewriteSourceImports.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nfunction readWorkspacePatternsFromPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n if (!existsSync(pkgPath)) return []\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n return pkg.workspaces ?? []\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns — try pnpm-workspace.yaml first, fall back to pkg.workspaces if already converted\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n const fromPkg = readWorkspacePatternsFromPackageJson(cwd)\n if (fromPkg.length > 0) {\n workspacePatterns.push(...fromPkg)\n } else {\n console.warn(chalk.yellow(' No workspace patterns found'))\n }\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Swap ts-scripts devDependency (pnpm → yarn3) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'pnpm-to-yarn')\n\n // 7. Rewrite ts-scripts imports in source files\n rewriteSourceImports(cwd, 'pnpm-to-yarn')\n\n // 8. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\\n'))\n return 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 { generateReadmeFiles, loadConfig } from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeGenParams {\n pkg?: string\n templatePath?: string\n typedoc?: boolean\n verbose?: boolean\n}\n\nexport async function readmeGen({\n pkg, templatePath, typedoc, verbose,\n}: ReadmeGenParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n return await generateReadmeFiles({\n logoLinkUrl: config.readme?.logoLinkUrl,\n logoUrl: config.readme?.logoUrl,\n pkg,\n templatePath,\n typedoc,\n verbose,\n })\n}\n","import {\n applyLogoConfig, DEFAULT_README_TEMPLATE, loadConfig, resolveTemplatePath, scaffoldTemplate,\n} from '../lib/index.ts'\nimport type { XyConfig } from './package/index.ts'\n\nexport interface ReadmeInitParams {\n templatePath?: string\n verbose?: boolean\n}\n\nexport async function readmeInit({ templatePath }: ReadmeInitParams): Promise<number> {\n const config = await loadConfig<XyConfig>()\n const template = applyLogoConfig(DEFAULT_README_TEMPLATE, config.readme?.logoUrl, config.readme?.logoLinkUrl)\n const resolvedTemplatePath = resolveTemplatePath(templatePath)\n await scaffoldTemplate(resolvedTemplatePath, template)\n return 0\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RebuildParams {\n pkg?: string\n target?: 'esm' | 'cjs'\n}\n\nexport const rebuild = ({ target }: RebuildParams) => {\n const pm = getPackageManager()\n return runSteps('Rebuild', [\n pm.runXy(['clean']),\n pm.runXy(target ? ['build', '-t', target] : ['build']),\n ])\n}\n","import chalk from 'chalk'\n\nimport { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RecompileParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport interface RecompilePackageParams {\n pkg: string\n target?: 'esm' | 'cjs'\n verbose?: boolean\n}\n\nexport const recompile = async ({\n verbose, target, pkg, incremental,\n}: RecompileParams) => {\n return pkg\n ? await recompilePackage({\n pkg, target, verbose,\n })\n : await recompileAll({\n incremental, target, verbose,\n })\n}\n\nexport const recompilePackage = ({ target, pkg }: RecompilePackageParams) => {\n const pm = getPackageManager()\n const targetOptions = target ? ['-t', target] : []\n\n return runStepsAsync(\n `Recompile [${pkg}]`,\n [pm.runInWorkspace(pkg, 'package-recompile', targetOptions)],\n )\n}\n\nexport const recompileAll = async ({\n jobs, verbose, target, incremental,\n}: RecompileParams) => {\n const pm = getPackageManager()\n const start = Date.now()\n const targetOptions = target ? ['-t', target] : []\n if (jobs) {\n console.log(chalk.blue(`Jobs set to [${jobs}]`))\n }\n\n const foreachOptions = {\n incremental, jobs, topological: true, verbose,\n }\n\n const result = await runStepsAsync(`Recompile${incremental ? '-Incremental' : ''} [All]`, [\n pm.foreachWorkspace('package-clean', targetOptions, foreachOptions),\n pm.foreachWorkspace('package-compile', targetOptions, foreachOptions),\n ])\n console.log(\n `${chalk.gray('Recompiled in')} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`,\n )\n return result\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'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface RetestParams {\n target?: string\n}\n\nexport const retest = ({ target }: RetestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Re-Test [${target}]`, [\n pm.runInWorkspace(target, 'vitest', ['--clearCache']),\n pm.runInWorkspace(target, 'vitest', ['.']),\n ])\n }\n const path = target ?? '.'\n return runSteps('Re-Test', [\n ['vitest', ['--clearCache']],\n ['vitest', [path]],\n ])\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['eslint', ['-c', 'sonar.eslintrc', '.']]])\n}\n","import { runSteps } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface TestParams {\n target?: string\n}\n\nexport const test = ({ target }: TestParams = {}) => {\n const pm = getPackageManager()\n if (target && pm.findWorkspace(target)) {\n return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, 'vitest', ['.'])])\n }\n const path = target ?? '.'\n return runSteps('Test', [['vitest', [path]]])\n}\n","import type { CommandModule } from 'yargs'\n\nimport { build } from '../../actions/index.ts'\n\nexport const buildCommand: CommandModule = {\n command: 'build [package]',\n describe: 'Build - Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to build' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Building: ${argv.package ?? 'all'}`)\n }\n\n process.exitCode = await build({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileCommand: CommandModule = {\n command: 'compile [package]',\n describe: 'Compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { compile } from '../../actions/index.ts'\n\nexport const compileOnlyCommand: CommandModule = {\n command: 'compile-only [package]',\n describe: 'Compile with Typescript & Copy Images (No Publint)',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to compile' })\n },\n handler: (argv) => {\n if (argv.verbose) {\n console.log(`Compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = compile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n publint: false,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { copyAssets } from '../../actions/index.ts'\n\nexport const copyAssetsCommand: CommandModule = {\n command: 'copy-assets [package]',\n describe: 'Copy Assets - Copy the assets from src to dist',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to copy assets' })\n },\n handler: async (argv) => {\n if (argv.verbose) console.log(`Copying Assets: ${argv.package ?? 'all'}`)\n process.exitCode = await copyAssets({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { rebuild } from '../../actions/index.ts'\n\nexport const rebuildCommand: CommandModule = {\n command: 'rebuild [package]',\n describe: 'Rebuild - Clean, Compile & Lint',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to rebuild' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Rebuilding: ${argv.package ?? 'all'}`)\n process.exitCode = rebuild({ target: argv.target as 'esm' | 'cjs' })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { recompile } from '../../actions/index.ts'\n\nexport const recompileCommand: CommandModule = {\n command: 'recompile [package]',\n describe: 'Re-compile with Typescript & Copy Images',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to re-compile' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Re-compiling: ${argv.package ?? 'all'}`)\n }\n process.exitCode = await recompile({\n incremental: !!argv.incremental,\n jobs: argv.jobs as number,\n pkg: argv.package as string,\n target: argv.target as 'esm' | 'cjs',\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { buildCommand } from './buildCommand.ts'\nimport { compileCommand } from './compileCommand.ts'\nimport { compileOnlyCommand } from './compileOnlyCommand.ts'\nimport { copyAssetsCommand } from './copyAssetsCommand.ts'\nimport { rebuildCommand } from './rebuildCommand.ts'\nimport { recompileCommand } from './recompileCommand.ts'\n\nexport const xyBuildCommands = (args: Argv) => {\n return args\n .command(buildCommand)\n .command(compileCommand)\n .command(compileOnlyCommand)\n .command(recompileCommand)\n .command(rebuildCommand)\n .command(copyAssetsCommand)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove all Claude configuration files from the repo',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Clean')\n process.exitCode = claudeClean()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeCommands } from '../../../actions/index.ts'\n\nexport const commandsCommand: CommandModule = {\n command: 'commands',\n describe: 'Sync XY Labs standard Claude slash commands to .claude/commands/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Commands')\n process.exitCode = claudeCommands()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport {\n claudeCommands, claudeRules, claudeSettings,\n} from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'init',\n describe: 'Initialize all Claude configuration (commands, rules, settings)',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Init')\n const commandsResult = claudeCommands()\n const rulesResult = claudeRules({ force: argv.force as boolean | undefined })\n const settingsResult = await claudeSettings()\n process.exitCode = commandsResult || rulesResult || settingsResult\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeRules } from '../../../actions/index.ts'\n\nexport const rulesCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('force', {\n alias: 'f',\n default: false,\n description: 'Overwrite existing CLAUDE.md',\n type: 'boolean',\n })\n },\n command: 'rules',\n describe: 'Sync XY Labs standard Claude rules to .claude/rules/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Rules')\n process.exitCode = claudeRules({ force: argv.force as boolean | undefined })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSettings } from '../../../actions/index.ts'\n\nexport const settingsCommand: CommandModule = {\n command: 'settings',\n describe: 'Initialize .claude/settings.local.json with XY Labs defaults',\n handler: async (argv) => {\n if (argv.verbose) console.log('Claude Settings')\n process.exitCode = await claudeSettings()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { claudeSkills } from '../../../actions/index.ts'\n\nexport const skillsCommand: CommandModule = {\n builder: yargs => yargs,\n command: 'skills',\n describe: 'Sync XY Labs standard Claude skills to .claude/skills/',\n handler: (argv) => {\n if (argv.verbose) console.log('Claude Skills')\n process.exitCode = claudeSkills()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { commandsCommand } from './commandsCommand.ts'\nimport { initCommand } from './initCommand.ts'\nimport { rulesCommand } from './rulesCommand.ts'\nimport { settingsCommand } from './settingsCommand.ts'\nimport { skillsCommand } from './skillsCommand.ts'\n\nexport const claudeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(cleanCommand)\n .command(commandsCommand)\n .command(initCommand)\n .command(rulesCommand)\n .command(settingsCommand)\n .command(skillsCommand)\n .demandCommand(1, 'Please specify a claude subcommand')\n },\n command: 'claude',\n describe: 'Claude - Claude Code configuration utilities',\n handler: () => {},\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanDocs } from '../../actions/index.ts'\n\nexport const cleanDocsCommand: CommandModule = {\n command: 'clean-docs',\n describe: 'CleanDocs - Clean TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log('Cleaning TypeDocs: all')\n process.exitCode = cleanDocs()\n },\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target', type: 'string' })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dead } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const deadCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'dead [package]',\n describe: 'Dead - Check for dead code',\n handler: (argv) => {\n if (argv.verbose) console.log('Dead')\n process.exitCode = dead()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genDocs } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const genDocsCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'gen-docs [package]',\n describe: 'GenDocs - Generate TypeDocs',\n handler: (argv) => {\n if (argv.verbose) console.log(`Generating TypeDocs: ${argv.package ?? 'all'}`)\n process.exitCode = genDocs({ incremental: !!argv.incremental, pkg: argv.package as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitignore } from '../../actions/index.ts'\n\nexport const gitignoreCommand: CommandModule = {\n command: 'gitignore',\n describe: 'GitIgnore - Generate root .gitignore and remove package .gitignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('GitIgnore')\n process.exitCode = gitignore()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { gitlint, gitlintFix } from '../../actions/index.ts'\n\nexport const gitlintCommand: CommandModule = {\n command: 'gitlint [package]',\n describe: 'Gitlint - Lint your git config',\n handler: (argv) => {\n if (argv.verbose) console.log('Gitlint')\n process.exitCode = argv.fix ? gitlintFix() : gitlint()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { license } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const licenseCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'license [package]',\n describe: 'License - Check licenses of dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log(`License: ${argv.package ?? 'all'}`)\n process.exitCode = await license()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { npmignoreGen } from '../../actions/index.ts'\n\nexport const npmignoreGenCommand: CommandModule = {\n command: 'npmignore-gen',\n describe: 'NpmIgnore Gen - Generate .npmignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('NpmIgnore Gen')\n process.exitCode = npmignoreGen()\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { convert } from '../../actions/index.ts'\n\nconst convertCommand: CommandModule = {\n command: 'convert <target>',\n describe: 'Convert repo to a different package manager (pnpm or yarn)',\n builder: (yargs) => {\n return yargs.positional('target', {\n choices: ['pnpm', 'yarn'] as const,\n describe: 'Target package manager',\n type: 'string',\n })\n },\n handler: (argv) => {\n process.exitCode = convert({\n target: argv.target as string,\n verbose: !!argv.verbose,\n })\n },\n}\n\nexport const packmanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(convertCommand)\n .demandCommand(1, 'Please specify a packman subcommand')\n },\n command: 'packman',\n describe: 'Package Manager - Conversion utilities',\n handler: () => {},\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeGen } from '../../../actions/index.ts'\nimport { packagePositionalParam } from '../../param.ts'\n\nexport const genCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n .option('typedoc', {\n default: false,\n description: 'Generate TypeDoc reference sections',\n type: 'boolean',\n })\n },\n aliases: ['$0'],\n command: 'gen [package]',\n describe: 'Generate README.md files from template',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Gen')\n process.exitCode = await readmeGen({\n pkg: argv.package as string | undefined,\n templatePath: argv.template as string | undefined,\n typedoc: argv.typedoc as boolean,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { readmeInit } from '../../../actions/index.ts'\n\nexport const initCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .option('template', {\n alias: 't',\n description: 'Path to README.template.md',\n type: 'string',\n })\n },\n command: 'init',\n describe: 'Initialize README template and logo files',\n handler: async (argv) => {\n if (argv.verbose) console.log('Readme Init')\n process.exitCode = await readmeInit({\n templatePath: argv.template as string | undefined,\n verbose: !!argv.verbose,\n })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { genCommand } from './genCommand.ts'\nimport { initCommand } from './initCommand.ts'\n\nexport const readmeCommand: CommandModule = {\n builder: (yargs) => {\n return yargs.command(genCommand).command(initCommand)\n },\n command: 'readme',\n describe: 'Readme - README file utilities',\n handler: () => {},\n}\n","import type { CommandModule } from 'yargs'\n\nimport { retest } from '../../actions/index.ts'\n\nexport const retestCommand: CommandModule = {\n command: 'retest [target]',\n describe: 'Re-Test - Run Vitest Tests with cleaned cache',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Re-Testing: ${argv.target ?? 'all'}`)\n process.exitCode = retest({ target: argv.target as string })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { test } from '../../actions/index.ts'\n\nexport const testCommand: CommandModule = {\n command: 'test [target]',\n describe: 'Test - Run Vitest Tests',\n builder: (yargs) => {\n return yargs.positional('target', { describe: 'Package name or file/folder path to test' })\n },\n handler: (argv) => {\n if (argv.verbose) console.log(`Testing: ${argv.target ?? 'all'}`)\n process.exitCode = test({ target: argv.target as string })\n },\n}\n","import type { Argv } from 'yargs'\n\nimport { claudeCommand } from './claude/index.ts'\nimport { cleanDocsCommand } from './cleanDocsCommand.ts'\nimport { deadCommand } from './deadCommand.ts'\nimport { genDocsCommand } from './genDocsCommand.ts'\nimport { gitignoreCommand } from './gitignoreCommand.ts'\nimport { gitlintCommand } from './gitlintCommand.ts'\nimport { licenseCommand } from './licenseCommand.ts'\nimport { npmignoreGenCommand } from './npmignoreGenCommand.ts'\nimport { packmanCommand } from './packmanCommand.ts'\nimport { readmeCommand } from './readme/index.ts'\nimport { retestCommand } from './retestCommand.ts'\nimport { testCommand } from './testCommand.ts'\n\nexport const xyCommonCommands = (args: Argv) => {\n return args\n .command(claudeCommand)\n .command(licenseCommand)\n .command(deadCommand)\n .command(genDocsCommand)\n .command(cleanDocsCommand)\n .command(gitlintCommand)\n .command(gitignoreCommand)\n .command(npmignoreGenCommand)\n .command(packmanCommand)\n .command(readmeCommand)\n .command(retestCommand)\n .command(testCommand)\n}\n","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'\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","import chalk from 'chalk'\nimport type { Argv } from 'yargs'\n\nimport { xyBuildCommands } from './build/index.ts'\nimport { xyCommonCommands } from './common/index.ts'\nimport { xyLintCommands } from './lint/index.ts'\nimport { xyParseOptions } from './xyParseOptions.ts'\n\nexport const xyBase = async (plugins?: (args: Argv) => Argv) => {\n const options = xyParseOptions()\n let args = xyBuildCommands(xyCommonCommands(xyLintCommands(options)))\n if (plugins) args = plugins(args)\n return await args\n .demandCommand(1)\n .command('*', '', () => {\n console.error(chalk.yellow(`Command not found [${chalk.magenta(process.argv[2])}]`))\n console.log(chalk.gray('Try \\'xy --help\\' for list of commands'))\n })\n .version()\n .help().argv\n}\n","import type { Argv } from 'yargs'\nimport yargs from 'yargs'\nimport { hideBin } from 'yargs/helpers'\n\nimport { tryRunLocalScript } from '../lib/index.ts'\n\nexport const xyParseOptions = (): Argv => {\n return yargs(hideBin(process.argv))\n .scriptName('yarn xy')\n .middleware((argv) => {\n const commandName = argv._[0] as string\n if (commandName && argv._.length <= 1) {\n const result = tryRunLocalScript(commandName)\n if (result !== undefined) {\n process.exit(result)\n }\n }\n }, true)\n .option('jobs', {\n alias: 'j',\n default: undefined,\n description: 'Max parallel jobs',\n type: 'number',\n })\n .option('verbose', {\n alias: 'v',\n default: false,\n description: 'Run with verbose logging',\n type: 'boolean',\n })\n .option('incremental', {\n alias: 'i',\n default: false,\n description: 'Attempt to perform the action only on changed packages',\n type: 'boolean',\n })\n .option('profile', {\n alias: 'p',\n default: false,\n description: 'Profile action',\n type: 'boolean',\n })\n}\n"],"mappings":"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","names":["chalk","require","chalk","ex","ex","error","chalk","existsSync","readFileSync","existsSync","readFileSync","chalk","filename","chalk","readFileSync","createRequire","PATH","chalk","require","createRequire","packageRoot","PATH","readFileSync","chalk","readFileSync","createRequire","PATH","require","packageRoot","templatesDir","chalk","existsSync","chalk","chalk","config","existsSync","existsSync","chalk","config","chalk","existsSync","spawnSync","readFileSync","PATH","chalk","PATH","readFileSync","chalk","spawnSync","chalk","existsSync","readdirSync","PATH","chalk","existsSync","chalk","PATH","readdirSync","existsSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","spawnSync","existsSync","mkdirSync","readdirSync","readFileSync","unlinkSync","writeFileSync","PATH","chalk","filename","PATH","existsSync","readFileSync","writeFileSync","readdirSync","unlinkSync","chalk","spawnSync","mkdirSync","existsSync","mkdirSync","writeFileSync","PATH","createInterface","chalk","askConfirmation","createInterface","PATH","mkdirSync","existsSync","chalk","writeFileSync","existsSync","mkdirSync","readdirSync","readFileSync","rmSync","statSync","writeFileSync","PATH","chalk","PATH","mkdirSync","filename","existsSync","readFileSync","writeFileSync","readdirSync","statSync","rmSync","chalk","chalk","chalk","chalk","publint","chalk","path","chalk","path","chalk","chalk","fs","fs","fs","path","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","unlinkSync","chalk","unlinkSync","chalk","chalk","chalk","execSync","chalk","ParseGitConfig","chalk","chalk","name","license","readFileSync","writeFileSync","PATH","chalk","rules","config","fix","readFileSync","writeFileSync","PATH","chalk","readFileSync","PATH","path","writeFileSync","chalk","glob","fix","existsSync","readdirSync","readFileSync","statSync","PATH","chalk","existsSync","mkdirSync","readFileSync","rmSync","writeFileSync","PATH","chalk","existsSync","readFileSync","writeFileSync","chalk","globSync","existsSync","readFileSync","writeFileSync","PATH","chalk","writeFileSync","PATH","chalk","existsSync","readFileSync","rmSync","mkdirSync","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","readPnpmWorkspacePatterns","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","existsSync","PATH","readFileSync","statSync","readdirSync","subPath","chalk","config","config","chalk","chalk","chalk","fix","chalk","path","path","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","yargs","initCommand","yargs","yargs","initCommand","yargs","yargs","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","yargs","yargs","chalk","yargs","chalk","chalk","yargs","chalk","chalk","yargs","chalk","chalk","chalk"]}
|