tiddlywiki-plugin-dev
Version:
[](https://github.com/tiddly-gittly)
78 lines (77 loc) • 2.18 kB
JavaScript
import { createQueuedWatchHandler } from "./dev-watch.js";
const devWritePlugins = [
"plugins/tiddlywiki/filesystem",
"plugins/tiddlywiki/tiddlyweb"
];
const createDevRefreshHandler = ({
renderListenerScript,
nextGeneration,
writeWiki,
rebuildPlugins,
createWiki,
startServer,
notifyRefresh,
reportError
}) => createQueuedWatchHandler({
runBatch: async (changedPaths) => {
const batchStart = Date.now();
const fileList = changedPaths.filter(Boolean);
console.log(
`
[Modern.TiddlyDev] [refresh] Refresh started - ${fileList.length} file(s) changed`
);
if (fileList.length > 0) {
fileList.forEach((f) => {
console.log(` - ${f}`);
});
}
const plugins = await rebuildPlugins(changedPaths);
const rebuildMs = Date.now() - batchStart;
console.log(
`[Modern.TiddlyDev] [refresh] Plugins rebuilt in ${rebuildMs}ms`
);
if (plugins.length === 0) {
const totalMs = Date.now() - batchStart;
console.log(
`[Modern.TiddlyDev] [refresh] No plugin changes — skipping server restart (${totalMs}ms total)`
);
notifyRefresh();
return;
}
const wiki = createWiki();
const generation = nextGeneration();
wiki.preloadTiddler({
title: "$:/Modern.TiddlyDev/devWebsocket/listener",
text: renderListenerScript(generation),
type: "application/javascript",
"module-type": "startup"
});
if (!writeWiki) {
wiki.preloadTiddler({
title: "$:/config/SyncFilter",
text: ""
});
}
wiki.preloadTiddlerArray(plugins);
if (writeWiki) {
wiki.appendExtraPlugins(devWritePlugins);
}
const started = await startServer(wiki, changedPaths, generation);
if (started) {
const totalMs = Date.now() - batchStart;
console.log(
`[Modern.TiddlyDev] [refresh] Server restarted in ${totalMs}ms total`
);
notifyRefresh();
} else {
console.error(
`[Modern.TiddlyDev] [refresh] Server failed to start after ${Date.now() - batchStart}ms`
);
}
},
onError: reportError
});
export {
createDevRefreshHandler,
devWritePlugins
};