Init
This commit is contained in:
+194
@@ -0,0 +1,194 @@
|
||||
<br />
|
||||
<p align="center">
|
||||
<a href="https://supabase.io">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/supabase/supabase/master/packages/common/assets/images/supabase-logo-wordmark--dark.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/supabase/supabase/master/packages/common/assets/images/supabase-logo-wordmark--light.svg">
|
||||
<img alt="Supabase Logo" width="300" src="https://raw.githubusercontent.com/supabase/supabase/master/packages/common/assets/images/logo-preview.jpg">
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
<h1 align="center">Supabase Auth JS SDK</h1>
|
||||
|
||||
<h3 align="center">An isomorphic JavaScript SDK for the <a href="https://github.com/supabase/auth">Supabase Auth</a> API.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://supabase.com/docs/guides/auth">Guides</a>
|
||||
·
|
||||
<a href="https://supabase.com/docs/reference/javascript/auth-signup">Reference Docs</a>
|
||||
·
|
||||
<a href="https://supabase.github.io/supabase-js/auth-js/v2/spec.json">TypeDoc</a>
|
||||
</p>
|
||||
</p>
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](https://github.com/supabase/supabase-js/actions?query=branch%3Amaster)
|
||||
[](https://www.npmjs.com/package/@supabase/auth-js)
|
||||
[](#license)
|
||||
[](https://pkg.pr.new/~/supabase/auth-js)
|
||||
|
||||
</div>
|
||||
|
||||
## Requirements
|
||||
|
||||
- **Node.js 22 or later** (Node.js 20 support dropped in v2.110.0)
|
||||
- For browser support, all modern browsers are supported
|
||||
|
||||
> ⚠️ **Node.js 18 Deprecation Notice**
|
||||
>
|
||||
> Node.js 18 reached end-of-life on April 30, 2025. As announced in [our deprecation notice](https://github.com/orgs/supabase/discussions/37217), support for Node.js 18 was dropped on October 31, 2025.
|
||||
|
||||
> ⚠️ **Node.js 20 Deprecation Notice**
|
||||
>
|
||||
> Node.js 20 reached end-of-life on April 30, 2026. As announced in [our deprecation notice](https://github.com/orgs/supabase/discussions/45715), support for Node.js 20 was dropped in v2.110.0.
|
||||
|
||||
## Quick start
|
||||
|
||||
Install
|
||||
|
||||
```bash
|
||||
npm install --save @supabase/auth-js
|
||||
```
|
||||
|
||||
Usage
|
||||
|
||||
```js
|
||||
import { AuthClient } from '@supabase/auth-js'
|
||||
|
||||
const GOTRUE_URL = 'http://localhost:9999'
|
||||
|
||||
const auth = new AuthClient({ url: GOTRUE_URL })
|
||||
```
|
||||
|
||||
- `signUp()`: https://supabase.com/docs/reference/javascript/auth-signup
|
||||
- `signIn()`: https://supabase.com/docs/reference/javascript/auth-signin
|
||||
- `signOut()`: https://supabase.com/docs/reference/javascript/auth-signout
|
||||
|
||||
### Custom `fetch` implementation
|
||||
|
||||
`auth-js` uses the runtime's global `fetch` to make HTTP requests, but an alternative `fetch` implementation can be provided as an option. This is useful in environments where the global `fetch` is unavailable or where you want to customize request behavior:
|
||||
|
||||
```js
|
||||
import { AuthClient } from '@supabase/auth-js'
|
||||
|
||||
const AUTH_URL = 'http://localhost:9999'
|
||||
|
||||
const auth = new AuthClient({ url: AUTH_URL, fetch: fetch })
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
This package is part of the [Supabase JavaScript monorepo](https://github.com/supabase/supabase-js). To work on this package:
|
||||
|
||||
### Building
|
||||
|
||||
```bash
|
||||
# Complete build (from monorepo root)
|
||||
pnpm nx build auth-js
|
||||
|
||||
# Build with watch mode for development
|
||||
pnpm nx build auth-js --watch
|
||||
|
||||
# Individual build targets
|
||||
pnpm nx build:main auth-js # CommonJS build (dist/main/)
|
||||
pnpm nx build:module auth-js # ES Modules build (dist/module/)
|
||||
|
||||
# Other useful commands
|
||||
pnpm nx lint auth-js # Run ESLint
|
||||
pnpm nx typecheck auth-js # TypeScript type checking
|
||||
pnpm nx docs auth-js # Generate documentation
|
||||
```
|
||||
|
||||
#### Build Outputs
|
||||
|
||||
- **CommonJS (`dist/main/`)** - For Node.js environments
|
||||
- **ES Modules (`dist/module/`)** - For modern bundlers (Webpack, Vite, Rollup)
|
||||
- **TypeScript definitions (`dist/module/index.d.ts`)** - Type definitions for TypeScript projects
|
||||
|
||||
### Testing
|
||||
|
||||
The auth-js package has two test suites:
|
||||
|
||||
1. **CLI Tests** - Main test suite using Supabase CLI (331 tests)
|
||||
2. **Docker Tests** - Edge case tests requiring specific GoTrue configurations (11 tests)
|
||||
|
||||
#### Prerequisites
|
||||
|
||||
- **Supabase CLI** - Required for main test suite ([installation guide](https://supabase.com/docs/guides/cli))
|
||||
- **Docker** - Required for edge case tests
|
||||
|
||||
#### Running Tests
|
||||
|
||||
```bash
|
||||
# Run main test suite with Supabase CLI (recommended)
|
||||
pnpm nx test:auth auth-js
|
||||
|
||||
# Run Docker-only edge case tests
|
||||
pnpm nx test:docker auth-js
|
||||
|
||||
# Run both test suites
|
||||
pnpm nx test:auth auth-js && pnpm nx test:docker auth-js
|
||||
```
|
||||
|
||||
#### Main Test Suite (Supabase CLI)
|
||||
|
||||
The `test:auth` command automatically:
|
||||
|
||||
1. Stops any existing Supabase instance
|
||||
2. Starts a local Supabase instance via CLI
|
||||
3. Runs the test suite (excludes `docker-tests/` folder)
|
||||
4. Cleans up after tests complete
|
||||
|
||||
```bash
|
||||
# Individual commands for manual control
|
||||
pnpm nx test:infra auth-js # Start Supabase CLI
|
||||
pnpm nx test:suite auth-js # Run tests only
|
||||
pnpm nx test:clean-post auth-js # Stop Supabase CLI
|
||||
```
|
||||
|
||||
#### Docker Tests (Edge Cases)
|
||||
|
||||
The `test:docker` target runs tests that require specific GoTrue configurations not possible with a single Supabase CLI instance:
|
||||
|
||||
- **Signup disabled** - Tests for disabled signup functionality
|
||||
- **Asymmetric JWT (RS256)** - Tests for RS256 JWT verification
|
||||
- **Phone OTP / SMS** - Tests requiring Twilio SMS provider
|
||||
- **Anonymous sign-in disabled** - Tests for disabled anonymous auth
|
||||
|
||||
These tests are located in `test/docker-tests/` and use the Docker Compose setup in `infra/docker-compose.yml`.
|
||||
|
||||
```bash
|
||||
# Individual commands for manual control
|
||||
pnpm nx test:docker:infra auth-js # Start Docker containers
|
||||
pnpm nx test:docker:suite auth-js # Run Docker tests only
|
||||
pnpm nx test:docker:clean-post auth-js # Stop Docker containers
|
||||
```
|
||||
|
||||
#### Development Testing
|
||||
|
||||
For actively developing and debugging tests:
|
||||
|
||||
```bash
|
||||
# Start Supabase CLI once
|
||||
pnpm nx test:infra auth-js
|
||||
|
||||
# Run tests multiple times (faster since instance stays up)
|
||||
pnpm nx test:suite auth-js
|
||||
|
||||
# Clean up when done
|
||||
pnpm nx test:clean-post auth-js
|
||||
```
|
||||
|
||||
#### Test Infrastructure
|
||||
|
||||
| Suite | Infrastructure | Configuration |
|
||||
| ------------ | -------------- | --------------------------- |
|
||||
| CLI Tests | Supabase CLI | `test/supabase/config.toml` |
|
||||
| Docker Tests | Docker Compose | `infra/docker-compose.yml` |
|
||||
|
||||
### Contributing
|
||||
|
||||
We welcome contributions! Please see our [Contributing Guide](../../../CONTRIBUTING.md) for details on how to get started.
|
||||
|
||||
For major changes or if you're unsure about something, please open an issue first to discuss your proposed changes.
|
||||
Reference in New Issue
Block a user