scanoss 0.2.19 → 0.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/build/main/bin/cli-bin.js +3 -1
  2. package/build/main/commands/dep.js +19 -7
  3. package/build/main/commands/helpers.d.ts +1 -0
  4. package/build/main/commands/helpers.js +22 -0
  5. package/build/main/commands/scan.js +3 -15
  6. package/build/main/index.d.ts +1 -2
  7. package/build/main/index.js +2 -3
  8. package/build/main/lib/dependencies/DependencyScanner.d.ts +6 -5
  9. package/build/main/lib/dependencies/DependencyScanner.js +31 -49
  10. package/build/main/lib/dependencies/DependencyScannerCfg.d.ts +4 -0
  11. package/build/main/lib/dependencies/DependencyScannerCfg.js +11 -0
  12. package/build/main/lib/dependencies/DependencyTypes.d.ts +10 -8
  13. package/build/main/lib/dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
  14. package/build/main/lib/dependencies/LocalDependency/DependencyTypes.js +3 -0
  15. package/build/main/lib/dependencies/LocalDependency/LocalDependency.d.ts +6 -0
  16. package/build/main/lib/dependencies/LocalDependency/LocalDependency.js +51 -0
  17. package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +2 -0
  18. package/build/main/lib/dependencies/LocalDependency/parsers/golangParser.js +63 -0
  19. package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
  20. package/build/main/lib/dependencies/LocalDependency/parsers/mavenParser.js +57 -0
  21. package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/npmParser.d.ts +3 -3
  22. package/build/main/lib/dependencies/LocalDependency/parsers/npmParser.js +50 -0
  23. package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
  24. package/build/main/lib/dependencies/LocalDependency/parsers/pyParser.js +61 -0
  25. package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/rubyParser.d.ts +3 -3
  26. package/build/main/lib/dependencies/LocalDependency/parsers/rubyParser.js +133 -0
  27. package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/utils.d.ts +0 -0
  28. package/build/main/lib/dependencies/{parsers → LocalDependency/parsers}/utils.js +1 -1
  29. package/build/main/lib/grpc/GrpcDependencyService.d.ts +3 -5
  30. package/build/main/lib/grpc/GrpcDependencyService.js +15 -13
  31. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +22 -23
  32. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +5 -5
  33. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +90 -48
  34. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +4 -5
  35. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +5 -6
  36. package/build/main/lib/scanner/Scanner.js +1 -1
  37. package/build/module/bin/cli-bin.js +3 -1
  38. package/build/module/commands/dep.js +19 -7
  39. package/build/module/commands/helpers.d.ts +1 -0
  40. package/build/module/commands/helpers.js +15 -0
  41. package/build/module/commands/scan.js +2 -14
  42. package/build/module/index.d.ts +1 -2
  43. package/build/module/index.js +2 -3
  44. package/build/module/lib/dependencies/DependencyScanner.d.ts +6 -5
  45. package/build/module/lib/dependencies/DependencyScanner.js +32 -46
  46. package/build/module/lib/dependencies/DependencyScannerCfg.d.ts +4 -0
  47. package/build/module/lib/dependencies/DependencyScannerCfg.js +5 -0
  48. package/build/module/lib/dependencies/DependencyTypes.d.ts +10 -8
  49. package/build/module/lib/dependencies/LocalDependency/DependencyTypes.d.ts +16 -0
  50. package/build/module/lib/dependencies/LocalDependency/DependencyTypes.js +2 -0
  51. package/build/module/lib/dependencies/LocalDependency/LocalDependency.d.ts +6 -0
  52. package/build/module/lib/dependencies/LocalDependency/LocalDependency.js +45 -0
  53. package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.d.ts +2 -0
  54. package/build/module/lib/dependencies/LocalDependency/parsers/golangParser.js +55 -0
  55. package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.d.ts +2 -0
  56. package/build/module/lib/dependencies/LocalDependency/parsers/mavenParser.js +50 -0
  57. package/build/module/lib/dependencies/{parsers → LocalDependency/parsers}/npmParser.d.ts +3 -3
  58. package/build/module/lib/dependencies/LocalDependency/parsers/npmParser.js +42 -0
  59. package/build/module/lib/dependencies/LocalDependency/parsers/pyParser.d.ts +2 -0
  60. package/build/module/lib/dependencies/LocalDependency/parsers/pyParser.js +53 -0
  61. package/build/module/lib/dependencies/{parsers → LocalDependency/parsers}/rubyParser.d.ts +3 -3
  62. package/build/module/lib/dependencies/LocalDependency/parsers/rubyParser.js +130 -0
  63. package/build/module/lib/dependencies/{parsers → LocalDependency/parsers}/utils.d.ts +0 -0
  64. package/build/module/lib/dependencies/LocalDependency/parsers/utils.js +15 -0
  65. package/build/module/lib/grpc/GrpcDependencyService.d.ts +3 -5
  66. package/build/module/lib/grpc/GrpcDependencyService.js +15 -14
  67. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +22 -23
  68. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +5 -5
  69. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +90 -48
  70. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +4 -5
  71. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +5 -6
  72. package/build/module/lib/scanner/Scanner.js +1 -1
  73. package/build/tsconfig.module.tsbuildinfo +1 -1
  74. package/build/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +3 -1
  76. package/src/bin/cli-bin.ts +4 -1
  77. package/src/commands/dep.ts +18 -6
  78. package/src/commands/helpers.ts +14 -0
  79. package/src/commands/scan.ts +3 -12
  80. package/src/index.ts +2 -2
  81. package/src/lib/dependencies/DependencyScanner.ts +77 -0
  82. package/src/lib/dependencies/DependencyScannerCfg.ts +7 -0
  83. package/src/lib/dependencies/DependencyTypes.ts +16 -14
  84. package/src/lib/dependencies/LocalDependency/DependencyTypes.ts +21 -0
  85. package/src/lib/dependencies/LocalDependency/LocalDependency.ts +48 -0
  86. package/src/lib/dependencies/{parsers → LocalDependency/parsers}/golangParser.ts +4 -6
  87. package/src/lib/dependencies/{parsers → LocalDependency/parsers}/mavenParser.ts +10 -6
  88. package/src/lib/dependencies/{parsers → LocalDependency/parsers}/npmParser.ts +14 -8
  89. package/src/lib/dependencies/LocalDependency/parsers/pyParser.ts +55 -0
  90. package/src/lib/dependencies/{parsers → LocalDependency/parsers}/rubyParser.ts +21 -29
  91. package/src/lib/dependencies/{parsers → LocalDependency/parsers}/utils.ts +0 -1
  92. package/src/lib/grpc/GrpcDependencyService.ts +66 -0
  93. package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +1 -0
  94. package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +1 -0
  95. package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +79 -0
  96. package/src/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +482 -0
  97. package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +30 -0
  98. package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +109 -0
  99. package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +206 -0
  100. package/src/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1489 -0
  101. package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +25 -0
  102. package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +73 -0
  103. package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +6 -0
  104. package/src/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  105. package/src/lib/scanner/Scanner.ts +2 -1
  106. package/tsconfig.json +5 -22
  107. package/yarn.lock +5252 -5213
  108. package/build/main/lib/dependencies/Dependency.d.ts +0 -9
  109. package/build/main/lib/dependencies/Dependency.js +0 -52
  110. package/build/main/lib/dependencies/PurlGenerator.d.ts +0 -2
  111. package/build/main/lib/dependencies/PurlGenerator.js +0 -46
  112. package/build/main/lib/dependencies/parsers/golangParser.d.ts +0 -2
  113. package/build/main/lib/dependencies/parsers/golangParser.js +0 -63
  114. package/build/main/lib/dependencies/parsers/mavenParser.d.ts +0 -2
  115. package/build/main/lib/dependencies/parsers/mavenParser.js +0 -54
  116. package/build/main/lib/dependencies/parsers/npmParser.js +0 -46
  117. package/build/main/lib/dependencies/parsers/pyParser.d.ts +0 -2
  118. package/build/main/lib/dependencies/parsers/pyParser.js +0 -51
  119. package/build/main/lib/dependencies/parsers/rubyParser.js +0 -135
  120. package/build/main/lib/dependencies/parsers/types.d.ts +0 -15
  121. package/build/main/lib/dependencies/parsers/types.js +0 -3
  122. package/build/main/lib/grpc/GrpcConfig.d.ts +0 -4
  123. package/build/main/lib/grpc/GrpcConfig.js +0 -11
  124. package/build/main/old/Dependency.d.ts +0 -9
  125. package/build/main/old/Dependency.js +0 -96
  126. package/build/main/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  127. package/build/main/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
  128. package/build/main/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -1
  129. package/build/main/scanoss/api/common/v2/scanoss-common_pb.js +0 -405
  130. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -42
  131. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +0 -98
  132. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -1
  133. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1156
  134. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -21
  135. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -67
  136. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +0 -1
  137. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -15
  138. package/build/module/lib/dependencies/Dependency.d.ts +0 -9
  139. package/build/module/lib/dependencies/Dependency.js +0 -47
  140. package/build/module/lib/dependencies/PurlGenerator.d.ts +0 -2
  141. package/build/module/lib/dependencies/PurlGenerator.js +0 -39
  142. package/build/module/lib/dependencies/parsers/golangParser.d.ts +0 -2
  143. package/build/module/lib/dependencies/parsers/golangParser.js +0 -55
  144. package/build/module/lib/dependencies/parsers/mavenParser.d.ts +0 -2
  145. package/build/module/lib/dependencies/parsers/mavenParser.js +0 -47
  146. package/build/module/lib/dependencies/parsers/npmParser.js +0 -38
  147. package/build/module/lib/dependencies/parsers/pyParser.d.ts +0 -2
  148. package/build/module/lib/dependencies/parsers/pyParser.js +0 -44
  149. package/build/module/lib/dependencies/parsers/rubyParser.js +0 -132
  150. package/build/module/lib/dependencies/parsers/types.d.ts +0 -15
  151. package/build/module/lib/dependencies/parsers/types.js +0 -2
  152. package/build/module/lib/dependencies/parsers/utils.js +0 -15
  153. package/build/module/lib/grpc/GrpcConfig.d.ts +0 -4
  154. package/build/module/lib/grpc/GrpcConfig.js +0 -5
  155. package/build/module/old/Dependency.d.ts +0 -9
  156. package/build/module/old/Dependency.js +0 -72
  157. package/build/module/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  158. package/build/module/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
  159. package/build/module/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -1
  160. package/build/module/scanoss/api/common/v2/scanoss-common_pb.js +0 -405
  161. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -42
  162. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +0 -98
  163. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -1
  164. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1156
  165. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -21
  166. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -67
  167. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +0 -1
  168. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -15
  169. package/package-lock.json +0 -18589
  170. package/src/lib/dependencies/Dependency.ts +0 -60
  171. package/src/lib/dependencies/PurlGenerator.ts +0 -45
  172. package/src/lib/dependencies/parsers/pyParser.ts +0 -46
  173. package/src/lib/dependencies/parsers/types.ts +0 -19
