@xylabs/ts-scripts-yarn3 7.4.21 → 7.4.22
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/claude-clean.mjs +71 -0
- package/dist/actions/claude-clean.mjs.map +1 -0
- package/dist/actions/claude-commands.mjs +11 -2
- package/dist/actions/claude-commands.mjs.map +1 -1
- package/dist/actions/claude-rules.mjs +27 -7
- package/dist/actions/claude-rules.mjs.map +1 -1
- package/dist/actions/claude-skills.mjs.map +1 -1
- package/dist/actions/dupdeps.mjs +3 -2
- package/dist/actions/dupdeps.mjs.map +1 -1
- package/dist/actions/gitignore.mjs +152 -0
- package/dist/actions/gitignore.mjs.map +1 -0
- package/dist/actions/index.mjs +392 -206
- package/dist/actions/index.mjs.map +1 -1
- package/dist/bin/xy.mjs +432 -226
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.mjs +495 -282
- package/dist/index.mjs.map +1 -1
- package/dist/lib/claudeMdTemplate.mjs +5 -1
- package/dist/lib/claudeMdTemplate.mjs.map +1 -1
- package/dist/lib/gitignoreTemplate.mjs +12 -0
- package/dist/lib/gitignoreTemplate.mjs.map +1 -0
- package/dist/lib/index.mjs +17 -3
- package/dist/lib/index.mjs.map +1 -1
- package/dist/xy/build/buildCommand.mjs +161 -0
- package/dist/xy/build/buildCommand.mjs.map +1 -0
- package/dist/xy/build/compileCommand.mjs +174 -0
- package/dist/xy/build/compileCommand.mjs.map +1 -0
- package/dist/xy/build/compileOnlyCommand.mjs +175 -0
- package/dist/xy/build/compileOnlyCommand.mjs.map +1 -0
- package/dist/xy/build/copyAssetsCommand.mjs +84 -0
- package/dist/xy/build/copyAssetsCommand.mjs.map +1 -0
- package/dist/xy/{build-commands → build}/index.mjs +45 -40
- package/dist/xy/build/index.mjs.map +1 -0
- package/dist/xy/build/rebuildCommand.mjs +114 -0
- package/dist/xy/build/rebuildCommand.mjs.map +1 -0
- package/dist/xy/build/recompileCommand.mjs +204 -0
- package/dist/xy/build/recompileCommand.mjs.map +1 -0
- package/dist/xy/common/claude/cleanCommand.mjs +79 -0
- package/dist/xy/common/claude/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/claude/commandsCommand.mjs +11 -2
- package/dist/xy/common/claude/commandsCommand.mjs.map +1 -1
- package/dist/xy/common/claude/index.mjs +171 -69
- package/dist/xy/common/claude/index.mjs.map +1 -1
- package/dist/xy/common/claude/initCommand.mjs +38 -115
- package/dist/xy/common/claude/initCommand.mjs.map +1 -1
- package/dist/xy/common/claude/rulesCommand.mjs +27 -7
- package/dist/xy/common/claude/rulesCommand.mjs.map +1 -1
- package/dist/xy/common/claude/skillsCommand.mjs.map +1 -1
- package/dist/xy/common/gitignoreCommand.mjs +158 -0
- package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
- package/dist/xy/common/index.mjs +304 -109
- package/dist/xy/common/index.mjs.map +1 -1
- package/dist/xy/index.mjs +432 -226
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/install/dupdepsCommand.mjs +3 -2
- package/dist/xy/install/dupdepsCommand.mjs.map +1 -1
- package/dist/xy/install/index.mjs +3 -2
- package/dist/xy/install/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +432 -226
- package/dist/xy/xy.mjs.map +1 -1
- package/package.json +2 -2
- package/templates/claude/CLAUDE-local.md +4 -0
- package/templates/claude/commands/xy-dead.md +5 -0
- package/templates/claude/{rules/xylabs-dependencies.md → commands/xy-deps.md} +7 -7
- package/templates/claude/commands/xy-dupdeps.md +5 -0
- package/templates/claude/commands/xy-gen-docs.md +5 -0
- package/templates/claude/commands/xy-gitignore.md +5 -0
- package/templates/claude/commands/xy-gitlint.md +5 -0
- package/templates/claude/commands/xy-license.md +5 -0
- package/templates/claude/commands/xy-lint-rules.md +44 -0
- package/templates/claude/commands/xy-recompile.md +5 -0
- package/templates/claude/commands/xy-reinstall.md +5 -0
- package/templates/claude/commands/xy-relint.md +5 -0
- package/templates/claude/commands/xy-retest.md +5 -0
- package/templates/claude/commands/xy-sonar.md +5 -0
- package/templates/claude/commands/xy-up.md +7 -0
- package/templates/claude/rules/xylabs-architecture.md +4 -7
- package/templates/claude/rules/xylabs-build.md +6 -11
- package/templates/claude/rules/xylabs-git-workflow.md +3 -5
- package/templates/claude/rules/xylabs-naming.md +4 -7
- package/templates/claude/rules/xylabs-style.md +14 -19
- package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +17 -4
- package/templates/gitignore/template.gitignore +40 -0
- package/dist/actions/gitignore-gen.mjs +0 -88
- package/dist/actions/gitignore-gen.mjs.map +0 -1
- package/dist/xy/build-commands/build.mjs +0 -502
- package/dist/xy/build-commands/build.mjs.map +0 -1
- package/dist/xy/build-commands/index.mjs.map +0 -1
- package/dist/xy/common/gitignoreGenCommand.mjs +0 -98
- package/dist/xy/common/gitignoreGenCommand.mjs.map +0 -1
- package/templates/claude/commands/xylabs-deploy-major.md +0 -7
- package/templates/claude/commands/xylabs-deploy-minor.md +0 -7
- package/templates/claude/commands/xylabs-deploy.md +0 -7
- package/templates/claude/rules/xylabs-error-handling.md +0 -7
- package/templates/claude/rules/xylabs-frameworks.md +0 -8
- package/templates/claude/rules/xylabs-linting.md +0 -55
- package/templates/claude/rules/xylabs-typescript.md +0 -11
- /package/templates/claude/commands/{xylabs-build.md → xy-build.md} +0 -0
- /package/templates/claude/commands/{xylabs-clean.md → xy-clean.md} +0 -0
- /package/templates/claude/commands/{xylabs-compile.md → xy-compile.md} +0 -0
- /package/templates/claude/commands/{xylabs-cycle.md → xy-cycle.md} +0 -0
- /package/templates/claude/commands/{xylabs-deplint.md → xy-deplint.md} +0 -0
- /package/templates/claude/commands/{xylabs-fix.md → xy-fix.md} +0 -0
- /package/templates/claude/commands/{xylabs-knip.md → xy-knip.md} +0 -0
- /package/templates/claude/commands/{xylabs-lint.md → xy-lint.md} +0 -0
- /package/templates/claude/commands/{xylabs-publint.md → xy-publint.md} +0 -0
- /package/templates/claude/commands/{xylabs-rebuild.md → xy-rebuild.md} +0 -0
- /package/templates/claude/commands/{xylabs-test.md → xy-test.md} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../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/yarn/workspace/yarnWorkspaces.ts","../../../src/lib/yarn/yarnInitCwd.ts","../../../src/lib/gitignoreTemplate.ts","../../../src/actions/gitignore.ts","../../../src/xy/common/gitignoreCommand.ts"],"sourcesContent":["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 { spawnSync } from 'node:child_process'\n\nimport type { Workspace } from './Workspace.ts'\n\nexport const yarnWorkspaces = (): Workspace[] => {\n const result = spawnSync('yarn', ['workspaces', 'list', '--json', '--recursive'], { encoding: 'utf8', shell: true })\n if (result.error) {\n throw result.error\n }\n return (\n result.stdout\n .toString()\n // NOTE: This probably doesn't work on Windows\n // TODO: Replace /r/n with /n first\n .split('\\n')\n .slice(0, -1)\n .map((item) => {\n return JSON.parse(item)\n })\n )\n}\n","export const INIT_CWD = () => {\n if (!process.env.INIT_CWD) console.error('Missing INIT_CWD')\n return process.env.INIT_CWD\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-yarn3/package.json'))\nconst templatesDir = PATH.resolve(packageRoot, 'templates', 'gitignore')\n\nexport const gitignoreTemplate = (): string =>\n readFileSync(PATH.resolve(templatesDir, 'template.gitignore'), 'utf8')\n","import { unlinkSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport {\n gitignoreTemplate, readNonEmptyLines, writeLines,\n} from '../lib/index.ts'\nimport { union } from '../lib/string/index.ts'\nimport { INIT_CWD, yarnWorkspaces } from '../lib/yarn/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 = yarnWorkspaces()\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 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"],"mappings":"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","names":["readFileSync","require"]}
|