@xylabs/toolchain 7.10.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/analyze.mjs +140 -0
- package/dist/actions/analyze.mjs.map +1 -0
- package/dist/actions/build.mjs +173 -0
- package/dist/actions/build.mjs.map +1 -0
- package/dist/actions/claude-check.mjs +199 -0
- package/dist/actions/claude-check.mjs.map +1 -0
- package/dist/actions/claude-clean.mjs +70 -0
- package/dist/actions/claude-clean.mjs.map +1 -0
- package/dist/actions/claude-commands.mjs +126 -0
- package/dist/actions/claude-commands.mjs.map +1 -0
- package/dist/actions/claude-rules.mjs +151 -0
- package/dist/actions/claude-rules.mjs.map +1 -0
- package/dist/actions/claude-settings.mjs +99 -0
- package/dist/actions/claude-settings.mjs.map +1 -0
- package/dist/actions/claude-skills.mjs +131 -0
- package/dist/actions/claude-skills.mjs.map +1 -0
- package/dist/actions/clean-docs.mjs +66 -0
- package/dist/actions/clean-docs.mjs.map +1 -0
- package/dist/actions/clean-eslint.mjs +47 -0
- package/dist/actions/clean-eslint.mjs.map +1 -0
- package/dist/actions/clean.mjs +166 -0
- package/dist/actions/clean.mjs.map +1 -0
- package/dist/actions/compile.mjs +184 -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 +275 -0
- package/dist/actions/cycle.mjs.map +1 -0
- package/dist/actions/dead.mjs +119 -0
- package/dist/actions/dead.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +1556 -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/getMismatchedPeerDevVersions.mjs +77 -0
- package/dist/actions/deplint/checkPackage/getMismatchedPeerDevVersions.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +158 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +125 -0
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs +207 -0
- package/dist/actions/deplint/checkPackage/getUnnecessaryPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs +318 -0
- package/dist/actions/deplint/checkPackage/getUnsatisfiedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +163 -0
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +408 -0
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +75 -0
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs +128 -0
- package/dist/actions/deplint/checkPackage/getWorkspaceVersionProblems.mjs.map +1 -0
- package/dist/actions/deplint/checkPackage/index.mjs +1609 -0
- package/dist/actions/deplint/checkPackage/index.mjs.map +1 -0
- package/dist/actions/deplint/deplint.mjs +1840 -0
- package/dist/actions/deplint/deplint.mjs.map +1 -0
- package/dist/actions/deplint/engine.mjs +1736 -0
- package/dist/actions/deplint/engine.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/fixer.mjs +103 -0
- package/dist/actions/deplint/fixer.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 +29 -0
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +1 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +68 -0
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +1 -0
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs +143 -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 +37 -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 +116 -0
- package/dist/actions/deplint/implicitDevDependencies.mjs.map +1 -0
- package/dist/actions/deplint/index.mjs +1848 -0
- package/dist/actions/deplint/index.mjs.map +1 -0
- package/dist/actions/deplint/packageEditor.mjs +82 -0
- package/dist/actions/deplint/packageEditor.mjs.map +1 -0
- package/dist/actions/deplint/packageJsonEditor.mjs +101 -0
- package/dist/actions/deplint/packageJsonEditor.mjs.map +1 -0
- package/dist/actions/deplint/reporters.mjs +36 -0
- package/dist/actions/deplint/reporters.mjs.map +1 -0
- package/dist/actions/deplint/rules.mjs +1223 -0
- package/dist/actions/deplint/rules.mjs.map +1 -0
- package/dist/actions/deplint/snapshot.mjs +372 -0
- package/dist/actions/deplint/snapshot.mjs.map +1 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs +20 -0
- package/dist/actions/deplint/tsScriptsAliases.mjs.map +1 -0
- package/dist/actions/deplint/types.mjs +1 -0
- package/dist/actions/deplint/types.mjs.map +1 -0
- package/dist/actions/deploy.mjs +194 -0
- package/dist/actions/deploy.mjs.map +1 -0
- package/dist/actions/dupdeps.mjs +226 -0
- package/dist/actions/dupdeps.mjs.map +1 -0
- package/dist/actions/eject.mjs +142 -0
- package/dist/actions/eject.mjs.map +1 -0
- package/dist/actions/fix.mjs +359 -0
- package/dist/actions/fix.mjs.map +1 -0
- package/dist/actions/gen-docs.mjs +155 -0
- package/dist/actions/gen-docs.mjs.map +1 -0
- package/dist/actions/gitignore.mjs +159 -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 +8259 -0
- package/dist/actions/index.mjs.map +1 -0
- package/dist/actions/knip.mjs +119 -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-init.mjs +275 -0
- package/dist/actions/lint-init.mjs.map +1 -0
- package/dist/actions/lint.mjs +356 -0
- package/dist/actions/lint.mjs.map +1 -0
- package/dist/actions/lintNext.mjs +209 -0
- package/dist/actions/lintNext.mjs.map +1 -0
- package/dist/actions/lintlint.mjs +341 -0
- package/dist/actions/lintlint.mjs.map +1 -0
- package/dist/actions/npmignore-gen.mjs +90 -0
- package/dist/actions/npmignore-gen.mjs.map +1 -0
- package/dist/actions/orphan.mjs +110 -0
- package/dist/actions/orphan.mjs.map +1 -0
- package/dist/actions/package/clean-outputs.mjs +50 -0
- package/dist/actions/package/clean-outputs.mjs.map +1 -0
- package/dist/actions/package/clean-typescript.mjs +50 -0
- package/dist/actions/package/clean-typescript.mjs.map +1 -0
- package/dist/actions/package/clean.mjs +69 -0
- package/dist/actions/package/clean.mjs.map +1 -0
- package/dist/actions/package/compile/XyConfig.mjs +32 -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 +439 -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 +27 -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 +472 -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 +93 -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 +69 -0
- package/dist/actions/package/copy-assets.mjs.map +1 -0
- package/dist/actions/package/cycle.mjs +62 -0
- package/dist/actions/package/cycle.mjs.map +1 -0
- package/dist/actions/package/gen-docs.mjs +137 -0
- package/dist/actions/package/gen-docs.mjs.map +1 -0
- package/dist/actions/package/index.mjs +1131 -0
- package/dist/actions/package/index.mjs.map +1 -0
- package/dist/actions/package/lint.mjs +87 -0
- package/dist/actions/package/lint.mjs.map +1 -0
- package/dist/actions/package/publint.mjs +336 -0
- package/dist/actions/package/publint.mjs.map +1 -0
- package/dist/actions/package/recompile.mjs +510 -0
- package/dist/actions/package/recompile.mjs.map +1 -0
- package/dist/actions/package-lint-deps.mjs +348 -0
- package/dist/actions/package-lint-deps.mjs.map +1 -0
- package/dist/actions/package-lint.mjs +774 -0
- package/dist/actions/package-lint.mjs.map +1 -0
- package/dist/actions/packman/clean.mjs +144 -0
- package/dist/actions/packman/clean.mjs.map +1 -0
- package/dist/actions/packman/convert.mjs +1331 -0
- package/dist/actions/packman/convert.mjs.map +1 -0
- package/dist/actions/packman/convertToPnpm.mjs +295 -0
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -0
- package/dist/actions/packman/convertToYarn.mjs +307 -0
- package/dist/actions/packman/convertToYarn.mjs.map +1 -0
- package/dist/actions/packman/index.mjs +1493 -0
- package/dist/actions/packman/index.mjs.map +1 -0
- package/dist/actions/packman/lint.mjs +109 -0
- package/dist/actions/packman/lint.mjs.map +1 -0
- package/dist/actions/packman/rewriteScripts.mjs +52 -0
- package/dist/actions/packman/rewriteScripts.mjs.map +1 -0
- package/dist/actions/packman/rewriteSourceImports.mjs +60 -0
- package/dist/actions/packman/rewriteSourceImports.mjs.map +1 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs +57 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs.map +1 -0
- package/dist/actions/publint.mjs +748 -0
- package/dist/actions/publint.mjs.map +1 -0
- package/dist/actions/publish.mjs +208 -0
- package/dist/actions/publish.mjs.map +1 -0
- package/dist/actions/reactTest.mjs +142 -0
- package/dist/actions/reactTest.mjs.map +1 -0
- package/dist/actions/readme-gen.mjs +362 -0
- package/dist/actions/readme-gen.mjs.map +1 -0
- package/dist/actions/readme-init.mjs +89 -0
- package/dist/actions/readme-init.mjs.map +1 -0
- package/dist/actions/readme-lint.mjs +147 -0
- package/dist/actions/readme-lint.mjs.map +1 -0
- package/dist/actions/rebuild.mjs +143 -0
- package/dist/actions/rebuild.mjs.map +1 -0
- package/dist/actions/recompile.mjs +196 -0
- package/dist/actions/recompile.mjs.map +1 -0
- package/dist/actions/reinstall.mjs +283 -0
- package/dist/actions/reinstall.mjs.map +1 -0
- package/dist/actions/relint.mjs +355 -0
- package/dist/actions/relint.mjs.map +1 -0
- package/dist/actions/repo-init.mjs +217 -0
- package/dist/actions/repo-init.mjs.map +1 -0
- package/dist/actions/retest.mjs +150 -0
- package/dist/actions/retest.mjs.map +1 -0
- package/dist/actions/sitemap.mjs +121 -0
- package/dist/actions/sitemap.mjs.map +1 -0
- package/dist/actions/sonar.mjs +119 -0
- package/dist/actions/sonar.mjs.map +1 -0
- package/dist/actions/start.mjs +142 -0
- package/dist/actions/start.mjs.map +1 -0
- package/dist/actions/statics.mjs +225 -0
- package/dist/actions/statics.mjs.map +1 -0
- package/dist/actions/test.mjs +144 -0
- package/dist/actions/test.mjs.map +1 -0
- package/dist/actions/up.mjs +140 -0
- package/dist/actions/up.mjs.map +1 -0
- package/dist/actions/updo.mjs +533 -0
- package/dist/actions/updo.mjs.map +1 -0
- package/dist/actions/upplug.mjs +124 -0
- package/dist/actions/upplug.mjs.map +1 -0
- package/dist/actions/upyarn.mjs +119 -0
- package/dist/actions/upyarn.mjs.map +1 -0
- package/dist/actions/yarn3only.mjs +60 -0
- package/dist/actions/yarn3only.mjs.map +1 -0
- package/dist/bin/package/build-only.mjs +451 -0
- package/dist/bin/package/build-only.mjs.map +1 -0
- package/dist/bin/package/build.mjs +451 -0
- package/dist/bin/package/build.mjs.map +1 -0
- package/dist/bin/package/clean-outputs.mjs +50 -0
- package/dist/bin/package/clean-outputs.mjs.map +1 -0
- package/dist/bin/package/clean-typescript.mjs +50 -0
- package/dist/bin/package/clean-typescript.mjs.map +1 -0
- package/dist/bin/package/clean.mjs +75 -0
- package/dist/bin/package/clean.mjs.map +1 -0
- package/dist/bin/package/compile-only.mjs +447 -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 +451 -0
- package/dist/bin/package/compile.mjs.map +1 -0
- package/dist/bin/package/copy-assets-cjs.mjs +75 -0
- package/dist/bin/package/copy-assets-cjs.mjs.map +1 -0
- package/dist/bin/package/copy-assets-esm.mjs +75 -0
- package/dist/bin/package/copy-assets-esm.mjs.map +1 -0
- package/dist/bin/package/cycle.mjs +72 -0
- package/dist/bin/package/cycle.mjs.map +1 -0
- package/dist/bin/package/fix.mjs +97 -0
- package/dist/bin/package/fix.mjs.map +1 -0
- package/dist/bin/package/gen-docs.mjs +142 -0
- package/dist/bin/package/gen-docs.mjs.map +1 -0
- package/dist/bin/package/lint-verbose.mjs +97 -0
- package/dist/bin/package/lint-verbose.mjs.map +1 -0
- package/dist/bin/package/lint.mjs +97 -0
- package/dist/bin/package/lint.mjs.map +1 -0
- package/dist/bin/package/publint.mjs +423 -0
- package/dist/bin/package/publint.mjs.map +1 -0
- package/dist/bin/package/recompile.mjs +516 -0
- package/dist/bin/package/recompile.mjs.map +1 -0
- package/dist/bin/package/relint.mjs +97 -0
- package/dist/bin/package/relint.mjs.map +1 -0
- package/dist/bin/run-or-exec.mjs +20 -0
- package/dist/bin/run-or-exec.mjs.map +1 -0
- package/dist/bin/xy.mjs +8885 -0
- package/dist/bin/xy.mjs.map +1 -0
- package/dist/index.d.ts +1102 -0
- package/dist/index.mjs +9986 -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 +69 -0
- package/dist/lib/claudeMdTemplate.mjs.map +1 -0
- package/dist/lib/concurrency.mjs +38 -0
- package/dist/lib/concurrency.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 +99 -0
- package/dist/lib/dependencies/DuplicateDetector.mjs.map +1 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +203 -0
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +1 -0
- package/dist/lib/dependencies/index.mjs +281 -0
- package/dist/lib/dependencies/index.mjs.map +1 -0
- package/dist/lib/dependencies/workspaceCycles.mjs +79 -0
- package/dist/lib/dependencies/workspaceCycles.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/fillTemplate.mjs +8 -0
- package/dist/lib/fillTemplate.mjs.map +1 -0
- package/dist/lib/generateIgnoreFiles.mjs +86 -0
- package/dist/lib/generateIgnoreFiles.mjs.map +1 -0
- package/dist/lib/generateReadmeFiles.mjs +323 -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 +1627 -0
- package/dist/lib/index.mjs.map +1 -0
- package/dist/lib/initCwd.mjs +8 -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/latestVersions.mjs +12 -0
- package/dist/lib/latestVersions.mjs.map +1 -0
- package/dist/lib/loadConfig.mjs +72 -0
- package/dist/lib/loadConfig.mjs.map +1 -0
- package/dist/lib/packageName.mjs +26 -0
- package/dist/lib/packageName.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/repoTemplates.mjs +34 -0
- package/dist/lib/repoTemplates.mjs.map +1 -0
- package/dist/lib/runInstall.mjs +30 -0
- package/dist/lib/runInstall.mjs.map +1 -0
- package/dist/lib/runSteps.mjs +118 -0
- package/dist/lib/runSteps.mjs.map +1 -0
- package/dist/lib/runStepsAsync.mjs +136 -0
- package/dist/lib/runStepsAsync.mjs.map +1 -0
- package/dist/lib/runXy.mjs +147 -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 +57 -0
- package/dist/lib/tryRunLocalScript.mjs.map +1 -0
- package/dist/lib/updo/applyUpdates.mjs +44 -0
- package/dist/lib/updo/applyUpdates.mjs.map +1 -0
- package/dist/lib/updo/collectWorkspaceDeps.mjs +48 -0
- package/dist/lib/updo/collectWorkspaceDeps.mjs.map +1 -0
- package/dist/lib/updo/fetchRegistryInfo.mjs +53 -0
- package/dist/lib/updo/fetchRegistryInfo.mjs.map +1 -0
- package/dist/lib/updo/index.mjs +594 -0
- package/dist/lib/updo/index.mjs.map +1 -0
- package/dist/lib/updo/interactiveSelect.mjs +185 -0
- package/dist/lib/updo/interactiveSelect.mjs.map +1 -0
- package/dist/lib/updo/interfaces.mjs +1 -0
- package/dist/lib/updo/interfaces.mjs.map +1 -0
- package/dist/lib/updo/renderTable.mjs +79 -0
- package/dist/lib/updo/renderTable.mjs.map +1 -0
- package/dist/lib/updo/resolveVersions.mjs +49 -0
- package/dist/lib/updo/resolveVersions.mjs.map +1 -0
- package/dist/lib/updo/runUpdo.mjs +511 -0
- package/dist/lib/updo/runUpdo.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/lib/yarn/index.mjs +39 -0
- package/dist/lib/yarn/index.mjs.map +1 -0
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs +18 -0
- package/dist/lib/yarn/isYarnVersionOrGreater.mjs.map +1 -0
- package/dist/lib/yarn/workspace/Workspace.mjs +1 -0
- package/dist/lib/yarn/workspace/Workspace.mjs.map +1 -0
- package/dist/lib/yarn/workspace/index.mjs +23 -0
- package/dist/lib/yarn/workspace/index.mjs.map +1 -0
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs +22 -0
- package/dist/lib/yarn/workspace/yarnWorkspace.mjs.map +1 -0
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs +15 -0
- package/dist/lib/yarn/workspace/yarnWorkspaces.mjs.map +1 -0
- package/dist/lib/yarn/yarnInitCwd.mjs +8 -0
- package/dist/lib/yarn/yarnInitCwd.mjs.map +1 -0
- package/dist/loadPackageConfig.mjs +18 -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/detectReact.mjs +52 -0
- package/dist/pm/detectReact.mjs.map +1 -0
- package/dist/pm/index.mjs +263 -0
- package/dist/pm/index.mjs.map +1 -0
- package/dist/pm/pnpmPackageManager.mjs +97 -0
- package/dist/pm/pnpmPackageManager.mjs.map +1 -0
- package/dist/pm/registry.mjs +27 -0
- package/dist/pm/registry.mjs.map +1 -0
- package/dist/pm/yarnPackageManager.mjs +112 -0
- package/dist/pm/yarnPackageManager.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 +194 -0
- package/dist/xy/build/buildCommand.mjs.map +1 -0
- package/dist/xy/build/compileCommand.mjs +203 -0
- package/dist/xy/build/compileCommand.mjs.map +1 -0
- package/dist/xy/build/compileOnlyCommand.mjs +204 -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 +487 -0
- package/dist/xy/build/index.mjs.map +1 -0
- package/dist/xy/build/rebuildCommand.mjs +156 -0
- package/dist/xy/build/rebuildCommand.mjs.map +1 -0
- package/dist/xy/build/recompileCommand.mjs +215 -0
- package/dist/xy/build/recompileCommand.mjs.map +1 -0
- package/dist/xy/common/checkCommand.mjs +1909 -0
- package/dist/xy/common/checkCommand.mjs.map +1 -0
- package/dist/xy/common/claude/checkCommand.mjs +207 -0
- package/dist/xy/common/claude/checkCommand.mjs.map +1 -0
- package/dist/xy/common/claude/cleanCommand.mjs +78 -0
- package/dist/xy/common/claude/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/claude/commandsCommand.mjs +134 -0
- package/dist/xy/common/claude/commandsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/index.mjs +734 -0
- package/dist/xy/common/claude/index.mjs.map +1 -0
- package/dist/xy/common/claude/initCommand.mjs +458 -0
- package/dist/xy/common/claude/initCommand.mjs.map +1 -0
- package/dist/xy/common/claude/rulesCommand.mjs +167 -0
- package/dist/xy/common/claude/rulesCommand.mjs.map +1 -0
- package/dist/xy/common/claude/settingsCommand.mjs +115 -0
- package/dist/xy/common/claude/settingsCommand.mjs.map +1 -0
- package/dist/xy/common/claude/skillsCommand.mjs +140 -0
- package/dist/xy/common/claude/skillsCommand.mjs.map +1 -0
- package/dist/xy/common/cleanDocsCommand.mjs +74 -0
- package/dist/xy/common/cleanDocsCommand.mjs.map +1 -0
- package/dist/xy/common/deadCommand.mjs +137 -0
- package/dist/xy/common/deadCommand.mjs.map +1 -0
- package/dist/xy/common/genDocsCommand.mjs +175 -0
- package/dist/xy/common/genDocsCommand.mjs.map +1 -0
- package/dist/xy/common/gitignoreCommand.mjs +165 -0
- package/dist/xy/common/gitignoreCommand.mjs.map +1 -0
- package/dist/xy/common/gitlintCommand.mjs +89 -0
- package/dist/xy/common/gitlintCommand.mjs.map +1 -0
- package/dist/xy/common/index.mjs +4654 -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 +100 -0
- package/dist/xy/common/npmignoreGenCommand.mjs.map +1 -0
- package/dist/xy/common/orphan/cleanCommand.mjs +102 -0
- package/dist/xy/common/orphan/cleanCommand.mjs.map +1 -0
- package/dist/xy/common/orphan/index.mjs +138 -0
- package/dist/xy/common/orphan/index.mjs.map +1 -0
- package/dist/xy/common/orphan/listCommand.mjs +100 -0
- package/dist/xy/common/orphan/listCommand.mjs.map +1 -0
- package/dist/xy/common/packmanCommand.mjs +1538 -0
- package/dist/xy/common/packmanCommand.mjs.map +1 -0
- package/dist/xy/common/readme/genCommand.mjs +395 -0
- package/dist/xy/common/readme/genCommand.mjs.map +1 -0
- package/dist/xy/common/readme/index.mjs +538 -0
- package/dist/xy/common/readme/index.mjs.map +1 -0
- package/dist/xy/common/readme/initCommand.mjs +109 -0
- package/dist/xy/common/readme/initCommand.mjs.map +1 -0
- package/dist/xy/common/readme/lintCommand.mjs +181 -0
- package/dist/xy/common/readme/lintCommand.mjs.map +1 -0
- package/dist/xy/common/repo/index.mjs +1070 -0
- package/dist/xy/common/repo/index.mjs.map +1 -0
- package/dist/xy/common/repo/initCommand.mjs +273 -0
- package/dist/xy/common/repo/initCommand.mjs.map +1 -0
- package/dist/xy/common/repo/lintCommand.mjs +789 -0
- package/dist/xy/common/repo/lintCommand.mjs.map +1 -0
- package/dist/xy/common/retestCommand.mjs +163 -0
- package/dist/xy/common/retestCommand.mjs.map +1 -0
- package/dist/xy/common/testCommand.mjs +157 -0
- package/dist/xy/common/testCommand.mjs.map +1 -0
- package/dist/xy/deploy/deployCommand.mjs +214 -0
- package/dist/xy/deploy/deployCommand.mjs.map +1 -0
- package/dist/xy/deploy/index.mjs +289 -0
- package/dist/xy/deploy/index.mjs.map +1 -0
- package/dist/xy/deploy/publishCommand.mjs +218 -0
- package/dist/xy/deploy/publishCommand.mjs.map +1 -0
- package/dist/xy/index.mjs +8887 -0
- package/dist/xy/index.mjs.map +1 -0
- package/dist/xy/install/cleanCommand.mjs +182 -0
- package/dist/xy/install/cleanCommand.mjs.map +1 -0
- package/dist/xy/install/dupdepsCommand.mjs +234 -0
- package/dist/xy/install/dupdepsCommand.mjs.map +1 -0
- package/dist/xy/install/index.mjs +1006 -0
- package/dist/xy/install/index.mjs.map +1 -0
- package/dist/xy/install/reinstallCommand.mjs +292 -0
- package/dist/xy/install/reinstallCommand.mjs.map +1 -0
- package/dist/xy/install/staticsCommand.mjs +233 -0
- package/dist/xy/install/staticsCommand.mjs.map +1 -0
- package/dist/xy/install/upCommand.mjs +150 -0
- package/dist/xy/install/upCommand.mjs.map +1 -0
- package/dist/xy/install/updoCommand.mjs +550 -0
- package/dist/xy/install/updoCommand.mjs.map +1 -0
- package/dist/xy/lint/cycleCommand.mjs +289 -0
- package/dist/xy/lint/cycleCommand.mjs.map +1 -0
- package/dist/xy/lint/deplintCommand.mjs +1897 -0
- package/dist/xy/lint/deplintCommand.mjs.map +1 -0
- package/dist/xy/lint/fixCommand.mjs +398 -0
- package/dist/xy/lint/fixCommand.mjs.map +1 -0
- package/dist/xy/lint/index.mjs +3759 -0
- package/dist/xy/lint/index.mjs.map +1 -0
- package/dist/xy/lint/knipCommand.mjs +142 -0
- package/dist/xy/lint/knipCommand.mjs.map +1 -0
- package/dist/xy/lint/lint/index.mjs +695 -0
- package/dist/xy/lint/lint/index.mjs.map +1 -0
- package/dist/xy/lint/lint/initCommand.mjs +282 -0
- package/dist/xy/lint/lint/initCommand.mjs.map +1 -0
- package/dist/xy/lint/lint/runCommand.mjs +405 -0
- package/dist/xy/lint/lint/runCommand.mjs.map +1 -0
- package/dist/xy/lint/lintCommand.mjs +695 -0
- package/dist/xy/lint/lintCommand.mjs.map +1 -0
- package/dist/xy/lint/lintlintCommand.mjs +359 -0
- package/dist/xy/lint/lintlintCommand.mjs.map +1 -0
- package/dist/xy/lint/publintCommand.mjs +778 -0
- package/dist/xy/lint/publintCommand.mjs.map +1 -0
- package/dist/xy/lint/relintCommand.mjs +381 -0
- package/dist/xy/lint/relintCommand.mjs.map +1 -0
- package/dist/xy/lint/sonarCommand.mjs +137 -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/react/analyzeCommand.mjs +150 -0
- package/dist/xy/react/analyzeCommand.mjs.map +1 -0
- package/dist/xy/react/ejectCommand.mjs +150 -0
- package/dist/xy/react/ejectCommand.mjs.map +1 -0
- package/dist/xy/react/index.mjs +202 -0
- package/dist/xy/react/index.mjs.map +1 -0
- package/dist/xy/react/sitemapCommand.mjs +129 -0
- package/dist/xy/react/sitemapCommand.mjs.map +1 -0
- package/dist/xy/react/startCommand.mjs +150 -0
- package/dist/xy/react/startCommand.mjs.map +1 -0
- package/dist/xy/xy.mjs +8879 -0
- package/dist/xy/xy.mjs.map +1 -0
- package/dist/xy/xyParseOptions.mjs +117 -0
- package/dist/xy/xyParseOptions.mjs.map +1 -0
- package/dist/xy/yarn/index.mjs +188 -0
- package/dist/xy/yarn/index.mjs.map +1 -0
- package/dist/xy/yarn/upplugCommand.mjs +134 -0
- package/dist/xy/yarn/upplugCommand.mjs.map +1 -0
- package/dist/xy/yarn/upyarnCommand.mjs +129 -0
- package/dist/xy/yarn/upyarnCommand.mjs.map +1 -0
- package/dist/xy/yarn/yarn3OnlyCommand.mjs +70 -0
- package/dist/xy/yarn/yarn3OnlyCommand.mjs.map +1 -0
- package/package.json +119 -0
- package/templates/claude/CLAUDE-local.md +4 -0
- package/templates/claude/CLAUDE-project.md +4 -0
- package/templates/claude/commands/xy-build.md +7 -0
- package/templates/claude/commands/xy-clean.md +7 -0
- package/templates/claude/commands/xy-compile.md +7 -0
- package/templates/claude/commands/xy-cycle.md +7 -0
- package/templates/claude/commands/xy-dead.md +7 -0
- package/templates/claude/commands/xy-deplint.md +7 -0
- package/templates/claude/commands/xy-deps.md +24 -0
- package/templates/claude/commands/xy-dupdeps.md +7 -0
- package/templates/claude/commands/xy-fix.md +7 -0
- package/templates/claude/commands/xy-gen-docs.md +7 -0
- package/templates/claude/commands/xy-gitignore.md +7 -0
- package/templates/claude/commands/xy-gitlint.md +7 -0
- package/templates/claude/commands/xy-knip.md +7 -0
- package/templates/claude/commands/xy-license.md +7 -0
- package/templates/claude/commands/xy-lint-rules.md +44 -0
- package/templates/claude/commands/xy-lint.md +7 -0
- package/templates/claude/commands/xy-publint.md +7 -0
- package/templates/claude/commands/xy-rebuild.md +7 -0
- package/templates/claude/commands/xy-recompile.md +7 -0
- package/templates/claude/commands/xy-reinstall.md +7 -0
- package/templates/claude/commands/xy-relint.md +7 -0
- package/templates/claude/commands/xy-retest.md +7 -0
- package/templates/claude/commands/xy-sonar.md +7 -0
- package/templates/claude/commands/xy-test.md +7 -0
- package/templates/claude/commands/xy-up.md +9 -0
- package/templates/claude/rules/xylabs-architecture.md +8 -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/claude/skills/xylabs-xy-cli/SKILL.md +236 -0
- package/templates/claude/skills/xylabs-xy-deplint-fix/SKILL.md +122 -0
- package/templates/gitignore/gitignore/template.gitignore +51 -0
- package/templates/gitignore/template.gitignore +51 -0
- package/templates/readme/README.body.md +25 -0
- package/templates/readme/README.template.md +22 -0
- package/templates/repo/cli/package/package.json.tmpl +63 -0
- package/templates/repo/cli/package/src/__packageName__.ts.tmpl +21 -0
- package/templates/repo/cli/package/src/actions/index.ts +1 -0
- package/templates/repo/cli/package/src/actions/printVersion.ts.tmpl +8 -0
- package/templates/repo/cli/package/src/bin/__packageName__.ts.tmpl +12 -0
- package/templates/repo/cli/package/src/commands/index.ts +1 -0
- package/templates/repo/cli/package/src/commands/versionCommand.ts.tmpl +11 -0
- package/templates/repo/cli/package/src/index.ts.tmpl +1 -0
- package/templates/repo/cli/package/tsconfig.build.json +25 -0
- package/templates/repo/cli/package/tsconfig.json +4 -0
- package/templates/repo/cli/package/tsup.config.ts +15 -0
- package/templates/repo/cli/package/xy.config.ts +3 -0
- package/templates/repo/cli/root/CLAUDE.md.tmpl +38 -0
- package/templates/repo/cli/root/cspell.json.tmpl +13 -0
- package/templates/repo/cli/root/eslint.config.ts +28 -0
- package/templates/repo/cli/root/github/workflows/build-pnpm.yml.tmpl +34 -0
- package/templates/repo/cli/root/github/workflows/build-yarn.yml.tmpl +32 -0
- package/templates/repo/cli/root/gitignore.tmpl +47 -0
- package/templates/repo/cli/root/knip.config.ts +16 -0
- package/templates/repo/cli/root/package.json.tmpl +54 -0
- package/templates/repo/cli/root/pnpm-workspace.yaml +2 -0
- package/templates/repo/cli/root/tsconfig.json +4 -0
- package/templates/repo/cli/root/vitest.config.ts +31 -0
- package/templates/repo/cli/root/xy.config.ts.tmpl +5 -0
|
@@ -0,0 +1,182 @@
|
|
|
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}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
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 safeExitAsync = async (func, exitOnFail = true) => {
|
|
69
|
+
try {
|
|
70
|
+
const result = await 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/initCwd.ts
|
|
81
|
+
function INIT_CWD() {
|
|
82
|
+
return process.env.INIT_CWD ?? process.cwd();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// src/lib/packageName.ts
|
|
86
|
+
import { readFileSync } from "fs";
|
|
87
|
+
import path from "path";
|
|
88
|
+
function packageName() {
|
|
89
|
+
if (process.env.npm_package_name) {
|
|
90
|
+
return process.env.npm_package_name;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const pkgPath = path.join(INIT_CWD(), "package.json");
|
|
94
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
95
|
+
return pkg.name;
|
|
96
|
+
} catch {
|
|
97
|
+
return void 0;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// src/lib/runStepsAsync.ts
|
|
102
|
+
import { spawn } from "child_process";
|
|
103
|
+
import { existsSync as existsSync2 } from "fs";
|
|
104
|
+
import chalk3 from "chalk";
|
|
105
|
+
var runStepAsync = (name, step, exitOnFail = true, message) => {
|
|
106
|
+
return new Promise((resolve) => {
|
|
107
|
+
const [command, args, config] = step;
|
|
108
|
+
if (message) {
|
|
109
|
+
console.log(chalk3.gray(message));
|
|
110
|
+
}
|
|
111
|
+
const argList = Array.isArray(args) ? args : args.split(" ");
|
|
112
|
+
if (command === "node" && !existsSync2(argList[0])) {
|
|
113
|
+
throw new Error(`File not found [${argList[0]}]`);
|
|
114
|
+
}
|
|
115
|
+
spawn(command, Array.isArray(args) ? args : args.split(" "), {
|
|
116
|
+
...config,
|
|
117
|
+
env: { FORCE_COLOR: "3", ...process.env },
|
|
118
|
+
shell: true,
|
|
119
|
+
stdio: "inherit"
|
|
120
|
+
}).on("close", (code) => {
|
|
121
|
+
if (code) {
|
|
122
|
+
console.error(
|
|
123
|
+
chalk3.red(
|
|
124
|
+
`Command Exited With Non-Zero Result [${chalk3.gray(code)}] | ${chalk3.yellow(command)} ${chalk3.white(
|
|
125
|
+
Array.isArray(args) ? args.join(" ") : args
|
|
126
|
+
)}`
|
|
127
|
+
)
|
|
128
|
+
);
|
|
129
|
+
checkResult(name, code, "error", exitOnFail);
|
|
130
|
+
resolve(code);
|
|
131
|
+
} else {
|
|
132
|
+
resolve(0);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
var runStepsAsync = async (name, steps, exitOnFail = true, messages) => {
|
|
138
|
+
return await safeExitAsync(async () => {
|
|
139
|
+
const pkgName = packageName();
|
|
140
|
+
console.log(chalk3.green(`${name} [${pkgName}]`));
|
|
141
|
+
let result = 0;
|
|
142
|
+
for (const [i, step] of steps.entries()) {
|
|
143
|
+
result += await runStepAsync(name, step, exitOnFail, messages?.[i]);
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// src/actions/clean.ts
|
|
150
|
+
var clean = async ({ verbose, pkg }) => {
|
|
151
|
+
return pkg ? await cleanPackage({ pkg, verbose }) : cleanAll({ verbose });
|
|
152
|
+
};
|
|
153
|
+
var cleanPackage = ({ pkg }) => {
|
|
154
|
+
const pm = getPackageManager();
|
|
155
|
+
return runStepsAsync(`Clean [${pkg}]`, [pm.runInWorkspace(pkg, "package-clean")]);
|
|
156
|
+
};
|
|
157
|
+
var cleanAll = ({ verbose }) => {
|
|
158
|
+
const pm = getPackageManager();
|
|
159
|
+
return runStepsAsync("Clean", [pm.foreachWorkspace("package-clean", [], { jobs: 64, verbose })]);
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// src/xy/install/cleanCommand.ts
|
|
163
|
+
var cleanCommand = {
|
|
164
|
+
command: "clean [package]",
|
|
165
|
+
describe: "Clean",
|
|
166
|
+
builder: (yargs) => {
|
|
167
|
+
return yargs.positional("package", { describe: "Specific package to clean" });
|
|
168
|
+
},
|
|
169
|
+
handler: async (argv) => {
|
|
170
|
+
if (argv.verbose) {
|
|
171
|
+
console.log(`Cleaning: ${argv.package ?? "all"}`);
|
|
172
|
+
}
|
|
173
|
+
process.exitCode = await clean({
|
|
174
|
+
pkg: argv.package,
|
|
175
|
+
verbose: !!argv.verbose
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
export {
|
|
180
|
+
cleanCommand
|
|
181
|
+
};
|
|
182
|
+
//# sourceMappingURL=cleanCommand.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/initCwd.ts","../../../src/lib/packageName.ts","../../../src/lib/runStepsAsync.ts","../../../src/actions/clean.ts","../../../src/xy/install/cleanCommand.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 + 'Ensure registerPackageManager() has been called before getPackageManager().',\n )\n }\n return pm\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import { readFileSync } from 'node:fs'\nimport path from 'node:path'\n\nimport { INIT_CWD } from './initCwd.ts'\n\nexport function packageName(): string | undefined {\n if (process.env.npm_package_name) {\n return process.env.npm_package_name\n }\n try {\n const pkgPath = path.join(INIT_CWD(), 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')) as Record<string, unknown>\n return pkg.name as string | undefined\n } catch {\n return undefined\n }\n}\n","import { spawn } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport type { ScriptStep } from '../pm/index.ts'\nimport { checkResult } from './checkResult.ts'\nimport { packageName } from './packageName.ts'\nimport { safeExitAsync } from './safeExit.ts'\n\nexport const runStepAsync = (name: string, step: ScriptStep, exitOnFail = true, message?: string) => {\n return new Promise<number>((resolve) => {\n const [command, args, config] = step\n if (message) {\n console.log(chalk.gray(message))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n spawn(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).on('close', (code) => {\n if (code) {\n console.error(\n chalk.red(\n `Command Exited With Non-Zero Result [${chalk.gray(code)}] | ${chalk.yellow(command)} ${chalk.white(\n Array.isArray(args) ? args.join(' ') : args,\n )}`,\n ),\n )\n checkResult(name, code, 'error', exitOnFail)\n resolve(code)\n } else {\n resolve(0)\n }\n })\n })\n}\n\nexport const runStepsAsync = async (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]) => {\n return await safeExitAsync(async () => {\n const pkgName = packageName()\n console.log(chalk.green(`${name} [${pkgName}]`))\n let result = 0\n for (const [i, step] of steps.entries()) {\n result += await runStepAsync(name, step, exitOnFail, messages?.[i])\n }\n return result\n })\n}\n","import { runStepsAsync } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface CleanParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface CleanPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const clean = async ({ verbose, pkg }: CleanParams) => {\n return pkg\n ? await cleanPackage({ pkg, verbose })\n : cleanAll({ verbose })\n}\n\nexport const cleanPackage = ({ pkg }: CleanPackageParams) => {\n const pm = getPackageManager()\n return runStepsAsync(`Clean [${pkg}]`, [pm.runInWorkspace(pkg, 'package-clean')])\n}\n\nexport const cleanAll = ({ verbose }: CleanParams) => {\n const pm = getPackageManager()\n return runStepsAsync('Clean', [pm.foreachWorkspace('package-clean', [], { jobs: 64, verbose })])\n}\n","import type { CommandModule } from 'yargs'\n\nimport { clean } from '../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean [package]',\n describe: 'Clean',\n builder: (yargs) => {\n return yargs.positional('package', { describe: 'Specific package to clean' })\n },\n handler: async (argv) => {\n if (argv.verbose) {\n console.log(`Cleaning: ${(argv.package as string | undefined) ?? 'all'}`)\n }\n process.exitCode = await clean({\n pkg: argv.package as string,\n verbose: !!argv.verbose,\n })\n },\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAEX,IAAM,cAAc,CAAC,MAAc,QAAgB,QAA0B,SAAS,aAAa,UAAU;AAClH,MAAI,QAAQ;AACV,UAAM,UAAU,aAAa,sBAAsB;AACnD,UAAM,YAAY,UAAU,UAAU,MAAM,MAAM,MAAM;AACxD,YAAQ,KAAK,EAAE,UAAU,GAAG,IAAI,QAAQ,MAAM,aAAa,OAAO,EAAE,CAAC;AACrE,QAAI,YAAY;AACd,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF;AACF;;;ACXA,SAAS,kBAAkB;AAIpB,SAAS,uBAA2C;AACzD,MAAI,WAAW,gBAAgB,KAAK,WAAW,qBAAqB,EAAG,QAAO;AAC9E,SAAO;AACT;;;ACHA,IAAM,kBAAkB,oBAAI,IAAwC;AAM7D,SAAS,kBAAkB,MAA2C;AAC3E,QAAM,SAAS,QAAQ,qBAAqB;AAC5C,QAAM,KAAK,gBAAgB,IAAI,MAAM;AACrC,MAAI,CAAC,IAAI;AACP,UAAM,IAAI;AAAA,MACR,qDAAqD,MAAM;AAAA,IAE7D;AAAA,EACF;AACA,SAAO;AACT;;;ACpBA,OAAOA,YAAW;;;ACAX,IAAM,YAAY,CAEvB,IACA,SACA,YAAY,CAACC,QAAW,CAAC,CAACA,IAAG,QAAQ,CAAC,CAACA,IAAG,YACvC;AACH,SAAO,UAAU,EAAO,IAAI,QAAQ,EAAO,IAAI;AACjD;;;ACLO,IAAM,qBAAqB,CAChC,IAAa,YACV;AACH,SAAO,UAAa,IAAI,SAAS,CAACC,QAAiBA,IAA6B,UAAU,MAAS;AACrG;;;AFDO,IAAM,YAAY,CAAC,OAAgB;AACxC,QAAM,QAAQ,OAAO,OAAO,WAAW,IAAI,MAAM,EAAE,IAAI;AACvD,QAAM,WACF,mBAAmB,OAAO,CAACC,WAAU;AACrC,QAAIA,OAAM,SAAS,UAAU;AAC3B,cAAQ,MAAMC,OAAM,IAAI,IAAID,OAAM,IAAI,cAAc,CAAC;AAAA,IACvD,OAAO;AACL,cAAQ,MAAMC,OAAM,IAAI,UAAUD,OAAM,IAAI,EAAE,CAAC;AAAA,IACjD;AACA,WAAOA,OAAM,SAAS;AAAA,EACxB,CAAC,KACE,UAAU,OAAO,CAACA,WAAU;AAC7B,YAAQ,MAAMC,OAAM,IAAI,GAAGD,OAAM,IAAI,KAAKA,OAAM,OAAO,EAAE,CAAC;AAC1D,WAAO;AAAA,EACT,CAAC,MACG,MAAM;AACR,YAAQ,MAAMC,OAAM,IAAI,qBAAqB,KAAK,UAAU,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC;AAC3E,WAAO;AAAA,EACT,GAAG;AAEL,UAAQ,KAAK,QAAQ,YAAY,QAAQ;AAC3C;;;AGVA,IAAM,gBAAgB,OAAO,MAA6B,aAAa,SAA0B;AAC/F,MAAI;AACF,UAAM,SAAS,MAAM,KAAK;AAC1B,QAAI,UAAU,YAAY;AACxB,cAAQ,KAAK,MAAM;AAAA,IACrB;AACA,WAAO;AAAA,EACT,SAAS,IAAI;AACX,WAAO,UAAU,EAAE;AAAA,EACrB;AACF;;;AC1BO,SAAS,WAAmB;AACjC,SAAO,QAAQ,IAAI,YAAY,QAAQ,IAAI;AAC7C;;;ACFA,SAAS,oBAAoB;AAC7B,OAAO,UAAU;AAIV,SAAS,cAAkC;AAChD,MAAI,QAAQ,IAAI,kBAAkB;AAChC,WAAO,QAAQ,IAAI;AAAA,EACrB;AACA,MAAI;AACF,UAAM,UAAU,KAAK,KAAK,SAAS,GAAG,cAAc;AACpD,UAAM,MAAM,KAAK,MAAM,aAAa,SAAS,MAAM,CAAC;AACpD,WAAO,IAAI;AAAA,EACb,QAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AChBA,SAAS,aAAa;AACtB,SAAS,cAAAC,mBAAkB;AAE3B,OAAOC,YAAW;AAOX,IAAM,eAAe,CAAC,MAAc,MAAkB,aAAa,MAAM,YAAqB;AACnG,SAAO,IAAI,QAAgB,CAAC,YAAY;AACtC,UAAM,CAAC,SAAS,MAAM,MAAM,IAAI;AAChC,QAAI,SAAS;AACX,cAAQ,IAAIC,OAAM,KAAK,OAAO,CAAC;AAAA,IACjC;AACA,UAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG;AAC3D,QAAI,YAAY,UAAU,CAACC,YAAW,QAAQ,CAAC,CAAC,GAAG;AACjD,YAAM,IAAI,MAAM,mBAAmB,QAAQ,CAAC,CAAC,GAAG;AAAA,IAClD;AACA,UAAM,SAAS,MAAM,QAAQ,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,GAAG;AAAA,MAC3D,GAAG;AAAA,MACH,KAAK,EAAE,aAAa,KAAK,GAAG,QAAQ,IAAI;AAAA,MACxC,OAAO;AAAA,MACP,OAAO;AAAA,IACT,CAAC,EAAE,GAAG,SAAS,CAAC,SAAS;AACvB,UAAI,MAAM;AACR,gBAAQ;AAAA,UACND,OAAM;AAAA,YACJ,wCAAwCA,OAAM,KAAK,IAAI,CAAC,OAAOA,OAAM,OAAO,OAAO,CAAC,IAAIA,OAAM;AAAA,cAC5F,MAAM,QAAQ,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI;AAAA,YACzC,CAAC;AAAA,UACH;AAAA,QACF;AACA,oBAAY,MAAM,MAAM,SAAS,UAAU;AAC3C,gBAAQ,IAAI;AAAA,MACd,OAAO;AACL,gBAAQ,CAAC;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEO,IAAM,gBAAgB,OAAO,MAAc,OAAqB,aAAa,MAAM,aAAwB;AAChH,SAAO,MAAM,cAAc,YAAY;AACrC,UAAM,UAAU,YAAY;AAC5B,YAAQ,IAAIA,OAAM,MAAM,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC;AAC/C,QAAI,SAAS;AACb,eAAW,CAAC,GAAG,IAAI,KAAK,MAAM,QAAQ,GAAG;AACvC,gBAAU,MAAM,aAAa,MAAM,MAAM,YAAY,WAAW,CAAC,CAAC;AAAA,IACpE;AACA,WAAO;AAAA,EACT,CAAC;AACH;;;ACxCO,IAAM,QAAQ,OAAO,EAAE,SAAS,IAAI,MAAmB;AAC5D,SAAO,MACH,MAAM,aAAa,EAAE,KAAK,QAAQ,CAAC,IACnC,SAAS,EAAE,QAAQ,CAAC;AAC1B;AAEO,IAAM,eAAe,CAAC,EAAE,IAAI,MAA0B;AAC3D,QAAM,KAAK,kBAAkB;AAC7B,SAAO,cAAc,UAAU,GAAG,KAAK,CAAC,GAAG,eAAe,KAAK,eAAe,CAAC,CAAC;AAClF;AAEO,IAAM,WAAW,CAAC,EAAE,QAAQ,MAAmB;AACpD,QAAM,KAAK,kBAAkB;AAC7B,SAAO,cAAc,SAAS,CAAC,GAAG,iBAAiB,iBAAiB,CAAC,GAAG,EAAE,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC;AACjG;;;ACvBO,IAAM,eAA8B;AAAA,EACzC,SAAS;AAAA,EACT,UAAU;AAAA,EACV,SAAS,CAAC,UAAU;AAClB,WAAO,MAAM,WAAW,WAAW,EAAE,UAAU,4BAA4B,CAAC;AAAA,EAC9E;AAAA,EACA,SAAS,OAAO,SAAS;AACvB,QAAI,KAAK,SAAS;AAChB,cAAQ,IAAI,aAAc,KAAK,WAAkC,KAAK,EAAE;AAAA,IAC1E;AACA,YAAQ,WAAW,MAAM,MAAM;AAAA,MAC7B,KAAK,KAAK;AAAA,MACV,SAAS,CAAC,CAAC,KAAK;AAAA,IAClB,CAAC;AAAA,EACH;AACF;","names":["chalk","ex","ex","error","chalk","existsSync","chalk","chalk","existsSync"]}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
// src/lib/dependencies/detectDuplicateDependencies.ts
|
|
2
|
+
import { execSync } from "child_process";
|
|
3
|
+
|
|
4
|
+
// src/pm/detectPackageManager.ts
|
|
5
|
+
import { existsSync } from "fs";
|
|
6
|
+
function detectPackageManager() {
|
|
7
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
8
|
+
return "yarn";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
// src/pm/registry.ts
|
|
12
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
13
|
+
function getPackageManager(name) {
|
|
14
|
+
const pmName = name ?? detectPackageManager();
|
|
15
|
+
const pm = implementations.get(pmName);
|
|
16
|
+
if (!pm) {
|
|
17
|
+
throw new Error(
|
|
18
|
+
`No package manager implementation registered for "${pmName}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
return pm;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// src/lib/processEx.ts
|
|
25
|
+
import chalk from "chalk";
|
|
26
|
+
|
|
27
|
+
// src/lib/withError.ts
|
|
28
|
+
var withError = (ex, closure, predicate = (ex2) => !!ex2.name && !!ex2.message) => {
|
|
29
|
+
return predicate(ex) ? closure(ex) : void 0;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// src/lib/withErrnoException.ts
|
|
33
|
+
var withErrnoException = (ex, closure) => {
|
|
34
|
+
return withError(ex, closure, (ex2) => ex2.errno !== void 0);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// src/lib/processEx.ts
|
|
38
|
+
var processEx = (ex) => {
|
|
39
|
+
const error = typeof ex === "string" ? new Error(ex) : ex;
|
|
40
|
+
const exitCode = withErrnoException(error, (error2) => {
|
|
41
|
+
if (error2.code === "ENOENT") {
|
|
42
|
+
console.error(chalk.red(`'${error2.path}' not found.`));
|
|
43
|
+
} else {
|
|
44
|
+
console.error(chalk.red(`Errno: ${error2.code}`));
|
|
45
|
+
}
|
|
46
|
+
return error2.errno ?? -1;
|
|
47
|
+
}) ?? withError(error, (error2) => {
|
|
48
|
+
console.error(chalk.red(`${error2.name}: ${error2.message}`));
|
|
49
|
+
return -1;
|
|
50
|
+
}) ?? (() => {
|
|
51
|
+
console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`));
|
|
52
|
+
return -1;
|
|
53
|
+
})();
|
|
54
|
+
process.exit(process.exitCode ?? exitCode);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// src/lib/safeExit.ts
|
|
58
|
+
var safeExit = (func, exitOnFail = true) => {
|
|
59
|
+
try {
|
|
60
|
+
const result = func();
|
|
61
|
+
if (result && exitOnFail) {
|
|
62
|
+
process.exit(result);
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
} catch (ex) {
|
|
66
|
+
return processEx(ex);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// src/lib/dependencies/DuplicateDetector.ts
|
|
71
|
+
import { EOL } from "os";
|
|
72
|
+
import chalk2 from "chalk";
|
|
73
|
+
|
|
74
|
+
// src/lib/jsonFormatters.ts
|
|
75
|
+
var multiLineToJSONArray = (output) => {
|
|
76
|
+
const withCommas = output.replaceAll("\r\n", "").replaceAll("\n", ",");
|
|
77
|
+
const cleanCollection = withCommas.slice(0, Math.max(0, withCommas.length - 1));
|
|
78
|
+
const collection = `[${cleanCollection}]`;
|
|
79
|
+
return JSON.parse(collection);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// src/lib/dependencies/DuplicateDetector.ts
|
|
83
|
+
var trimVirtualMeta = (value) => {
|
|
84
|
+
const virtualParts = value.split("virtual:");
|
|
85
|
+
if (virtualParts.length > 1) {
|
|
86
|
+
const hashParts = virtualParts[1].split("#");
|
|
87
|
+
return virtualParts[0] + hashParts[1];
|
|
88
|
+
} else {
|
|
89
|
+
return value;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
var trimObjectDependencyVirtualMeta = (obj) => {
|
|
93
|
+
const resultObj = {};
|
|
94
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
95
|
+
resultObj[trimVirtualMeta(key)] = {
|
|
96
|
+
descriptor: trimVirtualMeta(value.descriptor),
|
|
97
|
+
locator: trimVirtualMeta(value.locator)
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
return resultObj;
|
|
101
|
+
};
|
|
102
|
+
var trimDependencyVirtualMeta = (dependencies) => {
|
|
103
|
+
return dependencies.map((dependency) => {
|
|
104
|
+
return { children: trimObjectDependencyVirtualMeta(dependency.children), value: trimVirtualMeta(dependency.value) };
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
function extractPnpmVersions(data, depName) {
|
|
108
|
+
const versions = /* @__PURE__ */ new Set();
|
|
109
|
+
function walk(obj) {
|
|
110
|
+
if (Array.isArray(obj)) {
|
|
111
|
+
for (const item of obj) walk(item);
|
|
112
|
+
} else if (obj && typeof obj === "object") {
|
|
113
|
+
const record = obj;
|
|
114
|
+
if (typeof record.version === "string" && typeof record.from === "string" && record.from === depName) {
|
|
115
|
+
versions.add(record.version);
|
|
116
|
+
}
|
|
117
|
+
for (const val of Object.values(record)) walk(val);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
walk(data);
|
|
121
|
+
return [...versions];
|
|
122
|
+
}
|
|
123
|
+
var DuplicateDetector = class {
|
|
124
|
+
dependency;
|
|
125
|
+
duplicateVersions;
|
|
126
|
+
constructor(output, dependency) {
|
|
127
|
+
this.dependency = dependency;
|
|
128
|
+
this.duplicateVersions = this.parseVersions(output, dependency);
|
|
129
|
+
}
|
|
130
|
+
detect() {
|
|
131
|
+
if (this.duplicateVersions.length > 1) {
|
|
132
|
+
console.log(chalk2.yellow(`${EOL}Duplicates found for: ${this.dependency}`));
|
|
133
|
+
const duplicateVersions = this.duplicateVersions.join(`${EOL} `);
|
|
134
|
+
console.log(chalk2.grey(` ${duplicateVersions}`, EOL));
|
|
135
|
+
return 1;
|
|
136
|
+
} else {
|
|
137
|
+
console.log(`${this.dependency} - OK`);
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
parseVersions(output, dependency) {
|
|
142
|
+
try {
|
|
143
|
+
const parsed = JSON.parse(output);
|
|
144
|
+
if (Array.isArray(parsed)) {
|
|
145
|
+
return extractPnpmVersions(parsed, dependency);
|
|
146
|
+
}
|
|
147
|
+
} catch {
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
const entries = trimDependencyVirtualMeta(multiLineToJSONArray(output));
|
|
151
|
+
const versions = /* @__PURE__ */ new Set();
|
|
152
|
+
for (const entry of entries) {
|
|
153
|
+
for (const key of Object.keys(entry.children)) {
|
|
154
|
+
const version = key.includes("@virtual:") ? void 0 : key;
|
|
155
|
+
if (version) versions.add(version);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return [...versions];
|
|
159
|
+
} catch {
|
|
160
|
+
console.warn(chalk2.yellow(`Could not parse dependency output for ${dependency}`));
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
// src/lib/dependencies/detectDuplicateDependencies.ts
|
|
167
|
+
var detectDuplicateDependencies = (depsFromPackageJSON, DefaultDependencies) => {
|
|
168
|
+
let exitCode = 0;
|
|
169
|
+
const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies;
|
|
170
|
+
return safeExit(() => {
|
|
171
|
+
if (dependencies) {
|
|
172
|
+
for (const dependency of dependencies) {
|
|
173
|
+
let output;
|
|
174
|
+
try {
|
|
175
|
+
const pm = getPackageManager();
|
|
176
|
+
const cmd = `${pm.command} why ${dependency} --json`;
|
|
177
|
+
output = execSync(cmd, { maxBuffer: 64 * 1024 * 1024 }).toString();
|
|
178
|
+
} catch (e) {
|
|
179
|
+
console.error(`Error running dependency check: ${String(e)}`);
|
|
180
|
+
exitCode = 1;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (output) {
|
|
184
|
+
exitCode = new DuplicateDetector(output, dependency).detect();
|
|
185
|
+
} else {
|
|
186
|
+
console.log(`${dependency} - N/A`);
|
|
187
|
+
if (depsFromPackageJSON) {
|
|
188
|
+
exitCode = 1;
|
|
189
|
+
console.log(`\u{1F6A8} Library ${dependency} was requested in package.json but not found`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return exitCode;
|
|
194
|
+
} else {
|
|
195
|
+
console.log("\u{1F6A8} No dependencies where passed");
|
|
196
|
+
return exitCode;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// src/lib/parsedPackageJSON.ts
|
|
202
|
+
import { readFileSync } from "fs";
|
|
203
|
+
var parsedPackageJSON = (path) => {
|
|
204
|
+
const pathToPackageJSON = path ?? process.env.npm_package_json ?? "";
|
|
205
|
+
const packageJSON = readFileSync(pathToPackageJSON).toString();
|
|
206
|
+
return JSON.parse(packageJSON);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
// src/actions/dupdeps.ts
|
|
210
|
+
import chalk3 from "chalk";
|
|
211
|
+
var dupdeps = () => {
|
|
212
|
+
console.log(chalk3.green("Checking all Dependencies for Duplicates"));
|
|
213
|
+
const pkg = parsedPackageJSON();
|
|
214
|
+
const allDependencies = {
|
|
215
|
+
...pkg?.dependencies,
|
|
216
|
+
...pkg?.devDependencies
|
|
217
|
+
};
|
|
218
|
+
const dependencies = Object.keys(allDependencies);
|
|
219
|
+
return detectDuplicateDependencies(dependencies);
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// src/xy/install/dupdepsCommand.ts
|
|
223
|
+
var dupdepsCommand = {
|
|
224
|
+
command: "dupdeps",
|
|
225
|
+
describe: "Dupdeps - Duplicate Dependencies in package.json",
|
|
226
|
+
handler: (argv) => {
|
|
227
|
+
if (argv.verbose) console.log("Dupdeps");
|
|
228
|
+
process.exitCode = dupdeps();
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
export {
|
|
232
|
+
dupdepsCommand
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=dupdepsCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/dependencies/detectDuplicateDependencies.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/dependencies/DuplicateDetector.ts","../../../src/lib/jsonFormatters.ts","../../../src/lib/parsedPackageJSON.ts","../../../src/actions/dupdeps.ts","../../../src/xy/install/dupdepsCommand.ts"],"sourcesContent":["import { execSync } from 'node:child_process'\n\nimport { getPackageManager } from '../../pm/index.ts'\nimport { safeExit } from '../safeExit.ts'\nimport { DuplicateDetector } from './DuplicateDetector.ts'\n\nexport const detectDuplicateDependencies = (depsFromPackageJSON?: string[], DefaultDependencies?: string[]) => {\n let exitCode = 0\n\n const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies\n\n return safeExit(() => {\n if (dependencies) {\n for (const dependency of dependencies) {\n let output: string\n\n try {\n const pm = getPackageManager()\n const cmd = `${pm.command} why ${dependency} --json`\n output = execSync(cmd, { maxBuffer: 64 * 1024 * 1024 }).toString()\n } catch (e) {\n console.error(`Error running dependency check: ${String(e)}`)\n exitCode = 1\n continue\n }\n\n if (output) {\n exitCode = new DuplicateDetector(output, dependency).detect()\n } else {\n console.log(`${dependency} - N/A`)\n if (depsFromPackageJSON) {\n exitCode = 1\n console.log(`🚨 Library ${dependency} was requested in package.json but not found`)\n }\n }\n }\n return exitCode\n } else {\n console.log('🚨 No dependencies where passed')\n return exitCode\n }\n })\n}\n","import { existsSync } from 'node:fs'\n\nexport type PackageManagerName = 'pnpm' | 'yarn'\n\nexport function detectPackageManager(): PackageManagerName {\n if (existsSync('pnpm-lock.yaml') || existsSync('pnpm-workspace.yaml')) return 'pnpm'\n return 'yarn'\n}\n","import type { PackageManagerName } from './detectPackageManager.ts'\nimport { detectPackageManager } from './detectPackageManager.ts'\nimport type { PackageManager } from './PackageManager.ts'\n\nconst implementations = new Map<PackageManagerName, PackageManager>()\n\nexport function registerPackageManager(pm: PackageManager): void {\n implementations.set(pm.name, pm)\n}\n\nexport function getPackageManager(name?: PackageManagerName): PackageManager {\n const pmName = name ?? detectPackageManager()\n const pm = implementations.get(pmName)\n if (!pm) {\n throw new Error(\n `No package manager implementation registered for \"${pmName}\". `\n + 'Ensure registerPackageManager() has been called before getPackageManager().',\n )\n }\n return pm\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { EOL } from 'node:os'\n\nimport chalk from 'chalk'\n\nimport { multiLineToJSONArray } from '../jsonFormatters.ts'\n\ninterface ChildFields {\n descriptor: string\n locator: string\n}\n\nconst trimVirtualMeta = (value: string): string => {\n const virtualParts = value.split('virtual:')\n if (virtualParts.length > 1) {\n const hashParts = virtualParts[1].split('#')\n return virtualParts[0] + hashParts[1]\n } else {\n return value\n }\n}\n\nconst trimObjectDependencyVirtualMeta = (obj: Record<string, ChildFields>): Record<string, ChildFields> => {\n const resultObj: Record<string, ChildFields> = {}\n for (const [key, value] of Object.entries(obj)) {\n resultObj[trimVirtualMeta(key)] = {\n descriptor: trimVirtualMeta(value.descriptor),\n locator: trimVirtualMeta(value.locator),\n }\n }\n return resultObj\n}\n\nconst trimDependencyVirtualMeta = (dependencies: DependencyEntries): DependencyEntries => {\n return dependencies.map((dependency) => {\n return { children: trimObjectDependencyVirtualMeta(dependency.children), value: trimVirtualMeta(dependency.value) }\n })\n}\n\ninterface DependencyEntry {\n children: Record<string, ChildFields>\n value: string\n}\n\ntype DependencyEntries = DependencyEntry[]\n\n/**\n * Extracts all versions of a named dependency from pnpm's `why --json` output.\n * The output is a JSON array of workspace packages, each containing nested\n * dependency trees with `version` fields.\n */\nfunction extractPnpmVersions(data: unknown, depName: string): string[] {\n const versions = new Set<string>()\n function walk(obj: unknown): void {\n if (Array.isArray(obj)) {\n for (const item of obj) walk(item)\n } else if (obj && typeof obj === 'object') {\n const record = obj as Record<string, unknown>\n if (typeof record.version === 'string' && typeof record.from === 'string' && record.from === depName) {\n versions.add(record.version)\n }\n for (const val of Object.values(record)) walk(val)\n }\n }\n walk(data)\n return [...versions]\n}\n\nexport class DuplicateDetector {\n private dependency: string\n private duplicateVersions: string[]\n\n constructor(output: string, dependency: string) {\n this.dependency = dependency\n this.duplicateVersions = this.parseVersions(output, dependency)\n }\n\n detect(): number {\n if (this.duplicateVersions.length > 1) {\n console.log(chalk.yellow(`${EOL}Duplicates found for: ${this.dependency}`))\n const duplicateVersions = this.duplicateVersions.join(`${EOL} `)\n console.log(chalk.grey(` ${duplicateVersions}`, EOL))\n return 1\n } else {\n console.log(`${this.dependency} - OK`)\n return 0\n }\n }\n\n private parseVersions(output: string, dependency: string): string[] {\n // Try pnpm format first (valid JSON array)\n try {\n const parsed: unknown = JSON.parse(output)\n if (Array.isArray(parsed)) {\n return extractPnpmVersions(parsed, dependency)\n }\n } catch {\n // Not pnpm format, try yarn NDJSON format\n }\n\n try {\n const entries: DependencyEntries = trimDependencyVirtualMeta(multiLineToJSONArray(output) as DependencyEntries)\n const versions = new Set<string>()\n for (const entry of entries) {\n for (const key of Object.keys(entry.children)) {\n const version = key.includes('@virtual:') ? undefined : key\n if (version) versions.add(version)\n }\n }\n return [...versions]\n } catch {\n console.warn(chalk.yellow(`Could not parse dependency output for ${dependency}`))\n return []\n }\n }\n}\n","export const multiLineToJSONArray = (output: string): unknown[] => {\n const withCommas = output.replaceAll('\\r\\n', '').replaceAll('\\n', ',')\n const cleanCollection = withCommas.slice(0, Math.max(0, withCommas.length - 1))\n const collection = `[${cleanCollection}]`\n return JSON.parse(collection) as unknown[]\n}\n","import { readFileSync } from 'node:fs'\n\nexport const parsedPackageJSON = (path?: string): Record<string, unknown> => {\n const pathToPackageJSON = path ?? process.env.npm_package_json ?? ''\n const packageJSON = readFileSync(pathToPackageJSON).toString()\n return JSON.parse(packageJSON) as Record<string, unknown>\n}\n","import chalk from 'chalk'\n\nimport { detectDuplicateDependencies, parsedPackageJSON } from '../lib/index.ts'\n\nexport const dupdeps = () => {\n console.log(chalk.green('Checking all Dependencies for Duplicates'))\n\n const pkg = parsedPackageJSON()\n const allDependencies = {\n ...(pkg?.dependencies as Record<string, string> | undefined),\n ...(pkg?.devDependencies as Record<string, string> | undefined),\n }\n const dependencies = Object.keys(allDependencies)\n\n return detectDuplicateDependencies(dependencies)\n}\n","import type { CommandModule } from 'yargs'\n\nimport { dupdeps } from '../../actions/index.ts'\n\nexport const dupdepsCommand: CommandModule = {\n command: 'dupdeps',\n describe: 'Dupdeps - Duplicate Dependencies in package.json',\n handler: (argv) => {\n if (argv.verbose) console.log('Dupdeps')\n process.exitCode = dupdeps()\n },\n}\n"],"mappings":"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","names":["ex","ex","error","chalk","chalk","chalk","chalk"]}
|