scanoss 0.2.18 → 0.2.21
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/build/main/bin/cli-bin.js +4 -2
- package/build/main/commands/dep.js +19 -7
- package/build/main/commands/helpers.d.ts +1 -0
- package/build/main/commands/helpers.js +22 -0
- package/build/main/commands/scan.js +3 -15
- package/build/main/index.d.ts +2 -1
- package/build/main/index.js +3 -2
- package/build/main/lib/dependencies/DependencyScanner.d.ts +10 -0
- package/build/main/lib/dependencies/DependencyScanner.js +66 -0
- package/build/main/lib/dependencies/DependencyScannerCfg.d.ts +4 -0
- package/build/main/lib/dependencies/DependencyScannerCfg.js +11 -0
- package/build/main/lib/dependencies/DependencyTypes.d.ts +10 -8
- package/build/main/lib/dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
- package/build/main/lib/dependencies/LocalDependency/DependencyTypes.js +3 -0
- package/build/main/lib/dependencies/LocalDependency/LocalDependency.d.ts +6 -0
- package/build/main/lib/dependencies/LocalDependency/LocalDependency.js +51 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +2 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.js +63 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.js +57 -0
- package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/npmParser.d.ts +3 -3
- package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.js +50 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
- package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.js +61 -0
- package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/rubyParser.d.ts +3 -3
- package/build/main/lib/dependencies/LocalDependency/parsers/rubyParser.js +133 -0
- package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/utils.d.ts +0 -0
- package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/utils.js +1 -1
- package/build/main/lib/grpc/GrpcDependencyService.d.ts +11 -0
- package/build/main/lib/grpc/GrpcDependencyService.js +88 -0
- package/build/main/lib/{dependencies/parsers/golangParser.d.ts → grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts} +0 -0
- package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
- package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
- package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
- package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
- package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
- package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
- package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
- package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
- package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
- package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
- package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
- package/build/main/lib/scanner/Scanner.js +1 -1
- package/build/module/bin/cli-bin.js +4 -2
- package/build/module/commands/dep.js +19 -7
- package/build/module/commands/helpers.d.ts +1 -0
- package/build/module/commands/helpers.js +15 -0
- package/build/module/commands/scan.js +2 -14
- package/build/module/index.d.ts +2 -1
- package/build/module/index.js +3 -2
- package/build/module/lib/dependencies/DependencyScanner.d.ts +10 -0
- package/build/module/lib/dependencies/DependencyScanner.js +64 -0
- package/build/module/lib/dependencies/DependencyScannerCfg.d.ts +4 -0
- package/build/module/lib/dependencies/DependencyScannerCfg.js +5 -0
- package/build/module/lib/dependencies/DependencyTypes.d.ts +10 -8
- package/build/module/lib/dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
- package/build/module/lib/dependencies/LocalDependency/DependencyTypes.js +2 -0
- package/build/module/lib/dependencies/LocalDependency/LocalDependency.d.ts +6 -0
- package/build/module/lib/dependencies/LocalDependency/LocalDependency.js +45 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +2 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.js +55 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.js +50 -0
- package/build/module/lib/dependencies/{parsers → LocalDependency/parsers}/npmParser.d.ts +3 -3
- package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.js +42 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/pyParser.js +53 -0
- package/build/module/lib/dependencies/{parsers → LocalDependency/parsers}/rubyParser.d.ts +3 -3
- package/build/module/lib/dependencies/LocalDependency/parsers/rubyParser.js +130 -0
- package/build/module/lib/dependencies/{parsers → LocalDependency/parsers}/utils.d.ts +0 -0
- package/build/module/lib/dependencies/LocalDependency/parsers/utils.js +15 -0
- package/build/module/lib/grpc/GrpcDependencyService.d.ts +11 -0
- package/build/module/lib/grpc/GrpcDependencyService.js +67 -0
- package/build/module/lib/{dependencies/parsers/golangParser.d.ts → grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts} +0 -0
- package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
- package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
- package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +404 -0
- package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
- package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
- package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
- package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1197 -0
- package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
- package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +66 -0
- package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
- package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +14 -0
- package/build/module/lib/scanner/Scanner.js +1 -1
- package/build/tsconfig.module.tsbuildinfo +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
- package/src/bin/cli-bin.ts +4 -1
- package/src/commands/dep.ts +18 -6
- package/src/commands/helpers.ts +14 -0
- package/src/commands/scan.ts +3 -12
- package/src/index.ts +5 -1
- package/src/lib/dependencies/DependencyScanner.ts +77 -0
- package/src/lib/dependencies/DependencyScannerCfg.ts +7 -0
- package/src/lib/dependencies/DependencyTypes.ts +16 -14
- package/src/lib/dependencies/LocalDependency/DependencyTypes.ts +21 -0
- package/src/lib/dependencies/LocalDependency/LocalDependency.ts +48 -0
- package/src/lib/dependencies/LocalDependency/parsers/golangParser.ts +78 -0
- package/src/lib/dependencies/{parsers → LocalDependency/parsers}/mavenParser.ts +10 -6
- package/src/lib/dependencies/{parsers → LocalDependency/parsers}/npmParser.ts +14 -8
- package/src/lib/dependencies/LocalDependency/parsers/pyParser.ts +55 -0
- package/src/lib/dependencies/{parsers → LocalDependency/parsers}/rubyParser.ts +21 -29
- package/src/lib/dependencies/{parsers → LocalDependency/parsers}/utils.ts +0 -1
- package/src/lib/grpc/GrpcDependencyService.ts +73 -0
- package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +1 -0
- package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +1 -0
- package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +79 -0
- package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +482 -0
- package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +30 -0
- package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +109 -0
- package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +206 -0
- package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1489 -0
- package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +25 -0
- package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +73 -0
- package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +6 -0
- package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
- package/src/lib/scanner/Scanner.ts +2 -1
- package/tsconfig.json +5 -22
- package/yarn.lock +5252 -5213
- package/build/main/lib/dependencies/Dependency.d.ts +0 -9
- package/build/main/lib/dependencies/Dependency.js +0 -52
- package/build/main/lib/dependencies/PurlGenerator.d.ts +0 -2
- package/build/main/lib/dependencies/PurlGenerator.js +0 -44
- package/build/main/lib/dependencies/parsers/golangParser.js +0 -3
- package/build/main/lib/dependencies/parsers/mavenParser.d.ts +0 -2
- package/build/main/lib/dependencies/parsers/mavenParser.js +0 -54
- package/build/main/lib/dependencies/parsers/npmParser.js +0 -46
- package/build/main/lib/dependencies/parsers/pyParser.d.ts +0 -2
- package/build/main/lib/dependencies/parsers/pyParser.js +0 -51
- package/build/main/lib/dependencies/parsers/rubyParser.js +0 -135
- package/build/main/lib/dependencies/parsers/types.d.ts +0 -15
- package/build/main/lib/dependencies/parsers/types.js +0 -33
- package/build/module/lib/dependencies/Dependency.d.ts +0 -9
- package/build/module/lib/dependencies/Dependency.js +0 -47
- package/build/module/lib/dependencies/PurlGenerator.d.ts +0 -2
- package/build/module/lib/dependencies/PurlGenerator.js +0 -37
- package/build/module/lib/dependencies/parsers/golangParser.js +0 -3
- package/build/module/lib/dependencies/parsers/mavenParser.d.ts +0 -2
- package/build/module/lib/dependencies/parsers/mavenParser.js +0 -47
- package/build/module/lib/dependencies/parsers/npmParser.js +0 -38
- package/build/module/lib/dependencies/parsers/pyParser.d.ts +0 -2
- package/build/module/lib/dependencies/parsers/pyParser.js +0 -44
- package/build/module/lib/dependencies/parsers/rubyParser.js +0 -132
- package/build/module/lib/dependencies/parsers/types.d.ts +0 -15
- package/build/module/lib/dependencies/parsers/types.js +0 -32
- package/build/module/lib/dependencies/parsers/utils.js +0 -15
- package/package-lock.json +0 -18589
- package/src/lib/dependencies/Dependency.ts +0 -60
- package/src/lib/dependencies/PurlGenerator.ts +0 -44
- package/src/lib/dependencies/parsers/golangParser.ts +0 -4
- package/src/lib/dependencies/parsers/pyParser.ts +0 -46
- package/src/lib/dependencies/parsers/types.ts +0 -50
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { IDependencyResponse } from "./DependencyTypes";
|
|
2
|
-
export declare class Dependency {
|
|
3
|
-
private workDirectory;
|
|
4
|
-
private resultFilePath;
|
|
5
|
-
constructor();
|
|
6
|
-
scan(fileList: Array<string>): Promise<IDependencyResponse>;
|
|
7
|
-
setWorkDirectory(workDirectory: string): void;
|
|
8
|
-
private adapterToDependencyResponse;
|
|
9
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Dependency = void 0;
|
|
7
|
-
const os_1 = __importDefault(require("os"));
|
|
8
|
-
const fs_1 = __importDefault(require("fs"));
|
|
9
|
-
const PurlGenerator_1 = require("./PurlGenerator");
|
|
10
|
-
const packageurl_js_1 = require("packageurl-js");
|
|
11
|
-
class Dependency {
|
|
12
|
-
constructor() {
|
|
13
|
-
this.setWorkDirectory(`${os_1.default.tmpdir()}/depscanner-${new Date().getTime()}`);
|
|
14
|
-
}
|
|
15
|
-
async scan(fileList) {
|
|
16
|
-
const toGrpc = await (0, PurlGenerator_1.generateDependenciesPurls)(fileList);
|
|
17
|
-
// Here we should call to the grpc server
|
|
18
|
-
return this.adapterToDependencyResponse(toGrpc);
|
|
19
|
-
}
|
|
20
|
-
setWorkDirectory(workDirectory) {
|
|
21
|
-
this.workDirectory = workDirectory;
|
|
22
|
-
this.resultFilePath = `${this.workDirectory}/dependencies.json`;
|
|
23
|
-
if (!fs_1.default.existsSync(this.workDirectory))
|
|
24
|
-
fs_1.default.mkdirSync(this.workDirectory);
|
|
25
|
-
}
|
|
26
|
-
adapterToDependencyResponse(dependencies) {
|
|
27
|
-
const results = { files: [] };
|
|
28
|
-
for (const dependency of dependencies.files) {
|
|
29
|
-
let depArr = [];
|
|
30
|
-
for (const purl of dependency.purls) {
|
|
31
|
-
const pkg = packageurl_js_1.PackageURL.fromString(purl.purl);
|
|
32
|
-
depArr.push({
|
|
33
|
-
component: null,
|
|
34
|
-
purl: purl.purl,
|
|
35
|
-
version: pkg.version,
|
|
36
|
-
licenses: [{ name: null }]
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
let fileArr = {};
|
|
40
|
-
fileArr = ({
|
|
41
|
-
file: dependency.file,
|
|
42
|
-
id: "dependency",
|
|
43
|
-
status: "pending",
|
|
44
|
-
dependencies: depArr
|
|
45
|
-
});
|
|
46
|
-
results.files.push(fileArr);
|
|
47
|
-
}
|
|
48
|
-
return results;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.Dependency = Dependency;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL0RlcGVuZGVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLDRDQUFvQjtBQUlwQixtREFBNEQ7QUFDNUQsaURBQTJDO0FBRTNDLE1BQWEsVUFBVTtJQU1yQjtRQUNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFlBQUUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBRSxRQUF1QjtRQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEseUNBQXlCLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDekQseUNBQXlDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxhQUFxQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsb0JBQW9CLENBQUM7UUFFaEUsSUFBSSxDQUFDLFlBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUFFLFlBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTywyQkFBMkIsQ0FBRSxZQUFnQztRQUNuRSxNQUFNLE9BQU8sR0FBd0IsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7UUFFakQsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFDO1lBQzFDLElBQUksTUFBTSxHQUF1QixFQUFFLENBQUM7WUFDcEMsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNuQyxNQUFNLEdBQUcsR0FBRywwQkFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsU0FBUyxFQUFFLElBQUk7b0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQkFDcEIsUUFBUSxFQUFFLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7aUJBQ3pCLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxPQUFPLEdBQVUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxDQUFDO2dCQUNULElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsRUFBRSxFQUFFLFlBQVk7Z0JBQ2hCLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixZQUFZLEVBQUUsTUFBTTthQUNyQixDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7Q0FDRjtBQW5ERCxnQ0FtREMifQ==
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.generateDependenciesPurls = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const mavenParser_1 = require("./parsers/mavenParser");
|
|
10
|
-
const npmParser_1 = require("./parsers/npmParser");
|
|
11
|
-
const pyParser_1 = require("./parsers/pyParser");
|
|
12
|
-
const rubyParser_1 = require("./parsers/rubyParser");
|
|
13
|
-
/*
|
|
14
|
-
This is a hash map that connect a filename with it's own parser function
|
|
15
|
-
Any parser function must return a FileDependency object (See type.ts file in src/parser
|
|
16
|
-
*/
|
|
17
|
-
const Parser = {
|
|
18
|
-
'requirements.txt': pyParser_1.requirementsParser,
|
|
19
|
-
'pom.xml': mavenParser_1.pomParser,
|
|
20
|
-
'package.json': npmParser_1.packageParser,
|
|
21
|
-
'package-lock.json': npmParser_1.packagelockParser,
|
|
22
|
-
'Gemfile': rubyParser_1.gemfileParser,
|
|
23
|
-
'Gemfile.lock': rubyParser_1.gemfilelockParser
|
|
24
|
-
};
|
|
25
|
-
async function generateDependenciesPurls(files) {
|
|
26
|
-
let results = { files: [] };
|
|
27
|
-
for (const filePath of files) {
|
|
28
|
-
const fileName = path_1.default.basename(filePath);
|
|
29
|
-
if (Parser[fileName] != null) {
|
|
30
|
-
try {
|
|
31
|
-
const fileContent = await fs_1.default.promises.readFile(filePath, 'utf8');
|
|
32
|
-
const dependency = Parser[fileName](fileContent, filePath);
|
|
33
|
-
if (dependency.purls.length != 0)
|
|
34
|
-
results.files.push(dependency);
|
|
35
|
-
}
|
|
36
|
-
catch (error) {
|
|
37
|
-
console.error(`Error parsing file: ${filePath}\n`, error);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return results;
|
|
42
|
-
}
|
|
43
|
-
exports.generateDependenciesPurls = generateDependenciesPurls;
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVybEdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL1B1cmxHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUl4Qix1REFBa0Q7QUFDbEQsbURBQXVFO0FBQ3ZFLGlEQUF3RDtBQUN4RCxxREFBd0U7QUFJeEU7OztFQUdFO0FBQ0YsTUFBTSxNQUFNLEdBQXNCO0lBQzlCLGtCQUFrQixFQUFFLDZCQUFrQjtJQUN0QyxTQUFTLEVBQUUsdUJBQVM7SUFDcEIsY0FBYyxFQUFFLHlCQUFhO0lBQzdCLG1CQUFtQixFQUFFLDZCQUFpQjtJQUN0QyxTQUFTLEVBQUUsMEJBQWE7SUFDeEIsY0FBYyxFQUFFLDhCQUFpQjtDQUNwQyxDQUFDO0FBR0ssS0FBSyxVQUFVLHlCQUF5QixDQUFDLEtBQW9CO0lBQ2hFLElBQUksT0FBTyxHQUF1QixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUM5QyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRTtRQUMxQixNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUMzQixJQUFJO2dCQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxJQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxJQUFJLEVBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUQ7U0FDRjtLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQWhCRCw4REFnQkMifQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Reference https://go.dev/ref/mod#go-mod-file
|
|
2
|
-
//
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29sYW5nUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvcGFyc2Vycy9nb2xhbmdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsK0NBQStDO0FBQy9DLEdBQUcifQ==
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.pomParser = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const packageurl_js_1 = require("packageurl-js");
|
|
9
|
-
const PURL_TYPE = 'maven';
|
|
10
|
-
// Parse a pom.txt file from maven manifest file
|
|
11
|
-
// See reference on: https://maven.apache.org/guides/introduction/introduction-to-the-pom.html
|
|
12
|
-
// and https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
|
|
13
|
-
const MANIFEST_FILE = 'pom.xml';
|
|
14
|
-
function pomParser(fileContent, filePath) {
|
|
15
|
-
// If the file is not a python manifest file, return an empty results
|
|
16
|
-
const results = { file: filePath, purls: [] };
|
|
17
|
-
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
18
|
-
return results;
|
|
19
|
-
const dependencies = fileContent.match(/<dependency>((?:.|\n)*?)<\/dependency>/gm);
|
|
20
|
-
if (dependencies) {
|
|
21
|
-
// TODO: classifier are not supported yet
|
|
22
|
-
dependencies.forEach(dependency => {
|
|
23
|
-
// Extract groupId. It's the purl namespace
|
|
24
|
-
const groupId = dependency.match(/<groupId>([^<]*)<\/groupId>/);
|
|
25
|
-
const namespace = groupId ? groupId[1] : '';
|
|
26
|
-
// Extract artifact id. It's the purl name
|
|
27
|
-
const artifactId = dependency.match(/<artifactId>([^<]*)<\/artifactId>/);
|
|
28
|
-
const name = artifactId ? artifactId[1] : '';
|
|
29
|
-
const versionReg = dependency.match(/<version>([^<]*)<\/version>/);
|
|
30
|
-
let version = versionReg ? versionReg[1] : '';
|
|
31
|
-
const ver = version.match(/\${(.*?)}/);
|
|
32
|
-
if (ver && ver.length >= 1) {
|
|
33
|
-
if (ver[1] === 'project.version') { // TODO: Add support for project.version
|
|
34
|
-
version = undefined;
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
const res = fileContent.match(new RegExp(`<${ver[1]}>([^<]*)<\/${ver[1]}>`));
|
|
38
|
-
version = res.length >= 1 ? res[1] : '';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
let purlQualifiers;
|
|
42
|
-
const type = dependency.match(/<type>([^<]*)<\/type>/);
|
|
43
|
-
if (type) {
|
|
44
|
-
purlQualifiers = {};
|
|
45
|
-
purlQualifiers['type'] = type[1];
|
|
46
|
-
}
|
|
47
|
-
const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, namespace, name, version, purlQualifiers, undefined).toString();
|
|
48
|
-
results.purls.push({ purl: purlString });
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return results;
|
|
52
|
-
}
|
|
53
|
-
exports.pomParser = pomParser;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW5QYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9wYXJzZXJzL21hdmVuUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUN4QixpREFBMkM7QUFJM0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBRzFCLGdEQUFnRDtBQUNoRCw4RkFBOEY7QUFDOUYsNkZBQTZGO0FBQzdGLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxTQUFnQixTQUFTLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUUzRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQW1CLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDNUQsSUFBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ25GLElBQUcsWUFBWSxFQUFFO1FBRWYseUNBQXlDO1FBQ3pDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDaEMsMkNBQTJDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTVDLDBDQUEwQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDekUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUU3QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDbkUsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUU5QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFHO2dCQUMxQixJQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsRUFBRSxFQUFFLHdDQUF3QztvQkFDekUsT0FBTyxHQUFHLFNBQVMsQ0FBQztpQkFDckI7cUJBQU07b0JBQ0wsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzdFLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ3pDO2FBQ0Y7WUFFRCxJQUFJLGNBQWMsQ0FBQztZQUNuQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDdkQsSUFBRyxJQUFJLEVBQUU7Z0JBQ0wsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNuQztZQUVELE1BQU0sVUFBVSxHQUFHLElBQUksMEJBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUE3Q0QsOEJBNkNDIn0=
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.packagelockParser = exports.packageParser = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const packageurl_js_1 = require("packageurl-js");
|
|
9
|
-
const PURL_TYPE = 'npm';
|
|
10
|
-
// Parse a package.json file from node projects
|
|
11
|
-
// See reference on: https://docs.npmjs.com/cli/v8/configuring-npm/package-json
|
|
12
|
-
const MANIFEST_FILE = 'package.json';
|
|
13
|
-
function packageParser(fileContent, filePath) {
|
|
14
|
-
// If the file is not manifest file, return an empty results
|
|
15
|
-
const results = { file: filePath, purls: [] };
|
|
16
|
-
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
17
|
-
return results;
|
|
18
|
-
const o = JSON.parse(fileContent);
|
|
19
|
-
let devDeps = Object.keys(o.devDependencies || {});
|
|
20
|
-
let deps = Object.keys(o.dependencies || {});
|
|
21
|
-
let listDeps = [...deps, ...devDeps];
|
|
22
|
-
for (const name of listDeps) {
|
|
23
|
-
const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, undefined, name, undefined, undefined, undefined).toString();
|
|
24
|
-
results.purls.push({ purl: purlString });
|
|
25
|
-
}
|
|
26
|
-
return results;
|
|
27
|
-
}
|
|
28
|
-
exports.packageParser = packageParser;
|
|
29
|
-
// Parse a package-lock.json file from node projects
|
|
30
|
-
// See reference on: https://docs.npmjs.com/cli/v8/configuring-npm/package-json
|
|
31
|
-
const MANIFEST_FILE_1 = 'package-lock.json';
|
|
32
|
-
function packagelockParser(fileContent, filePath) {
|
|
33
|
-
const results = { file: filePath, purls: [] };
|
|
34
|
-
if (path_1.default.basename(filePath) != MANIFEST_FILE_1)
|
|
35
|
-
return results;
|
|
36
|
-
const o = JSON.parse(fileContent).dependencies;
|
|
37
|
-
for (const [key, value] of Object.entries(o)) {
|
|
38
|
-
if (!key)
|
|
39
|
-
continue;
|
|
40
|
-
let purl = new packageurl_js_1.PackageURL(PURL_TYPE, undefined, key, value['version'], undefined, undefined).toString();
|
|
41
|
-
results.purls.push({ purl });
|
|
42
|
-
}
|
|
43
|
-
return results;
|
|
44
|
-
}
|
|
45
|
-
exports.packagelockParser = packagelockParser;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvcGFyc2Vycy9ucG1QYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLGlEQUEyQztBQUkzQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFHeEIsK0NBQStDO0FBQy9DLCtFQUErRTtBQUMvRSxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUM7QUFDckMsU0FBZ0IsYUFBYSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFDL0QsNERBQTREO0lBQzVELE1BQU0sT0FBTyxHQUFtQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzVELElBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDckMsS0FBSSxNQUFNLElBQUksSUFBSSxRQUFRLEVBQUM7UUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSwwQkFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztLQUMxQztJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFkRCxzQ0FjQztBQUdELG9EQUFvRDtBQUNwRCwrRUFBK0U7QUFDL0UsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUM7QUFDNUMsU0FBZ0IsaUJBQWlCLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUVuRSxNQUFNLE9BQU8sR0FBbUIsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUM1RCxJQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksZUFBZTtRQUN6QyxPQUFPLE9BQU8sQ0FBQztJQUVuQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUMvQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMxQyxJQUFHLENBQUMsR0FBRztZQUFFLFNBQVM7UUFDbEIsSUFBSSxJQUFJLEdBQUcsSUFBSSwwQkFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0tBQzlCO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQWJELDhDQWFDIn0=
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.requirementsParser = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const packageurl_js_1 = require("packageurl-js");
|
|
9
|
-
const utils_1 = require("./utils");
|
|
10
|
-
const PURL_TYPE = 'pypi';
|
|
11
|
-
// Parse a requirements.txt file from python projects
|
|
12
|
-
// See reference on: https://pip.pypa.io/en/stable/reference/requirements-file-format/
|
|
13
|
-
const MANIFEST_FILE = 'requirements.txt';
|
|
14
|
-
function requirementsParser(fileContent, filePath) {
|
|
15
|
-
// If the file is not a python manifest file, return an empty results
|
|
16
|
-
const results = { file: filePath, purls: [] };
|
|
17
|
-
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
18
|
-
return results;
|
|
19
|
-
const lines = fileContent.split('\n');
|
|
20
|
-
let compName = '';
|
|
21
|
-
let compVer = '';
|
|
22
|
-
for (let line of lines) {
|
|
23
|
-
line = line.trim();
|
|
24
|
-
if (!line.startsWith('#') && line.length > 0) { // Avoid comments and new lines
|
|
25
|
-
if ((0, utils_1.isValidUrl)(line)) {
|
|
26
|
-
// For reference about the regex see https://www.rfc-editor.org/rfc/rfc3986#appendix-B
|
|
27
|
-
const res = line.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
else if ((0, utils_1.isValidPath)(line)) {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
else if (line.startsWith('-r')) {
|
|
34
|
-
continue;
|
|
35
|
-
} // recursive dependencies (NOT SUPPORTED YET)
|
|
36
|
-
else {
|
|
37
|
-
// Line contains a package name and/or version.
|
|
38
|
-
const res = line.match(/^([-\w]+)\s*(?:[>=~!]*)\s*([\d\.]*)/); //Extract name and version
|
|
39
|
-
if (res) {
|
|
40
|
-
compName = res.length > 1 ? res[1] : ' ';
|
|
41
|
-
compVer = undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, undefined, compName, compVer, undefined, undefined).toString();
|
|
45
|
-
results.purls.push({ purl: purlString });
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return results;
|
|
49
|
-
}
|
|
50
|
-
exports.requirementsParser = requirementsParser;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHlQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9wYXJzZXJzL3B5UGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUN4QixpREFBMkM7QUFFM0MsbUNBQWtEO0FBRWxELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUV6QixxREFBcUQ7QUFDckQsc0ZBQXNGO0FBQ3RGLE1BQU0sYUFBYSxHQUFHLGtCQUFrQixDQUFDO0FBQ3pDLFNBQWdCLGtCQUFrQixDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFcEUscUVBQXFFO0lBQ3JFLE1BQU0sT0FBTyxHQUFtQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzVELElBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBR25CLE1BQU0sS0FBSyxHQUFrQixXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFekIsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBRSxFQUFFLCtCQUErQjtZQUN6RSxJQUFHLElBQUEsa0JBQVUsRUFBQyxJQUFJLENBQUMsRUFBRTtnQkFDakIsc0ZBQXNGO2dCQUN0RixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLCtEQUErRCxDQUFDLENBQUM7Z0JBQ3hGLFNBQVM7YUFDWjtpQkFDSSxJQUFHLElBQUEsbUJBQVcsRUFBQyxJQUFJLENBQUMsRUFBRTtnQkFBQyxTQUFTO2FBQUM7aUJBQ2pDLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFBQyxTQUFTO2FBQUMsQ0FBQyw2Q0FBNkM7aUJBQ25GO2dCQUNELCtDQUErQztnQkFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDLENBQUksMEJBQTBCO2dCQUM1RixJQUFJLEdBQUcsRUFBRTtvQkFDTCxRQUFRLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUN6QyxPQUFPLEdBQUcsU0FBUyxDQUFDO2lCQUN2QjthQUNKO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSwwQkFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDNUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztTQUMxQztLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQW5DRCxnREFtQ0MifQ==
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.gemfilelockParser = exports.gemfileParser = void 0;
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const packageurl_js_1 = require("packageurl-js");
|
|
9
|
-
const PURL_TYPE = 'gem';
|
|
10
|
-
// Parse a gemfile file from ruby
|
|
11
|
-
// See reference on: https://bundler.io/gemfile.html
|
|
12
|
-
// and https://bundler.io/man/gemfile.5.html
|
|
13
|
-
const MANIFEST_FILE = 'Gemfile';
|
|
14
|
-
function gemfileParser(fileContent, filePath) {
|
|
15
|
-
// If the file is not a manifest file, return an empty results
|
|
16
|
-
const results = { file: filePath, purls: [] };
|
|
17
|
-
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
18
|
-
return results;
|
|
19
|
-
const lines = fileContent.split('\n');
|
|
20
|
-
let compName = '';
|
|
21
|
-
for (let line of lines) {
|
|
22
|
-
line = line.trim();
|
|
23
|
-
if (!line.startsWith('#') && line.length > 0) { // Avoid comments and empty lines
|
|
24
|
-
// Line contains a package name and/or version.
|
|
25
|
-
const res = line.match(/^gem\s*(["']\w+["'])/); //Extract name
|
|
26
|
-
if (res) {
|
|
27
|
-
compName = res.length > 1 ? res[1] : ' ';
|
|
28
|
-
compName = compName.replace(/['"]/g, '');
|
|
29
|
-
const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, undefined, compName, undefined, undefined, undefined).toString();
|
|
30
|
-
results.purls.push({ purl: purlString });
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
return results;
|
|
35
|
-
}
|
|
36
|
-
exports.gemfileParser = gemfileParser;
|
|
37
|
-
const MANIFEST_FILE_1 = 'Gemfile.lock';
|
|
38
|
-
function gemfilelockParser(fileContent, filePath) {
|
|
39
|
-
// If the file is not a manifest file, return an empty results
|
|
40
|
-
const results = { file: filePath, purls: [] };
|
|
41
|
-
if (path_1.default.basename(filePath) != MANIFEST_FILE_1)
|
|
42
|
-
return results;
|
|
43
|
-
const gemlockParser = new GemfileLockParser();
|
|
44
|
-
const purls = gemlockParser.getDependencies(fileContent);
|
|
45
|
-
for (const purl of purls) {
|
|
46
|
-
results.purls.push({ purl });
|
|
47
|
-
}
|
|
48
|
-
return results;
|
|
49
|
-
}
|
|
50
|
-
exports.gemfilelockParser = gemfilelockParser;
|
|
51
|
-
// Section headings: these are also used as switches to track a parsing state
|
|
52
|
-
const PATH = 'PATH';
|
|
53
|
-
const GIT = 'GIT';
|
|
54
|
-
const SVN = 'SVN';
|
|
55
|
-
const GEM = 'GEM';
|
|
56
|
-
const PLATFORMS = 'PLATFORMS';
|
|
57
|
-
const DEPENDENCIES = 'DEPENDENCIES';
|
|
58
|
-
const SPECS = ' specs:';
|
|
59
|
-
// types of Gems, which is really where they are provisioned from
|
|
60
|
-
// RubyGems repo, local path or VCS
|
|
61
|
-
const GEM_TYPES = [GEM, PATH, GIT, SVN];
|
|
62
|
-
const specRegex = /(?<name>[^ \)\(,!:]+)?(?: \((?<version>[^-]*?)(?:-(?<platform>[^!]*))?\))?/;
|
|
63
|
-
const firstDepLevelRegex = /^ {4}(?! )/;
|
|
64
|
-
/*
|
|
65
|
-
The parsing use a simple state machine, switching states based on sections
|
|
66
|
-
headings. The result is a list of purls
|
|
67
|
-
*/
|
|
68
|
-
class GemfileLockParser {
|
|
69
|
-
constructor() {
|
|
70
|
-
this.purlList = [];
|
|
71
|
-
// map of a line start string to the next parsing state function
|
|
72
|
-
this.statesMap = {};
|
|
73
|
-
this.statesMap[DEPENDENCIES] = this.parseDependency;
|
|
74
|
-
this.statesMap[PLATFORMS] = this.parsePlatform;
|
|
75
|
-
this.statesMap[GIT] = this.parseOptions;
|
|
76
|
-
this.statesMap[PATH] = this.parseOptions;
|
|
77
|
-
this.statesMap[SVN] = this.parseOptions;
|
|
78
|
-
this.statesMap[GEM] = this.parseOptions;
|
|
79
|
-
this.statesMap[SPECS] = this.parseSpec;
|
|
80
|
-
}
|
|
81
|
-
getDependencies(filecontent) {
|
|
82
|
-
this.resetState();
|
|
83
|
-
let file = filecontent.split('\n');
|
|
84
|
-
for (let line of file) {
|
|
85
|
-
line = line.trimEnd();
|
|
86
|
-
//reset state on empty lines
|
|
87
|
-
if (!line.length) {
|
|
88
|
-
this.resetState();
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
//switch to new state
|
|
92
|
-
if (line in this.statesMap) {
|
|
93
|
-
if (GEM_TYPES.includes(line))
|
|
94
|
-
this.current_gem = line;
|
|
95
|
-
this.state = this.statesMap[line];
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
// process the line
|
|
99
|
-
if (this.state)
|
|
100
|
-
this.state(line);
|
|
101
|
-
}
|
|
102
|
-
this.refine();
|
|
103
|
-
return this.purlList;
|
|
104
|
-
}
|
|
105
|
-
resetState() {
|
|
106
|
-
this.current_options = {};
|
|
107
|
-
this.state = null;
|
|
108
|
-
}
|
|
109
|
-
parseOptions(line) {
|
|
110
|
-
const match = line.match(/\s*(\w+):\s*(.*)/);
|
|
111
|
-
const key = match.length >= 1 ? match[1] : null;
|
|
112
|
-
const value = match.length >= 2 ? match[2] : null;
|
|
113
|
-
if (key)
|
|
114
|
-
this.current_options[key] = value;
|
|
115
|
-
}
|
|
116
|
-
parseDependency(line) { }
|
|
117
|
-
parsePlatform(line) { }
|
|
118
|
-
parseSpec(line) {
|
|
119
|
-
if (this.current_gem == GEM) {
|
|
120
|
-
if (firstDepLevelRegex.test(line)) {
|
|
121
|
-
line = line.trimStart();
|
|
122
|
-
const match = line.match(specRegex);
|
|
123
|
-
const purl = new packageurl_js_1.PackageURL(PURL_TYPE, undefined, match.groups.name, match.groups.version, undefined, undefined).toString();
|
|
124
|
-
this.purlList.push(purl);
|
|
125
|
-
}
|
|
126
|
-
else { // Second level of dependence
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
if (this.current_gem == GIT) { }
|
|
130
|
-
// Purl from local dependencies are not generated
|
|
131
|
-
if (this.current_gem == PATH) { }
|
|
132
|
-
}
|
|
133
|
-
refine() { }
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVieVBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL3BhcnNlcnMvcnVieVBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsaURBQTJDO0FBSzNDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQztBQUd4QixpQ0FBaUM7QUFDakMsb0RBQW9EO0FBQ3BELDRDQUE0QztBQUM1QyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDaEMsU0FBZ0IsYUFBYSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFL0QsOERBQThEO0lBQzlELE1BQU0sT0FBTyxHQUFtQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzVELElBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBR25CLE1BQU0sS0FBSyxHQUFrQixXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUUxQixLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtRQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFFLEVBQUUsaUNBQWlDO1lBQzNFLCtDQUErQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBSSxjQUFjO1lBQ2pFLElBQUksR0FBRyxFQUFFO2dCQUNMLFFBQVEsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFD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
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export interface Purl {
|
|
2
|
-
purl: string;
|
|
3
|
-
}
|
|
4
|
-
export interface FileDependency {
|
|
5
|
-
file: string;
|
|
6
|
-
purls: Array<Purl>;
|
|
7
|
-
}
|
|
8
|
-
export interface FileListDependency {
|
|
9
|
-
files: Array<FileDependency>;
|
|
10
|
-
}
|
|
11
|
-
declare type ParserFuncType = (fileContent: string, filePath: string) => FileDependency;
|
|
12
|
-
export interface ParserDefinitions {
|
|
13
|
-
[key: string]: ParserFuncType;
|
|
14
|
-
}
|
|
15
|
-
export {};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/*
|
|
4
|
-
EXAMPLE
|
|
5
|
-
{
|
|
6
|
-
"files": [
|
|
7
|
-
{
|
|
8
|
-
"file": "./test/data/requirements.txt",
|
|
9
|
-
"purls": [
|
|
10
|
-
{
|
|
11
|
-
"purl": "pkg:pypi/requests"
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
"purl": "pkg:pypi/crc32c@2.2"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"purl": "pkg:pypi/binaryornot"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"purl": "pkg:pypi/progress"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"purl": "pkg:pypi/grpcio"
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
"purl": "pkg:pypi/protobuf"
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
]
|
|
31
|
-
}
|
|
32
|
-
*/
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9wYXJzZXJzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZCRSJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { IDependencyResponse } from "./DependencyTypes";
|
|
2
|
-
export declare class Dependency {
|
|
3
|
-
private workDirectory;
|
|
4
|
-
private resultFilePath;
|
|
5
|
-
constructor();
|
|
6
|
-
scan(fileList: Array<string>): Promise<IDependencyResponse>;
|
|
7
|
-
setWorkDirectory(workDirectory: string): void;
|
|
8
|
-
private adapterToDependencyResponse;
|
|
9
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import os from "os";
|
|
2
|
-
import fs from "fs";
|
|
3
|
-
import { generateDependenciesPurls } from "./PurlGenerator";
|
|
4
|
-
import { PackageURL } from "packageurl-js";
|
|
5
|
-
export class Dependency {
|
|
6
|
-
workDirectory;
|
|
7
|
-
resultFilePath;
|
|
8
|
-
constructor() {
|
|
9
|
-
this.setWorkDirectory(`${os.tmpdir()}/depscanner-${new Date().getTime()}`);
|
|
10
|
-
}
|
|
11
|
-
async scan(fileList) {
|
|
12
|
-
const toGrpc = await generateDependenciesPurls(fileList);
|
|
13
|
-
// Here we should call to the grpc server
|
|
14
|
-
return this.adapterToDependencyResponse(toGrpc);
|
|
15
|
-
}
|
|
16
|
-
setWorkDirectory(workDirectory) {
|
|
17
|
-
this.workDirectory = workDirectory;
|
|
18
|
-
this.resultFilePath = `${this.workDirectory}/dependencies.json`;
|
|
19
|
-
if (!fs.existsSync(this.workDirectory))
|
|
20
|
-
fs.mkdirSync(this.workDirectory);
|
|
21
|
-
}
|
|
22
|
-
adapterToDependencyResponse(dependencies) {
|
|
23
|
-
const results = { files: [] };
|
|
24
|
-
for (const dependency of dependencies.files) {
|
|
25
|
-
let depArr = [];
|
|
26
|
-
for (const purl of dependency.purls) {
|
|
27
|
-
const pkg = PackageURL.fromString(purl.purl);
|
|
28
|
-
depArr.push({
|
|
29
|
-
component: null,
|
|
30
|
-
purl: purl.purl,
|
|
31
|
-
version: pkg.version,
|
|
32
|
-
licenses: [{ name: null }]
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
let fileArr = {};
|
|
36
|
-
fileArr = ({
|
|
37
|
-
file: dependency.file,
|
|
38
|
-
id: "dependency",
|
|
39
|
-
status: "pending",
|
|
40
|
-
dependencies: depArr
|
|
41
|
-
});
|
|
42
|
-
results.files.push(fileArr);
|
|
43
|
-
}
|
|
44
|
-
return results;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL0RlcGVuZGVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUlwQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxVQUFVO0lBRWIsYUFBYSxDQUFTO0lBRXRCLGNBQWMsQ0FBUztJQUUvQjtRQUNFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsZUFBZSxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBRSxRQUF1QjtRQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELHlDQUF5QztRQUN6QyxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsYUFBcUI7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLG9CQUFvQixDQUFDO1FBRWhFLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sMkJBQTJCLENBQUUsWUFBZ0M7UUFDbkUsTUFBTSxPQUFPLEdBQXdCLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO1FBRWpELEtBQUssTUFBTSxVQUFVLElBQUksWUFBWSxDQUFDLEtBQUssRUFBQztZQUMxQyxJQUFJLE1BQU0sR0FBdUIsRUFBRSxDQUFDO1lBQ3BDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRTtnQkFDbkMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTdDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsU0FBUyxFQUFFLElBQUk7b0JBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO29CQUNmLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztvQkFDcEIsUUFBUSxFQUFFLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7aUJBQ3pCLENBQUMsQ0FBQzthQUNKO1lBRUQsSUFBSSxPQUFPLEdBQVUsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxDQUFDO2dCQUNULElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsRUFBRSxFQUFFLFlBQVk7Z0JBQ2hCLE1BQU0sRUFBRSxTQUFTO2dCQUNqQixZQUFZLEVBQUUsTUFBTTthQUNyQixDQUFDLENBQUM7WUFFSCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sT0FBTyxDQUFBO0lBQ2hCLENBQUM7Q0FDRiJ9
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { pomParser } from './parsers/mavenParser';
|
|
4
|
-
import { packagelockParser, packageParser } from './parsers/npmParser';
|
|
5
|
-
import { requirementsParser } from './parsers/pyParser';
|
|
6
|
-
import { gemfilelockParser, gemfileParser } from './parsers/rubyParser';
|
|
7
|
-
/*
|
|
8
|
-
This is a hash map that connect a filename with it's own parser function
|
|
9
|
-
Any parser function must return a FileDependency object (See type.ts file in src/parser
|
|
10
|
-
*/
|
|
11
|
-
const Parser = {
|
|
12
|
-
'requirements.txt': requirementsParser,
|
|
13
|
-
'pom.xml': pomParser,
|
|
14
|
-
'package.json': packageParser,
|
|
15
|
-
'package-lock.json': packagelockParser,
|
|
16
|
-
'Gemfile': gemfileParser,
|
|
17
|
-
'Gemfile.lock': gemfilelockParser
|
|
18
|
-
};
|
|
19
|
-
export async function generateDependenciesPurls(files) {
|
|
20
|
-
let results = { files: [] };
|
|
21
|
-
for (const filePath of files) {
|
|
22
|
-
const fileName = path.basename(filePath);
|
|
23
|
-
if (Parser[fileName] != null) {
|
|
24
|
-
try {
|
|
25
|
-
const fileContent = await fs.promises.readFile(filePath, 'utf8');
|
|
26
|
-
const dependency = Parser[fileName](fileContent, filePath);
|
|
27
|
-
if (dependency.purls.length != 0)
|
|
28
|
-
results.files.push(dependency);
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
console.error(`Error parsing file: ${filePath}\n`, error);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
return results;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVybEdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL1B1cmxHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUl4QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUl4RTs7O0VBR0U7QUFDRixNQUFNLE1BQU0sR0FBc0I7SUFDOUIsa0JBQWtCLEVBQUUsa0JBQWtCO0lBQ3RDLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLGNBQWMsRUFBRSxhQUFhO0lBQzdCLG1CQUFtQixFQUFFLGlCQUFpQjtJQUN0QyxTQUFTLEVBQUUsYUFBYTtJQUN4QixjQUFjLEVBQUUsaUJBQWlCO0NBQ3BDLENBQUM7QUFHRixNQUFNLENBQUMsS0FBSyxVQUFVLHlCQUF5QixDQUFDLEtBQW9CO0lBQ2hFLElBQUksT0FBTyxHQUF1QixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUM5QyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRTtRQUMxQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUMzQixJQUFJO2dCQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxJQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxJQUFJLEVBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUQ7U0FDRjtLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyJ9
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Reference https://go.dev/ref/mod#go-mod-file
|
|
2
|
-
//
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29sYW5nUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvcGFyc2Vycy9nb2xhbmdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsK0NBQStDO0FBQy9DLEdBQUcifQ==
|