@coana-tech/cli 14.12.154 → 14.12.155

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 CHANGED
@@ -250902,7 +250902,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
250902
250902
  }
250903
250903
 
250904
250904
  // dist/version.js
250905
- var version3 = "14.12.154";
250905
+ var version3 = "14.12.155";
250906
250906
 
250907
250907
  // dist/cli-core.js
250908
250908
  var { mapValues, omit, partition, pickBy: pickBy2 } = import_lodash15.default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coana-tech/cli",
3
- "version": "14.12.154",
3
+ "version": "14.12.155",
4
4
  "description": "Coana CLI",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1485,6 +1485,44 @@ var require_constraintvarproducer = __commonJS({
1485
1485
  }
1486
1486
  });
1487
1487
 
1488
+ // lib/misc/large-array.js
1489
+ var require_large_array = __commonJS({
1490
+ "lib/misc/large-array.js"(exports) {
1491
+ "use strict";
1492
+ Object.defineProperty(exports, "__esModule", { value: true });
1493
+ exports.LargeArray = void 0;
1494
+ var MAX_CHUNK_SIZE = 1 << 25;
1495
+ var LargeArray = class {
1496
+ static {
1497
+ __name(this, "LargeArray");
1498
+ }
1499
+ chunks = [[]];
1500
+ _size = 0;
1501
+ get length() {
1502
+ return this._size;
1503
+ }
1504
+ set length(_value) {
1505
+ this.chunks.length = 0;
1506
+ this.chunks.push([]);
1507
+ this._size = 0;
1508
+ }
1509
+ push(value) {
1510
+ const chunk = this.chunks[this.chunks.length - 1];
1511
+ if (chunk.length >= MAX_CHUNK_SIZE)
1512
+ this.chunks.push([value]);
1513
+ else
1514
+ chunk.push(value);
1515
+ this._size++;
1516
+ }
1517
+ *[Symbol.iterator]() {
1518
+ for (const chunk of this.chunks)
1519
+ yield* chunk;
1520
+ }
1521
+ };
1522
+ exports.LargeArray = LargeArray;
1523
+ }
1524
+ });
1525
+
1488
1526
  // lib/analysis/fragmentstate.js
