@coana-tech/cli 14.12.125 → 14.12.126
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/cli.mjs +101 -1
- package/package.json +1 -1
- package/reachability-analyzers-cli.mjs +64 -6
- package/repos/coana-tech/goana/bin/goana-darwin-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-darwin-arm64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-arm64.gz +0 -0
- package/repos/coana-tech/javap-service/javap-service.jar +0 -0
package/cli.mjs
CHANGED
|
@@ -205058,6 +205058,9 @@ var CLILogger = class {
|
|
|
205058
205058
|
// Spinner registers itself as wrapper in order to suspend spinning when logging -- default to the empty wrapper
|
|
205059
205059
|
wrapper = (cb) => cb();
|
|
205060
205060
|
finished = false;
|
|
205061
|
+
// Buffer for storing logs before MainProcessTransport is added (used in socket mode)
|
|
205062
|
+
streamBuffer = [];
|
|
205063
|
+
bufferingForStream = false;
|
|
205061
205064
|
initWinstonLogger(debug, logFilePath) {
|
|
205062
205065
|
if (this.logger instanceof import_winston.Logger) {
|
|
205063
205066
|
return;
|
|
@@ -205124,20 +205127,43 @@ var CLILogger = class {
|
|
|
205124
205127
|
setWrapper(wrapper) {
|
|
205125
205128
|
this.wrapper = wrapper;
|
|
205126
205129
|
}
|
|
205130
|
+
/**
|
|
205131
|
+
* Enable buffering of logs for later streaming via MainProcessTransport.
|
|
205132
|
+
* Call this early (before initialize()) when in socket mode.
|
|
205133
|
+
* Buffered logs will be flushed when addTransport() is called.
|
|
205134
|
+
*/
|
|
205135
|
+
enableStreamBuffering() {
|
|
205136
|
+
this.bufferingForStream = true;
|
|
205137
|
+
}
|
|
205138
|
+
bufferLog(level, message2, meta) {
|
|
205139
|
+
if (this.bufferingForStream) {
|
|
205140
|
+
this.streamBuffer.push({
|
|
205141
|
+
level,
|
|
205142
|
+
message: message2,
|
|
205143
|
+
meta,
|
|
205144
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
205145
|
+
});
|
|
205146
|
+
}
|
|
205147
|
+
}
|
|
205127
205148
|
info(message2, ...meta) {
|
|
205149
|
+
this.bufferLog("info", message2, meta);
|
|
205128
205150
|
this.wrapper(() => this.logger.info(message2, ...meta));
|
|
205129
205151
|
}
|
|
205130
205152
|
file(message2, ...meta) {
|
|
205131
205153
|
if (this.logger instanceof Console) return;
|
|
205154
|
+
this.bufferLog("file", message2, meta);
|
|
205132
205155
|
this.wrapper(() => this.logger.log("file", message2, ...meta));
|
|
205133
205156
|
}
|
|
205134
205157
|
debug(message2, ...meta) {
|
|
205158
|
+
this.bufferLog("debug", message2, meta);
|
|
205135
205159
|
this.wrapper(() => this.logger.debug(message2, ...meta));
|
|
205136
205160
|
}
|
|
205137
205161
|
warn(message2, ...meta) {
|
|
205162
|
+
this.bufferLog("warn", message2, meta);
|
|
205138
205163
|
this.wrapper(() => this.logger.warn(message2, ...meta));
|
|
205139
205164
|
}
|
|
205140
205165
|
error(message2, ...meta) {
|
|
205166
|
+
this.bufferLog("error", message2, meta);
|
|
205141
205167
|
this.wrapper(() => this.logger.error(message2, ...meta));
|
|
205142
205168
|
}
|
|
205143
205169
|
isDebugEnabled() {
|
|
@@ -205155,13 +205181,37 @@ var CLILogger = class {
|
|
|
205155
205181
|
/**
|
|
205156
205182
|
* Add a transport to the main process logger.
|
|
205157
205183
|
* Used to add the MainProcessTransport so main process logs are sent to backend.
|
|
205184
|
+
* If buffering was enabled, buffered logs will be flushed to the new transport.
|
|
205158
205185
|
*
|
|
205159
205186
|
* @param transport - The transport to add
|
|
205160
205187
|
*/
|
|
205161
205188
|
addTransport(transport) {
|
|
205162
205189
|
if (this.logger instanceof import_winston.Logger) {
|
|
205163
205190
|
this.logger.add(transport);
|
|
205191
|
+
if (this.bufferingForStream) {
|
|
205192
|
+
this.flushBufferToTransport(transport);
|
|
205193
|
+
}
|
|
205194
|
+
}
|
|
205195
|
+
}
|
|
205196
|
+
flushBufferToTransport(transport) {
|
|
205197
|
+
for (const entry of this.streamBuffer) {
|
|
205198
|
+
try {
|
|
205199
|
+
const fullMessage = entry.meta.length > 0 ? `${entry.message} ${entry.meta.map((m4) => typeof m4 === "object" ? JSON.stringify(m4) : String(m4)).join(" ")}` : entry.message;
|
|
205200
|
+
transport.log?.(
|
|
205201
|
+
{
|
|
205202
|
+
level: entry.level,
|
|
205203
|
+
message: fullMessage,
|
|
205204
|
+
timestamp: entry.timestamp
|
|
205205
|
+
},
|
|
205206
|
+
() => {
|
|
205207
|
+
}
|
|
205208
|
+
);
|
|
205209
|
+
} catch (error) {
|
|
205210
|
+
console.error("Error flushing buffered log entry:", error);
|
|
205211
|
+
}
|
|
205164
205212
|
}
|
|
205213
|
+
this.streamBuffer = [];
|
|
205214
|
+
this.bufferingForStream = false;
|
|
205165
205215
|
}
|
|
205166
205216
|
/**
|
|
205167
205217
|
* End the logger instance and return a promise
|
|
@@ -231701,6 +231751,9 @@ var CLILogger2 = class {
|
|
|
231701
231751
|
// Spinner registers itself as wrapper in order to suspend spinning when logging -- default to the empty wrapper
|
|
231702
231752
|
wrapper = (cb) => cb();
|
|
231703
231753
|
finished = false;
|
|
231754
|
+
// Buffer for storing logs before MainProcessTransport is added (used in socket mode)
|
|
231755
|
+
streamBuffer = [];
|
|
231756
|
+
bufferingForStream = false;
|
|
231704
231757
|
initWinstonLogger(debug, logFilePath) {
|
|
231705
231758
|
if (this.logger instanceof import_winston2.Logger) {
|
|
231706
231759
|
return;
|
|
@@ -231757,21 +231810,44 @@ var CLILogger2 = class {
|
|
|
231757
231810
|
setWrapper(wrapper) {
|
|
231758
231811
|
this.wrapper = wrapper;
|
|
231759
231812
|
}
|
|
231813
|
+
/**
|
|
231814
|
+
* Enable buffering of logs for later streaming via MainProcessTransport.
|
|
231815
|
+
* Call this early (before initialize()) when in socket mode.
|
|
231816
|
+
* Buffered logs will be flushed when addTransport() is called.
|
|
231817
|
+
*/
|
|
231818
|
+
enableStreamBuffering() {
|
|
231819
|
+
this.bufferingForStream = true;
|
|
231820
|
+
}
|
|
231821
|
+
bufferLog(level, message2, meta) {
|
|
231822
|
+
if (this.bufferingForStream) {
|
|
231823
|
+
this.streamBuffer.push({
|
|
231824
|
+
level,
|
|
231825
|
+
message: message2,
|
|
231826
|
+
meta,
|
|
231827
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
231828
|
+
});
|
|
231829
|
+
}
|
|
231830
|
+
}
|
|
231760
231831
|
info(message2, ...meta) {
|
|
231832
|
+
this.bufferLog("info", message2, meta);
|
|
231761
231833
|
this.wrapper(() => this.logger.info(message2, ...meta));
|
|
231762
231834
|
}
|
|
231763
231835
|
file(message2, ...meta) {
|
|
231764
231836
|
if (this.logger instanceof Console2)
|
|
231765
231837
|
return;
|
|
231838
|
+
this.bufferLog("file", message2, meta);
|
|
231766
231839
|
this.wrapper(() => this.logger.log("file", message2, ...meta));
|
|
231767
231840
|
}
|
|
231768
231841
|
debug(message2, ...meta) {
|
|
231842
|
+
this.bufferLog("debug", message2, meta);
|
|
231769
231843
|
this.wrapper(() => this.logger.debug(message2, ...meta));
|
|
231770
231844
|
}
|
|
231771
231845
|
warn(message2, ...meta) {
|
|
231846
|
+
this.bufferLog("warn", message2, meta);
|
|
231772
231847
|
this.wrapper(() => this.logger.warn(message2, ...meta));
|
|
231773
231848
|
}
|
|
231774
231849
|
error(message2, ...meta) {
|
|
231850
|
+
this.bufferLog("error", message2, meta);
|
|
231775
231851
|
this.wrapper(() => this.logger.error(message2, ...meta));
|
|
231776
231852
|
}
|
|
231777
231853
|
isDebugEnabled() {
|
|
@@ -231789,14 +231865,35 @@ var CLILogger2 = class {
|
|
|
231789
231865
|
/**
|
|
231790
231866
|
* Add a transport to the main process logger.
|
|
231791
231867
|
* Used to add the MainProcessTransport so main process logs are sent to backend.
|
|
231868
|
+
* If buffering was enabled, buffered logs will be flushed to the new transport.
|
|
231792
231869
|
*
|
|
231793
231870
|
* @param transport - The transport to add
|
|
231794
231871
|
*/
|
|
231795
231872
|
addTransport(transport) {
|
|
231796
231873
|
if (this.logger instanceof import_winston2.Logger) {
|
|
231797
231874
|
this.logger.add(transport);
|
|
231875
|
+
if (this.bufferingForStream) {
|
|
231876
|
+
this.flushBufferToTransport(transport);
|
|
231877
|
+
}
|
|
231798
231878
|
}
|
|
231799
231879
|
}
|
|
231880
|
+
flushBufferToTransport(transport) {
|
|
231881
|
+
for (const entry of this.streamBuffer) {
|
|
231882
|
+
try {
|
|
231883
|
+
const fullMessage = entry.meta.length > 0 ? `${entry.message} ${entry.meta.map((m4) => typeof m4 === "object" ? JSON.stringify(m4) : String(m4)).join(" ")}` : entry.message;
|
|
231884
|
+
transport.log?.({
|
|
231885
|
+
level: entry.level,
|
|
231886
|
+
message: fullMessage,
|
|
231887
|
+
timestamp: entry.timestamp
|
|
231888
|
+
}, () => {
|
|
231889
|
+
});
|
|
231890
|
+
} catch (error) {
|
|
231891
|
+
console.error("Error flushing buffered log entry:", error);
|
|
231892
|
+
}
|
|
231893
|
+
}
|
|
231894
|
+
this.streamBuffer = [];
|
|
231895
|
+
this.bufferingForStream = false;
|
|
231896
|
+
}
|
|
231800
231897
|
/**
|
|
231801
231898
|
* End the logger instance and return a promise
|
|
231802
231899
|
* that resolves when the logger is finished.
|
|
@@ -251019,7 +251116,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
|
|
|
251019
251116
|
}
|
|
251020
251117
|
|
|
251021
251118
|
// dist/version.js
|
|
251022
|
-
var version3 = "14.12.
|
|
251119
|
+
var version3 = "14.12.126";
|
|
251023
251120
|
|
|
251024
251121
|
// dist/cli-core.js
|
|
251025
251122
|
var { mapValues, omit, partition, pickBy: pickBy2 } = import_lodash15.default;
|
|
@@ -251142,6 +251239,9 @@ var CliCore = class {
|
|
|
251142
251239
|
const tmpDir = await createTmpDirectory("coana-cli-");
|
|
251143
251240
|
this.coanaLogPath = join30(tmpDir, "coana-log.txt");
|
|
251144
251241
|
this.coanaSocketPath = join30(tmpDir, "coana.sock");
|
|
251242
|
+
if (this.options.socketMode) {
|
|
251243
|
+
logger.enableStreamBuffering();
|
|
251244
|
+
}
|
|
251145
251245
|
logger.initWinstonLogger(this.options.debug, this.coanaLogPath);
|
|
251146
251246
|
logger.silent = this.options.silent;
|
|
251147
251247
|
try {
|
package/package.json
CHANGED
|
@@ -75753,6 +75753,9 @@ var CLILogger = class {
|
|
|
75753
75753
|
// Spinner registers itself as wrapper in order to suspend spinning when logging -- default to the empty wrapper
|
|
75754
75754
|
wrapper = (cb) => cb();
|
|
75755
75755
|
finished = false;
|
|
75756
|
+
// Buffer for storing logs before MainProcessTransport is added (used in socket mode)
|
|
75757
|
+
streamBuffer = [];
|
|
75758
|
+
bufferingForStream = false;
|
|
75756
75759
|
initWinstonLogger(debug, logFilePath) {
|
|
75757
75760
|
if (this.logger instanceof import_winston.Logger) {
|
|
75758
75761
|
return;
|
|
@@ -75819,20 +75822,43 @@ var CLILogger = class {
|
|
|
75819
75822
|
setWrapper(wrapper) {
|
|
75820
75823
|
this.wrapper = wrapper;
|
|
75821
75824
|
}
|
|
75825
|
+
/**
|
|
75826
|
+
* Enable buffering of logs for later streaming via MainProcessTransport.
|
|
75827
|
+
* Call this early (before initialize()) when in socket mode.
|
|
75828
|
+
* Buffered logs will be flushed when addTransport() is called.
|
|
75829
|
+
*/
|
|
75830
|
+
enableStreamBuffering() {
|
|
75831
|
+
this.bufferingForStream = true;
|
|
75832
|
+
}
|
|
75833
|
+
bufferLog(level, message, meta) {
|
|
75834
|
+
if (this.bufferingForStream) {
|
|
75835
|
+
this.streamBuffer.push({
|
|
75836
|
+
level,
|
|
75837
|
+
message,
|
|
75838
|
+
meta,
|
|
75839
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
75840
|
+
});
|
|
75841
|
+
}
|
|
75842
|
+
}
|
|
75822
75843
|
info(message, ...meta) {
|
|
75844
|
+
this.bufferLog("info", message, meta);
|
|
75823
75845
|
this.wrapper(() => this.logger.info(message, ...meta));
|
|
75824
75846
|
}
|
|
75825
75847
|
file(message, ...meta) {
|
|
75826
75848
|
if (this.logger instanceof Console) return;
|
|
75849
|
+
this.bufferLog("file", message, meta);
|
|
75827
75850
|
this.wrapper(() => this.logger.log("file", message, ...meta));
|
|
75828
75851
|
}
|
|
75829
75852
|
debug(message, ...meta) {
|
|
75853
|
+
this.bufferLog("debug", message, meta);
|
|
75830
75854
|
this.wrapper(() => this.logger.debug(message, ...meta));
|
|
75831
75855
|
}
|
|
75832
75856
|
warn(message, ...meta) {
|
|
75857
|
+
this.bufferLog("warn", message, meta);
|
|
75833
75858
|
this.wrapper(() => this.logger.warn(message, ...meta));
|
|
75834
75859
|
}
|
|
75835
75860
|
error(message, ...meta) {
|
|
75861
|
+
this.bufferLog("error", message, meta);
|
|
75836
75862
|
this.wrapper(() => this.logger.error(message, ...meta));
|
|
75837
75863
|
}
|
|
75838
75864
|
isDebugEnabled() {
|
|
@@ -75850,14 +75876,38 @@ var CLILogger = class {
|
|
|
75850
75876
|
/**
|
|
75851
75877
|
* Add a transport to the main process logger.
|
|
75852
75878
|
* Used to add the MainProcessTransport so main process logs are sent to backend.
|
|
75879
|
+
* If buffering was enabled, buffered logs will be flushed to the new transport.
|
|
75853
75880
|
*
|
|
75854
75881
|
* @param transport - The transport to add
|
|
75855
75882
|
*/
|
|
75856
75883
|
addTransport(transport) {
|
|
75857
75884
|
if (this.logger instanceof import_winston.Logger) {
|
|
75858
75885
|
this.logger.add(transport);
|
|
75886
|
+
if (this.bufferingForStream) {
|
|
75887
|
+
this.flushBufferToTransport(transport);
|
|
75888
|
+
}
|
|
75859
75889
|
}
|
|
75860
75890
|
}
|
|
75891
|
+
flushBufferToTransport(transport) {
|
|
75892
|
+
for (const entry of this.streamBuffer) {
|
|
75893
|
+
try {
|
|
75894
|
+
const fullMessage = entry.meta.length > 0 ? `${entry.message} ${entry.meta.map((m) => typeof m === "object" ? JSON.stringify(m) : String(m)).join(" ")}` : entry.message;
|
|
75895
|
+
transport.log?.(
|
|
75896
|
+
{
|
|
75897
|
+
level: entry.level,
|
|
75898
|
+
message: fullMessage,
|
|
75899
|
+
timestamp: entry.timestamp
|
|
75900
|
+
},
|
|
75901
|
+
() => {
|
|
75902
|
+
}
|
|
75903
|
+
);
|
|
75904
|
+
} catch (error) {
|
|
75905
|
+
console.error("Error flushing buffered log entry:", error);
|
|
75906
|
+
}
|
|
75907
|
+
}
|
|
75908
|
+
this.streamBuffer = [];
|
|
75909
|
+
this.bufferingForStream = false;
|
|
75910
|
+
}
|
|
75861
75911
|
/**
|
|
75862
75912
|
* End the logger instance and return a promise
|
|
75863
75913
|
* that resolves when the logger is finished.
|
|
@@ -88276,6 +88326,7 @@ var ToolPathResolver = class {
|
|
|
88276
88326
|
|
|
88277
88327
|
// dist/whole-program-code-aware-vulnerability-scanner/code-aware-vulnerability-scanner.js
|
|
88278
88328
|
var import_lodash13 = __toESM(require_lodash(), 1);
|
|
88329
|
+
import { readFileSync as readFileSync3 } from "fs";
|
|
88279
88330
|
import { resolve as resolve17 } from "path";
|
|
88280
88331
|
|
|
88281
88332
|
// dist/whole-program-code-aware-vulnerability-scanner/dotnet/dotnet-code-aware-vulnerability-scanner.js
|
|
@@ -111524,7 +111575,7 @@ async function analyzePackages(ecosystem, packages, vulnerability, options) {
|
|
|
111524
111575
|
default:
|
|
111525
111576
|
throw new Error(`Analyze dependency chain not implemented for ${ecosystem}.`);
|
|
111526
111577
|
}
|
|
111527
|
-
return { analysis: { name: analysisName, version:
|
|
111578
|
+
return { analysis: { name: analysisName, version: getVersion(analysisName) }, result };
|
|
111528
111579
|
}
|
|
111529
111580
|
async function analyzeAlreadyInstalledPackages(ecosystem, packages, vulnerability, options) {
|
|
111530
111581
|
let analysisName;
|
|
@@ -111557,7 +111608,7 @@ async function analyzeAlreadyInstalledPackages(ecosystem, packages, vulnerabilit
|
|
|
111557
111608
|
default:
|
|
111558
111609
|
throw new Error(`analyzePackageRegistryPackage is not implemented for ${ecosystem}.`);
|
|
111559
111610
|
}
|
|
111560
|
-
return { analysis: { name: analysisName, version:
|
|
111611
|
+
return { analysis: { name: analysisName, version: getCurrentCommitHash(analysisName.toLowerCase()) }, result };
|
|
111561
111612
|
}
|
|
111562
111613
|
async function runWithJSHeuristics(cb) {
|
|
111563
111614
|
const orderedHeuristics = [heuristics.ALL_PACKAGES];
|
|
@@ -111569,8 +111620,15 @@ async function runWithJSHeuristics(cb) {
|
|
|
111569
111620
|
}
|
|
111570
111621
|
return result;
|
|
111571
111622
|
}
|
|
111572
|
-
|
|
111573
|
-
|
|
111623
|
+
function getCurrentCommitHash(project) {
|
|
111624
|
+
const headShaPath = resolve17(COANA_REPOS_PATH(), project, "HEAD_SHA");
|
|
111625
|
+
try {
|
|
111626
|
+
const content = readFileSync3(headShaPath, "utf-8").trim();
|
|
111627
|
+
const colonIndex = content.indexOf(":");
|
|
111628
|
+
return colonIndex !== -1 ? content.slice(colonIndex + 1) : content;
|
|
111629
|
+
} catch {
|
|
111630
|
+
return "unknown";
|
|
111631
|
+
}
|
|
111574
111632
|
}
|
|
111575
111633
|
function detectedOccurrencesFromAPMatches(matches, pathPrefixToRemove) {
|
|
111576
111634
|
for (const match2 of Object.values(matches))
|
|
@@ -111606,9 +111664,9 @@ function getStacksFromAccPaths(matches, { vulnerabilityAccessPaths }) {
|
|
|
111606
111664
|
stacks: relevantStacks
|
|
111607
111665
|
};
|
|
111608
111666
|
}
|
|
111609
|
-
|
|
111667
|
+
function getVersion(analysisName) {
|
|
111610
111668
|
if (analysisName === "Jelly")
|
|
111611
|
-
return
|
|
111669
|
+
return getCurrentCommitHash(analysisName.toLowerCase());
|
|
111612
111670
|
return "N/A";
|
|
111613
111671
|
}
|
|
111614
111672
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|