@xylabs/ts-scripts-yarn3 3.2.32 → 3.2.33
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.
|
@@ -46,7 +46,7 @@ const reportUnused = (name, unused) => {
|
|
|
46
46
|
}
|
|
47
47
|
};
|
|
48
48
|
const reportMissing = (name, missing) => {
|
|
49
|
-
if (missing.length) {
|
|
49
|
+
if (Object.keys(missing).length) {
|
|
50
50
|
const message = [import_chalk.default.yellow(`${Object.entries(missing).length} Missing ${name}`)];
|
|
51
51
|
Object.entries(missing).forEach(([key, value]) => {
|
|
52
52
|
message.push(`${key}`);
|
|
@@ -111,11 +111,6 @@ const packageDeps = async () => {
|
|
|
111
111
|
const errorCount = unused.dependencies.length + unused.devDependencies.length + Object.entries(unused.invalidDirs).length + Object.entries(unused.invalidFiles).length + Object.entries(missingDepsObject).length;
|
|
112
112
|
if (errorCount > 0) {
|
|
113
113
|
console.log(`Deps [${pkgName}]`);
|
|
114
|
-
console.log(`unused.dependencies: ${JSON.stringify(unused.dependencies)}`);
|
|
115
|
-
console.log(`unused.devDependencies: ${JSON.stringify(unused.devDependencies)}`);
|
|
116
|
-
console.log(`unused.invalidDirs: ${JSON.stringify(unused.invalidDirs)}`);
|
|
117
|
-
console.log(`unused.invalidFiles: ${JSON.stringify(unused.invalidFiles)}`);
|
|
118
|
-
console.log(`missingDepsObject: ${JSON.stringify(missingDepsObject)}`);
|
|
119
114
|
} else {
|
|
120
115
|
console.log(`Deps [${pkgName}] - Ok`);
|
|
121
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst andStringArrays = (arrays: [string[], string[]]): string[] => {\n return arrays[0].filter((value) => arrays[1].includes(value))\n}\n\nconst reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {\n if (unused.length) {\n const message = [chalk.yellow(`${unused.length} Unused ${name}`)]\n unused.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n}\n\nconst reportMissing = (name: string, missing: depcheck.Results['missing']) => {\n if (missing.length) {\n const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]\n Object.entries(missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.at(0)}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\n\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n\n const rawIgnore = existsSync(`${pkg}/.depcheckrc`)\n ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '\"ignores\":')\n : undefined\n let ignoreMatches: string[] = []\n try {\n ignoreMatches = rawIgnore ? (JSON.parse(`{${rawIgnore}}`).ignores as string[]) : []\n } catch (ex) {\n const error = ex as Error\n console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)\n }\n\n const defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\n const defaultIgnoreMatches = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n ]\n\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: [...defaultIgnorePatterns],\n package: packageContent,\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unused: depcheck.Results = {\n ...srcUnused,\n /* we only reports the unused devDeps if both src or other are not using it */\n devDependencies: andStringArrays([allUnused.devDependencies, srcUnused.devDependencies]),\n }\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n\n const missingDeps = Object.keys(srcUnused.using).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),\n )\n\n const missingDepsObject = Object.entries(srcUnused.missing).reduce(\n (prev, [key, value]) => {\n if (missingDeps.includes(key)) {\n prev[key] = value\n }\n return prev\n },\n {} as Record<string, string[]>,\n )\n\n const errorCount =\n unused.dependencies.length +\n unused.devDependencies.length +\n Object.entries(unused.invalidDirs).length +\n Object.entries(unused.invalidFiles).length +\n Object.entries(missingDepsObject).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst andStringArrays = (arrays: [string[], string[]]): string[] => {\n return arrays[0].filter((value) => arrays[1].includes(value))\n}\n\nconst reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {\n if (unused.length) {\n const message = [chalk.yellow(`${unused.length} Unused ${name}`)]\n unused.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n}\n\nconst reportMissing = (name: string, missing: depcheck.Results['missing']) => {\n if (Object.keys(missing).length) {\n const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]\n Object.entries(missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.at(0)}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\n\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n\n const rawIgnore = existsSync(`${pkg}/.depcheckrc`)\n ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '\"ignores\":')\n : undefined\n let ignoreMatches: string[] = []\n try {\n ignoreMatches = rawIgnore ? (JSON.parse(`{${rawIgnore}}`).ignores as string[]) : []\n } catch (ex) {\n const error = ex as Error\n console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)\n }\n\n const defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\n const defaultIgnoreMatches = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n ]\n\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: [...defaultIgnorePatterns],\n package: packageContent,\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unused: depcheck.Results = {\n ...srcUnused,\n /* we only reports the unused devDeps if both src or other are not using it */\n devDependencies: andStringArrays([allUnused.devDependencies, srcUnused.devDependencies]),\n }\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n\n const missingDeps = Object.keys(srcUnused.using).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),\n )\n\n const missingDepsObject = Object.entries(srcUnused.missing).reduce(\n (prev, [key, value]) => {\n if (missingDeps.includes(key)) {\n prev[key] = value\n }\n return prev\n },\n {} as Record<string, string[]>,\n )\n\n const errorCount =\n unused.dependencies.length +\n unused.devDependencies.length +\n Object.entries(unused.invalidDirs).length +\n Object.entries(unused.invalidFiles).length +\n Object.entries(missingDepsObject).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unused.dependencies)\n reportUnused('devDependencies', unused.devDependencies)\n\n if (Object.entries(unused.invalidDirs).length) {\n Object.entries(unused.invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(unused.invalidFiles).length) {\n Object.entries(unused.invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', allUnused.missing)\n\n checkResult(`Deps [${pkgName}]`, errorCount, 'warn', false)\n\n //returning 0 here since we never want deps to be fatal\n return 0\n}\n"],"mappings":"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","names":["chalk","depcheck"]}
|
|
@@ -13,7 +13,7 @@ const reportUnused = (name, unused) => {
|
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
const reportMissing = (name, missing) => {
|
|
16
|
-
if (missing.length) {
|
|
16
|
+
if (Object.keys(missing).length) {
|
|
17
17
|
const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)];
|
|
18
18
|
Object.entries(missing).forEach(([key, value]) => {
|
|
19
19
|
message.push(`${key}`);
|
|
@@ -78,11 +78,6 @@ const packageDeps = async () => {
|
|
|
78
78
|
const errorCount = unused.dependencies.length + unused.devDependencies.length + Object.entries(unused.invalidDirs).length + Object.entries(unused.invalidFiles).length + Object.entries(missingDepsObject).length;
|
|
79
79
|
if (errorCount > 0) {
|
|
80
80
|
console.log(`Deps [${pkgName}]`);
|
|
81
|
-
console.log(`unused.dependencies: ${JSON.stringify(unused.dependencies)}`);
|
|
82
|
-
console.log(`unused.devDependencies: ${JSON.stringify(unused.devDependencies)}`);
|
|
83
|
-
console.log(`unused.invalidDirs: ${JSON.stringify(unused.invalidDirs)}`);
|
|
84
|
-
console.log(`unused.invalidFiles: ${JSON.stringify(unused.invalidFiles)}`);
|
|
85
|
-
console.log(`missingDepsObject: ${JSON.stringify(missingDepsObject)}`);
|
|
86
81
|
} else {
|
|
87
82
|
console.log(`Deps [${pkgName}] - Ok`);
|
|
88
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst andStringArrays = (arrays: [string[], string[]]): string[] => {\n return arrays[0].filter((value) => arrays[1].includes(value))\n}\n\nconst reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {\n if (unused.length) {\n const message = [chalk.yellow(`${unused.length} Unused ${name}`)]\n unused.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n}\n\nconst reportMissing = (name: string, missing: depcheck.Results['missing']) => {\n if (missing.length) {\n const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]\n Object.entries(missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.at(0)}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\n\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n\n const rawIgnore = existsSync(`${pkg}/.depcheckrc`)\n ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '\"ignores\":')\n : undefined\n let ignoreMatches: string[] = []\n try {\n ignoreMatches = rawIgnore ? (JSON.parse(`{${rawIgnore}}`).ignores as string[]) : []\n } catch (ex) {\n const error = ex as Error\n console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)\n }\n\n const defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\n const defaultIgnoreMatches = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n ]\n\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: [...defaultIgnorePatterns],\n package: packageContent,\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unused: depcheck.Results = {\n ...srcUnused,\n /* we only reports the unused devDeps if both src or other are not using it */\n devDependencies: andStringArrays([allUnused.devDependencies, srcUnused.devDependencies]),\n }\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n\n const missingDeps = Object.keys(srcUnused.using).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),\n )\n\n const missingDepsObject = Object.entries(srcUnused.missing).reduce(\n (prev, [key, value]) => {\n if (missingDeps.includes(key)) {\n prev[key] = value\n }\n return prev\n },\n {} as Record<string, string[]>,\n )\n\n const errorCount =\n unused.dependencies.length +\n unused.devDependencies.length +\n Object.entries(unused.invalidDirs).length +\n Object.entries(unused.invalidFiles).length +\n Object.entries(missingDepsObject).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/deps.ts"],"sourcesContent":["/* eslint-disable max-statements */\nimport chalk from 'chalk'\nimport depcheck, { special } from 'depcheck'\nimport { existsSync, readFileSync } from 'fs'\n\nimport { checkResult } from '../../lib'\n\nconst andStringArrays = (arrays: [string[], string[]]): string[] => {\n return arrays[0].filter((value) => arrays[1].includes(value))\n}\n\nconst reportUnused = (name: string, unused: depcheck.Results['dependencies']) => {\n if (unused.length) {\n const message = [chalk.yellow(`${unused.length} Unused ${name}`)]\n unused.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n}\n\nconst reportMissing = (name: string, missing: depcheck.Results['missing']) => {\n if (Object.keys(missing).length) {\n const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]\n Object.entries(missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.at(0)}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\n\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n\n const rawIgnore = existsSync(`${pkg}/.depcheckrc`)\n ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '\"ignores\":')\n : undefined\n let ignoreMatches: string[] = []\n try {\n ignoreMatches = rawIgnore ? (JSON.parse(`{${rawIgnore}}`).ignores as string[]) : []\n } catch (ex) {\n const error = ex as Error\n console.log(`${pkgName} [${error.message}] Failed to parse .depcheckrc [${rawIgnore}]`)\n }\n\n const defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\n const defaultIgnoreMatches = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n ]\n\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.spec.*', 'spec', ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: [...defaultIgnorePatterns],\n package: packageContent,\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unused: depcheck.Results = {\n ...srcUnused,\n /* we only reports the unused devDeps if both src or other are not using it */\n devDependencies: andStringArrays([allUnused.devDependencies, srcUnused.devDependencies]),\n }\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n\n const missingDeps = Object.keys(srcUnused.using).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),\n )\n\n const missingDepsObject = Object.entries(srcUnused.missing).reduce(\n (prev, [key, value]) => {\n if (missingDeps.includes(key)) {\n prev[key] = value\n }\n return prev\n },\n {} as Record<string, string[]>,\n )\n\n const errorCount =\n unused.dependencies.length +\n unused.devDependencies.length +\n Object.entries(unused.invalidDirs).length +\n Object.entries(unused.invalidFiles).length +\n Object.entries(missingDepsObject).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unused.dependencies)\n reportUnused('devDependencies', unused.devDependencies)\n\n if (Object.entries(unused.invalidDirs).length) {\n Object.entries(unused.invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(unused.invalidFiles).length) {\n Object.entries(unused.invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', allUnused.missing)\n\n checkResult(`Deps [${pkgName}]`, errorCount, 'warn', false)\n\n //returning 0 here since we never want deps to be fatal\n return 0\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"@types/yargs": "^17.0.32",
|
|
65
65
|
"@typescript-eslint/eslint-plugin": "^6.18.0",
|
|
66
66
|
"@typescript-eslint/parser": "^6.18.0",
|
|
67
|
-
"@xylabs/tsconfig": "~3.2.
|
|
67
|
+
"@xylabs/tsconfig": "~3.2.33",
|
|
68
68
|
"async-mutex": "^0.4.0",
|
|
69
69
|
"chalk": "^4.1.2",
|
|
70
70
|
"cosmiconfig": "^8.3.6",
|
|
@@ -112,8 +112,8 @@
|
|
|
112
112
|
"@types/license-checker": "^25.0.6",
|
|
113
113
|
"@types/lodash": "^4.14.202",
|
|
114
114
|
"@types/parse-git-config": "^3.0.4",
|
|
115
|
-
"@xylabs/eslint-config": "~3.2.
|
|
116
|
-
"@xylabs/tsconfig": "~3.2.
|
|
115
|
+
"@xylabs/eslint-config": "~3.2.33",
|
|
116
|
+
"@xylabs/tsconfig": "~3.2.33",
|
|
117
117
|
"publint": "^0.2.7",
|
|
118
118
|
"typescript": "^5.3.3"
|
|
119
119
|
},
|
|
@@ -169,6 +169,6 @@
|
|
|
169
169
|
"package-clean": "echo Not cleaning..."
|
|
170
170
|
},
|
|
171
171
|
"sideEffects": false,
|
|
172
|
-
"version": "3.2.
|
|
172
|
+
"version": "3.2.33",
|
|
173
173
|
"type": "commonjs"
|
|
174
174
|
}
|
|
@@ -18,7 +18,7 @@ const reportUnused = (name: string, unused: depcheck.Results['dependencies']) =>
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
const reportMissing = (name: string, missing: depcheck.Results['missing']) => {
|
|
21
|
-
if (missing.length) {
|
|
21
|
+
if (Object.keys(missing).length) {
|
|
22
22
|
const message = [chalk.yellow(`${Object.entries(missing).length} Missing ${name}`)]
|
|
23
23
|
Object.entries(missing).forEach(([key, value]) => {
|
|
24
24
|
message.push(`${key}`)
|
|
@@ -101,11 +101,6 @@ export const packageDeps = async () => {
|
|
|
101
101
|
|
|
102
102
|
if (errorCount > 0) {
|
|
103
103
|
console.log(`Deps [${pkgName}]`)
|
|
104
|
-
console.log(`unused.dependencies: ${JSON.stringify(unused.dependencies)}`)
|
|
105
|
-
console.log(`unused.devDependencies: ${JSON.stringify(unused.devDependencies)}`)
|
|
106
|
-
console.log(`unused.invalidDirs: ${JSON.stringify(unused.invalidDirs)}`)
|
|
107
|
-
console.log(`unused.invalidFiles: ${JSON.stringify(unused.invalidFiles)}`)
|
|
108
|
-
console.log(`missingDepsObject: ${JSON.stringify(missingDepsObject)}`)
|
|
109
104
|
} else {
|
|
110
105
|
console.log(`Deps [${pkgName}] - Ok`)
|
|
111
106
|
}
|