@xylabs/ts-scripts-yarn3 3.2.40 → 3.2.41

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.
@@ -108,9 +108,7 @@ const packageDeps = async () => {
108
108
  const missingDevDeps = Object.keys(usedDevDeps).filter((key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key));
109
109
  const missingDepsObject = {};
110
110
  missingDeps.forEach((key) => {
111
- if (missing[key]) {
112
- missingDepsObject[key] = missing[key];
113
- }
111
+ missingDepsObject[key] = missing[key] ?? [`devDep should be dep [${key}]`];
114
112
  });
115
113
  const missingDevDepsObject = {};
116
114
  missingDevDeps.forEach((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'\nimport { cwd } from 'process'\n\nimport { checkResult } from '../../lib'\n\nconst defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\nconst defaultIgnoreDevDeps = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n]\nconst defaultIgnoreDevPatterns = ['*.stories.*', '*.spec.*', 'spec', 'stories', 'tsconfig.json']\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\nconst analyzeDeps = async (pkg: string, ignoreMatches: string[]) => {\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches,\n ignorePatterns: [...defaultIgnoreDevPatterns, ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...ignoreMatches, ...defaultIgnoreDevDeps],\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 unusedDeps = srcUnused.dependencies\n const unusedDevDeps = allUnused.devDependencies\n const usedDeps = srcUnused.using\n const usedDevDeps = allUnused.using\n const missing = { ...srcUnused.missing, ...allUnused.missing }\n const { invalidDirs, invalidFiles } = allUnused\n\n return { invalidDirs, invalidFiles, missing, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD ?? 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 { invalidDirs, invalidFiles, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps, missing } = await analyzeDeps(pkg, ignoreMatches)\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})\n\n const missingDeps = Object.keys(usedDeps).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),\n )\n\n const missingDevDeps = Object.keys(usedDevDeps).filter((key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key))\n\n const missingDepsObject: Record<string, string[]> = {}\n missingDeps.forEach((key) => {\n if (missing[key]) {\n missingDepsObject[key] = missing[key]\n }\n })\n\n const missingDevDepsObject: Record<string, string[]> = {}\n missingDevDeps.forEach((key) => {\n if (missing[key]) {\n missingDevDepsObject[key] = missing[key]\n }\n })\n\n const errorCounts = [\n unusedDeps.length,\n unusedDevDeps.length,\n Object.entries(invalidDirs).length,\n Object.entries(invalidFiles).length,\n Object.entries(missingDepsObject).length,\n Object.entries(missingDevDepsObject).length,\n ]\n\n const errorCount = errorCounts.reduce((prev, count) => prev + count, 0)\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}] = (${JSON.stringify(errorCounts)})`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unusedDeps)\n reportUnused('devDependencies', unusedDevDeps)\n\n if (Object.entries(invalidDirs).length) {\n Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(invalidFiles).length) {\n Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', missingDevDepsObject)\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"]}
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'\nimport { cwd } from 'process'\n\nimport { checkResult } from '../../lib'\n\nconst defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\nconst defaultIgnoreDevDeps = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n]\nconst defaultIgnoreDevPatterns = ['*.stories.*', '*.spec.*', 'spec', 'stories', 'tsconfig.json']\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\nconst analyzeDeps = async (pkg: string, ignoreMatches: string[]) => {\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches,\n ignorePatterns: [...defaultIgnoreDevPatterns, ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...ignoreMatches, ...defaultIgnoreDevDeps],\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 unusedDeps = srcUnused.dependencies\n const unusedDevDeps = allUnused.devDependencies\n const usedDeps = srcUnused.using\n const usedDevDeps = allUnused.using\n const missing = { ...srcUnused.missing, ...allUnused.missing }\n const { invalidDirs, invalidFiles } = allUnused\n\n return { invalidDirs, invalidFiles, missing, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD ?? 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 { invalidDirs, invalidFiles, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps, missing } = await analyzeDeps(pkg, ignoreMatches)\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})\n\n const missingDeps = Object.keys(usedDeps).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),\n )\n\n const missingDevDeps = Object.keys(usedDevDeps).filter((key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key))\n\n const missingDepsObject: Record<string, string[]> = {}\n missingDeps.forEach((key) => {\n missingDepsObject[key] = missing[key] ?? [`devDep should be dep [${key}]`]\n })\n\n const missingDevDepsObject: Record<string, string[]> = {}\n missingDevDeps.forEach((key) => {\n if (missing[key]) {\n missingDevDepsObject[key] = missing[key]\n }\n })\n\n const errorCounts = [\n unusedDeps.length,\n unusedDevDeps.length,\n Object.entries(invalidDirs).length,\n Object.entries(invalidFiles).length,\n Object.entries(missingDepsObject).length,\n Object.entries(missingDevDepsObject).length,\n ]\n\n const errorCount = errorCounts.reduce((prev, count) => prev + count, 0)\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}] = (${JSON.stringify(errorCounts)})`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unusedDeps)\n reportUnused('devDependencies', unusedDevDeps)\n\n if (Object.entries(invalidDirs).length) {\n Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(invalidFiles).length) {\n Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', missingDevDepsObject)\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"]}
@@ -75,9 +75,7 @@ const packageDeps = async () => {
75
75
  const missingDevDeps = Object.keys(usedDevDeps).filter((key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key));
76
76
  const missingDepsObject = {};
77
77
  missingDeps.forEach((key) => {
78
- if (missing[key]) {
79
- missingDepsObject[key] = missing[key];
80
- }
78
+ missingDepsObject[key] = missing[key] ?? [`devDep should be dep [${key}]`];
81
79
  });
82
80
  const missingDevDepsObject = {};
83
81
  missingDevDeps.forEach((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'\nimport { cwd } from 'process'\n\nimport { checkResult } from '../../lib'\n\nconst defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\nconst defaultIgnoreDevDeps = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n]\nconst defaultIgnoreDevPatterns = ['*.stories.*', '*.spec.*', 'spec', 'stories', 'tsconfig.json']\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\nconst analyzeDeps = async (pkg: string, ignoreMatches: string[]) => {\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches,\n ignorePatterns: [...defaultIgnoreDevPatterns, ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...ignoreMatches, ...defaultIgnoreDevDeps],\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 unusedDeps = srcUnused.dependencies\n const unusedDevDeps = allUnused.devDependencies\n const usedDeps = srcUnused.using\n const usedDevDeps = allUnused.using\n const missing = { ...srcUnused.missing, ...allUnused.missing }\n const { invalidDirs, invalidFiles } = allUnused\n\n return { invalidDirs, invalidFiles, missing, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD ?? 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 { invalidDirs, invalidFiles, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps, missing } = await analyzeDeps(pkg, ignoreMatches)\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})\n\n const missingDeps = Object.keys(usedDeps).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),\n )\n\n const missingDevDeps = Object.keys(usedDevDeps).filter((key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key))\n\n const missingDepsObject: Record<string, string[]> = {}\n missingDeps.forEach((key) => {\n if (missing[key]) {\n missingDepsObject[key] = missing[key]\n }\n })\n\n const missingDevDepsObject: Record<string, string[]> = {}\n missingDevDeps.forEach((key) => {\n if (missing[key]) {\n missingDevDepsObject[key] = missing[key]\n }\n })\n\n const errorCounts = [\n unusedDeps.length,\n unusedDevDeps.length,\n Object.entries(invalidDirs).length,\n Object.entries(invalidFiles).length,\n Object.entries(missingDepsObject).length,\n Object.entries(missingDevDepsObject).length,\n ]\n\n const errorCount = errorCounts.reduce((prev, count) => prev + count, 0)\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}] = (${JSON.stringify(errorCounts)})`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unusedDeps)\n reportUnused('devDependencies', unusedDevDeps)\n\n if (Object.entries(invalidDirs).length) {\n Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(invalidFiles).length) {\n Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', missingDevDepsObject)\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'\nimport { cwd } from 'process'\n\nimport { checkResult } from '../../lib'\n\nconst defaultIgnorePatterns = ['*.d.ts', 'dist', '.*', 'node_modules']\nconst defaultIgnoreDevDeps = [\n '@xylabs/ts-scripts-yarn3',\n '@xylabs/tsconfig',\n '@xylabs/tsconfig-dom',\n '@xylabs/tsconfig-react',\n '@xylabs/tsconfig-jest',\n 'typescript',\n]\nconst defaultIgnoreDevPatterns = ['*.stories.*', '*.spec.*', 'spec', 'stories', 'tsconfig.json']\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\nconst analyzeDeps = async (pkg: string, ignoreMatches: string[]) => {\n const packageContent = existsSync(`${pkg}/package.json`) ? JSON.parse(readFileSync(`${pkg}/package.json`, { encoding: 'utf8' })) : undefined\n const [srcUnused, allUnused] = await Promise.all([\n depcheck(`${pkg}/src`, {\n ignoreMatches,\n ignorePatterns: [...defaultIgnoreDevPatterns, ...defaultIgnorePatterns],\n package: packageContent,\n }),\n depcheck(`${pkg}/.`, {\n ignoreMatches: [...ignoreMatches, ...defaultIgnoreDevDeps],\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 unusedDeps = srcUnused.dependencies\n const unusedDevDeps = allUnused.devDependencies\n const usedDeps = srcUnused.using\n const usedDevDeps = allUnused.using\n const missing = { ...srcUnused.missing, ...allUnused.missing }\n const { invalidDirs, invalidFiles } = allUnused\n\n return { invalidDirs, invalidFiles, missing, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps }\n}\n\nexport const packageDeps = async () => {\n const pkg = process.env.INIT_CWD ?? 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 { invalidDirs, invalidFiles, unusedDeps, unusedDevDeps, usedDeps, usedDevDeps, missing } = await analyzeDeps(pkg, ignoreMatches)\n\n const declaredDeps = Object.keys(packageContent.dependencies ?? {})\n const declaredPeerDeps = Object.keys(packageContent.peerDependencies ?? {})\n const declaredDevDeps = Object.keys(packageContent.devDependencies ?? {})\n\n const missingDeps = Object.keys(usedDeps).filter(\n (key) => !declaredDeps.includes(key) && !declaredPeerDeps.includes(key) && !key.startsWith('@types/'),\n )\n\n const missingDevDeps = Object.keys(usedDevDeps).filter((key) => !declaredDevDeps.includes(key) && !declaredDeps.includes(key))\n\n const missingDepsObject: Record<string, string[]> = {}\n missingDeps.forEach((key) => {\n missingDepsObject[key] = missing[key] ?? [`devDep should be dep [${key}]`]\n })\n\n const missingDevDepsObject: Record<string, string[]> = {}\n missingDevDeps.forEach((key) => {\n if (missing[key]) {\n missingDevDepsObject[key] = missing[key]\n }\n })\n\n const errorCounts = [\n unusedDeps.length,\n unusedDevDeps.length,\n Object.entries(invalidDirs).length,\n Object.entries(invalidFiles).length,\n Object.entries(missingDepsObject).length,\n Object.entries(missingDevDepsObject).length,\n ]\n\n const errorCount = errorCounts.reduce((prev, count) => prev + count, 0)\n\n if (errorCount > 0) {\n console.log(`Deps [${pkgName}] = (${JSON.stringify(errorCounts)})`)\n } else {\n console.log(`Deps [${pkgName}] - Ok`)\n }\n\n reportUnused('dependencies', unusedDeps)\n reportUnused('devDependencies', unusedDevDeps)\n\n if (Object.entries(invalidDirs).length) {\n Object.entries(invalidDirs).forEach(([key, value]) => console.warn(chalk.gray(`Invalid Dir: ${key}: ${value}`)))\n }\n\n if (Object.entries(invalidFiles).length) {\n Object.entries(invalidFiles).forEach(([key, value]) => console.warn(chalk.gray(`Invalid File: ${key}: ${value}`)))\n }\n\n reportMissing('dependencies', missingDepsObject)\n reportMissing('devDependencies', missingDevDepsObject)\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":"AACA,OAAO,WAAW;AAClB,OAAO,YAAY,eAAe;AAClC,SAAS,YAAY,oBAAoB;AACzC,SAAS,WAAW;AAEpB,SAAS,mBAAmB;AAE5B,MAAM,wBAAwB,CAAC,UAAU,QAAQ,MAAM,cAAc;AACrE,MAAM,uBAAuB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,2BAA2B,CAAC,eAAe,YAAY,QAAQ,WAAW,eAAe;AAE/F,MAAM,eAAe,CAAC,MAAc,WAA6C;AAC/E,MAAI,OAAO,QAAQ;AACjB,UAAM,UAAU,CAAC,MAAM,OAAO,GAAG,OAAO,MAAM,WAAW,IAAI,EAAE,CAAC;AAChE,WAAO,QAAQ,CAAC,UAAU,QAAQ,KAAK,MAAM,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;AAChE,YAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC;AAAA,EAChC;AACF;AAEA,MAAM,gBAAgB,CAAC,MAAc,YAAyC;AAC5E,MAAI,OAAO,KAAK,OAAO,EAAE,QAAQ;AAC/B,UAAM,UAAU,CAAC,MAAM,OAAO,GAAG,OAAO,QAAQ,OAAO,EAAE,MAAM,YAAY,IAAI,EAAE,CAAC;AAClF,WAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChD,cAAQ,KAAK,GAAG,GAAG,EAAE;AACrB,cAAQ,KAAK,MAAM,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AAAA,IAC7C,CAAC;AACD,YAAQ,IAAI,MAAM,OAAO,QAAQ,KAAK,IAAI,CAAC,CAAC;AAAA,EAC9C;AACF;AAEA,MAAM,cAAc,OAAO,KAAa,kBAA4B;AAClE,QAAM,iBAAiB,WAAW,GAAG,GAAG,eAAe,IAAI,KAAK,MAAM,aAAa,GAAG,GAAG,iBAAiB,EAAE,UAAU,OAAO,CAAC,CAAC,IAAI;AACnI,QAAM,CAAC,WAAW,SAAS,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC/C,SAAS,GAAG,GAAG,QAAQ;AAAA,MACrB;AAAA,MACA,gBAAgB,CAAC,GAAG,0BAA0B,GAAG,qBAAqB;AAAA,MACtE,SAAS;AAAA,IACX,CAAC;AAAA,IACD,SAAS,GAAG,GAAG,MAAM;AAAA,MACnB,eAAe,CAAC,GAAG,eAAe,GAAG,oBAAoB;AAAA,MACzD,gBAAgB,CAAC,GAAG,qBAAqB;AAAA,MACzC,SAAS;AAAA,MACT,UAAU,CAAC,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,KAAK,QAAQ,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IACtG,CAAC;AAAA,EACH,CAAC;AAED,QAAM,aAAa,UAAU;AAC7B,QAAM,gBAAgB,UAAU;AAChC,QAAM,WAAW,UAAU;AAC3B,QAAM,cAAc,UAAU;AAC9B,QAAM,UAAU,EAAE,GAAG,UAAU,SAAS,GAAG,UAAU,QAAQ;AAC7D,QAAM,EAAE,aAAa,aAAa,IAAI;AAEtC,SAAO,EAAE,aAAa,cAAc,SAAS,YAAY,eAAe,UAAU,YAAY;AAChG;AAEO,MAAM,cAAc,YAAY;AACrC,QAAM,MAAM,QAAQ,IAAI,YAAY,IAAI;AACxC,QAAM,UAAU,QAAQ,IAAI;AAE5B,QAAM,iBAAiB,WAAW,GAAG,GAAG,eAAe,IAAI,KAAK,MAAM,aAAa,GAAG,GAAG,iBAAiB,EAAE,UAAU,OAAO,CAAC,CAAC,IAAI;AAEnI,QAAM,YAAY,WAAW,GAAG,GAAG,cAAc,IAC7C,aAAa,GAAG,GAAG,gBAAgB,EAAE,UAAU,OAAO,CAAC,EAAE,QAAQ,YAAY,YAAY,IACzF;AACJ,MAAI,gBAA0B,CAAC;AAC/B,MAAI;AACF,oBAAgB,YAAa,KAAK,MAAM,IAAI,SAAS,GAAG,EAAE,UAAuB,CAAC;AAAA,EACpF,SAAS,IAAI;AACX,UAAM,QAAQ;AACd,YAAQ,IAAI,GAAG,OAAO,KAAK,MAAM,OAAO,kCAAkC,SAAS,GAAG;AAAA,EACxF;AAEA,QAAM,EAAE,aAAa,cAAc,YAAY,eAAe,UAAU,aAAa,QAAQ,IAAI,MAAM,YAAY,KAAK,aAAa;AAErI,QAAM,eAAe,OAAO,KAAK,eAAe,gBAAgB,CAAC,CAAC;AAClE,QAAM,mBAAmB,OAAO,KAAK,eAAe,oBAAoB,CAAC,CAAC;AAC1E,QAAM,kBAAkB,OAAO,KAAK,eAAe,mBAAmB,CAAC,CAAC;AAExE,QAAM,cAAc,OAAO,KAAK,QAAQ,EAAE;AAAA,IACxC,CAAC,QAAQ,CAAC,aAAa,SAAS,GAAG,KAAK,CAAC,iBAAiB,SAAS,GAAG,KAAK,CAAC,IAAI,WAAW,SAAS;AAAA,EACtG;AAEA,QAAM,iBAAiB,OAAO,KAAK,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,SAAS,GAAG,KAAK,CAAC,aAAa,SAAS,GAAG,CAAC;AAE7H,QAAM,oBAA8C,CAAC;AACrD,cAAY,QAAQ,CAAC,QAAQ;AAC3B,sBAAkB,GAAG,IAAI,QAAQ,GAAG,KAAK,CAAC,yBAAyB,GAAG,GAAG;AAAA,EAC3E,CAAC;AAED,QAAM,uBAAiD,CAAC;AACxD,iBAAe,QAAQ,CAAC,QAAQ;AAC9B,QAAI,QAAQ,GAAG,GAAG;AAChB,2BAAqB,GAAG,IAAI,QAAQ,GAAG;AAAA,IACzC;AAAA,EACF,CAAC;AAED,QAAM,cAAc;AAAA,IAClB,WAAW;AAAA,IACX,cAAc;AAAA,IACd,OAAO,QAAQ,WAAW,EAAE;AAAA,IAC5B,OAAO,QAAQ,YAAY,EAAE;AAAA,IAC7B,OAAO,QAAQ,iBAAiB,EAAE;AAAA,IAClC,OAAO,QAAQ,oBAAoB,EAAE;AAAA,EACvC;AAEA,QAAM,aAAa,YAAY,OAAO,CAAC,MAAM,UAAU,OAAO,OAAO,CAAC;AAEtE,MAAI,aAAa,GAAG;AAClB,YAAQ,IAAI,SAAS,OAAO,QAAQ,KAAK,UAAU,WAAW,CAAC,GAAG;AAAA,EACpE,OAAO;AACL,YAAQ,IAAI,SAAS,OAAO,QAAQ;AAAA,EACtC;AAEA,eAAa,gBAAgB,UAAU;AACvC,eAAa,mBAAmB,aAAa;AAE7C,MAAI,OAAO,QAAQ,WAAW,EAAE,QAAQ;AACtC,WAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,QAAQ,KAAK,MAAM,KAAK,gBAAgB,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;AAAA,EACjH;AAEA,MAAI,OAAO,QAAQ,YAAY,EAAE,QAAQ;AACvC,WAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM,QAAQ,KAAK,MAAM,KAAK,iBAAiB,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;AAAA,EACnH;AAEA,gBAAc,gBAAgB,iBAAiB;AAC/C,gBAAc,mBAAmB,oBAAoB;AAErD,cAAY,SAAS,OAAO,KAAK,YAAY,QAAQ,KAAK;AAG1D,SAAO;AACT;","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.40",
67
+ "@xylabs/tsconfig": "~3.2.41",
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.40",
116
- "@xylabs/tsconfig": "~3.2.40",
115
+ "@xylabs/eslint-config": "~3.2.41",
116
+ "@xylabs/tsconfig": "~3.2.41",
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.40",
172
+ "version": "3.2.41",
173
173
  "type": "commonjs"
174
174
  }
@@ -93,9 +93,7 @@ export const packageDeps = async () => {
93
93
 
94
94
  const missingDepsObject: Record<string, string[]> = {}
95
95
  missingDeps.forEach((key) => {
96
- if (missing[key]) {
97
- missingDepsObject[key] = missing[key]
98
- }
96
+ missingDepsObject[key] = missing[key] ?? [`devDep should be dep [${key}]`]
99
97
  })
100
98
 
101
99
  const missingDevDepsObject: Record<string, string[]> = {}