@xylabs/ts-scripts-yarn3 3.2.26 → 3.2.28

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.
@@ -38,6 +38,7 @@ var import_lib = require("../../lib");
38
38
  const packageDeps = async () => {
39
39
  const pkg = process.env.INIT_CWD;
40
40
  const pkgName = process.env.npm_package_name;
41
+ const packageContent = (0, import_fs.existsSync)(`${pkg}/package.json`) ? JSON.parse((0, import_fs.readFileSync)(`${pkg}/package.json`, { encoding: "utf8" })) : void 0;
41
42
  const rawIgnore = (0, import_fs.existsSync)(`${pkg}/.depcheckrc`) ? (0, import_fs.readFileSync)(`${pkg}/.depcheckrc`, { encoding: "utf8" }).replace("ignores:", '"ignores":') : void 0;
42
43
  let ignoreMatches = [];
43
44
  try {
@@ -56,13 +57,15 @@ const packageDeps = async () => {
56
57
  "typescript"
57
58
  ];
58
59
  const [codeResults, testsResults] = await Promise.all([
59
- (0, import_depcheck.default)(`${pkg}/.`, {
60
+ (0, import_depcheck.default)(`${pkg}/src`, {
60
61
  ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],
61
- ignorePatterns: ["*.stories.*", "*.spec.*", ...defaultIgnorePatterns]
62
+ ignorePatterns: ["*.stories.*", "*.spec.*", ...defaultIgnorePatterns],
63
+ package: packageContent
62
64
  }),
63
65
  (0, import_depcheck.default)(`${pkg}/.`, {
64
66
  ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],
65
67
  ignorePatterns: [...defaultIgnorePatterns],
68
+ package: packageContent,
66
69
  specials: [import_depcheck.special.eslint, import_depcheck.special.babel, import_depcheck.special.bin, import_depcheck.special.prettier, import_depcheck.special.jest, import_depcheck.special.mocha]
67
70
  })
68
71
  ]);
@@ -93,7 +96,10 @@ const packageDeps = async () => {
93
96
  if (Object.entries(unused.invalidFiles).length) {
94
97
  Object.entries(unused.invalidFiles).forEach(([key, value]) => console.warn(import_chalk.default.gray(`Invalid File: ${key}: ${value}`)));
95
98
  }
96
- const missingDeps = Object.keys(codeResults.using).filter((key) => !codeResults.dependencies.includes(key));
99
+ const declaredDeps = Object.keys(packageContent.dependencies ?? {});
100
+ const missingDeps = Object.keys(codeResults.using).filter(
101
+ (key) => !declaredDeps.includes(key) && !key.startsWith("@types/") && !defaultIgnoreMatches.includes(key)
102
+ );
97
103
  if (Object.entries(codeResults.missing).length) {
98
104
  const message = [import_chalk.default.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)];
99
105
  Object.entries(codeResults.missing).forEach(([key, value]) => {
@@ -102,7 +108,7 @@ const packageDeps = async () => {
102
108
  });
103
109
  console.log(import_chalk.default.yellow(message.join("\n")));
104
110
  }
105
- if (Object.entries(codeResults.missing).length) {
111
+ if (missingDeps.length) {
106
112
  const message = [import_chalk.default.yellow(`${missingDeps.length} Missing dependencies [alt]`)];
107
113
  missingDeps.forEach((key) => {
108
114
  message.push(`${key}`);
@@ -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\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\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', '.*']\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 [codeResults, testsResults] = await Promise.all([\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.spec.*', ...defaultIgnorePatterns],\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: [...defaultIgnorePatterns],\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unused: depcheck.Results = {\n ...codeResults,\n /* we only reports the unused devDeps if both are not using it */\n devDependencies: testsResults.devDependencies.filter((value) => codeResults.devDependencies.includes(value)),\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(unused.missing).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n if (unused.dependencies.length) {\n const message = [chalk.yellow(`${unused.dependencies.length} Unused dependencies`)]\n unused.dependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n\n if (unused.devDependencies.length) {\n const message = [chalk.yellow(`${unused.devDependencies.length} Unused devDependencies`)]\n unused.devDependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\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 const missingDeps = Object.keys(codeResults.using).filter((key) => !codeResults.dependencies.includes(key))\n\n if (Object.entries(codeResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)]\n Object.entries(codeResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (Object.entries(codeResults.missing).length) {\n const message = [chalk.yellow(`${missingDeps.length} Missing dependencies [alt]`)]\n missingDeps.forEach((key) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${codeResults.using[key].pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (Object.entries(testsResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(testsResults.missing).length} Missing devDependencies`)]\n Object.entries(testsResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\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":["depcheck","chalk"]}
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\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', '.*']\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 [codeResults, testsResults] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.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 ...codeResults,\n /* we only reports the unused devDeps if both are not using it */\n devDependencies: testsResults.devDependencies.filter((value) => codeResults.devDependencies.includes(value)),\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(unused.missing).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n if (unused.dependencies.length) {\n const message = [chalk.yellow(`${unused.dependencies.length} Unused dependencies`)]\n unused.dependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n\n if (unused.devDependencies.length) {\n const message = [chalk.yellow(`${unused.devDependencies.length} Unused devDependencies`)]\n unused.devDependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\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 const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n\n const missingDeps = Object.keys(codeResults.using).filter(\n (key) => !declaredDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),\n )\n\n if (Object.entries(codeResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)]\n Object.entries(codeResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (missingDeps.length) {\n const message = [chalk.yellow(`${missingDeps.length} Missing dependencies [alt]`)]\n missingDeps.forEach((key) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${codeResults.using[key].pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (Object.entries(testsResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(testsResults.missing).length} Missing devDependencies`)]\n Object.entries(testsResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\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":["depcheck","chalk"]}
@@ -5,6 +5,7 @@ import { checkResult } from "../../lib";
5
5
  const packageDeps = async () => {
6
6
  const pkg = process.env.INIT_CWD;
7
7
  const pkgName = process.env.npm_package_name;
8
+ const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: "utf8" })) : void 0;
8
9
  const rawIgnore = existsSync(`${pkg}/.depcheckrc`) ? readFileSync(`${pkg}/.depcheckrc`, { encoding: "utf8" }).replace("ignores:", '"ignores":') : void 0;
9
10
  let ignoreMatches = [];
10
11
  try {
@@ -23,13 +24,15 @@ const packageDeps = async () => {
23
24
  "typescript"
24
25
  ];
25
26
  const [codeResults, testsResults] = await Promise.all([
26
- depcheck(`${pkg}/.`, {
27
+ depcheck(`${pkg}/src`, {
27
28
  ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],
28
- ignorePatterns: ["*.stories.*", "*.spec.*", ...defaultIgnorePatterns]
29
+ ignorePatterns: ["*.stories.*", "*.spec.*", ...defaultIgnorePatterns],
30
+ package: packageContent
29
31
  }),
30
32
  depcheck(`${pkg}/.`, {
31
33
  ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],
32
34
  ignorePatterns: [...defaultIgnorePatterns],
35
+ package: packageContent,
33
36
  specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha]
34
37
  })
35
38
  ]);
@@ -60,7 +63,10 @@ const packageDeps = async () => {
60
63
  if (Object.entries(unused.invalidFiles).length) {
61
64
  Object.entries(unused.invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)));
62
65
  }
63
- const missingDeps = Object.keys(codeResults.using).filter((key) => !codeResults.dependencies.includes(key));
66
+ const declaredDeps = Object.keys(packageContent.dependencies ?? {});
67
+ const missingDeps = Object.keys(codeResults.using).filter(
68
+ (key) => !declaredDeps.includes(key) && !key.startsWith("@types/") && !defaultIgnoreMatches.includes(key)
69
+ );
64
70
  if (Object.entries(codeResults.missing).length) {
65
71
  const message = [chalk.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)];
66
72
  Object.entries(codeResults.missing).forEach(([key, value]) => {
@@ -69,7 +75,7 @@ const packageDeps = async () => {
69
75
  });
70
76
  console.log(chalk.yellow(message.join("\n")));
71
77
  }
72
- if (Object.entries(codeResults.missing).length) {
78
+ if (missingDeps.length) {
73
79
  const message = [chalk.yellow(`${missingDeps.length} Missing dependencies [alt]`)];
74
80
  missingDeps.forEach((key) => {
75
81
  message.push(`${key}`);
@@ -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\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD\n const pkgName = process.env.npm_package_name\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', '.*']\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 [codeResults, testsResults] = await Promise.all([\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.spec.*', ...defaultIgnorePatterns],\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: [...defaultIgnorePatterns],\n specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],\n }),\n ])\n\n const unused: depcheck.Results = {\n ...codeResults,\n /* we only reports the unused devDeps if both are not using it */\n devDependencies: testsResults.devDependencies.filter((value) => codeResults.devDependencies.includes(value)),\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(unused.missing).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n if (unused.dependencies.length) {\n const message = [chalk.yellow(`${unused.dependencies.length} Unused dependencies`)]\n unused.dependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n\n if (unused.devDependencies.length) {\n const message = [chalk.yellow(`${unused.devDependencies.length} Unused devDependencies`)]\n unused.devDependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\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 const missingDeps = Object.keys(codeResults.using).filter((key) => !codeResults.dependencies.includes(key))\n\n if (Object.entries(codeResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)]\n Object.entries(codeResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (Object.entries(codeResults.missing).length) {\n const message = [chalk.yellow(`${missingDeps.length} Missing dependencies [alt]`)]\n missingDeps.forEach((key) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${codeResults.using[key].pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (Object.entries(testsResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(testsResults.missing).length} Missing devDependencies`)]\n Object.entries(testsResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\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":[]}
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\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', '.*']\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 [codeResults, testsResults] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],\n ignorePatterns: ['*.stories.*', '*.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 ...codeResults,\n /* we only reports the unused devDeps if both are not using it */\n devDependencies: testsResults.devDependencies.filter((value) => codeResults.devDependencies.includes(value)),\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(unused.missing).length\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}]`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n if (unused.dependencies.length) {\n const message = [chalk.yellow(`${unused.dependencies.length} Unused dependencies`)]\n unused.dependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\n\n if (unused.devDependencies.length) {\n const message = [chalk.yellow(`${unused.devDependencies.length} Unused devDependencies`)]\n unused.devDependencies.forEach((value) => message.push(chalk.gray(` ${value}`)))\n console.log(message.join('\\n'))\n }\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 const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n\n const missingDeps = Object.keys(codeResults.using).filter(\n (key) => !declaredDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),\n )\n\n if (Object.entries(codeResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)]\n Object.entries(codeResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (missingDeps.length) {\n const message = [chalk.yellow(`${missingDeps.length} Missing dependencies [alt]`)]\n missingDeps.forEach((key) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${codeResults.using[key].pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\n\n if (Object.entries(testsResults.missing).length) {\n const message = [chalk.yellow(`${Object.entries(testsResults.missing).length} Missing devDependencies`)]\n Object.entries(testsResults.missing).forEach(([key, value]) => {\n message.push(`${key}`)\n message.push(chalk.gray(` ${value.pop()}`))\n })\n console.log(chalk.yellow(message.join('\\n')))\n }\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.17.0",
66
66
  "@typescript-eslint/parser": "^6.17.0",
67
- "@xylabs/tsconfig": "~3.2.26",
67
+ "@xylabs/tsconfig": "~3.2.28",
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.26",
116
- "@xylabs/tsconfig": "~3.2.26",
115
+ "@xylabs/eslint-config": "~3.2.28",
116
+ "@xylabs/tsconfig": "~3.2.28",
117
117
  "publint": "^0.2.7",
118
118
  "typescript": "^5.3.3"
119
119
  },
@@ -169,5 +169,5 @@
169
169
  "package-clean": "echo Not cleaning..."
170
170
  },
171
171
  "sideEffects": false,
172
- "version": "3.2.26"
172
+ "version": "3.2.28"
173
173
  }
@@ -9,6 +9,8 @@ export const packageDeps = async () => {
9
9
  const pkg = process.env.INIT_CWD
10
10
  const pkgName = process.env.npm_package_name
11
11
 
12
+ const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined
13
+
12
14
  const rawIgnore = existsSync(`${pkg}/.depcheckrc`)
13
15
  ? readFileSync(`${pkg}/.depcheckrc`, { encoding: 'utf8' }).replace('ignores:', '"ignores":')
14
16
  : undefined
@@ -31,13 +33,15 @@ export const packageDeps = async () => {
31
33
  ]
32
34
 
33
35
  const [codeResults, testsResults] = await Promise.all([
34
- depcheck(`${pkg}/.`, {
36
+ depcheck(`${pkg}/src`, {
35
37
  ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],
36
38
  ignorePatterns: ['*.stories.*', '*.spec.*', ...defaultIgnorePatterns],
39
+ package: packageContent,
37
40
  }),
38
41
  depcheck(`${pkg}/.`, {
39
42
  ignoreMatches: [...defaultIgnoreMatches, ...ignoreMatches],
40
43
  ignorePatterns: [...defaultIgnorePatterns],
44
+ package: packageContent,
41
45
  specials: [special.eslint, special.babel, special.bin, special.prettier, special.jest, special.mocha],
42
46
  }),
43
47
  ])
@@ -81,7 +85,11 @@ export const packageDeps = async () => {
81
85
  Object.entries(unused.invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))
82
86
  }
83
87
 
84
- const missingDeps = Object.keys(codeResults.using).filter((key) => !codeResults.dependencies.includes(key))
88
+ const declaredDeps = Object.keys(packageContent.dependencies ?? {})
89
+
90
+ const missingDeps = Object.keys(codeResults.using).filter(
91
+ (key) => !declaredDeps.includes(key) && !key.startsWith('@types/') && !defaultIgnoreMatches.includes(key),
92
+ )
85
93
 
86
94
  if (Object.entries(codeResults.missing).length) {
87
95
  const message = [chalk.yellow(`${Object.entries(codeResults.missing).length} Missing dependencies`)]
@@ -92,7 +100,7 @@ export const packageDeps = async () => {
92
100
  console.log(chalk.yellow(message.join('\n')))
93
101
  }
94
102
 
95
- if (Object.entries(codeResults.missing).length) {
103
+ if (missingDeps.length) {
96
104
  const message = [chalk.yellow(`${missingDeps.length} Missing dependencies [alt]`)]
97
105
  missingDeps.forEach((key) => {
98
106
  message.push(`${key}`)
package/tsconfig.json CHANGED
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "exclude": ["dist"],
3
- "extends": "@xylabs/tsconfig"
3
+ "extends": "@xylabs/tsconfig",
4
+ "include": ["src"]
4
5
  }