Skip to content

Feat/support nuxt 4 and use authjs#1083

Open
mridang wants to merge 23 commits intosidebase:mainfrom
zitadel:feat/support-nuxt-4-and-use-authjs
Open

Feat/support nuxt 4 and use authjs#1083
mridang wants to merge 23 commits intosidebase:mainfrom
zitadel:feat/support-nuxt-4-and-use-authjs

Conversation

@mridang
Copy link

@mridang mridang commented Feb 9, 2026

🔗 Linked issue

❓ Type of change

  • 📖 Documentation (updates to the documentation, readme or JSdoc annotations)
  • 🐞 Bug fix (a non-breaking change that fixes an issue)
  • 👌 Enhancement (improving an existing functionality like performance)
  • ✨ New feature (a non-breaking change that adds functionality)
  • 🧹 Chore (updates to the build process or auxiliary tools and libraries)
  • ⚠️ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description

📝 Checklist

  • I have linked an issue or discussion.
  • I have added tests (if possible).
  • I have updated the documentation accordingly.

@mridang mridang force-pushed the feat/support-nuxt-4-and-use-authjs branch from 45cd086 to 55315e5 Compare February 9, 2026 03:19
The scule package has been removed from the project's dependencies as it was no longer being utilised within the codebase.

This cleanup simplifies the dependency tree and reduces the overall installation size, contributing to better project maintenance and a leaner package. This is a non-breaking change with no impact on the module's functionality.
The `nitropack` package is only used within the module for its TypeScript type definitions (import type). It is not a true runtime dependency.

Type-only imports are erased during compilation, and the module uses a local stub for `defineNitroPlugin` to avoid needing a runtime import from `nitropack`.

Therefore, moving `nitropack` to devDependencies correctly declares its purpose as a tool for development-time type checking.

This cleans up the production dependencies for end-users of this module.
The `knitwork` package was used for a single function, `genInterface`, to generate a TypeScript interface string for the local provider's session data.

This implementation has been replaced with a concise, inline solution using `Object.entries` and `map`. This change removes an unnecessary dependency, making the module lighter and easier to maintain without sacrificing functionality.
@mridang mridang force-pushed the feat/support-nuxt-4-and-use-authjs branch from 55315e5 to 5a864ba Compare February 9, 2026 03:30
mridang and others added 15 commits February 9, 2026 20:52
BREAKING CHANGE: The local provider has been completely removed.
Only the authjs provider is now supported.

- Delete src/runtime/composables/local/ directory
- Delete src/runtime/plugins/refresh-token.server.ts
- Delete playground-local/ directory
- Delete tests/local.url.spec.ts
- Remove ProviderLocal type and local-specific types from types.ts
- Simplify module.ts to only support authjs
- Remove JSON pointer utilities from helpers.ts
- Simplify middleware to remove local provider fallbacks
- Update refreshHandler to remove local token refresh logic
- Update tsconfig and package.json scripts
- Replace @antfu/eslint-config with @mridang/eslint-defaults and @nuxt/eslint-plugin
- Remove oxlint, use eslint only
- Add inline eslint-disable for React rules (Nuxt composables)
- Update .github workflows from astro-auth template
- Remove VitePress, add TypeDoc for documentation
- Remove upgrade docs (fresh library)
- Add semantic-release configuration
- Add peer dependencies for vue, cookie-es, radix3, @nuxt/schema
- Clean up knip configuration
- Various code style fixes from new linting rules

🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Rename package to @zitadel/nuxt-auth
- Change license to Apache-2.0
- Update repository/homepage/bugs URLs to zitadel
- Add author field
- Add keywords, private, publishConfig fields
- Sort scripts and dependencies alphabetically
- Add format:check script
- Use object format for repository field

🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Remove default exports from useAuth and useAuthState (use named exports only)
- Remove duplicates rule from knip config
- Remove knip.config.js from ignore list

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add 48 integration tests using @nuxt/test-utils covering:
- CSRF token handling and validation
- Provider configuration verification
- Session management and authentication flows
- Credentials authentication with valid/invalid inputs
- Signin/signout page rendering
- Security tests for open redirect, cookie attributes, malicious input,
  session management, information disclosure, and CSRF protection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CSS and build directory to eslint ignores (workaround for
  @mridang/eslint-defaults CSS parser bug)
- Disable import/no-unresolved for spec files
- Add @nuxt/test-utils and @vitest/coverage-v8 as devDependencies
- Configure vitest to output junit.xml and coverage to build directory

🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Remove references to missing .github files in README
- Export GlobalMiddlewareOptions, ModuleOptionsNormalized, ProviderAuthjs,
  and SessionRefreshConfig types for typedoc
- Update README and package.json branding from sidebase to zitadel
- Remove external documentation links from code comments

🤖 Generated with [Claude Code](https://claude.com/claude-code)
BREAKING CHANGE: The middleware name has changed from 'sidebase-auth'
to 'zitadel-auth'. Update any references in your code:

  definePageMeta({
-   middleware: 'sidebase-auth'
+   middleware: 'zitadel-auth'
  })

🤖 Generated with [Claude Code](https://claude.com/claude-code)
- Add TypeDoc frontmatter (title, group, category) to all guide docs
- Configure projectDocuments with parent-child hierarchy
- Add README as TypeDoc index page
- Clean up VitePress-specific syntax for TypeDoc compatibility
- Replace all sidebase references with zitadel:
  - GitHub URLs: github.com/sidebase → github.com/zitadel
  - Package refs: @sidebase@zitadel
  - nuxi module: sidebase-auth → zitadel-auth
  - Example domains: sidebase.io → example.com
- Remove recipes folder and security.md
- Remove Discord community links
- Add comprehensive TSDoc to useAuth, useAuthState, and server utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove unnecessary overview files and update typedoc config to
reflect the removed docs/resources/overview.md reference.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The local provider is not implemented in this codebase - only the
Auth.js provider is supported. This removes all orphaned documentation
referencing the non-existent local provider:

- Remove docs/guide/local/ folder
- Remove choose-provider.md (only one provider now)
- Update session-access.md to remove local-only methods
- Update configuration.md to remove ProviderLocal type
- Update url-resolutions.md to remove local examples
- Update self-hosted.md to remove Local Provider section
- Update index.md feature description

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments