toolip 1.0.3 → 1.0.6

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.
Files changed (140) hide show
  1. package/README.md +599 -0
  2. package/package.json +1 -1
  3. package/dist/src/commands/alternatives.d.ts +0 -2
  4. package/dist/src/commands/alternatives.js +0 -17
  5. package/dist/src/commands/alternatives.js.map +0 -1
  6. package/dist/src/commands/compare.d.ts +0 -2
  7. package/dist/src/commands/compare.js +0 -19
  8. package/dist/src/commands/compare.js.map +0 -1
  9. package/dist/src/commands/doctor.d.ts +0 -2
  10. package/dist/src/commands/doctor.js +0 -42
  11. package/dist/src/commands/doctor.js.map +0 -1
  12. package/dist/src/commands/git-audit.d.ts +0 -2
  13. package/dist/src/commands/git-audit.js +0 -37
  14. package/dist/src/commands/git-audit.js.map +0 -1
  15. package/dist/src/commands/hook.d.ts +0 -2
  16. package/dist/src/commands/hook.js +0 -16
  17. package/dist/src/commands/hook.js.map +0 -1
  18. package/dist/src/commands/inspect.d.ts +0 -2
  19. package/dist/src/commands/inspect.js +0 -24
  20. package/dist/src/commands/inspect.js.map +0 -1
  21. package/dist/src/commands/learn.d.ts +0 -2
  22. package/dist/src/commands/learn.js +0 -42
  23. package/dist/src/commands/learn.js.map +0 -1
  24. package/dist/src/commands/licenses.d.ts +0 -2
  25. package/dist/src/commands/licenses.js +0 -40
  26. package/dist/src/commands/licenses.js.map +0 -1
  27. package/dist/src/commands/pre-commit.d.ts +0 -2
  28. package/dist/src/commands/pre-commit.js +0 -37
  29. package/dist/src/commands/pre-commit.js.map +0 -1
  30. package/dist/src/commands/profile.d.ts +0 -2
  31. package/dist/src/commands/profile.js +0 -18
  32. package/dist/src/commands/profile.js.map +0 -1
  33. package/dist/src/commands/scan.d.ts +0 -2
  34. package/dist/src/commands/scan.js +0 -48
  35. package/dist/src/commands/scan.js.map +0 -1
  36. package/dist/src/commands/score.d.ts +0 -2
  37. package/dist/src/commands/score.js +0 -24
  38. package/dist/src/commands/score.js.map +0 -1
  39. package/dist/src/commands/self-test.d.ts +0 -2
  40. package/dist/src/commands/self-test.js +0 -63
  41. package/dist/src/commands/self-test.js.map +0 -1
  42. package/dist/src/commands/tree.d.ts +0 -2
  43. package/dist/src/commands/tree.js +0 -21
  44. package/dist/src/commands/tree.js.map +0 -1
  45. package/dist/src/commands/vault.d.ts +0 -2
  46. package/dist/src/commands/vault.js +0 -86
  47. package/dist/src/commands/vault.js.map +0 -1
  48. package/dist/src/config/version.d.ts +0 -6
  49. package/dist/src/config/version.js +0 -7
  50. package/dist/src/config/version.js.map +0 -1
  51. package/dist/src/core/alternatives.d.ts +0 -8
  52. package/dist/src/core/alternatives.js +0 -35
  53. package/dist/src/core/alternatives.js.map +0 -1
  54. package/dist/src/core/analyze-package.d.ts +0 -2
  55. package/dist/src/core/analyze-package.js +0 -49
  56. package/dist/src/core/analyze-package.js.map +0 -1
  57. package/dist/src/core/compare-packages.d.ts +0 -7
  58. package/dist/src/core/compare-packages.js +0 -19
  59. package/dist/src/core/compare-packages.js.map +0 -1
  60. package/dist/src/core/dependency-scan.d.ts +0 -17
  61. package/dist/src/core/dependency-scan.js +0 -70
  62. package/dist/src/core/dependency-scan.js.map +0 -1
  63. package/dist/src/core/dependency-tree.d.ts +0 -16
  64. package/dist/src/core/dependency-tree.js +0 -19
  65. package/dist/src/core/dependency-tree.js.map +0 -1
  66. package/dist/src/core/dependency-types.d.ts +0 -17
  67. package/dist/src/core/dependency-types.js +0 -2
  68. package/dist/src/core/dependency-types.js.map +0 -1
  69. package/dist/src/core/file-walker.d.ts +0 -6
  70. package/dist/src/core/file-walker.js +0 -27
  71. package/dist/src/core/file-walker.js.map +0 -1
  72. package/dist/src/core/git-audit.d.ts +0 -12
  73. package/dist/src/core/git-audit.js +0 -111
  74. package/dist/src/core/git-audit.js.map +0 -1
  75. package/dist/src/core/hooks.d.ts +0 -1
  76. package/dist/src/core/hooks.js +0 -14
  77. package/dist/src/core/hooks.js.map +0 -1
  78. package/dist/src/core/learn.d.ts +0 -11
  79. package/dist/src/core/learn.js +0 -163
  80. package/dist/src/core/learn.js.map +0 -1
  81. package/dist/src/core/license-analysis.d.ts +0 -18
  82. package/dist/src/core/license-analysis.js +0 -98
  83. package/dist/src/core/license-analysis.js.map +0 -1
  84. package/dist/src/core/load-toolip-ignore.d.ts +0 -5
  85. package/dist/src/core/load-toolip-ignore.js +0 -35
  86. package/dist/src/core/load-toolip-ignore.js.map +0 -1
  87. package/dist/src/core/npm-registry.d.ts +0 -3
  88. package/dist/src/core/npm-registry.js +0 -5
  89. package/dist/src/core/npm-registry.js.map +0 -1
  90. package/dist/src/core/pre-commit.d.ts +0 -11
  91. package/dist/src/core/pre-commit.js +0 -22
  92. package/dist/src/core/pre-commit.js.map +0 -1
  93. package/dist/src/core/profile-project.d.ts +0 -23
  94. package/dist/src/core/profile-project.js +0 -119
  95. package/dist/src/core/profile-project.js.map +0 -1
  96. package/dist/src/core/read-dependencies.d.ts +0 -2
  97. package/dist/src/core/read-dependencies.js +0 -24
  98. package/dist/src/core/read-dependencies.js.map +0 -1
  99. package/dist/src/core/report-writer.d.ts +0 -5
  100. package/dist/src/core/report-writer.js +0 -61
  101. package/dist/src/core/report-writer.js.map +0 -1
  102. package/dist/src/core/report.d.ts +0 -34
  103. package/dist/src/core/report.js +0 -26
  104. package/dist/src/core/report.js.map +0 -1
  105. package/dist/src/core/risk-score.d.ts +0 -5
  106. package/dist/src/core/risk-score.js +0 -14
  107. package/dist/src/core/risk-score.js.map +0 -1
  108. package/dist/src/core/scanner-context.d.ts +0 -12
  109. package/dist/src/core/scanner-context.js +0 -27
  110. package/dist/src/core/scanner-context.js.map +0 -1
  111. package/dist/src/core/score.d.ts +0 -13
  112. package/dist/src/core/score.js +0 -44
  113. package/dist/src/core/score.js.map +0 -1
  114. package/dist/src/core/security-doctor.d.ts +0 -12
  115. package/dist/src/core/security-doctor.js +0 -106
  116. package/dist/src/core/security-doctor.js.map +0 -1
  117. package/dist/src/core/security-patterns.d.ts +0 -14
  118. package/dist/src/core/security-patterns.js +0 -130
  119. package/dist/src/core/security-patterns.js.map +0 -1
  120. package/dist/src/core/typosquat.d.ts +0 -6
  121. package/dist/src/core/typosquat.js +0 -50
  122. package/dist/src/core/typosquat.js.map +0 -1
  123. package/dist/src/core/vault.d.ts +0 -48
  124. package/dist/src/core/vault.js +0 -127
  125. package/dist/src/core/vault.js.map +0 -1
  126. package/dist/src/errors/toolip-error.d.ts +0 -8
  127. package/dist/src/errors/toolip-error.js +0 -11
  128. package/dist/src/errors/toolip-error.js.map +0 -1
  129. package/dist/src/index.d.ts +0 -2
  130. package/dist/src/index.js +0 -51
  131. package/dist/src/index.js.map +0 -1
  132. package/dist/src/utils/error-handler.d.ts +0 -1
  133. package/dist/src/utils/error-handler.js +0 -24
  134. package/dist/src/utils/error-handler.js.map +0 -1
  135. package/dist/src/utils/output.d.ts +0 -6
  136. package/dist/src/utils/output.js +0 -72
  137. package/dist/src/utils/output.js.map +0 -1
  138. package/dist/src/utils/package-output.d.ts +0 -4
  139. package/dist/src/utils/package-output.js +0 -40
  140. package/dist/src/utils/package-output.js.map +0 -1
