From 6053cf40f42ae4a2657b21ff6f7276871c106d17 Mon Sep 17 00:00:00 2001 From: Jasmine Elkins Date: Fri, 1 May 2026 16:20:10 -0400 Subject: [PATCH 1/5] update to 0.12.23/next & add login effect --- package-lock.json | 690 +++++++++++++----------- package.json | 16 +- src/client/classic/WinPageLoggedOut.tsx | 18 +- 3 files changed, 391 insertions(+), 333 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca82e0f..86cc102 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,19 +9,19 @@ "version": "0.0.0", "license": "BSD-3-Clause", "dependencies": { - "@devvit/analytics": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/notifications": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/start": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/test": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/web": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/analytics": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/notifications": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/start": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/test": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/web": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "@google/genai": "1.16.0", "@preact/signals": "^1.2.2", "@trpc/client": "11.4.4", "@trpc/server": "11.4.4", "better-sqlite3": "12.2.0", "clsx": "2.1.1", - "devvit": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "devvit": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "express": "4.19.2", "fast-csv": "5.0.5", "fast-xml-parser": "5.2.5", @@ -381,6 +381,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", @@ -514,12 +524,15 @@ } }, "node_modules/@devvit/analytics": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/analytics/-/analytics-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-ObECLAHQCx6QoEDANhJXexrQ0/ULMq7TfRWjm+vOwbBxpSVgKfKtEF1xqDftNeBKHZK4APoP2L5zC3G93l5xUw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/analytics/-/analytics-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-awi3hEg0pGe8djMYi5ezsNq/+lZo8DSW2xq1f8DNVgJ3YOtpAy4nB4CRi+tq6YfvtM18my7xODTtpSRtlBDzMw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/cache": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/cache": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/server": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "express": "*", @@ -527,15 +540,15 @@ } }, "node_modules/@devvit/build-pack": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/build-pack/-/build-pack-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-Lvuaj2NM+j1I7fbIwVPvAzhYlP7XQfx5LB98dIxdyik2seOZOqJFyYQSEdrLAZaBSzp7/H4M2ztpFrnmrLYmMw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/build-pack/-/build-pack-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-FI3e7iTscY43U+B4M/cwbeQEJbovxs068naCj5TSxxWzktSRxp6gcTXPSTM7qYkDAgYJNKsqoI/fjP1LKjs7cw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/payments": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/splash": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/payments": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/splash": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "@types/node": "20.14.12", "esbuild": "0.25.9", "rxjs": "7.8.1", @@ -575,26 +588,41 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, + "node_modules/@devvit/builders": { + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/builders/-/builders-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-PEyYL1/GsIP56B9z3o6mSi7h832pxwoy7h2eNa5RO5EqPGqw56g/Fa22YlJGuja5XmPVaKZ5T3XItrtDJ5eIPQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/build-pack": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/linkers": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" + } + }, "node_modules/@devvit/cache": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/cache/-/cache-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-mfTgPoMIk1ivnc5+hhhIOni8RdC7Z7ND+E/ciOT+Cue0fOkz9e20vT/GwWQsOTmWGYKjzjsQq5aNFV/J5RL87w==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/cache/-/cache-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-kGqXhJWao52cdVtwR8Njaoetynb9fX2ygFlV2qiw/p1rTpyr9hPSRfKAqLQLj+0+xBG66FEs9Z0ZM5O/FeSPGA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/redis": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/redis": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/server": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/cli": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/cli/-/cli-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-WPis/oP39Z9v0y+1FRYMLgSJ4vfHsR3Aj5qYEd0Q0JI2wlmKSBT3MRENStlCL0UZlEiq+GDmc0NMINbuzPwjFw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/cli/-/cli-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-PZuyhH7hzIMV9Dpx1UEkYFnOmXeSJDmbEGMhiU+LLX1Tdcj/kOkvh6C+3XWzOXVfpDu5j0BenWNchja4I39wZw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/build-pack": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/public-api": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/build-pack": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/builders": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/linkers": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/public-api": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "@improbable-eng/grpc-web": "0.15.0", "@improbable-eng/grpc-web-node-http-transport": "0.15.0", "@oclif/core": "2.9.4", @@ -608,7 +636,7 @@ "date-fns": "2.29.3", "dotenv": "16.5.0", "execa": "9.6.1", - "file-type": "18.2.1", + "file-type": "21.3.2", "ignore": "7.0.5", "image-size": "2.0.2", "inquirer": "9.1.4", @@ -692,66 +720,78 @@ } }, "node_modules/@devvit/client": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/client/-/client-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-KkLzYkdmrU+YxBPloUCd/KL7Xvfsn1dEG2S4NRaIGMC3FpWxjO/0BpNthGQ0N8SoIGGr9MXWSZnrkhTYFVF8tg==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/client/-/client-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-obrSbia7W6jMgtnTL0o1k+8t04wHSi3PtCosgnUGikJCiJB7cGfzDsu4DHaYepPo6zpz7M/5gdDnPWRUzeu2aA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/web-view-scripts": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" + } + }, + "node_modules/@devvit/linkers": { + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/linkers/-/linkers-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-YzAT7TqVk3Xo8t2dBRv1W0Gy0FSFU5Msvbl9pyS7lgJD+lnPUlZ9nuysXlHIOY2/TZ394HY9HMQ1cz5bjH1JNg==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/build-pack": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/media": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/media/-/media-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-oOBEgBfCwlKlxYH/S9zrHOOW589LY2aeue7667IZl5Z0QJzkVNaRyc4SFm0qb3GCWtzDb+BmI0WWfnB5q+QREA==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/media/-/media-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-AUuHIqgLiIanpeehPxIwVski4xhiYfQgrFA2RELQelzVp36E+qkIny7oAAEGi3bc4mwpgMV5AWtl9JMpiN6fBw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/metrics": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/metrics/-/metrics-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-rN3/NTkTrufJIcIJmMFj3nUC9b10+DR2Zd8SndY7tzKC91qtJErZvreOUXnPiKqd17C/EV0OVL4YOak967Z3pw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/metrics/-/metrics-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-GvwqsAYfbtPN3+uR/sDhIciz6ZWIt9bolX8UcrEElfDrzQhh7Tvl15dBjexYY5sGPbPpaVGknjQOfOaeoEKxyA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/notifications": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/notifications/-/notifications-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-ZbBatF8WDPIDaUYhZx0yXf7OAExCp4EQpandEx7i8JsyfSvv1MI4FfT2dxtaLHsEtMx1xxr5ab+64o3S6PzfdQ==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/notifications/-/notifications-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-8qkrYcdLbYLRI7PAWIpzkztIsMLox3D2BJ9i/tuqwbLM2Qlmfu5BHRWSp8CV2Ojx85WsoM+GEYa+0LGEVR6zPA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/payments": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/payments/-/payments-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-PCQKQYrzukpqPdt9XLgtWg4EhH5wSHHf2ixG9oQWfK5po6ED1VtCLaFO+oJDpM2iK8D5VvcZ5LsL1Fg96naZcw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/payments/-/payments-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-Ea1HHIwLObVNcHIUBq4FgI3khOmoYjZ/awfntojl3q96/ZVj+tuntdTI7Ni5X5sOO4eskZt/GthXa/OoUjpClQ==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/public-api": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/server": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/public-api": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/server": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/protos": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/protos/-/protos-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-h3OqFaQKIMf0k5aKn9yLoxFHTxjj1WjN8LXlBOGmUGvUxpCnBtLjYJYPTbYeQEvbCykC+CAp3hA4w6di+HrfqQ==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/protos/-/protos-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-klEefz9rimsNE5VftA4CzOIHmNGYPDht/LkOVLMfNUco0jg6n8SdUXL9y6nbC3jKktlefWSNMQhRN1y26w+7rg==", "license": "BSD-3-Clause", "dependencies": { "protobufjs": "7.5.4", @@ -767,29 +807,30 @@ } }, "node_modules/@devvit/public-api": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/public-api/-/public-api-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-MxUD5q00n4j163Dy/oEI0bCx3VWvMkfxQycEChB+MERBDQW5Sa4gFiUYcutspdTGdF7wF7D0lGhocSEBpYSqkg==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/public-api/-/public-api-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-+Rnv3ZkdwyEVJ31odshdjLfpCIKr0quvrOW8Q2m8mJvX/h/GFtr8nxKuiHEkEmtusjGdUhnqpm4K4EZd2wPOGA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/metrics": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/metrics": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.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.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/realtime/-/realtime-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-9xraC8Uj0LBn3vyfCYoAwTMiiHeJT/w4ifwizNqHLc7/p+HTgUi4CB1ILfXuaWZHcNO0wZ1sgCn8Rnf/d+zQ2A==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/realtime/-/realtime-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-QWQqpYLBQfB57+Lgz0CiTafnRBuYmv3s3n3Rau2s+inrz7enV6OxlQCuC9eEI0nyE55L3ZI60QqZXBXYelPMjw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "rxjs": "7.8.1" }, "peerDependencies": { @@ -798,111 +839,111 @@ } }, "node_modules/@devvit/reddit": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/reddit/-/reddit-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-r4AcFylozsH/uR2iYythcaVMyl540JnY0E0EPhP2IVGQN2RdeRI5PaDhETt2AnHAG6cFj6x9iBL5pGgrpzGWOw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/reddit/-/reddit-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-dSuHCM1uMWPQ5Vt7AN/DkOiS5zyzHaULHKfR+iVxpYCPtchnqSHy5RHG5GmLOLW2bYsNksAmKSWIyWMHg+hUTg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/public-api": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/splash": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/public-api": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/splash": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/redis": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/redis/-/redis-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-wFcyqkoBWN5Kl2xpOttMfexhtNh295nfZ0MGnZLCjls5pzjyhMn8IZrPfYCw0gs4eMxqIItRtPVzrhJMFgKHeA==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/redis/-/redis-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-KdgFo9Mu4+8uUoI4ZEcj2BwQ2g8atBIw1297ahZZC+RWh7HKl3gBNVJITw3EL/7r8JwPluzpvdf7g/vQBa5K6A==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/scheduler": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/scheduler/-/scheduler-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-yynQfM/KHiqbqJo9XIznXdZL+WTA5U4+QcuZItpkCqaR8kliQeRaA1egKAFHir9SDVOENnlJF/FXuWqf84tQng==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/scheduler/-/scheduler-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-G/KMgDhiEuKebA2SQIXFLrOvX19bYJy6sewNd4J1ffV/ThX/juEUujUBpx/anNnx7bld8NY2JN+ble2tmupAKQ==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/server": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/server/-/server-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-2DSPsExA3wyqwiMEGhvVh/ljSwQz8eW7qsLJfkMpvb+3d5grPR4fzS7pGEvt6ULj8Qfo4FqOMdY0gWhRdGABqw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/server/-/server-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-PektSXRyv2TTdICblvkaIPsSm8DR5HIVA7OyYVHzAf/pp8QtrmLp/lyLi0gZQbvAnTkFruorHHyJR/gFs1/Ddg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/public-api": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/public-api": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/settings": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/settings/-/settings-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-L1gL6JkpyFMaUrR6JEFr8lyqZplEqD9CReBbcGshgvQQCkBVCFk8iQT+WL2kDjjEOdKebDEC6SqHKP9IO7TVBg==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/settings/-/settings-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-HlcITynIHk0Zm9GHAU5AJKJl52b6RVYNzfYs1g4wfYtn4L7p/2kOgXalE/Ir3nn3UpfB6gqcoRfG2Gg6sazoLg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "peerDependencies": { "@devvit/server": "*" } }, "node_modules/@devvit/shared": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/shared/-/shared-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-zY1BDPQVFa4iP3PNazNSGZaZRM68wvcGUXlJG9lE3vTVHNjWWIDWEJVVYnnMVyZtm4O1+kGlT941+hMKNS6XXw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/shared/-/shared-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-uF+zkAFLbd7CaPERLJqEO98xOOA3dy1q/iMoFdpV5Xd91MVACCd24Dm8TIlqo450tryEhHL65NtKCfq1de2UFQ==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/shared-types": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/shared-types/-/shared-types-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-IoIwYCxp/EBEM6pt++Iqkn3H7kayIUlNbSU2ShYuqCd28FwCPOl6dIYz1huMba2pjhFqvbQMjfNTlO1ltsRerw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/shared-types/-/shared-types-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-szISlYJwm1+lA3hPRZEIRHMQ7QD1yUqIUKflblzZMHoUTCzLtPa92svwF06sPP1JL1jKoFsbckEqBTc0Jak4Qg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "jsonschema": "1.4.1", - "uuid": "9.0.0" + "uuid": "14.0.0" } }, "node_modules/@devvit/splash": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/splash/-/splash-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-Xm7Xa7iLNWYmBKsV/qaE69Jr/O/joQZcwCPUXIvsmUxZG+2lF+UAjqWS3bltH7zDLg/Yut2XcCKiMOHOBlxbag==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/splash/-/splash-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-meLfIGQz0j7+j7UY2b0h76jgEqhv9O/7du1KtLfA4qtDaQGQOyRDNY9nraga1P6lGbIWqoP7pQzmR4gh5tHVUw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/public-api": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/public-api": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" } }, "node_modules/@devvit/start": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/start/-/start-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-9vx+sFv5XXea3UCSQXtYpkegptqDWSLdw7PFM8Y92bo8hk898kQrTCwgs/k5UiOyd8uDUhD1THw2no423dhkDw==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/start/-/start-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-uUSKaypqO45Z/lRiL4qoq+fDxYzI1SkIvLRzGMNVP0uLlGJRWwW3Mv+Bh8BoRkeEY4+Ymi3Gon4tq+Jw8D4rJA==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "chalk": "4.1.2" }, "peerDependencies": { @@ -910,21 +951,22 @@ } }, "node_modules/@devvit/test": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/test/-/test-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-Rao4hLlfp7/3/BKRaGBbNVFrV75n0AhW8BULJz72V5Ln6C0B5kbJt+CjFHqnfRBeSDKhhq7k+fwF0EKgGCziDQ==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/test/-/test-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-490/DIAQiqiBGB0E7hwq/TeSnYb4DYIwdZaf4zYmj0kgx2b/y1dW5Qhozf/gDVcj9R/oBZ6uJMNuZ8a5bILCOw==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/media": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/notifications": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/protos": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/realtime": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/reddit": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/redis": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/scheduler": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/server": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/settings": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/analytics": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/media": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/notifications": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/realtime": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/reddit": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/redis": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/scheduler": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/server": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/settings": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "ioredis": "5.7.0", "redis-memory-server": "0.14.1" }, @@ -1132,23 +1174,36 @@ "license": "ISC" }, "node_modules/@devvit/web": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/@devvit/web/-/web-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-y4uWQYM94WnYgyYRuE74DZsMoKUb776z/mdDmydIa/cL0Q4bmabwMgkxwAKhnRb1jfT1Sb9ajkL9XFve3iJBzg==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/web/-/web-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-CjcGCsIUErhy0Fhcz/U40VlzhJ1ZtSudfY4byTysr6TIa/rk03g6MCY7hMJ53RJXRhGkrVI53I60w1JEL3B9AQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@devvit/cache": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/client": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/media": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/notifications": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/payments": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/realtime": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/reddit": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/redis": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/scheduler": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/server": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/settings": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" + } + }, + "node_modules/@devvit/web-view-scripts": { + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/@devvit/web-view-scripts/-/web-view-scripts-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-3MBpCYkLlZu5fGYIVCIBuBtzK9Cb9C4UBxZs2EsCMHzeo4Fhim8QghcQwihZw1xfuSyAiK/Mz6dDVkhqwm/vDQ==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/cache": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/client": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/media": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/notifications": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/payments": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/realtime": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/reddit": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/redis": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/scheduler": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/server": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/settings": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/protos": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "html-to-image": "1.11.13", + "jwt-decode": "4.0.0" } }, "node_modules/@esbuild/darwin-arm64": { @@ -1668,9 +1723,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" @@ -1739,9 +1794,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" @@ -1884,9 +1939,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": { @@ -1912,9 +1967,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": { @@ -1930,9 +1985,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": { @@ -2284,6 +2339,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", @@ -2885,18 +2957,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": "1.3.8", "license": "MIT", @@ -2927,9 +2987,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" @@ -3097,6 +3157,8 @@ }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "license": "ISC", "engines": { "node": ">= 4.0.0" @@ -3363,12 +3425,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" }, "engines": { @@ -3793,14 +3857,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/crc-32": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", @@ -3903,7 +3959,9 @@ } }, "node_modules/debug": { - "version": "4.4.1", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -3998,6 +4056,8 @@ }, "node_modules/define-data-property": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", @@ -4070,12 +4130,12 @@ } }, "node_modules/devvit": { - "version": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "resolved": "https://registry.npmjs.org/devvit/-/devvit-0.12.12-next-2026-02-03-22-55-04-032301a3c.0.tgz", - "integrity": "sha512-WKHHFQF6HnpGRII0GIn/lryHBm6yr6aGtf2zq0Me9IWFFBPi4AXa1mKy+77lxzPLYjpCsDYHn11fKvi5ihzSZQ==", + "version": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "resolved": "https://registry.npmjs.org/devvit/-/devvit-0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0.tgz", + "integrity": "sha512-LYjGAHdE0qPbMwZR4QYyehF1JIYus53V1qkvSo66LeXgfxGH67ih9cn2gAms1CFrVnXkcZ9/JPirIojgKsVONg==", "license": "BSD-3-Clause", "dependencies": { - "@devvit/cli": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0" + "@devvit/cli": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0" }, "bin": { "devvit": "bin/devvit.js" @@ -4610,28 +4670,10 @@ "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/eventemitter3": { "version": "5.0.1", "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/execa": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", @@ -4930,17 +4972,18 @@ } }, "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" @@ -4951,27 +4994,27 @@ "license": "MIT" }, "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" @@ -5143,6 +5186,8 @@ }, "node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", @@ -5446,6 +5491,8 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" @@ -5520,6 +5567,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", @@ -5832,12 +5885,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" @@ -5922,6 +5975,8 @@ }, "node_modules/is-docker": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "license": "MIT", "bin": { "is-docker": "cli.js" @@ -6097,6 +6152,8 @@ }, "node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "license": "MIT", "dependencies": { "is-docker": "^2.0.0" @@ -6107,6 +6164,8 @@ }, "node_modules/isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "license": "MIT" }, "node_modules/isexe": { @@ -6463,6 +6522,15 @@ "safe-buffer": "^5.0.1" } }, + "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", "dev": true, @@ -6794,7 +6862,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", + "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.defaults": { @@ -7380,9 +7450,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" @@ -7494,12 +7564,12 @@ } }, "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" @@ -7510,6 +7580,8 @@ }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -7739,19 +7811,6 @@ "node": ">= 14.16" } }, - "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/pend": { "version": "1.2.0", "license": "MIT" @@ -8235,15 +8294,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -8406,38 +8456,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", @@ -8769,6 +8787,8 @@ }, "node_modules/rxjs": { "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -8863,6 +8883,8 @@ }, "node_modules/set-function-length": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", @@ -9237,12 +9259,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" @@ -9347,16 +9369,15 @@ "license": "MIT" }, "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", @@ -9375,6 +9396,8 @@ }, "node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9637,6 +9660,8 @@ }, "node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" @@ -9677,11 +9702,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" }, @@ -9871,15 +9897,6 @@ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "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==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/type-check": { "version": "0.4.0", "dev": true, @@ -9961,6 +9978,18 @@ "typescript": ">=4.8.4 <5.9.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.8.0", "license": "MIT" @@ -10050,10 +10079,16 @@ } }, "node_modules/uuid": { - "version": "9.0.0", + "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": { @@ -10443,6 +10478,8 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -10522,6 +10559,15 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "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" + } + }, "node_modules/yauzl": { "version": "2.10.0", "license": "MIT", diff --git a/package.json b/package.json index 9b8b6e5..a83f549 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "type": "module", "scripts": { "build": "vite build", - "dev": "devvit playtest", + "dev": "dotenv -- node ./scripts/dev-app-playtesting.mjs", "lint": "eslint ./src", "test": "vitest run", "lint:fix": "eslint --fix ./src", @@ -43,19 +43,19 @@ "new:upload-words": "dotenv -- node ./tools/new-upload-words-to-db.ts" }, "dependencies": { - "@devvit/analytics": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/notifications": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/shared-types": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/start": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/test": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", - "@devvit/web": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "@devvit/analytics": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/notifications": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/shared-types": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/start": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/test": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", + "@devvit/web": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "@google/genai": "1.16.0", "@preact/signals": "^1.2.2", "@trpc/client": "11.4.4", "@trpc/server": "11.4.4", "better-sqlite3": "12.2.0", "clsx": "2.1.1", - "devvit": "0.12.12-next-2026-02-03-22-55-04-032301a3c.0", + "devvit": "0.12.23-next-2026-05-01-20-06-15-4d8baf0a4.0", "express": "4.19.2", "fast-csv": "5.0.5", "fast-xml-parser": "5.2.5", diff --git a/src/client/classic/WinPageLoggedOut.tsx b/src/client/classic/WinPageLoggedOut.tsx index eaa5a76..59635a3 100644 --- a/src/client/classic/WinPageLoggedOut.tsx +++ b/src/client/classic/WinPageLoggedOut.tsx @@ -2,7 +2,7 @@ import { useEffect, useState, useMemo } from 'preact/hooks'; import { trpc } from '../trpc'; import type { GuessEngine } from '../core/guessEngine'; import { requireChallengeNumber } from '../requireChallengeNumber'; -import { showShareSheet, showToast } from '@devvit/web/client'; +import { showLoginPrompt, showShareSheet, showToast } from '@devvit/web/client'; import { posthog } from '../posthog'; export function WinPageLoggedOut({ engine }: { engine: GuessEngine }) { @@ -67,10 +67,22 @@ export function WinPageLoggedOut({ engine }: { engine: GuessEngine }) {