@@ -0,0 +1,50 @@
1
+ import path from "path";
2
+ import { PackageURL } from "packageurl-js";
3
+ const PURL_TYPE = 'maven';
4
+ // Parse a pom.txt file from maven manifest file
5
+ // See reference on: https://maven.apache.org/guides/introduction/introduction-to-the-pom.html
6
+ // and https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html
7
+ const MANIFEST_FILE = 'pom.xml';
8
+ export function pomParser(fileContent, filePath) {
9
+ // If the file is not a python manifest file, return an empty results
10
+ const results = { file: filePath, purls: [] };
11
+ if (path.basename(filePath) != MANIFEST_FILE)
12
+ return results;
13
+ const dependencies = fileContent.match(/<dependency>((?:.|\n)*?)<\/dependency>/gm);
14
+ if (dependencies) {
15
+ // TODO: classifier are not supported yet
16
+ dependencies.forEach(dependency => {
17
+ // Extract groupId. It's the purl namespace
18
+ const groupId = dependency.match(/<groupId>([^<]*)<\/groupId>/);
19
+ const namespace = groupId ? groupId[1] : '';
20
+ // Extract artifact id. It's the purl name
21
+ const artifactId = dependency.match(/<artifactId>([^<]*)<\/artifactId>/);
22
+ const name = artifactId ? artifactId[1] : '';
23
+ const versionReg = dependency.match(/<version>([^<]*)<\/version>/);
24
+ let version = versionReg ? versionReg[1] : '';
25
+ const ver = version.match(/\${(.*?)}/);
26
+ if (ver && ver.length >= 1) {
27
+ if (ver[1] === 'project.version') { // TODO: Add support for project.version
28
+ version = undefined;
29
+ }
30
+ else {
31
+ const res = fileContent.match(new RegExp(`<${ver[1]}>([^<]*)<\/${ver[1]}>`));
32
+ version = res.length >= 1 ? res[1] : '';
33
+ }
34
+ }
35
+ let purlQualifiers;
36
+ const type = dependency.match(/<type>([^<]*)<\/type>/);
37
+ if (type) {
38
+ purlQualifiers = {};
39
+ purlQualifiers['type'] = type[1];
40
+ }
41
+ // Extract scope.
42
+ const scopeRes = dependency.match(/<scope>([^<]*)<\/scope>/);
43
+ const scope = scopeRes ? scopeRes[1] : undefined;
44
+ const purlString = new PackageURL(PURL_TYPE, namespace, name, version, purlQualifiers, undefined).toString();
45
+ results.purls.push({ purl: purlString, scope: scope });
46
+ });
47
+ }
48
+ return results;
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF2ZW5QYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9tYXZlblBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFJMUIsZ0RBQWdEO0FBQ2hELDhGQUE4RjtBQUM5Riw2RkFBNkY7QUFDN0YsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ2hDLE1BQU0sVUFBVSxTQUFTLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUUzRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQXFCLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDOUQsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO0lBQ25GLElBQUcsWUFBWSxFQUFFO1FBRWYseUNBQXlDO1FBQ3pDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDaEMsMkNBQTJDO1lBQzNDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztZQUNoRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTVDLDBDQUEwQztZQUMxQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7WUFDekUsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUU3QyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDbkUsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUU5QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3ZDLElBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO2dCQUN6QixJQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxpQkFBaUIsRUFBRSxFQUFFLHdDQUF3QztvQkFDekUsT0FBTyxHQUFHLFNBQVMsQ0FBQztpQkFDckI7cUJBQU07b0JBQ0wsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzdFLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ3pDO2FBQ0Y7WUFFRCxJQUFJLGNBQWMsQ0FBQztZQUNuQixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDdkQsSUFBRyxJQUFJLEVBQUU7Z0JBQ0wsY0FBYyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTthQUNuQztZQUVELGlCQUFpQjtZQUNqQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDN0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVqRCxNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyJ9
@@ -1,3 +1,3 @@
1
- import { FileDependency } from "./types";
2
- export declare function packageParser(fileContent: string, filePath: string): FileDependency;
3
- export declare function packagelockParser(fileContent: string, filePath: string): FileDependency;
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;
@@ -0,0 +1,42 @@
1
+ import path from "path";
2
+ import { PackageURL } from "packageurl-js";
3
+ const PURL_TYPE = 'npm';
4
+ // Parse a package.json file from node projects
5
+ // See reference on: https://docs.npmjs.com/cli/v8/configuring-npm/package-json
6
+ const MANIFEST_FILE = 'package.json';
7
+ export function packageParser(fileContent, filePath) {
8
+ // If the file is not manifest file, return an empty results
9
+ const results = { file: filePath, purls: [] };
10
+ if (path.basename(filePath) != MANIFEST_FILE)
11
+ return results;
12
+ const o = JSON.parse(fileContent);
13
+ let devDeps = Object.keys(o.devDependencies || {});
14
+ let deps = Object.keys(o.dependencies || {});
15
+ let listDeps = [...deps, ...devDeps];
16
+ for (const name of deps) {
17
+ const purlString = new PackageURL(PURL_TYPE, undefined, name, undefined, undefined, undefined).toString();
18
+ results.purls.push({ purl: purlString, scope: "dependencies", requirements: o.dependencies[name] });
19
+ }
20
+ for (const name of devDeps) {
21
+ const purlString = new PackageURL(PURL_TYPE, undefined, name, undefined, undefined, undefined).toString();
22
+ results.purls.push({ purl: purlString, scope: "devDependencies", requirements: o.devDependencies[name] });
23
+ }
24
+ return results;
25
+ }
26
+ // Parse a package-lock.json file from node projects
27
+ // See reference on: https://docs.npmjs.com/cli/v8/configuring-npm/package-json
28
+ const MANIFEST_FILE_1 = 'package-lock.json';
29
+ export function packagelockParser(fileContent, filePath) {
30
+ const results = { file: filePath, purls: [] };
31
+ if (path.basename(filePath) != MANIFEST_FILE_1)
32
+ return results;
33
+ const o = JSON.parse(fileContent).dependencies;
34
+ for (const [key, value] of Object.entries(o)) {
35
+ if (!key)
36
+ continue;
37
+ let purl = new PackageURL(PURL_TYPE, undefined, key, value['version'], undefined, undefined).toString();
38
+ results.purls.push({ purl });
39
+ }
40
+ return results;
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvTG9jYWxEZXBlbmRlbmN5L3BhcnNlcnMvbnBtUGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQztBQUd4QiwrQ0FBK0M7QUFDL0MsK0VBQStFO0FBQy9FLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztBQUNyQyxNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFDL0QsNERBQTREO0lBQzVELE1BQU0sT0FBTyxHQUFxQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzlELElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBQ25CLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsSUFBSSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFFckMsS0FBSSxNQUFNLElBQUksSUFBSSxJQUFJLEVBQUM7UUFDbkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUM7S0FDckc7SUFFRCxLQUFJLE1BQU0sSUFBSSxJQUFJLE9BQU8sRUFBQztRQUN4QixNQUFNLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0tBQ3pHO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUdELG9EQUFvRDtBQUNwRCwrRUFBK0U7QUFDL0UsTUFBTSxlQUFlLEdBQUcsbUJBQW1CLENBQUM7QUFDNUMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFbkUsTUFBTSxPQUFPLEdBQXFCLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDOUQsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGVBQWU7UUFDekMsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDL0MsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDMUMsSUFBRyxDQUFDLEdBQUc7WUFBRSxTQUFTO1FBQ2xCLElBQUksSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkcsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO0tBQzlCO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { ILocalDependency } from "../DependencyTypes";
2
+ export declare function requirementsParser(fileContent: string, filePath: string): ILocalDependency;
@@ -0,0 +1,53 @@
1
+ import path from "path";
2
+ import { PackageURL } from "packageurl-js";
3
+ import { isValidPath, isValidUrl } from './utils';
4
+ function parseDep(str) {
5
+ const res = /^(?<name>[-\w]+)\s*(?<sym>[>=~!]*)\s*(?<version>[\d\.]*)/.exec(str);
6
+ return {
7
+ name: res?.groups?.name,
8
+ sym: res?.groups?.sym,
9
+ version: res?.groups?.version,
10
+ };
11
+ }
12
+ const PURL_TYPE = 'pypi';
13
+ // Parse a requirements.txt file from python projects
14
+ // See reference on: https://pip.pypa.io/en/stable/reference/requirements-file-format/
15
+ const MANIFEST_FILE = 'requirements.txt';
16
+ export function requirementsParser(fileContent, filePath) {
17
+ // If the file is not a python manifest file, return an empty results
18
+ const results = { file: filePath, purls: [] };
19
+ if (path.basename(filePath) != MANIFEST_FILE)
20
+ return results;
21
+ const lines = fileContent.split('\n');
22
+ for (let line of lines) {
23
+ line = line.trim();
24
+ if (line.length == 0)
25
+ continue;
26
+ if (!line.startsWith('#') && line.length > 0) { // Avoid comments and new lines
27
+ if (isValidUrl(line)) {
28
+ // For reference about the regex see https://www.rfc-editor.org/rfc/rfc3986#appendix-B
29
+ const res = line.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
30
+ continue;
31
+ }
32
+ else if (isValidPath(line)) {
33
+ continue;
34
+ } // Do not parse local dependencies.
35
+ else if (line.startsWith('-r')) {
36
+ continue;
37
+ } // Recursive dependencies (NOT SUPPORTED YET)
38
+ else {
39
+ const dep = parseDep(line);
40
+ if (dep.sym === '==') {
41
+ const purlString = new PackageURL(PURL_TYPE, undefined, dep.name, dep.version, undefined, undefined).toString();
42
+ results.purls.push({ purl: purlString });
43
+ }
44
+ else {
45
+ const purlString = new PackageURL(PURL_TYPE, undefined, dep.name, undefined, undefined, undefined).toString();
46
+ results.purls.push({ purl: purlString, requirements: dep.sym + dep.version });
47
+ }
48
+ }
49
+ }
50
+ }
51
+ return results;
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHlQYXJzZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy9weVBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdsRCxTQUFTLFFBQVEsQ0FBRSxHQUFXO0lBQzVCLE1BQU0sR0FBRyxHQUFHLDBEQUEwRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRixPQUFPO1FBQ0wsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSTtRQUN2QixHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHO1FBQ3JCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE9BQU87S0FDOUIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUM7QUFFekIscURBQXFEO0FBQ3JELHNGQUFzRjtBQUN0RixNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUN6QyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsV0FBbUIsRUFBRSxRQUFnQjtJQUVwRSxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQXFCLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDOUQsSUFBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWE7UUFDdkMsT0FBTyxPQUFPLENBQUM7SUFFbkIsTUFBTSxLQUFLLEdBQWtCLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFckQsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLFNBQVM7UUFDOUIsSUFBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUUsRUFBRSwrQkFBK0I7WUFDeEUsSUFBRyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2pCLHNGQUFzRjtnQkFDdEYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQywrREFBK0QsQ0FBQyxDQUFDO2dCQUN4RixTQUFTO2FBQ1o7aUJBQ0ksSUFBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQUMsU0FBUzthQUFDLENBQUMsbUNBQW1DO2lCQUNyRSxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQUMsU0FBUzthQUFDLENBQUMsNkNBQTZDO2lCQUNuRjtnQkFFRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzNCLElBQUksR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUU7b0JBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDaEgsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztpQkFDeEM7cUJBQU07b0JBQ0wsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQzlHLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBQyxHQUFHLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztpQkFDM0U7YUFDSjtTQUNKO0tBQ0o7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDIn0=
@@ -1,3 +1,3 @@
1
- import { FileDependency } from "./types";
2
- export declare function gemfileParser(fileContent: string, filePath: string): FileDependency;
3
- export declare function gemfilelockParser(fileContent: string, filePath: string): FileDependency;
1
+ import { ILocalDependency } from "../DependencyTypes";
2
+ export declare function gemfileParser(fileContent: string, filePath: string): ILocalDependency;
3
+ export declare function gemfilelockParser(fileContent: string, filePath: string): ILocalDependency;
@@ -0,0 +1,130 @@
1
+ import path from "path";
2
+ import { PackageURL } from "packageurl-js";
3
+ const PURL_TYPE = 'gem';
4
+ // Parse a gemfile file from ruby
5
+ // See reference on: https://bundler.io/gemfile.html
6
+ // and https://bundler.io/man/gemfile.5.html
7
+ const MANIFEST_FILE = 'Gemfile';
8
+ export function gemfileParser(fileContent, filePath) {
9
+ // If the file is not a manifest file, return an empty results
10
+ const results = { file: filePath, purls: [] };
11
+ if (path.basename(filePath) != MANIFEST_FILE)
12
+ return results;
13
+ const lines = fileContent.split('\n');
14
+ let compName = '';
15
+ for (let line of lines) {
16
+ line = line.trim();
17
+ if (!line.startsWith('#') && line.length > 0) { // Avoid comments and empty lines
18
+ // Line contains a package name and/or version.
19
+ const res = line.match(/^gem\s*(["']\w+["'])/); //Extract name
20
+ if (res) {
21
+ compName = res.length > 1 ? res[1] : ' ';
22
+ compName = compName.replace(/['"]/g, '');
23
+ const purlString = new PackageURL(PURL_TYPE, undefined, compName, undefined, undefined, undefined).toString();
24
+ results.purls.push({ purl: purlString });
25
+ }
26
+ }
27
+ }
28
+ return results;
29
+ }
30
+ const MANIFEST_FILE_1 = 'Gemfile.lock';
31
+ export function gemfilelockParser(fileContent, filePath) {
32
+ // If the file is not a manifest file, return an empty results
33
+ const results = { file: filePath, purls: [] };
34
+ if (path.basename(filePath) != MANIFEST_FILE_1)
35
+ return results;
36
+ const gemlockParser = new GemfileLockParser();
37
+ const purls = gemlockParser.getDependencies(fileContent);
38
+ for (const purl of purls) {
39
+ results.purls.push({ purl });
40
+ }
41
+ return results;
42
+ }
43
+ // Section headings: these are also used as switches to track a parsing state
44
+ const PATH = 'PATH';
45
+ const GIT = 'GIT';
46
+ const SVN = 'SVN';
47
+ const GEM = 'GEM';
48
+ const PLATFORMS = 'PLATFORMS';
49
+ const DEPENDENCIES = 'DEPENDENCIES';
50
+ const SPECS = ' specs:';
51
+ // types of Gems, which is really where they are provisioned from
52
+ // RubyGems repo, local path or VCS
53
+ const GEM_TYPES = [GEM, PATH, GIT, SVN];
54
+ const specRegex = /(?<name>[^ \)\(,!:]+)?(?: \((?<version>[^-]*?)(?:-(?<platform>[^!]*))?\))?/;
55
+ const firstDepLevelRegex = /^ {4}(?! )/;
56
+ /*
57
+ The parsing use a simple state machine, switching states based on sections
58
+ headings. The result is a list of purls
59
+ */
60
+ class GemfileLockParser {
61
+ statesMap;
62
+ state;
63
+ current_options;
64
+ current_gem;
65
+ purlList;
66
+ constructor() {
67
+ this.purlList = [];
68
+ // map of a line start string to the next parsing state function
69
+ this.statesMap = {};
70
+ this.statesMap[DEPENDENCIES] = this.parseDependency;
71
+ this.statesMap[PLATFORMS] = this.parsePlatform;
72
+ this.statesMap[GIT] = this.parseOptions;
73
+ this.statesMap[PATH] = this.parseOptions;
74
+ this.statesMap[SVN] = this.parseOptions;
75
+ this.statesMap[GEM] = this.parseOptions;
76
+ this.statesMap[SPECS] = this.parseSpec;
77
+ }
78
+ getDependencies(filecontent) {
79
+ this.resetState();
80
+ let file = filecontent.split('\n');
81
+ for (let line of file) {
82
+ line = line.trimEnd();
83
+ //reset state on empty lines
84
+ if (!line.length) {
85
+ this.resetState();
86
+ continue;
87
+ }
88
+ //switch to new state
89
+ if (line in this.statesMap) {
90
+ if (GEM_TYPES.includes(line))
91
+ this.current_gem = line;
92
+ this.state = this.statesMap[line];
93
+ continue;
94
+ }
95
+ // process the line
96
+ if (this.state)
97
+ this.state(line);
98
+ }
99
+ return this.purlList;
100
+ }
101
+ resetState() {
102
+ this.current_options = {};
103
+ this.state = null;
104
+ }
105
+ parseOptions(line) {
106
+ const match = line.match(/\s*(\w+):\s*(.*)/);
107
+ const key = match.length >= 1 ? match[1] : null;
108
+ const value = match.length >= 2 ? match[2] : null;
109
+ if (key)
110
+ this.current_options[key] = value;
111
+ }
112
+ parseDependency(line) { }
113
+ parsePlatform(line) { }
114
+ parseSpec(line) {
115
+ if (this.current_gem == GEM) {
116
+ if (firstDepLevelRegex.test(line)) {
117
+ line = line.trimStart();
118
+ const match = line.match(specRegex);
119
+ const purl = new PackageURL(PURL_TYPE, undefined, match.groups.name, match.groups.version, undefined, undefined).toString();
120
+ this.purlList.push(purl);
121
+ }
122
+ else { // Second level of dependence
123
+ }
124
+ }
125
+ if (this.current_gem == GIT) { }
126
+ // Purl from local dependencies are not generated
127
+ if (this.current_gem == PATH) { }
128
+ }
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVieVBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL0xvY2FsRGVwZW5kZW5jeS9wYXJzZXJzL3J1YnlQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBR3hCLGlDQUFpQztBQUNqQyxvREFBb0Q7QUFDcEQsNENBQTRDO0FBQzVDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFL0QsOERBQThEO0lBQzlELE1BQU0sT0FBTyxHQUFxQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzlELElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBR25CLE1BQU0sS0FBSyxHQUFrQixXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUUxQixLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtRQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFFLEVBQUUsaUNBQWlDO1lBQzNFLCtDQUErQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBSSxjQUFjO1lBQ2pFLElBQUksR0FBRyxFQUFFO2dC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
@@ -0,0 +1,15 @@
1
+ import { URL } from "url";
2
+ export function isValidUrl(string) {
3
+ let url;
4
+ try {
5
+ new URL(string);
6
+ }
7
+ catch (_) {
8
+ return false;
9
+ }
10
+ return true;
11
+ }
12
+ export function isValidPath(string) {
13
+ return /^((?:\.\.?)|(?:[a-zA-Z]:\\)|(?:\/))/gm.test(string);
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9Mb2NhbERlcGVuZGVuY3kvcGFyc2Vycy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTFCLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYztJQUNyQyxJQUFJLEdBQVEsQ0FBQztJQUNiLElBQUk7UUFDRixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVILE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBYztJQUN4QyxPQUFPLHVDQUF1QyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5RCxDQUFDIn0=
@@ -1,12 +1,10 @@
1
- import { GrpcConfig } from './GrpcConfig';
2
1
  import * as DependenciesMessages from './scanoss/api/dependencies/v2/scanoss-dependencies_pb.js';
3
2
  import * as CommonMessages from './scanoss/api/common/v2/scanoss-common_pb';
4
3
  export declare class GrpcDependencyService {
5
4
  private client;
6
- private config;
7
- constructor(cfg?: GrpcConfig);
5
+ constructor(endpoint: string, port: string);
8
6
  get(req: DependenciesMessages.DependencyRequest): Promise<DependenciesMessages.DependencyResponse>;
9
- private buildDepRequestFromPlainObject;
7
+ buildDependencyRequestMsg(plainObj: any): DependenciesMessages.DependencyRequest;
10
8
  echo(req: CommonMessages.EchoRequest): Promise<CommonMessages.EchoResponse>;
11
- private buildEchoRequestFromPlainObject;
9
+ buildEchoRequestMsg(plainObj: any): CommonMessages.EchoRequest;
12
10
  }
@@ -1,17 +1,13 @@
1
1
  import * as grpc from '@grpc/grpc-js';
2
- import { GrpcConfig } from './GrpcConfig';
3
2
  import { DependenciesClient } from './scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb';
4
3
  import * as DependenciesMessages from './scanoss/api/dependencies/v2/scanoss-dependencies_pb.js';
5
4
  import * as CommonMessages from './scanoss/api/common/v2/scanoss-common_pb';
6
5
  export class GrpcDependencyService {
7
6
  client;
8
- config;
9
- constructor(cfg = new GrpcConfig()) {
10
- this.config = cfg;
11
- this.client = new DependenciesClient(this.config.DEFAULT_GRPC_HOST + ':' + this.config.DEFAULT_GRPC_PORT, grpc.credentials.createInsecure());
7
+ constructor(endpoint, port) {
8
+ this.client = new DependenciesClient(endpoint + ':' + port, grpc.credentials.createSsl());
12
9
  }
13
10
  async get(req) {
14
- //const msg = this.buildDepRequestFromPlainObject(request);
15
11
  return new Promise((resolve, reject) => {
16
12
  this.client.getDependencies(req, (err, response) => {
17
13
  if (err)
@@ -20,7 +16,7 @@ export class GrpcDependencyService {
20
16
  });
21
17
  });
22
18
  }
23
- buildDepRequestFromPlainObject(plainObj) {
19
+ buildDependencyRequestMsg(plainObj) {
24
20
  try {
25
21
  const depMessage = new DependenciesMessages.DependencyRequest();
26
22
  for (const dependency of plainObj.filesList) {
@@ -29,7 +25,7 @@ export class GrpcDependencyService {
29
25
  for (const purl of dependency.purlsList) {
30
26
  const purlMsg = new DependenciesMessages.DependencyRequest.Purls();
31
27
  purlMsg.setPurl(purl.purl);
32
- purlMsg.setRequirement(purl.requirement);
28
+ purlMsg.setRequirement(purl?.requirement);
33
29
  fileMsg.addPurls(purlMsg);
34
30
  }
35
31
  depMessage.addFiles(fileMsg);
@@ -42,7 +38,6 @@ export class GrpcDependencyService {
42
38
  }
43
39
  }
44
40
  async echo(req) {
45
- //const msg = this.buildEchoRequestFromPlainObject(request);
46
41
  return new Promise((resolve, reject) => {
47
42
  this.client.echo(req, (err, response) => {
48
43
  if (err)
@@ -51,10 +46,16 @@ export class GrpcDependencyService {
51
46
  });
52
47
  });
53
48
  }
54
- buildEchoRequestFromPlainObject(plainObj) {
55
- const echoMessage = new CommonMessages.EchoRequest();
56
- echoMessage.setMessage(plainObj.message);
57
- return echoMessage;
49
+ buildEchoRequestMsg(plainObj) {
50
+ try {
51
+ const echoMessage = new CommonMessages.EchoRequest();
52
+ echoMessage.setMessage(plainObj.message);
53
+ return echoMessage;
54
+ }
55
+ catch (e) {
56
+ console.error(e);
57
+ return null;
58
+ }
58
59
  }
59
60
  }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JwY0RlcGVuZGVuY3lTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ncnBjL0dycGNEZXBlbmRlbmN5U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ2hHLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSwwREFBMEQsQ0FBQztBQUVqRyxPQUFPLEtBQUssY0FBYyxNQUFNLDJDQUEyQyxDQUFBO0FBRTNFLE1BQU0sT0FBTyxxQkFBcUI7SUFFeEIsTUFBTSxDQUFxQjtJQUUzQixNQUFNLENBQWE7SUFFM0IsWUFBWSxHQUFHLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFFbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUMvRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBMkM7UUFDMUQsMkRBQTJEO1FBQzNELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxRQUF5RDtRQUM5RixJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hFLEtBQUssTUFBTSxVQUFVLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRTtvQkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFHTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQStCO1FBQy9DLDREQUE0RDtRQUM1RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxHQUFHO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR08sK0JBQStCLENBQUMsUUFBNkM7UUFDakYsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztDQUVGIn0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JwY0RlcGVuZGVuY3lTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ncnBjL0dycGNEZXBlbmRlbmN5U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLGVBQWUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0REFBNEQsQ0FBQztBQUNoRyxPQUFPLEtBQUssb0JBQW9CLE1BQU0sMERBQTBELENBQUM7QUFDakcsT0FBTyxLQUFLLGNBQWMsTUFBTSwyQ0FBMkMsQ0FBQTtBQUUzRSxNQUFNLE9BQU8scUJBQXFCO0lBRXhCLE1BQU0sQ0FBcUI7SUFFbkMsWUFBWSxRQUFnQixFQUFFLElBQVk7UUFDeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU0sS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUEyQztRQUMxRCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxHQUFHO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0seUJBQXlCLENBQUMsUUFBYTtRQUM1QyxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hFLEtBQUssTUFBTSxVQUFVLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRTtvQkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUMxQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFHTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQStCO1FBQy9DLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHTSxtQkFBbUIsQ0FBQyxRQUFhO1FBQ3RDLElBQUk7WUFDRixNQUFNLFdBQVcsR0FBRyxJQUFJLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyRCxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN6QyxPQUFPLFdBQVcsQ0FBQztTQUNwQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztDQUVGIn0=