scanoss 0.2.8 → 0.2.12

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 (170) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/LICENSE +20 -18
  3. package/README.md +6 -5
  4. package/build/main/bin/cli-bin.js +10 -3
  5. package/build/main/commands/dep.d.ts +1 -0
  6. package/build/main/commands/dep.js +26 -0
  7. package/build/main/commands/scan.js +20 -38
  8. package/build/main/index.d.ts +3 -1
  9. package/build/main/index.js +4 -2
  10. package/build/main/lib/dependencies/Dependency.d.ts +9 -0
  11. package/build/main/lib/dependencies/Dependency.js +50 -0
  12. package/build/main/lib/dependencies/DependencyTypes.d.ts +19 -0
  13. package/build/main/lib/dependencies/DependencyTypes.js +3 -0
  14. package/build/main/lib/dependencies/PurlGenerator.d.ts +2 -0
  15. package/build/main/lib/dependencies/PurlGenerator.js +39 -0
  16. package/build/main/lib/dependencies/parsers/golangParser.d.ts +0 -0
  17. package/build/main/lib/dependencies/parsers/golangParser.js +3 -0
  18. package/build/main/lib/dependencies/parsers/mavenParser.d.ts +2 -0
  19. package/build/main/lib/dependencies/parsers/mavenParser.js +44 -0
  20. package/build/main/lib/dependencies/parsers/npmParser.d.ts +3 -0
  21. package/build/main/lib/dependencies/parsers/npmParser.js +45 -0
  22. package/build/main/lib/dependencies/parsers/pyParser.d.ts +2 -0
  23. package/build/main/lib/dependencies/parsers/pyParser.js +51 -0
  24. package/build/main/lib/dependencies/parsers/rubyParser.d.ts +3 -0
  25. package/build/main/lib/dependencies/parsers/rubyParser.js +135 -0
  26. package/build/main/lib/dependencies/parsers/types.d.ts +15 -0
  27. package/build/main/lib/dependencies/parsers/types.js +33 -0
  28. package/build/main/lib/dependencies/parsers/utils.d.ts +2 -0
  29. package/build/main/lib/dependencies/parsers/utils.js +20 -0
  30. package/build/main/lib/dependencies/src/PurlGenerator.d.ts +2 -0
  31. package/build/main/lib/dependencies/src/PurlGenerator.js +62 -0
  32. package/build/main/lib/dependencies/src/parsers/golangParser.d.ts +0 -0
  33. package/build/main/lib/dependencies/src/parsers/golangParser.js +3 -0
  34. package/build/main/lib/dependencies/src/parsers/mavenParser.d.ts +2 -0
  35. package/build/main/lib/dependencies/src/parsers/mavenParser.js +44 -0
  36. package/build/main/lib/dependencies/src/parsers/npmParser.d.ts +3 -0
  37. package/build/main/lib/dependencies/src/parsers/npmParser.js +45 -0
  38. package/build/main/lib/dependencies/src/parsers/pyParser.d.ts +2 -0
  39. package/build/main/lib/dependencies/src/parsers/pyParser.js +51 -0
  40. package/build/main/lib/dependencies/src/parsers/rubyParser.d.ts +3 -0
  41. package/build/main/lib/dependencies/src/parsers/rubyParser.js +135 -0
  42. package/build/main/lib/dependencies/src/parsers/types.d.ts +15 -0
  43. package/build/main/lib/dependencies/src/parsers/types.js +33 -0
  44. package/build/main/lib/dependencies/src/parsers/utils.d.ts +2 -0
  45. package/build/main/lib/dependencies/src/parsers/utils.js +19 -0
  46. package/build/main/lib/dependencyScan/dependencyScan.d.ts +2 -0
  47. package/build/main/lib/dependencyScan/dependencyScan.js +37 -0
  48. package/build/main/lib/dependencyScan/parser.d.ts +7 -0
  49. package/build/main/lib/dependencyScan/parser.js +41 -0
  50. package/build/main/lib/dependencyScan/utils.d.ts +1 -0
  51. package/build/main/lib/dependencyScan/utils.js +16 -0
  52. package/build/main/lib/scanner/Dependency/dependency.d.ts +9 -0
  53. package/build/main/lib/scanner/Dependency/dependency.js +46 -0
  54. package/build/main/lib/scanner/Dependency/dependencyScan.d.ts +9 -0
  55. package/build/main/lib/scanner/Dependency/dependencyScan.js +48 -0
  56. package/build/main/lib/scanner/Dependency/parser.d.ts +7 -0
  57. package/build/main/lib/scanner/Dependency/parser.js +41 -0
  58. package/build/main/lib/scanner/Dependency/utils.d.ts +1 -0
  59. package/build/main/lib/scanner/Dependency/utils.js +16 -0
  60. package/build/main/lib/scanner/Dispatcher/DispatchableItem.js +1 -1
  61. package/build/main/lib/scanner/Dispatcher/Dispatcher.d.ts +3 -2
  62. package/build/main/lib/scanner/Dispatcher/Dispatcher.js +15 -13
  63. package/build/main/lib/scanner/Scannable/ScannableItem.d.ts +4 -3
  64. package/build/main/lib/scanner/Scannable/ScannableItem.js +6 -6
  65. package/build/main/lib/scanner/Scanner.d.ts +7 -6
  66. package/build/main/lib/scanner/Scanner.js +45 -42
  67. package/build/main/lib/scanner/ScannerTypes.d.ts +32 -0
  68. package/build/main/lib/scanner/ScannerTypes.js +35 -0
  69. package/build/main/lib/scanner/Winnower/Winnower.d.ts +5 -2
  70. package/build/main/lib/scanner/Winnower/Winnower.js +29 -24
  71. package/build/main/lib/scanner/Winnower/WinnowerResponse.d.ts +3 -0
  72. package/build/main/lib/scanner/Winnower/WinnowerResponse.js +7 -1
  73. package/build/main/lib/tree/Tree.js +4 -4
  74. package/build/module/bin/cli-bin.js +10 -3
  75. package/build/module/commands/dep.d.ts +1 -0
  76. package/build/module/commands/dep.js +19 -0
  77. package/build/module/commands/scan.js +16 -34
  78. package/build/module/index.d.ts +3 -1
  79. package/build/module/index.js +4 -2
  80. package/build/module/lib/dependencies/Dependency.d.ts +9 -0
  81. package/build/module/lib/dependencies/Dependency.js +45 -0
  82. package/build/module/lib/dependencies/DependencyTypes.d.ts +19 -0
  83. package/build/module/lib/dependencies/DependencyTypes.js +2 -0
  84. package/build/module/lib/dependencies/PurlGenerator.d.ts +2 -0
  85. package/build/module/lib/dependencies/PurlGenerator.js +32 -0
  86. package/build/module/lib/dependencies/parsers/golangParser.d.ts +0 -0
  87. package/build/module/lib/dependencies/parsers/golangParser.js +3 -0
  88. package/build/module/lib/dependencies/parsers/mavenParser.d.ts +2 -0
  89. package/build/module/lib/dependencies/parsers/mavenParser.js +37 -0
  90. package/build/module/lib/dependencies/parsers/npmParser.d.ts +3 -0
  91. package/build/module/lib/dependencies/parsers/npmParser.js +37 -0
  92. package/build/module/lib/dependencies/parsers/pyParser.d.ts +2 -0
  93. package/build/module/lib/dependencies/parsers/pyParser.js +44 -0
  94. package/build/module/lib/dependencies/parsers/rubyParser.d.ts +3 -0
  95. package/build/module/lib/dependencies/parsers/rubyParser.js +132 -0
  96. package/build/module/lib/dependencies/parsers/types.d.ts +15 -0
  97. package/build/module/lib/dependencies/parsers/types.js +32 -0
  98. package/build/module/lib/dependencies/parsers/utils.d.ts +2 -0
  99. package/build/module/lib/dependencies/parsers/utils.js +15 -0
  100. package/build/module/lib/dependencies/src/PurlGenerator.d.ts +2 -0
  101. package/build/module/lib/dependencies/src/PurlGenerator.js +55 -0
  102. package/build/module/lib/dependencies/src/parsers/golangParser.d.ts +0 -0
  103. package/build/module/lib/dependencies/src/parsers/golangParser.js +3 -0
  104. package/build/module/lib/dependencies/src/parsers/mavenParser.d.ts +2 -0
  105. package/build/module/lib/dependencies/src/parsers/mavenParser.js +37 -0
  106. package/build/module/lib/dependencies/src/parsers/npmParser.d.ts +3 -0
  107. package/build/module/lib/dependencies/src/parsers/npmParser.js +37 -0
  108. package/build/module/lib/dependencies/src/parsers/pyParser.d.ts +2 -0
  109. package/build/module/lib/dependencies/src/parsers/pyParser.js +44 -0
  110. package/build/module/lib/dependencies/src/parsers/rubyParser.d.ts +3 -0
  111. package/build/module/lib/dependencies/src/parsers/rubyParser.js +132 -0
  112. package/build/module/lib/dependencies/src/parsers/types.d.ts +15 -0
  113. package/build/module/lib/dependencies/src/parsers/types.js +32 -0
  114. package/build/module/lib/dependencies/src/parsers/utils.d.ts +2 -0
  115. package/build/module/lib/dependencies/src/parsers/utils.js +14 -0
  116. package/build/module/lib/dependencyScan/dependencyScan.d.ts +2 -0
  117. package/build/module/lib/dependencyScan/dependencyScan.js +29 -0
  118. package/build/module/lib/dependencyScan/parser.d.ts +7 -0
  119. package/build/module/lib/dependencyScan/parser.js +38 -0
  120. package/build/module/lib/dependencyScan/utils.d.ts +1 -0
  121. package/build/module/lib/dependencyScan/utils.js +12 -0
  122. package/build/module/lib/scanner/Dependency/dependency.d.ts +9 -0
  123. package/build/module/lib/scanner/Dependency/dependency.js +38 -0
  124. package/build/module/lib/scanner/Dependency/dependencyScan.d.ts +9 -0
  125. package/build/module/lib/scanner/Dependency/dependencyScan.js +40 -0
  126. package/build/module/lib/scanner/Dependency/parser.d.ts +7 -0
  127. package/build/module/lib/scanner/Dependency/parser.js +38 -0
  128. package/build/module/lib/scanner/Dependency/utils.d.ts +1 -0
  129. package/build/module/lib/scanner/Dependency/utils.js +12 -0
  130. package/build/module/lib/scanner/Dispatcher/DispatchableItem.js +1 -1
  131. package/build/module/lib/scanner/Dispatcher/Dispatcher.d.ts +3 -2
  132. package/build/module/lib/scanner/Dispatcher/Dispatcher.js +6 -4
  133. package/build/module/lib/scanner/Scannable/ScannableItem.d.ts +4 -3
  134. package/build/module/lib/scanner/Scannable/ScannableItem.js +7 -7
  135. package/build/module/lib/scanner/Scanner.d.ts +7 -6
  136. package/build/module/lib/scanner/Scanner.js +26 -22
  137. package/build/module/lib/scanner/ScannerTypes.d.ts +32 -0
  138. package/build/module/lib/scanner/ScannerTypes.js +32 -0
  139. package/build/module/lib/scanner/Winnower/Winnower.d.ts +5 -2
  140. package/build/module/lib/scanner/Winnower/Winnower.js +24 -18
  141. package/build/module/lib/scanner/Winnower/WinnowerResponse.d.ts +3 -0
  142. package/build/module/lib/scanner/Winnower/WinnowerResponse.js +8 -2
  143. package/build/module/lib/tree/Tree.js +4 -4
  144. package/build/tsconfig.module.tsbuildinfo +1 -1
  145. package/build/tsconfig.tsbuildinfo +1 -1
  146. package/package-lock.json +18277 -0
  147. package/package.json +2 -1
  148. package/src/bin/cli-bin.ts +12 -5
  149. package/src/commands/dep.ts +23 -0
  150. package/src/commands/scan.ts +15 -47
  151. package/src/index.ts +3 -2
  152. package/src/lib/dependencies/Dependency.ts +58 -0
  153. package/src/lib/dependencies/DependencyTypes.ts +22 -0
  154. package/src/lib/dependencies/PurlGenerator.ts +41 -0
  155. package/src/lib/dependencies/parsers/golangParser.ts +4 -0
  156. package/src/lib/dependencies/parsers/mavenParser.ts +48 -0
  157. package/src/lib/dependencies/parsers/npmParser.ts +44 -0
  158. package/src/lib/dependencies/parsers/pyParser.ts +46 -0
  159. package/src/lib/dependencies/parsers/rubyParser.ts +181 -0
  160. package/src/lib/dependencies/parsers/types.ts +50 -0
  161. package/src/lib/dependencies/parsers/utils.ts +16 -0
  162. package/src/lib/scanner/Dispatcher/DispatchableItem.ts +1 -1
  163. package/src/lib/scanner/Dispatcher/Dispatcher.ts +10 -6
  164. package/src/lib/scanner/Scannable/ScannableItem.ts +10 -7
  165. package/src/lib/scanner/Scanner.ts +31 -28
  166. package/src/lib/scanner/{ScannerEvents.ts → ScannerTypes.ts} +12 -0
  167. package/src/lib/scanner/Winnower/Winnower.ts +25 -17
  168. package/src/lib/scanner/Winnower/WinnowerResponse.ts +9 -1
  169. package/src/lib/tree/Tree.ts +3 -3
  170. package/yarn.lock +5214 -5127
