@stanlemon/webdev 0.1.52 → 0.1.53

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/index.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <title>Webpack App</title>
6
- <meta name="viewport" content="width=device-width, initial-scale=1"><script defer src="/runtime.9dafb62f464ccc27efd6.js"></script><script defer src="/react.02ba2699f9d8f6252a54.js"></script><script defer src="/vendors.eae44b81ebb159229b6f.js"></script><script defer src="/main.870084e38c47836a0964.js"></script></head>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1"><script defer src="/runtime.9dafb62f464ccc27efd6.js"></script><script defer src="/react.02ba2699f9d8f6252a54.js"></script><script defer src="/vendors.67ef2e35d46eaa945186.js"></script><script defer src="/main.870084e38c47836a0964.js"></script></head>
7
7
  <body>
8
8
  </body>
9
9
  </html>
@@ -1465,7 +1465,7 @@ eval("/**\n * Gets the source (i.e. host) of the script currently running.\n * @
1465
1465
  \**************************************************************************************************/
1466
1466
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1467
1467
 
1468
- eval("const getCurrentScriptSource = __webpack_require__(/*! ./getCurrentScriptSource.js */ 7629);\n\n/**\n * @typedef {Object} SocketUrlParts\n * @property {string} [auth]\n * @property {string} hostname\n * @property {string} [protocol]\n * @property {string} pathname\n * @property {string} [port]\n */\n\n/**\n * Parse current location and Webpack's `__resourceQuery` into parts that can create a valid socket URL.\n * @param {string} [resourceQuery] The Webpack `__resourceQuery` string.\n * @param {import('./getWDSMetadata').WDSMetaObj} [metadata] The parsed WDS metadata object.\n * @returns {SocketUrlParts} The parsed URL parts.\n * @see https://webpack.js.org/api/module-variables/#__resourcequery-webpack-specific\n */\nfunction getSocketUrlParts(resourceQuery, metadata) {\n if (typeof metadata === 'undefined') {\n metadata = {};\n }\n\n /** @type {SocketUrlParts} */\n let urlParts = {};\n\n // If the resource query is available,\n // parse it and ignore everything we received from the script host.\n if (resourceQuery) {\n const parsedQuery = {};\n const searchParams = new URLSearchParams(resourceQuery.slice(1));\n searchParams.forEach(function (value, key) {\n parsedQuery[key] = value;\n });\n\n urlParts.hostname = parsedQuery.sockHost;\n urlParts.pathname = parsedQuery.sockPath;\n urlParts.port = parsedQuery.sockPort;\n\n // Make sure the protocol from resource query has a trailing colon\n if (parsedQuery.sockProtocol) {\n urlParts.protocol = parsedQuery.sockProtocol + ':';\n }\n } else {\n const scriptSource = getCurrentScriptSource();\n\n let url = {};\n try {\n // The placeholder `baseURL` with `window.location.href`,\n // is to allow parsing of path-relative or protocol-relative URLs,\n // and will have no effect if `scriptSource` is a fully valid URL.\n url = new URL(scriptSource, window.location.href);\n } catch (e) {\n // URL parsing failed, do nothing.\n // We will still proceed to see if we can recover using `resourceQuery`\n }\n\n // Parse authentication credentials in case we need them\n if (url.username) {\n // Since HTTP basic authentication does not allow empty username,\n // we only include password if the username is not empty.\n // Result: <username> or <username>:<password>\n urlParts.auth = url.username;\n if (url.password) {\n urlParts.auth += ':' + url.password;\n }\n }\n\n // `file://` URLs has `'null'` origin\n if (url.origin !== 'null') {\n urlParts.hostname = url.hostname;\n }\n\n urlParts.protocol = url.protocol;\n urlParts.port = url.port;\n }\n\n if (!urlParts.pathname) {\n if (metadata.version === 4) {\n // This is hard-coded in WDS v4\n urlParts.pathname = '/ws';\n } else {\n // This is hard-coded in WDS v3\n urlParts.pathname = '/sockjs-node';\n }\n }\n\n // Check for IPv4 and IPv6 host addresses that correspond to any/empty.\n // This is important because `hostname` can be empty for some hosts,\n // such as 'about:blank' or 'file://' URLs.\n const isEmptyHostname =\n urlParts.hostname === '0.0.0.0' || urlParts.hostname === '[::]' || !urlParts.hostname;\n // We only re-assign the hostname if it is empty,\n // and if we are using HTTP/HTTPS protocols.\n if (\n isEmptyHostname &&\n window.location.hostname &&\n window.location.protocol.indexOf('http') === 0\n ) {\n urlParts.hostname = window.location.hostname;\n }\n\n // We only re-assign `protocol` when `protocol` is unavailable,\n // or if `hostname` is available and is empty,\n // since otherwise we risk creating an invalid URL.\n // We also do this when 'https' is used as it mandates the use of secure sockets.\n if (\n !urlParts.protocol ||\n (urlParts.hostname && (isEmptyHostname || window.location.protocol === 'https:'))\n ) {\n urlParts.protocol = window.location.protocol;\n }\n\n // We only re-assign port when it is not available\n if (!urlParts.port) {\n urlParts.port = window.location.port;\n }\n\n if (!urlParts.hostname || !urlParts.pathname) {\n console.log(urlParts);\n throw new Error(\n [\n '[React Refresh] Failed to get an URL for the socket connection.',\n \"This usually means that the current executed script doesn't have a `src` attribute set.\",\n 'You should either specify the socket path parameters under the `devServer` key in your Webpack config, or use the `overlay` option.',\n 'https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/API.md#overlay',\n ].join('\\n')\n );\n }\n\n return {\n auth: urlParts.auth,\n hostname: urlParts.hostname,\n pathname: urlParts.pathname,\n protocol: urlParts.protocol,\n port: urlParts.port || undefined,\n };\n}\n\nmodule.exports = getSocketUrlParts;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcyMS5qcyIsIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0IsbUJBQU8sQ0FBQyx1Q0FBNkI7O0FBRXBFO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEI7O0FBRUE7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLHVDQUF1QztBQUNsRCxhQUFhLGdCQUFnQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxnQkFBZ0I7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsid2VicGFjazovL0BzdGFubGVtb24vd2ViZGV2Ly4uLy4uL25vZGVfbW9kdWxlcy9AcG1tbXdoL3JlYWN0LXJlZnJlc2gtd2VicGFjay1wbHVnaW4vc29ja2V0cy91dGlscy9nZXRTb2NrZXRVcmxQYXJ0cy5qcz82MDRkIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGdldEN1cnJlbnRTY3JpcHRTb3VyY2UgPSByZXF1aXJlKCcuL2dldEN1cnJlbnRTY3JpcHRTb3VyY2UuanMnKTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTb2NrZXRVcmxQYXJ0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFthdXRoXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGhvc3RuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Byb3RvY29sXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHBhdGhuYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BvcnRdXG4gKi9cblxuLyoqXG4gKiBQYXJzZSBjdXJyZW50IGxvY2F0aW9uIGFuZCBXZWJwYWNrJ3MgYF9fcmVzb3VyY2VRdWVyeWAgaW50byBwYXJ0cyB0aGF0IGNhbiBjcmVhdGUgYSB2YWxpZCBzb2NrZXQgVVJMLlxuICogQHBhcmFtIHtzdHJpbmd9IFtyZXNvdXJjZVF1ZXJ5XSBUaGUgV2VicGFjayBgX19yZXNvdXJjZVF1ZXJ5YCBzdHJpbmcuXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9nZXRXRFNNZXRhZGF0YScpLldEU01ldGFPYmp9IFttZXRhZGF0YV0gVGhlIHBhcnNlZCBXRFMgbWV0YWRhdGEgb2JqZWN0LlxuICogQHJldHVybnMge1NvY2tldFVybFBhcnRzfSBUaGUgcGFyc2VkIFVSTCBwYXJ0cy5cbiAqIEBzZWUgaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9hcGkvbW9kdWxlLXZhcmlhYmxlcy8jX19yZXNvdXJjZXF1ZXJ5LXdlYnBhY2stc3BlY2lmaWNcbiAqL1xuZnVuY3Rpb24gZ2V0U29ja2V0VXJsUGFydHMocmVzb3VyY2VRdWVyeSwgbWV0YWRhdGEpIHtcbiAgaWYgKHR5cGVvZiBtZXRhZGF0YSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBtZXRhZGF0YSA9IHt9O1xuICB9XG5cbiAgLyoqIEB0eXBlIHtTb2NrZXRVcmxQYXJ0c30gKi9cbiAgbGV0IHVybFBhcnRzID0ge307XG5cbiAgLy8gSWYgdGhlIHJlc291cmNlIHF1ZXJ5IGlzIGF2YWlsYWJsZSxcbiAgLy8gcGFyc2UgaXQgYW5kIGlnbm9yZSBldmVyeXRoaW5nIHdlIHJlY2VpdmVkIGZyb20gdGhlIHNjcmlwdCBob3N0LlxuICBpZiAocmVzb3VyY2VRdWVyeSkge1xuICAgIGNvbnN0IHBhcnNlZFF1ZXJ5ID0ge307XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhyZXNvdXJjZVF1ZXJ5LnNsaWNlKDEpKTtcbiAgICBzZWFyY2hQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgICAgcGFyc2VkUXVlcnlba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgdXJsUGFydHMuaG9zdG5hbWUgPSBwYXJzZWRRdWVyeS5zb2NrSG9zdDtcbiAgICB1cmxQYXJ0cy5wYXRobmFtZSA9IHBhcnNlZFF1ZXJ5LnNvY2tQYXRoO1xuICAgIHVybFBhcnRzLnBvcnQgPSBwYXJzZWRRdWVyeS5zb2NrUG9ydDtcblxuICAgIC8vIE1ha2Ugc3VyZSB0aGUgcHJvdG9jb2wgZnJvbSByZXNvdXJjZSBxdWVyeSBoYXMgYSB0cmFpbGluZyBjb2xvblxuICAgIGlmIChwYXJzZWRRdWVyeS5zb2NrUHJvdG9jb2wpIHtcbiAgICAgIHVybFBhcnRzLnByb3RvY29sID0gcGFyc2VkUXVlcnkuc29ja1Byb3RvY29sICsgJzonO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzY3JpcHRTb3VyY2UgPSBnZXRDdXJyZW50U2NyaXB0U291cmNlKCk7XG5cbiAgICBsZXQgdXJsID0ge307XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRoZSBwbGFjZWhvbGRlciBgYmFzZVVSTGAgd2l0aCBgd2luZG93LmxvY2F0aW9uLmhyZWZgLFxuICAgICAgLy8gaXMgdG8gYWxsb3cgcGFyc2luZyBvZiBwYXRoLXJlbGF0aXZlIG9yIHByb3RvY29sLXJlbGF0aXZlIFVSTHMsXG4gICAgICAvLyBhbmQgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiBgc2NyaXB0U291cmNlYCBpcyBhIGZ1bGx5IHZhbGlkIFVSTC5cbiAgICAgIHVybCA9IG5ldyBVUkwoc2NyaXB0U291cmNlLCB3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gVVJMIHBhcnNpbmcgZmFpbGVkLCBkbyBub3RoaW5nLlxuICAgICAgLy8gV2Ugd2lsbCBzdGlsbCBwcm9jZWVkIHRvIHNlZSBpZiB3ZSBjYW4gcmVjb3ZlciB1c2luZyBgcmVzb3VyY2VRdWVyeWBcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscyBpbiBjYXNlIHdlIG5lZWQgdGhlbVxuICAgIGlmICh1cmwudXNlcm5hbWUpIHtcbiAgICAgIC8vIFNpbmNlIEhUVFAgYmFzaWMgYXV0aGVudGljYXRpb24gZG9lcyBub3QgYWxsb3cgZW1wdHkgdXNlcm5hbWUsXG4gICAgICAvLyB3ZSBvbmx5IGluY2x1ZGUgcGFzc3dvcmQgaWYgdGhlIHVzZXJuYW1lIGlzIG5vdCBlbXB0eS5cbiAgICAgIC8vIFJlc3VsdDogPHVzZXJuYW1lPiBvciA8dXNlcm5hbWU+OjxwYXNzd29yZD5cbiAgICAgIHVybFBhcnRzLmF1dGggPSB1cmwudXNlcm5hbWU7XG4gICAgICBpZiAodXJsLnBhc3N3b3JkKSB7XG4gICAgICAgIHVybFBhcnRzLmF1dGggKz0gJzonICsgdXJsLnBhc3N3b3JkO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGBmaWxlOi8vYCBVUkxzIGhhcyBgJ251bGwnYCBvcmlnaW5cbiAgICBpZiAodXJsLm9yaWdpbiAhPT0gJ251bGwnKSB7XG4gICAgICB1cmxQYXJ0cy5ob3N0bmFtZSA9IHVybC5ob3N0bmFtZTtcbiAgICB9XG5cbiAgICB1cmxQYXJ0cy5wcm90b2NvbCA9IHVybC5wcm90b2NvbDtcbiAgICB1cmxQYXJ0cy5wb3J0ID0gdXJsLnBvcnQ7XG4gIH1cblxuICBpZiAoIXVybFBhcnRzLnBhdGhuYW1lKSB7XG4gICAgaWYgKG1ldGFkYXRhLnZlcnNpb24gPT09IDQpIHtcbiAgICAgIC8vIFRoaXMgaXMgaGFyZC1jb2RlZCBpbiBXRFMgdjRcbiAgICAgIHVybFBhcnRzLnBhdGhuYW1lID0gJy93cyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgaXMgaGFyZC1jb2RlZCBpbiBXRFMgdjNcbiAgICAgIHVybFBhcnRzLnBhdGhuYW1lID0gJy9zb2NranMtbm9kZSc7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIElQdjQgYW5kIElQdjYgaG9zdCBhZGRyZXNzZXMgdGhhdCBjb3JyZXNwb25kIHRvIGFueS9lbXB0eS5cbiAgLy8gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBgaG9zdG5hbWVgIGNhbiBiZSBlbXB0eSBmb3Igc29tZSBob3N0cyxcbiAgLy8gc3VjaCBhcyAnYWJvdXQ6YmxhbmsnIG9yICdmaWxlOi8vJyBVUkxzLlxuICBjb25zdCBpc0VtcHR5SG9zdG5hbWUgPVxuICAgIHVybFBhcnRzLmhvc3RuYW1lID09PSAnMC4wLjAuMCcgfHwgdXJsUGFydHMuaG9zdG5hbWUgPT09ICdbOjpdJyB8fCAhdXJsUGFydHMuaG9zdG5hbWU7XG4gIC8vIFdlIG9ubHkgcmUtYXNzaWduIHRoZSBob3N0bmFtZSBpZiBpdCBpcyBlbXB0eSxcbiAgLy8gYW5kIGlmIHdlIGFyZSB1c2luZyBIVFRQL0hUVFBTIHByb3RvY29scy5cbiAgaWYgKFxuICAgIGlzRW1wdHlIb3N0bmFtZSAmJlxuICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSAmJlxuICAgIHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09IDBcbiAgKSB7XG4gICAgdXJsUGFydHMuaG9zdG5hbWUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG4gIH1cblxuICAvLyBXZSBvbmx5IHJlLWFzc2lnbiBgcHJvdG9jb2xgIHdoZW4gYHByb3RvY29sYCBpcyB1bmF2YWlsYWJsZSxcbiAgLy8gb3IgaWYgYGhvc3RuYW1lYCBpcyBhdmFpbGFibGUgYW5kIGlzIGVtcHR5LFxuICAvLyBzaW5jZSBvdGhlcndpc2Ugd2UgcmlzayBjcmVhdGluZyBhbiBpbnZhbGlkIFVSTC5cbiAgLy8gV2UgYWxzbyBkbyB0aGlzIHdoZW4gJ2h0dHBzJyBpcyB1c2VkIGFzIGl0IG1hbmRhdGVzIHRoZSB1c2Ugb2Ygc2VjdXJlIHNvY2tldHMuXG4gIGlmIChcbiAgICAhdXJsUGFydHMucHJvdG9jb2wgfHxcbiAgICAodXJsUGFydHMuaG9zdG5hbWUgJiYgKGlzRW1wdHlIb3N0bmFtZSB8fCB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT09ICdodHRwczonKSlcbiAgKSB7XG4gICAgdXJsUGFydHMucHJvdG9jb2wgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2w7XG4gIH1cblxuICAvLyBXZSBvbmx5IHJlLWFzc2lnbiBwb3J0IHdoZW4gaXQgaXMgbm90IGF2YWlsYWJsZVxuICBpZiAoIXVybFBhcnRzLnBvcnQpIHtcbiAgICB1cmxQYXJ0cy5wb3J0ID0gd2luZG93LmxvY2F0aW9uLnBvcnQ7XG4gIH1cblxuICBpZiAoIXVybFBhcnRzLmhvc3RuYW1lIHx8ICF1cmxQYXJ0cy5wYXRobmFtZSkge1xuICAgIGNvbnNvbGUubG9nKHVybFBhcnRzKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBbXG4gICAgICAgICdbUmVhY3QgUmVmcmVzaF0gRmFpbGVkIHRvIGdldCBhbiBVUkwgZm9yIHRoZSBzb2NrZXQgY29ubmVjdGlvbi4nLFxuICAgICAgICBcIlRoaXMgdXN1YWxseSBtZWFucyB0aGF0IHRoZSBjdXJyZW50IGV4ZWN1dGVkIHNjcmlwdCBkb2Vzbid0IGhhdmUgYSBgc3JjYCBhdHRyaWJ1dGUgc2V0LlwiLFxuICAgICAgICAnWW91IHNob3VsZCBlaXRoZXIgc3BlY2lmeSB0aGUgc29ja2V0IHBhdGggcGFyYW1ldGVycyB1bmRlciB0aGUgYGRldlNlcnZlcmAga2V5IGluIHlvdXIgV2VicGFjayBjb25maWcsIG9yIHVzZSB0aGUgYG92ZXJsYXlgIG9wdGlvbi4nLFxuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3BtbW13aC9yZWFjdC1yZWZyZXNoLXdlYnBhY2stcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL0FQSS5tZCNvdmVybGF5JyxcbiAgICAgIF0uam9pbignXFxuJylcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhdXRoOiB1cmxQYXJ0cy5hdXRoLFxuICAgIGhvc3RuYW1lOiB1cmxQYXJ0cy5ob3N0bmFtZSxcbiAgICBwYXRobmFtZTogdXJsUGFydHMucGF0aG5hbWUsXG4gICAgcHJvdG9jb2w6IHVybFBhcnRzLnByb3RvY29sLFxuICAgIHBvcnQ6IHVybFBhcnRzLnBvcnQgfHwgdW5kZWZpbmVkLFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFNvY2tldFVybFBhcnRzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3721\n");
1468
+ eval("const getCurrentScriptSource = __webpack_require__(/*! ./getCurrentScriptSource.js */ 7629);\n\n/**\n * @typedef {Object} SocketUrlParts\n * @property {string} [auth]\n * @property {string} hostname\n * @property {string} [protocol]\n * @property {string} pathname\n * @property {string} [port]\n */\n\n/**\n * Parse current location and Webpack's `__resourceQuery` into parts that can create a valid socket URL.\n * @param {string} [resourceQuery] The Webpack `__resourceQuery` string.\n * @param {import('./getWDSMetadata').WDSMetaObj} [metadata] The parsed WDS metadata object.\n * @returns {SocketUrlParts} The parsed URL parts.\n * @see https://webpack.js.org/api/module-variables/#__resourcequery-webpack-specific\n */\nfunction getSocketUrlParts(resourceQuery, metadata) {\n if (typeof metadata === 'undefined') {\n metadata = {};\n }\n\n /** @type {SocketUrlParts} */\n let urlParts = {};\n\n // If the resource query is available,\n // parse it and ignore everything we received from the script host.\n if (resourceQuery) {\n const parsedQuery = {};\n const searchParams = new URLSearchParams(resourceQuery.slice(1));\n searchParams.forEach(function (value, key) {\n parsedQuery[key] = value;\n });\n\n urlParts.hostname = parsedQuery.sockHost;\n urlParts.pathname = parsedQuery.sockPath;\n urlParts.port = parsedQuery.sockPort;\n\n // Make sure the protocol from resource query has a trailing colon\n if (parsedQuery.sockProtocol) {\n urlParts.protocol = parsedQuery.sockProtocol + ':';\n }\n } else {\n const scriptSource = getCurrentScriptSource();\n\n let url = {};\n try {\n // The placeholder `baseURL` with `window.location.href`,\n // is to allow parsing of path-relative or protocol-relative URLs,\n // and will have no effect if `scriptSource` is a fully valid URL.\n url = new URL(scriptSource, window.location.href);\n } catch (e) {\n // URL parsing failed, do nothing.\n // We will still proceed to see if we can recover using `resourceQuery`\n }\n\n // Parse authentication credentials in case we need them\n if (url.username) {\n // Since HTTP basic authentication does not allow empty username,\n // we only include password if the username is not empty.\n // Result: <username> or <username>:<password>\n urlParts.auth = url.username;\n if (url.password) {\n urlParts.auth += ':' + url.password;\n }\n }\n\n // `file://` URLs has `'null'` origin\n if (url.origin !== 'null') {\n urlParts.hostname = url.hostname;\n }\n\n urlParts.protocol = url.protocol;\n urlParts.port = url.port;\n }\n\n if (!urlParts.pathname) {\n if (metadata.version === 4) {\n // This is hard-coded in WDS v4\n urlParts.pathname = '/ws';\n } else {\n // This is hard-coded in WDS v3\n urlParts.pathname = '/sockjs-node';\n }\n }\n\n // Check for IPv4 and IPv6 host addresses that correspond to any/empty.\n // This is important because `hostname` can be empty for some hosts,\n // such as 'about:blank' or 'file://' URLs.\n const isEmptyHostname =\n urlParts.hostname === '0.0.0.0' || urlParts.hostname === '[::]' || !urlParts.hostname;\n // We only re-assign the hostname if it is empty,\n // and if we are using HTTP/HTTPS protocols.\n if (\n isEmptyHostname &&\n window.location.hostname &&\n window.location.protocol.indexOf('http') === 0\n ) {\n urlParts.hostname = window.location.hostname;\n }\n\n // We only re-assign `protocol` when `protocol` is unavailable,\n // or if `hostname` is available and is empty,\n // since otherwise we risk creating an invalid URL.\n // We also do this when 'https' is used as it mandates the use of secure sockets.\n if (\n !urlParts.protocol ||\n (urlParts.hostname && (isEmptyHostname || window.location.protocol === 'https:'))\n ) {\n urlParts.protocol = window.location.protocol;\n }\n\n // We only re-assign port when it is not available\n if (!urlParts.port) {\n urlParts.port = window.location.port;\n }\n\n if (!urlParts.hostname || !urlParts.pathname) {\n throw new Error(\n [\n '[React Refresh] Failed to get an URL for the socket connection.',\n \"This usually means that the current executed script doesn't have a `src` attribute set.\",\n 'You should either specify the socket path parameters under the `devServer` key in your Webpack config, or use the `overlay` option.',\n 'https://github.com/pmmmwh/react-refresh-webpack-plugin/blob/main/docs/API.md#overlay',\n ].join('\\n')\n );\n }\n\n return {\n auth: urlParts.auth,\n hostname: urlParts.hostname,\n pathname: urlParts.pathname,\n protocol: urlParts.protocol,\n port: urlParts.port || undefined,\n };\n}\n\nmodule.exports = getSocketUrlParts;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMzcyMS5qcyIsIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0IsbUJBQU8sQ0FBQyx1Q0FBNkI7O0FBRXBFO0FBQ0EsYUFBYSxRQUFRO0FBQ3JCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEIsY0FBYyxRQUFRO0FBQ3RCLGNBQWMsUUFBUTtBQUN0QixjQUFjLFFBQVE7QUFDdEI7O0FBRUE7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQixXQUFXLHVDQUF1QztBQUNsRCxhQUFhLGdCQUFnQjtBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYSxnQkFBZ0I7QUFDN0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ac3RhbmxlbW9uL3dlYmRldi8uLi8uLi9ub2RlX21vZHVsZXMvQHBtbW13aC9yZWFjdC1yZWZyZXNoLXdlYnBhY2stcGx1Z2luL3NvY2tldHMvdXRpbHMvZ2V0U29ja2V0VXJsUGFydHMuanM/NjA0ZCJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRDdXJyZW50U2NyaXB0U291cmNlID0gcmVxdWlyZSgnLi9nZXRDdXJyZW50U2NyaXB0U291cmNlLmpzJyk7XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU29ja2V0VXJsUGFydHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbYXV0aF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBob3N0bmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwcm90b2NvbF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwYXRobmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwb3J0XVxuICovXG5cbi8qKlxuICogUGFyc2UgY3VycmVudCBsb2NhdGlvbiBhbmQgV2VicGFjaydzIGBfX3Jlc291cmNlUXVlcnlgIGludG8gcGFydHMgdGhhdCBjYW4gY3JlYXRlIGEgdmFsaWQgc29ja2V0IFVSTC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbcmVzb3VyY2VRdWVyeV0gVGhlIFdlYnBhY2sgYF9fcmVzb3VyY2VRdWVyeWAgc3RyaW5nLlxuICogQHBhcmFtIHtpbXBvcnQoJy4vZ2V0V0RTTWV0YWRhdGEnKS5XRFNNZXRhT2JqfSBbbWV0YWRhdGFdIFRoZSBwYXJzZWQgV0RTIG1ldGFkYXRhIG9iamVjdC5cbiAqIEByZXR1cm5zIHtTb2NrZXRVcmxQYXJ0c30gVGhlIHBhcnNlZCBVUkwgcGFydHMuXG4gKiBAc2VlIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvYXBpL21vZHVsZS12YXJpYWJsZXMvI19fcmVzb3VyY2VxdWVyeS13ZWJwYWNrLXNwZWNpZmljXG4gKi9cbmZ1bmN0aW9uIGdldFNvY2tldFVybFBhcnRzKHJlc291cmNlUXVlcnksIG1ldGFkYXRhKSB7XG4gIGlmICh0eXBlb2YgbWV0YWRhdGEgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgbWV0YWRhdGEgPSB7fTtcbiAgfVxuXG4gIC8qKiBAdHlwZSB7U29ja2V0VXJsUGFydHN9ICovXG4gIGxldCB1cmxQYXJ0cyA9IHt9O1xuXG4gIC8vIElmIHRoZSByZXNvdXJjZSBxdWVyeSBpcyBhdmFpbGFibGUsXG4gIC8vIHBhcnNlIGl0IGFuZCBpZ25vcmUgZXZlcnl0aGluZyB3ZSByZWNlaXZlZCBmcm9tIHRoZSBzY3JpcHQgaG9zdC5cbiAgaWYgKHJlc291cmNlUXVlcnkpIHtcbiAgICBjb25zdCBwYXJzZWRRdWVyeSA9IHt9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocmVzb3VyY2VRdWVyeS5zbGljZSgxKSk7XG4gICAgc2VhcmNoUGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCBrZXkpIHtcbiAgICAgIHBhcnNlZFF1ZXJ5W2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIHVybFBhcnRzLmhvc3RuYW1lID0gcGFyc2VkUXVlcnkuc29ja0hvc3Q7XG4gICAgdXJsUGFydHMucGF0aG5hbWUgPSBwYXJzZWRRdWVyeS5zb2NrUGF0aDtcbiAgICB1cmxQYXJ0cy5wb3J0ID0gcGFyc2VkUXVlcnkuc29ja1BvcnQ7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIHByb3RvY29sIGZyb20gcmVzb3VyY2UgcXVlcnkgaGFzIGEgdHJhaWxpbmcgY29sb25cbiAgICBpZiAocGFyc2VkUXVlcnkuc29ja1Byb3RvY29sKSB7XG4gICAgICB1cmxQYXJ0cy5wcm90b2NvbCA9IHBhcnNlZFF1ZXJ5LnNvY2tQcm90b2NvbCArICc6JztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2NyaXB0U291cmNlID0gZ2V0Q3VycmVudFNjcmlwdFNvdXJjZSgpO1xuXG4gICAgbGV0IHVybCA9IHt9O1xuICAgIHRyeSB7XG4gICAgICAvLyBUaGUgcGxhY2Vob2xkZXIgYGJhc2VVUkxgIHdpdGggYHdpbmRvdy5sb2NhdGlvbi5ocmVmYCxcbiAgICAgIC8vIGlzIHRvIGFsbG93IHBhcnNpbmcgb2YgcGF0aC1yZWxhdGl2ZSBvciBwcm90b2NvbC1yZWxhdGl2ZSBVUkxzLFxuICAgICAgLy8gYW5kIHdpbGwgaGF2ZSBubyBlZmZlY3QgaWYgYHNjcmlwdFNvdXJjZWAgaXMgYSBmdWxseSB2YWxpZCBVUkwuXG4gICAgICB1cmwgPSBuZXcgVVJMKHNjcmlwdFNvdXJjZSwgd2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFVSTCBwYXJzaW5nIGZhaWxlZCwgZG8gbm90aGluZy5cbiAgICAgIC8vIFdlIHdpbGwgc3RpbGwgcHJvY2VlZCB0byBzZWUgaWYgd2UgY2FuIHJlY292ZXIgdXNpbmcgYHJlc291cmNlUXVlcnlgXG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMgaW4gY2FzZSB3ZSBuZWVkIHRoZW1cbiAgICBpZiAodXJsLnVzZXJuYW1lKSB7XG4gICAgICAvLyBTaW5jZSBIVFRQIGJhc2ljIGF1dGhlbnRpY2F0aW9uIGRvZXMgbm90IGFsbG93IGVtcHR5IHVzZXJuYW1lLFxuICAgICAgLy8gd2Ugb25seSBpbmNsdWRlIHBhc3N3b3JkIGlmIHRoZSB1c2VybmFtZSBpcyBub3QgZW1wdHkuXG4gICAgICAvLyBSZXN1bHQ6IDx1c2VybmFtZT4gb3IgPHVzZXJuYW1lPjo8cGFzc3dvcmQ+XG4gICAgICB1cmxQYXJ0cy5hdXRoID0gdXJsLnVzZXJuYW1lO1xuICAgICAgaWYgKHVybC5wYXNzd29yZCkge1xuICAgICAgICB1cmxQYXJ0cy5hdXRoICs9ICc6JyArIHVybC5wYXNzd29yZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgZmlsZTovL2AgVVJMcyBoYXMgYCdudWxsJ2Agb3JpZ2luXG4gICAgaWYgKHVybC5vcmlnaW4gIT09ICdudWxsJykge1xuICAgICAgdXJsUGFydHMuaG9zdG5hbWUgPSB1cmwuaG9zdG5hbWU7XG4gICAgfVxuXG4gICAgdXJsUGFydHMucHJvdG9jb2wgPSB1cmwucHJvdG9jb2w7XG4gICAgdXJsUGFydHMucG9ydCA9IHVybC5wb3J0O1xuICB9XG5cbiAgaWYgKCF1cmxQYXJ0cy5wYXRobmFtZSkge1xuICAgIGlmIChtZXRhZGF0YS52ZXJzaW9uID09PSA0KSB7XG4gICAgICAvLyBUaGlzIGlzIGhhcmQtY29kZWQgaW4gV0RTIHY0XG4gICAgICB1cmxQYXJ0cy5wYXRobmFtZSA9ICcvd3MnO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGlzIGhhcmQtY29kZWQgaW4gV0RTIHYzXG4gICAgICB1cmxQYXJ0cy5wYXRobmFtZSA9ICcvc29ja2pzLW5vZGUnO1xuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGZvciBJUHY0IGFuZCBJUHY2IGhvc3QgYWRkcmVzc2VzIHRoYXQgY29ycmVzcG9uZCB0byBhbnkvZW1wdHkuXG4gIC8vIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgYGhvc3RuYW1lYCBjYW4gYmUgZW1wdHkgZm9yIHNvbWUgaG9zdHMsXG4gIC8vIHN1Y2ggYXMgJ2Fib3V0OmJsYW5rJyBvciAnZmlsZTovLycgVVJMcy5cbiAgY29uc3QgaXNFbXB0eUhvc3RuYW1lID1cbiAgICB1cmxQYXJ0cy5ob3N0bmFtZSA9PT0gJzAuMC4wLjAnIHx8IHVybFBhcnRzLmhvc3RuYW1lID09PSAnWzo6XScgfHwgIXVybFBhcnRzLmhvc3RuYW1lO1xuICAvLyBXZSBvbmx5IHJlLWFzc2lnbiB0aGUgaG9zdG5hbWUgaWYgaXQgaXMgZW1wdHksXG4gIC8vIGFuZCBpZiB3ZSBhcmUgdXNpbmcgSFRUUC9IVFRQUyBwcm90b2NvbHMuXG4gIGlmIChcbiAgICBpc0VtcHR5SG9zdG5hbWUgJiZcbiAgICB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgJiZcbiAgICB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZignaHR0cCcpID09PSAwXG4gICkge1xuICAgIHVybFBhcnRzLmhvc3RuYW1lID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuICB9XG5cbiAgLy8gV2Ugb25seSByZS1hc3NpZ24gYHByb3RvY29sYCB3aGVuIGBwcm90b2NvbGAgaXMgdW5hdmFpbGFibGUsXG4gIC8vIG9yIGlmIGBob3N0bmFtZWAgaXMgYXZhaWxhYmxlIGFuZCBpcyBlbXB0eSxcbiAgLy8gc2luY2Ugb3RoZXJ3aXNlIHdlIHJpc2sgY3JlYXRpbmcgYW4gaW52YWxpZCBVUkwuXG4gIC8vIFdlIGFsc28gZG8gdGhpcyB3aGVuICdodHRwcycgaXMgdXNlZCBhcyBpdCBtYW5kYXRlcyB0aGUgdXNlIG9mIHNlY3VyZSBzb2NrZXRzLlxuICBpZiAoXG4gICAgIXVybFBhcnRzLnByb3RvY29sIHx8XG4gICAgKHVybFBhcnRzLmhvc3RuYW1lICYmIChpc0VtcHR5SG9zdG5hbWUgfHwgd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09PSAnaHR0cHM6JykpXG4gICkge1xuICAgIHVybFBhcnRzLnByb3RvY29sID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sO1xuICB9XG5cbiAgLy8gV2Ugb25seSByZS1hc3NpZ24gcG9ydCB3aGVuIGl0IGlzIG5vdCBhdmFpbGFibGVcbiAgaWYgKCF1cmxQYXJ0cy5wb3J0KSB7XG4gICAgdXJsUGFydHMucG9ydCA9IHdpbmRvdy5sb2NhdGlvbi5wb3J0O1xuICB9XG5cbiAgaWYgKCF1cmxQYXJ0cy5ob3N0bmFtZSB8fCAhdXJsUGFydHMucGF0aG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBbXG4gICAgICAgICdbUmVhY3QgUmVmcmVzaF0gRmFpbGVkIHRvIGdldCBhbiBVUkwgZm9yIHRoZSBzb2NrZXQgY29ubmVjdGlvbi4nLFxuICAgICAgICBcIlRoaXMgdXN1YWxseSBtZWFucyB0aGF0IHRoZSBjdXJyZW50IGV4ZWN1dGVkIHNjcmlwdCBkb2Vzbid0IGhhdmUgYSBgc3JjYCBhdHRyaWJ1dGUgc2V0LlwiLFxuICAgICAgICAnWW91IHNob3VsZCBlaXRoZXIgc3BlY2lmeSB0aGUgc29ja2V0IHBhdGggcGFyYW1ldGVycyB1bmRlciB0aGUgYGRldlNlcnZlcmAga2V5IGluIHlvdXIgV2VicGFjayBjb25maWcsIG9yIHVzZSB0aGUgYG92ZXJsYXlgIG9wdGlvbi4nLFxuICAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL3BtbW13aC9yZWFjdC1yZWZyZXNoLXdlYnBhY2stcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL0FQSS5tZCNvdmVybGF5JyxcbiAgICAgIF0uam9pbignXFxuJylcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhdXRoOiB1cmxQYXJ0cy5hdXRoLFxuICAgIGhvc3RuYW1lOiB1cmxQYXJ0cy5ob3N0bmFtZSxcbiAgICBwYXRobmFtZTogdXJsUGFydHMucGF0aG5hbWUsXG4gICAgcHJvdG9jb2w6IHVybFBhcnRzLnByb3RvY29sLFxuICAgIHBvcnQ6IHVybFBhcnRzLnBvcnQgfHwgdW5kZWZpbmVkLFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFNvY2tldFVybFBhcnRzO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///3721\n");
1469
1469
 
1470
1470
  /***/ }),
