Merge branch 'master' into self-hosted/fix-connect

This commit is contained in:
Andrey A. authored and GitHub committed 2026-02-02 15:30:22 +01:00
commit fe2bec315c
104 files changed
+10408 -9763

No files matched your search

+104 -1
View File
@@ -1,15 +1,118 @@
import '@/styles/globals.css'
import '../../studio/styles/typography.scss'
import type { Metadata } from 'next'
import type { Metadata, Viewport } from 'next'
import { ThemeProvider } from './Providers'
import { SonnerToaster } from './SonnerToast'
import { customFont, sourceCodePro } from './fonts'
const className = `${customFont.variable} ${sourceCodePro.variable}`
const BASE_PATH = process.env.NEXT_PUBLIC_BASE_PATH || '/design-system'
const genFaviconData = (basePath: string): Metadata['icons'] => ({
icon: {
url: `${basePath}/favicon/favicon.ico`,
type: 'image/x-icon',
},
shortcut: `${basePath}/favicon/favicon.ico`,
apple: `${basePath}/favicon/favicon.ico`,
other: [
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-57x57.png`,
sizes: '57x57',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-60x60.png`,
sizes: '60x60',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-72x72.png`,
sizes: '72x72',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-76x76.png`,
sizes: '76x76',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-114x114.png`,
sizes: '114x114',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-120x120.png`,
sizes: '120x120',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-144x144.png`,
sizes: '144x144',
},
{
rel: 'apple-touch-icon-precomposed',
url: `${basePath}/favicon/apple-icon-152x152.png`,
sizes: '152x152',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-16x16.png`,
type: 'image/png',
sizes: '16x16',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-32x32.png`,
type: 'image/png',
sizes: '32x32',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-48x48.png`,
type: 'image/png',
sizes: '48x48',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-96x96.png`,
type: 'image/png',
sizes: '96x96',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-128x128.png`,
type: 'image/png',
sizes: '128x128',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-180x180.png`,
type: 'image/png',
sizes: '180x180',
},
{
rel: 'icon',
url: `${basePath}/favicon/favicon-196x196.png`,
type: 'image/png',
sizes: '196x196',
},
],
})
export const metadata: Metadata = {
applicationName: 'Supabase Design System',
title: 'Supabase Design System',
description: 'Design resources for building consistent user experiences at Supabase.',
icons: genFaviconData(BASE_PATH),
}
export const viewport: Viewport = {
themeColor: '#1E1E1E',
}
interface RootLayoutProps {
+3 -3
View File
@@ -61,7 +61,7 @@ export const docsConfig: DocsConfig = {
items: [
{
title: 'Introduction',
href: '/docs/ui-patterns/ui-patterns',
href: '/docs/ui-patterns/introduction',
items: [],
priority: true,
},
@@ -108,7 +108,7 @@ export const docsConfig: DocsConfig = {
items: [
{
title: 'Introduction',
href: '/docs/fragments/fragment-components',
href: '/docs/fragments/introduction',
items: [],
priority: true,
},
@@ -210,7 +210,7 @@ export const docsConfig: DocsConfig = {
items: [
{
title: 'Introduction',
href: '/docs/components/atom-components',
href: '/docs/components/introduction',
items: [],
priority: true,
},
@@ -7,10 +7,10 @@ UI patterns are reusable design solutions that combine multiple components from
These patterns help ensure consistency across Supabase products by establishing standard approaches for:
- **[Charts](/docs/ui-patterns/charts)**: Visualizing data consistently using standardized chart types and styling.
- **[Empty States](/docs/ui-patterns/empty-states)**: Communicating the absence of data and guiding users toward meaningful actions.
- **[Forms](/docs/ui-patterns/forms)**: Building cohesive form experiences in both page layouts and side panels.
- **[Layout](/docs/ui-patterns/layout)**: Creating consistent page structures with proper spacing, max-widths, and content organization.
- **[Navigation](/docs/ui-patterns/navigation)**: Organizing complex hierarchical navigation systems across multiple products and contexts.
- **[Charts](charts)**: Visualizing data consistently using standardized chart types and styling.
- **[Empty States](empty-states)**: Communicating the absence of data and guiding users toward meaningful actions.
- **[Forms](forms)**: Building cohesive form experiences in both page layouts and side panels.
- **[Layout](layout)**: Creating consistent page structures with proper spacing, max-widths, and content organization.
- **[Navigation](navigation)**: Organizing complex hierarchical navigation systems across multiple products and contexts.
UI patterns may incorporate external libraries (such as `react-markdown`, `reactflow`, `recharts`, etc) or compose various components from the `ui` package. They serve as blueprints for solving recurring design problems, ensuring that similar features across the application follow the same structural and interaction patterns.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 584 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 794 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1007 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/favicon/ms-icon-70x70.png"/><square150x150logo src="/favicon/ms-icon-150x150.png"/><square310x310logo src="/favicon/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 314 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,46 @@
{
"name": "Supabase Design System",
"short_name": "Supabase Design System",
"description": "Design resources for building consistent user experiences at Supabase.",
"display": "standalone",
"theme_color": "#1C1C1C",
"background_color": "#1C1C1C",
"icons": [
{
"src": "/favicon/android-icon-36x36.png",
"sizes": "36x36",
"type": "image/png",
"density": "0.75"
},
{
"src": "/favicon/android-icon-48x48.png",
"sizes": "48x48",
"type": "image/png",
"density": "1.0"
},
{
"src": "/favicon/android-icon-72x72.png",
"sizes": "72x72",
"type": "image/png",
"density": "1.5"
},
{
"src": "/favicon/android-icon-96x96.png",
"sizes": "96x96",
"type": "image/png",
"density": "2.0"
},
{
"src": "/favicon/android-icon-144x144.png",
"sizes": "144x144",
"type": "image/png",
"density": "3.0"
},
{
"src": "/favicon/android-icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"density": "4.0"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

@@ -79,7 +79,7 @@ When building your own MCP server, integrate with Supabase Auth to authenticate
**Looking for an easier way to build MCP servers?**
[FastMCP](https://gofastmcp.com) provides a streamlined way to build MCP servers with built-in Supabase Auth integration. FastMCP handles OAuth configuration, token management, and authentication flows automatically, letting you focus on building your AI agent's functionality. Check out their [Supabase integration guide](https://gofastmcp.com/integrations/supabase) to get started quickly.
[FastMCP](https://gofastmcp.com) provides a streamlined way to build MCP servers with built-in Supabase Auth integration. FastMCP handles OAuth configuration, token management, and authentication flows automatically, letting you focus on building your AI agent's functionality. Check out their [Supabase integration guide](https://gofastmcp.com/integrations/supabase#supabase-fastmcp) to get started quickly.
</Admonition>
+4 -4
View File
@@ -280,7 +280,7 @@ If you plan to solely use Prisma instead of the Supabase Data API (PostgREST), t
```bash
npx prisma migrate diff \
--from-empty \
--to-schema-datamodel prisma/schema.prisma \
--to-schema prisma/schema.prisma \
--script > prisma/migrations/0_init_supabase/migration.sql
```
<Admonition type="tip" label="conflict management">
@@ -308,7 +308,7 @@ If you plan to solely use Prisma instead of the Supabase Data API (PostgREST), t
```bash
pnpx prisma migrate diff \
--from-empty \
--to-schema-datamodel prisma/schema.prisma \
--to-schema prisma/schema.prisma \
--script > prisma/migrations/0_init_supabase/migration.sql
```
<Admonition type="note" label="conflict management">
@@ -336,7 +336,7 @@ If you plan to solely use Prisma instead of the Supabase Data API (PostgREST), t
```bash
npx prisma migrate diff \
--from-empty \
--to-schema-datamodel prisma/schema.prisma \
--to-schema prisma/schema.prisma \
--script > prisma/migrations/0_init_supabase/migration.sql
```
<Admonition type="note" label="conflict management">
@@ -364,7 +364,7 @@ If you plan to solely use Prisma instead of the Supabase Data API (PostgREST), t
```bash
bunx prisma migrate diff \
--from-empty \
--to-schema-datamodel prisma/schema.prisma \
--to-schema prisma/schema.prisma \
--script > prisma/migrations/0_init_supabase/migration.sql
```
<Admonition type="note" label="conflict management">
@@ -12,12 +12,13 @@ You can read about the initial announcement [here](/blog/log-drains) and vote fo
The following table lists the supported destinations and the required setup configuration:
| Destination | Transport Method | Configuration |
| --------------------- | ---------------- | ------------------------------------------------- |
| Generic HTTP endpoint | HTTP | URL <br /> HTTP Version <br/> Gzip <br /> Headers |
| DataDog | HTTP | API Key <br /> Region |
| Loki | HTTP | URL <br /> Headers |
| Sentry | HTTP | DSN |
| Destination | Transport Method | Configuration |
| --------------------- | ---------------- | -------------------------------------------------------------------------------------- |
| Generic HTTP endpoint | HTTP | URL <br /> HTTP Version <br/> Gzip <br /> Headers |
| Datadog | HTTP | API Key <br /> Region |
| Loki | HTTP | URL <br /> Headers |
| Sentry | HTTP | DSN |
| Amazon S3 | AWS SDK | S3 Bucket <br/> Region <br/> Access Key ID <br/> Secret Access Key <br/> Batch Timeout |
HTTP requests are batched with a max of 250 logs or 1 second intervals, whichever happens first. Logs are compressed via Gzip if the destination supports it.
@@ -136,13 +137,13 @@ Deno.serve(async (req) => {
</Accordion>
## DataDog logs
## Datadog logs
Logs sent to DataDog have the name of the log source set on the `service` field of the event and the source set to `Supabase`. Logs are gzipped before they are sent to DataDog.
Logs sent to Datadog have the name of the log source set on the `service` field of the event and the source set to `Supabase`. Logs are gzipped before they are sent to Datadog.
The payload message is a JSON string of the raw log event, prefixed with the event timestamp.
To setup DataDog log drain, generate a DataDog API key [here](https://app.datadoghq.com/organization-settings/api-keys) and the location of your DataDog site.
To setup Datadog log drain, generate a Datadog API key [here](https://app.datadoghq.com/organization-settings/api-keys) and the location of your Datadog site.
<Accordion
type="default"
@@ -153,9 +154,9 @@ To setup DataDog log drain, generate a DataDog API key [here](https://app.datado
id="walkthrough"
>
1. Generate API Key in [DataDog dashboard](https://app.datadoghq.com/organization-settings/api-keys)
1. Generate API Key in [Datadog dashboard](https://app.datadoghq.com/organization-settings/api-keys)
2. Create log drain in [Supabase dashboard](/dashboard/project/_/settings/log-drains)
3. Watch for events in the [DataDog Logs page](https://app.datadoghq.com/logs)
3. Watch for events in the [Datadog Logs page](https://app.datadoghq.com/logs)
</AccordionItem>
@@ -211,6 +212,38 @@ All fields from the log event are attached as attributes to the Sentry log, whic
If you are self-hosting Sentry, Sentry Logs are only supported in self-hosted version [25.9.0](https://github.com/getsentry/self-hosted/releases/tag/25.9.0) and later.
## Axiom
Logs sent to a specified Axiom's dataset as JSON of a raw log event,
with timestamp modified to be parsed by ingestion endpoint.
To set up the Axiom log drain, you have to:
1. Create a dataset for ingestion in Axiom dashboard -> Datasets
2. Generate an Axiom API Token with permission to ingest into the created dataset (see [Axiom docs](https://axiom.co/docs/reference/tokens#create-basic-api-token))
3. Create log drain in [Supabase dashboard](/dashboard/project/_/settings/log-drains), providing:
- Name of the dataset
- API token
4. Watch for events in the Stream panel of Axiom dashboard
## Amazon S3
Logs are written to an existing S3 bucket that you own.
Required configuration when creating an S3 Log Drain:
- S3 Bucket: the name of an existing S3 bucket.
- Region: the AWS region where the bucket is located.
- Access Key ID: used for authentication.
- Secret Access Key: used for authentication.
- Batch Timeout (ms): maximum time to wait before flushing a batch. Recommended 2000–5000ms.
<Admonition type="note">
Ensure the AWS account tied to the Access Key ID has permissions to write to the specified S3 bucket.
</Admonition>
## Pricing
For a detailed breakdown of how charges are calculated, refer to [Manage Log Drain usage](/docs/guides/platform/manage-your-usage/log-drains).
+2
View File
@@ -52,6 +52,7 @@ Danny White
Darren Cunningham
Dave Wilson
David A. Ventimiglia
David Birdsong
David Weitzman
Deepthi Sigireddi
Deji I
@@ -175,6 +176,7 @@ Ruan Maia
Sam Meech-Ward
Sam Rome
Sam Rose
Sara Read
Sean Oliver
Sean Thompson
Sergio Cioban Filho
@@ -0,0 +1,11 @@
<svg width="200" height="200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1200" height="1200" rx="260" fill="#9046FF"/>
<mask id="mask0" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">
<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>
</mask>
<g mask="url(#mask0)">
<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>
<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>
<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,11 @@
<svg width="200" height="200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1200" height="1200" rx="260" fill="#9046FF"/>
<mask id="mask0" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">
<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>
</mask>
<g mask="url(#mask0)">
<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>
<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>
<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large. Load diff
@@ -23,7 +23,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 88,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L88"
}
],
"type": {
@@ -42,7 +42,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 89,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L89"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L89"
}
],
"type": {
@@ -61,7 +61,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 90,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L90"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L90"
}
],
"type": {
@@ -80,7 +80,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 91,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L91"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L91"
}
],
"type": {
@@ -99,7 +99,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 92,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L92"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L92"
}
],
"type": {
@@ -118,7 +118,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 93,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L93"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L93"
}
],
"type": {
@@ -137,7 +137,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 94,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L94"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L94"
}
],
"type": {
@@ -156,7 +156,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 95,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L95"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L95"
}
],
"type": {
@@ -175,7 +175,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 96,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L96"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L96"
}
],
"type": {
@@ -194,7 +194,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 97,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L97"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L97"
}
],
"type": {
@@ -213,7 +213,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 98,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L98"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L98"
}
],
"type": {
@@ -232,7 +232,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 99,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L99"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L99"
}
],
"type": {
@@ -251,7 +251,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 100,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L100"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L100"
}
],
"type": {
@@ -270,7 +270,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 101,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L101"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L101"
}
],
"type": {
@@ -289,7 +289,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 102,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L102"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L102"
}
],
"type": {
@@ -309,7 +309,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 87,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L87"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L87"
}
]
},
@@ -339,7 +339,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 34,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L34"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L34"
}
],
"signatures": [
@@ -373,7 +373,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 34,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L34"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L34"
}
],
"parameters": [
@@ -416,7 +416,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 42,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L42"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L42"
}
],
"type": {
@@ -645,7 +645,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 41,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L41"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L41"
}
],
"type": {
@@ -682,7 +682,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 43,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L43"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L43"
}
],
"type": {
@@ -705,7 +705,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 40,
"character": 7,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L40"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L40"
}
]
}
@@ -735,7 +735,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 19,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L19"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L19"
}
],
"type": {
@@ -964,7 +964,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 17,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L17"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L17"
}
],
"type": {
@@ -1000,7 +1000,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 18,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L18"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L18"
}
],
"type": {
@@ -1023,7 +1023,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 16,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L16"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L16"
}
],
"type": {
@@ -1042,7 +1042,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 75,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L75"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L75"
}
],
"signatures": [
@@ -1076,7 +1076,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 75,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L75"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L75"
}
],
"typeParameters": [
@@ -1175,7 +1175,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 60,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L60"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L60"
}
],
"signatures": [
@@ -1209,7 +1209,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 60,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L60"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L60"
}
],
"parameters": [
@@ -1260,7 +1260,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 15,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L15"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L15"
}
]
},
@@ -1301,7 +1301,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 32,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L32"
}
],
"signatures": [
@@ -1316,7 +1316,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 32,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L32"
}
],
"parameters": [
@@ -1387,7 +1387,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1411,7 +1411,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 30,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L30"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L30"
}
],
"extendedTypes": [
@@ -1480,7 +1480,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 50,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L50"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L50"
}
],
"signatures": [
@@ -1495,7 +1495,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 50,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L50"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L50"
}
],
"parameters": [
@@ -1543,7 +1543,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1572,7 +1572,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 49,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L49"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L49"
}
],
"extendedTypes": [
@@ -1621,7 +1621,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 82,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L82"
}
],
"signatures": [
@@ -1636,7 +1636,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 82,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L82"
}
],
"parameters": [
@@ -1684,7 +1684,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1713,7 +1713,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 81,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L81"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L81"
}
],
"extendedTypes": [
@@ -1762,7 +1762,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 66,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L66"
}
],
"signatures": [
@@ -1777,7 +1777,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 66,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L66"
}
],
"parameters": [
@@ -1825,7 +1825,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1854,7 +1854,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 65,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L65"
}
],
"extendedTypes": [
@@ -1877,7 +1877,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 105,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L105"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L105"
}
],
"type": {
@@ -1910,7 +1910,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 121,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L121"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L121"
}
],
"type": {
@@ -2019,7 +2019,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 109,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L109"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L109"
}
],
"type": {
@@ -2035,7 +2035,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 109,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L109"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L109"
}
],
"indexSignatures": [
@@ -2050,7 +2050,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 109,
"character": 14,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L109"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L109"
}
],
"parameters": [
@@ -2096,7 +2096,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 113,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L113"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L113"
}
],
"type": {
@@ -2146,7 +2146,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 117,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L117"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L117"
}
],
"type": {
@@ -2177,7 +2177,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 132,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L132"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L132"
}
],
"type": {
@@ -2211,7 +2211,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 137,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L137"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L137"
}
],
"type": {
@@ -2231,7 +2231,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 105,
"character": 36,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L105"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L105"
}
]
}
@@ -2248,7 +2248,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 16,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L16"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L16"
}
],
"typeParameters": [
@@ -23,7 +23,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 88,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L88"
}
],
"type": {
@@ -42,7 +42,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 89,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L89"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L89"
}
],
"type": {
@@ -61,7 +61,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 90,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L90"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L90"
}
],
"type": {
@@ -80,7 +80,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 91,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L91"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L91"
}
],
"type": {
@@ -99,7 +99,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 92,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L92"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L92"
}
],
"type": {
@@ -118,7 +118,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 93,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L93"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L93"
}
],
"type": {
@@ -137,7 +137,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 94,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L94"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L94"
}
],
"type": {
@@ -156,7 +156,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 95,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L95"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L95"
}
],
"type": {
@@ -175,7 +175,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 96,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L96"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L96"
}
],
"type": {
@@ -194,7 +194,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 97,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L97"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L97"
}
],
"type": {
@@ -213,7 +213,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 98,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L98"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L98"
}
],
"type": {
@@ -232,7 +232,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 99,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L99"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L99"
}
],
"type": {
@@ -251,7 +251,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 100,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L100"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L100"
}
],
"type": {
@@ -270,7 +270,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 101,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L101"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L101"
}
],
"type": {
@@ -289,7 +289,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 102,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L102"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L102"
}
],
"type": {
@@ -309,7 +309,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 87,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L87"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L87"
}
]
},
@@ -339,7 +339,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 34,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L34"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L34"
}
],
"signatures": [
@@ -373,7 +373,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 34,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L34"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L34"
}
],
"parameters": [
@@ -416,7 +416,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 42,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L42"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L42"
}
],
"type": {
@@ -645,7 +645,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 41,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L41"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L41"
}
],
"type": {
@@ -682,7 +682,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 43,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L43"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L43"
}
],
"type": {
@@ -705,7 +705,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 40,
"character": 7,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L40"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L40"
}
]
}
@@ -735,7 +735,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 19,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L19"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L19"
}
],
"type": {
@@ -964,7 +964,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 17,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L17"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L17"
}
],
"type": {
@@ -1000,7 +1000,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 18,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L18"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L18"
}
],
"type": {
@@ -1023,7 +1023,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 16,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L16"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L16"
}
],
"type": {
@@ -1042,7 +1042,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 75,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L75"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L75"
}
],
"signatures": [
@@ -1076,7 +1076,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 75,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L75"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L75"
}
],
"typeParameters": [
@@ -1175,7 +1175,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 60,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L60"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L60"
}
],
"signatures": [
@@ -1209,7 +1209,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 60,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L60"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L60"
}
],
"parameters": [
@@ -1260,7 +1260,7 @@
"fileName": "packages/core/functions-js/src/FunctionsClient.ts",
"line": 15,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/FunctionsClient.ts#L15"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/FunctionsClient.ts#L15"
}
]
},
@@ -1301,7 +1301,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 32,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L32"
}
],
"signatures": [
@@ -1316,7 +1316,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 32,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L32"
}
],
"parameters": [
@@ -1387,7 +1387,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1411,7 +1411,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 30,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L30"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L30"
}
],
"extendedTypes": [
@@ -1480,7 +1480,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 50,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L50"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L50"
}
],
"signatures": [
@@ -1495,7 +1495,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 50,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L50"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L50"
}
],
"parameters": [
@@ -1543,7 +1543,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1572,7 +1572,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 49,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L49"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L49"
}
],
"extendedTypes": [
@@ -1621,7 +1621,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 82,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L82"
}
],
"signatures": [
@@ -1636,7 +1636,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 82,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L82"
}
],
"parameters": [
@@ -1684,7 +1684,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1713,7 +1713,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 81,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L81"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L81"
}
],
"extendedTypes": [
@@ -1762,7 +1762,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 66,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L66"
}
],
"signatures": [
@@ -1777,7 +1777,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 66,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L66"
}
],
"parameters": [
@@ -1825,7 +1825,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 31,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L31"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L31"
}
],
"type": {
@@ -1854,7 +1854,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 65,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L65"
}
],
"extendedTypes": [
@@ -1877,7 +1877,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 105,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L105"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L105"
}
],
"type": {
@@ -1910,7 +1910,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 121,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L121"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L121"
}
],
"type": {
@@ -2019,7 +2019,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 109,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L109"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L109"
}
],
"type": {
@@ -2035,7 +2035,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 109,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L109"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L109"
}
],
"indexSignatures": [
@@ -2050,7 +2050,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 109,
"character": 14,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L109"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L109"
}
],
"parameters": [
@@ -2096,7 +2096,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 113,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L113"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L113"
}
],
"type": {
@@ -2146,7 +2146,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 117,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L117"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L117"
}
],
"type": {
@@ -2177,7 +2177,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 132,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L132"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L132"
}
],
"type": {
@@ -2211,7 +2211,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 137,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L137"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L137"
}
],
"type": {
@@ -2231,7 +2231,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 105,
"character": 36,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L105"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L105"
}
]
}
@@ -2248,7 +2248,7 @@
"fileName": "packages/core/functions-js/src/types.ts",
"line": 16,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/functions-js/src/types.ts#L16"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/functions-js/src/types.ts#L16"
}
],
"typeParameters": [
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+105 -105
View File
@@ -23054,7 +23054,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 112,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L112"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L112"
}
],
"signatures": [
@@ -23088,7 +23088,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 112,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L112"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L112"
}
],
"typeParameters": [
@@ -23136,7 +23136,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
],
"type": {
@@ -23156,7 +23156,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
]
}
@@ -23506,7 +23506,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
],
"type": {
@@ -23526,7 +23526,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 24,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
]
}
@@ -23607,7 +23607,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 25,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -23630,7 +23630,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 47,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -23650,7 +23650,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 45,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -23668,7 +23668,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 23,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -23718,7 +23718,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 10,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
],
"type": {
@@ -23738,7 +23738,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
]
}
@@ -23774,7 +23774,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 42,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
],
"type": {
@@ -23794,7 +23794,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 40,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
]
}
@@ -23970,7 +23970,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 88,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L88"
}
],
"type": {
@@ -23986,7 +23986,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 88,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L88"
}
],
"signatures": [
@@ -24001,7 +24001,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 88,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L88"
}
],
"type": {
@@ -24052,7 +24052,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 73,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L73"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L73"
}
],
"type": {
@@ -24078,7 +24078,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 81,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L81"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L81"
}
],
"type": {
@@ -24105,7 +24105,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 87,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L87"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L87"
}
],
"type": {
@@ -24127,7 +24127,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 86,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L86"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L86"
}
],
"type": {
@@ -24356,7 +24356,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 83,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L83"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L83"
}
],
"type": {
@@ -24382,7 +24382,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 90,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L90"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L90"
}
],
"type": {
@@ -24416,7 +24416,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 74,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L74"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L74"
}
],
"type": {
@@ -24440,7 +24440,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 80,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L80"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L80"
}
],
"type": {
@@ -24466,7 +24466,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 84,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L84"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L84"
}
],
"type": {
@@ -24524,7 +24524,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 78,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L78"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L78"
}
],
"type": {
@@ -24550,7 +24550,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 85,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L85"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L85"
}
],
"type": {
@@ -24571,7 +24571,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 82,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L82"
}
],
"type": {
@@ -24605,7 +24605,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 114,
"character": 14,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L114"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L114"
}
],
"type": {
@@ -24634,7 +24634,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 113,
"character": 14,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L113"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L113"
}
],
"type": {
@@ -24653,7 +24653,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 195,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L195"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L195"
}
],
"getSignature": {
@@ -24675,7 +24675,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 195,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L195"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L195"
}
],
"type": {
@@ -24700,7 +24700,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 309,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L309"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L309"
}
],
"signatures": [
@@ -24723,7 +24723,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 309,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L309"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L309"
}
],
"parameters": [
@@ -24810,19 +24810,19 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 203,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L203"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L203"
},
{
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 207,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L207"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L207"
},
{
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 215,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L215"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L215"
}
],
"signatures": [
@@ -24837,7 +24837,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 203,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L203"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L203"
}
],
"typeParameters": [
@@ -24938,7 +24938,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 207,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L207"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L207"
}
],
"typeParameters": [
@@ -25041,7 +25041,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 316,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L316"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L316"
}
],
"signatures": [
@@ -25064,7 +25064,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 316,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L316"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L316"
}
],
"type": {
@@ -25091,7 +25091,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 333,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L333"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L333"
}
],
"signatures": [
@@ -25114,7 +25114,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 333,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L333"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L333"
}
],
"type": {
@@ -25162,7 +25162,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 326,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L326"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L326"
}
],
"signatures": [
@@ -25185,7 +25185,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 326,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L326"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L326"
}
],
"parameters": [
@@ -25254,7 +25254,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 262,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L262"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L262"
}
],
"signatures": [
@@ -25277,7 +25277,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 262,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L262"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L262"
}
],
"typeParameters": [
@@ -25503,7 +25503,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 276,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L276"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L276"
}
],
"type": {
@@ -25553,7 +25553,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 275,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L275"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L275"
}
],
"type": {
@@ -25598,7 +25598,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 274,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L274"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L274"
}
],
"type": {
@@ -25618,7 +25618,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 273,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L273"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L273"
}
]
}
@@ -25727,7 +25727,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 227,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L227"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L227"
}
],
"signatures": [
@@ -25750,7 +25750,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 227,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L227"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L227"
}
],
"typeParameters": [
@@ -25896,7 +25896,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 37,
"character": 21,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L37"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L37"
}
],
"typeParameters": [
@@ -25976,7 +25976,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
],
"type": {
@@ -25996,7 +25996,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
]
}
@@ -26466,7 +26466,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
],
"type": {
@@ -26486,7 +26486,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 24,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
]
}
@@ -26567,7 +26567,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 25,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -26590,7 +26590,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 47,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -26610,7 +26610,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 45,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -26628,7 +26628,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 23,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -26668,7 +26668,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 10,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
],
"type": {
@@ -26688,7 +26688,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
]
}
@@ -26724,7 +26724,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 42,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
],
"type": {
@@ -26744,7 +26744,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 40,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
]
}
@@ -38810,7 +38810,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 148,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L148"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L148"
}
],
"typeParameters": [
@@ -45371,7 +45371,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 136,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L136"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L136"
}
],
"typeParameters": [
@@ -45419,7 +45419,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 136,
"character": 51,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L136"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L136"
}
],
"type": {
@@ -45439,7 +45439,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 136,
"character": 49,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L136"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L136"
}
]
}
@@ -45490,7 +45490,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 137,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L137"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L137"
}
],
"type": {
@@ -45519,7 +45519,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 135,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L135"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L135"
}
],
"typeParameters": [
@@ -52177,7 +52177,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 28,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L28"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L28"
}
],
"typeParameters": [
@@ -52227,7 +52227,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 129,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L129"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L129"
}
],
"type": {
@@ -52243,7 +52243,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 129,
"character": 16,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L129"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L129"
}
],
"signatures": [
@@ -52295,7 +52295,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 36,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L36"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L36"
}
],
"type": {
@@ -52328,7 +52328,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 40,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L40"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L40"
}
],
"type": {
@@ -52357,7 +52357,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 90,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L90"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L90"
}
],
"type": {
@@ -52409,7 +52409,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"type": {
@@ -52432,7 +52432,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 36,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"signatures": [
@@ -52478,7 +52478,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 55,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"indexSignatures": [
@@ -52493,7 +52493,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 57,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"parameters": [
@@ -52551,7 +52551,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 86,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L86"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L86"
}
],
"type": {
@@ -52593,7 +52593,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 96,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L96"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L96"
}
],
"type": {
@@ -52634,7 +52634,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 48,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L48"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L48"
}
],
"type": {
@@ -52663,7 +52663,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 74,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L74"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L74"
}
],
"type": {
@@ -52704,7 +52704,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 44,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L44"
}
],
"type": {
@@ -52733,7 +52733,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 101,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L101"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L101"
}
],
"type": {
@@ -52775,7 +52775,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 82,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L82"
}
],
"type": {
@@ -52807,7 +52807,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 36,
"character": 9,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L36"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L36"
}
]
}
@@ -52842,7 +52842,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 32,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L32"
}
],
"type": {
@@ -52867,7 +52867,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 33,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L33"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L33"
}
],
"type": {
@@ -52890,7 +52890,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 32,
"character": 7,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L32"
}
]
}
@@ -52909,7 +52909,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 108,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L108"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L108"
}
],
"type": {
@@ -52950,7 +52950,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 112,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L112"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L112"
}
],
"type": {
@@ -52984,7 +52984,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 116,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L116"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L116"
}
],
"type": {
@@ -53019,7 +53019,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 108,
"character": 11,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L108"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L108"
}
]
}
@@ -53046,7 +53046,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 106,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L106"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L106"
}
],
"type": {
@@ -53069,7 +53069,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 107,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L107"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L107"
}
],
"type": {
@@ -53094,7 +53094,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 28,
"character": 48,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L28"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L28"
}
]
}
@@ -53887,7 +53887,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 41,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L41"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L41"
}
],
"signatures": [
@@ -53902,7 +53902,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 41,
"character": 28,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L41"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L41"
}
],
"typeParameters": [
@@ -53950,7 +53950,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 45,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L45"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L45"
}
],
"type": {
@@ -53970,7 +53970,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 45,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L45"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L45"
}
]
}
@@ -23054,7 +23054,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 112,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L112"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L112"
}
],
"signatures": [
@@ -23088,7 +23088,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 112,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L112"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L112"
}
],
"typeParameters": [
@@ -23136,7 +23136,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
],
"type": {
@@ -23156,7 +23156,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
]
}
@@ -23506,7 +23506,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
],
"type": {
@@ -23526,7 +23526,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 24,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
]
}
@@ -23607,7 +23607,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 25,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -23630,7 +23630,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 47,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -23650,7 +23650,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 45,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -23668,7 +23668,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 23,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -23718,7 +23718,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 10,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
],
"type": {
@@ -23738,7 +23738,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
]
}
@@ -23774,7 +23774,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 42,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
],
"type": {
@@ -23794,7 +23794,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 40,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
]
}
@@ -23970,7 +23970,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 88,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L88"
}
],
"type": {
@@ -23986,7 +23986,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 88,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L88"
}
],
"signatures": [
@@ -24001,7 +24001,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 88,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L88"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L88"
}
],
"type": {
@@ -24052,7 +24052,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 73,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L73"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L73"
}
],
"type": {
@@ -24078,7 +24078,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 81,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L81"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L81"
}
],
"type": {
@@ -24105,7 +24105,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 87,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L87"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L87"
}
],
"type": {
@@ -24127,7 +24127,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 86,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L86"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L86"
}
],
"type": {
@@ -24356,7 +24356,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 83,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L83"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L83"
}
],
"type": {
@@ -24382,7 +24382,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 90,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L90"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L90"
}
],
"type": {
@@ -24416,7 +24416,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 74,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L74"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L74"
}
],
"type": {
@@ -24440,7 +24440,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 80,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L80"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L80"
}
],
"type": {
@@ -24466,7 +24466,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 84,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L84"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L84"
}
],
"type": {
@@ -24524,7 +24524,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 78,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L78"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L78"
}
],
"type": {
@@ -24550,7 +24550,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 85,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L85"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L85"
}
],
"type": {
@@ -24571,7 +24571,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 82,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L82"
}
],
"type": {
@@ -24605,7 +24605,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 114,
"character": 14,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L114"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L114"
}
],
"type": {
@@ -24634,7 +24634,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 113,
"character": 14,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L113"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L113"
}
],
"type": {
@@ -24653,7 +24653,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 195,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L195"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L195"
}
],
"getSignature": {
@@ -24675,7 +24675,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 195,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L195"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L195"
}
],
"type": {
@@ -24700,7 +24700,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 309,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L309"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L309"
}
],
"signatures": [
@@ -24723,7 +24723,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 309,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L309"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L309"
}
],
"parameters": [
@@ -24810,19 +24810,19 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 203,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L203"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L203"
},
{
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 207,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L207"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L207"
},
{
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 215,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L215"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L215"
}
],
"signatures": [
@@ -24837,7 +24837,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 203,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L203"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L203"
}
],
"typeParameters": [
@@ -24938,7 +24938,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 207,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L207"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L207"
}
],
"typeParameters": [
@@ -25041,7 +25041,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 316,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L316"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L316"
}
],
"signatures": [
@@ -25064,7 +25064,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 316,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L316"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L316"
}
],
"type": {
@@ -25091,7 +25091,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 333,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L333"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L333"
}
],
"signatures": [
@@ -25114,7 +25114,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 333,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L333"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L333"
}
],
"type": {
@@ -25162,7 +25162,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 326,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L326"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L326"
}
],
"signatures": [
@@ -25185,7 +25185,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 326,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L326"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L326"
}
],
"parameters": [
@@ -25254,7 +25254,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 262,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L262"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L262"
}
],
"signatures": [
@@ -25277,7 +25277,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 262,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L262"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L262"
}
],
"typeParameters": [
@@ -25503,7 +25503,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 276,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L276"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L276"
}
],
"type": {
@@ -25553,7 +25553,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 275,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L275"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L275"
}
],
"type": {
@@ -25598,7 +25598,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 274,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L274"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L274"
}
],
"type": {
@@ -25618,7 +25618,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 273,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L273"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L273"
}
]
}
@@ -25727,7 +25727,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 227,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L227"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L227"
}
],
"signatures": [
@@ -25750,7 +25750,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 227,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L227"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L227"
}
],
"typeParameters": [
@@ -25896,7 +25896,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 37,
"character": 21,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L37"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L37"
}
],
"typeParameters": [
@@ -25976,7 +25976,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
],
"type": {
@@ -25996,7 +25996,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 44,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L44"
}
]
}
@@ -26466,7 +26466,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 26,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
],
"type": {
@@ -26486,7 +26486,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 59,
"character": 24,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L59"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L59"
}
]
}
@@ -26567,7 +26567,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 25,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -26590,7 +26590,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 47,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
],
"type": {
@@ -26610,7 +26610,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 45,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -26628,7 +26628,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 62,
"character": 23,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L62"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L62"
}
]
}
@@ -26668,7 +26668,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 10,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
],
"type": {
@@ -26688,7 +26688,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 65,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L65"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L65"
}
]
}
@@ -26724,7 +26724,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 42,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
],
"type": {
@@ -26744,7 +26744,7 @@
"fileName": "packages/core/supabase-js/src/SupabaseClient.ts",
"line": 66,
"character": 40,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/SupabaseClient.ts#L66"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/SupabaseClient.ts#L66"
}
]
}
@@ -38810,7 +38810,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 148,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L148"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L148"
}
],
"typeParameters": [
@@ -45371,7 +45371,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 136,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L136"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L136"
}
],
"typeParameters": [
@@ -45419,7 +45419,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 136,
"character": 51,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L136"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L136"
}
],
"type": {
@@ -45439,7 +45439,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 136,
"character": 49,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L136"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L136"
}
]
}
@@ -45490,7 +45490,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 137,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L137"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L137"
}
],
"type": {
@@ -45519,7 +45519,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 135,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L135"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L135"
}
],
"typeParameters": [
@@ -52177,7 +52177,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 28,
"character": 12,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L28"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L28"
}
],
"typeParameters": [
@@ -52227,7 +52227,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 129,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L129"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L129"
}
],
"type": {
@@ -52243,7 +52243,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 129,
"character": 16,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L129"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L129"
}
],
"signatures": [
@@ -52295,7 +52295,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 36,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L36"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L36"
}
],
"type": {
@@ -52328,7 +52328,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 40,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L40"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L40"
}
],
"type": {
@@ -52357,7 +52357,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 90,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L90"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L90"
}
],
"type": {
@@ -52409,7 +52409,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"type": {
@@ -52432,7 +52432,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 36,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"signatures": [
@@ -52478,7 +52478,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 55,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"indexSignatures": [
@@ -52493,7 +52493,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 70,
"character": 57,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L70"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L70"
}
],
"parameters": [
@@ -52551,7 +52551,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 86,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L86"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L86"
}
],
"type": {
@@ -52593,7 +52593,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 96,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L96"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L96"
}
],
"type": {
@@ -52634,7 +52634,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 48,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L48"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L48"
}
],
"type": {
@@ -52663,7 +52663,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 74,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L74"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L74"
}
],
"type": {
@@ -52704,7 +52704,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 44,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L44"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L44"
}
],
"type": {
@@ -52733,7 +52733,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 101,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L101"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L101"
}
],
"type": {
@@ -52775,7 +52775,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 82,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L82"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L82"
}
],
"type": {
@@ -52807,7 +52807,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 36,
"character": 9,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L36"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L36"
}
]
}
@@ -52842,7 +52842,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 32,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L32"
}
],
"type": {
@@ -52867,7 +52867,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 33,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L33"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L33"
}
],
"type": {
@@ -52890,7 +52890,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 32,
"character": 7,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L32"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L32"
}
]
}
@@ -52909,7 +52909,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 108,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L108"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L108"
}
],
"type": {
@@ -52950,7 +52950,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 112,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L112"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L112"
}
],
"type": {
@@ -52984,7 +52984,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 116,
"character": 4,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L116"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L116"
}
],
"type": {
@@ -53019,7 +53019,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 108,
"character": 11,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L108"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L108"
}
]
}
@@ -53046,7 +53046,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 106,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L106"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L106"
}
],
"type": {
@@ -53069,7 +53069,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 107,
"character": 2,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L107"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L107"
}
],
"type": {
@@ -53094,7 +53094,7 @@
"fileName": "packages/core/supabase-js/src/lib/types.ts",
"line": 28,
"character": 48,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/lib/types.ts#L28"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/lib/types.ts#L28"
}
]
}
@@ -53887,7 +53887,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 41,
"character": 13,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L41"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L41"
}
],
"signatures": [
@@ -53902,7 +53902,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 41,
"character": 28,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L41"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L41"
}
],
"typeParameters": [
@@ -53950,7 +53950,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 45,
"character": 8,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L45"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L45"
}
],
"type": {
@@ -53970,7 +53970,7 @@
"fileName": "packages/core/supabase-js/src/index.ts",
"line": 45,
"character": 6,
"url": "https://github.com/supabase/supabase-js/blob/942e643d9799a90042b375b16f8438a4980f21ea/packages/core/supabase-js/src/index.ts#L45"
"url": "https://github.com/supabase/supabase-js/blob/248ac09bff77a757ac70fdadbcfd8d92e11d276c/packages/core/supabase-js/src/index.ts#L45"
}
]
}
@@ -1,34 +1,53 @@
import { zodResolver } from '@hookform/resolvers/zod'
import type { PostgresExtension } from '@supabase/postgres-meta'
import { DocsButton } from 'components/ui/DocsButton'
import { useDatabaseExtensionEnableMutation } from 'data/database-extensions/database-extension-enable-mutation'
import { useSchemasQuery } from 'data/database/schemas-query'
import { executeSql } from 'data/sql/execute-sql-query'
import { useIsOrioleDb, useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { useProtectedSchemas } from 'hooks/useProtectedSchemas'
import { DOCS_URL } from 'lib/constants'
import { Database, ExternalLinkIcon, Plus } from 'lucide-react'
import { useEffect, useState } from 'react'
import { useForm } from 'react-hook-form'
import { toast } from 'sonner'
import {
AlertDescription_Shadcn_,
AlertTitle_Shadcn_,
Alert_Shadcn_,
Badge,
Button,
Form,
Input,
Listbox,
Modal,
WarningIcon,
Dialog,
DialogContent,
DialogFooter,
DialogHeader,
DialogSection,
DialogSectionSeparator,
DialogTitle,
FormControl_Shadcn_,
FormField_Shadcn_,
Form_Shadcn_,
Input_Shadcn_,
SelectContent_Shadcn_,
SelectItem_Shadcn_,
SelectSeparator_Shadcn_,
SelectTrigger_Shadcn_,
SelectValue_Shadcn_,
Select_Shadcn_,
} from 'ui'
import { Admonition } from 'ui-patterns'
import { ShimmeringLoader } from 'ui-patterns/ShimmeringLoader'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
import * as z from 'zod'
import { extensionsWithRecommendedSchemas } from './Extensions.constants'
import { useDatabaseExtensionDefaultSchemaQuery } from '@/data/database-extensions/database-extension-schema-query'
const orioleExtCallOuts = ['vector', 'postgis']
// Extensions that have recommended schemas (rather than required schemas)
const extensionsWithRecommendedSchemas: Record<string, string> = {
wrappers: 'extensions',
}
const FormSchema = z.object({ name: z.string(), schema: z.string() }).superRefine((val, ctx) => {
if (val.schema === 'custom' && val.name.length === 0) {
ctx.addIssue({
code: z.ZodIssueCode.custom,
path: ['name'],
message: 'Please provide a name for the schema',
})
}
})
interface EnableExtensionModalProps {
visible: boolean
@@ -36,20 +55,44 @@ interface EnableExtensionModalProps {
onCancel: () => void
}
const EnableExtensionModal = ({ visible, extension, onCancel }: EnableExtensionModalProps) => {
const { data: project } = useSelectedProjectQuery()
export const EnableExtensionModal = ({
visible,
extension,
onCancel,
}: EnableExtensionModalProps) => {
const isOrioleDb = useIsOrioleDb()
const [defaultSchema, setDefaultSchema] = useState()
const [fetchingSchemaInfo, setFetchingSchemaInfo] = useState(false)
const { data: project } = useSelectedProjectQuery()
const { data: protectedSchemas } = useProtectedSchemas({ excludeSchemas: ['extensions'] })
const { data: schemas, isPending: isSchemasLoading } = useSchemasQuery(
const recommendedSchema = extensionsWithRecommendedSchemas[extension.name]
const { data: schemas = [], isPending: isSchemasLoading } = useSchemasQuery(
{
projectRef: project?.ref,
connectionString: project?.connectionString,
},
{ enabled: visible }
)
const { data: protectedSchemas } = useProtectedSchemas({ excludeSchemas: ['extensions'] })
const availableSchemas = schemas.filter(
(schema) =>
schema.name === recommendedSchema ||
!protectedSchemas.some((protectedSchema) => protectedSchema.name === schema.name)
)
const { data: extensionMeta, isPending: fetchingSchemaInfo } =
useDatabaseExtensionDefaultSchemaQuery(
{
projectRef: project?.ref,
connectionString: project?.connectionString,
extension: extension.name,
},
{ enabled: visible }
)
// [Joshen] Hard-coding pg_cron here as this is enforced on our end (Not via pg_available_extension_versions)
const defaultSchema = extension.name === 'pg_cron' ? 'pg_catalog' : extensionMeta?.schema
const isLoading = fetchingSchemaInfo || isSchemasLoading
const { mutate: enableExtension, isPending: isEnabling } = useDatabaseExtensionEnableMutation({
onSuccess: () => {
toast.success(`Extension "${extension.name}" is now enabled`)
@@ -60,62 +103,16 @@ const EnableExtensionModal = ({ visible, extension, onCancel }: EnableExtensionM
},
})
// [Joshen] Worth checking in with users - whether having this schema selection
// might be confusing, and if we should have a tooltip to explain that schemas
// are just concepts of namespace, you can use that extension no matter where it's
// installed in
const defaultValues = { name: extension.name, schema: recommendedSchema ?? 'extensions' }
const form = useForm<z.infer<typeof FormSchema>>({
mode: 'onBlur',
reValidateMode: 'onBlur',
resolver: zodResolver(FormSchema),
defaultValues,
})
const { schema } = form.watch()
useEffect(() => {
let cancel = false
if (visible) {
const checkExtensionSchema = async () => {
if (!cancel) {
setFetchingSchemaInfo(true)
setDefaultSchema(undefined)
}
try {
const res = await executeSql({
projectRef: project?.ref,
connectionString: project?.connectionString,
sql: `select * from pg_available_extension_versions where name = '${extension.name}'`,
})
if (!cancel) setDefaultSchema(res.result[0].schema)
} catch (error) {}
setFetchingSchemaInfo(false)
}
checkExtensionSchema()
}
return () => {
cancel = true
}
}, [visible, extension.name])
const getSchemaDescriptionText = (extensionName: string, schema: string | null | undefined) => {
// Prioritize defaultSchema (required/forced) over recommended schema
if (schema) {
return `Extension must be installed in the “${schema}” schema.`
}
const recommendedSchema = extensionsWithRecommendedSchemas[extensionName]
if (recommendedSchema) {
return `Use the “${recommendedSchema}” schema for full compatibility with related features.`
}
return undefined
}
const isLoading = fetchingSchemaInfo || isSchemasLoading
const validate = (values: any) => {
const errors: any = {}
if (values.schema === 'custom' && !values.name) errors.name = 'Required field'
return errors
}
const onSubmit = async (values: any) => {
const onSubmit = async (values: z.infer<typeof FormSchema>) => {
if (project === undefined) return console.error('Project is required')
const schema =
@@ -137,149 +134,160 @@ const EnableExtensionModal = ({ visible, extension, onCancel }: EnableExtensionM
}
return (
<Modal
hideFooter
visible={visible}
onCancel={onCancel}
size="small"
header={
<div className="flex items-baseline gap-2">
<h5 className="text-foreground">Enable</h5>
<code className="text-code-inline">{extension.name}</code>
</div>
}
<Dialog
open={visible}
onOpenChange={(open: boolean) => {
if (!open) onCancel()
}}
>
<Form
initialValues={{
name: extension.name, // Name of new schema, if creating new
schema: 'extensions',
}}
validate={validate}
onSubmit={onSubmit}
>
{({ values }: any) => {
return (
<>
<Modal.Content className="flex flex-col gap-y-2">
{isOrioleDb && orioleExtCallOuts.includes(extension.name) && (
<Admonition type="default" title="Extension is limited by OrioleDB">
<span className="block">
{extension.name} cannot be accelerated by indexes on tables that are using the
OrioleDB access method
</span>
<DocsButton abbrev={false} className="mt-2" href={`${DOCS_URL}`} />
</Admonition>
)}
<DialogContent size="small" aria-describedby={undefined}>
<DialogHeader>
<DialogTitle>Enable {extension.name}</DialogTitle>
</DialogHeader>
{isLoading ? (
<div className="space-y-2">
<DialogSectionSeparator />
{isOrioleDb && orioleExtCallOuts.includes(extension.name) && (
<Admonition
type="default"
title="Extension is limited by OrioleDB"
className="border-x-0 border-t-0 rounded-none"
>
<span className="block">
{extension.name} cannot be accelerated by indexes on tables that are using the
OrioleDB access method
</span>
<DocsButton abbrev={false} className="mt-2" href={`${DOCS_URL}`} />
</Admonition>
)}
{extension.name === 'pg_cron' && project?.cloud_provider === 'FLY' && (
<Admonition
type="warning"
title="The pg_cron extension is not fully supported for Fly projects"
className="border-x-0 border-t-0 rounded-none"
>
<p>
You can still enable the extension, but pg_cron jobs may not run due to the behavior
of Fly projects.
</p>
<DocsButton
className="mt-2"
href={`${DOCS_URL}/guides/platform/fly-postgres#limitations`}
/>
</Admonition>
)}
<DialogSection>
<Form_Shadcn_ {...form}>
<form id="enable-extensions-form" onSubmit={form.handleSubmit(onSubmit)}>
{isLoading ? (
<div className="space-y-2">
<ShimmeringLoader />
<div className="w-3/4">
<ShimmeringLoader />
<div className="w-3/4">
<ShimmeringLoader />
</div>
</div>
) : defaultSchema ? (
<Input
disabled
id="schema"
name="schema"
value={defaultSchema}
</div>
) : !!defaultSchema ? (
<div className="flex flex-col gap-y-2">
<FormItemLayout
isReactForm={false}
label="Select a schema to enable the extension for"
descriptionText={getSchemaDescriptionText(extension.name, defaultSchema)}
/>
) : (
<Listbox
size="small"
name="schema"
label="Select a schema to enable the extension for"
descriptionText={getSchemaDescriptionText(extension.name, null)}
>
<Listbox.Option
key="custom"
id="custom"
label={`Create a new schema "${extension.name}"`}
value="custom"
addOnBefore={() => <Plus size={16} strokeWidth={1.5} />}
>
Create a new schema "{extension.name}"
</Listbox.Option>
<Modal.Separator />
{schemas
?.filter(
(schema) =>
!protectedSchemas.some(
(protectedSchema) => protectedSchema.name === schema.name
)
)
.map((schema) => {
return (
<Listbox.Option
key={schema.id}
id={schema.name}
label={schema.name}
value={schema.name}
addOnBefore={() => <Database size={16} strokeWidth={1.5} />}
>
{schema.name}
</Listbox.Option>
)
})}
</Listbox>
)}
</Modal.Content>
{values.schema === 'custom' && (
<Modal.Content>
<Input id="name" name="name" label="Schema name" />
</Modal.Content>
)}
{extension.name === 'pg_cron' && project?.cloud_provider === 'FLY' && (
<Modal.Content>
<Alert_Shadcn_ variant="warning">
<WarningIcon />
<AlertTitle_Shadcn_>
The pg_cron extension is not fully supported for Fly projects
</AlertTitle_Shadcn_>
<AlertDescription_Shadcn_>
You can still enable the extension, but pg_cron jobs may not run due to the
behavior of Fly projects.
</AlertDescription_Shadcn_>
<AlertDescription_Shadcn_ className="mt-3">
<Button
asChild
type="default"
iconRight={<ExternalLinkIcon width={12} height={12} />}
<Input_Shadcn_ disabled value={defaultSchema} />
</FormItemLayout>
<p className="text-sm text-foreground-light">
Extension must be installed in the “{defaultSchema}” schema.
</p>
</div>
) : (
<div className="flex flex-col gap-y-2">
<FormField_Shadcn_
key="schema"
name="schema"
control={form.control}
render={({ field }) => (
<FormItemLayout
name="schema"
label="Select a schema to enable the extension for"
>
<a
href="/docs/guides/platform/fly-postgres#limitations"
target="_blank"
rel="noopener noreferrer"
>
<span>Learn more</span>
</a>
</Button>
</AlertDescription_Shadcn_>
</Alert_Shadcn_>
</Modal.Content>
<FormControl_Shadcn_>
<Select_Shadcn_
value={field.value}
onValueChange={field.onChange}
disabled={!!defaultSchema}
>
<SelectTrigger_Shadcn_>
<SelectValue_Shadcn_ placeholder="Select a schema" />
</SelectTrigger_Shadcn_>
<SelectContent_Shadcn_>
<SelectItem_Shadcn_ value="custom">
Create a new schema{' '}
<code className="text-code-inline">{extension.name}</code>
</SelectItem_Shadcn_>
<SelectSeparator_Shadcn_ />
{availableSchemas.map((schema) => {
return (
<SelectItem_Shadcn_ key={schema.id} value={schema.name}>
{schema.name}
{schema.name === recommendedSchema ? (
<Badge className="ml-2" variant="success">
Recommended
</Badge>
) : !defaultSchema && schema.name === 'extensions' ? (
<Badge className="ml-2">Default</Badge>
) : null}
</SelectItem_Shadcn_>
)
})}
</SelectContent_Shadcn_>
</Select_Shadcn_>
</FormControl_Shadcn_>
</FormItemLayout>
)}
/>
{!!recommendedSchema && (
<p className="text-sm text-foreground-light">
Use the "{recommendedSchema}" schema for full compatibility with related
features.
</p>
)}
{schema === 'custom' && (
<FormField_Shadcn_
key="name"
name="name"
control={form.control}
render={({ field }) => (
<FormItemLayout name="name" label="Schema name">
<FormControl_Shadcn_>
<Input_Shadcn_ {...field} />
</FormControl_Shadcn_>
</FormItemLayout>
)}
/>
)}
</div>
)}
<Modal.Separator />
<Modal.Content className="flex items-center justify-end space-x-2">
<Button type="default" disabled={isEnabling} onClick={() => onCancel()}>
Cancel
</Button>
<Button htmlType="submit" disabled={isEnabling || isLoading} loading={isEnabling}>
Enable extension
</Button>
</Modal.Content>
</>
)
}}
</Form>
</Modal>
</form>
</Form_Shadcn_>
</DialogSection>
<DialogFooter>
<Button type="default" disabled={isEnabling} onClick={() => onCancel()}>
Cancel
</Button>
<Button
htmlType="submit"
form="enable-extensions-form"
loading={isEnabling}
disabled={isLoading || isEnabling}
>
Enable extension
</Button>
</DialogFooter>
</DialogContent>
</Dialog>
)
}
export default EnableExtensionModal
@@ -1,20 +1,20 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { AlertTriangle, Book, Github, Loader2 } from 'lucide-react'
import Link from 'next/link'
import { useState } from 'react'
import { toast } from 'sonner'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
import { useDatabaseExtensionDisableMutation } from 'data/database-extensions/database-extension-disable-mutation'
import { DatabaseExtension } from 'data/database-extensions/database-extensions-query'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useIsOrioleDb, useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { DOCS_URL } from 'lib/constants'
import { AlertTriangle, Book, Github, Loader2 } from 'lucide-react'
import Link from 'next/link'
import { useState } from 'react'
import { extensions } from 'shared-data'
import { toast } from 'sonner'
import { Button, Switch, TableCell, TableRow, Tooltip, TooltipContent, TooltipTrigger } from 'ui'
import { Admonition } from 'ui-patterns'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import EnableExtensionModal from './EnableExtensionModal'
import { ConfirmationModal } from 'ui-patterns/Dialogs/ConfirmationModal'
import { EnableExtensionModal } from './EnableExtensionModal'
import { EXTENSION_DISABLE_WARNINGS } from './Extensions.constants'
interface ExtensionRowProps {
@@ -24,3 +24,8 @@ export const SEARCH_TERMS: Record<string, string[]> = {
export const EXTENSION_DISABLE_WARNINGS: Record<string, string> = {
pg_cron: 'Disabling this extension will delete all scheduled jobs. This cannot be undone.',
}
// Extensions that have recommended schemas (rather than required schemas)
export const extensionsWithRecommendedSchemas: Record<string, string> = {
wrappers: 'extensions',
}
@@ -1,5 +1,6 @@
import { zodResolver } from '@hookform/resolvers/zod'
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { IS_PLATFORM, useParams } from 'common'
import dayjs from 'dayjs'
import { ExternalLink } from 'lucide-react'
import Link from 'next/link'
@@ -7,44 +8,30 @@ import { useRouter } from 'next/router'
import { useEffect, useMemo, useState } from 'react'
import { SubmitHandler, useForm } from 'react-hook-form'
import { toast } from 'sonner'
import z from 'zod'
import { useParams } from 'common'
import { AlertError } from 'components/ui/AlertError'
import { getKeys, useAPIKeysQuery } from 'data/api-keys/api-keys-query'
import { useProjectSettingsV2Query } from 'data/config/project-settings-v2-query'
import { useCustomDomainsQuery } from 'data/custom-domains/custom-domains-query'
import { useEdgeFunctionQuery } from 'data/edge-functions/edge-function-query'
import { useEdgeFunctionDeleteMutation } from 'data/edge-functions/edge-functions-delete-mutation'
import { useEdgeFunctionUpdateMutation } from 'data/edge-functions/edge-functions-update-mutation'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { DOCS_URL } from 'lib/constants'
import {
Alert_Shadcn_,
AlertDescription_Shadcn_,
AlertTitle_Shadcn_,
Alert_Shadcn_,
Button,
Card,
CardContent,
CardFooter,
cn,
CodeBlock,
copyToClipboard,
CriticalIcon,
Form_Shadcn_,
FormControl_Shadcn_,
FormField_Shadcn_,
Form_Shadcn_,
Switch,
Tabs_Shadcn_ as Tabs,
TabsContent_Shadcn_ as TabsContent,
TabsList_Shadcn_ as TabsList,
TabsTrigger_Shadcn_ as TabsTrigger,
cn,
copyToClipboard,
} from 'ui'
import { GenericSkeletonLoader } from 'ui-patterns'
import { Input } from 'ui-patterns/DataInputs/Input'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
import { PageContainer } from 'ui-patterns/PageContainer'
import {
PageSection,
@@ -53,9 +40,22 @@ import {
PageSectionSummary,
PageSectionTitle,
} from 'ui-patterns/PageSection'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
import z from 'zod'
import CommandRender from '../CommandRender'
import { INVOCATION_TABS } from './EdgeFunctionDetails.constants'
import { generateCLICommands } from './EdgeFunctionDetails.utils'
import AlertError from '@/components/ui/AlertError'
import { getKeys, useAPIKeysQuery } from '@/data/api-keys/api-keys-query'
import { useProjectSettingsV2Query } from '@/data/config/project-settings-v2-query'
import { useCustomDomainsQuery } from '@/data/custom-domains/custom-domains-query'
import { useEdgeFunctionQuery } from '@/data/edge-functions/edge-function-query'
import { useEdgeFunctionDeleteMutation } from '@/data/edge-functions/edge-functions-delete-mutation'
import { useEdgeFunctionUpdateMutation } from '@/data/edge-functions/edge-functions-update-mutation'
import { useAsyncCheckPermissions } from '@/hooks/misc/useCheckPermissions'
import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
import { DOCS_URL } from '@/lib/constants'
const FormSchema = z.object({
name: z.string().min(0, 'Name is required'),
@@ -78,11 +78,13 @@ export const EdgeFunctionDetails = () => {
const [selectedTab, setSelectedTab] = useState(invocationTabs[0].id)
const [showDeleteModal, setShowDeleteModal] = useState(false)
const { can: canUpdateEdgeFunction } = useAsyncCheckPermissions(
const { can: canUpdateEdgeFunctionPermission } = useAsyncCheckPermissions(
PermissionAction.FUNCTIONS_WRITE,
'*'
)
const canUpdateEdgeFunction = IS_PLATFORM && canUpdateEdgeFunctionPermission
const { can: canReadAPIKeys } = useAsyncCheckPermissions(PermissionAction.SECRETS_READ, '*')
const { data: apiKeys } = useAPIKeysQuery(
{
@@ -197,8 +199,12 @@ export const EdgeFunctionDetails = () => {
/>
</dd>
<dt className="text-sm text-foreground-light">Region</dt>
<dd className="text-sm @lg:text-left">All functions are deployed globally</dd>
{IS_PLATFORM && (
<>
<dt className="text-sm text-foreground-light">Region</dt>
<dd className="text-sm @lg:text-left">All functions are deployed globally</dd>
</>
)}
<dt className="text-sm text-foreground-light">Created at</dt>
<dd className="text-sm @lg:text-left">
@@ -278,53 +284,58 @@ export const EdgeFunctionDetails = () => {
)}
/>
</CardContent>
<CardContent>
<FormField_Shadcn_
control={form.control}
name="verify_jwt"
render={({ field }) => (
<FormItemLayout
label="Verify JWT with legacy secret"
layout="flex-row-reverse"
description={
<>
Requires that a JWT signed{' '}
<em className="text-brand not-italic">
only by the legacy JWT secret
</em>{' '}
is present in the <code>Authorization</code> header. The easy to
obtain <code>anon</code> key can be used to satisfy this
requirement. Recommendation: OFF with JWT and additional
authorization logic implemented inside your function's code.
</>
}
{IS_PLATFORM && (
<>
<CardContent>
<FormField_Shadcn_
control={form.control}
name="verify_jwt"
render={({ field }) => (
<FormItemLayout
label="Verify JWT with legacy secret"
layout="flex-row-reverse"
description={
<>
Requires that a JWT signed{' '}
<em className="text-brand not-italic">
only by the legacy JWT secret
</em>{' '}
is present in the <code>Authorization</code> header. The easy to
obtain <code>anon</code> key can be used to satisfy this
requirement. Recommendation: OFF with JWT and additional
authorization logic implemented inside your function's code.
</>
}
>
<FormControl_Shadcn_>
<Switch
checked={field.value}
onCheckedChange={field.onChange}
disabled={!canUpdateEdgeFunction}
/>
</FormControl_Shadcn_>
</FormItemLayout>
)}
/>
</CardContent>
<CardFooter className="flex justify-end space-x-2">
{form.formState.isDirty && (
<Button type="default" onClick={() => form.reset()}>
Cancel
</Button>
)}
<Button
type="primary"
htmlType="submit"
loading={isUpdating}
disabled={!canUpdateEdgeFunction || !form.formState.isDirty}
>
<FormControl_Shadcn_>
<Switch
checked={field.value}
onCheckedChange={field.onChange}
disabled={!canUpdateEdgeFunction}
/>
</FormControl_Shadcn_>
</FormItemLayout>
)}
/>
</CardContent>
<CardFooter className="flex justify-end space-x-2">
{form.formState.isDirty && (
<Button type="default" onClick={() => form.reset()}>
Cancel
</Button>
)}
<Button
type="primary"
htmlType="submit"
loading={isUpdating}
disabled={!canUpdateEdgeFunction || !form.formState.isDirty}
>
Save changes
</Button>
</CardFooter>
Save changes
</Button>
</CardFooter>
</>
)}
</Card>
</form>
</Form_Shadcn_>
@@ -401,81 +412,84 @@ export const EdgeFunctionDetails = () => {
</PageSectionContent>
</PageSection>
<PageSection>
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>Develop locally</PageSectionTitle>
</PageSectionSummary>
</PageSectionMeta>
<PageSectionContent>
<div className="rounded border bg-surface-100 px-6 py-4 drop-shadow-sm">
<div className="space-y-6">
<CommandRender
commands={[
{
command: `supabase functions download ${selectedFunction?.slug}`,
description: 'Download the function to your local machine',
jsx: () => (
<>
<span className="text-brand-600">supabase</span> functions download{' '}
{selectedFunction?.slug}
</>
),
comment: '1. Download the function',
},
]}
/>
<CommandRender commands={[managementCommands[0]]} />
<CommandRender commands={[managementCommands[1]]} />
</div>
</div>
</PageSectionContent>
</PageSection>
<PageSection>
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>Delete function</PageSectionTitle>
</PageSectionSummary>
</PageSectionMeta>
<PageSectionContent>
<Alert_Shadcn_ variant="destructive">
<CriticalIcon />
<AlertTitle_Shadcn_>
Once your function is deleted, it can no longer be restored
</AlertTitle_Shadcn_>
<AlertDescription_Shadcn_>
Make sure you have made a backup if you want to restore your edge function
</AlertDescription_Shadcn_>
<AlertDescription_Shadcn_ className="mt-3">
<Button
type="danger"
disabled={!canUpdateEdgeFunction}
loading={selectedFunction?.id === undefined}
onClick={() => setShowDeleteModal(true)}
>
Delete edge function
</Button>
</AlertDescription_Shadcn_>
</Alert_Shadcn_>
</PageSectionContent>
</PageSection>
<ConfirmationModal
visible={showDeleteModal}
loading={isDeleting}
variant="destructive"
confirmLabel="Delete"
confirmLabelLoading="Deleting"
title={`Confirm to delete ${selectedFunction?.name}`}
onCancel={() => setShowDeleteModal(false)}
onConfirm={onConfirmDelete}
alert={{
base: { variant: 'destructive' },
title: 'This action cannot be undone',
description:
'Ensure that you have made a backup if you want to restore your edge function',
}}
/>
{IS_PLATFORM && (
<>
<PageSection>
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>Develop locally</PageSectionTitle>
</PageSectionSummary>
</PageSectionMeta>
<PageSectionContent>
<div className="rounded border bg-surface-100 px-6 py-4 drop-shadow-sm">
<div className="space-y-6">
<CommandRender
commands={[
{
command: `supabase functions download ${selectedFunction?.slug}`,
description: 'Download the function to your local machine',
jsx: () => (
<>
<span className="text-brand-600">supabase</span> functions download{' '}
{selectedFunction?.slug}
</>
),
comment: '1. Download the function',
},
]}
/>
<CommandRender commands={[managementCommands[0]]} />
<CommandRender commands={[managementCommands[1]]} />
</div>
</div>
</PageSectionContent>
</PageSection>
<PageSection>
<PageSectionMeta>
<PageSectionSummary>
<PageSectionTitle>Delete function</PageSectionTitle>
</PageSectionSummary>
</PageSectionMeta>
<PageSectionContent>
<Alert_Shadcn_ variant="destructive">
<CriticalIcon />
<AlertTitle_Shadcn_>
Once your function is deleted, it can no longer be restored
</AlertTitle_Shadcn_>
<AlertDescription_Shadcn_>
Make sure you have made a backup if you want to restore your edge function
</AlertDescription_Shadcn_>
<AlertDescription_Shadcn_ className="mt-3">
<Button
type="danger"
disabled={!canUpdateEdgeFunction}
loading={selectedFunction?.id === undefined}
onClick={() => setShowDeleteModal(true)}
>
Delete edge function
</Button>
</AlertDescription_Shadcn_>
</Alert_Shadcn_>
</PageSectionContent>
</PageSection>
<ConfirmationModal
visible={showDeleteModal}
loading={isDeleting}
variant="destructive"
confirmLabel="Delete"
confirmLabelLoading="Deleting"
title={`Confirm to delete ${selectedFunction?.name}`}
onCancel={() => setShowDeleteModal(false)}
onConfirm={onConfirmDelete}
alert={{
base: { variant: 'destructive' },
title: 'This action cannot be undone',
description:
'Ensure that you have made a backup if you want to restore your edge function',
}}
/>
</>
)}
</PageSectionContent>
</PageSection>
</PageContainer>
@@ -1,16 +1,16 @@
import { IS_PLATFORM } from 'common'
import { useParams } from 'common/hooks'
import dayjs from 'dayjs'
import { Check, Copy } from 'lucide-react'
import { useRouter } from 'next/router'
import { useState } from 'react'
import { IS_PLATFORM } from 'common'
import { useParams } from 'common/hooks'
import { useProjectSettingsV2Query } from 'data/config/project-settings-v2-query'
import { useCustomDomainsQuery } from 'data/custom-domains/custom-domains-query'
import type { EdgeFunctionsResponse } from 'data/edge-functions/edge-functions-query'
import { cn, copyToClipboard, TableCell, TableRow } from 'ui'
import { TableCell, TableRow, copyToClipboard } from 'ui'
import { TimestampInfo } from 'ui-patterns'
import { createNavigationHandler } from 'lib/navigation'
import { useProjectSettingsV2Query } from '@/data/config/project-settings-v2-query'
import { useCustomDomainsQuery } from '@/data/custom-domains/custom-domains-query'
import type { EdgeFunctionsResponse } from '@/data/edge-functions/edge-functions-query'
import { createNavigationHandler } from '@/lib/navigation'
interface EdgeFunctionsListItemProps {
function: EdgeFunctionsResponse
@@ -31,9 +31,10 @@ export const EdgeFunctionsListItem = ({ function: item }: EdgeFunctionsListItemP
? `https://${customDomainData.customDomain.hostname}/functions/v1/${item.slug}`
: `${protocol}://${endpoint}/functions/v1/${item.slug}`
const handleNavigation = IS_PLATFORM
? createNavigationHandler(`/project/${ref}/functions/${item.slug}`, router)
: undefined
const handleNavigation = createNavigationHandler(
`/project/${ref}/functions/${item.slug}${IS_PLATFORM ? '' : `/details`}`,
router
)
return (
<TableRow
@@ -42,7 +43,7 @@ export const EdgeFunctionsListItem = ({ function: item }: EdgeFunctionsListItemP
onAuxClick={handleNavigation}
onKeyDown={handleNavigation}
tabIndex={0}
className={cn({ 'cursor-pointer inset-focus': IS_PLATFORM })}
className="cursor-pointer inset-focus"
>
<TableCell>
<p className="text-sm text-foreground whitespace-nowrap py-2">{item.name}</p>
@@ -360,16 +360,15 @@ curl --request POST 'http://localhost:54321/functions/v1/hello-world' \\
export const FunctionsSecretsEmptyStateLocal = () => {
return (
<Card>
<CardHeader>
<CardTitle>Managing secrets and environment variables locally</CardTitle>
</CardHeader>
<CardContent className="p-0 grid grid-cols-[repeat(auto-fit,minmax(240px,1fr))] divide-y md:divide-y-0 md:divide-x divide-default items-stretch">
<div className="p-8">
<div className="flex items-center gap-2">
<Lock size={20} />
<h4 className="text-base text-foreground">Managing secrets</h4>
<>
<Card>
<CardHeader className="flex-row items-center justify-between">
Local development & CLI
<div className="flex items-center gap-x-2">
<DocsButton href={`${DOCS_URL}/guides/functions/secrets#using-the-cli`} />
</div>
</CardHeader>
<CardContent>
<div className="text-sm text-foreground-light mt-1 mb-4 max-w-3xl">
<p>
Local secrets and environment variables can be loaded in either of the following two
@@ -386,9 +385,50 @@ export const FunctionsSecretsEmptyStateLocal = () => {
</li>
</ul>
</div>
<DocsButton href={`${DOCS_URL}/guides/functions/secrets#using-the-cli`} />
</div>
</CardContent>
</Card>
</CardContent>
</Card>
<Card>
<CardHeader className="flex-row items-center justify-between">
Self-Hosted Supabase
<div className="flex items-center gap-x-2">
<DocsButton href={`${DOCS_URL}/guides/self-hosting/docker#configuring-services`} />
</div>
</CardHeader>
<CardContent>
<p className="prose [&>code]:text-xs space-x-1 text-sm max-w-full">
<span>Change settings in</span>
<a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/supabase/supabase/blob/master/docker/.env.example"
>
.env file
</a>
<span>and</span>
<a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/supabase/supabase/blob/master/docker/docker-compose.yml"
>
docker-compose.yml
</a>
<span>at</span>
<code>functions</code>
<span>service</span>
</p>
<p className="prose [&>code]:text-xs space-x-1 text-sm max-w-full">
<span>Secrets can also be loaded at runtime by injecting them into</span>
<a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/supabase/supabase/blob/8bb82bb3a5aee631e8e6e6e0c8a5f6e97fb8f898/docker/volumes/functions/main/index.ts#L74"
>
main/index.ts file
</a>
</p>
</CardContent>
</Card>
</>
)
}
@@ -1,13 +1,8 @@
import { zodResolver } from '@hookform/resolvers/zod'
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { parseAsString, useQueryState } from 'nuqs'
import { useEffect, useState } from 'react'
import { SubmitHandler, useForm } from 'react-hook-form'
import { toast } from 'sonner'
import { useWatch } from '@ui/components/shadcn/ui/form'
import { useParams } from 'common'
import EnableExtensionModal from 'components/interfaces/Database/Extensions/EnableExtensionModal'
import { EnableExtensionModal } from 'components/interfaces/Database/Extensions/EnableExtensionModal'
import { ButtonTooltip } from 'components/ui/ButtonTooltip'
import { getDatabaseCronJob } from 'data/database-cron-jobs/database-cron-job-query'
import { useDatabaseCronJobCreateMutation } from 'data/database-cron-jobs/database-cron-jobs-create-mutation'
@@ -17,11 +12,15 @@ import { useSendEventMutation } from 'data/telemetry/send-event-mutation'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { parseAsString, useQueryState } from 'nuqs'
import { useEffect, useState } from 'react'
import { SubmitHandler, useForm } from 'react-hook-form'
import { toast } from 'sonner'
import {
Button,
Form_Shadcn_,
FormControl_Shadcn_,
FormField_Shadcn_,
Form_Shadcn_,
Input_Shadcn_,
RadioGroupStacked,
RadioGroupStackedItem,
@@ -34,6 +33,7 @@ import {
} from 'ui'
import { Admonition } from 'ui-patterns/admonition'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
import { CRONJOB_DEFINITIONS } from '../CronJobs.constants'
import { buildCronQuery, buildHttpRequestCommand, parseCronJobCommand } from '../CronJobs.utils'
import { EdgeFunctionSection } from '../EdgeFunctionSection'
@@ -43,9 +43,9 @@ import { HttpRequestSection } from '../HttpRequestSection'
import { SqlFunctionSection } from '../SqlFunctionSection'
import { SqlSnippetSection } from '../SqlSnippetSection'
import {
FormSchema,
type CreateCronJobForm,
type CronJobType,
FormSchema,
} from './CreateCronJobSheet.constants'
import { CronJobScheduleSection } from './CronJobScheduleSection'
@@ -1,7 +1,6 @@
import { useState } from 'react'
import EnableExtensionModal from 'components/interfaces/Database/Extensions/EnableExtensionModal'
import { EnableExtensionModal } from 'components/interfaces/Database/Extensions/EnableExtensionModal'
import { DatabaseExtension } from 'data/database-extensions/database-extensions-query'
import { useState } from 'react'
import { Button } from 'ui'
export const MissingExtensionAlert = ({ extension }: { extension: DatabaseExtension }) => {
@@ -1,34 +1,31 @@
import { zodResolver } from '@hookform/resolvers/zod'
import { IS_PLATFORM, useFlag, useParams } from 'common'
import { LogDrainData, useLogDrainsQuery } from 'data/log-drains/log-drains-query'
import { DOCS_URL } from 'lib/constants'
import { useTrack } from 'lib/telemetry/track'
import { TrashIcon } from 'lucide-react'
import Link from 'next/link'
import { ReactNode, useEffect, useState } from 'react'
import { useForm } from 'react-hook-form'
import { toast } from 'sonner'
import { z } from 'zod'
import { IS_PLATFORM, useFlag, useParams } from 'common'
import { LogDrainData, useLogDrainsQuery } from 'data/log-drains/log-drains-query'
import { DOCS_URL } from 'lib/constants'
import {
Button,
cn,
Form_Shadcn_,
FormControl_Shadcn_,
FormField_Shadcn_,
FormItem_Shadcn_,
FormLabel_Shadcn_,
FormMessage_Shadcn_,
Form_Shadcn_,
Input_Shadcn_,
RadioGroupCard,
RadioGroupCardItem,
Select_Shadcn_,
SelectContent_Shadcn_,
SelectGroup_Shadcn_,
SelectItem_Shadcn_,
SelectLabel_Shadcn_,
SelectTrigger_Shadcn_,
SelectValue_Shadcn_,
Select_Shadcn_,
Sheet,
SheetContent,
SheetFooter,
@@ -36,9 +33,12 @@ import {
SheetSection,
SheetTitle,
Switch,
cn,
} from 'ui'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
import { InfoTooltip } from 'ui-patterns/info-tooltip'
import { z } from 'zod'
import { urlRegex } from '../Auth/Auth.constants'
import { DATADOG_REGIONS, LOG_DRAIN_TYPES, LogDrainType } from './LogDrains.constants'
@@ -91,9 +91,14 @@ const formUnion = z.discriminatedUnion('type', [
}),
z.object({
type: z.literal('s3'),
}),
z.object({
type: z.literal('axiom'),
s3_bucket: z.string().min(1, { message: 'Bucket name is required' }),
storage_region: z.string().min(1, { message: 'Region is required' }),
access_key_id: z.string().min(1, { message: 'Access Key ID is required' }),
secret_access_key: z.string().min(1, { message: 'Secret Access Key is required' }),
batch_timeout: z.coerce
.number()
.int({ message: 'Batch timeout must be an integer' })
.min(1, { message: 'Batch timeout must be a positive integer' }),
}),
z.object({
type: z.literal('sentry'),
@@ -102,6 +107,11 @@ const formUnion = z.discriminatedUnion('type', [
.min(1, { message: 'Sentry DSN is required' })
.refine((dsn) => dsn.startsWith('https://'), 'Sentry DSN must start with https://'),
}),
z.object({
type: z.literal('axiom'),
api_token: z.string().min(1, { message: 'API token is required' }),
dataset_name: z.string().min(1, { message: 'Dataset name is required' }),
}),
])
const formSchema = z
@@ -120,7 +130,6 @@ function LogDrainFormItem({
formControl,
placeholder,
type,
defaultValue,
}: {
value: string
label: string
@@ -128,7 +137,6 @@ function LogDrainFormItem({
placeholder?: string
description?: ReactNode
type?: string
defaultValue?: string
}) {
return (
<FormField_Shadcn_
@@ -137,12 +145,7 @@ function LogDrainFormItem({
render={({ field }) => (
<FormItemLayout layout="horizontal" label={label} description={description || ''}>
<FormControl_Shadcn_>
<Input_Shadcn_
defaultValue={defaultValue}
type={type || 'text'}
placeholder={placeholder}
{...field}
/>
<Input_Shadcn_ type={type || 'text'} placeholder={placeholder} {...field} />
</FormControl_Shadcn_>
</FormItemLayout>
)}
@@ -178,6 +181,8 @@ export function LogDrainDestinationSheetForm({
const DEFAULT_HEADERS = mode === 'create' ? CREATE_DEFAULT_HEADERS : defaultConfig?.headers || {}
const sentryEnabled = useFlag('SentryLogDrain')
const s3Enabled = useFlag('S3logdrain')
const axiomEnabled = useFlag('axiomLogDrain')
const { ref } = useParams()
const { data: logDrains } = useLogDrainsQuery({
@@ -203,6 +208,13 @@ export function LogDrainDestinationSheetForm({
username: defaultConfig?.username || '',
password: defaultConfig?.password || '',
dsn: defaultConfig?.dsn || '',
s3_bucket: defaultConfig?.s3_bucket || '',
storage_region: defaultConfig?.storage_region || '',
access_key_id: defaultConfig?.access_key_id || '',
secret_access_key: defaultConfig?.secret_access_key || '',
batch_timeout: defaultConfig?.batch_timeout ?? 3000,
dataset_name: defaultConfig?.dataset_name || '',
api_token: defaultConfig?.api_token || '',
},
})
@@ -290,10 +302,7 @@ export function LogDrainDestinationSheetForm({
form.handleSubmit(onSubmit)(e)
track('log_drain_save_button_clicked', {
destination: form.getValues('type') as Exclude<
LogDrainType,
'elastic' | 'postgres' | 'bigquery' | 'clickhouse' | 's3' | 'axiom'
>,
destination: form.getValues('type'),
})
}}
>
@@ -327,18 +336,21 @@ export function LogDrainDestinationSheetForm({
{LOG_DRAIN_TYPES.find((t) => t.value === type)?.name}
</SelectTrigger_Shadcn_>
<SelectContent_Shadcn_>
{LOG_DRAIN_TYPES.filter((t) => t.value !== 'sentry' || sentryEnabled).map(
(type) => (
<SelectItem_Shadcn_
value={type.value}
key={type.value}
id={type.value}
className="text-left"
>
{type.name}
</SelectItem_Shadcn_>
)
)}
{LOG_DRAIN_TYPES.filter((t) => {
if (t.value === 'sentry') return sentryEnabled
if (t.value === 's3') return s3Enabled
if (t.value === 'axiom') return axiomEnabled
return true
}).map((type) => (
<SelectItem_Shadcn_
value={type.value}
key={type.value}
id={type.value}
className="text-left"
>
{type.name}
</SelectItem_Shadcn_>
))}
</SelectContent_Shadcn_>
</Select_Shadcn_>
</FormItemLayout>
@@ -517,6 +529,69 @@ export function LogDrainDestinationSheetForm({
/>
</div>
)}
{type === 's3' && (
<div className="grid gap-4 px-content">
<LogDrainFormItem
value="s3_bucket"
label="S3 Bucket"
placeholder="my-log-bucket"
formControl={form.control}
description="The name of an existing S3 bucket."
/>
<LogDrainFormItem
value="storage_region"
label="Region"
placeholder="us-east-1"
formControl={form.control}
description="AWS region where the bucket is located."
/>
<LogDrainFormItem
value="access_key_id"
label="Access Key ID"
placeholder="AKIA..."
formControl={form.control}
/>
<LogDrainFormItem
type="password"
value="secret_access_key"
label="Secret Access Key"
placeholder="••••••••••••••••"
formControl={form.control}
/>
<LogDrainFormItem
type="number"
value="batch_timeout"
label="Batch Timeout (ms)"
placeholder="3000"
formControl={form.control}
description="Recommended 2000–5000ms."
/>
<p className="text-xs text-foreground-lighter">
Ensure the account tied to the Access Key ID can write to the specified
bucket.
</p>
</div>
)}
{type === 'axiom' && (
<div className="grid gap-4 px-content">
<LogDrainFormItem
type="text"
value="dataset_name"
label="Dataset name"
placeholder="dataset"
formControl={form.control}
description="Name of the dataset in Axiom where the logs will be sent."
/>
<LogDrainFormItem
type="text"
value="api_token"
label="API Token"
placeholder="xaat-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
formControl={form.control}
description="Token allowing ingest access to the specified dataset"
/>
</div>
)}
<FormMessage_Shadcn_ />
</div>
</form>
@@ -1,6 +1,7 @@
import { components } from 'api-types'
import { Datadog, Grafana, Sentry } from 'icons'
import { BracesIcon } from 'lucide-react'
import { Axiom } from 'icons'
import { BracesIcon, Cloud } from 'lucide-react'
const iconProps = {
height: 24,
@@ -30,6 +31,12 @@ export const LOG_DRAIN_TYPES = [
'Loki is an open-source log aggregation system designed to store and query logs from multiple sources',
icon: <Grafana {...iconProps} fill="currentColor" strokeWidth={0} />,
},
{
value: 's3',
name: 'Amazon S3',
description: 'Forward logs to an S3 bucket',
icon: <Cloud {...iconProps} />,
},
{
value: 'sentry',
name: 'Sentry',
@@ -37,6 +44,13 @@ export const LOG_DRAIN_TYPES = [
'Sentry is an application monitoring service that helps developers identify and debug performance issues and errors',
icon: <Sentry {...iconProps} fill="currentColor" strokeWidth={0} />,
},
{
value: 'axiom',
name: 'Axiom',
description:
'Axiom is a data platform designed to efficiently collect, store, and analyze event and telemetry data at massive scale.',
icon: <Axiom {...iconProps} fill="currentColor" strokeWidth={0} />,
},
] as const
export const LOG_DRAIN_SOURCE_VALUES = LOG_DRAIN_TYPES.map((source) => source.value)
@@ -1,17 +1,15 @@
import { MoreHorizontal, Pencil, TrashIcon } from 'lucide-react'
import React, { useState } from 'react'
import { toast } from 'sonner'
import { IS_PLATFORM, useFlag, useParams } from 'common'
import AlertError from 'components/ui/AlertError'
import { useDeleteLogDrainMutation } from 'data/log-drains/delete-log-drain-mutation'
import { LogDrainData, useLogDrainsQuery } from 'data/log-drains/log-drains-query'
import { useCheckEntitlements } from 'hooks/misc/useCheckEntitlements'
import { useTrack } from 'lib/telemetry/track'
import { MoreHorizontal, Pencil, TrashIcon } from 'lucide-react'
import React, { cloneElement, useState } from 'react'
import { toast } from 'sonner'
import {
Button,
Card,
cn,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
@@ -22,9 +20,11 @@ import {
TableHead,
TableHeader,
TableRow,
cn,
} from 'ui'
import ConfirmationModal from 'ui-patterns/Dialogs/ConfirmationModal'
import { GenericSkeletonLoader } from 'ui-patterns/ShimmeringLoader'
import { LOG_DRAIN_TYPES, LogDrainType } from './LogDrains.constants'
import { LogDrainsCard } from './LogDrainsCard'
import { LogDrainsEmpty } from './LogDrainsEmpty'
@@ -56,6 +56,8 @@ export function LogDrains({
}
)
const sentryEnabled = useFlag('SentryLogDrain')
const s3Enabled = useFlag('S3logdrain')
const axiomEnabled = useFlag('axiomLogDrain')
const hasLogDrains = !!logDrains?.length
const { mutate: deleteLogDrain } = useDeleteLogDrainMutation({
@@ -90,7 +92,12 @@ export function LogDrains({
return (
<>
<div className="grid lg:grid-cols-2 gap-4">
{LOG_DRAIN_TYPES.filter((t) => t.value !== 'sentry' || sentryEnabled).map((src) => (
{LOG_DRAIN_TYPES.filter((t) => {
if (t.value === 'sentry') return sentryEnabled
if (t.value === 's3') return s3Enabled
if (t.value === 'axiom') return axiomEnabled
return true
}).map((src) => (
<LogDrainsCard
key={src.value}
title={src.name}
@@ -142,13 +149,16 @@ export function LogDrains({
</TableCell>
<TableCell className="text-foreground-light">
<div className="flex items-center gap-2">
{React.cloneElement(
LOG_DRAIN_TYPES.find((t) => t.value === drain.type)
?.icon as React.ReactElement,
{ width: 16, height: 16 }
{LOG_DRAIN_TYPES.find((t) => t.value === drain.type)?.icon && (
<span className="text-foreground-light">
{cloneElement(LOG_DRAIN_TYPES.find((t) => t.value === drain.type)!.icon, {
height: 16,
width: 16,
})}
</span>
)}
<span className="truncate max-w-40">
{LOG_DRAIN_TYPES.find((t) => t.value === drain.type)?.name}
{LOG_DRAIN_TYPES.find((t) => t.value === drain.type)?.name ?? drain.type}
</span>
</div>
</TableCell>
@@ -195,10 +205,7 @@ export function LogDrains({
if (selectedLogDrain && ref) {
deleteLogDrain({ token: selectedLogDrain.token, projectRef: ref })
track('log_drain_confirm_button_submitted', {
destination: selectedLogDrain.type as Exclude<
LogDrainType,
'elastic' | 'postgres' | 'bigquery' | 'clickhouse' | 's3' | 'axiom'
>,
destination: selectedLogDrain.type,
})
}
}}
@@ -32,7 +32,7 @@ export const FormSchema = z
dbPassStrengthWarning: z.string().default(''),
instanceSize: z.string().optional(),
dataApi: z.boolean(),
useApiSchema: z.boolean(),
enableRlsEventTrigger: z.boolean(),
postgresVersionSelection: z.string(),
useOrioleDb: z.boolean(),
})
@@ -1,18 +1,16 @@
import { ChevronRight } from 'lucide-react'
import { UseFormReturn } from 'react-hook-form'
import Panel from 'components/ui/Panel'
import { usePHFlag } from 'hooks/ui/useFlag'
import Link from 'next/link'
import {
Badge,
cn,
Collapsible_Shadcn_,
CollapsibleContent_Shadcn_,
CollapsibleTrigger_Shadcn_,
Checkbox_Shadcn_,
FormControl_Shadcn_,
FormDescription_Shadcn_,
FormField_Shadcn_,
FormItem_Shadcn_,
RadioGroupStacked,
RadioGroupStackedItem,
FormLabel_Shadcn_,
useWatch_Shadcn_,
} from 'ui'
import { Admonition } from 'ui-patterns'
import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout'
@@ -21,159 +19,87 @@ import { CreateProjectForm } from './ProjectCreation.schema'
interface SecurityOptionsProps {
form: UseFormReturn<CreateProjectForm>
layout?: 'vertical' | 'horizontal'
collapsible?: boolean
}
export const SecurityOptions = ({
form,
layout = 'horizontal',
collapsible = true,
}: SecurityOptionsProps) => {
const content = (
<>
<FormField_Shadcn_
name="dataApi"
control={form.control}
render={({ field }) => (
<>
<FormItemLayout
layout={layout}
className="[&>div>label]:!break-normal"
label="What connections do you plan to use?"
>
<FormControl_Shadcn_>
<RadioGroupStacked
// Due to radio group not supporting boolean values
// value is converted to boolean
onValueChange={(value) => field.onChange(value === 'true')}
defaultValue={field.value.toString()}
>
<FormItem_Shadcn_ asChild>
<FormControl_Shadcn_>
<RadioGroupStackedItem
value="true"
className="[&>div>div>p]:text-left [&>div>div>p]:text-xs"
label="Data API + Connection String"
description="Connect to Postgres via autogenerated HTTP APIs or the Postgres protocol"
/>
</FormControl_Shadcn_>
</FormItem_Shadcn_>
<FormItem_Shadcn_ asChild>
<FormControl_Shadcn_>
<RadioGroupStackedItem
label="Only Connection String"
value="false"
description="Use Postgres without the autogenerated APIs"
className={cn(
!form.getValues('dataApi') && '!rounded-b-none',
'[&>div>div>p]:text-left [&>div>div>p]:text-xs'
)}
onClick={() => form.setValue('useApiSchema', false)}
/>
</FormControl_Shadcn_>
</FormItem_Shadcn_>
</RadioGroupStacked>
</FormControl_Shadcn_>
{!form.getValues('dataApi') && (
<Admonition
className="rounded-t-none"
type="warning"
title="Data API will effectively be disabled"
>
PostgREST which powers the Data API will have no schemas available to it.
</Admonition>
)}
</FormItemLayout>
</>
)}
/>
{form.getValues('dataApi') && (
<FormField_Shadcn_
name="useApiSchema"
control={form.control}
render={({ field }) => (
<>
<FormItemLayout className="mt-6" layout={layout} label="Data API configuration">
<FormControl_Shadcn_>
<RadioGroupStacked
defaultValue={field.value.toString()}
onValueChange={(value) => field.onChange(value === 'true')}
>
<FormItem_Shadcn_ asChild>
<FormControl_Shadcn_>
<RadioGroupStackedItem
value="false"
// @ts-ignore
label={
<div className="flex items-center gap-2">
<span>Use public schema for Data API</span>
<Badge>Default</Badge>
</div>
}
// @ts-ignore
description={
<>
Query all tables in the{' '}
<code className="text-code-inline !text-[11px]">public</code> schema
</>
}
className="[&>div>div>p]:text-left [&>div>div>p]:text-xs"
/>
</FormControl_Shadcn_>
</FormItem_Shadcn_>
<FormItem_Shadcn_ asChild>
<FormControl_Shadcn_>
<RadioGroupStackedItem
value="true"
label="Use dedicated API schema for Data API"
// @ts-ignore
description={
<>
Query allowlisted tables in a dedicated{' '}
<code className="text-code-inline !text-[11px]">api</code> schema
</>
}
className="[&>div>div>p]:text-left [&>div>div>p]:text-xs"
/>
</FormControl_Shadcn_>
</FormItem_Shadcn_>
</RadioGroupStacked>
</FormControl_Shadcn_>
</FormItemLayout>
</>
)}
/>
)}
<p className="text-xs text-foreground-lighter mt-3">
These two security options can be changed after your project is created
</p>
</>
)
const collapsibleContent = (
<Collapsible_Shadcn_>
<CollapsibleTrigger_Shadcn_ className="group/advanced-trigger font-mono uppercase tracking-widest text-xs flex items-center gap-1 text-foreground-lighter/75 hover:text-foreground-light transition data-[state=open]:text-foreground-light">
Security options
<ChevronRight
size={16}
strokeWidth={1}
className="mr-2 group-data-[state=open]/advanced-trigger:rotate-90 group-hover/advanced-trigger:text-foreground-light transition"
/>
</CollapsibleTrigger_Shadcn_>
<CollapsibleContent_Shadcn_
className={cn(
'pt-5 data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down'
)}
>
{content}
</CollapsibleContent_Shadcn_>
</Collapsible_Shadcn_>
export const SecurityOptions = ({ form, layout = 'horizontal' }: SecurityOptionsProps) => {
const rlsExperimentVariant = usePHFlag<'control' | 'test' | false | undefined>(
'projectCreationEnableRlsEventTrigger'
)
const shouldShowEnableRlsEventTrigger = rlsExperimentVariant === 'test'
const dataApi = useWatch_Shadcn_({ control: form.control, name: 'dataApi' })
return (
<Panel.Content className={!collapsible ? 'p-0' : ''}>
{collapsible ? collapsibleContent : content}
<Panel.Content className="pb-8">
<FormItemLayout layout={layout} label="Security" isReactForm={false}>
<div className="flex flex-col gap-4">
<FormField_Shadcn_
name="dataApi"
control={form.control}
render={({ field }) => (
<FormItem_Shadcn_ className="flex items-start gap-3">
<FormControl_Shadcn_>
<Checkbox_Shadcn_
checked={field.value}
disabled={field.disabled}
onCheckedChange={(value) => field.onChange(value === true)}
/>
</FormControl_Shadcn_>
<div className="space-y-1">
<FormLabel_Shadcn_ className="text-sm text-foreground">
Enable Data API
</FormLabel_Shadcn_>
<FormDescription_Shadcn_ className="text-foreground-lighter">
Autogenerate a RESTful API for your public schema. Recommended if using a client
library like{' '}
<Link
href="https://supabase.com/docs/reference/javascript/introduction"
target="_blank"
className="text-link"
>
supabase-js
</Link>
.
</FormDescription_Shadcn_>
</div>
</FormItem_Shadcn_>
)}
/>
{shouldShowEnableRlsEventTrigger && (
<FormField_Shadcn_
name="enableRlsEventTrigger"
control={form.control}
render={({ field }) => (
<FormItem_Shadcn_ className="flex items-start gap-3">
<FormControl_Shadcn_>
<Checkbox_Shadcn_
checked={field.value}
disabled={field.disabled}
onCheckedChange={(value) => field.onChange(value === true)}
/>
</FormControl_Shadcn_>
<div className="space-y-1">
<FormLabel_Shadcn_ className="text-sm text-foreground">
Enable automatic RLS
</FormLabel_Shadcn_>
<FormDescription_Shadcn_ className="text-foreground-lighter">
Create an event trigger that automatically enables Row Level Security on all
new tables in the public schema.
</FormDescription_Shadcn_>
</div>
</FormItem_Shadcn_>
)}
/>
)}
{!dataApi && (
<Admonition type="warning" title="Data API will effectively be disabled">
You will not be able to query or mutate data via Supabase client libraries like
supabase-js.
</Admonition>
)}
</div>
</FormItemLayout>
</Panel.Content>
)
}
@@ -1,11 +1,10 @@
import { PLAN_REQUEST_EMPTY_PLACEHOLDER } from 'components/ui/UpgradePlanButton'
import { z } from 'zod'
import { isFeatureEnabled } from 'common'
import { PLAN_REQUEST_EMPTY_PLACEHOLDER } from 'components/ui/UpgradePlanButton'
import { CATEGORY_OPTIONS, type ExtendedSupportCategories } from './Support.constants'
const createFormSchema = (showClientLibraries: boolean) => {
const baseSchema = z.object({
export const SupportFormSchema = z
.object({
organizationSlug: z.string().min(1, 'Please select an organization'),
projectRef: z.string().min(1, 'Please select a project'),
category: z.enum(
@@ -15,7 +14,7 @@ const createFormSchema = (showClientLibraries: boolean) => {
]
),
severity: z.string(),
library: z.string(),
library: z.string().optional(),
subject: z.string().min(1, 'Please add a subject heading'),
message: z.string().min(1, "Please add a message about the issue that you're facing"),
affectedServices: z.string(),
@@ -23,45 +22,14 @@ const createFormSchema = (showClientLibraries: boolean) => {
attachDashboardLogs: z.boolean(),
dashboardSentryIssueId: z.string().optional(),
})
.refine(
(data) => {
return !data.message.includes(PLAN_REQUEST_EMPTY_PLACEHOLDER)
},
{
message: `Please let us know which plan you'd like to upgrade to for your organization`,
path: ['message'],
}
)
if (showClientLibraries) {
return baseSchema
.refine(
(data) => {
return !(data.category === 'Problem' && data.library === '')
},
{
message: "Please select the library that you're facing issues with",
path: ['library'],
}
)
.refine(
(data) => {
return !data.message.includes(PLAN_REQUEST_EMPTY_PLACEHOLDER)
},
{
message: `Please let us know which plan you'd like to upgrade to for your organization`,
path: ['message'],
}
)
}
// When showClientLibraries is false, make library optional and remove the refine validation
return baseSchema
.extend({
library: z.string().optional(),
})
.refine(
(data) => {
return !data.message.includes(PLAN_REQUEST_EMPTY_PLACEHOLDER)
},
{
message: `Please let us know which plan you'd like to upgrade to for your organization`,
path: ['message'],
}
)
}
const showClientLibraries = isFeatureEnabled('support:show_client_libraries')
export const SupportFormSchema = createFormSchema(showClientLibraries)
export type SupportFormValues = z.infer<typeof SupportFormSchema>
@@ -8,6 +8,7 @@ import { type OrganizationPlanID } from 'data/organizations/organization-query'
import { useOrganizationsQuery } from 'data/organizations/organizations-query'
import { useGenerateAttachmentURLsMutation } from 'data/support/generate-attachment-urls-mutation'
import { useDeploymentCommitQuery } from 'data/utils/deployment-commit-query'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { detectBrowser } from 'lib/helpers'
import { useProfile } from 'lib/profile'
import { type Dispatch, type MouseEventHandler } from 'react'
@@ -77,6 +78,7 @@ export const SupportFormV2 = ({ form, initialError, state, dispatch }: SupportFo
const { data: organizations } = useOrganizationsQuery()
const subscriptionPlanId = getOrgSubscriptionPlan(organizations, selectedOrgSlug)
const simplifiedSupportForm = useIsSimplifiedForm(organizationSlug, subscriptionPlanId)
const showClientLibraries = useIsFeatureEnabled('support:show_client_libraries')
const attachmentUpload = useAttachmentUpload()
const { mutateAsync: uploadDashboardLogFn } = useGenerateAttachmentURLsMutation()
@@ -105,6 +107,21 @@ export const SupportFormV2 = ({ form, initialError, state, dispatch }: SupportFo
})
const onSubmit: SubmitHandler<SupportFormValues> = async (formValues) => {
// Library is required when selecting "APIs and Client Libraries" category,
// but only when the library selector is visible (not in simplified form)
if (
!simplifiedSupportForm &&
showClientLibraries &&
formValues.category === SupportCategories.PROBLEM &&
!formValues.library
) {
form.setError('library', {
type: 'manual',
message: "Please select the library that you're facing issues with",
})
return
}
dispatch({ type: 'SUBMIT' })
const { attachDashboardLogs: formAttachDashboardLogs, ...values } = formValues
@@ -5,7 +5,7 @@ import React, { useEffect, useState, type PropsWithChildren } from 'react'
import { toast } from 'sonner'
import { BlobReader, BlobWriter, ZipWriter } from '@zip.js/zip.js'
import { useParams } from 'common'
import { IS_PLATFORM, useParams } from 'common'
import { useIsAPIDocsSidePanelEnabled } from 'components/interfaces/App/FeaturePreview/FeaturePreviewContext'
import { EdgeFunctionTesterSheet } from 'components/interfaces/Functions/EdgeFunctionDetails/EdgeFunctionTesterSheet'
import { APIDocsButton } from 'components/ui/APIDocsButton'
@@ -105,22 +105,26 @@ const EdgeFunctionDetailsLayout = ({
const navigationItems = functionSlug
? [
{
label: 'Overview',
href: `/project/${ref}/functions/${functionSlug}`,
},
{
label: 'Invocations',
href: `/project/${ref}/functions/${functionSlug}/invocations`,
},
{
label: 'Logs',
href: `/project/${ref}/functions/${functionSlug}/logs`,
},
{
label: 'Code',
href: `/project/${ref}/functions/${functionSlug}/code`,
},
...(IS_PLATFORM
? [
{
label: 'Overview',
href: `/project/${ref}/functions/${functionSlug}`,
},
{
label: 'Invocations',
href: `/project/${ref}/functions/${functionSlug}/invocations`,
},
{
label: 'Logs',
href: `/project/${ref}/functions/${functionSlug}/logs`,
},
{
label: 'Code',
href: `/project/${ref}/functions/${functionSlug}/code`,
},
]
: []),
{
label: 'Details',
href: `/project/${ref}/functions/${functionSlug}/details`,
@@ -260,54 +264,58 @@ const EdgeFunctionDetailsLayout = ({
/>
)}
<DocsButton href={`${DOCS_URL}/guides/functions`} />
<Popover_Shadcn_>
<PopoverTrigger_Shadcn_ asChild>
<Button type="default" icon={<Download />}>
Download
</Button>
</PopoverTrigger_Shadcn_>
<PopoverContent_Shadcn_ align="end" className="p-0">
<div className="p-3 flex flex-col gap-y-2">
<p className="text-xs text-foreground-light">Download via CLI</p>
<Input
copy
showCopyOnHover
readOnly
containerClassName=""
className="text-xs font-mono tracking-tighter"
value={`supabase functions download ${functionSlug}`}
/>
</div>
<Separator className="!bg-border-overlay" />
<div className="py-2 px-1">
{IS_PLATFORM && (
<>
<Popover_Shadcn_>
<PopoverTrigger_Shadcn_ asChild>
<Button type="default" icon={<Download />}>
Download
</Button>
</PopoverTrigger_Shadcn_>
<PopoverContent_Shadcn_ align="end" className="p-0">
<div className="p-3 flex flex-col gap-y-2">
<p className="text-xs text-foreground-light">Download via CLI</p>
<Input
copy
showCopyOnHover
readOnly
containerClassName=""
className="text-xs font-mono tracking-tighter"
value={`supabase functions download ${functionSlug}`}
/>
</div>
<Separator className="!bg-border-overlay" />
<div className="py-2 px-1">
<Button
type="text"
className="w-min hover:bg-transparent"
icon={<FileArchive />}
onClick={downloadFunction}
>
Download as ZIP
</Button>
</div>
</PopoverContent_Shadcn_>
</Popover_Shadcn_>
{!!functionSlug && (
<Button
type="text"
className="w-min hover:bg-transparent"
icon={<FileArchive />}
onClick={downloadFunction}
type="default"
icon={<Send />}
onClick={() => {
setIsOpen(true)
sendEvent({
action: 'edge_function_test_side_panel_opened',
groups: {
project: ref ?? 'Unknown',
organization: org?.slug ?? 'Unknown',
},
})
}}
>
Download as ZIP
Test
</Button>
</div>
</PopoverContent_Shadcn_>
</Popover_Shadcn_>
{!!functionSlug && (
<Button
type="default"
icon={<Send />}
onClick={() => {
setIsOpen(true)
sendEvent({
action: 'edge_function_test_side_panel_opened',
groups: {
project: ref ?? 'Unknown',
organization: org?.slug ?? 'Unknown',
},
})
}}
>
Test
</Button>
)}
</>
)}
</div>
</PageHeaderAside>
@@ -1,12 +1,6 @@
import { Copy, Download, Edit, Globe, Lock, MoreVertical, Trash } from 'lucide-react'
import Link from 'next/link'
import { type CSSProperties } from 'react'
import { toast } from 'sonner'
import { formatSql } from '@/lib/formatSql'
import { useFlag, useParams } from 'common'
import { useTableFilter } from 'components/grid/hooks/useTableFilter'
import { buildTableEditorUrl } from 'components/grid/SupabaseGrid.utils'
import { useTableFilter } from 'components/grid/hooks/useTableFilter'
import { getEntityLintDetails } from 'components/interfaces/TableGridEditor/TableEntity.utils'
import { EntityTypeIcon } from 'components/ui/EntityTypeIcon'
import { InlineLink } from 'components/ui/InlineLink'
@@ -19,17 +13,19 @@ import type { TableApiAccessData, TableApiAccessMap } from 'data/privileges/tabl
import { useTableRowsCountQuery } from 'data/table-rows/table-rows-count-query'
import { useQuerySchemaState } from 'hooks/misc/useSchemaQueryState'
import { useSelectedProjectQuery } from 'hooks/misc/useSelectedProject'
import { Copy, Download, Edit, Globe, Lock, MoreVertical, Trash } from 'lucide-react'
import Link from 'next/link'
import { type CSSProperties } from 'react'
import { toast } from 'sonner'
import {
useRoleImpersonationStateSnapshot,
type RoleImpersonationState,
useRoleImpersonationStateSnapshot,
} from 'state/role-impersonation-state'
import { useTableEditorStateSnapshot } from 'state/table-editor'
import { createTabId, useTabsStateSnapshot } from 'state/tabs'
import {
Badge,
Button,
cn,
copyToClipboard,
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
@@ -42,8 +38,12 @@ import {
TooltipContent,
TooltipTrigger,
TreeViewItemVariant,
cn,
copyToClipboard,
} from 'ui'
import { useExportAllRowsAsCsv, useExportAllRowsAsSql } from './ExportAllRows'
import { formatSql } from '@/lib/formatSql'
export interface EntityListItemProps {
id: number | string
@@ -275,8 +275,9 @@ export const EntityListItem = ({
})
try {
await copyToClipboard(formattedSchema)
toast.success('Table schema copied to clipboard', { id: toastId })
await copyToClipboard(formattedSchema, () => {
toast.success('Table schema copied to clipboard', { id: toastId })
})
} catch (err: any) {
toast.error('Failed to copy schema: ' + (err.message || err), { id: toastId })
}
@@ -0,0 +1,59 @@
import { useQuery } from '@tanstack/react-query'
import { UseCustomQueryOptions } from 'types'
import { ExecuteSqlError, executeSql } from '../sql/execute-sql-query'
import { getDatabaseExtensionDefaultSchemaSQL } from '../sql/queries/get-extension-default-schema'
import { databaseExtensionsKeys } from './keys'
type DatabaseExtensionDefaultSchemaVariables = {
extension?: string
projectRef?: string
connectionString?: string | null
}
async function getDatabaseExtensionDefaultSchema(
{ extension, projectRef, connectionString }: DatabaseExtensionDefaultSchemaVariables,
signal?: AbortSignal
) {
if (!extension) {
throw new Error('extension is required')
}
const sql = getDatabaseExtensionDefaultSchemaSQL({ extension })
const { result } = await executeSql(
{
projectRef,
connectionString,
sql,
queryKey: ['database-extension-default-schema', extension],
},
signal
)
return result[0] as { name: string; version: string; schema: string | null }
}
type DatabaseExtensionDefaultSchemaData = Awaited<
ReturnType<typeof getDatabaseExtensionDefaultSchema>
>
type DatabaseExtensionDefaultSchemaError = ExecuteSqlError
export const useDatabaseExtensionDefaultSchemaQuery = <TData = DatabaseExtensionDefaultSchemaData>(
{ projectRef, connectionString, extension }: DatabaseExtensionDefaultSchemaVariables,
{
enabled = true,
...options
}: UseCustomQueryOptions<
DatabaseExtensionDefaultSchemaData,
DatabaseExtensionDefaultSchemaError,
TData
> = {}
) =>
useQuery<DatabaseExtensionDefaultSchemaData, DatabaseExtensionDefaultSchemaError, TData>({
queryKey: databaseExtensionsKeys.defaultSchema(projectRef, extension),
queryFn: ({ signal }) =>
getDatabaseExtensionDefaultSchema({ projectRef, connectionString, extension }, signal),
enabled: enabled && typeof projectRef !== 'undefined' && typeof extension !== 'undefined',
...options,
})
@@ -1,4 +1,6 @@
export const databaseExtensionsKeys = {
list: (projectRef: string | undefined) =>
['projects', projectRef, 'database-extensions'] as const,
defaultSchema: (projectRef: string | undefined, extension: string | undefined) =>
['projects', projectRef, 'database-extensions', extension, 'default-schema'] as const,
}
@@ -41,7 +41,6 @@ export const useEdgeFunctionQuery = <TData = EdgeFunctionData>(
useQuery<EdgeFunctionData, EdgeFunctionError, TData>({
queryKey: edgeFunctionsKeys.detail(projectRef, slug),
queryFn: ({ signal }) => getEdgeFunction({ projectRef, slug }, signal),
enabled:
IS_PLATFORM && enabled && typeof projectRef !== 'undefined' && typeof slug !== 'undefined',
enabled: enabled && typeof projectRef !== 'undefined' && typeof slug !== 'undefined',
...options,
})
@@ -0,0 +1,9 @@
import { literal } from '@supabase/pg-meta/src/pg-format'
export const getDatabaseExtensionDefaultSchemaSQL = ({ extension }: { extension: string }) => {
const sql = /* SQL */ `
select name, version, schema from pg_available_extension_versions where name = ${literal(extension)} limit 1;
`.trim()
return sql
}
@@ -1,8 +1,7 @@
import { useEffect, useMemo, useRef } from 'react'
import { useTrackExperimentExposure } from 'hooks/misc/useTrackExperimentExposure'
import { usePHFlag } from 'hooks/ui/useFlag'
import { IS_PLATFORM } from 'lib/constants'
import { useTrack } from 'lib/telemetry/track'
import { useMemo } from 'react'
export enum RealtimeButtonVariant {
CONTROL = 'control',
@@ -30,9 +29,7 @@ export function useRealtimeExperiment({
isTable = false,
isRealtimeEnabled = false,
}: UseRealtimeExperimentOptions): UseRealtimeExperimentResult {
const track = useTrack()
const realtimeButtonVariant = usePHFlag<RealtimeButtonVariant>('realtimeButtonVariant')
const hasTrackedExposure = useRef(false)
const activeVariant = useMemo(() => {
if (!IS_PLATFORM) return null
@@ -42,25 +39,11 @@ export function useRealtimeExperiment({
return realtimeButtonVariant
}, [isTable, realtimeButtonVariant])
useEffect(() => {
if (!IS_PLATFORM) return
if (hasTrackedExposure.current) return
if (!isTable || !realtimeButtonVariant) return
const shouldTrack = IS_PLATFORM && isTable && !!realtimeButtonVariant
hasTrackedExposure.current = true
try {
track('realtime_experiment_exposed', {
experiment_id: 'realtimeButtonVariant',
variant: realtimeButtonVariant,
table_has_realtime_enabled: isRealtimeEnabled,
})
} catch (error) {
// Reset tracking flag on error to allow retry
hasTrackedExposure.current = false
console.error('Failed to track realtime experiment exposure:', error)
}
}, [isTable, realtimeButtonVariant, isRealtimeEnabled, track])
useTrackExperimentExposure('realtime', shouldTrack ? realtimeButtonVariant : undefined, {
table_has_realtime_enabled: isRealtimeEnabled,
})
return {
activeVariant,
@@ -1,10 +1,9 @@
import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
import { useEffect, useMemo, useRef } from 'react'
import { useTrackExperimentExposure } from 'hooks/misc/useTrackExperimentExposure'
import { usePHFlag } from 'hooks/ui/useFlag'
import { IS_PLATFORM } from 'lib/constants'
import { useTrack } from 'lib/telemetry/track'
import { useMemo } from 'react'
dayjs.extend(utc)
@@ -50,9 +49,7 @@ export function useTableCreateGeneratePolicies({
isNewRecord = false,
projectInsertedAt,
}: UseTableCreateGeneratePoliciesOptions): UseTableCreateGeneratePoliciesResult {
const track = useTrack()
const tableCreateGeneratePoliciesFlag = usePHFlag<string>('tableCreateGeneratePolicies')
const hasTrackedExposure = useRef(false)
const enabled = useMemo(() => {
if (!IS_PLATFORM) return false
@@ -60,28 +57,24 @@ export function useTableCreateGeneratePolicies({
return true
}, [tableCreateGeneratePoliciesFlag])
useEffect(() => {
if (!IS_PLATFORM) return
if (hasTrackedExposure.current) return
if (!isNewRecord) return
if (!isValidExperimentVariant(tableCreateGeneratePoliciesFlag)) return
if (!projectInsertedAt) return
const daysSinceCreation = useMemo(() => {
if (!projectInsertedAt) return undefined
const insertedDate = dayjs.utc(projectInsertedAt)
if (!insertedDate.isValid()) return undefined
return dayjs.utc().diff(insertedDate, 'day')
}, [projectInsertedAt])
try {
const insertedDate = dayjs.utc(projectInsertedAt)
if (!insertedDate.isValid()) return
const shouldTrack =
IS_PLATFORM &&
isNewRecord &&
isValidExperimentVariant(tableCreateGeneratePoliciesFlag) &&
daysSinceCreation !== undefined
const daysSinceCreation = dayjs.utc().diff(insertedDate, 'day')
track('table_create_generate_policies_experiment_exposed', {
experiment_id: 'tableCreateGeneratePolicies',
variant: tableCreateGeneratePoliciesFlag,
days_since_project_creation: daysSinceCreation,
})
hasTrackedExposure.current = true
} catch {
hasTrackedExposure.current = false
}
}, [isNewRecord, tableCreateGeneratePoliciesFlag, projectInsertedAt, track])
useTrackExperimentExposure(
'table_create_generate_policies',
shouldTrack ? tableCreateGeneratePoliciesFlag : undefined,
{ days_since_project_creation: daysSinceCreation }
)
return {
enabled,
@@ -0,0 +1,18 @@
import { hasConsented, posthogClient } from 'common'
import { useEffect } from 'react'
export function useTrackExperimentExposure(
experimentId: string,
variant: string | undefined,
extraProperties?: Record<string, any>
) {
useEffect(() => {
if (!variant) return
posthogClient.captureExperimentExposure(
experimentId,
{ variant, ...extraProperties },
hasConsented()
)
}, [experimentId, variant])
}
@@ -18,6 +18,17 @@ export class FileSystemFunctionsArtifactStore {
return functionsArtifacts.filter((f) => f !== undefined)
}
async getFunctionBySlug(slug: string): Promise<FunctionArtifact | undefined> {
const dirEntries = await readdir(this.folderPath, { withFileTypes: true })
const functionFolder = dirEntries.find(
(dir) => dir.isDirectory() && dir.name !== 'main' && dir.name === slug
)
if (!functionFolder) return
return parseFolderToFunctionArtifact(functionFolder)
}
}
async function parseFolderToFunctionArtifact(
@@ -0,0 +1,49 @@
import { type NextApiRequest, type NextApiResponse } from 'next'
import type { components } from 'api-types'
import { uuidv4 } from 'lib/helpers'
import apiWrapper from 'lib/api/apiWrapper'
import { getFunctionsArtifactStore } from 'lib/api/self-hosted/functions'
export default function handlerWithErrorCatching(req: NextApiRequest, res: NextApiResponse) {
return apiWrapper(req, res, handler, { withAuth: true })
}
async function handler(req: NextApiRequest, res: NextApiResponse) {
const { method } = req
switch (method) {
case 'GET':
return handleGet(req, res)
default:
res.setHeader('Allow', ['GET'])
res.status(405).json({ data: null, error: { message: `Method ${method} Not Allowed` } })
}
}
type EdgeFunctionsResponse = components['schemas']['FunctionResponse']
const handleGet = async (req: NextApiRequest, res: NextApiResponse) => {
const slugParam = req.query.slug
const slug = Array.isArray(slugParam) ? slugParam[0] : slugParam
if (!slug)
return res.status(404).json({ error: { message: `Missing function 'slug' parameter` } })
const store = getFunctionsArtifactStore()
const functionsArtifact = await store.getFunctionBySlug(slug)
if (!functionsArtifact) return res.status(404).json({ error: { message: `Function not found` } })
const functionResponse = {
id: uuidv4(),
slug: functionsArtifact.slug,
version: 1,
name: functionsArtifact.slug,
status: 'ACTIVE',
entrypoint_path: functionsArtifact.entrypoint_path,
created_at: functionsArtifact.created_at,
updated_at: functionsArtifact.updated_at,
} satisfies EdgeFunctionsResponse
return res.status(200).json(functionResponse)
}
+33 -6
View File
@@ -1,6 +1,7 @@
import { zodResolver } from '@hookform/resolvers/zod'
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { LOCAL_STORAGE_KEYS, useFlag, useParams } from 'common'
import { AUTO_ENABLE_RLS_EVENT_TRIGGER_SQL } from 'components/interfaces/Database/Triggers/EventTriggersList/EventTriggers.constants'
import { AdvancedConfiguration } from 'components/interfaces/ProjectCreation/AdvancedConfiguration'
import { CloudProviderSelector } from 'components/interfaces/ProjectCreation/CloudProviderSelector'
import { ComputeSizeSelector } from 'components/interfaces/ProjectCreation/ComputeSizeSelector'
@@ -43,9 +44,11 @@ import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { useIsFeatureEnabled } from 'hooks/misc/useIsFeatureEnabled'
import { useLocalStorageQuery } from 'hooks/misc/useLocalStorage'
import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization'
import { useTrackExperimentExposure } from 'hooks/misc/useTrackExperimentExposure'
import { withAuth } from 'hooks/misc/withAuth'
import { usePHFlag } from 'hooks/ui/useFlag'
import { DOCS_URL, PROJECT_STATUS, PROVIDERS, useDefaultProvider } from 'lib/constants'
import { useProfile } from 'lib/profile'
import { useTrack } from 'lib/telemetry/track'
import Link from 'next/link'
import { useRouter } from 'next/router'
@@ -66,8 +69,13 @@ const Wizard: NextPageWithLayout = () => {
const router = useRouter()
const { slug, projectName } = useParams()
const defaultProvider = useDefaultProvider()
const { profile } = useProfile()
const { data: currentOrg } = useSelectedOrganizationQuery()
const rlsExperimentVariant = usePHFlag<'control' | 'test' | false | undefined>(
'projectCreationEnableRlsEventTrigger'
)
const shouldShowEnableRlsEventTrigger = rlsExperimentVariant === 'test'
const isFreePlan = currentOrg?.plan?.id === 'free'
const canChooseInstanceSize = !isFreePlan
@@ -114,7 +122,7 @@ const Wizard: NextPageWithLayout = () => {
dbRegion: undefined,
instanceSize: canChooseInstanceSize ? sizes[0] : undefined,
dataApi: true,
useApiSchema: false,
enableRlsEventTrigger: false,
postgresVersionSelection: '',
useOrioleDb: false,
},
@@ -223,7 +231,13 @@ const Wizard: NextPageWithLayout = () => {
{ enabled: currentOrg !== null }
)
const shouldShowFreeProjectInfo = !!currentOrg && !isFreePlan
const userPrimaryEmail = profile?.primary_email?.toLowerCase()
const isUserAtFreeProjectLimit = userPrimaryEmail
? membersExceededLimit.some(
(member) => member.primary_email?.toLowerCase() === userPrimaryEmail
)
: false
const shouldShowFreeProjectInfo = !!currentOrg && !isFreePlan && !isUserAtFreeProjectLimit
const {
mutate: createProject,
@@ -235,8 +249,11 @@ const Wizard: NextPageWithLayout = () => {
'project_creation_simple_version_submitted',
{
instanceSize: form.getValues('instanceSize'),
enableRlsEventTrigger: form.getValues('enableRlsEventTrigger'),
...((rlsExperimentVariant === 'control' || rlsExperimentVariant === 'test') && {
rlsOptionVariant: rlsExperimentVariant,
}),
dataApiEnabled: form.getValues('dataApi'),
useApiSchema: form.getValues('useApiSchema'),
useOrioleDb: form.getValues('useOrioleDb'),
},
{
@@ -274,7 +291,7 @@ const Wizard: NextPageWithLayout = () => {
postgresVersion,
instanceSize,
dataApi,
useApiSchema,
enableRlsEventTrigger,
postgresVersionSelection,
useOrioleDb,
} = values
@@ -301,10 +318,11 @@ const Wizard: NextPageWithLayout = () => {
// only set the compute size on pro+ plans. Free plans always use micro (nano in the future) size.
dbInstanceSize: isFreePlan ? undefined : (instanceSize as DesiredInstanceSize),
dataApiExposedSchemas: !dataApi ? [] : undefined,
dataApiUseApiSchema: !dataApi ? false : useApiSchema,
dataApiUseApiSchema: false,
postgresEngine: useOrioleDb ? availableOrioleVersion?.postgres_engine : postgresEngine,
releaseChannel: useOrioleDb ? availableOrioleVersion?.release_channel : releaseChannel,
...(smartRegionEnabled ? { regionSelection: selectedRegion } : { dbRegion }),
...(enableRlsEventTrigger ? { dbSql: AUTO_ENABLE_RLS_EVENT_TRIGGER_SQL } : {}),
}
if (postgresVersion) {
@@ -371,6 +389,15 @@ const Wizard: NextPageWithLayout = () => {
}
}, [instanceSize, watchedInstanceSize, form])
// Track exposure to RLS option experiment (only when explicitly assigned to a variant)
const shouldTrackRlsExposure =
!!currentOrg?.slug && (rlsExperimentVariant === 'control' || rlsExperimentVariant === 'test')
useTrackExperimentExposure(
'project_creation_rls_option',
shouldTrackRlsExposure ? rlsExperimentVariant : undefined
)
return (
<Form_Shadcn_ {...form}>
<form onSubmit={form.handleSubmit(onSubmitWithComputeCostsConfirmation)}>
@@ -447,7 +474,7 @@ const Wizard: NextPageWithLayout = () => {
{shouldShowFreeProjectInfo ? (
<Admonition
className="rounded-none border-0"
className="rounded-none border-0 border-t"
type="note"
title="Need a free project?"
description={
@@ -1,5 +1,5 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { useParams } from 'common'
import { IS_PLATFORM, useParams } from 'common'
import { useFlag } from 'common'
import ReportWidget from 'components/interfaces/Reports/ReportWidget'
import DefaultLayout from 'components/layouts/DefaultLayout'
@@ -19,7 +19,7 @@ import maxBy from 'lodash/maxBy'
import meanBy from 'lodash/meanBy'
import sumBy from 'lodash/sumBy'
import { useRouter } from 'next/router'
import { useMemo, useState } from 'react'
import { useEffect, useMemo, useState } from 'react'
import type { ChartIntervals, NextPageWithLayout } from 'types'
import {
AlertDescription_Shadcn_,
@@ -65,6 +65,7 @@ const CHART_INTERVALS: ChartIntervals[] = [
const PageLayout: NextPageWithLayout = () => {
const router = useRouter()
const { ref: projectRef, functionSlug } = useParams()
const newChartsEnabled = useFlag('newEdgeFunctionOverviewCharts')
const [interval, setInterval] = useState<string>('15min')
const selectedInterval = CHART_INTERVALS.find((i) => i.key === interval) || CHART_INTERVALS[1]
@@ -18,7 +18,7 @@ const SecretsPage: NextPageWithLayout = () => {
return (
<PageContainer size="large">
<PageSection>
<PageSectionContent>
<PageSectionContent className="space-y-4 md:space-y-8">
{IS_PLATFORM ? <EdgeFunctionSecrets /> : <FunctionsSecretsEmptyStateLocal />}
</PageSectionContent>
</PageSection>
@@ -1,8 +1,6 @@
import { PermissionAction } from '@supabase/shared-types/out/constants'
import { useState } from 'react'
import { toast } from 'sonner'
import { IS_PLATFORM, useParams } from 'common'
import { useFlag } from 'common'
import { LogDrainDestinationSheetForm } from 'components/interfaces/LogDrains/LogDrainDestinationSheetForm'
import { LogDrains } from 'components/interfaces/LogDrains/LogDrains'
import { LOG_DRAIN_TYPES, LogDrainType } from 'components/interfaces/LogDrains/LogDrains.constants'
@@ -21,7 +19,9 @@ import { useCheckEntitlements } from 'hooks/misc/useCheckEntitlements'
import { useAsyncCheckPermissions } from 'hooks/misc/useCheckPermissions'
import { DOCS_URL } from 'lib/constants'
import { ChevronDown } from 'lucide-react'
import { useState } from 'react'
import { cloneElement } from 'react'
import { toast } from 'sonner'
import type { NextPageWithLayout } from 'types'
import {
Alert_Shadcn_,
@@ -51,6 +51,10 @@ const LogDrainsSettings: NextPageWithLayout = () => {
const { hasAccess: hasAccessToLogDrains, isLoading: isLoadingEntitlement } =
useCheckEntitlements('log_drains')
const sentryEnabled = useFlag('SentryLogDrain')
const s3Enabled = useFlag('S3logdrain')
const axiomEnabled = useFlag('axiomLogDrain')
const { data: logDrains } = useLogDrainsQuery(
{ ref },
{ enabled: !isLoadingEntitlement && hasAccessToLogDrains }
@@ -59,10 +63,12 @@ const LogDrainsSettings: NextPageWithLayout = () => {
const { mutate: createLogDrain, isPending: createLoading } = useCreateLogDrainMutation({
onSuccess: () => {
toast.success('Log drain destination created')
setIsCreateConfirmModalOpen(false)
setOpen(false)
},
onError: () => {
toast.error('Failed to create log drain')
setIsCreateConfirmModalOpen(false)
setOpen(false)
},
})
@@ -155,7 +161,6 @@ const LogDrainsSettings: NextPageWithLayout = () => {
setPendingLogDrainValues(null)
}
setIsCreateConfirmModalOpen(false)
setOpen(false)
}}
onCancel={() => {
setIsCreateConfirmModalOpen(false)
@@ -211,7 +216,12 @@ const LogDrainsSettings: NextPageWithLayout = () => {
/>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" side="bottom">
{LOG_DRAIN_TYPES.map((drainType) => (
{LOG_DRAIN_TYPES.filter((t) => {
if (t.value === 'sentry') return sentryEnabled
if (t.value === 's3') return s3Enabled
if (t.value === 'axiom') return axiomEnabled
return true
}).map((drainType) => (
<DropdownMenuItem
key={drainType.value}
onClick={() => handleNewClick(drainType.value)}
@@ -0,0 +1,11 @@
<svg width="200" height="200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1200" height="1200" rx="260" fill="#9046FF"/>
<mask id="mask0" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">
<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>
</mask>
<g mask="url(#mask0)">
<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>
<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>
<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,11 @@
<svg width="200" height="200" viewBox="0 0 1200 1200" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="1200" height="1200" rx="260" fill="#9046FF"/>
<mask id="mask0" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="272" y="202" width="655" height="796">
<path d="M926.578 202.793H272.637V997.857H926.578V202.793Z" fill="white"/>
</mask>
<g mask="url(#mask0)">
<path d="M398.554 818.914C316.315 1001.03 491.477 1046.74 620.672 940.156C658.687 1059.66 801.052 970.473 852.234 877.795C964.787 673.567 919.318 465.357 907.64 422.374C827.637 129.443 427.623 128.946 358.8 423.865C342.651 475.544 342.402 534.18 333.458 595.051C328.986 625.86 325.507 645.488 313.83 677.785C306.873 696.424 297.68 712.819 282.773 740.645C259.915 783.881 269.604 867.113 387.87 823.883L399.051 818.914H398.554Z" fill="white"/>
<path d="M636.123 549.353C603.328 549.353 598.359 510.097 598.359 486.742C598.359 465.623 602.086 448.977 609.293 438.293C615.504 428.852 624.697 424.131 636.123 424.131C647.555 424.131 657.492 428.852 664.447 438.541C672.398 449.474 676.623 466.12 676.623 486.742C676.623 525.998 661.471 549.353 636.375 549.353H636.123Z" fill="black"/>
<path d="M771.24 549.353C738.445 549.353 733.477 510.097 733.477 486.742C733.477 465.623 737.203 448.977 744.41 438.293C750.621 428.852 759.814 424.131 771.24 424.131C782.672 424.131 792.609 428.852 799.564 438.541C807.516 449.474 811.74 466.12 811.74 486.742C811.74 525.998 796.588 549.353 771.492 549.353H771.24Z" fill="black"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

+48 -41
View File
@@ -5,7 +5,7 @@ import Link from 'next/link'
import React, { useState } from 'react'
import { useWindowSize } from 'react-use'
import { useIsLoggedIn, useUser } from 'common'
import { useIsLoggedIn, useIsUserLoading, useUser } from 'common'
import { Button, buttonVariants, cn } from 'ui'
import { AuthenticatedDropdownMenu } from 'ui-patterns'
@@ -50,9 +50,10 @@ const Nav = ({ hideNavbar, stickyNavbar = true }: Props) => {
const { width } = useWindowSize()
const [open, setOpen] = useState(false)
const isLoggedIn = useIsLoggedIn()
const isUserLoading = useIsUserLoading()
const user = useUser()
const menu = getMenu()
const sendTelemetryEvent = useSendTelemetryEvent()
const user = useUser()
const userMenu = useDropdownMenu(user)
const isLaunchWeekXPage = pathname === '/launch-week/x'
@@ -148,45 +149,51 @@ const Nav = ({ hideNavbar, stickyNavbar = true }: Props) => {
</NavigationMenu>
</div>
<div className="flex items-center gap-2 opacity-0 animate-fade-in !scale-100 delay-300">
<GitHubButton />
{isLoggedIn ? (
<>
<Button className="hidden lg:block" asChild>
<Link href="/dashboard/projects">Dashboard</Link>
</Button>
<AuthenticatedDropdownMenu menu={userMenu} user={user} site="www" />
</>
) : (
<>
<Button type="default" className="hidden lg:block" asChild>
<Link
href="https://supabase.com/dashboard"
onClick={() =>
sendTelemetryEvent({
action: 'sign_in_button_clicked',
properties: { buttonLocation: 'Header Nav' },
})
}
>
Sign in
</Link>
</Button>
<Button className="hidden lg:block" asChild>
<Link
href="https://supabase.com/dashboard"
onClick={() =>
sendTelemetryEvent({
action: 'start_project_button_clicked',
properties: { buttonLocation: 'Header Nav' },
})
}
>
Start your project
</Link>
</Button>
</>
)}
<div
className={cn(
'flex items-center gap-2 transition-opacity',
isUserLoading ? 'opacity-0' : 'opacity-100'
)}
>
<GitHubButton />
{isLoggedIn ? (
<>
<Button className="hidden lg:block" asChild>
<Link href="/dashboard/projects">Dashboard</Link>
</Button>
<AuthenticatedDropdownMenu menu={userMenu} user={user} site="www" />
</>
) : (
<>
<Button type="default" className="hidden lg:block" asChild>
<Link
href="https://supabase.com/dashboard"
onClick={() =>
sendTelemetryEvent({
action: 'sign_in_button_clicked',
properties: { buttonLocation: 'Header Nav' },
})
}
>
Sign in
</Link>
</Button>
<Button className="hidden lg:block" asChild>
<Link
href="https://supabase.com/dashboard"
onClick={() =>
sendTelemetryEvent({
action: 'start_project_button_clicked',
properties: { buttonLocation: 'Header Nav' },
})
}
>
Start your project
</Link>
</Button>
</>
)}
</div>
</div>
</div>
<HamburgerButton
+20 -19
View File
@@ -455,32 +455,33 @@ By adopting the Supabase Terraform provider, teams can implement GitOps practice
},
{
title: 'Read replicas',
subtitle: 'Deploy read-only databases across multiple regions for lower latency.',
subtitle: 'Isolate heavy workloads and reduce global latency',
description: `
Supabase Read Replicas allow you to deploy additional read-only databases that are kept in sync with your Primary database. This feature enhances performance, improves resource management, and reduces latency for global applications.
Supabase Read Replicas distribute read traffic across multiple databases. Use them to isolate analytics workloads from production, reduce latency for global users or scale read capacity beyond a single database.
## Key features
1. Load balancing: Distribute read operations across multiple databases, reducing load on the Primary.
2. Global deployment: Deploy replicas closer to users for reduced latency.
3. Dedicated endpoints: Each replica has its own database and API endpoints.
4. API load balancer: Automatically balance GET requests across all available endpoints.
1. Workload Isolation: Run heavy read queries (analytics, reports, exports, batch jobs) on dedicated replicas without impacting production response times.
2. Multi-region deployment: Deploy replicas in regions closer to your users. European users query European databases.
3. Dedicated endpoints: Each replica provides separate database and API connection strings for direct access.
4. Automatic routing: API load balancer routes GET requests to the nearest available replica.
5. Centralized configuration: Settings are propagated across all databases in a project.
6. Monitoring tools: Track replication lag and resource utilization through the Supabase Dashboard.
6. Monitoring tools: Track replication lag and resource usage directly in the Supabase Dashboard.
## Benefits:
- Improved performance: Serve data from the nearest location, reducing response times.
- Increased availability: Distribute read traffic across multiple replicas for enhanced resilience.
- Scalability: Handle higher read loads by offloading queries to replicas.
- Data redundancy: Replicas provide additional copies of your data.
- Analytics support: Run resource-intensive queries on replicas without impacting production.
## When to use Read Replicas
## Read Replicas are particularly valuable for:
- Global applications serving users across different regions
- High-traffic websites with read-heavy workloads
- Real-time analytics dashboards requiring low-latency data access
- Applications needing to scale read capacity independently of write capacity
- Your analytics team's reports slow down production (workload isolation)
- Users in Europe or Asia experience 100-150ms latency (geo-distribution)
- You've reached 16XL and need more read capacity (horizontal scaling)
- Your workload is 80%+ reads and needs to scale independently of writes
By leveraging Read Replicas, you can achieve consistent low-latency performance globally, improve application responsiveness for read operations, and enhance system reliability through better resource distribution and redundancy.
## Get Started
Deploy your first Read Replica in minutes from Project Settings > Infrastructure. Choose a region—same region for analytics isolation, different region for geo-distribution. Select a compute size to match your workload.
[Read blog post](https://supabase.com/blog/read-replicas-vs-bigger-compute)
[Read documentation](https://supabase.com/docs/guides/platform/read-replicas)
`,
icon: Database,
products: [PRODUCT_SHORTNAMES.DATABASE],
+65
View File
@@ -19,6 +19,7 @@ class PostHogClient {
private pendingGroups: Record<string, string> = {}
private pendingIdentification: { userId: string; properties?: Record<string, any> } | null = null
private pendingEvents: Array<{ event: string; properties: Record<string, any> }> = []
private pendingExposures: Array<{ experimentId: string; properties: Record<string, any> }> = []
private config: PostHogClientConfig
private readonly maxPendingEvents = MAX_PENDING_EVENTS
@@ -84,6 +85,12 @@ class PostHogClient {
this.pendingEvents = []
this.initialized = true
// Flush any pending experiment exposures (with deduplication)
this.pendingExposures.forEach(({ experimentId, properties }) => {
this.fireExposureIfNew(experimentId, properties)
})
this.pendingExposures = []
},
}
@@ -159,6 +166,7 @@ class PostHogClient {
this.pendingIdentification = null
this.pendingGroups = {}
this.pendingEvents = []
this.pendingExposures = []
if (!this.initStarted) return
@@ -183,6 +191,63 @@ class PostHogClient {
return undefined
}
}
/**
* Returns PostHog's session_id for the current session.
* Returns undefined until PostHog's `loaded` callback fires.
*/
getSessionId(): string | undefined {
if (!this.initialized) return undefined
try {
return posthog.get_session_id()
} catch (error) {
console.error('PostHog getSessionId failed:', error)
return undefined
}
}
/**
* Captures an experiment exposure event with session-based deduplication.
* Events are queued if PostHog is not yet initialized, then deduped on flush.
*/
captureExperimentExposure(
experimentId: string,
properties: Record<string, any>,
hasConsent: boolean = true
) {
if (!hasConsent) return
if (!this.initialized) {
// Only queue if not already queued for this experiment (first exposure wins)
if (!this.pendingExposures.some((e) => e.experimentId === experimentId)) {
if (this.pendingExposures.length >= this.maxPendingEvents) {
this.pendingExposures.shift()
}
this.pendingExposures.push({ experimentId, properties })
}
return
}
this.fireExposureIfNew(experimentId, properties)
}
private fireExposureIfNew(experimentId: string, properties: Record<string, any>) {
const sessionId = this.getSessionId()
if (!sessionId) return
const storageKey = `ph_exposed:${experimentId}`
try {
if (sessionStorage.getItem(storageKey) === sessionId) return
const eventName = `${experimentId}_experiment_exposed`
posthog.capture(eventName, { experiment_id: experimentId, ...properties })
sessionStorage.setItem(storageKey, sessionId)
} catch (error) {
console.error('PostHog experiment exposure capture failed:', error)
}
}
}
export const posthogClient = new PostHogClient()
+49 -2
View File
@@ -264,6 +264,24 @@ export interface FeaturePreviewDisabledEvent {
groups: TelemetryGroups
}
/**
* User was exposed to the project creation form (exposure event for RLS option experiment).
*
* @group Events
* @source studio
* @page new/{slug}
*/
export interface ProjectCreationRlsOptionExperimentExposedEvent {
action: 'project_creation_rls_option_experiment_exposed'
properties: {
/**
* Experiment variant: 'control' (checkbox hidden) or 'test' (checkbox shown)
*/
variant: 'control' | 'test'
}
groups: Omit<TelemetryGroups, 'project'>
}
/**
* Existing project creation form was submitted and the project was created.
*
@@ -278,6 +296,14 @@ export interface ProjectCreationSimpleVersionSubmittedEvent {
*/
properties: {
instanceSize?: string
/**
* Whether the automatic RLS event trigger option was enabled
*/
enableRlsEventTrigger?: boolean
/**
* Experiment variant: 'control' (checkbox not shown) or 'test' (checkbox shown)
*/
rlsOptionVariant?: 'control' | 'test'
/**
* Whether Data API is enabled.
* true = "Data API + Connection String" (default)
@@ -2467,7 +2493,17 @@ export interface LogDrainSaveButtonClickedEvent {
/**
* Type of the destination saved
*/
destination: 'webhook' | 'datadog' | 'loki' | 'sentry'
destination:
| 'postgres'
| 'bigquery'
| 'clickhouse'
| 'webhook'
| 'datadog'
| 'elastic'
| 'loki'
| 'sentry'
| 's3'
| 'axiom'
}
groups: TelemetryGroups
}
@@ -2485,7 +2521,17 @@ export interface LogDrainConfirmButtonSubmittedEvent {
/**
* Type of the destination confirmed
*/
destination: 'webhook' | 'datadog' | 'loki' | 'sentry'
destination:
| 'postgres'
| 'bigquery'
| 'clickhouse'
| 'webhook'
| 'datadog'
| 'elastic'
| 'loki'
| 'sentry'
| 's3'
| 'axiom'
}
groups: TelemetryGroups
}
@@ -2756,6 +2802,7 @@ export type TelemetryEvent =
| CronJobHistoryClickedEvent
| FeaturePreviewEnabledEvent
| FeaturePreviewDisabledEvent
| ProjectCreationRlsOptionExperimentExposedEvent
| ProjectCreationSimpleVersionSubmittedEvent
| ProjectCreationSimpleVersionConfirmModalOpenedEvent
| ProjectCreationInitialStepPromptIntendedEvent
+10
View File
@@ -54,6 +54,16 @@ export const Index: Record<string, any> = [
svg: "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\"\n stroke-width=\"1\">\n <path\n d=\"M5.24121 15.0674H12.7412M5.24121 15.0674V18.0674H12.7412V15.0674M5.24121 15.0674V12.0674H12.7412V15.0674M15 7.60547V4.60547C15 2.94861 13.6569 1.60547 12 1.60547C10.3431 1.60547 9 2.94861 9 4.60547V7.60547M5.20898 9.60547L5.20898 19.1055C5.20898 20.21 6.10441 21.1055 7.20898 21.1055H16.709C17.8136 21.1055 18.709 20.21 18.709 19.1055V9.60547C18.709 8.5009 17.8136 7.60547 16.709 7.60547L7.20899 7.60547C6.10442 7.60547 5.20898 8.5009 5.20898 9.60547Z\" />\n</svg>",
jsx: "import { Auth } from \"icons\"\n <Auth/>\n "
},
{
name: "axiom",
componentName: "Axiom",
deprecated: false,
raw: "import createSupabaseIcon from '../createSupabaseIcon';\n\n/**\n * @component @name Axiom\n * @description Supabase SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNIDIzLjgyNDQ5MiwxNi4xMDEwNDcgMTguNjk3Nzg0LDcuNTI2OTY1NiBDIDE4LjQ2MjY3OSw3LjEzMjkwMzggMTcuODgzMzY2LDYuODEwNDg5OSAxNy40MTAzMjUsNi44MTA0ODk5IGggLTMuMjAwNjY4IGMgLTAuNzQzOTQ1LDAgLTEuMDQ4ODk4LC0wLjUwNjUyMTUgLTAuNjc3ODYsLTEuMTI1NTYzIEwgMTUuMjg3MDc0LDIuNzU3MTMgQyAxNS40MjYzNCwyLjUyNDc3MzUgMTUuNDI2MDEyLDIuMjM4NzE5MSAxNS4yODYzMjQsMi4wMDY2MDU5IDE1LjE0NjU0MiwxLjc3NDQ5NjkgMTQuODg4NDczLDEuNjMxNTUwNyAxNC42MDkxODcsMS42MzE1NTA3IGggLTQuNDY1MDQ5IGMgLTAuNDcyOTgyNSwwIC0xLjA1MzU1NTQsMC4zMjE2ODkzIC0xLjI5MDE5NywwLjcxNDg3OTUgTCAwLjE3NzYyNzc0LDE2Ljc2MTI5MyBjIC0wLjIzNjczMTU2LDAuMzkzMTkyIC0wLjIzNjgyMTI5LDEuMDM2NjY3IC0zLjYzMDdlLTQsMS40Mjk5MTkgTCAyLjQwOTc1MDIsMjEuOTA0MDUgYyAwLjM3MjAwNDMsMC42MTg1ODggMC45ODIwMjc4LDAuNjE5MzEgMS4zNTU1NjMyLDAuMDAxNSBsIDEuNzQ0Mzk0OSwtMi44ODQzODggYyAwLjM3MzY1NTEsLTAuNjE3NzQ5IDAuOTgzNTYwNSwtMC42MTcwMjkgMS4zNTU1NjM3LDAuMDAxNSBsIDEuNTgxNTA0MSwyLjYzMDE5MSBjIDAuMjM2NDMwOSwwLjM5MzE4NSAwLjgxNjkxNDMsMC43MTQ5MzggMS4yODk5Mjc0LDAuNzE0OTM4IEggMjAuMDU0NDMgYyAwLjQ3MjgzMSwwIDEuMDUzNDA3LC0wLjMyMTc1MyAxLjI4OTg2OSwtMC43MTUwMDQgbCAyLjQ3NzYwNywtNC4xMjAzMjQgYyAwLjIzNjQ2MywtMC4zOTMyODMgMC4yMzc2MDMsLTEuMDM3NDc5IDAuMDAyNSwtMS40MzE1NjkgeiBtIC02LjkyMzcyMywtMC40MTI2NjMgYyAwLjM2OTY1NiwwLjYxOTgyNCAwLjA2MzQ0LDEuMTI3MDM3IC0wLjY4MDQ3NSwxLjEyNzAzNyBIIDguMTk0NzQ4MyBjIC0wLjc0MzkxNTIsMCAtMS4wNDgyOTU5LC0wLjUwNjE5IC0wLjY3NjI2NDUsLTEuMTI0NzU1IEwgMTEuNTM0MzIzLDkuMDEyMDg5MiBjIDAuMzcxOTcyLC0wLjYxODU5MTIgMC45ODA2MTYsLTAuNjE4NTkxMiAxLjM1MjU4OCwzZS01IHoiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+)\n *\n * @param {Object} props - Supabase icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Axiom = createSupabaseIcon('Axiom', [\n [\n 'path',\n {\n d: 'M 23.824492,16.101047 18.697784,7.5269656 C 18.462679,7.1329038 17.883366,6.8104899 17.410325,6.8104899 h -3.200668 c -0.743945,0 -1.048898,-0.5065215 -0.67786,-1.125563 L 15.287074,2.75713 C 15.42634,2.5247735 15.426012,2.2387191 15.286324,2.0066059 15.146542,1.7744969 14.888473,1.6315507 14.609187,1.6315507 h -4.465049 c -0.4729825,0 -1.0535554,0.3216893 -1.290197,0.7148795 L 0.17762774,16.761293 c -0.23673156,0.393192 -0.23682129,1.036667 -3.6307e-4,1.429919 L 2.4097502,21.90405 c 0.3720043,0.618588 0.9820278,0.61931 1.3555632,0.0015 l 1.7443949,-2.884388 c 0.3736551,-0.617749 0.9835605,-0.617029 1.3555637,0.0015 l 1.5815041,2.630191 c 0.2364309,0.393185 0.8169143,0.714938 1.2899274,0.714938 H 20.05443 c 0.472831,0 1.053407,-0.321753 1.289869,-0.715004 l 2.477607,-4.120324 c 0.236463,-0.393283 0.237603,-1.037479 0.0025,-1.431569 z m -6.923723,-0.412663 c 0.369656,0.619824 0.06344,1.127037 -0.680475,1.127037 H 8.1947483 c -0.7439152,0 -1.0482959,-0.50619 -0.6762645,-1.124755 L 11.534323,9.0120892 c 0.371972,-0.6185912 0.980616,-0.6185912 1.352588,3e-5 z',\n fill: 'currentColor',\n key: '8eugby',\n },\n ],\n]);\n\nexport default Axiom;\n",
component: React.lazy(() => import('icons/src/icons/axiom')),
import: "import { Axiom } from 'icons'",
svg: "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M 23.824492,16.101047 18.697784,7.5269656 C 18.462679,7.1329038 17.883366,6.8104899 17.410325,6.8104899 h -3.200668 c -0.743945,0 -1.048898,-0.5065215 -0.67786,-1.125563 L 15.287074,2.75713 C 15.42634,2.5247735 15.426012,2.2387191 15.286324,2.0066059 15.146542,1.7744969 14.888473,1.6315507 14.609187,1.6315507 h -4.465049 c -0.4729825,0 -1.0535554,0.3216893 -1.290197,0.7148795 L 0.17762774,16.761293 c -0.23673156,0.393192 -0.23682129,1.036667 -3.6307e-4,1.429919 L 2.4097502,21.90405 c 0.3720043,0.618588 0.9820278,0.61931 1.3555632,0.0015 l 1.7443949,-2.884388 c 0.3736551,-0.617749 0.9835605,-0.617029 1.3555637,0.0015 l 1.5815041,2.630191 c 0.2364309,0.393185 0.8169143,0.714938 1.2899274,0.714938 H 20.05443 c 0.472831,0 1.053407,-0.321753 1.289869,-0.715004 l 2.477607,-4.120324 c 0.236463,-0.393283 0.237603,-1.037479 0.0025,-1.431569 z m -6.923723,-0.412663 c 0.369656,0.619824 0.06344,1.127037 -0.680475,1.127037 H 8.1947483 c -0.7439152,0 -1.0482959,-0.50619 -0.6762645,-1.124755 L 11.534323,9.0120892 c 0.371972,-0.6185912 0.980616,-0.6185912 1.352588,3e-5 z\" fill=\"currentColor\" />\n</svg>",
jsx: "import { Axiom } from \"icons\"\n <Axiom/>\n "
},
{
name: "big-query",
componentName: "BigQuery",
+24
View File
@@ -0,0 +1,24 @@
import createSupabaseIcon from '../createSupabaseIcon';
/**
* @component @name Axiom
* @description Supabase SVG icon component, renders SVG Element with children.
*
* @preview ![img](data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNIDIzLjgyNDQ5MiwxNi4xMDEwNDcgMTguNjk3Nzg0LDcuNTI2OTY1NiBDIDE4LjQ2MjY3OSw3LjEzMjkwMzggMTcuODgzMzY2LDYuODEwNDg5OSAxNy40MTAzMjUsNi44MTA0ODk5IGggLTMuMjAwNjY4IGMgLTAuNzQzOTQ1LDAgLTEuMDQ4ODk4LC0wLjUwNjUyMTUgLTAuNjc3ODYsLTEuMTI1NTYzIEwgMTUuMjg3MDc0LDIuNzU3MTMgQyAxNS40MjYzNCwyLjUyNDc3MzUgMTUuNDI2MDEyLDIuMjM4NzE5MSAxNS4yODYzMjQsMi4wMDY2MDU5IDE1LjE0NjU0MiwxLjc3NDQ5NjkgMTQuODg4NDczLDEuNjMxNTUwNyAxNC42MDkxODcsMS42MzE1NTA3IGggLTQuNDY1MDQ5IGMgLTAuNDcyOTgyNSwwIC0xLjA1MzU1NTQsMC4zMjE2ODkzIC0xLjI5MDE5NywwLjcxNDg3OTUgTCAwLjE3NzYyNzc0LDE2Ljc2MTI5MyBjIC0wLjIzNjczMTU2LDAuMzkzMTkyIC0wLjIzNjgyMTI5LDEuMDM2NjY3IC0zLjYzMDdlLTQsMS40Mjk5MTkgTCAyLjQwOTc1MDIsMjEuOTA0MDUgYyAwLjM3MjAwNDMsMC42MTg1ODggMC45ODIwMjc4LDAuNjE5MzEgMS4zNTU1NjMyLDAuMDAxNSBsIDEuNzQ0Mzk0OSwtMi44ODQzODggYyAwLjM3MzY1NTEsLTAuNjE3NzQ5IDAuOTgzNTYwNSwtMC42MTcwMjkgMS4zNTU1NjM3LDAuMDAxNSBsIDEuNTgxNTA0MSwyLjYzMDE5MSBjIDAuMjM2NDMwOSwwLjM5MzE4NSAwLjgxNjkxNDMsMC43MTQ5MzggMS4yODk5Mjc0LDAuNzE0OTM4IEggMjAuMDU0NDMgYyAwLjQ3MjgzMSwwIDEuMDUzNDA3LC0wLjMyMTc1MyAxLjI4OTg2OSwtMC43MTUwMDQgbCAyLjQ3NzYwNywtNC4xMjAzMjQgYyAwLjIzNjQ2MywtMC4zOTMyODMgMC4yMzc2MDMsLTEuMDM3NDc5IDAuMDAyNSwtMS40MzE1NjkgeiBtIC02LjkyMzcyMywtMC40MTI2NjMgYyAwLjM2OTY1NiwwLjYxOTgyNCAwLjA2MzQ0LDEuMTI3MDM3IC0wLjY4MDQ3NSwxLjEyNzAzNyBIIDguMTk0NzQ4MyBjIC0wLjc0MzkxNTIsMCAtMS4wNDgyOTU5LC0wLjUwNjE5IC0wLjY3NjI2NDUsLTEuMTI0NzU1IEwgMTEuNTM0MzIzLDkuMDEyMDg5MiBjIDAuMzcxOTcyLC0wLjYxODU5MTIgMC45ODA2MTYsLTAuNjE4NTkxMiAxLjM1MjU4OCwzZS01IHoiIGZpbGw9ImN1cnJlbnRDb2xvciIgLz4KPC9zdmc+)
*
* @param {Object} props - Supabase icons props and any valid SVG attribute
* @returns {JSX.Element} JSX Element
*
*/
const Axiom = createSupabaseIcon('Axiom', [
[
'path',
{
d: 'M 23.824492,16.101047 18.697784,7.5269656 C 18.462679,7.1329038 17.883366,6.8104899 17.410325,6.8104899 h -3.200668 c -0.743945,0 -1.048898,-0.5065215 -0.67786,-1.125563 L 15.287074,2.75713 C 15.42634,2.5247735 15.426012,2.2387191 15.286324,2.0066059 15.146542,1.7744969 14.888473,1.6315507 14.609187,1.6315507 h -4.465049 c -0.4729825,0 -1.0535554,0.3216893 -1.290197,0.7148795 L 0.17762774,16.761293 c -0.23673156,0.393192 -0.23682129,1.036667 -3.6307e-4,1.429919 L 2.4097502,21.90405 c 0.3720043,0.618588 0.9820278,0.61931 1.3555632,0.0015 l 1.7443949,-2.884388 c 0.3736551,-0.617749 0.9835605,-0.617029 1.3555637,0.0015 l 1.5815041,2.630191 c 0.2364309,0.393185 0.8169143,0.714938 1.2899274,0.714938 H 20.05443 c 0.472831,0 1.053407,-0.321753 1.289869,-0.715004 l 2.477607,-4.120324 c 0.236463,-0.393283 0.237603,-1.037479 0.0025,-1.431569 z m -6.923723,-0.412663 c 0.369656,0.619824 0.06344,1.127037 -0.680475,1.127037 H 8.1947483 c -0.7439152,0 -1.0482959,-0.50619 -0.6762645,-1.124755 L 11.534323,9.0120892 c 0.371972,-0.6185912 0.980616,-0.6185912 1.352588,3e-5 z',
fill: 'currentColor',
key: '8eugby',
},
],
]);
export default Axiom;
+2 -1
View File
@@ -15,7 +15,8 @@ const BigQuery = createSupabaseIcon('BigQuery', [
'path',
{
d: 'M7.48981 17.898L7.48981 9.65308M10.8368 18.7552L10.8368 7.53063M14.1837 18.0205V12.0204M21 21.0817L16.4286 16.5103M18.7552 10.8776C18.7552 15.2282 15.2282 18.7552 10.8776 18.7552C6.52691 18.7552 3 15.2282 3 10.8776C3 6.52691 6.52691 3 10.8776 3C15.2282 3 18.7552 6.52691 18.7552 10.8776Z',
'stroke-width': '1.5',
stroke: 'black',
'stroke-width': '0.975299',
'stroke-linecap': 'round',
key: 't3k65m',
},
+2
View File
@@ -15,6 +15,8 @@ const Graphql = createSupabaseIcon('Graphql', [
'path',
{
d: 'M11.9007 3.76857L19.0007 7.86775V16.0661M11.9007 3.76857L4.80072 7.86775V16.0661M11.9007 3.76857L19.0007 16.0661M11.9007 3.76857L4.80072 16.0661M19.0007 16.0661L11.9007 20.1653L4.80072 16.0661M19.0007 16.0661H4.80072M6.0164 16.1322C6.0164 16.7895 5.48358 17.3223 4.82631 17.3223C4.16905 17.3223 3.63623 16.7895 3.63623 16.1322C3.63623 15.4749 4.16905 14.9421 4.82631 14.9421C5.48358 14.9421 6.0164 15.4749 6.0164 16.1322ZM5.28912 16.1322C5.28912 16.3878 5.08192 16.595 4.82631 16.595C4.57071 16.595 4.3635 16.3878 4.3635 16.1322C4.3635 15.8766 4.57071 15.6694 4.82631 15.6694C5.08192 15.6694 5.28912 15.8766 5.28912 16.1322ZM20.2974 16.1322C20.2974 16.7895 19.7646 17.3223 19.1073 17.3223C18.45 17.3223 17.9172 16.7895 17.9172 16.1322C17.9172 15.4749 18.45 14.9421 19.1073 14.9421C19.7646 14.9421 20.2974 15.4749 20.2974 16.1322ZM19.5701 16.1322C19.5701 16.3878 19.3629 16.595 19.1073 16.595C18.8517 16.595 18.6445 16.3878 18.6445 16.1322C18.6445 15.8766 18.8517 15.6694 19.1073 15.6694C19.3629 15.6694 19.5701 15.8766 19.5701 16.1322ZM6.0164 7.86775C6.0164 8.52501 5.48358 9.05783 4.82631 9.05783C4.16905 9.05783 3.63623 8.52501 3.63623 7.86775C3.63623 7.21048 4.16905 6.67766 4.82631 6.67766C5.48358 6.67766 6.0164 7.21048 6.0164 7.86775ZM5.28912 7.86775C5.28912 8.12335 5.08192 8.33056 4.82631 8.33056C4.57071 8.33056 4.3635 8.12335 4.3635 7.86775C4.3635 7.61214 4.57071 7.40494 4.82631 7.40494C5.08192 7.40494 5.28912 7.61214 5.28912 7.86775ZM20.2974 7.86775C20.2974 8.52501 19.7646 9.05783 19.1073 9.05783C18.45 9.05783 17.9172 8.52501 17.9172 7.86775C17.9172 7.21048 18.45 6.67766 19.1073 6.67766C19.7646 6.67766 20.2974 7.21048 20.2974 7.86775ZM19.5701 7.86775C19.5701 8.12335 19.3629 8.33056 19.1073 8.33056C18.8517 8.33056 18.6445 8.12335 18.6445 7.86775C18.6445 7.61214 18.8517 7.40494 19.1073 7.40494C19.3629 7.40494 19.5701 7.61214 19.5701 7.86775ZM13.1569 3.76857C13.1569 4.42584 12.6241 4.95866 11.9668 4.95866C11.3095 4.95866 10.7767 4.42584 10.7767 3.76857C10.7767 3.11131 11.3095 2.57849 11.9668 2.57849C12.6241 2.57849 13.1569 3.11131 13.1569 3.76857ZM12.4296 3.76857C12.4296 4.02418 12.2224 4.23138 11.9668 4.23138C11.7112 4.23138 11.504 4.02418 11.504 3.76857C11.504 3.51297 11.7112 3.30576 11.9668 3.30576C12.2224 3.30576 12.4296 3.51297 12.4296 3.76857ZM13.1569 20.1653C13.1569 20.8225 12.6241 21.3553 11.9668 21.3553C11.3095 21.3553 10.7767 20.8225 10.7767 20.1653C10.7767 19.508 11.3095 18.9752 11.9668 18.9752C12.6241 18.9752 13.1569 19.508 13.1569 20.1653ZM12.4296 20.1653C12.4296 20.4209 12.2224 20.6281 11.9668 20.6281C11.7112 20.6281 11.504 20.4209 11.504 20.1653C11.504 19.9097 11.7112 19.7025 11.9668 19.7025C12.2224 19.7025 12.4296 19.9097 12.4296 20.1653Z',
stroke: 'black',
'stroke-width': '0.859504',
key: 'vs46h6',
},
],
+1
View File
@@ -3,6 +3,7 @@ export { default as ExampleTemplate } from './_example-template';
export { default as AnalyticsBucket } from './analytics-bucket';
export { default as ApiDocs } from './api-docs';
export { default as Auth } from './auth';
export { default as Axiom } from './axiom';
export { default as BigQuery } from './big-query';
export { default as BoxPlus } from './box-plus';
export { default as BucketPlus } from './bucket-plus';
+3
View File
@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M 23.824492,16.101047 18.697784,7.5269656 C 18.462679,7.1329038 17.883366,6.8104899 17.410325,6.8104899 h -3.200668 c -0.743945,0 -1.048898,-0.5065215 -0.67786,-1.125563 L 15.287074,2.75713 C 15.42634,2.5247735 15.426012,2.2387191 15.286324,2.0066059 15.146542,1.7744969 14.888473,1.6315507 14.609187,1.6315507 h -4.465049 c -0.4729825,0 -1.0535554,0.3216893 -1.290197,0.7148795 L 0.17762774,16.761293 c -0.23673156,0.393192 -0.23682129,1.036667 -3.6307e-4,1.429919 L 2.4097502,21.90405 c 0.3720043,0.618588 0.9820278,0.61931 1.3555632,0.0015 l 1.7443949,-2.884388 c 0.3736551,-0.617749 0.9835605,-0.617029 1.3555637,0.0015 l 1.5815041,2.630191 c 0.2364309,0.393185 0.8169143,0.714938 1.2899274,0.714938 H 20.05443 c 0.472831,0 1.053407,-0.321753 1.289869,-0.715004 l 2.477607,-4.120324 c 0.236463,-0.393283 0.237603,-1.037479 0.0025,-1.431569 z m -6.923723,-0.412663 c 0.369656,0.619824 0.06344,1.127037 -0.680475,1.127037 H 8.1947483 c -0.7439152,0 -1.0482959,-0.50619 -0.6762645,-1.124755 L 11.534323,9.0120892 c 0.371972,-0.6185912 0.980616,-0.6185912 1.352588,3e-5 z" fill="currentColor" />
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

+3 -3
View File
@@ -177,7 +177,7 @@
"link": "/guides/database/extensions/index_advisor",
"github_url": "https://github.com/supabase/index_advisor",
"product": "Index Advisor Report",
"product_url": "/project/{ref}/advisors/query-performance"
"product_url": "/project/{ref}/observability/query-performance"
},
{
"name": "intarray",
@@ -276,7 +276,7 @@
"link": "/guides/database/extensions/pg_net",
"github_url": "https://github.com/supabase/pg_net",
"product": "Database Webhooks",
"product_url": "/project/{ref}/database/hooks"
"product_url": "/project/{ref}/integrations/webhooks"
},
{
"name": "pg_prewarm",
@@ -294,7 +294,7 @@
"link": "/guides/database/extensions/pg_stat_statements",
"github_url": null,
"product": "Query Performance",
"product_url": "/project/{ref}/advisors/query-performance"
"product_url": "/project/{ref}/observability/query-performance"
},
{
"name": "pg_surgery",
@@ -1,7 +1,7 @@
'use client'
import { isEqual } from 'lodash'
import { useEffect, useMemo, useRef } from 'react'
import { useLayoutEffect, useMemo } from 'react'
import { useLatest } from 'react-use'
import { useSnapshot } from 'valtio'
import { useCommandContext } from '../../internal/Context'
@@ -60,37 +60,18 @@ const useRegisterPage = (
const { pagesState } = useCommandContext()
const { registerNewPage } = useSnapshot(pagesState)
const prevDeps = useRef(deps)
const prevEnabled = useRef(enabled)
const definitionRef = useLatest(definition)
const unsubscribe = useRef<() => void>()
// useLayoutEffect runs synchronously after DOM mutations but before paint.
// This ensures the page is registered before any subsequent code (e.g. in
// child components) tries to access it, avoiding a timing gap that would
// exist with useEffect.
useLayoutEffect(() => {
if (!enabled) return
/**
* useEffect handles the registration on first render, since React runs the
* first render twice in development. (Otherwise the first render would leave
* a dangling subscription.)
*
* It also handles final cleanup, since useMemo can't do this.
*
* useMemo handles the registration on subsequent renders, to ensure it
* happens synchronously.
*/
useMemo(() => {
if (!isEqual(prevDeps.current, deps) || prevEnabled.current !== enabled) {
unsubscribe.current?.()
unsubscribe.current = enabled ? registerNewPage(name, definition) : undefined
prevDeps.current = deps
prevEnabled.current = enabled
}
}, [registerNewPage, name, definition, deps, enabled])
useEffect(() => {
unsubscribe.current = enabled ? registerNewPage(name, definition) : undefined
return () => unsubscribe.current?.()
}, [])
const unsubscribe = registerNewPage(name, definitionRef.current)
return unsubscribe
}, [registerNewPage, name, enabled, ...deps])
}
export { useCurrentPage, useRegisterPage, useSetPage, usePopPage, usePageComponent }
export { useCurrentPage, usePageComponent, usePopPage, useRegisterPage, useSetPage }
@@ -143,6 +143,7 @@ export function McpConfigPanel({
clientConfig={clientConfig}
onCopyCallback={onCopyCallback}
onInstallCallback={onInstallCallback}
isPlatform={isPlatform}
/>
</div>
</div>
@@ -17,6 +17,7 @@ interface McpConfigurationDisplayProps {
basePath: string
onCopyCallback: (type?: McpOnCopyCallback) => void
onInstallCallback?: () => void
isPlatform?: boolean
}
type ConfigFormat = CodeBlockLang | 'toml'
@@ -29,12 +30,14 @@ export function McpConfigurationDisplay({
basePath,
onCopyCallback,
onInstallCallback,
isPlatform,
}: McpConfigurationDisplayProps) {
const mcpButtonData = getMcpButtonData({
basePath,
theme,
client: selectedClient,
clientConfig,
isPlatform,
})
// Extract file extension and determine format
@@ -69,7 +72,9 @@ export function McpConfigurationDisplay({
<div className={cn('space-y-4', className)}>
{mcpButtonData && (
<>
<div className="text-xs text-foreground-light">Install in one click:</div>
<div className="text-xs text-foreground-light">
{selectedClient.deepLinkDescription ?? 'Install in one click:'}
</div>
<Button type="secondary" size="small" asChild>
<a
href={mcpButtonData.deepLink}
@@ -95,25 +100,26 @@ export function McpConfigurationDisplay({
selectedClient.primaryInstructions(clientConfig, onCopyCallback)}
{selectedClient.configFile && (
<div className="text-xs text-foreground-light">
{selectedClient.primaryInstructions
? 'Alternatively, add'
: mcpButtonData
? 'Or add'
: 'Add'}{' '}
this configuration to{' '}
<code className="px-1 py-0.5 bg-surface-200 rounded">{selectedClient.configFile}</code>:
</div>
<>
<div className="text-xs text-foreground-light">
{selectedClient.primaryInstructions
? 'Alternatively, add'
: mcpButtonData
? 'Or add'
: 'Add'}{' '}
this configuration to{' '}
<code className="px-1 py-0.5 bg-surface-200 rounded">{selectedClient.configFile}</code>:
</div>
<CodeBlock
value={configValue}
language={displayLanguage}
className="max-h-64 overflow-y-auto"
focusable={false}
onCopyCallback={() => onCopyCallback?.('config')}
/>
</>
)}
<CodeBlock
value={configValue}
language={displayLanguage}
className="max-h-64 overflow-y-auto"
focusable={false}
onCopyCallback={() => onCopyCallback?.('config')}
/>
{selectedClient.alternateInstructions &&
selectedClient.alternateInstructions(clientConfig, onCopyCallback)}
@@ -438,6 +438,31 @@ export const MCP_CLIENTS: McpClient[] = [
</div>
),
},
{
key: 'kiro',
label: 'Kiro',
icon: 'kiro',
configFile: '~/.kiro/settings/mcp.json',
externalDocsUrl: 'https://kiro.dev/docs/mcp/',
generateDeepLink: (_config, options) => {
const power = options?.isPlatform ? 'supabase-hosted' : 'supabase-local'
return `https://kiro.dev/launch/powers/${power}`
},
deepLinkDescription: (
<>
Install the Supabase{' '}
<a
href="https://kiro.dev/docs/powers/"
target="_blank"
rel="noopener noreferrer"
className="text-brand hover:underline"
>
power
</a>{' '}
for Kiro. This bundles the Supabase MCP server and steering files for best practices.
</>
),
},
]
export const DEFAULT_MCP_URL_PLATFORM = 'http://localhost:8080/mcp'
Loaded 100 of 104 files, more files were not shown because too many files have changed in this diff. Show more