@nxuss/lemma 1.39.0 → 1.40.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/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -1
- package/dist/cjs/mcp/cognitiveMap.js +6 -2
- package/dist/cjs/mcp/cognitiveMap.js.map +1 -1
- package/dist/cjs/mcp/index.js +2 -0
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/devtools.js +11 -1
- package/dist/cjs/mcp/tools/devtools.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +57 -14
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/refactor.js +129 -32
- package/dist/cjs/mcp/tools/refactor.js.map +1 -1
- package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/workspace.js +108 -8
- package/dist/cjs/mcp/tools/workspace.js.map +1 -1
- package/dist/cjs/proxy/ProjectStore.d.ts.map +1 -1
- package/dist/cjs/proxy/ProjectStore.js +9 -6
- package/dist/cjs/proxy/ProjectStore.js.map +1 -1
- package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/cjs/subconscious/HostRecall.js +15 -5
- package/dist/cjs/subconscious/HostRecall.js.map +1 -1
- package/dist/cjs/subconscious/NarrowEvidence.d.ts +6 -0
- package/dist/cjs/subconscious/NarrowEvidence.d.ts.map +1 -1
- package/dist/cjs/subconscious/NarrowEvidence.js +32 -47
- package/dist/cjs/subconscious/NarrowEvidence.js.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.d.ts +11 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +80 -11
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
- package/dist/cjs/subconscious/freshness/LocalFsResolver.js +15 -0
- package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -1
- package/dist/cjs/utils/AffectedTests.d.ts +1 -5
- package/dist/cjs/utils/AffectedTests.d.ts.map +1 -1
- package/dist/cjs/utils/AffectedTests.js +5 -37
- package/dist/cjs/utils/AffectedTests.js.map +1 -1
- package/dist/cjs/utils/AtomicFile.d.ts +14 -0
- package/dist/cjs/utils/AtomicFile.d.ts.map +1 -0
- package/dist/cjs/utils/AtomicFile.js +44 -0
- package/dist/cjs/utils/AtomicFile.js.map +1 -0
- package/dist/cjs/utils/AutoContextBundle.js +1 -1
- package/dist/cjs/utils/AutoContextBundle.js.map +1 -1
- package/dist/cjs/utils/BulkFileDigest.js +1 -1
- package/dist/cjs/utils/BulkFileDigest.js.map +1 -1
- package/dist/cjs/utils/ContextSqueezer.d.ts +36 -4
- package/dist/cjs/utils/ContextSqueezer.d.ts.map +1 -1
- package/dist/cjs/utils/ContextSqueezer.js +69 -21
- package/dist/cjs/utils/ContextSqueezer.js.map +1 -1
- package/dist/cjs/utils/FileLock.d.ts +2 -0
- package/dist/cjs/utils/FileLock.d.ts.map +1 -0
- package/dist/cjs/utils/FileLock.js +32 -0
- package/dist/cjs/utils/FileLock.js.map +1 -0
- package/dist/cjs/utils/FileOutline.d.ts +1 -1
- package/dist/cjs/utils/FileOutline.d.ts.map +1 -1
- package/dist/cjs/utils/FileOutline.js +5 -1
- package/dist/cjs/utils/FileOutline.js.map +1 -1
- package/dist/cjs/utils/FixCapture.d.ts.map +1 -1
- package/dist/cjs/utils/FixCapture.js +4 -3
- package/dist/cjs/utils/FixCapture.js.map +1 -1
- package/dist/cjs/utils/GitChanges.d.ts +11 -0
- package/dist/cjs/utils/GitChanges.d.ts.map +1 -0
- package/dist/cjs/utils/GitChanges.js +44 -0
- package/dist/cjs/utils/GitChanges.js.map +1 -0
- package/dist/cjs/utils/JsonKeys.d.ts +17 -0
- package/dist/cjs/utils/JsonKeys.d.ts.map +1 -0
- package/dist/cjs/utils/JsonKeys.js +75 -0
- package/dist/cjs/utils/JsonKeys.js.map +1 -0
- package/dist/cjs/utils/LocalExclude.d.ts +3 -0
- package/dist/cjs/utils/LocalExclude.d.ts.map +1 -0
- package/dist/cjs/utils/LocalExclude.js +68 -0
- package/dist/cjs/utils/LocalExclude.js.map +1 -0
- package/dist/cjs/utils/OtherLanguageSymbols.d.ts.map +1 -1
- package/dist/cjs/utils/OtherLanguageSymbols.js +0 -7
- package/dist/cjs/utils/OtherLanguageSymbols.js.map +1 -1
- package/dist/cjs/utils/OutputDelta.d.ts +14 -2
- package/dist/cjs/utils/OutputDelta.d.ts.map +1 -1
- package/dist/cjs/utils/OutputDelta.js +22 -15
- package/dist/cjs/utils/OutputDelta.js.map +1 -1
- package/dist/cjs/utils/RoiLedger.d.ts.map +1 -1
- package/dist/cjs/utils/RoiLedger.js +7 -3
- package/dist/cjs/utils/RoiLedger.js.map +1 -1
- package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/cjs/utils/SavingsLedger.js +5 -2
- package/dist/cjs/utils/SavingsLedger.js.map +1 -1
- package/dist/cjs/utils/SharedLedgerStore.d.ts.map +1 -1
- package/dist/cjs/utils/SharedLedgerStore.js +2 -1
- package/dist/cjs/utils/SharedLedgerStore.js.map +1 -1
- package/dist/cjs/utils/SurgicalASTInsert.d.ts.map +1 -1
- package/dist/cjs/utils/SurgicalASTInsert.js +2 -1
- package/dist/cjs/utils/SurgicalASTInsert.js.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts +2 -2
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.js +29 -62
- package/dist/cjs/utils/SymbolSurgicalContext.js.map +1 -1
- package/dist/cjs/utils/Utf8Guard.d.ts +23 -0
- package/dist/cjs/utils/Utf8Guard.d.ts.map +1 -0
- package/dist/cjs/utils/Utf8Guard.js +81 -0
- package/dist/cjs/utils/Utf8Guard.js.map +1 -0
- package/dist/cjs/utils/WorkspaceSearch.d.ts.map +1 -1
- package/dist/cjs/utils/WorkspaceSearch.js +26 -8
- package/dist/cjs/utils/WorkspaceSearch.js.map +1 -1
- package/dist/cjs/utils/tsLoader.d.ts +5 -0
- package/dist/cjs/utils/tsLoader.d.ts.map +1 -0
- package/dist/cjs/utils/tsLoader.js +15 -0
- package/dist/cjs/utils/tsLoader.js.map +1 -0
- package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -1
- package/dist/esm/mcp/cognitiveMap.js +6 -2
- package/dist/esm/mcp/cognitiveMap.js.map +1 -1
- package/dist/esm/mcp/index.js +2 -0
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/tools/devtools.d.ts.map +1 -1
- package/dist/esm/mcp/tools/devtools.js +11 -1
- package/dist/esm/mcp/tools/devtools.js.map +1 -1
- package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
- package/dist/esm/mcp/tools/memory.js +57 -14
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/mcp/tools/refactor.d.ts.map +1 -1
- package/dist/esm/mcp/tools/refactor.js +129 -32
- package/dist/esm/mcp/tools/refactor.js.map +1 -1
- package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/esm/mcp/tools/workspace.js +108 -8
- package/dist/esm/mcp/tools/workspace.js.map +1 -1
- package/dist/esm/proxy/ProjectStore.d.ts.map +1 -1
- package/dist/esm/proxy/ProjectStore.js +9 -6
- package/dist/esm/proxy/ProjectStore.js.map +1 -1
- package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/esm/subconscious/HostRecall.js +15 -5
- package/dist/esm/subconscious/HostRecall.js.map +1 -1
- package/dist/esm/subconscious/NarrowEvidence.d.ts +6 -0
- package/dist/esm/subconscious/NarrowEvidence.d.ts.map +1 -1
- package/dist/esm/subconscious/NarrowEvidence.js +24 -7
- package/dist/esm/subconscious/NarrowEvidence.js.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.d.ts +11 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +80 -11
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
- package/dist/esm/subconscious/freshness/LocalFsResolver.js +15 -0
- package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -1
- package/dist/esm/utils/AffectedTests.d.ts +1 -5
- package/dist/esm/utils/AffectedTests.d.ts.map +1 -1
- package/dist/esm/utils/AffectedTests.js +2 -35
- package/dist/esm/utils/AffectedTests.js.map +1 -1
- package/dist/esm/utils/AtomicFile.d.ts +14 -0
- package/dist/esm/utils/AtomicFile.d.ts.map +1 -0
- package/dist/esm/utils/AtomicFile.js +37 -0
- package/dist/esm/utils/AtomicFile.js.map +1 -0
- package/dist/esm/utils/AutoContextBundle.js +1 -1
- package/dist/esm/utils/AutoContextBundle.js.map +1 -1
- package/dist/esm/utils/BulkFileDigest.js +1 -1
- package/dist/esm/utils/BulkFileDigest.js.map +1 -1
- package/dist/esm/utils/ContextSqueezer.d.ts +36 -4
- package/dist/esm/utils/ContextSqueezer.d.ts.map +1 -1
- package/dist/esm/utils/ContextSqueezer.js +67 -21
- package/dist/esm/utils/ContextSqueezer.js.map +1 -1
- package/dist/esm/utils/FileLock.d.ts +2 -0
- package/dist/esm/utils/FileLock.d.ts.map +1 -0
- package/dist/esm/utils/FileLock.js +29 -0
- package/dist/esm/utils/FileLock.js.map +1 -0
- package/dist/esm/utils/FileOutline.d.ts +1 -1
- package/dist/esm/utils/FileOutline.d.ts.map +1 -1
- package/dist/esm/utils/FileOutline.js +5 -1
- package/dist/esm/utils/FileOutline.js.map +1 -1
- package/dist/esm/utils/FixCapture.d.ts.map +1 -1
- package/dist/esm/utils/FixCapture.js +3 -2
- package/dist/esm/utils/FixCapture.js.map +1 -1
- package/dist/esm/utils/GitChanges.d.ts +11 -0
- package/dist/esm/utils/GitChanges.d.ts.map +1 -0
- package/dist/esm/utils/GitChanges.js +41 -0
- package/dist/esm/utils/GitChanges.js.map +1 -0
- package/dist/esm/utils/JsonKeys.d.ts +17 -0
- package/dist/esm/utils/JsonKeys.d.ts.map +1 -0
- package/dist/esm/utils/JsonKeys.js +71 -0
- package/dist/esm/utils/JsonKeys.js.map +1 -0
- package/dist/esm/utils/LocalExclude.d.ts +3 -0
- package/dist/esm/utils/LocalExclude.d.ts.map +1 -0
- package/dist/esm/utils/LocalExclude.js +62 -0
- package/dist/esm/utils/LocalExclude.js.map +1 -0
- package/dist/esm/utils/OtherLanguageSymbols.d.ts.map +1 -1
- package/dist/esm/utils/OtherLanguageSymbols.js +0 -7
- package/dist/esm/utils/OtherLanguageSymbols.js.map +1 -1
- package/dist/esm/utils/OutputDelta.d.ts +14 -2
- package/dist/esm/utils/OutputDelta.d.ts.map +1 -1
- package/dist/esm/utils/OutputDelta.js +22 -15
- package/dist/esm/utils/OutputDelta.js.map +1 -1
- package/dist/esm/utils/RoiLedger.d.ts.map +1 -1
- package/dist/esm/utils/RoiLedger.js +7 -3
- package/dist/esm/utils/RoiLedger.js.map +1 -1
- package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/esm/utils/SavingsLedger.js +5 -2
- package/dist/esm/utils/SavingsLedger.js.map +1 -1
- package/dist/esm/utils/SharedLedgerStore.d.ts.map +1 -1
- package/dist/esm/utils/SharedLedgerStore.js +2 -1
- package/dist/esm/utils/SharedLedgerStore.js.map +1 -1
- package/dist/esm/utils/SurgicalASTInsert.d.ts.map +1 -1
- package/dist/esm/utils/SurgicalASTInsert.js +2 -1
- package/dist/esm/utils/SurgicalASTInsert.js.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.d.ts +2 -2
- package/dist/esm/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.js +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.js.map +1 -1
- package/dist/esm/utils/Utf8Guard.d.ts +23 -0
- package/dist/esm/utils/Utf8Guard.d.ts.map +1 -0
- package/dist/esm/utils/Utf8Guard.js +74 -0
- package/dist/esm/utils/Utf8Guard.js.map +1 -0
- package/dist/esm/utils/WorkspaceSearch.d.ts.map +1 -1
- package/dist/esm/utils/WorkspaceSearch.js +26 -8
- package/dist/esm/utils/WorkspaceSearch.js.map +1 -1
- package/dist/esm/utils/tsLoader.d.ts +5 -0
- package/dist/esm/utils/tsLoader.d.ts.map +1 -0
- package/dist/esm/utils/tsLoader.js +13 -0
- package/dist/esm/utils/tsLoader.js.map +1 -0
- package/package.json +2 -2
|
@@ -24,6 +24,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
24
24
|
const crypto_1 = __importDefault(require("crypto"));
|
|
25
25
|
const SymbolSurgicalContext_1 = require("../../utils/SymbolSurgicalContext");
|
|
26
26
|
const OtherLanguageSymbols_1 = require("../../utils/OtherLanguageSymbols");
|
|
27
|
+
const JsonKeys_1 = require("../../utils/JsonKeys");
|
|
27
28
|
class LocalFsResolver {
|
|
28
29
|
constructor(rootDir = process.cwd()) {
|
|
29
30
|
this.lane = 'A';
|
|
@@ -58,6 +59,20 @@ class LocalFsResolver {
|
|
|
58
59
|
}
|
|
59
60
|
hashSymbol(pathStr, symbolName) {
|
|
60
61
|
const abs = this.resolvePath(pathStr);
|
|
62
|
+
if ((0, JsonKeys_1.isJsonFile)(abs)) {
|
|
63
|
+
// A JSON "symbol" is a dotted key path (`version`, `scripts.build`). Its value is hashed in
|
|
64
|
+
// canonical form, so reformatting or reordering keys does not count as a change.
|
|
65
|
+
try {
|
|
66
|
+
const text = (0, JsonKeys_1.jsonKeyText)(abs, fs_1.default.readFileSync(abs, 'utf8'), symbolName);
|
|
67
|
+
if (text === null)
|
|
68
|
+
return { raw: 'MISSING', normalized: 'MISSING' };
|
|
69
|
+
const hash = crypto_1.default.createHash('sha256').update(text).digest('hex');
|
|
70
|
+
return { raw: hash, normalized: hash };
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return { raw: 'MISSING', normalized: 'MISSING' };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
61
76
|
if ((0, OtherLanguageSymbols_1.supportsOtherLanguage)(abs)) {
|
|
62
77
|
// Python, Go, Java… — the TypeScript compiler cannot read them, so a declaration locator
|
|
63
78
|
// does. A name it cannot place is MISSING, like a deleted symbol, and the memory goes stale.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalFsResolver.js","sourceRoot":"","sources":["../../../../src/subconscious/freshness/LocalFsResolver.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;GAcG;AACH,4CAAoB;AACpB,gDAAwB;AACxB,oDAA4B;AAC5B,6EAAoG;AACpG,2EAA0H;
|
|
1
|
+
{"version":3,"file":"LocalFsResolver.js","sourceRoot":"","sources":["../../../../src/subconscious/freshness/LocalFsResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,11 +37,7 @@ export interface AffectedTestsResult {
|
|
|
37
37
|
/** Changed files absent from the import graph — their blast radius is unknown. */
|
|
38
38
|
ungraphed: string[];
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
* Files changed versus a base ref, from git. Includes the working tree (staged and
|
|
42
|
-
* unstaged) because the whole point is to test edits that have not been committed yet.
|
|
43
|
-
*/
|
|
44
|
-
export declare function changedFilesFromGit(workspaceRoot: string, baseRef?: string): string[];
|
|
40
|
+
export { changedFilesFromGit } from "./GitChanges";
|
|
45
41
|
export interface AffectedTestsOptions {
|
|
46
42
|
workspaceRoot: string;
|
|
47
43
|
/** Explicit file list; when omitted the diff is read from git. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AffectedTests.d.ts","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;
|
|
1
|
+
{"version":3,"file":"AffectedTests.d.ts","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uFAAuF;IACvF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,oGAAoG;IACpG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAeD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAoEnD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAmEpF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA4BvE"}
|
|
@@ -23,13 +23,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
23
23
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.changedFilesFromGit = void 0;
|
|
26
27
|
exports.isTestFile = isTestFile;
|
|
27
|
-
exports.changedFilesFromGit = changedFilesFromGit;
|
|
28
28
|
exports.findAffectedTests = findAffectedTests;
|
|
29
29
|
exports.formatAffectedTests = formatAffectedTests;
|
|
30
30
|
const fs_1 = __importDefault(require("fs"));
|
|
31
31
|
const path_1 = __importDefault(require("path"));
|
|
32
|
-
const child_process_1 = require("child_process");
|
|
33
32
|
const DepGraph_1 = require("./DepGraph");
|
|
34
33
|
/** A file is a test if its name says so, or if it lives in a conventional test directory. */
|
|
35
34
|
const TEST_FILE_RE = /(\.|_)(test|spec)\.[tj]sx?$/;
|
|
@@ -52,40 +51,9 @@ function detectRunner(workspaceRoot) {
|
|
|
52
51
|
}
|
|
53
52
|
return "unknown";
|
|
54
53
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
*/
|
|
59
|
-
function changedFilesFromGit(workspaceRoot, baseRef) {
|
|
60
|
-
const run = (args) => {
|
|
61
|
-
try {
|
|
62
|
-
// stderr is discarded rather than inherited: outside a repo git writes its full usage
|
|
63
|
-
// text to the parent's stderr, which is noise for a case we already handle by returning [].
|
|
64
|
-
const out = (0, child_process_1.execFileSync)("git", args, {
|
|
65
|
-
cwd: workspaceRoot,
|
|
66
|
-
encoding: "utf8",
|
|
67
|
-
timeout: 15000,
|
|
68
|
-
stdio: ["ignore", "pipe", "ignore"],
|
|
69
|
-
});
|
|
70
|
-
return out.split("\n").map((l) => l.trim()).filter(Boolean);
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
const files = new Set();
|
|
77
|
-
// Working tree against HEAD, plus untracked files — an entirely new module is a change
|
|
78
|
-
// even though `git diff` never mentions it.
|
|
79
|
-
for (const f of run(["diff", "--name-only", "HEAD"]))
|
|
80
|
-
files.add(f);
|
|
81
|
-
for (const f of run(["ls-files", "--others", "--exclude-standard"]))
|
|
82
|
-
files.add(f);
|
|
83
|
-
if (baseRef) {
|
|
84
|
-
for (const f of run(["diff", "--name-only", `${baseRef}...HEAD`]))
|
|
85
|
-
files.add(f);
|
|
86
|
-
}
|
|
87
|
-
return [...files];
|
|
88
|
-
}
|
|
54
|
+
var GitChanges_1 = require("./GitChanges");
|
|
55
|
+
Object.defineProperty(exports, "changedFilesFromGit", { enumerable: true, get: function () { return GitChanges_1.changedFilesFromGit; } });
|
|
56
|
+
const GitChanges_2 = require("./GitChanges");
|
|
89
57
|
/**
|
|
90
58
|
* Walk reverse import edges from every changed file and collect the test files reached.
|
|
91
59
|
*
|
|
@@ -163,7 +131,7 @@ function findAffectedTests(options) {
|
|
|
163
131
|
const runner = detectRunner(workspaceRoot);
|
|
164
132
|
const changed = (options.files && options.files.length > 0
|
|
165
133
|
? options.files
|
|
166
|
-
: changedFilesFromGit(workspaceRoot, options.baseRef)).map((f) => f.replace(/\\/g, "/").replace(/^\.\//, ""));
|
|
134
|
+
: (0, GitChanges_2.changedFilesFromGit)(workspaceRoot, options.baseRef)).map((f) => f.replace(/\\/g, "/").replace(/^\.\//, ""));
|
|
167
135
|
const graph = (0, DepGraph_1.buildDepGraphMap)(workspaceRoot);
|
|
168
136
|
const allTests = [...graph.keys()].filter(isTestFile);
|
|
169
137
|
const base = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AffectedTests.js","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG
|
|
1
|
+
{"version":3,"file":"AffectedTests.js","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State files (ledger, stats, free-tier counter) used to be written in place with writeFileSync.
|
|
3
|
+
* A crash or a second process mid-write leaves truncated JSON; the loader then swallowed the parse
|
|
4
|
+
* error, started from empty and the next save overwrote whatever was left. For the usage counter
|
|
5
|
+
* that also reset the monthly quota.
|
|
6
|
+
*/
|
|
7
|
+
/** Writes via a temp file in the same directory and renames it over `target`, so readers see the old or the new file, never half of one. */
|
|
8
|
+
export declare function writeFileAtomic(target: string, data: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Moves an unreadable state file to `<file>.corrupt-<time>` so the next save cannot destroy it.
|
|
11
|
+
* Returns the new path, or null when the move itself failed.
|
|
12
|
+
*/
|
|
13
|
+
export declare function quarantineCorrupt(file: string): string | null;
|
|
14
|
+
//# sourceMappingURL=AtomicFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AtomicFile.d.ts","sourceRoot":"","sources":["../../../src/utils/AtomicFile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,4IAA4I;AAC5I,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CASlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* State files (ledger, stats, free-tier counter) used to be written in place with writeFileSync.
|
|
4
|
+
* A crash or a second process mid-write leaves truncated JSON; the loader then swallowed the parse
|
|
5
|
+
* error, started from empty and the next save overwrote whatever was left. For the usage counter
|
|
6
|
+
* that also reset the monthly quota.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.writeFileAtomic = writeFileAtomic;
|
|
13
|
+
exports.quarantineCorrupt = quarantineCorrupt;
|
|
14
|
+
const fs_1 = __importDefault(require("fs"));
|
|
15
|
+
/** Writes via a temp file in the same directory and renames it over `target`, so readers see the old or the new file, never half of one. */
|
|
16
|
+
function writeFileAtomic(target, data) {
|
|
17
|
+
const tmp = `${target}.tmp.${process.pid}.${Date.now().toString(36)}`;
|
|
18
|
+
try {
|
|
19
|
+
fs_1.default.writeFileSync(tmp, data, 'utf8');
|
|
20
|
+
fs_1.default.renameSync(tmp, target);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
try {
|
|
24
|
+
fs_1.default.unlinkSync(tmp);
|
|
25
|
+
}
|
|
26
|
+
catch { }
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Moves an unreadable state file to `<file>.corrupt-<time>` so the next save cannot destroy it.
|
|
32
|
+
* Returns the new path, or null when the move itself failed.
|
|
33
|
+
*/
|
|
34
|
+
function quarantineCorrupt(file) {
|
|
35
|
+
const dest = `${file}.corrupt-${Date.now().toString(36)}`;
|
|
36
|
+
try {
|
|
37
|
+
fs_1.default.renameSync(file, dest);
|
|
38
|
+
return dest;
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=AtomicFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AtomicFile.js","sourceRoot":"","sources":["../../../src/utils/AtomicFile.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAKH,0CASC;AAMD,8CAQC;AA1BD,4CAAoB;AAEpB,4IAA4I;AAC5I,SAAgB,eAAe,CAAC,MAAc,EAAE,IAAY;IAC1D,MAAM,GAAG,GAAG,GAAG,MAAM,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACtE,IAAI,CAAC;QACH,YAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,YAAE,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACpC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,GAAG,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1D,IAAI,CAAC;QACH,YAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -100,7 +100,7 @@ function autoContextBundle(filePath, projectRoot) {
|
|
|
100
100
|
const fpResult = (0, FileFingerprint_1.computeFingerprint)(filePath, projectRoot);
|
|
101
101
|
const resolved = path_1.default.resolve(projectRoot, filePath);
|
|
102
102
|
const content = fs_1.default.existsSync(resolved)
|
|
103
|
-
? (0, ContextSqueezer_1.squeezeCode)(fpResult.content || fs_1.default.readFileSync(resolved, 'utf8'))
|
|
103
|
+
? (0, ContextSqueezer_1.squeezeCode)(fpResult.content || fs_1.default.readFileSync(resolved, 'utf8'), filePath)
|
|
104
104
|
: '';
|
|
105
105
|
const importTree = (0, ImportTreeContext_1.buildImportTree)(filePath, projectRoot, 1);
|
|
106
106
|
const rootNode = importTree.nodes.find(n => n.file === filePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoContextBundle.js","sourceRoot":"","sources":["../../../src/utils/AutoContextBundle.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AutoContextBundle.js","sourceRoot":"","sources":["../../../src/utils/AutoContextBundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ function bulkFileDigest(filePaths, projectRoot, query = '', maxTotalTokens = 400
|
|
|
30
30
|
if (!fs_1.default.existsSync(resolved))
|
|
31
31
|
return { fp, content: '', tokens: 0, hash: fpResult.hash };
|
|
32
32
|
const raw = fpResult.content || fs_1.default.readFileSync(resolved, 'utf8');
|
|
33
|
-
const squeezed = (0, ContextSqueezer_1.squeezeCode)(raw);
|
|
33
|
+
const squeezed = (0, ContextSqueezer_1.squeezeCode)(raw, fp);
|
|
34
34
|
return { fp, content: squeezed, tokens: estimateTokens(squeezed), hash: fpResult.hash };
|
|
35
35
|
});
|
|
36
36
|
const scored = entries.map(e => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkFileDigest.js","sourceRoot":"","sources":["../../../src/utils/BulkFileDigest.ts"],"names":[],"mappings":";;;;;AAiCA,wCA8CC;AA/ED,4CAAoB;AACpB,gDAAwB;AACxB,uDAAuD;AACvD,uDAAgD;AAehD,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,cAAc,CAC5B,SAAmB,EACnB,WAAmB,EACnB,QAAgB,EAAE,EAClB,iBAAyB,IAAI;IAE7B,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,QAAQ,GAAG,IAAA,oCAAkB,EAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,IAAI,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAA,6BAAW,EAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"BulkFileDigest.js","sourceRoot":"","sources":["../../../src/utils/BulkFileDigest.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,13 @@ export interface SqueezeResult {
|
|
|
20
20
|
* a glob such as `src/**\/*.ts` (leaving `src*.ts`). Anything the scanner is unsure about is kept:
|
|
21
21
|
* a stray comment costs a few tokens, a wrongly deleted line misleads the reader.
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
23
|
+
export interface CommentOptions {
|
|
24
|
+
/** `// …` is a comment (JS family, C family, Go, Rust, SCSS…). Off for CSS, Markdown, YAML… */
|
|
25
|
+
line?: boolean;
|
|
26
|
+
/** `/* … *\/` is a comment. */
|
|
27
|
+
block?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function stripComments(code: string, options?: CommentOptions): string;
|
|
24
30
|
/**
|
|
25
31
|
* Compress code structure by removing redundant whitespace and blank lines
|
|
26
32
|
*/
|
|
@@ -32,9 +38,34 @@ export declare function detectFunctionDeclaration(context: string): string | nul
|
|
|
32
38
|
*/
|
|
33
39
|
export declare function treeShakeCode(code: string, query: string): string;
|
|
34
40
|
/**
|
|
35
|
-
*
|
|
41
|
+
* Drops blank lines and trailing spaces and nothing else. For languages where indentation IS the
|
|
42
|
+
* structure (Python, YAML, Makefile tabs) and for prose, where collapsing leading whitespace turns
|
|
43
|
+
* `if x:\n return 1\nelse:\n return 2` into four lines at one level and a nested YAML tree
|
|
44
|
+
* into a flat list, which a reader then misinterprets without any sign that it was altered.
|
|
45
|
+
*/
|
|
46
|
+
export declare function compactKeepIndent(code: string): string;
|
|
47
|
+
/** What squeezing may do to a file, decided by what kind of file it is. */
|
|
48
|
+
interface SqueezeProfile {
|
|
49
|
+
lineComments: boolean;
|
|
50
|
+
blockComments: boolean;
|
|
51
|
+
htmlComments: boolean;
|
|
52
|
+
imports: boolean;
|
|
53
|
+
/** `#` instead of `//` for the marker that lists the removed imports. */
|
|
54
|
+
hashMarker: boolean;
|
|
55
|
+
keepIndent: boolean;
|
|
56
|
+
}
|
|
57
|
+
export declare function squeezeProfileFor(filePath: string): SqueezeProfile;
|
|
58
|
+
/**
|
|
59
|
+
* Squeezes a block of source code.
|
|
60
|
+
*
|
|
61
|
+
* With a `filePath` the rules follow the kind of file: `//` and `/* *\/` are only comments where
|
|
62
|
+
* the language says so, import lines are only listed away in languages that have them, and
|
|
63
|
+
* indentation is only collapsed where it carries no meaning. The rules used to be JavaScript's for
|
|
64
|
+
* every file, which cut Markdown prose at the first `//`, lost the rest of a CSS line after
|
|
65
|
+
* `url(//cdn…)`, and flattened Python and YAML. Without a path (a clipboard paste, a prompt) the
|
|
66
|
+
* old JavaScript-family behaviour applies.
|
|
36
67
|
*/
|
|
37
|
-
export declare function squeezeCode(code: string): string;
|
|
68
|
+
export declare function squeezeCode(code: string, filePath?: string): string;
|
|
38
69
|
/**
|
|
39
70
|
* Detects the file path from the first line comment inside a code block
|
|
40
71
|
*/
|
|
@@ -84,7 +115,7 @@ export declare function pruneHistoryMessages(messages: any[], options?: {
|
|
|
84
115
|
/**
|
|
85
116
|
* Strip import statements and require declarations from JavaScript, TypeScript, Python and CSS code
|
|
86
117
|
*/
|
|
87
|
-
export declare function stripImports(code: string): string;
|
|
118
|
+
export declare function stripImports(code: string, markerPrefix?: '//' | '#'): string;
|
|
88
119
|
/**
|
|
89
120
|
* Generate a highly compact, unified line-by-line diff between two versions of code blocks
|
|
90
121
|
*/
|
|
@@ -98,4 +129,5 @@ export declare function filterHighDensityRAG(prompt: string, query: string): str
|
|
|
98
129
|
* Detects and collapses consecutive repeating lines in logs, stack traces or terminal dumps.
|
|
99
130
|
*/
|
|
100
131
|
export declare function collapseRepetitiveLogs(text: string): string;
|
|
132
|
+
export {};
|
|
101
133
|
//# sourceMappingURL=ContextSqueezer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextSqueezer.d.ts","sourceRoot":"","sources":["../../../src/utils/ContextSqueezer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ContextSqueezer.d.ts","sourceRoot":"","sources":["../../../src/utils/ContextSqueezer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ exports.stripComments = stripComments;
|
|
|
11
11
|
exports.compactWhitespace = compactWhitespace;
|
|
12
12
|
exports.detectFunctionDeclaration = detectFunctionDeclaration;
|
|
13
13
|
exports.treeShakeCode = treeShakeCode;
|
|
14
|
+
exports.compactKeepIndent = compactKeepIndent;
|
|
15
|
+
exports.squeezeProfileFor = squeezeProfileFor;
|
|
14
16
|
exports.squeezeCode = squeezeCode;
|
|
15
17
|
exports.detectFilePath = detectFilePath;
|
|
16
18
|
exports.squeezePrompt = squeezePrompt;
|
|
@@ -21,16 +23,9 @@ exports.stripImports = stripImports;
|
|
|
21
23
|
exports.generateAstDiff = generateAstDiff;
|
|
22
24
|
exports.filterHighDensityRAG = filterHighDensityRAG;
|
|
23
25
|
exports.collapseRepetitiveLogs = collapseRepetitiveLogs;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
* A scanner, not a pair of regexes: `//` and `/*` inside a string, a template literal or a regex
|
|
28
|
-
* literal are not comments. The previous implementation cut every line at its first `//`, so
|
|
29
|
-
* `` `file://${path}` `` lost the rest of its line, and its `/* … *\/` regex deleted the `/**\/` in
|
|
30
|
-
* a glob such as `src/**\/*.ts` (leaving `src*.ts`). Anything the scanner is unsure about is kept:
|
|
31
|
-
* a stray comment costs a few tokens, a wrongly deleted line misleads the reader.
|
|
32
|
-
*/
|
|
33
|
-
function stripComments(code) {
|
|
26
|
+
function stripComments(code, options = {}) {
|
|
27
|
+
const lineComments = options.line !== false;
|
|
28
|
+
const blockComments = options.block !== false;
|
|
34
29
|
const n = code.length;
|
|
35
30
|
let out = '';
|
|
36
31
|
let i = 0;
|
|
@@ -144,14 +139,15 @@ function stripComments(code) {
|
|
|
144
139
|
copyTemplate();
|
|
145
140
|
continue;
|
|
146
141
|
}
|
|
147
|
-
if (c === '/' && d === '*') {
|
|
142
|
+
if (c === '/' && d === '*' && blockComments) {
|
|
148
143
|
const end = code.indexOf('*/', i + 2);
|
|
149
144
|
i = end === -1 ? n : end + 2; // block comment: removed entirely, newlines included
|
|
150
145
|
continue;
|
|
151
146
|
}
|
|
152
|
-
if (c === '/' && d === '/') {
|
|
153
|
-
// `scheme://` is a URL, not a comment (http, https, file, ws, s3, …)
|
|
154
|
-
|
|
147
|
+
if (c === '/' && d === '/' && lineComments) {
|
|
148
|
+
// `scheme://` is a URL, not a comment (http, https, file, ws, s3, …); so is the
|
|
149
|
+
// protocol-relative `url(//cdn.example.com/a.png)` of a stylesheet.
|
|
150
|
+
if ((code[i - 1] === ':' && /[a-z][a-z0-9+.-]*:$/i.test(out.slice(-24))) || /url\(\s*['"]?$/i.test(out.slice(-12))) {
|
|
155
151
|
out += '//';
|
|
156
152
|
i += 2;
|
|
157
153
|
continue;
|
|
@@ -264,12 +260,64 @@ function treeShakeCode(code, query) {
|
|
|
264
260
|
return compactWhitespace(resultLines.join('\n'));
|
|
265
261
|
}
|
|
266
262
|
/**
|
|
267
|
-
*
|
|
263
|
+
* Drops blank lines and trailing spaces and nothing else. For languages where indentation IS the
|
|
264
|
+
* structure (Python, YAML, Makefile tabs) and for prose, where collapsing leading whitespace turns
|
|
265
|
+
* `if x:\n return 1\nelse:\n return 2` into four lines at one level and a nested YAML tree
|
|
266
|
+
* into a flat list, which a reader then misinterprets without any sign that it was altered.
|
|
268
267
|
*/
|
|
269
|
-
function
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
268
|
+
function compactKeepIndent(code) {
|
|
269
|
+
return code
|
|
270
|
+
.split('\n')
|
|
271
|
+
.map((line) => line.trimEnd())
|
|
272
|
+
.filter((line) => line.trim().length > 0)
|
|
273
|
+
.join('\n');
|
|
274
|
+
}
|
|
275
|
+
const BRACE = { lineComments: true, blockComments: true, htmlComments: false, imports: true, hashMarker: false, keepIndent: false };
|
|
276
|
+
const SCSS = { ...BRACE, imports: true };
|
|
277
|
+
const CSS = { ...BRACE, lineComments: false };
|
|
278
|
+
const PYTHON = { lineComments: false, blockComments: false, htmlComments: false, imports: true, hashMarker: true, keepIndent: true };
|
|
279
|
+
const MARKUP = { lineComments: false, blockComments: false, htmlComments: true, imports: false, hashMarker: false, keepIndent: false };
|
|
280
|
+
const JSON_LIKE = { lineComments: false, blockComments: false, htmlComments: false, imports: false, hashMarker: false, keepIndent: false };
|
|
281
|
+
/** Prose, YAML, shell, SQL, Ruby, Makefiles, unknown: nothing is a comment we can be sure of. */
|
|
282
|
+
const PLAIN = { lineComments: false, blockComments: false, htmlComments: false, imports: false, hashMarker: false, keepIndent: true };
|
|
283
|
+
const BRACE_EXT = /\.(?:[cm]?[jt]sx?|java|c|h|cc|cpp|cxx|hpp|hh|cs|go|rs|swift|kt|kts|scala|dart|php|m|mm|groovy)$/i;
|
|
284
|
+
function squeezeProfileFor(filePath) {
|
|
285
|
+
const f = filePath.toLowerCase();
|
|
286
|
+
if (BRACE_EXT.test(f))
|
|
287
|
+
return BRACE;
|
|
288
|
+
if (/\.(?:scss|less|sass)$/.test(f))
|
|
289
|
+
return SCSS;
|
|
290
|
+
if (/\.css$/.test(f))
|
|
291
|
+
return CSS;
|
|
292
|
+
if (/\.pyi?$/.test(f))
|
|
293
|
+
return PYTHON;
|
|
294
|
+
if (/\.(?:html?|xml|svg|vue|svelte|xhtml)$/.test(f))
|
|
295
|
+
return MARKUP;
|
|
296
|
+
if (/\.(?:json|jsonl|ndjson|geojson)$/.test(f))
|
|
297
|
+
return JSON_LIKE;
|
|
298
|
+
return PLAIN;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Squeezes a block of source code.
|
|
302
|
+
*
|
|
303
|
+
* With a `filePath` the rules follow the kind of file: `//` and `/* *\/` are only comments where
|
|
304
|
+
* the language says so, import lines are only listed away in languages that have them, and
|
|
305
|
+
* indentation is only collapsed where it carries no meaning. The rules used to be JavaScript's for
|
|
306
|
+
* every file, which cut Markdown prose at the first `//`, lost the rest of a CSS line after
|
|
307
|
+
* `url(//cdn…)`, and flattened Python and YAML. Without a path (a clipboard paste, a prompt) the
|
|
308
|
+
* old JavaScript-family behaviour applies.
|
|
309
|
+
*/
|
|
310
|
+
function squeezeCode(code, filePath) {
|
|
311
|
+
const profile = filePath ? squeezeProfileFor(filePath) : BRACE;
|
|
312
|
+
let out = code;
|
|
313
|
+
if (profile.lineComments || profile.blockComments) {
|
|
314
|
+
out = stripComments(out, { line: profile.lineComments, block: profile.blockComments });
|
|
315
|
+
}
|
|
316
|
+
if (profile.htmlComments)
|
|
317
|
+
out = out.replace(/<!--[\s\S]*?-->/g, '');
|
|
318
|
+
if (profile.imports)
|
|
319
|
+
out = stripImports(out, profile.hashMarker ? '#' : '//');
|
|
320
|
+
return profile.keepIndent ? compactKeepIndent(out) : compactWhitespace(out);
|
|
273
321
|
}
|
|
274
322
|
/**
|
|
275
323
|
* Detects the file path from the first line comment inside a code block
|
|
@@ -569,7 +617,7 @@ function isImportLine(trimmed) {
|
|
|
569
617
|
/**
|
|
570
618
|
* Strip import statements and require declarations from JavaScript, TypeScript, Python and CSS code
|
|
571
619
|
*/
|
|
572
|
-
function stripImports(code) {
|
|
620
|
+
function stripImports(code, markerPrefix = '//') {
|
|
573
621
|
const lines = code.split('\n');
|
|
574
622
|
let removedCount = 0;
|
|
575
623
|
const specifiers = [];
|
|
@@ -609,7 +657,7 @@ function stripImports(code) {
|
|
|
609
657
|
const detail = specifiers.length > 0 ? `: ${listed}${extra}` : '';
|
|
610
658
|
// Keep a shebang first: a header above it turns `#!/usr/bin/env node` into a syntax error.
|
|
611
659
|
const at = processedLines.length > 0 && processedLines[0].startsWith('#!') ? 1 : 0;
|
|
612
|
-
processedLines.splice(at, 0,
|
|
660
|
+
processedLines.splice(at, 0, `${markerPrefix} [Lemma Squeezer: Squeezed ${removedCount} import/dependency lines${detail}]`);
|
|
613
661
|
}
|
|
614
662
|
return processedLines.join('\n');
|
|
615
663
|
}
|