@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,108 @@
|
|
|
1
|
+
// src/pm/detectPackageManager.ts
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
function detectPackageManager() {
|
|
4
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
5
|
+
return "yarn";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/pm/registry.ts
|
|
9
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
10
|
+
function getPackageManager(name) {
|
|
11
|
+
const pmName = name ?? detectPackageManager();
|
|
12
|
+
const pm = implementations.get(pmName);
|
|
13
|
+
if (!pm) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`No package manager implementation registered for "${pmName}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
return pm;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/actions/license.ts
|
|
22
|
+
import chalk from "chalk";
|
|
23
|
+
import { init } from "license-checker";
|
|
24
|
+
var license = async (pkg) => {
|
|
25
|
+
const workspaces = getPackageManager().listWorkspaces();
|
|
26
|
+
const workspaceList = workspaces.filter(({ name }) => {
|
|
27
|
+
return pkg === void 0 || name === pkg;
|
|
28
|
+
});
|
|
29
|
+
const exclude = /* @__PURE__ */ new Set([
|
|
30
|
+
"MIT",
|
|
31
|
+
"MIT*",
|
|
32
|
+
"ISC",
|
|
33
|
+
"Apache-2.0",
|
|
34
|
+
"BSD",
|
|
35
|
+
"BSD*",
|
|
36
|
+
"BSD-2-Clause",
|
|
37
|
+
"BSD-3-Clause",
|
|
38
|
+
"CC-BY-4.0",
|
|
39
|
+
"Unlicense",
|
|
40
|
+
"CC-BY-3.0",
|
|
41
|
+
"CC0-1.0",
|
|
42
|
+
"LGPL-3.0-only",
|
|
43
|
+
"LGPL-3.0",
|
|
44
|
+
"LGPL-3.0-or-later",
|
|
45
|
+
"Python-2.0"
|
|
46
|
+
]);
|
|
47
|
+
console.log(chalk.green("License Checker"));
|
|
48
|
+
return (await Promise.all(
|
|
49
|
+
workspaceList.map(({ location, name }) => {
|
|
50
|
+
return new Promise((resolve) => {
|
|
51
|
+
init({ production: true, start: location }, (error, packages) => {
|
|
52
|
+
if (error) {
|
|
53
|
+
console.error(chalk.red(`License Checker [${name}] Error`));
|
|
54
|
+
console.error(chalk.gray(error));
|
|
55
|
+
console.log("\n");
|
|
56
|
+
resolve(1);
|
|
57
|
+
} else {
|
|
58
|
+
console.log(chalk.green(`License Checker [${name}]`));
|
|
59
|
+
let count = 0;
|
|
60
|
+
for (const [name2, info] of Object.entries(packages)) {
|
|
61
|
+
const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses];
|
|
62
|
+
for (const license2 of licenses) {
|
|
63
|
+
if (license2) {
|
|
64
|
+
const processedLicense = license2.startsWith("(") && license2.at(-1) === ")" ? license2.slice(1, -2) : license2;
|
|
65
|
+
const orLicenses = processedLicense.split(" OR ");
|
|
66
|
+
let orLicenseFound = false;
|
|
67
|
+
for (const orLicense of orLicenses) {
|
|
68
|
+
if (exclude.has(orLicense)) {
|
|
69
|
+
orLicenseFound = true;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (!orLicenseFound) {
|
|
73
|
+
count++;
|
|
74
|
+
console.warn(chalk.yellow(`${name2}: Package License not allowed [${license2}]`));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
console.log("\n");
|
|
80
|
+
resolve(count);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
})
|
|
85
|
+
)).reduce((prev, value) => prev || value, 0);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// src/xy/param.ts
|
|
89
|
+
var packagePositionalParam = (yargs) => {
|
|
90
|
+
return yargs.positional("package", { describe: "Specific package to target", type: "string" });
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// src/xy/common/licenseCommand.ts
|
|
94
|
+
var licenseCommand = {
|
|
95
|
+
builder: (yargs) => {
|
|
96
|
+
return packagePositionalParam(yargs);
|
|
97
|
+
},
|
|
98
|
+
command: "license [package]",
|
|
99
|
+
describe: "License - Check licenses of dependencies",
|
|
100
|
+
handler: async (argv) => {
|
|
101
|
+
if (argv.verbose) console.log(`License: ${argv.package ?? "all"}`);
|
|
102
|
+
process.exitCode = await license();
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
export {
|
|
106
|
+
licenseCommand
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=licenseCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/actions/license.ts","../../../src/xy/param.ts","../../../src/xy/common/licenseCommand.ts"],"sourcesContent":["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'\nimport { init } from 'license-checker'\n\nimport { getPackageManager } from '../pm/index.ts'\n\nexport const license = async (pkg?: string) => {\n const workspaces = getPackageManager().listWorkspaces()\n const workspaceList = workspaces.filter(({ name }) => {\n return pkg === undefined || name === pkg\n })\n\n const exclude = new Set([\n 'MIT',\n 'MIT*',\n 'ISC',\n 'Apache-2.0',\n 'BSD',\n 'BSD*',\n 'BSD-2-Clause',\n 'BSD-3-Clause',\n 'CC-BY-4.0',\n 'Unlicense',\n 'CC-BY-3.0',\n 'CC0-1.0',\n 'LGPL-3.0-only',\n 'LGPL-3.0',\n 'LGPL-3.0-or-later',\n 'Python-2.0',\n ])\n\n console.log(chalk.green('License Checker'))\n\n return (\n (\n await Promise.all(\n workspaceList.map(({ location, name }) => {\n return new Promise<number>((resolve) => {\n init({ production: true, start: location }, (error, packages) => {\n if (error) {\n console.error(chalk.red(`License Checker [${name}] Error`))\n console.error(chalk.gray(error))\n console.log('\\n')\n resolve(1)\n } else {\n console.log(chalk.green(`License Checker [${name}]`))\n let count = 0\n for (const [name, info] of Object.entries(packages)) {\n const licenses = Array.isArray(info.licenses) ? info.licenses : [info.licenses]\n for (const license of licenses) {\n if (license) {\n // remove surrounding parens on some string\n const processedLicense = (license.startsWith('(') && license.at(-1) === ')')\n ? license.slice(1, -2)\n : license\n // get list of OR licenses from string\n const orLicenses = processedLicense.split(' OR ')\n let orLicenseFound = false\n for (const orLicense of orLicenses) {\n if (exclude.has(orLicense)) {\n orLicenseFound = true\n }\n }\n if (!orLicenseFound) {\n count++\n console.warn(chalk.yellow(`${name}: Package License not allowed [${license}]`))\n }\n }\n }\n }\n console.log('\\n')\n resolve(count)\n }\n })\n })\n }),\n )\n )\n // eslint-disable-next-line unicorn/no-array-reduce\n .reduce((prev, value) => prev || value, 0)\n )\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target', type: 'string' })\n}\n","import type { CommandModule } from 'yargs'\n\nimport { license } from '../../actions/index.ts'\nimport { packagePositionalParam } from '../param.ts'\n\nexport const licenseCommand: CommandModule = {\n builder: (yargs) => {\n return packagePositionalParam(yargs)\n },\n command: 'license [package]',\n describe: 'License - Check licenses of dependencies',\n handler: async (argv) => {\n if (argv.verbose) console.log(`License: ${(argv.package as string | undefined) ?? 'all'}`)\n process.exitCode = await license()\n },\n}\n"],"mappings":"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","names":["name","license"]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/pm/detectPackageManager.ts
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
function detectPackageManager() {
|
|
4
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
5
|
+
return "yarn";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/pm/registry.ts
|
|
9
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
10
|
+
function getPackageManager(name) {
|
|
11
|
+
const pmName = name ?? detectPackageManager();
|
|
12
|
+
const pm = implementations.get(pmName);
|
|
13
|
+
if (!pm) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`No package manager implementation registered for "${pmName}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
return pm;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/lib/file/constants.ts
|
|
22
|
+
var WINDOWS_NEWLINE_REGEX = /\r\n/g;
|
|
23
|
+
var CROSS_PLATFORM_NEWLINE = "\n";
|
|
24
|
+
|
|
25
|
+
// src/lib/file/fileLines.ts
|
|
26
|
+
import {
|
|
27
|
+
existsSync as existsSync2,
|
|
28
|
+
readFileSync,
|
|
29
|
+
writeFileSync
|
|
30
|
+
} from "fs";
|
|
31
|
+
|
|
32
|
+
// src/lib/string/empty.ts
|
|
33
|
+
var empty = (value) => value?.trim().length === 0;
|
|
34
|
+
var notEmpty = (value) => !empty(value);
|
|
35
|
+
|
|
36
|
+
// src/lib/string/union.ts
|
|
37
|
+
var union = (a, b) => /* @__PURE__ */ new Set([...new Set(a), ...new Set(b)]);
|
|
38
|
+
|
|
39
|
+
// src/lib/file/ReadFileSyncOptions.ts
|
|
40
|
+
var defaultReadFileSyncOptions = { encoding: "utf8" };
|
|
41
|
+
|
|
42
|
+
// src/lib/file/fileLines.ts
|
|
43
|
+
var readLines = (uri, options = defaultReadFileSyncOptions) => existsSync2(uri) ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE) : [];
|
|
44
|
+
var readNonEmptyLines = (uri, options = defaultReadFileSyncOptions) => readLines(uri, options).filter(notEmpty);
|
|
45
|
+
var writeLines = (uri, lines, options = defaultReadFileSyncOptions) => {
|
|
46
|
+
const existing = existsSync2(uri) ? readFileSync(uri, options) : void 0;
|
|
47
|
+
const desired = lines.join(CROSS_PLATFORM_NEWLINE);
|
|
48
|
+
if (existing !== desired) writeFileSync(uri, desired, options);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// src/lib/generateIgnoreFiles.ts
|
|
52
|
+
import chalk from "chalk";
|
|
53
|
+
|
|
54
|
+
// src/lib/initCwd.ts
|
|
55
|
+
function INIT_CWD() {
|
|
56
|
+
return process.env.INIT_CWD ?? process.cwd();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// src/lib/generateIgnoreFiles.ts
|
|
60
|
+
var localeCompare = (a, b) => a.localeCompare(b);
|
|
61
|
+
var mergeEntries = (a, b) => [...union(a, b)].toSorted(localeCompare);
|
|
62
|
+
var generateIgnoreFiles = (filename2, pkg) => {
|
|
63
|
+
console.log(chalk.green(`Generate ${filename2} Files`));
|
|
64
|
+
const cwd = INIT_CWD();
|
|
65
|
+
const pm = getPackageManager();
|
|
66
|
+
const singleWorkspace = pkg ? pm.findWorkspace(pkg) : void 0;
|
|
67
|
+
const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces();
|
|
68
|
+
const readEntries = (location) => readNonEmptyLines(`${location}/${filename2}`);
|
|
69
|
+
const writeEntries = (location, entries) => writeLines(`${location}/${filename2}`, entries);
|
|
70
|
+
const results = workspaces.map(({ location, name }) => {
|
|
71
|
+
try {
|
|
72
|
+
writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)));
|
|
73
|
+
return 0;
|
|
74
|
+
} catch (ex) {
|
|
75
|
+
const error = ex;
|
|
76
|
+
console.error(`Generate ${filename2} Files [${name}] [${error.message}]`);
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const succeeded = results.every((result) => result === 0);
|
|
81
|
+
return succeeded ? 0 : 1;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// src/actions/npmignore-gen.ts
|
|
85
|
+
var filename = ".npmignore";
|
|
86
|
+
var npmignoreGen = (pkg) => generateIgnoreFiles(filename, pkg);
|
|
87
|
+
|
|
88
|
+
// src/xy/common/npmignoreGenCommand.ts
|
|
89
|
+
var npmignoreGenCommand = {
|
|
90
|
+
command: "npmignore-gen",
|
|
91
|
+
describe: "NpmIgnore Gen - Generate .npmignore files",
|
|
92
|
+
handler: (argv) => {
|
|
93
|
+
if (argv.verbose) console.log("NpmIgnore Gen");
|
|
94
|
+
process.exitCode = npmignoreGen();
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
export {
|
|
98
|
+
npmignoreGenCommand
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=npmignoreGenCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/pm/detectPackageManager.ts","../../../src/pm/registry.ts","../../../src/lib/file/constants.ts","../../../src/lib/file/fileLines.ts","../../../src/lib/string/empty.ts","../../../src/lib/string/union.ts","../../../src/lib/file/ReadFileSyncOptions.ts","../../../src/lib/generateIgnoreFiles.ts","../../../src/lib/initCwd.ts","../../../src/actions/npmignore-gen.ts","../../../src/xy/common/npmignoreGenCommand.ts"],"sourcesContent":["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","export const WINDOWS_NEWLINE_REGEX = /\\r\\n/g\nexport const CROSS_PLATFORM_NEWLINE = '\\n'\n","import type { PathLike, WriteFileOptions } from 'node:fs'\nimport {\n existsSync, readFileSync,\n writeFileSync,\n} from 'node:fs'\n\nimport { notEmpty } from '../string/index.ts'\nimport { CROSS_PLATFORM_NEWLINE, WINDOWS_NEWLINE_REGEX } from './constants.ts'\nimport type { ReadFileSyncOptions } from './ReadFileSyncOptions.ts'\nimport { defaultReadFileSyncOptions } from './ReadFileSyncOptions.ts'\n\nexport const readLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n existsSync(uri)\n ? readFileSync(uri, options).replace(WINDOWS_NEWLINE_REGEX, CROSS_PLATFORM_NEWLINE).split(CROSS_PLATFORM_NEWLINE)\n : []\n\nexport const readNonEmptyLines = (uri: PathLike, options: ReadFileSyncOptions = defaultReadFileSyncOptions): string[] =>\n readLines(uri, options).filter(notEmpty)\n\nexport const writeLines = (uri: PathLike, lines: string[], options: WriteFileOptions = defaultReadFileSyncOptions) => {\n const existing = existsSync(uri) ? readFileSync(uri, options) : undefined\n const desired = lines.join(CROSS_PLATFORM_NEWLINE)\n // Check if the file is different before writing\n if (existing !== desired) writeFileSync(uri, desired, options)\n}\n","export const empty = (value?: string): boolean => value?.trim().length === 0\nexport const notEmpty = (value?: string): boolean => !empty(value)\n","export const union = (a: string[], b: string[]): Set<string> => new Set([...new Set(a), ...new Set(b)])\n","export type ReadFileSyncOptions = BufferEncoding | {\n encoding: BufferEncoding\n flags?: string\n}\n\nexport const defaultReadFileSyncOptions: ReadFileSyncOptions = { encoding: 'utf8' }\n","import chalk from 'chalk'\n\nimport { getPackageManager } from '../pm/index.ts'\nimport { readNonEmptyLines, writeLines } from './file/index.ts'\nimport { INIT_CWD } from './initCwd.ts'\nimport { union } from './string/index.ts'\n\nconst localeCompare = (a: string, b: string) => a.localeCompare(b)\n\nconst mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].toSorted(localeCompare)\n\nexport const generateIgnoreFiles = (filename: string, pkg?: string) => {\n console.log(chalk.green(`Generate ${filename} Files`))\n const cwd = INIT_CWD()\n const pm = getPackageManager()\n const singleWorkspace = pkg ? pm.findWorkspace(pkg) : undefined\n const workspaces = singleWorkspace ? [singleWorkspace] : pm.listWorkspaces()\n const readEntries = (location: string): string[] => readNonEmptyLines(`${location}/${filename}`)\n const writeEntries = (location: string, entries: string[]) => writeLines(`${location}/${filename}`, entries)\n const results = workspaces.map(({ location, name }) => {\n try {\n writeEntries(location, mergeEntries(readEntries(cwd), readEntries(location)))\n return 0\n } catch (ex) {\n const error = ex as Error\n console.error(`Generate ${filename} Files [${name}] [${error.message}]`)\n return 1\n }\n })\n const succeeded = results.every(result => result === 0)\n return succeeded ? 0 : 1\n}\n","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import { generateIgnoreFiles } from '../lib/index.ts'\n\nconst filename = '.npmignore'\n\nexport const npmignoreGen = (pkg?: string) => generateIgnoreFiles(filename, pkg)\n","import type { CommandModule } from 'yargs'\n\nimport { npmignoreGen } from '../../actions/index.ts'\n\nexport const npmignoreGenCommand: CommandModule = {\n command: 'npmignore-gen',\n describe: 'NpmIgnore Gen - Generate .npmignore files',\n handler: (argv) => {\n if (argv.verbose) console.log('NpmIgnore Gen')\n process.exitCode = npmignoreGen()\n },\n}\n"],"mappings":"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","names":["existsSync","existsSync","filename"]}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// src/pm/detectPackageManager.ts
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
function detectPackageManager() {
|
|
4
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
5
|
+
return "yarn";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/pm/registry.ts
|
|
9
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
10
|
+
function getPackageManager(name) {
|
|
11
|
+
const pmName = name ?? detectPackageManager();
|
|
12
|
+
const pm = implementations.get(pmName);
|
|
13
|
+
if (!pm) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`No package manager implementation registered for "${pmName}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
return pm;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/lib/initCwd.ts
|
|
22
|
+
function INIT_CWD() {
|
|
23
|
+
return process.env.INIT_CWD ?? process.cwd();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// src/actions/orphan.ts
|
|
27
|
+
import fs from "fs";
|
|
28
|
+
import path from "path";
|
|
29
|
+
import chalk from "chalk";
|
|
30
|
+
import { glob } from "glob";
|
|
31
|
+
function isAncestorOfWorkspace(dir, workspaceLocations) {
|
|
32
|
+
const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep;
|
|
33
|
+
for (const ws of workspaceLocations) {
|
|
34
|
+
if (ws.startsWith(dirWithSep)) return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
function findOrphans(cwd, verbose) {
|
|
39
|
+
const pm = getPackageManager();
|
|
40
|
+
const workspaces = pm.listWorkspaces();
|
|
41
|
+
const workspaceLocations = new Set(
|
|
42
|
+
workspaces.map((ws) => path.resolve(cwd, ws.location))
|
|
43
|
+
);
|
|
44
|
+
const distDirs = glob.sync("**/dist", {
|
|
45
|
+
cwd,
|
|
46
|
+
ignore: ["**/node_modules/**"]
|
|
47
|
+
});
|
|
48
|
+
const orphans = /* @__PURE__ */ new Set();
|
|
49
|
+
for (const distDir of distDirs) {
|
|
50
|
+
const parentRel = path.dirname(distDir);
|
|
51
|
+
const parentAbs = path.resolve(cwd, parentRel);
|
|
52
|
+
if (parentRel === ".") continue;
|
|
53
|
+
if (workspaceLocations.has(parentAbs)) continue;
|
|
54
|
+
if (fs.existsSync(path.join(parentAbs, "package.json"))) continue;
|
|
55
|
+
if (verbose) {
|
|
56
|
+
console.log(chalk.gray(` Found orphan: ${parentRel}`));
|
|
57
|
+
}
|
|
58
|
+
let topOrphan = parentRel;
|
|
59
|
+
let current = path.dirname(parentRel);
|
|
60
|
+
while (current !== ".") {
|
|
61
|
+
const currentAbs = path.resolve(cwd, current);
|
|
62
|
+
if (workspaceLocations.has(currentAbs)) break;
|
|
63
|
+
if (fs.existsSync(path.join(currentAbs, "package.json"))) break;
|
|
64
|
+
if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break;
|
|
65
|
+
topOrphan = current;
|
|
66
|
+
current = path.dirname(current);
|
|
67
|
+
}
|
|
68
|
+
orphans.add(topOrphan);
|
|
69
|
+
}
|
|
70
|
+
return [...orphans].toSorted();
|
|
71
|
+
}
|
|
72
|
+
function orphanClean({ verbose } = {}) {
|
|
73
|
+
const cwd = INIT_CWD();
|
|
74
|
+
console.log(chalk.green("Orphan Clean"));
|
|
75
|
+
const orphans = findOrphans(cwd, verbose);
|
|
76
|
+
if (orphans.length === 0) {
|
|
77
|
+
console.log(chalk.green(" No orphaned directories found"));
|
|
78
|
+
return 0;
|
|
79
|
+
}
|
|
80
|
+
for (const orphan of orphans) {
|
|
81
|
+
const absPath = path.resolve(cwd, orphan);
|
|
82
|
+
fs.rmSync(absPath, { force: true, recursive: true });
|
|
83
|
+
console.log(chalk.yellow(` Removed ${orphan}`));
|
|
84
|
+
}
|
|
85
|
+
console.log(chalk.green(`
|
|
86
|
+
Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? "y" : "ies"}`));
|
|
87
|
+
return 0;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// src/xy/common/orphan/cleanCommand.ts
|
|
91
|
+
var cleanCommand = {
|
|
92
|
+
command: "clean",
|
|
93
|
+
describe: "Remove orphaned directories containing only build artifacts",
|
|
94
|
+
handler: (argv) => {
|
|
95
|
+
if (argv.verbose) console.log("Orphan Clean");
|
|
96
|
+
process.exitCode = orphanClean({ verbose: argv.verbose });
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
export {
|
|
100
|
+
cleanCommand
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=cleanCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/pm/detectPackageManager.ts","../../../../src/pm/registry.ts","../../../../src/lib/initCwd.ts","../../../../src/actions/orphan.ts","../../../../src/xy/common/orphan/cleanCommand.ts"],"sourcesContent":["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","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface OrphanParams {\n verbose?: boolean\n}\n\nfunction isAncestorOfWorkspace(dir: string, workspaceLocations: Set<string>): boolean {\n const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep\n for (const ws of workspaceLocations) {\n if (ws.startsWith(dirWithSep)) return true\n }\n return false\n}\n\nfunction findOrphans(cwd: string, verbose?: boolean): string[] {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceLocations = new Set(\n workspaces.map(ws => path.resolve(cwd, ws.location)),\n )\n\n // Find all dist/ directories, excluding node_modules\n const distDirs = glob.sync('**/dist', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n const orphans = new Set<string>()\n\n for (const distDir of distDirs) {\n const parentRel = path.dirname(distDir)\n const parentAbs = path.resolve(cwd, parentRel)\n\n // Skip root-level dist\n if (parentRel === '.') continue\n\n // Skip if it's a registered workspace\n if (workspaceLocations.has(parentAbs)) continue\n\n // Skip if it has a package.json (real package, just not in workspaces)\n if (fs.existsSync(path.join(parentAbs, 'package.json'))) continue\n\n if (verbose) {\n console.log(chalk.gray(` Found orphan: ${parentRel}`))\n }\n\n // Walk up to find the top-level orphan directory\n // Stop at workspace boundaries, package.json boundaries, or ancestor directories of workspaces\n let topOrphan = parentRel\n let current = path.dirname(parentRel)\n while (current !== '.') {\n const currentAbs = path.resolve(cwd, current)\n if (workspaceLocations.has(currentAbs)) break\n if (fs.existsSync(path.join(currentAbs, 'package.json'))) break\n if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break\n topOrphan = current\n current = path.dirname(current)\n }\n\n orphans.add(topOrphan)\n }\n\n return [...orphans].toSorted()\n}\n\nexport function orphanList({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan List'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n console.log(chalk.yellow(` ${orphan}`))\n }\n\n console.log(chalk.yellow(`\\n Found ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 1\n}\n\nexport function orphanClean({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan Clean'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n const absPath = path.resolve(cwd, orphan)\n fs.rmSync(absPath, { force: true, recursive: true })\n console.log(chalk.yellow(` Removed ${orphan}`))\n }\n\n console.log(chalk.green(`\\n Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 0\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan Clean')\n process.exitCode = orphanClean({ verbose: argv.verbose as boolean })\n },\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
// src/pm/detectPackageManager.ts
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
function detectPackageManager() {
|
|
4
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
5
|
+
return "yarn";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/pm/registry.ts
|
|
9
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
10
|
+
function getPackageManager(name) {
|
|
11
|
+
const pmName = name ?? detectPackageManager();
|
|
12
|
+
const pm = implementations.get(pmName);
|
|
13
|
+
if (!pm) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`No package manager implementation registered for "${pmName}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
return pm;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/lib/initCwd.ts
|
|
22
|
+
function INIT_CWD() {
|
|
23
|
+
return process.env.INIT_CWD ?? process.cwd();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// src/actions/orphan.ts
|
|
27
|
+
import fs from "fs";
|
|
28
|
+
import path from "path";
|
|
29
|
+
import chalk from "chalk";
|
|
30
|
+
import { glob } from "glob";
|
|
31
|
+
function isAncestorOfWorkspace(dir, workspaceLocations) {
|
|
32
|
+
const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep;
|
|
33
|
+
for (const ws of workspaceLocations) {
|
|
34
|
+
if (ws.startsWith(dirWithSep)) return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
function findOrphans(cwd, verbose) {
|
|
39
|
+
const pm = getPackageManager();
|
|
40
|
+
const workspaces = pm.listWorkspaces();
|
|
41
|
+
const workspaceLocations = new Set(
|
|
42
|
+
workspaces.map((ws) => path.resolve(cwd, ws.location))
|
|
43
|
+
);
|
|
44
|
+
const distDirs = glob.sync("**/dist", {
|
|
45
|
+
cwd,
|
|
46
|
+
ignore: ["**/node_modules/**"]
|
|
47
|
+
});
|
|
48
|
+
const orphans = /* @__PURE__ */ new Set();
|
|
49
|
+
for (const distDir of distDirs) {
|
|
50
|
+
const parentRel = path.dirname(distDir);
|
|
51
|
+
const parentAbs = path.resolve(cwd, parentRel);
|
|
52
|
+
if (parentRel === ".") continue;
|
|
53
|
+
if (workspaceLocations.has(parentAbs)) continue;
|
|
54
|
+
if (fs.existsSync(path.join(parentAbs, "package.json"))) continue;
|
|
55
|
+
if (verbose) {
|
|
56
|
+
console.log(chalk.gray(` Found orphan: ${parentRel}`));
|
|
57
|
+
}
|
|
58
|
+
let topOrphan = parentRel;
|
|
59
|
+
let current = path.dirname(parentRel);
|
|
60
|
+
while (current !== ".") {
|
|
61
|
+
const currentAbs = path.resolve(cwd, current);
|
|
62
|
+
if (workspaceLocations.has(currentAbs)) break;
|
|
63
|
+
if (fs.existsSync(path.join(currentAbs, "package.json"))) break;
|
|
64
|
+
if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break;
|
|
65
|
+
topOrphan = current;
|
|
66
|
+
current = path.dirname(current);
|
|
67
|
+
}
|
|
68
|
+
orphans.add(topOrphan);
|
|
69
|
+
}
|
|
70
|
+
return [...orphans].toSorted();
|
|
71
|
+
}
|
|
72
|
+
function orphanList({ verbose } = {}) {
|
|
73
|
+
const cwd = INIT_CWD();
|
|
74
|
+
console.log(chalk.green("Orphan List"));
|
|
75
|
+
const orphans = findOrphans(cwd, verbose);
|
|
76
|
+
if (orphans.length === 0) {
|
|
77
|
+
console.log(chalk.green(" No orphaned directories found"));
|
|
78
|
+
return 0;
|
|
79
|
+
}
|
|
80
|
+
for (const orphan of orphans) {
|
|
81
|
+
console.log(chalk.yellow(` ${orphan}`));
|
|
82
|
+
}
|
|
83
|
+
console.log(chalk.yellow(`
|
|
84
|
+
Found ${orphans.length} orphaned director${orphans.length === 1 ? "y" : "ies"}`));
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
function orphanClean({ verbose } = {}) {
|
|
88
|
+
const cwd = INIT_CWD();
|
|
89
|
+
console.log(chalk.green("Orphan Clean"));
|
|
90
|
+
const orphans = findOrphans(cwd, verbose);
|
|
91
|
+
if (orphans.length === 0) {
|
|
92
|
+
console.log(chalk.green(" No orphaned directories found"));
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
for (const orphan of orphans) {
|
|
96
|
+
const absPath = path.resolve(cwd, orphan);
|
|
97
|
+
fs.rmSync(absPath, { force: true, recursive: true });
|
|
98
|
+
console.log(chalk.yellow(` Removed ${orphan}`));
|
|
99
|
+
}
|
|
100
|
+
console.log(chalk.green(`
|
|
101
|
+
Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? "y" : "ies"}`));
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// src/xy/common/orphan/cleanCommand.ts
|
|
106
|
+
var cleanCommand = {
|
|
107
|
+
command: "clean",
|
|
108
|
+
describe: "Remove orphaned directories containing only build artifacts",
|
|
109
|
+
handler: (argv) => {
|
|
110
|
+
if (argv.verbose) console.log("Orphan Clean");
|
|
111
|
+
process.exitCode = orphanClean({ verbose: argv.verbose });
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// src/xy/common/orphan/listCommand.ts
|
|
116
|
+
var listCommand = {
|
|
117
|
+
command: "list",
|
|
118
|
+
describe: "List orphaned directories containing only build artifacts",
|
|
119
|
+
handler: (argv) => {
|
|
120
|
+
if (argv.verbose) console.log("Orphan List");
|
|
121
|
+
process.exitCode = orphanList({ verbose: argv.verbose });
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/xy/common/orphan/index.ts
|
|
126
|
+
var orphanCommand = {
|
|
127
|
+
builder: (yargs) => {
|
|
128
|
+
return yargs.command(listCommand).command(cleanCommand).demandCommand(1, "Please specify an orphan subcommand").strictCommands();
|
|
129
|
+
},
|
|
130
|
+
command: "orphan",
|
|
131
|
+
describe: "Orphan - Detect and clean orphaned build artifacts",
|
|
132
|
+
handler: () => {
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
export {
|
|
136
|
+
orphanCommand
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/pm/detectPackageManager.ts","../../../../src/pm/registry.ts","../../../../src/lib/initCwd.ts","../../../../src/actions/orphan.ts","../../../../src/xy/common/orphan/cleanCommand.ts","../../../../src/xy/common/orphan/listCommand.ts","../../../../src/xy/common/orphan/index.ts"],"sourcesContent":["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","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface OrphanParams {\n verbose?: boolean\n}\n\nfunction isAncestorOfWorkspace(dir: string, workspaceLocations: Set<string>): boolean {\n const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep\n for (const ws of workspaceLocations) {\n if (ws.startsWith(dirWithSep)) return true\n }\n return false\n}\n\nfunction findOrphans(cwd: string, verbose?: boolean): string[] {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceLocations = new Set(\n workspaces.map(ws => path.resolve(cwd, ws.location)),\n )\n\n // Find all dist/ directories, excluding node_modules\n const distDirs = glob.sync('**/dist', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n const orphans = new Set<string>()\n\n for (const distDir of distDirs) {\n const parentRel = path.dirname(distDir)\n const parentAbs = path.resolve(cwd, parentRel)\n\n // Skip root-level dist\n if (parentRel === '.') continue\n\n // Skip if it's a registered workspace\n if (workspaceLocations.has(parentAbs)) continue\n\n // Skip if it has a package.json (real package, just not in workspaces)\n if (fs.existsSync(path.join(parentAbs, 'package.json'))) continue\n\n if (verbose) {\n console.log(chalk.gray(` Found orphan: ${parentRel}`))\n }\n\n // Walk up to find the top-level orphan directory\n // Stop at workspace boundaries, package.json boundaries, or ancestor directories of workspaces\n let topOrphan = parentRel\n let current = path.dirname(parentRel)\n while (current !== '.') {\n const currentAbs = path.resolve(cwd, current)\n if (workspaceLocations.has(currentAbs)) break\n if (fs.existsSync(path.join(currentAbs, 'package.json'))) break\n if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break\n topOrphan = current\n current = path.dirname(current)\n }\n\n orphans.add(topOrphan)\n }\n\n return [...orphans].toSorted()\n}\n\nexport function orphanList({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan List'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n console.log(chalk.yellow(` ${orphan}`))\n }\n\n console.log(chalk.yellow(`\\n Found ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 1\n}\n\nexport function orphanClean({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan Clean'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n const absPath = path.resolve(cwd, orphan)\n fs.rmSync(absPath, { force: true, recursive: true })\n console.log(chalk.yellow(` Removed ${orphan}`))\n }\n\n console.log(chalk.green(`\\n Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 0\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanClean } from '../../../actions/index.ts'\n\nexport const cleanCommand: CommandModule = {\n command: 'clean',\n describe: 'Remove orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan Clean')\n process.exitCode = orphanClean({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanList } from '../../../actions/index.ts'\n\nexport const listCommand: CommandModule = {\n command: 'list',\n describe: 'List orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan List')\n process.exitCode = orphanList({ verbose: argv.verbose as boolean })\n },\n}\n","import type { CommandModule } from 'yargs'\n\nimport { cleanCommand } from './cleanCommand.ts'\nimport { listCommand } from './listCommand.ts'\n\nexport const orphanCommand: CommandModule = {\n builder: (yargs) => {\n return yargs\n .command(listCommand)\n .command(cleanCommand)\n .demandCommand(1, 'Please specify an orphan subcommand')\n .strictCommands()\n },\n command: 'orphan',\n describe: 'Orphan - Detect and clean orphaned build artifacts',\n handler: () => { /* parent command — no-op */ },\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/pm/detectPackageManager.ts
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
function detectPackageManager() {
|
|
4
|
+
if (existsSync("pnpm-lock.yaml") || existsSync("pnpm-workspace.yaml")) return "pnpm";
|
|
5
|
+
return "yarn";
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// src/pm/registry.ts
|
|
9
|
+
var implementations = /* @__PURE__ */ new Map();
|
|
10
|
+
function getPackageManager(name) {
|
|
11
|
+
const pmName = name ?? detectPackageManager();
|
|
12
|
+
const pm = implementations.get(pmName);
|
|
13
|
+
if (!pm) {
|
|
14
|
+
throw new Error(
|
|
15
|
+
`No package manager implementation registered for "${pmName}". Ensure registerPackageManager() has been called before getPackageManager().`
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
return pm;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/lib/initCwd.ts
|
|
22
|
+
function INIT_CWD() {
|
|
23
|
+
return process.env.INIT_CWD ?? process.cwd();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// src/actions/orphan.ts
|
|
27
|
+
import fs from "fs";
|
|
28
|
+
import path from "path";
|
|
29
|
+
import chalk from "chalk";
|
|
30
|
+
import { glob } from "glob";
|
|
31
|
+
function isAncestorOfWorkspace(dir, workspaceLocations) {
|
|
32
|
+
const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep;
|
|
33
|
+
for (const ws of workspaceLocations) {
|
|
34
|
+
if (ws.startsWith(dirWithSep)) return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
function findOrphans(cwd, verbose) {
|
|
39
|
+
const pm = getPackageManager();
|
|
40
|
+
const workspaces = pm.listWorkspaces();
|
|
41
|
+
const workspaceLocations = new Set(
|
|
42
|
+
workspaces.map((ws) => path.resolve(cwd, ws.location))
|
|
43
|
+
);
|
|
44
|
+
const distDirs = glob.sync("**/dist", {
|
|
45
|
+
cwd,
|
|
46
|
+
ignore: ["**/node_modules/**"]
|
|
47
|
+
});
|
|
48
|
+
const orphans = /* @__PURE__ */ new Set();
|
|
49
|
+
for (const distDir of distDirs) {
|
|
50
|
+
const parentRel = path.dirname(distDir);
|
|
51
|
+
const parentAbs = path.resolve(cwd, parentRel);
|
|
52
|
+
if (parentRel === ".") continue;
|
|
53
|
+
if (workspaceLocations.has(parentAbs)) continue;
|
|
54
|
+
if (fs.existsSync(path.join(parentAbs, "package.json"))) continue;
|
|
55
|
+
if (verbose) {
|
|
56
|
+
console.log(chalk.gray(` Found orphan: ${parentRel}`));
|
|
57
|
+
}
|
|
58
|
+
let topOrphan = parentRel;
|
|
59
|
+
let current = path.dirname(parentRel);
|
|
60
|
+
while (current !== ".") {
|
|
61
|
+
const currentAbs = path.resolve(cwd, current);
|
|
62
|
+
if (workspaceLocations.has(currentAbs)) break;
|
|
63
|
+
if (fs.existsSync(path.join(currentAbs, "package.json"))) break;
|
|
64
|
+
if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break;
|
|
65
|
+
topOrphan = current;
|
|
66
|
+
current = path.dirname(current);
|
|
67
|
+
}
|
|
68
|
+
orphans.add(topOrphan);
|
|
69
|
+
}
|
|
70
|
+
return [...orphans].toSorted();
|
|
71
|
+
}
|
|
72
|
+
function orphanList({ verbose } = {}) {
|
|
73
|
+
const cwd = INIT_CWD();
|
|
74
|
+
console.log(chalk.green("Orphan List"));
|
|
75
|
+
const orphans = findOrphans(cwd, verbose);
|
|
76
|
+
if (orphans.length === 0) {
|
|
77
|
+
console.log(chalk.green(" No orphaned directories found"));
|
|
78
|
+
return 0;
|
|
79
|
+
}
|
|
80
|
+
for (const orphan of orphans) {
|
|
81
|
+
console.log(chalk.yellow(` ${orphan}`));
|
|
82
|
+
}
|
|
83
|
+
console.log(chalk.yellow(`
|
|
84
|
+
Found ${orphans.length} orphaned director${orphans.length === 1 ? "y" : "ies"}`));
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// src/xy/common/orphan/listCommand.ts
|
|
89
|
+
var listCommand = {
|
|
90
|
+
command: "list",
|
|
91
|
+
describe: "List orphaned directories containing only build artifacts",
|
|
92
|
+
handler: (argv) => {
|
|
93
|
+
if (argv.verbose) console.log("Orphan List");
|
|
94
|
+
process.exitCode = orphanList({ verbose: argv.verbose });
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
export {
|
|
98
|
+
listCommand
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=listCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/pm/detectPackageManager.ts","../../../../src/pm/registry.ts","../../../../src/lib/initCwd.ts","../../../../src/actions/orphan.ts","../../../../src/xy/common/orphan/listCommand.ts"],"sourcesContent":["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","export function INIT_CWD(): string {\n return process.env.INIT_CWD ?? process.cwd()\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { glob } from 'glob'\n\nimport { INIT_CWD } from '../lib/index.ts'\nimport { getPackageManager } from '../pm/index.ts'\n\nexport interface OrphanParams {\n verbose?: boolean\n}\n\nfunction isAncestorOfWorkspace(dir: string, workspaceLocations: Set<string>): boolean {\n const dirWithSep = dir.endsWith(path.sep) ? dir : dir + path.sep\n for (const ws of workspaceLocations) {\n if (ws.startsWith(dirWithSep)) return true\n }\n return false\n}\n\nfunction findOrphans(cwd: string, verbose?: boolean): string[] {\n const pm = getPackageManager()\n const workspaces = pm.listWorkspaces()\n const workspaceLocations = new Set(\n workspaces.map(ws => path.resolve(cwd, ws.location)),\n )\n\n // Find all dist/ directories, excluding node_modules\n const distDirs = glob.sync('**/dist', {\n cwd,\n ignore: ['**/node_modules/**'],\n })\n\n const orphans = new Set<string>()\n\n for (const distDir of distDirs) {\n const parentRel = path.dirname(distDir)\n const parentAbs = path.resolve(cwd, parentRel)\n\n // Skip root-level dist\n if (parentRel === '.') continue\n\n // Skip if it's a registered workspace\n if (workspaceLocations.has(parentAbs)) continue\n\n // Skip if it has a package.json (real package, just not in workspaces)\n if (fs.existsSync(path.join(parentAbs, 'package.json'))) continue\n\n if (verbose) {\n console.log(chalk.gray(` Found orphan: ${parentRel}`))\n }\n\n // Walk up to find the top-level orphan directory\n // Stop at workspace boundaries, package.json boundaries, or ancestor directories of workspaces\n let topOrphan = parentRel\n let current = path.dirname(parentRel)\n while (current !== '.') {\n const currentAbs = path.resolve(cwd, current)\n if (workspaceLocations.has(currentAbs)) break\n if (fs.existsSync(path.join(currentAbs, 'package.json'))) break\n if (isAncestorOfWorkspace(currentAbs, workspaceLocations)) break\n topOrphan = current\n current = path.dirname(current)\n }\n\n orphans.add(topOrphan)\n }\n\n return [...orphans].toSorted()\n}\n\nexport function orphanList({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan List'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n console.log(chalk.yellow(` ${orphan}`))\n }\n\n console.log(chalk.yellow(`\\n Found ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 1\n}\n\nexport function orphanClean({ verbose }: OrphanParams = {}): number {\n const cwd = INIT_CWD()\n console.log(chalk.green('Orphan Clean'))\n\n const orphans = findOrphans(cwd, verbose)\n\n if (orphans.length === 0) {\n console.log(chalk.green(' No orphaned directories found'))\n return 0\n }\n\n for (const orphan of orphans) {\n const absPath = path.resolve(cwd, orphan)\n fs.rmSync(absPath, { force: true, recursive: true })\n console.log(chalk.yellow(` Removed ${orphan}`))\n }\n\n console.log(chalk.green(`\\n Cleaned ${orphans.length} orphaned director${orphans.length === 1 ? 'y' : 'ies'}`))\n return 0\n}\n","import type { CommandModule } from 'yargs'\n\nimport { orphanList } from '../../../actions/index.ts'\n\nexport const listCommand: CommandModule = {\n command: 'list',\n describe: 'List orphaned directories containing only build artifacts',\n handler: (argv) => {\n if (argv.verbose) console.log('Orphan List')\n process.exitCode = orphanList({ verbose: argv.verbose as boolean })\n },\n}\n"],"mappings":"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","names":[]}
|