scanoss 0.9.3 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -15
- package/assets/ReportHTMLTemplate/index.html +74 -59
- package/build/main/cli/commands/scan.js +29 -18
- package/build/main/index.d.ts +10 -6
- package/build/main/index.js +11 -8
- package/build/main/sdk/Constants.d.ts +4 -0
- package/build/main/sdk/Constants.js +7 -0
- package/build/main/sdk/Dependencies/DependencyScanner.d.ts +2 -2
- package/build/main/sdk/Dependencies/DependencyScanner.js +6 -6
- package/build/main/sdk/Errors.d.ts +1 -0
- package/build/main/sdk/Errors.js +4 -0
- package/build/main/sdk/FileCount/FileCount.d.ts +1 -1
- package/build/main/sdk/FileCount/FileCount.js +10 -3
- package/build/main/sdk/{DataLayer → Report/DataLayer}/DataLayerTypes.d.ts +11 -4
- package/build/main/sdk/{DataLayer → Report/DataLayer}/DataLayerTypes.js +1 -4
- package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviderManager.d.ts +1 -1
- package/build/main/sdk/Report/DataLayer/DataProviderManager.js +25 -0
- package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviders/ComponentDataProvider.d.ts +3 -3
- package/build/main/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.js +175 -0
- package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviders/DependencyDataProvider.d.ts +2 -2
- package/build/main/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.js +42 -0
- package/build/main/sdk/{DataLayer → Report/DataLayer}/DataProviders/LicenseDataProvider.d.ts +3 -5
- package/build/main/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.js +118 -0
- package/build/main/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.d.ts +13 -0
- package/build/main/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.js +65 -0
- package/build/{module/sdk → main/sdk/Report}/DataLayer/DataProviders/SummaryDataProvider.d.ts +4 -2
- package/build/main/sdk/Report/DataLayer/DataProviders/SummaryDataProvider.js +38 -0
- package/build/main/sdk/Report/Report.d.ts +7 -1
- package/build/main/sdk/Report/Report.js +19 -6
- package/build/main/sdk/Services/Grpc/BaseService.d.ts +18 -0
- package/build/main/sdk/Services/Grpc/BaseService.js +94 -0
- package/build/main/sdk/Services/Grpc/CryptographyService.d.ts +9 -0
- package/build/main/sdk/Services/Grpc/CryptographyService.js +35 -0
- package/build/{module/sdk/grpc/GrpcDependencyService.d.ts → main/sdk/Services/Grpc/DependencyService.d.ts} +1 -1
- package/build/main/sdk/{grpc/GrpcDependencyService.js → Services/Grpc/DependencyService.js} +4 -4
- package/build/main/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
- package/build/main/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_pb.js +746 -0
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +39 -0
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +98 -0
- package/build/main/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +562 -0
- package/build/{module/sdk/grpc → main/sdk/Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +2 -2
- package/build/main/sdk/Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1397 -0
- package/build/main/tsconfig.tsbuildinfo +295 -213
- package/build/module/cli/commands/scan.js +31 -20
- package/build/module/index.d.ts +10 -6
- package/build/module/index.js +11 -8
- package/build/module/sdk/Constants.d.ts +4 -0
- package/build/module/sdk/Constants.js +5 -0
- package/build/module/sdk/Dependencies/DependencyScanner.d.ts +2 -2
- package/build/module/sdk/Dependencies/DependencyScanner.js +9 -9
- package/build/module/sdk/Errors.d.ts +1 -0
- package/build/module/sdk/Errors.js +2 -0
- package/build/module/sdk/FileCount/FileCount.d.ts +1 -1
- package/build/module/sdk/FileCount/FileCount.js +13 -6
- package/build/module/sdk/{DataLayer → Report/DataLayer}/DataLayerTypes.d.ts +11 -4
- package/build/module/sdk/Report/DataLayer/DataLayerTypes.js +2 -0
- package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviderManager.d.ts +1 -1
- package/build/module/sdk/Report/DataLayer/DataProviderManager.js +22 -0
- package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviders/ComponentDataProvider.d.ts +3 -3
- package/build/module/sdk/Report/DataLayer/DataProviders/ComponentDataProvider.js +170 -0
- package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviders/DependencyDataProvider.d.ts +2 -2
- package/build/module/sdk/Report/DataLayer/DataProviders/DependencyDataProvider.js +39 -0
- package/build/module/sdk/{DataLayer → Report/DataLayer}/DataProviders/LicenseDataProvider.d.ts +3 -5
- package/build/module/sdk/Report/DataLayer/DataProviders/LicenseDataProvider.js +115 -0
- package/build/module/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.d.ts +13 -0
- package/build/module/sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider.js +60 -0
- package/build/{main/sdk → module/sdk/Report}/DataLayer/DataProviders/SummaryDataProvider.d.ts +4 -2
- package/build/module/sdk/Report/DataLayer/DataProviders/SummaryDataProvider.js +35 -0
- package/build/module/sdk/Report/Report.d.ts +7 -1
- package/build/module/sdk/Report/Report.js +19 -6
- package/build/module/sdk/Services/Grpc/BaseService.d.ts +18 -0
- package/build/module/sdk/Services/Grpc/BaseService.js +61 -0
- package/build/module/sdk/Services/Grpc/CryptographyService.d.ts +9 -0
- package/build/module/sdk/Services/Grpc/CryptographyService.js +32 -0
- package/build/{main/sdk/grpc/GrpcDependencyService.d.ts → module/sdk/Services/Grpc/DependencyService.d.ts} +1 -1
- package/build/module/sdk/Services/Grpc/DependencyService.js +62 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +2 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/common/v2/scanoss-common_pb.js +746 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.d.ts +39 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_grpc_pb.js +98 -0
- package/build/module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.js +562 -0
- package/build/{main/sdk/grpc → module/sdk/Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.js +2 -2
- package/build/module/sdk/Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +1397 -0
- package/build/module/tsconfig.module.tsbuildinfo +295 -213
- package/package.json +2 -2
- package/build/main/sdk/DataLayer/DataProviderManager.js +0 -24
- package/build/main/sdk/DataLayer/DataProviders/ComponentDataProvider.js +0 -164
- package/build/main/sdk/DataLayer/DataProviders/DependencyDataProvider.js +0 -37
- package/build/main/sdk/DataLayer/DataProviders/LicenseDataProvider.js +0 -148
- package/build/main/sdk/DataLayer/DataProviders/SummaryDataProvider.js +0 -33
- package/build/main/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
- package/build/main/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -404
- package/build/main/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1197
- package/build/main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -19
- package/build/main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -66
- package/build/main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -14
- package/build/module/sdk/DataLayer/DataLayerTypes.js +0 -5
- package/build/module/sdk/DataLayer/DataProviderManager.js +0 -21
- package/build/module/sdk/DataLayer/DataProviders/ComponentDataProvider.js +0 -159
- package/build/module/sdk/DataLayer/DataProviders/DependencyDataProvider.js +0 -34
- package/build/module/sdk/DataLayer/DataProviders/LicenseDataProvider.js +0 -145
- package/build/module/sdk/DataLayer/DataProviders/SummaryDataProvider.js +0 -30
- package/build/module/sdk/grpc/GrpcDependencyService.js +0 -62
- package/build/module/sdk/grpc/scanoss/api/common/v2/scanoss-common_grpc_pb.js +0 -2
- package/build/module/sdk/grpc/scanoss/api/common/v2/scanoss-common_pb.js +0 -404
- package/build/module/sdk/grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.js +0 -1197
- package/build/module/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.d.ts +0 -19
- package/build/module/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_grpc_pb.js +0 -66
- package/build/module/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.js +0 -14
- /package/build/main/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
- /package/build/main/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -0
- /package/build/main/sdk/{grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts → Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.d.ts} +0 -0
- /package/build/main/sdk/{grpc → Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -0
- /package/build/{module/sdk/grpc → main/sdk/Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts +0 -0
- /package/build/module/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_grpc_pb.d.ts +0 -0
- /package/build/module/sdk/{grpc → Services/Grpc}/scanoss/api/common/v2/scanoss-common_pb.d.ts +0 -0
- /package/build/{main/sdk/grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts → module/sdk/Services/Grpc/scanoss/api/cryptography/v2/scanoss-cryptography_pb.d.ts} +0 -0
- /package/build/module/sdk/{grpc → Services/Grpc}/scanoss/api/dependencies/v2/scanoss-dependencies_grpc_pb.d.ts +0 -0
- /package/build/module/sdk/{grpc/scanoss/api/scanning/v2/scanoss-scanning_pb.d.ts → Services/Grpc/scanoss/api/dependencies/v2/scanoss-dependencies_pb.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -123,26 +123,34 @@ These events are listed in the table above and were previously mentioned.
|
|
|
123
123
|
| RESULTS_APPENDED | Results added to scan report file |
|
|
124
124
|
|
|
125
125
|
|
|
126
|
-
### Dependency Scanning
|
|
127
|
-
```typescript
|
|
128
|
-
import { DependencyScanner, DependencyScannerCfg } from "scanoss";
|
|
129
126
|
|
|
130
|
-
const main = async () => {
|
|
131
127
|
|
|
132
|
-
|
|
128
|
+
## Local Development and Usage
|
|
129
|
+
If you want to develop this package and use it locally in your project (without publishing it), follow these steps:
|
|
130
|
+
|
|
131
|
+
#### 1 - Creating a Symbolic Link for the Development Package:
|
|
132
|
+
In the root of the scanoss.js package, run the command:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npm install && npm run build && npm link .
|
|
136
|
+
```
|
|
137
|
+
This command creates a global symbolic link in your system that points to the local location of your package. This means you can use the package in any other Node.js project on your machine as if it were installed globally.
|
|
133
138
|
|
|
134
|
-
|
|
135
|
-
|
|
139
|
+
#### 2 - Using the Package in Your Project:
|
|
140
|
+
|
|
141
|
+
In the root of the project where you want to use the scanoss package, run the command:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm link scanoss
|
|
145
|
+
```
|
|
146
|
+
This will create a symbolic link in your project to the globally linked scanoss package. Any changes made in the package will be immediately reflected in the consuming project.
|
|
136
147
|
|
|
137
|
-
|
|
138
|
-
//const results = await dependencyScanner.scan(["./package.json", "package-lock.json"])
|
|
148
|
+
#### 3 - Disconnecting the Link:
|
|
139
149
|
|
|
140
|
-
|
|
150
|
+
Remember that once you finish developing or using the package locally, you should break the link to avoid potential issues with future versions or with installing other packages. To do this, simply run:
|
|
141
151
|
|
|
142
|
-
|
|
152
|
+
```bash
|
|
153
|
+
npm unlink scanoss
|
|
143
154
|
```
|
|
144
|
-
|
|
155
|
+
in both the project and the scanoss package. This will remove the symbolic links and restore the normal state of the packages.
|
|
145
156
|
|
|
146
|
-
- `npm install` will install the dependencies.
|
|
147
|
-
- `npm run build` will build the module.
|
|
148
|
-
- `npm run test` will publish the module.
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
|
-
<meta http-equiv="X-UA-Compatible"
|
|
7
|
-
<meta
|
|
8
|
-
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
|
|
9
|
-
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3"
|
|
6
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible">
|
|
7
|
+
<meta content="width=device-width, initial-scale=1.0" name="viewport">
|
|
8
|
+
<link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
|
|
9
|
+
integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" rel="stylesheet">
|
|
10
10
|
<title>SCANOSS Detected Report</title>
|
|
11
11
|
</head>
|
|
12
12
|
|
|
@@ -124,6 +124,14 @@
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
|
|
127
|
+
.section__license-obligation {
|
|
128
|
+
display: none;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.visible--block {
|
|
132
|
+
display: block;
|
|
133
|
+
}
|
|
134
|
+
|
|
127
135
|
.incompatible-license-table td:first-child {
|
|
128
136
|
text-align: left;
|
|
129
137
|
font-size: 14px;
|
|
@@ -440,13 +448,15 @@
|
|
|
440
448
|
}
|
|
441
449
|
</style>
|
|
442
450
|
|
|
451
|
+
|
|
452
|
+
<!--See Bootstrap example: https://getbootstrap.com/docs/5.0/components/navs-tabs/#javascript-behavior-->
|
|
443
453
|
<body>
|
|
444
454
|
<header>
|
|
445
455
|
<div class="header-title">
|
|
446
456
|
<img
|
|
447
457
|
src="data:image/png;base64,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">
|
|
448
458
|
<div>
|
|
449
|
-
<h5
|
|
459
|
+
<h5 id='header__report_title'></h5>
|
|
450
460
|
<h5 id="date"></h5>
|
|
451
461
|
</div>
|
|
452
462
|
</div>
|
|
@@ -463,24 +473,24 @@
|
|
|
463
473
|
|
|
464
474
|
<nav>
|
|
465
475
|
<div class="nav nav-pills d-flex justify-content-center mb-5" id="nav-tab" role="tablist">
|
|
466
|
-
<button
|
|
467
|
-
|
|
468
|
-
<button
|
|
469
|
-
|
|
470
|
-
<button
|
|
471
|
-
|
|
472
|
-
<button
|
|
473
|
-
|
|
474
|
-
<button
|
|
475
|
-
|
|
476
|
-
<button
|
|
477
|
-
|
|
478
|
-
<button
|
|
479
|
-
|
|
480
|
-
<button
|
|
481
|
-
|
|
482
|
-
<button
|
|
483
|
-
|
|
476
|
+
<button aria-controls="nav-licenses" aria-selected="true" class="nav-link active" data-bs-target="#nav-licenses"
|
|
477
|
+
data-bs-toggle="tab" id="nav-licenses-tab" role="tab" type="button">Licenses</button>
|
|
478
|
+
<button aria-controls="nav-components" aria-selected="false" class="nav-link" data-bs-target="#nav-components"
|
|
479
|
+
data-bs-toggle="tab" id="nav-components-tab" role="tab" type="button">Components</button>
|
|
480
|
+
<button aria-controls="nav-vulnerabilities" aria-selected="false" class="nav-link" data-bs-target="#nav-vulnerabilities"
|
|
481
|
+
data-bs-toggle="tab" id="nav-vulnerabilities-tab" role="tab" type="button">Vulnerabilities</button>
|
|
482
|
+
<button aria-controls="nav-dependencies" aria-selected="false" class="nav-link" data-bs-target="#nav-dependencies"
|
|
483
|
+
data-bs-toggle="tab" id="nav-dependencies-tab" role="tab" type="button">Dependencies</button>
|
|
484
|
+
<button aria-controls="nav-copyrights" aria-selected="false" class="nav-link" data-bs-target="#nav-copyrights"
|
|
485
|
+
data-bs-toggle="tab" id="nav-copyrights-tab" role="tab" type="button">Copyrights</button>
|
|
486
|
+
<button aria-controls="nav-cryptography" aria-selected="false" class="nav-link" data-bs-target="#nav-cryptography"
|
|
487
|
+
data-bs-toggle="tab" id="nav-cryptography-tab" role="tab" type="button">Cryptography</button>
|
|
488
|
+
<button aria-controls="nav-quality" aria-selected="false" class="nav-link" data-bs-target="#nav-quality"
|
|
489
|
+
data-bs-toggle="tab" id="nav-quality-tab" role="tab" type="button">Quality</button>
|
|
490
|
+
<button aria-controls="nav-health" aria-selected="false" class="nav-link" data-bs-target="#nav-health"
|
|
491
|
+
data-bs-toggle="tab" id="nav-health-tab" role="tab" type="button">Health</button>
|
|
492
|
+
<button aria-controls="nav-summary" aria-selected="false" class="nav-link" data-bs-target="#nav-summary" data-bs-toggle="tab"
|
|
493
|
+
id="nav-summary-tab" role="tab" type="button">Summary</button>
|
|
484
494
|
</div>
|
|
485
495
|
</nav>
|
|
486
496
|
|
|
@@ -490,7 +500,7 @@
|
|
|
490
500
|
<div class="tab-content" id="nav-tabContent">
|
|
491
501
|
|
|
492
502
|
<!-- licenses -->
|
|
493
|
-
<div class="tab-pane fade show active" id="nav-licenses" role="tabpanel"
|
|
503
|
+
<div aria-labelledby="nav-licenses-tab" class="tab-pane fade show active" id="nav-licenses" role="tabpanel"
|
|
494
504
|
tabindex="0">
|
|
495
505
|
<section class="mt-5">
|
|
496
506
|
<div class="pie-chart-container">
|
|
@@ -507,7 +517,7 @@
|
|
|
507
517
|
</table>
|
|
508
518
|
</div>
|
|
509
519
|
</section>
|
|
510
|
-
<section class="mt-5">
|
|
520
|
+
<section class="mt-5 section__license-obligation" id="section__license-obligation">
|
|
511
521
|
<h4>License obligations</h4>
|
|
512
522
|
<div class="incompatibilities-table-container">
|
|
513
523
|
<table class="table incompatible-license-table main-table">
|
|
@@ -526,9 +536,9 @@
|
|
|
526
536
|
</div>
|
|
527
537
|
|
|
528
538
|
<!-- components -->
|
|
529
|
-
<section class="tab-pane fade" id="nav-components" role="tabpanel"
|
|
539
|
+
<section aria-labelledby="nav-components-tab" class="tab-pane fade" id="nav-components" role="tabpanel"
|
|
530
540
|
tabindex="0">
|
|
531
|
-
<table
|
|
541
|
+
<table class="table main-table" id="table-components">
|
|
532
542
|
<thead>
|
|
533
543
|
<tr>
|
|
534
544
|
<th>Component</th>
|
|
@@ -552,9 +562,9 @@
|
|
|
552
562
|
</section>
|
|
553
563
|
|
|
554
564
|
<!-- vulnerabilities -->
|
|
555
|
-
<section class="tab-pane fade" id="nav-vulnerabilities" role="tabpanel"
|
|
565
|
+
<section aria-labelledby="nav-vulnerabilities-tab" class="tab-pane fade" id="nav-vulnerabilities" role="tabpanel"
|
|
556
566
|
tabindex="0">
|
|
557
|
-
<table
|
|
567
|
+
<table class="table main-table" id="table-vulnerabilities">
|
|
558
568
|
<thead>
|
|
559
569
|
<tr>
|
|
560
570
|
<th>Component</th>
|
|
@@ -584,9 +594,9 @@
|
|
|
584
594
|
</section>
|
|
585
595
|
|
|
586
596
|
<!-- dependencies -->
|
|
587
|
-
<section class="tab-pane fade" id="nav-dependencies" role="tabpanel"
|
|
597
|
+
<section aria-labelledby="nav-dependencies-tab" class="tab-pane fade" id="nav-dependencies" role="tabpanel"
|
|
588
598
|
tabindex="0">
|
|
589
|
-
<table
|
|
599
|
+
<table class="table main-table" id="table-dependencies">
|
|
590
600
|
<thead>
|
|
591
601
|
<tr>
|
|
592
602
|
<th>Dependency</th>
|
|
@@ -610,9 +620,9 @@
|
|
|
610
620
|
</section>
|
|
611
621
|
|
|
612
622
|
<!-- copyright -->
|
|
613
|
-
<section class="tab-pane fade" id="nav-copyrights" role="tabpanel"
|
|
623
|
+
<section aria-labelledby="nav-copyrights-tab" class="tab-pane fade" id="nav-copyrights" role="tabpanel"
|
|
614
624
|
tabindex="0">
|
|
615
|
-
<table
|
|
625
|
+
<table class="table main-table" id="table-copyrights">
|
|
616
626
|
<thead>
|
|
617
627
|
<tr>
|
|
618
628
|
<th>Component</th>
|
|
@@ -634,9 +644,9 @@
|
|
|
634
644
|
</section>
|
|
635
645
|
|
|
636
646
|
<!-- cryptography -->
|
|
637
|
-
<section class="tab-pane fade" id="nav-cryptography" role="tabpanel"
|
|
647
|
+
<section aria-labelledby="nav-cryptography-tab" class="tab-pane fade" id="nav-cryptography" role="tabpanel"
|
|
638
648
|
tabindex="0">
|
|
639
|
-
<table
|
|
649
|
+
<table class="table main-table" id="table-cryptography">
|
|
640
650
|
<thead>
|
|
641
651
|
<tr>
|
|
642
652
|
<th>Component</th>
|
|
@@ -658,9 +668,9 @@
|
|
|
658
668
|
</section>
|
|
659
669
|
|
|
660
670
|
<!-- quality -->
|
|
661
|
-
<section class="tab-pane fade" id="nav-quality" role="tabpanel"
|
|
671
|
+
<section aria-labelledby="nav-quality-tab" class="tab-pane fade" id="nav-quality" role="tabpanel"
|
|
662
672
|
tabindex="0">
|
|
663
|
-
<table
|
|
673
|
+
<table class="table main-table" id="table-quality">
|
|
664
674
|
<thead>
|
|
665
675
|
<tr>
|
|
666
676
|
<th>Component</th>
|
|
@@ -682,9 +692,9 @@
|
|
|
682
692
|
</section>
|
|
683
693
|
|
|
684
694
|
<!-- health -->
|
|
685
|
-
<section class="tab-pane fade" id="nav-health" role="tabpanel"
|
|
695
|
+
<section aria-labelledby="nav-health-tab" class="tab-pane fade" id="nav-health" role="tabpanel"
|
|
686
696
|
tabindex="0">
|
|
687
|
-
<table
|
|
697
|
+
<table class="table main-table" id="table-health">
|
|
688
698
|
<thead>
|
|
689
699
|
<tr>
|
|
690
700
|
<th>Component</th>
|
|
@@ -718,7 +728,7 @@
|
|
|
718
728
|
</section>
|
|
719
729
|
|
|
720
730
|
<!-- summary -->
|
|
721
|
-
<div class="tab-pane fade" id="nav-summary" role="tabpanel"
|
|
731
|
+
<div aria-labelledby="nav-summary-tab" class="tab-pane fade" id="nav-summary" role="tabpanel" tabindex="0">
|
|
722
732
|
SUMMARY
|
|
723
733
|
</div>
|
|
724
734
|
</div>
|
|
@@ -732,9 +742,9 @@
|
|
|
732
742
|
<p class="text-center"><a href="https://www.scanoss.com" target="_blank">www.scanoss.com</a></p>
|
|
733
743
|
</footer>
|
|
734
744
|
|
|
735
|
-
<script
|
|
745
|
+
<script crossorigin="anonymous"
|
|
736
746
|
integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8"
|
|
737
|
-
|
|
747
|
+
src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js"></script>
|
|
738
748
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
739
749
|
<script>
|
|
740
750
|
addEventListener('DOMContentLoaded', (event) => {
|
|
@@ -832,7 +842,8 @@
|
|
|
832
842
|
const p = document.querySelector('#project-name');
|
|
833
843
|
p.innerHTML += data.summary.projectName ? data.summary.projectName : '-';
|
|
834
844
|
|
|
835
|
-
|
|
845
|
+
const rh = document.querySelector('#header__report_title')
|
|
846
|
+
rh.innerHTML += data.summary.reportTitle ? data.summary.reportTitle : "Report"
|
|
836
847
|
// summary
|
|
837
848
|
const s = document.querySelector('.scan-summary');
|
|
838
849
|
s.innerHTML += `
|
|
@@ -997,26 +1008,30 @@
|
|
|
997
1008
|
}
|
|
998
1009
|
|
|
999
1010
|
function incompatibleLicenses() {
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1011
|
+
if (data.licensesObligations) {
|
|
1012
|
+
document.querySelector('.section__license-obligation').classList.add('visible--block');
|
|
1013
|
+
|
|
1014
|
+
const licenseMapper = new Set();
|
|
1015
|
+
data.licensesObligations.forEach((l) => licenseMapper.add(l.label));
|
|
1016
|
+
const body = document.querySelector('#incompatible-license');
|
|
1017
|
+
data.licensesObligations.forEach((l) => {
|
|
1018
|
+
body.innerHTML += `
|
|
1019
|
+
<tr>
|
|
1020
|
+
<td>${l.label}</td>
|
|
1021
|
+
<td>${l.copyleft === true ? '✔' : '✖'}</td>
|
|
1022
|
+
<td><div class="incompatible-license-container">${l.incompatibleWith.map((i) => {
|
|
1023
|
+
return `<div class="license-block ${licenseMapper.has(i) === true ? 'incompatible-ref' : ''}">
|
|
1024
|
+
<p>${i}</p>
|
|
1025
|
+
</div>`;
|
|
1026
|
+
}).join(' ')}</div></td>
|
|
1027
|
+
</tr>`;
|
|
1028
|
+
});
|
|
1029
|
+
}
|
|
1015
1030
|
}
|
|
1016
1031
|
|
|
1017
1032
|
pieChart();
|
|
1018
1033
|
licenseDetail();
|
|
1019
|
-
incompatibleLicenses()
|
|
1034
|
+
incompatibleLicenses();
|
|
1020
1035
|
|
|
1021
1036
|
}
|
|
1022
1037
|
|
|
@@ -15,14 +15,15 @@ const DependencyScanner_1 = require("../../sdk/Dependencies/DependencyScanner");
|
|
|
15
15
|
const ScanFilter_1 = require("../../sdk/tree/Filters/ScanFilter");
|
|
16
16
|
const DependencyFilter_1 = require("../../sdk/tree/Filters/DependencyFilter");
|
|
17
17
|
const Report_1 = require("../../sdk/Report/Report");
|
|
18
|
-
const DataProviderManager_1 = require("../../sdk/DataLayer/DataProviderManager");
|
|
19
|
-
const ComponentDataProvider_1 = require("../../sdk/DataLayer/DataProviders/ComponentDataProvider");
|
|
20
|
-
const DependencyDataProvider_1 = require("../../sdk/DataLayer/DataProviders/DependencyDataProvider");
|
|
21
|
-
const LicenseDataProvider_1 = require("../../sdk/DataLayer/DataProviders/LicenseDataProvider");
|
|
22
|
-
const SummaryDataProvider_1 = require("../../sdk/DataLayer/DataProviders/SummaryDataProvider");
|
|
18
|
+
const DataProviderManager_1 = require("../../sdk/Report/DataLayer/DataProviderManager");
|
|
19
|
+
const ComponentDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/ComponentDataProvider");
|
|
20
|
+
const DependencyDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/DependencyDataProvider");
|
|
21
|
+
const LicenseDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/LicenseDataProvider");
|
|
22
|
+
const SummaryDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/SummaryDataProvider");
|
|
23
23
|
const DecompressionFilter_1 = require("../../sdk/tree/Filters/DecompressionFilter");
|
|
24
24
|
const DecompressionManager_1 = require("../../sdk/Decompress/DecompressionManager");
|
|
25
25
|
const path_1 = __importDefault(require("path"));
|
|
26
|
+
const LicenseObligationDataProvider_1 = require("../../sdk/Report/DataLayer/DataProviders/LicenseObligationDataProvider");
|
|
26
27
|
async function scanHandler(rootPath, options) {
|
|
27
28
|
rootPath = path_1.default.resolve(rootPath);
|
|
28
29
|
const pathIsFolder = await helpers_1.isFolder(rootPath);
|
|
@@ -70,7 +71,9 @@ async function scanHandler(rootPath, options) {
|
|
|
70
71
|
scannerInput.engineFlags = options.flags;
|
|
71
72
|
if (options.wfp)
|
|
72
73
|
scannerInput.wfpPath = rootPath;
|
|
73
|
-
const wfpMode = options.hpsm
|
|
74
|
+
const wfpMode = options.hpsm
|
|
75
|
+
? ScannerTypes_1.WinnowingMode.FULL_WINNOWING_HPSM
|
|
76
|
+
: ScannerTypes_1.WinnowingMode.FULL_WINNOWING;
|
|
74
77
|
scannerInput.winnowing = { mode: wfpMode };
|
|
75
78
|
if (!options.wfp) {
|
|
76
79
|
if (pathIsFolder) {
|
|
@@ -78,20 +81,20 @@ async function scanHandler(rootPath, options) {
|
|
|
78
81
|
const tree = new Tree_1.Tree(rootPath);
|
|
79
82
|
tree.build();
|
|
80
83
|
if (options.extract) {
|
|
81
|
-
const archives = tree.getFileList(new DecompressionFilter_1.DecompressionFilter(
|
|
82
|
-
console.error(
|
|
84
|
+
const archives = tree.getFileList(new DecompressionFilter_1.DecompressionFilter(''));
|
|
85
|
+
console.error('Searching archives files...');
|
|
83
86
|
if (archives.length) {
|
|
84
|
-
console.error(
|
|
87
|
+
console.error('Extracting archives...');
|
|
85
88
|
const decompressionManager = new DecompressionManager_1.DecompressionManager(options.extractDeep, options.extractSuffix, options.extractOverwrite);
|
|
86
89
|
await decompressionManager.decompress(archives);
|
|
87
|
-
console.error(
|
|
90
|
+
console.error('Reindexing files...');
|
|
88
91
|
tree.build();
|
|
89
92
|
}
|
|
90
93
|
else
|
|
91
|
-
console.error(
|
|
94
|
+
console.error('No archives found.');
|
|
92
95
|
}
|
|
93
|
-
scannerInput.fileList = tree.getFileList(new ScanFilter_1.ScanFilter(
|
|
94
|
-
dependencyInput = tree.getFileList(new DependencyFilter_1.DependencyFilter(
|
|
96
|
+
scannerInput.fileList = tree.getFileList(new ScanFilter_1.ScanFilter(''));
|
|
97
|
+
dependencyInput = tree.getFileList(new DependencyFilter_1.DependencyFilter(''));
|
|
95
98
|
}
|
|
96
99
|
else {
|
|
97
100
|
scannerInput.fileList = [rootPath];
|
|
@@ -103,13 +106,17 @@ async function scanHandler(rootPath, options) {
|
|
|
103
106
|
scannerInput.fileList.length = [...winnowing.matchAll(/file=/g)].length;
|
|
104
107
|
}
|
|
105
108
|
if (!options.verbose) {
|
|
106
|
-
const optBar1 = {
|
|
109
|
+
const optBar1 = {
|
|
110
|
+
format: 'Scan Progress: [{bar}] {percentage}% | Scanned {value} files of {total}',
|
|
111
|
+
};
|
|
107
112
|
const bar1 = new cli_progress_1.default.SingleBar(optBar1, cli_progress_1.default.Presets.shades_classic);
|
|
108
113
|
bar1.start(scannerInput.fileList.length, 0);
|
|
109
114
|
scanner.on(ScannerTypes_1.ScannerEvents.DISPATCHER_NEW_DATA, (dispResp) => {
|
|
110
115
|
bar1.increment(dispResp.getFilesScanned().length);
|
|
111
116
|
});
|
|
112
|
-
scanner.on(ScannerTypes_1.ScannerEvents.SCAN_DONE, async (resultPath) => {
|
|
117
|
+
scanner.on(ScannerTypes_1.ScannerEvents.SCAN_DONE, async (resultPath) => {
|
|
118
|
+
bar1.stop();
|
|
119
|
+
});
|
|
113
120
|
}
|
|
114
121
|
else {
|
|
115
122
|
scanner.on(ScannerTypes_1.ScannerEvents.SCANNER_LOG, (logText) => console.error(logText));
|
|
@@ -125,17 +132,21 @@ async function scanHandler(rootPath, options) {
|
|
|
125
132
|
}
|
|
126
133
|
//Launch parallel scanners
|
|
127
134
|
const pScanner = scanner.scan([scannerInput]);
|
|
128
|
-
const [scannerResultPath, depResults] = await Promise.all([
|
|
135
|
+
const [scannerResultPath, depResults] = await Promise.all([
|
|
136
|
+
pScanner,
|
|
137
|
+
pDependencyScanner,
|
|
138
|
+
]);
|
|
129
139
|
const scannerResults = JSON.parse(await fs_1.default.promises.readFile(scannerResultPath, 'utf-8'));
|
|
130
140
|
//TODO Unify results.json and dependency.json. What happens with result.json that includes dependencies?
|
|
131
141
|
const scannersResults = Object.assign({ scanner: scannerResults }, (options.dependencies && { dependencies: depResults }));
|
|
132
142
|
let scannerResultsString = JSON.stringify(scannersResults, null, 2);
|
|
133
|
-
if (options.format && options.format.toLowerCase() ===
|
|
143
|
+
if (options.format && options.format.toLowerCase() === 'html') {
|
|
134
144
|
const dataProviderManager = new DataProviderManager_1.DataProviderManager();
|
|
135
145
|
dataProviderManager.addDataProvider(new ComponentDataProvider_1.ComponentDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
136
146
|
dataProviderManager.addDataProvider(new DependencyDataProvider_1.DependencyDataProvider(scannersResults.dependencies));
|
|
137
147
|
dataProviderManager.addDataProvider(new LicenseDataProvider_1.LicenseDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
138
148
|
dataProviderManager.addDataProvider(new SummaryDataProvider_1.SummaryDataProvider(projectName, new Date(), scannersResults.scanner));
|
|
149
|
+
dataProviderManager.addDataProvider(new LicenseObligationDataProvider_1.LicenseObligationDataProvider(scannersResults.scanner, scannersResults.dependencies));
|
|
139
150
|
const report = new Report_1.Report(dataProviderManager);
|
|
140
151
|
scannerResultsString = await report.getHTML();
|
|
141
152
|
}
|
|
@@ -145,4 +156,4 @@ async function scanHandler(rootPath, options) {
|
|
|
145
156
|
console.log(scannerResultsString);
|
|
146
157
|
}
|
|
147
158
|
exports.scanHandler = scanHandler;
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvc2Nhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFvQjtBQUVwQix1REFBb0Q7QUFDcEQsaUVBTXdDO0FBQ3hDLDZEQUEwRDtBQUMxRCw4Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBRXZDLHVDQUE2RDtBQUU3RCxzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFLGtFQUErRDtBQUMvRCw4RUFBMkU7QUFDM0Usb0RBQWlEO0FBQ2pELHdGQUFxRjtBQUNyRiwwR0FBdUc7QUFDdkcsNEdBQXlHO0FBQ3pHLHNHQUFtRztBQUNuRyxzR0FBbUc7QUFDbkcsb0ZBQWlGO0FBQ2pGLG9GQUFpRjtBQUNqRixnREFBd0I7QUFDeEIsMEhBQXVIO0FBRWhILEtBQUssVUFBVSxXQUFXLENBQy9CLFFBQWdCLEVBQ2hCLE9BQVk7SUFFWixRQUFRLEdBQUcsY0FBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUVsQyxNQUFNLFlBQVksR0FBRyxNQUFNLGtCQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsTUFBTSxXQUFXLEdBQUcsZ0NBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFckQsK0NBQStDO0lBQy9DLElBQUksZUFBZSxHQUFrQixFQUFFLENBQUM7SUFDeEMsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLDJDQUFvQixFQUFFLENBQUM7SUFDeEQsSUFBSSxPQUFPLENBQUMsT0FBTztRQUFFLG9CQUFvQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO0lBQ3BFLElBQUksT0FBTyxDQUFDLEtBQUs7UUFBRSxvQkFBb0IsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM5RCxJQUFJLE9BQU8sQ0FBQyxHQUFHO1FBQUUsb0JBQW9CLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7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
|
package/build/main/index.d.ts
CHANGED
|
@@ -8,13 +8,17 @@ export * from './sdk/Dependencies/DependencyTypes';
|
|
|
8
8
|
export * from './sdk/Dependencies/DependencyScannerCfg';
|
|
9
9
|
export * from './sdk/Dependencies/DependencyScanner';
|
|
10
10
|
export * from './sdk/Dependencies/LocalDependency/LocalDependency';
|
|
11
|
-
export * from './sdk/
|
|
12
|
-
export * from './sdk/DataLayer/
|
|
13
|
-
export * from './sdk/DataLayer/
|
|
14
|
-
export * from './sdk/DataLayer/DataProviders/
|
|
15
|
-
export * from './sdk/DataLayer/DataProviders/
|
|
16
|
-
export * from './sdk/DataLayer/DataProviders/
|
|
11
|
+
export * from './sdk/Report/Report';
|
|
12
|
+
export * from './sdk/Report/DataLayer/DataLayerTypes';
|
|
13
|
+
export * from './sdk/Report/DataLayer/DataProviderManager';
|
|
14
|
+
export * from './sdk/Report/DataLayer/DataProviders/LicenseDataProvider';
|
|
15
|
+
export * from './sdk/Report/DataLayer/DataProviders/SummaryDataProvider';
|
|
16
|
+
export * from './sdk/Report/DataLayer/DataProviders/DependencyDataProvider';
|
|
17
|
+
export * from './sdk/Report/DataLayer/DataProviders/ComponentDataProvider';
|
|
17
18
|
export * from './sdk/Decompress/DecompressionManager';
|
|
18
19
|
export * from './sdk/FileCount/FileCount';
|
|
19
20
|
export { IDirSummary } from './sdk/FileCount/Interfaces';
|
|
21
|
+
export * from './sdk/Services/Grpc/CryptographyService';
|
|
22
|
+
export * from './sdk/Services/Grpc/DependencyService';
|
|
23
|
+
export { PurlRequest, EchoRequest } from './sdk/Services/Grpc/BaseService';
|
|
20
24
|
export { logger } from './sdk/Logger';
|
package/build/main/index.js
CHANGED
|
@@ -22,17 +22,20 @@ __exportStar(require("./sdk/Dependencies/DependencyTypes"), exports);
|
|
|
22
22
|
__exportStar(require("./sdk/Dependencies/DependencyScannerCfg"), exports);
|
|
23
23
|
__exportStar(require("./sdk/Dependencies/DependencyScanner"), exports);
|
|
24
24
|
__exportStar(require("./sdk/Dependencies/LocalDependency/LocalDependency"), exports);
|
|
25
|
-
// ***
|
|
26
|
-
__exportStar(require("./sdk/
|
|
27
|
-
__exportStar(require("./sdk/DataLayer/
|
|
28
|
-
__exportStar(require("./sdk/DataLayer/
|
|
29
|
-
__exportStar(require("./sdk/DataLayer/DataProviders/
|
|
30
|
-
__exportStar(require("./sdk/DataLayer/DataProviders/
|
|
31
|
-
__exportStar(require("./sdk/DataLayer/DataProviders/
|
|
25
|
+
// *** Report export *** //
|
|
26
|
+
__exportStar(require("./sdk/Report/Report"), exports);
|
|
27
|
+
__exportStar(require("./sdk/Report/DataLayer/DataLayerTypes"), exports);
|
|
28
|
+
__exportStar(require("./sdk/Report/DataLayer/DataProviderManager"), exports);
|
|
29
|
+
__exportStar(require("./sdk/Report/DataLayer/DataProviders/LicenseDataProvider"), exports);
|
|
30
|
+
__exportStar(require("./sdk/Report/DataLayer/DataProviders/SummaryDataProvider"), exports);
|
|
31
|
+
__exportStar(require("./sdk/Report/DataLayer/DataProviders/DependencyDataProvider"), exports);
|
|
32
|
+
__exportStar(require("./sdk/Report/DataLayer/DataProviders/ComponentDataProvider"), exports);
|
|
32
33
|
// *** Unzip *** //
|
|
33
34
|
__exportStar(require("./sdk/Decompress/DecompressionManager"), exports);
|
|
34
35
|
// *** FileCount *** //
|
|
35
36
|
__exportStar(require("./sdk/FileCount/FileCount"), exports);
|
|
37
|
+
__exportStar(require("./sdk/Services/Grpc/CryptographyService"), exports);
|
|
38
|
+
__exportStar(require("./sdk/Services/Grpc/DependencyService"), exports);
|
|
36
39
|
var Logger_1 = require("./sdk/Logger");
|
|
37
40
|
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return Logger_1.logger; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWtDO0FBQ2xDLHdEQUFzQztBQUN0Qyw2REFBMkM7QUFDM0MsMkRBQXlDO0FBQ3pDLHdGQUFzRTtBQUV0RSxpQ0FBaUM7QUFDakMsNERBQTBDO0FBRzFDLHdDQUF3QztBQUN4QyxxRUFBbUQ7QUFDbkQsMEVBQXdEO0FBQ3hELHVFQUFxRDtBQUNyRCxxRkFBbUU7QUFFbkUsMkJBQTJCO0FBQzNCLHNEQUFvQztBQUNwQyx3RUFBc0Q7QUFDdEQsNkVBQTJEO0FBQzNELDJGQUF5RTtBQUN6RSwyRkFBeUU7QUFDekUsOEZBQTRFO0FBQzVFLDZGQUEyRTtBQUUzRSxtQkFBbUI7QUFDbkIsd0VBQXNEO0FBRXRELHVCQUF1QjtBQUN2Qiw0REFBMEM7QUFHMUMsMEVBQXdEO0FBQ3hELHdFQUFzRDtBQUd0RCx1Q0FBc0M7QUFBN0IsZ0dBQUEsTUFBTSxPQUFBIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2
|
+
exports.SCANOSS_GRPC_ENDPOINT = exports.SCANOSS_GRPC_SERVICES_PORT = exports.SCANOSS_GRPC_SERVICES_HOST = exports.HEADER_NAME_API_TOKEN = void 0;
|
|
3
|
+
exports.HEADER_NAME_API_TOKEN = 'x-api-key';
|
|
4
|
+
exports.SCANOSS_GRPC_SERVICES_HOST = 'scanoss.com';
|
|
5
|
+
exports.SCANOSS_GRPC_SERVICES_PORT = '443';
|
|
6
|
+
exports.SCANOSS_GRPC_ENDPOINT = exports.SCANOSS_GRPC_SERVICES_HOST + ':' + exports.SCANOSS_GRPC_SERVICES_PORT;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Nkay9Db25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBYSxRQUFBLHFCQUFxQixHQUFHLFdBQVcsQ0FBQztBQUNwQyxRQUFBLDBCQUEwQixHQUFHLGFBQWEsQ0FBQztBQUMzQyxRQUFBLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUVuQyxRQUFBLHFCQUFxQixHQUNoQyxrQ0FBMEIsR0FBRyxHQUFHLEdBQUcsa0NBQTBCLENBQUMifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { DependencyScannerCfg } from
|
|
2
|
-
import { IDependencyResponse } from
|
|
1
|
+
import { DependencyScannerCfg } from './DependencyScannerCfg';
|
|
2
|
+
import { IDependencyResponse } from './DependencyTypes';
|
|
3
3
|
export declare class DependencyScanner {
|
|
4
4
|
private localDependency;
|
|
5
5
|
private grpcDependencyService;
|