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.
- package/README.md +599 -0
- package/package.json +1 -1
- package/dist/src/commands/alternatives.d.ts +0 -2
- package/dist/src/commands/alternatives.js +0 -17
- package/dist/src/commands/alternatives.js.map +0 -1
- package/dist/src/commands/compare.d.ts +0 -2
- package/dist/src/commands/compare.js +0 -19
- package/dist/src/commands/compare.js.map +0 -1
- package/dist/src/commands/doctor.d.ts +0 -2
- package/dist/src/commands/doctor.js +0 -42
- package/dist/src/commands/doctor.js.map +0 -1
- package/dist/src/commands/git-audit.d.ts +0 -2
- package/dist/src/commands/git-audit.js +0 -37
- package/dist/src/commands/git-audit.js.map +0 -1
- package/dist/src/commands/hook.d.ts +0 -2
- package/dist/src/commands/hook.js +0 -16
- package/dist/src/commands/hook.js.map +0 -1
- package/dist/src/commands/inspect.d.ts +0 -2
- package/dist/src/commands/inspect.js +0 -24
- package/dist/src/commands/inspect.js.map +0 -1
- package/dist/src/commands/learn.d.ts +0 -2
- package/dist/src/commands/learn.js +0 -42
- package/dist/src/commands/learn.js.map +0 -1
- package/dist/src/commands/licenses.d.ts +0 -2
- package/dist/src/commands/licenses.js +0 -40
- package/dist/src/commands/licenses.js.map +0 -1
- package/dist/src/commands/pre-commit.d.ts +0 -2
- package/dist/src/commands/pre-commit.js +0 -37
- package/dist/src/commands/pre-commit.js.map +0 -1
- package/dist/src/commands/profile.d.ts +0 -2
- package/dist/src/commands/profile.js +0 -18
- package/dist/src/commands/profile.js.map +0 -1
- package/dist/src/commands/scan.d.ts +0 -2
- package/dist/src/commands/scan.js +0 -48
- package/dist/src/commands/scan.js.map +0 -1
- package/dist/src/commands/score.d.ts +0 -2
- package/dist/src/commands/score.js +0 -24
- package/dist/src/commands/score.js.map +0 -1
- package/dist/src/commands/self-test.d.ts +0 -2
- package/dist/src/commands/self-test.js +0 -63
- package/dist/src/commands/self-test.js.map +0 -1
- package/dist/src/commands/tree.d.ts +0 -2
- package/dist/src/commands/tree.js +0 -21
- package/dist/src/commands/tree.js.map +0 -1
- package/dist/src/commands/vault.d.ts +0 -2
- package/dist/src/commands/vault.js +0 -86
- package/dist/src/commands/vault.js.map +0 -1
- package/dist/src/config/version.d.ts +0 -6
- package/dist/src/config/version.js +0 -7
- package/dist/src/config/version.js.map +0 -1
- package/dist/src/core/alternatives.d.ts +0 -8
- package/dist/src/core/alternatives.js +0 -35
- package/dist/src/core/alternatives.js.map +0 -1
- package/dist/src/core/analyze-package.d.ts +0 -2
- package/dist/src/core/analyze-package.js +0 -49
- package/dist/src/core/analyze-package.js.map +0 -1
- package/dist/src/core/compare-packages.d.ts +0 -7
- package/dist/src/core/compare-packages.js +0 -19
- package/dist/src/core/compare-packages.js.map +0 -1
- package/dist/src/core/dependency-scan.d.ts +0 -17
- package/dist/src/core/dependency-scan.js +0 -70
- package/dist/src/core/dependency-scan.js.map +0 -1
- package/dist/src/core/dependency-tree.d.ts +0 -16
- package/dist/src/core/dependency-tree.js +0 -19
- package/dist/src/core/dependency-tree.js.map +0 -1
- package/dist/src/core/dependency-types.d.ts +0 -17
- package/dist/src/core/dependency-types.js +0 -2
- package/dist/src/core/dependency-types.js.map +0 -1
- package/dist/src/core/file-walker.d.ts +0 -6
- package/dist/src/core/file-walker.js +0 -27
- package/dist/src/core/file-walker.js.map +0 -1
- package/dist/src/core/git-audit.d.ts +0 -12
- package/dist/src/core/git-audit.js +0 -111
- package/dist/src/core/git-audit.js.map +0 -1
- package/dist/src/core/hooks.d.ts +0 -1
- package/dist/src/core/hooks.js +0 -14
- package/dist/src/core/hooks.js.map +0 -1
- package/dist/src/core/learn.d.ts +0 -11
- package/dist/src/core/learn.js +0 -163
- package/dist/src/core/learn.js.map +0 -1
- package/dist/src/core/license-analysis.d.ts +0 -18
- package/dist/src/core/license-analysis.js +0 -98
- package/dist/src/core/license-analysis.js.map +0 -1
- package/dist/src/core/load-toolip-ignore.d.ts +0 -5
- package/dist/src/core/load-toolip-ignore.js +0 -35
- package/dist/src/core/load-toolip-ignore.js.map +0 -1
- package/dist/src/core/npm-registry.d.ts +0 -3
- package/dist/src/core/npm-registry.js +0 -5
- package/dist/src/core/npm-registry.js.map +0 -1
- package/dist/src/core/pre-commit.d.ts +0 -11
- package/dist/src/core/pre-commit.js +0 -22
- package/dist/src/core/pre-commit.js.map +0 -1
- package/dist/src/core/profile-project.d.ts +0 -23
- package/dist/src/core/profile-project.js +0 -119
- package/dist/src/core/profile-project.js.map +0 -1
- package/dist/src/core/read-dependencies.d.ts +0 -2
- package/dist/src/core/read-dependencies.js +0 -24
- package/dist/src/core/read-dependencies.js.map +0 -1
- package/dist/src/core/report-writer.d.ts +0 -5
- package/dist/src/core/report-writer.js +0 -61
- package/dist/src/core/report-writer.js.map +0 -1
- package/dist/src/core/report.d.ts +0 -34
- package/dist/src/core/report.js +0 -26
- package/dist/src/core/report.js.map +0 -1
- package/dist/src/core/risk-score.d.ts +0 -5
- package/dist/src/core/risk-score.js +0 -14
- package/dist/src/core/risk-score.js.map +0 -1
- package/dist/src/core/scanner-context.d.ts +0 -12
- package/dist/src/core/scanner-context.js +0 -27
- package/dist/src/core/scanner-context.js.map +0 -1
- package/dist/src/core/score.d.ts +0 -13
- package/dist/src/core/score.js +0 -44
- package/dist/src/core/score.js.map +0 -1
- package/dist/src/core/security-doctor.d.ts +0 -12
- package/dist/src/core/security-doctor.js +0 -106
- package/dist/src/core/security-doctor.js.map +0 -1
- package/dist/src/core/security-patterns.d.ts +0 -14
- package/dist/src/core/security-patterns.js +0 -130
- package/dist/src/core/security-patterns.js.map +0 -1
- package/dist/src/core/typosquat.d.ts +0 -6
- package/dist/src/core/typosquat.js +0 -50
- package/dist/src/core/typosquat.js.map +0 -1
- package/dist/src/core/vault.d.ts +0 -48
- package/dist/src/core/vault.js +0 -127
- package/dist/src/core/vault.js.map +0 -1
- package/dist/src/errors/toolip-error.d.ts +0 -8
- package/dist/src/errors/toolip-error.js +0 -11
- package/dist/src/errors/toolip-error.js.map +0 -1
- package/dist/src/index.d.ts +0 -2
- package/dist/src/index.js +0 -51
- package/dist/src/index.js.map +0 -1
- package/dist/src/utils/error-handler.d.ts +0 -1
- package/dist/src/utils/error-handler.js +0 -24
- package/dist/src/utils/error-handler.js.map +0 -1
- package/dist/src/utils/output.d.ts +0 -6
- package/dist/src/utils/output.js +0 -72
- package/dist/src/utils/output.js.map +0 -1
- package/dist/src/utils/package-output.d.ts +0 -4
- package/dist/src/utils/package-output.js +0 -40
- package/dist/src/utils/package-output.js.map +0 -1
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { runGitAudit } from '../core/git-audit.js';
|
|
3
|
-
import { createReport } from '../core/report.js';
|
|
4
|
-
import { writeReport } from '../core/report-writer.js';
|
|
5
|
-
import { TOOLIP_VERSION } from '../config/version.js';
|
|
6
|
-
import { printReportSummary } from '../utils/output.js';
|
|
7
|
-
export function registerGitAuditCommand(program) {
|
|
8
|
-
program
|
|
9
|
-
.command('git-audit')
|
|
10
|
-
.description('Audit Git safety, ignored files, and dangerous committed-file patterns.')
|
|
11
|
-
.option('-p, --path <path>', 'Project path to audit.', process.cwd())
|
|
12
|
-
.option('-o, --output <file>', 'Write Git audit report to JSON or Markdown.')
|
|
13
|
-
.action(async (options) => {
|
|
14
|
-
const result = await runGitAudit(options.path);
|
|
15
|
-
console.log(chalk.bold('Toolip Git Audit'));
|
|
16
|
-
console.log('');
|
|
17
|
-
console.log(`${chalk.dim('Files Checked:')} ${result.summary.filesChecked}`);
|
|
18
|
-
console.log(`${chalk.dim('Dangerous Files:')} ${result.summary.dangerousFiles}`);
|
|
19
|
-
console.log(`${chalk.dim('.gitignore Present:')} ${result.summary.gitignorePresent ? 'yes' : 'no'}`);
|
|
20
|
-
console.log(`${chalk.dim('.env Ignored:')} ${result.summary.envIgnored ? 'yes' : 'no'}`);
|
|
21
|
-
console.log(`${chalk.dim('PEM Ignored:')} ${result.summary.pemIgnored ? 'yes' : 'no'}`);
|
|
22
|
-
const report = createReport({
|
|
23
|
-
version: TOOLIP_VERSION,
|
|
24
|
-
command: 'git-audit',
|
|
25
|
-
root: options.path,
|
|
26
|
-
findings: result.findings
|
|
27
|
-
});
|
|
28
|
-
console.log('');
|
|
29
|
-
printReportSummary(report);
|
|
30
|
-
if (options.output) {
|
|
31
|
-
await writeReport(options.output, report);
|
|
32
|
-
console.log('');
|
|
33
|
-
console.log(`${chalk.green('✓')} Report written to ${options.output}`);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=git-audit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-audit.js","sourceRoot":"","sources":["../../../src/commands/git-audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yEAAyE,CAAC;SACtF,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,6CAA6C,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrG,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAExF,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { installPreCommitHook } from '../core/hooks.js';
|
|
3
|
-
export function registerHookCommand(program) {
|
|
4
|
-
const hook = program
|
|
5
|
-
.command('hook')
|
|
6
|
-
.description('Install Toolip Git hooks.');
|
|
7
|
-
hook
|
|
8
|
-
.command('install')
|
|
9
|
-
.description('Install Toolip pre-commit hook.')
|
|
10
|
-
.option('-p, --path <path>', 'Project path.', process.cwd())
|
|
11
|
-
.action(async (options) => {
|
|
12
|
-
const hookPath = await installPreCommitHook(options.path);
|
|
13
|
-
console.log(`${chalk.green('✓')} Installed pre-commit hook at ${hookPath}`);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=hook.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../../../src/commands/hook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAE5C,IAAI;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,mBAAmB,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { analyzePackage } from '../core/analyze-package.js';
|
|
3
|
-
import { detectTyposquat } from '../core/typosquat.js';
|
|
4
|
-
import { printPackageHealth } from '../utils/package-output.js';
|
|
5
|
-
export function registerInspectCommand(program) {
|
|
6
|
-
program
|
|
7
|
-
.command('inspect <package>')
|
|
8
|
-
.description('Inspect a package from npm registry.')
|
|
9
|
-
.action(async (packageName) => {
|
|
10
|
-
const typo = detectTyposquat(packageName);
|
|
11
|
-
if (typo.suspected) {
|
|
12
|
-
console.log(chalk.yellow('Potential typosquatting signal detected.'));
|
|
13
|
-
console.log(`Did you mean: ${typo.suggestions.join(', ')}`);
|
|
14
|
-
console.log('');
|
|
15
|
-
}
|
|
16
|
-
const result = await analyzePackage({
|
|
17
|
-
name: packageName,
|
|
18
|
-
version: 'latest',
|
|
19
|
-
type: 'dependency'
|
|
20
|
-
});
|
|
21
|
-
printPackageHealth(result);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=inspect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/inspect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,sCAAsC,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAC;QAEH,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { getLearnTopic, listLearnTopics } from '../core/learn.js';
|
|
3
|
-
import { ToolipError } from '../errors/toolip-error.js';
|
|
4
|
-
export function registerLearnCommand(program) {
|
|
5
|
-
program
|
|
6
|
-
.command('learn [topic]')
|
|
7
|
-
.description('Learn secure development concepts while using Toolip.')
|
|
8
|
-
.option('--list', 'List available learning topics.')
|
|
9
|
-
.action((topic, options) => {
|
|
10
|
-
if (options.list || !topic) {
|
|
11
|
-
console.log(chalk.bold('Toolip Learning Topics'));
|
|
12
|
-
console.log('');
|
|
13
|
-
for (const item of listLearnTopics()) {
|
|
14
|
-
console.log(`${chalk.green('✓')} ${item.id} ${chalk.dim(`— ${item.title}`)}`);
|
|
15
|
-
}
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
const lesson = getLearnTopic(topic);
|
|
19
|
-
if (!lesson) {
|
|
20
|
-
throw new ToolipError(`Unknown learning topic: ${topic}`, {
|
|
21
|
-
code: 'LEARN_TOPIC_NOT_FOUND',
|
|
22
|
-
exitCode: 1
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
console.log(chalk.bold(lesson.title));
|
|
26
|
-
console.log('');
|
|
27
|
-
console.log(lesson.explanation);
|
|
28
|
-
console.log('');
|
|
29
|
-
printSection('Risks', lesson.risks);
|
|
30
|
-
printSection('Common Mistakes', lesson.mistakes);
|
|
31
|
-
printSection('Secure Examples', lesson.secureExamples);
|
|
32
|
-
printSection('Best Practices', lesson.bestPractices);
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function printSection(title, items) {
|
|
36
|
-
console.log(chalk.bold(title));
|
|
37
|
-
for (const item of items) {
|
|
38
|
-
console.log(`${chalk.green('•')} ${item}`);
|
|
39
|
-
}
|
|
40
|
-
console.log('');
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=learn.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"learn.js","sourceRoot":"","sources":["../../../src/commands/learn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACnD,MAAM,CAAC,CAAC,KAAyB,EAAE,OAA2B,EAAE,EAAE;QACjE,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;YAED,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,WAAW,CAAC,2BAA2B,KAAK,EAAE,EAAE;gBACxD,IAAI,EAAE,uBAAuB;gBAC7B,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACvD,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAe;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { analyzeLicenses } from '../core/license-analysis.js';
|
|
3
|
-
import { createReport } from '../core/report.js';
|
|
4
|
-
import { writeReport } from '../core/report-writer.js';
|
|
5
|
-
import { TOOLIP_VERSION } from '../config/version.js';
|
|
6
|
-
import { printReportSummary } from '../utils/output.js';
|
|
7
|
-
export function registerLicensesCommand(program) {
|
|
8
|
-
program
|
|
9
|
-
.command('licenses')
|
|
10
|
-
.description('Analyze dependency license inventory and restrictive license signals.')
|
|
11
|
-
.option('-p, --path <path>', 'Project path to analyze.', process.cwd())
|
|
12
|
-
.option('-o, --output <file>', 'Write license report to JSON or Markdown.')
|
|
13
|
-
.action(async (options) => {
|
|
14
|
-
const result = await analyzeLicenses(options.path);
|
|
15
|
-
console.log(chalk.bold('Toolip License Analysis'));
|
|
16
|
-
console.log('');
|
|
17
|
-
console.log(`${chalk.dim('Total Packages:')} ${result.summary.total}`);
|
|
18
|
-
console.log(`${chalk.dim('Unknown Licenses:')} ${result.summary.unknown}`);
|
|
19
|
-
console.log(`${chalk.dim('Restrictive Licenses:')} ${result.summary.restrictive}`);
|
|
20
|
-
console.log('');
|
|
21
|
-
console.log(chalk.bold('License Distribution'));
|
|
22
|
-
for (const [license, count] of Object.entries(result.summary.distribution)) {
|
|
23
|
-
console.log(`${chalk.green('✓')} ${license}: ${count}`);
|
|
24
|
-
}
|
|
25
|
-
const report = createReport({
|
|
26
|
-
version: TOOLIP_VERSION,
|
|
27
|
-
command: 'licenses',
|
|
28
|
-
root: options.path,
|
|
29
|
-
findings: result.findings
|
|
30
|
-
});
|
|
31
|
-
console.log('');
|
|
32
|
-
printReportSummary(report);
|
|
33
|
-
if (options.output) {
|
|
34
|
-
await writeReport(options.output, report);
|
|
35
|
-
console.log('');
|
|
36
|
-
console.log(`${chalk.green('✓')} Report written to ${options.output}`);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=licenses.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"licenses.js","sourceRoot":"","sources":["../../../src/commands/licenses.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,uEAAuE,CAAC;SACpF,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtE,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;SAC1E,MAAM,CAAC,KAAK,EAAE,OAA0C,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { runPreCommit } from '../core/pre-commit.js';
|
|
3
|
-
export function registerPreCommitCommand(program) {
|
|
4
|
-
program
|
|
5
|
-
.command('pre-commit')
|
|
6
|
-
.description('Run blocking checks before a Git commit.')
|
|
7
|
-
.option('-p, --path <path>', 'Project path to check.', process.cwd())
|
|
8
|
-
.option('--show-findings', 'Print blocking findings.')
|
|
9
|
-
.action(async (options) => {
|
|
10
|
-
const result = await runPreCommit(options.path);
|
|
11
|
-
console.log(chalk.bold('Toolip Pre-Commit'));
|
|
12
|
-
console.log('');
|
|
13
|
-
console.log(`${chalk.dim('Critical:')} ${result.summary.critical}`);
|
|
14
|
-
console.log(`${chalk.dim('High:')} ${result.summary.high}`);
|
|
15
|
-
console.log(`${chalk.dim('Blocking Findings:')} ${result.summary.blocking}`);
|
|
16
|
-
if (options.showFindings && result.findings.length > 0) {
|
|
17
|
-
console.log('');
|
|
18
|
-
console.log(chalk.bold('Blocking Findings'));
|
|
19
|
-
for (const finding of result.findings.filter((item) => item.severity === 'critical' || item.severity === 'high')) {
|
|
20
|
-
console.log(`${chalk.red('✖')} ${finding.title}`);
|
|
21
|
-
if (finding.file)
|
|
22
|
-
console.log(` ${chalk.dim('File:')} ${finding.file}`);
|
|
23
|
-
if (finding.evidence)
|
|
24
|
-
console.log(` ${chalk.dim('Evidence:')} ${finding.evidence}`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (!result.passed) {
|
|
28
|
-
console.log('');
|
|
29
|
-
console.log(chalk.red('Pre-commit checks failed. Fix critical/high findings before committing.'));
|
|
30
|
-
process.exitCode = 1;
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
console.log('');
|
|
34
|
-
console.log(chalk.green('Pre-commit checks passed.'));
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=pre-commit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pre-commit.js","sourceRoot":"","sources":["../../../src/commands/pre-commit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACpE,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,OAAiD,EAAE,EAAE;QAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEhD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE7E,IAAI,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAE7C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CACnE,EAAE,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAClD,IAAI,OAAO,CAAC,IAAI;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzE,IAAI,OAAO,CAAC,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;YAClG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { profileProject } from '../core/profile-project.js';
|
|
2
|
-
import { printProfile } from '../utils/output.js';
|
|
3
|
-
export function registerProfileCommand(program) {
|
|
4
|
-
program
|
|
5
|
-
.command('profile')
|
|
6
|
-
.description('Fingerprint the current project and detect frameworks, languages, and tooling.')
|
|
7
|
-
.option('-p, --path <path>', 'Project path to inspect.', process.cwd())
|
|
8
|
-
.option('--json', 'Print profile as JSON.')
|
|
9
|
-
.action(async (options) => {
|
|
10
|
-
const profile = await profileProject(options.path);
|
|
11
|
-
if (options.json) {
|
|
12
|
-
console.log(JSON.stringify(profile, null, 2));
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
printProfile(profile);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=profile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../../src/commands/profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtE,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;QAC1D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEnD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { createScannerContext } from '../core/scanner-context.js';
|
|
3
|
-
import { createReport } from '../core/report.js';
|
|
4
|
-
import { writeReport } from '../core/report-writer.js';
|
|
5
|
-
import { scanDependencies } from '../core/dependency-scan.js';
|
|
6
|
-
import { calculateDependencyHealth, calculateScore } from '../core/score.js';
|
|
7
|
-
import { TOOLIP_VERSION } from '../config/version.js';
|
|
8
|
-
import { printReportSummary, printScannerContext } from '../utils/output.js';
|
|
9
|
-
export function registerScanCommand(program) {
|
|
10
|
-
program
|
|
11
|
-
.command('scan')
|
|
12
|
-
.description('Scan project dependencies and security hygiene indicators.')
|
|
13
|
-
.option('-p, --path <path>', 'Project path to scan.', process.cwd())
|
|
14
|
-
.option('-o, --output <file>', 'Write scan report to JSON or Markdown.')
|
|
15
|
-
.action(async (options) => {
|
|
16
|
-
console.log(chalk.bold('Toolip Scan'));
|
|
17
|
-
console.log('');
|
|
18
|
-
const context = await createScannerContext(options.path);
|
|
19
|
-
printScannerContext(context);
|
|
20
|
-
const dependencyScan = await scanDependencies(context.root);
|
|
21
|
-
const dependencyHealth = calculateDependencyHealth(dependencyScan.findings);
|
|
22
|
-
const score = calculateScore({ dependencyHealth });
|
|
23
|
-
const report = createReport({
|
|
24
|
-
version: TOOLIP_VERSION,
|
|
25
|
-
command: 'scan',
|
|
26
|
-
root: context.root,
|
|
27
|
-
findings: dependencyScan.findings
|
|
28
|
-
});
|
|
29
|
-
console.log('');
|
|
30
|
-
console.log(chalk.bold('Dependency Intelligence'));
|
|
31
|
-
console.log(`${chalk.dim('Total Dependencies:')} ${dependencyScan.summary.totalDependencies}`);
|
|
32
|
-
console.log(`${chalk.dim('Outdated:')} ${dependencyScan.summary.outdated}`);
|
|
33
|
-
console.log(`${chalk.dim('Deprecated:')} ${dependencyScan.summary.deprecated}`);
|
|
34
|
-
console.log(`${chalk.dim('High Risk:')} ${dependencyScan.summary.highRisk}`);
|
|
35
|
-
console.log(`${chalk.dim('Medium Risk:')} ${dependencyScan.summary.mediumRisk}`);
|
|
36
|
-
console.log(`${chalk.dim('Average Risk:')} ${dependencyScan.summary.averageRiskScore}`);
|
|
37
|
-
console.log(`${chalk.dim('Dependency Health:')} ${dependencyHealth}`);
|
|
38
|
-
console.log(`${chalk.dim('Overall Grade:')} ${score.grade}`);
|
|
39
|
-
console.log('');
|
|
40
|
-
printReportSummary(report);
|
|
41
|
-
if (options.output) {
|
|
42
|
-
await writeReport(options.output, report);
|
|
43
|
-
console.log('');
|
|
44
|
-
console.log(`${chalk.green('✓')} Report written to ${options.output}`);
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=scan.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { scanDependencies } from '../core/dependency-scan.js';
|
|
3
|
-
import { calculateDependencyHealth, calculateScore } from '../core/score.js';
|
|
4
|
-
export function registerScoreCommand(program) {
|
|
5
|
-
program
|
|
6
|
-
.command('score')
|
|
7
|
-
.description('Calculate a Toolip security scorecard for the current project.')
|
|
8
|
-
.option('-p, --path <path>', 'Project path to score.', process.cwd())
|
|
9
|
-
.action(async (options) => {
|
|
10
|
-
const dependencyScan = await scanDependencies(options.path);
|
|
11
|
-
const dependencyHealth = calculateDependencyHealth(dependencyScan.findings);
|
|
12
|
-
const score = calculateScore({ dependencyHealth });
|
|
13
|
-
console.log(chalk.bold('Toolip Security Scorecard'));
|
|
14
|
-
console.log('');
|
|
15
|
-
console.log(`${chalk.dim('Dependency Health ....')} ${score.dependencyHealth}`);
|
|
16
|
-
console.log(`${chalk.dim('Secret Hygiene .......')} ${score.secretHygiene}`);
|
|
17
|
-
console.log(`${chalk.dim('Configuration ........')} ${score.configurationSecurity}`);
|
|
18
|
-
console.log(`${chalk.dim('Git Safety ...........')} ${score.gitSafety}`);
|
|
19
|
-
console.log('');
|
|
20
|
-
console.log(`${chalk.dim('Overall Score ........')} ${score.overall}`);
|
|
21
|
-
console.log(`${chalk.dim('Grade ................')} ${score.grade}`);
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=score.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"score.js","sourceRoot":"","sources":["../../../src/commands/score.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7E,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gEAAgE,CAAC;SAC7E,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;QAC1C,MAAM,cAAc,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { access } from 'node:fs/promises';
|
|
3
|
-
import path from 'node:path';
|
|
4
|
-
import { TOOLIP_VERSION } from '../config/version.js';
|
|
5
|
-
async function canAccess(filePath) {
|
|
6
|
-
try {
|
|
7
|
-
await access(filePath);
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
catch {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
export function registerSelfTestCommand(program) {
|
|
15
|
-
program
|
|
16
|
-
.command('self-test')
|
|
17
|
-
.description('Run Toolip internal diagnostics.')
|
|
18
|
-
.action(async () => {
|
|
19
|
-
const checks = [
|
|
20
|
-
{
|
|
21
|
-
label: 'CLI Loaded',
|
|
22
|
-
passed: true
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
label: 'Command Router Ready',
|
|
26
|
-
passed: true
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
label: 'Package Manifest Found',
|
|
30
|
-
passed: await canAccess(path.join(process.cwd(), 'package.json'))
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
label: 'Scanner Foundation Ready',
|
|
34
|
-
passed: true
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
label: 'Report Engine Ready',
|
|
38
|
-
passed: true
|
|
39
|
-
}
|
|
40
|
-
];
|
|
41
|
-
console.log(chalk.bold('Toolip Self-Test'));
|
|
42
|
-
console.log(chalk.dim(`Version: ${TOOLIP_VERSION}`));
|
|
43
|
-
console.log('');
|
|
44
|
-
let failed = 0;
|
|
45
|
-
for (const check of checks) {
|
|
46
|
-
if (check.passed) {
|
|
47
|
-
console.log(`${chalk.green('✓')} ${check.label}`);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
failed += 1;
|
|
51
|
-
console.log(`${chalk.red('✖')} ${check.label}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
console.log('');
|
|
55
|
-
if (failed > 0) {
|
|
56
|
-
console.log(chalk.red(`Toolip found ${failed} failed diagnostic check(s).`));
|
|
57
|
-
process.exitCode = 1;
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
console.log(chalk.green('Toolip is healthy.'));
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=self-test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"self-test.js","sourceRoot":"","sources":["../../../src/commands/self-test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,KAAK,UAAU,SAAS,CAAC,QAAgB;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG;YACb;gBACE,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,IAAI;aACb;YACD;gBACE,KAAK,EAAE,sBAAsB;gBAC7B,MAAM,EAAE,IAAI;aACb;YACD;gBACE,KAAK,EAAE,wBAAwB;gBAC/B,MAAM,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;aAClE;YACD;gBACE,KAAK,EAAE,0BAA0B;gBACjC,MAAM,EAAE,IAAI;aACb;YACD;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,MAAM,EAAE,IAAI;aACb;SACF,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,cAAc,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,MAAM,8BAA8B,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { buildDependencyTree } from '../core/dependency-tree.js';
|
|
3
|
-
export function registerTreeCommand(program) {
|
|
4
|
-
program
|
|
5
|
-
.command('tree')
|
|
6
|
-
.description('Display a dependency tree summary.')
|
|
7
|
-
.option('-p, --path <path>', 'Project path to analyze.', process.cwd())
|
|
8
|
-
.action(async (options) => {
|
|
9
|
-
const tree = await buildDependencyTree(options.path);
|
|
10
|
-
console.log(chalk.bold('Toolip Dependency Tree'));
|
|
11
|
-
console.log('');
|
|
12
|
-
console.log(`${chalk.dim('Direct Dependencies:')} ${tree.summary.direct}`);
|
|
13
|
-
console.log(`${chalk.dim('Transitive Dependencies:')} ${tree.summary.transitive}`);
|
|
14
|
-
console.log(`${chalk.dim('Max Depth:')} ${tree.summary.maxDepth}`);
|
|
15
|
-
console.log('');
|
|
16
|
-
for (const dependency of tree.dependencies) {
|
|
17
|
-
console.log(`${chalk.green('├─')} ${dependency.name}@${dependency.version} ${chalk.dim(`(${dependency.type})`)}`);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=tree.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../../../src/commands/tree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SACtE,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAErD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { deleteSecret, exportEnv, getSecret, initVault, listSecrets, setSecret } from '../core/vault.js';
|
|
3
|
-
export function registerVaultCommand(program) {
|
|
4
|
-
const vault = program
|
|
5
|
-
.command('vault')
|
|
6
|
-
.description('Manage encrypted local secrets with Toolip Vault.');
|
|
7
|
-
vault
|
|
8
|
-
.command('init')
|
|
9
|
-
.description('Initialize an encrypted local vault.')
|
|
10
|
-
.requiredOption('--password <password>', 'Master password.')
|
|
11
|
-
.action(async (options) => {
|
|
12
|
-
await initVault(options.password);
|
|
13
|
-
console.log(`${chalk.green('✓')} Toolip Vault initialized.`);
|
|
14
|
-
});
|
|
15
|
-
vault
|
|
16
|
-
.command('set <key> <value>')
|
|
17
|
-
.description('Store or update a secret.')
|
|
18
|
-
.option('--env <env>', 'Secret environment.', 'development')
|
|
19
|
-
.requiredOption('--password <password>', 'Master password.')
|
|
20
|
-
.action(async (key, value, options) => {
|
|
21
|
-
await setSecret({
|
|
22
|
-
key,
|
|
23
|
-
value,
|
|
24
|
-
env: options.env,
|
|
25
|
-
masterPassword: options.password
|
|
26
|
-
});
|
|
27
|
-
console.log(`${chalk.green('✓')} Stored ${key} for ${options.env}.`);
|
|
28
|
-
});
|
|
29
|
-
vault
|
|
30
|
-
.command('get <key>')
|
|
31
|
-
.description('Retrieve a secret value.')
|
|
32
|
-
.option('--env <env>', 'Secret environment.', 'development')
|
|
33
|
-
.requiredOption('--password <password>', 'Master password.')
|
|
34
|
-
.action(async (key, options) => {
|
|
35
|
-
const secret = await getSecret({
|
|
36
|
-
key,
|
|
37
|
-
env: options.env,
|
|
38
|
-
masterPassword: options.password
|
|
39
|
-
});
|
|
40
|
-
console.log(secret.value);
|
|
41
|
-
});
|
|
42
|
-
vault
|
|
43
|
-
.command('list')
|
|
44
|
-
.description('List secret names without revealing values.')
|
|
45
|
-
.option('--env <env>', 'Filter by environment.')
|
|
46
|
-
.requiredOption('--password <password>', 'Master password.')
|
|
47
|
-
.action(async (options) => {
|
|
48
|
-
const secrets = await listSecrets({
|
|
49
|
-
env: options.env,
|
|
50
|
-
masterPassword: options.password
|
|
51
|
-
});
|
|
52
|
-
if (secrets.length === 0) {
|
|
53
|
-
console.log(chalk.yellow('No secrets found.'));
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
for (const secret of secrets) {
|
|
57
|
-
console.log(`${chalk.green('✓')} ${secret.key} ${chalk.dim(`(${secret.env})`)}`);
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
vault
|
|
61
|
-
.command('delete <key>')
|
|
62
|
-
.description('Delete a secret.')
|
|
63
|
-
.option('--env <env>', 'Secret environment.', 'development')
|
|
64
|
-
.requiredOption('--password <password>', 'Master password.')
|
|
65
|
-
.action(async (key, options) => {
|
|
66
|
-
const deleted = await deleteSecret({
|
|
67
|
-
key,
|
|
68
|
-
env: options.env,
|
|
69
|
-
masterPassword: options.password
|
|
70
|
-
});
|
|
71
|
-
console.log(deleted ? `${chalk.green('✓')} Deleted ${key}.` : chalk.yellow(`No secret found for ${key}.`));
|
|
72
|
-
});
|
|
73
|
-
vault
|
|
74
|
-
.command('export')
|
|
75
|
-
.description('Export secrets as shell-compatible environment lines.')
|
|
76
|
-
.option('--env <env>', 'Filter by environment.')
|
|
77
|
-
.requiredOption('--password <password>', 'Master password.')
|
|
78
|
-
.action(async (options) => {
|
|
79
|
-
const output = await exportEnv({
|
|
80
|
-
env: options.env,
|
|
81
|
-
masterPassword: options.password
|
|
82
|
-
});
|
|
83
|
-
console.log(output);
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=vault.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/commands/vault.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,qBAAqB;IAC3B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,2BAA2B;CACpC,CAAC"}
|