From e7d2f23e20b9b40b888d41a68b24dc709682ee96 Mon Sep 17 00:00:00 2001 From: rhoseno Date: Mon, 28 Oct 2024 18:58:40 +0700 Subject: [PATCH 1/5] feat: add laravel oauth passport provider --- playground/app.vue | 6 + playground/nuxt.config.ts | 1 - playground/server/routes/auth/passport.get.ts | 11 ++ src/module.ts | 6 + src/runtime/server/lib/oauth/passport.ts | 116 ++++++++++++++++++ src/runtime/types/oauth-config.ts | 2 +- 6 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 playground/server/routes/auth/passport.get.ts create mode 100644 src/runtime/server/lib/oauth/passport.ts diff --git a/playground/app.vue b/playground/app.vue index e6d79706..40ce9942 100644 --- a/playground/app.vue +++ b/playground/app.vue @@ -147,6 +147,12 @@ const providers = computed(() => disabled: Boolean(user.value?.polar), icon: 'i-iconoir-polar-sh', }, + { + label: user.value?.passport || 'Passport', + to: '/auth/passport', + disabled: Boolean(user.value?.passport), + icon: 'i-mdi-laravel', + }, ].map(p => ({ ...p, prefetch: false, diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 5bbe13f6..22c9453a 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -1,6 +1,5 @@ export default defineNuxtConfig({ // ssr: false, - extends: ['@nuxt/ui-pro'], modules: ['nuxt-auth-utils', '@nuxt/ui'], imports: { autoImport: true, diff --git a/playground/server/routes/auth/passport.get.ts b/playground/server/routes/auth/passport.get.ts new file mode 100644 index 00000000..1f463ed5 --- /dev/null +++ b/playground/server/routes/auth/passport.get.ts @@ -0,0 +1,11 @@ +export default defineOAuthPassportEventHandler({ + config: {}, + async onSuccess(event, { user }) { + await setUserSession(event, { + user: user, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/src/module.ts b/src/module.ts index b5103e66..2fd5535b 100644 --- a/src/module.ts +++ b/src/module.ts @@ -300,5 +300,11 @@ export default defineNuxtModule({ clientSecret: '', redirectURL: '', }) + runtimeConfig.oauth.passport = defu(runtimeConfig.oauth.passport, { + clientId: '', + clientSecret: '', + baseURL: '', + userURL: '', + }) }, }) diff --git a/src/runtime/server/lib/oauth/passport.ts b/src/runtime/server/lib/oauth/passport.ts new file mode 100644 index 00000000..c3947808 --- /dev/null +++ b/src/runtime/server/lib/oauth/passport.ts @@ -0,0 +1,116 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { + handleMissingConfiguration, + handleAccessTokenErrorResponse, + getOAuthRedirectURL, + requestAccessToken, +} from '../utils' +import { useRuntimeConfig } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthPassportConfig { + /** + * Passport OAuth Client ID + * @default process.env.NUXT_OAUTH_YANDEX_CLIENT_ID + */ + clientId?: string + + /** + * Passport OAuth Client Secret + * @default process.env.NUXT_OAUTH_YANDEX_CLIENT_SECRET + */ + clientSecret?: string + + /** + * Passport OAuth Scope + * @default [] + */ + scope?: string[] + + /** + * Passport OAuth Base URL + * @default 'https://passport.laravel.com' + */ + baseURL?: string + + /** + * Passport OAuth User URL + * @default 'https://passport.laravel.com/api/auth/me' + */ + userURL?: string + /** + * Redirect URL to to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_PASSPORT_REDIRECT_URL or current URL + */ + redirectURL?: string + +} + +export function defineOAuthPassportEventHandler({ + config, + onSuccess, + onError, +}: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.passport, { + baseURL: 'https://passport.laravel.com', + userURL: 'https://passport.laravel.com/api/auth/me', + }) as OAuthPassportConfig + + const query = getQuery<{ code?: string }>(event) + + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration( + event, + 'passport', + ['clientId', 'clientSecret'], + onError, + ) + } + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + if (!query.code) { + config.scope = config.scope || [] + // Redirect to Passport Oauth page + return sendRedirect( + event, + withQuery(`${config.baseURL}/oauth/authorize` as string, { + response_type: 'code', + client_id: config.clientId, + redirect_uri: redirectURL, + scope: config.scope.join(' '), + }), + ) + } + + const tokens = await requestAccessToken(`${config.baseURL}/oauth/token` as string, { + body: { + grant_type: 'authorization_code', + code: query.code as string, + client_id: config.clientId, + client_secret: config.clientSecret, + redirect_uri: redirectURL, + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'passport', tokens, onError) + } + + const accessToken = tokens.access_token + // TODO: improve typing + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const user: any = await $fetch(`${config.baseURL}${config.userURL}` as string, { + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }) + + return onSuccess(event, { + tokens, + user, + }) + }) +} diff --git a/src/runtime/types/oauth-config.ts b/src/runtime/types/oauth-config.ts index e5abff95..943b5b84 100644 --- a/src/runtime/types/oauth-config.ts +++ b/src/runtime/types/oauth-config.ts @@ -1,6 +1,6 @@ import type { H3Event, H3Error } from 'h3' -export type OAuthProvider = 'auth0' | 'battledotnet' | 'cognito' | 'discord' | 'dropbox' | 'facebook' | 'github' | 'gitlab' | 'google' | 'instagram' | 'keycloak' | 'linear' | 'linkedin' | 'microsoft' | 'paypal' | 'polar' | 'spotify' | 'steam' | 'tiktok' | 'twitch' | 'vk' | 'x' | 'xsuaa' | 'yandex' | (string & {}) +export type OAuthProvider = 'auth0' | 'battledotnet' | 'cognito' | 'discord' | 'dropbox' | 'facebook' | 'github' | 'gitlab' | 'google' | 'instagram' | 'keycloak' | 'linear' | 'linkedin' | 'microsoft' | 'paypal' | 'polar' | 'spotify' | 'steam' | 'tiktok' | 'twitch' | 'vk' | 'x' | 'xsuaa' | 'yandex' | 'passport' | (string & {}) export type OnError = (event: H3Event, error: H3Error) => Promise | void From 200899fa3049ca0dd23012474a3debd39be7fca5 Mon Sep 17 00:00:00 2001 From: rhoseno Date: Tue, 29 Oct 2024 07:36:17 +0700 Subject: [PATCH 2/5] feat: add laravel oauth passport provider --- playground/nuxt.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 22c9453a..5bbe13f6 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -1,5 +1,6 @@ export default defineNuxtConfig({ // ssr: false, + extends: ['@nuxt/ui-pro'], modules: ['nuxt-auth-utils', '@nuxt/ui'], imports: { autoImport: true, From 8ed2324bb9d6792d33c705d27f82ee53f4841590 Mon Sep 17 00:00:00 2001 From: rhoseno Date: Tue, 29 Oct 2024 08:12:19 +0700 Subject: [PATCH 3/5] chore(release): v0.6.0 --- CHANGELOG.md | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 2 files changed, 287 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 764c6e7f..a053d5c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,292 @@ # Changelog +## v0.6.0 + + +### 🚀 Enhancements + +- Allow users to define custom session factory + types ([#2](https://github.com/atinux/nuxt-auth-utils/pull/2)) +- Added google as oauth provider ([#3](https://github.com/atinux/nuxt-auth-utils/pull/3)) +- Added twitch as supported oauth provider ([#5](https://github.com/atinux/nuxt-auth-utils/pull/5)) +- Added auth0 as oauth provider ([#6](https://github.com/atinux/nuxt-auth-utils/pull/6)) +- Added discord auth provider ([#7](https://github.com/atinux/nuxt-auth-utils/pull/7)) +- Added oauth battle.net ([#11](https://github.com/atinux/nuxt-auth-utils/pull/11)) +- Refactor login buttons to use dropdown ([#14](https://github.com/atinux/nuxt-auth-utils/pull/14)) +- Add max_age param for auth0 ([#26](https://github.com/atinux/nuxt-auth-utils/pull/26)) +- Added Microsoft as oauth provider ([#8](https://github.com/atinux/nuxt-auth-utils/pull/8)) +- Added linkedIn auth provider ([#13](https://github.com/atinux/nuxt-auth-utils/pull/13)) +- Add sessionHooks to extend user sessions ([c470319](https://github.com/atinux/nuxt-auth-utils/commit/c470319)) +- Added keycloak as oauth provider ([#23](https://github.com/atinux/nuxt-auth-utils/pull/23)) +- Add auth0 connection parameter to config ([#39](https://github.com/atinux/nuxt-auth-utils/pull/39)) +- Added aws cognito provider ([#36](https://github.com/atinux/nuxt-auth-utils/pull/36)) +- Add replaceUserSession() ([#44](https://github.com/atinux/nuxt-auth-utils/pull/44)) +- Add authorizationParams in oauth config ([#56](https://github.com/atinux/nuxt-auth-utils/pull/56)) +- Generate NUXT_SESSION_PASSWORD and throw if not set in production ([de890ed](https://github.com/atinux/nuxt-auth-utils/commit/de890ed)) +- Add `redirectUrl` to OAuthMicrosoftConfig for HTTP vs HTTPS Handling ([50ba6fe](https://github.com/atinux/nuxt-auth-utils/commit/50ba6fe)) +- Add opts to requireUserSession for error message and status code customization ([015e847](https://github.com/atinux/nuxt-auth-utils/commit/015e847)) +- Add facebook OAuth provider ([777d8b2](https://github.com/atinux/nuxt-auth-utils/commit/777d8b2)) +- Add fields support to facebook provider ([8e53936](https://github.com/atinux/nuxt-auth-utils/commit/8e53936)) +- ⚠️ Support hybrid rendering ([#104](https://github.com/atinux/nuxt-auth-utils/pull/104)) +- Add steam as supported oauth provider ([c8b02d0](https://github.com/atinux/nuxt-auth-utils/commit/c8b02d0)) +- Add paypal as supported oauth provider ([57ea01e](https://github.com/atinux/nuxt-auth-utils/commit/57ea01e)) +- Add x(formerly twitter) as supported oauth provider ([a0be1f2](https://github.com/atinux/nuxt-auth-utils/commit/a0be1f2)) +- Add xsuaa provider ([9afb9eb](https://github.com/atinux/nuxt-auth-utils/commit/9afb9eb)) +- X/Twitter email requirement enhancement ([65d6324](https://github.com/atinux/nuxt-auth-utils/commit/65d6324)) +- Add yandex oauth ([22bd974](https://github.com/atinux/nuxt-auth-utils/commit/22bd974)) +- Support `NUXT_OAUTH_MICROSOFT_REDIRECT_URL` ([9979f0d](https://github.com/atinux/nuxt-auth-utils/commit/9979f0d)) +- Add support nitro prefix env ([58ebf85](https://github.com/atinux/nuxt-auth-utils/commit/58ebf85)) +- Support redirectURL config for all providers ([cdca787](https://github.com/atinux/nuxt-auth-utils/commit/cdca787)) +- Cognito oauth support custom domain ([4ad11a4](https://github.com/atinux/nuxt-auth-utils/commit/4ad11a4)) +- Add tiktok provider ([c1b1f44](https://github.com/atinux/nuxt-auth-utils/commit/c1b1f44)) +- Add Gitlab provider ([fec746f](https://github.com/atinux/nuxt-auth-utils/commit/fec746f)) +- Add instagram provider ([3bd553c](https://github.com/atinux/nuxt-auth-utils/commit/3bd553c)) +- Add vk provider ([6581f12](https://github.com/atinux/nuxt-auth-utils/commit/6581f12)) +- Add support for private data & config argument ([#171](https://github.com/atinux/nuxt-auth-utils/pull/171)) +- Add Dropbox as supported oauth provider ([#183](https://github.com/atinux/nuxt-auth-utils/pull/183)) +- ⚠️ Call `fetch` hook if session is not empty instead of user defined ([#188](https://github.com/atinux/nuxt-auth-utils/pull/188)) +- ⚠️ Rename `oauthEventHandler` to`defineOAuthEventHandler` ([#189](https://github.com/atinux/nuxt-auth-utils/pull/189)) +- Add `hashPassword` & `verifyPassword` server utils ([0c4d050](https://github.com/atinux/nuxt-auth-utils/commit/0c4d050)) +- Webauthn (passkey) support ([a90b173](https://github.com/atinux/nuxt-auth-utils/commit/a90b173)) +- Add polar provider ([2682bcb](https://github.com/atinux/nuxt-auth-utils/commit/2682bcb)) +- ClearUserSession takes config arg as well ([69eaf42](https://github.com/atinux/nuxt-auth-utils/commit/69eaf42)) +- Add linear provider ([c1291cd](https://github.com/atinux/nuxt-auth-utils/commit/c1291cd)) +- Add laravel oauth passport provider ([e7d2f23](https://github.com/atinux/nuxt-auth-utils/commit/e7d2f23)) +- Add laravel oauth passport provider ([200899f](https://github.com/atinux/nuxt-auth-utils/commit/200899f)) + +### 🔥 Performance + +- ⚠️ One export per provider for tree-shaking ([4f98b53](https://github.com/atinux/nuxt-auth-utils/commit/4f98b53)) + +### 🩹 Fixes + +- Workaround for addServerImportsDir not working ([5a189df](https://github.com/atinux/nuxt-auth-utils/commit/5a189df)) +- Don't log warning about password when preparing types ([804057b](https://github.com/atinux/nuxt-auth-utils/commit/804057b)) +- Import useRuntimeConfig ([bdbb4b8](https://github.com/atinux/nuxt-auth-utils/commit/bdbb4b8)) +- Use import presets ([f16ebc9](https://github.com/atinux/nuxt-auth-utils/commit/f16ebc9)) +- **oauth:** Add generic OAuthConfig type ([#18](https://github.com/atinux/nuxt-auth-utils/pull/18)) +- Avoid infinite loop with latest Nuxt ([93b949d](https://github.com/atinux/nuxt-auth-utils/commit/93b949d)) +- Add audience to auth0 runtime config types ([#27](https://github.com/atinux/nuxt-auth-utils/pull/27)) +- Correct arguments for hooks ([6e0193e](https://github.com/atinux/nuxt-auth-utils/commit/6e0193e)) +- Replace encoded space characters with regular spaces ([#40](https://github.com/atinux/nuxt-auth-utils/pull/40)) +- **google:** Remove `redirectUrl` type ([#52](https://github.com/atinux/nuxt-auth-utils/pull/52)) +- UserSession user type augmentation ([#54](https://github.com/atinux/nuxt-auth-utils/pull/54)) +- User session types ([#55](https://github.com/atinux/nuxt-auth-utils/pull/55)) +- Leverage runtimeConfig to check password ([7c23543](https://github.com/atinux/nuxt-auth-utils/commit/7c23543)) +- Leverage NUXT_SESSION_PASSWORD provided at runtime ([4932959](https://github.com/atinux/nuxt-auth-utils/commit/4932959)) +- **types:** Narrowed session type passed to fetch session hook ([77c82e7](https://github.com/atinux/nuxt-auth-utils/commit/77c82e7)) +- Avoid duplicate trigger of session fetch hook due to request retry ([5fac9a1](https://github.com/atinux/nuxt-auth-utils/commit/5fac9a1)) +- Always return 200 for session endpoint ([#130](https://github.com/atinux/nuxt-auth-utils/pull/130)) +- Add missing session in AuthState ([3e39727](https://github.com/atinux/nuxt-auth-utils/commit/3e39727)) +- Fetch session directly when ssr disabled ([#151](https://github.com/atinux/nuxt-auth-utils/pull/151)) +- Paypal tokens request requires encoded `redirect_uri` ([8bf3b0b](https://github.com/atinux/nuxt-auth-utils/commit/8bf3b0b)) +- Ensure plugin declaration files are emitted ([#170](https://github.com/atinux/nuxt-auth-utils/pull/170)) +- UserSession secure type augmentation ([#181](https://github.com/atinux/nuxt-auth-utils/pull/181)) +- **steam:** Improve open id validation ([#184](https://github.com/atinux/nuxt-auth-utils/pull/184)) +- Fetch hook is called even is user is not set ([#209](https://github.com/atinux/nuxt-auth-utils/pull/209)) + +### 💅 Refactors + +- Use `useSession` generic rather than assertion ([#4](https://github.com/atinux/nuxt-auth-utils/pull/4)) +- Replace ofetch with $fetch ([a7df1b5](https://github.com/atinux/nuxt-auth-utils/commit/a7df1b5)) +- Handle missing configuration error ([5675aaf](https://github.com/atinux/nuxt-auth-utils/commit/5675aaf)) +- Handle access token error response ([a1b3fbb](https://github.com/atinux/nuxt-auth-utils/commit/a1b3fbb)) +- Request token ([925f688](https://github.com/atinux/nuxt-auth-utils/commit/925f688)) + +### 📖 Documentation + +- Update readme ([06f1504](https://github.com/atinux/nuxt-auth-utils/commit/06f1504)) +- Add demo ([cbc8b7a](https://github.com/atinux/nuxt-auth-utils/commit/cbc8b7a)) +- Use consistent reference to module ([13daa78](https://github.com/atinux/nuxt-auth-utils/commit/13daa78)) +- Add LinkedIn in providers ([c9b9925](https://github.com/atinux/nuxt-auth-utils/commit/c9b9925)) +- Update badge colors ([ff868a6](https://github.com/atinux/nuxt-auth-utils/commit/ff868a6)) +- Use new nuxi module add command in installation ([d64b9d3](https://github.com/atinux/nuxt-auth-utils/commit/d64b9d3)) +- Improve readme ([00c8287](https://github.com/atinux/nuxt-auth-utils/commit/00c8287)) +- Removed reference to /api in readme ([#77](https://github.com/atinux/nuxt-auth-utils/pull/77)) +- Fix typos ([149448a](https://github.com/atinux/nuxt-auth-utils/commit/149448a)) +- Include SSR instructions in the README, fixes #97 ([#99](https://github.com/atinux/nuxt-auth-utils/pull/99), [#97](https://github.com/atinux/nuxt-auth-utils/issues/97)) +- Update readme ([7a4dcfb](https://github.com/atinux/nuxt-auth-utils/commit/7a4dcfb)) +- Add X in readme ([b452d60](https://github.com/atinux/nuxt-auth-utils/commit/b452d60)) +- Add TS signature ([04a5d88](https://github.com/atinux/nuxt-auth-utils/commit/04a5d88)) +- Add note about dependencies ([67b5542](https://github.com/atinux/nuxt-auth-utils/commit/67b5542)) +- Fix event handler name in example ([a4cfa89](https://github.com/atinux/nuxt-auth-utils/commit/a4cfa89)) +- Update nitro version ([848cebe](https://github.com/atinux/nuxt-auth-utils/commit/848cebe)) +- Fix typo ([8d3af7e](https://github.com/atinux/nuxt-auth-utils/commit/8d3af7e)) +- Add note about cookie size ([a725436](https://github.com/atinux/nuxt-auth-utils/commit/a725436)) +- Add note to readme about session API route ([ddf38c1](https://github.com/atinux/nuxt-auth-utils/commit/ddf38c1)) +- Typo ([c16d014](https://github.com/atinux/nuxt-auth-utils/commit/c16d014)) +- Update links ([2ed5e17](https://github.com/atinux/nuxt-auth-utils/commit/2ed5e17)) +- Improvement ([3bd76b0](https://github.com/atinux/nuxt-auth-utils/commit/3bd76b0)) +- Set webauthn version to v10 ([ca151c7](https://github.com/atinux/nuxt-auth-utils/commit/ca151c7)) +- Fix typo ([#251](https://github.com/atinux/nuxt-auth-utils/pull/251)) + +### 🏡 Chore + +- Init ([19caed2](https://github.com/atinux/nuxt-auth-utils/commit/19caed2)) +- Add runtime config ([9013484](https://github.com/atinux/nuxt-auth-utils/commit/9013484)) +- V0 ([18ea43a](https://github.com/atinux/nuxt-auth-utils/commit/18ea43a)) +- Init ([9b75953](https://github.com/atinux/nuxt-auth-utils/commit/9b75953)) +- **release:** V0.0.1 ([fd5a2c1](https://github.com/atinux/nuxt-auth-utils/commit/fd5a2c1)) +- **release:** V0.0.2 ([f01b412](https://github.com/atinux/nuxt-auth-utils/commit/f01b412)) +- Remove `.nuxtrc` ([3f96e97](https://github.com/atinux/nuxt-auth-utils/commit/3f96e97)) +- Add type testing script ([e9ffa5e](https://github.com/atinux/nuxt-auth-utils/commit/e9ffa5e)) +- Move playground into workspace ([bd8108c](https://github.com/atinux/nuxt-auth-utils/commit/bd8108c)) +- Add playground type test ([74f452c](https://github.com/atinux/nuxt-auth-utils/commit/74f452c)) +- **release:** V0.0.3 ([9d1342c](https://github.com/atinux/nuxt-auth-utils/commit/9d1342c)) +- Add comment ([1923dcc](https://github.com/atinux/nuxt-auth-utils/commit/1923dcc)) +- **release:** V0.0.4 ([2bc6f9a](https://github.com/atinux/nuxt-auth-utils/commit/2bc6f9a)) +- **release:** V0.0.5 ([86226ad](https://github.com/atinux/nuxt-auth-utils/commit/86226ad)) +- Update deps ([05f4a9c](https://github.com/atinux/nuxt-auth-utils/commit/05f4a9c)) +- **release:** V0.0.6 ([4eb4f25](https://github.com/atinux/nuxt-auth-utils/commit/4eb4f25)) +- Add SameSite=lax ([1b296e2](https://github.com/atinux/nuxt-auth-utils/commit/1b296e2)) +- **release:** V0.0.7 ([5316d10](https://github.com/atinux/nuxt-auth-utils/commit/5316d10)) +- **playground:** Better with right title ([97a3ad3](https://github.com/atinux/nuxt-auth-utils/commit/97a3ad3)) +- **release:** V0.0.8 ([79f7ce7](https://github.com/atinux/nuxt-auth-utils/commit/79f7ce7)) +- **release:** V0.0.9 ([36cadda](https://github.com/atinux/nuxt-auth-utils/commit/36cadda)) +- Update deps ([bb3a510](https://github.com/atinux/nuxt-auth-utils/commit/bb3a510)) +- **release:** V0.0.10 ([c60fde7](https://github.com/atinux/nuxt-auth-utils/commit/c60fde7)) +- **release:** V0.0.11 ([b52ed08](https://github.com/atinux/nuxt-auth-utils/commit/b52ed08)) +- **release:** V0.0.12 ([a74e7f4](https://github.com/atinux/nuxt-auth-utils/commit/a74e7f4)) +- Rename session from verify to fetch ([10694e9](https://github.com/atinux/nuxt-auth-utils/commit/10694e9)) +- **release:** V0.0.13 ([e344c98](https://github.com/atinux/nuxt-auth-utils/commit/e344c98)) +- Test bundler module resolution ([#32](https://github.com/atinux/nuxt-auth-utils/pull/32)) +- Update deps ([9d6b258](https://github.com/atinux/nuxt-auth-utils/commit/9d6b258)) +- **release:** V0.0.14 ([1d0d0cc](https://github.com/atinux/nuxt-auth-utils/commit/1d0d0cc)) +- Up deps ([a7bd06b](https://github.com/atinux/nuxt-auth-utils/commit/a7bd06b)) +- **release:** V0.0.15 ([ec128cc](https://github.com/atinux/nuxt-auth-utils/commit/ec128cc)) +- Better server types ([#51](https://github.com/atinux/nuxt-auth-utils/pull/51)) +- Update deps ([b930118](https://github.com/atinux/nuxt-auth-utils/commit/b930118)) +- **release:** V0.0.16 ([58268d7](https://github.com/atinux/nuxt-auth-utils/commit/58268d7)) +- Update deps ([fdaa88c](https://github.com/atinux/nuxt-auth-utils/commit/fdaa88c)) +- Add api test route ([9aed7fe](https://github.com/atinux/nuxt-auth-utils/commit/9aed7fe)) +- Update deps in playground ([95c657f](https://github.com/atinux/nuxt-auth-utils/commit/95c657f)) +- **release:** V0.0.17 ([a814b58](https://github.com/atinux/nuxt-auth-utils/commit/a814b58)) +- **release:** V0.0.18 ([ea09e00](https://github.com/atinux/nuxt-auth-utils/commit/ea09e00)) +- Fix types ([34dfb7b](https://github.com/atinux/nuxt-auth-utils/commit/34dfb7b)) +- **release:** V0.0.19 ([a74c869](https://github.com/atinux/nuxt-auth-utils/commit/a74c869)) +- **release:** V0.0.20 ([39ffaae](https://github.com/atinux/nuxt-auth-utils/commit/39ffaae)) +- Update deps ([c8b8eb9](https://github.com/atinux/nuxt-auth-utils/commit/c8b8eb9)) +- **release:** V0.0.21 ([f4b3512](https://github.com/atinux/nuxt-auth-utils/commit/f4b3512)) +- **release:** V0.0.22 ([465e73e](https://github.com/atinux/nuxt-auth-utils/commit/465e73e)) +- Migrate to eslint v9 ([964b67b](https://github.com/atinux/nuxt-auth-utils/commit/964b67b)) +- Update deps ([a77a334](https://github.com/atinux/nuxt-auth-utils/commit/a77a334)) +- Add vscode settings for eslint ([4f1afc9](https://github.com/atinux/nuxt-auth-utils/commit/4f1afc9)) +- **release:** V0.0.23 ([b74d47b](https://github.com/atinux/nuxt-auth-utils/commit/b74d47b)) +- Update deps ([3e42be4](https://github.com/atinux/nuxt-auth-utils/commit/3e42be4)) +- **release:** V0.0.24 ([9063aeb](https://github.com/atinux/nuxt-auth-utils/commit/9063aeb)) +- Update to latest `@nuxt/module-builder` ([c9e4ff7](https://github.com/atinux/nuxt-auth-utils/commit/c9e4ff7)) +- **release:** V0.0.25 ([7fe6f84](https://github.com/atinux/nuxt-auth-utils/commit/7fe6f84)) +- Add packageManager ([c323edc](https://github.com/atinux/nuxt-auth-utils/commit/c323edc)) +- Add link to nuxt-authorization ([1b06908](https://github.com/atinux/nuxt-auth-utils/commit/1b06908)) +- Update deps ([2fb5cff](https://github.com/atinux/nuxt-auth-utils/commit/2fb5cff)) +- **release:** V0.1.0 ([6ea5685](https://github.com/atinux/nuxt-auth-utils/commit/6ea5685)) +- **release:** V0.2.0 ([2d33c54](https://github.com/atinux/nuxt-auth-utils/commit/2d33c54)) +- **release:** V0.2.1 ([4ba3289](https://github.com/atinux/nuxt-auth-utils/commit/4ba3289)) +- **release:** V0.3.0 ([fd9df35](https://github.com/atinux/nuxt-auth-utils/commit/fd9df35)) +- Update deps ([0132ea0](https://github.com/atinux/nuxt-auth-utils/commit/0132ea0)) +- **release:** V0.3.1 ([633c004](https://github.com/atinux/nuxt-auth-utils/commit/633c004)) +- **release:** V0.3.2 ([b4d5ce2](https://github.com/atinux/nuxt-auth-utils/commit/b4d5ce2)) +- Typo in comment ([b96a017](https://github.com/atinux/nuxt-auth-utils/commit/b96a017)) +- Update deps ([d8ab3f4](https://github.com/atinux/nuxt-auth-utils/commit/d8ab3f4)) +- Lint fix ([a8928a3](https://github.com/atinux/nuxt-auth-utils/commit/a8928a3)) +- **release:** V0.3.3 ([0345169](https://github.com/atinux/nuxt-auth-utils/commit/0345169)) +- **release:** V0.3.4 ([07cf55e](https://github.com/atinux/nuxt-auth-utils/commit/07cf55e)) +- Update .vscode ([6285ca2](https://github.com/atinux/nuxt-auth-utils/commit/6285ca2)) +- Update @nuxt/module-builder ([ceaa47b](https://github.com/atinux/nuxt-auth-utils/commit/ceaa47b)) +- Upadte X handler ([7e81c27](https://github.com/atinux/nuxt-auth-utils/commit/7e81c27)) +- Fix X ([7269c61](https://github.com/atinux/nuxt-auth-utils/commit/7269c61)) +- Lint fix ([cf75ab1](https://github.com/atinux/nuxt-auth-utils/commit/cf75ab1)) +- Update deps ([35eff05](https://github.com/atinux/nuxt-auth-utils/commit/35eff05)) +- **release:** V0.3.5 ([de0e01c](https://github.com/atinux/nuxt-auth-utils/commit/de0e01c)) +- Update deps ([c4189b2](https://github.com/atinux/nuxt-auth-utils/commit/c4189b2)) +- **release:** V0.3.6 ([6b5f5eb](https://github.com/atinux/nuxt-auth-utils/commit/6b5f5eb)) +- Update deps ([50aba8d](https://github.com/atinux/nuxt-auth-utils/commit/50aba8d)) +- **release:** V0.3.7 ([52d7e60](https://github.com/atinux/nuxt-auth-utils/commit/52d7e60)) +- Add emailRequired for testing Gitlab ([408b580](https://github.com/atinux/nuxt-auth-utils/commit/408b580)) +- Up ([bd37690](https://github.com/atinux/nuxt-auth-utils/commit/bd37690)) +- **release:** V0.3.8 ([23ccd4c](https://github.com/atinux/nuxt-auth-utils/commit/23ccd4c)) +- Update deps ([4a0e1e9](https://github.com/atinux/nuxt-auth-utils/commit/4a0e1e9)) +- **release:** V0.3.9 ([3112481](https://github.com/atinux/nuxt-auth-utils/commit/3112481)) +- Add state params in Google oauth ([f75e680](https://github.com/atinux/nuxt-auth-utils/commit/f75e680)) +- Update deps ([5ae49ae](https://github.com/atinux/nuxt-auth-utils/commit/5ae49ae)) +- **release:** V0.4.0 ([7da0c78](https://github.com/atinux/nuxt-auth-utils/commit/7da0c78)) +- Remove unnecessary challenge cookie ([be2626b](https://github.com/atinux/nuxt-auth-utils/commit/be2626b)) +- **release:** V0.4.1 ([9e7bd5a](https://github.com/atinux/nuxt-auth-utils/commit/9e7bd5a)) +- **release:** V0.4.2 ([e039625](https://github.com/atinux/nuxt-auth-utils/commit/e039625)) +- Update deps ([2719753](https://github.com/atinux/nuxt-auth-utils/commit/2719753)) +- **release:** V0.4.3 ([c95cb73](https://github.com/atinux/nuxt-auth-utils/commit/c95cb73)) +- **release:** V0.4.4 ([fce4e33](https://github.com/atinux/nuxt-auth-utils/commit/fce4e33)) +- **playground:** Remove duplicate code ([edc14ce](https://github.com/atinux/nuxt-auth-utils/commit/edc14ce)) +- ⚠️ Update simplewebauthn to v11 ([92e3e2e](https://github.com/atinux/nuxt-auth-utils/commit/92e3e2e)) +- Update deps ([5a4ecb3](https://github.com/atinux/nuxt-auth-utils/commit/5a4ecb3)) +- **release:** V0.5.0 ([404acc6](https://github.com/atinux/nuxt-auth-utils/commit/404acc6)) + +### 🎨 Styles + +- Add lint script ([af884ff](https://github.com/atinux/nuxt-auth-utils/commit/af884ff)) + +### 🤖 CI + +- Run lint + test actions in ci ([f50c1b5](https://github.com/atinux/nuxt-auth-utils/commit/f50c1b5)) + +#### ⚠️ Breaking Changes + +- ⚠️ Support hybrid rendering ([#104](https://github.com/atinux/nuxt-auth-utils/pull/104)) +- ⚠️ Call `fetch` hook if session is not empty instead of user defined ([#188](https://github.com/atinux/nuxt-auth-utils/pull/188)) +- ⚠️ Rename `oauthEventHandler` to`defineOAuthEventHandler` ([#189](https://github.com/atinux/nuxt-auth-utils/pull/189)) +- ⚠️ One export per provider for tree-shaking ([4f98b53](https://github.com/atinux/nuxt-auth-utils/commit/4f98b53)) +- ⚠️ Update simplewebauthn to v11 ([92e3e2e](https://github.com/atinux/nuxt-auth-utils/commit/92e3e2e)) + +### ❤️ Contributors + +- Rhoseno +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- Gerben Mulder +- Nekohaxx ([@nekohaxx](http://github.com/nekohaxx)) +- FreeCoderX ([@yxw007](http://github.com/yxw007)) +- Jules Libert +- Mathieu NICOLAS ([@mathieunicolas](http://github.com/mathieunicolas)) +- Ahmed Rangel ([@ahmedrangel](http://github.com/ahmedrangel)) +- Julian Renard +- Estéban +- Yizack Rangel ([@Yizack](http://github.com/Yizack)) +- Israel Ortuño +- Daniel Roe ([@danielroe](http://github.com/danielroe)) +- Alex Blumgart +- Sandro Circi ([@sandros94](http://github.com/sandros94)) +- Rudo Kemper +- Ivailo Panamski +- Zack Spear ([@zackspear](http://github.com/zackspear)) +- Alexander ([@hywax](http://github.com/hywax)) +- Kevin Olson ([@acidjazz](http://github.com/acidjazz)) +- TcarterBAMF ([@tcarterBAMF](http://github.com/tcarterBAMF)) +- Alex +- Fayaz Ahmed ([@fayazara](http://github.com/fayazara)) +- Jan Fröhlich ([@zanfee](http://github.com/zanfee)) +- Stonegate ([@stonega](http://github.com/stonega)) +- Yue JIN ([@kingyue737](http://github.com/kingyue737)) +- Paulo Queiroz ([@raggesilver](http://github.com/raggesilver)) +- Timi Omoyeni ([@Timibadass](http://github.com/Timibadass)) +- Ozan Cakir ([@ozancakir](http://github.com/ozancakir)) +- Adam Hudák ([@adam-hudak](http://github.com/adam-hudak)) +- Deth +- Conrawl Rogers +- Max ([@onmax](http://github.com/onmax)) +- André Agro Ferreira ([@andreagroferreira](http://github.com/andreagroferreira)) +- Maximilian Götz-Mikus ([@maximilianmikus](http://github.com/maximilianmikus)) +- Harlan Wilton ([@harlan-zw](http://github.com/harlan-zw)) +- Dvir Hazout +- Silvio Eckl +- José Manuel Madriaza Caravia ([@LeoMo-27](http://github.com/LeoMo-27)) +- H+ ([@justserdar](http://github.com/justserdar)) +- Jakub Frelik +- Uģis ([@BerzinsU](http://github.com/BerzinsU)) +- Sigve Hansen ([@sifferhans](http://github.com/sifferhans)) +- Arash ([@arashsheyda](http://github.com/arashsheyda)) +- Samuel LEFEVRE ([@samulefevre](http://github.com/samulefevre)) +- Antoine Lassier +- Akshara Hegde ([@aksharahegde](http://github.com/aksharahegde)) + ## v0.5.0 [compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.4.4...v0.5.0) diff --git a/package.json b/package.json index 74d2699e..e90b2431 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nuxt-auth-utils", - "version": "0.5.0", + "version": "0.6.0", "description": "Add Authentication to Nuxt applications with secured & sealed cookies sessions.", "repository": "atinux/nuxt-auth-utils", "license": "MIT", From 8cb540755c1562c678528ec3aea4850d21a08c81 Mon Sep 17 00:00:00 2001 From: rhoseno Date: Tue, 29 Oct 2024 08:29:17 +0700 Subject: [PATCH 4/5] feat: add laravel oauth passport provider --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a053d5c3..c23ccdd6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,7 +51,6 @@ - Add polar provider ([2682bcb](https://github.com/atinux/nuxt-auth-utils/commit/2682bcb)) - ClearUserSession takes config arg as well ([69eaf42](https://github.com/atinux/nuxt-auth-utils/commit/69eaf42)) - Add linear provider ([c1291cd](https://github.com/atinux/nuxt-auth-utils/commit/c1291cd)) -- Add laravel oauth passport provider ([e7d2f23](https://github.com/atinux/nuxt-auth-utils/commit/e7d2f23)) - Add laravel oauth passport provider ([200899f](https://github.com/atinux/nuxt-auth-utils/commit/200899f)) ### 🔥 Performance From 38b7ba28b735dac360368a59a98f250508a33be5 Mon Sep 17 00:00:00 2001 From: rhoseno Date: Fri, 1 Nov 2024 15:32:35 +0700 Subject: [PATCH 5/5] update from atinux:main --- CHANGELOG.md | 275 +--------- package.json | 17 +- pnpm-lock.yaml | 478 +++++++++--------- src/module.ts | 12 +- .../server/lib/webauthn/authenticate.ts | 23 +- src/runtime/server/lib/webauthn/register.ts | 19 +- src/runtime/types/webauthn.ts | 31 +- 7 files changed, 303 insertions(+), 552 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c23ccdd6..6e1103ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,290 +1,23 @@ # Changelog -## v0.6.0 +## v0.5.1 - -### 🚀 Enhancements - -- Allow users to define custom session factory + types ([#2](https://github.com/atinux/nuxt-auth-utils/pull/2)) -- Added google as oauth provider ([#3](https://github.com/atinux/nuxt-auth-utils/pull/3)) -- Added twitch as supported oauth provider ([#5](https://github.com/atinux/nuxt-auth-utils/pull/5)) -- Added auth0 as oauth provider ([#6](https://github.com/atinux/nuxt-auth-utils/pull/6)) -- Added discord auth provider ([#7](https://github.com/atinux/nuxt-auth-utils/pull/7)) -- Added oauth battle.net ([#11](https://github.com/atinux/nuxt-auth-utils/pull/11)) -- Refactor login buttons to use dropdown ([#14](https://github.com/atinux/nuxt-auth-utils/pull/14)) -- Add max_age param for auth0 ([#26](https://github.com/atinux/nuxt-auth-utils/pull/26)) -- Added Microsoft as oauth provider ([#8](https://github.com/atinux/nuxt-auth-utils/pull/8)) -- Added linkedIn auth provider ([#13](https://github.com/atinux/nuxt-auth-utils/pull/13)) -- Add sessionHooks to extend user sessions ([c470319](https://github.com/atinux/nuxt-auth-utils/commit/c470319)) -- Added keycloak as oauth provider ([#23](https://github.com/atinux/nuxt-auth-utils/pull/23)) -- Add auth0 connection parameter to config ([#39](https://github.com/atinux/nuxt-auth-utils/pull/39)) -- Added aws cognito provider ([#36](https://github.com/atinux/nuxt-auth-utils/pull/36)) -- Add replaceUserSession() ([#44](https://github.com/atinux/nuxt-auth-utils/pull/44)) -- Add authorizationParams in oauth config ([#56](https://github.com/atinux/nuxt-auth-utils/pull/56)) -- Generate NUXT_SESSION_PASSWORD and throw if not set in production ([de890ed](https://github.com/atinux/nuxt-auth-utils/commit/de890ed)) -- Add `redirectUrl` to OAuthMicrosoftConfig for HTTP vs HTTPS Handling ([50ba6fe](https://github.com/atinux/nuxt-auth-utils/commit/50ba6fe)) -- Add opts to requireUserSession for error message and status code customization ([015e847](https://github.com/atinux/nuxt-auth-utils/commit/015e847)) -- Add facebook OAuth provider ([777d8b2](https://github.com/atinux/nuxt-auth-utils/commit/777d8b2)) -- Add fields support to facebook provider ([8e53936](https://github.com/atinux/nuxt-auth-utils/commit/8e53936)) -- ⚠️ Support hybrid rendering ([#104](https://github.com/atinux/nuxt-auth-utils/pull/104)) -- Add steam as supported oauth provider ([c8b02d0](https://github.com/atinux/nuxt-auth-utils/commit/c8b02d0)) -- Add paypal as supported oauth provider ([57ea01e](https://github.com/atinux/nuxt-auth-utils/commit/57ea01e)) -- Add x(formerly twitter) as supported oauth provider ([a0be1f2](https://github.com/atinux/nuxt-auth-utils/commit/a0be1f2)) -- Add xsuaa provider ([9afb9eb](https://github.com/atinux/nuxt-auth-utils/commit/9afb9eb)) -- X/Twitter email requirement enhancement ([65d6324](https://github.com/atinux/nuxt-auth-utils/commit/65d6324)) -- Add yandex oauth ([22bd974](https://github.com/atinux/nuxt-auth-utils/commit/22bd974)) -- Support `NUXT_OAUTH_MICROSOFT_REDIRECT_URL` ([9979f0d](https://github.com/atinux/nuxt-auth-utils/commit/9979f0d)) -- Add support nitro prefix env ([58ebf85](https://github.com/atinux/nuxt-auth-utils/commit/58ebf85)) -- Support redirectURL config for all providers ([cdca787](https://github.com/atinux/nuxt-auth-utils/commit/cdca787)) -- Cognito oauth support custom domain ([4ad11a4](https://github.com/atinux/nuxt-auth-utils/commit/4ad11a4)) -- Add tiktok provider ([c1b1f44](https://github.com/atinux/nuxt-auth-utils/commit/c1b1f44)) -- Add Gitlab provider ([fec746f](https://github.com/atinux/nuxt-auth-utils/commit/fec746f)) -- Add instagram provider ([3bd553c](https://github.com/atinux/nuxt-auth-utils/commit/3bd553c)) -- Add vk provider ([6581f12](https://github.com/atinux/nuxt-auth-utils/commit/6581f12)) -- Add support for private data & config argument ([#171](https://github.com/atinux/nuxt-auth-utils/pull/171)) -- Add Dropbox as supported oauth provider ([#183](https://github.com/atinux/nuxt-auth-utils/pull/183)) -- ⚠️ Call `fetch` hook if session is not empty instead of user defined ([#188](https://github.com/atinux/nuxt-auth-utils/pull/188)) -- ⚠️ Rename `oauthEventHandler` to`defineOAuthEventHandler` ([#189](https://github.com/atinux/nuxt-auth-utils/pull/189)) -- Add `hashPassword` & `verifyPassword` server utils ([0c4d050](https://github.com/atinux/nuxt-auth-utils/commit/0c4d050)) -- Webauthn (passkey) support ([a90b173](https://github.com/atinux/nuxt-auth-utils/commit/a90b173)) -- Add polar provider ([2682bcb](https://github.com/atinux/nuxt-auth-utils/commit/2682bcb)) -- ClearUserSession takes config arg as well ([69eaf42](https://github.com/atinux/nuxt-auth-utils/commit/69eaf42)) -- Add linear provider ([c1291cd](https://github.com/atinux/nuxt-auth-utils/commit/c1291cd)) -- Add laravel oauth passport provider ([200899f](https://github.com/atinux/nuxt-auth-utils/commit/200899f)) - -### 🔥 Performance - -- ⚠️ One export per provider for tree-shaking ([4f98b53](https://github.com/atinux/nuxt-auth-utils/commit/4f98b53)) +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.0...v0.5.1) ### 🩹 Fixes -- Workaround for addServerImportsDir not working ([5a189df](https://github.com/atinux/nuxt-auth-utils/commit/5a189df)) -- Don't log warning about password when preparing types ([804057b](https://github.com/atinux/nuxt-auth-utils/commit/804057b)) -- Import useRuntimeConfig ([bdbb4b8](https://github.com/atinux/nuxt-auth-utils/commit/bdbb4b8)) -- Use import presets ([f16ebc9](https://github.com/atinux/nuxt-auth-utils/commit/f16ebc9)) -- **oauth:** Add generic OAuthConfig type ([#18](https://github.com/atinux/nuxt-auth-utils/pull/18)) -- Avoid infinite loop with latest Nuxt ([93b949d](https://github.com/atinux/nuxt-auth-utils/commit/93b949d)) -- Add audience to auth0 runtime config types ([#27](https://github.com/atinux/nuxt-auth-utils/pull/27)) -- Correct arguments for hooks ([6e0193e](https://github.com/atinux/nuxt-auth-utils/commit/6e0193e)) -- Replace encoded space characters with regular spaces ([#40](https://github.com/atinux/nuxt-auth-utils/pull/40)) -- **google:** Remove `redirectUrl` type ([#52](https://github.com/atinux/nuxt-auth-utils/pull/52)) -- UserSession user type augmentation ([#54](https://github.com/atinux/nuxt-auth-utils/pull/54)) -- User session types ([#55](https://github.com/atinux/nuxt-auth-utils/pull/55)) -- Leverage runtimeConfig to check password ([7c23543](https://github.com/atinux/nuxt-auth-utils/commit/7c23543)) -- Leverage NUXT_SESSION_PASSWORD provided at runtime ([4932959](https://github.com/atinux/nuxt-auth-utils/commit/4932959)) -- **types:** Narrowed session type passed to fetch session hook ([77c82e7](https://github.com/atinux/nuxt-auth-utils/commit/77c82e7)) -- Avoid duplicate trigger of session fetch hook due to request retry ([5fac9a1](https://github.com/atinux/nuxt-auth-utils/commit/5fac9a1)) -- Always return 200 for session endpoint ([#130](https://github.com/atinux/nuxt-auth-utils/pull/130)) -- Add missing session in AuthState ([3e39727](https://github.com/atinux/nuxt-auth-utils/commit/3e39727)) -- Fetch session directly when ssr disabled ([#151](https://github.com/atinux/nuxt-auth-utils/pull/151)) -- Paypal tokens request requires encoded `redirect_uri` ([8bf3b0b](https://github.com/atinux/nuxt-auth-utils/commit/8bf3b0b)) -- Ensure plugin declaration files are emitted ([#170](https://github.com/atinux/nuxt-auth-utils/pull/170)) -- UserSession secure type augmentation ([#181](https://github.com/atinux/nuxt-auth-utils/pull/181)) -- **steam:** Improve open id validation ([#184](https://github.com/atinux/nuxt-auth-utils/pull/184)) -- Fetch hook is called even is user is not set ([#209](https://github.com/atinux/nuxt-auth-utils/pull/209)) - -### 💅 Refactors - -- Use `useSession` generic rather than assertion ([#4](https://github.com/atinux/nuxt-auth-utils/pull/4)) -- Replace ofetch with $fetch ([a7df1b5](https://github.com/atinux/nuxt-auth-utils/commit/a7df1b5)) -- Handle missing configuration error ([5675aaf](https://github.com/atinux/nuxt-auth-utils/commit/5675aaf)) -- Handle access token error response ([a1b3fbb](https://github.com/atinux/nuxt-auth-utils/commit/a1b3fbb)) -- Request token ([925f688](https://github.com/atinux/nuxt-auth-utils/commit/925f688)) - -### 📖 Documentation - -- Update readme ([06f1504](https://github.com/atinux/nuxt-auth-utils/commit/06f1504)) -- Add demo ([cbc8b7a](https://github.com/atinux/nuxt-auth-utils/commit/cbc8b7a)) -- Use consistent reference to module ([13daa78](https://github.com/atinux/nuxt-auth-utils/commit/13daa78)) -- Add LinkedIn in providers ([c9b9925](https://github.com/atinux/nuxt-auth-utils/commit/c9b9925)) -- Update badge colors ([ff868a6](https://github.com/atinux/nuxt-auth-utils/commit/ff868a6)) -- Use new nuxi module add command in installation ([d64b9d3](https://github.com/atinux/nuxt-auth-utils/commit/d64b9d3)) -- Improve readme ([00c8287](https://github.com/atinux/nuxt-auth-utils/commit/00c8287)) -- Removed reference to /api in readme ([#77](https://github.com/atinux/nuxt-auth-utils/pull/77)) -- Fix typos ([149448a](https://github.com/atinux/nuxt-auth-utils/commit/149448a)) -- Include SSR instructions in the README, fixes #97 ([#99](https://github.com/atinux/nuxt-auth-utils/pull/99), [#97](https://github.com/atinux/nuxt-auth-utils/issues/97)) -- Update readme ([7a4dcfb](https://github.com/atinux/nuxt-auth-utils/commit/7a4dcfb)) -- Add X in readme ([b452d60](https://github.com/atinux/nuxt-auth-utils/commit/b452d60)) -- Add TS signature ([04a5d88](https://github.com/atinux/nuxt-auth-utils/commit/04a5d88)) -- Add note about dependencies ([67b5542](https://github.com/atinux/nuxt-auth-utils/commit/67b5542)) -- Fix event handler name in example ([a4cfa89](https://github.com/atinux/nuxt-auth-utils/commit/a4cfa89)) -- Update nitro version ([848cebe](https://github.com/atinux/nuxt-auth-utils/commit/848cebe)) -- Fix typo ([8d3af7e](https://github.com/atinux/nuxt-auth-utils/commit/8d3af7e)) -- Add note about cookie size ([a725436](https://github.com/atinux/nuxt-auth-utils/commit/a725436)) -- Add note to readme about session API route ([ddf38c1](https://github.com/atinux/nuxt-auth-utils/commit/ddf38c1)) -- Typo ([c16d014](https://github.com/atinux/nuxt-auth-utils/commit/c16d014)) -- Update links ([2ed5e17](https://github.com/atinux/nuxt-auth-utils/commit/2ed5e17)) -- Improvement ([3bd76b0](https://github.com/atinux/nuxt-auth-utils/commit/3bd76b0)) -- Set webauthn version to v10 ([ca151c7](https://github.com/atinux/nuxt-auth-utils/commit/ca151c7)) -- Fix typo ([#251](https://github.com/atinux/nuxt-auth-utils/pull/251)) +- `useWebAuthn` composable registration & fix `allowCredentials` / `excludeCredentials` option ([#266](https://github.com/atinux/nuxt-auth-utils/pull/266)) ### 🏡 Chore -- Init ([19caed2](https://github.com/atinux/nuxt-auth-utils/commit/19caed2)) -- Add runtime config ([9013484](https://github.com/atinux/nuxt-auth-utils/commit/9013484)) -- V0 ([18ea43a](https://github.com/atinux/nuxt-auth-utils/commit/18ea43a)) -- Init ([9b75953](https://github.com/atinux/nuxt-auth-utils/commit/9b75953)) -- **release:** V0.0.1 ([fd5a2c1](https://github.com/atinux/nuxt-auth-utils/commit/fd5a2c1)) -- **release:** V0.0.2 ([f01b412](https://github.com/atinux/nuxt-auth-utils/commit/f01b412)) -- Remove `.nuxtrc` ([3f96e97](https://github.com/atinux/nuxt-auth-utils/commit/3f96e97)) -- Add type testing script ([e9ffa5e](https://github.com/atinux/nuxt-auth-utils/commit/e9ffa5e)) -- Move playground into workspace ([bd8108c](https://github.com/atinux/nuxt-auth-utils/commit/bd8108c)) -- Add playground type test ([74f452c](https://github.com/atinux/nuxt-auth-utils/commit/74f452c)) -- **release:** V0.0.3 ([9d1342c](https://github.com/atinux/nuxt-auth-utils/commit/9d1342c)) -- Add comment ([1923dcc](https://github.com/atinux/nuxt-auth-utils/commit/1923dcc)) -- **release:** V0.0.4 ([2bc6f9a](https://github.com/atinux/nuxt-auth-utils/commit/2bc6f9a)) -- **release:** V0.0.5 ([86226ad](https://github.com/atinux/nuxt-auth-utils/commit/86226ad)) -- Update deps ([05f4a9c](https://github.com/atinux/nuxt-auth-utils/commit/05f4a9c)) -- **release:** V0.0.6 ([4eb4f25](https://github.com/atinux/nuxt-auth-utils/commit/4eb4f25)) -- Add SameSite=lax ([1b296e2](https://github.com/atinux/nuxt-auth-utils/commit/1b296e2)) -- **release:** V0.0.7 ([5316d10](https://github.com/atinux/nuxt-auth-utils/commit/5316d10)) -- **playground:** Better with right title ([97a3ad3](https://github.com/atinux/nuxt-auth-utils/commit/97a3ad3)) -- **release:** V0.0.8 ([79f7ce7](https://github.com/atinux/nuxt-auth-utils/commit/79f7ce7)) -- **release:** V0.0.9 ([36cadda](https://github.com/atinux/nuxt-auth-utils/commit/36cadda)) -- Update deps ([bb3a510](https://github.com/atinux/nuxt-auth-utils/commit/bb3a510)) -- **release:** V0.0.10 ([c60fde7](https://github.com/atinux/nuxt-auth-utils/commit/c60fde7)) -- **release:** V0.0.11 ([b52ed08](https://github.com/atinux/nuxt-auth-utils/commit/b52ed08)) -- **release:** V0.0.12 ([a74e7f4](https://github.com/atinux/nuxt-auth-utils/commit/a74e7f4)) -- Rename session from verify to fetch ([10694e9](https://github.com/atinux/nuxt-auth-utils/commit/10694e9)) -- **release:** V0.0.13 ([e344c98](https://github.com/atinux/nuxt-auth-utils/commit/e344c98)) -- Test bundler module resolution ([#32](https://github.com/atinux/nuxt-auth-utils/pull/32)) -- Update deps ([9d6b258](https://github.com/atinux/nuxt-auth-utils/commit/9d6b258)) -- **release:** V0.0.14 ([1d0d0cc](https://github.com/atinux/nuxt-auth-utils/commit/1d0d0cc)) -- Up deps ([a7bd06b](https://github.com/atinux/nuxt-auth-utils/commit/a7bd06b)) -- **release:** V0.0.15 ([ec128cc](https://github.com/atinux/nuxt-auth-utils/commit/ec128cc)) -- Better server types ([#51](https://github.com/atinux/nuxt-auth-utils/pull/51)) -- Update deps ([b930118](https://github.com/atinux/nuxt-auth-utils/commit/b930118)) -- **release:** V0.0.16 ([58268d7](https://github.com/atinux/nuxt-auth-utils/commit/58268d7)) -- Update deps ([fdaa88c](https://github.com/atinux/nuxt-auth-utils/commit/fdaa88c)) -- Add api test route ([9aed7fe](https://github.com/atinux/nuxt-auth-utils/commit/9aed7fe)) -- Update deps in playground ([95c657f](https://github.com/atinux/nuxt-auth-utils/commit/95c657f)) -- **release:** V0.0.17 ([a814b58](https://github.com/atinux/nuxt-auth-utils/commit/a814b58)) -- **release:** V0.0.18 ([ea09e00](https://github.com/atinux/nuxt-auth-utils/commit/ea09e00)) -- Fix types ([34dfb7b](https://github.com/atinux/nuxt-auth-utils/commit/34dfb7b)) -- **release:** V0.0.19 ([a74c869](https://github.com/atinux/nuxt-auth-utils/commit/a74c869)) -- **release:** V0.0.20 ([39ffaae](https://github.com/atinux/nuxt-auth-utils/commit/39ffaae)) -- Update deps ([c8b8eb9](https://github.com/atinux/nuxt-auth-utils/commit/c8b8eb9)) -- **release:** V0.0.21 ([f4b3512](https://github.com/atinux/nuxt-auth-utils/commit/f4b3512)) -- **release:** V0.0.22 ([465e73e](https://github.com/atinux/nuxt-auth-utils/commit/465e73e)) -- Migrate to eslint v9 ([964b67b](https://github.com/atinux/nuxt-auth-utils/commit/964b67b)) -- Update deps ([a77a334](https://github.com/atinux/nuxt-auth-utils/commit/a77a334)) -- Add vscode settings for eslint ([4f1afc9](https://github.com/atinux/nuxt-auth-utils/commit/4f1afc9)) -- **release:** V0.0.23 ([b74d47b](https://github.com/atinux/nuxt-auth-utils/commit/b74d47b)) -- Update deps ([3e42be4](https://github.com/atinux/nuxt-auth-utils/commit/3e42be4)) -- **release:** V0.0.24 ([9063aeb](https://github.com/atinux/nuxt-auth-utils/commit/9063aeb)) -- Update to latest `@nuxt/module-builder` ([c9e4ff7](https://github.com/atinux/nuxt-auth-utils/commit/c9e4ff7)) -- **release:** V0.0.25 ([7fe6f84](https://github.com/atinux/nuxt-auth-utils/commit/7fe6f84)) -- Add packageManager ([c323edc](https://github.com/atinux/nuxt-auth-utils/commit/c323edc)) -- Add link to nuxt-authorization ([1b06908](https://github.com/atinux/nuxt-auth-utils/commit/1b06908)) -- Update deps ([2fb5cff](https://github.com/atinux/nuxt-auth-utils/commit/2fb5cff)) -- **release:** V0.1.0 ([6ea5685](https://github.com/atinux/nuxt-auth-utils/commit/6ea5685)) -- **release:** V0.2.0 ([2d33c54](https://github.com/atinux/nuxt-auth-utils/commit/2d33c54)) -- **release:** V0.2.1 ([4ba3289](https://github.com/atinux/nuxt-auth-utils/commit/4ba3289)) -- **release:** V0.3.0 ([fd9df35](https://github.com/atinux/nuxt-auth-utils/commit/fd9df35)) -- Update deps ([0132ea0](https://github.com/atinux/nuxt-auth-utils/commit/0132ea0)) -- **release:** V0.3.1 ([633c004](https://github.com/atinux/nuxt-auth-utils/commit/633c004)) -- **release:** V0.3.2 ([b4d5ce2](https://github.com/atinux/nuxt-auth-utils/commit/b4d5ce2)) -- Typo in comment ([b96a017](https://github.com/atinux/nuxt-auth-utils/commit/b96a017)) -- Update deps ([d8ab3f4](https://github.com/atinux/nuxt-auth-utils/commit/d8ab3f4)) -- Lint fix ([a8928a3](https://github.com/atinux/nuxt-auth-utils/commit/a8928a3)) -- **release:** V0.3.3 ([0345169](https://github.com/atinux/nuxt-auth-utils/commit/0345169)) -- **release:** V0.3.4 ([07cf55e](https://github.com/atinux/nuxt-auth-utils/commit/07cf55e)) -- Update .vscode ([6285ca2](https://github.com/atinux/nuxt-auth-utils/commit/6285ca2)) -- Update @nuxt/module-builder ([ceaa47b](https://github.com/atinux/nuxt-auth-utils/commit/ceaa47b)) -- Upadte X handler ([7e81c27](https://github.com/atinux/nuxt-auth-utils/commit/7e81c27)) -- Fix X ([7269c61](https://github.com/atinux/nuxt-auth-utils/commit/7269c61)) -- Lint fix ([cf75ab1](https://github.com/atinux/nuxt-auth-utils/commit/cf75ab1)) -- Update deps ([35eff05](https://github.com/atinux/nuxt-auth-utils/commit/35eff05)) -- **release:** V0.3.5 ([de0e01c](https://github.com/atinux/nuxt-auth-utils/commit/de0e01c)) -- Update deps ([c4189b2](https://github.com/atinux/nuxt-auth-utils/commit/c4189b2)) -- **release:** V0.3.6 ([6b5f5eb](https://github.com/atinux/nuxt-auth-utils/commit/6b5f5eb)) -- Update deps ([50aba8d](https://github.com/atinux/nuxt-auth-utils/commit/50aba8d)) -- **release:** V0.3.7 ([52d7e60](https://github.com/atinux/nuxt-auth-utils/commit/52d7e60)) -- Add emailRequired for testing Gitlab ([408b580](https://github.com/atinux/nuxt-auth-utils/commit/408b580)) -- Up ([bd37690](https://github.com/atinux/nuxt-auth-utils/commit/bd37690)) -- **release:** V0.3.8 ([23ccd4c](https://github.com/atinux/nuxt-auth-utils/commit/23ccd4c)) -- Update deps ([4a0e1e9](https://github.com/atinux/nuxt-auth-utils/commit/4a0e1e9)) -- **release:** V0.3.9 ([3112481](https://github.com/atinux/nuxt-auth-utils/commit/3112481)) -- Add state params in Google oauth ([f75e680](https://github.com/atinux/nuxt-auth-utils/commit/f75e680)) -- Update deps ([5ae49ae](https://github.com/atinux/nuxt-auth-utils/commit/5ae49ae)) -- **release:** V0.4.0 ([7da0c78](https://github.com/atinux/nuxt-auth-utils/commit/7da0c78)) -- Remove unnecessary challenge cookie ([be2626b](https://github.com/atinux/nuxt-auth-utils/commit/be2626b)) -- **release:** V0.4.1 ([9e7bd5a](https://github.com/atinux/nuxt-auth-utils/commit/9e7bd5a)) -- **release:** V0.4.2 ([e039625](https://github.com/atinux/nuxt-auth-utils/commit/e039625)) -- Update deps ([2719753](https://github.com/atinux/nuxt-auth-utils/commit/2719753)) -- **release:** V0.4.3 ([c95cb73](https://github.com/atinux/nuxt-auth-utils/commit/c95cb73)) -- **release:** V0.4.4 ([fce4e33](https://github.com/atinux/nuxt-auth-utils/commit/fce4e33)) -- **playground:** Remove duplicate code ([edc14ce](https://github.com/atinux/nuxt-auth-utils/commit/edc14ce)) -- ⚠️ Update simplewebauthn to v11 ([92e3e2e](https://github.com/atinux/nuxt-auth-utils/commit/92e3e2e)) -- Update deps ([5a4ecb3](https://github.com/atinux/nuxt-auth-utils/commit/5a4ecb3)) - **release:** V0.5.0 ([404acc6](https://github.com/atinux/nuxt-auth-utils/commit/404acc6)) - -### 🎨 Styles - -- Add lint script ([af884ff](https://github.com/atinux/nuxt-auth-utils/commit/af884ff)) - -### 🤖 CI - -- Run lint + test actions in ci ([f50c1b5](https://github.com/atinux/nuxt-auth-utils/commit/f50c1b5)) - -#### ⚠️ Breaking Changes - -- ⚠️ Support hybrid rendering ([#104](https://github.com/atinux/nuxt-auth-utils/pull/104)) -- ⚠️ Call `fetch` hook if session is not empty instead of user defined ([#188](https://github.com/atinux/nuxt-auth-utils/pull/188)) -- ⚠️ Rename `oauthEventHandler` to`defineOAuthEventHandler` ([#189](https://github.com/atinux/nuxt-auth-utils/pull/189)) -- ⚠️ One export per provider for tree-shaking ([4f98b53](https://github.com/atinux/nuxt-auth-utils/commit/4f98b53)) -- ⚠️ Update simplewebauthn to v11 ([92e3e2e](https://github.com/atinux/nuxt-auth-utils/commit/92e3e2e)) +- Update deps ([8947e40](https://github.com/atinux/nuxt-auth-utils/commit/8947e40)) ### ❤️ Contributors -- Rhoseno - Sébastien Chopin ([@atinux](http://github.com/atinux)) - Gerben Mulder -- Nekohaxx ([@nekohaxx](http://github.com/nekohaxx)) -- FreeCoderX ([@yxw007](http://github.com/yxw007)) -- Jules Libert -- Mathieu NICOLAS ([@mathieunicolas](http://github.com/mathieunicolas)) -- Ahmed Rangel ([@ahmedrangel](http://github.com/ahmedrangel)) -- Julian Renard -- Estéban -- Yizack Rangel ([@Yizack](http://github.com/Yizack)) -- Israel Ortuño -- Daniel Roe ([@danielroe](http://github.com/danielroe)) -- Alex Blumgart -- Sandro Circi ([@sandros94](http://github.com/sandros94)) -- Rudo Kemper -- Ivailo Panamski -- Zack Spear ([@zackspear](http://github.com/zackspear)) -- Alexander ([@hywax](http://github.com/hywax)) -- Kevin Olson ([@acidjazz](http://github.com/acidjazz)) -- TcarterBAMF ([@tcarterBAMF](http://github.com/tcarterBAMF)) -- Alex -- Fayaz Ahmed ([@fayazara](http://github.com/fayazara)) -- Jan Fröhlich ([@zanfee](http://github.com/zanfee)) -- Stonegate ([@stonega](http://github.com/stonega)) -- Yue JIN ([@kingyue737](http://github.com/kingyue737)) -- Paulo Queiroz ([@raggesilver](http://github.com/raggesilver)) -- Timi Omoyeni ([@Timibadass](http://github.com/Timibadass)) -- Ozan Cakir ([@ozancakir](http://github.com/ozancakir)) -- Adam Hudák ([@adam-hudak](http://github.com/adam-hudak)) -- Deth -- Conrawl Rogers -- Max ([@onmax](http://github.com/onmax)) -- André Agro Ferreira ([@andreagroferreira](http://github.com/andreagroferreira)) -- Maximilian Götz-Mikus ([@maximilianmikus](http://github.com/maximilianmikus)) -- Harlan Wilton ([@harlan-zw](http://github.com/harlan-zw)) -- Dvir Hazout -- Silvio Eckl -- José Manuel Madriaza Caravia ([@LeoMo-27](http://github.com/LeoMo-27)) -- H+ ([@justserdar](http://github.com/justserdar)) -- Jakub Frelik -- Uģis ([@BerzinsU](http://github.com/BerzinsU)) -- Sigve Hansen ([@sifferhans](http://github.com/sifferhans)) -- Arash ([@arashsheyda](http://github.com/arashsheyda)) -- Samuel LEFEVRE ([@samulefevre](http://github.com/samulefevre)) -- Antoine Lassier -- Akshara Hegde ([@aksharahegde](http://github.com/aksharahegde)) ## v0.5.0 diff --git a/package.json b/package.json index e90b2431..7f81a363 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "nuxt-auth-utils", - "version": "0.6.0", + "version": "0.5.1", "description": "Add Authentication to Nuxt applications with secured & sealed cookies sessions.", - "repository": "atinux/nuxt-auth-utils", + "repository": { + "type": "git", + "url": "git+https://github.com/atinux/nuxt-auth-utils.git" + }, "license": "MIT", "type": "module", - "packageManager": "pnpm@9.12.2", + "packageManager": "pnpm@9.12.3", "exports": { ".": { "types": "./dist/types.d.ts", @@ -55,9 +58,9 @@ } }, "devDependencies": { - "@iconify-json/simple-icons": "^1.2.9", + "@iconify-json/simple-icons": "^1.2.10", "@nuxt/devtools": "latest", - "@nuxt/eslint-config": "^0.6.0", + "@nuxt/eslint-config": "^0.6.1", "@nuxt/module-builder": "^0.8.4", "@nuxt/schema": "^3.13.2", "@nuxt/test-utils": "^3.14.4", @@ -68,7 +71,7 @@ "eslint": "^9.13.0", "nuxt": "^3.13.2", "typescript": "^5.6.3", - "vitest": "^2.1.3", - "vue-tsc": "^2.1.6" + "vitest": "^2.1.4", + "vue-tsc": "^2.1.10" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa6ab573..99392b1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,23 +43,23 @@ importers: version: 0.1.3 devDependencies: '@iconify-json/simple-icons': - specifier: ^1.2.9 - version: 1.2.9 + specifier: ^1.2.10 + version: 1.2.10 '@nuxt/devtools': specifier: latest version: 1.4.2(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) '@nuxt/eslint-config': - specifier: ^0.6.0 - version: 0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + specifier: ^0.6.1 + version: 0.6.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) '@nuxt/module-builder': specifier: ^0.8.4 - version: 0.8.4(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(nuxi@3.13.2)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)) + version: 0.8.4(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(nuxi@3.13.2)(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3)) '@nuxt/schema': specifier: ^3.13.2 version: 3.13.2(rollup@3.29.4) '@nuxt/test-utils': specifier: ^3.14.4 - version: 3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) + version: 3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.4(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) '@nuxt/ui': specifier: ^2.18.7 version: 2.18.7(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) @@ -77,16 +77,16 @@ importers: version: 9.13.0(jiti@2.3.3) nuxt: specifier: ^3.13.2 - version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) + version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)) typescript: specifier: ^5.6.3 version: 5.6.3 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + specifier: ^2.1.4 + version: 2.1.4(@types/node@22.5.5)(terser@5.33.0) vue-tsc: - specifier: ^2.1.6 - version: 2.1.6(typescript@5.6.3) + specifier: ^2.1.10 + version: 2.1.10(typescript@5.6.3) playground: dependencies: @@ -98,7 +98,7 @@ importers: version: 1.2.1 nuxt: specifier: ^3.13.2 - version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(better-sqlite3@11.3.0)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) + version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(better-sqlite3@11.3.0)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)) nuxt-auth-utils: specifier: latest version: 0.3.8(magicast@0.3.5)(rollup@4.22.0) @@ -890,10 +890,6 @@ packages: resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.12.0': - resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.13.0': resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -950,8 +946,8 @@ packages: '@iconify-json/iconoir@1.2.1': resolution: {integrity: sha512-x55gpORwMGkmmT9UO11rzfMOp40k0ggQnPiOoh9axbyuHrkFMN7pdoCbaXkzqAdShcoI1dLzARbdqXi2sAPJXQ==} - '@iconify-json/simple-icons@1.2.9': - resolution: {integrity: sha512-0hxlf0uCKAUT+rLjh4iH16XMfRqptOpZURBVk2PKAFDGbe1+8hPPstKFkBAPvtfkCK0bO+E9QE/Q5ozuCYz28A==} + '@iconify-json/simple-icons@1.2.10': + resolution: {integrity: sha512-9OK1dsSjXlH36lhu5n+BlSoXuqFjHUErGLtNdzHpq0vHq4YFBuGYWtZ+vZTHLreRQ8ijPRv/6EsgkV+nf6AReQ==} '@iconify-json/vscode-icons@1.2.2': resolution: {integrity: sha512-bTpT0HJDRqGkxQv8oiETNHLEnBZpnA1QaRD35CQyO7M7qgWVLx2xwn/lK6e4waojmlPC3ckMBx3WFIUUn0/Jdg==} @@ -1081,13 +1077,13 @@ packages: peerDependencies: vite: '*' - '@nuxt/eslint-config@0.6.0': - resolution: {integrity: sha512-/WZ9tzukVj6+epdJki27IzAOqj1Kf5NBCwJfI7BUoEwhyyL//M9+TtS2jfBxVcbcEshxIV3GD3BCaq6l4tHGtQ==} + '@nuxt/eslint-config@0.6.1': + resolution: {integrity: sha512-AgWCX4iZtUgEiuTi+Azt5/zl8gAwW421BzhkcHmVzCVJgyKvZHNrrWUmlwwbE7iD9ZydKGSPeszSxBehf6F5jA==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@nuxt/eslint-plugin@0.6.0': - resolution: {integrity: sha512-DLSX6RCxUg5UDVmOjopd7pUb/eDnmPmqKFlvy4ETytcr4sXS3JXs+Fwn2sUbcASo9sn1ndPMz/c2pTA7YnYqJA==} + '@nuxt/eslint-plugin@0.6.1': + resolution: {integrity: sha512-fg8NWhiksBEgTQEQrTNbmgmVQFKDXZh+QaivTyxiBLSct8WXBp6d6/3586SIzKzBQFtP62xThK3yzy0AjMHs2Q==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1529,8 +1525,8 @@ packages: '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - '@typescript-eslint/eslint-plugin@8.10.0': - resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} + '@typescript-eslint/eslint-plugin@8.12.2': + resolution: {integrity: sha512-gQxbxM8mcxBwaEmWdtLCIGLfixBMHhQjBqR8sVWNTPpcj45WlYL2IObS/DNMLH1DBP0n8qz+aiiLTGfopPEebw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -1540,8 +1536,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.10.0': - resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} + '@typescript-eslint/parser@8.12.2': + resolution: {integrity: sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1554,12 +1550,12 @@ packages: resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.6.0': - resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} + '@typescript-eslint/scope-manager@8.12.2': + resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.10.0': - resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} + '@typescript-eslint/type-utils@8.12.2': + resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1571,8 +1567,8 @@ packages: resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.6.0': - resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} + '@typescript-eslint/types@8.12.2': + resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.10.0': @@ -1584,8 +1580,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.6.0': - resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} + '@typescript-eslint/typescript-estree@8.12.2': + resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -1599,8 +1595,8 @@ packages: peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/utils@8.6.0': - resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} + '@typescript-eslint/utils@8.12.2': + resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1609,8 +1605,8 @@ packages: resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.6.0': - resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} + '@typescript-eslint/visitor-keys@8.12.2': + resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@unhead/dom@1.11.6': @@ -1649,14 +1645,13 @@ packages: vite: ^5.0.0 vue: ^3.2.25 - '@vitest/expect@2.1.3': - resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + '@vitest/expect@2.1.4': + resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} - '@vitest/mocker@2.1.3': - resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + '@vitest/mocker@2.1.4': + resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} peerDependencies: - '@vitest/spy': 2.1.3 - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: @@ -1664,29 +1659,29 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.3': - resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + '@vitest/pretty-format@2.1.4': + resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} - '@vitest/runner@2.1.3': - resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + '@vitest/runner@2.1.4': + resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} - '@vitest/snapshot@2.1.3': - resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + '@vitest/snapshot@2.1.4': + resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} - '@vitest/spy@2.1.3': - resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + '@vitest/spy@2.1.4': + resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} - '@vitest/utils@2.1.3': - resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + '@vitest/utils@2.1.4': + resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} - '@volar/language-core@2.4.5': - resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} + '@volar/language-core@2.4.8': + resolution: {integrity: sha512-K/GxMOXGq997bO00cdFhTNuR85xPxj0BEEAy+BaqqayTmy9Tmhfgmq2wpJcVspRhcwfgPoE2/mEJa26emUhG/g==} - '@volar/source-map@2.4.5': - resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} + '@volar/source-map@2.4.8': + resolution: {integrity: sha512-jeWJBkC/WivdelMwxKkpFL811uH/jJ1kVxa+c7OvG48DXc3VrP7pplSWPP2W1dLMqBxD+awRlg55FQQfiup4cA==} - '@volar/typescript@2.4.5': - resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} + '@volar/typescript@2.4.8': + resolution: {integrity: sha512-6xkIYJ5xxghVBhVywMoPMidDDAFT1OoQeXwa27HSgJ6AiIKRe61RXLoik+14Z7r0JvnblXVsjsRLmCr42SGzqg==} '@vue-macros/common@1.14.0': resolution: {integrity: sha512-xwQhDoEXRNXobNQmdqOD20yUGdVLVLZe4zhDlT9q/E+z+mvT3wukaAoJG80XRnv/BcgOOCVpxqpkQZ3sNTgjWA==} @@ -1742,8 +1737,8 @@ packages: '@vue/devtools-shared@7.4.5': resolution: {integrity: sha512-2XgUOkL/7QDmyYI9J7cm+rz/qBhcGv+W5+i1fhwdQ0HQ1RowhdK66F0QBuJSz/5k12opJY8eN6m03/XZMs7imQ==} - '@vue/language-core@2.1.6': - resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + '@vue/language-core@2.1.10': + resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1853,6 +1848,9 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + alien-signals@0.2.0: + resolution: {integrity: sha512-StlonZhBBrsPPwrDjiPAiVTf/rolxffLxVPT60Qv/t88BZ81BvUVzHgGqEFvJ1ii8HXtm1+zU2Icr59tfWEcag==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -2063,8 +2061,8 @@ packages: resolution: {integrity: sha512-rRYnn5Elur8RuNHKoJ2b0tgn+pjYxL7BzWom+JZ7NKKn1lt/yGV/tUNwOovxYa9l9VL5hnXQdMc+mENbhJzosQ==} engines: {node: '>=18'} - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} chalk@2.4.2: @@ -2188,9 +2186,6 @@ packages: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2603,8 +2598,8 @@ packages: peerDependencies: eslint: '>=8.56.0' - eslint-plugin-vue@9.29.1: - resolution: {integrity: sha512-MH/MbVae4HV/tM8gKAVWMPJbYgW04CK7SuzYRrlNERpxbO0P3+Zdsa2oAcFBW6xNu7W6lIkGOsFAMCRTYmrlWQ==} + eslint-plugin-vue@9.30.0: + resolution: {integrity: sha512-CyqlRgShvljFkOeYK8wN5frh/OGTvkj1S7wlr2Q2pUvwq+X5VYiLd6ZjujpgSgLnys2W8qrBLkXQ41SUYaoPIQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2689,6 +2684,10 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + externality@1.0.2: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} @@ -3307,6 +3306,9 @@ packages: loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -4510,9 +4512,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.0: - resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinyexec@0.3.1: resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} @@ -4770,13 +4769,13 @@ packages: peerDependencies: vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 - vite-node@2.1.1: - resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@2.1.3: - resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} + vite-node@2.1.4: + resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -4863,15 +4862,15 @@ packages: vitest-environment-nuxt@1.0.1: resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==} - vitest@2.1.3: - resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + vitest@2.1.4: + resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.3 - '@vitest/ui': 2.1.3 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -4940,8 +4939,8 @@ packages: peerDependencies: vue: ^3.2.0 - vue-tsc@2.1.6: - resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} + vue-tsc@2.1.10: + resolution: {integrity: sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -5075,7 +5074,7 @@ snapshots: '@antfu/install-pkg@0.4.1': dependencies: package-manager-detector: 0.2.0 - tinyexec: 0.3.0 + tinyexec: 0.3.1 '@antfu/utils@0.7.10': {} @@ -5614,8 +5613,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.12.0': {} - '@eslint/js@9.13.0': {} '@eslint/object-schema@2.1.4': {} @@ -5660,7 +5657,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.9': + '@iconify-json/simple-icons@1.2.10': dependencies: '@iconify/types': 2.0.0 @@ -5842,7 +5839,7 @@ snapshots: global-directory: 4.0.1 magicast: 0.3.5 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 prompts: 2.4.2 rc9: 2.1.2 semver: 7.6.3 @@ -5855,7 +5852,7 @@ snapshots: global-directory: 4.0.1 magicast: 0.3.5 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 prompts: 2.4.2 rc9: 2.1.2 semver: 7.6.3 @@ -5935,7 +5932,7 @@ snapshots: ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 rc9: 2.1.2 scule: 1.3.0 semver: 7.6.3 @@ -5983,7 +5980,7 @@ snapshots: ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 rc9: 2.1.2 scule: 1.3.0 semver: 7.6.3 @@ -6004,13 +6001,13 @@ snapshots: - vue - webpack-sources - '@nuxt/eslint-config@0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@nuxt/eslint-config@0.6.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@eslint/js': 9.12.0 - '@nuxt/eslint-plugin': 0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@eslint/js': 9.13.0 + '@nuxt/eslint-plugin': 0.6.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) '@stylistic/eslint-plugin': 2.9.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) eslint: 9.13.0(jiti@2.3.3) eslint-config-flat-gitignore: 0.3.0(eslint@9.13.0(jiti@2.3.3)) eslint-flat-config-utils: 0.4.0 @@ -6018,7 +6015,7 @@ snapshots: eslint-plugin-jsdoc: 50.4.3(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-regexp: 2.6.0(eslint@9.13.0(jiti@2.3.3)) eslint-plugin-unicorn: 56.0.0(eslint@9.13.0(jiti@2.3.3)) - eslint-plugin-vue: 9.29.1(eslint@9.13.0(jiti@2.3.3)) + eslint-plugin-vue: 9.30.0(eslint@9.13.0(jiti@2.3.3)) globals: 15.11.0 local-pkg: 0.5.0 pathe: 1.1.2 @@ -6027,10 +6024,10 @@ snapshots: - supports-color - typescript - '@nuxt/eslint-plugin@0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@nuxt/eslint-plugin@0.6.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) eslint: 9.13.0(jiti@2.3.3) transitivePeerDependencies: - supports-color @@ -6115,7 +6112,7 @@ snapshots: - supports-color - webpack-sources - '@nuxt/module-builder@0.8.4(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(nuxi@3.13.2)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))': + '@nuxt/module-builder@0.8.4(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(nuxi@3.13.2)(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3))': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) citty: 0.1.6 @@ -6127,7 +6124,7 @@ snapshots: pathe: 1.1.2 pkg-types: 1.2.0 tsconfck: 3.1.3(typescript@5.6.3) - unbuild: 2.0.0(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)) + unbuild: 2.0.0(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3)) transitivePeerDependencies: - sass - supports-color @@ -6225,7 +6222,7 @@ snapshots: - supports-color - webpack-sources - '@nuxt/test-utils@3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/test-utils@3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.4(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3))': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) '@nuxt/schema': 3.13.2(rollup@3.29.4) @@ -6252,11 +6249,11 @@ snapshots: unenv: 1.10.0 unplugin: 1.14.1 vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vitest-environment-nuxt: 1.0.1(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) + vitest-environment-nuxt: 1.0.1(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.4(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) vue: 3.5.6(typescript@5.6.3) vue-router: 4.4.5(vue@3.5.6(typescript@5.6.3)) optionalDependencies: - vitest: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + vitest: 2.1.4(@types/node@22.5.5)(terser@5.33.0) transitivePeerDependencies: - magicast - rollup @@ -6344,7 +6341,7 @@ snapshots: - vue - webpack-sources - '@nuxt/vite-builder@3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/vite-builder@3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3))': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) '@rollup/plugin-replace': 5.0.7(rollup@3.29.4) @@ -6362,12 +6359,12 @@ snapshots: get-port-please: 3.1.2 h3: 1.12.0 knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 postcss: 8.4.47 rollup-plugin-visualizer: 5.12.0(rollup@3.29.4) std-env: 3.7.0 @@ -6376,8 +6373,8 @@ snapshots: unenv: 1.10.0 unplugin: 1.14.1 vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node: 2.1.1(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-checker: 0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) + vite-node: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + vite-plugin-checker: 0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)) vue: 3.5.6(typescript@5.6.3) vue-bundle-renderer: 2.1.0 transitivePeerDependencies: @@ -6404,7 +6401,7 @@ snapshots: - vue-tsc - webpack-sources - '@nuxt/vite-builder@3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/vite-builder@3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3))': dependencies: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) '@rollup/plugin-replace': 5.0.7(rollup@4.22.0) @@ -6422,12 +6419,12 @@ snapshots: get-port-please: 3.1.2 h3: 1.12.0 knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 postcss: 8.4.47 rollup-plugin-visualizer: 5.12.0(rollup@4.22.0) std-env: 3.7.0 @@ -6436,8 +6433,8 @@ snapshots: unenv: 1.10.0 unplugin: 1.14.1 vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node: 2.1.1(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-checker: 0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) + vite-node: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + vite-plugin-checker: 0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)) vue: 3.5.6(typescript@5.6.3) vue-bundle-renderer: 2.1.0 transitivePeerDependencies: @@ -6469,7 +6466,7 @@ snapshots: '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) changelogen: 0.5.7(magicast@0.3.5) pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 semver: 7.6.3 transitivePeerDependencies: - magicast @@ -6658,7 +6655,7 @@ snapshots: dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.22.0) estree-walker: 2.0.2 - magic-string: 0.30.11 + magic-string: 0.30.12 optionalDependencies: rollup: 4.22.0 @@ -6875,14 +6872,14 @@ snapshots: '@types/web-bluetooth@0.0.20': {} - '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.12.2(@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.10.0 + '@typescript-eslint/parser': 8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/type-utils': 8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 eslint: 9.13.0(jiti@2.3.3) graphemer: 1.4.0 ignore: 5.3.2 @@ -6893,12 +6890,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/parser@8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.10.0 + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.7 eslint: 9.13.0(jiti@2.3.3) optionalDependencies: @@ -6911,15 +6908,15 @@ snapshots: '@typescript-eslint/types': 8.10.0 '@typescript-eslint/visitor-keys': 8.10.0 - '@typescript-eslint/scope-manager@8.6.0': + '@typescript-eslint/scope-manager@8.12.2': dependencies: - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/visitor-keys': 8.6.0 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 - '@typescript-eslint/type-utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: @@ -6930,7 +6927,7 @@ snapshots: '@typescript-eslint/types@8.10.0': {} - '@typescript-eslint/types@8.6.0': {} + '@typescript-eslint/types@8.12.2': {} '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': dependencies: @@ -6947,10 +6944,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/visitor-keys': 8.6.0 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.7 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -6973,12 +6970,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/utils@8.12.2(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - '@typescript-eslint/scope-manager': 8.6.0 - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) eslint: 9.13.0(jiti@2.3.3) transitivePeerDependencies: - supports-color @@ -6989,9 +6986,9 @@ snapshots: '@typescript-eslint/types': 8.10.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.6.0': + '@typescript-eslint/visitor-keys@8.12.2': dependencies: - '@typescript-eslint/types': 8.6.0 + '@typescript-eslint/types': 8.12.2 eslint-visitor-keys: 3.4.3 '@unhead/dom@1.11.6': @@ -7055,55 +7052,55 @@ snapshots: vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) vue: 3.5.6(typescript@5.6.3) - '@vitest/expect@2.1.3': + '@vitest/expect@2.1.4': dependencies: - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.1 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': + '@vitest/mocker@2.1.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 2.1.4 estree-walker: 3.0.3 - magic-string: 0.30.11 + magic-string: 0.30.12 optionalDependencies: vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@2.1.4': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.3': + '@vitest/runner@2.1.4': dependencies: - '@vitest/utils': 2.1.3 + '@vitest/utils': 2.1.4 pathe: 1.1.2 - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 - magic-string: 0.30.11 + '@vitest/pretty-format': 2.1.4 + magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@2.1.3': + '@vitest/spy@2.1.4': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.3': + '@vitest/utils@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 - loupe: 3.1.1 + '@vitest/pretty-format': 2.1.4 + loupe: 3.1.2 tinyrainbow: 1.2.0 - '@volar/language-core@2.4.5': + '@volar/language-core@2.4.8': dependencies: - '@volar/source-map': 2.4.5 + '@volar/source-map': 2.4.8 - '@volar/source-map@2.4.5': {} + '@volar/source-map@2.4.8': {} - '@volar/typescript@2.4.5': + '@volar/typescript@2.4.8': dependencies: - '@volar/language-core': 2.4.5 + '@volar/language-core': 2.4.8 path-browserify: 1.0.1 vscode-uri: 3.0.8 @@ -7184,7 +7181,7 @@ snapshots: '@vue/compiler-ssr': 3.5.6 '@vue/shared': 3.5.6 estree-walker: 2.0.2 - magic-string: 0.30.11 + magic-string: 0.30.12 postcss: 8.4.47 source-map-js: 1.2.1 @@ -7226,13 +7223,13 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/language-core@2.1.6(typescript@5.6.3)': + '@vue/language-core@2.1.10(typescript@5.6.3)': dependencies: - '@volar/language-core': 2.4.5 + '@volar/language-core': 2.4.8 '@vue/compiler-dom': 3.5.6 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.6 - computeds: 0.0.1 + alien-signals: 0.2.0 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 @@ -7335,6 +7332,8 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + alien-signals@0.2.0: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -7513,11 +7512,11 @@ snapshots: dotenv: 16.4.5 giget: 1.2.3 jiti: 1.21.6 - mlly: 1.7.1 + mlly: 1.7.2 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -7530,11 +7529,11 @@ snapshots: dotenv: 16.4.5 giget: 1.2.3 jiti: 2.3.3 - mlly: 1.7.1 + mlly: 1.7.2 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -7561,7 +7560,7 @@ snapshots: case-anything@3.1.0: {} - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 @@ -7693,8 +7692,6 @@ snapshots: normalize-path: 3.0.0 readable-stream: 4.5.2 - computeds@0.0.1: {} - concat-map@0.0.1: {} confbox@0.1.7: {} @@ -8108,7 +8105,7 @@ snapshots: eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3): dependencies: - '@typescript-eslint/utils': 8.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) debug: 4.3.7 doctrine: 3.0.0 eslint: 9.13.0(jiti@2.3.3) @@ -8171,7 +8168,7 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vue@9.29.1(eslint@9.13.0(jiti@2.3.3)): + eslint-plugin-vue@9.30.0(eslint@9.13.0(jiti@2.3.3)): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) eslint: 9.13.0(jiti@2.3.3) @@ -8303,10 +8300,12 @@ snapshots: expand-template@2.0.3: {} + expect-type@1.1.0: {} + externality@1.0.2: dependencies: enhanced-resolve: 5.17.1 - mlly: 1.7.1 + mlly: 1.7.2 pathe: 1.1.2 ufo: 1.5.4 @@ -8633,7 +8632,7 @@ snapshots: impound@0.1.0(rollup@3.29.4): dependencies: '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - mlly: 1.7.1 + mlly: 1.7.2 pathe: 1.1.2 unenv: 1.10.0 unplugin: 1.14.1 @@ -8644,7 +8643,7 @@ snapshots: impound@0.1.0(rollup@4.22.0): dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - mlly: 1.7.1 + mlly: 1.7.2 pathe: 1.1.2 unenv: 1.10.0 unplugin: 1.14.1 @@ -8903,7 +8902,7 @@ snapshots: h3: 1.12.0 http-shutdown: 1.2.2 jiti: 1.21.6 - mlly: 1.7.1 + mlly: 1.7.2 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 @@ -8915,8 +8914,8 @@ snapshots: local-pkg@0.5.0: dependencies: - mlly: 1.7.1 - pkg-types: 1.2.0 + mlly: 1.7.2 + pkg-types: 1.2.1 locate-path@5.0.0: dependencies: @@ -8946,6 +8945,8 @@ snapshots: dependencies: get-func-name: 2.0.2 + loupe@3.1.2: {} + lru-cache@10.4.3: {} lru-cache@5.1.1: @@ -8966,7 +8967,7 @@ snapshots: magic-string-ast@0.6.2: dependencies: - magic-string: 0.30.11 + magic-string: 0.30.12 magic-string@0.30.11: dependencies: @@ -9060,7 +9061,7 @@ snapshots: mkdirp@1.0.4: {} - mkdist@1.5.9(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)): + mkdist@1.5.9(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3)): dependencies: autoprefixer: 10.4.20(postcss@8.4.47) citty: 0.1.6 @@ -9077,13 +9078,13 @@ snapshots: semver: 7.6.3 optionalDependencies: typescript: 5.6.3 - vue-tsc: 2.1.6(typescript@5.6.3) + vue-tsc: 2.1.10(typescript@5.6.3) mlly@1.7.1: dependencies: acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 ufo: 1.5.4 mlly@1.7.2: @@ -9162,9 +9163,9 @@ snapshots: klona: 2.0.6 knitwork: 1.1.0 listhen: 1.7.2 - magic-string: 0.30.11 + magic-string: 0.30.12 mime: 4.0.4 - mlly: 1.7.1 + mlly: 1.7.2 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.4.1 @@ -9172,7 +9173,7 @@ snapshots: openapi-typescript: 6.7.6 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 pretty-bytes: 6.1.1 radix3: 1.1.2 rollup: 4.22.0 @@ -9283,14 +9284,14 @@ snapshots: - supports-color - webpack-sources - nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(better-sqlite3@11.3.0)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)): + nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(better-sqlite3@11.3.0)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)): dependencies: '@nuxt/devalue': 2.0.2 '@nuxt/devtools': 1.5.1(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) '@nuxt/schema': 3.13.2(rollup@4.22.0) '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@4.22.0) - '@nuxt/vite-builder': 3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3)) + '@nuxt/vite-builder': 3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3)) '@unhead/dom': 1.11.6 '@unhead/shared': 1.11.6 '@unhead/ssr': 1.11.6 @@ -9396,14 +9397,14 @@ snapshots: - webpack-sources - xml2js - nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)): + nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)): dependencies: '@nuxt/devalue': 2.0.2 '@nuxt/devtools': 1.5.1(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) '@nuxt/schema': 3.13.2(rollup@3.29.4) '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/vite-builder': 3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3)) + '@nuxt/vite-builder': 3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3)) '@unhead/dom': 1.11.6 '@unhead/shared': 1.11.6 '@unhead/ssr': 1.11.6 @@ -9515,7 +9516,7 @@ snapshots: consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 ufo: 1.5.4 object-assign@4.1.1: {} @@ -9681,7 +9682,7 @@ snapshots: pkg-types@1.2.0: dependencies: confbox: 0.1.7 - mlly: 1.7.1 + mlly: 1.7.2 pathe: 1.1.2 pkg-types@1.2.1: @@ -10486,8 +10487,6 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.0: {} - tinyexec@0.3.1: {} tinyglobby@0.2.6: @@ -10565,7 +10564,7 @@ snapshots: ultrahtml@1.5.3: {} - unbuild@2.0.0(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)): + unbuild@2.0.0(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3)): dependencies: '@rollup/plugin-alias': 5.1.0(rollup@3.29.4) '@rollup/plugin-commonjs': 25.0.8(rollup@3.29.4) @@ -10582,7 +10581,7 @@ snapshots: hookable: 5.5.3 jiti: 1.21.6 magic-string: 0.30.11 - mkdist: 1.5.9(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)) + mkdist: 1.5.9(typescript@5.6.3)(vue-tsc@2.1.10(typescript@5.6.3)) mlly: 1.7.1 pathe: 1.1.2 pkg-types: 1.2.0 @@ -10604,7 +10603,7 @@ snapshots: dependencies: acorn: 8.12.1 estree-walker: 3.0.3 - magic-string: 0.30.11 + magic-string: 0.30.12 unplugin: 1.14.1 transitivePeerDependencies: - webpack-sources @@ -10640,10 +10639,10 @@ snapshots: estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 scule: 1.3.0 strip-literal: 2.1.0 unplugin: 1.14.1 @@ -10659,10 +10658,10 @@ snapshots: estree-walker: 3.0.3 fast-glob: 3.3.2 local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 scule: 1.3.0 strip-literal: 2.1.0 unplugin: 1.14.1 @@ -10682,8 +10681,8 @@ snapshots: fast-glob: 3.3.2 json5: 2.2.3 local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 pathe: 1.1.2 scule: 1.3.0 unplugin: 1.14.1 @@ -10705,8 +10704,8 @@ snapshots: fast-glob: 3.3.2 json5: 2.2.3 local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 pathe: 1.1.2 scule: 1.3.0 unplugin: 1.14.1 @@ -10761,10 +10760,10 @@ snapshots: unwasm@0.3.9: dependencies: knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.12 + mlly: 1.7.2 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 unplugin: 1.14.1 transitivePeerDependencies: - webpack-sources @@ -10796,7 +10795,7 @@ snapshots: dependencies: vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node@2.1.1(@types/node@22.5.5)(terser@5.33.0): + vite-node@2.1.3(@types/node@22.5.5)(terser@5.33.0): dependencies: cac: 6.7.14 debug: 4.3.7 @@ -10813,7 +10812,7 @@ snapshots: - supports-color - terser - vite-node@2.1.3(@types/node@22.5.5)(terser@5.33.0): + vite-node@2.1.4(@types/node@22.5.5)(terser@5.33.0): dependencies: cac: 6.7.14 debug: 4.3.7 @@ -10830,7 +10829,7 @@ snapshots: - supports-color - terser - vite-plugin-checker@0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)): + vite-plugin-checker@0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.10(typescript@5.6.3)): dependencies: '@babel/code-frame': 7.24.7 ansi-escapes: 4.3.2 @@ -10851,7 +10850,7 @@ snapshots: eslint: 9.13.0(jiti@2.3.3) optionator: 0.9.4 typescript: 5.6.3 - vue-tsc: 2.1.6(typescript@5.6.3) + vue-tsc: 2.1.10(typescript@5.6.3) vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)): dependencies: @@ -10899,7 +10898,7 @@ snapshots: '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2) '@vue/compiler-dom': 3.5.6 kolorist: 1.8.0 - magic-string: 0.30.11 + magic-string: 0.30.12 vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) transitivePeerDependencies: - supports-color @@ -10914,9 +10913,9 @@ snapshots: fsevents: 2.3.3 terser: 5.33.0 - vitest-environment-nuxt@1.0.1(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)): + vitest-environment-nuxt@1.0.1(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.4(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)): dependencies: - '@nuxt/test-utils': 3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) + '@nuxt/test-utils': 3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.4(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' @@ -10938,26 +10937,27 @@ snapshots: - vue-router - webpack-sources - vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0): + vitest@2.1.4(@types/node@22.5.5)(terser@5.33.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.1 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 debug: 4.3.7 - magic-string: 0.30.11 + expect-type: 1.1.0 + magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 tinybench: 2.9.0 - tinyexec: 0.3.0 + tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + vite-node: 2.1.4(@types/node@22.5.5)(terser@5.33.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.5.5 @@ -11023,10 +11023,10 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.6(typescript@5.6.3) - vue-tsc@2.1.6(typescript@5.6.3): + vue-tsc@2.1.10(typescript@5.6.3): dependencies: - '@volar/typescript': 2.4.5 - '@vue/language-core': 2.1.6(typescript@5.6.3) + '@volar/typescript': 2.4.8 + '@vue/language-core': 2.1.10(typescript@5.6.3) semver: 7.6.3 typescript: 5.6.3 diff --git a/src/module.ts b/src/module.ts index 2fd5535b..de7ff241 100644 --- a/src/module.ts +++ b/src/module.ts @@ -3,7 +3,7 @@ import { defineNuxtModule, addPlugin, createResolver, - addImportsDir, + addImports, addServerHandler, addServerPlugin, addServerImportsDir, @@ -60,9 +60,17 @@ export default defineNuxtModule({ './runtime/types/index', ) + const composables = [ + { name: 'useUserSession', from: resolver.resolve('./runtime/app/composables/session') }, + ] + + if (options.webAuthn) { + composables.push({ name: 'useWebAuthn', from: resolver.resolve('./runtime/app/composables/webauthn') }) + } + // App addComponentsDir({ path: resolver.resolve('./runtime/app/components') }) - addImportsDir(resolver.resolve('./runtime/app/composables')) + addImports(composables) addPlugin(resolver.resolve('./runtime/app/plugins/session.server')) addPlugin(resolver.resolve('./runtime/app/plugins/session.client')) // Server diff --git a/src/runtime/server/lib/webauthn/authenticate.ts b/src/runtime/server/lib/webauthn/authenticate.ts index c8ba0c9b..c3453495 100644 --- a/src/runtime/server/lib/webauthn/authenticate.ts +++ b/src/runtime/server/lib/webauthn/authenticate.ts @@ -2,21 +2,11 @@ import { eventHandler, H3Error, createError, getRequestURL, readBody } from 'h3' import type { GenerateAuthenticationOptionsOpts } from '@simplewebauthn/server' import { generateAuthenticationOptions, verifyAuthenticationResponse } from '@simplewebauthn/server' import defu from 'defu' -import type { AuthenticationResponseJSON } from '@simplewebauthn/types' import { getRandomValues } from 'uncrypto' import { base64URLStringToBuffer, bufferToBase64URLString } from '@simplewebauthn/browser' import { useRuntimeConfig } from '#imports' import type { WebAuthnAuthenticateEventHandlerOptions, WebAuthnCredential } from '#auth-utils' - -type AuthenticationBody = { - verify: false - userName?: string -} | { - verify: true - attemptId: string - userName?: string - response: AuthenticationResponseJSON -} +import type { AuthenticationBody } from '~/src/runtime/types/webauthn' export function defineWebAuthnAuthenticateEventHandler({ storeChallenge, @@ -30,20 +20,20 @@ export function defineWebAuthnAuthenticateEventHandler { const url = getRequestURL(event) const body = await readBody(event) - const _config = defu(await getOptions?.(event) ?? {}, useRuntimeConfig(event).webauthn.authenticate, { + const _config = defu(await getOptions?.(event, body) ?? {}, useRuntimeConfig(event).webauthn.authenticate, { rpID: url.hostname, } satisfies GenerateAuthenticationOptionsOpts) - if (allowCredentials && body.userName) { - _config.allowCredentials = await allowCredentials(event, body.userName) - } - if (!storeChallenge) { _config.challenge = '' } try { if (!body.verify) { + if (allowCredentials && body.userName) { + _config.allowCredentials = await allowCredentials(event, body.userName) + } + const options = await generateAuthenticationOptions(_config as GenerateAuthenticationOptionsOpts) const attemptId = bufferToBase64URLString(getRandomValues(new Uint8Array(32))) @@ -71,6 +61,7 @@ export function defineWebAuthnAuthenticateEventHandler = { - user: T - verify: false -} | { - user: T - verify: true - attemptId: string - response: RegistrationResponseJSON -} +import type { RegistrationBody } from '~/src/runtime/types/webauthn' export function defineWebAuthnRegisterEventHandler({ storeChallenge, getChallenge, getOptions, validateUser, + excludeCredentials, onSuccess, onError, }: WebAuthnRegisterEventHandlerOptions) { @@ -41,7 +32,7 @@ export function defineWebAuthnRegisterEventHandler({ user = await validateUserData(body.user, validateUser) } - const _config = defu(await getOptions?.(event) ?? {}, useRuntimeConfig(event).webauthn.register, { + const _config = defu(await getOptions?.(event, body) ?? {}, useRuntimeConfig(event).webauthn.register, { rpID: url.hostname, rpName: url.hostname, userName: user.userName, @@ -57,6 +48,10 @@ export function defineWebAuthnRegisterEventHandler({ try { if (!body.verify) { + if (excludeCredentials) { + _config.excludeCredentials = await excludeCredentials(event, user.userName) + } + const options = await generateRegistrationOptions(_config as GenerateRegistrationOptionsOpts) const attemptId = bufferToBase64URLString(getRandomValues(new Uint8Array(32))) diff --git a/src/runtime/types/webauthn.ts b/src/runtime/types/webauthn.ts index 6de5bdda..c746a085 100644 --- a/src/runtime/types/webauthn.ts +++ b/src/runtime/types/webauthn.ts @@ -1,4 +1,4 @@ -import type { AuthenticatorTransportFuture } from '@simplewebauthn/types' +import type { AuthenticationResponseJSON, AuthenticatorTransportFuture, RegistrationResponseJSON } from '@simplewebauthn/types' import type { Ref } from 'vue' import type { H3Event, H3Error, ValidateFunction } from 'h3' import type { @@ -23,7 +23,7 @@ export interface WebAuthnUser { [key: string]: unknown } -type AllowCredentials = NonNullable +type CredentialsList = NonNullable // Using a discriminated union makes it such that you can only define both storeChallenge and getChallenge or neither type WebAuthnEventHandlerBase> = { @@ -38,22 +38,43 @@ type WebAuthnEventHandlerBase> = { onError?: (event: H3Event, error: H3Error) => void | Promise } +export type RegistrationBody = { + user: T + verify: false +} | { + user: T + verify: true + attemptId: string + response: RegistrationResponseJSON +} + export type WebAuthnRegisterEventHandlerOptions = WebAuthnEventHandlerBase<{ user: T credential: WebAuthnCredential registrationInfo: Exclude }> & { - getOptions?: (event: H3Event) => GenerateRegistrationOptionsOpts | Promise + getOptions?: (event: H3Event, body: RegistrationBody) => Partial | Promise> validateUser?: ValidateFunction + excludeCredentials?: (event: H3Event, userName: string) => CredentialsList | Promise +} + +export type AuthenticationBody = { + verify: false + userName?: string +} | { + verify: true + attemptId: string + userName?: string + response: AuthenticationResponseJSON } export type WebAuthnAuthenticateEventHandlerOptions = WebAuthnEventHandlerBase<{ credential: T authenticationInfo: Exclude }> & { - getOptions?: (event: H3Event) => Partial | Promise> + getOptions?: (event: H3Event, body: AuthenticationBody) => Partial | Promise> getCredential: (event: H3Event, credentialID: string) => T | Promise - allowCredentials?: (event: H3Event, userName: string) => AllowCredentials | Promise + allowCredentials?: (event: H3Event, userName: string) => CredentialsList | Promise } export interface WebAuthnComposable {