tova 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/bin/tova.js +27 -11
- package/package.json +1 -1
- package/src/version.js +1 -1
package/bin/tova.js
CHANGED
|
@@ -544,7 +544,7 @@ async function devServer(args) {
|
|
|
544
544
|
if (output.client) {
|
|
545
545
|
const p = join(outDir, `${outBaseName}.client.js`);
|
|
546
546
|
writeFileSync(p, output.client);
|
|
547
|
-
clientHTML = await generateDevHTML(output.client, srcDir,
|
|
547
|
+
clientHTML = await generateDevHTML(output.client, srcDir, actualReloadPort);
|
|
548
548
|
writeFileSync(join(outDir, 'index.html'), clientHTML);
|
|
549
549
|
hasClient = true;
|
|
550
550
|
}
|
|
@@ -624,11 +624,28 @@ async function devServer(args) {
|
|
|
624
624
|
console.log(` ✓ Client: ${relative('.', outDir)}/index.html`);
|
|
625
625
|
}
|
|
626
626
|
|
|
627
|
-
// Start live-reload SSE server
|
|
627
|
+
// Start live-reload SSE server — find an available port
|
|
628
628
|
const reloadClients = new Set();
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
629
|
+
let reloadServer;
|
|
630
|
+
let actualReloadPort = reloadPort;
|
|
631
|
+
for (let attempt = 0; attempt < 10; attempt++) {
|
|
632
|
+
try {
|
|
633
|
+
reloadServer = Bun.serve({
|
|
634
|
+
port: actualReloadPort,
|
|
635
|
+
fetch(req) {
|
|
636
|
+
return handleReloadFetch(req);
|
|
637
|
+
},
|
|
638
|
+
});
|
|
639
|
+
break;
|
|
640
|
+
} catch {
|
|
641
|
+
actualReloadPort++;
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
if (!reloadServer) {
|
|
645
|
+
console.log(' ⚠ Could not start live-reload server (ports in use)');
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
function handleReloadFetch(req) {
|
|
632
649
|
const url = new URL(req.url);
|
|
633
650
|
if (url.pathname === '/__tova_reload') {
|
|
634
651
|
const stream = new ReadableStream({
|
|
@@ -655,8 +672,7 @@ async function devServer(args) {
|
|
|
655
672
|
});
|
|
656
673
|
}
|
|
657
674
|
return new Response('Not Found', { status: 404 });
|
|
658
|
-
|
|
659
|
-
});
|
|
675
|
+
}
|
|
660
676
|
|
|
661
677
|
function notifyReload() {
|
|
662
678
|
const msg = new TextEncoder().encode('data: reload\n\n');
|
|
@@ -665,7 +681,7 @@ async function devServer(args) {
|
|
|
665
681
|
}
|
|
666
682
|
}
|
|
667
683
|
|
|
668
|
-
console.log(` ✓ Live reload on port ${
|
|
684
|
+
if (reloadServer) console.log(` ✓ Live reload on port ${actualReloadPort}`);
|
|
669
685
|
|
|
670
686
|
// Start file watcher for auto-rebuild
|
|
671
687
|
const watcher = startWatcher(srcDir, async () => {
|
|
@@ -698,7 +714,7 @@ async function devServer(args) {
|
|
|
698
714
|
}
|
|
699
715
|
if (output.client) {
|
|
700
716
|
writeFileSync(join(outDir, `${outBaseName}.client.js`), output.client);
|
|
701
|
-
rebuildClientHTML = await generateDevHTML(output.client, srcDir,
|
|
717
|
+
rebuildClientHTML = await generateDevHTML(output.client, srcDir, actualReloadPort);
|
|
702
718
|
writeFileSync(join(outDir, 'index.html'), rebuildClientHTML);
|
|
703
719
|
}
|
|
704
720
|
if (output.server) {
|
|
@@ -757,9 +773,9 @@ async function devServer(args) {
|
|
|
757
773
|
process.on('SIGINT', () => {
|
|
758
774
|
console.log('\n Shutting down...');
|
|
759
775
|
watcher.close();
|
|
760
|
-
reloadServer.stop();
|
|
776
|
+
if (reloadServer) reloadServer.stop();
|
|
761
777
|
for (const p of processes) {
|
|
762
|
-
p.child.kill('
|
|
778
|
+
try { p.child.kill('SIGKILL'); } catch {}
|
|
763
779
|
}
|
|
764
780
|
process.exit(0);
|
|
765
781
|
});
|
package/package.json
CHANGED
package/src/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Auto-generated by scripts/embed-runtime.js — do not edit
|
|
2
|
-
export const VERSION = "0.2.
|
|
2
|
+
export const VERSION = "0.2.5";
|