@xylabs/ts-scripts-yarn3 6.4.2 → 6.4.3

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.
@@ -242,7 +242,7 @@ function getBasePackageName(importName) {
242
242
  }
243
243
  return importName.split("/")[0];
244
244
  }
245
- function getImportsFromFile(filePath, importPaths) {
245
+ function getImportsFromFile(filePath, importPaths, typeImportPaths) {
246
246
  const sourceCode = fs.readFileSync(filePath, "utf8");
247
247
  const sourceFile = ts.createSourceFile(
248
248
  path.basename(filePath),
@@ -251,24 +251,41 @@ function getImportsFromFile(filePath, importPaths) {
251
251
  true
252
252
  );
253
253
  const imports = [];
254
+ const typeImports = [];
254
255
  function visit(node) {
255
256
  if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
256
257
  const moduleSpecifier = node.moduleSpecifier?.getFullText();
258
+ const isTypeImport = ts.isImportDeclaration(node) ? node.importClause?.isTypeOnly ?? false : false;
257
259
  if (moduleSpecifier) {
258
260
  const trimmed = moduleSpecifier.split("'").at(1) ?? moduleSpecifier;
261
+ if (isTypeImport) {
262
+ typeImports.push(trimmed);
263
+ } else {
264
+ imports.push(trimmed);
265
+ }
266
+ }
267
+ } else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {
268
+ const [arg] = node.arguments;
269
+ if (ts.isStringLiteral(arg)) {
270
+ const trimmed = arg.text;
259
271
  imports.push(trimmed);
260
272
  }
261
273
  }
262
274
  ts.forEachChild(node, visit);
263
275
  }
264
276
  visit(sourceFile);
265
- const importsStartsWithExcludes = [".", "#", "node:", "@types/"];
277
+ const importsStartsWithExcludes = [".", "#", "node:"];
266
278
  const cleanedImports = imports.filter((imp) => !importsStartsWithExcludes.some((exc) => imp.startsWith(exc))).map(getBasePackageName);
279
+ const cleanedTypeImports = typeImports.filter((imp) => !importsStartsWithExcludes.some((exc) => imp.startsWith(exc))).map(getBasePackageName);
267
280
  for (const imp of cleanedImports) {
268
281
  importPaths[imp] = importPaths[imp] || [];
269
282
  importPaths[imp].push(filePath);
270
283
  }
271
- return cleanedImports;
284
+ for (const imp of cleanedTypeImports) {
285
+ typeImportPaths[imp] = typeImportPaths[imp] || [];
286
+ typeImportPaths[imp].push(filePath);
287
+ }
288
+ return [cleanedImports, cleanedTypeImports];
272
289
  }
273
290
  function findFilesByGlob(cwd, pattern) {
274
291
  return globSync(pattern, { cwd, absolute: true });
@@ -288,10 +305,17 @@ function findFiles(path2) {
288
305
  }
289
306
  function getExternalImportsFromFiles({ prodSourceFiles, devSourceFiles }) {
290
307
  const prodImportPaths = {};
291
- const prodImports = prodSourceFiles.flatMap((path2) => getImportsFromFile(path2, prodImportPaths));
308
+ const prodTypeImportPaths = {};
309
+ const prodImportPairs = prodSourceFiles.map((path2) => getImportsFromFile(path2, prodImportPaths, prodTypeImportPaths));
310
+ const prodImports = prodImportPairs.flatMap((pair) => pair[0]);
311
+ const prodTypeImports = prodImportPairs.flatMap((pair) => pair[1]);
292
312
  const devImportPaths = {};
293
- const devImports = devSourceFiles.flatMap((path2) => getImportsFromFile(path2, devImportPaths));
313
+ const devTypeImportPaths = {};
314
+ const devImportPairs = devSourceFiles.map((path2) => getImportsFromFile(path2, devImportPaths, devTypeImportPaths));
315
+ const devImports = devImportPairs.flatMap((pair) => pair[0]);
316
+ const devTypeImports = devImportPairs.flatMap((pair) => pair[1]);
294
317
  const externalProdImports = prodImports.filter((imp) => !imp.startsWith(".") && !imp.startsWith("#") && !imp.startsWith("node:"));
318
+ const externalProdTypeImports = prodTypeImports.filter((imp) => !imp.startsWith(".") && !imp.startsWith("#") && !imp.startsWith("node:"));
295
319
  const externalDevImports = devImports.filter((imp) => !imp.startsWith(".") && !imp.startsWith("#") && !imp.startsWith("node:"));
296
320
  return {
297
321
  prodImports,
@@ -299,7 +323,10 @@ function getExternalImportsFromFiles({ prodSourceFiles, devSourceFiles }) {
299
323
  prodImportPaths,
300
324
  devImportPaths,
301
325
  externalProdImports,
302
- externalDevImports
326
+ externalDevImports,
327
+ prodTypeImports,
328
+ devTypeImports,
329
+ externalProdTypeImports
303
330
  };
304
331
  }
305
332
  function check({
@@ -311,6 +338,7 @@ function check({
311
338
  const { prodSourceFiles, devSourceFiles } = findFiles(location);
312
339
  const {
313
340
  prodImportPaths,
341
+ externalProdTypeImports,
314
342
  devImportPaths,
315
343
  externalProdImports,
316
344
  externalDevImports
@@ -323,6 +351,15 @@ function check({
323
351
  let unlistedDependencies = 0;
324
352
  let unlistedDevDependencies = 0;
325
353
  let unusedDependencies = 0;
354
+ let typesInDependencies = 0;
355
+ for (const imp of externalProdTypeImports) {
356
+ if (!dependencies.includes(imp) && !peerDependencies.includes(imp) && !devDependencies.includes(imp) && !devDependencies.includes(`@types/${imp}`)) {
357
+ unlistedDependencies++;
358
+ console.log(`[${chalk5.blue(name)}] Missing dependency in package.json: ${chalk5.red(imp)}`);
359
+ console.log(` ${prodImportPaths[imp].join("\n")}`);
360
+ console.log("");
361
+ }
362
+ }
326
363
  for (const imp of externalProdImports) {
327
364
  if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {
328
365
  unlistedDependencies++;
@@ -332,6 +369,13 @@ function check({
332
369
  }
333
370
  }
334
371
  for (const dep of dependencies) {
372
+ if (dep.startsWith("@types/")) {
373
+ typesInDependencies++;
374
+ console.log(`[${chalk5.blue(name)}] @types in dependencies in package.json: ${chalk5.red(dep)}`);
375
+ console.log(` ${location}/package.json
376
+ `);
377
+ console.log("");
378
+ }
335
379
  if (!externalProdImports.includes(dep)) {
336
380
  unusedDependencies++;
337
381
  console.log(`[${chalk5.blue(name)}] Unused dependency in package.json: ${chalk5.red(dep)}`);
@@ -360,7 +404,7 @@ function check({
360
404
  }
361
405
  }
362
406
  }
363
- const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies;
407
+ const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + typesInDependencies;
364
408
  return totalErrors;
365
409
  }
366
410
  var deplint = ({ pkg }) => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/xy/xyLintCommands.ts","../../src/lib/checkResult.ts","../../src/lib/processEx.ts","../../src/lib/withError.ts","../../src/lib/withErrnoException.ts","../../src/lib/safeExit.ts","../../src/lib/yarn/workspace/yarnWorkspaces.ts","../../src/lib/yarn/workspace/yarnWorkspace.ts","../../src/lib/runSteps.ts","../../src/lib/runStepsAsync.ts","../../src/actions/cycle.ts","../../src/actions/deplint.ts","../../src/actions/lint.ts","../../src/actions/fix.ts","../../src/actions/knip.ts","../../src/actions/publint.ts","../../src/actions/relint.ts","../../src/actions/sonar.ts","../../src/xy/param.ts"],"sourcesContent":["import chalk from 'chalk'\nimport type { Argv } from 'yargs'\n\nimport {\n cycle, deplint, fix, knip, lint, publint, relint, sonar,\n} from '../actions/index.ts'\nimport { packagePositionalParam } from './param.ts'\n\nexport const xyLintCommands = (args: Argv) => {\n return args\n .command(\n 'cycle [package]',\n 'Cycle - Check for dependency cycles',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n async (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Cycle')\n process.exitCode = await cycle({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'lint [package]',\n 'Lint - Run Eslint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Lint')\n const start = Date.now()\n process.exitCode\n = argv.fix\n ? fix({ pkg: argv.package as string })\n : lint({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'deplint [package]',\n 'Deplint - Run Deplint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Deplint')\n const start = Date.now()\n process.exitCode = deplint({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'fix [package]',\n 'Fix - Run Eslint w/fix',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Fix')\n process.exitCode = fix()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'relint [package]',\n 'Relint - Clean & Lint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Relinting')\n const start = Date.now()\n process.exitCode = relint()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'publint [package]',\n 'Publint - Run Publint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n async (argv) => {\n if (argv.verbose) console.log('Publint')\n const start = Date.now()\n process.exitCode = await publint({ pkg: argv.package as string, verbose: !!argv.verbose })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'knip',\n 'Knip - Run Knip',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Knip')\n const start = Date.now()\n process.exitCode = knip()\n console.log(chalk.blue(`Knip finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'sonar',\n 'Sonar - Run Sonar Check',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Sonar Check')\n process.exitCode = sonar()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n}\n","import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { spawnSync } from 'node:child_process'\n\nimport type { Workspace } from './Workspace.ts'\n\nexport const yarnWorkspaces = (): Workspace[] => {\n const result = spawnSync('yarn', ['workspaces', 'list', '--json', '--recursive'], { encoding: 'utf8', shell: true })\n if (result.error) {\n throw result.error\n }\n return (\n result.stdout\n .toString()\n // NOTE: This probably doesn't work on Windows\n // TODO: Replace /r/n with /n first\n .split('\\n')\n .slice(0, -1)\n .map((item) => {\n return JSON.parse(item)\n })\n )\n}\n","import type { Workspace } from './Workspace.ts'\nimport { yarnWorkspaces } from './yarnWorkspaces.ts'\n\nexport const yarnWorkspace = (pkg: string): Workspace => {\n const workspace = yarnWorkspaces().find(({ name }) => name === pkg)\n if (!workspace) throw new Error(`Workspace ${pkg} not found`)\n return workspace\n}\n","import type { SpawnSyncOptionsWithBufferEncoding } from 'node:child_process'\nimport { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { checkResult } from './checkResult.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport type ScriptStep =\n | [/* command */ 'yarn' | 'node' | 'ts-node-script' | 'tsc' | 'jest', /* arg */ string | string[]]\n | [/* command */ string, /* arg */ string | string[], /* config */ SpawnSyncOptionsWithBufferEncoding]\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import { spawn } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { checkResult } from './checkResult.ts'\nimport type { ScriptStep } from './runSteps.ts'\nimport { safeExitAsync } from './safeExit.ts'\n\nexport const runStepAsync = (name: string, step: ScriptStep, exitOnFail = true, message?: string) => {\n return new Promise<number>((resolve) => {\n const [command, args, config] = step\n if (message) {\n console.log(chalk.gray(message))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n spawn(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).on('close', (code) => {\n if (code) {\n console.error(\n chalk.red(\n `Command Exited With Non-Zero Result [${chalk.gray(code)}] | ${chalk.yellow(command)} ${chalk.white(\n Array.isArray(args) ? args.join(' ') : args,\n )}`,\n ),\n )\n checkResult(name, code, 'error', exitOnFail)\n resolve(code)\n } else {\n resolve(0)\n }\n })\n })\n}\n\nexport const runStepsAsync = async (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]) => {\n return await safeExitAsync(async () => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let result = 0\n for (const [i, step] of steps.entries()) {\n result += await runStepAsync(name, step, exitOnFail, messages?.[i])\n }\n return result\n })\n}\n","import { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface CycleParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n verbose?: boolean\n}\n\ninterface CyclePackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const cycle = async ({ verbose, pkg }: CycleParams = {}) => {\n return pkg\n ? cyclePackage({ pkg, verbose })\n : await cycleAll({ verbose })\n}\n\nexport const cyclePackage = ({ pkg, verbose }: CyclePackageParams) => {\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n return runSteps(\n `Cycle [${pkg}]`,\n [['yarn', ['workspace', pkg, 'run', 'package-cycle', ...verboseOptions]]],\n )\n}\n\nexport const cycleAll = async ({ verbose = false }: { verbose?: boolean }) => {\n const pkgName = process.env.npm_package_name\n\n const cruiseOptions: ICruiseOptions = {\n ruleSet: {\n forbidden: [\n {\n name: 'no-circular',\n severity: 'error',\n comment: 'This dependency creates a circular reference',\n from: {},\n to: { circular: true },\n },\n ],\n },\n exclude: 'node_modules|packages/.*/packages',\n validate: true,\n doNotFollow: { path: 'node_modules|packages/.*/packages' },\n tsPreCompilationDeps: false,\n combinedDependencies: true,\n outputType: verbose ? 'text' : 'err',\n }\n\n const target = '**/src'\n\n console.log(`Checking for circular dependencies in ${target}...`)\n\n const result = await cruise([target], cruiseOptions)\n if (result.output) {\n console.log(result.output)\n }\n\n if (result.exitCode === 0) {\n console.log(`${pkgName} ✅ No dependency violations`)\n } else {\n console.error(`${pkgName} ❌ Dependency violations found`)\n }\n return result.exitCode\n}\n","/* eslint-disable max-statements */\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\nimport ts from 'typescript'\n\nimport { yarnWorkspace, yarnWorkspaces } from '../lib/index.ts'\n\nfunction getDependenciesFromPackageJson(packageJsonPath: string) {\n const packageJsonFullPath = path.resolve(packageJsonPath)\n const rawContent = fs.readFileSync(packageJsonFullPath, 'utf8')\n const packageJson = JSON.parse(rawContent)\n\n const dependencies = packageJson.dependencies\n ? Object.keys(packageJson.dependencies)\n : []\n\n const devDependencies = packageJson.devDependencies\n ? Object.keys(packageJson.devDependencies)\n : []\n\n const peerDependencies = packageJson.peerDependencies\n ? Object.keys(packageJson.peerDependencies)\n : []\n\n return {\n dependencies, devDependencies, peerDependencies,\n }\n}\n\nfunction getBasePackageName(importName: string) {\n if (importName.startsWith('@')) {\n const parts = importName.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importName\n }\n return importName.split('/')[0]\n}\n\nfunction getImportsFromFile(filePath: string, importPaths: Record<string, string[]>) {\n const sourceCode = fs.readFileSync(filePath, 'utf8')\n\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n )\n\n const imports: string[] = []\n\n function visit(node: ts.Node) {\n if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n const moduleSpecifier = (node.moduleSpecifier)?.getFullText()\n if (moduleSpecifier) {\n const trimmed = moduleSpecifier.split(\"'\").at(1) ?? moduleSpecifier\n imports.push(trimmed)\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n\n const importsStartsWithExcludes = ['.', '#', 'node:', '@types/']\n\n const cleanedImports = imports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n\n for (const imp of cleanedImports) {\n importPaths[imp] = importPaths[imp] || []\n importPaths[imp].push(filePath)\n }\n\n return cleanedImports\n}\n\nfunction findFilesByGlob(cwd: string, pattern: string) {\n return globSync(pattern, { cwd, absolute: true })\n}\n\nfunction findFiles(path: string) {\n const allSourceInclude = ['./src/**/*.{ts,tsx}']\n const prodExcludeEndswith = ['.spec.ts', '.stories.tsx']\n const prodExcludeIncludes = ['/spec/', '/stories/', '/scripts/']\n const allSourceFiles = allSourceInclude.flatMap(pattern => findFilesByGlob(path, pattern))\n\n const prodSourceFiles = allSourceFiles.filter(file => !prodExcludeEndswith.some(ext => file.endsWith(ext))\n && !prodExcludeIncludes.some(excl => file.includes(excl)))\n\n const devSourceFiles = allSourceFiles.filter(file => !prodSourceFiles.includes(file))\n return {\n allSourceFiles, prodSourceFiles, devSourceFiles,\n }\n}\n\nfunction getExternalImportsFromFiles({ prodSourceFiles, devSourceFiles }: { devSourceFiles: string[]; prodSourceFiles: string[] }) {\n const prodImportPaths: Record<string, string[]> = {}\n const prodImports = prodSourceFiles.flatMap(path => getImportsFromFile(path, prodImportPaths))\n const devImportPaths: Record<string, string[]> = {}\n const devImports = devSourceFiles.flatMap(path => getImportsFromFile(path, devImportPaths))\n const externalProdImports = prodImports.filter(imp => !imp.startsWith('.') && !imp.startsWith('#') && !imp.startsWith('node:'))\n const externalDevImports = devImports.filter(imp => !imp.startsWith('.') && !imp.startsWith('#') && !imp.startsWith('node:'))\n return {\n prodImports, devImports, prodImportPaths, devImportPaths, externalProdImports, externalDevImports,\n }\n}\n\nfunction check({\n name, location, devDeps = false, peerDeps = false,\n}: { devDeps?: boolean; location: string; name: string; peerDeps?: boolean }) {\n const { prodSourceFiles, devSourceFiles } = findFiles(location)\n const {\n prodImportPaths, devImportPaths, externalProdImports, externalDevImports,\n } = getExternalImportsFromFiles({ prodSourceFiles, devSourceFiles })\n\n const {\n dependencies, devDependencies, peerDependencies,\n } = getDependenciesFromPackageJson(`${location}/package.json`)\n\n let unlistedDependencies = 0\n let unlistedDevDependencies = 0\n let unusedDependencies = 0\n\n for (const imp of externalProdImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${prodImportPaths[imp].join('\\n')}`)\n console.log('')\n }\n }\n\n for (const dep of dependencies) {\n if (!externalProdImports.includes(dep)) {\n unusedDependencies++\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n }\n\n if (peerDeps) {\n for (const dep of peerDependencies) {\n if (!externalProdImports.includes(dep)) {\n unusedDependencies++\n console.log(`[${chalk.blue(name)}] Unused peerDependency in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n }\n }\n\n if (devDeps) {\n for (const imp of externalDevImports) {\n if (!devDependencies.includes(imp)) {\n unlistedDevDependencies++\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n console.log(` Found in: ${devImportPaths[imp].join(', ')}`)\n }\n }\n }\n\n const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies\n\n return totalErrors\n}\n\nexport const deplint = ({ pkg }: { pkg: string }) => {\n if (pkg) {\n const { location, name } = yarnWorkspace(pkg)\n\n console.log(`Running Deplint for ${name}`)\n check({\n name, location, devDeps: true,\n })\n } else {\n const workspaces = yarnWorkspaces()\n\n console.log('Deplint Started...')\n\n let totalErrors = 0\n\n for (const workspace of workspaces) {\n totalErrors += check(workspace)\n }\n\n if (totalErrors > 0) {\n console.log(`Found ${chalk.red(totalErrors)} unlisted imports.`)\n } else {\n console.log(`No unlisted imports found. ${chalk.green('✔')}`)\n }\n }\n return 0\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface LintParams {\n fix?: boolean\n incremental?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface LintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const lintPackage = ({ pkg, fix }: LintParams & Required<Pick<LintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n ['yarn', ['workspace',\n pkg,\n 'run',\n fix ? 'package-fix' : 'package-lint',\n ]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const lint = ({\n pkg, verbose, incremental, fix,\n}: LintParams = {}) => {\n return pkg\n ? lintPackage({ pkg, fix })\n : lintAllPackages({\n verbose, incremental, fix,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: LintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['yarn', ['eslint', ...fixOptions]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import type { LintParams } from './lint.ts'\nimport { lint } from './lint.ts'\n\nexport const fix = (params?: LintParams) => {\n return lint({ ...params, fix: true })\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const knip = () => {\n return runSteps('Knip', [['yarn', ['knip', '--dependencies', '--no-exit-code']]])\n}\n","import { runSteps, runStepsAsync } from '../lib/index.ts'\n\nexport interface PublintParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const publint = async ({ verbose, pkg }: PublintParams) => {\n return pkg\n ? await publintPackage({ pkg, verbose })\n : publintAll({ verbose })\n}\n\nexport const publintPackage = ({ pkg }: PublintPackageParams) => {\n return runStepsAsync(`Publint [${pkg}]`, [['yarn', ['workspace', pkg, 'run', 'package-publint']]])\n}\n\nexport const publintAll = ({ verbose }: PublintParams) => {\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n return runSteps('Publint', [['yarn', ['workspaces', 'foreach', '-pA', ...verboseOptions, 'run', 'package-publint']]])\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface RelintParams {\n incremental?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface RelintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const relintPackage = ({ pkg }: RelintParams & Required<Pick<RelintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${'Relint'} [All-Packages]`))\n const start = Date.now()\n\n const result = runSteps('Relint [All-Packages]', [\n ['yarn', ['workspace',\n pkg,\n 'run',\n 'package-relint',\n ]],\n ])\n console.log(chalk.gray(`${'Relinted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const relint = ({\n pkg, verbose, incremental,\n}: RelintParams = {}) => {\n return pkg\n ? relintPackage({ pkg })\n : relintAllPackages({ verbose, incremental })\n}\n\nexport const relintAllPackages = ({ verbose = true, incremental }: RelintParams = {}) => {\n console.log(chalk.gray(`${'Relint'} [All-Packages]`))\n const start = Date.now()\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n\n const result = runSteps(`${'Relint'} [All-Packages]`, [\n ['yarn', ['workspaces',\n 'foreach',\n ...verboseOptions,\n ...incrementalOptions,\n 'run',\n 'package-relint',\n ]],\n ])\n console.log(chalk.gray(`Relinted in [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['yarn', ['eslint', '-c', 'sonar.eslintrc', '.']]])\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target' })\n}\n"],"mappings":"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","names":["chalk","chalk","ex","ex","error","chalk","spawnSync","chalk","chalk","spawnSync","existsSync","chalk","chalk","existsSync","chalk","path","chalk","chalk","fix","chalk","chalk","chalk","chalk"]}
1
+ {"version":3,"sources":["../../src/xy/xyLintCommands.ts","../../src/lib/checkResult.ts","../../src/lib/processEx.ts","../../src/lib/withError.ts","../../src/lib/withErrnoException.ts","../../src/lib/safeExit.ts","../../src/lib/yarn/workspace/yarnWorkspaces.ts","../../src/lib/yarn/workspace/yarnWorkspace.ts","../../src/lib/runSteps.ts","../../src/lib/runStepsAsync.ts","../../src/actions/cycle.ts","../../src/actions/deplint.ts","../../src/actions/lint.ts","../../src/actions/fix.ts","../../src/actions/knip.ts","../../src/actions/publint.ts","../../src/actions/relint.ts","../../src/actions/sonar.ts","../../src/xy/param.ts"],"sourcesContent":["import chalk from 'chalk'\nimport type { Argv } from 'yargs'\n\nimport {\n cycle, deplint, fix, knip, lint, publint, relint, sonar,\n} from '../actions/index.ts'\nimport { packagePositionalParam } from './param.ts'\n\nexport const xyLintCommands = (args: Argv) => {\n return args\n .command(\n 'cycle [package]',\n 'Cycle - Check for dependency cycles',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n async (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Cycle')\n process.exitCode = await cycle({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'lint [package]',\n 'Lint - Run Eslint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Lint')\n const start = Date.now()\n process.exitCode\n = argv.fix\n ? fix({ pkg: argv.package as string })\n : lint({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'deplint [package]',\n 'Deplint - Run Deplint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Deplint')\n const start = Date.now()\n process.exitCode = deplint({ pkg: argv.package as string })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'fix [package]',\n 'Fix - Run Eslint w/fix',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Fix')\n process.exitCode = fix()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'relint [package]',\n 'Relint - Clean & Lint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Relinting')\n const start = Date.now()\n process.exitCode = relint()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'publint [package]',\n 'Publint - Run Publint',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n async (argv) => {\n if (argv.verbose) console.log('Publint')\n const start = Date.now()\n process.exitCode = await publint({ pkg: argv.package as string, verbose: !!argv.verbose })\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'knip',\n 'Knip - Run Knip',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n if (argv.verbose) console.log('Knip')\n const start = Date.now()\n process.exitCode = knip()\n console.log(chalk.blue(`Knip finished in ${Date.now() - start}ms`))\n },\n )\n .command(\n 'sonar',\n 'Sonar - Run Sonar Check',\n (yargs) => {\n return packagePositionalParam(yargs)\n },\n (argv) => {\n const start = Date.now()\n if (argv.verbose) console.log('Sonar Check')\n process.exitCode = sonar()\n console.log(chalk.blue(`Finished in ${Date.now() - start}ms`))\n },\n )\n}\n","import chalk from 'chalk'\n\nexport const checkResult = (name: string, result: number, level: 'error' | 'warn' = 'error', exitOnFail = false) => {\n if (result) {\n const exiting = exitOnFail ? '[Exiting Process]' : '[Continuing]'\n const chalkFunc = level === 'error' ? chalk.red : chalk.yellow\n console[level](chalkFunc(`${name} had ${result} failures ${exiting}`))\n if (exitOnFail) {\n process.exit(result)\n }\n }\n}\n","import chalk from 'chalk'\n\nimport { withErrnoException } from './withErrnoException.ts'\nimport { withError } from './withError.ts'\n\nexport const processEx = (ex: unknown) => {\n const error = typeof ex === 'string' ? new Error(ex) : ex\n const exitCode\n = withErrnoException(error, (error) => {\n if (error.code === 'ENOENT') {\n console.error(chalk.red(`'${error.path}' not found.`))\n } else {\n console.error(chalk.red(`Errno: ${error.code}`))\n }\n return error.errno ?? -1\n })\n ?? withError(error, (error) => {\n console.error(chalk.red(`${error.name}: ${error.message}`))\n return -1\n })\n ?? (() => {\n console.error(chalk.red(`Unexpected Error: ${JSON.stringify(ex, null, 2)}`))\n return -1\n })()\n // This allows us to use a previously set exit code\n process.exit(process.exitCode ?? exitCode)\n}\n","export const withError = <T extends Error = Error>(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ex: any,\n closure: (error: T) => number,\n predicate = (ex: T) => (!!ex.name && !!ex.message),\n) => {\n return predicate(ex as T) ? closure(ex as T) : undefined\n}\n","import { withError } from './withError.ts'\n\nexport const withErrnoException = <T extends NodeJS.ErrnoException = NodeJS.ErrnoException>(\n ex: unknown, closure: (error: T) => number,\n) => {\n return withError<T>(ex, closure, (ex: unknown) => (ex as NodeJS.ErrnoException).errno !== undefined)\n}\n","/** Catch child process a crash and returns the code */\n\nimport { processEx } from './processEx.ts'\n\nconst safeExit = (func: () => number, exitOnFail = true): number => {\n try {\n const result = func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nconst safeExitAsync = async (func: () => Promise<number>, exitOnFail = true): Promise<number> => {\n try {\n const result = await func()\n if (result && exitOnFail) {\n process.exit(result)\n }\n return result\n } catch (ex) {\n return processEx(ex)\n }\n}\n\nexport { safeExit, safeExitAsync }\n","import { spawnSync } from 'node:child_process'\n\nimport type { Workspace } from './Workspace.ts'\n\nexport const yarnWorkspaces = (): Workspace[] => {\n const result = spawnSync('yarn', ['workspaces', 'list', '--json', '--recursive'], { encoding: 'utf8', shell: true })\n if (result.error) {\n throw result.error\n }\n return (\n result.stdout\n .toString()\n // NOTE: This probably doesn't work on Windows\n // TODO: Replace /r/n with /n first\n .split('\\n')\n .slice(0, -1)\n .map((item) => {\n return JSON.parse(item)\n })\n )\n}\n","import type { Workspace } from './Workspace.ts'\nimport { yarnWorkspaces } from './yarnWorkspaces.ts'\n\nexport const yarnWorkspace = (pkg: string): Workspace => {\n const workspace = yarnWorkspaces().find(({ name }) => name === pkg)\n if (!workspace) throw new Error(`Workspace ${pkg} not found`)\n return workspace\n}\n","import type { SpawnSyncOptionsWithBufferEncoding } from 'node:child_process'\nimport { spawnSync } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { checkResult } from './checkResult.ts'\nimport { safeExit } from './safeExit.ts'\n\nexport type ScriptStep =\n | [/* command */ 'yarn' | 'node' | 'ts-node-script' | 'tsc' | 'jest', /* arg */ string | string[]]\n | [/* command */ string, /* arg */ string | string[], /* config */ SpawnSyncOptionsWithBufferEncoding]\n\nexport const runSteps = (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]): number => {\n return safeExit(() => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let totalStatus = 0\n for (const [i, [command, args, config]] of steps.entries()) {\n if (messages?.[i]) {\n console.log(chalk.gray(messages?.[i]))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n const status\n = spawnSync(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n encoding: 'utf8',\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).status ?? 0\n checkResult(name, status, 'error', exitOnFail)\n totalStatus += status ?? 0\n }\n return totalStatus\n }, !!exitOnFail)\n}\n","import { spawn } from 'node:child_process'\nimport { existsSync } from 'node:fs'\n\nimport chalk from 'chalk'\n\nimport { checkResult } from './checkResult.ts'\nimport type { ScriptStep } from './runSteps.ts'\nimport { safeExitAsync } from './safeExit.ts'\n\nexport const runStepAsync = (name: string, step: ScriptStep, exitOnFail = true, message?: string) => {\n return new Promise<number>((resolve) => {\n const [command, args, config] = step\n if (message) {\n console.log(chalk.gray(message))\n }\n const argList = Array.isArray(args) ? args : args.split(' ')\n if (command === 'node' && !existsSync(argList[0])) {\n throw new Error(`File not found [${argList[0]}]`)\n }\n spawn(command, Array.isArray(args) ? args : args.split(' '), {\n ...config,\n env: { FORCE_COLOR: '3', ...process.env },\n shell: true,\n stdio: 'inherit',\n }).on('close', (code) => {\n if (code) {\n console.error(\n chalk.red(\n `Command Exited With Non-Zero Result [${chalk.gray(code)}] | ${chalk.yellow(command)} ${chalk.white(\n Array.isArray(args) ? args.join(' ') : args,\n )}`,\n ),\n )\n checkResult(name, code, 'error', exitOnFail)\n resolve(code)\n } else {\n resolve(0)\n }\n })\n })\n}\n\nexport const runStepsAsync = async (name: string, steps: ScriptStep[], exitOnFail = true, messages?: string[]) => {\n return await safeExitAsync(async () => {\n const pkgName = process.env.npm_package_name\n console.log(chalk.green(`${name} [${pkgName}]`))\n let result = 0\n for (const [i, step] of steps.entries()) {\n result += await runStepAsync(name, step, exitOnFail, messages?.[i])\n }\n return result\n })\n}\n","import { cruise, type ICruiseOptions } from 'dependency-cruiser'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface CycleParams {\n incremental?: boolean\n jobs?: number\n pkg?: string\n verbose?: boolean\n}\n\ninterface CyclePackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const cycle = async ({ verbose, pkg }: CycleParams = {}) => {\n return pkg\n ? cyclePackage({ pkg, verbose })\n : await cycleAll({ verbose })\n}\n\nexport const cyclePackage = ({ pkg, verbose }: CyclePackageParams) => {\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n return runSteps(\n `Cycle [${pkg}]`,\n [['yarn', ['workspace', pkg, 'run', 'package-cycle', ...verboseOptions]]],\n )\n}\n\nexport const cycleAll = async ({ verbose = false }: { verbose?: boolean }) => {\n const pkgName = process.env.npm_package_name\n\n const cruiseOptions: ICruiseOptions = {\n ruleSet: {\n forbidden: [\n {\n name: 'no-circular',\n severity: 'error',\n comment: 'This dependency creates a circular reference',\n from: {},\n to: { circular: true },\n },\n ],\n },\n exclude: 'node_modules|packages/.*/packages',\n validate: true,\n doNotFollow: { path: 'node_modules|packages/.*/packages' },\n tsPreCompilationDeps: false,\n combinedDependencies: true,\n outputType: verbose ? 'text' : 'err',\n }\n\n const target = '**/src'\n\n console.log(`Checking for circular dependencies in ${target}...`)\n\n const result = await cruise([target], cruiseOptions)\n if (result.output) {\n console.log(result.output)\n }\n\n if (result.exitCode === 0) {\n console.log(`${pkgName} ✅ No dependency violations`)\n } else {\n console.error(`${pkgName} ❌ Dependency violations found`)\n }\n return result.exitCode\n}\n","/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport fs from 'node:fs'\nimport path from 'node:path'\n\nimport chalk from 'chalk'\nimport { globSync } from 'glob'\nimport ts from 'typescript'\n\nimport { yarnWorkspace, yarnWorkspaces } from '../lib/index.ts'\n\nfunction getDependenciesFromPackageJson(packageJsonPath: string) {\n const packageJsonFullPath = path.resolve(packageJsonPath)\n const rawContent = fs.readFileSync(packageJsonFullPath, 'utf8')\n const packageJson = JSON.parse(rawContent)\n\n const dependencies = packageJson.dependencies\n ? Object.keys(packageJson.dependencies)\n : []\n\n const devDependencies = packageJson.devDependencies\n ? Object.keys(packageJson.devDependencies)\n : []\n\n const peerDependencies = packageJson.peerDependencies\n ? Object.keys(packageJson.peerDependencies)\n : []\n\n return {\n dependencies, devDependencies, peerDependencies,\n }\n}\n\nfunction getBasePackageName(importName: string) {\n if (importName.startsWith('@')) {\n const parts = importName.split('/')\n return parts.length >= 2 ? `${parts[0]}/${parts[1]}` : importName\n }\n return importName.split('/')[0]\n}\n\nfunction getImportsFromFile(filePath: string, importPaths: Record<string, string[]>, typeImportPaths: Record<string, string[]>) {\n const sourceCode = fs.readFileSync(filePath, 'utf8')\n\n const sourceFile = ts.createSourceFile(\n path.basename(filePath),\n sourceCode,\n ts.ScriptTarget.Latest,\n true,\n )\n\n const imports: string[] = []\n const typeImports: string[] = []\n\n function visit(node: ts.Node) {\n if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {\n const moduleSpecifier = (node.moduleSpecifier)?.getFullText()\n const isTypeImport = ts.isImportDeclaration(node) ? (node.importClause?.isTypeOnly ?? false) : false\n if (moduleSpecifier) {\n const trimmed = moduleSpecifier.split(\"'\").at(1) ?? moduleSpecifier\n if (isTypeImport) {\n typeImports.push(trimmed)\n } else {\n imports.push(trimmed)\n }\n }\n } else if (ts.isCallExpression(node) && node.expression.kind === ts.SyntaxKind.ImportKeyword) {\n const [arg] = node.arguments\n if (ts.isStringLiteral(arg)) {\n const trimmed = arg.text\n imports.push(trimmed)\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sourceFile)\n\n const importsStartsWithExcludes = ['.', '#', 'node:']\n\n const cleanedImports = imports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n const cleanedTypeImports = typeImports.filter(imp => !importsStartsWithExcludes.some(exc => imp.startsWith(exc))).map(getBasePackageName)\n\n for (const imp of cleanedImports) {\n importPaths[imp] = importPaths[imp] || []\n importPaths[imp].push(filePath)\n }\n\n for (const imp of cleanedTypeImports) {\n typeImportPaths[imp] = typeImportPaths[imp] || []\n typeImportPaths[imp].push(filePath)\n }\n\n return [cleanedImports, cleanedTypeImports]\n}\n\nfunction findFilesByGlob(cwd: string, pattern: string) {\n return globSync(pattern, { cwd, absolute: true })\n}\n\nfunction findFiles(path: string) {\n const allSourceInclude = ['./src/**/*.{ts,tsx}']\n const prodExcludeEndswith = ['.spec.ts', '.stories.tsx']\n const prodExcludeIncludes = ['/spec/', '/stories/', '/scripts/']\n const allSourceFiles = allSourceInclude.flatMap(pattern => findFilesByGlob(path, pattern))\n\n const prodSourceFiles = allSourceFiles.filter(file => !prodExcludeEndswith.some(ext => file.endsWith(ext))\n && !prodExcludeIncludes.some(excl => file.includes(excl)))\n\n const devSourceFiles = allSourceFiles.filter(file => !prodSourceFiles.includes(file))\n return {\n allSourceFiles, prodSourceFiles, devSourceFiles,\n }\n}\n\nfunction getExternalImportsFromFiles({ prodSourceFiles, devSourceFiles }: { devSourceFiles: string[]; prodSourceFiles: string[] }) {\n const prodImportPaths: Record<string, string[]> = {}\n const prodTypeImportPaths: Record<string, string[]> = {}\n const prodImportPairs = prodSourceFiles.map(path => getImportsFromFile(path, prodImportPaths, prodTypeImportPaths))\n const prodImports = prodImportPairs.flatMap(pair => pair[0])\n const prodTypeImports = prodImportPairs.flatMap(pair => pair[1])\n\n const devImportPaths: Record<string, string[]> = {}\n const devTypeImportPaths: Record<string, string[]> = {}\n const devImportPairs = devSourceFiles.map(path => getImportsFromFile(path, devImportPaths, devTypeImportPaths))\n const devImports = devImportPairs.flatMap(pair => pair[0])\n const devTypeImports = devImportPairs.flatMap(pair => pair[1])\n\n const externalProdImports = prodImports.filter(imp => !imp.startsWith('.') && !imp.startsWith('#') && !imp.startsWith('node:'))\n const externalProdTypeImports = prodTypeImports.filter(imp => !imp.startsWith('.') && !imp.startsWith('#') && !imp.startsWith('node:'))\n const externalDevImports = devImports.filter(imp => !imp.startsWith('.') && !imp.startsWith('#') && !imp.startsWith('node:'))\n return {\n prodImports, devImports, prodImportPaths, devImportPaths, externalProdImports, externalDevImports, prodTypeImports, devTypeImports, externalProdTypeImports,\n }\n}\n\nfunction check({\n name, location, devDeps = false, peerDeps = false,\n}: { devDeps?: boolean; location: string; name: string; peerDeps?: boolean }) {\n const { prodSourceFiles, devSourceFiles } = findFiles(location)\n const {\n prodImportPaths, externalProdTypeImports, devImportPaths, externalProdImports, externalDevImports,\n } = getExternalImportsFromFiles({ prodSourceFiles, devSourceFiles })\n\n const {\n dependencies, devDependencies, peerDependencies,\n } = getDependenciesFromPackageJson(`${location}/package.json`)\n\n let unlistedDependencies = 0\n let unlistedDevDependencies = 0\n let unusedDependencies = 0\n let typesInDependencies = 0\n\n for (const imp of externalProdTypeImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp) && !devDependencies.includes(imp) && !devDependencies.includes(`@types/${imp}`)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${prodImportPaths[imp].join('\\n')}`)\n console.log('')\n }\n }\n\n for (const imp of externalProdImports) {\n if (!dependencies.includes(imp) && !peerDependencies.includes(imp)) {\n unlistedDependencies++\n console.log(`[${chalk.blue(name)}] Missing dependency in package.json: ${chalk.red(imp)}`)\n console.log(` ${prodImportPaths[imp].join('\\n')}`)\n console.log('')\n }\n }\n\n for (const dep of dependencies) {\n if (dep.startsWith('@types/')) {\n typesInDependencies++\n console.log(`[${chalk.blue(name)}] @types in dependencies in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n if (!externalProdImports.includes(dep)) {\n unusedDependencies++\n console.log(`[${chalk.blue(name)}] Unused dependency in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n }\n\n if (peerDeps) {\n for (const dep of peerDependencies) {\n if (!externalProdImports.includes(dep)) {\n unusedDependencies++\n console.log(`[${chalk.blue(name)}] Unused peerDependency in package.json: ${chalk.red(dep)}`)\n console.log(` ${location}/package.json\\n`)\n console.log('')\n }\n }\n }\n\n if (devDeps) {\n for (const imp of externalDevImports) {\n if (!devDependencies.includes(imp)) {\n unlistedDevDependencies++\n console.log(`[${chalk.blue(name)}] Missing devDependency in package.json: ${chalk.red(imp)}`)\n console.log(` Found in: ${devImportPaths[imp].join(', ')}`)\n }\n }\n }\n\n const totalErrors = unlistedDependencies + unlistedDevDependencies + unusedDependencies + typesInDependencies\n\n return totalErrors\n}\n\nexport const deplint = ({ pkg }: { pkg: string }) => {\n if (pkg) {\n const { location, name } = yarnWorkspace(pkg)\n\n console.log(`Running Deplint for ${name}`)\n check({\n name, location, devDeps: true,\n })\n } else {\n const workspaces = yarnWorkspaces()\n\n console.log('Deplint Started...')\n\n let totalErrors = 0\n\n for (const workspace of workspaces) {\n totalErrors += check(workspace)\n }\n\n if (totalErrors > 0) {\n console.log(`Found ${chalk.red(totalErrors)} unlisted imports.`)\n } else {\n console.log(`No unlisted imports found. ${chalk.green('✔')}`)\n }\n }\n return 0\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface LintParams {\n fix?: boolean\n incremental?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface LintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const lintPackage = ({ pkg, fix }: LintParams & Required<Pick<LintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [${pkg}]`))\n const start = Date.now()\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [${pkg}]`, [\n ['yarn', ['workspace',\n pkg,\n 'run',\n fix ? 'package-fix' : 'package-lint',\n ]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const lint = ({\n pkg, verbose, incremental, fix,\n}: LintParams = {}) => {\n return pkg\n ? lintPackage({ pkg, fix })\n : lintAllPackages({\n verbose, incremental, fix,\n })\n}\n\nexport const lintAllPackages = ({ fix = false }: LintParams = {}) => {\n console.log(chalk.gray(`${fix ? 'Fix' : 'Lint'} [All-Packages]`))\n const start = Date.now()\n // const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n // const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n const fixOptions = fix ? ['--fix'] : []\n\n const result = runSteps(`${fix ? 'Fix' : 'Lint'} [All-Packages]`, [\n ['yarn', ['eslint', ...fixOptions]],\n ])\n console.log(chalk.gray(`${fix ? 'Fixed in' : 'Linted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import type { LintParams } from './lint.ts'\nimport { lint } from './lint.ts'\n\nexport const fix = (params?: LintParams) => {\n return lint({ ...params, fix: true })\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const knip = () => {\n return runSteps('Knip', [['yarn', ['knip', '--dependencies', '--no-exit-code']]])\n}\n","import { runSteps, runStepsAsync } from '../lib/index.ts'\n\nexport interface PublintParams {\n pkg?: string\n verbose?: boolean\n}\n\nexport interface PublintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const publint = async ({ verbose, pkg }: PublintParams) => {\n return pkg\n ? await publintPackage({ pkg, verbose })\n : publintAll({ verbose })\n}\n\nexport const publintPackage = ({ pkg }: PublintPackageParams) => {\n return runStepsAsync(`Publint [${pkg}]`, [['yarn', ['workspace', pkg, 'run', 'package-publint']]])\n}\n\nexport const publintAll = ({ verbose }: PublintParams) => {\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n return runSteps('Publint', [['yarn', ['workspaces', 'foreach', '-pA', ...verboseOptions, 'run', 'package-publint']]])\n}\n","import chalk from 'chalk'\n\nimport { runSteps } from '../lib/index.ts'\n\nexport interface RelintParams {\n incremental?: boolean\n pkg?: string\n verbose?: boolean\n}\n\nexport interface RelintPackageParams {\n pkg: string\n verbose?: boolean\n}\n\nexport const relintPackage = ({ pkg }: RelintParams & Required<Pick<RelintParams, 'pkg'>>) => {\n console.log(chalk.gray(`${'Relint'} [All-Packages]`))\n const start = Date.now()\n\n const result = runSteps('Relint [All-Packages]', [\n ['yarn', ['workspace',\n pkg,\n 'run',\n 'package-relint',\n ]],\n ])\n console.log(chalk.gray(`${'Relinted in'} [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n\nexport const relint = ({\n pkg, verbose, incremental,\n}: RelintParams = {}) => {\n return pkg\n ? relintPackage({ pkg })\n : relintAllPackages({ verbose, incremental })\n}\n\nexport const relintAllPackages = ({ verbose = true, incremental }: RelintParams = {}) => {\n console.log(chalk.gray(`${'Relint'} [All-Packages]`))\n const start = Date.now()\n const verboseOptions = verbose ? ['--verbose'] : ['--no-verbose']\n const incrementalOptions = incremental ? ['--since', '-Ap'] : ['--parallel', '-Ap']\n\n const result = runSteps(`${'Relint'} [All-Packages]`, [\n ['yarn', ['workspaces',\n 'foreach',\n ...verboseOptions,\n ...incrementalOptions,\n 'run',\n 'package-relint',\n ]],\n ])\n console.log(chalk.gray(`Relinted in [${chalk.magenta(((Date.now() - start) / 1000).toFixed(2))}] ${chalk.gray('seconds')}`))\n return result\n}\n","import { runSteps } from '../lib/index.ts'\n\nexport const sonar = () => {\n return runSteps('Sonar', [['yarn', ['eslint', '-c', 'sonar.eslintrc', '.']]])\n}\n","import type { Argv } from 'yargs'\n\nexport const packagePositionalParam = (yargs: Argv<unknown>) => {\n return yargs.positional('package', { describe: 'Specific package to target' })\n}\n"],"mappings":"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","names":["chalk","chalk","ex","ex","error","chalk","spawnSync","chalk","chalk","spawnSync","existsSync","chalk","chalk","existsSync","chalk","path","chalk","chalk","fix","chalk","chalk","chalk","chalk"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/ts-scripts-yarn3",
3
- "version": "6.4.2",
3
+ "version": "6.4.3",
4
4
  "description": "TypeScript project scripts",
5
5
  "keywords": [
6
6
  "xylabs",
@@ -69,11 +69,9 @@
69
69
  "cpy": "^11.1.0",
70
70
  "deepmerge": "^4.3.1",
71
71
  "dependency-cruiser": "^16.10.1",
72
- "esbuild": "0.25.3",
73
72
  "eslint": "^9.25.1",
74
73
  "find-up": "^7.0.0",
75
74
  "glob": "^11.0.1",
76
- "knip": "^5.50.5",
77
75
  "license-checker": "^25.0.1",
78
76
  "parse-git-config": "^3.0.0",
79
77
  "picomatch": "^4.0.2",
@@ -91,8 +89,9 @@
91
89
  "@types/parse-git-config": "^3.0.4",
92
90
  "@types/picomatch": "^4.0.0",
93
91
  "@types/yargs": "^17.0.33",
94
- "@xylabs/tsconfig": "^6.4.2",
95
- "publint": "^0.3.12",
92
+ "@xylabs/tsconfig": "^6.4.3",
93
+ "esbuild": "0.25.3",
94
+ "knip": "^5.50.5",
96
95
  "rimraf": "^6.0.1",
97
96
  "typescript": "^5.8.3"
98
97
  },