diff --git a/src/uv.sw.js b/src/uv.sw.js index a7937f1..6198b89 100644 --- a/src/uv.sw.js +++ b/src/uv.sw.js @@ -404,7 +404,10 @@ function hostnameErrorTemplate(fetchedURL, bareServer) { )};` + `bareServer.href = ${JSON.stringify(bareServer)};` + `uvHostname.textContent = ${JSON.stringify(location.hostname)};` + - `reload.addEventListener("click", () => location.reload())`; + `reload.addEventListener("click", () => location.reload());` + + `uvVersion.textContent = ${JSON.stringify( + process.env.ULTRAVIOLET_VERSION + )};`; return ( '' + @@ -419,12 +422,14 @@ function hostnameErrorTemplate(fetchedURL, bareServer) { '
’s server IP address could not be found.
' + 'Try:
' + 'Ultraviolet v
' + `` + @@ -466,8 +471,13 @@ function errorTemplate( `errorTrace.value = ${JSON.stringify(trace)};` + `fetchedURL.textContent = ${JSON.stringify(fetchedURL)};` + `bareServer.href = ${JSON.stringify(bareServer)};` + - `uvHostname.textContent = ${JSON.stringify(location.hostname)};` + - `reload.addEventListener("click", () => location.reload());`; + `for (const node of document.querySelectorAll("#uvHostname")) node.textContent = ${JSON.stringify( + location.hostname + )};` + + `reload.addEventListener("click", () => location.reload());` + + `uvVersion.textContent = ${JSON.stringify( + process.env.ULTRAVIOLET_VERSION + )};`; return ( '' + @@ -488,12 +498,20 @@ function errorTemplate( '' + 'Try:
' + 'If you\'re the administrator of , try:
' + + 'Ultraviolet v
' + `` + diff --git a/webpack.config.js b/webpack.config.js index 466575c..e2dc7a2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -2,6 +2,12 @@ import { fileURLToPath } from 'url'; import ESLintPlugin from 'eslint-webpack-plugin'; import TerserPlugin from 'terser-webpack-plugin'; import CopyPlugin from 'copy-webpack-plugin'; +import webpack from 'webpack'; +import { readFile } from 'fs/promises'; + +// read version from package.json +const pk = JSON.parse(await readFile(new URL('package.json', import.meta.url))); +process.env.ULTRAVIOLET_VERSION = pk.version; const isDevelopment = process.env.NODE_ENV !== 'production'; @@ -67,6 +73,7 @@ const config = { }, ], }), + new webpack.EnvironmentPlugin('ULTRAVIOLET_VERSION'), ], performance: { // suppress "entrypoint size limit" warning