From ea88e0efcb8d41f94cc7b4bfbf210666c035020a Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Wed, 29 Jul 2026 22:47:57 +0100 Subject: [PATCH] feat: migrate to nuxt v5 nightly --- app/components/TheHome.server.vue | 8 +- app/components/TheSponsors.vue | 2 +- app/components/TheTalks.server.vue | 2 +- app/components/TheUses.server.vue | 2 +- app/components/admin/AmaAnswer.vue | 8 +- app/components/layout/TheSiteHeader.vue | 2 +- app/pages/admin/ama/[rkey].vue | 2 +- app/pages/admin/entities/[rkey].vue | 2 +- app/pages/admin/invites/[rkey].vue | 2 +- app/pages/admin/talk-groups/[rkey].vue | 2 +- app/pages/admin/talks/[rkey].vue | 2 +- app/pages/admin/uses/categories/[rkey].vue | 2 +- app/pages/admin/uses/items/[rkey].vue | 2 +- app/pages/ama.vue | 2 +- app/pages/blog/[article].vue | 2 +- app/pages/feedback.vue | 2 +- app/plugins/auth.ts | 12 +- app/utils/api.ts | 67 + .../runtime/server/auth/github/[slug].ts | 18 +- modules/markdown.ts | 4 - modules/md-routes.ts | 4 - .../md-routes/runtime/server/blog-md.get.ts | 2 +- modules/nuxt5-compat/fetch.ts | 9 + modules/nuxt5-compat/index.ts | 66 + modules/nuxt5-compat/nitropack-runtime.ts | 16 + modules/projects.ts | 4 - .../server/discover-bluesky-post.get.ts | 4 +- modules/runtime/server/slides/[id].pdf.ts | 12 +- modules/social/index.ts | 1 - modules/social/mocks/semver.ts | 8 - .../runtime/server/_social/bluesky.get.ts | 4 +- .../runtime/server/_social/mastodon.get.ts | 6 +- .../runtime/server/routes/well-known.get.ts | 4 +- nuxt.config.ts | 8 +- package.json | 6 +- patches/nitro@3.0.260610-beta.patch | 46 + patches/nuxt-site-config@4.1.2.patch | 18 + patches/ocache@0.1.5.patch | 12 + pnpm-lock.yaml | 1726 +++++++++++------ pnpm-workspace.yaml | 12 + server/api/admin/ama/[rkey].patch.ts | 4 +- .../admin/ama/[rkey]/publish/bluesky.post.ts | 6 +- .../admin/ama/[rkey]/publish/linkedin.post.ts | 6 +- .../admin/ama/[rkey]/publish/mastodon.post.ts | 6 +- .../ama/[rkey]/publish/youtube-shorts.post.ts | 12 +- server/api/admin/auth/callback.get.ts | 10 +- server/api/admin/auth/logout.post.ts | 2 +- server/api/admin/blobs.post.ts | 2 +- server/api/admin/entities/[rkey].put.ts | 2 +- server/api/admin/entities/index.post.ts | 2 +- server/api/admin/github-releases.get.ts | 10 +- server/api/admin/invites/[rkey].put.ts | 4 +- server/api/admin/invites/index.post.ts | 4 +- server/api/admin/location.get.ts | 2 +- server/api/admin/location.put.ts | 2 +- server/api/admin/talk-groups/[rkey].put.ts | 2 +- server/api/admin/talk-groups/index.post.ts | 2 +- server/api/admin/talks/[rkey].put.ts | 2 +- server/api/admin/talks/index.post.ts | 2 +- .../api/admin/uses-categories/[rkey].put.ts | 2 +- .../api/admin/uses-categories/index.post.ts | 2 +- server/api/admin/uses-items/[rkey].put.ts | 2 +- server/api/admin/uses-items/index.post.ts | 2 +- server/api/current-location.get.ts | 3 +- server/api/feedback.post.ts | 6 +- server/api/question.ts | 6 +- server/api/sponsors.get.ts | 4 +- server/api/streams.ts | 6 +- server/api/talks.get.ts | 7 +- server/api/upcoming-conferences.get.ts | 71 +- server/api/update-location.post.ts | 21 +- server/api/user.get.ts | 10 +- server/api/uses.get.ts | 3 +- server/middleware/admin.ts | 6 +- server/routes/auth/[...provider].get.ts | 12 +- server/routes/login.get.ts | 6 +- .../routes/oauth-client-metadata.json.get.ts | 2 +- server/routes/stream.get.ts | 2 +- server/routes/v/[slug].ts | 6 +- server/utils/admin/agent.ts | 6 +- server/utils/admin/ama-publish.ts | 12 +- server/utils/admin/ama-record.ts | 20 +- server/utils/admin/ama-resolve.ts | 2 +- server/utils/admin/ama-youtube.ts | 6 +- server/utils/admin/crud.ts | 10 +- server/utils/admin/oauth.ts | 20 +- server/utils/atproto.ts | 42 +- server/utils/body.ts | 13 + server/utils/cms/location.ts | 2 +- server/utils/cms/talks.ts | 10 +- server/utils/cms/uses.ts | 2 +- server/utils/pushover.ts | 4 +- server/utils/session.ts | 8 +- server/utils/sponsors.ts | 7 +- server/utils/youtube/auth.ts | 6 +- shared/types/api/conferences.ts | 22 + shared/types/api/index.ts | 6 + shared/types/api/location.ts | 8 + shared/types/api/schema.ts | 59 + shared/types/api/streams.ts | 24 + shared/types/api/user.ts | 7 + test/nuxt/api-types.ts | 47 + test/unit/bundle.spec.ts | 149 +- 103 files changed, 1898 insertions(+), 968 deletions(-) create mode 100644 app/utils/api.ts create mode 100644 modules/nuxt5-compat/fetch.ts create mode 100644 modules/nuxt5-compat/index.ts create mode 100644 modules/nuxt5-compat/nitropack-runtime.ts delete mode 100644 modules/social/mocks/semver.ts create mode 100644 patches/nitro@3.0.260610-beta.patch create mode 100644 patches/nuxt-site-config@4.1.2.patch create mode 100644 patches/ocache@0.1.5.patch create mode 100644 server/utils/body.ts create mode 100644 shared/types/api/conferences.ts create mode 100644 shared/types/api/index.ts create mode 100644 shared/types/api/location.ts create mode 100644 shared/types/api/schema.ts create mode 100644 shared/types/api/streams.ts create mode 100644 shared/types/api/user.ts create mode 100644 test/nuxt/api-types.ts diff --git a/app/components/TheHome.server.vue b/app/components/TheHome.server.vue index 91d54ce9..45473de3 100644 --- a/app/components/TheHome.server.vue +++ b/app/components/TheHome.server.vue @@ -25,9 +25,9 @@ const links = [ ] const [{ data: currentLocation }, { data: upcomingConferences }, { data: streams }, { data: articles }, { data: talks }] = await Promise.all([ - useFetch('/api/current-location'), - useFetch('/api/upcoming-conferences'), - useFetch('/api/streams', { + useApiFetch('/api/current-location'), + useApiFetch('/api/upcoming-conferences'), + useApiFetch('/api/streams', { transform: streams => streams.slice(0, 5).map(stream => ({ title: stream.title, @@ -45,7 +45,7 @@ const [{ data: currentLocation }, { data: upcomingConferences }, { data: streams const { blogEntries } = await import('#build/markdown/blog-entries.mjs') return blogEntries.slice(0, 4).map(({ title, path, date }) => ({ title, path, date })) }), - useFetch('/api/talks', { + useApiFetch('/api/talks', { transform: talks => { // Group talks by group or individual ID const groupedTalks: Record = {} diff --git a/app/components/TheSponsors.vue b/app/components/TheSponsors.vue index b6916ef4..48cfdb04 100644 --- a/app/components/TheSponsors.vue +++ b/app/components/TheSponsors.vue @@ -1,5 +1,5 @@