code-kg 0.1.6 → 0.1.7
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/server/ui.js
CHANGED
|
@@ -576,9 +576,13 @@ function renderUiHtml() {
|
|
|
576
576
|
const SEARCH_DEBOUNCE_MS = 150;
|
|
577
577
|
const WASM_LAYOUT_ASSET = '/assets/vendor/graph-layout.wasm';
|
|
578
578
|
const WASM_LAYOUT_ITERATIONS = 56;
|
|
579
|
+
const WASM_WORKER_TIMEOUT_MS = 9000;
|
|
580
|
+
const EDGE_CHUNK_THRESHOLD = 20000;
|
|
581
|
+
const EDGE_CHUNK_SIZE = 7000;
|
|
582
|
+
const AUX_LOAD_DELAY_MS = 120;
|
|
579
583
|
|
|
580
584
|
const state = {
|
|
581
|
-
view: '
|
|
585
|
+
view: 'moduleGraph',
|
|
582
586
|
graph: null,
|
|
583
587
|
graphData: { nodes: [], links: [], nodeById: new Map() },
|
|
584
588
|
graphMeta: null,
|
|
@@ -589,6 +593,14 @@ function renderUiHtml() {
|
|
|
589
593
|
wasmLayout: null,
|
|
590
594
|
wasmReady: false,
|
|
591
595
|
wasmFailed: false,
|
|
596
|
+
wasmWorker: null,
|
|
597
|
+
wasmWorkerReady: false,
|
|
598
|
+
wasmWorkerFailed: false,
|
|
599
|
+
wasmWorkerSeq: 0,
|
|
600
|
+
wasmWorkerPending: new Map(),
|
|
601
|
+
graphChunkTimer: null,
|
|
602
|
+
graphChunkToken: 0,
|
|
603
|
+
sidePanelToken: 0,
|
|
592
604
|
layoutEngine: 'js',
|
|
593
605
|
selectedNodeId: '',
|
|
594
606
|
searchTerm: '',
|
|
@@ -705,6 +717,165 @@ function renderUiHtml() {
|
|
|
705
717
|
return 1;
|
|
706
718
|
}
|
|
707
719
|
|
|
720
|
+
function isWasmLayoutEngine(value) {
|
|
721
|
+
return value === 'wasm' || value === 'wasm-worker';
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
function buildWasmWorkerSource() {
|
|
725
|
+
return [
|
|
726
|
+
"'use strict';",
|
|
727
|
+
"const WASM_LAYOUT_ASSET = " + JSON.stringify(WASM_LAYOUT_ASSET) + ";",
|
|
728
|
+
"let wasm = null;",
|
|
729
|
+
"let wasmReady = false;",
|
|
730
|
+
"let wasmFailed = false;",
|
|
731
|
+
"async function ensureWasm() {",
|
|
732
|
+
" if (wasmReady && wasm) return true;",
|
|
733
|
+
" if (wasmFailed || typeof WebAssembly !== 'object') return false;",
|
|
734
|
+
" try {",
|
|
735
|
+
" const response = await fetch(WASM_LAYOUT_ASSET);",
|
|
736
|
+
" if (!response.ok) throw new Error('WASM fetch failed: ' + response.status);",
|
|
737
|
+
" const fallback = response.clone();",
|
|
738
|
+
" let instanceResult;",
|
|
739
|
+
" if (typeof WebAssembly.instantiateStreaming === 'function') {",
|
|
740
|
+
" try {",
|
|
741
|
+
" instanceResult = await WebAssembly.instantiateStreaming(response, {});",
|
|
742
|
+
" } catch (_streamError) {",
|
|
743
|
+
" const bytes = await fallback.arrayBuffer();",
|
|
744
|
+
" instanceResult = await WebAssembly.instantiate(bytes, {});",
|
|
745
|
+
" }",
|
|
746
|
+
" } else {",
|
|
747
|
+
" const bytes = await response.arrayBuffer();",
|
|
748
|
+
" instanceResult = await WebAssembly.instantiate(bytes, {});",
|
|
749
|
+
" }",
|
|
750
|
+
" const exportsObject = instanceResult && instanceResult.instance ? instanceResult.instance.exports : null;",
|
|
751
|
+
" if (!exportsObject || typeof exportsObject.layout_graph !== 'function' || typeof exportsObject.alloc !== 'function' || typeof exportsObject.dealloc !== 'function') {",
|
|
752
|
+
" throw new Error('WASM exports are incomplete.');",
|
|
753
|
+
" }",
|
|
754
|
+
" wasm = exportsObject;",
|
|
755
|
+
" wasmReady = true;",
|
|
756
|
+
" return true;",
|
|
757
|
+
" } catch (_error) {",
|
|
758
|
+
" wasmFailed = true;",
|
|
759
|
+
" return false;",
|
|
760
|
+
" }",
|
|
761
|
+
"}",
|
|
762
|
+
"self.onmessage = async (event) => {",
|
|
763
|
+
" const message = event && event.data && typeof event.data === 'object' ? event.data : {};",
|
|
764
|
+
" const requestId = Number(message.id || 0);",
|
|
765
|
+
" const nodeCount = Number(message.nodeCount || 0);",
|
|
766
|
+
" const iterations = Number(message.iterations || 0);",
|
|
767
|
+
" const seed = Number(message.seed || 0) >>> 0;",
|
|
768
|
+
" const edgeBuffer = message.edgeBuffer;",
|
|
769
|
+
" if (!requestId || nodeCount <= 0 || !(edgeBuffer instanceof ArrayBuffer)) {",
|
|
770
|
+
" self.postMessage({ id: requestId, ok: false });",
|
|
771
|
+
" return;",
|
|
772
|
+
" }",
|
|
773
|
+
" if (!(await ensureWasm())) {",
|
|
774
|
+
" self.postMessage({ id: requestId, ok: false });",
|
|
775
|
+
" return;",
|
|
776
|
+
" }",
|
|
777
|
+
" const edgeArray = new Uint32Array(edgeBuffer);",
|
|
778
|
+
" const outCount = nodeCount * 3;",
|
|
779
|
+
" const edgeBytes = edgeArray.byteLength;",
|
|
780
|
+
" const outBytes = outCount * 4;",
|
|
781
|
+
" let edgePtr = 0;",
|
|
782
|
+
" let outPtr = 0;",
|
|
783
|
+
" try {",
|
|
784
|
+
" edgePtr = wasm.alloc(edgeBytes);",
|
|
785
|
+
" outPtr = wasm.alloc(outBytes);",
|
|
786
|
+
" if ((!edgePtr && edgeBytes > 0) || !outPtr) {",
|
|
787
|
+
" self.postMessage({ id: requestId, ok: false });",
|
|
788
|
+
" return;",
|
|
789
|
+
" }",
|
|
790
|
+
" let memoryBuffer = wasm.memory && wasm.memory.buffer ? wasm.memory.buffer : null;",
|
|
791
|
+
" if (!memoryBuffer) {",
|
|
792
|
+
" self.postMessage({ id: requestId, ok: false });",
|
|
793
|
+
" return;",
|
|
794
|
+
" }",
|
|
795
|
+
" if (edgeArray.length > 0) {",
|
|
796
|
+
" new Uint32Array(memoryBuffer, edgePtr, edgeArray.length).set(edgeArray);",
|
|
797
|
+
" }",
|
|
798
|
+
" const status = wasm.layout_graph(nodeCount, edgePtr, edgeArray.length, outPtr, outCount, iterations, seed);",
|
|
799
|
+
" if (status !== 0) {",
|
|
800
|
+
" self.postMessage({ id: requestId, ok: false, status: status });",
|
|
801
|
+
" return;",
|
|
802
|
+
" }",
|
|
803
|
+
" memoryBuffer = wasm.memory && wasm.memory.buffer ? wasm.memory.buffer : null;",
|
|
804
|
+
" if (!memoryBuffer) {",
|
|
805
|
+
" self.postMessage({ id: requestId, ok: false });",
|
|
806
|
+
" return;",
|
|
807
|
+
" }",
|
|
808
|
+
" const positions = new Float32Array(memoryBuffer, outPtr, outCount);",
|
|
809
|
+
" const copy = new Float32Array(outCount);",
|
|
810
|
+
" copy.set(positions);",
|
|
811
|
+
" self.postMessage({ id: requestId, ok: true, positions: copy.buffer }, [copy.buffer]);",
|
|
812
|
+
" } catch (_error) {",
|
|
813
|
+
" self.postMessage({ id: requestId, ok: false });",
|
|
814
|
+
" } finally {",
|
|
815
|
+
" if (outPtr) wasm.dealloc(outPtr, outBytes);",
|
|
816
|
+
" if (edgePtr) wasm.dealloc(edgePtr, edgeBytes);",
|
|
817
|
+
" }",
|
|
818
|
+
"};"
|
|
819
|
+
].join('\\n');
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
async function ensureWasmLayoutWorker() {
|
|
823
|
+
if (state.wasmWorkerReady && state.wasmWorker) {
|
|
824
|
+
return true;
|
|
825
|
+
}
|
|
826
|
+
if (state.wasmWorkerFailed || typeof Worker !== 'function') {
|
|
827
|
+
return false;
|
|
828
|
+
}
|
|
829
|
+
try {
|
|
830
|
+
const source = buildWasmWorkerSource();
|
|
831
|
+
const blob = new Blob([source], { type: 'text/javascript' });
|
|
832
|
+
const workerUrl = URL.createObjectURL(blob);
|
|
833
|
+
const worker = new Worker(workerUrl);
|
|
834
|
+
URL.revokeObjectURL(workerUrl);
|
|
835
|
+
|
|
836
|
+
worker.onmessage = (event) => {
|
|
837
|
+
const payload = event && event.data && typeof event.data === 'object' ? event.data : {};
|
|
838
|
+
const requestId = Number(payload.id || 0);
|
|
839
|
+
const pending = state.wasmWorkerPending.get(requestId);
|
|
840
|
+
if (!pending) {
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
843
|
+
state.wasmWorkerPending.delete(requestId);
|
|
844
|
+
if (pending.timeoutId) {
|
|
845
|
+
window.clearTimeout(pending.timeoutId);
|
|
846
|
+
}
|
|
847
|
+
if (payload.ok === true && payload.positions instanceof ArrayBuffer) {
|
|
848
|
+
const positions = new Float32Array(payload.positions);
|
|
849
|
+
pending.resolve(positions);
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
pending.resolve(null);
|
|
853
|
+
};
|
|
854
|
+
|
|
855
|
+
worker.onerror = () => {
|
|
856
|
+
state.wasmWorkerFailed = true;
|
|
857
|
+
state.wasmWorkerReady = false;
|
|
858
|
+
state.wasmWorker = null;
|
|
859
|
+
for (const pending of state.wasmWorkerPending.values()) {
|
|
860
|
+
if (pending.timeoutId) {
|
|
861
|
+
window.clearTimeout(pending.timeoutId);
|
|
862
|
+
}
|
|
863
|
+
pending.resolve(null);
|
|
864
|
+
}
|
|
865
|
+
state.wasmWorkerPending.clear();
|
|
866
|
+
};
|
|
867
|
+
|
|
868
|
+
state.wasmWorker = worker;
|
|
869
|
+
state.wasmWorkerReady = true;
|
|
870
|
+
return true;
|
|
871
|
+
} catch (_error) {
|
|
872
|
+
state.wasmWorkerFailed = true;
|
|
873
|
+
state.wasmWorkerReady = false;
|
|
874
|
+
state.wasmWorker = null;
|
|
875
|
+
return false;
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
|
|
708
879
|
async function ensureWasmLayout() {
|
|
709
880
|
if (state.wasmReady && state.wasmLayout) {
|
|
710
881
|
return true;
|
|
@@ -747,6 +918,50 @@ function renderUiHtml() {
|
|
|
747
918
|
}
|
|
748
919
|
}
|
|
749
920
|
|
|
921
|
+
async function runWasmLayoutInWorker(nodeCount, edgeArray, seed) {
|
|
922
|
+
if (!(await ensureWasmLayoutWorker()) || !state.wasmWorker) {
|
|
923
|
+
return null;
|
|
924
|
+
}
|
|
925
|
+
if (!(edgeArray instanceof Uint32Array)) {
|
|
926
|
+
return null;
|
|
927
|
+
}
|
|
928
|
+
if (nodeCount <= 0) {
|
|
929
|
+
return null;
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
return await new Promise((resolve) => {
|
|
933
|
+
state.wasmWorkerSeq += 1;
|
|
934
|
+
const requestId = state.wasmWorkerSeq;
|
|
935
|
+
const timeoutId = window.setTimeout(() => {
|
|
936
|
+
state.wasmWorkerPending.delete(requestId);
|
|
937
|
+
resolve(null);
|
|
938
|
+
}, WASM_WORKER_TIMEOUT_MS);
|
|
939
|
+
|
|
940
|
+
state.wasmWorkerPending.set(requestId, {
|
|
941
|
+
resolve,
|
|
942
|
+
timeoutId
|
|
943
|
+
});
|
|
944
|
+
|
|
945
|
+
try {
|
|
946
|
+
const workerEdgeArray = edgeArray.slice();
|
|
947
|
+
state.wasmWorker.postMessage(
|
|
948
|
+
{
|
|
949
|
+
id: requestId,
|
|
950
|
+
nodeCount,
|
|
951
|
+
iterations: WASM_LAYOUT_ITERATIONS,
|
|
952
|
+
seed,
|
|
953
|
+
edgeBuffer: workerEdgeArray.buffer
|
|
954
|
+
},
|
|
955
|
+
[workerEdgeArray.buffer]
|
|
956
|
+
);
|
|
957
|
+
} catch (_error) {
|
|
958
|
+
window.clearTimeout(timeoutId);
|
|
959
|
+
state.wasmWorkerPending.delete(requestId);
|
|
960
|
+
resolve(null);
|
|
961
|
+
}
|
|
962
|
+
});
|
|
963
|
+
}
|
|
964
|
+
|
|
750
965
|
function stableHash(value) {
|
|
751
966
|
const text = String(value || '');
|
|
752
967
|
let hash = 2166136261;
|
|
@@ -757,6 +972,35 @@ function renderUiHtml() {
|
|
|
757
972
|
return hash >>> 0;
|
|
758
973
|
}
|
|
759
974
|
|
|
975
|
+
function applyLayoutPositions(positions, nodeById) {
|
|
976
|
+
if (!(positions instanceof Float32Array)) {
|
|
977
|
+
return false;
|
|
978
|
+
}
|
|
979
|
+
const expected = state.graphData.nodes.length * 3;
|
|
980
|
+
if (positions.length < expected) {
|
|
981
|
+
return false;
|
|
982
|
+
}
|
|
983
|
+
for (let index = 0; index < state.graphData.nodes.length; index += 1) {
|
|
984
|
+
const node = state.graphData.nodes[index];
|
|
985
|
+
const base = index * 3;
|
|
986
|
+
const x = positions[base];
|
|
987
|
+
const y = positions[base + 1];
|
|
988
|
+
const z = positions[base + 2];
|
|
989
|
+
node.x = x;
|
|
990
|
+
node.y = y;
|
|
991
|
+
node.z = z;
|
|
992
|
+
node.fx = x;
|
|
993
|
+
node.fy = y;
|
|
994
|
+
node.fz = z;
|
|
995
|
+
node.__renderVisible = true;
|
|
996
|
+
nodeById.set(node.id, node);
|
|
997
|
+
}
|
|
998
|
+
for (const link of state.graphData.links) {
|
|
999
|
+
link.__renderVisible = true;
|
|
1000
|
+
}
|
|
1001
|
+
return true;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
760
1004
|
async function applyWasmLayout(seedText) {
|
|
761
1005
|
if (!state.graphData || !Array.isArray(state.graphData.nodes) || !Array.isArray(state.graphData.links)) {
|
|
762
1006
|
return false;
|
|
@@ -791,6 +1035,19 @@ function renderUiHtml() {
|
|
|
791
1035
|
const outCount = state.graphData.nodes.length * 3;
|
|
792
1036
|
const outByteLength = outCount * 4;
|
|
793
1037
|
const edgeByteLength = edgeArray.length * 4;
|
|
1038
|
+
const seed = stableHash(seedText || state.view || 'codekg');
|
|
1039
|
+
|
|
1040
|
+
const workerPositions = await runWasmLayoutInWorker(state.graphData.nodes.length, edgeArray, seed);
|
|
1041
|
+
if (workerPositions && applyLayoutPositions(workerPositions, nodeById)) {
|
|
1042
|
+
state.layoutEngine = 'wasm-worker';
|
|
1043
|
+
return true;
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
if (!(await ensureWasmLayout())) {
|
|
1047
|
+
return false;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
const wasm = state.wasmLayout;
|
|
794
1051
|
let edgePtr = 0;
|
|
795
1052
|
let outPtr = 0;
|
|
796
1053
|
|
|
@@ -809,7 +1066,6 @@ function renderUiHtml() {
|
|
|
809
1066
|
if (edgeArray.length > 0) {
|
|
810
1067
|
new Uint32Array(memoryBuffer, edgePtr, edgeArray.length).set(edgeArray);
|
|
811
1068
|
}
|
|
812
|
-
const seed = stableHash(seedText || state.view || 'codekg');
|
|
813
1069
|
const status = wasm.layout_graph(
|
|
814
1070
|
state.graphData.nodes.length,
|
|
815
1071
|
edgePtr,
|
|
@@ -829,26 +1085,11 @@ function renderUiHtml() {
|
|
|
829
1085
|
return false;
|
|
830
1086
|
}
|
|
831
1087
|
const positions = new Float32Array(memoryBuffer, outPtr, outCount);
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
const x = positions[base];
|
|
836
|
-
const y = positions[base + 1];
|
|
837
|
-
const z = positions[base + 2];
|
|
838
|
-
node.x = x;
|
|
839
|
-
node.y = y;
|
|
840
|
-
node.z = z;
|
|
841
|
-
node.fx = x;
|
|
842
|
-
node.fy = y;
|
|
843
|
-
node.fz = z;
|
|
844
|
-
node.__renderVisible = true;
|
|
845
|
-
nodeById.set(node.id, node);
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
for (const link of state.graphData.links) {
|
|
849
|
-
link.__renderVisible = true;
|
|
1088
|
+
if (applyLayoutPositions(positions, nodeById)) {
|
|
1089
|
+
state.layoutEngine = 'wasm';
|
|
1090
|
+
return true;
|
|
850
1091
|
}
|
|
851
|
-
return
|
|
1092
|
+
return false;
|
|
852
1093
|
} catch (_error) {
|
|
853
1094
|
return false;
|
|
854
1095
|
} finally {
|
|
@@ -910,6 +1151,51 @@ function renderUiHtml() {
|
|
|
910
1151
|
state.graph.graphData(state.graphData);
|
|
911
1152
|
}
|
|
912
1153
|
|
|
1154
|
+
function cancelGraphChunking() {
|
|
1155
|
+
state.graphChunkToken += 1;
|
|
1156
|
+
if (state.graphChunkTimer) {
|
|
1157
|
+
window.clearTimeout(state.graphChunkTimer);
|
|
1158
|
+
state.graphChunkTimer = null;
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
function bindGraphData() {
|
|
1163
|
+
if (!state.graph) {
|
|
1164
|
+
return;
|
|
1165
|
+
}
|
|
1166
|
+
cancelGraphChunking();
|
|
1167
|
+
|
|
1168
|
+
const totalEdges = Array.isArray(state.graphData.links) ? state.graphData.links.length : 0;
|
|
1169
|
+
if (totalEdges <= EDGE_CHUNK_THRESHOLD) {
|
|
1170
|
+
state.graph.graphData(state.graphData);
|
|
1171
|
+
return;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
const nodes = state.graphData.nodes;
|
|
1175
|
+
const links = state.graphData.links;
|
|
1176
|
+
const partialLinks = [];
|
|
1177
|
+
let cursor = 0;
|
|
1178
|
+
const token = state.graphChunkToken;
|
|
1179
|
+
|
|
1180
|
+
const pump = () => {
|
|
1181
|
+
if (!state.graph || token !== state.graphChunkToken) {
|
|
1182
|
+
return;
|
|
1183
|
+
}
|
|
1184
|
+
const nextCursor = Math.min(totalEdges, cursor + EDGE_CHUNK_SIZE);
|
|
1185
|
+
for (; cursor < nextCursor; cursor += 1) {
|
|
1186
|
+
partialLinks.push(links[cursor]);
|
|
1187
|
+
}
|
|
1188
|
+
state.graph.graphData({ nodes, links: partialLinks });
|
|
1189
|
+
if (cursor < totalEdges) {
|
|
1190
|
+
state.graphChunkTimer = window.setTimeout(pump, 0);
|
|
1191
|
+
} else {
|
|
1192
|
+
state.graphChunkTimer = null;
|
|
1193
|
+
}
|
|
1194
|
+
};
|
|
1195
|
+
|
|
1196
|
+
pump();
|
|
1197
|
+
}
|
|
1198
|
+
|
|
913
1199
|
function applyGraphQualitySettings() {
|
|
914
1200
|
if (!state.graph) {
|
|
915
1201
|
return;
|
|
@@ -921,7 +1207,7 @@ function renderUiHtml() {
|
|
|
921
1207
|
graph.numDimensions(3);
|
|
922
1208
|
}
|
|
923
1209
|
|
|
924
|
-
const usingWasmLayout = state.layoutEngine
|
|
1210
|
+
const usingWasmLayout = isWasmLayoutEngine(state.layoutEngine);
|
|
925
1211
|
if (typeof graph.cooldownTicks === 'function') {
|
|
926
1212
|
graph.cooldownTicks(usingWasmLayout ? 0 : mode === 'normal' ? 220 : mode === 'degraded' ? 72 : 28);
|
|
927
1213
|
}
|
|
@@ -1192,6 +1478,7 @@ function renderUiHtml() {
|
|
|
1192
1478
|
' | layout: ' + String(state.layoutEngine).toUpperCase();
|
|
1193
1479
|
|
|
1194
1480
|
if (nodeCount === 0) {
|
|
1481
|
+
cancelGraphChunking();
|
|
1195
1482
|
els.graphEmpty.style.display = 'grid';
|
|
1196
1483
|
state.graph.graphData({ nodes: [], links: [] });
|
|
1197
1484
|
return;
|
|
@@ -1202,7 +1489,7 @@ function renderUiHtml() {
|
|
|
1202
1489
|
refreshGraphVisuals();
|
|
1203
1490
|
return;
|
|
1204
1491
|
}
|
|
1205
|
-
|
|
1492
|
+
bindGraphData();
|
|
1206
1493
|
}
|
|
1207
1494
|
|
|
1208
1495
|
function applySearchHighlights(options) {
|
|
@@ -1251,24 +1538,85 @@ function renderUiHtml() {
|
|
|
1251
1538
|
els.routesCount.textContent = String(counts.routes || 0);
|
|
1252
1539
|
}
|
|
1253
1540
|
|
|
1541
|
+
function getAdaptiveGraphLimit(view) {
|
|
1542
|
+
if (view === 'moduleGraph' || view === 'symbolGraph') {
|
|
1543
|
+
return 0;
|
|
1544
|
+
}
|
|
1545
|
+
const counts = state.lastMeta && state.lastMeta.counts ? state.lastMeta.counts : null;
|
|
1546
|
+
const totalNodes = counts && typeof counts.nodes === 'number' ? counts.nodes : 0;
|
|
1547
|
+
if (totalNodes >= 120000) {
|
|
1548
|
+
return 12000;
|
|
1549
|
+
}
|
|
1550
|
+
if (totalNodes >= 70000) {
|
|
1551
|
+
return 16000;
|
|
1552
|
+
}
|
|
1553
|
+
if (totalNodes >= 30000) {
|
|
1554
|
+
return 22000;
|
|
1555
|
+
}
|
|
1556
|
+
return 0;
|
|
1557
|
+
}
|
|
1558
|
+
|
|
1254
1559
|
async function loadGraph() {
|
|
1255
1560
|
const view = state.view === 'all' ? 'all' : state.view;
|
|
1256
|
-
const
|
|
1561
|
+
const limit = getAdaptiveGraphLimit(view);
|
|
1562
|
+
let graphUrl = '/api/graph?view=' + encodeURIComponent(view);
|
|
1563
|
+
if (limit > 0) {
|
|
1564
|
+
graphUrl += '&limit=' + encodeURIComponent(String(limit));
|
|
1565
|
+
}
|
|
1566
|
+
const data = await readEnvelope(graphUrl);
|
|
1257
1567
|
state.graphData = toGraphData(data);
|
|
1258
|
-
|
|
1568
|
+
const normalizedMeta = normalizeGraphMeta(
|
|
1259
1569
|
data && data.meta ? data.meta : null,
|
|
1260
1570
|
state.graphData.nodes.length,
|
|
1261
1571
|
state.graphData.links.length
|
|
1262
1572
|
);
|
|
1573
|
+
const totalNodes = state.lastMeta && state.lastMeta.counts && typeof state.lastMeta.counts.nodes === 'number'
|
|
1574
|
+
? state.lastMeta.counts.nodes
|
|
1575
|
+
: normalizedMeta.totalNodes;
|
|
1576
|
+
const totalEdges = state.lastMeta && state.lastMeta.counts && typeof state.lastMeta.counts.edges === 'number'
|
|
1577
|
+
? state.lastMeta.counts.edges
|
|
1578
|
+
: normalizedMeta.totalEdges;
|
|
1579
|
+
state.graphMeta = {
|
|
1580
|
+
totalNodes: Math.max(normalizedMeta.totalNodes, totalNodes),
|
|
1581
|
+
totalEdges: Math.max(normalizedMeta.totalEdges, totalEdges),
|
|
1582
|
+
queryMs: normalizedMeta.queryMs,
|
|
1583
|
+
recommendedQualityMode: inferQualityMode(
|
|
1584
|
+
Math.max(normalizedMeta.totalNodes, totalNodes),
|
|
1585
|
+
Math.max(normalizedMeta.totalEdges, totalEdges)
|
|
1586
|
+
)
|
|
1587
|
+
};
|
|
1263
1588
|
const usedWasm = await applyWasmLayout(
|
|
1264
1589
|
view + ':' + state.graphData.nodes.length + ':' + state.graphData.links.length
|
|
1265
1590
|
);
|
|
1266
|
-
|
|
1591
|
+
if (!usedWasm) {
|
|
1592
|
+
state.layoutEngine = 'js';
|
|
1593
|
+
}
|
|
1267
1594
|
state.perfMode = state.graphMeta.recommendedQualityMode;
|
|
1268
1595
|
applySearchHighlights({ refresh: false });
|
|
1269
1596
|
renderGraph(true);
|
|
1270
1597
|
}
|
|
1271
1598
|
|
|
1599
|
+
function scheduleAuxiliaryPanels() {
|
|
1600
|
+
state.sidePanelToken += 1;
|
|
1601
|
+
const token = state.sidePanelToken;
|
|
1602
|
+
const loadAll = async () => {
|
|
1603
|
+
if (token !== state.sidePanelToken) {
|
|
1604
|
+
return;
|
|
1605
|
+
}
|
|
1606
|
+
await Promise.allSettled([loadRoutes(), loadCycles(), loadInsights()]);
|
|
1607
|
+
};
|
|
1608
|
+
|
|
1609
|
+
if (typeof window.requestIdleCallback === 'function') {
|
|
1610
|
+
window.requestIdleCallback(() => {
|
|
1611
|
+
void loadAll();
|
|
1612
|
+
}, { timeout: 1300 });
|
|
1613
|
+
return;
|
|
1614
|
+
}
|
|
1615
|
+
window.setTimeout(() => {
|
|
1616
|
+
void loadAll();
|
|
1617
|
+
}, AUX_LOAD_DELAY_MS);
|
|
1618
|
+
}
|
|
1619
|
+
|
|
1272
1620
|
function renderRoutes(routes) {
|
|
1273
1621
|
const entries = Array.isArray(routes) ? routes : [];
|
|
1274
1622
|
if (entries.length === 0) {
|
|
@@ -1466,7 +1814,9 @@ function renderUiHtml() {
|
|
|
1466
1814
|
const usedWasm = await applyWasmLayout(
|
|
1467
1815
|
seed + ':' + boundedDepth + ':' + state.graphData.nodes.length + ':' + state.graphData.links.length
|
|
1468
1816
|
);
|
|
1469
|
-
|
|
1817
|
+
if (!usedWasm) {
|
|
1818
|
+
state.layoutEngine = 'js';
|
|
1819
|
+
}
|
|
1470
1820
|
state.searchTerm = '';
|
|
1471
1821
|
if (els.search) {
|
|
1472
1822
|
els.search.value = '';
|
|
@@ -1556,7 +1906,9 @@ function renderUiHtml() {
|
|
|
1556
1906
|
async function syncAll() {
|
|
1557
1907
|
setStatus('Syncing graph matrix...', 'ok');
|
|
1558
1908
|
try {
|
|
1559
|
-
await
|
|
1909
|
+
await loadMeta();
|
|
1910
|
+
await loadGraph();
|
|
1911
|
+
scheduleAuxiliaryPanels();
|
|
1560
1912
|
const graphMeta = state.graphMeta || {};
|
|
1561
1913
|
const queryMs = typeof graphMeta.queryMs === 'number' ? graphMeta.queryMs.toFixed(1) + 'ms' : 'n/a';
|
|
1562
1914
|
setStatus(
|
|
@@ -1573,6 +1925,19 @@ function renderUiHtml() {
|
|
|
1573
1925
|
}
|
|
1574
1926
|
}
|
|
1575
1927
|
|
|
1928
|
+
if (els.view) {
|
|
1929
|
+
els.view.value = state.view;
|
|
1930
|
+
}
|
|
1931
|
+
|
|
1932
|
+
window.addEventListener('beforeunload', () => {
|
|
1933
|
+
cancelGraphChunking();
|
|
1934
|
+
if (state.wasmWorker) {
|
|
1935
|
+
state.wasmWorker.terminate();
|
|
1936
|
+
state.wasmWorker = null;
|
|
1937
|
+
state.wasmWorkerReady = false;
|
|
1938
|
+
}
|
|
1939
|
+
});
|
|
1940
|
+
|
|
1576
1941
|
els.view.addEventListener('change', async () => {
|
|
1577
1942
|
state.view = els.view.value;
|
|
1578
1943
|
await loadGraph().catch((error) => {
|
package/dist/server/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/server/ui.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/server/ui.ts"],"names":[],"mappings":";;AAEA,oCAk7DC;AAp7DD,2DAAmE;AAEnE,SAAgB,YAAY;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAqjBkB,gDAA4B,CAAC,aAAa;2BAC1C,gDAA4B,CAAC,aAAa;0BAC3C,gDAA4B,CAAC,YAAY;0BACzC,gDAA4B,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAw3C3D,CAAC;AACT,CAAC"}
|
|
@@ -54,6 +54,11 @@ export interface RefactorInsights {
|
|
|
54
54
|
}
|
|
55
55
|
export declare class SqliteStore implements QueryDataSource {
|
|
56
56
|
private readonly db;
|
|
57
|
+
private readonly graphCache;
|
|
58
|
+
private readonly subgraphCache;
|
|
59
|
+
private readonly pathCache;
|
|
60
|
+
private cyclesCache;
|
|
61
|
+
private readonly insightsCache;
|
|
57
62
|
constructor(dbPath: string);
|
|
58
63
|
close(): void;
|
|
59
64
|
initializeSchema(): void;
|
|
@@ -81,4 +86,6 @@ export declare class SqliteStore implements QueryDataSource {
|
|
|
81
86
|
runQuery(queryInput: GraphQuery | unknown): QueryResult;
|
|
82
87
|
private mapNodeRow;
|
|
83
88
|
private mapEdgeRow;
|
|
89
|
+
private clearCaches;
|
|
90
|
+
private storeBounded;
|
|
84
91
|
}
|
|
@@ -7,6 +7,9 @@ exports.SqliteStore = void 0;
|
|
|
7
7
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
8
8
|
const query_dsl_1 = require("../query/query-dsl");
|
|
9
9
|
const query_engine_1 = require("../query/query-engine");
|
|
10
|
+
const GRAPH_CACHE_MAX_ENTRIES = 24;
|
|
11
|
+
const SUBGRAPH_CACHE_MAX_ENTRIES = 64;
|
|
12
|
+
const PATH_CACHE_MAX_ENTRIES = 96;
|
|
10
13
|
function safeParseJson(value) {
|
|
11
14
|
if (!value) {
|
|
12
15
|
return {};
|
|
@@ -62,6 +65,32 @@ function normalizeTypeFilter(values) {
|
|
|
62
65
|
}
|
|
63
66
|
return new Set(normalized);
|
|
64
67
|
}
|
|
68
|
+
function normalizeListKey(values) {
|
|
69
|
+
if (!values || values.length === 0) {
|
|
70
|
+
return "";
|
|
71
|
+
}
|
|
72
|
+
return values
|
|
73
|
+
.map((value) => value.trim())
|
|
74
|
+
.filter((value) => value.length > 0)
|
|
75
|
+
.sort((left, right) => left.localeCompare(right))
|
|
76
|
+
.join(",");
|
|
77
|
+
}
|
|
78
|
+
function toGraphCacheKey(options) {
|
|
79
|
+
const view = (options.view ?? "all").trim();
|
|
80
|
+
const q = (options.q ?? "").trim().toLowerCase();
|
|
81
|
+
const limit = Math.max(0, Math.floor(options.limit ?? 0));
|
|
82
|
+
const nodeTypes = normalizeListKey(options.nodeTypes);
|
|
83
|
+
const edgeTypes = normalizeListKey(options.edgeTypes);
|
|
84
|
+
return `${view}|q=${q}|limit=${limit}|nodeTypes=${nodeTypes}|edgeTypes=${edgeTypes}`;
|
|
85
|
+
}
|
|
86
|
+
function toSubgraphCacheKey(seedNodeId, depth, direction) {
|
|
87
|
+
const boundedDepth = Math.max(0, Math.floor(depth));
|
|
88
|
+
return `${seedNodeId}|depth=${boundedDepth}|direction=${direction}`;
|
|
89
|
+
}
|
|
90
|
+
function toPathCacheKey(fromNodeId, toNodeId, maxDepth, edgeTypes) {
|
|
91
|
+
const boundedDepth = Math.max(1, Math.floor(maxDepth));
|
|
92
|
+
return `${fromNodeId}|${toNodeId}|depth=${boundedDepth}|edgeTypes=${normalizeListKey(edgeTypes)}`;
|
|
93
|
+
}
|
|
65
94
|
function toModuleKey(pathValue, nameValue, idValue) {
|
|
66
95
|
const raw = (pathValue ?? nameValue ?? idValue)
|
|
67
96
|
.replace(/^file:/i, "")
|
|
@@ -83,10 +112,16 @@ function toModuleKey(pathValue, nameValue, idValue) {
|
|
|
83
112
|
}
|
|
84
113
|
class SqliteStore {
|
|
85
114
|
db;
|
|
115
|
+
graphCache = new Map();
|
|
116
|
+
subgraphCache = new Map();
|
|
117
|
+
pathCache = new Map();
|
|
118
|
+
cyclesCache = null;
|
|
119
|
+
insightsCache = new Map();
|
|
86
120
|
constructor(dbPath) {
|
|
87
121
|
this.db = new better_sqlite3_1.default(dbPath);
|
|
88
122
|
}
|
|
89
123
|
close() {
|
|
124
|
+
this.clearCaches();
|
|
90
125
|
this.db.close();
|
|
91
126
|
}
|
|
92
127
|
initializeSchema() {
|
|
@@ -138,6 +173,7 @@ class SqliteStore {
|
|
|
138
173
|
}
|
|
139
174
|
});
|
|
140
175
|
transaction(snapshot);
|
|
176
|
+
this.clearCaches();
|
|
141
177
|
}
|
|
142
178
|
replaceGraphAtomically(snapshot) {
|
|
143
179
|
this.replaceGraph(snapshot);
|
|
@@ -328,6 +364,11 @@ class SqliteStore {
|
|
|
328
364
|
};
|
|
329
365
|
}
|
|
330
366
|
getGraph(options = {}) {
|
|
367
|
+
const cacheKey = toGraphCacheKey(options);
|
|
368
|
+
const cached = this.graphCache.get(cacheKey);
|
|
369
|
+
if (cached) {
|
|
370
|
+
return cached;
|
|
371
|
+
}
|
|
331
372
|
const view = (options.view ?? "all").trim();
|
|
332
373
|
const baseGraph = view === "fileDeps"
|
|
333
374
|
? this.getFileDependencyGraph()
|
|
@@ -359,15 +400,22 @@ class SqliteStore {
|
|
|
359
400
|
if (edgeTypeFilter) {
|
|
360
401
|
edges = edges.filter((edge) => edgeTypeFilter.has(edge.type.toUpperCase()));
|
|
361
402
|
}
|
|
362
|
-
|
|
403
|
+
const result = {
|
|
363
404
|
nodes,
|
|
364
405
|
edges: sortByIdIfNeeded(edges),
|
|
365
406
|
};
|
|
407
|
+
return this.storeBounded(this.graphCache, cacheKey, result, GRAPH_CACHE_MAX_ENTRIES);
|
|
366
408
|
}
|
|
367
409
|
getSubgraph(seedNodeId, depth = 1, direction = "both") {
|
|
410
|
+
const cacheKey = toSubgraphCacheKey(seedNodeId, depth, direction);
|
|
411
|
+
const cached = this.subgraphCache.get(cacheKey);
|
|
412
|
+
if (cached) {
|
|
413
|
+
return cached;
|
|
414
|
+
}
|
|
368
415
|
const seed = this.getNodeById(seedNodeId);
|
|
369
416
|
if (!seed) {
|
|
370
|
-
|
|
417
|
+
const empty = { nodes: [], edges: [] };
|
|
418
|
+
return this.storeBounded(this.subgraphCache, cacheKey, empty, SUBGRAPH_CACHE_MAX_ENTRIES);
|
|
371
419
|
}
|
|
372
420
|
const maxDepth = Math.max(0, Math.floor(depth));
|
|
373
421
|
const visitedNodes = new Set([seed.id]);
|
|
@@ -397,14 +445,20 @@ class SqliteStore {
|
|
|
397
445
|
.filter((node) => Boolean(node)));
|
|
398
446
|
const nodeIdSet = new Set(nodes.map((node) => node.id));
|
|
399
447
|
const edges = sortById([...visitedEdges.values()].filter((edge) => nodeIdSet.has(edge.fromId) && nodeIdSet.has(edge.toId)));
|
|
400
|
-
|
|
448
|
+
const result = { nodes, edges };
|
|
449
|
+
return this.storeBounded(this.subgraphCache, cacheKey, result, SUBGRAPH_CACHE_MAX_ENTRIES);
|
|
401
450
|
}
|
|
402
451
|
findShortestPath(fromNodeId, toNodeId, maxDepth = 12, edgeTypes) {
|
|
452
|
+
const cacheKey = toPathCacheKey(fromNodeId, toNodeId, maxDepth, edgeTypes);
|
|
453
|
+
const cached = this.pathCache.get(cacheKey);
|
|
454
|
+
if (cached) {
|
|
455
|
+
return cached;
|
|
456
|
+
}
|
|
403
457
|
const fromNode = this.getNodeById(fromNodeId);
|
|
404
458
|
const toNode = this.getNodeById(toNodeId);
|
|
405
459
|
const boundedDepth = Math.max(1, Math.floor(maxDepth));
|
|
406
460
|
if (!fromNode || !toNode) {
|
|
407
|
-
|
|
461
|
+
const result = {
|
|
408
462
|
from: fromNodeId,
|
|
409
463
|
to: toNodeId,
|
|
410
464
|
maxDepth: boundedDepth,
|
|
@@ -415,6 +469,7 @@ class SqliteStore {
|
|
|
415
469
|
nodes: [],
|
|
416
470
|
edges: [],
|
|
417
471
|
};
|
|
472
|
+
return this.storeBounded(this.pathCache, cacheKey, result, PATH_CACHE_MAX_ENTRIES);
|
|
418
473
|
}
|
|
419
474
|
const typeFilter = normalizeTypeFilter(edgeTypes);
|
|
420
475
|
const queue = [{ nodeId: fromNodeId, depth: 0 }];
|
|
@@ -444,7 +499,7 @@ class SqliteStore {
|
|
|
444
499
|
}
|
|
445
500
|
}
|
|
446
501
|
if (!found) {
|
|
447
|
-
|
|
502
|
+
const result = {
|
|
448
503
|
from: fromNodeId,
|
|
449
504
|
to: toNodeId,
|
|
450
505
|
maxDepth: boundedDepth,
|
|
@@ -455,6 +510,7 @@ class SqliteStore {
|
|
|
455
510
|
nodes: [],
|
|
456
511
|
edges: [],
|
|
457
512
|
};
|
|
513
|
+
return this.storeBounded(this.pathCache, cacheKey, result, PATH_CACHE_MAX_ENTRIES);
|
|
458
514
|
}
|
|
459
515
|
const nodeIds = [toNodeId];
|
|
460
516
|
const edges = [];
|
|
@@ -473,7 +529,7 @@ class SqliteStore {
|
|
|
473
529
|
const nodes = nodeIds
|
|
474
530
|
.map((nodeId) => this.getNodeById(nodeId))
|
|
475
531
|
.filter((node) => Boolean(node));
|
|
476
|
-
|
|
532
|
+
const result = {
|
|
477
533
|
from: fromNodeId,
|
|
478
534
|
to: toNodeId,
|
|
479
535
|
maxDepth: boundedDepth,
|
|
@@ -484,6 +540,7 @@ class SqliteStore {
|
|
|
484
540
|
nodes,
|
|
485
541
|
edges,
|
|
486
542
|
};
|
|
543
|
+
return this.storeBounded(this.pathCache, cacheKey, result, PATH_CACHE_MAX_ENTRIES);
|
|
487
544
|
}
|
|
488
545
|
getRoutesList() {
|
|
489
546
|
const rows = this.db
|
|
@@ -500,6 +557,9 @@ class SqliteStore {
|
|
|
500
557
|
return this.getRoutesList();
|
|
501
558
|
}
|
|
502
559
|
getCyclesInfo() {
|
|
560
|
+
if (this.cyclesCache) {
|
|
561
|
+
return this.cyclesCache;
|
|
562
|
+
}
|
|
503
563
|
const graph = this.getFileDependencyGraph();
|
|
504
564
|
const nodes = sortById(graph.nodes);
|
|
505
565
|
const edges = sortById(graph.edges);
|
|
@@ -594,16 +654,22 @@ class SqliteStore {
|
|
|
594
654
|
const rightStart = right.nodes[0]?.id ?? "";
|
|
595
655
|
return leftStart.localeCompare(rightStart);
|
|
596
656
|
});
|
|
597
|
-
|
|
657
|
+
const result = {
|
|
598
658
|
cycles,
|
|
599
659
|
totalCycles: cycles.length,
|
|
600
660
|
};
|
|
661
|
+
this.cyclesCache = result;
|
|
662
|
+
return result;
|
|
601
663
|
}
|
|
602
664
|
getCycles() {
|
|
603
665
|
return this.getCyclesInfo();
|
|
604
666
|
}
|
|
605
667
|
getRefactorInsights(limit = 5) {
|
|
606
668
|
const boundedLimit = Math.max(1, Math.min(50, Math.floor(limit) || 5));
|
|
669
|
+
const cached = this.insightsCache.get(boundedLimit);
|
|
670
|
+
if (cached) {
|
|
671
|
+
return cached;
|
|
672
|
+
}
|
|
607
673
|
const graph = this.getFileDependencyGraph();
|
|
608
674
|
const uniqueDependencyKeys = new Set();
|
|
609
675
|
const fanIn = new Map();
|
|
@@ -695,12 +761,14 @@ class SqliteStore {
|
|
|
695
761
|
fileId: row.file_id,
|
|
696
762
|
filePath: row.file_path,
|
|
697
763
|
}));
|
|
698
|
-
|
|
764
|
+
const result = {
|
|
699
765
|
hotspots,
|
|
700
766
|
orphanModules,
|
|
701
767
|
unusedExports,
|
|
702
768
|
cycleCount: this.getCyclesInfo().totalCycles,
|
|
703
769
|
};
|
|
770
|
+
this.insightsCache.set(boundedLimit, result);
|
|
771
|
+
return result;
|
|
704
772
|
}
|
|
705
773
|
runDeterministicQuery(queryInput) {
|
|
706
774
|
const query = (0, query_dsl_1.parseGraphQuery)(queryInput);
|
|
@@ -727,6 +795,23 @@ class SqliteStore {
|
|
|
727
795
|
props: safeParseJson(row.json_props),
|
|
728
796
|
};
|
|
729
797
|
}
|
|
798
|
+
clearCaches() {
|
|
799
|
+
this.graphCache.clear();
|
|
800
|
+
this.subgraphCache.clear();
|
|
801
|
+
this.pathCache.clear();
|
|
802
|
+
this.insightsCache.clear();
|
|
803
|
+
this.cyclesCache = null;
|
|
804
|
+
}
|
|
805
|
+
storeBounded(cache, key, value, maxEntries) {
|
|
806
|
+
cache.set(key, value);
|
|
807
|
+
if (cache.size > maxEntries) {
|
|
808
|
+
const oldestKey = cache.keys().next().value;
|
|
809
|
+
if (typeof oldestKey !== "undefined") {
|
|
810
|
+
cache.delete(oldestKey);
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
return value;
|
|
814
|
+
}
|
|
730
815
|
}
|
|
731
816
|
exports.SqliteStore = SqliteStore;
|
|
732
817
|
//# sourceMappingURL=sqlite-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/store/sqlite-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/store/sqlite-store.ts"],"names":[],"mappings":"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"}
|