scanoss 0.4.10-beta → 0.4.12-beta

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 (67) hide show
  1. package/.idea/workspace.xml +22 -18
  2. package/build/main/cli/bin/cli-bin.js +5 -5
  3. package/build/main/cli/commands/wfp.d.ts +1 -0
  4. package/build/main/cli/commands/wfp.js +54 -0
  5. package/build/main/sdk/scanner/Dispatcher/Dispatcher.js +1 -1
  6. package/build/main/sdk/scanner/Scanner.js +3 -3
  7. package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +1 -1
  8. package/build/main/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +33 -31
  9. package/build/main/tsconfig.tsbuildinfo +21 -21
  10. package/build/module/cli/bin/cli-bin.js +5 -5
  11. package/build/module/cli/commands/wfp.d.ts +1 -0
  12. package/build/module/cli/commands/wfp.js +48 -0
  13. package/build/module/sdk/scanner/Scanner.js +3 -3
  14. package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.d.ts +1 -1
  15. package/build/module/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.js +33 -31
  16. package/build/module/tsconfig.module.tsbuildinfo +21 -21
  17. package/package-lock.json +67 -493
  18. package/package.json +1 -1
  19. package/src/cli/bin/cli-bin.ts +4 -4
  20. package/src/cli/commands/{fingerprint.ts → wfp.ts} +1 -1
  21. package/src/sdk/scanner/Scanner.ts +2 -2
  22. package/src/sdk/scanner/WfpProvider/WfpSplitter/WfpSplitter.ts +36 -32
  23. package/tests/scanoss.sh +3 -8
  24. package/tests/sdk/Scanner/WfpProvider/WfpSplitter/WfpSplitter.spec.ts +0 -2
  25. package/yarn.lock +4886 -4737
  26. package/build/main/cli/commands/fingerprint.d.ts +0 -1
  27. package/build/main/cli/commands/fingerprint.js +0 -54
  28. package/build/main/sdk/Decompress/DecompressionManager.d.ts +0 -12
  29. package/build/main/sdk/Decompress/DecompressionManager.js +0 -65
  30. package/build/main/sdk/Decompress/Decompressor/DecompressTgz.d.ts +0 -5
  31. package/build/main/sdk/Decompress/Decompressor/DecompressTgz.js +0 -22
  32. package/build/main/sdk/Decompress/Decompressor/DecompressZips.d.ts +0 -5
  33. package/build/main/sdk/Decompress/Decompressor/DecompressZips.js +0 -24
  34. package/build/main/sdk/Decompress/Decompressor/Decompressor.d.ts +0 -10
  35. package/build/main/sdk/Decompress/Decompressor/Decompressor.js +0 -18
  36. package/build/main/sdk/modules/reports/Report.d.ts +0 -24
  37. package/build/main/sdk/modules/reports/Report.js +0 -75
  38. package/build/main/sdk/modules/reports/ReportAdapter.d.ts +0 -12
  39. package/build/main/sdk/modules/reports/ReportAdapter.js +0 -117
  40. package/build/main/sdk/modules/reports/htmlReport/HTMLReport.d.ts +0 -14
  41. package/build/main/sdk/modules/reports/htmlReport/HTMLReport.js +0 -39
  42. package/build/main/sdk/modules/reports/types.d.ts +0 -44
  43. package/build/main/sdk/modules/reports/types.js +0 -8
  44. package/build/main/sdk/tree/Filters/DecompressionFilter.d.ts +0 -7
  45. package/build/main/sdk/tree/Filters/DecompressionFilter.js +0 -21
  46. package/build/module/cli/commands/fingerprint.d.ts +0 -1
  47. package/build/module/cli/commands/fingerprint.js +0 -48
  48. package/build/module/sdk/Decompress/DecompressionManager.d.ts +0 -12
  49. package/build/module/sdk/Decompress/DecompressionManager.js +0 -59
  50. package/build/module/sdk/Decompress/Decompressor/DecompressTgz.d.ts +0 -5
  51. package/build/module/sdk/Decompress/Decompressor/DecompressTgz.js +0 -16
  52. package/build/module/sdk/Decompress/Decompressor/DecompressZips.d.ts +0 -5
  53. package/build/module/sdk/Decompress/Decompressor/DecompressZips.js +0 -18
  54. package/build/module/sdk/Decompress/Decompressor/Decompressor.d.ts +0 -10
  55. package/build/module/sdk/Decompress/Decompressor/Decompressor.js +0 -15
  56. package/build/module/sdk/modules/reports/Report.d.ts +0 -24
  57. package/build/module/sdk/modules/reports/Report.js +0 -80
  58. package/build/module/sdk/modules/reports/ReportAdapter.d.ts +0 -12
  59. package/build/module/sdk/modules/reports/ReportAdapter.js +0 -115
  60. package/build/module/sdk/modules/reports/htmlReport/HTMLReport.d.ts +0 -14
  61. package/build/module/sdk/modules/reports/htmlReport/HTMLReport.js +0 -41
  62. package/build/module/sdk/modules/reports/types.d.ts +0 -44
  63. package/build/module/sdk/modules/reports/types.js +0 -6
  64. package/build/module/sdk/tree/Filters/DecompressionFilter.d.ts +0 -7
  65. package/build/module/sdk/tree/Filters/DecompressionFilter.js +0 -18
  66. package/build/tsconfig.module.tsbuildinfo +0 -1
  67. package/build/tsconfig.tsbuildinfo +0 -1
