Openstatus www.openstatus.dev

refactor: Replace RSS with Feed Lib in the blog/changelog (#1147)

* refactor: replace rss dependency with feed

* refactor: use feed dependency for changelog rss

* refactor: use feed dependency for blog rss

* fix: fix feed links prop on the rss pages

* chore: more specific titles for the RSS feeds

* fix: fix author link on the blog rss

---------

Co-authored-by: Washington <22279738+washingtonbr@users.noreply.github.com>

authored by

Washington Pires
Washington
and committed by
GitHub
77f17e82 f234e6d3

+131 -92
+1 -2
apps/web/package.json
··· 55 55 "cobe": "0.6.3", 56 56 "date-fns": "2.30.0", 57 57 "date-fns-tz": "2.0.0", 58 + "feed": "^4.2.2", 58 59 "lucide-react": "0.468.0", 59 60 "nanoid": "5.0.7", 60 61 "next": "15.1.1", ··· 75 76 "remark-parse": "10.0.2", 76 77 "remark-rehype": "10.1.0", 77 78 "resend": "4.0.1", 78 - "rss": "1.2.2", 79 79 "shiki": "0.14.4", 80 80 "sonner": "1.7.1", 81 81 "stripe": "13.8.0", ··· 92 92 "@types/node": "20.14.8", 93 93 "@types/react": "19.0.1", 94 94 "@types/react-dom": "19.0.2", 95 - "@types/rss": "0.0.32", 96 95 "autoprefixer": "10.4.19", 97 96 "postcss": "8.4.38", 98 97 "rehype-autolink-headings": "7.1.0",
+22 -12
apps/web/src/app/(content)/blog/feed.xml/route.ts
··· 1 1 import { allPosts } from "content-collections"; 2 - import RSS from "rss"; 2 + import { Feed } from "feed"; 3 3 4 4 export async function GET() { 5 - const feed = new RSS({ 6 - title: "OpenStatus", 5 + const feed = new Feed({ 6 + id: "https://www.openstatus.dev/blog", 7 + title: "OpenStatus - Blog", 7 8 description: "OpenStatus blog feed", 8 9 generator: "RSS for Node and Next.js", 9 - feed_url: "https://www.openstatus.dev/blog/feed.xml", 10 - site_url: "https://www.openstatus.dev", 11 - managingEditor: "ping@openstatus.dev (OpenStatus Team)", 12 - webMaster: "ping@openstatus.dev (OpenStatus Team)", 10 + feedLinks: { 11 + rss: "https://www.openstatus.dev/blog/feed.xml", 12 + }, 13 + link: "https://www.openstatus.dev", 14 + author: { 15 + name: "OpenStatus Team", 16 + email: "ping@openstatus.dev", 17 + link: "https://openstatus.dev" 18 + }, 13 19 copyright: `Copyright ${new Date().getFullYear().toString()}, OpenStatus`, 14 20 language: "en-US", 15 - pubDate: new Date().toUTCString(), 21 + updated: new Date(), 16 22 ttl: 60, 17 23 }); 18 24 ··· 22 28 new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime(), 23 29 ) 24 30 .map((post) => { 25 - feed.item({ 31 + feed.addItem({ 32 + id: `https://www.openstatus.dev/blog/${post.slug}`, 26 33 title: post.title, 27 34 description: post.description, 28 - url: `https://www.openstatus.dev/blog/${post.slug}`, 29 - author: post.author.name, 35 + link: `https://www.openstatus.dev/blog/${post.slug}`, 36 + author: [{ 37 + name: post.author.name, 38 + link: post.author.url, 39 + }], 30 40 date: post.publishedAt, 31 41 }); 32 42 }); 33 - return new Response(feed.xml({ indent: true }), { 43 + return new Response(feed.rss2(), { 34 44 headers: { 35 45 "Content-Type": "application/xml; charset=utf-8", 36 46 },
+23 -12
apps/web/src/app/(content)/changelog/feed.xml/route.ts
··· 1 1 import { allChangelogs } from "content-collections"; 2 - import RSS from "rss"; 2 + import { Feed } from "feed"; 3 3 4 4 export async function GET() { 5 - const feed = new RSS({ 6 - title: "OpenStatus", 5 + const feed = new Feed({ 6 + id: "https://www.openstatus.dev/changelog", 7 + title: "OpenStatus - Changelog", 7 8 description: "OpenStatus changelog feed", 8 9 generator: "RSS for Node and Next.js", 9 - feed_url: "https://www.openstatus.dev/blog/feed.xml", 10 - site_url: "https://www.openstatus.dev", 11 - managingEditor: "ping@openstatus.dev (OpenStatus Team)", 12 - webMaster: "ping@openstatus.dev (OpenStatus Team)", 10 + feedLinks: { 11 + rss: "https://www.openstatus.dev/changelog/feed.xml", 12 + }, 13 + link: "https://www.openstatus.dev", 14 + author: { 15 + name: "OpenStatus Team", 16 + email: "ping@openstatus.dev", 17 + link: "https://openstatus.dev" 18 + }, 13 19 copyright: `Copyright ${new Date().getFullYear().toString()}, OpenStatus`, 14 20 language: "en-US", 15 - pubDate: new Date().toUTCString(), 21 + updated: new Date(), 16 22 ttl: 60, 17 23 }); 18 24 ··· 22 28 new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime(), 23 29 ) 24 30 .map((post) => { 25 - feed.item({ 31 + feed.addItem({ 32 + id: `https://www.openstatus.dev/changelog/${post.slug}`, 26 33 title: post.title, 27 34 description: post.description, 28 - url: `https://www.openstatus.dev/changelog/${post.slug}`, 29 - author: "OpenStatus Team", 35 + link: `https://www.openstatus.dev/changelog/${post.slug}`, 36 + author: [{ 37 + name: "OpenStatus Team", 38 + email: "ping@openstatus.dev", 39 + link: "https://openstatus.dev" 40 + }], 30 41 date: post.publishedAt, 31 42 }); 32 43 }); 33 - return new Response(feed.xml({ indent: true }), { 44 + return new Response(feed.rss2(), { 34 45 headers: { 35 46 "Content-Type": "application/xml; charset=utf-8", 36 47 },
+85 -66
pnpm-lock.yaml
··· 274 274 version: 1.1.3(@types/react-dom@19.0.2(@types/react@19.0.1))(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 275 275 '@sentry/nextjs': 276 276 specifier: 8.46.0 277 - version: 8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(esbuild@0.21.5)) 277 + version: 8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(esbuild@0.21.5)) 278 278 '@stripe/stripe-js': 279 279 specifier: 2.1.6 280 280 version: 2.1.6 ··· 301 301 version: 11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2) 302 302 '@trpc/next': 303 303 specifier: 11.0.0-rc.666 304 - version: 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2) 304 + version: 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2) 305 305 '@trpc/react-query': 306 306 specifier: 11.0.0-rc.666 307 307 version: 11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2) ··· 338 338 date-fns-tz: 339 339 specifier: 2.0.0 340 340 version: 2.0.0(date-fns@2.30.0) 341 + feed: 342 + specifier: ^4.2.2 343 + version: 4.2.2 341 344 lucide-react: 342 345 specifier: 0.468.0 343 346 version: 0.468.0(react@19.0.0) ··· 346 349 version: 5.0.7 347 350 next: 348 351 specifier: 15.1.1 349 - version: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 352 + version: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 350 353 next-auth: 351 354 specifier: 5.0.0-beta.25 352 - version: 5.0.0-beta.25(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) 355 + version: 5.0.0-beta.25(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) 353 356 next-plausible: 354 357 specifier: 3.12.4 355 - version: 3.12.4(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 358 + version: 3.12.4(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 356 359 next-themes: 357 360 specifier: 0.2.1 358 - version: 0.2.1(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 361 + version: 0.2.1(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 359 362 nuqs: 360 363 specifier: 2.2.3 361 - version: 2.2.3(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) 364 + version: 2.2.3(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) 362 365 random-word-slugs: 363 366 specifier: 0.1.7 364 367 version: 0.1.7 ··· 398 401 resend: 399 402 specifier: 4.0.1 400 403 version: 4.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 401 - rss: 402 - specifier: 1.2.2 403 - version: 1.2.2 404 404 shiki: 405 405 specifier: 0.14.4 406 406 version: 0.14.4 ··· 431 431 version: 0.2.0(@content-collections/core@0.7.3(typescript@5.6.2))(acorn@8.14.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 432 432 '@content-collections/next': 433 433 specifier: 0.2.4 434 - version: 0.2.4(@content-collections/core@0.7.3(typescript@5.6.2))(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) 434 + version: 0.2.4(@content-collections/core@0.7.3(typescript@5.6.2))(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) 435 435 '@openstatus/tsconfig': 436 436 specifier: workspace:* 437 437 version: link:../../packages/tsconfig ··· 444 444 '@types/react-dom': 445 445 specifier: 19.0.2 446 446 version: 19.0.2(@types/react@19.0.1) 447 - '@types/rss': 448 - specifier: 0.0.32 449 - version: 0.0.32 450 447 autoprefixer: 451 448 specifier: 10.4.19 452 449 version: 10.4.19(postcss@8.4.38) ··· 5060 5057 '@types/resolve@1.20.4': 5061 5058 resolution: {integrity: sha512-BKGK0T1VgB1zD+PwQR4RRf0ais3NyvH1qjLUrHI5SEiccYaJrhLstLuoXFWJ+2Op9whGizSPUMGPJY/Qtb/A2w==} 5062 5059 5063 - '@types/rss@0.0.32': 5064 - resolution: {integrity: sha512-2oKNqKyUY4RSdvl5eZR1n2Q9yvw3XTe3mQHsFPn9alaNBxfPnbXBtGP8R0SV8pK1PrVnLul0zx7izbm5/gF5Qw==} 5065 - 5066 5060 '@types/sax@1.2.7': 5067 5061 resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} 5068 5062 ··· 6571 6565 picomatch: 6572 6566 optional: true 6573 6567 6568 + feed@4.2.2: 6569 + resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} 6570 + engines: {node: '>=0.4.0'} 6571 + 6574 6572 fetch-blob@3.2.0: 6575 6573 resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 6576 6574 engines: {node: ^12.20 || >= 14.13} ··· 7850 7848 resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 7851 7849 engines: {node: '>=8.6'} 7852 7850 7853 - mime-db@1.25.0: 7854 - resolution: {integrity: sha512-5k547tI4Cy+Lddr/hdjNbBEWBwSl8EBc5aSdKvedav8DReADgWJzcYiktaRIw3GtGC1jjwldXtTzvqJZmtvC7w==} 7855 - engines: {node: '>= 0.6'} 7856 - 7857 7851 mime-db@1.52.0: 7858 7852 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 7859 7853 engines: {node: '>= 0.6'} 7860 7854 7861 - mime-types@2.1.13: 7862 - resolution: {integrity: sha512-ryBDp1Z/6X90UvjUK3RksH0IBPM137T7cmg4OgD5wQBojlAiUwuok0QeELkim/72EtcYuNlmbkrcGuxj3Kl0YQ==} 7863 - engines: {node: '>= 0.6'} 7864 - 7865 7855 mime-types@2.1.35: 7866 7856 resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 7867 7857 engines: {node: '>= 0.6'} ··· 8089 8079 8090 8080 node-gyp-build@4.6.1: 8091 8081 resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} 8092 - hasBin: true 8093 - 8094 - node-gyp-build@4.8.1: 8095 - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} 8096 8082 hasBin: true 8097 8083 8098 8084 node-gyp-build@4.8.4: ··· 8989 8975 resolution: {integrity: sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==} 8990 8976 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 8991 8977 hasBin: true 8992 - 8993 - rss@1.2.2: 8994 - resolution: {integrity: sha512-xUhRTgslHeCBeHAqaWSbOYTydN2f0tAzNXvzh3stjz7QDhQMzdgHf3pfgNIngeytQflrFPfy6axHilTETr6gDg==} 8995 8978 8996 8979 run-async@2.4.1: 8997 8980 resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} ··· 10190 10173 utf-8-validate: 10191 10174 optional: true 10192 10175 10193 - xml@1.0.1: 10194 - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} 10176 + xml-js@1.6.11: 10177 + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} 10178 + hasBin: true 10195 10179 10196 10180 xtend@4.0.2: 10197 10181 resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} ··· 11430 11414 - acorn 11431 11415 - supports-color 11432 11416 11433 - '@content-collections/next@0.2.4(@content-collections/core@0.7.3(typescript@5.6.2))(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': 11417 + '@content-collections/next@0.2.4(@content-collections/core@0.7.3(typescript@5.6.2))(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': 11434 11418 dependencies: 11435 11419 '@content-collections/core': 0.7.3(typescript@5.6.2) 11436 11420 '@content-collections/integrations': 0.2.1(@content-collections/core@0.7.3(typescript@5.6.2)) 11437 - next: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 11421 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 11438 11422 11439 11423 '@cspotcode/source-map-support@0.8.1': 11440 11424 dependencies: ··· 12158 12142 '@jridgewell/trace-mapping@0.3.9': 12159 12143 dependencies: 12160 12144 '@jridgewell/resolve-uri': 3.1.1 12161 - '@jridgewell/sourcemap-codec': 1.4.15 12145 + '@jridgewell/sourcemap-codec': 1.5.0 12162 12146 12163 12147 '@lezer/common@1.2.1': {} 12164 12148 ··· 14009 13993 '@sentry/types': 8.9.2 14010 13994 '@sentry/utils': 8.9.2 14011 13995 14012 - '@sentry/nextjs@8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(esbuild@0.21.5))': 13996 + '@sentry/nextjs@8.46.0(@opentelemetry/core@1.30.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(webpack@5.97.1(esbuild@0.21.5))': 14013 13997 dependencies: 14014 13998 '@opentelemetry/api': 1.9.0 14015 13999 '@opentelemetry/semantic-conventions': 1.28.0 ··· 14022 14006 '@sentry/vercel-edge': 8.46.0 14023 14007 '@sentry/webpack-plugin': 2.22.7(encoding@0.1.13)(webpack@5.97.1(esbuild@0.21.5)) 14024 14008 chalk: 3.0.0 14025 - next: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 14009 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 14026 14010 resolve: 1.22.8 14027 14011 rollup: 3.29.5 14028 14012 stacktrace-parser: 0.1.10 ··· 14642 14626 '@trpc/server': 11.0.0-rc.666(typescript@5.6.2) 14643 14627 typescript: 5.6.2 14644 14628 14645 - '@trpc/next@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2)': 14629 + '@trpc/next@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/react-query@11.0.0-rc.666(@tanstack/react-query@5.62.8(react@19.0.0))(@trpc/client@11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2))(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.6.2)': 14646 14630 dependencies: 14647 14631 '@trpc/client': 11.0.0-rc.666(@trpc/server@11.0.0-rc.666(typescript@5.6.2))(typescript@5.6.2) 14648 14632 '@trpc/server': 11.0.0-rc.666(typescript@5.6.2) 14649 - next: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 14633 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 14650 14634 react: 19.0.0 14651 14635 react-dom: 19.0.0(react@19.0.0) 14652 14636 typescript: 5.6.2 ··· 14916 14900 14917 14901 '@types/resolve@1.20.4': {} 14918 14902 14919 - '@types/rss@0.0.32': {} 14920 - 14921 14903 '@types/sax@1.2.7': 14922 14904 dependencies: 14923 14905 '@types/node': 22.10.2 ··· 15693 15675 15694 15676 bufferutil@4.0.8: 15695 15677 dependencies: 15696 - node-gyp-build: 4.8.1 15678 + node-gyp-build: 4.8.4 15697 15679 15698 15680 builtins@5.0.1: 15699 15681 dependencies: ··· 16670 16652 optionalDependencies: 16671 16653 picomatch: 4.0.2 16672 16654 16655 + feed@4.2.2: 16656 + dependencies: 16657 + xml-js: 1.6.11 16658 + 16673 16659 fetch-blob@3.2.0: 16674 16660 dependencies: 16675 16661 node-domexception: 1.0.0 ··· 17538 17524 17539 17525 jest-worker@27.5.1: 17540 17526 dependencies: 17541 - '@types/node': 22.10.2 17527 + '@types/node': 20.14.8 17542 17528 merge-stream: 2.0.0 17543 17529 supports-color: 8.1.1 17544 17530 ··· 18517 18503 braces: 3.0.3 18518 18504 picomatch: 2.3.1 18519 18505 18520 - mime-db@1.25.0: {} 18521 - 18522 18506 mime-db@1.52.0: {} 18523 - 18524 - mime-types@2.1.13: 18525 - dependencies: 18526 - mime-db: 1.25.0 18527 18507 18528 18508 mime-types@2.1.35: 18529 18509 dependencies: ··· 18617 18597 18618 18598 netmask@2.0.2: {} 18619 18599 18600 + next-auth@5.0.0-beta.25(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): 18601 + dependencies: 18602 + '@auth/core': 0.37.2 18603 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18604 + react: 19.0.0 18605 + 18620 18606 next-auth@5.0.0-beta.25(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): 18621 18607 dependencies: 18622 18608 '@auth/core': 0.37.2 18623 18609 next: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18624 18610 react: 19.0.0 18625 18611 18626 - next-plausible@3.12.4(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): 18612 + next-plausible@3.12.4(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): 18627 18613 dependencies: 18628 - next: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18614 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18615 + react: 19.0.0 18616 + react-dom: 19.0.0(react@19.0.0) 18617 + 18618 + next-themes@0.2.1(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0): 18619 + dependencies: 18620 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18629 18621 react: 19.0.0 18630 18622 react-dom: 19.0.0(react@19.0.0) 18631 18623 ··· 18661 18653 - '@babel/core' 18662 18654 - babel-plugin-macros 18663 18655 18656 + next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): 18657 + dependencies: 18658 + '@next/env': 15.1.1 18659 + '@swc/counter': 0.1.3 18660 + '@swc/helpers': 0.5.15 18661 + busboy: 1.6.0 18662 + caniuse-lite: 1.0.30001689 18663 + postcss: 8.4.31 18664 + react: 19.0.0 18665 + react-dom: 19.0.0(react@19.0.0) 18666 + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.0.0) 18667 + optionalDependencies: 18668 + '@next/swc-darwin-arm64': 15.1.1 18669 + '@next/swc-darwin-x64': 15.1.1 18670 + '@next/swc-linux-arm64-gnu': 15.1.1 18671 + '@next/swc-linux-arm64-musl': 15.1.1 18672 + '@next/swc-linux-x64-gnu': 15.1.1 18673 + '@next/swc-linux-x64-musl': 15.1.1 18674 + '@next/swc-win32-arm64-msvc': 15.1.1 18675 + '@next/swc-win32-x64-msvc': 15.1.1 18676 + '@opentelemetry/api': 1.9.0 18677 + sharp: 0.33.5 18678 + transitivePeerDependencies: 18679 + - '@babel/core' 18680 + - babel-plugin-macros 18681 + 18664 18682 next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): 18665 18683 dependencies: 18666 18684 '@next/env': 15.1.1 ··· 18722 18740 18723 18741 node-gyp-build@4.6.1: {} 18724 18742 18725 - node-gyp-build@4.8.1: {} 18726 - 18727 - node-gyp-build@4.8.4: 18728 - optional: true 18743 + node-gyp-build@4.8.4: {} 18729 18744 18730 18745 node-plop@0.26.3: 18731 18746 dependencies: ··· 18763 18778 dependencies: 18764 18779 boolbase: 1.0.0 18765 18780 18766 - nuqs@2.2.3(next@15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): 18781 + nuqs@2.2.3(next@15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): 18767 18782 dependencies: 18768 18783 mitt: 3.0.1 18769 18784 react: 19.0.0 18770 18785 optionalDependencies: 18771 - next: 15.1.1(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18786 + next: 15.1.1(@babel/core@7.26.0)(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 18772 18787 18773 18788 oauth4webapi@2.10.4: {} 18774 18789 ··· 19957 19972 fsevents: 2.3.3 19958 19973 optional: true 19959 19974 19960 - rss@1.2.2: 19961 - dependencies: 19962 - mime-types: 2.1.13 19963 - xml: 1.0.1 19964 - 19965 19975 run-async@2.4.1: {} 19966 19976 19967 19977 run-parallel@1.2.0: ··· 20321 20331 optionalDependencies: 20322 20332 '@babel/core': 7.24.5 20323 20333 20334 + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.0.0): 20335 + dependencies: 20336 + client-only: 0.0.1 20337 + react: 19.0.0 20338 + optionalDependencies: 20339 + '@babel/core': 7.26.0 20340 + 20324 20341 sucrase@3.34.0: 20325 20342 dependencies: 20326 20343 '@jridgewell/gen-mapping': 0.3.5 ··· 20652 20669 '@tsconfig/node14': 1.0.3 20653 20670 '@tsconfig/node16': 1.0.4 20654 20671 '@types/node': 20.14.8 20655 - acorn: 8.11.3 20672 + acorn: 8.14.0 20656 20673 acorn-walk: 8.3.2 20657 20674 arg: 4.1.3 20658 20675 create-require: 1.1.1 ··· 21433 21450 bufferutil: 4.0.8 21434 21451 utf-8-validate: 6.0.5 21435 21452 21436 - xml@1.0.1: {} 21453 + xml-js@1.6.11: 21454 + dependencies: 21455 + sax: 1.4.1 21437 21456 21438 21457 xtend@4.0.2: {} 21439 21458