diff --git a/frontend/.env b/frontend/.env index 43f338cc7f..aff66ac0f9 100644 --- a/frontend/.env +++ b/frontend/.env @@ -6,6 +6,7 @@ VITE_APP_SENTRY_PROJECT_ID="4506435887366144" VITE_APP_POSTHOG_API_KEY=phc_6kfTNEAVw7rn1LA51cO3D69FefbKupSWFaM7OUgEpEo VITE_APP_POSTHOG_HOST=https://ph.rivet.gg VITE_APP_CLOUD_API_URL=https://cloud.rivet.gg/api +DEPLOYMENT_TYPE=staging # Overridden in CI SENTRY_AUTH_TOKEN= diff --git a/frontend/package.json b/frontend/package.json index 98585d4ade..71b4dc4d03 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -106,6 +106,7 @@ "estree-util-to-js": "^2.0.0", "fast-deep-equal": "^3.1.3", "fast-json-patch": "^3.1.1", + "favigo": "^1.1.0", "file-saver": "^2.0.5", "filesize": "^11.0.2", "framer-motion": "^11.18.2", diff --git a/frontend/src/lib/env.ts b/frontend/src/lib/env.ts index e7721c12fd..b7f734d63a 100644 --- a/frontend/src/lib/env.ts +++ b/frontend/src/lib/env.ts @@ -14,6 +14,7 @@ export const commonEnvSchema = z.object({ SENTRY_AUTH_TOKEN: z.string().optional(), SENTRY_PROJECT: z.string().optional(), APP_TYPE: z.enum(["engine", "cloud", "inspector"]).optional(), + DEPLOYMENT_TYPE: z.enum(["staging", "production"]).optional(), }); export const commonEnv = () => commonEnvSchema.parse(import.meta.env); diff --git a/frontend/vite.engine.config.ts b/frontend/vite.engine.config.ts index d6ce645a60..8e15efa859 100644 --- a/frontend/vite.engine.config.ts +++ b/frontend/vite.engine.config.ts @@ -3,6 +3,7 @@ import path from "node:path"; import { sentryVitePlugin } from "@sentry/vite-plugin"; import { tanstackRouter } from "@tanstack/router-plugin/vite"; import react from "@vitejs/plugin-react"; +import favigo from "favigo/vite"; import { defineConfig, loadEnv, type Plugin } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; import { commonEnvSchema } from "./src/lib/env"; @@ -11,6 +12,25 @@ import { commonEnvSchema } from "./src/lib/env"; const GIT_BRANCH = process.env.CF_PAGES_BRANCH; const GIT_SHA = process.env.CF_PAGES_COMMIT_SHA; + + +const getVariantForMode = (mode: string) => { + switch (mode) { + case 'staging': + return { + type: 'badge', + text: 'DEV', + backgroundColor: '#FF4F00', + textColor: '#ffffff', + position: 'bottom-right', + size: 'large', + } as const + default: + return undefined + } +} + + // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = commonEnvSchema.parse(loadEnv(mode, process.cwd(), "")); @@ -33,6 +53,14 @@ export default defineConfig(({ mode }) => { : undefined, }) : null, + favigo({ + source: "./public/favicon.svg", + variant: getVariantForMode(env.DEPLOYMENT_TYPE || 'production'), + configuration: { + theme_color: "#FF4F00", + background: "transparent", + } + }), ], server: { port: 43708, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72464974c6..ee07da0917 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,7 +27,7 @@ importers: version: 1.12.4 tsup: specifier: ^8.5.0 - version: 8.5.0(@microsoft/api-extractor@7.43.0(@types/node@24.3.3))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) + version: 8.5.0(@microsoft/api-extractor@7.43.0(@types/node@24.7.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1) turbo: specifier: ^2.5.6 version: 2.5.6 @@ -320,6 +320,9 @@ importers: fast-json-patch: specifier: ^3.1.1 version: 3.1.1 + favigo: + specifier: ^1.1.0 + version: 1.1.0(esbuild@0.25.9)(rollup@4.50.1)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.9)) file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -650,7 +653,7 @@ importers: version: 19.1.1(react@19.1.1) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@24.3.3)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + version: 5.4.20(@types/node@24.7.1)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) devDependencies: esbuild: specifier: ^0.25.9 @@ -1062,7 +1065,7 @@ importers: version: 5.9.2 vite-node: specifier: ^2.1.9 - version: 2.1.9(@types/node@24.3.3)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + version: 2.1.9(@types/node@24.7.1)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) yaml: specifier: ^2.8.1 version: 2.8.1 @@ -1390,9 +1393,15 @@ packages: '@codemirror/autocomplete@6.18.7': resolution: {integrity: sha512-8EzdeIoWPJDsMBwz3zdzwXnUpCzMiCyz5/A3FIPpriaclFCGDkAzK13sMcnsu5rowqiyeQN2Vs2TsOcoDPZirQ==} + '@codemirror/autocomplete@6.19.0': + resolution: {integrity: sha512-61Hfv3cF07XvUxNeC3E7jhG8XNi1Yom1G0lRC936oLnlF+jrbrv8rc/J98XlYzcsAoTVupfsf5fLej1aI8kyIg==} + '@codemirror/commands@6.8.1': resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} + '@codemirror/commands@6.9.0': + resolution: {integrity: sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==} + '@codemirror/lang-javascript@6.2.4': resolution: {integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==} @@ -1405,6 +1414,9 @@ packages: '@codemirror/lint@6.8.5': resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} + '@codemirror/lint@6.9.0': + resolution: {integrity: sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==} + '@codemirror/merge@6.10.2': resolution: {integrity: sha512-rmHzVkt5FnCtsi0IgvDIDjh/J4LmbfOboB7FMvVl21IHO0p1QM6jSwjkBjBD3D+c+T79OabEqoduCqvJCBV8Yg==} @@ -1420,6 +1432,9 @@ packages: '@codemirror/view@6.38.2': resolution: {integrity: sha512-bTWAJxL6EOFLPzTx+O5P5xAO3gTqpatQ2b/ARQ8itfU/v2LlpS3pH2fkL0A3E/Fx8Y2St2KES7ZEV0sHTsSW/A==} + '@codemirror/view@6.38.5': + resolution: {integrity: sha512-SFVsNAgsAoou+BjRewMqN+m9jaztB9wCWN9RSRgePqUbq8UVlvJfku5zB2KVhLPgH/h0RLk38tvd4tGeAhygnw==} + '@coinbase/wallet-sdk@4.3.0': resolution: {integrity: sha512-T3+SNmiCw4HzDm4we9wCHCxlP0pqCiwKe4sOwPH3YAK2KSKjxPRydKu6UQJrdONFVLG7ujXvbd/6ZqmvJb8rkw==} @@ -3817,8 +3832,8 @@ packages: '@types/node@24.3.1': resolution: {integrity: sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==} - '@types/node@24.3.3': - resolution: {integrity: sha512-GKBNHjoNw3Kra1Qg5UXttsY5kiWMEfoHq2TmXb+b1rcm6N7B3wTrFYIf/oSZ1xNQ+hVVijgLkiDZh7jRRsh+Gw==} + '@types/node@24.7.1': + resolution: {integrity: sha512-CmyhGZanP88uuC5GpWU9q+fI61j2SkhO3UGMUdfYRE6Bcy0ccyzn1Rqj9YAB/ZY4kOXmNf0ocah5GtphmLMP6Q==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -4333,8 +4348,8 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} - baseline-browser-mapping@2.8.3: - resolution: {integrity: sha512-mcE+Wr2CAhHNWxXN/DdTI+n4gsPc5QpXpWnyCQWiQYIYZX+ZMJ8juXZgjRa/0/YPJo/NSsgW15/YgmI4nbysYw==} + baseline-browser-mapping@2.8.15: + resolution: {integrity: sha512-qsJ8/X+UypqxHXN75M7dF88jNK37dLBRW7LeUzCPz+TNs37G8cfWy9nWzS+LS//g600zrt2le9KuXt0rWfDz5Q==} hasBin: true basic-auth@2.0.1: @@ -4372,8 +4387,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.26.0: - resolution: {integrity: sha512-P9go2WrP9FiPwLv3zqRD/Uoxo0RSHjzFCiQz7d4vbmwNqQFo9T9WCeP/Qn5EbcKQY6DBbkxEXNcpJOmncNrb7A==} + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -4419,6 +4434,9 @@ packages: caniuse-lite@1.0.30001741: resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} + caniuse-lite@1.0.30001749: + resolution: {integrity: sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==} + canvas-confetti@1.9.3: resolution: {integrity: sha512-rFfTURMvmVEX1gyXFgn5QMn81bYk70qa0HLzcIOSVEyl57n6o9ItHeBtUSWdvKAPY0xlvBHno4/v3QPrT83q9g==} @@ -4827,8 +4845,8 @@ packages: electron-to-chromium@1.5.215: resolution: {integrity: sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==} - electron-to-chromium@1.5.218: - resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} + electron-to-chromium@1.5.233: + resolution: {integrity: sha512-iUdTQSf7EFXsDdQsp8MwJz5SVk4APEFqXU/S47OtQ0YLqacSwPXdZ5vRlMX3neb07Cy2vgioNuRnWUXFwuslkg==} emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -5174,6 +5192,23 @@ packages: resolution: {integrity: sha512-k/2rVBRIRzOeom3wI9jBPaSEvoTSQEW4iM0EveBmBBKFxO8mSyyRWtDlfC3VnEfu0avmjrMzy8/ZFPSe6F71Hw==} engines: {node: '>=14.0.0'} + favigo@1.1.0: + resolution: {integrity: sha512-9xHVuaKUbszU8r5JG3ud7+5FeQaVqlQbZ5Xdr/SAwZK/ZK+lzxAfAP9kpZuS9NfbQUBbQscH1uM+UCUUsDWTTw==} + peerDependencies: + esbuild: '*' + rollup: ^3.0.0 || ^4.0.0 + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + esbuild: + optional: true + rollup: + optional: true + vite: + optional: true + webpack: + optional: true + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -5965,8 +6000,8 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + loader-runner@4.3.1: + resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} loader-utils@2.0.4: @@ -6428,8 +6463,8 @@ packages: node-releases@2.0.20: resolution: {integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==} - node-releases@2.0.21: - resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + node-releases@2.0.23: + resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -7266,8 +7301,8 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} + schema-utils@4.3.3: + resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} secure-json-parse@4.0.0: @@ -7597,8 +7632,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - tapable@2.2.3: - resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@2.1.3: @@ -7886,6 +7921,9 @@ packages: undici-types@7.10.0: resolution: {integrity: sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==} + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} @@ -7935,6 +7973,10 @@ packages: unplugin@1.0.1: resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + unplugin@2.3.10: resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} engines: {node: '>=18.12.0'} @@ -8737,6 +8779,13 @@ snapshots: '@codemirror/view': 6.38.2 '@lezer/common': 1.2.3 + '@codemirror/autocomplete@6.19.0': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.5 + '@lezer/common': 1.2.3 + '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.11.3 @@ -8744,6 +8793,13 @@ snapshots: '@codemirror/view': 6.38.2 '@lezer/common': 1.2.3 + '@codemirror/commands@6.9.0': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.5 + '@lezer/common': 1.2.3 + '@codemirror/lang-javascript@6.2.4': dependencies: '@codemirror/autocomplete': 6.18.7 @@ -8774,6 +8830,12 @@ snapshots: '@codemirror/view': 6.38.2 crelt: 1.0.6 + '@codemirror/lint@6.9.0': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.5 + crelt: 1.0.6 + '@codemirror/merge@6.10.2': dependencies: '@codemirror/language': 6.11.3 @@ -8785,7 +8847,7 @@ snapshots: '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.2 + '@codemirror/view': 6.38.5 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -8796,7 +8858,7 @@ snapshots: dependencies: '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.2 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 '@codemirror/view@6.38.2': @@ -8806,6 +8868,13 @@ snapshots: style-mod: 4.1.2 w3c-keyname: 2.2.8 + '@codemirror/view@6.38.5': + dependencies: + '@codemirror/state': 6.5.2 + crelt: 1.0.6 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + '@coinbase/wallet-sdk@4.3.0': dependencies: '@noble/hashes': 1.8.0 @@ -9624,11 +9693,11 @@ snapshots: - '@types/node' optional: true - '@microsoft/api-extractor-model@7.28.13(@types/node@24.3.3)': + '@microsoft/api-extractor-model@7.28.13(@types/node@24.7.1)': dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@24.3.3) + '@rushstack/node-core-library': 4.0.2(@types/node@24.7.1) transitivePeerDependencies: - '@types/node' optional: true @@ -9670,15 +9739,15 @@ snapshots: - '@types/node' optional: true - '@microsoft/api-extractor@7.43.0(@types/node@24.3.3)': + '@microsoft/api-extractor@7.43.0(@types/node@24.7.1)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@24.3.3) + '@microsoft/api-extractor-model': 7.28.13(@types/node@24.7.1) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@24.3.3) + '@rushstack/node-core-library': 4.0.2(@types/node@24.7.1) '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@24.3.3) - '@rushstack/ts-command-line': 4.19.1(@types/node@24.3.3) + '@rushstack/terminal': 0.10.0(@types/node@24.7.1) + '@rushstack/ts-command-line': 4.19.1(@types/node@24.7.1) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -10619,7 +10688,7 @@ snapshots: '@types/node': 22.18.1 optional: true - '@rushstack/node-core-library@4.0.2(@types/node@24.3.3)': + '@rushstack/node-core-library@4.0.2(@types/node@24.7.1)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -10628,7 +10697,7 @@ snapshots: semver: 7.5.4 z-schema: 5.0.5 optionalDependencies: - '@types/node': 24.3.3 + '@types/node': 24.7.1 optional: true '@rushstack/rig-package@0.5.2': @@ -10651,12 +10720,12 @@ snapshots: '@types/node': 22.18.1 optional: true - '@rushstack/terminal@0.10.0(@types/node@24.3.3)': + '@rushstack/terminal@0.10.0(@types/node@24.7.1)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@24.3.3) + '@rushstack/node-core-library': 4.0.2(@types/node@24.7.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.3.3 + '@types/node': 24.7.1 optional: true '@rushstack/ts-command-line@4.19.1(@types/node@20.19.13)': @@ -10678,9 +10747,9 @@ snapshots: - '@types/node' optional: true - '@rushstack/ts-command-line@4.19.1(@types/node@24.3.3)': + '@rushstack/ts-command-line@4.19.1(@types/node@24.7.1)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@24.3.3) + '@rushstack/terminal': 0.10.0(@types/node@24.7.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -11225,9 +11294,9 @@ snapshots: dependencies: undici-types: 7.10.0 - '@types/node@24.3.3': + '@types/node@24.7.1': dependencies: - undici-types: 7.10.0 + undici-types: 7.14.0 '@types/parse-json@4.0.2': {} @@ -11817,7 +11886,7 @@ snapshots: base64id@2.0.0: {} - baseline-browser-mapping@2.8.3: {} + baseline-browser-mapping@2.8.15: {} basic-auth@2.0.1: dependencies: @@ -11859,13 +11928,13 @@ snapshots: node-releases: 2.0.20 update-browserslist-db: 1.1.3(browserslist@4.25.4) - browserslist@4.26.0: + browserslist@4.26.3: dependencies: - baseline-browser-mapping: 2.8.3 - caniuse-lite: 1.0.30001741 - electron-to-chromium: 1.5.218 - node-releases: 2.0.21 - update-browserslist-db: 1.1.3(browserslist@4.26.0) + baseline-browser-mapping: 2.8.15 + caniuse-lite: 1.0.30001749 + electron-to-chromium: 1.5.233 + node-releases: 2.0.23 + update-browserslist-db: 1.1.3(browserslist@4.26.3) buffer-from@1.1.2: {} @@ -11909,6 +11978,8 @@ snapshots: caniuse-lite@1.0.30001741: {} + caniuse-lite@1.0.30001749: {} + canvas-confetti@1.9.3: {} cbor-extract@2.2.0: @@ -12013,13 +12084,13 @@ snapshots: codemirror@6.0.2: dependencies: - '@codemirror/autocomplete': 6.18.7 - '@codemirror/commands': 6.8.1 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/commands': 6.9.0 '@codemirror/language': 6.11.3 - '@codemirror/lint': 6.8.5 + '@codemirror/lint': 6.9.0 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.2 + '@codemirror/view': 6.38.5 collapse-white-space@2.1.0: {} @@ -12285,7 +12356,7 @@ snapshots: electron-to-chromium@1.5.215: {} - electron-to-chromium@1.5.218: {} + electron-to-chromium@1.5.233: {} emoji-regex-xs@1.0.0: {} @@ -12332,7 +12403,7 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.3 + tapable: 2.3.0 entities@4.5.0: {} @@ -12871,6 +12942,17 @@ snapshots: sharp: 0.33.5 xml2js: 0.6.2 + favigo@1.1.0(esbuild@0.25.9)(rollup@4.50.1)(vite@5.4.20(@types/node@20.19.13)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0))(webpack@5.101.3(esbuild@0.25.9)): + dependencies: + favicons: 7.2.0 + sharp: 0.33.5 + unplugin: 1.16.1 + optionalDependencies: + esbuild: 0.25.9 + rollup: 4.50.1 + vite: 5.4.20(@types/node@20.19.13)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + webpack: 5.101.3(esbuild@0.25.9) + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -13525,7 +13607,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.3.3 + '@types/node': 24.7.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -13698,7 +13780,7 @@ snapshots: load-tsconfig@0.2.5: {} - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@2.0.4: dependencies: @@ -14435,7 +14517,7 @@ snapshots: node-releases@2.0.20: {} - node-releases@2.0.21: {} + node-releases@2.0.23: {} normalize-path@3.0.0: {} @@ -15369,7 +15451,7 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.3.2: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 ajv: 8.17.1 @@ -15860,7 +15942,7 @@ snapshots: transitivePeerDependencies: - ts-node - tapable@2.2.3: {} + tapable@2.3.0: {} tar-fs@2.1.3: dependencies: @@ -15898,7 +15980,7 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 webpack: 5.101.3(esbuild@0.25.9) @@ -16060,7 +16142,7 @@ snapshots: - tsx - yaml - tsup@8.5.0(@microsoft/api-extractor@7.43.0(@types/node@24.3.3))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): + tsup@8.5.0(@microsoft/api-extractor@7.43.0(@types/node@24.7.1))(jiti@1.21.7)(postcss@8.5.6)(tsx@4.20.5)(typescript@5.9.2)(yaml@2.8.1): dependencies: bundle-require: 5.1.0(esbuild@0.25.9) cac: 6.7.14 @@ -16080,7 +16162,7 @@ snapshots: tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@24.3.3) + '@microsoft/api-extractor': 7.43.0(@types/node@24.7.1) postcss: 8.5.6 typescript: 5.9.2 transitivePeerDependencies: @@ -16228,6 +16310,8 @@ snapshots: undici-types@7.10.0: {} + undici-types@7.14.0: {} + unified@10.1.2: dependencies: '@types/unist': 2.0.11 @@ -16314,6 +16398,11 @@ snapshots: webpack-sources: 3.3.3 webpack-virtual-modules: 0.5.0 + unplugin@1.16.1: + dependencies: + acorn: 8.15.0 + webpack-virtual-modules: 0.6.2 + unplugin@2.3.10: dependencies: '@jridgewell/remapping': 2.3.5 @@ -16327,9 +16416,9 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-browserslist-db@1.1.3(browserslist@4.26.0): + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: - browserslist: 4.26.0 + browserslist: 4.26.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -16458,13 +16547,13 @@ snapshots: - supports-color - terser - vite-node@2.1.9(@types/node@24.3.3)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): + vite-node@2.1.9(@types/node@24.7.1)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.20(@types/node@24.3.3)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) + vite: 5.4.20(@types/node@24.7.1)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0) transitivePeerDependencies: - '@types/node' - less @@ -16534,13 +16623,13 @@ snapshots: stylus: 0.62.0 terser: 5.44.0 - vite@5.4.20(@types/node@24.3.3)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): + vite@5.4.20(@types/node@24.7.1)(less@4.4.1)(sass@1.93.2)(stylus@0.62.0)(terser@5.44.0): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.50.1 optionalDependencies: - '@types/node': 24.3.3 + '@types/node': 24.7.1 fsevents: 2.3.3 less: 4.4.1 sass: 1.93.2 @@ -16624,7 +16713,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.26.0 + browserslist: 4.26.3 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0 @@ -16633,11 +16722,11 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 4.3.2 - tapable: 2.2.3 + schema-utils: 4.3.3 + tapable: 2.3.0 terser-webpack-plugin: 5.3.14(esbuild@0.25.9)(webpack@5.101.3(esbuild@0.25.9)) watchpack: 2.4.4 webpack-sources: 3.3.3