@@ -1,48 +0,0 @@
1
- import fs from 'fs';
2
- import cliProgress from 'cli-progress';
3
- import { isFolder } from './helpers';
4
- import { ScannerEvents, WinnowingMode } from '../../sdk/scanner/ScannerTypes';
5
- import { WfpCalculator } from '../../sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator';
6
- import { Tree } from '../../sdk/tree/Tree';
7
- import { DependencyFilter } from '../../sdk/tree/Filters/DependencyFilter';
8
- export async function fingerprintHandler(rootPath, options) {
9
- rootPath = rootPath.replace(/\/$/, ''); // Remove trailing slash if exists
10
- rootPath = rootPath.replace(/^\./, process.env.PWD); // Convert relative path to absolute path.
11
- const pathIsFolder = await isFolder(rootPath);
12
- const wfpCalculator = new WfpCalculator();
13
- let filesToFingerprint = [];
14
- if (pathIsFolder) {
15
- const tree = new Tree(rootPath);
16
- tree.build();
17
- filesToFingerprint = tree.getFileList(new DependencyFilter(""));
18
- }
19
- else {
20
- filesToFingerprint.push(rootPath);
21
- }
22
- const optBar1 = { format: 'Fingerprinting Progress: [{bar}] {percentage}% | Fingerprinted {value} files of {total}' };
23
- const bar1 = new cliProgress.SingleBar(optBar1, cliProgress.Presets.shades_classic);
24
- bar1.start(filesToFingerprint.length, 0);
25
- let fingerprints = '';
26
- wfpCalculator.on(ScannerEvents.WINNOWING_NEW_CONTENT, (fingerprintPackage) => {
27
- bar1.increment(fingerprintPackage.getNumberFilesFingerprinted());
28
- fingerprints = fingerprints.concat(fingerprintPackage.getContent());
29
- });
30
- if (options.verbose)
31
- wfpCalculator.on(ScannerEvents.WINNOWER_LOG, (log) => {
32
- console.error(log);
33
- });
34
- wfpCalculator.on(ScannerEvents.WINNOWING_FINISHED, () => {
35
- bar1.stop();
36
- if (options.output) {
37
- fs.writeFileSync(options.output, fingerprints);
38
- }
39
- else {
40
- console.log(fingerprints);
41
- }
42
- });
43
- const wfpInput = { fileList: filesToFingerprint, folderRoot: rootPath };
44
- if (options.hpsm)
45
- wfpInput.winnowingMode = WinnowingMode.FULL_WINNOWING_HPSM;
46
- wfpCalculator.start(wfpInput);
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZ2VycHJpbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2ZpbmdlcnByaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFFdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUUxRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFHM0UsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxRQUFnQixFQUFFLE9BQVk7SUFFckUsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUUsa0NBQWtDO0lBQzNFLFFBQVEsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsMENBQTBDO0lBQ2hHLE1BQU0sWUFBWSxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFFMUMsSUFBSSxrQkFBa0IsR0FBYSxFQUFFLENBQUM7SUFDdEMsSUFBSSxZQUFZLEVBQUU7UUFDaEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2Isa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FDakU7U0FBTTtRQUNMLGtCQUFrQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUNsQztJQUdELE1BQU0sT0FBTyxHQUFHLEVBQUUsTUFBTSxFQUFFLHlGQUF5RixFQUFFLENBQUM7SUFDdEgsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BGLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpDLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN0QixhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLGtCQUFzQyxFQUFFLEVBQUU7UUFDL0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUM7UUFDakUsWUFBWSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUUsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUUsQ0FBQztJQUN4RSxDQUFDLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxDQUFDLE9BQU87UUFDakIsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDM0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUVMLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtRQUN0RCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDakIsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBc0IsRUFBQyxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFBO0lBQ3hGLElBQUcsT0FBTyxDQUFDLElBQUk7UUFBRSxRQUFRLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztJQUM1RSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBR2hDLENBQUMifQ==
@@ -1,12 +0,0 @@
1
- import { Decompressor } from './Decompressor/Decompressor';
2
- export declare class DecompressionManager {
3
- private decompressorList;
4
- private decompressionLevel;
5
- private suffix;
6
- private removeFolderOnFailure;
7
- constructor(decompressionLevel?: number, suffix?: string, removeFolderOnFailure?: boolean);
8
- addDecompressor(d: Decompressor): void;
9
- getSupportedFormats(): Array<string>;
10
- decompress(archivesPaths: Array<string>): Promise<Array<string>>;
11
- decompressRecursive(archivePath: string, level: number): Promise<void>;
12
- }
@@ -1,59 +0,0 @@
1
- import path from 'path';
2
- import fs from 'fs';
3
- import { Tree } from '../tree/Tree';
4
- import { DecompressionFilter } from '../tree/Filters/DecompressionFilter';
5
- import { DecompressZip } from './Decompressor/DecompressZips';
6
- import { DecompressTgz } from './Decompressor/DecompressTgz';
7
- export class DecompressionManager {
8
- constructor(decompressionLevel = 1, suffix = "-unzipped", removeFolderOnFailure = false) {
9
- this.decompressionLevel = decompressionLevel;
10
- this.removeFolderOnFailure = removeFolderOnFailure;
11
- this.suffix = suffix;
12
- this.decompressorList = [
13
- new DecompressTgz(),
14
- new DecompressZip()
15
- ];
16
- }
17
- addDecompressor(d) {
18
- this.decompressorList.push(d);
19
- }
20
- getSupportedFormats() {
21
- const supportedFormats = [];
22
- this.decompressorList.forEach((d) => {
23
- supportedFormats.push(...d.getSupportedFormats());
24
- });
25
- return supportedFormats;
26
- }
27
- async decompress(archivesPaths) {
28
- for (const archivePath of archivesPaths)
29
- await this.decompressRecursive(archivePath, 0);
30
- const parentFoldersPath = archivesPaths.map(archivePath => `${archivePath}${this.suffix}`);
31
- return parentFoldersPath;
32
- }
33
- async decompressRecursive(archivePath, level) {
34
- if (level >= this.decompressionLevel)
35
- return;
36
- const archiveRootPath = path.dirname(archivePath);
37
- const archiveName = path.basename(archivePath);
38
- const newFolderPath = `${archiveRootPath}${path.sep}${archiveName}${this.suffix}`;
39
- const isSupported = this.decompressorList.some((d) => d.isSupported(archiveName));
40
- if (isSupported) {
41
- await fs.promises.mkdir(newFolderPath, { recursive: true });
42
- //Search for decompressor and extract archive
43
- for (const d of this.decompressorList) {
44
- if (d.isSupported(archiveName)) {
45
- await d.run(archivePath, newFolderPath);
46
- break;
47
- }
48
- }
49
- //Search for new archives
50
- const tree = new Tree(newFolderPath);
51
- tree.build();
52
- const newFilesPath = tree.getFileList(new DecompressionFilter(""));
53
- for (const newFilePath of newFilesPath) {
54
- await this.decompressRecursive(newFilePath, level + 1);
55
- }
56
- }
57
- }
58
- }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjb21wcmVzc2lvbk1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RlY29tcHJlc3MvRGVjb21wcmVzc2lvbk1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFN0QsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixZQUFZLHFCQUE2QixDQUFDLEVBQUUsU0FBaUIsV0FBVyxFQUFFLHdCQUFpQyxLQUFLO1FBQzlHLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMscUJBQXFCLEdBQUcscUJBQXFCLENBQUM7UUFDbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFFckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLElBQUksYUFBYSxFQUFFO1lBQ25CLElBQUksYUFBYSxFQUFFO1NBQ3BCLENBQUM7SUFFSixDQUFDO0lBRU0sZUFBZSxDQUFDLENBQWU7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNsQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFBO1FBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxhQUE0QjtRQUNsRCxLQUFLLE1BQU0sV0FBVyxJQUFJLGFBQWE7WUFBRSxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDM0YsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLG1CQUFtQixDQUFDLFdBQW1CLEVBQUUsS0FBYTtRQUNqRSxJQUFHLEtBQUssSUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQUUsT0FBTTtRQUV6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsTUFBTSxhQUFhLEdBQUcsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRWxGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQTtRQUNqRixJQUFHLFdBQVcsRUFBRTtZQUNkLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFNUQsNkNBQTZDO1lBQzdDLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNyQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUU7b0JBQzlCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7b0JBQ3hDLE1BQU07aUJBQ1A7YUFDRjtZQUdELHlCQUF5QjtZQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDWixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRSxLQUFLLE1BQU0sV0FBVyxJQUFJLFlBQVksRUFBRTtnQkFDdEMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0RDtTQUNGO0lBRUgsQ0FBQztDQUVGIn0=
@@ -1,5 +0,0 @@
1
- import { Decompressor } from './Decompressor';
2
- export declare class DecompressTgz extends Decompressor {
3
- constructor();
4
- run(archivePath: string, destPath: string): Promise<void>;
5
- }
@@ -1,16 +0,0 @@
1
- import { Decompressor } from './Decompressor';
2
- import tar from 'tar';
3
- export class DecompressTgz extends Decompressor {
4
- constructor() {
5
- super();
6
- this.supportedFormats = [
7
- ".tar.gz",
8
- ".tgz",
9
- ".tar",
10
- ];
11
- }
12
- async run(archivePath, destPath) {
13
- return tar.x({ C: destPath, file: archivePath });
14
- }
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjb21wcmVzc1Rnei5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvRGVjb21wcmVzcy9EZWNvbXByZXNzb3IvRGVjb21wcmVzc1Rnei50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBRXRCLE1BQU0sT0FBTyxhQUFjLFNBQVEsWUFBWTtJQUU3QztRQUNFLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLGdCQUFnQixHQUFHO1lBQ3RCLFNBQVM7WUFDVCxNQUFNO1lBQ04sTUFBTTtTQUNQLENBQUE7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFFBQWdCO1FBQ2xELE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUVGIn0=
@@ -1,5 +0,0 @@
1
- import { Decompressor } from './Decompressor';
2
- export declare class DecompressZip extends Decompressor {
3
- constructor();
4
- run(archivePath: string, destPath: string): Promise<void>;
5
- }
@@ -1,18 +0,0 @@
1
- import { Decompressor } from './Decompressor';
2
- import AdmZip from 'adm-zip';
3
- export class DecompressZip extends Decompressor {
4
- constructor() {
5
- super();
6
- this.supportedFormats = [
7
- ".zip",
8
- ".jar",
9
- ".ear",
10
- ".war"
11
- ];
12
- }
13
- async run(archivePath, destPath) {
14
- const zip = new AdmZip(archivePath);
15
- zip.extractAllTo(destPath);
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjb21wcmVzc1ppcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0RlY29tcHJlc3MvRGVjb21wcmVzc29yL0RlY29tcHJlc3NaaXBzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFFN0IsTUFBTSxPQUFPLGFBQWMsU0FBUSxZQUFZO0lBRTdDO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsTUFBTTtZQUNOLE1BQU07WUFDTixNQUFNO1lBQ04sTUFBTTtTQUNQLENBQUE7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFFBQWdCO1FBQ3BELE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUVGIn0=
@@ -1,10 +0,0 @@
1
- export declare abstract class Decompressor {
2
- protected supportedFormats: Array<string>;
3
- abstract run(archivePath: string, destPath: string): Promise<void>;
4
- isSupported(filename: string): boolean;
5
- /**
6
- * Returns the extension supported by this decompressor
7
- * Includes the '.' appended
8
- */
9
- getSupportedFormats(): Array<string>;
10
- }
@@ -1,15 +0,0 @@
1
- export class Decompressor {
2
- isSupported(filename) {
3
- if (this.supportedFormats.some((format) => filename.endsWith(format)))
4
- return true;
5
- return false;
6
- }
7
- /**
8
- * Returns the extension supported by this decompressor
9
- * Includes the '.' appended
10
- */
11
- getSupportedFormats() {
12
- return this.supportedFormats;
13
- }
14
- }
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjb21wcmVzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9EZWNvbXByZXNzL0RlY29tcHJlc3Nvci9EZWNvbXByZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixZQUFZO0lBS3pCLFdBQVcsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUNuRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFHRDs7O09BR0c7SUFDSSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztDQUVGIn0=
@@ -1,24 +0,0 @@
1
- import { ILicenses, IReportData, IReportEntry, ISaveResponse, Summary } from './types';
2
- export declare const reportDefaultPath: {
3
- html: any;
4
- };
5
- export declare abstract class Report {
6
- private readonly resultPath;
7
- private readonly dependenciesPath;
8
- private vulnerabilitiesPath;
9
- private readonly outputPath;
10
- private licenseMapper;
11
- private fileExtension;
12
- private summary;
13
- private readonly projectName;
14
- private licenses;
15
- protected constructor(params: IReportEntry);
16
- abstract generate(): any;
17
- protected setFileExtension(ext: string): void;
18
- protected abstract validTemplateExtension(): boolean;
19
- protected save(file: string, fileName: string, folder: string): Promise<ISaveResponse>;
20
- protected readFile(path: string): Promise<any>;
21
- getReportData(): Promise<IReportData>;
22
- getLicenseMapper(): Record<string, ILicenses>;
23
- getSummary(): Summary;
24
- }
@@ -1,80 +0,0 @@
1
- import { SaveStatus } from './types';
2
- import { ReportAdapter } from './ReportAdapter';
3
- const fs = require('fs').promises;
4
- const f = require('fs');
5
- const path = require('path');
6
- export const reportDefaultPath = {
7
- html: path.join(__dirname, "../../../../../assets/htmlTemplate/template.html")
8
- };
9
- export class Report {
10
- resultPath;
11
- dependenciesPath;
12
- vulnerabilitiesPath;
13
- outputPath;
14
- licenseMapper = {};
15
- fileExtension;
16
- summary;
17
- projectName;
18
- licenses;
19
- constructor(params) {
20
- this.projectName = params.projectName;
21
- this.resultPath = params.resultPath;
22
- this.dependenciesPath = params.dependencyPath ? params.dependencyPath : null;
23
- this.vulnerabilitiesPath = params.vulnerabilityPath ? params.vulnerabilityPath : null;
24
- this.outputPath = params.outputPath;
25
- this.fileExtension = null;
26
- this.summary = { matchedFiles: 0, noMatchFiles: 0, totalFiles: 0 };
27
- }
28
- setFileExtension(ext) {
29
- this.fileExtension = ext;
30
- }
31
- async save(file, fileName, folder) {
32
- try {
33
- await fs.writeFile(this.outputPath, file);
34
- return {
35
- status: SaveStatus.OK,
36
- path: this.outputPath,
37
- format: path.extname(this.outputPath),
38
- };
39
- }
40
- catch (error) {
41
- return {
42
- status: SaveStatus.FAILED,
43
- path: this.outputPath,
44
- format: path.extname(this.outputPath),
45
- message: error.message
46
- };
47
- }
48
- }
49
- async readFile(path) {
50
- const data = await fs.readFile(path);
51
- return data;
52
- }
53
- async getReportData() {
54
- const reportAdapter = new ReportAdapter(this);
55
- const results = await this.readFile(this.resultPath);
56
- const r = JSON.parse(results);
57
- reportAdapter.getResultLicenses(r);
58
- this.summary.totalFiles = reportAdapter.getTotalFiles(r);
59
- if (this.dependenciesPath) {
60
- const dependencies = await this.readFile(this.dependenciesPath);
61
- reportAdapter.getDependenciesLicenses(JSON.parse(dependencies).filesList);
62
- }
63
- // set unknown licenses to the of the array
64
- // this.unknownLicensesToEnd();
65
- reportAdapter.checkForIncompatibilities(this.licenses);
66
- return {
67
- projectName: this.projectName,
68
- licenses: this.licenses,
69
- summary: this.summary,
70
- date: new Date().toLocaleTimeString(),
71
- };
72
- }
73
- getLicenseMapper() {
74
- return this.licenseMapper;
75
- }
76
- getSummary() {
77
- return this.summary;
78
- }
79
- }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9tb2R1bGVzL3JlcG9ydHMvUmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTCxVQUFVLEVBQ1gsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUU1QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsa0RBQWtELENBQUM7Q0FDOUUsQ0FBQTtBQUVELE1BQU0sT0FBZ0IsTUFBTTtJQUNULFVBQVUsQ0FBUztJQUNuQixnQkFBZ0IsQ0FBVTtJQUNuQyxtQkFBbUIsQ0FBUztJQUNuQixVQUFVLENBQVM7SUFDNUIsYUFBYSxHQUE4QixFQUFFLENBQUM7SUFDOUMsYUFBYSxDQUFTO0lBQ3RCLE9BQU8sQ0FBVztJQUNULFdBQVcsQ0FBUztJQUM3QixRQUFRLENBQW1CO0lBRW5DLFlBQXNCLE1BQW9CO1FBQ3hDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQTtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixD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
@@ -1,12 +0,0 @@
1
- import { Report } from './Report';
2
- import { ILicenses } from './types';
3
- export declare class ReportAdapter {
4
- private report;
5
- constructor(report: Report);
6
- getResultLicenses(results: Record<string, any>): void;
7
- getTotalFiles(results: Record<string, any>): number;
8
- getDependenciesLicenses(dependencies: any): void;
9
- private getNewComponent;
10
- private addComponentToLicense;
11
- checkForIncompatibilities(licenses: Array<ILicenses>): void;
12
- }
@@ -1,115 +0,0 @@
1
- export class ReportAdapter {
2
- report;
3
- constructor(report) {
4
- this.report = report;
5
- }
6
- getResultLicenses(results) {
7
- const licenses = {};
8
- Object.entries(results).forEach(([key, value]) => {
9
- value.forEach((v) => {
10
- if (v.id != 'none') {
11
- this.report.getSummary().matchedFiles++;
12
- // Licenses
13
- v.licenses.forEach((l) => {
14
- const component = this.getNewComponent(v.purl[0], v.vendor, v.version, v.component, v.url);
15
- if (!this.report.getLicenseMapper()[l.name]) {
16
- this.report.getLicenseMapper()[l.name] = {
17
- value: 1,
18
- label: l.name,
19
- copyleft: l.copyleft === 'yes' ? true : false,
20
- hasIncompatibles: [],
21
- incompatibleWith: l.incompatible_with !== undefined ? l.incompatible_with.split(',').map(il => il.trim()) : [],
22
- components: [component]
23
- };
24
- }
25
- else {
26
- this.addComponentToLicense(l.name, v.purl[0], v.version, component);
27
- }
28
- });
29
- }
30
- else {
31
- this.report.getSummary().noMatchFiles++;
32
- }
33
- });
34
- });
35
- }
36
- getTotalFiles(results) {
37
- return Object.keys(results).length;
38
- }
39
- getDependenciesLicenses(dependencies) {
40
- dependencies.map((f) => {
41
- //dependencies
42
- f.dependenciesList.map((d) => {
43
- d.licensesList.map((licenses) => {
44
- const component = this.getNewComponent(d.purl, null, d.version, d.component, '');
45
- if (licenses.spdxId !== '') {
46
- licenses.spdxId.split(/;|\//g).forEach((l) => {
47
- if (!this.report.getLicenseMapper()[l]) {
48
- this.report.getLicenseMapper()[l] = {
49
- label: l,
50
- value: 1,
51
- copyleft: false,
52
- hasIncompatibles: [],
53
- incompatibleWith: [],
54
- components: [component],
55
- };
56
- }
57
- else {
58
- this.addComponentToLicense(l, d.purl, d.version, component);
59
- }
60
- });
61
- }
62
- else { //Unknown licenses
63
- if (!this.report.getLicenseMapper()['unknown']) {
64
- this.report.getLicenseMapper().unknown = {
65
- label: 'unknown',
66
- value: 1,
67
- copyleft: false,
68
- hasIncompatibles: [],
69
- incompatibleWith: [],
70
- components: [component],
71
- };
72
- }
73
- else {
74
- this.addComponentToLicense('unknown', d.purl, d.version, component);
75
- }
76
- }
77
- });
78
- });
79
- });
80
- }
81
- getNewComponent(purl, vendor, version, name, url) {
82
- return {
83
- purl,
84
- vendor: vendor ? vendor : '',
85
- versions: [version],
86
- name: name ? name : '',
87
- url,
88
- };
89
- }
90
- addComponentToLicense(license, purl, version, component) {
91
- const auxComp = this.report.getLicenseMapper()[license].components.findIndex((c) => c.purl === purl);
92
- if (auxComp >= 0) { //if component exists
93
- const auxVersion = this.report.getLicenseMapper()[license].components[auxComp].versions.find((version) => version === version);
94
- if (!auxVersion) {
95
- this.report.getLicenseMapper()[license].components[auxComp].versions.push(version);
96
- this.report.getLicenseMapper()[license].value++;
97
- }
98
- }
99
- else {
100
- this.report.getLicenseMapper()[license].components.push(component);
101
- this.report.getLicenseMapper()[license].value++;
102
- }
103
- }
104
- checkForIncompatibilities(licenses) {
105
- for (let l = 0; l < licenses.length; l += 1) {
106
- const license = licenses[l];
107
- if (license.incompatibleWith !== undefined)
108
- for (let i = 0; i < license.incompatibleWith.length; i += 1) {
109
- if (licenses.some((lic) => lic.label === license.incompatibleWith[i]))
110
- license.hasIncompatibles.push(license.incompatibleWith[i]);
111
- }
112
- }
113
- }
114
- }
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3J0QWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvbW9kdWxlcy9yZXBvcnRzL1JlcG9ydEFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxPQUFPLGFBQWE7SUFDbEIsTUFBTSxDQUFTO0lBQ3JCLFlBQVksTUFBYztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsT0FBNEI7UUFDakQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsS0FBSyxDQUFDLEVBQUMsRUFBRTtZQUM3QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUU7Z0JBQ2pCLElBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBRSxNQUFNLEVBQUM7b0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDeEMsV0FBVztvQkFDWCxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFO3dCQUN0QixNQUFNLFNBQVMsR0FBSyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUN6RixJQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTs0QkFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxJ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
@@ -1,14 +0,0 @@
1
- import { Report } from '../Report';
2
- import { IReportEntry, ISaveResponse } from '../types';
3
- export declare class HTMLReport extends Report {
4
- private html;
5
- private readonly htmlTemplatePath;
6
- private readonly extension;
7
- private readonly fileName;
8
- private readonly folder;
9
- constructor(params: IReportEntry);
10
- generate(): Promise<string>;
11
- private setDataOnHtmlFile;
12
- save(): Promise<ISaveResponse>;
13
- protected validTemplateExtension(): boolean;
14
- }
@@ -1,41 +0,0 @@
1
- import { Report, reportDefaultPath } from '../Report';
2
- const path = require('path');
3
- export class HTMLReport extends Report {
4
- html;
5
- htmlTemplatePath;
6
- extension;
7
- fileName;
8
- folder;
9
- constructor(params) {
10
- super(params);
11
- this.htmlTemplatePath = params.templatePath ? params.templatePath : reportDefaultPath.html;
12
- this.html = null;
13
- this.extension = '.html';
14
- this.folder = 'HTML';
15
- this.fileName = 'report.html';
16
- super.setFileExtension(this.extension);
17
- }
18
- async generate() {
19
- const reportData = await this.getReportData();
20
- await this.setDataOnHtmlFile(reportData);
21
- return this.html;
22
- }
23
- async setDataOnHtmlFile(reportData) {
24
- if (!this.validTemplateExtension())
25
- throw new Error('Invalid template extension');
26
- let html = (await this.readFile(this.htmlTemplatePath)).toString();
27
- if (!html)
28
- throw new Error('Invalid template path');
29
- html = html.replace('#DATA', JSON.stringify(reportData));
30
- this.html = html;
31
- }
32
- async save() {
33
- const response = await super.save(this.html, this.fileName, this.folder);
34
- return response;
35
- }
36
- validTemplateExtension() {
37
- const templateExtension = path.extname(this.htmlTemplatePath);
38
- return templateExtension === this.extension;
39
- }
40
- }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSFRNTFJlcG9ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvbW9kdWxlcy9yZXBvcnRzL2h0bWxSZXBvcnQvSFRNTFJlcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBT3RELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUU1QixNQUFNLE9BQU8sVUFBVyxTQUFRLE1BQU07SUFDMUIsSUFBSSxDQUFTO0lBQ0osZ0JBQWdCLENBQVM7SUFDekIsU0FBUyxDQUFVO0lBQ25CLFFBQVEsQ0FBVTtJQUNsQixNQUFNLENBQVM7SUFFaEMsWUFBWSxNQUFvQjtRQUM5QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQzFGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQzlCLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRO1FBQ25CLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRU8sS0FBSyxDQUFDLGlCQUFpQixDQUFDLFVBQXVCO1FBQ3JELElBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNuRSxJQUFHLENBQUMsSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNuRCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNiLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hFLE9BQVEsUUFBUSxDQUFDO0lBQ3JCLENBQUM7SUFFUSxzQkFBc0I7UUFDakMsTUFBTSxpQkFBaUIsR0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBQy9ELE9BQU8saUJBQWlCLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0NBRUYifQ==
@@ -1,44 +0,0 @@
1
- export interface IReportEntry {
2
- resultPath: string;
3
- dependencyPath?: string;
4
- vulnerabilityPath?: string;
5
- outputPath: string;
6
- templatePath?: string;
7
- projectName: string;
8
- }
9
- export interface ILicenses {
10
- label: string;
11
- value: number;
12
- components: Array<Component>;
13
- incompatibleWith: Array<string>;
14
- hasIncompatibles: Array<string>;
15
- copyleft: boolean;
16
- }
17
- export interface IReportData {
18
- projectName: string;
19
- licenses: Array<ILicenses>;
20
- summary: Summary;
21
- date: string;
22
- }
23
- export interface Component {
24
- purl: string;
25
- versions: Array<string>;
26
- url: string;
27
- name: string;
28
- vendor: string;
29
- }
30
- export interface ISaveResponse {
31
- status: SaveStatus;
32
- path: string;
33
- format: string;
34
- message?: string;
35
- }
36
- export declare enum SaveStatus {
37
- OK = 0,
38
- FAILED = 1
39
- }
40
- export interface Summary {
41
- matchedFiles: number;
42
- noMatchFiles: number;
43
- totalFiles: number;
44
- }
@@ -1,6 +0,0 @@
1
- export var SaveStatus;
2
- (function (SaveStatus) {
3
- SaveStatus[SaveStatus["OK"] = 0] = "OK";
4
- SaveStatus[SaveStatus["FAILED"] = 1] = "FAILED";
5
- })(SaveStatus || (SaveStatus = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2RrL21vZHVsZXMvcmVwb3J0cy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5Q0EsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQix1Q0FBRSxDQUFBO0lBQ0YsK0NBQU0sQ0FBQTtBQUNSLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQiJ9
@@ -1,7 +0,0 @@
1
- import { Filter } from './Filter';
2
- import Node from '../Node';
3
- export declare class DecompressionFilter extends Filter {
4
- private supportedFileExtension;
5
- constructor(filterName: string);
6
- evaluate(node: Node): boolean;
7
- }
@@ -1,18 +0,0 @@
1
- import { Filter } from './Filter';
2
- import { NodeType } from '../Node';
3
- import { DecompressionManager } from '../../Decompress/DecompressionManager';
4
- export class DecompressionFilter extends Filter {
5
- constructor(filterName) {
6
- super();
7
- this.supportedFileExtension = new DecompressionManager().getSupportedFormats();
8
- }
9
- //Returns true if you want the file
10
- evaluate(node) {
11
- if (node.getType() == NodeType.FOLDER)
12
- return true;
13
- if (this.supportedFileExtension.some(supportedFormat => node.getName().endsWith(supportedFormat)))
14
- return true;
15
- return false;
16
- }
17
- }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVjb21wcmVzc2lvbkZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvdHJlZS9GaWx0ZXJzL0RlY29tcHJlc3Npb25GaWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNsQyxPQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRzdFLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxNQUFNO0lBSTdDLFlBQW1CLFVBQWtCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFRCxtQ0FBbUM7SUFDNUIsUUFBUSxDQUFDLElBQVU7UUFDeEIsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksUUFBUSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUNsRCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDL0csT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBRUYifQ==