From 96939dfc79423a431ccd58fc0060c6a842f8a554 Mon Sep 17 00:00:00 2001 From: leundai Date: Thu, 19 Oct 2023 00:59:44 -0400 Subject: [PATCH] Add dev tailwind and icons --- src/lib.rs | 4 +- www/dist/0.bootstrap.js | 2 +- www/dist/5f9dd2697807a7c9ae41.module.wasm | Bin 0 -> 25077 bytes www/dist/bootstrap.js | 2 +- www/dist/index.html | 22 +- www/index.html | 22 +- www/index.js | 7 +- www/package-lock.json | 1110 +++++++++++++++++++-- www/package.json | 7 +- www/postcss.config.js | 4 + www/tailwind.config.js | 8 + www/webpack.config.js | 6 +- 12 files changed, 1104 insertions(+), 90 deletions(-) create mode 100644 www/dist/5f9dd2697807a7c9ae41.module.wasm create mode 100644 www/postcss.config.js create mode 100644 www/tailwind.config.js diff --git a/src/lib.rs b/src/lib.rs index 14c3183..e9cc272 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -132,8 +132,8 @@ impl Universe { pub fn new() -> Universe { utils::set_panic_hook(); - let width: u32 = 64; - let height: u32 = 64; + let width: u32 = 200; + let height: u32 = 200; let cells = (0..width * height) .map(|_| { if js_sys::Math::random() < 0.5 { diff --git a/www/dist/0.bootstrap.js b/www/dist/0.bootstrap.js index 7edcfa9..f8c54c1 100644 --- a/www/dist/0.bootstrap.js +++ b/www/dist/0.bootstrap.js @@ -43,7 +43,7 @@ eval("\"use strict\";\n// Instantiate WebAssembly module\nvar wasmExports = __we /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var wasm_game_of_life__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! wasm-game-of-life */ \"../pkg/wasm_game_of_life.js\");\n/* harmony import */ var wasm_game_of_life_wasm_game_of_life_bg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! wasm-game-of-life/wasm_game_of_life_bg */ \"../pkg/wasm_game_of_life_bg.wasm\");\n\n\n\nconst CELL_SIZE = 10; // px\nconst GRID_COLOR = \"#CCCCCC\";\nconst DEAD_COLOR = \"#FFFFFF\";\nconst ALIVE_COLOR = \"#000000\";\n\n// Construct the universe, and get its width and height.\nconst universe = wasm_game_of_life__WEBPACK_IMPORTED_MODULE_0__[\"Universe\"].new();\nconst width = universe.width();\nconst height = universe.height();\n\n// Give the canvas room for all of our cells and a 1px border\n// around each of them.\nconst canvas = document.getElementById(\"game-of-life-canvas\");\ncanvas.height = (CELL_SIZE + 1) * height + 1;\ncanvas.width = (CELL_SIZE + 1) * width + 1;\n\nconst ctx = canvas.getContext(\"2d\");\n\nlet animationId = null;\n\nconst renderLoop = () => {\n drawGrid();\n drawCells();\n\n universe.tick();\n\n animationId = requestAnimationFrame(renderLoop);\n};\n\nconst isPaused = () => {\n return animationId === null;\n};\n\nconst playPauseButton = document.getElementById(\"play-pause\");\n\nconst play = () => {\n playPauseButton.textContent = \"⏸\";\n renderLoop();\n};\n\nconst pause = () => {\n playPauseButton.textContent = \"▶️\";\n drawGrid();\n drawCells();\n cancelAnimationFrame(animationId);\n animationId = null;\n};\n\nplayPauseButton.addEventListener(\"click\", (event) => {\n if (isPaused()) {\n play();\n } else {\n pause();\n }\n});\n\ncanvas.addEventListener(\"click\", (event) => {\n const boundingRect = canvas.getBoundingClientRect();\n\n const scaleX = canvas.width / boundingRect.width;\n const scaleY = canvas.height / boundingRect.height;\n\n const canvasLeft = (event.clientX - boundingRect.left) * scaleX;\n const canvasTop = (event.clientY - boundingRect.top) * scaleY;\n\n const row = Math.min(Math.floor(canvasTop / (CELL_SIZE + 1)), height - 1);\n const col = Math.min(Math.floor(canvasLeft / (CELL_SIZE + 1)), width - 1);\n\n universe.toggle_cell(row, col);\n\n drawGrid();\n drawCells();\n});\n\nconst drawGrid = () => {\n ctx.beginPath();\n ctx.strokeStyle = GRID_COLOR;\n\n // Vertical lines.\n for (let i = 0; i <= width; i++) {\n ctx.moveTo(i * (CELL_SIZE + 1) + 1, 0);\n ctx.lineTo(i * (CELL_SIZE + 1) + 1, (CELL_SIZE + 1) * height + 1);\n }\n\n // Horizontal lines.\n for (let j = 0; j <= height; j++) {\n ctx.moveTo(0, j * (CELL_SIZE + 1) + 1);\n ctx.lineTo((CELL_SIZE + 1) * width + 1, j * (CELL_SIZE + 1) + 1);\n }\n\n ctx.stroke();\n};\n\nconst getIndex = (row, column) => {\n return row * width + column;\n};\n\nconst drawCells = () => {\n const cellsPtr = universe.cells();\n const cells = new Uint8Array(wasm_game_of_life_wasm_game_of_life_bg__WEBPACK_IMPORTED_MODULE_1__[\"memory\"].buffer, cellsPtr, width * height);\n\n ctx.beginPath();\n\n for (let row = 0; row < height; row++) {\n for (let col = 0; col < width; col++) {\n const idx = getIndex(row, col);\n\n ctx.fillStyle = cells[idx] === wasm_game_of_life__WEBPACK_IMPORTED_MODULE_0__[\"Cell\"].Dead ? DEAD_COLOR : ALIVE_COLOR;\n\n ctx.fillRect(\n col * (CELL_SIZE + 1) + 1,\n row * (CELL_SIZE + 1) + 1,\n CELL_SIZE,\n CELL_SIZE\n );\n }\n }\n\n ctx.stroke();\n};\n\ndrawGrid();\ndrawCells();\nplay();\n\n\n//# sourceURL=webpack:///./index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var wasm_game_of_life__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! wasm-game-of-life */ \"../pkg/wasm_game_of_life.js\");\n/* harmony import */ var wasm_game_of_life_wasm_game_of_life_bg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! wasm-game-of-life/wasm_game_of_life_bg */ \"../pkg/wasm_game_of_life_bg.wasm\");\n\n\n\nconst CELL_SIZE = 5; // px\nconst GRID_COLOR = \"#CCCCCC\";\nconst DEAD_COLOR = \"#FFFFFF\";\nconst ALIVE_COLOR = \"#000000\";\n\n// Construct the universe, and get its width and height.\nconst universe = wasm_game_of_life__WEBPACK_IMPORTED_MODULE_0__[\"Universe\"].new();\nconst width = universe.width();\nconst height = universe.height();\n\n// Give the canvas room for all of our cells and a 1px border\n// around each of them.\nconst canvas = document.getElementById(\"game-of-life-canvas\");\ncanvas.height = (CELL_SIZE + 1) * height + 1;\ncanvas.width = (CELL_SIZE + 1) * width + 1;\n\nconst ctx = canvas.getContext(\"2d\");\n\nlet animationId = null;\n\nconst renderLoop = () => {\n drawGrid();\n drawCells();\n\n universe.tick();\n\n animationId = requestAnimationFrame(renderLoop);\n};\n\nconst isPaused = () => {\n return animationId === null;\n};\n\nconst playPauseButton = document.getElementById(\"play-pause\");\nconst playPauseIcon = document.getElementById(\"play-pause-icon\");\n\nconst play = () => {\n playPauseIcon.className = \"bi bi-pause-fill\";\n renderLoop();\n};\n\nconst pause = () => {\n playPauseIcon.className = \"bi bi-play-fill\";\n drawGrid();\n drawCells();\n cancelAnimationFrame(animationId);\n animationId = null;\n};\n\nplayPauseButton.addEventListener(\"click\", (event) => {\n if (isPaused()) {\n play();\n } else {\n pause();\n }\n});\n\ncanvas.addEventListener(\"click\", (event) => {\n const boundingRect = canvas.getBoundingClientRect();\n\n const scaleX = canvas.width / boundingRect.width;\n const scaleY = canvas.height / boundingRect.height;\n\n const canvasLeft = (event.clientX - boundingRect.left) * scaleX;\n const canvasTop = (event.clientY - boundingRect.top) * scaleY;\n\n const row = Math.min(Math.floor(canvasTop / (CELL_SIZE + 1)), height - 1);\n const col = Math.min(Math.floor(canvasLeft / (CELL_SIZE + 1)), width - 1);\n\n universe.toggle_cell(row, col);\n\n drawGrid();\n drawCells();\n});\n\nconst drawGrid = () => {\n ctx.beginPath();\n ctx.strokeStyle = GRID_COLOR;\n\n // Vertical lines.\n for (let i = 0; i <= width; i++) {\n ctx.moveTo(i * (CELL_SIZE + 1) + 1, 0);\n ctx.lineTo(i * (CELL_SIZE + 1) + 1, (CELL_SIZE + 1) * height + 1);\n }\n\n // Horizontal lines.\n for (let j = 0; j <= height; j++) {\n ctx.moveTo(0, j * (CELL_SIZE + 1) + 1);\n ctx.lineTo((CELL_SIZE + 1) * width + 1, j * (CELL_SIZE + 1) + 1);\n }\n\n ctx.stroke();\n};\n\nconst getIndex = (row, column) => {\n return row * width + column;\n};\n\nconst drawCells = () => {\n const cellsPtr = universe.cells();\n const cells = new Uint8Array(wasm_game_of_life_wasm_game_of_life_bg__WEBPACK_IMPORTED_MODULE_1__[\"memory\"].buffer, cellsPtr, width * height);\n\n ctx.beginPath();\n\n for (let row = 0; row < height; row++) {\n for (let col = 0; col < width; col++) {\n const idx = getIndex(row, col);\n\n ctx.fillStyle = cells[idx] === wasm_game_of_life__WEBPACK_IMPORTED_MODULE_0__[\"Cell\"].Dead ? DEAD_COLOR : ALIVE_COLOR;\n\n ctx.fillRect(\n col * (CELL_SIZE + 1) + 1,\n row * (CELL_SIZE + 1) + 1,\n CELL_SIZE,\n CELL_SIZE\n );\n }\n }\n\n ctx.stroke();\n};\n\ndrawGrid();\ndrawCells();\nplay();\n\n\n//# sourceURL=webpack:///./index.js?"); /***/ }), diff --git a/www/dist/5f9dd2697807a7c9ae41.module.wasm b/www/dist/5f9dd2697807a7c9ae41.module.wasm new file mode 100644 index 0000000000000000000000000000000000000000..5028481709dd3b70ec98331ad6b992ae9560581c GIT binary patch literal 25077 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 D(D_E` literal 0 HcmV?d00001 diff --git a/www/dist/bootstrap.js b/www/dist/bootstrap.js index 1041357..b9705d8 100644 --- a/www/dist/bootstrap.js +++ b/www/dist/bootstrap.js @@ -174,7 +174,7 @@ /******/ promises.push(installedWasmModuleData); /******/ else { /******/ var importObject = wasmImportObjects[wasmModuleId](); -/******/ var req = fetch(__webpack_require__.p + "" + {"../pkg/wasm_game_of_life_bg.wasm":"e302bc301b8706c4bc11"}[wasmModuleId] + ".module.wasm"); +/******/ var req = fetch(__webpack_require__.p + "" + {"../pkg/wasm_game_of_life_bg.wasm":"5f9dd2697807a7c9ae41"}[wasmModuleId] + ".module.wasm"); /******/ var promise; /******/ if(importObject instanceof Promise && typeof WebAssembly.compileStreaming === 'function') { /******/ promise = Promise.all([WebAssembly.compileStreaming(req), importObject]).then(function(items) { diff --git a/www/dist/index.html b/www/dist/index.html index b384008..79c9154 100644 --- a/www/dist/index.html +++ b/www/dist/index.html @@ -5,25 +5,29 @@ Hello wasm-pack! + + - - + + + + diff --git a/www/index.html b/www/index.html index b384008..79c9154 100644 --- a/www/index.html +++ b/www/index.html @@ -5,25 +5,29 @@ Hello wasm-pack! + + - - + + + + diff --git a/www/index.js b/www/index.js index 679f2b0..bbdf62a 100644 --- a/www/index.js +++ b/www/index.js @@ -1,7 +1,7 @@ import { Universe, Cell } from "wasm-game-of-life"; import { memory } from "wasm-game-of-life/wasm_game_of_life_bg"; -const CELL_SIZE = 10; // px +const CELL_SIZE = 5; // px const GRID_COLOR = "#CCCCCC"; const DEAD_COLOR = "#FFFFFF"; const ALIVE_COLOR = "#000000"; @@ -35,14 +35,15 @@ const isPaused = () => { }; const playPauseButton = document.getElementById("play-pause"); +const playPauseIcon = document.getElementById("play-pause-icon"); const play = () => { - playPauseButton.textContent = "⏸"; + playPauseIcon.className = "bi bi-pause-fill"; renderLoop(); }; const pause = () => { - playPauseButton.textContent = "▶️"; + playPauseIcon.className = "bi bi-play-fill"; drawGrid(); drawCells(); cancelAnimationFrame(animationId); diff --git a/www/package-lock.json b/www/package-lock.json index dbbfd2f..c9cc5f5 100644 --- a/www/package-lock.json +++ b/www/package-lock.json @@ -15,8 +15,11 @@ "create-wasm-app": ".bin/create-wasm-app.js" }, "devDependencies": { + "autoprefixer": "^10.4.16", "copy-webpack-plugin": "^5.0.0", "hello-wasm-pack": "^0.1.0", + "postcss": "^8.4.31", + "tailwindcss": "^3.3.3", "webpack": "^4.29.3", "webpack-cli": "^3.1.0", "webpack-dev-server": "^3.1.5" @@ -26,6 +29,101 @@ "name": "wasm-game-of-life", "version": "0.1.0" }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -339,6 +437,12 @@ "node": ">=4" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -355,6 +459,12 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, "node_modules/arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -496,6 +606,43 @@ "node": ">= 4.5.0" } }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -785,6 +932,38 @@ "pako": "~1.0.5" } }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer": { "version": "4.9.2", "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", @@ -852,23 +1031,6 @@ "y18n": "^4.0.0" } }, - "node_modules/cacache/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/cacache/node_modules/graceful-fs": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", @@ -916,6 +1078,35 @@ "node": ">=6" } }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001550", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", + "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -1294,18 +1485,6 @@ "node": ">=4" } }, - "node_modules/copy-webpack-plugin/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/copy-webpack-plugin/node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1414,6 +1593,18 @@ "node": "*" } }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -1565,26 +1756,6 @@ "node": ">=6" } }, - "node_modules/del/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/del/node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -1646,6 +1817,12 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "node_modules/diffie-hellman": { "version": "5.0.3", "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", @@ -1669,6 +1846,12 @@ "node": ">=4" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -1722,6 +1905,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "node_modules/electron-to-chromium": { + "version": "1.4.559", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz", + "integrity": "sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug==", + "dev": true + }, "node_modules/elliptic": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", @@ -1838,6 +2027,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -2182,12 +2380,107 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-glob/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/fast-glob/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/fast-glob/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/faye-websocket": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", @@ -2357,6 +2650,19 @@ "node": ">= 0.6" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3162,9 +3468,9 @@ } }, "node_modules/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -3176,6 +3482,9 @@ }, "engines": { "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { @@ -3756,6 +4065,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -3843,9 +4164,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -4001,6 +4322,15 @@ "node": ">=0.10.0" } }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -4052,6 +4382,21 @@ "node": ">=0.10.0" } }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, "node_modules/loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -4204,6 +4549,15 @@ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -4421,6 +4775,35 @@ "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -4510,6 +4893,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, "node_modules/normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", @@ -4522,10 +4911,19 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "dependencies": { "path-key": "^2.0.0" @@ -4581,6 +4979,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", @@ -4883,6 +5290,12 @@ "node": ">=4" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -4917,6 +5330,24 @@ "node": ">=0.12" } }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -4947,6 +5378,15 @@ "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", @@ -4998,6 +5438,137 @@ "node": ">=0.10.0" } }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -5116,6 +5687,26 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", "dev": true }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -5168,6 +5759,24 @@ "node": ">= 0.8" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -5271,6 +5880,23 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", "dev": true }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", @@ -5344,6 +5970,16 @@ "node": ">= 4" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -5366,6 +6002,29 @@ "inherits": "^2.0.1" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -5860,6 +6519,15 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", @@ -6163,6 +6831,37 @@ "node": ">=0.10.0" } }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -6175,6 +6874,233 @@ "node": ">=6" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tailwindcss/node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwindcss/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwindcss/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/tailwindcss/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/tailwindcss/node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/tailwindcss/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tapable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", @@ -6242,6 +7168,27 @@ "node": ">=0.10.0" } }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/through2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", @@ -6337,6 +7284,12 @@ "node": ">=0.6" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/tslib": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", @@ -6468,6 +7421,36 @@ "yarn": "*" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -7017,6 +8000,15 @@ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", "dev": true }, + "node_modules/yaml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", + "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "13.3.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", diff --git a/www/package.json b/www/package.json index 0c6860f..0cd5037 100644 --- a/www/package.json +++ b/www/package.json @@ -30,10 +30,13 @@ "wasm-game-of-life": "file:../pkg" }, "devDependencies": { + "autoprefixer": "^10.4.16", + "copy-webpack-plugin": "^5.0.0", "hello-wasm-pack": "^0.1.0", + "postcss": "^8.4.31", + "tailwindcss": "^3.3.3", "webpack": "^4.29.3", "webpack-cli": "^3.1.0", - "webpack-dev-server": "^3.1.5", - "copy-webpack-plugin": "^5.0.0" + "webpack-dev-server": "^3.1.5" } } diff --git a/www/postcss.config.js b/www/postcss.config.js new file mode 100644 index 0000000..36b474a --- /dev/null +++ b/www/postcss.config.js @@ -0,0 +1,4 @@ +const tailwindcss = require("tailwindcss"); +module.exports = { + plugins: ["postcss-preset-env", tailwindcss], +}; diff --git a/www/tailwind.config.js b/www/tailwind.config.js new file mode 100644 index 0000000..8c2816c --- /dev/null +++ b/www/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: ["./dist/*.html"], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/www/webpack.config.js b/www/webpack.config.js index 80ad814..ebb7672 100644 --- a/www/webpack.config.js +++ b/www/webpack.config.js @@ -1,5 +1,5 @@ const CopyWebpackPlugin = require("copy-webpack-plugin"); -const path = require('path'); +const path = require("path"); module.exports = { entry: "./bootstrap.js", @@ -8,7 +8,5 @@ module.exports = { filename: "bootstrap.js", }, mode: "development", - plugins: [ - new CopyWebpackPlugin(['index.html']) - ], + plugins: [new CopyWebpackPlugin(["index.html"])], };