1471
1471
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stanlemon/webdev",
3
- "version": "0.1.52",
3
+ "version": "0.1.53",
4
4
  "description": "My typical web development setup, but without all the copy and paste.",
5
5
  "keywords": [
6
6
  "webpack",
@@ -21,17 +21,17 @@
21
21
  },
22
22
  "dependencies": {
23
23
  "@babel/cli": "^7.17.10",
24
- "@babel/core": "^7.18.0",
25
- "@babel/preset-env": "^7.18.0",
24
+ "@babel/core": "^7.18.2",
25
+ "@babel/preset-env": "^7.18.2",
26
26
  "@babel/preset-react": "^7.17.12",
27
27
  "@babel/preset-typescript": "^7.17.12",
28
28
  "@peculiar/webcrypto": "^1.4.0",
29
- "@pmmmwh/react-refresh-webpack-plugin": "^0.5.6",
29
+ "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
30
30
  "@stanlemon/eslint-config": "*",
31
31
  "@testing-library/jest-dom": "^5.16.4",
32
32
  "@types/jest": "^27.5.1",
33
33
  "@types/react": "^18.0.9",
34
- "@types/react-dom": "^18.0.4",
34
+ "@types/react-dom": "^18.0.5",
35
35
  "@types/webpack": "^5.28.0",
36
36
  "@types/webpack-env": "^1.17.0",
37
37
  "babel-jest": "^28.1.0",
@@ -48,14 +48,14 @@
48
48
  "prettier": "^2.6.2",
49
49
  "react-refresh": "^0.13.0",
50
50
  "style-loader": "^3.3.1",
51
- "typescript": "^4.6.4",
51
+ "typescript": "^4.7.2",
52
52
  "webpack": "^5.72.1",
53
53
  "webpack-bundle-analyzer": "^4.5.0",
54
54
  "webpack-cli": "^4.9.2",
55
55
  "webpack-dev-server": "^4.9.0"
56
56
  },
57
57
  "devDependencies": {
58
- "@types/react-dom": "^18.0.4",
58
+ "@types/react-dom": "^18.0.5",
59
59
  "react": "^18.1.0",
60
60
  "react-dom": "^18.1.0"
61
61
  },