@@ -1,127 +0,0 @@
1
- import { mkdir, readFile, writeFile, rm } from 'node:fs/promises';
2
- import path from 'node:path';
3
- import crypto from 'node:crypto';
4
- import os from 'node:os';
5
- import { ToolipError } from '../errors/toolip-error.js';
6
- const algorithm = 'aes-256-gcm';
7
- export function defaultVaultPath() {
8
- return path.join(os.homedir(), '.toolip', 'vault.json');
9
- }
10
- export async function initVault(masterPassword, vaultPath = defaultVaultPath()) {
11
- await writeEncryptedVault({ secrets: [] }, masterPassword, vaultPath);
12
- }
13
- export async function setSecret(input) {
14
- const vaultPath = input.vaultPath ?? defaultVaultPath();
15
- let data;
16
- try {
17
- data = await readEncryptedVault(input.masterPassword, vaultPath);
18
- }
19
- catch {
20
- data = { secrets: [] };
21
- }
22
- const env = input.env ?? 'development';
23
- const existing = data.secrets.find((secret) => secret.key === input.key && secret.env === env);
24
- if (existing) {
25
- existing.value = input.value;
26
- existing.updatedAt = new Date().toISOString();
27
- }
28
- else {
29
- data.secrets.push({
30
- key: input.key,
31
- value: input.value,
32
- env,
33
- updatedAt: new Date().toISOString()
34
- });
35
- }
36
- await writeEncryptedVault(data, input.masterPassword, vaultPath);
37
- }
38
- export async function getSecret(input) {
39
- const data = await readEncryptedVault(input.masterPassword, input.vaultPath ?? defaultVaultPath());
40
- const env = input.env ?? 'development';
41
- const secret = data.secrets.find((item) => item.key === input.key && item.env === env);
42
- if (!secret) {
43
- throw new ToolipError(`Secret not found: ${input.key}`, {
44
- code: 'VAULT_SECRET_NOT_FOUND',
45
- exitCode: 1
46
- });
47
- }
48
- return secret;
49
- }
50
- export async function listSecrets(input) {
51
- const data = await readEncryptedVault(input.masterPassword, input.vaultPath ?? defaultVaultPath());
52
- const env = input.env;
53
- return data.secrets
54
- .filter((secret) => !env || secret.env === env)
55
- .sort((a, b) => a.key.localeCompare(b.key));
56
- }
57
- export async function deleteSecret(input) {
58
- const vaultPath = input.vaultPath ?? defaultVaultPath();
59
- const data = await readEncryptedVault(input.masterPassword, vaultPath);
60
- const env = input.env ?? 'development';
61
- const before = data.secrets.length;
62
- data.secrets = data.secrets.filter((secret) => !(secret.key === input.key && secret.env === env));
63
- await writeEncryptedVault(data, input.masterPassword, vaultPath);
64
- return data.secrets.length < before;
65
- }
66
- export async function exportEnv(input) {
67
- const secrets = await listSecrets(input);
68
- return secrets.map((secret) => `${secret.key}="${escapeEnv(secret.value)}"`).join('\n');
69
- }
70
- export async function destroyVault(vaultPath = defaultVaultPath()) {
71
- await rm(vaultPath, { force: true });
72
- }
73
- async function readEncryptedVault(masterPassword, vaultPath) {
74
- let raw = '';
75
- try {
76
- raw = await readFile(vaultPath, 'utf8');
77
- }
78
- catch {
79
- throw new ToolipError('Vault not initialized. Run toolip vault init first.', {
80
- code: 'VAULT_NOT_INITIALIZED',
81
- exitCode: 1
82
- });
83
- }
84
- const parsed = JSON.parse(raw);
85
- try {
86
- const key = deriveKey(masterPassword, Buffer.from(parsed.salt, 'base64'));
87
- const decipher = crypto.createDecipheriv(algorithm, key, Buffer.from(parsed.iv, 'base64'));
88
- decipher.setAuthTag(Buffer.from(parsed.authTag, 'base64'));
89
- const decrypted = Buffer.concat([
90
- decipher.update(Buffer.from(parsed.data, 'base64')),
91
- decipher.final()
92
- ]);
93
- return JSON.parse(decrypted.toString('utf8'));
94
- }
95
- catch {
96
- throw new ToolipError('Invalid vault password or corrupted vault.', {
97
- code: 'VAULT_DECRYPT_FAILED',
98
- exitCode: 1
99
- });
100
- }
101
- }
102
- async function writeEncryptedVault(data, masterPassword, vaultPath) {
103
- await mkdir(path.dirname(vaultPath), { recursive: true });
104
- const salt = crypto.randomBytes(16);
105
- const iv = crypto.randomBytes(12);
106
- const key = deriveKey(masterPassword, salt);
107
- const cipher = crypto.createCipheriv(algorithm, key, iv);
108
- const encrypted = Buffer.concat([
109
- cipher.update(JSON.stringify(data), 'utf8'),
110
- cipher.final()
111
- ]);
112
- const file = {
113
- version: 1,
114
- salt: salt.toString('base64'),
115
- iv: iv.toString('base64'),
116
- authTag: cipher.getAuthTag().toString('base64'),
117
- data: encrypted.toString('base64')
118
- };
119
- await writeFile(vaultPath, `${JSON.stringify(file, null, 2)}\n`, 'utf8');
120
- }
121
- function deriveKey(masterPassword, salt) {
122
- return crypto.scryptSync(masterPassword, salt, 32);
123
- }
124
- function escapeEnv(value) {
125
- return value.replaceAll('\\', '\\\\').replaceAll('"', '\\"');
126
- }
127
- //# sourceMappingURL=vault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/core/vault.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export declare class ToolipError extends Error {
2
- readonly code: string;
3
- readonly exitCode: number;
4
- constructor(message: string, options?: {
5
- code?: string;
6
- exitCode?: number;
7
- });
8
- }
@@ -1,11 +0,0 @@
1
- export class ToolipError extends Error {
2
- code;
3
- exitCode;
4
- constructor(message, options) {
5
- super(message);
6
- this.name = 'ToolipError';
7
- this.code = options?.code ?? 'TOOLIP_ERROR';
8
- this.exitCode = options?.exitCode ?? 1;
9
- }
10
- }
11
- //# sourceMappingURL=toolip-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolip-error.js","sourceRoot":"","sources":["../../../src/errors/toolip-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpB,IAAI,CAAS;IACb,QAAQ,CAAS;IAEjC,YAAY,OAAe,EAAE,OAA8C;QACzE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,cAAc,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,2 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
package/dist/src/index.js DELETED
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Command } from 'commander';
3
- import chalk from 'chalk';
4
- import { registerAlternativesCommand } from './commands/alternatives.js';
5
- import { registerCompareCommand } from './commands/compare.js';
6
- import { registerDoctorCommand } from './commands/doctor.js';
7
- import { registerGitAuditCommand } from './commands/git-audit.js';
8
- import { registerHookCommand } from './commands/hook.js';
9
- import { registerInspectCommand } from './commands/inspect.js';
10
- import { registerLearnCommand } from './commands/learn.js';
11
- import { registerLicensesCommand } from './commands/licenses.js';
12
- import { registerPreCommitCommand } from './commands/pre-commit.js';
13
- import { registerProfileCommand } from './commands/profile.js';
14
- import { registerScanCommand } from './commands/scan.js';
15
- import { registerScoreCommand } from './commands/score.js';
16
- import { registerSelfTestCommand } from './commands/self-test.js';
17
- import { registerTreeCommand } from './commands/tree.js';
18
- import { registerVaultCommand } from './commands/vault.js';
19
- import { TOOLIP_AUTHOR, TOOLIP_VERSION } from './config/version.js';
20
- import { handleError } from './utils/error-handler.js';
21
- const program = new Command();
22
- program
23
- .name('toolip')
24
- .description('Developer-first supply chain security, security hygiene, and secrets management CLI.')
25
- .version(TOOLIP_VERSION);
26
- registerSelfTestCommand(program);
27
- registerProfileCommand(program);
28
- registerScanCommand(program);
29
- registerDoctorCommand(program);
30
- registerScoreCommand(program);
31
- registerInspectCommand(program);
32
- registerCompareCommand(program);
33
- registerLicensesCommand(program);
34
- registerAlternativesCommand(program);
35
- registerTreeCommand(program);
36
- registerVaultCommand(program);
37
- registerGitAuditCommand(program);
38
- registerPreCommitCommand(program);
39
- registerHookCommand(program);
40
- registerLearnCommand(program);
41
- program.addHelpText('after', `
42
-
43
- ${chalk.dim(`Built by ${TOOLIP_AUTHOR.name} (${TOOLIP_AUTHOR.handle}) — ${TOOLIP_AUTHOR.github}`)}`);
44
- program.exitOverride();
45
- try {
46
- await program.parseAsync(process.argv);
47
- }
48
- catch (error) {
49
- handleError(error);
50
- }
51
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CACV,sFAAsF,CACvF;KACA,OAAO,CAAC,cAAc,CAAC,CAAC;AAE3B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACrC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;EAEA,KAAK,CAAC,GAAG,CACT,YAAY,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,OAAO,aAAa,CAAC,MAAM,EAAE,CACrF,EAAE,CACF,CAAC;AAEF,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,IAAI,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,WAAW,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC"}
@@ -1 +0,0 @@
1
- export declare function handleError(error: unknown): never;
@@ -1,24 +0,0 @@
1
- import chalk from 'chalk';
2
- import { CommanderError } from 'commander';
3
- import { ToolipError } from '../errors/toolip-error.js';
4
- export function handleError(error) {
5
- if (error instanceof CommanderError) {
6
- if (error.code === 'commander.version' || error.code === 'commander.helpDisplayed') {
7
- process.exit(0);
8
- }
9
- console.error(`${chalk.red('✖')} ${error.message}`);
10
- process.exit(error.exitCode || 1);
11
- }
12
- if (error instanceof ToolipError) {
13
- console.error(`${chalk.red('✖')} ${error.message}`);
14
- console.error(chalk.dim(`Code: ${error.code}`));
15
- process.exit(error.exitCode);
16
- }
17
- if (error instanceof Error) {
18
- console.error(`${chalk.red('✖')} ${error.message}`);
19
- process.exit(1);
20
- }
21
- console.error(`${chalk.red('✖')} Unknown Toolip error.`);
22
- process.exit(1);
23
- }
24
- //# sourceMappingURL=error-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { ProjectProfile } from '../core/profile-project.js';
2
- import type { ScannerContext } from '../core/scanner-context.js';
3
- import type { ToolipReport } from '../core/report.js';
4
- export declare function printProfile(profile: ProjectProfile): void;
5
- export declare function printScannerContext(context: ScannerContext): void;
6
- export declare function printReportSummary(report: ToolipReport): void;
@@ -1,72 +0,0 @@
1
- import chalk from 'chalk';
2
- export function printProfile(profile) {
3
- console.log(chalk.bold('Toolip Project Profile'));
4
- console.log('');
5
- console.log(`${chalk.dim('Root:')} ${profile.root}`);
6
- console.log(`${chalk.dim('Name:')} ${profile.name}`);
7
- console.log(`${chalk.dim('Version:')} ${profile.version}`);
8
- console.log(`${chalk.dim('Package Manager:')} ${profile.packageManager}`);
9
- if (profile.description) {
10
- console.log(`${chalk.dim('Description:')} ${profile.description}`);
11
- }
12
- console.log('');
13
- if (profile.detected.length === 0) {
14
- console.log(chalk.yellow('No major framework fingerprints detected yet.'));
15
- }
16
- else {
17
- console.log(chalk.bold('Detected Stack'));
18
- for (const item of profile.detected) {
19
- console.log(`${chalk.green('✓')} ${item}`);
20
- }
21
- }
22
- if (Object.keys(profile.languages).length > 0) {
23
- console.log('');
24
- console.log(chalk.bold('Language / File Signals'));
25
- for (const [language, count] of Object.entries(profile.languages)) {
26
- console.log(`${chalk.green('✓')} ${language}: ${count}`);
27
- }
28
- }
29
- if (profile.packageScripts.length > 0) {
30
- console.log('');
31
- console.log(chalk.bold('Package Scripts'));
32
- for (const script of profile.packageScripts) {
33
- console.log(`${chalk.green('✓')} ${script}`);
34
- }
35
- }
36
- }
37
- export function printScannerContext(context) {
38
- console.log(chalk.bold('Project Scan Context'));
39
- console.log('');
40
- console.log(`${chalk.dim('Root:')} ${context.root}`);
41
- console.log(`${chalk.dim('Files Indexed:')} ${context.summary.totalFiles}`);
42
- console.log(`${chalk.dim('Package Manager:')} ${context.profile.packageManager}`);
43
- console.log('');
44
- if (Object.keys(context.summary.extensions).length > 0) {
45
- console.log(chalk.bold('File Types'));
46
- for (const [extension, count] of Object.entries(context.summary.extensions)) {
47
- console.log(`${chalk.green('✓')} ${extension}: ${count}`);
48
- }
49
- }
50
- }
51
- export function printReportSummary(report) {
52
- console.log(chalk.bold('Report Summary'));
53
- console.log('');
54
- console.log(`${chalk.dim('Critical:')} ${severityColor('critical', report.summary.critical)}`);
55
- console.log(`${chalk.dim('High:')} ${severityColor('high', report.summary.high)}`);
56
- console.log(`${chalk.dim('Medium:')} ${severityColor('medium', report.summary.medium)}`);
57
- console.log(`${chalk.dim('Low:')} ${severityColor('low', report.summary.low)}`);
58
- console.log(`${chalk.dim('Info:')} ${severityColor('info', report.summary.info)}`);
59
- console.log(`${chalk.dim('Total:')} ${report.summary.totalFindings}`);
60
- }
61
- function severityColor(severity, value) {
62
- if (severity === 'critical')
63
- return value > 0 ? chalk.red.bold(String(value)) : chalk.green(String(value));
64
- if (severity === 'high')
65
- return value > 0 ? chalk.red(String(value)) : chalk.green(String(value));
66
- if (severity === 'medium')
67
- return value > 0 ? chalk.yellow(String(value)) : chalk.green(String(value));
68
- if (severity === 'low')
69
- return value > 0 ? chalk.blue(String(value)) : chalk.green(String(value));
70
- return chalk.dim(String(value));
71
- }
72
- //# sourceMappingURL=output.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/utils/output.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { PackageHealth } from '../core/dependency-types.js';
2
- import type { PackageComparison } from '../core/compare-packages.js';
3
- export declare function printPackageHealth(pkg: PackageHealth): void;
4
- export declare function printPackageComparison(comparison: PackageComparison): void;
@@ -1,40 +0,0 @@
1
- import chalk from 'chalk';
2
- export function printPackageHealth(pkg) {
3
- console.log(chalk.bold(`Package: ${pkg.name}`));
4
- console.log('');
5
- console.log(`${chalk.dim('Installed Version:')} ${pkg.installedVersion}`);
6
- console.log(`${chalk.dim('Latest Version:')} ${pkg.latestVersion ?? 'unknown'}`);
7
- console.log(`${chalk.dim('Outdated:')} ${pkg.outdated ? chalk.yellow('yes') : chalk.green('no')}`);
8
- console.log(`${chalk.dim('Deprecated:')} ${pkg.deprecated ? chalk.red('yes') : chalk.green('no')}`);
9
- console.log(`${chalk.dim('Maintainers:')} ${pkg.maintainers}`);
10
- console.log(`${chalk.dim('Published:')} ${pkg.publishedAt ?? 'unknown'}`);
11
- console.log(`${chalk.dim('Age:')} ${pkg.ageInDays === null ? 'unknown' : `${pkg.ageInDays} days`}`);
12
- console.log(`${chalk.dim('Risk Score:')} ${formatRisk(pkg.riskScore)}`);
13
- }
14
- export function printPackageComparison(comparison) {
15
- console.log(chalk.bold('Toolip Package Comparison'));
16
- console.log('');
17
- for (const pkg of comparison.packages) {
18
- console.log(`${chalk.bold(pkg.name)}`);
19
- console.log(` Latest .......... ${pkg.latestVersion ?? 'unknown'}`);
20
- console.log(` Deprecated ...... ${pkg.deprecated ? chalk.red('yes') : chalk.green('no')}`);
21
- console.log(` Maintainers ..... ${pkg.maintainers}`);
22
- console.log(` Age ............. ${pkg.ageInDays === null ? 'unknown' : `${pkg.ageInDays} days`}`);
23
- console.log(` Risk Score ...... ${formatRisk(pkg.riskScore)}`);
24
- console.log('');
25
- }
26
- if (comparison.safest) {
27
- console.log(`${chalk.green('Safest:')} ${comparison.safest.name} (${comparison.safest.riskScore})`);
28
- }
29
- if (comparison.riskiest) {
30
- console.log(`${chalk.red('Riskiest:')} ${comparison.riskiest.name} (${comparison.riskiest.riskScore})`);
31
- }
32
- }
33
- function formatRisk(score) {
34
- if (score >= 70)
35
- return chalk.red.bold(String(score));
36
- if (score >= 40)
37
- return chalk.yellow(String(score));
38
- return chalk.green(String(score));
39
- }
40
- //# sourceMappingURL=package-output.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-output.js","sourceRoot":"","sources":["../../../src/utils/package-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,UAAU,kBAAkB,CAAC,GAAkB;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,aAAa,IAAI,SAAS,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAA6B;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,aAAa,IAAI,SAAS,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IACtG,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IAC1G,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC"}