diff --git a/.gitignore b/.gitignore index 782e265..385acae 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ npm-debug.log* yarn-debug.log* yarn-error.log* .DS_Store +.env webroot dist old_pixelary @@ -36,3 +37,6 @@ src/server/dist/ # TypeScript build outputs dist/types/ dist/*.tsbuildinfo + +# Dev app playtest script +tools/devvit-playtest.mjs diff --git a/package-lock.json b/package-lock.json index 53d9d69..61bc730 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,13 +10,14 @@ "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { - "@devvit/public-api": "0.12.4", - "@devvit/web": "0.12.4", + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/start": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/web": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "@tanstack/react-query": "^5.90.10", "@trpc/client": "^11.7.1", "@trpc/react-query": "^11.7.1", "@trpc/server": "^11.7.1", - "devvit": "0.12.4", + "devvit": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "express": "5.1.0", "preact": "^10.27.2", "zod": "^4.1.12" @@ -453,6 +454,16 @@ "node": ">=18" } }, + "node_modules/@borewit/text-codec": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -606,15 +617,16 @@ } }, "node_modules/@devvit/build-pack": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/build-pack/-/build-pack-0.12.4.tgz", - "integrity": "sha512-QeKv/cU2xaWcS4eHhbNCOcI6azqJfkMRx15MVbO9mR7qdJEznSGvvhZwpwExvS2Du69ebvE49paFjND06iOWfg==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/build-pack/-/build-pack-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-2Fz5tFGjuaEsLxcLZ+VJgkhPfQWFtQ+JEHc13D4ttTqB3Ic8OQOb5Iw0Ldf4AQBpiPM8tR1p9IBqIntOYeUodA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/payments": "0.12.4", - "@devvit/protos": "0.12.4", - "@devvit/shared-types": "0.12.4", - "@devvit/splash": "0.12.4", + "@devvit/payments": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/splash": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@types/node": "20.14.12", "esbuild": "0.25.9", "rxjs": "7.8.1", "tsv": "0.2.0", @@ -625,6 +637,15 @@ "@devvit/shared": "*" } }, + "node_modules/@devvit/build-pack/node_modules/@types/node": { + "version": "20.14.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz", + "integrity": "sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@devvit/build-pack/node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -638,26 +659,47 @@ "node": ">=14.17" } }, + "node_modules/@devvit/build-pack/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "license": "MIT" + }, + "node_modules/@devvit/builders": { + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/builders/-/builders-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-DFK5FndKfb/AeJxH9GWoj8Fz/IWT0EZBEacPXBuiprV37WyrShsXeNj/maPAH3GpZwbnFXSTi+5HxP0VvyYRqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/build-pack": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/linkers": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" + } + }, "node_modules/@devvit/cache": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/cache/-/cache-0.12.4.tgz", - "integrity": "sha512-zvXAjQO4tO3SMUdTcupzI27VhazdZoikZZmkuESha4Zb7v6OJLG0U7xOccvRfcKopNIWVfWZtPEJpeWPYu9L4w==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/cache/-/cache-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-qbhPUuo0z3pk/5B8XG3f0O9uMT9L0D7Mk/UEFlARIsp2WBb/L50n3G73fxYdfAAn2EXFeBEI/szdi3sBGfTTZg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/redis": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/redis": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/server": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" } }, "node_modules/@devvit/cli": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/cli/-/cli-0.12.4.tgz", - "integrity": "sha512-i+NKyEUX7n0Ovjbu0DgkVLy3q8rKEzTAt8QCBTRIfhkQ5N2vAbCiNnSzFxo2OM74chfZeecMH1A8LD1Qelwhlg==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/cli/-/cli-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-qSNWE8LB0Ds8SvdZpecFMCXzeDtIJ9gZrjfUYpDzT+nb1OYXIX53/CXGe7kpW+KVd37tzV7R+8TMiewJDpBP/g==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/build-pack": "0.12.4", - "@devvit/protos": "0.12.4", - "@devvit/public-api": "0.12.4", - "@devvit/shared-types": "0.12.4", + "@devvit/build-pack": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/builders": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/linkers": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "@improbable-eng/grpc-web": "0.15.0", "@improbable-eng/grpc-web-node-http-transport": "0.15.0", "@oclif/core": "2.9.4", @@ -670,13 +712,16 @@ "chokidar": "3.5.3", "date-fns": "2.29.3", "dotenv": "16.5.0", - "file-type": "18.2.1", + "execa": "9.6.1", + "file-type": "21.3.2", + "ignore": "7.0.5", "image-size": "2.0.2", "inquirer": "9.1.4", "isomorphic-git": "1.33.1", "js-yaml": "4.1.1", "jsdom": "24.1.0", "jszip": "3.10.1", + "mime-types": "3.0.2", "mustache": "4.2.0", "open": "10.1.0", "rxjs": "7.8.1", @@ -693,6 +738,15 @@ "node": ">=20" } }, + "node_modules/@devvit/cli/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@devvit/cli/node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -782,66 +836,78 @@ } }, "node_modules/@devvit/client": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/client/-/client-0.12.4.tgz", - "integrity": "sha512-ZafsoXPBs2fvaUhMq0+U0Mtxa+Mupya3GLqxzkBxknH+lyeDG8hm8y3eS+18sh3jJb1XUbCndX1Xp7PVGy3LaA==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/client/-/client-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-JmIUyYfQgvlwAz2P7OckEK7lAxktEGilIn2iFFE61u5QzXb5/VsgK602Lg4GelpWuxAV16wf3R7X+LHd2Su65Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/web-view-scripts": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" + } + }, + "node_modules/@devvit/linkers": { + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/linkers/-/linkers-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-2foJOY0F7eCh6HRwvbXpQCHrPk5aFCo2C61WfPwy2YEXtpbw6gqiDWjN5WwRR3Jtg25SdYYvg52ZTLfhrm2emg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/build-pack": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" } }, "node_modules/@devvit/media": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/media/-/media-0.12.4.tgz", - "integrity": "sha512-R/4gLiC9eKGkONSA467MOffl+Gb43uqSuu9DiEP4r7UY4HG8VY33ZRrkaSMq0htUWznhzisw6VYwuRkizmFsag==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/media/-/media-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-Jgp0tkKk6xT+dwd8BZWz4erlI0/YBXiAowBrpLjQMX0aiwQxwI5Qiu7vnN/VqZmRch8M0SV+2+l/o4HeijXRsA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/metrics": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/metrics/-/metrics-0.12.4.tgz", - "integrity": "sha512-PUbqG7ZUZROEG+LMDAq0vHK0rR/0kVlN7F8imf4TRQgQWCj7ttLIKiPOHivFCcBjS/dVSyJuzZIdz0cEiqn1ng==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/metrics/-/metrics-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-hVrbPIUIP3QwszkPS7ZjmTUfodeagvp87ciiMKTlQc/4h1Oa7HDMRJumkQYrcAG/uuwG9Vq5qKMVNeLLTh9z2A==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" } }, "node_modules/@devvit/notifications": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/notifications/-/notifications-0.12.4.tgz", - "integrity": "sha512-TYELVhxzTZYslGA3bBLoVHWL0qgq/zdn7wDSoD2Hk6ktJcKt060jpqQvmjicW7WKWYTwgGH1dVOQsNfFf6hkIA==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/notifications/-/notifications-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-kR15qVLi4KoK5XP0DONkUdem3vrGcvUv9mqvLaLGr6pyTYplBvt9mMRD1Ze9schaydFQuDnPhxenoye2eYJaZg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/payments": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/payments/-/payments-0.12.4.tgz", - "integrity": "sha512-Age9CA/25N610FuBpjgF3lBFxp7XdwgSpH5F3mQW0FjGAaihiK4fsye61MO55/vEPkUp7NbjWp0ZaGlwx0lqkQ==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/payments/-/payments-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-yi3iV4B3PTJHAr4jfOQAoCn7iOlA2WN1EmG+Yqhc+P0L6IjrsEwvsnURXXvqXcH1uvxeh3GYsORzuixhGEcw0g==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/public-api": "0.12.4", - "@devvit/server": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/server": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" } }, "node_modules/@devvit/protos": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/protos/-/protos-0.12.4.tgz", - "integrity": "sha512-zJY8nhlomer508ki5jjajfdeLNyhU32Idgt0LObjSg5TccEgSbQcY/7tFAmx6jf4HbC4qiNhyZmXeLWZh/bVHg==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/protos/-/protos-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-S/e4CZ9/jHEi/Ql9AH6OWff1uMn8dVU2W7Ap+8ce2XyoRwUYcFmMRN5Y++leoLjUtwIhC6bzCRP7Gtj40VjsDQ==", "license": "BSD-3-Clause", "dependencies": { "protobufjs": "7.5.4", @@ -857,29 +923,31 @@ } }, "node_modules/@devvit/public-api": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/public-api/-/public-api-0.12.4.tgz", - "integrity": "sha512-e3o7OZ7Gb/SyYVqVuapo2KvW948VL2H1AQrcCjbglu6bkgkJtTC3q1wrWG44EEZRmx+Xeh5bLNhxQZLoyDUNZQ==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/public-api/-/public-api-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-OIqo4czwRyL9aOR4UDcoi8tURL8DbPoNv6jd1B9Mpunde/dV5B/AWhvb/UA8PAv9JOheLWpJitDJQMBPWQ3ULw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/metrics": "0.12.4", - "@devvit/protos": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4", + "@devvit/metrics": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "base64-js": "1.5.1", "clone-deep": "4.0.1", + "jwt-decode": "4.0.0", "moderndash": "4.0.0" } }, "node_modules/@devvit/realtime": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/realtime/-/realtime-0.12.4.tgz", - "integrity": "sha512-yZqx7/e0vYvqimVybu3n9PtwCiXqiuUMeKZOWPVk6l9c8z6Y4m1BQMbvGE6RFrV8H9pSnzuNkqomtv6oVFQIYQ==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/realtime/-/realtime-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-u0Y0TafxA5IhBFimfnoMBkbaKp+96VaJ1Vus8PNTZqPIVQF67YhvR7SH4u+qFwJmhtg4CKXqpDxWNre9y2yg3g==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "rxjs": "7.8.1" }, "peerDependencies": { "@devvit/client": "*", @@ -887,122 +955,148 @@ } }, "node_modules/@devvit/reddit": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/reddit/-/reddit-0.12.4.tgz", - "integrity": "sha512-qQFgzuFECVsQbLEz1Dy/nH/Xx6atfHXlmxukezFD6s90hPJb2Hv/M6iDwo9LyHNMK7UxstFUucvNZinRAFWjfQ==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/reddit/-/reddit-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-umnYO+PMwXEOX3TuchM28l/fx4SwYFJiJRkgpIXz8GiYjfGL1HWYaOlVR7DBQXKQt4cZnd/3/HwGLfR/IicIEw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/public-api": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4", - "@devvit/splash": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/splash": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/redis": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/redis/-/redis-0.12.4.tgz", - "integrity": "sha512-QfZo09jVVqNWYdAlDL2uiq3ctLMae0sXqVn0I0VQMvOYTCVYZA9VgknOBYnOSY+ilUkrMVwoVOvXpKNjwELp5g==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/redis/-/redis-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-1M7BrSTwYkaD9sA0aQYlkA7YUAYMr8WPj32C9M+CXyiq3NyROTE5WZoQKIJTiDrQqCFXEuFOTvhk+QKFwI5gkw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/scheduler": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/scheduler/-/scheduler-0.12.4.tgz", - "integrity": "sha512-vgSxR44fzPeSMmGMnQI8tEOcXMZKxP12ctEf1NMhjJ8F2w7n39MWJNihBZo0yvbPz/hisMHMefkjN5nE+Q6NZQ==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/scheduler/-/scheduler-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-VIuUOws8KqrEGkM5rES0CIqcDNFwGG/eN592KyqI4biVC6aewxRj8hfcN02XD2Ihy35cpvUWBjMpaFdhVPiENw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/server": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/server/-/server-0.12.4.tgz", - "integrity": "sha512-sXHU3Pj2BQF7JcZHCc74QFQ573SIxFagVuf8Yv2FhYdb/z0jGw7vnwdItGSdWpxcRElxqrXWj3mO/nvrAEQb5w==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/server/-/server-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-JjpgUclEpwmzdMOKPriaH6dYOKTfyN5LocPk6uQZtQGhtRZyNF4nhN3CEI+bFOaEIA34pbWXYn3GAT8vZhatlQ==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/public-api": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" } }, "node_modules/@devvit/settings": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/settings/-/settings-0.12.4.tgz", - "integrity": "sha512-mcuyOSefWBpLNTxViWhJvs8vo1FIESYHKAIO6GKa5WXzzyAaH3ttJR3s/h/cLlUTV7+KuAZ0ZiIMiNFJ3IQp/A==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/settings/-/settings-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-DPu8tq1qmwPDmM0enia4bSq8jFEQD80p0CV+K3yOrdJ1McwZR2i1+gHj+80Q7/b8ljyy5l+9vRaGBFTpvdPqlA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/shared": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/shared/-/shared-0.12.4.tgz", - "integrity": "sha512-uLs3LzQfMTc1jKPVaKuCyYmWJ4C8cWXjUggeocgN1/eOmjwt1SlOA6QutENnZFvsToxjtSP9/FLJ6VF7YSUtxw==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/shared/-/shared-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-s3wLgZvkSN0qMlwaw2oRgP4GYf6jrfgbr/7uPGlmDPuWV8Dc0eLXF73d7GX4QajWDu012t9rcwQ83nFL0lpS/g==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", - "@devvit/shared-types": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" } }, "node_modules/@devvit/shared-types": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/shared-types/-/shared-types-0.12.4.tgz", - "integrity": "sha512-ZEMKrY8x975oD8UZohD4/k9k8avSnTh0ye9QB89WEzLKZZ/KJxUWK/hcTwcVo8PfFkZT5UBywjf5WLMNvLuXnA==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/shared-types/-/shared-types-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-WOObkhZEoCn1JYxJnpx2vfnvaabJYXVSlrYB57dtfP8m96PkFXfs0voDsmbixr7MVRxIoM1Oz13YZZe09Jhdeg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.4", + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "jsonschema": "1.4.1", - "uuid": "9.0.0" + "uuid": "14.0.0" } }, "node_modules/@devvit/splash": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/splash/-/splash-0.12.4.tgz", - "integrity": "sha512-+Xr0C4j4/2i5SjEMD/eLTJ29ONS+MByldJpi33ZRVe5xbG71vX3pQ9eGD6g7eoWlQxunmAZaD6QzlcYTpL9nhw==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/splash/-/splash-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-GoDT+SorZckLeMGpLsxpAvlCoM980jkk+jNPcdeeDzs+Afh0p/A0SfbdGOYgZTq8QY2zM1sBPv7Z/QhZNV784A==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/public-api": "0.12.4" + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" + } + }, + "node_modules/@devvit/start": { + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/start/-/start-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-T53kQ++bXu25vcOEdR+AVNGiokUAPnGd2E5MDAvyvjAwIPtnC1Zuft9JMH3iZszhI76NG4bpo73XlKsmyOzT2Q==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "chalk": "4.1.2" + }, + "peerDependencies": { + "vite": ">=6.0.0" } }, "node_modules/@devvit/web": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/@devvit/web/-/web-0.12.4.tgz", - "integrity": "sha512-FTpcSNOBlR8d6CjOA3ze3huc1Z+sZ2y8rdm7hGUmY2K3pszcu3wbG8EHauDXRkEZXROkzRqc2URXoeqJz9ZmaA==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/web/-/web-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-HL/efyr9Kd81IAyaqRusiO1SbAKOz0zMqeYMd6M6nDnk1ZOXY8raJs1KuQdr1SXvx8eoUF9lGowKioUoA36KzA==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/cache": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/client": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/media": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/notifications": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/payments": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/realtime": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/reddit": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/redis": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/scheduler": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/server": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/settings": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" + } + }, + "node_modules/@devvit/web-view-scripts": { + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/@devvit/web-view-scripts/-/web-view-scripts-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-qv8aAIDDBGNI5nVUE9DKI8wIHhGOTUjtxRGiolFd5KqB0YFpwovixGyle64V+qqCqVLtEXpdyNdzUitUyM5JRA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/cache": "0.12.4", - "@devvit/client": "0.12.4", - "@devvit/media": "0.12.4", - "@devvit/notifications": "0.12.4", - "@devvit/payments": "0.12.4", - "@devvit/realtime": "0.12.4", - "@devvit/reddit": "0.12.4", - "@devvit/redis": "0.12.4", - "@devvit/scheduler": "0.12.4", - "@devvit/server": "0.12.4", - "@devvit/settings": "0.12.4", - "@devvit/shared": "0.12.4" + "@devvit/protos": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/shared-types": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "html-to-image": "1.11.13", + "jwt-decode": "4.0.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -1814,9 +1908,9 @@ } }, "node_modules/@oclif/core/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1885,9 +1979,9 @@ } }, "node_modules/@oclif/plugin-warn-if-update-available/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -2008,9 +2102,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { @@ -2036,9 +2130,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.1.tgz", + "integrity": "sha512-mnzgDV26ueAvk7rsbt9L7bE0SuAoqyuys/sMMrmVcN5x9VsxpcG3rqAUSgDyLp0UZlmNfIbQ4fHfCtreVBk8Ew==", "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { @@ -2054,9 +2148,9 @@ "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.1.tgz", + "integrity": "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg==", "license": "BSD-3-Clause" }, "node_modules/@rollup/pluginutils": { @@ -2087,7 +2181,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2101,7 +2194,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2115,7 +2207,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2129,7 +2220,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2143,7 +2233,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2157,7 +2246,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2171,7 +2259,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2185,7 +2272,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2199,7 +2285,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2213,7 +2298,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2227,7 +2311,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2241,7 +2324,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2255,7 +2337,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2269,7 +2350,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2283,7 +2363,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2297,7 +2376,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2311,7 +2389,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2325,7 +2402,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2339,7 +2415,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2353,7 +2428,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2367,7 +2441,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -2381,13 +2454,30 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ] }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", @@ -2829,6 +2919,23 @@ "@testing-library/dom": ">=7.21.4" } }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", @@ -2960,7 +3067,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, "license": "MIT" }, "node_modules/@types/express": { @@ -3524,18 +3630,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/accepts": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", @@ -3572,9 +3666,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "license": "MIT", "dependencies": { "acorn": "^8.11.0" @@ -4517,9 +4611,9 @@ } }, "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", "engines": { @@ -4733,9 +4827,9 @@ "license": "MIT" }, "node_modules/default-browser": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", - "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", @@ -4851,28 +4945,28 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "engines": { "node": ">=8" } }, "node_modules/devvit": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/devvit/-/devvit-0.12.4.tgz", - "integrity": "sha512-nUK+IM5o9Ip+SJrTRRLJy8L5yR9qwAmDc/f8c9fEYAp46HzfrMvK+e7BPEUHMAW8UAsHteT3VCIDFz7X07/3sA==", + "version": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "resolved": "https://registry.npmjs.org/devvit/-/devvit-0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0.tgz", + "integrity": "sha512-nVjFzj65KYz2lzmpW10jEWU7RMppfPRisv+qavMAa9Jqs/nr5402MUuwIeW5x+w8Qzs05DvsbkneydDG/sAHug==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/cli": "0.12.4" + "@devvit/cli": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0" }, "bin": { "devvit": "bin/devvit.js" } }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -5523,22 +5617,30 @@ "node": ">= 0.6" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, "engines": { - "node": ">=0.8.x" + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/expect-type": { @@ -5684,28 +5786,15 @@ "license": "MIT" }, "node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "license": "MIT", "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" + "is-unicode-supported": "^2.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5725,44 +5814,45 @@ } }, "node_modules/file-type": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-18.2.1.tgz", - "integrity": "sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==", + "version": "21.3.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", + "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", "license": "MIT", "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0", - "token-types": "^5.0.1" + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" }, "engines": { - "node": ">=14.16" + "node": ">=20" }, "funding": { "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -6042,6 +6132,22 @@ "node": ">= 0.4" } }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -6277,6 +6383,12 @@ "dev": true, "license": "MIT" }, + "node_modules/html-to-image": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/html-to-image/-/html-to-image-1.11.13.tgz", + "integrity": "sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==", + "license": "MIT" + }, "node_modules/http-call": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/http-call/-/http-call-5.3.0.tgz", @@ -6294,6 +6406,18 @@ "node": ">=8.0.0" } }, + "node_modules/http-call/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -6345,6 +6469,15 @@ "node": ">= 14" } }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, "node_modules/hyperlinker": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/hyperlinker/-/hyperlinker-1.0.0.tgz", @@ -6546,6 +6679,46 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, + "node_modules/inquirer/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/inquirer/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -6564,12 +6737,12 @@ } }, "node_modules/inquirer/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -6863,6 +7036,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -6945,12 +7130,12 @@ } }, "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7007,12 +7192,12 @@ } }, "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7195,7 +7380,7 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, + "devOptional": true, "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" @@ -7515,6 +7700,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7568,7 +7762,7 @@ "version": "1.30.2", "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", - "dev": true, + "devOptional": true, "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -7601,7 +7795,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7622,7 +7815,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7643,7 +7835,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7664,7 +7855,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7685,7 +7875,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7706,7 +7895,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7727,7 +7915,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7748,7 +7935,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7769,7 +7955,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7790,7 +7975,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7811,7 +7995,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MPL-2.0", "optional": true, "os": [ @@ -7849,9 +8032,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.merge": { @@ -7889,6 +8072,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", @@ -8050,15 +8245,19 @@ } }, "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", "dependencies": { "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mimic-fn": { @@ -8183,7 +8382,6 @@ "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, "funding": [ { "type": "github", @@ -8270,6 +8468,34 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -8284,9 +8510,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "license": "MIT" }, "node_modules/object-inspect": { @@ -8413,9 +8639,9 @@ } }, "node_modules/open/node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" @@ -8499,13 +8725,25 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -8600,6 +8838,18 @@ "node": ">=4" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -8701,19 +8951,6 @@ "dev": true, "license": "MIT" }, - "node_modules/peek-readable": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.4.2.tgz", - "integrity": "sha512-peBp3qZyuS6cNIJ2akRNG1uo1WJ1d0wTxg/fxMdZ0BqCVhx242bSFHM9eNqflfJVS9SsgkzgT/1UgnsurBOTMg==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -8754,7 +8991,6 @@ "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -8965,13 +9201,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, "engines": { - "node": ">= 0.6.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/process-nextick-args": { @@ -9163,38 +9405,6 @@ "node": ">= 6" } }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", - "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", - "license": "MIT", - "dependencies": { - "readable-stream": "^4.7.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -9303,6 +9513,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -9317,7 +9533,6 @@ "version": "4.52.4", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -9731,10 +9946,16 @@ "license": "ISC" }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/simple-code-frame": { "version": "1.3.0", @@ -9860,7 +10081,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -9972,12 +10192,12 @@ } }, "node_modules/string-length/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -10012,6 +10232,18 @@ "node": ">=8" } }, + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -10039,16 +10271,15 @@ } }, "node_modules/strtok3": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.1.1.tgz", - "integrity": "sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", "license": "MIT", "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.1.3" + "@tokenizer/token": "^0.3.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "type": "github", @@ -10156,7 +10387,6 @@ "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", @@ -10173,7 +10403,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -10191,7 +10420,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -10278,11 +10506,12 @@ } }, "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", "license": "MIT", "dependencies": { + "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, @@ -10501,9 +10730,9 @@ "license": "MIT" }, "node_modules/twirp-ts/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "license": "ISC", "engines": { "node": ">= 6" @@ -10599,12 +10828,36 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -10681,12 +10934,16 @@ "license": "MIT" }, "node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.0.tgz", + "integrity": "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "license": "MIT", "bin": { - "uuid": "dist/bin/uuid" + "uuid": "dist-node/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { @@ -10708,7 +10965,6 @@ "version": "7.2.4", "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", - "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -10821,7 +11077,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" @@ -10839,7 +11094,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -11203,6 +11457,23 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -11254,6 +11525,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zod": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", diff --git a/package.json b/package.json index b081b5d..6199511 100644 --- a/package.json +++ b/package.json @@ -30,13 +30,14 @@ "upload": "npm run build && devvit upload" }, "dependencies": { - "@devvit/public-api": "0.12.4", - "@devvit/web": "0.12.4", + "@devvit/public-api": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/start": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", + "@devvit/web": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "@tanstack/react-query": "^5.90.10", "@trpc/client": "^11.7.1", "@trpc/react-query": "^11.7.1", "@trpc/server": "^11.7.1", - "devvit": "0.12.4", + "devvit": "0.12.23-next-2026-05-04-20-45-11-9c6d33a22.0", "express": "5.1.0", "preact": "^10.27.2", "zod": "^4.1.12" diff --git a/src/client/entries/pinned-post/_components/Menu.test.tsx b/src/client/entries/pinned-post/_components/Menu.test.tsx new file mode 100644 index 0000000..95ec5c2 --- /dev/null +++ b/src/client/entries/pinned-post/_components/Menu.test.tsx @@ -0,0 +1,115 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest'; +import { cleanup, fireEvent, render, screen } from '@testing-library/preact'; +import { Menu } from './Menu'; + +const mockContext = { userId: 't2_user123' as string | null }; +const mockRequestExpandedMode = vi.fn(); +const mockShowLoginPrompt = vi.fn(); + +vi.mock('@client/hooks/useTelemetry', () => ({ + useTelemetry: () => ({ + track: vi.fn(async () => ({ ok: true })), + }), +})); + +vi.mock('@client/trpc/client', () => { + const prefetch = vi.fn(async () => undefined); + return { + trpc: { + useUtils: () => ({ + app: { + user: { + getProfile: { prefetch }, + colors: { getRecent: { prefetch } }, + }, + rewards: { + getEffectiveBonuses: { prefetch }, + }, + dictionary: { + getCandidates: { prefetch }, + }, + }, + }), + app: { + user: { + getProfile: { + useQuery: () => ({ + data: { levelProgressPercentage: 42, level: 5 }, + }), + }, + isAdmin: { + useQuery: () => ({ data: false }), + }, + getPendingNavigation: { + useMutation: () => ({ + mutateAsync: vi.fn(async () => ({ url: null })), + }), + }, + }, + }, + }, + }; +}); + +vi.mock('@devvit/web/client', () => ({ + requestExpandedMode: (e: MouseEvent, mode: string) => + mockRequestExpandedMode(e, mode), + showLoginPrompt: () => mockShowLoginPrompt(), + addWebViewModeListener: vi.fn(), + removeWebViewModeListener: vi.fn(), + navigateTo: vi.fn(), + context: mockContext, +})); + +describe('Pinned menu logged-out actions', () => { + beforeEach(() => { + cleanup(); + vi.clearAllMocks(); + }); + + it('shows logged-out draw CTA and hides account buttons for logged-out users', () => { + mockContext.userId = null; + + render( +