scanoss 0.2.18 → 0.2.19

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 (81) hide show
  1. package/build/main/bin/cli-bin.js +1 -1
  2. package/build/main/lib/dependencies/DependencyScanner.d.ts +9 -0
  3. package/build/main/lib/dependencies/DependencyScanner.js +84 -0
  4. package/build/main/lib/dependencies/PurlGenerator.js +4 -2
  5. package/build/main/lib/dependencies/parsers/golangParser.d.ts +2 -0
  6. package/build/main/lib/dependencies/parsers/golangParser.js +63 -3
  7. package/build/main/lib/dependencies/parsers/types.js +1 -31
  8. package/build/main/lib/grpc/GrpcConfig.d.ts +4 -0
  9. package/build/main/lib/grpc/GrpcConfig.js +11 -0
  10. package/build/main/lib/grpc/GrpcDependencyService.d.ts +12 -0
  11. package/build/main/lib/grpc/GrpcDependencyService.js +81 -0
  12. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  13. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  14. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  15. package/build/main/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  16. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  17. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  18. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  19. package/build/main/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1155 -0
  20. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  21. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  22. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  23. package/build/main/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  24. package/build/main/old/Dependency.d.ts +9 -0
  25. package/build/main/old/Dependency.js +96 -0
  26. package/build/main/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  27. package/build/main/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  28. package/build/main/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  29. package/build/main/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  30. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  31. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  32. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  33. package/build/main/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1156 -0
  34. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  35. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  36. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  37. package/build/main/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  38. package/build/module/bin/cli-bin.js +1 -1
  39. package/build/module/lib/dependencies/DependencyScanner.d.ts +9 -0
  40. package/build/module/lib/dependencies/DependencyScanner.js +78 -0
  41. package/build/module/lib/dependencies/PurlGenerator.js +4 -2
  42. package/build/module/lib/dependencies/parsers/golangParser.d.ts +2 -0
  43. package/build/module/lib/dependencies/parsers/golangParser.js +55 -3
  44. package/build/module/lib/dependencies/parsers/types.js +1 -31
  45. package/build/module/lib/grpc/GrpcConfig.d.ts +4 -0
  46. package/build/module/lib/grpc/GrpcConfig.js +5 -0
  47. package/build/module/lib/grpc/GrpcDependencyService.d.ts +12 -0
  48. package/build/module/lib/grpc/GrpcDependencyService.js +60 -0
  49. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  50. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  51. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  52. package/build/module/lib/grpc/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  53. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  54. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  55. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  56. package/build/module/lib/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1155 -0
  57. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  58. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  59. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  60. package/build/module/lib/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  61. package/build/module/old/Dependency.d.ts +9 -0
  62. package/build/module/old/Dependency.js +72 -0
  63. package/build/module/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
  64. package/build/module/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
  65. package/build/module/scanoss/api/common/v2/scanoss-common_pb.d.ts +1 -0
  66. package/build/module/scanoss/api/common/v2/scanoss-common_pb.js +405 -0
  67. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +42 -0
  68. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +98 -0
  69. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +1 -0
  70. package/build/module/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1156 -0
  71. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +21 -0
  72. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +67 -0
  73. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts +1 -0
  74. package/build/module/scanoss/api/scanning/v2/scanoss-scanning_pb.js +15 -0
  75. package/build/tsconfig.module.tsbuildinfo +1 -1
  76. package/build/tsconfig.tsbuildinfo +1 -1
  77. package/package.json +1 -1
  78. package/src/bin/cli-bin.ts +1 -1
  79. package/src/lib/dependencies/PurlGenerator.ts +3 -2
  80. package/src/lib/dependencies/parsers/golangParser.ts +78 -2
  81. package/src/lib/dependencies/parsers/types.ts +0 -31
@@ -11,7 +11,7 @@ function CLIErrorHandler(e) {
11
11
  }
