diff --git a/src/lib.rs b/src/lib.rs index 52912c6..d1d3b73 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -111,6 +111,18 @@ impl Universe { pub fn render(&self) -> String { self.to_string() } + + pub fn width(&self) -> u32 { + self.width + } + + pub fn height(&self) -> u32 { + self.height + } + + pub fn cells(&self) -> *const Cell { + self.cells.as_ptr() + } } impl Default for Universe { diff --git a/www/index.html b/www/index.html index 6e7dc0a..e8472f4 100644 --- a/www/index.html +++ b/www/index.html @@ -21,7 +21,7 @@
- + diff --git a/www/index.js b/www/index.js index 8250927..81fbad5 100644 --- a/www/index.js +++ b/www/index.js @@ -1,14 +1,81 @@ -import { Universe } from "wasm-game-of-life"; +import { Universe, Cell } from "wasm-game-of-life"; +import { memory } from "wasm-game-of-life/wasm_game_of_life_bg.wasm"; + +const CELL_SIZE = 5; +const GRID_COLOR = "#CCCCCC"; +const DEAD_COLOR = "#FFFFFF"; +const ALIVE_COLOR = "#000000"; -const pre = document.getElementById("game-of-life-canvas"); const universe = Universe.new(); +const width = universe.width(); +const height = universe.height(); + +// Give the canvas room for all of our cells and a 1px border +// around each of them. +const canvas = document.getElementById("game-of-life-canvas"); +canvas.height = (CELL_SIZE + 1) * height + 1; +canvas.width = (CELL_SIZE + 1) * width + 1; + +const ctx = canvas.getContext('2d'); + +const drawGrid = () => { + ctx.beginPath(); + ctx.strokeStyle = GRID_COLOR; + + // Vertical lines. + for (let i = 0; i <= width; i++) { + ctx.moveTo(i * (CELL_SIZE + 1) + 1, 0); + ctx.lineTo(i * (CELL_SIZE + 1) + 1, (CELL_SIZE + 1) * height + 1); + } + + // Horizontal lines. + for (let j = 0; j <= height; j++) { + ctx.moveTo(0, j * (CELL_SIZE + 1) + 1); + ctx.lineTo((CELL_SIZE + 1) * width + 1, j * (CELL_SIZE + 1) + 1); + } + + ctx.stroke(); +}; + +const getIndex = (row, column) => { + return row * width + column; +}; +const drawCells = () => { + const cellsPtr = universe.cells(); + const cells = new Uint8Array(memory.buffer, cellsPtr, width * height); + + ctx.beginPath(); + + for (let row = 0; row < height; row++) { + for (let col = 0; col < width; col++) { + const idx = getIndex(row, col); + + ctx.fillStyle = cells[idx] === Cell.Dead + ? DEAD_COLOR + : ALIVE_COLOR; + + ctx.fillRect( + col * (CELL_SIZE + 1) + 1, + row * (CELL_SIZE + 1) + 1, + CELL_SIZE, + CELL_SIZE + ); + } + } + + ctx.stroke(); +}; const renderLoop = () => { - pre.textContent = universe.render(); universe.tick(); + drawGrid(); + drawCells(); + requestAnimationFrame(renderLoop); }; +drawGrid(); +drawCells(); requestAnimationFrame(renderLoop); diff --git a/www/package.json b/www/package.json index aa33e8a..8a34c4e 100644 --- a/www/package.json +++ b/www/package.json @@ -26,13 +26,13 @@ "url": "https://github.com/rustwasm/create-wasm-app/issues" }, "homepage": "https://github.com/rustwasm/create-wasm-app#readme", - "dependencies": { + "dependencies": { "wasm-game-of-life": "file:../pkg" }, "devDependencies": { - "webpack": "^5.97.1", + "copy-webpack-plugin": "^12.0.2", + "webpack": "^5.98.0", "webpack-cli": "^6.0.1", - "webpack-dev-server": "^5.2.0", - "copy-webpack-plugin": "^12.0.2" + "webpack-dev-server": "^5.2.0" } } diff --git a/www/pnpm-lock.yaml b/www/pnpm-lock.yaml index 2170a6a..aa12ad0 100644 --- a/www/pnpm-lock.yaml +++ b/www/pnpm-lock.yaml @@ -14,16 +14,16 @@ importers: devDependencies: copy-webpack-plugin: specifier: ^12.0.2 - version: 12.0.2(webpack@5.97.1) + version: 12.0.2(webpack@5.98.0) webpack: - specifier: ^5.97.1 - version: 5.97.1(webpack-cli@6.0.1) + specifier: ^5.98.0 + version: 5.98.0(webpack-cli@6.0.1) webpack-cli: specifier: ^6.0.1 - version: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1) + version: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0) webpack-dev-server: specifier: ^5.2.0 - version: 5.2.0(webpack-cli@6.0.1)(webpack@5.97.1) + version: 5.2.0(webpack-cli@6.0.1)(webpack@5.98.0) packages: @@ -134,8 +134,8 @@ packages: '@types/node-forge@1.3.11': resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} - '@types/node@22.13.1': - resolution: {integrity: sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==} + '@types/node@22.13.5': + resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==} '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -254,19 +254,11 @@ packages: ajv: optional: true - ajv-keywords@3.5.2: - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - ajv-keywords@5.1.0: resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} peerDependencies: ajv: ^8.8.2 - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -316,16 +308,16 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} - call-bind-apply-helpers@1.0.1: - resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} call-bound@1.0.3: resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} engines: {node: '>= 0.4'} - caniuse-lite@1.0.30001699: - resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} + caniuse-lite@1.0.30001700: + resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} @@ -353,8 +345,8 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} - compression@1.7.5: - resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} + compression@1.8.0: + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} engines: {node: '>= 0.8.0'} connect-history-api-fallback@2.0.0: @@ -444,8 +436,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.96: - resolution: {integrity: sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==} + electron-to-chromium@1.5.103: + resolution: {integrity: sha512-P6+XzIkfndgsrjROJWfSvVEgNHtPgbhVyTkwLjUM2HU/h7pZRORgaTlHqfAikqxKmdJMLW8fftrdGWbd/Ds0FA==} encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} @@ -524,9 +516,6 @@ packages: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -582,8 +571,8 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - get-intrinsic@1.2.7: - resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} get-proto@1.0.1: @@ -755,9 +744,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -765,8 +751,8 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - launch-editor@2.9.1: - resolution: {integrity: sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==} + launch-editor@2.10.0: + resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} @@ -933,10 +919,6 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -1014,10 +996,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.0: resolution: {integrity: sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==} engines: {node: '>= 10.13.0'} @@ -1145,8 +1123,8 @@ packages: uglify-js: optional: true - terser@5.38.1: - resolution: {integrity: sha512-GWANVlPM/ZfYzuPHjq0nxT+EbOEDDN3Jwhwdg1D8TU8oSkktp8w64Uq4auuGLxFSoNTRDncTq2hQHX1Ld9KHkA==} + terser@5.39.0: + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} engines: {node: '>=10'} hasBin: true @@ -1197,9 +1175,6 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -1269,8 +1244,8 @@ packages: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} - webpack@5.97.1: - resolution: {integrity: sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==} + webpack@5.98.0: + resolution: {integrity: sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -1295,8 +1270,8 @@ packages: wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + ws@8.18.1: + resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -1368,20 +1343,20 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.6 - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/eslint-scope@3.7.7': dependencies: @@ -1397,14 +1372,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -1420,7 +1395,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/json-schema@7.0.15': {} @@ -1428,9 +1403,9 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 - '@types/node@22.13.1': + '@types/node@22.13.5': dependencies: undici-types: 6.20.0 @@ -1443,7 +1418,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/serve-index@1.9.4': dependencies: @@ -1452,16 +1427,16 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/send': 0.17.4 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@types/ws@8.5.14': dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 '@webassemblyjs/ast@1.14.1': dependencies: @@ -1539,22 +1514,22 @@ snapshots: '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': + '@webpack-cli/configtest@3.0.1(webpack-cli@6.0.1)(webpack@5.98.0)': dependencies: - webpack: 5.97.1(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1) + webpack: 5.98.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0) - '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.97.1)': + '@webpack-cli/info@3.0.1(webpack-cli@6.0.1)(webpack@5.98.0)': dependencies: - webpack: 5.97.1(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1) + webpack: 5.98.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0) - '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.0)(webpack@5.97.1)': + '@webpack-cli/serve@3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.0)(webpack@5.98.0)': dependencies: - webpack: 5.97.1(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1) + webpack: 5.98.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0) optionalDependencies: - webpack-dev-server: 5.2.0(webpack-cli@6.0.1)(webpack@5.97.1) + webpack-dev-server: 5.2.0(webpack-cli@6.0.1)(webpack@5.98.0) '@xtuc/ieee754@1.2.0': {} @@ -1571,22 +1546,11 @@ snapshots: optionalDependencies: ajv: 8.17.1 - ajv-keywords@3.5.2(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - ajv-keywords@5.1.0(ajv@8.17.1): dependencies: ajv: 8.17.1 fast-deep-equal: 3.1.3 - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -1635,8 +1599,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001699 - electron-to-chromium: 1.5.96 + caniuse-lite: 1.0.30001700 + electron-to-chromium: 1.5.103 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -1648,17 +1612,17 @@ snapshots: bytes@3.1.2: {} - call-bind-apply-helpers@1.0.1: + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 call-bound@1.0.3: dependencies: - call-bind-apply-helpers: 1.0.1 - get-intrinsic: 1.2.7 + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 - caniuse-lite@1.0.30001699: {} + caniuse-lite@1.0.30001700: {} chokidar@3.6.0: dependencies: @@ -1690,7 +1654,7 @@ snapshots: dependencies: mime-db: 1.53.0 - compression@1.7.5: + compression@1.8.0: dependencies: bytes: 3.1.2 compressible: 2.0.18 @@ -1714,7 +1678,7 @@ snapshots: cookie@0.7.1: {} - copy-webpack-plugin@12.0.2(webpack@5.97.1): + copy-webpack-plugin@12.0.2(webpack@5.98.0): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -1722,7 +1686,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - webpack: 5.97.1(webpack-cli@6.0.1) + webpack: 5.98.0(webpack-cli@6.0.1) core-util-is@1.0.3: {} @@ -1763,13 +1727,13 @@ snapshots: dunder-proto@1.0.1: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-errors: 1.3.0 gopd: 1.2.0 ee-first@1.1.1: {} - electron-to-chromium@1.5.96: {} + electron-to-chromium@1.5.103: {} encodeurl@1.0.2: {} @@ -1861,8 +1825,6 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 - fast-json-stable-stringify@2.1.0: {} - fast-uri@3.0.6: {} fastest-levenshtein@1.0.16: {} @@ -1909,9 +1871,9 @@ snapshots: function-bind@1.1.2: {} - get-intrinsic@1.2.7: + get-intrinsic@1.3.0: dependencies: - call-bind-apply-helpers: 1.0.1 + call-bind-apply-helpers: 1.0.2 es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 @@ -2071,19 +2033,17 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.1 + '@types/node': 22.13.5 merge-stream: 2.0.0 supports-color: 8.1.1 json-parse-even-better-errors@2.3.1: {} - json-schema-traverse@0.4.1: {} - json-schema-traverse@1.0.0: {} kind-of@6.0.3: {} - launch-editor@2.9.1: + launch-editor@2.10.0: dependencies: picocolors: 1.1.1 shell-quote: 1.8.2 @@ -2211,8 +2171,6 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - punycode@2.3.1: {} - qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -2288,12 +2246,6 @@ snapshots: safer-buffer@2.1.2: {} - schema-utils@3.3.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.0: dependencies: '@types/json-schema': 7.0.15 @@ -2376,14 +2328,14 @@ snapshots: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: call-bound: 1.0.3 es-errors: 1.3.0 - get-intrinsic: 1.2.7 + get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-map: 1.0.1 @@ -2451,16 +2403,16 @@ snapshots: tapable@2.2.1: {} - terser-webpack-plugin@5.3.11(webpack@5.97.1): + terser-webpack-plugin@5.3.11(webpack@5.98.0): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.0 serialize-javascript: 6.0.2 - terser: 5.38.1 - webpack: 5.97.1(webpack-cli@6.0.1) + terser: 5.39.0 + webpack: 5.98.0(webpack-cli@6.0.1) - terser@5.38.1: + terser@5.39.0: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.14.0 @@ -2502,10 +2454,6 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - util-deprecate@1.0.2: {} utils-merge@1.0.1: {} @@ -2525,12 +2473,12 @@ snapshots: dependencies: minimalistic-assert: 1.0.1 - webpack-cli@6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1): + webpack-cli@6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0): dependencies: '@discoveryjs/json-ext': 0.6.3 - '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.97.1) - '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.97.1) - '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.0)(webpack@5.97.1) + '@webpack-cli/configtest': 3.0.1(webpack-cli@6.0.1)(webpack@5.98.0) + '@webpack-cli/info': 3.0.1(webpack-cli@6.0.1)(webpack@5.98.0) + '@webpack-cli/serve': 3.0.1(webpack-cli@6.0.1)(webpack-dev-server@5.2.0)(webpack@5.98.0) colorette: 2.0.20 commander: 12.1.0 cross-spawn: 7.0.6 @@ -2539,12 +2487,12 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.97.1(webpack-cli@6.0.1) + webpack: 5.98.0(webpack-cli@6.0.1) webpack-merge: 6.0.1 optionalDependencies: - webpack-dev-server: 5.2.0(webpack-cli@6.0.1)(webpack@5.97.1) + webpack-dev-server: 5.2.0(webpack-cli@6.0.1)(webpack@5.98.0) - webpack-dev-middleware@7.4.2(webpack@5.97.1): + webpack-dev-middleware@7.4.2(webpack@5.98.0): dependencies: colorette: 2.0.20 memfs: 4.17.0 @@ -2553,9 +2501,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.0 optionalDependencies: - webpack: 5.97.1(webpack-cli@6.0.1) + webpack: 5.98.0(webpack-cli@6.0.1) - webpack-dev-server@5.2.0(webpack-cli@6.0.1)(webpack@5.97.1): + webpack-dev-server@5.2.0(webpack-cli@6.0.1)(webpack@5.98.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -2568,13 +2516,13 @@ snapshots: bonjour-service: 1.3.0 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.7.5 + compression: 1.8.0 connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 http-proxy-middleware: 2.0.7(@types/express@4.17.21) ipaddr.js: 2.2.0 - launch-editor: 2.9.1 + launch-editor: 2.10.0 open: 10.1.0 p-retry: 6.2.1 schema-utils: 4.3.0 @@ -2582,11 +2530,11 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.97.1) - ws: 8.18.0 + webpack-dev-middleware: 7.4.2(webpack@5.98.0) + ws: 8.18.1 optionalDependencies: - webpack: 5.97.1(webpack-cli@6.0.1) - webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1) + webpack: 5.98.0(webpack-cli@6.0.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0) transitivePeerDependencies: - bufferutil - debug @@ -2601,7 +2549,7 @@ snapshots: webpack-sources@3.2.3: {} - webpack@5.97.1(webpack-cli@6.0.1): + webpack@5.98.0(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.6 @@ -2621,13 +2569,13 @@ snapshots: loader-runner: 4.3.0 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.3.0 + schema-utils: 4.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.11(webpack@5.97.1) + terser-webpack-plugin: 5.3.11(webpack@5.98.0) watchpack: 2.4.2 webpack-sources: 3.2.3 optionalDependencies: - webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.97.1) + webpack-cli: 6.0.1(webpack-dev-server@5.2.0)(webpack@5.98.0) transitivePeerDependencies: - '@swc/core' - esbuild @@ -2647,4 +2595,4 @@ snapshots: wildcard@2.0.1: {} - ws@8.18.0: {} + ws@8.18.1: {}