scanoss 0.5.8 → 0.6.0
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/.idea/workspace.xml +24 -19
- package/build/main/cli/bin/cli-bin.js +1 -1
- package/build/main/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +1 -1
- package/build/main/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +2 -0
- package/build/main/sdk/Dependencies/LocalDependency/LocalDependency.js +54 -4
- package/build/main/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +2 -0
- package/build/main/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +95 -0
- package/build/main/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +2 -2
- package/build/main/sdk/Dependencies/LocalDependency/parsers/golangParser.js +5 -5
- package/build/main/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +1 -1
- package/build/main/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +4 -3
- package/build/main/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +5 -5
- package/build/main/sdk/Dependencies/LocalDependency/parsers/npmParser.js +11 -10
- package/build/main/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +2 -2
- package/build/main/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +4 -4
- package/build/main/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +1 -1
- package/build/main/sdk/Dependencies/LocalDependency/parsers/pyParser.js +3 -3
- package/build/main/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +2 -2
- package/build/main/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +5 -5
- package/build/main/sdk/filters/DefaultFilterForDependencies.js +1 -3
- package/build/main/sdk/scanner/Dispatcher/Dispatcher.js +1 -2
- package/build/main/tsconfig.tsbuildinfo +61 -17
- package/build/module/cli/bin/cli-bin.js +1 -1
- package/build/module/sdk/Dependencies/LocalDependency/DependencyTypes.d.ts +1 -1
- package/build/module/sdk/Dependencies/LocalDependency/LocalDependency.d.ts +2 -0
- package/build/module/sdk/Dependencies/LocalDependency/LocalDependency.js +54 -4
- package/build/module/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.d.ts +2 -0
- package/build/module/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.js +87 -0
- package/build/module/sdk/Dependencies/LocalDependency/parsers/golangParser.d.ts +2 -2
- package/build/module/sdk/Dependencies/LocalDependency/parsers/golangParser.js +5 -5
- package/build/module/sdk/Dependencies/LocalDependency/parsers/mavenParser.d.ts +1 -1
- package/build/module/sdk/Dependencies/LocalDependency/parsers/mavenParser.js +4 -3
- package/build/module/sdk/Dependencies/LocalDependency/parsers/npmParser.d.ts +5 -5
- package/build/module/sdk/Dependencies/LocalDependency/parsers/npmParser.js +11 -10
- package/build/module/sdk/Dependencies/LocalDependency/parsers/nugetParser.d.ts +2 -2
- package/build/module/sdk/Dependencies/LocalDependency/parsers/nugetParser.js +4 -4
- package/build/module/sdk/Dependencies/LocalDependency/parsers/pyParser.d.ts +1 -1
- package/build/module/sdk/Dependencies/LocalDependency/parsers/pyParser.js +3 -3
- package/build/module/sdk/Dependencies/LocalDependency/parsers/rubyParser.d.ts +2 -2
- package/build/module/sdk/Dependencies/LocalDependency/parsers/rubyParser.js +5 -5
- package/build/module/sdk/filters/DefaultFilterForDependencies.js +1 -3
- package/build/module/sdk/scanner/Dispatcher/Dispatcher.js +1 -2
- package/build/module/tsconfig.module.tsbuildinfo +61 -17
- package/package.json +3 -2
- package/src/cli/bin/cli-bin.ts +1 -1
- package/src/sdk/Dependencies/LocalDependency/DependencyTypes.ts +1 -1
- package/src/sdk/Dependencies/LocalDependency/LocalDependency.ts +63 -5
- package/src/sdk/Dependencies/LocalDependency/parsers/buildGradleParser.ts +115 -0
- package/src/sdk/Dependencies/LocalDependency/parsers/golangParser.ts +6 -6
- package/src/sdk/Dependencies/LocalDependency/parsers/mavenParser.ts +4 -3
- package/src/sdk/Dependencies/LocalDependency/parsers/npmParser.ts +16 -15
- package/src/sdk/Dependencies/LocalDependency/parsers/nugetParser.ts +64 -0
- package/src/sdk/Dependencies/LocalDependency/parsers/pyParser.ts +3 -3
- package/src/sdk/Dependencies/LocalDependency/parsers/rubyParser.ts +6 -6
- package/src/sdk/filters/DefaultFilterForDependencies.ts +0 -2
- package/src/sdk/scanner/Dispatcher/Dispatcher.ts +0 -1
- package/tests/sdk/Dependencies/LocalDependency/LocalDependency.spec.ts +24 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/buildGradle.spec.ts +48 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/golangParser.spec.ts +4 -4
- package/tests/sdk/Dependencies/LocalDependency/Parsers/npmParser.spec.ts +14 -14
- package/tests/sdk/Dependencies/LocalDependency/Parsers/nugetParser.spec.ts +73 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/pomParser.spec.ts +2 -2
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/1/build.gradle +26 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/2/build.gradle +16 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/NoDependencies.csproj +115 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/netcore-2.csproj +18 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/netcore.csproj +14 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/nuget/packageConfig-1/packages.config +5 -0
- package/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/generate_expected_output.sh +1 -1
- package/yarn.lock +19 -0
- package/package-lock.json +0 -17030
package/.idea/workspace.xml
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
</component>
|
|
6
6
|
<component name="ChangeListManager">
|
|
7
7
|
<list default="true" id="6c78089c-ef2a-4dae-87f6-bd2f320855c8" name="Changes" comment="Fix yarn.lock parser error">
|
|
8
|
-
<change beforePath="$PROJECT_DIR$/
|
|
9
|
-
<change beforePath="$PROJECT_DIR$/src/cli/bin/cli-bin.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/cli/bin/cli-bin.ts" afterDir="false" />
|
|
8
|
+
<change beforePath="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/nugetParser.spec.ts" beforeDir="false" afterPath="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/nugetParser.spec.ts" afterDir="false" />
|
|
10
9
|
</list>
|
|
11
10
|
<option name="SHOW_DIALOG" value="false" />
|
|
12
11
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
@@ -39,7 +38,7 @@
|
|
|
39
38
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
|
40
39
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
41
40
|
"WebServerToolWindowFactoryState": "false",
|
|
42
|
-
"last_opened_file_path": "/home/ubuntu/Projects/SCANOSS/scanoss.js
|
|
41
|
+
"last_opened_file_path": "/home/ubuntu/Projects/SCANOSS/scanoss.js/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/2",
|
|
43
42
|
"node.js.detected.package.eslint": "true",
|
|
44
43
|
"node.js.detected.package.tslint": "true",
|
|
45
44
|
"node.js.selected.package.eslint": "(autodetect)",
|
|
@@ -53,18 +52,21 @@
|
|
|
53
52
|
}</component>
|
|
54
53
|
<component name="RecentsManager">
|
|
55
54
|
<key name="CopyFile.RECENT_KEYS">
|
|
55
|
+
<recent name="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/2" />
|
|
56
|
+
<recent name="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/samples" />
|
|
56
57
|
<recent name="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/samples/yarn-lock/v1_2" />
|
|
57
58
|
<recent name="$PROJECT_DIR$/tests/sdk/Scanner/WfpProvider/WfpSplitter/samples" />
|
|
58
59
|
<recent name="$PROJECT_DIR$/tests/sdk/Scanner/WfpProvider/WfpSplitter" />
|
|
59
|
-
<recent name="$PROJECT_DIR$/src/sdk/Decompress" />
|
|
60
60
|
</key>
|
|
61
61
|
<key name="MoveFile.RECENT_KEYS">
|
|
62
|
+
<recent name="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle/1" />
|
|
63
|
+
<recent name="$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/samples/gradle" />
|
|
62
64
|
<recent name="$PROJECT_DIR$/src/sdk/Decompress/Decompresor" />
|
|
63
65
|
<recent name="$PROJECT_DIR$/tests/sdk/DataLayer/samples/simple-1" />
|
|
64
66
|
</key>
|
|
65
67
|
</component>
|
|
66
|
-
<component name="RunManager" selected="Mocha.Suit test for
|
|
67
|
-
<configuration name="Suit test for
|
|
68
|
+
<component name="RunManager" selected="Mocha.Suit test for build.gradle parser.Table of test for valids build.gradle files">
|
|
69
|
+
<configuration name="Suit test for LocalDependency Scanner" type="mocha-javascript-test-runner" temporary="true" nameIsGenerated="true">
|
|
68
70
|
<node-interpreter>project</node-interpreter>
|
|
69
71
|
<node-options />
|
|
70
72
|
<mocha-package>$PROJECT_DIR$/node_modules/mocha</mocha-package>
|
|
@@ -72,15 +74,14 @@
|
|
|
72
74
|
<pass-parent-env>true</pass-parent-env>
|
|
73
75
|
<ui>bdd</ui>
|
|
74
76
|
<extra-mocha-options>--require ts-node/register</extra-mocha-options>
|
|
75
|
-
<test-kind>
|
|
76
|
-
<test-file>$PROJECT_DIR$/tests/sdk/
|
|
77
|
+
<test-kind>SUITE</test-kind>
|
|
78
|
+
<test-file>$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/LocalDependency.spec.ts</test-file>
|
|
77
79
|
<test-names>
|
|
78
|
-
<name value="Suit test for
|
|
79
|
-
<name value="Test ComponentDataLayer" />
|
|
80
|
+
<name value="Suit test for LocalDependency Scanner" />
|
|
80
81
|
</test-names>
|
|
81
82
|
<method v="2" />
|
|
82
83
|
</configuration>
|
|
83
|
-
<configuration name="Suit test for LocalDependency Scanner" type="mocha-javascript-test-runner" temporary="true" nameIsGenerated="true">
|
|
84
|
+
<configuration name="Suit test for LocalDependency Scanner.Testing wildcard string matching" type="mocha-javascript-test-runner" temporary="true" nameIsGenerated="true">
|
|
84
85
|
<node-interpreter>project</node-interpreter>
|
|
85
86
|
<node-options />
|
|
86
87
|
<mocha-package>$PROJECT_DIR$/node_modules/mocha</mocha-package>
|
|
@@ -88,14 +89,15 @@
|
|
|
88
89
|
<pass-parent-env>true</pass-parent-env>
|
|
89
90
|
<ui>bdd</ui>
|
|
90
91
|
<extra-mocha-options>--require ts-node/register</extra-mocha-options>
|
|
91
|
-
<test-kind>
|
|
92
|
+
<test-kind>TEST</test-kind>
|
|
92
93
|
<test-file>$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/LocalDependency.spec.ts</test-file>
|
|
93
94
|
<test-names>
|
|
94
95
|
<name value="Suit test for LocalDependency Scanner" />
|
|
96
|
+
<name value="Testing wildcard string matching" />
|
|
95
97
|
</test-names>
|
|
96
98
|
<method v="2" />
|
|
97
99
|
</configuration>
|
|
98
|
-
<configuration name="Suit test for
|
|
100
|
+
<configuration name="Suit test for build.gradle parser.Table of test for valids build.gradle files" type="mocha-javascript-test-runner" temporary="true" nameIsGenerated="true">
|
|
99
101
|
<node-interpreter>project</node-interpreter>
|
|
100
102
|
<node-options />
|
|
101
103
|
<mocha-package>$PROJECT_DIR$/node_modules/mocha</mocha-package>
|
|
@@ -104,10 +106,10 @@
|
|
|
104
106
|
<ui>bdd</ui>
|
|
105
107
|
<extra-mocha-options>--require ts-node/register</extra-mocha-options>
|
|
106
108
|
<test-kind>TEST</test-kind>
|
|
107
|
-
<test-file>$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/
|
|
109
|
+
<test-file>$PROJECT_DIR$/tests/sdk/Dependencies/LocalDependency/Parsers/buildGradle.spec.ts</test-file>
|
|
108
110
|
<test-names>
|
|
109
|
-
<name value="Suit test for
|
|
110
|
-
<name value="
|
|
111
|
+
<name value="Suit test for build.gradle parser" />
|
|
112
|
+
<name value="Table of test for valids build.gradle files" />
|
|
111
113
|
</test-names>
|
|
112
114
|
<method v="2" />
|
|
113
115
|
</configuration>
|
|
@@ -145,11 +147,11 @@
|
|
|
145
147
|
</configuration>
|
|
146
148
|
<recent_temporary>
|
|
147
149
|
<list>
|
|
150
|
+
<item itemvalue="Mocha.Suit test for build.gradle parser.Table of test for valids build.gradle files" />
|
|
148
151
|
<item itemvalue="Mocha.Suit test for LocalDependency Scanner.Testing wildcard string matching" />
|
|
149
152
|
<item itemvalue="Mocha.Suit test for LocalDependency Scanner" />
|
|
150
153
|
<item itemvalue="Mocha.Suit test for yarn lock files.Testing yarn lock file v1_2" />
|
|
151
154
|
<item itemvalue="Mocha.Suit test for yarn lock files.Testing yarn lock file v1 complex" />
|
|
152
|
-
<item itemvalue="Mocha.Suit test for DataProvider.Test ComponentDataLayer" />
|
|
153
155
|
</list>
|
|
154
156
|
</recent_temporary>
|
|
155
157
|
</component>
|
|
@@ -208,7 +210,10 @@
|
|
|
208
210
|
<workItem from="1671627681023" duration="31000" />
|
|
209
211
|
<workItem from="1671631779468" duration="1226000" />
|
|
210
212
|
<workItem from="1671704770184" duration="294000" />
|
|
211
|
-
<workItem from="1671731110475" duration="
|
|
213
|
+
<workItem from="1671731110475" duration="2220000" />
|
|
214
|
+
<workItem from="1672394102884" duration="2007000" />
|
|
215
|
+
<workItem from="1672817339832" duration="23446000" />
|
|
216
|
+
<workItem from="1672861024566" duration="2962000" />
|
|
212
217
|
</task>
|
|
213
218
|
<servers />
|
|
214
219
|
</component>
|
|
@@ -250,7 +255,7 @@
|
|
|
250
255
|
</line-breakpoint>
|
|
251
256
|
<line-breakpoint enabled="true" type="javascript">
|
|
252
257
|
<url>file://$PROJECT_DIR$/src/sdk/Dependencies/LocalDependency/LocalDependency.ts</url>
|
|
253
|
-
<line>
|
|
258
|
+
<line>111</line>
|
|
254
259
|
<option name="timeStamp" value="13" />
|
|
255
260
|
</line-breakpoint>
|
|
256
261
|
</breakpoints>
|
|
@@ -11,7 +11,7 @@ function CLIErrorHandler(e) {
|
|
|
11
11
|
}
|
|
12
12
|
async function main() {
|
|
13
13
|
commander_1.program
|
|
14
|
-
.version("0.
|
|
14
|
+
.version("0.6.0")
|
|
15
15
|
.description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
|
|
16
16
|
commander_1.program
|
|
17
17
|
.command('scan <source>')
|
|
@@ -10,7 +10,7 @@ export interface ILocalDependency {
|
|
|
10
10
|
export interface ILocalDependencies {
|
|
11
11
|
files: Array<ILocalDependency>;
|
|
12
12
|
}
|
|
13
|
-
export declare type ParserFuncType = (fileContent: string, filePath: string) => ILocalDependency
|
|
13
|
+
export declare type ParserFuncType = (fileContent: string, filePath: string) => Promise<ILocalDependency>;
|
|
14
14
|
export interface ParserDefinitions {
|
|
15
15
|
[key: string]: ParserFuncType;
|
|
16
16
|
}
|
|
@@ -10,6 +10,8 @@ const mavenParser_1 = require("./parsers/mavenParser");
|
|
|
10
10
|
const npmParser_1 = require("./parsers/npmParser");
|
|
11
11
|
const rubyParser_1 = require("./parsers/rubyParser");
|
|
12
12
|
const golangParser_1 = require("./parsers/golangParser");
|
|
13
|
+
const nugetParser_1 = require("./parsers/nugetParser");
|
|
14
|
+
const buildGradleParser_1 = require("./parsers/buildGradleParser");
|
|
13
15
|
class LocalDependencies {
|
|
14
16
|
constructor() {
|
|
15
17
|
/*
|
|
@@ -25,17 +27,21 @@ class LocalDependencies {
|
|
|
25
27
|
'Gemfile.lock': rubyParser_1.gemfilelockParser,
|
|
26
28
|
'go.mod': golangParser_1.goModParser,
|
|
27
29
|
'go.sum': golangParser_1.goSumParser,
|
|
28
|
-
'yarn.lock': npmParser_1.yarnLockParser
|
|
30
|
+
'yarn.lock': npmParser_1.yarnLockParser,
|
|
31
|
+
'*.csproj': nugetParser_1.csprojParser,
|
|
32
|
+
'packages.config': nugetParser_1.packagesConfigParser,
|
|
33
|
+
'build.gradle': buildGradleParser_1.buildGradleParser,
|
|
29
34
|
};
|
|
30
35
|
}
|
|
31
36
|
async search(files) {
|
|
32
37
|
let results = { files: [] };
|
|
33
38
|
for (const filePath of files) {
|
|
34
39
|
const fileName = path_1.default.basename(filePath);
|
|
35
|
-
|
|
40
|
+
const parser = this.getParserFunc(fileName);
|
|
41
|
+
if (parser != null) {
|
|
36
42
|
try {
|
|
37
43
|
const fileContent = await fs_1.default.promises.readFile(filePath, 'utf8');
|
|
38
|
-
const dependency =
|
|
44
|
+
const dependency = await parser(fileContent, filePath);
|
|
39
45
|
if (dependency.purls.length != 0)
|
|
40
46
|
results.files.push(dependency);
|
|
41
47
|
}
|
|
@@ -47,6 +53,50 @@ class LocalDependencies {
|
|
|
47
53
|
}
|
|
48
54
|
return results;
|
|
49
55
|
}
|
|
56
|
+
getParserFunc(filename) {
|
|
57
|
+
//Check for an exact match
|
|
58
|
+
const func = this.parserMap[filename];
|
|
59
|
+
if (func)
|
|
60
|
+
return func;
|
|
61
|
+
//Check for a wildcard string match
|
|
62
|
+
const filesPatterns = Object.keys(this.parserMap).filter((item) => item.includes("*"));
|
|
63
|
+
for (const pattern of filesPatterns) {
|
|
64
|
+
if (this.stringMatchWithWildcard(filename, pattern))
|
|
65
|
+
return this.parserMap[pattern];
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
// The logic for the string wildcard match algorithm was an imitation from here:
|
|
70
|
+
// https://www.codeproject.com/Articles/5163931/Fast-String-Matching-with-Wildcards-Globs-and-Giti
|
|
71
|
+
stringMatchWithWildcard(text, pattern) {
|
|
72
|
+
let iText = 0;
|
|
73
|
+
let iPattern = 0;
|
|
74
|
+
let iTextBackup = null;
|
|
75
|
+
let iPatternBackup = null;
|
|
76
|
+
while (text[iText]) {
|
|
77
|
+
if (pattern[iPattern] == '*') {
|
|
78
|
+
// new star-loop: backup positions in pattern and text
|
|
79
|
+
iTextBackup = iText;
|
|
80
|
+
iPatternBackup = ++iPattern;
|
|
81
|
+
}
|
|
82
|
+
else if (text[iText] == pattern[iPattern]) {
|
|
83
|
+
iText++;
|
|
84
|
+
iPattern++;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
//If there are no star, we fail to match
|
|
88
|
+
if (iPatternBackup == null)
|
|
89
|
+
return false;
|
|
90
|
+
iText = ++iTextBackup;
|
|
91
|
+
iPattern = iPatternBackup;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//Ignore trailling stars
|
|
95
|
+
while (pattern[iPattern] == '*')
|
|
96
|
+
iPatternBackup++;
|
|
97
|
+
//There is a match when the pattern was walked all the way throught
|
|
98
|
+
return iPattern >= pattern.length ? true : false;
|
|
99
|
+
}
|
|
50
100
|
}
|
|
51
101
|
exports.LocalDependencies = LocalDependencies;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxEZXBlbmRlbmN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9EZXBlbmRlbmNpZXMvTG9jYWxEZXBlbmRlbmN5L0xvY2FsRGVwZW5kZW5jeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4Qiw0Q0FBb0I7QUFFcEIsaURBQXdEO0FBQ3hELHVEQUFrRDtBQUNsRCxtREFJNkI7QUFDN0IscURBQXdFO0FBQ3hFLHlEQUFrRTtBQUNsRSx1REFBMkU7QUFDM0UsbUVBQWdFO0FBRWhFLE1BQWEsaUJBQWlCO0lBRzVCO1FBQ0k7OztVQUdFO1FBQ0YsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNmLGtCQUFrQixFQUFFLDZCQUFrQjtZQUN0QyxTQUFTLEVBQUUsdUJBQVM7WUFDcEIsY0FBYyxFQUFFLHlCQUFhO1lBQzdCLG1CQUFtQixFQUFFLDZCQUFpQjtZQUN0QyxTQUFTLEVBQUUsMEJBQWE7WUFDeEIsY0FBYyxFQUFFLDhCQUFpQjtZQUNqQyxRQUFRLEVBQUUsMEJBQVc7WUFDckIsUUFBUSxFQUFFLDBCQUFXO1lBQ3JCLFdBQVcsRUFBRSwwQkFBYztZQUMzQixVQUFVLEVBQUUsMEJBQVk7WUFDeEIsaUJBQWlCLEVBQUUsa0NBQW9CO1lBQ3ZDLGNBQWMsRUFBRSxxQ0FBaUI7U0FDbEMsQ0FBQztJQUVOLENBQUM7SUFFTSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQW9CO1FBQ3RDLElBQUksT0FBTyxHQUF1QixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUM5QyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRTtZQUMxQixNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sTUFBTSxHQUFtQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVELElBQUcsTUFBTSxJQUFJLElBQUks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
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
2
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
3
|
+
};
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.buildGradleParser = void 0;
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const packageurl_js_1 = require("packageurl-js");
|
|
8
|
+
const MANIFEST_FILE = 'build.gradle';
|
|
9
|
+
const depBlockRex = /dependencies\s*{\s*(?<dependencies>(.|\n)*?)}/gm;
|
|
10
|
+
var GRADLE_STATES;
|
|
11
|
+
(function (GRADLE_STATES) {
|
|
12
|
+
GRADLE_STATES[GRADLE_STATES["WALKING"] = 0] = "WALKING";
|
|
13
|
+
GRADLE_STATES[GRADLE_STATES["SINGLELINE_DEPENDENCY"] = 1] = "SINGLELINE_DEPENDENCY";
|
|
14
|
+
GRADLE_STATES[GRADLE_STATES["MULTILINE_DEPENDENCY"] = 2] = "MULTILINE_DEPENDENCY";
|
|
15
|
+
})(GRADLE_STATES || (GRADLE_STATES = {}));
|
|
16
|
+
async function buildGradleParser(fileContent, filePath) {
|
|
17
|
+
var _a;
|
|
18
|
+
// If the file is not a manifest file, return an empty results
|
|
19
|
+
const results = { file: filePath, purls: [] };
|
|
20
|
+
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
21
|
+
return results;
|
|
22
|
+
//For each dependency block, generate purls
|
|
23
|
+
let gradle;
|
|
24
|
+
while ((gradle = depBlockRex.exec(fileContent)) !== null) {
|
|
25
|
+
let depBlock = (_a = gradle === null || gradle === void 0 ? void 0 : gradle.groups) === null || _a === void 0 ? void 0 : _a.dependencies;
|
|
26
|
+
let current_config_name = ""; //Config name is placed in the scope
|
|
27
|
+
let lines = depBlock.split(/\r?\n/);
|
|
28
|
+
for (let i = 0; i < lines.length; i++) {
|
|
29
|
+
let line = lines[i];
|
|
30
|
+
if (line.includes("//"))
|
|
31
|
+
line = line.replace(/\/\/.*$/gm, "");
|
|
32
|
+
line = line.trim();
|
|
33
|
+
if (line == '')
|
|
34
|
+
continue;
|
|
35
|
+
current_config_name = getConfigNameFromLine(line);
|
|
36
|
+
//Multiline dependency
|
|
37
|
+
if (current_config_name && line.includes("(")) {
|
|
38
|
+
while (i < lines.length && !lines[i].includes(")")) {
|
|
39
|
+
const componentData = createPurlNameFromLine(lines[i]);
|
|
40
|
+
if (componentData != null) {
|
|
41
|
+
results.purls.push({
|
|
42
|
+
purl: componentData.purlName,
|
|
43
|
+
requirement: componentData.version,
|
|
44
|
+
scope: current_config_name
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
i++;
|
|
48
|
+
}
|
|
49
|
+
current_config_name = '';
|
|
50
|
+
}
|
|
51
|
+
else { //Single line dependency
|
|
52
|
+
const componentData = createPurlNameFromLine(line);
|
|
53
|
+
if (componentData == null) {
|
|
54
|
+
current_config_name = '';
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
results.purls.push({ purl: componentData.purlName, requirement: componentData.version, scope: current_config_name });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return Promise.resolve(results);
|
|
62
|
+
}
|
|
63
|
+
exports.buildGradleParser = buildGradleParser;
|
|
64
|
+
function getConfigNameFromLine(line) {
|
|
65
|
+
let configName = "";
|
|
66
|
+
const dep = line.split(/\s/);
|
|
67
|
+
if (dep.length)
|
|
68
|
+
configName = dep[0].replace("(", "").trim();
|
|
69
|
+
return configName;
|
|
70
|
+
}
|
|
71
|
+
function createPurlNameFromLine(line) {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
let namespace = undefined;
|
|
74
|
+
let name = undefined;
|
|
75
|
+
let version = undefined;
|
|
76
|
+
//Enters when line = implementation 'org.scala-lang:scala-library:2.11.12'
|
|
77
|
+
let dep = line.match(/(?<namespace>[\w\.\-]+):(?<name>[\w\.\-]+):(?<version>[\d\.]+)/);
|
|
78
|
+
if (dep === null || dep === void 0 ? void 0 : dep.length) {
|
|
79
|
+
namespace = dep.groups.namespace;
|
|
80
|
+
name = dep.groups.name;
|
|
81
|
+
version = dep.groups.version;
|
|
82
|
+
}
|
|
83
|
+
else if (line.includes("group") && line.includes("name") && line.includes("version")) {
|
|
84
|
+
version = line.match(/version:\s+['"](?<version>[\w\.\-\d]+)['"]/).groups.version;
|
|
85
|
+
name = (_a = line.match(/name:\s+['"](?<name>[\w\.\-\d]+)['"]/).groups) === null || _a === void 0 ? void 0 : _a.name;
|
|
86
|
+
namespace = (_b = line.match(/group:\s+['"](?<group>[\w\.\-\d]+)['"]/).groups) === null || _b === void 0 ? void 0 : _b.group;
|
|
87
|
+
}
|
|
88
|
+
let purlName = "";
|
|
89
|
+
if (name && namespace) {
|
|
90
|
+
const purlObj = new packageurl_js_1.PackageURL('maven', namespace, name, undefined, undefined, undefined);
|
|
91
|
+
return { purlName: purlObj.toString(), version };
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRHcmFkbGVQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9idWlsZEdyYWRsZVBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLGdEQUF3QjtBQUN4QixpREFBMkM7QUFHM0MsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0FBQ3JDLE1BQU0sV0FBVyxHQUFHLGlEQUFpRCxDQUFDO0FBRXRFLElBQUssYUFJSjtBQUpELFdBQUssYUFBYTtJQUNoQix1REFBTyxDQUFBO0lBQ1AsbUZBQXFCLENBQUE7SUFDckIsaUZBQW9CLENBQUE7QUFDdEIsQ0FBQyxFQUpJLGFBQWEsS0FBYixhQUFhLFFBSWpCO0FBQ00sS0FBSyxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7O0lBRzNFLDhEQUE4RDtJQUM5RCxNQUFNLE9BQU8sR0FBcUIsRUFBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUM5RCxJQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksYUFBYTtRQUN6QyxPQUFPLE9BQU8sQ0FBQztJQUVqQiwyQ0FBMkM7SUFDM0MsSUFBSSxNQUFNLENBQUM7SUFDWCxPQUFPLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDeEQsSUFBSSxRQUFRLFNBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sMENBQUUsWUFBWSxDQUFDO1FBRzVDLElBQUksbUJBQW1CLEdBQUcsRUFBRSxDQUFDLENBQUcsb0NBQW9DO1FBQ3BFLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFXLENBQUM7UUFDOUMsS0FBSyxJQUFJLENBQUMs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
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ILocalDependency } from "../DependencyTypes";
|
|
2
|
-
export declare function goModParser(fileContent: string, filePath: string): ILocalDependency
|
|
3
|
-
export declare function goSumParser(fileContent: string, filePath: string): ILocalDependency
|
|
2
|
+
export declare function goModParser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
3
|
+
export declare function goSumParser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
@@ -33,7 +33,7 @@ function goModParser(fileContent, filePath) {
|
|
|
33
33
|
// If the file is not a go.mod manifest file, return an empty results
|
|
34
34
|
const results = { file: filePath, purls: [] };
|
|
35
35
|
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
36
|
-
return results;
|
|
36
|
+
return Promise.resolve(results);
|
|
37
37
|
const lines = fileContent.split('\n');
|
|
38
38
|
const require = [];
|
|
39
39
|
for (let num = 0; num < lines.length; num += 1) {
|
|
@@ -51,7 +51,7 @@ function goModParser(fileContent, filePath) {
|
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
return results;
|
|
54
|
+
return Promise.resolve(results);
|
|
55
55
|
}
|
|
56
56
|
exports.goModParser = goModParser;
|
|
57
57
|
function parseGoSumDepLink(str) {
|
|
@@ -77,7 +77,7 @@ function goSumParser(fileContent, filePath) {
|
|
|
77
77
|
// If the file is not a go.mod manifest file, return an empty results
|
|
78
78
|
const results = { file: filePath, purls: [] };
|
|
79
79
|
if (path_1.default.basename(filePath) != 'go.sum')
|
|
80
|
-
return results;
|
|
80
|
+
return Promise.resolve(results);
|
|
81
81
|
const lines = fileContent.split('\n');
|
|
82
82
|
for (let num = 0; num < lines.length; num += 1) {
|
|
83
83
|
let line = preprocessLine(lines[num]); //Deletes coments
|
|
@@ -91,7 +91,7 @@ function goSumParser(fileContent, filePath) {
|
|
|
91
91
|
const purlString = `pkg:${PURL_TYPE}/${namespace}/${name}`;
|
|
92
92
|
results.purls.push({ purl: purlString, requirement: version });
|
|
93
93
|
}
|
|
94
|
-
return results;
|
|
94
|
+
return Promise.resolve(results);
|
|
95
95
|
}
|
|
96
96
|
exports.goSumParser = goSumParser;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29sYW5nUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9EZXBlbmRlbmNpZXMvTG9jYWxEZXBlbmRlbmN5L3BhcnNlcnMvZ29sYW5nUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsaURBQTJDO0FBQzNDLGdEQUF3QjtBQUV4QixTQUFTLFlBQVksQ0FBRSxHQUFXOztJQUNoQyxNQUFNLEdBQUcsR0FBRywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsT0FBTztRQUNMLE9BQU8sUUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSwwQ0FBRSxPQUFPO1FBQzdCLE9BQU8sUUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSwwQ0FBRSxPQUFPO0tBQzlCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxJQUFZO0lBQzNDLE1BQU0sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTlDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDOUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFMUMsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFDLENBQUE7QUFDbkMsQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMs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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { ILocalDependency } from "../DependencyTypes";
|
|
2
|
-
export declare function pomParser(fileContent: string, filePath: string): ILocalDependency
|
|
2
|
+
export declare function pomParser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
@@ -14,7 +14,7 @@ function pomParser(fileContent, filePath) {
|
|
|
14
14
|
// If the file is not a python manifest file, return an empty results
|
|
15
15
|
const results = { file: filePath, purls: [] };
|
|
16
16
|
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
17
|
-
return results;
|
|
17
|
+
return Promise.resolve(results);
|
|
18
18
|
const dependencies = fileContent.match(/<dependency>((?:.|\n)*?)<\/dependency>/gm);
|
|
19
19
|
if (dependencies) {
|
|
20
20
|
dependencies.forEach(dependency => {
|
|
@@ -44,7 +44,8 @@ function pomParser(fileContent, filePath) {
|
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
46
|
//Remove purls duplicated
|
|
47
|
-
|
|
47
|
+
const nonDuplicatedResults = removeDuplicated(results);
|
|
48
|
+
return Promise.resolve(nonDuplicatedResults);
|
|
48
49
|
}
|
|
49
50
|
exports.pomParser = pomParser;
|
|
50
51
|
function removeDuplicated(results) {
|
|
@@ -179,4 +180,4 @@ function extract_content_from_tag(file_content, selector) {
|
|
|
179
180
|
}
|
|
180
181
|
return '';
|
|
181
182
|
}
|
|
182
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW5QYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9tYXZlblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdEQUF3QjtBQUN4QixpREFBMkM7QUFHM0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDO0FBRTFCLGdEQUFnRDtBQUNoRCw4RkFBOEY7QUFDOUYsNkZBQTZGO0FBQzdGLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxTQUFnQixTQUFTLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUUzRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQXFCLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDOUQsSUFBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7UUFDekMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRWxDLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUNuRixJQUFHLFlBQVksRUFBRTtRQUVmLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDaEMsMkNBQTJDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUVyRSwwQ0FBMEM7WUFDMUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRXpFLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNuRSxJQUFJLE9BQU8sQ0FBQztZQUNaLElBQUcsVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUUsQ0FBQztnQkFBRSxPQUFPLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUc3RixpQkFBaUI7WUFDakIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQzdELE1BQU0sS0FBSyxHQUFHLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBR3BFLG9DQUFvQztZQUNwQyxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDNUUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFFeEYsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBRWhFLElBQUksY0FBYyxDQUFDO1lBQ25CLElBQUksSUFBSSxJQUFJLFVBQVU7Z0JBQ3RCLGNBQWMsbUNBQ1QsQ0FBQyxJQUFJLElBQUksRUFBQyxJQUFJLEVBQUMsQ0FBQyxHQUNoQixDQUFDLFVBQVUsSUFBSSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQ2hDLENBQUM7WUFFRixNQUFNLFVBQVUsR0FBRyxJQUFJLDBCQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUU3RSxDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQseUJBQXlCO0lBQ3pCLE1BQU0sb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFDakQsQ0FBQztBQXBERCw4QkFvREM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLE9BQXlCO0lBQ2pELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNmLEtBQUssSUFBSSxHQUFHLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtRQUM3QixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQTtLQUNwQjtJQUNELE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxPQUFPLE9BQU8sQ0FBQTtBQUNoQixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsa0JBQTBCLEVBQUUsWUFBb0I7SUFDdkUsK0RBQStEO0lBQy9ELElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFHLGtCQUFrQixFQUFFO1FBQ3JCLElBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDakQsT0FBTyxHQUFHLHdCQUF3QixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzFFO2FBQU0sSUFBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDNUMsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxRQUFRLGNBQWMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JGLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUMsQ0FBQztnQkFBRSxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO2FBQU07WUFDTCxPQUFPLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDekM7S0FDRjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFHRCxTQUFTLGtCQUFrQixDQUFDLElBQVk7SUFDdEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQy9DLElBQUksTUFBTTtRQUFFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQUMsSUFBWTtJQUNwQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEMsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBWTtJQUMvQixNQUFNLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxJQUFJLE1BQU0sS0FBSyxFQUFFO1FBQUUsT0FBTyxLQUFLLE1BQU0sR0FBRyxDQUFBO0lBQ3hDLE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQVk7SUFDakMsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsSUFBSSxNQUFNLEtBQUssRUFBRTtRQUFFLE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQTtJQUN2QyxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxPQUFlLEVBQUUsUUFBZTtJQUNyRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3BFLENBQUM7QUFFRCxTQUFTLG1CQUFtQixDQUFDLElBQVk7SUFDdkMsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBR0QsU0FBUywyQkFBMkIsQ0FBQyxLQUFvQixFQUFFLFlBQW9CO0lBQzdFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3RCLElBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssWUFBWTtZQUFFLE1BQU07UUFDcEQsQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNWO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBb0I7SUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFFLENBQUMsRUFBRTtRQUNoQyxJQUFJLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVDLElBQUksY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUMsSUFBRyxlQUFlLElBQUksY0FBYztZQUNoQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDNUMsSUFBSSxlQUFlLEVBQUM7WUFDckIsT0FBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQzNDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNWO1lBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzVDO0tBRUo7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFHRCxTQUFTLHdCQUF3QixDQUFDLFlBQW9CLEVBQUUsUUFBdUI7SUFDN0UsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxNQUFNLEtBQUssR0FBa0IsRUFBRSxDQUFDO0lBRWhDLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN0QixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDdEIsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUVqQixpQ0FBaUM7SUFDakMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUvQixLQUFLLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUUsQ0FBQyxFQUFFO1FBQ2xDLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFHLElBQUksS0FBSyxFQUFFO1lBQUUsU0FBUztRQUV6QixZQUFZLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBDLG1FQUFtRTtRQUNuRSxJQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxZQUFZLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQUUsU0FBUztRQUVuRiw0REFBNEQ7UUFDNUQsd0NBQXdDO1FBQ3hDLElBQUksUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLFlBQVksRUFBRTtZQUMzQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ1AsT0FBTyxDQUFDLEdBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFFLENBQUMsSUFBRSxDQUFDLENBQUM7WUFDOUQsU0FBUztTQUNYO1FBRUQsNEVBQTRFO1FBQzVFLGFBQWEsSUFBSSxDQUFDLENBQUM7UUFDbkIsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUV6QixpQkFBaUI7UUFDakIsSUFBRyxRQUFRLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDbkMsMkJBQTJCO1lBQzNCLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3QyxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUMsa0VBQWtFO1lBQ2xFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDUCxPQUFPLENBQUMsR0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRztnQkFDeEQsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNSO1lBQ0QsT0FBTyxPQUFPLENBQUM7U0FDbEI7UUFDRCxZQUFZLEdBQUMsRUFBRSxDQUFDO1FBQ2hCLFVBQVUsR0FBQyxFQUFFLENBQUM7S0FDZjtJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyJ9
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { ILocalDependency } from "../DependencyTypes";
|
|
2
|
-
export declare function packageParser(fileContent: string, filePath: string): ILocalDependency
|
|
3
|
-
export declare function packagelockParser(fileContent: string, filePath: string): ILocalDependency
|
|
4
|
-
export declare function yarnLockParser(fileContent: string, filePath: string): ILocalDependency
|
|
2
|
+
export declare function packageParser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
3
|
+
export declare function packagelockParser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
4
|
+
export declare function yarnLockParser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
5
5
|
declare enum YarnLockVersionEnum {
|
|
6
6
|
"V1" = 0,
|
|
7
7
|
"V2" = 1,
|
|
8
8
|
UnknownYarnLockFormat = 2
|
|
9
9
|
}
|
|
10
10
|
export declare function yarnLockRecognizeVersion(fileContent: string): YarnLockVersionEnum;
|
|
11
|
-
export declare function yarnLockV1Parser(fileContent: string, filePath: string): ILocalDependency
|
|
12
|
-
export declare function yarnLockV2Parser(fileContent: string, filePath: string): ILocalDependency
|
|
11
|
+
export declare function yarnLockV1Parser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
12
|
+
export declare function yarnLockV2Parser(fileContent: string, filePath: string): Promise<ILocalDependency>;
|
|
13
13
|
export {};
|
|
@@ -13,7 +13,7 @@ function packageParser(fileContent, filePath) {
|
|
|
13
13
|
// If the file is not manifest file, return an empty results
|
|
14
14
|
const results = { file: filePath, purls: [] };
|
|
15
15
|
if (path_1.default.basename(filePath) != MANIFEST_FILE)
|
|
16
|
-
return results;
|
|
16
|
+
return Promise.resolve(results);
|
|
17
17
|
const o = JSON.parse(fileContent);
|
|
18
18
|
let devDeps = Object.keys(o.devDependencies || {});
|
|
19
19
|
let deps = Object.keys(o.dependencies || {});
|
|
@@ -25,7 +25,7 @@ function packageParser(fileContent, filePath) {
|
|
|
25
25
|
const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, undefined, name, undefined, undefined, undefined).toString();
|
|
26
26
|
results.purls.push({ purl: purlString, scope: "devDependencies", requirement: o.devDependencies[name] });
|
|
27
27
|
}
|
|
28
|
-
return results;
|
|
28
|
+
return Promise.resolve(results);
|
|
29
29
|
}
|
|
30
30
|
exports.packageParser = packageParser;
|
|
31
31
|
// Parse a package-lock.json file from node projects
|
|
@@ -34,10 +34,10 @@ function packagelockParser(fileContent, filePath) {
|
|
|
34
34
|
var _a;
|
|
35
35
|
const results = { file: filePath, purls: [] };
|
|
36
36
|
if (path_1.default.basename(filePath) != 'package-lock.json')
|
|
37
|
-
return results;
|
|
37
|
+
return Promise.resolve(results);
|
|
38
38
|
const packages = (_a = JSON.parse(fileContent)) === null || _a === void 0 ? void 0 : _a.packages;
|
|
39
39
|
if (!packages)
|
|
40
|
-
return results;
|
|
40
|
+
return Promise.resolve(results);
|
|
41
41
|
for (const [key, value] of Object.entries(packages)) {
|
|
42
42
|
if (!key)
|
|
43
43
|
continue;
|
|
@@ -47,19 +47,19 @@ function packagelockParser(fileContent, filePath) {
|
|
|
47
47
|
let req = value['version'];
|
|
48
48
|
results.purls.push({ purl: purl, requirement: req });
|
|
49
49
|
}
|
|
50
|
-
return results;
|
|
50
|
+
return Promise.resolve(results);
|
|
51
51
|
}
|
|
52
52
|
exports.packagelockParser = packagelockParser;
|
|
53
53
|
function yarnLockParser(fileContent, filePath) {
|
|
54
54
|
const results = { file: filePath, purls: [] };
|
|
55
55
|
if (path_1.default.basename(filePath) != 'yarn.lock')
|
|
56
|
-
return results;
|
|
56
|
+
return Promise.resolve(results);
|
|
57
57
|
const yarnVersion = yarnLockRecognizeVersion(fileContent);
|
|
58
58
|
if (yarnVersion === YarnLockVersionEnum.V1)
|
|
59
59
|
return yarnLockV1Parser(fileContent, filePath);
|
|
60
60
|
else if (yarnVersion === YarnLockVersionEnum.V2)
|
|
61
61
|
return yarnLockV2Parser(fileContent, filePath);
|
|
62
|
-
return results;
|
|
62
|
+
return Promise.resolve(results);
|
|
63
63
|
}
|
|
64
64
|
exports.yarnLockParser = yarnLockParser;
|
|
65
65
|
var YarnLockVersionEnum;
|
|
@@ -175,12 +175,13 @@ function yarnLockV1Parser(fileContent, filePath) {
|
|
|
175
175
|
}
|
|
176
176
|
results.purls.push({ purl: purl, requirement: requirement });
|
|
177
177
|
}
|
|
178
|
-
return results;
|
|
178
|
+
return Promise.resolve(results);
|
|
179
179
|
}
|
|
180
180
|
exports.yarnLockV1Parser = yarnLockV1Parser;
|
|
181
|
+
//TODO: Implement yarn lock V2 parser
|
|
181
182
|
function yarnLockV2Parser(fileContent, filePath) {
|
|
182
183
|
const results = { file: filePath, purls: [] };
|
|
183
|
-
return results;
|
|
184
|
+
return Promise.resolve(results);
|
|
184
185
|
}
|
|
185
186
|
exports.yarnLockV2Parser = yarnLockV2Parser;
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Nkay9EZXBlbmRlbmNpZXMvTG9jYWxEZXBlbmRlbmN5L3BhcnNlcnMvbnBtUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLGlEQUEyQztBQUczQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFHeEIsK0NBQStDO0FBQy9DLCtFQUErRTtBQUMvRSxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUM7QUFDckMsU0FBZ0IsYUFBYSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFDL0QsNERBQTREO0lBQzVELE1BQU0sT0FBTyxHQUFxQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzlELElBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3pDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUVsQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLENBQUM7SUFFN0MsS0FBSSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUM7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSwwQkFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMs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
|