@xylabs/ts-scripts-common 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/build.mjs +161 -0
- package/dist/actions/build.mjs.map +1 -0
- package/dist/actions/claude-clean.mjs +71 -0
- package/dist/actions/claude-clean.mjs.map +1 -0
- package/dist/actions/claude-commands.mjs +112 -0
- package/dist/actions/claude-commands.mjs.map +1 -0
- package/dist/actions/claude-rules.mjs +137 -0
- package/dist/actions/claude-rules.mjs.map +1 -0
- package/dist/actions/claude-settings.mjs +85 -0
- package/dist/actions/claude-settings.mjs.map +1 -0
- package/dist/actions/claude-skills.mjs +120 -0
- package/dist/actions/claude-skills.mjs.map +1 -0
- package/dist/actions/clean-docs.mjs +45 -0
- package/dist/actions/clean-docs.mjs.map +1 -0
- package/dist/actions/clean-eslint.mjs +26 -0
- package/dist/actions/clean-eslint.mjs.map +1 -0
- package/dist/actions/clean.mjs +145 -0
- package/dist/actions/clean.mjs.map +1 -0
- package/dist/actions/compile.mjs +172 -0
- package/dist/actions/compile.mjs.map +1 -0
- package/dist/actions/copy-assets.mjs +81 -0
- package/dist/actions/copy-assets.mjs.map +1 -0
- package/dist/actions/cycle.mjs +165 -0
- package/dist/actions/cycle.mjs.map +1 -0
- package/dist/actions/dead.mjs +98 -0
- package/dist/actions/dead.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +672 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs +1 -0
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +48 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +33 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +30 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +309 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +26 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/index.mjs +672 -0
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -0
- package/dist/actions/deplint/deplint.mjs +770 -0
- package/dist/actions/deplint/deplint.mjs.map +1 -0
- package/dist/actions/deplint/findFiles.mjs +39 -0
- package/dist/actions/deplint/findFiles.mjs.map +1 -0
- package/dist/actions/deplint/findFilesByGlob.mjs +14 -0
- package/dist/actions/deplint/findFilesByGlob.mjs.map +1 -0
- package/dist/actions/deplint/getBasePackageName.mjs +13 -0
- package/dist/actions/deplint/getBasePackageName.mjs.map +1 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +140 -0
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +20 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +1 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +44 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +1 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs +122 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +1 -0
- package/dist/actions/deplint/getImportsFromFile.mjs +85 -0
- package/dist/actions/deplint/getImportsFromFile.mjs.map +1 -0
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs +36 -0
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs +83 -0
- package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +1 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs +80 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/index.mjs +770 -0
- package/dist/actions/deplint/index.mjs.map +1 -0
- package/dist/actions/dupdeps.mjs +205 -0
- package/dist/actions/dupdeps.mjs.map +1 -0
- package/dist/actions/fix.mjs +163 -0
- package/dist/actions/fix.mjs.map +1 -0
- package/dist/actions/gen-docs.mjs +130 -0
- package/dist/actions/gen-docs.mjs.map +1 -0
- package/dist/actions/gitignore.mjs +160 -0
- package/dist/actions/gitignore.mjs.map +1 -0
- package/dist/actions/gitlint-fix.mjs +27 -0
- package/dist/actions/gitlint-fix.mjs.map +1 -0
- package/dist/actions/gitlint.mjs +48 -0
- package/dist/actions/gitlint.mjs.map +1 -0
- package/dist/actions/index.mjs +4129 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/actions/knip.mjs +98 -0
- package/dist/actions/knip.mjs.map +1 -0
- package/dist/actions/license.mjs +92 -0
- package/dist/actions/license.mjs.map +1 -0
- package/dist/actions/lint.mjs +160 -0
- package/dist/actions/lint.mjs.map +1 -0
- package/dist/actions/lintlint.mjs +230 -0
- package/dist/actions/lintlint.mjs.map +1 -0
- package/dist/actions/npmignore-gen.mjs +91 -0
- package/dist/actions/npmignore-gen.mjs.map +1 -0
- package/dist/actions/package/clean-outputs.mjs +29 -0
- package/dist/actions/package/clean-outputs.mjs.map +1 -0
- package/dist/actions/package/clean-typescript.mjs +29 -0
- package/dist/actions/package/clean-typescript.mjs.map +1 -0
- package/dist/actions/package/clean.mjs +48 -0
- package/dist/actions/package/clean.mjs.map +1 -0
- package/dist/actions/package/compile/XyConfig.mjs +1 -0
- package/dist/actions/package/compile/XyConfig.mjs.map +1 -0
- package/dist/actions/package/compile/buildEntries.mjs +53 -0
- package/dist/actions/package/compile/buildEntries.mjs.map +1 -0
- package/dist/actions/package/compile/compile.mjs +433 -0
- package/dist/actions/package/compile/compile.mjs.map +1 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs +34 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs.map +1 -0
- package/dist/actions/package/compile/deepMerge.mjs +26 -0
- package/dist/actions/package/compile/deepMerge.mjs.map +1 -0
- package/dist/actions/package/compile/getCompilerOptions.mjs +12 -0
- package/dist/actions/package/compile/getCompilerOptions.mjs.map +1 -0
- package/dist/actions/package/compile/index.mjs +436 -0
- package/dist/actions/package/compile/index.mjs.map +1 -0
- package/dist/actions/package/compile/inputs.mjs +22 -0
- package/dist/actions/package/compile/inputs.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTsc.mjs +94 -0
- package/dist/actions/package/compile/packageCompileTsc.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTscTypes.mjs +92 -0
- package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +1 -0
- package/dist/actions/package/compile/packageCompileTsup.mjs +402 -0
- package/dist/actions/package/compile/packageCompileTsup.mjs.map +1 -0
- package/dist/actions/package/copy-assets.mjs +46 -0
- package/dist/actions/package/copy-assets.mjs.map +1 -0
- package/dist/actions/package/cycle.mjs +39 -0
- package/dist/actions/package/cycle.mjs.map +1 -0
- package/dist/actions/package/gen-docs.mjs +114 -0
- package/dist/actions/package/gen-docs.mjs.map +1 -0
- package/dist/actions/package/index.mjs +825 -0
- package/dist/actions/package/index.mjs.map +1 -0
- package/dist/actions/package/lint.mjs +80 -0
- package/dist/actions/package/lint.mjs.map +1 -0
- package/dist/actions/package/publint.mjs +66 -0
- package/dist/actions/package/publint.mjs.map +1 -0
- package/dist/actions/package/recompile.mjs +483 -0
- package/dist/actions/package/recompile.mjs.map +1 -0
- package/dist/actions/package-lint.mjs +186 -0
- package/dist/actions/package-lint.mjs.map +1 -0
- package/dist/actions/packman/convert.mjs +387 -0
- package/dist/actions/packman/convert.mjs.map +1 -0
- package/dist/actions/packman/convertToPnpm.mjs +149 -0
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -0
- package/dist/actions/packman/convertToYarn.mjs +171 -0
- package/dist/actions/packman/convertToYarn.mjs.map +1 -0
- package/dist/actions/packman/index.mjs +389 -0
- package/dist/actions/packman/index.mjs.map +1 -0
- package/dist/actions/packman/rewriteScripts.mjs +52 -0
- package/dist/actions/packman/rewriteScripts.mjs.map +1 -0
- package/dist/actions/publint.mjs +187 -0
- package/dist/actions/publint.mjs.map +1 -0
- package/dist/actions/readme-gen.mjs +292 -0
- package/dist/actions/readme-gen.mjs.map +1 -0
- package/dist/actions/readme-init.mjs +83 -0
- package/dist/actions/readme-init.mjs.map +1 -0
- package/dist/actions/rebuild.mjs +122 -0
- package/dist/actions/rebuild.mjs.map +1 -0
- package/dist/actions/recompile.mjs +188 -0
- package/dist/actions/recompile.mjs.map +1 -0
- package/dist/actions/relint.mjs +160 -0
- package/dist/actions/relint.mjs.map +1 -0
- package/dist/actions/retest.mjs +129 -0
- package/dist/actions/retest.mjs.map +1 -0
- package/dist/actions/sonar.mjs +98 -0
- package/dist/actions/sonar.mjs.map +1 -0
- package/dist/actions/statics.mjs +204 -0
- package/dist/actions/statics.mjs.map +1 -0
- package/dist/actions/test.mjs +123 -0
- package/dist/actions/test.mjs.map +1 -0
- package/dist/bin/package/build-only.mjs +445 -0
- package/dist/bin/package/build-only.mjs.map +1 -0
- package/dist/bin/package/build.mjs +445 -0
- package/dist/bin/package/build.mjs.map +1 -0
- package/dist/bin/package/clean-outputs.mjs +29 -0
- package/dist/bin/package/clean-outputs.mjs.map +1 -0
- package/dist/bin/package/clean-typescript.mjs +29 -0
- package/dist/bin/package/clean-typescript.mjs.map +1 -0
- package/dist/bin/package/clean.mjs +53 -0
- package/dist/bin/package/clean.mjs.map +1 -0
- package/dist/bin/package/compile-only.mjs +441 -0
- package/dist/bin/package/compile-only.mjs.map +1 -0
- package/dist/bin/package/compile-tsup.mjs +409 -0
- package/dist/bin/package/compile-tsup.mjs.map +1 -0
- package/dist/bin/package/compile.mjs +445 -0
- package/dist/bin/package/compile.mjs.map +1 -0
- package/dist/bin/package/copy-assets-cjs.mjs +54 -0
- package/dist/bin/package/copy-assets-cjs.mjs.map +1 -0
- package/dist/bin/package/copy-assets-esm.mjs +54 -0
- package/dist/bin/package/copy-assets-esm.mjs.map +1 -0
- package/dist/bin/package/cycle.mjs +51 -0
- package/dist/bin/package/cycle.mjs.map +1 -0
- package/dist/bin/package/fix.mjs +92 -0
- package/dist/bin/package/fix.mjs.map +1 -0
- package/dist/bin/package/gen-docs.mjs +121 -0
- package/dist/bin/package/gen-docs.mjs.map +1 -0
- package/dist/bin/package/lint-verbose.mjs +92 -0
- package/dist/bin/package/lint-verbose.mjs.map +1 -0
- package/dist/bin/package/lint.mjs +92 -0
- package/dist/bin/package/lint.mjs.map +1 -0
- package/dist/bin/package/publint.mjs +75 -0
- package/dist/bin/package/publint.mjs.map +1 -0
- package/dist/bin/package/recompile.mjs +489 -0
- package/dist/bin/package/recompile.mjs.map +1 -0
- package/dist/bin/package/relint.mjs +92 -0
- package/dist/bin/package/relint.mjs.map +1 -0
- package/dist/bin/xy.mjs +3826 -0
- package/dist/bin/xy.mjs.map +1 -0
- package/dist/index.d.ts +564 -0
- package/dist/index.mjs +4979 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/checkResult.mjs +16 -0
- package/dist/lib/checkResult.mjs.map +1 -0
- package/dist/lib/claudeMdTemplate.mjs +65 -0
- package/dist/lib/claudeMdTemplate.mjs.map +1 -0
- package/dist/lib/createBuildConfig.mjs +55 -0
- package/dist/lib/createBuildConfig.mjs.map +1 -0
- package/dist/lib/defaultBuildConfig.mjs +23 -0
- package/dist/lib/defaultBuildConfig.mjs.map +1 -0
- package/dist/lib/deleteGlob.mjs +13 -0
- package/dist/lib/deleteGlob.mjs.map +1 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs +81 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +185 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -0
- package/dist/lib/dependencies/index.mjs +186 -0
- package/dist/lib/dependencies/index.mjs.map +1 -0
- package/dist/lib/file/ReadFileSyncOptions.mjs +6 -0
- package/dist/lib/file/ReadFileSyncOptions.mjs.map +1 -0
- package/dist/lib/file/constants.mjs +8 -0
- package/dist/lib/file/constants.mjs.map +1 -0
- package/dist/lib/file/fileLines.mjs +32 -0
- package/dist/lib/file/fileLines.mjs.map +1 -0
- package/dist/lib/file/index.mjs +42 -0
- package/dist/lib/file/index.mjs.map +1 -0
- package/dist/lib/file/tryReadFileSync.mjs +14 -0
- package/dist/lib/file/tryReadFileSync.mjs.map +1 -0
- package/dist/lib/generateIgnoreFiles.mjs +87 -0
- package/dist/lib/generateIgnoreFiles.mjs.map +1 -0
- package/dist/lib/generateReadmeFiles.mjs +260 -0
- package/dist/lib/generateReadmeFiles.mjs.map +1 -0
- package/dist/lib/gitignoreTemplate.mjs +12 -0
- package/dist/lib/gitignoreTemplate.mjs.map +1 -0
- package/dist/lib/index.mjs +834 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/initCwd.mjs +9 -0
- package/dist/lib/initCwd.mjs.map +1 -0
- package/dist/lib/jsonFormatters.mjs +11 -0
- package/dist/lib/jsonFormatters.mjs.map +1 -0
- package/dist/lib/loadConfig.mjs +24 -0
- package/dist/lib/loadConfig.mjs.map +1 -0
- package/dist/lib/parsedPackageJSON.mjs +11 -0
- package/dist/lib/parsedPackageJSON.mjs.map +1 -0
- package/dist/lib/processEx.mjs +36 -0
- package/dist/lib/processEx.mjs.map +1 -0
- package/dist/lib/runSteps.mjs +95 -0
- package/dist/lib/runSteps.mjs.map +1 -0
- package/dist/lib/runStepsAsync.mjs +113 -0
- package/dist/lib/runStepsAsync.mjs.map +1 -0
- package/dist/lib/runXy.mjs +124 -0
- package/dist/lib/runXy.mjs.map +1 -0
- package/dist/lib/runXyWithWarning.mjs +36 -0
- package/dist/lib/runXyWithWarning.mjs.map +1 -0
- package/dist/lib/safeExit.mjs +61 -0
- package/dist/lib/safeExit.mjs.map +1 -0
- package/dist/lib/string/empty.mjs +8 -0
- package/dist/lib/string/empty.mjs.map +1 -0
- package/dist/lib/string/index.mjs +12 -0
- package/dist/lib/string/index.mjs.map +1 -0
- package/dist/lib/string/union.mjs +6 -0
- package/dist/lib/string/union.mjs.map +1 -0
- package/dist/lib/tryRunLocalScript.mjs +56 -0
- package/dist/lib/tryRunLocalScript.mjs.map +1 -0
- package/dist/lib/withErrnoException.mjs +13 -0
- package/dist/lib/withErrnoException.mjs.map +1 -0
- package/dist/lib/withError.mjs +8 -0
- package/dist/lib/withError.mjs.map +1 -0
- package/dist/loadPackageConfig.mjs +11 -0
- package/dist/loadPackageConfig.mjs.map +1 -0
- package/dist/pm/PackageManager.mjs +1 -0
- package/dist/pm/PackageManager.mjs.map +1 -0
- package/dist/pm/detectPackageManager.mjs +10 -0
- package/dist/pm/detectPackageManager.mjs.map +1 -0
- package/dist/pm/index.mjs +28 -0
- package/dist/pm/index.mjs.map +1 -0
- package/dist/pm/registry.mjs +27 -0
- package/dist/pm/registry.mjs.map +1 -0
- package/dist/types.d.mjs +1 -0
- package/dist/types.d.mjs.map +1 -0
- package/dist/xy/build/buildCommand.mjs +182 -0
- package/dist/xy/build/buildCommand.mjs.map +1 -0
- package/dist/xy/build/compileCommand.mjs +189 -0
- package/dist/xy/build/compileCommand.mjs.map +1 -0
- package/dist/xy/build/compileOnlyCommand.mjs +190 -0
- package/dist/xy/build/compileOnlyCommand.mjs.map +1 -0
- package/dist/xy/build/copyAssetsCommand.mjs +92 -0
- package/dist/xy/build/copyAssetsCommand.mjs.map +1 -0
- package/dist/xy/build/index.mjs +493 -0
- package/dist/xy/build/index.mjs.map +1 -0
- package/dist/xy/build/rebuildCommand.mjs +135 -0
- package/dist/xy/build/rebuildCommand.mjs.map +1 -0
- package/dist/xy/build/recompileCommand.mjs +205 -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 +120 -0
- package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/index.mjs +546 -0
- package/dist/xy/common/claude/index.mjs.map +1 -0
- package/dist/xy/common/claude/initCommand.mjs +319 -0
- package/dist/xy/common/claude/initCommand.mjs.map +1 -0
- package/dist/xy/common/claude/rulesCommand.mjs +153 -0
- package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
- package/dist/xy/common/claude/settingsCommand.mjs +93 -0
- package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/skillsCommand.mjs +129 -0
- package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
- package/dist/xy/common/cleanDocsCommand.mjs +53 -0
- package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
- package/dist/xy/common/deadCommand.mjs +116 -0
- package/dist/xy/common/deadCommand.mjs.map +1 -0
- package/dist/xy/common/genDocsCommand.mjs +146 -0
- package/dist/xy/common/genDocsCommand.mjs.map +1 -0
- package/dist/xy/common/gitignoreCommand.mjs +166 -0
- package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
- package/dist/xy/common/gitlintCommand.mjs +82 -0
- package/dist/xy/common/gitlintCommand.mjs.map +1 -0
- package/dist/xy/common/index.mjs +1874 -0
- package/dist/xy/common/index.mjs.map +1 -0
- package/dist/xy/common/licenseCommand.mjs +108 -0
- package/dist/xy/common/licenseCommand.mjs.map +1 -0
- package/dist/xy/common/npmignoreGenCommand.mjs +101 -0
- package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
- package/dist/xy/common/packmanCommand.mjs +415 -0
- package/dist/xy/common/packmanCommand.mjs.map +1 -0
- package/dist/xy/common/readme/genCommand.mjs +324 -0
- package/dist/xy/common/readme/genCommand.mjs.map +1 -0
- package/dist/xy/common/readme/index.mjs +364 -0
- package/dist/xy/common/readme/index.mjs.map +1 -0
- package/dist/xy/common/readme/initCommand.mjs +103 -0
- package/dist/xy/common/readme/initCommand.mjs.map +1 -0
- package/dist/xy/common/retestCommand.mjs +142 -0
- package/dist/xy/common/retestCommand.mjs.map +1 -0
- package/dist/xy/common/testCommand.mjs +136 -0
- package/dist/xy/common/testCommand.mjs.map +1 -0
- package/dist/xy/index.mjs +3823 -0
- package/dist/xy/index.mjs.map +1 -0
- package/dist/xy/lint/cycleCommand.mjs +184 -0
- package/dist/xy/lint/cycleCommand.mjs.map +1 -0
- package/dist/xy/lint/deplintCommand.mjs +820 -0
- package/dist/xy/lint/deplintCommand.mjs.map +1 -0
- package/dist/xy/lint/fixCommand.mjs +184 -0
- package/dist/xy/lint/fixCommand.mjs.map +1 -0
- package/dist/xy/lint/index.mjs +1691 -0
- package/dist/xy/lint/index.mjs.map +1 -0
- package/dist/xy/lint/knipCommand.mjs +121 -0
- package/dist/xy/lint/knipCommand.mjs.map +1 -0
- package/dist/xy/lint/lintCommand.mjs +202 -0
- package/dist/xy/lint/lintCommand.mjs.map +1 -0
- package/dist/xy/lint/lintlintCommand.mjs +250 -0
- package/dist/xy/lint/lintlintCommand.mjs.map +1 -0
- package/dist/xy/lint/packageLintCommand.mjs +201 -0
- package/dist/xy/lint/packageLintCommand.mjs.map +1 -0
- package/dist/xy/lint/publintCommand.mjs +208 -0
- package/dist/xy/lint/publintCommand.mjs.map +1 -0
- package/dist/xy/lint/relintCommand.mjs +179 -0
- package/dist/xy/lint/relintCommand.mjs.map +1 -0
- package/dist/xy/lint/sonarCommand.mjs +121 -0
- package/dist/xy/lint/sonarCommand.mjs.map +1 -0
- package/dist/xy/param.mjs +8 -0
- package/dist/xy/param.mjs.map +1 -0
- package/dist/xy/xy.mjs +3819 -0
- package/dist/xy/xy.mjs.map +1 -0
- package/dist/xy/xyParseOptions.mjs +91 -0
- package/dist/xy/xyParseOptions.mjs.map +1 -0
- package/package.json +108 -0
- package/templates/claude/CLAUDE-local.md +4 -0
- package/templates/claude/CLAUDE-project.md +4 -0
- package/templates/claude/commands/xy-build.md +5 -0
- package/templates/claude/commands/xy-clean.md +5 -0
- package/templates/claude/commands/xy-compile.md +5 -0
- package/templates/claude/commands/xy-cycle.md +5 -0
- package/templates/claude/commands/xy-dead.md +5 -0
- package/templates/claude/commands/xy-deplint.md +5 -0
- package/templates/claude/commands/xy-deps.md +24 -0
- package/templates/claude/commands/xy-dupdeps.md +5 -0
- package/templates/claude/commands/xy-fix.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-knip.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-lint.md +5 -0
- package/templates/claude/commands/xy-publint.md +5 -0
- package/templates/claude/commands/xy-rebuild.md +5 -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-test.md +5 -0
- package/templates/claude/commands/xy-up.md +7 -0
- package/templates/claude/rules/xylabs-architecture.md +8 -0
- package/templates/claude/rules/xylabs-build.md +9 -0
- package/templates/claude/rules/xylabs-git-workflow.md +7 -0
- package/templates/claude/rules/xylabs-naming.md +7 -0
- package/templates/claude/rules/xylabs-style.md +17 -0
- package/templates/claude/skills/xylabs-e2e-setup/SKILL.md +223 -0
- package/templates/gitignore/template.gitignore +51 -0
- package/templates/readme/README.body.md +11 -0
- package/templates/readme/README.template.md +22 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// src/lib/checkResult.ts
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
var checkResult = (name, result, level = "error", exitOnFail = false) => {
|
|
4
|
+
if (result) {
|
|
5
|
+
const exiting = exitOnFail ? "[Exiting Process]" : "[Continuing]";
|
|
6
|
+
const chalkFunc = level === "error" ? chalk.red : chalk.yellow;
|
|
7
|
+
console[level](chalkFunc(`${name} had ${result} failures ${exiting}`));
|
|
8
|
+
if (exitOnFail) {
|
|
9
|
+
process.exit(result);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/pm/detectPackageManager.ts
|
|
15
|
+
import { existsSync } from "fs";
|
|
16
|
+
function detectPackageManager() {
|
|
17
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
18
|
+
return "yarn";
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/pm/registry.ts
|
|
22
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
23
|
+
function getPackageManager(name) {
|
|
24
|
+
const pmName = name ?? detectPackageManager();
|
|
25
|
+
const pm = implementations.get(pmName);
|
|
26
|
+
if (!pm) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
`No package manager implementation registered for "${pmName}". Install @xylabs/ts-scripts-${pmName === "yarn" ? "yarn3" : pmName} and ensure it is imported.`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return pm;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// src/lib/processEx.ts
|
|
35
|
+
import chalk2 from "chalk";
|
|
36
|
+
|
|
37
|
+
// src/lib/withError.ts
|
|
38
|
+
var withError = (ex, closure, predicate = (ex2) => !!ex2.name && !!ex2.message) => {
|
|
39
|
+
return predicate(ex) ? closure(ex) : void 0;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/lib/withErrnoException.ts
|
|
43
|
+
var withErrnoException = (ex, closure) => {
|
|
44
|
+
return withError(ex, closure, (ex2) => ex2.errno !== void 0);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/lib/processEx.ts
|
|
48
|
+
var processEx = (ex) => {
|
|
49
|
+
const error = typeof ex === "string" ? new Error(ex) : ex;
|
|
50
|
+
const exitCode = withErrnoException(error, (error2) => {
|
|
51
|
+
if (error2.code === "ENOENT") {
|
|
52
|
+
console.error(chalk2.red(`'${error2.path}' not found.`));
|
|
53
|
+
} else {
|
|
54
|
+
console.error(chalk2.red(`Errno: ${error2.code}`));
|
|
55
|
+
}
|
|
56
|
+
return error2.errno ?? -1;
|
|
57
|
+
}) ?? withError(error, (error2) => {
|
|
58
|
+
console.error(chalk2.red(`${error2.name}: ${error2.message}`));
|
|
59
|
+
return -1;
|
|
60
|
+
}) ?? (() => {
|
|
61
|
+
console.error(chalk2.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`));
|
|
62
|
+
return -1;
|
|
63
|
+
})();
|
|
64
|
+
process.exit(process.exitCode ?? exitCode);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// src/lib/safeExit.ts
|
|
68
|
+
var safeExit = (func, exitOnFail = true) => {
|
|
69
|
+
try {
|
|
70
|
+
const result = func();
|
|
71
|
+
if (result && exitOnFail) {
|
|
72
|
+
process.exit(result);
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
} catch (ex) {
|
|
76
|
+
return processEx(ex);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/lib/runSteps.ts
|
|
81
|
+
import { spawnSync } from "child_process";
|
|
82
|
+
import { existsSync as existsSync2 } from "fs";
|
|
83
|
+
import chalk3 from "chalk";
|
|
84
|
+
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
85
|
+
return safeExit(() => {
|
|
86
|
+
const pkgName = process.env.npm_package_name;
|
|
87
|
+
console.log(chalk3.green(`${name} [${pkgName}]`));
|
|
88
|
+
let totalStatus = 0;
|
|
89
|
+
for (const [i, [command, args, config]] of steps.entries()) {
|
|
90
|
+
if (messages?.[i]) {
|
|
91
|
+
console.log(chalk3.gray(messages?.[i]));
|
|
92
|
+
}
|
|
93
|
+
const argList = Array.isArray(args) ? args : args.split(" ");
|
|
94
|
+
if (command === "node" && !existsSync2(argList[0])) {
|
|
95
|
+
throw new Error(`File not found [${argList[0]}]`);
|
|
96
|
+
}
|
|
97
|
+
const status = spawnSync(command, Array.isArray(args) ? args : args.split(" "), {
|
|
98
|
+
...config,
|
|
99
|
+
encoding: "utf8",
|
|
100
|
+
env: { FORCE_COLOR: "3", ...process.env },
|
|
101
|
+
shell: true,
|
|
102
|
+
stdio: "inherit"
|
|
103
|
+
}).status ?? 0;
|
|
104
|
+
checkResult(name, status, "error", exitOnFail);
|
|
105
|
+
totalStatus += status ?? 0;
|
|
106
|
+
}
|
|
107
|
+
return totalStatus;
|
|
108
|
+
}, !!exitOnFail);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/actions/retest.ts
|
|
112
|
+
var retest = ({ target } = {}) => {
|
|
113
|
+
const pm = getPackageManager();
|
|
114
|
+
if (target && pm.findWorkspace(target)) {
|
|
115
|
+
return runSteps(`Re-Test [${target}]`, [
|
|
116
|
+
pm.runInWorkspace(target, "vitest", ["--clearCache"]),
|
|
117
|
+
pm.runInWorkspace(target, "vitest", ["."])
|
|
118
|
+
]);
|
|
119
|
+
}
|
|
120
|
+
const path = target ?? ".";
|
|
121
|
+
return runSteps("Re-Test", [
|
|
122
|
+
["vitest", ["--clearCache"]],
|
|
123
|
+
["vitest", [path]]
|
|
124
|
+
]);
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
// src/xy/common/retestCommand.ts
|
|
128
|
+
var retestCommand = {
|
|
129
|
+
command: "retest [target]",
|
|
130
|
+
describe: "Re-Test - Run Vitest Tests with cleaned cache",
|
|
131
|
+
builder: (yargs) => {
|
|
132
|
+
return yargs.positional("target", { describe: "Package name or file/folder path to test" });
|
|
133
|
+
},
|
|
134
|
+
handler: (argv) => {
|
|
135
|
+
if (argv.verbose) console.log(`Re-Testing: ${argv.target ?? "all"}`);
|
|
136
|
+
process.exitCode = retest({ target: argv.target });
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
export {
|
|
140
|
+
retestCommand
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=retestCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/checkResult.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/runSteps.ts","../../../src/actions/retest.ts","../../../src/xy/common/retestCommand.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import { 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","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 { 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 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"],"mappings":"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","names":["chalk","ex","ex","error","chalk","existsSync","chalk","chalk","existsSync"]}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// src/lib/checkResult.ts
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
var checkResult = (name, result, level = "error", exitOnFail = false) => {
|
|
4
|
+
if (result) {
|
|
5
|
+
const exiting = exitOnFail ? "[Exiting Process]" : "[Continuing]";
|
|
6
|
+
const chalkFunc = level === "error" ? chalk.red : chalk.yellow;
|
|
7
|
+
console[level](chalkFunc(`${name} had ${result} failures ${exiting}`));
|
|
8
|
+
if (exitOnFail) {
|
|
9
|
+
process.exit(result);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/pm/detectPackageManager.ts
|
|
15
|
+
import { existsSync } from "fs";
|
|
16
|
+
function detectPackageManager() {
|
|
17
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
18
|
+
return "yarn";
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/pm/registry.ts
|
|
22
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
23
|
+
function getPackageManager(name) {
|
|
24
|
+
const pmName = name ?? detectPackageManager();
|
|
25
|
+
const pm = implementations.get(pmName);
|
|
26
|
+
if (!pm) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
`No package manager implementation registered for "${pmName}". Install @xylabs/ts-scripts-${pmName === "yarn" ? "yarn3" : pmName} and ensure it is imported.`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return pm;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// src/lib/processEx.ts
|
|
35
|
+
import chalk2 from "chalk";
|
|
36
|
+
|
|
37
|
+
// src/lib/withError.ts
|
|
38
|
+
var withError = (ex, closure, predicate = (ex2) => !!ex2.name && !!ex2.message) => {
|
|
39
|
+
return predicate(ex) ? closure(ex) : void 0;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/lib/withErrnoException.ts
|
|
43
|
+
var withErrnoException = (ex, closure) => {
|
|
44
|
+
return withError(ex, closure, (ex2) => ex2.errno !== void 0);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// src/lib/processEx.ts
|
|
48
|
+
var processEx = (ex) => {
|
|
49
|
+
const error = typeof ex === "string" ? new Error(ex) : ex;
|
|
50
|
+
const exitCode = withErrnoException(error, (error2) => {
|
|
51
|
+
if (error2.code === "ENOENT") {
|
|
52
|
+
console.error(chalk2.red(`'${error2.path}' not found.`));
|
|
53
|
+
} else {
|
|
54
|
+
console.error(chalk2.red(`Errno: ${error2.code}`));
|
|
55
|
+
}
|
|
56
|
+
return error2.errno ?? -1;
|
|
57
|
+
}) ?? withError(error, (error2) => {
|
|
58
|
+
console.error(chalk2.red(`${error2.name}: ${error2.message}`));
|
|
59
|
+
return -1;
|
|
60
|
+
}) ?? (() => {
|
|
61
|
+
console.error(chalk2.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`));
|
|
62
|
+
return -1;
|
|
63
|
+
})();
|
|
64
|
+
process.exit(process.exitCode ?? exitCode);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// src/lib/safeExit.ts
|
|
68
|
+
var safeExit = (func, exitOnFail = true) => {
|
|
69
|
+
try {
|
|
70
|
+
const result = func();
|
|
71
|
+
if (result && exitOnFail) {
|
|
72
|
+
process.exit(result);
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
} catch (ex) {
|
|
76
|
+
return processEx(ex);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/lib/runSteps.ts
|
|
81
|
+
import { spawnSync } from "child_process";
|
|
82
|
+
import { existsSync as existsSync2 } from "fs";
|
|
83
|
+
import chalk3 from "chalk";
|
|
84
|
+
var runSteps = (name, steps, exitOnFail = true, messages) => {
|
|
85
|
+
return safeExit(() => {
|
|
86
|
+
const pkgName = process.env.npm_package_name;
|
|
87
|
+
console.log(chalk3.green(`${name} [${pkgName}]`));
|
|
88
|
+
let totalStatus = 0;
|
|
89
|
+
for (const [i, [command, args, config]] of steps.entries()) {
|
|
90
|
+
if (messages?.[i]) {
|
|
91
|
+
console.log(chalk3.gray(messages?.[i]));
|
|
92
|
+
}
|
|
93
|
+
const argList = Array.isArray(args) ? args : args.split(" ");
|
|
94
|
+
if (command === "node" && !existsSync2(argList[0])) {
|
|
95
|
+
throw new Error(`File not found [${argList[0]}]`);
|
|
96
|
+
}
|
|
97
|
+
const status = spawnSync(command, Array.isArray(args) ? args : args.split(" "), {
|
|
98
|
+
...config,
|
|
99
|
+
encoding: "utf8",
|
|
100
|
+
env: { FORCE_COLOR: "3", ...process.env },
|
|
101
|
+
shell: true,
|
|
102
|
+
stdio: "inherit"
|
|
103
|
+
}).status ?? 0;
|
|
104
|
+
checkResult(name, status, "error", exitOnFail);
|
|
105
|
+
totalStatus += status ?? 0;
|
|
106
|
+
}
|
|
107
|
+
return totalStatus;
|
|
108
|
+
}, !!exitOnFail);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
// src/actions/test.ts
|
|
112
|
+
var test = ({ target } = {}) => {
|
|
113
|
+
const pm = getPackageManager();
|
|
114
|
+
if (target && pm.findWorkspace(target)) {
|
|
115
|
+
return runSteps(`Test [${target}]`, [pm.runInWorkspace(target, "vitest", ["."])]);
|
|
116
|
+
}
|
|
117
|
+
const path = target ?? ".";
|
|
118
|
+
return runSteps("Test", [["vitest", [path]]]);
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
// src/xy/common/testCommand.ts
|
|
122
|
+
var testCommand = {
|
|
123
|
+
command: "test [target]",
|
|
124
|
+
describe: "Test - Run Vitest Tests",
|
|
125
|
+
builder: (yargs) => {
|
|
126
|
+
return yargs.positional("target", { describe: "Package name or file/folder path to test" });
|
|
127
|
+
},
|
|
128
|
+
handler: (argv) => {
|
|
129
|
+
if (argv.verbose) console.log(`Testing: ${argv.target ?? "all"}`);
|
|
130
|
+
process.exitCode = test({ target: argv.target });
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
export {
|
|
134
|
+
testCommand
|
|
135
|
+
};
|
|
136
|
+
//# sourceMappingURL=testCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/checkResult.ts","../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/processEx.ts","../../../src/lib/withError.ts","../../../src/lib/withErrnoException.ts","../../../src/lib/safeExit.ts","../../../src/lib/runSteps.ts","../../../src/actions/test.ts","../../../src/xy/common/testCommand.ts"],"sourcesContent":["import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import { 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","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 { 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 { 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"],"mappings":"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","names":["chalk","ex","ex","error","chalk","existsSync","chalk","chalk","existsSync"]}
|