diff --git a/.gitignore b/.gitignore index 6a1cc85e5..258ca42f4 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,4 @@ stats/ demos/dev/** !/demos/dev/example.html +!/demos/dev/reload.js diff --git a/demos/dev/example.html b/demos/dev/example.html index 8a8c5557e..adb6da331 100644 --- a/demos/dev/example.html +++ b/demos/dev/example.html @@ -33,32 +33,6 @@ graph TB el.innerHTML = svg; - + diff --git a/demos/dev/reload.js b/demos/dev/reload.js new file mode 100644 index 000000000..f6d52c60d --- /dev/null +++ b/demos/dev/reload.js @@ -0,0 +1,22 @@ +// Connect to the server and reload the page if the server sends a reload message +const connectToEvents = () => { + const events = new EventSource('/events'); + const loadTime = Date.now(); + events.onmessage = (event) => { + const time = JSON.parse(event.data); + if (time && time > loadTime) { + location.reload(); + } + }; + events.onerror = (error) => { + console.error(error); + events.close(); + // Try to reconnect after 1 second in case of errors + setTimeout(connectToEvents, 1000); + }; + events.onopen = () => { + console.log('Connected to live reload server'); + }; +}; + +setTimeout(connectToEvents, 500); diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 5090f49d1..5fd73bf1f 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -5,5 +5,14 @@ // ensure that nobody can accidentally use this config for a build "noEmit": true }, - "include": ["packages", "tests", "scripts", "cypress", "__mocks__", "./.eslintrc.cjs", "./*"] + "include": [ + "packages", + "tests", + "scripts", + "cypress", + "__mocks__", + "./.eslintrc.cjs", + "./*", + "demos/dev" + ] }