@@ -0,0 +1,132 @@
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
+ this.refine();
100
+ return this.purlList;
101
+ }
102
+ resetState() {
103
+ this.current_options = {};
104
+ this.state = null;
105
+ }
106
+ parseOptions(line) {
107
+ const match = line.match(/\s*(\w+):\s*(.*)/);
108
+ const key = match.length >= 1 ? match[1] : null;
109
+ const value = match.length >= 2 ? match[2] : null;
110
+ if (key)
111
+ this.current_options[key] = value;
112
+ }
113
+ parseDependency(line) { }
114
+ parsePlatform(line) { }
115
+ parseSpec(line) {
116
+ if (this.current_gem == GEM) {
117
+ if (firstDepLevelRegex.test(line)) {
118
+ line = line.trimStart();
119
+ const match = line.match(specRegex);
120
+ const purl = new PackageURL(PURL_TYPE, undefined, match.groups.name, match.groups.version, undefined, undefined).toString();
121
+ this.purlList.push(purl);
122
+ }
123
+ else { // Second level of dependence
124
+ }
125
+ }
126
+ if (this.current_gem == GIT) { }
127
+ // Purl from local dependencies are not generated
128
+ if (this.current_gem == PATH) { }
129
+ }
130
+ refine() { }
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVieVBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL3NyYy9wYXJzZXJzL3J1YnlQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBR3hCLGlDQUFpQztBQUNqQyxvREFBb0Q7QUFDcEQsNENBQTRDO0FBQzVDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFL0QsOERBQThEO0lBQzlELE1BQU0sT0FBTyxHQUFtQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzVELElBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBR25CLE1BQU0sS0FBSyxHQUFrQixXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JELElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUUxQixLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssRUFBRTtRQUNwQixJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUMsQ0FBQyxFQUFFLEVBQUUsaUNBQWlDO1lBQzNFLCtDQUErQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBSSxjQUFjO1lBQ2pFLElBQUksR0FBRyxFQUFFO2dCQUNMLFFBQVEsR0FB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
@@ -0,0 +1,15 @@
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 {};
@@ -0,0 +1,32 @@
1
+ export {};
2
+ /*
3
+ EXAMPLE
4
+ {
5
+ "files": [
6
+ {
7
+ "file": "./test/data/requirements.txt",
8
+ "purls": [
9
+ {
10
+ "purl": "pkg:pypi/requests"
11
+ },
12
+ {
13
+ "purl": "pkg:pypi/crc32c@2.2"
14
+ },
15
+ {
16
+ "purl": "pkg:pypi/binaryornot"
17
+ },
18
+ {
19
+ "purl": "pkg:pypi/progress"
20
+ },
21
+ {
22
+ "purl": "pkg:pypi/grpcio"
23
+ },
24
+ {
25
+ "purl": "pkg:pypi/protobuf"
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ }
31
+ */
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9zcmMvcGFyc2Vycy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBb0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZCRSJ9
@@ -0,0 +1,2 @@
1
+ export declare function isValidUrl(string: string): boolean;
2
+ export declare function isValidPath(string: string): boolean;
@@ -0,0 +1,14 @@
1
+ export function isValidUrl(string) {
2
+ let url;
3
+ try {
4
+ new URL(string);
5
+ }
6
+ catch (_) {
7
+ return false;
8
+ }
9
+ return true;
10
+ }
11
+ export function isValidPath(string) {
12
+ return /^((?:\.\.?)|(?:[a-zA-Z]:\\)|(?:\/))/gm.test(string);
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9zcmMvcGFyc2Vycy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsVUFBVSxDQUFDLE1BQWM7SUFDckMsSUFBSSxHQUFRLENBQUM7SUFDYixJQUFJO1FBQ0YsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDakI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFSCxNQUFNLFVBQVUsV0FBVyxDQUFDLE1BQWM7SUFDeEMsT0FBTyx1Q0FBdUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUQsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ export declare function dependencyScan(projectPath: string): Promise<Record<string, string>>;
2
+ export declare function appendDependencyToResult(resultPath: string, dependency: Record<string, string>): Promise<void>;
@@ -0,0 +1,29 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { parser } from './parser';
4
+ async function readOnlyFiles(dir) {
5
+ const files = await fs.promises.readdir(dir, { withFileTypes: true });
6
+ const results = [];
7
+ for (const f of files) {
8
+ if (f.isFile() && !f.isSymbolicLink()) {
9
+ results.push(`${dir}/${f.name}`);
10
+ }
11
+ }
12
+ return results;
13
+ }
14
+ export async function dependencyScan(projectPath) {
15
+ const filePaths = await readOnlyFiles(projectPath);
16
+ for (const filePath of filePaths) {
17
+ const fileName = path.basename(filePath);
18
+ if (parser[fileName])
19
+ return parser[fileName](await fs.promises.readFile(filePath, 'utf-8'));
20
+ }
21
+ return {};
22
+ }
23
+ export async function appendDependencyToResult(resultPath, dependency) {
24
+ const result = await fs.promises.readFile(resultPath, 'utf-8');
25
+ const resultJson = JSON.parse(result);
26
+ resultJson.dependencies = dependency;
27
+ await fs.promises.writeFile(resultPath, JSON.stringify(resultJson, null, 2));
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeVNjYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY3lTY2FuL2RlcGVuZGVuY3lTY2FuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdsQyxLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBRWxDLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO1FBQ3JCLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFDO1lBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEM7S0FDRjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxXQUFtQjtJQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxLQUFLLE1BQU0sUUFBUSxJQUFJLFNBQVMsRUFBRTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDOUY7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHdCQUF3QixDQUFDLFVBQWtCLEVBQUUsVUFBa0M7SUFDbkcsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxVQUFVLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztJQUNyQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ export declare const parser: {
2
+ 'requirements.txt': typeof pyParser;
3
+ 'package.json': typeof jsParser;
4
+ };
5
+ declare function pyParser(requirements: string): Record<string, string>;
6
+ declare function jsParser(packageJson: string): Record<string, string>;
7
+ export {};
@@ -0,0 +1,38 @@
1
+ import { isValidUrl } from './utils';
2
+ export const parser = {
3
+ 'requirements.txt': pyParser,
4
+ 'package.json': jsParser
5
+ };
6
+ // Parse a requirements.txt file from python projects
7
+ // See reference on: https://pip.pypa.io/en/stable/reference/requirements-file-format/
8
+ function pyParser(requirements) {
9
+ const lines = requirements.split('\n');
10
+ const results = {};
11
+ let compName = '';
12
+ let compVer = '';
13
+ for (let line of lines) {
14
+ line = line.trim();
15
+ if (!line.startsWith('#') && line.length > 0) { // Avoid comments and new lines
16
+ if (isValidUrl(line) || /^[\.\/]+/.test(line)) { // url or path
17
+ compName = line.match(/.*\/(.*)/)[1];
18
+ compVer = compName.match(/\d\.\d.\d/)[0];
19
+ results[compName] = compVer;
20
+ }
21
+ else if (line.startsWith('-r')) { } // recursive dependencies (NOT SUPPORTED YET)
22
+ else {
23
+ const res = line.match(/\s*([-\w]*)\s*(?:[>=~!]*)\s*([\d\.]*)/);
24
+ compName = res[1];
25
+ compVer = res[2];
26
+ results[compName] = compVer;
27
+ }
28
+ }
29
+ }
30
+ return results;
31
+ }
32
+ function jsParser(packageJson) {
33
+ const o = JSON.parse(packageJson);
34
+ const results = {};
35
+ Object.assign(results, o.dependencies);
36
+ return results;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmN5U2Nhbi9wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUc7SUFDbEIsa0JBQWtCLEVBQUUsUUFBUTtJQUM1QixjQUFjLEVBQUUsUUFBUTtDQUMzQixDQUFDO0FBRUYscURBQXFEO0FBQ3JELHNGQUFzRjtBQUN0RixTQUFTLFFBQVEsQ0FBQyxZQUFvQjtJQUNsQyxNQUFNLEtBQUssR0FBa0IsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxNQUFNLE9BQU8sR0FBMkIsRUFBRSxDQUFDO0lBRTNDLElBQUksUUFBUSxHQUFXLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFFekIsS0FBSyxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7UUFDcEIsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBRSxFQUFFLCtCQUErQjtZQUN6RSxJQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsY0FBYztnQkFDMUQsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE9BQU8sR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQy9CO2lCQUNJLElBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFFLENBQUMsNkNBQTZDO2lCQUMxRTtnQkFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7Z0JBQ2hFLFFBQVEsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUM7YUFDL0I7U0FDSjtLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUdELFNBQVMsUUFBUSxDQUFDLFdBQW1CO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDIn0=
@@ -0,0 +1 @@
1
+ export declare function isValidUrl(string: string): boolean;
@@ -0,0 +1,12 @@
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
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY3lTY2FuL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFMUIsTUFBTSxVQUFVLFVBQVUsQ0FBQyxNQUFjO0lBQ3JDLElBQUksR0FBUSxDQUFDO0lBQ2IsSUFBSTtRQUNGLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ2pCO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
@@ -0,0 +1,9 @@
1
+ interface Dependency {
2
+ filename: string;
3
+ path: string;
4
+ quantity: number;
5
+ dependencies: Record<string, string>;
6
+ }
7
+ export declare function dependency(projectPath: string): Promise<Array<Dependency>>;
8
+ export declare function appendDependencyToResult(resultPath: string, dependency: Record<string, string>): Promise<void>;
9
+ export {};
@@ -0,0 +1,38 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { parser } from './parser';
4
+ ;
5
+ async function readOnlyFiles(dir) {
6
+ const files = await fs.promises.readdir(dir, { withFileTypes: true });
7
+ const results = [];
8
+ for (const f of files) {
9
+ if (f.isFile() && !f.isSymbolicLink()) {
10
+ results.push(`${dir}/${f.name}`);
11
+ }
12
+ }
13
+ return results;
14
+ }
15
+ // Reads the root directory and search for a dependency declaration file
16
+ // Such as requirements.txt, package.json
17
+ // Returns: A list of dependencies declared
18
+ export async function dependency(projectPath) {
19
+ const dependencies = [];
20
+ const filePaths = await readOnlyFiles(projectPath);
21
+ for (const filePath of filePaths) {
22
+ const fileName = path.basename(filePath);
23
+ if (parser[fileName]) {
24
+ let dep = parser[fileName](await fs.promises.readFile(filePath, 'utf-8'));
25
+ if (dep) {
26
+ dependencies.push({ filename: fileName, path: filePath, quantity: dep.length, dependencies: dep });
27
+ }
28
+ }
29
+ }
30
+ return dependencies;
31
+ }
32
+ export async function appendDependencyToResult(resultPath, dependency) {
33
+ const result = await fs.promises.readFile(resultPath, 'utf-8');
34
+ const resultJson = JSON.parse(result);
35
+ resultJson.dependencies = dependency;
36
+ await fs.promises.writeFile(resultPath, JSON.stringify(resultJson, null, 2));
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9EZXBlbmRlbmN5L2RlcGVuZGVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBT2pDLENBQUM7QUFFRixLQUFLLFVBQVUsYUFBYSxDQUFDLEdBQVc7SUFDdEMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBRWxDLEtBQUssTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFO1FBQ3JCLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFDO1lBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbEM7S0FDRjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCx3RUFBd0U7QUFDeEUseUNBQXlDO0FBRXpDLDJDQUEyQztBQUMzQyxNQUFNLENBQUMsS0FBSyxVQUFVLFVBQVUsQ0FBQyxXQUFtQjtJQUNsRCxNQUFNLFlBQVksR0FBc0IsRUFBRSxDQUFDO0lBRTNDLE1BQU0sU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsWUFBWSxDQUFDLElBQUksQ0FBRSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFDLENBQUUsQ0FBQzthQUNwRztTQUNGO0tBQ0Y7SUFDRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSx3QkFBd0IsQ0FBQyxVQUFrQixFQUFFLFVBQWtDO0lBQ25HLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsVUFBVSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7SUFDckMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQyJ9
@@ -0,0 +1,9 @@
1
+ interface Dependency {
2
+ filename: string;
3
+ path: string;
4
+ quantity: number;
5
+ dependencies: Record<string, string>;
6
+ }
7
+ export declare function dependencyScan(projectPath: string): Promise<Array<Dependency>>;
8
+ export declare function appendDependencyToResult(resultPath: string, dependency: Record<string, string>): Promise<void>;
9
+ export {};
@@ -0,0 +1,40 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { parser } from './parser';
4
+ ;
5
+ async function readOnlyFiles(dir) {
6
+ const files = await fs.promises.readdir(dir, { withFileTypes: true });
7
+ const results = [];
8
+ for (const f of files) {
9
+ if (f.isFile() && !f.isSymbolicLink()) {
10
+ results.push(`${dir}/${f.name}`);
11
+ }
12
+ }
13
+ return results;
14
+ }
15
+ // Reads the root directory and search for a dependency declaration file
16
+ // Such as requirements.txt, package.json
17
+ // Returns: A list of dependencies declared
18
+ export async function dependencyScan(projectPath) {
19
+ const dependencies = [];
20
+ dependencies.push({ filename: '', path: '', quantity: 0, dependencies: {} });
21
+ const filePaths = await readOnlyFiles(projectPath);
22
+ for (const filePath of filePaths) {
23
+ const fileName = path.basename(filePath);
24
+ if (parser[fileName]) {
25
+ let dep = parser[fileName](await fs.promises.readFile(filePath, 'utf-8'));
26
+ let depFileName = path.basename(dep.path);
27
+ if (dep) {
28
+ dependencies.push({ filename: depFileName, path: filePath, quantity: dep.length, dependencies: dep.dependencies });
29
+ }
30
+ }
31
+ }
32
+ return dependencies;
33
+ }
34
+ export async function appendDependencyToResult(resultPath, dependency) {
35
+ const result = await fs.promises.readFile(resultPath, 'utf-8');
36
+ const resultJson = JSON.parse(result);
37
+ resultJson.dependencies = dependency;
38
+ await fs.promises.writeFile(resultPath, JSON.stringify(resultJson, null, 2));
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwZW5kZW5jeVNjYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NjYW5uZXIvRGVwZW5kZW5jeS9kZXBlbmRlbmN5U2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDcEIsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFPakMsQ0FBQztBQUVGLEtBQUssVUFBVSxhQUFhLENBQUMsR0FBVztJQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLE1BQU0sT0FBTyxHQUFrQixFQUFFLENBQUM7SUFFbEMsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUU7UUFDckIsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUM7WUFDcEMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUNsQztLQUNGO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELHdFQUF3RTtBQUN4RSx5Q0FBeUM7QUFFekMsMkNBQTJDO0FBQzNDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLFdBQW1CO0lBQ3RELE1BQU0sWUFBWSxHQUFzQixFQUFFLENBQUM7SUFDM0MsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTdFLE1BQU0sU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25ELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEIsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsWUFBWSxDQUFDLElBQUksQ0FBRSxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksRUFBQyxDQUFFLENBQUM7YUFDcEg7U0FDRjtLQUNGO0lBQ0QsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsd0JBQXdCLENBQUMsVUFBa0IsRUFBRSxVQUFrQztJQUNuRyxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FLENBQUMifQ==
@@ -0,0 +1,7 @@
1
+ export declare const parser: {
2
+ 'requirements.txt': typeof pyParser;
3
+ 'package.json': typeof jsParser;
4
+ };
5
+ declare function pyParser(requirements: string): Record<string, string>;
6
+ declare function jsParser(packageJson: string): Record<string, string>;
7
+ export {};
@@ -0,0 +1,38 @@
1
+ import { isValidUrl } from './utils';
2
+ export const parser = {
3
+ 'requirements.txt': pyParser,
4
+ 'package.json': jsParser
5
+ };
6
+ // Parse a requirements.txt file from python projects
7
+ // See reference on: https://pip.pypa.io/en/stable/reference/requirements-file-format/
8
+ function pyParser(requirements) {
9
+ const lines = requirements.split('\n');
10
+ const results = {};
11
+ let compName = '';
12
+ let compVer = '';
13
+ for (let line of lines) {
14
+ line = line.trim();
15
+ if (!line.startsWith('#') && line.length > 0) { // Avoid comments and new lines
16
+ if (isValidUrl(line) || /^[\.\/]+/.test(line)) { // url or path
17
+ compName = line.match(/.*\/(.*)/)[1];
18
+ compVer = compName.match(/\d\.\d.\d/)[0];
19
+ results[compName] = compVer;
20
+ }
21
+ else if (line.startsWith('-r')) { } // recursive dependencies (NOT SUPPORTED YET)
22
+ else {
23
+ const res = line.match(/\s*([-\w]*)\s*(?:[>=~!]*)\s*([\d\.]*)/);
24
+ compName = res[1];
25
+ compVer = res[2];
26
+ results[compName] = compVer;
27
+ }
28
+ }
29
+ }
30
+ return results;
31
+ }
32
+ function jsParser(packageJson) {
33
+ const o = JSON.parse(packageJson);
34
+ const results = {};
35
+ Object.assign(results, o.dependencies);
36
+ return results;
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zY2FubmVyL0RlcGVuZGVuY3kvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFckMsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHO0lBQ2xCLGtCQUFrQixFQUFFLFFBQVE7SUFDNUIsY0FBYyxFQUFFLFFBQVE7Q0FDM0IsQ0FBQztBQUVGLHFEQUFxRDtBQUNyRCxzRkFBc0Y7QUFDdEYsU0FBUyxRQUFRLENBQUMsWUFBb0I7SUFDbEMsTUFBTSxLQUFLLEdBQWtCLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztJQUUzQyxJQUFJLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBRXpCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO1FBQ3BCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUUsRUFBRSwrQkFBK0I7WUFDekUsSUFBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLGNBQWM7Z0JBQzFELFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxPQUFPLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQzthQUMvQjtpQkFDSSxJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRSxDQUFDLDZDQUE2QztpQkFDMUU7Z0JBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2dCQUNoRSxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDO2FBQy9CO1NBQ0o7S0FDSjtJQUNELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFHRCxTQUFTLFFBQVEsQ0FBQyxXQUFtQjtJQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xDLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNuQixNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDdkMsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ export declare function isValidUrl(string: string): boolean;
@@ -0,0 +1,12 @@
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
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NjYW5uZXIvRGVwZW5kZW5jeS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRTFCLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYztJQUNyQyxJQUFJLEdBQVEsQ0FBQztJQUNiLElBQUk7UUFDRixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNqQjtJQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ1YsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyJ9
@@ -18,4 +18,4 @@ export class DispatchableItem {
18
18
  return this.errorCounter;
19
19
  }
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hhYmxlSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoYWJsZUl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixnQkFBZ0IsQ0FBbUI7SUFFbkMsWUFBWSxDQUFTO0lBRTdCLFlBQVksZ0JBQWdCO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBRUYifQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hhYmxlSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoYWJsZUl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGdCQUFnQjtJQUNuQixnQkFBZ0IsQ0FBbUI7SUFFbkMsWUFBWSxDQUFTO0lBRTdCLFlBQVksZ0JBQWdCO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBRUYifQ==
@@ -1,5 +1,6 @@
1
1
  import EventEmitter from 'eventemitter3';
2
2
  import { ScannerCfg } from "../ScannerCfg";
3
+ import { DispatchableItem } from './DispatchableItem';
3
4
  export declare class Dispatcher extends EventEmitter {
4
5
  private scannerCfg;
5
6
  private pQueue;
@@ -10,9 +11,9 @@ export declare class Dispatcher extends EventEmitter {
10
11
  constructor(scannerCfg?: ScannerCfg);
11
12
  init(): void;
12
13
  stop(): void;
13
- dispatchItem(disptItem: any): void;
14
+ dispatchItem(disptItem: DispatchableItem): void;
14
15
  handleUnrecoverableError(error: any, disptItem: any): void;
15
16
  emitNoDispatchedItem(disptItem: any): void;
16
17
  errorHandler(error: any, disptItem: any): void;
17
- dispatch(disptItem: any): Promise<void>;
18
+ dispatch(disptItem: DispatchableItem): Promise<void>;
18
19
  }
@@ -4,7 +4,7 @@ import EventEmitter from 'eventemitter3';
4
4
  import fetch from 'node-fetch';
5
5
  import PQueue from "p-queue";
6
6
  import FormData from "form-data";
7
- import { ScannerEvents } from "../ScannerEvents";
7
+ import { ScannerEvents } from "../ScannerTypes";
8
8
  import { DispatcherResponse } from "./DispatcherResponse";
9
9
  import { ScannerCfg } from "../ScannerCfg";
10
10
  import { GlobalControllerAborter } from "./GlobalControllerAborter";
@@ -88,8 +88,10 @@ export class Dispatcher extends EventEmitter {
88
88
  const timeoutId = setTimeout(() => timeoutController.abort(), this.scannerCfg.TIMEOUT);
89
89
  try {
90
90
  const form = new FormData();
91
- const wfpContent = disptItem.getContent();
92
- form.append('filename', Buffer.from(wfpContent), 'data.wfp');
91
+ form.append('filename', Buffer.from(disptItem.getContent()), 'data.wfp');
92
+ const engineFlag = disptItem.getWinnowerResponse().getEngineFlags();
93
+ if (engineFlag)
94
+ form.append('flags', engineFlag);
93
95
  this.emit(ScannerEvents.DISPATCHER_WFP_SENDED);
94
96
  const response = await fetch(this.scannerCfg.API_URL, {
95
97
  method: 'post',
@@ -120,4 +122,4 @@ export class Dispatcher extends EventEmitter {
120
122
  }
121
123
  }
122
124
  }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLHlDQUF5QztBQUN6QyxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsTUFBTSxPQUFPLFVBQVcsU0FBUSxZQUFZO0lBQ2xDLFVBQVUsQ0FBYTtJQUV2QixNQUFNLENBQUM7SUFFUCxxQkFBcUIsQ0FBMEI7SUFFL0Msb0JBQW9CLENBQVU7SUFFOUIsb0JBQW9CLENBQVU7SUFFOUIsaUJBQWlCLENBQUM7SUFFMUIsWUFBWSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUM7WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCO1NBQy9DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFD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
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLHlDQUF5QztBQUN6QyxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sTUFBTSxNQUFNLFNBQVMsQ0FBQztBQUM3QixPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFFakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHcEUsTUFBTSxPQUFPLFVBQVcsU0FBUSxZQUFZO0lBQ2xDLFVBQVUsQ0FBYTtJQUV2QixNQUFNLENBQUM7SUFFUCxxQkFBcUIsQ0FBMEI7SUFFL0Msb0JBQW9CLENBQVU7SUFFOUIsb0JBQW9CLENBQVU7SUFFOUIsaUJBQWlCLENBQUM7SUFFMUIsWUFBWSxVQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUU7UUFDdkMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUM7WUFDdkIsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCO1NBQy9DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEIsSUFBSSxDQUFD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
@@ -1,14 +1,15 @@
1
1
  /// <reference types="node" />
2
+ import { WinnowingMode } from "../ScannerTypes";
2
3
  export declare class ScannableItem {
3
4
  private contentSource;
4
5
  private content;
5
- private scanMode;
6
+ private winnowingMode;
6
7
  private fingerprint;
7
8
  private maxSizeWfp;
8
- constructor(content: Buffer, contentSource: string, scanMode: any, maxSizeWfp: number);
9
+ constructor(content: Buffer, contentSource: string, winnowingMode: any, maxSizeWfp: number);
9
10
  getContent(): Buffer;
10
11
  getContentSource(): string;
11
- getScanMode(): any;
12
12
  getFingerprint(): any;
13
+ getWinnowingMode(): WinnowingMode;
13
14
  getMaxSizeWfp(): any;
14
15
  }
@@ -1,13 +1,13 @@
1
1
  export class ScannableItem {
2
2
  contentSource;
3
3
  content;
4
- scanMode;
4
+ winnowingMode;
5
5
  fingerprint;
6
6
  maxSizeWfp;
7
- constructor(content, contentSource, scanMode, maxSizeWfp) {
7
+ constructor(content, contentSource, winnowingMode, maxSizeWfp) {
8
8
  this.contentSource = contentSource;
9
9
  this.content = content;
10
- this.scanMode = scanMode;
10
+ this.winnowingMode = winnowingMode;
11
11
  this.maxSizeWfp = maxSizeWfp;
12
12
  }
13
13
  getContent() {
@@ -16,14 +16,14 @@ export class ScannableItem {
16
16
  getContentSource() {
17
17
  return this.contentSource;
18
18
  }
19
- getScanMode() {
20
- return this.scanMode;
21
- }
22
19
  getFingerprint() {
23
20
  return this.fingerprint;
24
21
  }
22
+ getWinnowingMode() {
23
+ return this.winnowingMode;
24
+ }
25
25
  getMaxSizeWfp() {
26
26
  return this.maxSizeWfp;
27
27
  }
28
28
  }
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nhbm5hYmxlSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9TY2FubmFibGUvU2Nhbm5hYmxlSXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUNoQixhQUFhLENBQVM7SUFFdEIsT0FBTyxDQUFTO0lBRWhCLFFBQVEsQ0FBTTtJQUVkLFdBQVcsQ0FBTTtJQUVqQixVQUFVLENBQU07SUFFeEIsWUFBWSxPQUFlLEVBQUUsYUFBcUIsRUFBRSxRQUFhLEVBQUUsVUFBa0I7UUFDbkYsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUdGIn0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nhbm5hYmxlSXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2Nhbm5lci9TY2FubmFibGUvU2Nhbm5hYmxlSXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sYUFBYTtJQUNoQixhQUFhLENBQVM7SUFFdEIsT0FBTyxDQUFTO0lBRWhCLGFBQWEsQ0FBZ0I7SUFFN0IsV0FBVyxDQUFNO0lBRWpCLFVBQVUsQ0FBTTtJQUV4QixZQUFZLE9BQWUsRUFBRSxhQUFxQixFQUFFLGFBQWtCLEVBQUUsVUFBa0I7UUFDeEYsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVNLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0NBR0YifQ==