@neat.is/core 0.4.14 → 0.4.15
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/{chunk-QZRDQ7WX.js → chunk-VMLWUK7W.js} +41 -29
- package/dist/chunk-VMLWUK7W.js.map +1 -0
- package/dist/index.cjs +89 -28
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -1
- package/dist/neatd.cjs +89 -28
- package/dist/neatd.cjs.map +1 -1
- package/dist/neatd.js +1 -1
- package/package.json +2 -2
- package/dist/chunk-QZRDQ7WX.js.map +0 -1
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/neatd.cjs
CHANGED
|
@@ -968,6 +968,56 @@ eventBus.setMaxListeners(0);
|
|
|
968
968
|
function emitNeatEvent(envelope) {
|
|
969
969
|
eventBus.emit(EVENT_BUS_CHANNEL, envelope);
|
|
970
970
|
}
|
|
971
|
+
function attachGraphToEventBus(graph, opts) {
|
|
972
|
+
const { project } = opts;
|
|
973
|
+
const onNodeAdded = (payload) => {
|
|
974
|
+
emitNeatEvent({
|
|
975
|
+
type: "node-added",
|
|
976
|
+
project,
|
|
977
|
+
payload: { node: payload.attributes }
|
|
978
|
+
});
|
|
979
|
+
};
|
|
980
|
+
const onNodeDropped = (payload) => {
|
|
981
|
+
emitNeatEvent({
|
|
982
|
+
type: "node-removed",
|
|
983
|
+
project,
|
|
984
|
+
payload: { id: payload.key }
|
|
985
|
+
});
|
|
986
|
+
};
|
|
987
|
+
const onEdgeAdded = (payload) => {
|
|
988
|
+
emitNeatEvent({
|
|
989
|
+
type: "edge-added",
|
|
990
|
+
project,
|
|
991
|
+
payload: { edge: payload.attributes }
|
|
992
|
+
});
|
|
993
|
+
};
|
|
994
|
+
const onEdgeDropped = (payload) => {
|
|
995
|
+
emitNeatEvent({
|
|
996
|
+
type: "edge-removed",
|
|
997
|
+
project,
|
|
998
|
+
payload: { id: payload.key }
|
|
999
|
+
});
|
|
1000
|
+
};
|
|
1001
|
+
const onNodeAttrsUpdated = (payload) => {
|
|
1002
|
+
emitNeatEvent({
|
|
1003
|
+
type: "node-updated",
|
|
1004
|
+
project,
|
|
1005
|
+
payload: { id: payload.key, changes: payload.attributes }
|
|
1006
|
+
});
|
|
1007
|
+
};
|
|
1008
|
+
graph.on("nodeAdded", onNodeAdded);
|
|
1009
|
+
graph.on("nodeDropped", onNodeDropped);
|
|
1010
|
+
graph.on("edgeAdded", onEdgeAdded);
|
|
1011
|
+
graph.on("edgeDropped", onEdgeDropped);
|
|
1012
|
+
graph.on("nodeAttributesUpdated", onNodeAttrsUpdated);
|
|
1013
|
+
return () => {
|
|
1014
|
+
graph.off("nodeAdded", onNodeAdded);
|
|
1015
|
+
graph.off("nodeDropped", onNodeDropped);
|
|
1016
|
+
graph.off("edgeAdded", onEdgeAdded);
|
|
1017
|
+
graph.off("edgeDropped", onEdgeDropped);
|
|
1018
|
+
graph.off("nodeAttributesUpdated", onNodeAttrsUpdated);
|
|
1019
|
+
};
|
|
1020
|
+
}
|
|
971
1021
|
|
|
972
1022
|
// src/traverse.ts
|
|
973
1023
|
init_cjs_shims();
|
|
@@ -6578,6 +6628,16 @@ function unroutedErrorsPath(neatHome3) {
|
|
|
6578
6628
|
}
|
|
6579
6629
|
|
|
6580
6630
|
// src/daemon.ts
|
|
6631
|
+
function teardownSlot(slot) {
|
|
6632
|
+
try {
|
|
6633
|
+
slot.stopPersist();
|
|
6634
|
+
} catch {
|
|
6635
|
+
}
|
|
6636
|
+
try {
|
|
6637
|
+
slot.detachEvents();
|
|
6638
|
+
} catch {
|
|
6639
|
+
}
|
|
6640
|
+
}
|
|
6581
6641
|
function neatHomeFor(opts) {
|
|
6582
6642
|
if (opts.neatHome && opts.neatHome.length > 0) return import_node_path41.default.resolve(opts.neatHome);
|
|
6583
6643
|
const env = process.env.NEAT_HOME;
|
|
@@ -6636,6 +6696,8 @@ async function bootstrapProject(entry2) {
|
|
|
6636
6696
|
paths,
|
|
6637
6697
|
stopPersist: () => {
|
|
6638
6698
|
},
|
|
6699
|
+
detachEvents: () => {
|
|
6700
|
+
},
|
|
6639
6701
|
status: "broken",
|
|
6640
6702
|
errorReason: err.message
|
|
6641
6703
|
};
|
|
@@ -6644,18 +6706,25 @@ async function bootstrapProject(entry2) {
|
|
|
6644
6706
|
const graph = getGraph(entry2.name);
|
|
6645
6707
|
const outPath = paths.snapshotPath;
|
|
6646
6708
|
await loadGraphFromDisk(graph, outPath);
|
|
6647
|
-
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
|
|
6709
|
+
const detachEvents = attachGraphToEventBus(graph, { project: entry2.name });
|
|
6710
|
+
try {
|
|
6711
|
+
await extractFromDirectory(graph, entry2.path);
|
|
6712
|
+
const stopPersist = startPersistLoop(graph, outPath);
|
|
6713
|
+
await touchLastSeen(entry2.name).catch(() => {
|
|
6714
|
+
});
|
|
6715
|
+
return {
|
|
6716
|
+
entry: entry2,
|
|
6717
|
+
graph,
|
|
6718
|
+
outPath,
|
|
6719
|
+
paths,
|
|
6720
|
+
stopPersist,
|
|
6721
|
+
detachEvents,
|
|
6722
|
+
status: "active"
|
|
6723
|
+
};
|
|
6724
|
+
} catch (err) {
|
|
6725
|
+
detachEvents();
|
|
6726
|
+
throw err;
|
|
6727
|
+
}
|
|
6659
6728
|
}
|
|
6660
6729
|
function resolveRestPort(opts) {
|
|
6661
6730
|
if (typeof opts.restPort === "number") return opts.restPort;
|
|
@@ -6737,6 +6806,8 @@ async function startDaemon(opts = {}) {
|
|
|
6737
6806
|
async function tryRecoverSlot(entry2) {
|
|
6738
6807
|
try {
|
|
6739
6808
|
const fresh = await bootstrapProject(entry2);
|
|
6809
|
+
const prior = slots.get(entry2.name);
|
|
6810
|
+
if (prior) teardownSlot(prior);
|
|
6740
6811
|
slots.set(entry2.name, fresh);
|
|
6741
6812
|
upsertRegistryFromSlot(fresh);
|
|
6742
6813
|
if (fresh.status === "active") {
|
|
@@ -6759,6 +6830,8 @@ async function startDaemon(opts = {}) {
|
|
|
6759
6830
|
bootstrapStartedAt.set(entry2.name, Date.now());
|
|
6760
6831
|
try {
|
|
6761
6832
|
const slot = await bootstrapProject(entry2);
|
|
6833
|
+
const prior = slots.get(entry2.name);
|
|
6834
|
+
if (prior) teardownSlot(prior);
|
|
6762
6835
|
slots.set(entry2.name, slot);
|
|
6763
6836
|
upsertRegistryFromSlot(slot);
|
|
6764
6837
|
bootstrapStatus.set(entry2.name, slot.status === "broken" ? "broken" : "active");
|
|
@@ -6794,10 +6867,7 @@ async function startDaemon(opts = {}) {
|
|
|
6794
6867
|
}
|
|
6795
6868
|
for (const [name, slot] of [...slots.entries()]) {
|
|
6796
6869
|
if (seen.has(name)) continue;
|
|
6797
|
-
|
|
6798
|
-
slot.stopPersist();
|
|
6799
|
-
} catch {
|
|
6800
|
-
}
|
|
6870
|
+
teardownSlot(slot);
|
|
6801
6871
|
slots.delete(name);
|
|
6802
6872
|
bootstrapStatus.delete(name);
|
|
6803
6873
|
bootstrapStartedAt.delete(name);
|
|
@@ -6843,10 +6913,7 @@ async function startDaemon(opts = {}) {
|
|
|
6843
6913
|
console.log(`neatd: REST listening on ${restAddress}`);
|
|
6844
6914
|
} catch (err) {
|
|
6845
6915
|
for (const slot of slots.values()) {
|
|
6846
|
-
|
|
6847
|
-
slot.stopPersist();
|
|
6848
|
-
} catch {
|
|
6849
|
-
}
|
|
6916
|
+
teardownSlot(slot);
|
|
6850
6917
|
}
|
|
6851
6918
|
if (restApp) await restApp.close().catch(() => {
|
|
6852
6919
|
});
|
|
@@ -6947,10 +7014,7 @@ async function startDaemon(opts = {}) {
|
|
|
6947
7014
|
console.log(`neatd: OTLP listening on ${otlpAddress}/v1/traces`);
|
|
6948
7015
|
} catch (err) {
|
|
6949
7016
|
for (const slot of slots.values()) {
|
|
6950
|
-
|
|
6951
|
-
slot.stopPersist();
|
|
6952
|
-
} catch {
|
|
6953
|
-
}
|
|
7017
|
+
teardownSlot(slot);
|
|
6954
7018
|
}
|
|
6955
7019
|
if (restApp) await restApp.close().catch(() => {
|
|
6956
7020
|
});
|
|
@@ -7042,10 +7106,7 @@ async function startDaemon(opts = {}) {
|
|
|
7042
7106
|
if (restApp) await restApp.close().catch(() => {
|
|
7043
7107
|
});
|
|
7044
7108
|
for (const slot of slots.values()) {
|
|
7045
|
-
|
|
7046
|
-
slot.stopPersist();
|
|
7047
|
-
} catch {
|
|
7048
|
-
}
|
|
7109
|
+
teardownSlot(slot);
|
|
7049
7110
|
}
|
|
7050
7111
|
await import_node_fs25.promises.unlink(pidPath).catch(() => {
|
|
7051
7112
|
});
|