scanoss 0.25.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/build/main/cli/commands/components.js +2 -2
- package/build/main/cli/commands/dep.js +2 -2
- package/build/main/cli/commands/scan.js +10 -3
- package/build/main/index.d.ts +1 -1
- package/build/main/index.js +2 -2
- package/build/main/sdk/BaseConfig.d.ts +9 -1
- package/build/main/sdk/BaseConfig.js +36 -2
- package/build/main/sdk/Clients/Components/ComponentsHttpClient.js +2 -2
- package/build/main/sdk/Clients/Cryptography/CryptographyGRPCClient.js +2 -2
- package/build/main/sdk/Clients/Cryptography/CryptographyHttpClient.js +2 -2
- package/build/main/sdk/Clients/Dependency/DependencyHttpClient.js +2 -2
- package/build/main/sdk/Clients/Grpc/BaseGRPCClient.js +2 -2
- package/build/main/sdk/Clients/Vulnerability/VulnerabilityHttpClient.js +2 -2
- package/build/main/sdk/Clients/http/HttpClient.d.ts +4 -4
- package/build/main/sdk/Clients/http/HttpClient.js +1 -1
- package/build/main/sdk/Components/ComponentsScanner.js +2 -2
- package/build/main/sdk/Cryptography/CryptoCfg.d.ts +0 -9
- package/build/main/sdk/Cryptography/CryptoCfg.js +1 -21
- package/build/main/sdk/Dependencies/DependencyScanner.js +2 -2
- package/build/main/sdk/Dependencies/DependencyScannerCfg.d.ts +0 -9
- package/build/main/sdk/Dependencies/DependencyScannerCfg.js +1 -21
- package/build/main/sdk/{Logger.d.ts → Logger/Logger.d.ts} +4 -3
- package/build/main/sdk/Logger/Logger.js +54 -0
- package/build/main/sdk/Logger/ScanossLogger.d.ts +9 -0
- package/build/main/sdk/Logger/ScanossLogger.js +33 -0
- package/build/main/sdk/Logger/Transport.d.ts +6 -0
- package/build/main/sdk/Logger/Transport.js +3 -0
- package/build/main/sdk/Vulnerability/VulnerabilityCfg.d.ts +0 -9
- package/build/main/sdk/Vulnerability/VulnerabilityCfg.js +1 -21
- package/build/main/sdk/Vulnerability/VulnerabilityScanner.js +2 -2
- package/build/main/sdk/scanner/Dispatcher/Dispatcher.js +3 -2
- package/build/main/sdk/scanner/ScannerCfg.d.ts +0 -9
- package/build/main/sdk/scanner/ScannerCfg.js +1 -21
- package/build/main/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +123 -12
- package/build/main/tsconfig.tsbuildinfo +1 -1
- package/build/module/cli/commands/components.js +2 -2
- package/build/module/cli/commands/dep.js +2 -2
- package/build/module/cli/commands/scan.js +10 -3
- package/build/module/index.d.ts +1 -1
- package/build/module/index.js +2 -2
- package/build/module/sdk/BaseConfig.d.ts +9 -1
- package/build/module/sdk/BaseConfig.js +36 -2
- package/build/module/sdk/Clients/Components/ComponentsHttpClient.js +2 -2
- package/build/module/sdk/Clients/Cryptography/CryptographyGRPCClient.js +2 -2
- package/build/module/sdk/Clients/Cryptography/CryptographyHttpClient.js +2 -2
- package/build/module/sdk/Clients/Dependency/DependencyHttpClient.js +2 -2
- package/build/module/sdk/Clients/Grpc/BaseGRPCClient.js +2 -2
- package/build/module/sdk/Clients/Vulnerability/VulnerabilityHttpClient.js +2 -2
- package/build/module/sdk/Clients/http/HttpClient.d.ts +4 -4
- package/build/module/sdk/Clients/http/HttpClient.js +1 -1
- package/build/module/sdk/Components/ComponentsScanner.js +2 -2
- package/build/module/sdk/Cryptography/CryptoCfg.d.ts +0 -9
- package/build/module/sdk/Cryptography/CryptoCfg.js +1 -21
- package/build/module/sdk/Dependencies/DependencyScanner.js +2 -2
- package/build/module/sdk/Dependencies/DependencyScannerCfg.d.ts +0 -9
- package/build/module/sdk/Dependencies/DependencyScannerCfg.js +1 -21
- package/build/module/sdk/{Logger.d.ts → Logger/Logger.d.ts} +4 -3
- package/build/module/sdk/Logger/Logger.js +52 -0
- package/build/module/sdk/Logger/ScanossLogger.d.ts +9 -0
- package/build/module/sdk/Logger/ScanossLogger.js +27 -0
- package/build/module/sdk/Logger/Transport.d.ts +6 -0
- package/build/module/sdk/Logger/Transport.js +2 -0
- package/build/module/sdk/Vulnerability/VulnerabilityCfg.d.ts +0 -9
- package/build/module/sdk/Vulnerability/VulnerabilityCfg.js +1 -21
- package/build/module/sdk/Vulnerability/VulnerabilityScanner.js +2 -2
- package/build/module/sdk/scanner/Dispatcher/Dispatcher.js +3 -2
- package/build/module/sdk/scanner/ScannerCfg.d.ts +0 -9
- package/build/module/sdk/scanner/ScannerCfg.js +1 -21
- package/build/module/sdk/scanner/WfpProvider/WfpCalculator/WfpCalculator.js +123 -12
- package/build/module/tsconfig.module.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/build/main/sdk/Logger.js +0 -53
- package/build/module/sdk/Logger.js +0 -51
|
@@ -22,26 +22,6 @@ export class DependencyScannerCfg extends BaseConfig {
|
|
|
22
22
|
set API_KEY(value) {
|
|
23
23
|
this._API_KEY = value;
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Resolves the appropriate scanner URL based on API key presence and current URL.
|
|
27
|
-
* If an API key is provided and the current URL is the default, returns the premium
|
|
28
|
-
* scanner URL, otherwise appends '/scan/direct' to the current URL.
|
|
29
|
-
* @param apiKey - The API key (if any)
|
|
30
|
-
* @param currentUrl - The current API URL
|
|
31
|
-
* @returns The resolved scanner URL
|
|
32
|
-
*/
|
|
33
|
-
resolveApiUrl(apiKey, currentUrl) {
|
|
34
|
-
if (!apiKey) {
|
|
35
|
-
if (currentUrl !== BaseConfig.getDefaultURL()) {
|
|
36
|
-
return currentUrl;
|
|
37
|
-
}
|
|
38
|
-
return currentUrl;
|
|
39
|
-
}
|
|
40
|
-
if (currentUrl !== BaseConfig.getDefaultURL() && currentUrl !== BaseConfig.getPremiumURL()) {
|
|
41
|
-
return currentUrl;
|
|
42
|
-
}
|
|
43
|
-
return BaseConfig.getPremiumURL();
|
|
44
|
-
}
|
|
45
25
|
get API_URL() {
|
|
46
26
|
return this.resolveApiUrl(this.API_KEY, super.API_URL);
|
|
47
27
|
}
|
|
@@ -49,4 +29,4 @@ export class DependencyScannerCfg extends BaseConfig {
|
|
|
49
29
|
super.API_URL = url;
|
|
50
30
|
}
|
|
51
31
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXJDZmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL0RlcGVuZGVuY2llcy9EZXBlbmRlbmN5U2Nhbm5lckNmZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxVQUFVO0lBRWxELFFBQVEsR0FBVyxFQUFFLENBQUM7SUFFdEIsbUJBQW1CLEdBQUcsMEJBQTBCLENBQUM7SUFDakQsWUFBWSxNQUE2QjtRQUN2QyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFHLE1BQU0sRUFBQyxDQUFDO1lBQ1QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztZQUM3RyxJQUFJLENBQUMsT0FBTyxHQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGtCQUFrQixDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVc7UUFDckIsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdEIsQ0FBQztDQUVGIn0=
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { Transport } from "./Transport";
|
|
1
2
|
export declare class Logger {
|
|
2
3
|
private level;
|
|
3
4
|
private transport;
|
|
4
|
-
constructor();
|
|
5
|
-
setTransport(transport:
|
|
5
|
+
constructor(level?: Logger.Level, transport?: Transport);
|
|
6
|
+
setTransport(transport: Transport): void;
|
|
6
7
|
setLevel(level?: Logger.Level): void;
|
|
7
8
|
log(msg: string, level?: Logger.Level): void;
|
|
8
9
|
debug(msg: string): void;
|
|
@@ -11,7 +12,7 @@ export declare class Logger {
|
|
|
11
12
|
info(msg: string): void;
|
|
12
13
|
}
|
|
13
14
|
export declare namespace Logger {
|
|
14
|
-
type TransportType = (msg: string) => void;
|
|
15
|
+
type TransportType = (msg: string, level: Level) => void;
|
|
15
16
|
enum Level {
|
|
16
17
|
error = 0,
|
|
17
18
|
warn = 1,
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { ScanossLogger } from "./ScanossLogger";
|
|
2
|
+
export class Logger {
|
|
3
|
+
level;
|
|
4
|
+
transport;
|
|
5
|
+
constructor(level = Logger.Level.info, transport = new ScanossLogger()) {
|
|
6
|
+
this.setLevel(level);
|
|
7
|
+
this.setTransport(transport);
|
|
8
|
+
}
|
|
9
|
+
setTransport(transport) {
|
|
10
|
+
this.transport = transport;
|
|
11
|
+
}
|
|
12
|
+
setLevel(level = Logger.Level.info) {
|
|
13
|
+
this.level = level;
|
|
14
|
+
}
|
|
15
|
+
log(msg, level = Logger.Level.info) {
|
|
16
|
+
if (this.level <= level) {
|
|
17
|
+
this.transport.log(msg);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
debug(msg) {
|
|
21
|
+
if (Logger.Level.debug <= this.level) {
|
|
22
|
+
this.transport.log(msg);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
error(msg) {
|
|
26
|
+
if (Logger.Level.error <= this.level) {
|
|
27
|
+
this.transport.error(msg);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
warn(msg) {
|
|
31
|
+
if (Logger.Level.warn <= this.level) {
|
|
32
|
+
this.transport.warn(msg);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
info(msg) {
|
|
36
|
+
if (Logger.Level.info <= this.level) {
|
|
37
|
+
this.transport.info(msg);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
(function (Logger) {
|
|
42
|
+
let Level;
|
|
43
|
+
(function (Level) {
|
|
44
|
+
Level[Level["error"] = 0] = "error";
|
|
45
|
+
Level[Level["warn"] = 1] = "warn";
|
|
46
|
+
Level[Level["info"] = 2] = "info";
|
|
47
|
+
Level[Level["verbose"] = 3] = "verbose";
|
|
48
|
+
Level[Level["debug"] = 4] = "debug";
|
|
49
|
+
})(Level = Logger.Level || (Logger.Level = {}));
|
|
50
|
+
})(Logger || (Logger = {}));
|
|
51
|
+
export const logger = new Logger();
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Nkay9Mb2dnZXIvTG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCxNQUFNLE9BQU8sTUFBTTtJQUNULEtBQUssQ0FBZTtJQUNwQixTQUFTLENBQVk7SUFFN0IsWUFBWSxRQUFzQixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxZQUF1QixJQUFJLGFBQWEsRUFBRTtRQUM3RixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFvQjtRQUN0QyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVNLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTtRQUMvQyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsR0FBVztRQUN0QixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFXO1FBQ3RCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU0sSUFBSSxDQUFDLEdBQVc7UUFDckIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTSxJQUFJLENBQUMsR0FBVztRQUNyQixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBRUQsV0FBaUIsTUFBTTtJQUdyQixJQUFZLEtBTVg7SUFORCxXQUFZLEtBQUs7UUFDZixtQ0FBSyxDQUFBO1FBQ0wsaUNBQUksQ0FBQTtRQUNKLGlDQUFJLENBQUE7UUFDSix1Q0FBTyxDQUFBO1FBQ1AsbUNBQUssQ0FBQTtJQUNQLENBQUMsRUFOVyxLQUFLLEdBQUwsWUFBSyxLQUFMLFlBQUssUUFNaEI7QUFDSCxDQUFDLEVBVmdCLE1BQU0sS0FBTixNQUFNLFFBVXRCO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUMifQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class ScanossLogger {
|
|
2
|
+
colors = {
|
|
3
|
+
error: '\x1b[31m', // Red
|
|
4
|
+
warn: '\x1b[33m', // Yellow
|
|
5
|
+
info: '\x1b[36m', // Cyan
|
|
6
|
+
log: '\x1b[32m', // Green
|
|
7
|
+
debug: '\x1b[90m', // Gray
|
|
8
|
+
reset: '\x1b[0m' // Reset
|
|
9
|
+
};
|
|
10
|
+
timeStamp() {
|
|
11
|
+
const date = new Date();
|
|
12
|
+
return `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`;
|
|
13
|
+
}
|
|
14
|
+
error(msg) {
|
|
15
|
+
console.error(`${this.colors.error} ${this.timeStamp()} > [ ERROR ]:${this.colors.reset} ${msg}`);
|
|
16
|
+
}
|
|
17
|
+
info(msg) {
|
|
18
|
+
console.info(`${this.colors.info} ${this.timeStamp()} > [ INFO ]:${this.colors.reset} ${msg}`);
|
|
19
|
+
}
|
|
20
|
+
log(msg) {
|
|
21
|
+
console.info(`${this.colors.info} ${this.timeStamp()} > [ INFO ]:${this.colors.reset} ${msg}`);
|
|
22
|
+
}
|
|
23
|
+
warn(msg) {
|
|
24
|
+
console.warn(`${this.colors.warn} ${this.timeStamp()} > [ WARN ]:${this.colors.reset} ${msg}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nhbm9zc0xvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvTG9nZ2VyL1NjYW5vc3NMb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFDaEIsTUFBTSxHQUFHO1FBQ2YsS0FBSyxFQUFFLFVBQVUsRUFBSSxNQUFNO1FBQzNCLElBQUksRUFBRSxVQUFVLEVBQUssU0FBUztRQUM5QixJQUFJLEVBQUUsVUFBVSxFQUFLLE9BQU87UUFDNUIsR0FBRyxFQUFFLFVBQVUsRUFBTSxRQUFRO1FBQzdCLEtBQUssRUFBRSxVQUFVLEVBQUksT0FBTztRQUM1QixLQUFLLEVBQUUsU0FBUyxDQUFLLFFBQVE7S0FDOUIsQ0FBQztJQUVNLFNBQVM7UUFDZixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3JFLENBQUM7SUFHTSxLQUFLLENBQUMsR0FBVztRQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0lBRU0sSUFBSSxDQUFDLEdBQVc7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFTSxHQUFHLENBQUMsR0FBVztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVNLElBQUksQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0NBQ0YifQ==
|
|
@@ -15,15 +15,6 @@ export declare class VulnerabilityCfg extends BaseConfig {
|
|
|
15
15
|
*/
|
|
16
16
|
API_KEY: string;
|
|
17
17
|
constructor(config?: VulnerabilityCfg);
|
|
18
|
-
/**
|
|
19
|
-
* Resolves the appropriate API URL based on API key presence and current URL. See: src/sdk/BaseConfig.ts
|
|
20
|
-
* If an API key is provided and the current URL is the default, returns the premium
|
|
21
|
-
* URL, otherwise returns the current URL.
|
|
22
|
-
* @param apiKey - The API key (if any)
|
|
23
|
-
* @param currentUrl - The current API URL
|
|
24
|
-
* @returns The resolved API URL
|
|
25
|
-
*/
|
|
26
|
-
protected resolveApiUrl(apiKey: string, currentUrl: string): string;
|
|
27
18
|
get API_URL(): string;
|
|
28
19
|
set API_URL(url: string);
|
|
29
20
|
}
|
|
@@ -19,26 +19,6 @@ export class VulnerabilityCfg extends BaseConfig {
|
|
|
19
19
|
this.REQUEST_CHUNK_SIZE = config?.REQUEST_CHUNK_SIZE ?? this.REQUEST_CHUNK_SIZE;
|
|
20
20
|
this.API_KEY = config?.API_KEY ?? this.API_KEY;
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Resolves the appropriate API URL based on API key presence and current URL. See: src/sdk/BaseConfig.ts
|
|
24
|
-
* If an API key is provided and the current URL is the default, returns the premium
|
|
25
|
-
* URL, otherwise returns the current URL.
|
|
26
|
-
* @param apiKey - The API key (if any)
|
|
27
|
-
* @param currentUrl - The current API URL
|
|
28
|
-
* @returns The resolved API URL
|
|
29
|
-
*/
|
|
30
|
-
resolveApiUrl(apiKey, currentUrl) {
|
|
31
|
-
if (!apiKey) {
|
|
32
|
-
if (currentUrl !== BaseConfig.getDefaultURL()) {
|
|
33
|
-
return currentUrl;
|
|
34
|
-
}
|
|
35
|
-
return currentUrl;
|
|
36
|
-
}
|
|
37
|
-
if (currentUrl !== BaseConfig.getDefaultURL() && currentUrl !== BaseConfig.getPremiumURL()) {
|
|
38
|
-
return currentUrl;
|
|
39
|
-
}
|
|
40
|
-
return BaseConfig.getPremiumURL();
|
|
41
|
-
}
|
|
42
22
|
get API_URL() {
|
|
43
23
|
return this.resolveApiUrl(this.API_KEY, super.API_URL);
|
|
44
24
|
}
|
|
@@ -46,4 +26,4 @@ export class VulnerabilityCfg extends BaseConfig {
|
|
|
46
26
|
super.API_URL = url;
|
|
47
27
|
}
|
|
48
28
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVnVsbmVyYWJpbGl0eUNmZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvVnVsbmVyYWJpbGl0eS9WdWxuZXJhYmlsaXR5Q2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0M7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFVBQVU7SUFFOUM7OztPQUdHO0lBQ0gsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBRXhCOzs7T0FHRztJQUNILE9BQU8sR0FBRyxFQUFFLENBQUM7SUFFYixZQUFZLE1BQXlCO1FBQ25DLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLEVBQUUsa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ2hGLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VulnerabilityCfg } from "./VulnerabilityCfg";
|
|
2
2
|
import { VulnerabilityHttpClient } from "../Clients/Vulnerability/VulnerabilityHttpClient";
|
|
3
|
-
import { logger } from "../Logger";
|
|
3
|
+
import { logger } from "../Logger/Logger";
|
|
4
4
|
import { chunkRequest } from "../Clients/helper/clientHelper";
|
|
5
5
|
export class VulnerabilityScanner {
|
|
6
6
|
config;
|
|
@@ -92,4 +92,4 @@ export class VulnerabilityScanner {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVnVsbmVyYWJpbGl0eVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2RrL1Z1bG5lcmFiaWxpdHkvVnVsbmVyYWJpbGl0eVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDM0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVM5RCxNQUFNLE9BQU8sb0JBQW9CO0lBQ3ZCLE1BQU0sQ0FBbUI7SUFFekIsbUJBQW1CLENBQTBCO0lBRXJELFlBQVksTUFBeUI7UUFDbkMsSUFBSSxNQUFNO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7O1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFpQjtZQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDbEMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztZQUNwQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO1lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDNUIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0I7WUFDbEQsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLHlFQUF5RTtTQUN6RyxDQUFDO1FBQ0YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksdUJBQXVCLENBQUMsU0FBUyxDQUFDLENB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
|
|
@@ -119,7 +119,8 @@ export class Dispatcher extends EventEmitter {
|
|
|
119
119
|
let plain_response;
|
|
120
120
|
try {
|
|
121
121
|
this.emit(ScannerEvents.DISPATCHER_WFP_SENDED);
|
|
122
|
-
const
|
|
122
|
+
const scanURL = new URL('/scan/direct', this.scannerCfg.API_URL);
|
|
123
|
+
const response = await fetch(scanURL.href, {
|
|
123
124
|
agent: this.proxyAgent,
|
|
124
125
|
method: 'post',
|
|
125
126
|
body: item.getForm(),
|
|
@@ -154,4 +155,4 @@ export class Dispatcher extends EventEmitter {
|
|
|
154
155
|
}
|
|
155
156
|
}
|
|
156
157
|
}
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9EaXNwYXRjaGVyL0Rpc3BhdGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLHlDQUF5QztBQUN6QyxPQUFPLFlBQVksTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFtQixNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLE1BQU0sTUFBTSxTQUFTLENBQUM7QUFDN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHekMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFFbEMsSUFBSyxNQUlKO0FBSkQsV0FBSyxNQUFNO0lBQ1QsdUJBQWEsQ0FBQTtJQUNiLHlDQUErQixDQUFBO0lBQy9CLDZCQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFKSSxNQUFNLEtBQU4sTUFBTSxRQUlWO0FBRUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxZQUFZO0lBQ2xDLFVBQVUsQ0FBYTtJQUV2QixNQUFNLENBQUM7SUFFUCxxQkFBcUIsQ0FBMEI7SUFFL0Msb0JBQW9CLENBQVU7SUFFOUIsb0JBQW9CLENBQVU7SUFFOUIsVUFBVSxDQUFjO0lBRWhDLFlBQVksVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFD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
|
|
@@ -14,15 +14,6 @@ export declare class ScannerCfg extends BaseConfig {
|
|
|
14
14
|
DISPATCHER_QUEUE_SIZE_MAX_LIMIT: number;
|
|
15
15
|
DISPATCHER_QUEUE_SIZE_MIN_LIMIT: number;
|
|
16
16
|
constructor();
|
|
17
|
-
/**
|
|
18
|
-
* Resolves the appropriate scanner URL based on API key presence and current URL.
|
|
19
|
-
* If an API key is provided and the current URL is the default, returns the premium
|
|
20
|
-
* scanner URL, otherwise appends '/scan/direct' to the current URL.
|
|
21
|
-
* @param apiKey - The API key (if any)
|
|
22
|
-
* @param currentUrl - The current API URL
|
|
23
|
-
* @returns The resolved scanner URL
|
|
24
|
-
*/
|
|
25
|
-
protected resolveApiUrl(apiKey: string, currentUrl: string): string;
|
|
26
17
|
get API_URL(): string;
|
|
27
18
|
set API_URL(url: string);
|
|
28
19
|
}
|
|
@@ -23,26 +23,6 @@ export class ScannerCfg extends BaseConfig {
|
|
|
23
23
|
constructor() {
|
|
24
24
|
super();
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Resolves the appropriate scanner URL based on API key presence and current URL.
|
|
28
|
-
* If an API key is provided and the current URL is the default, returns the premium
|
|
29
|
-
* scanner URL, otherwise appends '/scan/direct' to the current URL.
|
|
30
|
-
* @param apiKey - The API key (if any)
|
|
31
|
-
* @param currentUrl - The current API URL
|
|
32
|
-
* @returns The resolved scanner URL
|
|
33
|
-
*/
|
|
34
|
-
resolveApiUrl(apiKey, currentUrl) {
|
|
35
|
-
if (!apiKey) {
|
|
36
|
-
if (currentUrl !== BaseConfig.getDefaultURL()) {
|
|
37
|
-
return currentUrl;
|
|
38
|
-
}
|
|
39
|
-
return currentUrl + "/scan/direct";
|
|
40
|
-
}
|
|
41
|
-
if (currentUrl !== BaseConfig.getDefaultURL() && currentUrl !== BaseConfig.getPremiumURL()) {
|
|
42
|
-
return currentUrl;
|
|
43
|
-
}
|
|
44
|
-
return BaseConfig.getPremiumURL() + "/scan/direct";
|
|
45
|
-
}
|
|
46
26
|
get API_URL() {
|
|
47
27
|
return this.resolveApiUrl(this.API_KEY, super.API_URL);
|
|
48
28
|
}
|
|
@@ -50,4 +30,4 @@ export class ScannerCfg extends BaseConfig {
|
|
|
50
30
|
super.API_URL = url;
|
|
51
31
|
}
|
|
52
32
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nhbm5lckNmZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9TY2FubmVyQ2ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxPQUFPLFVBQVcsU0FBUSxVQUFVO0lBQ3hDLDJEQUEyRDtJQUNwRCxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFFdEIsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUVwQix1QkFBdUI7SUFDaEIsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBRTdCLCtCQUErQjtJQUN4QixPQUFPLEdBQUcsTUFBTSxDQUFDO0lBRXhCLCtDQUErQztJQUN4QyxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRTlCLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFFeEIscUJBQXFCLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLDBEQUEwRDtJQUMxRCw4RUFBOEU7SUFDdkUsK0JBQStCLEdBQUcsRUFBRSxDQUFDO0lBRXJDLG1DQUFtQyxHQUFHLENBQUMsQ0FBQztJQUV4QyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7SUFFbkMsK0NBQStDO0lBQ3hDLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztJQUU5QiwrQkFBK0IsR0FBRyxJQUFJLENBQUM7SUFFdkMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO0lBRTlDO1FBQ0UsS0FBSyxFQUFFLENBQUM7SUFDVixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLENBQUM7Q0FDRiJ9
|
|
@@ -264,25 +264,24 @@ function calc_hpsm(content) {
|
|
|
264
264
|
* Create a wfp_hpsm package joining wfp (with md5 line) and a hpsm.
|
|
265
265
|
*
|
|
266
266
|
* Example:
|
|
267
|
-
* wfp = file=
|
|
268
|
-
*
|
|
267
|
+
* wfp = file=33d2b65d852100b7fc5e6dae95f07bde,118,/external/inc/crc32c.h
|
|
268
|
+
* fh2=91d5edea99e9cfcdeeb55e722d3aa67f
|
|
269
|
+
* 11=b19bdbfa
|
|
269
270
|
*
|
|
270
|
-
* hpsm = hpsm=
|
|
271
|
+
* hpsm = hpsm=5ac65706ff2d
|
|
271
272
|
*
|
|
272
|
-
* wfp_hpsm = file=
|
|
273
|
-
*
|
|
274
|
-
*
|
|
273
|
+
* wfp_hpsm = file=33d2b65d852100b7fc5e6dae95f07bde,118,/external/inc/crc32c.h
|
|
274
|
+
* fh2=91d5edea99e9cfcdeeb55e722d3aa67f
|
|
275
|
+
* hpsm=5ac65706ff2d
|
|
276
|
+
* 11=b19bdbfa
|
|
275
277
|
*
|
|
276
278
|
* @param {string} wfp Complete wfp string (with md5 line)
|
|
277
279
|
* @param {string} hpsm
|
|
278
280
|
* @returns {string}
|
|
279
281
|
*/
|
|
280
282
|
function join_wfp_hpsm(wfp, hpsm) {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
header += hpsm;
|
|
284
|
-
wfp = wfp.replace(/file=.*/, "")
|
|
285
|
-
return header + wfp;
|
|
283
|
+
// Replace fh2= line with fh2= line + newline + hpsm line
|
|
284
|
+
return wfp.replace(/(fh2=.*)/, '$1' + String.fromCharCode(10) + hpsm);
|
|
286
285
|
}
|
|
287
286
|
|
|
288
287
|
/**
|
|
@@ -305,9 +304,121 @@ function wfp_for_content(content, contentSource, maxSize) {
|
|
|
305
304
|
return wfp;
|
|
306
305
|
}
|
|
307
306
|
|
|
307
|
+
/**
|
|
308
|
+
* Detect line ending types in buffer contents.
|
|
309
|
+
*
|
|
310
|
+
* @param {Buffer} contents - File contents as buffer
|
|
311
|
+
* @returns {Object} Object with has_crlf, has_standalone_lf, has_standalone_cr flags
|
|
312
|
+
*/
|
|
313
|
+
function detect_line_endings(contents) {
|
|
314
|
+
let has_crlf = false;
|
|
315
|
+
let has_standalone_lf = false;
|
|
316
|
+
let has_standalone_cr = false;
|
|
317
|
+
|
|
318
|
+
for (let i = 0; i < contents.length; i++) {
|
|
319
|
+
const byte = contents[i];
|
|
320
|
+
|
|
321
|
+
// Check for CRLF (\\r\\n) // Windows (CRLF)
|
|
322
|
+
if (byte === 0x0D && i + 1 < contents.length && contents[i + 1] === 0x0A) {
|
|
323
|
+
has_crlf = true;
|
|
324
|
+
i++; // Skip the next byte since we've already checked it
|
|
325
|
+
}
|
|
326
|
+
// Check for standalone LF (\\n) // Unix (LF) Linux
|
|
327
|
+
else if (byte === 0x0A) {
|
|
328
|
+
has_standalone_lf = true;
|
|
329
|
+
}
|
|
330
|
+
// Check for standalone CR (\\r) // Unix (CR) old MacOS
|
|
331
|
+
else if (byte === 0x0D) {
|
|
332
|
+
has_standalone_cr = true;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
if(has_crlf && has_standalone_lf && has_standalone_cr) {
|
|
336
|
+
break;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return { has_crlf: has_crlf, has_standalone_lf: has_standalone_lf, has_standalone_cr: has_standalone_cr };
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Calculate hash for contents with opposite line endings.
|
|
345
|
+
* If the file is primarily Unix (LF), calculates Windows (CRLF) hash.
|
|
346
|
+
* If the file is primarily Windows (CRLF), calculates Unix (LF) hash.
|
|
347
|
+
*
|
|
348
|
+
* @param {Buffer} contents - File contents as buffer
|
|
349
|
+
* @returns {string|null} Hash with opposite line endings as hex string, or null if no line endings detected
|
|
350
|
+
*/
|
|
351
|
+
function calculate_opposite_line_ending_hash(contents) {
|
|
352
|
+
const line_endings = detect_line_endings(contents);
|
|
353
|
+
const has_crlf = line_endings.has_crlf;
|
|
354
|
+
const has_standalone_lf = line_endings.has_standalone_lf;
|
|
355
|
+
const has_standalone_cr = line_endings.has_standalone_cr;
|
|
356
|
+
|
|
357
|
+
if (!has_crlf && !has_standalone_lf && !has_standalone_cr) {
|
|
358
|
+
return null;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
// First pass: normalize all line endings to LF
|
|
362
|
+
let normalized = [];
|
|
363
|
+
// Optimization: if file only has LF (no CR bytes at all), skip normalization
|
|
364
|
+
if (has_standalone_lf && !has_crlf && !has_standalone_cr) {
|
|
365
|
+
// File is pure Unix (LF only) - already normalized
|
|
366
|
+
normalized = Array.from(contents);
|
|
367
|
+
} else {
|
|
368
|
+
// File has CR bytes (CRLF or standalone CR) - need to normalize
|
|
369
|
+
normalized = [];
|
|
370
|
+
for (let i = 0; i < contents.length; i++) {
|
|
371
|
+
const byte = contents[i];
|
|
372
|
+
if (byte === 0x0D) {
|
|
373
|
+
// CR
|
|
374
|
+
if (i + 1 < contents.length && contents[i + 1] === 0x0A) {
|
|
375
|
+
// CRLF -> LF
|
|
376
|
+
normalized.push(0x0A);
|
|
377
|
+
i++; // Skip the LF
|
|
378
|
+
} else {
|
|
379
|
+
// Standalone CR -> LF
|
|
380
|
+
normalized.push(0x0A);
|
|
381
|
+
}
|
|
382
|
+
} else {
|
|
383
|
+
normalized.push(byte);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
let opposite_contents;
|
|
389
|
+
|
|
390
|
+
// Determine the dominant line ending type
|
|
391
|
+
if (has_crlf && !has_standalone_lf && !has_standalone_cr) {
|
|
392
|
+
// File is Windows (CRLF) - produce Unix (LF) hash
|
|
393
|
+
opposite_contents = Buffer.from(normalized);
|
|
394
|
+
} else {
|
|
395
|
+
// File is Unix (LF/CR) or mixed - produce Windows (CRLF) hash
|
|
396
|
+
const with_crlf = [];
|
|
397
|
+
for (let i = 0; i < normalized.length; i++) {
|
|
398
|
+
if (normalized[i] === 0x0A) {
|
|
399
|
+
// LF -> CRLF
|
|
400
|
+
with_crlf.push(0x0D);
|
|
401
|
+
with_crlf.push(0x0A);
|
|
402
|
+
} else {
|
|
403
|
+
with_crlf.push(normalized[i]);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
opposite_contents = Buffer.from(with_crlf);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
return crypto.createHash('md5').update(opposite_contents).digest('hex');
|
|
410
|
+
}
|
|
411
|
+
|
|
308
412
|
function wfp_only_md5(contents, contentSource) {
|
|
309
413
|
const file_md5 = crypto.createHash('md5').update(contents).digest('hex');
|
|
310
414
|
let wfp = 'file=' + String(file_md5) + ',' + String(contents.length) + ',' + String(contentSource)+ String.fromCharCode(10);
|
|
415
|
+
|
|
416
|
+
// Calculate and add opposite line ending hash if applicable
|
|
417
|
+
const opposite_hash = calculate_opposite_line_ending_hash(contents);
|
|
418
|
+
if (opposite_hash !== null) {
|
|
419
|
+
wfp += 'fh2=' + String(opposite_hash) + String.fromCharCode(10);
|
|
420
|
+
}
|
|
421
|
+
|
|
311
422
|
return wfp;
|
|
312
423
|
}
|
|
313
424
|
|
|
@@ -509,4 +620,4 @@ export class WfpCalculator extends WfpProvider {
|
|
|
509
620
|
this.sendFingerprint(fingerprint);
|
|
510
621
|
}
|
|
511
622
|
}
|
|
512
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
623
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ZwQ2FsY3VsYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZGsvc2Nhbm5lci9XZnBQcm92aWRlci9XZnBDYWxjdWxhdG9yL1dmcENhbGN1bGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxhQUFhLEVBQStCLE1BQU0sb0JBQW9CLENBQUM7QUFFaEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFxQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRSxNQUFNLFlBQVksR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|