Init
This commit is contained in:
+138
@@ -0,0 +1,138 @@
|
||||
<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 Functions JS SDK</h1>
|
||||
|
||||
<h3 align="center">JavaScript SDK to interact with Supabase Edge Functions.</h3>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://supabase.com/docs/guides/functions">Guides</a>
|
||||
·
|
||||
<a href="https://supabase.com/docs/reference/javascript/functions-invoke">Reference Docs</a>
|
||||
·
|
||||
<a href="https://supabase.github.io/supabase-js/functions-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/functions-js)
|
||||
[](#license)
|
||||
[](https://pkg.pr.new/~/supabase/functions-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
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
npm install @supabase/functions-js
|
||||
```
|
||||
|
||||
### Usage
|
||||
|
||||
```js
|
||||
import { FunctionsClient } from '@supabase/functions-js'
|
||||
|
||||
const functionsUrl = 'https://<project_ref>.supabase.co/functions/v1'
|
||||
const publishableKey = '<publishable_key>'
|
||||
|
||||
const functions = new FunctionsClient(functionsUrl, {
|
||||
headers: {
|
||||
Authorization: `Bearer ${publishableKey}`,
|
||||
},
|
||||
})
|
||||
|
||||
// Invoke a function
|
||||
const { data, error } = await functions.invoke('hello-world', {
|
||||
body: { name: 'Functions' },
|
||||
})
|
||||
```
|
||||
|
||||
## 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 functions-js
|
||||
|
||||
# Build with watch mode for development
|
||||
pnpm nx build functions-js --watch
|
||||
|
||||
# Individual build targets
|
||||
pnpm nx build:main functions-js # CommonJS build (dist/main/)
|
||||
pnpm nx build:module functions-js # ES Modules build (dist/module/)
|
||||
|
||||
# Other useful commands
|
||||
pnpm nx clean functions-js # Clean build artifacts
|
||||
pnpm nx typecheck functions-js # TypeScript type checking
|
||||
pnpm nx docs functions-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
|
||||
|
||||
**Docker Required** for relay tests. The functions-js tests use testcontainers to spin up a Deno relay server for testing Edge Function invocations.
|
||||
|
||||
```bash
|
||||
# Run all tests (from monorepo root)
|
||||
pnpm nx test functions-js
|
||||
|
||||
# Run tests with coverage report
|
||||
pnpm nx test functions-js --coverage
|
||||
|
||||
# Run tests in watch mode during development
|
||||
pnpm nx test functions-js --watch
|
||||
|
||||
# CI test command (runs with coverage)
|
||||
pnpm nx test:ci functions-js
|
||||
```
|
||||
|
||||
#### Test Requirements
|
||||
|
||||
- **Node.js 22+** - Required for testcontainers
|
||||
- **Docker** - Must be installed and running for relay tests
|
||||
- No Supabase instance needed - Tests use mocked services and testcontainers
|
||||
|
||||
#### What Gets Tested
|
||||
|
||||
- **Function invocation** - Testing the `invoke()` method with various options
|
||||
- **Relay functionality** - Using a containerized Deno relay to test real Edge Function scenarios
|
||||
- **Error handling** - Ensuring proper error responses and retries
|
||||
- **Request/response models** - Validating headers, body, and response formats
|
||||
|
||||
### 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