@telorun/cli 0.2.4 → 0.2.5
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/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +32 -19
- package/dist/cli.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { Kernel } from "@telorun/kernel";
|
|
3
3
|
import * as fs from "fs";
|
|
4
4
|
import * as path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
5
6
|
import yargs from "yargs";
|
|
6
7
|
import { hideBin } from "yargs/helpers";
|
|
7
8
|
function createLogger(verbose) {
|
|
@@ -19,20 +20,23 @@ function createLogger(verbose) {
|
|
|
19
20
|
function setupWatchMode(kernel, log) {
|
|
20
21
|
const watchers = new Map();
|
|
21
22
|
const debounceTimers = new Map();
|
|
23
|
+
const reloading = new Set();
|
|
22
24
|
let active = true;
|
|
23
25
|
function watchFile(filePath) {
|
|
24
26
|
if (!active || watchers.has(filePath))
|
|
25
27
|
return;
|
|
28
|
+
// getSourceFiles() returns file:// URLs; fs.watch needs a filesystem path
|
|
29
|
+
const fsPath = filePath.startsWith("file://") ? fileURLToPath(filePath) : filePath;
|
|
26
30
|
let watcher;
|
|
27
31
|
try {
|
|
28
|
-
watcher = fs.watch(
|
|
32
|
+
watcher = fs.watch(fsPath, () => {
|
|
33
|
+
if (!active)
|
|
34
|
+
return;
|
|
29
35
|
const existing = debounceTimers.get(filePath);
|
|
30
36
|
if (existing)
|
|
31
37
|
clearTimeout(existing);
|
|
32
38
|
debounceTimers.set(filePath, setTimeout(() => {
|
|
33
39
|
debounceTimers.delete(filePath);
|
|
34
|
-
watchers.get(filePath)?.close();
|
|
35
|
-
watchers.delete(filePath);
|
|
36
40
|
void handleChange(filePath);
|
|
37
41
|
}, 150));
|
|
38
42
|
});
|
|
@@ -40,26 +44,36 @@ function setupWatchMode(kernel, log) {
|
|
|
40
44
|
catch {
|
|
41
45
|
return; // file may not exist yet
|
|
42
46
|
}
|
|
43
|
-
watcher.on("error", () =>
|
|
47
|
+
watcher.on("error", () => {
|
|
48
|
+
// OS invalidated the watch (e.g. file deleted). Remove and re-establish.
|
|
49
|
+
if (watchers.get(filePath) === watcher) {
|
|
50
|
+
watchers.delete(filePath);
|
|
51
|
+
setTimeout(() => {
|
|
52
|
+
if (active)
|
|
53
|
+
watchFile(filePath);
|
|
54
|
+
}, 50);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
44
57
|
watchers.set(filePath, watcher);
|
|
45
58
|
}
|
|
46
59
|
async function handleChange(filePath) {
|
|
60
|
+
// Prevent concurrent reloads for the same file
|
|
61
|
+
if (reloading.has(filePath))
|
|
62
|
+
return;
|
|
63
|
+
reloading.add(filePath);
|
|
47
64
|
log.info(`[watch] reloading ${filePath}`);
|
|
48
65
|
try {
|
|
49
|
-
await kernel.reloadSource(filePath);
|
|
50
|
-
//
|
|
51
|
-
for (const f of kernel.getSourceFiles())
|
|
52
|
-
watchFile(f);
|
|
66
|
+
// await kernel.reloadSource(filePath);
|
|
67
|
+
// Watch any new files that appeared after reload
|
|
68
|
+
// for (const f of kernel.getSourceFiles()) watchFile(f);
|
|
53
69
|
log.info(log.ok(`[watch] complete`));
|
|
54
70
|
}
|
|
55
71
|
catch (err) {
|
|
56
72
|
log.info(log.error(`[watch] error: ${err instanceof Error ? err.message : String(err)}`));
|
|
57
73
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
watchFile(filePath);
|
|
62
|
-
}, 50);
|
|
74
|
+
finally {
|
|
75
|
+
reloading.delete(filePath);
|
|
76
|
+
}
|
|
63
77
|
}
|
|
64
78
|
function cleanup() {
|
|
65
79
|
active = false;
|
|
@@ -70,8 +84,7 @@ function setupWatchMode(kernel, log) {
|
|
|
70
84
|
w.close();
|
|
71
85
|
watchers.clear();
|
|
72
86
|
}
|
|
73
|
-
for (const f of kernel.getSourceFiles())
|
|
74
|
-
watchFile(f);
|
|
87
|
+
// for (const f of kernel.getSourceFiles()) watchFile(f);
|
|
75
88
|
return { cleanup };
|
|
76
89
|
}
|
|
77
90
|
async function run(argv) {
|
|
@@ -96,9 +109,9 @@ async function run(argv) {
|
|
|
96
109
|
// shutdown() will force-resolve waitForIdle() on Ctrl+C regardless of
|
|
97
110
|
// how many holds are active (e.g. Http.Server may hold its own).
|
|
98
111
|
kernel.acquireHold("watch-mode");
|
|
99
|
-
kernel.on("
|
|
100
|
-
const files = kernel.getSourceFiles();
|
|
101
|
-
log.info(`[watch] watching ${files.length} file(s)`);
|
|
112
|
+
kernel.on("Kernel.Started", () => {
|
|
113
|
+
// const files = kernel.getSourceFiles();
|
|
114
|
+
// log.info(`[watch] watching ${files.length} file(s)`);
|
|
102
115
|
watchHandle = setupWatchMode(kernel, log);
|
|
103
116
|
});
|
|
104
117
|
const shutdown = () => {
|
|
@@ -116,7 +129,7 @@ async function run(argv) {
|
|
|
116
129
|
}
|
|
117
130
|
}
|
|
118
131
|
catch (error) {
|
|
119
|
-
console.error("Error loading runtime:", error instanceof Error ? error.stack : String(error));
|
|
132
|
+
console.error("Error loading runtime:", error instanceof Error ? (error.stack ?? error.message) : String(error));
|
|
120
133
|
process.exit(1);
|
|
121
134
|
}
|
|
122
135
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,SAAS,YAAY,CAAC,OAAgB;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/F,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC9C,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACtC,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACxC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;QACzC,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;QACtC,OAAO;KACR,CAAC;AACJ,CAAC;AAID,SAAS,cAAc,CAAC,MAAc,EAAE,GAAoC;IAC1E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAyC,CAAC;IACxE,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,SAAS,SAAS,CAAC,QAAgB;QACjC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAC9C,IAAI,OAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@telorun/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "Telo CLI - Command-line interface for the Telo runtime.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"yargs": "^17.7.2",
|
|
24
|
-
"@telorun/kernel": "0.2.
|
|
24
|
+
"@telorun/kernel": "0.2.5"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^20.0.0",
|