@vibgrate/cli 1.0.89 → 1.0.90
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/dist/{baseline-BRTNOHRU.js → baseline-QZZXBT74.js} +2 -2
- package/dist/{chunk-257KSYYQ.js → chunk-2VJCLUTR.js} +1 -1
- package/dist/{chunk-V6ML65PC.js → chunk-XCIPC2J7.js} +16 -18
- package/dist/cli.js +3 -3
- package/dist/hcs-worker.js +153 -22
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -7241,7 +7241,6 @@ var ScanProgress = class {
|
|
|
7241
7241
|
startTime = Date.now();
|
|
7242
7242
|
isTTY;
|
|
7243
7243
|
useLiveUpdates;
|
|
7244
|
-
output;
|
|
7245
7244
|
rootDir = "";
|
|
7246
7245
|
/** Last rendered frame content (strip to compare for dirty-checking) */
|
|
7247
7246
|
lastFrame = "";
|
|
@@ -7258,14 +7257,13 @@ var ScanProgress = class {
|
|
|
7258
7257
|
/** Last emitted step snapshot for append-only output modes */
|
|
7259
7258
|
lastLoggedStates = /* @__PURE__ */ new Map();
|
|
7260
7259
|
constructor(rootDir) {
|
|
7261
|
-
this.
|
|
7262
|
-
this.isTTY = this.output.isTTY ?? false;
|
|
7260
|
+
this.isTTY = process.stderr.isTTY ?? false;
|
|
7263
7261
|
this.useLiveUpdates = this.isTTY && process.env.VIBGRATE_PROGRESS_MODE !== "plain";
|
|
7264
7262
|
this.rootDir = rootDir;
|
|
7265
7263
|
if (this.isTTY) {
|
|
7266
7264
|
const restore = () => {
|
|
7267
7265
|
if (this.cursorHidden) {
|
|
7268
|
-
|
|
7266
|
+
process.stderr.write("\x1B[?25h");
|
|
7269
7267
|
this.cursorHidden = false;
|
|
7270
7268
|
}
|
|
7271
7269
|
};
|
|
@@ -7304,7 +7302,7 @@ var ScanProgress = class {
|
|
|
7304
7302
|
` ${ROBOT[3]} ${chalk4.dim(this.rootDir)}`,
|
|
7305
7303
|
""
|
|
7306
7304
|
].join("\n") + "\n";
|
|
7307
|
-
|
|
7305
|
+
process.stderr.write(header);
|
|
7308
7306
|
if (this.useLiveUpdates) {
|
|
7309
7307
|
this.startSpinner();
|
|
7310
7308
|
}
|
|
@@ -7404,25 +7402,25 @@ var ScanProgress = class {
|
|
|
7404
7402
|
buf += "\x1B[J";
|
|
7405
7403
|
}
|
|
7406
7404
|
buf += "\x1B[?25h";
|
|
7407
|
-
if (buf)
|
|
7405
|
+
if (buf) process.stderr.write(buf);
|
|
7408
7406
|
this.cursorHidden = false;
|
|
7409
7407
|
this.lastRowCount = 0;
|
|
7410
7408
|
}
|
|
7411
7409
|
const elapsed = this.formatElapsed(Date.now() - this.startTime);
|
|
7412
7410
|
const doneCount = this.steps.filter((s) => s.status === "done").length;
|
|
7413
|
-
|
|
7411
|
+
process.stderr.write(
|
|
7414
7412
|
chalk4.dim(` \u2714 ${doneCount} scanners completed in ${elapsed}
|
|
7415
7413
|
|
|
7416
7414
|
`)
|
|
7417
7415
|
);
|
|
7418
7416
|
if (this.isTTY && process.platform === "win32") {
|
|
7419
|
-
|
|
7417
|
+
process.stdout.write("\x1B[0G\x1B[K");
|
|
7420
7418
|
}
|
|
7421
7419
|
}
|
|
7422
7420
|
// ── Internal rendering ──
|
|
7423
7421
|
startSpinner() {
|
|
7424
7422
|
if (!this.cursorHidden) {
|
|
7425
|
-
|
|
7423
|
+
process.stderr.write("\x1B[?25l");
|
|
7426
7424
|
this.cursorHidden = true;
|
|
7427
7425
|
}
|
|
7428
7426
|
this.timer = setInterval(() => {
|
|
@@ -7438,6 +7436,10 @@ var ScanProgress = class {
|
|
|
7438
7436
|
return;
|
|
7439
7437
|
}
|
|
7440
7438
|
const lines = [];
|
|
7439
|
+
for (const step of this.steps) {
|
|
7440
|
+
lines.push(this.renderStep(step));
|
|
7441
|
+
}
|
|
7442
|
+
lines.push("");
|
|
7441
7443
|
const totalWeight = this.steps.reduce((sum, s) => sum + (s.weight ?? 1), 0);
|
|
7442
7444
|
let completedWeight = 0;
|
|
7443
7445
|
for (const step of this.steps) {
|
|
@@ -7467,10 +7469,6 @@ var ScanProgress = class {
|
|
|
7467
7469
|
lines.push("");
|
|
7468
7470
|
lines.push(this.renderStats());
|
|
7469
7471
|
lines.push("");
|
|
7470
|
-
for (const step of this.steps) {
|
|
7471
|
-
lines.push(this.renderStep(step));
|
|
7472
|
-
}
|
|
7473
|
-
lines.push("");
|
|
7474
7472
|
const content = lines.join("\n") + "\n";
|
|
7475
7473
|
const rowCount = this.countRenderedRows(lines);
|
|
7476
7474
|
if (content === this.lastFrame && this.lastRowCount === rowCount) {
|
|
@@ -7483,11 +7481,11 @@ var ScanProgress = class {
|
|
|
7483
7481
|
buf += "\x1B[J";
|
|
7484
7482
|
}
|
|
7485
7483
|
buf += content;
|
|
7486
|
-
|
|
7484
|
+
process.stderr.write(buf);
|
|
7487
7485
|
this.lastRowCount = rowCount;
|
|
7488
7486
|
}
|
|
7489
7487
|
countRenderedRows(lines) {
|
|
7490
|
-
const columns = Math.max(
|
|
7488
|
+
const columns = Math.max(process.stderr.columns ?? 80, 20);
|
|
7491
7489
|
return lines.reduce((total, line) => total + this.countWrappedRows(line, columns), 0);
|
|
7492
7490
|
}
|
|
7493
7491
|
countWrappedRows(line, columns) {
|
|
@@ -7584,19 +7582,19 @@ var ScanProgress = class {
|
|
|
7584
7582
|
}
|
|
7585
7583
|
this.lastLoggedStates.set(step.id, stateKey);
|
|
7586
7584
|
if (step.status === "active") {
|
|
7587
|
-
|
|
7585
|
+
process.stderr.write(` \u25C9 ${step.label}...
|
|
7588
7586
|
`);
|
|
7589
7587
|
continue;
|
|
7590
7588
|
}
|
|
7591
7589
|
if (step.status === "done") {
|
|
7592
7590
|
const detail = this.formatLoggedStepDetail(step);
|
|
7593
|
-
|
|
7591
|
+
process.stderr.write(` \u2714 ${step.label}${detail}
|
|
7594
7592
|
`);
|
|
7595
7593
|
continue;
|
|
7596
7594
|
}
|
|
7597
7595
|
if (step.status === "skipped") {
|
|
7598
7596
|
const detail = step.detail ? ` \xB7 ${step.detail}` : "";
|
|
7599
|
-
|
|
7597
|
+
process.stderr.write(` \u25CC ${step.label}${detail}
|
|
7600
7598
|
`);
|
|
7601
7599
|
}
|
|
7602
7600
|
}
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
baselineCommand
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-2VJCLUTR.js";
|
|
5
5
|
import {
|
|
6
6
|
VERSION,
|
|
7
7
|
computeHmac,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
pushCommand,
|
|
13
13
|
scanCommand,
|
|
14
14
|
writeDefaultConfig
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-XCIPC2J7.js";
|
|
16
16
|
import {
|
|
17
17
|
Semaphore,
|
|
18
18
|
ensureDir,
|
|
@@ -42,7 +42,7 @@ var initCommand = new Command("init").description("Initialize vibgrate in a proj
|
|
|
42
42
|
console.log(chalk.green("\u2714") + ` Created ${chalk.bold("vibgrate.config.ts")}`);
|
|
43
43
|
}
|
|
44
44
|
if (opts.baseline) {
|
|
45
|
-
const { runBaseline } = await import("./baseline-
|
|
45
|
+
const { runBaseline } = await import("./baseline-QZZXBT74.js");
|
|
46
46
|
await runBaseline(rootDir);
|
|
47
47
|
}
|
|
48
48
|
console.log("");
|
package/dist/hcs-worker.js
CHANGED
|
@@ -213604,7 +213604,7 @@ var require_path_browserify = __commonJS({
|
|
|
213604
213604
|
assertPath(path2);
|
|
213605
213605
|
return path2.length > 0 && path2.charCodeAt(0) === 47;
|
|
213606
213606
|
},
|
|
213607
|
-
join: function
|
|
213607
|
+
join: function join5() {
|
|
213608
213608
|
if (arguments.length === 0)
|
|
213609
213609
|
return ".";
|
|
213610
213610
|
var joined;
|
|
@@ -270264,7 +270264,7 @@ var require_Utils = __commonJS({
|
|
|
270264
270264
|
return escapeSpaces ? s.replace(/ /, "\xB7") : s.replace(/\t/, "\\t").replace(/\n/, "\\n").replace(/\r/, "\\r");
|
|
270265
270265
|
}
|
|
270266
270266
|
exports.escapeWhitespace = escapeWhitespace;
|
|
270267
|
-
function
|
|
270267
|
+
function join5(collection, separator) {
|
|
270268
270268
|
let buf = "";
|
|
270269
270269
|
let first = true;
|
|
270270
270270
|
for (let current of collection) {
|
|
@@ -270277,7 +270277,7 @@ var require_Utils = __commonJS({
|
|
|
270277
270277
|
}
|
|
270278
270278
|
return buf;
|
|
270279
270279
|
}
|
|
270280
|
-
exports.join =
|
|
270280
|
+
exports.join = join5;
|
|
270281
270281
|
function equals(x, y) {
|
|
270282
270282
|
if (x === y) {
|
|
270283
270283
|
return true;
|
|
@@ -314101,16 +314101,35 @@ var import_ts_morph18 = __toESM(require_ts_morph(), 1);
|
|
|
314101
314101
|
|
|
314102
314102
|
// src/facts/fact-emitter.ts
|
|
314103
314103
|
init_esm_shims();
|
|
314104
|
-
import { createHash } from "crypto";
|
|
314104
|
+
import { createHash, randomBytes } from "crypto";
|
|
314105
|
+
import { homedir, tmpdir } from "os";
|
|
314106
|
+
import { join } from "path";
|
|
314107
|
+
import { createReadStream, createWriteStream, unlinkSync } from "fs";
|
|
314108
|
+
import { createInterface } from "readline";
|
|
314109
|
+
var MIN_REF_FREQUENCY = 3;
|
|
314110
|
+
var MIN_REF_LENGTH = 20;
|
|
314111
|
+
var MAX_REFS = 15;
|
|
314105
314112
|
var NdjsonFactEmitter = class {
|
|
314106
314113
|
language = "typescript";
|
|
314107
314114
|
scanner = "ts-morph";
|
|
314108
314115
|
scannerVersion = "0.2.0";
|
|
314109
314116
|
emittedAt;
|
|
314110
314117
|
output;
|
|
314118
|
+
home;
|
|
314119
|
+
// Temp file used for streaming facts without full in-memory buffering
|
|
314120
|
+
tmpPath;
|
|
314121
|
+
tmpStream;
|
|
314122
|
+
// Model registry — tiny, bounded by unique (factType×language×scanner×version) combos
|
|
314123
|
+
modelsByKey = /* @__PURE__ */ new Map();
|
|
314124
|
+
modelCounter = 0;
|
|
314125
|
+
// Path frequency map — bounded by unique path prefix strings seen
|
|
314126
|
+
pathFreq = /* @__PURE__ */ new Map();
|
|
314111
314127
|
constructor(output = process.stdout) {
|
|
314112
314128
|
this.output = output;
|
|
314113
314129
|
this.emittedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
314130
|
+
this.home = homedir();
|
|
314131
|
+
this.tmpPath = join(tmpdir(), `vibgrate-hcs-${randomBytes(8).toString("hex")}.ndjson.tmp`);
|
|
314132
|
+
this.tmpStream = createWriteStream(this.tmpPath, { encoding: "utf8" });
|
|
314114
314133
|
}
|
|
314115
314134
|
setLanguage(language) {
|
|
314116
314135
|
this.language = language;
|
|
@@ -314167,7 +314186,6 @@ var NdjsonFactEmitter = class {
|
|
|
314167
314186
|
emitAnnotationFound(p) {
|
|
314168
314187
|
this.emit("AnnotationFound", `${p.targetSymbol}:${p.annotationType}`, p);
|
|
314169
314188
|
}
|
|
314170
|
-
// ── New ABI fact emitters ────────────────────────────────────────
|
|
314171
314189
|
emitFileIndexed(p) {
|
|
314172
314190
|
this.emit("FileIndexed", p.fileId, p);
|
|
314173
314191
|
}
|
|
@@ -314193,7 +314211,6 @@ var NdjsonFactEmitter = class {
|
|
|
314193
314211
|
const id = p.objectId ?? `${p.objectName}:${p.filePath}:${p.line}`;
|
|
314194
314212
|
this.emit("SqlObjectDeclared", id, p);
|
|
314195
314213
|
}
|
|
314196
|
-
// ── Frontend / UI fact emitters ──────────────────────────────────
|
|
314197
314214
|
emitComponentDeclared(p) {
|
|
314198
314215
|
this.emit("ComponentDeclared", p.componentId, p);
|
|
314199
314216
|
}
|
|
@@ -314209,7 +314226,6 @@ var NdjsonFactEmitter = class {
|
|
|
314209
314226
|
emitHookDeclared(p) {
|
|
314210
314227
|
this.emit("HookDeclared", p.hookId, p);
|
|
314211
314228
|
}
|
|
314212
|
-
// ── COBOL fact emitters ──────────────────────────────────────────
|
|
314213
314229
|
emitCopybookResolved(p) {
|
|
314214
314230
|
this.emit("CopybookResolved", p.copybookId, p);
|
|
314215
314231
|
}
|
|
@@ -314237,24 +314253,128 @@ var NdjsonFactEmitter = class {
|
|
|
314237
314253
|
emitCobolConfidenceReport(p) {
|
|
314238
314254
|
this.emit("CobolConfidenceReport", p.programId, p);
|
|
314239
314255
|
}
|
|
314240
|
-
// ── Core emit
|
|
314256
|
+
// ── Core emit — streams to temp file ────────────────────
|
|
314241
314257
|
emit(factType, idSeed, payload) {
|
|
314242
|
-
const
|
|
314243
|
-
|
|
314244
|
-
|
|
314245
|
-
|
|
314246
|
-
|
|
314247
|
-
|
|
314248
|
-
|
|
314249
|
-
|
|
314258
|
+
const strippedPayload = transformStrings(payload, (s) => stripHome(s, this.home));
|
|
314259
|
+
collectPathFrequencies(strippedPayload, this.pathFreq);
|
|
314260
|
+
const modelKey = `${factType}\0${this.language}\0${this.scanner}\0${this.scannerVersion}`;
|
|
314261
|
+
let model = this.modelsByKey.get(modelKey);
|
|
314262
|
+
if (!model) {
|
|
314263
|
+
model = {
|
|
314264
|
+
id: `m${this.modelCounter++}`,
|
|
314265
|
+
factType,
|
|
314266
|
+
language: this.language,
|
|
314267
|
+
scanner: this.scanner,
|
|
314268
|
+
scannerVersion: this.scannerVersion
|
|
314269
|
+
};
|
|
314270
|
+
this.modelsByKey.set(modelKey, model);
|
|
314271
|
+
}
|
|
314272
|
+
const line = {
|
|
314273
|
+
factId: generateFactId(factType, idSeed),
|
|
314274
|
+
m: model.id,
|
|
314275
|
+
payload: strippedPayload
|
|
314250
314276
|
};
|
|
314251
|
-
this.
|
|
314277
|
+
this.tmpStream.write(JSON.stringify(line) + "\n");
|
|
314252
314278
|
}
|
|
314253
|
-
|
|
314254
|
-
|
|
314255
|
-
|
|
314279
|
+
// ── Flush: emit preamble then stream temp file ───────────
|
|
314280
|
+
async flush() {
|
|
314281
|
+
await new Promise((resolve3, reject) => {
|
|
314282
|
+
this.tmpStream.end((err) => err ? reject(err) : resolve3());
|
|
314283
|
+
});
|
|
314284
|
+
const refs = buildRefs(this.pathFreq);
|
|
314285
|
+
const models = [...this.modelsByKey.values()];
|
|
314286
|
+
const modelsFact = {
|
|
314287
|
+
factType: "Models",
|
|
314288
|
+
emittedAt: this.emittedAt,
|
|
314289
|
+
payload: { models }
|
|
314290
|
+
};
|
|
314291
|
+
this.output.write(JSON.stringify(modelsFact) + "\n");
|
|
314292
|
+
if (refs.length > 0) {
|
|
314293
|
+
const refsFact = {
|
|
314294
|
+
factType: "References",
|
|
314295
|
+
emittedAt: this.emittedAt,
|
|
314296
|
+
payload: { references: refs }
|
|
314297
|
+
};
|
|
314298
|
+
this.output.write(JSON.stringify(refsFact) + "\n");
|
|
314299
|
+
}
|
|
314300
|
+
await streamWithRefSubstitution(this.tmpPath, refs, this.output);
|
|
314301
|
+
try {
|
|
314302
|
+
unlinkSync(this.tmpPath);
|
|
314303
|
+
} catch {
|
|
314304
|
+
}
|
|
314256
314305
|
}
|
|
314257
314306
|
};
|
|
314307
|
+
function generateFactId(factType, seed) {
|
|
314308
|
+
const hash = createHash("sha256").update(seed).digest("hex").substring(0, 16);
|
|
314309
|
+
return `hcs:${factType}:${hash}`;
|
|
314310
|
+
}
|
|
314311
|
+
function stripHome(s, home) {
|
|
314312
|
+
if (home && s.startsWith(home + "/")) return s.slice(home.length);
|
|
314313
|
+
return s;
|
|
314314
|
+
}
|
|
314315
|
+
function transformStrings(value, fn) {
|
|
314316
|
+
if (typeof value === "string") return fn(value);
|
|
314317
|
+
if (Array.isArray(value)) return value.map((v) => transformStrings(v, fn));
|
|
314318
|
+
if (value !== null && typeof value === "object") {
|
|
314319
|
+
const out = {};
|
|
314320
|
+
for (const [k, v] of Object.entries(value)) {
|
|
314321
|
+
out[k] = transformStrings(v, fn);
|
|
314322
|
+
}
|
|
314323
|
+
return out;
|
|
314324
|
+
}
|
|
314325
|
+
return value;
|
|
314326
|
+
}
|
|
314327
|
+
function collectPathFrequencies(value, freq) {
|
|
314328
|
+
if (typeof value === "string") {
|
|
314329
|
+
if (!value.startsWith("/") || value.length < 2) return;
|
|
314330
|
+
const parts = value.split("/");
|
|
314331
|
+
for (let i = 2; i < parts.length; i++) {
|
|
314332
|
+
const prefix = parts.slice(0, i).join("/");
|
|
314333
|
+
if (prefix.length >= MIN_REF_LENGTH) {
|
|
314334
|
+
freq.set(prefix, (freq.get(prefix) ?? 0) + 1);
|
|
314335
|
+
}
|
|
314336
|
+
}
|
|
314337
|
+
return;
|
|
314338
|
+
}
|
|
314339
|
+
if (Array.isArray(value)) {
|
|
314340
|
+
for (const v of value) collectPathFrequencies(v, freq);
|
|
314341
|
+
return;
|
|
314342
|
+
}
|
|
314343
|
+
if (value !== null && typeof value === "object") {
|
|
314344
|
+
for (const v of Object.values(value)) collectPathFrequencies(v, freq);
|
|
314345
|
+
}
|
|
314346
|
+
}
|
|
314347
|
+
function buildRefs(freq) {
|
|
314348
|
+
const REF_TOKEN_LEN = 9;
|
|
314349
|
+
return [...freq.entries()].filter(([seg, count]) => count >= MIN_REF_FREQUENCY && seg.length >= MIN_REF_LENGTH).map(([seg, count]) => ({ seg, savings: count * seg.length - REF_TOKEN_LEN })).filter(({ savings }) => savings > 0).sort((a, b) => b.savings - a.savings).slice(0, MAX_REFS).map(({ seg }) => ({ id: `@@${shortHash(seg)}`, value: seg })).sort((a, b) => b.value.length - a.value.length);
|
|
314350
|
+
}
|
|
314351
|
+
function applyRefs(s, refs) {
|
|
314352
|
+
if (!s.startsWith("/")) return s;
|
|
314353
|
+
for (const { id, value } of refs) {
|
|
314354
|
+
if (s === value) return id;
|
|
314355
|
+
if (s.startsWith(value + "/")) return id + s.slice(value.length);
|
|
314356
|
+
}
|
|
314357
|
+
return s;
|
|
314358
|
+
}
|
|
314359
|
+
function shortHash(s) {
|
|
314360
|
+
return createHash("sha256").update(s).digest("hex").substring(0, 6).toUpperCase();
|
|
314361
|
+
}
|
|
314362
|
+
async function streamWithRefSubstitution(tmpPath, refs, output) {
|
|
314363
|
+
const rl = createInterface({
|
|
314364
|
+
input: createReadStream(tmpPath, { encoding: "utf8" }),
|
|
314365
|
+
crlfDelay: Infinity
|
|
314366
|
+
});
|
|
314367
|
+
for await (const line of rl) {
|
|
314368
|
+
if (!line) continue;
|
|
314369
|
+
if (refs.length === 0) {
|
|
314370
|
+
output.write(line + "\n");
|
|
314371
|
+
continue;
|
|
314372
|
+
}
|
|
314373
|
+
const parsed = JSON.parse(line);
|
|
314374
|
+
parsed.payload = transformStrings(parsed.payload, (s) => applyRefs(s, refs));
|
|
314375
|
+
output.write(JSON.stringify(parsed) + "\n");
|
|
314376
|
+
}
|
|
314377
|
+
}
|
|
314258
314378
|
|
|
314259
314379
|
// src/extractors/symbol-call-graph.ts
|
|
314260
314380
|
init_esm_shims();
|
|
@@ -318703,7 +318823,7 @@ function isInAsyncContext(sf, line) {
|
|
|
318703
318823
|
init_esm_shims();
|
|
318704
318824
|
var import_ts_morph17 = __toESM(require_ts_morph(), 1);
|
|
318705
318825
|
import { readFileSync, existsSync } from "fs";
|
|
318706
|
-
import { basename as basename2, extname as extname2, dirname as dirname2, join } from "path";
|
|
318826
|
+
import { basename as basename2, extname as extname2, dirname as dirname2, join as join2 } from "path";
|
|
318707
318827
|
var SqlObjectDeclaredExtractor = class {
|
|
318708
318828
|
async extract(sourceFiles, emitter) {
|
|
318709
318829
|
for (const sf of sourceFiles) {
|
|
@@ -318723,7 +318843,7 @@ var SqlObjectDeclaredExtractor = class {
|
|
|
318723
318843
|
for (const sf of sourceFiles) {
|
|
318724
318844
|
const base = dirname2(sf.getFilePath());
|
|
318725
318845
|
for (const candidate of ["prisma/schema.prisma", "../prisma/schema.prisma"]) {
|
|
318726
|
-
const schemaPath =
|
|
318846
|
+
const schemaPath = join2(base, candidate);
|
|
318727
318847
|
if (existsSync(schemaPath)) {
|
|
318728
318848
|
this.extractFromPrismaSchema(schemaPath, emitter);
|
|
318729
318849
|
}
|
|
@@ -393930,6 +394050,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393930
394050
|
}
|
|
393931
394051
|
emitter.setLanguage("swift");
|
|
393932
394052
|
await runSwiftTextExtractors(swiftPath, emitter);
|
|
394053
|
+
await emitter.flush();
|
|
393933
394054
|
return;
|
|
393934
394055
|
}
|
|
393935
394056
|
if (opts.vb6Project) {
|
|
@@ -393941,6 +394062,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393941
394062
|
}
|
|
393942
394063
|
emitter.setLanguage("vb6");
|
|
393943
394064
|
await runVB6TextExtractors(vb6Path, emitter);
|
|
394065
|
+
await emitter.flush();
|
|
393944
394066
|
return;
|
|
393945
394067
|
}
|
|
393946
394068
|
if (opts.rustProject) {
|
|
@@ -393952,6 +394074,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393952
394074
|
}
|
|
393953
394075
|
emitter.setLanguage("rust");
|
|
393954
394076
|
await runRustTextExtractors(rustPath, emitter);
|
|
394077
|
+
await emitter.flush();
|
|
393955
394078
|
return;
|
|
393956
394079
|
}
|
|
393957
394080
|
if (opts.rubyProject) {
|
|
@@ -393963,6 +394086,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393963
394086
|
}
|
|
393964
394087
|
emitter.setLanguage("ruby");
|
|
393965
394088
|
await runRubyTextExtractors(rubyPath, emitter);
|
|
394089
|
+
await emitter.flush();
|
|
393966
394090
|
return;
|
|
393967
394091
|
}
|
|
393968
394092
|
if (opts.phpProject) {
|
|
@@ -393974,6 +394098,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393974
394098
|
}
|
|
393975
394099
|
emitter.setLanguage("php");
|
|
393976
394100
|
await runPhpTextExtractors(phpPath, emitter);
|
|
394101
|
+
await emitter.flush();
|
|
393977
394102
|
return;
|
|
393978
394103
|
}
|
|
393979
394104
|
if (opts.dartProject) {
|
|
@@ -393985,6 +394110,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393985
394110
|
}
|
|
393986
394111
|
emitter.setLanguage("dart");
|
|
393987
394112
|
await runDartTextExtractors(dartPath, emitter);
|
|
394113
|
+
await emitter.flush();
|
|
393988
394114
|
return;
|
|
393989
394115
|
}
|
|
393990
394116
|
if (opts.scalaProject) {
|
|
@@ -393996,6 +394122,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
393996
394122
|
}
|
|
393997
394123
|
emitter.setLanguage("scala");
|
|
393998
394124
|
await runScalaTextExtractors(scalaPath, emitter);
|
|
394125
|
+
await emitter.flush();
|
|
393999
394126
|
return;
|
|
394000
394127
|
}
|
|
394001
394128
|
if (opts.cplusplusProject) {
|
|
@@ -394007,6 +394134,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
394007
394134
|
}
|
|
394008
394135
|
emitter.setLanguage("cplusplus");
|
|
394009
394136
|
await runCppTextExtractors(cppPath, emitter);
|
|
394137
|
+
await emitter.flush();
|
|
394010
394138
|
return;
|
|
394011
394139
|
}
|
|
394012
394140
|
if (opts.cobolProject) {
|
|
@@ -394019,6 +394147,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
394019
394147
|
const copybookPaths = opts.cobolCopybookPaths ? opts.cobolCopybookPaths.split(",").map((p) => resolve2(p.trim())) : [];
|
|
394020
394148
|
emitter.setLanguage("cobol");
|
|
394021
394149
|
await runCobolTextExtractors(cobolPath, copybookPaths, emitter);
|
|
394150
|
+
await emitter.flush();
|
|
394022
394151
|
return;
|
|
394023
394152
|
}
|
|
394024
394153
|
try {
|
|
@@ -394034,6 +394163,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
394034
394163
|
if (sourceFiles.length === 0 && webMarkupFiles.length > 0) {
|
|
394035
394164
|
emitter.setLanguage("web");
|
|
394036
394165
|
await runWebMarkupExtractors(projectPath, emitter, webMarkupFiles);
|
|
394166
|
+
await emitter.flush();
|
|
394037
394167
|
return;
|
|
394038
394168
|
}
|
|
394039
394169
|
const language = detectLanguage(sourceFiles);
|
|
@@ -394048,6 +394178,7 @@ program2.name("vibgrate-hcs-node").description("ts-morph-based HCS fact extracto
|
|
|
394048
394178
|
emitter.setLanguage("web");
|
|
394049
394179
|
await runWebMarkupExtractors(projectPath, emitter, webMarkupFiles);
|
|
394050
394180
|
}
|
|
394181
|
+
await emitter.flush();
|
|
394051
394182
|
emitProgress({ phase: "done", language, fileCount: sourceFiles.length });
|
|
394052
394183
|
} catch (err) {
|
|
394053
394184
|
const error = err instanceof Error ? err : new Error(String(err));
|
package/dist/index.js
CHANGED