The word was: {secretWord ?? '...'}

-

- Sign up to see the full leaderboard and save your progress. +

+ Log in to see the full leaderboard and save your progress.

+ {wonLocally && ( + + )} +
+ + +
setIsCommentOpen(false)}>
diff --git a/src/client/classic/WinPageLoggedOut.tsx b/src/client/classic/WinPageLoggedOut.tsx index 3bffb78..eaa5a76 100644 --- a/src/client/classic/WinPageLoggedOut.tsx +++ b/src/client/classic/WinPageLoggedOut.tsx @@ -2,6 +2,8 @@ import { useEffect, useState, useMemo } from 'preact/hooks'; import { trpc } from '../trpc'; import type { GuessEngine } from '../core/guessEngine'; import { requireChallengeNumber } from '../requireChallengeNumber'; +import { showShareSheet, showToast } from '@devvit/web/client'; +import { posthog } from '../posthog'; export function WinPageLoggedOut({ engine }: { engine: GuessEngine }) { const [secretWord, setSecretWord] = useState(null); @@ -37,6 +39,25 @@ export function WinPageLoggedOut({ engine }: { engine: GuessEngine }) { } }, [wonLocally, challengeNumber, engine.history.value]); + const shareResults = async () => { + posthog.capture('Win Page Logged Out Share Clicked', { + challengeNumber, + wonLocally, + }); + try { + await showShareSheet({ + title: 'Hot & Cold', + text: `Play Hot & Cold #${challengeNumber} with me.`, + data: JSON.stringify({ + challengeNumber, + }), + }); + } catch (e) { + console.error('Failed to open share sheet', e); + showToast({ text: 'Share is unavailable right now' }); + } + }; + return (
@@ -50,6 +71,15 @@ export function WinPageLoggedOut({ engine }: { engine: GuessEngine }) { Sign up to see the full leaderboard and save your progress.

+
); } diff --git a/src/client/classic/header.tsx b/src/client/classic/header.tsx index 8500ab9..255d037 100644 --- a/src/client/classic/header.tsx +++ b/src/client/classic/header.tsx @@ -12,7 +12,7 @@ import { loadPreviousGuessesFromSession, selectNextHint, } from '../core/hints'; -import { context } from '@devvit/web/client'; +import { context, showShareSheet, showToast } from '@devvit/web/client'; import { requireChallengeNumber } from '../requireChallengeNumber'; import { userSettings, toggleLayout, toggleSortType, setReminderOptIn } from './state/userSettings'; import { trpc } from '../trpc'; @@ -22,7 +22,6 @@ import { posthog } from '../posthog'; import { openExperiments } from './state/experiments'; import { openArchive } from './state/archive'; import { getBrowserIanaTimeZone } from '../../shared/timezones'; -import { showToast } from '@devvit/web/client'; import { isLoggedOut } from '../shared/user'; const SpeechBubbleTail = ({ className }: { className?: string }) => ( @@ -226,6 +225,26 @@ export function Header({ engine, isAdmin }: { engine?: GuessEngine; isAdmin: boo } }, }, + { + name: 'Share', + action: async () => { + posthog.capture('Game Page Share Clicked', { + challengeNumber, + }); + try { + await showShareSheet({ + title: 'Hot & Cold', + text: `Play Hot & Cold #${challengeNumber} with me.`, + data: JSON.stringify({ + challengeNumber, + }), + }); + } catch (e) { + console.error('Failed to open share sheet', e); + showToast({ text: 'Share is unavailable right now' }); + } + }, + }, ...(isAdmin ? ([ { diff --git a/src/client/shared/gradientBorder.tsx b/src/client/shared/gradientBorder.tsx index 1ca7d1d..4fada3c 100644 --- a/src/client/shared/gradientBorder.tsx +++ b/src/client/shared/gradientBorder.tsx @@ -15,7 +15,9 @@ export const GradientBorder = ({ children, isHidden = false }: GradientBorderPro isHidden ? 'opacity-0' : 'opacity-100' )} /> - {children} + + {children} + ); };