1489
1527
  var require_fragmentstate = __commonJS({
1490
1528
  "lib/analysis/fragmentstate.js"(exports) {
@@ -1505,6 +1543,7 @@ var require_fragmentstate = __commonJS({
1505
1543
  var constraintvarproducer_1 = require_constraintvarproducer();
1506
1544
  var asthelpers_1 = require_asthelpers();
1507
1545
  var files_1 = require_files();
1546
+ var large_array_1 = require_large_array();
1508
1547
  var FragmentState = class _FragmentState {
1509
1548
  static {
1510
1549
  __name(this, "FragmentState");
@@ -1526,8 +1565,8 @@ var require_fragmentstate = __commonJS({
1526
1565
  externalCallbacksProcessed = /* @__PURE__ */ new Set();
1527
1566
  arrayEntriesListeners = /* @__PURE__ */ new Map();
1528
1567
  objectPropertiesListeners = /* @__PURE__ */ new Map();
1529
- postponedListenerCalls = [];
1530
- postponedListenerCalls2 = [];
1568
+ postponedListenerCalls = new large_array_1.LargeArray();
1569
+ postponedListenerCalls2 = new large_array_1.LargeArray();
1531
1570
  nodesWithNewEdges = /* @__PURE__ */ new Set();
1532
1571
  prevNumEdges = 0;
1533
1572
  requireGraph = /* @__PURE__ */ new Map();
@@ -2144,6 +2183,7 @@ var require_diagnostics = __commonJS({
2144
2183
  wave = 0;
2145
2184
  round = 0;
2146
2185
  analyzerRounds = 0;
2186
+ propagationRounds = 0;
2147
2187
  listenerNotificationRounds = 0;
2148
2188
  lastPrintDiagnosticsTime = 0;
2149
2189
  lastTelemetryTime = 0;
@@ -2636,7 +2676,9 @@ var require_solver = __commonJS({
2636
2676
  vars: f.getNumberOfVarsWithTokens(),
2637
2677
  tokens: f.numberOfTokens,
2638
2678
  subsetEdges: f.numberOfSubsetEdges,
2639
- round: d.round,
2679
+ analyzerRounds: d.analyzerRounds,
2680
+ propagationRounds: d.propagationRounds,
2681
+ indirectionRound: d.round,
2640
2682
  wave: d.wave,
2641
2683
  propagations: d.propagations,
2642
2684
  unprocessedVars: this.unprocessedTokens.size,
@@ -3076,7 +3118,8 @@ var require_solver = __commonJS({
3076
3118
  this.phase = phase;
3077
3119
  if (logger_1.default.isDebugEnabled())
3078
3120
  logger_1.default.debug("Processing constraints until fixpoint...");
3079
- const f = this.fragmentState;
3121
+ const { fragmentState: f, diagnostics: d } = this;
3122
+ d.propagationRounds++;
3080
3123
  f.a.timeoutTimer.checkTimeout();
3081
3124
  (0, memory_1.checkMemoryLow)();
3082
3125
  await this.checkAbort();
@@ -3084,14 +3127,14 @@ var require_solver = __commonJS({
3084
3127
  logger_1.default.verbose(`Propagating (tokens: ${this.unprocessedTokens.size}, non-bounded: ${f.postponedListenerCalls.length}, bounded: ${f.postponedListenerCalls2.length})`);
3085
3128
  let wave = 1, round = 1;
3086
3129
  while (this.unprocessedTokens.size > 0 || f.postponedListenerCalls.length > 0 || f.postponedListenerCalls2.length > 0) {
3087
- this.diagnostics.wave = wave;
3088
- this.diagnostics.round = round;
3130
+ d.wave = wave;
3131
+ d.round = round;
3089
3132
  if (logger_1.default.isVerboseEnabled())
3090
3133
  logger_1.default.verbose(`Fixpoint wave: ${wave} (call edges: ${f.numberOfCallToFunctionEdges}, vars: ${f.getNumberOfVarsWithTokens()}, tokens: ${f.numberOfTokens}, subsets: ${f.numberOfSubsetEdges})`);
3091
3134
  if (options_1.options.maxWaves !== void 0 && wave > options_1.options.maxWaves) {
3092
3135
  f.warn("Fixpoint wave limit reached, aborting propagation");
3093
- this.diagnostics.waveLimitReached++;
3094
- this.diagnostics.unprocessedTokensSize = 0;
3136
+ d.waveLimitReached++;
3137
+ d.unprocessedTokensSize = 0;
3095
3138
  this.unprocessedTokens.clear();
3096
3139
  f.nodesWithNewEdges.clear();
3097
3140
  f.postponedListenerCalls.length = 0;
@@ -3111,43 +3154,43 @@ var require_solver = __commonJS({
3111
3154
  for (const [v, rep] of repmap)
3112
3155
  this.redirect(v, rep);
3113
3156
  f.prevNumEdges = f.numberOfSubsetEdges;
3114
- this.diagnostics.totalCycleEliminationTime += timer1.elapsed();
3115
- this.diagnostics.totalCycleEliminationRuns++;
3157
+ d.totalCycleEliminationTime += timer1.elapsed();
3158
+ d.totalCycleEliminationRuns++;
3116
3159
  if (logger_1.default.isVerboseEnabled())
3117
3160
  logger_1.default.verbose(`Cycle detection roots: ${nodes.size} roots, edges: ${edgesBefore} -> ${f.numberOfSubsetEdges} (${(0, timer_1.nanoToMs)(timer1.elapsed())})`);
3118
3161
  const timer2 = new timer_1.default();
3119
3162
  if (logger_1.default.isVerboseEnabled())
3120
- logger_1.default.verbose(`Processing ${this.diagnostics.unprocessedTokensSize} new token${this.diagnostics.unprocessedTokensSize !== 1 ? "s" : ""}`);
3163
+ logger_1.default.verbose(`Processing ${d.unprocessedTokensSize} new token${d.unprocessedTokensSize !== 1 ? "s" : ""}`);
3121
3164
  for (let i = reps.length - 1; i >= 0; i--) {
3122
3165
  const v = reps[i];
3123
3166
  this.processTokens(v);
3124
3167
  await this.checkAbort(true);
3125
3168
  }
3126
- this.diagnostics.totalPropagationTime += timer2.elapsed();
3169
+ d.totalPropagationTime += timer2.elapsed();
3127
3170
  f.nodesWithNewEdges.clear();
3128
3171
  }
3129
3172
  const timer3 = new timer_1.default();
3130
3173
  for (const v of this.unprocessedTokens.keys())
3131
3174
  this.processTokens(v);
3132
- this.diagnostics.totalPropagationTime += timer3.elapsed();
3175
+ d.totalPropagationTime += timer3.elapsed();
3133
3176
  } else {
3134
3177
  if (logger_1.default.isVerboseEnabled())
3135
- logger_1.default.verbose(`Processing ${this.diagnostics.unprocessedTokensSize} new token${this.diagnostics.unprocessedTokensSize !== 1 ? "s" : ""}`);
3178
+ logger_1.default.verbose(`Processing ${d.unprocessedTokensSize} new token${d.unprocessedTokensSize !== 1 ? "s" : ""}`);
3136
3179
  const timer = new timer_1.default();
3137
3180
  for (const v of this.unprocessedTokens.keys()) {
3138
3181
  this.processTokens(v);
3139
3182
  await this.checkAbort(true);
3140
3183
  }
3141
- this.diagnostics.totalPropagationTime += timer.elapsed();
3184
+ d.totalPropagationTime += timer.elapsed();
3142
3185
  }
3143
3186
  }
3144
- if (this.unprocessedTokens.size !== 0 || this.diagnostics.unprocessedTokensSize !== this.unprocessedTokens.size)
3145
- assert_1.default.fail(`worklist non-empty: unprocessedTokens.size: ${this.unprocessedTokens.size}, unprocessedTokensSize: ${this.diagnostics.unprocessedTokensSize}`);
3187
+ if (this.unprocessedTokens.size !== 0 || d.unprocessedTokensSize !== this.unprocessedTokens.size)
3188
+ assert_1.default.fail(`worklist non-empty: unprocessedTokens.size: ${this.unprocessedTokens.size}, unprocessedTokensSize: ${d.unprocessedTokensSize}`);
3146
3189
  if (f.postponedListenerCalls.length > 0) {
3147
3190
  if (logger_1.default.isVerboseEnabled())
3148
3191
  logger_1.default.verbose(`Processing non-bounded listener calls: ${f.postponedListenerCalls.length}`);
3149
3192
  const timer = new timer_1.default();
3150
- this.diagnostics.listenerNotificationRounds++;
3193
+ d.listenerNotificationRounds++;
3151
3194
  for (const [fun, arg] of f.postponedListenerCalls) {
3152
3195
  fun(arg);
3153
3196
  if (++this.postponedListenersProcessed % 100 === 0) {
@@ -3157,11 +3200,11 @@ var require_solver = __commonJS({
3157
3200
  }
3158
3201
  }
3159
3202
  f.postponedListenerCalls.length = this.postponedListenersProcessed = 0;
3160
- this.diagnostics.totalListenerCallTime += timer.elapsed();
3203
+ d.totalListenerCallTime += timer.elapsed();
3161
3204
  } else if (f.postponedListenerCalls2.length > 0) {
3162
3205
  if (options_1.options.maxIndirections !== void 0 && round > options_1.options.maxIndirections) {
3163
- this.diagnostics.indirectionsLimitReached++;
3164
- this.diagnostics.unprocessedTokensSize = 0;
3206
+ d.indirectionsLimitReached++;
3207
+ d.unprocessedTokensSize = 0;
3165
3208
  this.unprocessedTokens.clear();
3166
3209
  f.nodesWithNewEdges.clear();
3167
3210
  f.postponedListenerCalls.length = 0;
@@ -3170,7 +3213,7 @@ var require_solver = __commonJS({
3170
3213
  if (logger_1.default.isVerboseEnabled())
3171
3214
  logger_1.default.verbose(`Processing bounded listener calls: ${f.postponedListenerCalls2.length}`);
3172
3215
  const timer = new timer_1.default();
3173
- this.diagnostics.listenerNotificationRounds++;
3216
+ d.listenerNotificationRounds++;
3174
3217
  const calls = Array.from(f.postponedListenerCalls2);
3175
3218
  f.postponedListenerCalls2.length = this.postponedListenersProcessed = 0;
3176
3219
  for (const [fun, args] of calls) {
@@ -3181,7 +3224,7 @@ var require_solver = __commonJS({
3181
3224
  this.printDiagnostics();
3182
3225
  }
3183
3226
  }
3184
- this.diagnostics.totalListenerCallTime += timer.elapsed();
3227
+ d.totalListenerCallTime += timer.elapsed();
3185
3228
  if (logger_1.default.isVerboseEnabled() || options_1.options.diagnostics && options_1.options.printProgress)
3186
3229
  logger_1.default.info(`${logger_1.isTTY ? logger_1.GREY : ""}Round ${round} completed after ${(0, timer_1.nanoToMs)(this.timer.elapsed())} (call edges: ${f.numberOfCallToFunctionEdges}, vars: ${f.getNumberOfVarsWithTokens()}, tokens: ${f.numberOfTokens}, subsets: ${f.numberOfSubsetEdges})${logger_1.isTTY ? logger_1.RESET : ""}`);
3187
3230
  round++;
@@ -3193,8 +3236,8 @@ var require_solver = __commonJS({
3193
3236
  }
3194
3237
  if (logger_1.default.isVerboseEnabled() || options_1.options.diagnostics && options_1.options.printProgress)
3195
3238
  logger_1.default.info(`${logger_1.isTTY ? logger_1.GREY : ""}${phase} completed after ${(0, timer_1.nanoToMs)(this.timer.elapsed())} (call edges: ${f.numberOfCallToFunctionEdges}, vars: ${f.getNumberOfVarsWithTokens()}, tokens: ${f.numberOfTokens}, subsets: ${f.numberOfSubsetEdges})${logger_1.isTTY ? logger_1.RESET : ""}`);
3196
- if (this.diagnostics.unprocessedTokensSize !== 0)
3197
- assert_1.default.fail(`unprocessedTokensSize non-zero after propagate: ${this.diagnostics.unprocessedTokensSize}`);
3239
+ if (d.unprocessedTokensSize !== 0)
3240
+ assert_1.default.fail(`unprocessedTokensSize non-zero after propagate: ${d.unprocessedTokensSize}`);
3198
3241
  }
3199
3242
  async checkAbort(throttle = false) {
3200
3243
  if (this.abort) {
@@ -5318,8 +5361,7 @@ var require_analyzer = __commonJS({
5318
5361
  var memory_1 = require_memory();
5319
5362
  var telemetry_emitter_1 = require_telemetry_emitter();
5320
5363
  async function analyzeFiles(files, solver) {
5321
- const a = solver.globalState;
5322
- const d = solver.diagnostics;
5364
+ const { globalState: a, diagnostics: d } = solver;
5323
5365
  const timer = new timer_1.default();
5324
5366
  (0, options_1.resolveBaseDir)();
5325
5367
  telemetry_emitter_1.telemetryEmitter.phaseStarted("analysis", { fileCount: files.length });
@@ -5567,7 +5609,7 @@ var require_analyzer = __commonJS({
5567
5609
  if (a.approx) {
5568
5610
  a.approx.stop();
5569
5611
  if (options_1.options.approx && (options_1.options.diagnostics || options_1.options.diagnosticsJson))
5570
- solver.diagnostics.approx = a.approx.getDiagnostics();
5612
+ d.approx = a.approx.getDiagnostics();
5571
5613
  }
5572
5614
  }
5573
5615
  if (d.aborted)