@xylabs/ts-scripts-yarn3 7.4.28 → 7.5.1
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/deploy-major.mjs +1 -90
- package/dist/actions/deploy-major.mjs.map +1 -1
- package/dist/actions/deploy-minor.mjs +1 -90
- package/dist/actions/deploy-minor.mjs.map +1 -1
- package/dist/actions/deploy-next.mjs +1 -90
- package/dist/actions/deploy-next.mjs.map +1 -1
- package/dist/actions/deploy.mjs +1 -90
- package/dist/actions/deploy.mjs.map +1 -1
- package/dist/actions/index.mjs +128 -3840
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/publish.mjs +1 -90
- package/dist/actions/publish.mjs.map +1 -1
- package/dist/actions/reinstall.mjs +1 -90
- package/dist/actions/reinstall.mjs.map +1 -1
- package/dist/actions/up.mjs +1 -90
- package/dist/actions/up.mjs.map +1 -1
- package/dist/actions/updo.mjs +1 -90
- package/dist/actions/updo.mjs.map +1 -1
- package/dist/actions/upplug.mjs +1 -90
- package/dist/actions/upplug.mjs.map +1 -1
- package/dist/actions/upyarn.mjs +1 -90
- package/dist/actions/upyarn.mjs.map +1 -1
- package/dist/actions/yarn3only.mjs +2 -32
- package/dist/actions/yarn3only.mjs.map +1 -1
- package/dist/bin/xy.mjs +222 -3684
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.d.ts +24 -502
- package/dist/index.mjs +224 -4659
- package/dist/index.mjs.map +1 -1
- package/dist/lib/index.mjs +0 -804
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/yarn/index.mjs +0 -7
- package/dist/lib/yarn/index.mjs.map +1 -1
- package/dist/pm/index.mjs +82 -0
- package/dist/pm/index.mjs.map +1 -0
- package/dist/pm/yarnPackageManager.mjs +82 -0
- package/dist/pm/yarnPackageManager.mjs.map +1 -0
- package/dist/xy/common/index.mjs +7 -1459
- package/dist/xy/common/index.mjs.map +1 -1
- package/dist/xy/common/upplugCommand.mjs +1 -90
- package/dist/xy/common/upplugCommand.mjs.map +1 -1
- package/dist/xy/common/upyarnCommand.mjs +1 -90
- package/dist/xy/common/upyarnCommand.mjs.map +1 -1
- package/dist/xy/common/yarn3OnlyCommand.mjs +1 -33
- package/dist/xy/common/yarn3OnlyCommand.mjs.map +1 -1
- package/dist/xy/deploy/deployCommand.mjs +3 -90
- package/dist/xy/deploy/deployCommand.mjs.map +1 -1
- package/dist/xy/deploy/deployMajorCommand.mjs +1 -90
- package/dist/xy/deploy/deployMajorCommand.mjs.map +1 -1
- package/dist/xy/deploy/deployMinorCommand.mjs +1 -90
- package/dist/xy/deploy/deployMinorCommand.mjs.map +1 -1
- package/dist/xy/deploy/deployNextCommand.mjs +1 -90
- package/dist/xy/deploy/deployNextCommand.mjs.map +1 -1
- package/dist/xy/deploy/index.mjs +11 -94
- package/dist/xy/deploy/index.mjs.map +1 -1
- package/dist/xy/deploy/publishCommand.mjs +1 -90
- package/dist/xy/deploy/publishCommand.mjs.map +1 -1
- package/dist/xy/index.mjs +183 -3717
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/install/cleanCommand.mjs +6 -118
- package/dist/xy/install/cleanCommand.mjs.map +1 -1
- package/dist/xy/install/dupdepsCommand.mjs +6 -178
- package/dist/xy/install/dupdepsCommand.mjs.map +1 -1
- package/dist/xy/install/index.mjs +12 -305
- package/dist/xy/install/index.mjs.map +1 -1
- package/dist/xy/install/reinstallCommand.mjs +1 -90
- package/dist/xy/install/reinstallCommand.mjs.map +1 -1
- package/dist/xy/install/staticsCommand.mjs +6 -177
- package/dist/xy/install/staticsCommand.mjs.map +1 -1
- package/dist/xy/install/upCommand.mjs +1 -90
- package/dist/xy/install/upCommand.mjs.map +1 -1
- package/dist/xy/install/updoCommand.mjs +1 -90
- package/dist/xy/install/updoCommand.mjs.map +1 -1
- package/dist/xy/xy.mjs +64 -3595
- package/dist/xy/xy.mjs.map +1 -1
- package/dist/xy/yarnCommands.mjs +80 -0
- package/dist/xy/yarnCommands.mjs.map +1 -0
- package/package.json +5 -47
- package/dist/actions/build.mjs +0 -140
- package/dist/actions/build.mjs.map +0 -1
- package/dist/actions/claude-clean.mjs +0 -71
- package/dist/actions/claude-clean.mjs.map +0 -1
- package/dist/actions/claude-commands.mjs +0 -112
- package/dist/actions/claude-commands.mjs.map +0 -1
- package/dist/actions/claude-rules.mjs +0 -137
- package/dist/actions/claude-rules.mjs.map +0 -1
- package/dist/actions/claude-settings.mjs +0 -85
- package/dist/actions/claude-settings.mjs.map +0 -1
- package/dist/actions/claude-skills.mjs +0 -120
- package/dist/actions/claude-skills.mjs.map +0 -1
- package/dist/actions/clean-docs.mjs +0 -37
- package/dist/actions/clean-docs.mjs.map +0 -1
- package/dist/actions/clean-eslint.mjs +0 -26
- package/dist/actions/clean-eslint.mjs.map +0 -1
- package/dist/actions/clean.mjs +0 -124
- package/dist/actions/clean.mjs.map +0 -1
- package/dist/actions/compile.mjs +0 -157
- package/dist/actions/compile.mjs.map +0 -1
- package/dist/actions/copy-assets.mjs +0 -73
- package/dist/actions/copy-assets.mjs.map +0 -1
- package/dist/actions/cycle.mjs +0 -144
- package/dist/actions/cycle.mjs.map +0 -1
- package/dist/actions/dead.mjs +0 -98
- package/dist/actions/dead.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/checkPackage.mjs +0 -672
- package/dist/actions/deplint/checkPackage/checkPackage.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs +0 -1
- package/dist/actions/deplint/checkPackage/checkPackageTypes.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs +0 -48
- package/dist/actions/deplint/checkPackage/getUnlistedDependencies.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs +0 -33
- package/dist/actions/deplint/checkPackage/getUnlistedDevDependencies.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs +0 -30
- package/dist/actions/deplint/checkPackage/getUnusedDependencies.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs +0 -309
- package/dist/actions/deplint/checkPackage/getUnusedDevDependencies.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs +0 -26
- package/dist/actions/deplint/checkPackage/getUnusedPeerDependencies.mjs.map +0 -1
- package/dist/actions/deplint/checkPackage/index.mjs +0 -672
- package/dist/actions/deplint/checkPackage/index.mjs.map +0 -1
- package/dist/actions/deplint/deplint.mjs +0 -764
- package/dist/actions/deplint/deplint.mjs.map +0 -1
- package/dist/actions/deplint/findFiles.mjs +0 -39
- package/dist/actions/deplint/findFiles.mjs.map +0 -1
- package/dist/actions/deplint/findFilesByGlob.mjs +0 -14
- package/dist/actions/deplint/findFilesByGlob.mjs.map +0 -1
- package/dist/actions/deplint/getBasePackageName.mjs +0 -13
- package/dist/actions/deplint/getBasePackageName.mjs.map +0 -1
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs +0 -140
- package/dist/actions/deplint/getCliReferencedPackagesFromFiles.mjs.map +0 -1
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs +0 -20
- package/dist/actions/deplint/getDependenciesFromPackageJson.mjs.map +0 -1
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs +0 -44
- package/dist/actions/deplint/getExtendsFromTsconfigs.mjs.map +0 -1
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs +0 -122
- package/dist/actions/deplint/getExternalImportsFromFiles.mjs.map +0 -1
- package/dist/actions/deplint/getImportsFromFile.mjs +0 -85
- package/dist/actions/deplint/getImportsFromFile.mjs.map +0 -1
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs +0 -36
- package/dist/actions/deplint/getRequiredPeerDependencies.mjs.map +0 -1
- package/dist/actions/deplint/getScriptReferencedPackages.mjs +0 -83
- package/dist/actions/deplint/getScriptReferencedPackages.mjs.map +0 -1
- package/dist/actions/deplint/implicitDevDependencies.mjs +0 -80
- package/dist/actions/deplint/implicitDevDependencies.mjs.map +0 -1
- package/dist/actions/deplint/index.mjs +0 -764
- package/dist/actions/deplint/index.mjs.map +0 -1
- package/dist/actions/dupdeps.mjs +0 -184
- package/dist/actions/dupdeps.mjs.map +0 -1
- package/dist/actions/fix.mjs +0 -147
- package/dist/actions/fix.mjs.map +0 -1
- package/dist/actions/gen-docs.mjs +0 -109
- package/dist/actions/gen-docs.mjs.map +0 -1
- package/dist/actions/gitignore.mjs +0 -152
- package/dist/actions/gitignore.mjs.map +0 -1
- package/dist/actions/gitlint-fix.mjs +0 -27
- package/dist/actions/gitlint-fix.mjs.map +0 -1
- package/dist/actions/gitlint.mjs +0 -48
- package/dist/actions/gitlint.mjs.map +0 -1
- package/dist/actions/knip.mjs +0 -98
- package/dist/actions/knip.mjs.map +0 -1
- package/dist/actions/license.mjs +0 -84
- package/dist/actions/license.mjs.map +0 -1
- package/dist/actions/lint.mjs +0 -144
- package/dist/actions/lint.mjs.map +0 -1
- package/dist/actions/lintlint.mjs +0 -230
- package/dist/actions/lintlint.mjs.map +0 -1
- package/dist/actions/npmignore-gen.mjs +0 -88
- package/dist/actions/npmignore-gen.mjs.map +0 -1
- package/dist/actions/package/clean-outputs.mjs +0 -29
- package/dist/actions/package/clean-outputs.mjs.map +0 -1
- package/dist/actions/package/clean-typescript.mjs +0 -29
- package/dist/actions/package/clean-typescript.mjs.map +0 -1
- package/dist/actions/package/clean.mjs +0 -48
- package/dist/actions/package/clean.mjs.map +0 -1
- package/dist/actions/package/compile/XyConfig.mjs +0 -1
- package/dist/actions/package/compile/XyConfig.mjs.map +0 -1
- package/dist/actions/package/compile/buildEntries.mjs +0 -53
- package/dist/actions/package/compile/buildEntries.mjs.map +0 -1
- package/dist/actions/package/compile/compile.mjs +0 -433
- package/dist/actions/package/compile/compile.mjs.map +0 -1
- package/dist/actions/package/compile/copyTypeFiles.mjs +0 -34
- package/dist/actions/package/compile/copyTypeFiles.mjs.map +0 -1
- package/dist/actions/package/compile/deepMerge.mjs +0 -26
- package/dist/actions/package/compile/deepMerge.mjs.map +0 -1
- package/dist/actions/package/compile/getCompilerOptions.mjs +0 -12
- package/dist/actions/package/compile/getCompilerOptions.mjs.map +0 -1
- package/dist/actions/package/compile/index.mjs +0 -436
- package/dist/actions/package/compile/index.mjs.map +0 -1
- package/dist/actions/package/compile/inputs.mjs +0 -22
- package/dist/actions/package/compile/inputs.mjs.map +0 -1
- package/dist/actions/package/compile/packageCompileTsc.mjs +0 -94
- package/dist/actions/package/compile/packageCompileTsc.mjs.map +0 -1
- package/dist/actions/package/compile/packageCompileTscTypes.mjs +0 -92
- package/dist/actions/package/compile/packageCompileTscTypes.mjs.map +0 -1
- package/dist/actions/package/compile/packageCompileTsup.mjs +0 -402
- package/dist/actions/package/compile/packageCompileTsup.mjs.map +0 -1
- package/dist/actions/package/copy-assets.mjs +0 -46
- package/dist/actions/package/copy-assets.mjs.map +0 -1
- package/dist/actions/package/cycle.mjs +0 -39
- package/dist/actions/package/cycle.mjs.map +0 -1
- package/dist/actions/package/gen-docs.mjs +0 -114
- package/dist/actions/package/gen-docs.mjs.map +0 -1
- package/dist/actions/package/index.mjs +0 -825
- package/dist/actions/package/index.mjs.map +0 -1
- package/dist/actions/package/lint.mjs +0 -80
- package/dist/actions/package/lint.mjs.map +0 -1
- package/dist/actions/package/publint.mjs +0 -66
- package/dist/actions/package/publint.mjs.map +0 -1
- package/dist/actions/package/recompile.mjs +0 -483
- package/dist/actions/package/recompile.mjs.map +0 -1
- package/dist/actions/package-lint.mjs +0 -178
- package/dist/actions/package-lint.mjs.map +0 -1
- package/dist/actions/publint.mjs +0 -166
- package/dist/actions/publint.mjs.map +0 -1
- package/dist/actions/readme-gen.mjs +0 -289
- package/dist/actions/readme-gen.mjs.map +0 -1
- package/dist/actions/readme-init.mjs +0 -83
- package/dist/actions/readme-init.mjs.map +0 -1
- package/dist/actions/rebuild.mjs +0 -101
- package/dist/actions/rebuild.mjs.map +0 -1
- package/dist/actions/recompile.mjs +0 -187
- package/dist/actions/recompile.mjs.map +0 -1
- package/dist/actions/relint.mjs +0 -144
- package/dist/actions/relint.mjs.map +0 -1
- package/dist/actions/retest.mjs +0 -123
- package/dist/actions/retest.mjs.map +0 -1
- package/dist/actions/sonar.mjs +0 -98
- package/dist/actions/sonar.mjs.map +0 -1
- package/dist/actions/statics.mjs +0 -183
- package/dist/actions/statics.mjs.map +0 -1
- package/dist/actions/test.mjs +0 -117
- package/dist/actions/test.mjs.map +0 -1
- package/dist/bin/package/build-only.mjs +0 -445
- package/dist/bin/package/build-only.mjs.map +0 -1
- package/dist/bin/package/build.mjs +0 -445
- package/dist/bin/package/build.mjs.map +0 -1
- package/dist/bin/package/clean-outputs.mjs +0 -29
- package/dist/bin/package/clean-outputs.mjs.map +0 -1
- package/dist/bin/package/clean-typescript.mjs +0 -29
- package/dist/bin/package/clean-typescript.mjs.map +0 -1
- package/dist/bin/package/clean.mjs +0 -53
- package/dist/bin/package/clean.mjs.map +0 -1
- package/dist/bin/package/compile-only.mjs +0 -441
- package/dist/bin/package/compile-only.mjs.map +0 -1
- package/dist/bin/package/compile-tsup.mjs +0 -409
- package/dist/bin/package/compile-tsup.mjs.map +0 -1
- package/dist/bin/package/compile.mjs +0 -445
- package/dist/bin/package/compile.mjs.map +0 -1
- package/dist/bin/package/copy-assets-cjs.mjs +0 -54
- package/dist/bin/package/copy-assets-cjs.mjs.map +0 -1
- package/dist/bin/package/copy-assets-esm.mjs +0 -54
- package/dist/bin/package/copy-assets-esm.mjs.map +0 -1
- package/dist/bin/package/cycle.mjs +0 -51
- package/dist/bin/package/cycle.mjs.map +0 -1
- package/dist/bin/package/fix.mjs +0 -92
- package/dist/bin/package/fix.mjs.map +0 -1
- package/dist/bin/package/gen-docs.mjs +0 -121
- package/dist/bin/package/gen-docs.mjs.map +0 -1
- package/dist/bin/package/lint-verbose.mjs +0 -92
- package/dist/bin/package/lint-verbose.mjs.map +0 -1
- package/dist/bin/package/lint.mjs +0 -92
- package/dist/bin/package/lint.mjs.map +0 -1
- package/dist/bin/package/publint.mjs +0 -75
- package/dist/bin/package/publint.mjs.map +0 -1
- package/dist/bin/package/recompile.mjs +0 -489
- package/dist/bin/package/recompile.mjs.map +0 -1
- package/dist/bin/package/relint.mjs +0 -92
- package/dist/bin/package/relint.mjs.map +0 -1
- package/dist/lib/checkResult.mjs +0 -16
- package/dist/lib/checkResult.mjs.map +0 -1
- package/dist/lib/claudeMdTemplate.mjs +0 -65
- package/dist/lib/claudeMdTemplate.mjs.map +0 -1
- package/dist/lib/createBuildConfig.mjs +0 -55
- package/dist/lib/createBuildConfig.mjs.map +0 -1
- package/dist/lib/defaultBuildConfig.mjs +0 -23
- package/dist/lib/defaultBuildConfig.mjs.map +0 -1
- package/dist/lib/deleteGlob.mjs +0 -13
- package/dist/lib/deleteGlob.mjs.map +0 -1
- package/dist/lib/dependencies/DuplicateDetector.mjs +0 -81
- package/dist/lib/dependencies/DuplicateDetector.mjs.map +0 -1
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs +0 -164
- package/dist/lib/dependencies/detectDuplicateDependencies.mjs.map +0 -1
- package/dist/lib/dependencies/index.mjs +0 -165
- package/dist/lib/dependencies/index.mjs.map +0 -1
- package/dist/lib/file/ReadFileSyncOptions.mjs +0 -6
- package/dist/lib/file/ReadFileSyncOptions.mjs.map +0 -1
- package/dist/lib/file/constants.mjs +0 -8
- package/dist/lib/file/constants.mjs.map +0 -1
- package/dist/lib/file/fileLines.mjs +0 -32
- package/dist/lib/file/fileLines.mjs.map +0 -1
- package/dist/lib/file/index.mjs +0 -42
- package/dist/lib/file/index.mjs.map +0 -1
- package/dist/lib/file/tryReadFileSync.mjs +0 -14
- package/dist/lib/file/tryReadFileSync.mjs.map +0 -1
- package/dist/lib/generateIgnoreFiles.mjs +0 -84
- package/dist/lib/generateIgnoreFiles.mjs.map +0 -1
- package/dist/lib/generateReadmeFiles.mjs +0 -257
- package/dist/lib/generateReadmeFiles.mjs.map +0 -1
- package/dist/lib/gitignoreTemplate.mjs +0 -12
- package/dist/lib/gitignoreTemplate.mjs.map +0 -1
- package/dist/lib/jsonFormatters.mjs +0 -11
- package/dist/lib/jsonFormatters.mjs.map +0 -1
- package/dist/lib/loadConfig.mjs +0 -24
- package/dist/lib/loadConfig.mjs.map +0 -1
- package/dist/lib/parsedPackageJSON.mjs +0 -11
- package/dist/lib/parsedPackageJSON.mjs.map +0 -1
- package/dist/lib/processEx.mjs +0 -36
- package/dist/lib/processEx.mjs.map +0 -1
- package/dist/lib/runSteps.mjs +0 -95
- package/dist/lib/runSteps.mjs.map +0 -1
- package/dist/lib/runStepsAsync.mjs +0 -113
- package/dist/lib/runStepsAsync.mjs.map +0 -1
- package/dist/lib/runXy.mjs +0 -103
- package/dist/lib/runXy.mjs.map +0 -1
- package/dist/lib/runXyWithWarning.mjs +0 -13
- package/dist/lib/runXyWithWarning.mjs.map +0 -1
- package/dist/lib/safeExit.mjs +0 -61
- package/dist/lib/safeExit.mjs.map +0 -1
- package/dist/lib/string/empty.mjs +0 -8
- package/dist/lib/string/empty.mjs.map +0 -1
- package/dist/lib/string/index.mjs +0 -12
- package/dist/lib/string/index.mjs.map +0 -1
- package/dist/lib/string/union.mjs +0 -6
- package/dist/lib/string/union.mjs.map +0 -1
- package/dist/lib/tryRunLocalScript.mjs +0 -33
- package/dist/lib/tryRunLocalScript.mjs.map +0 -1
- package/dist/lib/withErrnoException.mjs +0 -13
- package/dist/lib/withErrnoException.mjs.map +0 -1
- package/dist/lib/withError.mjs +0 -8
- package/dist/lib/withError.mjs.map +0 -1
- package/dist/loadPackageConfig.mjs +0 -11
- package/dist/loadPackageConfig.mjs.map +0 -1
- package/dist/types.d.mjs +0 -1
- package/dist/types.d.mjs.map +0 -1
- package/dist/xy/build/buildCommand.mjs +0 -161
- package/dist/xy/build/buildCommand.mjs.map +0 -1
- package/dist/xy/build/compileCommand.mjs +0 -174
- package/dist/xy/build/compileCommand.mjs.map +0 -1
- package/dist/xy/build/compileOnlyCommand.mjs +0 -175
- package/dist/xy/build/compileOnlyCommand.mjs.map +0 -1
- package/dist/xy/build/copyAssetsCommand.mjs +0 -84
- package/dist/xy/build/copyAssetsCommand.mjs.map +0 -1
- package/dist/xy/build/index.mjs +0 -507
- package/dist/xy/build/index.mjs.map +0 -1
- package/dist/xy/build/rebuildCommand.mjs +0 -114
- package/dist/xy/build/rebuildCommand.mjs.map +0 -1
- package/dist/xy/build/recompileCommand.mjs +0 -204
- package/dist/xy/build/recompileCommand.mjs.map +0 -1
- package/dist/xy/common/claude/cleanCommand.mjs +0 -79
- package/dist/xy/common/claude/cleanCommand.mjs.map +0 -1
- package/dist/xy/common/claude/commandsCommand.mjs +0 -120
- package/dist/xy/common/claude/commandsCommand.mjs.map +0 -1
- package/dist/xy/common/claude/index.mjs +0 -546
- package/dist/xy/common/claude/index.mjs.map +0 -1
- package/dist/xy/common/claude/initCommand.mjs +0 -319
- package/dist/xy/common/claude/initCommand.mjs.map +0 -1
- package/dist/xy/common/claude/rulesCommand.mjs +0 -153
- package/dist/xy/common/claude/rulesCommand.mjs.map +0 -1
- package/dist/xy/common/claude/settingsCommand.mjs +0 -93
- package/dist/xy/common/claude/settingsCommand.mjs.map +0 -1
- package/dist/xy/common/claude/skillsCommand.mjs +0 -129
- package/dist/xy/common/claude/skillsCommand.mjs.map +0 -1
- package/dist/xy/common/cleanDocsCommand.mjs +0 -45
- package/dist/xy/common/cleanDocsCommand.mjs.map +0 -1
- package/dist/xy/common/deadCommand.mjs +0 -116
- package/dist/xy/common/deadCommand.mjs.map +0 -1
- package/dist/xy/common/genDocsCommand.mjs +0 -125
- package/dist/xy/common/genDocsCommand.mjs.map +0 -1
- package/dist/xy/common/gitignoreCommand.mjs +0 -158
- package/dist/xy/common/gitignoreCommand.mjs.map +0 -1
- package/dist/xy/common/gitlintCommand.mjs +0 -82
- package/dist/xy/common/gitlintCommand.mjs.map +0 -1
- package/dist/xy/common/licenseCommand.mjs +0 -100
- package/dist/xy/common/licenseCommand.mjs.map +0 -1
- package/dist/xy/common/npmignoreGenCommand.mjs +0 -98
- package/dist/xy/common/npmignoreGenCommand.mjs.map +0 -1
- package/dist/xy/common/readme/genCommand.mjs +0 -321
- package/dist/xy/common/readme/genCommand.mjs.map +0 -1
- package/dist/xy/common/readme/index.mjs +0 -361
- package/dist/xy/common/readme/index.mjs.map +0 -1
- package/dist/xy/common/readme/initCommand.mjs +0 -103
- package/dist/xy/common/readme/initCommand.mjs.map +0 -1
- package/dist/xy/common/retestCommand.mjs +0 -136
- package/dist/xy/common/retestCommand.mjs.map +0 -1
- package/dist/xy/common/testCommand.mjs +0 -130
- package/dist/xy/common/testCommand.mjs.map +0 -1
- package/dist/xy/lint/cycleCommand.mjs +0 -163
- package/dist/xy/lint/cycleCommand.mjs.map +0 -1
- package/dist/xy/lint/deplintCommand.mjs +0 -814
- package/dist/xy/lint/deplintCommand.mjs.map +0 -1
- package/dist/xy/lint/fixCommand.mjs +0 -168
- package/dist/xy/lint/fixCommand.mjs.map +0 -1
- package/dist/xy/lint/index.mjs +0 -1691
- package/dist/xy/lint/index.mjs.map +0 -1
- package/dist/xy/lint/knipCommand.mjs +0 -121
- package/dist/xy/lint/knipCommand.mjs.map +0 -1
- package/dist/xy/lint/lintCommand.mjs +0 -186
- package/dist/xy/lint/lintCommand.mjs.map +0 -1
- package/dist/xy/lint/lintlintCommand.mjs +0 -250
- package/dist/xy/lint/lintlintCommand.mjs.map +0 -1
- package/dist/xy/lint/packageLintCommand.mjs +0 -193
- package/dist/xy/lint/packageLintCommand.mjs.map +0 -1
- package/dist/xy/lint/publintCommand.mjs +0 -187
- package/dist/xy/lint/publintCommand.mjs.map +0 -1
- package/dist/xy/lint/relintCommand.mjs +0 -163
- package/dist/xy/lint/relintCommand.mjs.map +0 -1
- package/dist/xy/lint/sonarCommand.mjs +0 -121
- package/dist/xy/lint/sonarCommand.mjs.map +0 -1
- package/dist/xy/param.mjs +0 -8
- package/dist/xy/param.mjs.map +0 -1
- package/dist/xy/xyParseOptions.mjs +0 -70
- package/dist/xy/xyParseOptions.mjs.map +0 -1
|
@@ -1,672 +0,0 @@
|
|
|
1
|
-
// src/actions/deplint/findFiles.ts
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
|
|
4
|
-
// src/actions/deplint/findFilesByGlob.ts
|
|
5
|
-
import { globSync } from "glob";
|
|
6
|
-
function findFilesByGlob(cwd, pattern, ignore) {
|
|
7
|
-
return globSync(pattern, {
|
|
8
|
-
cwd,
|
|
9
|
-
absolute: true,
|
|
10
|
-
ignore,
|
|
11
|
-
nodir: true
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// src/actions/deplint/findFiles.ts
|
|
16
|
-
var codeExtensions = "*.{ts,tsx,mts,cts,js,mjs,cjs}";
|
|
17
|
-
function getWorkspaceIgnores(location) {
|
|
18
|
-
try {
|
|
19
|
-
const raw = fs.readFileSync(`${location}/package.json`, "utf8");
|
|
20
|
-
const pkg = JSON.parse(raw);
|
|
21
|
-
return pkg.workspaces ?? [];
|
|
22
|
-
} catch {
|
|
23
|
-
return [];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
function findFiles(location) {
|
|
27
|
-
const workspaceIgnores = getWorkspaceIgnores(location).map((w) => `${w}/**`);
|
|
28
|
-
const ignore = ["**/node_modules/**", "dist/**", ...workspaceIgnores];
|
|
29
|
-
const allFiles = findFilesByGlob(location, `./**/${codeExtensions}`, ignore);
|
|
30
|
-
const distFiles = [
|
|
31
|
-
...findFilesByGlob(location, "./dist/**/*.d.ts"),
|
|
32
|
-
...findFilesByGlob(location, `./dist/**/${codeExtensions}`)
|
|
33
|
-
];
|
|
34
|
-
return { allFiles, distFiles };
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// src/actions/deplint/getDependenciesFromPackageJson.ts
|
|
38
|
-
import fs2 from "fs";
|
|
39
|
-
import path from "path";
|
|
40
|
-
function getDependenciesFromPackageJson(packageJsonPath) {
|
|
41
|
-
const packageJsonFullPath = path.resolve(packageJsonPath);
|
|
42
|
-
const rawContent = fs2.readFileSync(packageJsonFullPath, "utf8");
|
|
43
|
-
const packageJson = JSON.parse(rawContent);
|
|
44
|
-
const dependencies = packageJson.dependencies ? Object.keys(packageJson.dependencies) : [];
|
|
45
|
-
const devDependencies = packageJson.devDependencies ? Object.keys(packageJson.devDependencies) : [];
|
|
46
|
-
const peerDependencies = packageJson.peerDependencies ? Object.keys(packageJson.peerDependencies) : [];
|
|
47
|
-
return {
|
|
48
|
-
dependencies,
|
|
49
|
-
devDependencies,
|
|
50
|
-
peerDependencies
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// src/actions/deplint/getExtendsFromTsconfigs.ts
|
|
55
|
-
import fs3 from "fs";
|
|
56
|
-
import { globSync as globSync2 } from "glob";
|
|
57
|
-
|
|
58
|
-
// src/actions/deplint/getBasePackageName.ts
|
|
59
|
-
function getBasePackageName(importName) {
|
|
60
|
-
const importNameScrubbed = importName.replaceAll('"', "").trim();
|
|
61
|
-
if (importNameScrubbed.startsWith("@")) {
|
|
62
|
-
const parts = importNameScrubbed.split("/");
|
|
63
|
-
return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importNameScrubbed;
|
|
64
|
-
}
|
|
65
|
-
return importNameScrubbed.split("/")[0];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// src/actions/deplint/getExtendsFromTsconfigs.ts
|
|
69
|
-
var isExternalReference = (ref) => !ref.startsWith(".") && !ref.startsWith("/");
|
|
70
|
-
function parseExtendsField(value) {
|
|
71
|
-
if (typeof value === "string") return [value];
|
|
72
|
-
if (Array.isArray(value)) return value.filter((v) => typeof v === "string");
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
function getExtendsFromTsconfigs(location) {
|
|
76
|
-
const tsconfigFiles = globSync2("./tsconfig*.json", { cwd: location, absolute: true });
|
|
77
|
-
const packages = /* @__PURE__ */ new Set();
|
|
78
|
-
for (const file of tsconfigFiles) {
|
|
79
|
-
try {
|
|
80
|
-
const content = fs3.readFileSync(file, "utf8");
|
|
81
|
-
const cleaned = content.replaceAll(/\/\/.*/g, "").replaceAll(/,\s*([}\]])/g, "$1");
|
|
82
|
-
const parsed = JSON.parse(cleaned);
|
|
83
|
-
const refs = parseExtendsField(parsed.extends);
|
|
84
|
-
for (const ref of refs) {
|
|
85
|
-
if (isExternalReference(ref)) {
|
|
86
|
-
packages.add(getBasePackageName(ref));
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
} catch {
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return [...packages];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// src/actions/deplint/getImportsFromFile.ts
|
|
96
|
-
import fs4 from "fs";
|
|
97
|
-
import path2 from "path";
|
|
98
|
-
import ts from "typescript";
|
|
99
|
-
function isTypeOnlyImportClause(clause) {
|
|
100
|
-
if (clause === void 0) {
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
if ("phaseModifier" in clause) {
|
|
104
|
-
const mod = clause.phaseModifier;
|
|
105
|
-
const kind = typeof mod === "number" ? mod : mod?.kind;
|
|
106
|
-
return kind === ts.SyntaxKind.TypeKeyword;
|
|
107
|
-
}
|
|
108
|
-
return clause.isTypeOnly;
|
|
109
|
-
}
|
|
110
|
-
function getImportsFromFile(filePath, importPaths, typeImportPaths) {
|
|
111
|
-
const sourceCode = fs4.readFileSync(filePath, "utf8");
|
|
112
|
-
const isMjsFile = filePath.endsWith(".mjs");
|
|
113
|
-
const sourceFile = ts.createSourceFile(
|
|
114
|
-
path2.basename(filePath),
|
|
115
|
-
sourceCode,
|
|
116
|
-
ts.ScriptTarget.Latest,
|
|
117
|
-
true,
|
|
118
|
-
isMjsFile ? ts.ScriptKind.JS : void 0
|
|
119
|
-
);
|
|
120
|
-
const imports = [];
|
|
121
|
-
const typeImports = [];
|
|
122
|
-
const isDeclarationFile2 = filePath.endsWith(".d.ts");
|
|
123
|
-
function visit(node) {
|
|
124
|
-
if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
|
|
125
|
-
const moduleSpecifier = node.moduleSpecifier?.getFullText();
|
|
126
|
-
const isTypeImport = ts.isImportDeclaration(node) ? isTypeOnlyImportClause(node.importClause) : false;
|
|
127
|
-
if (typeof moduleSpecifier === "string") {
|
|
128
|
-
const trimmed = moduleSpecifier.replaceAll("'", "").replaceAll('"', "").trim();
|
|
129
|
-
if (isTypeImport || isDeclarationFile2) {
|
|
130
|
-
typeImports.push(trimmed);
|
|
131
|
-
} else {
|
|
132
|
-
imports.push(trimmed);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
} else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {
|
|
136
|
-
const [arg] = node.arguments;
|
|
137
|
-
if (ts.isStringLiteral(arg)) {
|
|
138
|
-
imports.push(arg.text);
|
|
139
|
-
}
|
|
140
|
-
} else if (ts.isCallExpression(node) && ts.isIdentifier(node.expression) && node.expression.text === "require" && node.arguments.length > 0 && ts.isStringLiteral(node.arguments[0])) {
|
|
141
|
-
imports.push(node.arguments[0].text);
|
|
142
|
-
}
|
|
143
|
-
ts.forEachChild(node, visit);
|
|
144
|
-
}
|
|
145
|
-
visit(sourceFile);
|
|
146
|
-
for (const ref of sourceFile.typeReferenceDirectives) {
|
|
147
|
-
typeImports.push(ref.fileName);
|
|
148
|
-
}
|
|
149
|
-
const importsStartsWithExcludes = [".", "#", "node:"];
|
|
150
|
-
const isValidImport = (imp) => !importsStartsWithExcludes.some((exc) => imp.startsWith(exc)) && !imp.includes("*") && !imp.includes("!");
|
|
151
|
-
const cleanedImports = imports.filter(isValidImport).map(getBasePackageName);
|
|
152
|
-
const cleanedTypeImports = typeImports.filter(isValidImport).map(getBasePackageName);
|
|
153
|
-
for (const imp of cleanedImports) {
|
|
154
|
-
importPaths[imp] = importPaths[imp] ?? [];
|
|
155
|
-
importPaths[imp].push(filePath);
|
|
156
|
-
}
|
|
157
|
-
for (const imp of cleanedTypeImports) {
|
|
158
|
-
typeImportPaths[imp] = typeImportPaths[imp] ?? [];
|
|
159
|
-
typeImportPaths[imp].push(filePath);
|
|
160
|
-
}
|
|
161
|
-
return [cleanedImports, cleanedTypeImports];
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// src/actions/deplint/getExternalImportsFromFiles.ts
|
|
165
|
-
var internalImportPrefixes = [".", "#", "node:"];
|
|
166
|
-
var removeInternalImports = (imports) => {
|
|
167
|
-
return imports.filter((imp) => !internalImportPrefixes.some((prefix) => imp.startsWith(prefix)));
|
|
168
|
-
};
|
|
169
|
-
var isDeclarationFile = (file) => file.endsWith(".d.ts") || file.endsWith(".d.cts") || file.endsWith(".d.mts");
|
|
170
|
-
function getExternalImportsFromFiles({
|
|
171
|
-
allFiles,
|
|
172
|
-
distFiles,
|
|
173
|
-
tsconfigExtends = []
|
|
174
|
-
}) {
|
|
175
|
-
const allImportPaths = {};
|
|
176
|
-
const distImportPaths = {};
|
|
177
|
-
const distTypeImportPaths = {};
|
|
178
|
-
for (const path6 of allFiles) getImportsFromFile(path6, allImportPaths, allImportPaths).flat();
|
|
179
|
-
const distTypeFiles = distFiles.filter(isDeclarationFile);
|
|
180
|
-
const distCodeFiles = distFiles.filter((file) => !isDeclarationFile(file));
|
|
181
|
-
for (const path6 of distCodeFiles) getImportsFromFile(path6, distImportPaths, distImportPaths).flat();
|
|
182
|
-
for (const path6 of distTypeFiles) getImportsFromFile(path6, distTypeImportPaths, distTypeImportPaths).flat();
|
|
183
|
-
const allImports = Object.keys(allImportPaths);
|
|
184
|
-
const distImports = Object.keys(distImportPaths);
|
|
185
|
-
const externalAllImports = removeInternalImports(allImports);
|
|
186
|
-
const externalDistImports = removeInternalImports(distImports);
|
|
187
|
-
const externalDistTypeImports = removeInternalImports(Object.keys(distTypeImportPaths));
|
|
188
|
-
for (const ext of tsconfigExtends) {
|
|
189
|
-
if (!externalAllImports.includes(ext)) externalAllImports.push(ext);
|
|
190
|
-
}
|
|
191
|
-
return {
|
|
192
|
-
allImportPaths,
|
|
193
|
-
allImports,
|
|
194
|
-
distImportPaths,
|
|
195
|
-
distImports,
|
|
196
|
-
externalAllImports,
|
|
197
|
-
externalDistImports,
|
|
198
|
-
externalDistTypeImports
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// src/actions/deplint/checkPackage/getUnlistedDependencies.ts
|
|
203
|
-
import { builtinModules } from "module";
|
|
204
|
-
import chalk from "chalk";
|
|
205
|
-
function isRuntimeImportListed(imp, name, dependencies, peerDependencies) {
|
|
206
|
-
return dependencies.includes(imp) || imp === name || peerDependencies.includes(imp) || builtinModules.includes(imp);
|
|
207
|
-
}
|
|
208
|
-
function isTypeImportListed(imp, name, dependencies, devDependencies, peerDependencies) {
|
|
209
|
-
return dependencies.includes(imp) || imp === name || dependencies.includes(`@types/${imp}`) || peerDependencies.includes(imp) || peerDependencies.includes(`@types/${imp}`) || devDependencies.includes(`@types/${imp}`) || builtinModules.includes(imp);
|
|
210
|
-
}
|
|
211
|
-
function logMissing(name, imp, importPaths) {
|
|
212
|
-
console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`);
|
|
213
|
-
if (importPaths[imp]) {
|
|
214
|
-
console.log(` ${importPaths[imp].join("\n ")}`);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
function getUnlistedDependencies({ name, location }, {
|
|
218
|
-
dependencies,
|
|
219
|
-
devDependencies,
|
|
220
|
-
peerDependencies
|
|
221
|
-
}, {
|
|
222
|
-
externalDistImports,
|
|
223
|
-
externalDistTypeImports,
|
|
224
|
-
distImportPaths
|
|
225
|
-
}) {
|
|
226
|
-
let unlistedDependencies = 0;
|
|
227
|
-
for (const imp of externalDistImports) {
|
|
228
|
-
if (!isRuntimeImportListed(imp, name, dependencies, peerDependencies)) {
|
|
229
|
-
unlistedDependencies++;
|
|
230
|
-
logMissing(name, imp, distImportPaths);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
for (const imp of externalDistTypeImports) {
|
|
234
|
-
if (!isTypeImportListed(imp, name, dependencies, devDependencies, peerDependencies)) {
|
|
235
|
-
unlistedDependencies++;
|
|
236
|
-
logMissing(name, imp, distImportPaths);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (unlistedDependencies > 0) {
|
|
240
|
-
const packageLocation = `${location}/package.json`;
|
|
241
|
-
console.log(` ${chalk.yellow(packageLocation)}
|
|
242
|
-
`);
|
|
243
|
-
}
|
|
244
|
-
return unlistedDependencies;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// src/actions/deplint/checkPackage/getUnlistedDevDependencies.ts
|
|
248
|
-
import { builtinModules as builtinModules2 } from "module";
|
|
249
|
-
import chalk2 from "chalk";
|
|
250
|
-
function getUnlistedDevDependencies({ name, location }, {
|
|
251
|
-
devDependencies,
|
|
252
|
-
dependencies,
|
|
253
|
-
peerDependencies
|
|
254
|
-
}, {
|
|
255
|
-
allImportPaths,
|
|
256
|
-
externalAllImports,
|
|
257
|
-
distImports
|
|
258
|
-
}) {
|
|
259
|
-
let unlistedDevDependencies = 0;
|
|
260
|
-
for (const imp of externalAllImports) {
|
|
261
|
-
if (!distImports.includes(imp) && imp !== name && !dependencies.includes(imp) && !dependencies.includes(`@types/${imp}`) && !peerDependencies.includes(imp) && !peerDependencies.includes(`@types/${imp}`) && !devDependencies.includes(imp) && !devDependencies.includes(`@types/${imp}`) && !builtinModules2.includes(imp)) {
|
|
262
|
-
unlistedDevDependencies++;
|
|
263
|
-
console.log(`[${chalk2.blue(name)}] Missing devDependency in package.json: ${chalk2.red(imp)}`);
|
|
264
|
-
if (allImportPaths[imp]) {
|
|
265
|
-
console.log(` ${allImportPaths[imp].join("\n ")}`);
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
if (unlistedDevDependencies > 0) {
|
|
270
|
-
const packageLocation = `${location}/package.json`;
|
|
271
|
-
console.log(` ${chalk2.yellow(packageLocation)}
|
|
272
|
-
`);
|
|
273
|
-
}
|
|
274
|
-
return unlistedDevDependencies;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// src/actions/deplint/checkPackage/getUnusedDependencies.ts
|
|
278
|
-
import chalk3 from "chalk";
|
|
279
|
-
function getUnusedDependencies({ name, location }, { dependencies }, {
|
|
280
|
-
externalDistImports,
|
|
281
|
-
externalDistTypeImports,
|
|
282
|
-
externalAllImports
|
|
283
|
-
}, exclude) {
|
|
284
|
-
let unusedDependencies = 0;
|
|
285
|
-
for (const dep of dependencies) {
|
|
286
|
-
if (exclude?.has(dep)) continue;
|
|
287
|
-
if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\//, "")) && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\//, ""))) {
|
|
288
|
-
unusedDependencies++;
|
|
289
|
-
if (externalAllImports.includes(dep)) {
|
|
290
|
-
console.log(`[${chalk3.blue(name)}] dependency should be devDependency in package.json: ${chalk3.red(dep)}`);
|
|
291
|
-
} else {
|
|
292
|
-
console.log(`[${chalk3.blue(name)}] Unused dependency in package.json: ${chalk3.red(dep)}`);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
if (unusedDependencies > 0) {
|
|
297
|
-
const packageLocation = `${location}/package.json`;
|
|
298
|
-
console.log(` ${chalk3.yellow(packageLocation)}
|
|
299
|
-
`);
|
|
300
|
-
}
|
|
301
|
-
return unusedDependencies;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// src/actions/deplint/checkPackage/getUnusedDevDependencies.ts
|
|
305
|
-
import chalk4 from "chalk";
|
|
306
|
-
|
|
307
|
-
// src/actions/deplint/getCliReferencedPackagesFromFiles.ts
|
|
308
|
-
import fs7 from "fs";
|
|
309
|
-
import path5 from "path";
|
|
310
|
-
import ts2 from "typescript";
|
|
311
|
-
|
|
312
|
-
// src/actions/deplint/getScriptReferencedPackages.ts
|
|
313
|
-
import fs6 from "fs";
|
|
314
|
-
import path4 from "path";
|
|
315
|
-
|
|
316
|
-
// src/actions/deplint/getRequiredPeerDependencies.ts
|
|
317
|
-
import fs5 from "fs";
|
|
318
|
-
import path3 from "path";
|
|
319
|
-
function findDepPackageJson(location, dep) {
|
|
320
|
-
let dir = location;
|
|
321
|
-
while (true) {
|
|
322
|
-
const candidate = path3.join(dir, "node_modules", dep, "package.json");
|
|
323
|
-
if (fs5.existsSync(candidate)) return candidate;
|
|
324
|
-
const parent = path3.dirname(dir);
|
|
325
|
-
if (parent === dir) return void 0;
|
|
326
|
-
dir = parent;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
function getRequiredPeerDependencies(location, allDeps) {
|
|
330
|
-
const required = /* @__PURE__ */ new Set();
|
|
331
|
-
for (const dep of allDeps) {
|
|
332
|
-
const depPkgPath = findDepPackageJson(location, dep);
|
|
333
|
-
if (!depPkgPath) continue;
|
|
334
|
-
try {
|
|
335
|
-
const raw = fs5.readFileSync(depPkgPath, "utf8");
|
|
336
|
-
const pkg = JSON.parse(raw);
|
|
337
|
-
if (pkg.peerDependencies) {
|
|
338
|
-
for (const peer of Object.keys(pkg.peerDependencies)) {
|
|
339
|
-
required.add(peer);
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
} catch {
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
return required;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
// src/actions/deplint/getScriptReferencedPackages.ts
|
|
349
|
-
function getBinNames(location, dep) {
|
|
350
|
-
const depPkgPath = findDepPackageJson(location, dep);
|
|
351
|
-
if (!depPkgPath) return [];
|
|
352
|
-
try {
|
|
353
|
-
const raw = fs6.readFileSync(depPkgPath, "utf8");
|
|
354
|
-
const pkg = JSON.parse(raw);
|
|
355
|
-
if (!pkg.bin) return [];
|
|
356
|
-
if (typeof pkg.bin === "string") return [pkg.name?.split("/").pop() ?? dep];
|
|
357
|
-
return Object.keys(pkg.bin);
|
|
358
|
-
} catch {
|
|
359
|
-
return [];
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
function tokenizeScript(script) {
|
|
363
|
-
return script.split(/[&|;$()"`\s]+/).map((t) => t.trim()).filter(Boolean);
|
|
364
|
-
}
|
|
365
|
-
function getScriptReferencedPackages(location, allDeps) {
|
|
366
|
-
const pkgPath = path4.join(location, "package.json");
|
|
367
|
-
let scripts = {};
|
|
368
|
-
try {
|
|
369
|
-
const raw = fs6.readFileSync(pkgPath, "utf8");
|
|
370
|
-
const pkg = JSON.parse(raw);
|
|
371
|
-
scripts = pkg.scripts ?? {};
|
|
372
|
-
} catch {
|
|
373
|
-
return /* @__PURE__ */ new Set();
|
|
374
|
-
}
|
|
375
|
-
const scriptText = Object.values(scripts).join(" ");
|
|
376
|
-
const tokens = new Set(tokenizeScript(scriptText));
|
|
377
|
-
const binToPackage = /* @__PURE__ */ new Map();
|
|
378
|
-
for (const dep of allDeps) {
|
|
379
|
-
const bins = getBinNames(location, dep);
|
|
380
|
-
for (const bin of bins) {
|
|
381
|
-
binToPackage.set(bin, dep);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
const referenced = /* @__PURE__ */ new Set();
|
|
385
|
-
for (const token of tokens) {
|
|
386
|
-
const baseName = getBasePackageName(token);
|
|
387
|
-
if (allDeps.includes(baseName)) {
|
|
388
|
-
referenced.add(baseName);
|
|
389
|
-
}
|
|
390
|
-
const pkg = binToPackage.get(token);
|
|
391
|
-
if (pkg) {
|
|
392
|
-
referenced.add(pkg);
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
return referenced;
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
// src/actions/deplint/getCliReferencedPackagesFromFiles.ts
|
|
399
|
-
var shellCommandFunctions = /* @__PURE__ */ new Set(["execSync", "exec"]);
|
|
400
|
-
var directExecFunctions = /* @__PURE__ */ new Set(["spawn", "spawnSync", "execFile", "execFileSync"]);
|
|
401
|
-
var allExecFunctions = /* @__PURE__ */ new Set([...shellCommandFunctions, ...directExecFunctions]);
|
|
402
|
-
function getCommandTokensFromFile(filePath) {
|
|
403
|
-
const tokens = /* @__PURE__ */ new Set();
|
|
404
|
-
let sourceCode;
|
|
405
|
-
try {
|
|
406
|
-
sourceCode = fs7.readFileSync(filePath, "utf8");
|
|
407
|
-
} catch {
|
|
408
|
-
return tokens;
|
|
409
|
-
}
|
|
410
|
-
const isMjsFile = filePath.endsWith(".mjs");
|
|
411
|
-
const sourceFile = ts2.createSourceFile(
|
|
412
|
-
path5.basename(filePath),
|
|
413
|
-
sourceCode,
|
|
414
|
-
ts2.ScriptTarget.Latest,
|
|
415
|
-
true,
|
|
416
|
-
isMjsFile ? ts2.ScriptKind.JS : void 0
|
|
417
|
-
);
|
|
418
|
-
function visit(node) {
|
|
419
|
-
if (ts2.isCallExpression(node) && node.arguments.length > 0) {
|
|
420
|
-
const fnName = getFunctionName(node.expression);
|
|
421
|
-
if (fnName && allExecFunctions.has(fnName)) {
|
|
422
|
-
const firstArg = node.arguments[0];
|
|
423
|
-
if (ts2.isStringLiteral(firstArg) || ts2.isNoSubstitutionTemplateLiteral(firstArg)) {
|
|
424
|
-
const value = firstArg.text;
|
|
425
|
-
if (shellCommandFunctions.has(fnName)) {
|
|
426
|
-
for (const token of tokenizeScript(value)) {
|
|
427
|
-
tokens.add(token);
|
|
428
|
-
}
|
|
429
|
-
} else {
|
|
430
|
-
tokens.add(value);
|
|
431
|
-
}
|
|
432
|
-
} else if (ts2.isTemplateExpression(firstArg)) {
|
|
433
|
-
const head = firstArg.head.text;
|
|
434
|
-
if (head) {
|
|
435
|
-
for (const token of tokenizeScript(head)) {
|
|
436
|
-
tokens.add(token);
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
ts2.forEachChild(node, visit);
|
|
443
|
-
}
|
|
444
|
-
visit(sourceFile);
|
|
445
|
-
return tokens;
|
|
446
|
-
}
|
|
447
|
-
function getFunctionName(expr) {
|
|
448
|
-
if (ts2.isIdentifier(expr)) {
|
|
449
|
-
return expr.text;
|
|
450
|
-
}
|
|
451
|
-
if (ts2.isPropertyAccessExpression(expr) && ts2.isIdentifier(expr.name)) {
|
|
452
|
-
return expr.name.text;
|
|
453
|
-
}
|
|
454
|
-
return void 0;
|
|
455
|
-
}
|
|
456
|
-
function getCliReferencedPackagesFromFiles(allFiles, location, allDeps) {
|
|
457
|
-
const allTokens = /* @__PURE__ */ new Set();
|
|
458
|
-
for (const file of allFiles) {
|
|
459
|
-
for (const token of getCommandTokensFromFile(file)) {
|
|
460
|
-
allTokens.add(token);
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
if (allTokens.size === 0) return /* @__PURE__ */ new Set();
|
|
464
|
-
const binToPackage = /* @__PURE__ */ new Map();
|
|
465
|
-
for (const dep of allDeps) {
|
|
466
|
-
for (const bin of getBinNames(location, dep)) {
|
|
467
|
-
binToPackage.set(bin, dep);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
const referenced = /* @__PURE__ */ new Set();
|
|
471
|
-
for (const token of allTokens) {
|
|
472
|
-
const baseName = getBasePackageName(token);
|
|
473
|
-
if (allDeps.includes(baseName)) {
|
|
474
|
-
referenced.add(baseName);
|
|
475
|
-
}
|
|
476
|
-
const pkg = binToPackage.get(token);
|
|
477
|
-
if (pkg) {
|
|
478
|
-
referenced.add(pkg);
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
return referenced;
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
// src/actions/deplint/implicitDevDependencies.ts
|
|
485
|
-
import fs8 from "fs";
|
|
486
|
-
var hasFileWithExtension = (files, extensions) => files.some((f) => extensions.some((ext) => f.endsWith(ext)));
|
|
487
|
-
var tsExtensions = [".ts", ".tsx", ".mts", ".cts"];
|
|
488
|
-
var hasTypescriptFiles = ({ allFiles }) => hasFileWithExtension(allFiles, tsExtensions);
|
|
489
|
-
var decoratorPattern = /^\s*@[a-zA-Z]\w*/m;
|
|
490
|
-
var hasDecorators = ({ allFiles }) => allFiles.filter((f) => tsExtensions.some((ext) => f.endsWith(ext))).some((file) => {
|
|
491
|
-
try {
|
|
492
|
-
const content = fs8.readFileSync(file, "utf8");
|
|
493
|
-
return decoratorPattern.test(content);
|
|
494
|
-
} catch {
|
|
495
|
-
return false;
|
|
496
|
-
}
|
|
497
|
-
});
|
|
498
|
-
var importPlugins = /* @__PURE__ */ new Set(["eslint-plugin-import-x", "eslint-plugin-import"]);
|
|
499
|
-
function hasImportPlugin({ location, allDependencies }) {
|
|
500
|
-
if (allDependencies.some((d) => importPlugins.has(d))) return true;
|
|
501
|
-
for (const dep of allDependencies) {
|
|
502
|
-
const pkgPath = findDepPackageJson(location, dep);
|
|
503
|
-
if (!pkgPath) continue;
|
|
504
|
-
try {
|
|
505
|
-
const pkg = JSON.parse(fs8.readFileSync(pkgPath, "utf8"));
|
|
506
|
-
const transitiveDeps = [
|
|
507
|
-
...Object.keys(pkg.dependencies ?? {}),
|
|
508
|
-
...Object.keys(pkg.peerDependencies ?? {})
|
|
509
|
-
];
|
|
510
|
-
if (transitiveDeps.some((d) => importPlugins.has(d))) return true;
|
|
511
|
-
} catch {
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
return false;
|
|
515
|
-
}
|
|
516
|
-
var hasVitest = ({ allDependencies }) => allDependencies.includes("vitest");
|
|
517
|
-
var rules = [
|
|
518
|
-
{
|
|
519
|
-
package: "typescript",
|
|
520
|
-
isNeeded: hasTypescriptFiles
|
|
521
|
-
},
|
|
522
|
-
{
|
|
523
|
-
package: "eslint-import-resolver-typescript",
|
|
524
|
-
isNeeded: (context) => hasTypescriptFiles(context) && context.allDependencies.includes("eslint") && hasImportPlugin(context)
|
|
525
|
-
},
|
|
526
|
-
{
|
|
527
|
-
package: "tslib",
|
|
528
|
-
isNeeded: hasDecorators
|
|
529
|
-
},
|
|
530
|
-
{
|
|
531
|
-
package: "@vitest/coverage-v8",
|
|
532
|
-
isNeeded: hasVitest
|
|
533
|
-
}
|
|
534
|
-
];
|
|
535
|
-
function getImplicitDevDependencies(context) {
|
|
536
|
-
const implicit = /* @__PURE__ */ new Set();
|
|
537
|
-
for (const rule of rules) {
|
|
538
|
-
if (rule.isNeeded(context)) {
|
|
539
|
-
implicit.add(rule.package);
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
return implicit;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
// src/actions/deplint/checkPackage/getUnusedDevDependencies.ts
|
|
546
|
-
var allExternalImports = ({
|
|
547
|
-
externalAllImports,
|
|
548
|
-
externalDistImports,
|
|
549
|
-
externalDistTypeImports
|
|
550
|
-
}) => {
|
|
551
|
-
return /* @__PURE__ */ new Set([
|
|
552
|
-
...externalAllImports,
|
|
553
|
-
...externalDistImports,
|
|
554
|
-
...externalDistTypeImports
|
|
555
|
-
]);
|
|
556
|
-
};
|
|
557
|
-
function isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs) {
|
|
558
|
-
if (implicitDeps.has(dep)) return true;
|
|
559
|
-
if (requiredPeers.has(dep)) return true;
|
|
560
|
-
if (scriptRefs.has(dep)) return true;
|
|
561
|
-
if (cliRefs.has(dep)) return true;
|
|
562
|
-
if (dep.startsWith("@types/")) {
|
|
563
|
-
const baseName = dep.replace(/^@types\//, "");
|
|
564
|
-
return allImports.has(baseName) || allImports.has(dep) || implicitDeps.has(baseName);
|
|
565
|
-
}
|
|
566
|
-
return allImports.has(dep);
|
|
567
|
-
}
|
|
568
|
-
function getUnusedDevDependencies({ name, location }, {
|
|
569
|
-
devDependencies,
|
|
570
|
-
dependencies,
|
|
571
|
-
peerDependencies
|
|
572
|
-
}, sourceParams, fileContext, exclude) {
|
|
573
|
-
const allImports = allExternalImports(sourceParams);
|
|
574
|
-
const allDeps = [...dependencies, ...devDependencies, ...peerDependencies];
|
|
575
|
-
const implicitDeps = getImplicitDevDependencies({
|
|
576
|
-
...fileContext,
|
|
577
|
-
allDependencies: allDeps,
|
|
578
|
-
location
|
|
579
|
-
});
|
|
580
|
-
const requiredPeers = getRequiredPeerDependencies(location, allDeps);
|
|
581
|
-
const scriptRefs = getScriptReferencedPackages(location, allDeps);
|
|
582
|
-
const cliRefs = getCliReferencedPackagesFromFiles(fileContext.allFiles, location, allDeps);
|
|
583
|
-
let unusedDevDependencies = 0;
|
|
584
|
-
for (const dep of devDependencies) {
|
|
585
|
-
if (exclude?.has(dep)) continue;
|
|
586
|
-
if (dependencies.includes(dep) || peerDependencies.includes(dep)) continue;
|
|
587
|
-
if (!isDevDepUsed(dep, allImports, implicitDeps, requiredPeers, scriptRefs, cliRefs)) {
|
|
588
|
-
unusedDevDependencies++;
|
|
589
|
-
console.log(`[${chalk4.blue(name)}] Unused devDependency in package.json: ${chalk4.red(dep)}`);
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
if (unusedDevDependencies > 0) {
|
|
593
|
-
const packageLocation = `${location}/package.json`;
|
|
594
|
-
console.log(` ${chalk4.yellow(packageLocation)}
|
|
595
|
-
`);
|
|
596
|
-
}
|
|
597
|
-
return unusedDevDependencies;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
// src/actions/deplint/checkPackage/getUnusedPeerDependencies.ts
|
|
601
|
-
import chalk5 from "chalk";
|
|
602
|
-
function getUnusedPeerDependencies({ name, location }, { peerDependencies, dependencies }, { externalDistImports, externalDistTypeImports }, exclude) {
|
|
603
|
-
let unusedDependencies = 0;
|
|
604
|
-
for (const dep of peerDependencies) {
|
|
605
|
-
if (exclude?.has(dep)) continue;
|
|
606
|
-
if (!externalDistImports.includes(dep) && !externalDistImports.includes(dep.replace(/^@types\//, "")) && !externalDistTypeImports.includes(dep) && !externalDistTypeImports.includes(dep.replace(/^@types\//, ""))) {
|
|
607
|
-
unusedDependencies++;
|
|
608
|
-
if (dependencies.includes(dep)) {
|
|
609
|
-
console.log(`[${chalk5.blue(name)}] Unused peerDependency [already a dependency] in package.json: ${chalk5.red(dep)}`);
|
|
610
|
-
} else {
|
|
611
|
-
console.log(`[${chalk5.blue(name)}] Unused peerDependency in package.json: ${chalk5.red(dep)}`);
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
if (unusedDependencies > 0) {
|
|
616
|
-
const packageLocation = `${location}/package.json`;
|
|
617
|
-
console.log(` ${chalk5.yellow(packageLocation)}
|
|
618
|
-
`);
|
|
619
|
-
}
|
|
620
|
-
return unusedDependencies;
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
// src/actions/deplint/checkPackage/checkPackage.ts
|
|
624
|
-
function logVerbose(name, location, allFiles, distFiles, tsconfigExtends) {
|
|
625
|
-
console.info(`Checking package: ${name} at ${location}`);
|
|
626
|
-
console.info(`All files: ${allFiles.length}, Distribution files: ${distFiles.length}`);
|
|
627
|
-
for (const file of allFiles) {
|
|
628
|
-
console.info(`File: ${file}`);
|
|
629
|
-
}
|
|
630
|
-
for (const file of distFiles) {
|
|
631
|
-
console.info(`Distribution file: ${file}`);
|
|
632
|
-
}
|
|
633
|
-
for (const ext of tsconfigExtends) {
|
|
634
|
-
console.info(`Tsconfig extends: ${ext}`);
|
|
635
|
-
}
|
|
636
|
-
}
|
|
637
|
-
function checkPackage({
|
|
638
|
-
name,
|
|
639
|
-
location,
|
|
640
|
-
deps = false,
|
|
641
|
-
devDeps = false,
|
|
642
|
-
exclude,
|
|
643
|
-
peerDeps = false,
|
|
644
|
-
verbose = false
|
|
645
|
-
}) {
|
|
646
|
-
const { allFiles, distFiles } = findFiles(location);
|
|
647
|
-
const tsconfigExtends = getExtendsFromTsconfigs(location);
|
|
648
|
-
if (verbose) {
|
|
649
|
-
logVerbose(name, location, allFiles, distFiles, tsconfigExtends);
|
|
650
|
-
}
|
|
651
|
-
const checkDeps = deps || !(deps || devDeps || peerDeps);
|
|
652
|
-
const checkDevDeps = devDeps || !(deps || devDeps || peerDeps);
|
|
653
|
-
const checkPeerDeps = peerDeps;
|
|
654
|
-
const sourceParams = getExternalImportsFromFiles({
|
|
655
|
-
allFiles,
|
|
656
|
-
distFiles,
|
|
657
|
-
tsconfigExtends
|
|
658
|
-
});
|
|
659
|
-
const packageParams = getDependenciesFromPackageJson(`${location}/package.json`);
|
|
660
|
-
const unlistedDependencies = checkDeps ? getUnlistedDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
661
|
-
const unusedDependencies = checkDeps ? getUnusedDependencies({ name, location }, packageParams, sourceParams, exclude) : 0;
|
|
662
|
-
const unlistedDevDependencies = checkDevDeps ? getUnlistedDevDependencies({ name, location }, packageParams, sourceParams) : 0;
|
|
663
|
-
const fileContext = { allFiles, distFiles };
|
|
664
|
-
const unusedDevDependencies = checkDevDeps ? getUnusedDevDependencies({ name, location }, packageParams, sourceParams, fileContext, exclude) : 0;
|
|
665
|
-
const unusedPeerDependencies = checkPeerDeps ? getUnusedPeerDependencies({ name, location }, packageParams, sourceParams, exclude) : 0;
|
|
666
|
-
const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + unusedDevDependencies + unusedPeerDependencies;
|
|
667
|
-
return totalErrors;
|
|
668
|
-
}
|
|
669
|
-
export {
|
|
670
|
-
checkPackage
|
|
671
|
-
};
|
|
672
|
-
//# sourceMappingURL=index.mjs.map
|