12
12
  async function main() {
13
13
  commander_1.program
14
- .version("0.2.17")
14
+ .version("0.2.19")
15
15
  .description('The SCANOSS JS package provides a simple, easy to consume module for interacting with SCANOSS APIs/Engine.');
16
16
  commander_1.program
17
17
  .command('scan <source>')
@@ -0,0 +1,9 @@
1
+ import { ILocalDependencies } from "./DependencyTypes";
2
+ import { DependencyResponse } from "../grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb";
3
+ export declare class DependencyScanner {
4
+ private grpcDependencyService;
5
+ constructor();
6
+ scan(files: Array<string>): Promise<DependencyResponse>;
7
+ private buildRequest;
8
+ localDependencySearch(files: Array<string>): Promise<ILocalDependencies>;
9
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DependencyScanner = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ const mavenParser_1 = require("./parsers/mavenParser");
10
+ const npmParser_1 = require("./parsers/npmParser");
11
+ const pyParser_1 = require("./parsers/pyParser");
12
+ const rubyParser_1 = require("./parsers/rubyParser");
13
+ const GrpcDependencyService_1 = require("../grpc/GrpcDependencyService");
14
+ const scanoss_dependencies_pb_1 = require("../grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb");
15
+ /*
16
+ This is a hash map that connect a filename with it's own parser function
17
+ Any parser function must return a ILocalDependencies object (See DependencyTypes.ts)
18
+ */
19
+ const Parser = {
20
+ 'requirements.txt': pyParser_1.requirementsParser,
21
+ 'pom.xml': mavenParser_1.pomParser,
22
+ 'package.json': npmParser_1.packageParser,
23
+ 'package-lock.json': npmParser_1.packagelockParser,
24
+ 'Gemfile': rubyParser_1.gemfileParser,
25
+ 'Gemfile.lock': rubyParser_1.gemfilelockParser
26
+ };
27
+ class DependencyScanner {
28
+ constructor() {
29
+ this.grpcDependencyService = new GrpcDependencyService_1.GrpcDependencyService();
30
+ }
31
+ async scan(files) {
32
+ try {
33
+ const localDependencies = await this.localDependencySearch(files);
34
+ const request = this.buildRequest(localDependencies);
35
+ return await this.grpcDependencyService.get(request);
36
+ }
37
+ catch (e) {
38
+ console.error(e);
39
+ return null;
40
+ }
41
+ }
42
+ buildRequest(localDependencies) {
43
+ try {
44
+ const depRequest = new scanoss_dependencies_pb_1.DependencyRequest();
45
+ for (const file of localDependencies.files) {
46
+ const fileMsg = new scanoss_dependencies_pb_1.DependencyRequest.Files();
47
+ fileMsg.setFile(file.file);
48
+ for (const purl of file.purls) {
49
+ const purlMsg = new scanoss_dependencies_pb_1.DependencyRequest.Purls();
50
+ purlMsg.setPurl(purl.purl);
51
+ purlMsg.setRequirement(purl.requirements);
52
+ fileMsg.addPurls(purlMsg);
53
+ }
54
+ depRequest.addFiles(fileMsg);
55
+ }
56
+ return depRequest;
57
+ }
58
+ catch (e) {
59
+ console.error(e);
60
+ return null;
61
+ }
62
+ }
63
+ async localDependencySearch(files) {
64
+ let results = { files: [] };
65
+ for (const filePath of files) {
66
+ const fileName = path_1.default.basename(filePath);
67
+ if (Parser[fileName] != null) {
68
+ try {
69
+ const fileContent = await fs_1.default.promises.readFile(filePath, 'utf8');
70
+ const dependency = Parser[fileName](fileContent, filePath);
71
+ if (dependency.purls.length != 0)
72
+ results.files.push(dependency);
73
+ }
74
+ catch (e) {
75
+ console.error(e);
76
+ continue;
77
+ }
78
+ }
79
+ }
80
+ return results;
81
+ }
82
+ }
83
+ exports.DependencyScanner = DependencyScanner;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNENBQW9CO0FBR3BCLHVEQUFrRDtBQUNsRCxtREFBdUU7QUFDdkUsaURBQXdEO0FBQ3hELHFEQUF3RTtBQUN4RSx5RUFBc0U7QUFDdEUseUdBQW9IO0FBRXBIOzs7RUFHRTtBQUNGLE1BQU0sTUFBTSxHQUFzQjtJQUNoQyxrQkFBa0IsRUFBRSw2QkFBa0I7SUFDdEMsU0FBUyxFQUFFLHVCQUFTO0lBQ3BCLGNBQWMsRUFBRSx5QkFBYTtJQUM3QixtQkFBbUIsRUFBRSw2QkFBaUI7SUFDdEMsU0FBUyxFQUFFLDBCQUFhO0lBQ3hCLGNBQWMsRUFBRSw4QkFBaUI7Q0FDbEMsQ0FBQztBQUdGLE1BQWEsaUJBQWlCO0lBSTVCO1FBQ0UsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksNkNBQXFCLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR00sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFvQjtRQUNwQyxJQUFJO1lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDckQsT0FBTyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdEQ7UUFBQyxPQUFNLENBQUMsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFHTyxZQUFZLENBQUMsaUJBQXFDO1FBQ3hELElBQUk7WUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLDJDQUFpQixFQUFFLENBQUM7WUFDM0MsS0FBSyxNQUFNLElBQUksSUFBSSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUU7Z0JBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksMkNBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQzlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMzQixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQzdCLE1BQU0sT0FBTyxHQUFHLElBQUksMkNBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzlDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUMzQixPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDMUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDM0I7Z0JBQ0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QjtZQUNELE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQixDQUFDLEtBQW9CO1FBQ3JELElBQUksT0FBTyxHQUF1QixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztRQUM5QyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRTtZQUMxQixNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLElBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0IsSUFBRztvQkFDRCxNQUFNLFdBQVcsR0FBRyxNQUFNLFlBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDakUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDM0QsSUFBRyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDO3dCQUMzQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDcEM7Z0JBQUMsT0FBTSxDQUFDLEVBQUU7b0JBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakIsU0FBUztpQkFDVjthQUNGO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBRUY7QUE3REQsOENBNkRDIn0=
@@ -10,6 +10,7 @@ const mavenParser_1 = require("./parsers/mavenParser");
10
10
  const npmParser_1 = require("./parsers/npmParser");
11
11
  const pyParser_1 = require("./parsers/pyParser");
12
12
  const rubyParser_1 = require("./parsers/rubyParser");
13
+ const golangParser_1 = require("./parsers/golangParser");
13
14
  /*
14
15
  This is a hash map that connect a filename with it's own parser function
15
16
  Any parser function must return a FileDependency object (See type.ts file in src/parser
@@ -20,7 +21,8 @@ const Parser = {
20
21
  'package.json': npmParser_1.packageParser,
21
22
  'package-lock.json': npmParser_1.packagelockParser,
22
23
  'Gemfile': rubyParser_1.gemfileParser,
23
- 'Gemfile.lock': rubyParser_1.gemfilelockParser
24
+ 'Gemfile.lock': rubyParser_1.gemfilelockParser,
25
+ 'go.mod': golangParser_1.goModParser,
24
26
  };
25
27
  async function generateDependenciesPurls(files) {
26
28
  let results = { files: [] };
@@ -41,4 +43,4 @@ async function generateDependenciesPurls(files) {
41
43
  return results;
42
44
  }
43
45
  exports.generateDependenciesPurls = generateDependenciesPurls;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVybEdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL1B1cmxHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUl4Qix1REFBa0Q7QUFDbEQsbURBQXVFO0FBQ3ZFLGlEQUF3RDtBQUN4RCxxREFBd0U7QUFJeEU7OztFQUdFO0FBQ0YsTUFBTSxNQUFNLEdBQXNCO0lBQzlCLGtCQUFrQixFQUFFLDZCQUFrQjtJQUN0QyxTQUFTLEVBQUUsdUJBQVM7SUFDcEIsY0FBYyxFQUFFLHlCQUFhO0lBQzdCLG1CQUFtQixFQUFFLDZCQUFpQjtJQUN0QyxTQUFTLEVBQUUsMEJBQWE7SUFDeEIsY0FBYyxFQUFFLDhCQUFpQjtDQUNwQyxDQUFDO0FBR0ssS0FBSyxVQUFVLHlCQUF5QixDQUFDLEtBQW9CO0lBQ2hFLElBQUksT0FBTyxHQUF1QixFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUM5QyxLQUFLLE1BQU0sUUFBUSxJQUFJLEtBQUssRUFBRTtRQUMxQixNQUFNLFFBQVEsR0FBRyxjQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pDLElBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtZQUMzQixJQUFJO2dCQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sWUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNqRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUMzRCxJQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3BDO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxJQUFJLEVBQUMsS0FBSyxDQUFDLENBQUM7YUFDMUQ7U0FDRjtLQUNKO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQWhCRCw4REFnQkMifQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHVybEdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGVwZW5kZW5jaWVzL1B1cmxHZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUl4Qix1REFBa0Q7QUFDbEQsbURBQXVFO0FBQ3ZFLGlEQUF3RDtBQUN4RCxxREFBd0U7QUFDeEUseURBQXFEO0FBR3JEOzs7RUFHRTtBQUNGLE1BQU0sTUFBTSxHQUFzQjtJQUM5QixrQkFBa0IsRUFBRSw2QkFBa0I7SUFDdEMsU0FBUyxFQUFFLHVCQUFTO0lBQ3BCLGNBQWMsRUFBRSx5QkFBYTtJQUM3QixtQkFBbUIsRUFBRSw2QkFBaUI7SUFDdEMsU0FBUyxFQUFFLDBCQUFhO0lBQ3hCLGNBQWMsRUFBRSw4QkFBaUI7SUFDakMsUUFBUSxFQUFFLDBCQUFXO0NBQ3hCLENBQUM7QUFHSyxLQUFLLFVBQVUseUJBQXlCLENBQUMsS0FBb0I7SUFDaEUsSUFBSSxPQUFPLEdBQXVCLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzlDLEtBQUssTUFBTSxRQUFRLElBQUksS0FBSyxFQUFFO1FBQzFCLE1BQU0sUUFBUSxHQUFHLGNBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO1lBQzNCLElBQUk7Z0JBQ0YsTUFBTSxXQUFXLEdBQUcsTUFBTSxZQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2pFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzNELElBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQztvQkFDM0IsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDcEM7WUFBQyxPQUFPLEtBQUssRUFBRTtnQkFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixRQUFRLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQzthQUMxRDtTQUNGO0tBQ0o7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNuQixDQUFDO0FBaEJELDhEQWdCQyJ9
@@ -0,0 +1,2 @@
1
+ import { FileDependency } from "./types";
2
+ export declare function goModParser(fileContent: string, filePath: string): FileDependency;
@@ -1,3 +1,63 @@
1
- // Reference https://go.dev/ref/mod#go-mod-file
2
- //
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29sYW5nUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvcGFyc2Vycy9nb2xhbmdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsK0NBQStDO0FBQy9DLEdBQUcifQ==
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.goModParser = void 0;
7
+ const packageurl_js_1 = require("packageurl-js");
8
+ const path_1 = __importDefault(require("path"));
9
+ function parseModule(str) {
10
+ const res = /(?<type>[^\s]+)(?:\s)+(?<ns_name>[^\s]+)\s?(?<version>(.*))/.exec(str);
11
+ return {
12
+ type: res.groups.type,
13
+ ns_name: res.groups.ns_name,
14
+ version: res.groups.version
15
+ };
16
+ }
17
+ function parseDepLink(str) {
18
+ var _a, _b;
19
+ const res = /.*?(?<ns_name>[^\s]+)\s+(?<version>(.*))/.exec(str);
20
+ return {
21
+ ns_name: (_a = res === null || res === void 0 ? void 0 : res.groups) === null || _a === void 0 ? void 0 : _a.ns_name,
22
+ version: (_b = res === null || res === void 0 ? void 0 : res.groups) === null || _b === void 0 ? void 0 : _b.version
23
+ };
24
+ }
25
+ // Removes comments and spaces
26
+ function preprocessLine(line) {
27
+ if (line.includes("//"))
28
+ line = line.substring(0, line.indexOf("//"));
29
+ return line.trim();
30
+ }
31
+ const PURL_TYPE = 'golang';
32
+ // See reference on: https://go.dev/ref/mod#go-mod-file
33
+ const MANIFEST_FILE = 'go.mod';
34
+ function goModParser(fileContent, filePath) {
35
+ // If the file is not a go.mod manifest file, return an empty results
36
+ const results = { file: filePath, purls: [] };
37
+ if (path_1.default.basename(filePath) != MANIFEST_FILE)
38
+ return results;
39
+ const lines = fileContent.split('\n');
40
+ const require = [];
41
+ const exclude = [];
42
+ for (let num = 0; num < lines.length; num += 1) {
43
+ let line = preprocessLine(lines[num]);
44
+ if (line.includes('require') && line.includes('(')) {
45
+ num += 1;
46
+ line = preprocessLine(lines[num]);
47
+ while (num < lines.length && line !== ')') {
48
+ const { ns_name, version } = parseDepLink(line);
49
+ const index = ns_name.lastIndexOf('/');
50
+ const namespace = ns_name.substring(0, index);
51
+ const name = ns_name.substring(index + 1);
52
+ const purlString = new packageurl_js_1.PackageURL(PURL_TYPE, namespace, name, version, undefined, undefined).toString();
53
+ results.purls.push({ purl: purlString });
54
+ require.push(line);
55
+ num += 1;
56
+ line = preprocessLine(lines[num]);
57
+ }
58
+ }
59
+ }
60
+ return results;
61
+ }
62
+ exports.goModParser = goModParser;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29sYW5nUGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXBlbmRlbmNpZXMvcGFyc2Vycy9nb2xhbmdQYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsaURBQTJDO0FBQzNDLGdEQUF3QjtBQUd4QixTQUFTLFdBQVcsQ0FBRSxHQUFXO0lBQy9CLE1BQU0sR0FBRyxHQUFHLDZEQUE2RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRixPQUFPO1FBQ0wsSUFBSSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUNyQixPQUFPLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1FBQzNCLE9BQU8sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU87S0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBRSxHQUFXOztJQUNoQyxNQUFNLEdBQUcsR0FBRywwQ0FBMEMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsT0FBTztRQUNMLE9BQU8sRUFBRSxNQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxNQUFNLDBDQUFFLE9BQU87UUFDN0IsT0FBTyxFQUFFLE1BQUEsR0FBRyxhQUFILEdBQUcsdUJBQUgsR0FBRyxDQUFFLE1BQU0sMENBQUUsT0FBTztLQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELDhCQUE4QjtBQUM5QixTQUFTLGNBQWMsQ0FBQyxJQUFZO0lBQ2hDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5QyxPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN2QixDQUFDO0FBS0QsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDO0FBRzNCLHVEQUF1RDtBQUN2RCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFDL0IsU0FBZ0IsV0FBVyxDQUFDLFdBQW1CLEVBQUUsUUFBZ0I7SUFFL0QscUVBQXFFO0lBQ3JFLE1BQU0sT0FBTyxHQUFtQixFQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDO0lBQzVELElBQUcsY0FBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxhQUFhO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDO0lBRW5CLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFdkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ25CLE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUVsQixLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRyxHQUFHLElBQUUsQ0FBQyxFQUFFO1FBRTlDLElBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUd0QyxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqRCxHQUFHLElBQUUsQ0FBQyxDQUFDO1lBQ1AsSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNsQyxPQUFPLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksS0FBRyxHQUFHLEVBQUU7Z0JBRXZDLE1BQU0sRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUU5QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRTFDLE1BQU0sVUFBVSxHQUFHLElBQUksMEJBQVUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN4RyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO2dCQUV2QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUVuQixHQUFHLElBQUUsQ0FBQyxDQUFDO2dCQUNQLElBQUksR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDbkM7U0FDRjtLQUNGO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQXhDRCxrQ0F3Q0MifQ==
@@ -1,33 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- /*
4
- EXAMPLE
5
- {
6
- "files": [
7
- {
8
- "file": "./test/data/requirements.txt",
9
- "purls": [
10
- {
11
- "purl": "pkg:pypi/requests"
12
- },
13
- {
14
- "purl": "pkg:pypi/crc32c@2.2"
15
- },
16
- {
17
- "purl": "pkg:pypi/binaryornot"
18
- },
19
- {
20
- "purl": "pkg:pypi/progress"
21
- },
22
- {
23
- "purl": "pkg:pypi/grpcio"
24
- },
25
- {
26
- "purl": "pkg:pypi/protobuf"
27
- }
28
- ]
29
- }
30
- ]
31
- }
32
- */
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9wYXJzZXJzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZCRSJ9
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2RlcGVuZGVuY2llcy9wYXJzZXJzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,4 @@
1
+ export declare class GrpcConfig {
2
+ DEFAULT_GRPC_PORT: number;
3
+ DEFAULT_GRPC_HOST: string;
4
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GrpcConfig = void 0;
4
+ class GrpcConfig {
5
+ constructor() {
6
+ this.DEFAULT_GRPC_PORT = 50051;
7
+ this.DEFAULT_GRPC_HOST = 'localhost';
8
+ }
9
+ }
10
+ exports.GrpcConfig = GrpcConfig;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JwY0NvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZ3JwYy9HcnBjQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsVUFBVTtJQUF2QjtRQUVFLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQixzQkFBaUIsR0FBRyxXQUFXLENBQUM7SUFFbEMsQ0FBQztDQUFBO0FBTkQsZ0NBTUMifQ==
@@ -0,0 +1,12 @@
1
+ import { GrpcConfig } from './GrpcConfig';
2
+ import * as DependenciesMessages from './scanoss/api/dependencies/v2/scanoss-dependencies_pb.js';
3
+ import * as CommonMessages from './scanoss/api/common/v2/scanoss-common_pb';
4
+ export declare class GrpcDependencyService {
5
+ private client;
6
+ private config;
7
+ constructor(cfg?: GrpcConfig);
8
+ get(req: DependenciesMessages.DependencyRequest): Promise<DependenciesMessages.DependencyResponse>;
9
+ private buildDepRequestFromPlainObject;
10
+ echo(req: CommonMessages.EchoRequest): Promise<CommonMessages.EchoResponse>;
11
+ private buildEchoRequestFromPlainObject;
12
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.GrpcDependencyService = void 0;
23
+ const grpc = __importStar(require("@grpc/grpc-js"));
24
+ const GrpcConfig_1 = require("./GrpcConfig");
25
+ const scanoss_dependencies_grpc_pb_1 = require("./scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb");
26
+ const DependenciesMessages = __importStar(require("./scanoss/api/dependencies/v2/scanoss-dependencies_pb.js"));
27
+ const CommonMessages = __importStar(require("./scanoss/api/common/v2/scanoss-common_pb"));
28
+ class GrpcDependencyService {
29
+ constructor(cfg = new GrpcConfig_1.GrpcConfig()) {
30
+ this.config = cfg;
31
+ this.client = new scanoss_dependencies_grpc_pb_1.DependenciesClient(this.config.DEFAULT_GRPC_HOST + ':' + this.config.DEFAULT_GRPC_PORT, grpc.credentials.createInsecure());
32
+ }
33
+ async get(req) {
34
+ //const msg = this.buildDepRequestFromPlainObject(request);
35
+ return new Promise((resolve, reject) => {
36
+ this.client.getDependencies(req, (err, response) => {
37
+ if (err)
38
+ reject(err);
39
+ resolve(response);
40
+ });
41
+ });
42
+ }
43
+ buildDepRequestFromPlainObject(plainObj) {
44
+ try {
45
+ const depMessage = new DependenciesMessages.DependencyRequest();
46
+ for (const dependency of plainObj.filesList) {
47
+ const fileMsg = new DependenciesMessages.DependencyRequest.Files();
48
+ fileMsg.setFile(dependency.file);
49
+ for (const purl of dependency.purlsList) {
50
+ const purlMsg = new DependenciesMessages.DependencyRequest.Purls();
51
+ purlMsg.setPurl(purl.purl);
52
+ purlMsg.setRequirement(purl.requirement);
53
+ fileMsg.addPurls(purlMsg);
54
+ }
55
+ depMessage.addFiles(fileMsg);
56
+ }
57
+ return depMessage;
58
+ }
59
+ catch (e) {
60
+ console.error(e);
61
+ return null;
62
+ }
63
+ }
64
+ async echo(req) {
65
+ //const msg = this.buildEchoRequestFromPlainObject(request);
66
+ return new Promise((resolve, reject) => {
67
+ this.client.echo(req, (err, response) => {
68
+ if (err)
69
+ reject(err);
70
+ resolve(response);
71
+ });
72
+ });
73
+ }
74
+ buildEchoRequestFromPlainObject(plainObj) {
75
+ const echoMessage = new CommonMessages.EchoRequest();
76
+ echoMessage.setMessage(plainObj.message);
77
+ return echoMessage;
78
+ }
79
+ }
80
+ exports.GrpcDependencyService = GrpcDependencyService;
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JwY0RlcGVuZGVuY3lTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ncnBjL0dycGNEZXBlbmRlbmN5U2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXNDO0FBQ3RDLDZDQUEwQztBQUMxQyw2R0FBZ0c7QUFDaEcsK0dBQWlHO0FBRWpHLDBGQUEyRTtBQUUzRSxNQUFhLHFCQUFxQjtJQU1oQyxZQUFZLEdBQUcsR0FBRyxJQUFJLHVCQUFVLEVBQUU7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFFbEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlEQUFrQixDQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFDLEdBQUcsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUMvRCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBMkM7UUFDMUQsMkRBQTJEO1FBQzNELE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLEdBQUc7b0JBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw4QkFBOEIsQ0FBQyxRQUF5RDtRQUM5RixJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hFLEtBQUssTUFBTSxVQUFVLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtnQkFDM0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRTtvQkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbkUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzNCLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUN6QyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxVQUFVLENBQUM7U0FDbkI7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFHTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQStCO1FBQy9DLDREQUE0RDtRQUM1RCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxHQUFHO29CQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBR08sK0JBQStCLENBQUMsUUFBNkM7UUFDakYsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztDQUVGO0FBL0RELHNEQStEQyJ9
@@ -0,0 +1,2 @@
1
+ // GENERATED CODE -- NO SERVICES IN PROTO
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbm9zcy1jb21tb25fZ3JwY19wYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZ3JwYy9zY2Fub3NzL2FwaS9jb21tb24vdjIvc2Nhbm9zcy1jb21tb25fZ3JwY19wYi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5Q0FBeUMifQ==