mirror of
https://github.com/supabase/supabase.git
synced 2026-10-11 04:15:04 +03:00
Merge branch 'master' into chore/orgs-and-projects-to-react-query
This commit is contained in:
commit
3abe40c890
195 files changed
+11750
-1665
No files matched your search
@@ -1,7 +1,7 @@
|
||||
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
|
||||
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
|
||||
|
||||
name: Studio Unit Tests
|
||||
name: Studio Unit Tests & Build Check
|
||||
|
||||
on:
|
||||
push:
|
||||
@@ -15,13 +15,15 @@ on:
|
||||
- 'studio/**'
|
||||
- 'package-lock.json'
|
||||
jobs:
|
||||
build:
|
||||
check:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [18.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
cmd:
|
||||
- npm run test:studio
|
||||
- npm run build:studio
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -33,9 +35,9 @@ jobs:
|
||||
- name: Install deps
|
||||
run: npm ci
|
||||
working-directory: ./
|
||||
- name: Run tests
|
||||
- name: Run ${{ matrix.cmd }}
|
||||
env:
|
||||
# Default is 2 GB, increase to have less frequent OOM errors
|
||||
NODE_OPTIONS: '--max_old_space_size=3072'
|
||||
run: npm run test:studio
|
||||
run: ${{ matrix.cmd }}
|
||||
working-directory: ./
|
||||
+2
-2
@@ -129,5 +129,5 @@ packages/ui/tokens/**/*.json
|
||||
gcloud.json
|
||||
|
||||
# sitemaps
|
||||
apps/www/public/*.xml
|
||||
apps/docs/public/*.xml
|
||||
# apps/www/public/*.xml
|
||||
# apps/docs/public/*.xml
|
||||
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres Database. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Authentication and Authorization. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Auto-generated APIs.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Realtime subscriptions. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Realtime subscriptions. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Functions.
|
||||
- [x] Database Functions. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)
|
||||
@@ -260,4 +260,3 @@ Our approach for client libraries is modular. Each sub-library is a standalone i
|
||||
- [Ukrainian / Українська](/i18n/README.uk.md)
|
||||
- [Vietnamese / Tiếng Việt](/i18n/README.vi-vn.md)
|
||||
- [List of translations](/i18n/languages.md) <!--- Keep only this -->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import Link from 'next/link'
|
||||
import { Button } from 'ui'
|
||||
import { primaryLinks, secondaryLinks } from '~/data/footer'
|
||||
import { LayoutMainContent } from '../../layouts/DefaultLayout'
|
||||
import { LayoutMainContent } from '~/layouts/DefaultLayout'
|
||||
|
||||
const Footer = () => (
|
||||
<LayoutMainContent className="pt-0">
|
||||
@@ -75,20 +75,18 @@ const Footer = () => (
|
||||
</Button>
|
||||
<Button type="text" asChild>
|
||||
<a href="https://youtube.com/c/supabase" target="_blank" rel="noreferrer noopener">
|
||||
<a>
|
||||
<svg
|
||||
width="16"
|
||||
height="17"
|
||||
viewBox="0 0 16 17"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M15.665 4.35595C15.481 3.66308 14.9388 3.11739 14.2505 2.93221C13.0028 2.5957 7.99964 2.5957 7.99964 2.5957C7.99964 2.5957 2.99655 2.5957 1.74883 2.93221C1.06047 3.11742 0.518326 3.66308 0.334321 4.35595C0 5.61181 0 8.23207 0 8.23207C0 8.23207 0 10.8523 0.334321 12.1082C0.518326 12.8011 1.06047 13.324 1.74883 13.5092C2.99655 13.8457 7.99964 13.8457 7.99964 13.8457C7.99964 13.8457 13.0027 13.8457 14.2505 13.5092C14.9388 13.324 15.481 12.8011 15.665 12.1082C15.9993 10.8523 15.9993 8.23207 15.9993 8.23207C15.9993 8.23207 15.9993 5.61181 15.665 4.35595ZM6.36334 10.6111V5.85307L10.545 8.23212L6.36334 10.6111Z"
|
||||
fill="var(--colors-scale9)"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
<svg
|
||||
width="16"
|
||||
height="17"
|
||||
viewBox="0 0 16 17"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path
|
||||
d="M15.665 4.35595C15.481 3.66308 14.9388 3.11739 14.2505 2.93221C13.0028 2.5957 7.99964 2.5957 7.99964 2.5957C7.99964 2.5957 2.99655 2.5957 1.74883 2.93221C1.06047 3.11742 0.518326 3.66308 0.334321 4.35595C0 5.61181 0 8.23207 0 8.23207C0 8.23207 0 10.8523 0.334321 12.1082C0.518326 12.8011 1.06047 13.324 1.74883 13.5092C2.99655 13.8457 7.99964 13.8457 7.99964 13.8457C7.99964 13.8457 13.0027 13.8457 14.2505 13.5092C14.9388 13.324 15.481 12.8011 15.665 12.1082C15.9993 10.8523 15.9993 8.23207 15.9993 8.23207C15.9993 8.23207 15.9993 5.61181 15.665 4.35595ZM6.36334 10.6111V5.85307L10.545 8.23212L6.36334 10.6111Z"
|
||||
fill="var(--colors-scale9)"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
</Button>
|
||||
<Button type="text" asChild>
|
||||
|
||||
@@ -210,8 +210,8 @@ export const gettingstarted: NavMenuConstant = {
|
||||
{
|
||||
name: 'Framework Quickstarts',
|
||||
items: [
|
||||
{ name: 'Next.js', url: '/guides/getting-started/quickstarts/nextjs' },
|
||||
{ name: 'React', url: '/guides/getting-started/quickstarts/reactjs' },
|
||||
{ name: 'NextJS', url: '/guides/getting-started/quickstarts/nextjs' },
|
||||
{ name: 'NuxtJS', url: '/guides/getting-started/quickstarts/nuxtjs' },
|
||||
{ name: 'RedwoodJS', url: '/guides/getting-started/quickstarts/redwoodjs' },
|
||||
{ name: 'Flutter', url: '/guides/getting-started/quickstarts/flutter' },
|
||||
@@ -224,7 +224,7 @@ export const gettingstarted: NavMenuConstant = {
|
||||
name: 'Web app tutorials',
|
||||
items: [
|
||||
{
|
||||
name: 'NextJS',
|
||||
name: 'Next.js',
|
||||
url: '/guides/getting-started/tutorials/with-nextjs',
|
||||
},
|
||||
{
|
||||
@@ -424,7 +424,10 @@ export const auth = {
|
||||
},
|
||||
{
|
||||
name: 'Quickstarts',
|
||||
items: [{ name: 'Auth with React', url: '/guides/auth/quickstarts/react', items: [] }],
|
||||
items: [
|
||||
{ name: 'Next.js', url: '/guides/auth/quickstarts/nextjs', items: [] },
|
||||
{ name: 'React', url: '/guides/auth/quickstarts/react', items: [] },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'Authentication',
|
||||
@@ -1058,6 +1061,10 @@ export const platform: NavMenuConstant = {
|
||||
name: 'HTTP and Project Issues',
|
||||
url: '/guides/platform/troubleshooting',
|
||||
},
|
||||
{
|
||||
name: 'High Disk IO Consumption',
|
||||
url: '/guides/platform/exhaust-disk-io',
|
||||
},
|
||||
{
|
||||
name: 'High CPU Usage',
|
||||
url: '/guides/platform/exhaust-cpu',
|
||||
|
||||
@@ -60,6 +60,7 @@ const RefSectionHandler = (props: RefSectionHandlerProps) => {
|
||||
const pageTitle = getPageTitle()
|
||||
const section = props.sections.find((section) => section.slug === slug)
|
||||
const fullTitle = `${pageTitle}${section ? ` - ${section.title}` : ''}`
|
||||
const path = router.asPath.replace('/crawlers', '')
|
||||
|
||||
return (
|
||||
<>
|
||||
@@ -72,7 +73,7 @@ const RefSectionHandler = (props: RefSectionHandlerProps) => {
|
||||
content={`https://supabase.com/docs/img/supabase-og-image.png`}
|
||||
/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="canonical" href={`https://supabase.com${router.basePath}${router.asPath}`} />
|
||||
<link rel="canonical" href={`https://supabase.com${router.basePath}${path}`} />
|
||||
</Head>
|
||||
{props.isOldVersion && <OldVersionAlert sections={props.sections} />}
|
||||
<RefSubLayout>
|
||||
|
||||
@@ -5,7 +5,7 @@ export const primaryLinks = [
|
||||
featherIcon: IconLifeBuoy,
|
||||
text: 'Need some help?',
|
||||
ctaLabel: 'Contact support',
|
||||
url: 'https://app.supabase.com/support/new',
|
||||
url: 'https://supabase.com/dashboard/support/new',
|
||||
},
|
||||
{
|
||||
icon: 'M12.9521 10.5073C12.766 10.3212 12.5289 10.1943 12.2708 10.1427L10.6794 9.82467C9.80719 9.65024 8.90169 9.77152 8.10609 10.1693L7.89409 10.2747C7.0985 10.6725 6.193 10.7938 5.32076 10.6193L4.03343 10.362C3.81823 10.319 3.59574 10.3298 3.38571 10.3934C3.17569 10.457 2.9846 10.5715 2.82943 10.7267M5.33343 2.88867H10.6668L10.0001 3.55534V7.00334C10.0002 7.35693 10.1407 7.69602 10.3908 7.94601L13.7241 11.2793C14.5641 12.1193 13.9688 13.5553 12.7808 13.5553H3.21876C2.03076 13.5553 1.43609 12.1193 2.27609 11.2793L5.60943 7.94601C5.85949 7.69602 6.00002 7.35693 6.00009 7.00334V3.55534L5.33343 2.88867Z',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import '../../../packages/ui/build/css/themes/light.css'
|
||||
import '../../../packages/ui/build/css/themes/dark.css'
|
||||
import '../../../packages/ui/build/css/themes/light.css'
|
||||
|
||||
import 'config/code-hike.scss'
|
||||
import '../styles/main.scss?v=1.0.0'
|
||||
@@ -13,6 +13,7 @@ import { useRouter } from 'next/router'
|
||||
import { useCallback, useEffect, useState } from 'react'
|
||||
import { AppPropsWithLayout } from 'types'
|
||||
import { CommandMenuProvider } from 'ui'
|
||||
import { TabsProvider } from 'ui/src/components/Tabs'
|
||||
import Favicons from '~/components/Favicons'
|
||||
import SiteLayout from '~/layouts/SiteLayout'
|
||||
import { API_URL, IS_PLATFORM, LOCAL_SUPABASE } from '~/lib/constants'
|
||||
@@ -150,9 +151,11 @@ function MyApp({ Component, pageProps }: AppPropsWithLayout) {
|
||||
<AuthContainer>
|
||||
<ThemeProvider>
|
||||
<CommandMenuProvider site="docs">
|
||||
<SiteLayout>
|
||||
<Component {...pageProps} />
|
||||
</SiteLayout>
|
||||
<TabsProvider>
|
||||
<SiteLayout>
|
||||
<Component {...pageProps} />
|
||||
</SiteLayout>
|
||||
</TabsProvider>
|
||||
</CommandMenuProvider>
|
||||
</ThemeProvider>
|
||||
</AuthContainer>
|
||||
|
||||
@@ -12,7 +12,7 @@ Content sources for vectors can be extremely large. As you grow you should run y
|
||||
|
||||
## Simple workloads
|
||||
|
||||
For small workloads it's typical to store your data in a single database.
|
||||
For small workloads, it's typical to store your data in a single database.
|
||||
|
||||
If you've used [Vecs](/docs/guides/ai/vecs-python-client) to create 3 different collections, you can expose collections to your web or mobile application using [views](/docs/guides/database/tables#views):
|
||||
|
||||
@@ -93,9 +93,9 @@ docs.query(
|
||||
|
||||
### Accessing external collections using Wrappers
|
||||
|
||||
Supabase supports [Foreign Data Wrappers](/blog/postgres-foreign-data-wrappers-rust). Wrappers allow you connect two databases together so that you can query them over the network.
|
||||
Supabase supports [Foreign Data Wrappers](/blog/postgres-foreign-data-wrappers-rust). Wrappers allow you to connect two databases together so that you can query them over the network.
|
||||
|
||||
This involves 2 steps: connecting to your remote database from the primary, and creating a Foreign Table.
|
||||
This involves 2 steps: connecting to your remote database from the primary and creating a Foreign Table.
|
||||
|
||||
#### Connecting your remote database
|
||||
|
||||
@@ -140,7 +140,7 @@ const { data, error } = await supabase
|
||||
|
||||
### Enterprise architecture
|
||||
|
||||
This diagram provides an example architecture, allowing you to access the collections either with our client libraries or using Vecs. You can add as many secondary databases as you need, in this example we show one only:
|
||||
This diagram provides an example architecture that allows you to access the collections either with our client libraries or using Vecs. You can add as many secondary databases as you need (in this example we only show one):
|
||||
|
||||
<div>
|
||||
<img
|
||||
|
||||
@@ -7,7 +7,7 @@ export const meta = {
|
||||
sidebar_label: 'Managing collections',
|
||||
}
|
||||
|
||||
A collection is an group of vector records managed by the `vecs` Python library. Records can be added to or updated in a collection. Collections can be queried at any time, but should be indexed for scalable query performance.
|
||||
A collection is a group of vector records managed by the `vecs` Python library. Records can be added to or updated in a collection. Collections can be queried at any time, but should be indexed for scalable query performance.
|
||||
|
||||
Supabase provides a [Python client](/docs/guides/ai/vecs-python-client) called `vecs` for managing unstructured vector stores in Postgres. If you come from a data science background, this unstructured data approach will feel familiar. If you are more interested in a structured data approach, see [Vector columns](/docs/guides/ai/vector-columns) or read our guide on [Structured & Unstructured Embeddings](/docs/guides/ai/structured-unstructured-embeddings).
|
||||
|
||||
@@ -32,7 +32,7 @@ vx = vecs.create_client(DB_CONNECTION)
|
||||
|
||||
### Create collection
|
||||
|
||||
You can create a collection to store vectors specifying the collections name and the number of dimensions in the vectors you intend to store.
|
||||
You can create a collection to store vectors specifying the collection's name and the number of dimensions in the vectors you intend to store.
|
||||
|
||||
```python
|
||||
docs = vx.create_collection(name="docs", dimension=3)
|
||||
@@ -75,7 +75,7 @@ docs.upsert(
|
||||
Collections can be queried immediately after being created.
|
||||
However, for good performance, the collection should be indexed after records have been upserted.
|
||||
|
||||
Indexes should be created **after** the collection has been populated with records. Building an index on an empty collection will result in significantly reduced recall. Once the index has been created you can still upsert new documents into the collection but you should rebuild the index if the size of the collection more than doubles.
|
||||
Indexes should be created **after** the collection has been populated with records. Building an index on an empty collection will significantly reduce recall. Once the index has been created you can still upsert new documents into the collection but you should rebuild the index if the size of the collection more than doubles.
|
||||
|
||||
Only one index may exist per-collection. By default, creating an index will replace any existing index.
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@ import Layout from '~/layouts/DefaultGuideLayout'
|
||||
export const meta = {
|
||||
id: 'ai-vecs-python-client',
|
||||
title: 'Face similarity search',
|
||||
subtitle: 'Identify the celebrities you looks most similar to using Supabase Vecs.',
|
||||
subtitle: 'Identify the celebrities who look most similar to you using Supabase Vecs.',
|
||||
breadcrumb: 'AI Quickstarts',
|
||||
}
|
||||
|
||||
This guide will walk you through a ["Face Similarity Search"](https://github.com/supabase/supabase/blob/master/examples/ai/face_similarity.ipynb) example using Colab and Supabase Vecs. You'll identify the celebrities you (or any other person) looks most similar to. You will:
|
||||
This guide will walk you through a ["Face Similarity Search"](https://github.com/supabase/supabase/blob/master/examples/ai/face_similarity.ipynb) example using Colab and Supabase Vecs. You will be able to identify the celebrities who look most similar to you (or any other person). You will:
|
||||
|
||||
1. Launch a Postgres database that uses pgvector to store embeddings
|
||||
1. Launch a notebook that connects to your database
|
||||
|
||||
@@ -42,7 +42,7 @@ docs = vx.create_collection(name="docs", dimension=3)
|
||||
|
||||
### Add embeddings
|
||||
|
||||
Now we can insert some embeddings into our "docs" collection using the `usert()` command:
|
||||
Now we can insert some embeddings into our "docs" collection using the `upsert()` command:
|
||||
|
||||
```py
|
||||
import vecs
|
||||
|
||||
@@ -14,16 +14,8 @@ This submodule provides convenience helpers for implementing user authentication
|
||||
|
||||
## Install the Next.js helper library
|
||||
|
||||
<Tabs
|
||||
scrollable
|
||||
size="small"
|
||||
type="underlined"
|
||||
defaultActiveId="npm"
|
||||
>
|
||||
<TabPanel id="npm" label="npm">
|
||||
|
||||
```sh
|
||||
npm install @supabase/auth-helpers-nextjs
|
||||
```sh Terminal
|
||||
npm install @supabase/auth-helpers-nextjs @supabase/supabase-js
|
||||
```
|
||||
|
||||
This library supports the following tooling versions:
|
||||
@@ -33,31 +25,10 @@ This library supports the following tooling versions:
|
||||
|
||||
Additionally, install the **React Auth Helpers** for components and hooks that can be used across all React-based frameworks.
|
||||
|
||||
```sh
|
||||
```sh Terminal
|
||||
npm install @supabase/auth-helpers-react
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
<TabPanel id="yarn" label="Yarn">
|
||||
|
||||
```sh
|
||||
yarn add @supabase/auth-helpers-nextjs
|
||||
```
|
||||
|
||||
This library supports the following tooling versions:
|
||||
|
||||
- Node.js: `^10.13.0 || >=12.0.0`
|
||||
- Next.js: `>=10`
|
||||
|
||||
Additionally, install the **React Auth Helpers** for components and hooks that can be used across all React-based frameworks.
|
||||
|
||||
```sh
|
||||
yarn add @supabase/auth-helpers-react
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
</Tabs>
|
||||
|
||||
## Set up environment variables
|
||||
|
||||
Retrieve your project URL and anon key in your project's [API settings](https://app.supabase.com/project/_/settings/api) in the Dashboard to set up the following environment variables. For local development you can set them in a `.env.local` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/nextjs/.env.local.example).
|
||||
|
||||
@@ -25,32 +25,21 @@ If you are using the `pages` directory, check out [Auth Helpers in Next.js Pages
|
||||
|
||||
</Admonition>
|
||||
|
||||
## Configuration
|
||||
## Automatic Configuration (recommended)
|
||||
|
||||
### Install Next.js Auth Helpers library
|
||||
Use the `create-next-app` command and the `with-supabase` template to automate the configuration of cookie-based auth with the Next.js Auth Helpers.
|
||||
|
||||
<Tabs
|
||||
scrollable
|
||||
size="small"
|
||||
type="underlined"
|
||||
defaultActiveId="npm"
|
||||
>
|
||||
|
||||
<TabPanel id="npm" label="npm">
|
||||
|
||||
```sh
|
||||
npm install @supabase/auth-helpers-nextjs
|
||||
```sh Terminal
|
||||
npx create-next-app -e with-supabase
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
<TabPanel id="yarn" label="Yarn">
|
||||
This creates a new Next.js app configured with:
|
||||
|
||||
```sh
|
||||
yarn add @supabase/auth-helpers-nextjs
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
</Tabs>
|
||||
- [Cookie-based Auth](/docs/guides/auth/auth-helpers/nextjs#authentication)
|
||||
- [Middleware to refresh user's session](/docs/guides/auth/auth-helpers/nextjs#managing-session-with-middleware)
|
||||
- [Code Exchange Route](/docs/guides/auth/auth-helpers/nextjs#Managing-sign-in-with-code-exchange)
|
||||
- [TypeScript](https://www.typescriptlang.org/)
|
||||
- [Tailwind CSS](https://tailwindcss.com/)
|
||||
|
||||
### Declare Environment Variables
|
||||
|
||||
@@ -61,7 +50,30 @@ NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
|
||||
```
|
||||
|
||||
Make sure you name these variables exactly as seen here, since these are picked up by the auth helpers library — you no longer have to explicitly pass them to a `createClient()` function as before.
|
||||
### Run Next.js App
|
||||
|
||||
Run the development server and navigate to http://localhost:3000.
|
||||
|
||||
```sh Terminal
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Manual Configuration
|
||||
|
||||
### Install Next.js Auth Helpers library
|
||||
|
||||
```sh Terminal
|
||||
npm install @supabase/auth-helpers-nextjs @supabase/supabase-js
|
||||
```
|
||||
|
||||
### Declare Environment Variables
|
||||
|
||||
Retrieve your project's URL and anon key from your [API settings](https://app.supabase.com/project/_/settings/api), and create a `.env.local` file with the following environment variables:
|
||||
|
||||
```bash .env.local
|
||||
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-supabase-anon-key
|
||||
```
|
||||
|
||||
### Managing session with Middleware
|
||||
|
||||
@@ -614,7 +626,7 @@ const supabase = createClientComponentClient({ isSingleton: false })
|
||||
|
||||
<div className="video-container">
|
||||
<iframe
|
||||
src="https://www.youtube-nocookie.com/embed/SUS1t6Kq7-8"
|
||||
src="https://www.youtube-nocookie.com/embed/ywvXGW6P4Gs"
|
||||
frameBorder="1"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowFullScreen
|
||||
|
||||
@@ -22,36 +22,14 @@ This submodule provides convenience helpers for implementing user authentication
|
||||
|
||||
## Install the Remix helper library
|
||||
|
||||
<Tabs
|
||||
scrollable
|
||||
size="small"
|
||||
type="underlined"
|
||||
defaultActiveId="npm"
|
||||
>
|
||||
<TabPanel id="npm" label="npm">
|
||||
|
||||
```sh
|
||||
npm install @supabase/auth-helpers-remix
|
||||
```sh Terminal
|
||||
npm install @supabase/auth-helpers-remix @supabase/supabase-js
|
||||
```
|
||||
|
||||
This library supports the following tooling versions:
|
||||
|
||||
- Remix: `>=1.7.2`
|
||||
|
||||
</TabPanel>
|
||||
<TabPanel id="yarn" label="Yarn">
|
||||
|
||||
```sh
|
||||
yarn add @supabase/auth-helpers-remix
|
||||
```
|
||||
|
||||
This library supports the following tooling versions:
|
||||
|
||||
- Remix: `>=1.7.2`
|
||||
|
||||
</TabPanel>
|
||||
</Tabs>
|
||||
|
||||
## Set up environment variables
|
||||
|
||||
Retrieve your project URL and anon key in your project's [API settings](https://app.supabase.com/project/_/settings/api) in the Dashboard to set up the following environment variables. For local development you can set them in a `.env` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/remix/.env.example).
|
||||
|
||||
@@ -16,7 +16,7 @@ This submodule provides convenience helpers for implementing user authentication
|
||||
This library supports Node.js `^16.15.0`.
|
||||
|
||||
```sh Terminal
|
||||
npm install @supabase/auth-helpers-sveltekit
|
||||
npm install @supabase/auth-helpers-sveltekit @supabase/supabase-js
|
||||
```
|
||||
|
||||
### Declare Environment Variables
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
import Layout from '~/layouts/DefaultGuideLayout'
|
||||
import StepHikeCompact from '~/components/StepHikeCompact'
|
||||
|
||||
export const meta = {
|
||||
title: 'Use Supabase Auth with Next.js',
|
||||
subtitle: 'Learn how to configure Supabase Auth for the Next.js App Router.',
|
||||
breadcrumb: 'Auth Quickstarts',
|
||||
}
|
||||
|
||||
<StepHikeCompact>
|
||||
|
||||
<StepHikeCompact.Step step={1}>
|
||||
<StepHikeCompact.Details title="Create a new Supabase project">
|
||||
|
||||
[Launch a new project](https://app.supabase.com) in the Supabase Dashboard.
|
||||
|
||||
Your new database has a table for storing your users. You can see that this table is currently empty by running some SQL in the [SQL Editor](https://app.supabase.com/project/_/sql).
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```sql SQL_EDITOR
|
||||
select * from auth.users;
|
||||
````
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={2}>
|
||||
|
||||
<StepHikeCompact.Details title="Create a Next.js app">
|
||||
|
||||
Use the `create-next-app` command and the `with-supabase` template, to create a Next.js app pre-configured with:
|
||||
- [Supabase Auth](https://supabase.com/docs/guides/auth/auth-helpers/nextjs)
|
||||
- [TypeScript](https://www.typescriptlang.org/)
|
||||
- [Tailwind CSS](https://tailwindcss.com/)
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```bash Terminal
|
||||
npx create-next-app -e with-supabase my-app && cd my-app
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={3}>
|
||||
<StepHikeCompact.Details title="Declare Supabase Environment Variables">
|
||||
|
||||
Rename `.env.local.example` to `.env.local` and populate with [your project's URL and Anon Key](https://app.supabase.com/project/_/settings/api).
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```text .env.local
|
||||
NEXT_PUBLIC_SUPABASE_URL=your-project-url
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={4}>
|
||||
<StepHikeCompact.Details title="Start the app">
|
||||
|
||||
Start the development server, go to http://localhost:3000 in a browser, and you should see the contents of `app/page.tsx`.
|
||||
|
||||
To Sign Up a new user, navigate to http://localhost:3000/login, and click `Sign Up Now`.
|
||||
|
||||
Check out the [Supabase Auth docs](https://supabase.com/docs/guides/auth#authentication) for more authentication methods.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```bash Terminal
|
||||
npm run dev
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
|
||||
</StepHikeCompact.Step>
|
||||
</StepHikeCompact>
|
||||
|
||||
export const Page = ({ children }) => <Layout meta={meta} children={children} hideToc={true} />
|
||||
|
||||
export default Page
|
||||
@@ -3,7 +3,7 @@ import StepHikeCompact from '~/components/StepHikeCompact'
|
||||
|
||||
export const meta = {
|
||||
title: 'Use Supabase Auth with React',
|
||||
subtitle: 'Learn how to Supabase Auth with React.js.',
|
||||
subtitle: 'Learn how to use Supabase Auth with React.js.',
|
||||
breadcrumb: 'Auth Quickstarts',
|
||||
}
|
||||
|
||||
|
||||
@@ -7,58 +7,40 @@ export const meta = {
|
||||
description: 'Render pages with user information on the server.',
|
||||
}
|
||||
|
||||
Single-page apps with server-side rendering (SSR) is a popular way to optimize rendering
|
||||
performance and leverage advanced caching strategies.
|
||||
Single-page apps with server-side rendering (SSR) is a popular way to optimize rendering performance and leverage advanced caching strategies.
|
||||
|
||||
Supabase Auth supports server-side rendering when you need access to user
|
||||
information, or your server needs to authorize API requests on behalf of your
|
||||
user to render content.
|
||||
Supabase Auth supports server-side rendering when you need access to user information, or your server needs to authorize API requests on behalf of your user to render content.
|
||||
|
||||
When a user authenticates with Supabase Auth, two pieces of information are
|
||||
issued by the server:
|
||||
When a user authenticates with Supabase Auth, two pieces of information are issued by the server:
|
||||
|
||||
1. **Access token** in the form of a JWT.
|
||||
2. **Refresh token** which is a randomly generated string.
|
||||
|
||||
Most Supabase projects have their auth server listening on
|
||||
`<project-ref>.supabase.co/auth/v1`, thus the access token and refresh token are
|
||||
set as `sb-access-token` and `sb-refresh-token` cookies on the
|
||||
`<project-ref>.supabase.co` domain.
|
||||
Most Supabase projects have their auth server listening on `<project-ref>.supabase.co/auth/v1`, thus the access token and refresh token are set as `sb-access-token` and `sb-refresh-token` cookies on the `<project-ref>.supabase.co` domain.
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
These cookie names are for internal Supabase use only and may change without
|
||||
warning. They are included in this guide for illustration purposes only.
|
||||
These cookie names are for internal Supabase use only and may change without warning. They are included in this guide for illustration purposes only.
|
||||
|
||||
</Admonition>
|
||||
|
||||
Web browsers limit access to cookies across domains, consistent with the
|
||||
[Same-Origin Policy
|
||||
(SOP)](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy).
|
||||
Web browsers limit access to cookies across domains, consistent with the [Same-Origin Policy (SOP)](https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy).
|
||||
|
||||
Your web application cannot access these cookies,
|
||||
nor will these cookies be sent to your application's server.
|
||||
Your web application cannot access these cookies, nor will these cookies be sent to your application's server.
|
||||
|
||||
## Understanding the authentication flow
|
||||
|
||||
When you call one of the `signIn` methods, the client library running in the
|
||||
browser sends the request to the Supabase Auth server. The Auth server determines
|
||||
whether to verify a phone number, email and password combination, a Magic Link,
|
||||
or use a social login (if you have any setup in your project).
|
||||
When you call one of the `signIn` methods, the client library running in the browser sends the request to the Supabase Auth server. The Auth server determines whether to verify a phone number, email and password combination, a Magic Link, or use a social login (if you have any setup in your project).
|
||||
|
||||
Upon successful verification of the identity of the user, the Supabase Auth
|
||||
server redirects the user back to your single-page app.
|
||||
Upon successful verification of the identity of the user, the Supabase Auth server redirects the user back to your single-page app.
|
||||
|
||||
<Admonition type="tip">
|
||||
|
||||
You can configure [redirects URLs](https://app.supabase.com/project/_/auth/url-configuration) in the Supabase Dashboard. You can use [wildcard match patterns](/docs/guides/auth#redirect-urls-and-wildcards)
|
||||
like `*` and `**` to allow redirects to different forms of URLs.
|
||||
You can configure [redirects URLs](https://app.supabase.com/project/_/auth/url-configuration) in the Supabase Dashboard. You can use [wildcard match patterns](/docs/guides/auth#redirect-urls-and-wildcards) like `*` and `**` to allow redirects to different forms of URLs.
|
||||
|
||||
</Admonition>
|
||||
|
||||
Supabase Auth supports two authentication flows: **Implicit** and **PKCE**. The **PKCE** flow is generally preferred when on the server.
|
||||
It introduces a few additional steps which guard a against replay and URL capture attacks. Unlike the implicit flow, it also allows users to access the
|
||||
`access_token` and `refresh_token` on the server.
|
||||
Supabase Auth supports two authentication flows: **Implicit** and **PKCE**. The **PKCE** flow is generally preferred when on the server. It introduces a few additional steps which guard a against replay and URL capture attacks. Unlike the implicit flow, it also allows users to access the `access_token` and `refresh_token` on the server.
|
||||
|
||||
<Accordion
|
||||
type="default"
|
||||
@@ -74,30 +56,23 @@ It introduces a few additional steps which guard a against replay and URL captur
|
||||
id={`ssr-implicit-flow`}
|
||||
>
|
||||
|
||||
When using the implicit flow, a redirect URL will be returned with the following structure:
|
||||
```
|
||||
https://yourapp.com/...#access_token=<...>&refresh_token=<...>&...
|
||||
```
|
||||
When using the implicit flow, a redirect URL will be returned with the following structure:
|
||||
```
|
||||
https://yourapp.com/...#access_token=<...>&refresh_token=<...>&...
|
||||
```
|
||||
|
||||
The first access and refresh tokens after a successful verification are
|
||||
contained in the URL fragment (anything after the `#` sign) of the redirect
|
||||
location. This is intentional and not configurable.
|
||||
The first access and refresh tokens after a successful verification are contained in the URL fragment (anything after the `#` sign) of the redirect location. This is intentional and not configurable.
|
||||
|
||||
The client libraries are designed to listen for this type of URL, extract
|
||||
the access token, refresh token and some extra information from it, and finally
|
||||
persist it in local storage for further use by the library and your app.
|
||||
The client libraries are designed to listen for this type of URL, extract the access token, refresh token and some extra information from it, and finally persist it in local storage for further use by the library and your app.
|
||||
|
||||
<Admonition type="info">
|
||||
<Admonition type="info">
|
||||
|
||||
Web browsers do not send the URL fragment to the server they're making the request to. Since you may not be hosting the single-page app on a server under your direct control (such as on GitHub Pages or other freemium hosting providers), we want to prevent hosting services from getting access to your user's authorization credentials by default.
|
||||
|
||||
Even if the server is under your direct control, `GET` requests and their full URLs are often logged. This approach also avoids leaking credentials in request or access logs. If you wish to obtain the `access_token` and `refresh_token` on a server, please consider using the PKCE flow.
|
||||
|
||||
</Admonition>
|
||||
|
||||
Web browsers do not send the URL fragment to the server they're making the
|
||||
request to. Since you may not be hosting the single-page app on a server under
|
||||
your direct control (such as on GitHub Pages or other freemium hosting
|
||||
providers), we want to prevent hosting services from getting access to your
|
||||
user's authorization credentials by default. Even if the server is under your
|
||||
direct control, `GET` requests and their full URLs are often logged. This
|
||||
approach also avoids leaking credentials in request or access logs. If you wish to obtain the
|
||||
`access_token` and `refresh_token` on a server, please consider using the PKCE flow.
|
||||
</Admonition>
|
||||
</Accordion.Item>
|
||||
</div>
|
||||
<div className="border-b pb-3">
|
||||
@@ -105,18 +80,21 @@ approach also avoids leaking credentials in request or access logs. If you wish
|
||||
header={<span className="text-scale-1200 font-bold">PKCE</span>}
|
||||
id={`ssr-pkce-flow`}
|
||||
>
|
||||
|
||||
When using the PKCE flow, a redirect URL will be returned with the following structure:
|
||||
```
|
||||
https://yourapp.com/...?code=<...>
|
||||
```
|
||||
The `code` parameter is commonly known as the Auth Code and can be exchanged for an access token by calling `exchangeCodeForSession(code)`.
|
||||
|
||||
<Admonition type="info">
|
||||
For security purposes, the code has a validity of 5 minutes and can only be exchanged for an access token once. You
|
||||
will need to restart the authentication flow from scratch if you wish to obtain a new access token.
|
||||
|
||||
For security purposes, the code has a validity of 5 minutes and can only be exchanged for an access token once. You will need to restart the authentication flow from scratch if you wish to obtain a new access token.
|
||||
|
||||
</Admonition>
|
||||
|
||||
As the flow is run server side, `localStorage` may not be available. You may configure the client library to use a custom storage adapter an alternate backing storage such as cookies
|
||||
by setting the `storage` option to an object with the following methods:
|
||||
As the flow is run server side, `localStorage` may not be available. You may configure the client library to use a custom storage adapter an alternate backing storage such as cookies by setting the `storage` option to an object with the following methods:
|
||||
|
||||
```js
|
||||
const customStorageAdapter: SupportedStorage = {
|
||||
getItem: (key) => {
|
||||
@@ -161,26 +139,19 @@ approach also avoids leaking credentials in request or access logs. If you wish
|
||||
}
|
||||
)
|
||||
```
|
||||
You can read more about the PKCE flow [here](https://oauth.net/2/pkce/)
|
||||
[Learn more](https://oauth.net/2/pkce/) about the PKCE flow.
|
||||
|
||||
</Accordion.Item>
|
||||
</div>
|
||||
</Accordion>
|
||||
|
||||
## Bringing it together
|
||||
|
||||
As seen from the authentication flow, the initial request after successful
|
||||
login made by the browser to your app's server after user login **does not
|
||||
contain any information about the user**. This is because first the client-side
|
||||
JavaScript library must run before it makes the access and refresh token
|
||||
available to your server.
|
||||
As seen from the authentication flow, the initial request after successful login made by the browser to your app's server after user login **does not contain any information about the user**. This is because first the client-side JavaScript library must run before it makes the access and refresh token available to your server.
|
||||
|
||||
It is very important to make sure that the redirect route right after login
|
||||
works without any server-side rendering. Other routes requiring authorization
|
||||
do not have the same limitation, provided you send the access and refresh
|
||||
tokens to your server.
|
||||
It is very important to make sure that the redirect route right after login works without any server-side rendering. Other routes requiring authorization do not have the same limitation, provided you send the access and refresh tokens to your server.
|
||||
|
||||
This is traditionally done by setting cookies. Here's an example you
|
||||
can add to the root of your application:
|
||||
This is traditionally done by setting cookies. Here's an example you can add to the root of your application:
|
||||
|
||||
```typescript
|
||||
supabase.auth.onAuthStateChange((event, session) => {
|
||||
@@ -197,15 +168,9 @@ supabase.auth.onAuthStateChange((event, session) => {
|
||||
})
|
||||
```
|
||||
|
||||
This uses the standard
|
||||
[`document.cookie` API](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie)
|
||||
to set cookies on all paths of your app's domain. All subsequent requests
|
||||
made by the browser to your app's server include the `my-access-token` and
|
||||
`my-refresh-token` cookies (the names of the cookies and additional
|
||||
parameters can be changed).
|
||||
This uses the standard [`document.cookie` API](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) to set cookies on all paths of your app's domain. All subsequent requests made by the browser to your app's server include the `my-access-token` and `my-refresh-token` cookies (the names of the cookies and additional parameters can be changed).
|
||||
|
||||
In your server-side rendering code you can now access user and session
|
||||
information:
|
||||
In your server-side rendering code you can now access user and session information:
|
||||
|
||||
```typescript
|
||||
const refreshToken = req.cookies['my-refresh-token']
|
||||
@@ -228,23 +193,13 @@ if (refreshToken && accessToken) {
|
||||
await supabase.auth.getUser()
|
||||
```
|
||||
|
||||
Use `setSession({ access_token, refresh_token })` instead of
|
||||
`setSession(refreshToken)` or `getUser(accessToken)` as refresh tokens or access tokens alone do not properly identify a user session.
|
||||
Use `setSession({ access_token, refresh_token })` instead of `setSession(refreshToken)` or `getUser(accessToken)` as refresh tokens or access tokens alone do not properly identify a user session.
|
||||
|
||||
Access tokens are valid only for a short amount of time.
|
||||
|
||||
Even though refresh tokens are long-lived, there is no guarantee that a user
|
||||
has an active session. They may have logged out and your application failed to
|
||||
remove the `my-refresh-token` cookie, or some other failure occurred that left
|
||||
a stale refresh token in the browser. Furthermore, a refresh token can only be
|
||||
used a few seconds after it was first used. Only use a refresh token if the
|
||||
access token is about to expire, which will avoid the introduction of difficult
|
||||
to diagnose logout bugs in your app.
|
||||
Even though refresh tokens are long-lived, there is no guarantee that a user has an active session. They may have logged out and your application failed to remove the `my-refresh-token` cookie, or some other failure occurred that left a stale refresh token in the browser. Furthermore, a refresh token can only be used a few seconds after it was first used. Only use a refresh token if the access token is about to expire, which will avoid the introduction of difficult to diagnose logout bugs in your app.
|
||||
|
||||
A good practice is to handle unauthorized errors by deferring rendering the
|
||||
page in the browser instead of in the server. Some user information is
|
||||
contained in the access token though, so in certain cases, you may be able to
|
||||
use this potentially stale information to render a page.
|
||||
A good practice is to handle unauthorized errors by deferring rendering the page in the browser instead of in the server. Some user information is contained in the access token though, so in certain cases, you may be able to use this potentially stale information to render a page.
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
@@ -256,57 +211,36 @@ To improve experience for your users, we recommend redirecting users to one spec
|
||||
|
||||
### How do I make the cookies `HttpOnly`?
|
||||
|
||||
This is not necessary. Both the access token and refresh token are designed to
|
||||
be passed around to different components in your application. The browser-based
|
||||
side of your application needs access to the refresh token to properly maintain
|
||||
a browser session anyway.
|
||||
This is not necessary. Both the access token and refresh token are designed to be passed around to different components in your application. The browser-based side of your application needs access to the refresh token to properly maintain a browser session anyway.
|
||||
|
||||
### My server is getting invalid refresh token errors. What's going on?
|
||||
|
||||
It is likely that the refresh token sent from the browser to your server is
|
||||
stale. Make sure the `onAuthStateChange` listener callback is free of bugs and
|
||||
is registered relatively early in your application's lifetime.
|
||||
It is likely that the refresh token sent from the browser to your server is stale. Make sure the `onAuthStateChange` listener callback is free of bugs and is registered relatively early in your application's lifetime
|
||||
|
||||
When you receive this error on the server-side, try to defer
|
||||
rendering to the browser where the client library can access an up-to-date
|
||||
refresh token and present the user with a better experience.
|
||||
When you receive this error on the server-side, try to defer rendering to the browser where the client library can access an up-to-date refresh token and present the user with a better experience.
|
||||
|
||||
### Should I set a shorter `Max-Age` parameter on the cookies?
|
||||
|
||||
The `Max-Age` or `Expires` cookie parameters only control whether the browser
|
||||
sends the value to the server. Since a refresh token represents the
|
||||
long-lived authentication session of the user on that browser, setting a short
|
||||
`Max-Age` or `Expires` parameter on the cookies only results in a degraded
|
||||
user experience.
|
||||
The `Max-Age` or `Expires` cookie parameters only control whether the browser sends the value to the server. Since a refresh token represents the long-lived authentication session of the user on that browser, setting a short `Max-Age` or `Expires` parameter on the cookies only results in a degraded user experience.
|
||||
|
||||
The only way to ensure that a user has logged out or their session has ended
|
||||
is to get the user's details with `getUser()`.
|
||||
The only way to ensure that a user has logged out or their session has ended is to get the user's details with `getUser()`.
|
||||
|
||||
### What should I use for the `SameSite` property?
|
||||
|
||||
Make sure you [understand the behavior of the property in different
|
||||
situations](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite)
|
||||
as some properties can degrade the user experience.
|
||||
Make sure you [understand the behavior of the property in different situations](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite) as some properties can degrade the user experience.
|
||||
|
||||
A good default is to use `Lax` which sends cookies when users are
|
||||
navigating to your site. Cookies typically require the `Secure` attribute,
|
||||
which only sends them over HTTPS. However, this can be a problem when
|
||||
developing on `localhost`.
|
||||
A good default is to use `Lax` which sends cookies when users are navigating to your site. Cookies typically require the `Secure` attribute, which only sends them over HTTPS. However, this can be a problem when developing on `localhost`.
|
||||
|
||||
### Can I use server-side rendering with a CDN or cache?
|
||||
|
||||
Yes, but you need to be careful to include at least the refresh token cookie
|
||||
value in the cache key. Otherwise you may be accidentally serving pages with
|
||||
data belonging to different users!
|
||||
Yes, but you need to be careful to include at least the refresh token cookie value in the cache key. Otherwise you may be accidentally serving pages with data belonging to different users!
|
||||
|
||||
Also be sure you set proper cache control headers. We recommend invalidating
|
||||
cache keys every hour or less.
|
||||
|
||||
export const Page = ({ children }) => <Layout meta={meta} children={children} />
|
||||
|
||||
export default Page
|
||||
Also be sure you set proper cache control headers. We recommend invalidating cache keys every hour or less.
|
||||
|
||||
### Which authentication flows have PKCE support?
|
||||
|
||||
At present, PKCE is supported on the Magic Link, OAuth, Sign Up, and Password Recovery routes. These correspond to the `signInWithOtp`, `signInWithOAuth`, `signUp`, and `resetPasswordForEmail` methods on the Supabase client library. When using PKCE with Phone and Email OTPs, there is no behavior change with respect to the implicit flow - an access token will be returned in the body when a request is successful.
|
||||
|
||||
export const Page = ({ children }) => <Layout meta={meta} children={children} />
|
||||
|
||||
export default Page
|
||||
@@ -17,9 +17,9 @@ Supabase provides several options for programmatically connecting to your Postgr
|
||||
|
||||
Supabase provides auto-updating [APIs](/docs/guides/database/api). This is the easiest way to get started if you are managing data (fetching, inserting, updating). We provides several types of API to suit your preferences:
|
||||
|
||||
- [REST](/docs/guides/database/api#rest-api): interact with your database through a REST interface.
|
||||
- [GraphQL](/docs/guides/database/api#graphql-api): interact with your database through a GraphQL interface.
|
||||
- [Realtime](/docs/guides/database/api#realtime-api): listen to database changes over websockets.
|
||||
- [REST](/docs/guides/api#rest-api-overview): interact with your database through a REST interface.
|
||||
- [GraphQL](/docs/guides/api#graphql-api-overview): interact with your database through a GraphQL interface.
|
||||
- [Realtime](/docs/guides/api#realtime-api-overview): listen to database changes over websockets.
|
||||
|
||||
## Direct connections
|
||||
|
||||
|
||||
@@ -84,11 +84,11 @@ Build login and registration pages with custom themes. [Docs](/docs/guides/auth/
|
||||
|
||||
### Auto-generated REST API
|
||||
|
||||
RESTful APIs are autogenerated from your database, without a single line of code. [Docs](/docs/guides/database/api#rest-api-overview).
|
||||
RESTful APIs are autogenerated from your database, without a single line of code. [Docs](/docs/guides/api#rest-api-overview).
|
||||
|
||||
### Auto-generated GraphQL API
|
||||
|
||||
Fast GraphQL APIs using our custom Postgres GraphQL extension. [Docs](/docs/guides/database/api#graphql-api-overview).
|
||||
Fast GraphQL APIs using our custom Postgres GraphQL extension. [Docs](/docs/guides/api#graphql-api-overview).
|
||||
|
||||
### Realtime Database changes
|
||||
|
||||
|
||||
@@ -2,9 +2,9 @@ import Layout from '~/layouts/DefaultGuideLayout'
|
||||
import StepHikeCompact from '~/components/StepHikeCompact'
|
||||
|
||||
export const meta = {
|
||||
title: 'Use Supabase with NextJS',
|
||||
title: 'Use Supabase with Next.js',
|
||||
subtitle:
|
||||
'Learn how to create a Supabase project, add some sample data to your database, and query the data from a NextJS app.',
|
||||
'Learn how to create a Supabase project, add some sample data to your database, and query the data from a Next.js app.',
|
||||
breadcrumb: 'Framework Quickstarts',
|
||||
}
|
||||
|
||||
@@ -15,17 +15,19 @@ export const meta = {
|
||||
|
||||
[Create a new project](https://app.supabase.com) in the Supabase Dashboard.
|
||||
|
||||
After your project is ready, create a table in your Supabase database using the [SQL Editor](https://app.supabase.com/project/_/sql) in the Dashboard. Use the following SQL statement to create a `countries` table with some sample data.
|
||||
After your project is ready, create a table in your Supabase database using the [SQL Editor](https://app.supabase.com/project/_/sql) in the Dashboard.
|
||||
|
||||
Use the following SQL statement to create a `countries` table with some sample data.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```sql Editor
|
||||
```sql SQL_EDITOR
|
||||
-- Create the table
|
||||
create table countries (
|
||||
id serial primary key,
|
||||
name varchar(255) not null
|
||||
name text not null
|
||||
);
|
||||
|
||||
-- Insert some sample data into the table
|
||||
@@ -40,16 +42,19 @@ export const meta = {
|
||||
|
||||
<StepHikeCompact.Step step={2}>
|
||||
|
||||
<StepHikeCompact.Details title="Create a NextJS app">
|
||||
<StepHikeCompact.Details title="Create a Next.js app">
|
||||
|
||||
Create a Next.js app using the `create-next-app` command.
|
||||
Use the `create-next-app` command and the `with-supabase` template, to create a Next.js app pre-configured with:
|
||||
- [Supabase Auth](https://supabase.com/docs/guides/auth/auth-helpers/nextjs)
|
||||
- [TypeScript](https://www.typescriptlang.org/)
|
||||
- [Tailwind CSS](https://tailwindcss.com/)
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```bash Terminal
|
||||
npx create-next-app my-app
|
||||
npx create-next-app -e with-supabase my-app && cd my-app
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
@@ -57,18 +62,17 @@ export const meta = {
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={3}>
|
||||
<StepHikeCompact.Details title="Install the Supabase client library">
|
||||
<StepHikeCompact.Details title="Declare Supabase Environment Variables">
|
||||
|
||||
The fastest way to get started is to use the `supabase-js` client library which provides a convenient interface for working with Supabase from a NextJS app.
|
||||
|
||||
Navigate to the NextJS app and install `supabase-js`.
|
||||
Rename `.env.local.example` to `.env.local` and populate with [your project's URL and Anon Key](https://app.supabase.com/project/_/settings/api).
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```bash Terminal
|
||||
cd my-app && npm install @supabase/supabase-js
|
||||
```text .env.local
|
||||
NEXT_PUBLIC_SUPABASE_URL=your-project-url
|
||||
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
@@ -76,18 +80,33 @@ export const meta = {
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={4}>
|
||||
<StepHikeCompact.Details title="Create the Supabase client">
|
||||
<StepHikeCompact.Details title="Query Supabase data from Next.js">
|
||||
|
||||
In the `/lib` directory of your Next.js app, create a file called `supabaseClient.js` and add the following code to initialize the Supabase client with your [project URL and public API (anon) key](https://app.supabase.com/project/_/settings/api).
|
||||
Create a new file at `app/countries/page.tsx` and populate with the following.
|
||||
|
||||
This will select all the rows from the `countries` table in Supabase and render them on the page.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```js lib/supabaseClient.js
|
||||
import { createClient } from '@supabase/supabase-js'
|
||||
```ts app/countries/page.tsx
|
||||
import { createServerComponentClient } from "@supabase/auth-helpers-nextjs";
|
||||
import { cookies } from "next/headers";
|
||||
|
||||
export const supabase = createClient('https://<project>.supabase.co', '<your-anon-key>')
|
||||
export default async function Index() {
|
||||
const supabase = createServerComponentClient({ cookies });
|
||||
|
||||
const { data: countries } = await supabase.from("countries").select();
|
||||
|
||||
return (
|
||||
<ul className="my-auto">
|
||||
{countries?.map((country) => (
|
||||
<li key={country.id}>{country.name}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
@@ -95,50 +114,9 @@ export const meta = {
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={5}>
|
||||
<StepHikeCompact.Details title="Query data from the app">
|
||||
|
||||
Use the `getServerSideProps` method to fetch the data server-side and display the query result as a simple list.
|
||||
|
||||
Replace the existing function in your index file in the `pages` directory with the following code.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
<StepHikeCompact.Code>
|
||||
|
||||
```js app/index.js
|
||||
import { supabase } from './../lib/supabaseClient';
|
||||
|
||||
function Page({ countries }) {
|
||||
return (
|
||||
<ul>
|
||||
{countries.map((country) => (
|
||||
<li key={country.id}>{country.name}</li>
|
||||
))}
|
||||
</ul>
|
||||
);
|
||||
}
|
||||
|
||||
export async function getServerSideProps() {
|
||||
let { data } = await supabase.from('countries').select()
|
||||
|
||||
return {
|
||||
props: {
|
||||
countries: data
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default Page;
|
||||
```
|
||||
|
||||
</StepHikeCompact.Code>
|
||||
|
||||
</StepHikeCompact.Step>
|
||||
|
||||
<StepHikeCompact.Step step={6}>
|
||||
<StepHikeCompact.Details title="Start the app">
|
||||
|
||||
Start the app and go to http://localhost:3000 in a browser and you should see the list of countries.
|
||||
Run the development server, go to http://localhost:3000/countries in a browser and you should see the list of countries.
|
||||
|
||||
</StepHikeCompact.Details>
|
||||
|
||||
|
||||
@@ -88,6 +88,7 @@ export const meta = {
|
||||
|
||||
```vue src/App.vue
|
||||
<script setup>
|
||||
import { createClient } from '@supabase/supabase-js'
|
||||
const supabase = createClient('https://<project>.supabase.co', '<your-anon-key>')
|
||||
const countries = ref([])
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ It can be challenging to authenticate your users in all these different environm
|
||||
Install the auth helpers for Next.js
|
||||
|
||||
```bash
|
||||
npm install @supabase/auth-helpers-nextjs
|
||||
npm install @supabase/auth-helpers-nextjs @supabase/supabase-js
|
||||
```
|
||||
|
||||
### NextJS Middleware
|
||||
@@ -241,7 +241,7 @@ export default function AuthForm() {
|
||||
|
||||
</TabPanel>
|
||||
</Tabs>
|
||||
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
If you are using TypeScript for this project, see [generating types](/docs/guides/api/rest/generating-types) to automatically generate types from your database tables.
|
||||
@@ -454,16 +454,12 @@ export default function AccountForm({ session }) {
|
||||
getProfile()
|
||||
}, [user, getProfile])
|
||||
|
||||
async function updateProfile({
|
||||
username,
|
||||
website,
|
||||
avatar_url,
|
||||
}) {
|
||||
async function updateProfile({ username, website, avatar_url }) {
|
||||
try {
|
||||
setLoading(true)
|
||||
|
||||
let { error } = await supabase.from('profiles').upsert({
|
||||
id: user?.id as string,
|
||||
id: user?.id,
|
||||
full_name: fullname,
|
||||
username,
|
||||
website,
|
||||
|
||||
@@ -55,7 +55,7 @@ It can be challenging to authenticate your users in all these different environm
|
||||
Install the auth helpers for SvelteKit:
|
||||
|
||||
```bash
|
||||
npm install @supabase/auth-helpers-sveltekit
|
||||
npm install @supabase/auth-helpers-sveltekit @supabase/supabase-js
|
||||
```
|
||||
|
||||
Add the code below to your `src/hooks.server.ts` to initialize the client on the server:
|
||||
|
||||
@@ -16,8 +16,8 @@ The Supabase Marketplace brings together all the tools you need to extend your S
|
||||
Supabase provides several integration points:
|
||||
|
||||
- The [Postgres connection](/docs/guides/database/connecting-to-postgres). Anything that works with Postgres also works with Supabase projects.
|
||||
- The [Project REST API](/docs/guides/database/api#rest-api) & client libraries.
|
||||
- The [Project GraphQL API](/docs/guides/database/api#graphql-api).
|
||||
- The [Project REST API](/docs/guides/api#rest-api-overview) & client libraries.
|
||||
- The [Project GraphQL API](/docs/guides/api#graphql-api-overview).
|
||||
- The [Platform API](/docs/reference/api).
|
||||
|
||||
## List your integration
|
||||
|
||||
@@ -44,9 +44,7 @@ Vacuum operations can temporarily increase resource utilization, which may adver
|
||||
</Admonition>
|
||||
|
||||
Supabase projects have automatic vacuuming enabled, which ensures that these operations are performed regularly to keep the database healthy and performant.
|
||||
It is possible to [fine-tune](https://www.percona.com/blog/2018/08/10/tuning-autovacuum-in-postgresql-and-autovacuum-internals/)
|
||||
the [autovacuum parameters](https://www.enterprisedb.com/blog/postgresql-vacuum-and-analyze-best-practice-tips),
|
||||
or [manually initiate](https://www.postgresql.org/docs/current/sql-vacuum.html) vacuum operations.
|
||||
It is possible to [fine-tune](https://www.percona.com/blog/2018/08/10/tuning-autovacuum-in-postgresql-and-autovacuum-internals/) the [autovacuum parameters](https://www.enterprisedb.com/blog/postgresql-vacuum-and-analyze-best-practice-tips), or [manually initiate](https://www.postgresql.org/docs/current/sql-vacuum.html) vacuum operations.
|
||||
Running a manual vacuum after deleting large amounts of data from your DB could help reduce the database size reported by Postgres.
|
||||
|
||||
### Preoccupied Space
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import Layout from '~/layouts/DefaultGuideLayout'
|
||||
|
||||
export const meta = {
|
||||
id: 'exhaust-disk-io',
|
||||
title: 'High Disk IO Consumption',
|
||||
description:
|
||||
'Understand Disk IO, what can deplete your Disk Budget and what you can do about it.',
|
||||
}
|
||||
|
||||
## Understanding Disk IO and Disk Budget
|
||||
|
||||
Disk IO refers to two metrics: throughput in Megabits per Second and IOPS which are Input/Output Operations per Second. Depending on the compute add-on of your instance you will have [different baseline performances](https://supabase.com/docs/guides/platform/compute-add-ons#disk-io).
|
||||
|
||||
Smaller compute instances can burst and exceed their baseline performance for a short quota of time every day. This quota is represented as your Disk Budget and once your Disk Budget is consumed, your instance reverts back to its baseline performance. You can read more about this under [Bursting and Disk Budget](https://supabase.com/docs/guides/platform/compute-add-ons#bursting-and-disk-budget).
|
||||
|
||||
## Depleting your Disk Budget
|
||||
|
||||
Running out of Disk Budget means that your instance is using more disk than its compute add-on can handle and essentially gets throttled. This could have a wide range of implications:
|
||||
|
||||
- Response times on requests can increase noticeably
|
||||
- CPU usage rises noticeably due to IO wait
|
||||
- Disruption of [daily backup](https://supabase.com/docs/guides/platform/backups#daily-backups) routines
|
||||
- Disruption of internal Postgres processes such as [autovacuuming](https://supabase.com/docs/guides/platform/database-size#vacuum-operations)
|
||||
- Your instance may become unresponsive
|
||||
|
||||
## Monitor your Disk Budget
|
||||
|
||||
To check your Disk Budget on the Supabase Platform, head over to [Database Health in the Reports section](https://supabase.com/dashboard/project/_/reports/database).
|
||||
|
||||
It is also possible to monitor your resources and set up alerts using Prometheus/Grafana. With Grafana you will be able to see how much of your RAM is used for caching and you can track other metrics such as your Swap usage. Read the [Metrics Guide](https://supabase.com/docs/guides/platform/metrics) to learn more.
|
||||
|
||||
## Common reasons for high disk IO usage
|
||||
|
||||
Most operations on your Supabase project require the disk in some form. Hence, there can be many reasons for high disk usage. Here are some common ones:
|
||||
|
||||
- **High Memory Usage:** Every Supabase project has 1GB of disk allocated for swapping. When your memory usage is high, the operating system might frequently move parts of the memory back and forth of the swap space on the disk.
|
||||
- **Low Cache Usage:** If your cache hit rate is low, many of your database requests might go straight to the disk. Go to the [Cache Hit Rate Guide](https://supabase.com/docs/guides/platform/performance#hit-rate) to learn more.
|
||||
- **Query performance:** Queries that take a long time to complete (>1 second) could be using your disk inefficiently. Check our guide on [examining query performance](https://supabase.com/docs/guides/platform/performance#examining-query-performance).
|
||||
- **High popularity:** Congrats! Your side project turned out to be a real success and is getting more requests than it can handle.
|
||||
|
||||
## How to fix
|
||||
|
||||
1. **Upgrade your compute:** You can get a Compute Add-on for your project. See your [upgrade options](https://supabase.com/dashboard/project/_/settings/billing/subscription?panel=computeInstance) by selecting your project. Do reference the [different baseline performances](https://supabase.com/docs/guides/platform/compute-add-ons#disk-io) that come with larger Compute Add-ons.
|
||||
2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](https://supabase.com/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](https://supabase.com/docs/guides/platform/going-into-prod#performance).
|
||||
|
||||
export const Page = ({ children }) => <Layout meta={meta} children={children} />
|
||||
|
||||
export default Page
|
||||
@@ -23,6 +23,8 @@ You may observe elevated memory usage even when your database has little to no l
|
||||
|
||||
Every Supabase project runs in its own dedicated virtual machine. Your instance will have a different set of hardware provisioned depending on your [compute add-on](https://supabase.com/docs/guides/platform/compute-add-ons). Depending on your workload, your compute hardware may not be suitable and can result in high RAM usage.
|
||||
|
||||
A good proxy for unhealthy memory usage is swap usage. If you run out of RAM, your system will offload memory to your disk's much slower swap partition. If your swap is above 70%, chances are high that your compute hardware is not suitable for your workload. Head over to your project's [Database Health](https://supabase.com/dashboard/project/_/reports/database) to see your swap usage.
|
||||
|
||||
High RAM usage could come with a range of issues:
|
||||
|
||||
- degraded performance overall when your instance has to use swap memory
|
||||
@@ -31,7 +33,7 @@ High RAM usage could come with a range of issues:
|
||||
|
||||
## Monitor your RAM
|
||||
|
||||
To check your RAM usage on the Supabase Platform, head over to [Database health in the Reports section](https://app.supabase.com/project/_/reports/database).
|
||||
To check your RAM usage on the Supabase Platform, head over to [Database Health in the Reports section](https://supabase.com/dashboard/project/_/reports/database).
|
||||
|
||||
It is also possible to monitor your resources and set up alerts using Prometheus/Grafana. With Grafana you will be able to see how much of your RAM is used for caching and you can track other metrics such as your Swap usage. Read the [Metrics Guide](https://supabase.com/docs/guides/platform/metrics) to learn more.
|
||||
|
||||
@@ -41,11 +43,11 @@ Everything you do with your Supabase project requires memory in some form. Hence
|
||||
|
||||
- **Query performance:** Queries that take a long time to complete (>1 second) could be using your RAM inefficiently. Check our guide on [examining query performance](https://supabase.com/docs/guides/platform/performance#examining-query-performance).
|
||||
- **Too many connections:** Every connection to your database consumes memory. You can check the number of active connections under [Database Roles](https://supabase.com/dashboard/project/_/database/roles) after you select your project. Read our guide on [too many open connections](https://supabase.com/docs/guides/platform/troubleshooting#too-many-open-connections).
|
||||
- **Extensions:** Some extensions such as `timescaledb` or `pg_cron` can use a lot of memory. It can also add up when you have too many extensions running. You can manage your database extensions in the dashboard under [Extensions](https://app.supabase.com/project/_/database/extensions).
|
||||
- **Extensions:** Some extensions such as `timescaledb` or `pg_cron` can use a lot of memory. It can also add up when you have too many extensions running. You can manage your database extensions in the dashboard under [Extensions](https://supabase.com/dashboard/project/_/database/extensions).
|
||||
|
||||
## How to fix your memory issues
|
||||
|
||||
1. **Upgrade your compute:** You can get a Compute Add-on for your project. See your [upgrade options](https://app.supabase.com/project/_/settings/billing/subscription?panel=computeInstance) by selecting your project.
|
||||
1. **Upgrade your compute:** You can get a Compute Add-on for your project. See your [upgrade options](https://supabase.com/dashboard/project/_/settings/billing/subscription?panel=computeInstance) by selecting your project.
|
||||
2. **Optimize performance:** Get more out of your instance's resources by optimizing your usage. Have a look at our [performance tuning guide](https://supabase.com/docs/guides/platform/performance#examining-query-performance) and our [production readiness guide](https://supabase.com/docs/guides/platform/going-into-prod#performance).
|
||||
|
||||
export const Page = ({ children }) => <Layout meta={meta} children={children} />
|
||||
|
||||
@@ -88,7 +88,7 @@ export const meta = {
|
||||
|
||||
<TextLink
|
||||
label="Explore more resources"
|
||||
url="/docs/guides/resources"
|
||||
url="/guides/resources"
|
||||
className="no-underline text-brand-900 text-sm"
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -42,6 +42,7 @@ Margarita Sandomirskaia
|
||||
Marijana Šimag
|
||||
Mark Burggraf
|
||||
Michel Pelletier
|
||||
Mickael Hebert
|
||||
Monica El Khoury
|
||||
Nikita Kotlyarov
|
||||
Oli R
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -28,7 +28,7 @@ Supabase is an open source firebase alternative, but instead of being built arou
|
||||
|
||||
At Supabase we’ve always been huge fans of Firebase - so we started adding a few things on top of PostgreSQL in an attempt to reach feature parity, including:
|
||||
|
||||
- Auto-generated API - [query your data straight from the client](https://supabase.com/docs/guides/database/api#rest-api-2).
|
||||
- Auto-generated API - [query your data straight from the client](https://supabase.com/docs/guides/api#rest-api-overview).
|
||||
- Realtime - [changes in your data will be streamed directly to your application](https://supabase.com/docs/reference/dart/subscribe).
|
||||
- Auth - [a simple to integrate auth system and SQL based rules engine](https://supabase.com/auth).
|
||||
- Functions - [javascript and typescript functions that deploy out globally](https://supabase.com/edge-functions).
|
||||
|
||||
@@ -16,7 +16,7 @@ Heroku is a cloud application platform that offers managed PostgreSQL as a servi
|
||||
|
||||
Supabase also offers managed Postgres, the main difference is that with each deployment you also get:
|
||||
|
||||
- Auto-generated API - [never write an API again](https://supabase.com/docs/guides/database/api#rest-api-2)
|
||||
- Auto-generated API - [never write an API again](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- Realtime - [subscribe to data changes via websockets](https://supabase.com/docs/reference/dart/subscribe)
|
||||
- Auth - [users can log in and out of your application](https://supabase.com/auth)
|
||||
- Functions - [deploy custom logic to the edge](https://supabase.com/edge-functions)
|
||||
@@ -43,7 +43,7 @@ These are some of the key differences between Heroku Postgres and Supabase in te
|
||||
|
||||
- Supabase is more than just the raw database, it also comes with:
|
||||
- [Connection pooling](https://supabase.com/docs/guides/database/connecting-to-postgres#connection-pool) so that you won’t run out of connections in a serverless environment.
|
||||
- [Auto-generated APIs](https://supabase.com/docs/guides/database/api#rest-api-2) based on your schema, so you can communicate with your database directly from the client.
|
||||
- [Auto-generated APIs](https://supabase.com/docs/guides/api#rest-api-overview) based on your schema, so you can communicate with your database directly from the client.
|
||||
- [Realtime API](https://supabase.com/docs/reference/dart/subscribe) is useful for when you want to subscribe to changes to your database over websockets.
|
||||
- [Auth API](https://supabase.com/auth) can be used to leverage Postgres’s Row Level Security model, and control access to sensitive data on a per user, or per group level.
|
||||
- [Functions](https://supabase.com/edge-functions) can be deployed out to the edge directly from the Supabase CLI, which means you can run sensitive business logic or transformations in a serverless fashion.
|
||||
|
||||
@@ -86,7 +86,7 @@ Today released pg_graphql 1.0 release and its general availability on our platfo
|
||||
|
||||
- Read the [announcement](/blog/pg-graphql-v1)
|
||||
- Browse the [GitHub repo](https://github.com/supabase/pg_graphql/)
|
||||
- View the [docs](/docs/guides/database/api#graphql-api)
|
||||
- View the [docs](/docs/guides/api#graphql-api-overview)
|
||||
|
||||
## Postgres Point-in-Time Recovery
|
||||
|
||||
|
||||
@@ -12,11 +12,17 @@ date: '2023-02-06'
|
||||
toc_depth: 3
|
||||
---
|
||||
|
||||
A new PostgreSQL extension is now available in Supabase: [`pgvector`](https://supabase.com/docs/guides/getting-started/openai/vector-search), an open-source vector similarity search.
|
||||
A new PostgreSQL extension is now available in Supabase: [`pgvector`](https://github.com/pgvector/pgvector), an open-source vector similarity search.
|
||||
|
||||
The exponential progress of AI functionality over the past year has inspired many new real world applications. One specific challenge has been the ability to store and query _embeddings_ at scale.
|
||||
In this post we'll explain what embeddings are, why we might want to use them, and how we can store and query them in PostgreSQL using `pgvector`.
|
||||
|
||||
<div className="bg-gray-300 rounded-lg px-6 py-2 bold">
|
||||
|
||||
🆕 Supabase has now released an open source toolkit for developing AI applications using Postgres and pgvector. Learn more in the [AI & Vectors docs](https://supabase.com/docs/guides/ai).
|
||||
|
||||
</div>
|
||||
|
||||
## What are embeddings?
|
||||
|
||||
Embeddings capture the “relatedness” of text, images, video, or other types of information. This relatedness is most commonly used for:
|
||||
@@ -370,7 +376,7 @@ The OpenAI API supports [completion streaming](https://platform.openai.com/docs/
|
||||
|
||||
Storing embeddings in Postgres opens a world of possibilities. You can combine your search function with telemetry functions, add an user-provided feedback (thumbs up/down), and make your search feel more integrated with your products.
|
||||
|
||||
The [pgvector extension](https://supabase.com/docs/guides/getting-started/openai/vector-search) is available on all new Supabase projects today. If you want to try it out, launch a new Postgres database today: [database.new](https://database.new)
|
||||
The [pgvector extension](https://supabase.com/docs/guides/ai/vector-columns) is available on all new Supabase projects today. If you want to try it out, launch a new Postgres database today: [database.new](https://database.new)
|
||||
|
||||
## More pgvector and ChatGPT resources
|
||||
|
||||
|
||||
@@ -13,13 +13,23 @@ date: '2023-04-04'
|
||||
toc_depth: 6
|
||||
---
|
||||
|
||||
Every Launch Week, we strive to approach things differently as part of our Kaizen mindset. For [Launch Week 7](https://www.supabase.com/launch-week), we decided to add some twists to our popular ticket system. While we made several changes, this post will focus on one specific modification (we'll share more about the rest this week!).
|
||||
Imagine you generated a bunch of tickets for the Supabase [Launch Week](https://www.supabase.com/launch-week) and you wanted to display them all on [one page](https://supabase.com/launch-week/tickets). It might take a while to load them all in one go, so a great solution to this would be to lazy load smaller subsets while the user scrolls, with a technique called infinite scrolling.
|
||||
|
||||
Our goal was to feature all the amazing people who generated tickets on a [single page](https://supabase.com/launch-week/tickets). However, displaying them all at once could take a toll on the loading time and negatively affect the user experience. That's where lazy loading smaller subsets via infinite scrolling came in as the solution.
|
||||
An infinite scroll allows you to scroll through your content endlessly while only loading the data you need as you need it. This improves performance while also creating a smooth and delightful user experience.
|
||||
|
||||
With infinite scrolling, users can effortlessly scroll through content while only loading the necessary data as they go. This not only enhances performance but also creates a seamless and enjoyable user experience.
|
||||
In this post, we'll go through the steps of how to create an infinite scroll using NextJs, Supabase, and Framer Motion.
|
||||
|
||||
In this post, we'll detail our process of implementing infinite scrolling using Next.js, Framer Motion, and Supabase.
|
||||
## What is infinite scroll?
|
||||
|
||||
Infinite scroll is a web design technique that automatically loads and displays new content as a user scrolls down a web page. This creates an endless scrolling experience that eliminates the need for pagination and provides a seamless and uninterrupted browsing experience.
|
||||
|
||||
Infinite scroll can enhance user experience and engagement by providing a fluid and intuitive browsing experience. It also allows for faster content delivery. By dynamically loading and displaying content as needed, infinite scroll can reduce the time and effort required to load pages and deliver content, improving overall performance and user satisfaction.
|
||||
|
||||
Next.js is a great choice for implementing infinite scroll in a web application. It provides server-side rendering and automatic code splitting, which can improve performance and optimize the loading of content as the user scrolls down the page. It also includes built-in support for dynamic imports and lazy loading, which can be useful for fetching and displaying content as needed.
|
||||
|
||||
Plus, incremental static regeneration (ISR) and pre-fetching of data can further improve performance by enabling the server to generate and cache pages in advance, and to pre-fetch data as the user scrolls down the page.
|
||||
|
||||
Now, onto the code!
|
||||
|
||||
## Step 0. Load the first batch
|
||||
|
||||
|
||||
@@ -51,7 +51,10 @@ const Globe = () => {
|
||||
},
|
||||
})
|
||||
setTimeout(() => (canvasRef.current.style.opacity = '1'))
|
||||
return () => cobe.destroy()
|
||||
return () => {
|
||||
cobe.destroy()
|
||||
window.removeEventListener('resize', onResize)
|
||||
}
|
||||
}, [isDarkMode])
|
||||
|
||||
return (
|
||||
|
||||
@@ -37,8 +37,10 @@ const Hero = () => {
|
||||
</span>
|
||||
</h1>
|
||||
<p className="pt-2 text-scale-1200 my-3 text-sm sm:mt-5 lg:mb-0 sm:text-base lg:text-lg">
|
||||
Supabase is an open source Firebase alternative for building secure and
|
||||
performant Postgres backends with minimal configuration.
|
||||
Supabase is an open source Firebase alternative.{' '}
|
||||
<br className="hidden md:block" />
|
||||
Start your project with a Postgres database, Authentication, instant APIs, Edge
|
||||
Functions, Realtime subscriptions, Storage, and Vector embeddings.
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
|
||||
@@ -101,7 +101,7 @@ function IntegrationPartnersPage(props: Props) {
|
||||
url: `https://supabase.com/partners`,
|
||||
images: [
|
||||
{
|
||||
url: `https://supabase.com${router.basePath}/images/product/database/database-og.jpg`, // TODO
|
||||
url: `https://supabase.com${router.basePath}/images/og/integrations.png`, // TODO
|
||||
},
|
||||
],
|
||||
}}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Blog - Supabase</title>
|
||||
<link>https://supabase.com</link>
|
||||
<description>Latest news from Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Mon, 05 Jun 2023 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/berriai</guid>
|
||||
<title>Berri AI Boosts Productivity by Migrating from AWS RDS to Supabase with pgvector</title>
|
||||
<link>https://supabase.com/customers/berriai</link>
|
||||
<description>Learn how Berri AI overcame challenges with self-hosting their vector database on AWS RDS and successfully migrated to Supabase.</description>
|
||||
<pubDate>Mon, 05 Jun 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/markprompt</guid>
|
||||
<title>Markprompt and Supabase - GDPR-Compliant AI Chatbots for Docs and Websites.</title>
|
||||
<link>https://supabase.com/customers/markprompt</link>
|
||||
<description>AI-powered chatbot platform, Markprompt, empowers developers to deliver efficient and GDPR-compliant prompt experiences on top of their content, by leveraging Supabase's secure and privacy-focused database and authentication solutions.</description>
|
||||
<pubDate>Tue, 16 May 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/mendableai</guid>
|
||||
<title>Mendable switches from Pinecone to Supabase for PostgreSQL vector embeddings.</title>
|
||||
<link>https://supabase.com/customers/mendableai</link>
|
||||
<description>How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase with pgvector.</description>
|
||||
<pubDate>Thu, 04 May 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/happyteams</guid>
|
||||
<title>HappyTeams unlocks better performance and reduces cost with Supabase.</title>
|
||||
<link>https://supabase.com/customers/happyteams</link>
|
||||
<description>How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.</description>
|
||||
<pubDate>Wed, 15 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/xendit</guid>
|
||||
<title>Xendit use Supabase and create a full solution shipped to production in less than one week.</title>
|
||||
<link>https://supabase.com/customers/xendit</link>
|
||||
<description>As a payment processor, Xendit are responsible for verifying that all transactions are legal.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/replenysh</guid>
|
||||
<title>Replenysh uses Supabase to implement OTP in less than 24 hours.</title>
|
||||
<link>https://supabase.com/customers/replenysh</link>
|
||||
<description>With Supabase, Replenysh gets a slick auth experience, reduces DevOps overhead, and continues to scale with Postgres.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/mobbin</guid>
|
||||
<title>How Mobbin migrated 200,000 users from Firebase for a better authentication experience.</title>
|
||||
<link>https://supabase.com/customers/mobbin</link>
|
||||
<description>Mobbin helps over 200,000 creators globally search and view the latest design patterns from well-known apps.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/customers/epsilon3</guid>
|
||||
<title>Epsilon3 digitize paper-based procedures in the space industry using telemetry data, simplifying testing and operations.</title>
|
||||
<link>https://supabase.com/customers/epsilon3</link>
|
||||
<description>Epsilon3 uses Supabase to help teams execute secure and reliable operations in an industry where project spend runs into the billions.</description>
|
||||
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 185 KiB |
@@ -0,0 +1,40 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Angelico de los Reyes at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-angelico_de_los_reyes-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-point-in-time-recovery</guid>
|
||||
<title>Point in Time Recovery is now available for Pro projects</title>
|
||||
<link>https://supabase.com/blog/postgres-point-in-time-recovery</link>
|
||||
<description>We're making PITR available for more projects, with a new Dashboard UI that makes it simple to use.</description>
|
||||
<pubDate>Thu, 15 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/continuous-postgresql-backup-walg</guid>
|
||||
<title>Continuous PostgreSQL Backups using WAL-G</title>
|
||||
<link>https://supabase.com/blog/continuous-postgresql-backup-walg</link>
|
||||
<description>Have you ever wanted to restore your database's state to a particular moment in time? This post explains how, using WAL-G.</description>
|
||||
<pubDate>Sat, 01 Aug 2020 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-templates</guid>
|
||||
<title>What are PostgreSQL Templates?</title>
|
||||
<link>https://supabase.com/blog/postgresql-templates</link>
|
||||
<description>What are PostgreSQL templates and what are they used for?</description>
|
||||
<pubDate>Wed, 08 Jul 2020 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-physical-logical-backups</guid>
|
||||
<title>Physical vs Logical Backups in PostgreSQL</title>
|
||||
<link>https://supabase.com/blog/postgresql-physical-logical-backups</link>
|
||||
<description>What are physical and logical backups in Postgres?</description>
|
||||
<pubDate>Mon, 06 Jul 2020 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Ant Wilson at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Fri, 26 Feb 2021 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-ant_wilson-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/cracking-postgres-interview</guid>
|
||||
<title>Cracking PostgreSQL Interview Questions</title>
|
||||
<link>https://supabase.com/blog/cracking-postgres-interview</link>
|
||||
<description>Understand the top PostgreSQL Interview Questions</description>
|
||||
<pubDate>Fri, 26 Feb 2021 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Bo Lu at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 14 Dec 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-bo_lu-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-foreign-data-wrappers-rust</guid>
|
||||
<title>Supabase Wrappers, a Postgres FDW framework written in Rust</title>
|
||||
<link>https://supabase.com/blog/postgres-foreign-data-wrappers-rust</link>
|
||||
<description>A framework for building Postgres Foreign Data Wrappers which connects to Stripe, Firebase, Clickhouse, and more.</description>
|
||||
<pubDate>Wed, 14 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Mark Burggraf at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Wed, 23 Nov 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-burggraf-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/sql-or-nosql-both-with-postgresql</guid>
|
||||
<title>SQL or NoSQL? Why not use both (with PostgreSQL)?</title>
|
||||
<link>https://supabase.com/blog/sql-or-nosql-both-with-postgresql</link>
|
||||
<description>How to turn Postgres into an easy-to-use NoSQL database that retains all the power of SQL</description>
|
||||
<pubDate>Wed, 23 Nov 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-wasm</guid>
|
||||
<title>Postgres WASM by Snaplet and Supabase</title>
|
||||
<link>https://supabase.com/blog/postgres-wasm</link>
|
||||
<description>We're open sourcing postgres-wasm, a PostgresQL server that runs inside a browser, with our friends at Snaplet.</description>
|
||||
<pubDate>Sun, 02 Oct 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,19 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Greg Richardson at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Sun, 05 Feb 2023 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-gregnr-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/openai-embeddings-postgres-vector</guid>
|
||||
<title>Storing OpenAI embeddings in Postgres with pgvector</title>
|
||||
<link>https://supabase.com/blog/openai-embeddings-postgres-vector</link>
|
||||
<description>An example of how to build an AI-powered search engine using OpenAI's embeddings and PostgreSQL.</description>
|
||||
<pubDate>Sun, 05 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Michel Pelletier at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-michel-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/vault-now-in-beta</guid>
|
||||
<title>Supabase Vault is now in Beta</title>
|
||||
<link>https://supabase.com/blog/vault-now-in-beta</link>
|
||||
<description>A Postgres extension to store encrypted secrets and encrypt data.</description>
|
||||
<pubDate>Thu, 15 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/transparent-column-encryption-with-postgres</guid>
|
||||
<title>Transparent Column Encryption with Postgres</title>
|
||||
<link>https://supabase.com/blog/transparent-column-encryption-with-postgres</link>
|
||||
<description>Using pgsodium's Transparent Column Encryption to encrypt data and provide your users with row-level encryption.</description>
|
||||
<pubDate>Wed, 30 Nov 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Oliver Rice at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 20 Apr 2023 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-oli_rice-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/whats-new-in-pg-graphql-v1-2</guid>
|
||||
<title>What's New in pg_graphql v1.2</title>
|
||||
<link>https://supabase.com/blog/whats-new-in-pg-graphql-v1-2</link>
|
||||
<description>New Features in the v1.2 release of pg_graphql</description>
|
||||
<pubDate>Thu, 20 Apr 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/type-constraints-in-65-lines-of-sql</guid>
|
||||
<title>Type Constraints in 65 lines of SQL</title>
|
||||
<link>https://supabase.com/blog/type-constraints-in-65-lines-of-sql</link>
|
||||
<description>Creating validated data types in Postgres</description>
|
||||
<pubDate>Thu, 16 Feb 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pg-graphql-v1</guid>
|
||||
<title>pg_graphql v1.0</title>
|
||||
<link>https://supabase.com/blog/pg-graphql-v1</link>
|
||||
<description>Announcing the v1.0 release of pg_graphql</description>
|
||||
<pubDate>Thu, 15 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-foreign-data-wrappers-rust</guid>
|
||||
<title>Supabase Wrappers, a Postgres FDW framework written in Rust</title>
|
||||
<link>https://supabase.com/blog/postgres-foreign-data-wrappers-rust</link>
|
||||
<description>A framework for building Postgres Foreign Data Wrappers which connects to Stripe, Firebase, Clickhouse, and more.</description>
|
||||
<pubDate>Wed, 14 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/pg-jsonschema-a-postgres-extension-for-json-validation</guid>
|
||||
<title>pg_jsonschema: JSON Schema support for Postgres</title>
|
||||
<link>https://supabase.com/blog/pg-jsonschema-a-postgres-extension-for-json-validation</link>
|
||||
<description>Today we're releasing pg_jsonschema, a Postgres extension for JSON validation.</description>
|
||||
<pubDate>Thu, 18 Aug 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-audit</guid>
|
||||
<title>Postgres Auditing in 150 lines of SQL</title>
|
||||
<link>https://supabase.com/blog/postgres-audit</link>
|
||||
<description>PostgreSQL has a robust set of features which we can leverage to create a generic auditing solution in 150 lines of SQL.</description>
|
||||
<pubDate>Mon, 07 Mar 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,54 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Paul Copplestone at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Sun, 30 Apr 2023 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-paul_copplestone-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-pluggable-strorage</guid>
|
||||
<title>Next steps for Postgres pluggable storage</title>
|
||||
<link>https://supabase.com/blog/postgres-pluggable-strorage</link>
|
||||
<description>Exploring history of Postgres pluggable storage and the possibility of landing it in the Postgres core.</description>
|
||||
<pubDate>Sun, 30 Apr 2023 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-foreign-data-wrappers-rust</guid>
|
||||
<title>Supabase Wrappers, a Postgres FDW framework written in Rust</title>
|
||||
<link>https://supabase.com/blog/postgres-foreign-data-wrappers-rust</link>
|
||||
<description>A framework for building Postgres Foreign Data Wrappers which connects to Stripe, Firebase, Clickhouse, and more.</description>
|
||||
<pubDate>Wed, 14 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-crdt</guid>
|
||||
<title>pg_crdt - an experimental CRDT extension for Postgres</title>
|
||||
<link>https://supabase.com/blog/postgres-crdt</link>
|
||||
<description>Embedding Yjs and Automerge into Postgres for collaborative applications.</description>
|
||||
<pubDate>Fri, 09 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/partial-postgresql-data-dumps-with-rls</guid>
|
||||
<title>Partial data dumps using Postgres Row Level Security</title>
|
||||
<link>https://supabase.com/blog/partial-postgresql-data-dumps-with-rls</link>
|
||||
<description>Using RLS to create seed files for local PostgreSQL testing.</description>
|
||||
<pubDate>Mon, 27 Jun 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-as-a-cron-server</guid>
|
||||
<title>Postgres as a CRON Server</title>
|
||||
<link>https://supabase.com/blog/postgres-as-a-cron-server</link>
|
||||
<description>Running repetitive tasks with your Postgres database.</description>
|
||||
<pubDate>Thu, 04 Mar 2021 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-views</guid>
|
||||
<title>Postgres Views</title>
|
||||
<link>https://supabase.com/blog/postgresql-views</link>
|
||||
<description>Creating and using a view in PostgreSQL.</description>
|
||||
<pubDate>Tue, 17 Nov 2020 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Pavel Borisov at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-pavel-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/new-in-postgres-15</guid>
|
||||
<title>What's new in Postgres 15?</title>
|
||||
<link>https://supabase.com/blog/new-in-postgres-15</link>
|
||||
<description>Describes the release of Postgres 15, new features and reasons to use it</description>
|
||||
<pubDate>Thu, 15 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgresql-commitfest</guid>
|
||||
<title>What is PostgreSQL commitfest and how to contribute</title>
|
||||
<link>https://supabase.com/blog/postgresql-commitfest</link>
|
||||
<description>A time-tested method for contributing to the core Postgres code</description>
|
||||
<pubDate>Wed, 26 Oct 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Steve Chavez at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-steve_chavez-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgrest-11-prerelease</guid>
|
||||
<title>PostgREST 11 pre-release</title>
|
||||
<link>https://supabase.com/blog/postgrest-11-prerelease</link>
|
||||
<description>Describes new features of PostgREST 11 pre-release</description>
|
||||
<pubDate>Thu, 15 Dec 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/roles-postgres-hooks</guid>
|
||||
<title>Protecting reserved roles with PostgreSQL Hooks</title>
|
||||
<link>https://supabase.com/blog/roles-postgres-hooks</link>
|
||||
<description>Using Postgres Hooks to protect functionality in your Postgres database.</description>
|
||||
<pubDate>Thu, 01 Jul 2021 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>'Postgres | Supabase Blog</title>
|
||||
<link>https://supabase.com/blog</link>
|
||||
<description>Latest Postgres news from Victor at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 13 Oct 2022 16:00:00 GMT</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-victor-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/postgres-full-text-search-vs-the-rest</guid>
|
||||
<title>Postgres Full Text Search vs the rest</title>
|
||||
<link>https://supabase.com/blog/postgres-full-text-search-vs-the-rest</link>
|
||||
<description>Comparing one of the most popular Postgres features against alternatives</description>
|
||||
<pubDate>Thu, 13 Oct 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/choosing-a-postgres-primary-key</guid>
|
||||
<title>Choosing a Postgres Primary Key</title>
|
||||
<link>https://supabase.com/blog/choosing-a-postgres-primary-key</link>
|
||||
<description>Turns out the question of which identifier to use as a Primary Key is complicated -- we're going to dive into some of the complexity and inherent trade-offs, and figure things out</description>
|
||||
<pubDate>Wed, 07 Sep 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/seen-by-in-postgresql</guid>
|
||||
<title>Implementing "seen by" functionality with Postgres</title>
|
||||
<link>https://supabase.com/blog/seen-by-in-postgresql</link>
|
||||
<description>Different approaches for tracking visitor counts with PostgreSQL.</description>
|
||||
<pubDate>Sun, 17 Jul 2022 16:00:00 GMT</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<sitemap>
|
||||
<loc>https://supabase.com/sitemap_www.xml</loc>
|
||||
</sitemap>
|
||||
<sitemap>
|
||||
<loc>https://supabase.com/docs/sitemap.xml</loc>
|
||||
</sitemap>
|
||||
</sitemapindex>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -9,7 +9,7 @@ version: "3.8"
|
||||
services:
|
||||
studio:
|
||||
container_name: supabase-studio
|
||||
image: supabase/studio:20230330-99fed3d
|
||||
image: supabase/studio:20230622-d8395eb
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test:
|
||||
@@ -57,7 +57,7 @@ services:
|
||||
|
||||
auth:
|
||||
container_name: supabase-auth
|
||||
image: supabase/gotrue:v2.60.7
|
||||
image: supabase/gotrue:v2.62.1
|
||||
depends_on:
|
||||
db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -130,7 +130,7 @@ services:
|
||||
|
||||
realtime:
|
||||
container_name: realtime-dev.supabase-realtime
|
||||
image: supabase/realtime:v2.5.1
|
||||
image: supabase/realtime:v2.10.1
|
||||
depends_on:
|
||||
db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -168,7 +168,7 @@ services:
|
||||
|
||||
storage:
|
||||
container_name: supabase-storage
|
||||
image: supabase/storage-api:v0.28.2
|
||||
image: supabase/storage-api:v0.40.4
|
||||
depends_on:
|
||||
db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -211,7 +211,7 @@ services:
|
||||
|
||||
imgproxy:
|
||||
container_name: supabase-imgproxy
|
||||
image: darthsim/imgproxy:v3.13
|
||||
image: darthsim/imgproxy:v3.8.0
|
||||
healthcheck:
|
||||
test: [ "CMD", "imgproxy", "health" ]
|
||||
timeout: 5s
|
||||
@@ -227,7 +227,7 @@ services:
|
||||
|
||||
meta:
|
||||
container_name: supabase-meta
|
||||
image: supabase/postgres-meta:v0.60.7
|
||||
image: supabase/postgres-meta:v0.66.3
|
||||
depends_on:
|
||||
db:
|
||||
# Disable this if you are using an external Postgres database
|
||||
@@ -243,7 +243,7 @@ services:
|
||||
|
||||
functions:
|
||||
container_name: supabase-edge-functions
|
||||
image: supabase/edge-runtime:v1.2.12
|
||||
image: supabase/edge-runtime:v1.4.2
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
JWT_SECRET: ${JWT_SECRET}
|
||||
@@ -263,7 +263,7 @@ services:
|
||||
# Comment out everything below this point if you are using an external Postgres database
|
||||
db:
|
||||
container_name: supabase-db
|
||||
image: supabase/postgres:15.1.0.54-rc0
|
||||
image: supabase/postgres:15.1.0.90
|
||||
healthcheck:
|
||||
test: pg_isready -U postgres -h localhost
|
||||
interval: 5s
|
||||
|
||||
Generated
+74
-133
@@ -8,7 +8,8 @@
|
||||
"name": "full-nextjs-auth-helpers",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@supabase/auth-helpers-nextjs": "^0.7.0-next.8",
|
||||
"@supabase/auth-helpers-nextjs": "^0.7.1",
|
||||
"@supabase/supabase-js": "^2.26.0",
|
||||
"@types/node": "^20.2.3",
|
||||
"@types/react": "^18.2.6",
|
||||
"@types/react-dom": "^18.2.4",
|
||||
@@ -324,11 +325,11 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@supabase/auth-helpers-nextjs": {
|
||||
"version": "0.7.0-next.8",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.7.0-next.8.tgz",
|
||||
"integrity": "sha512-7pCbdnyAQo+D4qYQCvfg4B3OHIPtrILy/4LNwmF+1uheDeK7B6pxfN2SVeOR2TU3lolxMwEKUP6Q0h1qiCXbQg==",
|
||||
"version": "0.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.7.2.tgz",
|
||||
"integrity": "sha512-n5IyGBYJV/WiR5Rgw4CUaiJYiOv9yW2of4ZP4EyzKt2O6/6rztt7PcGE4AoK2vERw+fb5F2QtJBdt6J5eOYCCw==",
|
||||
"dependencies": {
|
||||
"@supabase/auth-helpers-shared": "0.4.0-next.3",
|
||||
"@supabase/auth-helpers-shared": "0.4.1",
|
||||
"set-cookie-parser": "^2.6.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
@@ -336,9 +337,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/auth-helpers-shared": {
|
||||
"version": "0.4.0-next.3",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.0-next.3.tgz",
|
||||
"integrity": "sha512-ELvEbYPJdTlwvqXsHkRN8ADcRe1IQxHt+UNqxbV2SKIpJCieQ4BMsgUVI/w+e3gMQHRbydk0PaJpOa9aStzMyg==",
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz",
|
||||
"integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==",
|
||||
"dependencies": {
|
||||
"jose": "^4.14.3"
|
||||
},
|
||||
@@ -347,37 +348,33 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/functions-js": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.1.tgz",
|
||||
"integrity": "sha512-bIR1Puae6W+1/MzPfYBWOG/SCWGo4B5CB7c0ZZksvliNEAzhxNBJ0UFKYINcGdGtxG8ZC+1xr3utWpNZNwnoRw==",
|
||||
"peer": true,
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz",
|
||||
"integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==",
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/gotrue-js": {
|
||||
"version": "2.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.27.1.tgz",
|
||||
"integrity": "sha512-rewbfKTC9DZNnPy4rRpr5ViBXre55wEXPWOueh/ZgwunR1TGmntRcraIM6SDKrP6iRD6ucx325a467uZ5U+KWg==",
|
||||
"peer": true,
|
||||
"version": "2.31.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.31.0.tgz",
|
||||
"integrity": "sha512-YcwlbbNfedlue/HVIXtYBb4fuOrs29gNOTl6AmyxPp4zryRxzFvslVN9kmLDBRUAVU9fnPJh2bgOR3chRjJX5w==",
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/postgrest-js": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.6.1.tgz",
|
||||
"integrity": "sha512-WDBUPOCOwcZonaCwEodwdA8hwWYOiXroDF9vWGxZxKAnuSVE2Ieci/kvhR4EsWvgGST2h90LRowgO+msXe8+fA==",
|
||||
"peer": true,
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.1.tgz",
|
||||
"integrity": "sha512-xPRYLaZrkLbXNlzmHW6Wtf9hmcBLjjI5xUz2zj8oE2hgXGaYoZBBkpN9bmW9i17Z1f6Ujxa942AqK439XOA36A==",
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/realtime-js": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.2.tgz",
|
||||
"integrity": "sha512-Fi6xAl5PUkqnjl3wo4rdcQIbMG3+yTRX1aUZe/yfvTG84RMvmCXJ1yN6MmafVLeZpU1xkaz5Vx4L0tnHcLiy6w==",
|
||||
"peer": true,
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz",
|
||||
"integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==",
|
||||
"dependencies": {
|
||||
"@types/phoenix": "^1.5.4",
|
||||
"@types/websocket": "^1.0.3",
|
||||
@@ -388,21 +385,19 @@
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz",
|
||||
"integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/supabase-js": {
|
||||
"version": "2.22.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.22.0.tgz",
|
||||
"integrity": "sha512-omkgSWL1HwnpXZZy+yshFLx/qqxwk9kx9jbRM6IHNEylKrH/sz6JX7rGyIOmN9niDxMRjsCu1nwuBhD6IiF2xg==",
|
||||
"peer": true,
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.26.0.tgz",
|
||||
"integrity": "sha512-RXmTPTobaYAwkSobadHZmEVLmzX3SGrtRZIGfLWnLv92VzBRrjuXn0a+bJqKl50GUzsyqPA+j5pod7EwMkcH5A==",
|
||||
"dependencies": {
|
||||
"@supabase/functions-js": "^2.1.0",
|
||||
"@supabase/gotrue-js": "^2.26.0",
|
||||
"@supabase/postgrest-js": "^1.1.1",
|
||||
"@supabase/realtime-js": "^2.7.2",
|
||||
"@supabase/gotrue-js": "^2.31.0",
|
||||
"@supabase/postgrest-js": "^1.7.0",
|
||||
"@supabase/realtime-js": "^2.7.3",
|
||||
"@supabase/storage-js": "^2.5.1",
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
@@ -427,10 +422,9 @@
|
||||
"integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw=="
|
||||
},
|
||||
"node_modules/@types/phoenix": {
|
||||
"version": "1.5.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.6.tgz",
|
||||
"integrity": "sha512-e7jZ6I9uyRGsg7MNwQcarmBvRlbGb9DibbocE9crVnxqsy6C23RMxLWbJ2CQ3vgCW7taoL1L+F02EcjA6ld7XA==",
|
||||
"peer": true
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz",
|
||||
"integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g=="
|
||||
},
|
||||
"node_modules/@types/prop-types": {
|
||||
"version": "15.7.5",
|
||||
@@ -464,7 +458,6 @@
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
|
||||
"integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -797,7 +790,6 @@
|
||||
"resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz",
|
||||
"integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"node-gyp-build": "^4.3.0"
|
||||
},
|
||||
@@ -897,7 +889,6 @@
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz",
|
||||
"integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"node-fetch": "^2.6.11"
|
||||
}
|
||||
@@ -924,7 +915,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
||||
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es5-ext": "^0.10.50",
|
||||
"type": "^1.0.1"
|
||||
@@ -1165,7 +1155,6 @@
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
|
||||
"integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es6-iterator": "^2.0.3",
|
||||
"es6-symbol": "^3.1.3",
|
||||
@@ -1179,7 +1168,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
||||
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "1",
|
||||
"es5-ext": "^0.10.35",
|
||||
@@ -1190,7 +1178,6 @@
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
|
||||
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "^1.0.1",
|
||||
"ext": "^1.1.2"
|
||||
@@ -1651,7 +1638,6 @@
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"type": "^2.7.2"
|
||||
}
|
||||
@@ -1659,8 +1645,7 @@
|
||||
"node_modules/ext/node_modules/type": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
||||
},
|
||||
"node_modules/fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
@@ -2380,8 +2365,7 @@
|
||||
"node_modules/is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
||||
},
|
||||
"node_modules/is-weakmap": {
|
||||
"version": "2.0.1",
|
||||
@@ -2687,14 +2671,12 @@
|
||||
"node_modules/next-tick": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.11",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
|
||||
"integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
@@ -2714,7 +2696,6 @@
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
|
||||
"integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"node-gyp-build": "bin.js",
|
||||
"node-gyp-build-optional": "optional.js",
|
||||
@@ -3477,8 +3458,7 @@
|
||||
"node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"node_modules/tsconfig-paths": {
|
||||
"version": "3.14.2",
|
||||
@@ -3521,8 +3501,7 @@
|
||||
"node_modules/type": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
|
||||
},
|
||||
"node_modules/type-check": {
|
||||
"version": "0.4.0",
|
||||
@@ -3564,7 +3543,6 @@
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
|
||||
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"is-typedarray": "^1.0.0"
|
||||
}
|
||||
@@ -3609,7 +3587,6 @@
|
||||
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
|
||||
"integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"node-gyp-build": "^4.3.0"
|
||||
},
|
||||
@@ -3620,14 +3597,12 @@
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"node_modules/websocket": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
|
||||
"integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"debug": "^2.2.0",
|
||||
@@ -3644,7 +3619,6 @@
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
@@ -3652,14 +3626,12 @@
|
||||
"node_modules/websocket/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"peer": true
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
},
|
||||
"node_modules/whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
@@ -3747,7 +3719,6 @@
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
|
||||
"integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.32"
|
||||
}
|
||||
@@ -3954,54 +3925,50 @@
|
||||
"dev": true
|
||||
},
|
||||
"@supabase/auth-helpers-nextjs": {
|
||||
"version": "0.7.0-next.8",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.7.0-next.8.tgz",
|
||||
"integrity": "sha512-7pCbdnyAQo+D4qYQCvfg4B3OHIPtrILy/4LNwmF+1uheDeK7B6pxfN2SVeOR2TU3lolxMwEKUP6Q0h1qiCXbQg==",
|
||||
"version": "0.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.7.2.tgz",
|
||||
"integrity": "sha512-n5IyGBYJV/WiR5Rgw4CUaiJYiOv9yW2of4ZP4EyzKt2O6/6rztt7PcGE4AoK2vERw+fb5F2QtJBdt6J5eOYCCw==",
|
||||
"requires": {
|
||||
"@supabase/auth-helpers-shared": "0.4.0-next.3",
|
||||
"@supabase/auth-helpers-shared": "0.4.1",
|
||||
"set-cookie-parser": "^2.6.0"
|
||||
}
|
||||
},
|
||||
"@supabase/auth-helpers-shared": {
|
||||
"version": "0.4.0-next.3",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.0-next.3.tgz",
|
||||
"integrity": "sha512-ELvEbYPJdTlwvqXsHkRN8ADcRe1IQxHt+UNqxbV2SKIpJCieQ4BMsgUVI/w+e3gMQHRbydk0PaJpOa9aStzMyg==",
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.4.1.tgz",
|
||||
"integrity": "sha512-IEDX9JzWkIjQiLUaP4Qy5YDiG0jFQatWfS+jw8cCQs6QfbNdEPd2Y3qonwGHnM90CZom9SvjuylBv2pFVAL7Lw==",
|
||||
"requires": {
|
||||
"jose": "^4.14.3"
|
||||
}
|
||||
},
|
||||
"@supabase/functions-js": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.1.tgz",
|
||||
"integrity": "sha512-bIR1Puae6W+1/MzPfYBWOG/SCWGo4B5CB7c0ZZksvliNEAzhxNBJ0UFKYINcGdGtxG8ZC+1xr3utWpNZNwnoRw==",
|
||||
"peer": true,
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.2.tgz",
|
||||
"integrity": "sha512-QCR6pwJs9exCl37bmpMisUd6mf+0SUBJ6mUpiAjEkSJ/+xW8TCuO14bvkWHADd5hElJK9MxNlMQXxSA4DRz9nQ==",
|
||||
"requires": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"@supabase/gotrue-js": {
|
||||
"version": "2.27.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.27.1.tgz",
|
||||
"integrity": "sha512-rewbfKTC9DZNnPy4rRpr5ViBXre55wEXPWOueh/ZgwunR1TGmntRcraIM6SDKrP6iRD6ucx325a467uZ5U+KWg==",
|
||||
"peer": true,
|
||||
"version": "2.31.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.31.0.tgz",
|
||||
"integrity": "sha512-YcwlbbNfedlue/HVIXtYBb4fuOrs29gNOTl6AmyxPp4zryRxzFvslVN9kmLDBRUAVU9fnPJh2bgOR3chRjJX5w==",
|
||||
"requires": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"@supabase/postgrest-js": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.6.1.tgz",
|
||||
"integrity": "sha512-WDBUPOCOwcZonaCwEodwdA8hwWYOiXroDF9vWGxZxKAnuSVE2Ieci/kvhR4EsWvgGST2h90LRowgO+msXe8+fA==",
|
||||
"peer": true,
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.1.tgz",
|
||||
"integrity": "sha512-xPRYLaZrkLbXNlzmHW6Wtf9hmcBLjjI5xUz2zj8oE2hgXGaYoZBBkpN9bmW9i17Z1f6Ujxa942AqK439XOA36A==",
|
||||
"requires": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"@supabase/realtime-js": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.2.tgz",
|
||||
"integrity": "sha512-Fi6xAl5PUkqnjl3wo4rdcQIbMG3+yTRX1aUZe/yfvTG84RMvmCXJ1yN6MmafVLeZpU1xkaz5Vx4L0tnHcLiy6w==",
|
||||
"peer": true,
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz",
|
||||
"integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==",
|
||||
"requires": {
|
||||
"@types/phoenix": "^1.5.4",
|
||||
"@types/websocket": "^1.0.3",
|
||||
@@ -4012,21 +3979,19 @@
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz",
|
||||
"integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"@supabase/supabase-js": {
|
||||
"version": "2.22.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.22.0.tgz",
|
||||
"integrity": "sha512-omkgSWL1HwnpXZZy+yshFLx/qqxwk9kx9jbRM6IHNEylKrH/sz6JX7rGyIOmN9niDxMRjsCu1nwuBhD6IiF2xg==",
|
||||
"peer": true,
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.26.0.tgz",
|
||||
"integrity": "sha512-RXmTPTobaYAwkSobadHZmEVLmzX3SGrtRZIGfLWnLv92VzBRrjuXn0a+bJqKl50GUzsyqPA+j5pod7EwMkcH5A==",
|
||||
"requires": {
|
||||
"@supabase/functions-js": "^2.1.0",
|
||||
"@supabase/gotrue-js": "^2.26.0",
|
||||
"@supabase/postgrest-js": "^1.1.1",
|
||||
"@supabase/realtime-js": "^2.7.2",
|
||||
"@supabase/gotrue-js": "^2.31.0",
|
||||
"@supabase/postgrest-js": "^1.7.0",
|
||||
"@supabase/realtime-js": "^2.7.3",
|
||||
"@supabase/storage-js": "^2.5.1",
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
@@ -4051,10 +4016,9 @@
|
||||
"integrity": "sha512-pg9d0yC4rVNWQzX8U7xb4olIOFuuVL9za3bzMT2pu2SU0SNEi66i2qrvhE2qt0HvkhuCaWJu7pLNOt/Pj8BIrw=="
|
||||
},
|
||||
"@types/phoenix": {
|
||||
"version": "1.5.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.6.tgz",
|
||||
"integrity": "sha512-e7jZ6I9uyRGsg7MNwQcarmBvRlbGb9DibbocE9crVnxqsy6C23RMxLWbJ2CQ3vgCW7taoL1L+F02EcjA6ld7XA==",
|
||||
"peer": true
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz",
|
||||
"integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g=="
|
||||
},
|
||||
"@types/prop-types": {
|
||||
"version": "15.7.5",
|
||||
@@ -4088,7 +4052,6 @@
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
|
||||
"integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -4315,7 +4278,6 @@
|
||||
"version": "4.0.7",
|
||||
"resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz",
|
||||
"integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"node-gyp-build": "^4.3.0"
|
||||
}
|
||||
@@ -4384,7 +4346,6 @@
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz",
|
||||
"integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"node-fetch": "^2.6.11"
|
||||
}
|
||||
@@ -4408,7 +4369,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
||||
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"es5-ext": "^0.10.50",
|
||||
"type": "^1.0.1"
|
||||
@@ -4601,7 +4561,6 @@
|
||||
"version": "0.10.62",
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
|
||||
"integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"es6-iterator": "^2.0.3",
|
||||
"es6-symbol": "^3.1.3",
|
||||
@@ -4612,7 +4571,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
||||
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"d": "1",
|
||||
"es5-ext": "^0.10.35",
|
||||
@@ -4623,7 +4581,6 @@
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
|
||||
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"d": "^1.0.1",
|
||||
"ext": "^1.1.2"
|
||||
@@ -4968,7 +4925,6 @@
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"type": "^2.7.2"
|
||||
},
|
||||
@@ -4976,8 +4932,7 @@
|
||||
"type": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -5485,8 +5440,7 @@
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
||||
},
|
||||
"is-weakmap": {
|
||||
"version": "2.0.1",
|
||||
@@ -5705,14 +5659,12 @@
|
||||
"next-tick": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.11",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
|
||||
"integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
}
|
||||
@@ -5720,8 +5672,7 @@
|
||||
"node-gyp-build": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
|
||||
"integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ=="
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
@@ -6228,8 +6179,7 @@
|
||||
"tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"tsconfig-paths": {
|
||||
"version": "3.14.2",
|
||||
@@ -6268,8 +6218,7 @@
|
||||
"type": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
|
||||
},
|
||||
"type-check": {
|
||||
"version": "0.4.0",
|
||||
@@ -6299,7 +6248,6 @@
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
|
||||
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"is-typedarray": "^1.0.0"
|
||||
}
|
||||
@@ -6333,7 +6281,6 @@
|
||||
"version": "5.0.10",
|
||||
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
|
||||
"integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"node-gyp-build": "^4.3.0"
|
||||
}
|
||||
@@ -6341,14 +6288,12 @@
|
||||
"webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"websocket": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
|
||||
"integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"debug": "^2.2.0",
|
||||
@@ -6362,7 +6307,6 @@
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
@@ -6370,8 +6314,7 @@
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"peer": true
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -6379,7 +6322,6 @@
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
@@ -6445,8 +6387,7 @@
|
||||
"yaeti": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
|
||||
"integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==",
|
||||
"peer": true
|
||||
"integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug=="
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
"lint": "next lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@supabase/auth-helpers-nextjs": "^0.7.0",
|
||||
"@supabase/auth-helpers-nextjs": "^0.7.1",
|
||||
"@supabase/supabase-js": "^2.26.0",
|
||||
"@types/node": "^20.2.3",
|
||||
"@types/react": "^18.2.6",
|
||||
"@types/react-dom": "^18.2.4",
|
||||
|
||||
+26
-55
@@ -11,6 +11,7 @@
|
||||
"@supabase/auth-helpers-nextjs": "^0.7.1",
|
||||
"@supabase/auth-ui-react": "^0.4.2",
|
||||
"@supabase/auth-ui-shared": "^0.1.6",
|
||||
"@supabase/supabase-js": "^2.26.0",
|
||||
"@types/node": "20.1.4",
|
||||
"@types/react": "18.2.6",
|
||||
"@types/react-dom": "18.2.4",
|
||||
@@ -375,34 +376,30 @@
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.1.1.tgz",
|
||||
"integrity": "sha512-bIR1Puae6W+1/MzPfYBWOG/SCWGo4B5CB7c0ZZksvliNEAzhxNBJ0UFKYINcGdGtxG8ZC+1xr3utWpNZNwnoRw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/gotrue-js": {
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.26.0.tgz",
|
||||
"integrity": "sha512-orxz8nwaF5D1nY/9H5xxTfFSCTvYeDLx24UO/Mxsx83xFP0t5RNxQZ0lEHBOhHhXJ4vR/COv79AxoWCOTu/7Rg==",
|
||||
"peer": true,
|
||||
"version": "2.31.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.31.0.tgz",
|
||||
"integrity": "sha512-YcwlbbNfedlue/HVIXtYBb4fuOrs29gNOTl6AmyxPp4zryRxzFvslVN9kmLDBRUAVU9fnPJh2bgOR3chRjJX5w==",
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/postgrest-js": {
|
||||
"version": "1.6.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.6.1.tgz",
|
||||
"integrity": "sha512-WDBUPOCOwcZonaCwEodwdA8hwWYOiXroDF9vWGxZxKAnuSVE2Ieci/kvhR4EsWvgGST2h90LRowgO+msXe8+fA==",
|
||||
"peer": true,
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.7.1.tgz",
|
||||
"integrity": "sha512-xPRYLaZrkLbXNlzmHW6Wtf9hmcBLjjI5xUz2zj8oE2hgXGaYoZBBkpN9bmW9i17Z1f6Ujxa942AqK439XOA36A==",
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/realtime-js": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.2.tgz",
|
||||
"integrity": "sha512-Fi6xAl5PUkqnjl3wo4rdcQIbMG3+yTRX1aUZe/yfvTG84RMvmCXJ1yN6MmafVLeZpU1xkaz5Vx4L0tnHcLiy6w==",
|
||||
"peer": true,
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.7.3.tgz",
|
||||
"integrity": "sha512-c7TzL81sx2kqyxsxcDduJcHL9KJdCOoKimGP6lQSqiZKX42ATlBZpWbyy9KFGFBjAP4nyopMf5JhPi2ZH9jyNw==",
|
||||
"dependencies": {
|
||||
"@types/phoenix": "^1.5.4",
|
||||
"@types/websocket": "^1.0.3",
|
||||
@@ -413,21 +410,19 @@
|
||||
"version": "2.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.5.1.tgz",
|
||||
"integrity": "sha512-nkR0fQA9ScAtIKA3vNoPEqbZv1k5B5HVRYEvRWdlP6mUpFphM9TwPL2jZ/ztNGMTG5xT6SrHr+H7Ykz8qzbhjw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@supabase/supabase-js": {
|
||||
"version": "2.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.21.0.tgz",
|
||||
"integrity": "sha512-FW3ZzBoc4orSgfX0dXrmJoXAcI/hiekmqXTkN64vjtUF2Urp3UjyAf71UTtV9Jl6ejHoe3K++e0+Rg9zKUJh5w==",
|
||||
"peer": true,
|
||||
"version": "2.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.26.0.tgz",
|
||||
"integrity": "sha512-RXmTPTobaYAwkSobadHZmEVLmzX3SGrtRZIGfLWnLv92VzBRrjuXn0a+bJqKl50GUzsyqPA+j5pod7EwMkcH5A==",
|
||||
"dependencies": {
|
||||
"@supabase/functions-js": "^2.1.0",
|
||||
"@supabase/gotrue-js": "^2.23.0",
|
||||
"@supabase/postgrest-js": "^1.1.1",
|
||||
"@supabase/realtime-js": "^2.7.2",
|
||||
"@supabase/gotrue-js": "^2.31.0",
|
||||
"@supabase/postgrest-js": "^1.7.0",
|
||||
"@supabase/realtime-js": "^2.7.3",
|
||||
"@supabase/storage-js": "^2.5.1",
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
@@ -451,10 +446,9 @@
|
||||
"integrity": "sha512-At4pvmIOki8yuwLtd7BNHl3CiWNbtclUbNtScGx4OHfBd4/oWoJC8KRCIxXwkdndzhxOsPXihrsOoydxBjlE9Q=="
|
||||
},
|
||||
"node_modules/@types/phoenix": {
|
||||
"version": "1.5.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.6.tgz",
|
||||
"integrity": "sha512-e7jZ6I9uyRGsg7MNwQcarmBvRlbGb9DibbocE9crVnxqsy6C23RMxLWbJ2CQ3vgCW7taoL1L+F02EcjA6ld7XA==",
|
||||
"peer": true
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.0.tgz",
|
||||
"integrity": "sha512-qwfpsHmFuhAS/dVd4uBIraMxRd56vwBUYQGZ6GpXnFuM2XMRFJbIyruFKKlW2daQliuYZwe0qfn/UjFCDKic5g=="
|
||||
},
|
||||
"node_modules/@types/prop-types": {
|
||||
"version": "15.7.5",
|
||||
@@ -488,7 +482,6 @@
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz",
|
||||
"integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
@@ -823,7 +816,6 @@
|
||||
"resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz",
|
||||
"integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"node-gyp-build": "^4.3.0"
|
||||
},
|
||||
@@ -940,7 +932,6 @@
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.6.tgz",
|
||||
"integrity": "sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"node-fetch": "^2.6.11"
|
||||
}
|
||||
@@ -967,7 +958,6 @@
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
|
||||
"integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es5-ext": "^0.10.50",
|
||||
"type": "^1.0.1"
|
||||
@@ -1240,7 +1230,6 @@
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
|
||||
"integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"es6-iterator": "^2.0.3",
|
||||
"es6-symbol": "^3.1.3",
|
||||
@@ -1254,7 +1243,6 @@
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
||||
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "1",
|
||||
"es5-ext": "^0.10.35",
|
||||
@@ -1265,7 +1253,6 @@
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
|
||||
"integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"d": "^1.0.1",
|
||||
"ext": "^1.1.2"
|
||||
@@ -1731,7 +1718,6 @@
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
||||
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"type": "^2.7.2"
|
||||
}
|
||||
@@ -1739,8 +1725,7 @@
|
||||
"node_modules/ext/node_modules/type": {
|
||||
"version": "2.7.2",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
|
||||
},
|
||||
"node_modules/fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
@@ -2468,8 +2453,7 @@
|
||||
"node_modules/is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
|
||||
"peer": true
|
||||
"integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
|
||||
},
|
||||
"node_modules/is-weakmap": {
|
||||
"version": "2.0.1",
|
||||
@@ -2807,14 +2791,12 @@
|
||||
"node_modules/next-tick": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.11",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz",
|
||||
"integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
@@ -2834,7 +2816,6 @@
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
|
||||
"integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"node-gyp-build": "bin.js",
|
||||
"node-gyp-build-optional": "optional.js",
|
||||
@@ -3723,8 +3704,7 @@
|
||||
"node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
||||
"peer": true
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"node_modules/tsconfig-paths": {
|
||||
"version": "3.14.2",
|
||||
@@ -3764,8 +3744,7 @@
|
||||
"node_modules/type": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
|
||||
"peer": true
|
||||
"integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
|
||||
},
|
||||
"node_modules/type-check": {
|
||||
"version": "0.4.0",
|
||||
@@ -3806,7 +3785,6 @@
|
||||
"version": "3.1.5",
|
||||
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
|
||||
"integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"is-typedarray": "^1.0.0"
|
||||
}
|
||||
@@ -3858,7 +3836,6 @@
|
||||
"resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz",
|
||||
"integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==",
|
||||
"hasInstallScript": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"node-gyp-build": "^4.3.0"
|
||||
},
|
||||
@@ -3869,14 +3846,12 @@
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
||||
"peer": true
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
|
||||
},
|
||||
"node_modules/websocket": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz",
|
||||
"integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"debug": "^2.2.0",
|
||||
@@ -3893,7 +3868,6 @@
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
@@ -3901,14 +3875,12 @@
|
||||
"node_modules/websocket/node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||
"peer": true
|
||||
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
|
||||
},
|
||||
"node_modules/whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
@@ -3993,7 +3965,6 @@
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
|
||||
"integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.32"
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@supabase/auth-helpers-nextjs": "^0.7.1",
|
||||
"@supabase/supabase-js": "^2.26.0",
|
||||
"@supabase/auth-ui-react": "^0.4.2",
|
||||
"@supabase/auth-ui-shared": "^0.1.6",
|
||||
"@types/node": "20.1.4",
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Хоствана база данни Postgres. [Документи](https://supabase.com/docs/guides/database)
|
||||
- [x] Удостоверяване и оторизация. [Документи](https://supabase.com/docs/guides/auth)
|
||||
- [x] Автоматично генерирани API.
|
||||
- [x] REST. [Документи](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Документи](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Абонаменти в реално време. [Документи](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Документи](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Документи](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Абонаменти в реално време. [Документи](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Функции.
|
||||
- [x] Функции за бази данни. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Крайни функции [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] হোস্ট করা পোস্টগ্রেস ডাটাবেস. [ডক্স](https://supabase.com/docs/guides/database)
|
||||
- [x] অথেনটিকেশন এবং অথরাইজড . [ডক্স](https://supabase.com/docs/guides/auth)
|
||||
- [x] স্বয়ংক্রিয়ভাবে তৈরি এপিআই.
|
||||
- [x] রেস্ট. [ডক্স](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] রিয়েলটাইম সাবস্ক্রিপশন. [ডক্স](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] গ্রাফকিউএল (বেটা). [ডক্স](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] রেস্ট. [ডক্স](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] রিয়েলটাইম সাবস্ক্রিপশন. [ডক্স](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] গ্রাফকিউএল (বেটা). [ডক্স](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] ফাংশনস.
|
||||
- [x] ডাটাবেস ফাংশনস. [ডক্স](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] এজ ফাংশনস. [ডক্স](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] hostovaná databáze Postgres. [Dokumenty](https://supabase.com/docs/guides/database)
|
||||
- [x] Ověřování a autorizace. [Dokumenty](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automaticky generované rozhraní API.
|
||||
- [x] REST. [Dokumenty](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumenty](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Odběry v reálném čase. [Dokumenty](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumenty](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumenty](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Odběry v reálném čase. [Dokumenty](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkce.
|
||||
- [x] Databázové funkce. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Okrajové funkce [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres Database. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentifikation og autorisering. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automatisk genererede API'er.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Realtidsabonnementer. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Realtidsabonnementer. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funktioner.
|
||||
- [x] Databasefunktioner. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge-funktioner [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Gehostete Postgres-Datenbank. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Authentifizierung und Autorisierung. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Auto-generierte APIs.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Echtzeit-Abonnements. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Echtzeit-Abonnements. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funktionen.
|
||||
- [x] Datenbank-Funktionen. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge-Funktionen [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres Database. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Αυθεντικοποίηση και εξουσιοδότηση. [Έγγραφα](https://supabase.com/docs/guides/auth)
|
||||
- [x] Αυτόματα παραγόμενα APIs.
|
||||
- [x] REST. [Έγγραφα](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Συνδρομές σε πραγματικό χρόνο. [Έγγραφα](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Έγγραφα](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Συνδρομές σε πραγματικό χρόνο. [Έγγραφα](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Συναρτήσεις.
|
||||
- [x] Συναρτήσεις βάσης δεδομένων. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- Base de datos Postgres alojada. [Documentación](https://supabase.com/docs/guides/database)
|
||||
- [x] Autenticación y autorización. [Documentos](https://supabase.com/docs/guides/auth)
|
||||
- [x] API autogeneradas.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Documentos](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Suscripciones en tiempo real. [Documentos](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Documentos](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Suscripciones en tiempo real. [Documentos](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funciones.
|
||||
- [x] Funciones de base de datos. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funciones de borde [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hostitud Postgres andmebaas. [Dokumendid](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentimine ja autoriseerimine. [Dokumendid](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automaatselt genereeritud APId.
|
||||
- [x] REST. [Dokumendid](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumendid](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Reaalajas toimivad tellimused. [Dokumendid](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumendid](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumendid](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Reaalajas toimivad tellimused. [Dokumendid](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funktsioonid.
|
||||
- [x] Andmebaasi funktsioonid. [Dokumendid](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres Database. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Tunnistus ja valtuutus. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automaattisesti luodut API:t.
|
||||
- [x] REST. [Asiakirjat](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Asiakirjat](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Reaaliaikaiset tilaukset. [Asiakirjat](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Asiakirjat](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Asiakirjat](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Reaaliaikaiset tilaukset. [Asiakirjat](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funktiot.
|
||||
- [x] Tietokantafunktiot. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Reunatoiminnot [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Base de données Postgres hébergée. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Authentification et autorisation. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] API générées automatiquement.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Abonnements en temps réel. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Abonnements en temps réel. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Fonctions.
|
||||
- [x] Fonctions de base de données. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Fonctions Edge [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] होस्टेड पोस्टग्रेज डेटाबेस। [प्रलेखन](https://supabase.com/docs/guides/database)
|
||||
- [x] प्रमाणीकरण और प्राधिकरण। [प्रलेखन](https://supabase.com/docs/guides/auth)
|
||||
- [x] उत्पन्न एपीआईस।
|
||||
- [x] रेस्ट। [प्रलेखन](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] रीयलटाइम सदस्यता। [प्रलेखन](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] ग्राफ़क्यूएल (प्रयोगात्मक)। [प्रलेखन](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] रेस्ट। [प्रलेखन](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] रीयलटाइम सदस्यता। [प्रलेखन](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] ग्राफ़क्यूएल (प्रयोगात्मक)। [प्रलेखन](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] फ़ंक्शंस।
|
||||
- [x] डेटाबेस फ़ंक्शंस। [प्रलेखन](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] एज फ़ंक्शंस। [प्रलेखन](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres adatbázis. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Hitelesítés és engedélyezés. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automatikusan generált API-k.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Valós idejű előfizetések. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Valós idejű előfizetések. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkciók.
|
||||
- [x] Database Functions. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Basis Data Postgres yang dihosting. [Dokumen](https://supabase.com/docs/guides/database)
|
||||
- [x] Otentikasi dan Otorisasi. [Dokumen](https://supabase.com/docs/guides/auth)
|
||||
- [x] API yang dibuat secara otomatis.
|
||||
- [x] REST. [Documents](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Documents](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Langganan realtime. [Documents](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Documents](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Documents](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Langganan realtime. [Documents](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Fungsi-fungsi.
|
||||
- [x] Fungsi-fungsi Basis Data. [Documents](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Fungsi Tepi [Documents](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- Database Postgres ospitato. [Documenti](https://supabase.com/docs/guides/database)
|
||||
- [x] Autenticazione e autorizzazione. [Documenti](https://supabase.com/docs/guides/auth)
|
||||
- [x] API generate automaticamente.
|
||||
- [x] REST. [Documenti](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Documenti](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Sottoscrizioni in tempo reale. [Documenti](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Documenti](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Documenti](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Sottoscrizioni in tempo reale. [Documenti](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funzioni.
|
||||
- [x] Funzioni di database. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funzioni Edge [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] ホスティングされた Postgres データベースです。[ドックス](https://supabase.com/docs/guides/database)
|
||||
- [x] 認証と認可。[ドキュメント](https://supabase.com/docs/guides/auth)
|
||||
- [x] 自動生成される API。
|
||||
- [x] REST。[ドキュメント](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL。[Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] リアルタイムサブスクリプション。[ドキュメント](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST。[ドキュメント](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL。[Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] リアルタイムサブスクリプション。[ドキュメント](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] 関数。
|
||||
- [x] データベースファンクション。[Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] エッジ機能 [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] ホスティングされた Postgres データベース [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] 認証・認可 [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] API を自動生成
|
||||
- [x] REST [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] リアルタイムサブスクリプション [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] GraphQL (Beta) [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] REST [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] リアルタイムサブスクリプション [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] GraphQL (Beta) [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] 関数
|
||||
- [x] データベース関数 [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] 호스팅된 Postgres 데이터베이스. [문서](https://supabase.com/docs/guides/database)
|
||||
- [x] 인증 및 권한 부여. [문서](https://supabase.com/docs/guides/auth)
|
||||
- [x] 자동 생성 API.
|
||||
- [x] REST. [문서](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [문서](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] 실시간 구독. [문서](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [문서](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [문서](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] 실시간 구독. [문서](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] 함수.
|
||||
- [x] 데이터베이스 함수. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] 엣지 기능 [문서](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Prieglobos Postgres duomenų bazė. [Dokumentai](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentiškumo nustatymas ir autorizavimas. [Dokumentai](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automatiškai generuojamos API.
|
||||
- [x] REST. [Dokumentai](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumentai](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Realaus laiko prenumeratos. [Dokumentai](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumentai](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumentai](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Realaus laiko prenumeratos. [Dokumentai](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkcijos.
|
||||
- [x] Duomenų bazės funkcijos. [Dokumentai](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Kraštų funkcijos [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres datubāze. [Dokumenti](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentifikācija un autorizācija. [Dokumenti](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automātiski ģenerēti API.
|
||||
- [x] REST. [Dokumenti](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumenti](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Reāllaika abonēšana. [Dokumenti](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumenti](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumenti](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Reāllaika abonēšana. [Dokumenti](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkcijas.
|
||||
- [x] Datubāzes funkcijas. [Dokumenti](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge funkcijas [Dokumenti](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hostet Postgres-database. [Dokumenter](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentisering og autorisasjon. [Dokumenter](https://supabase.com/docs/guides/auth)
|
||||
- [x] Autogenererte API-er.
|
||||
- [x] REST. [Dokumenter](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumenter](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Sanntidsabonnementer. [Dokumenter](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumenter](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumenter](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Sanntidsabonnementer. [Dokumenter](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funksjoner.
|
||||
- [x] Databasefunksjoner. [Dokumenter](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge-funksjoner [Dokumenter](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x]Gehoste Postgres Database. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Authenticatie en Autorisatie. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automatisch gegenereerde API's.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Realtime abonnementen. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Realtime abonnementen. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Functies.
|
||||
- [x] Database functies. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Randfuncties. [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] hostowana baza danych Postgres [x]. [Dokumenty](https://supabase.com/docs/guides/database)
|
||||
- [x] uwierzytelnianie i autoryzacja [x]. [Dokumenty](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automatycznie generowane interfejsy API.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Subskrypcje w czasie rzeczywistym. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Subskrypcje w czasie rzeczywistym. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkcje.
|
||||
- [x] Funkcje bazy danych. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funkcje brzegowe [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
- [x] Base de dados Postgres alojada. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Autenticação e autorização. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] APIs geradas automaticamente.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Assinaturas em tempo real. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Assinaturas em tempo real. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funções.
|
||||
- [x] Funções de base de dados. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funções de Borda [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
- [x] Banco de dados Postgres hospedado. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Autenticação e autorização. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] APIs geradas automaticamente.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Assinaturas em tempo real. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Assinaturas em tempo real. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funções.
|
||||
- [x] Funções de banco de dados. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funções de borda [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Baza de date Postgres găzduită. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentificare și autorizare. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] API-uri generate automat.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Abonamente în timp real. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Abonamente în timp real. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funcții.
|
||||
- [x] Funcții de baze de date. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funcții de margine. [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Хостируемая база данных Postgres. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Аутентификация и авторизация. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Автоматически генерируемые API.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Подписки в реальном времени. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Подписки в реальном времени. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Функции.
|
||||
- [x] Функции базы данных. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Functions [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] hostovaná databáza Postgres. [Dokumenty](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentifikácia a autorizácia. [Dokumenty](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automaticky generované rozhrania API.
|
||||
- [x] REST. [Dokumenty](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumenty](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Odbery v reálnom čase. [Docs](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumenty](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumenty](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Odbery v reálnom čase. [Docs](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkcie.
|
||||
- [x] Databázové funkcie. [Docs](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Okrajové funkcie [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Gostovana podatkovna baza Postgres. [Dokumenti](https://supabase.com/docs/guides/database)
|
||||
- [x] Avtentikacija in avtorizacija. [Dokumenti](https://supabase.com/docs/guides/auth)
|
||||
- [x] Samodejno generirani API-ji.
|
||||
- [x] REST. [Dokumenti](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Dokumenti](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Naročnine v realnem času. [Dokumenti](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokumenti](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Dokumenti](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Naročnine v realnem času. [Dokumenti](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funkcije.
|
||||
- [x] Funkcije podatkovne zbirke. [Dokumenti](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Funkcije robov [Dokumenti](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hostovana Postgres Baza. [Dokumentacija](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentifikacija i Autorizacija. [Dokumentacija](https://supabase.com/docs/guides/auth)
|
||||
- [x] Auto-generisani API-ji.
|
||||
- [x] REST. [Dokumentacija](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] Subskripcije u realnom vremenu. [Dokumentacija](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] GraphQL (Beta). [Dokumentacija](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] REST. [Dokumentacija](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] Subskripcije u realnom vremenu. [Dokumentacija](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] GraphQL (Beta). [Dokumentacija](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Funkcije.
|
||||
- [x] Funkcije u bazi. [Dokumentacija](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge Funkcije [Dokumentacija](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Hosted Postgres-databas. [Docs](https://supabase.com/docs/guides/database)
|
||||
- [x] Autentisering och auktorisering. [Docs](https://supabase.com/docs/guides/auth)
|
||||
- [x] Automatiskt genererade API:er.
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Prenumerationer i realtid. [Dokument](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Docs](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Prenumerationer i realtid. [Dokument](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Funktioner.
|
||||
- [x] Databasfunktioner. [Dokument](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Edge-funktioner [Docs](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] ஹோஸ்ட் செய்யப்பட்ட பூஸ்ட்ஜீஆர்இஎஸ் தரவுத்தளம். [ஆவணம்](https://supabase.com/docs/guides/database)
|
||||
- [x] அங்கீகாரம் மற்றும் அங்கீகாரம்.. [ஆவணம்](https://supabase.com/docs/guides/auth)
|
||||
- [x] தானாக உருவாக்கப்பட்ட ஏபிஐ கள்.
|
||||
- [x] ராஸ்ட். [ஆவணம்](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] நிகழ்நேர சந்தாக்கள். [ஆவணம்](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] கிராப்க்யூஎல் (பீட்டா). [ஆவணம்](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] ராஸ்ட். [ஆவணம்](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] நிகழ்நேர சந்தாக்கள். [ஆவணம்](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] கிராப்க்யூஎல் (பீட்டா). [ஆவணம்](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] செயல்பாடுகள்.
|
||||
- [x] தரவுத்தளம் செயல்பாடுகள். [ஆவணம்](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] விளிம்பு செயல்பாடுகள் [ஆவணம்](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Barındırılan Postgres Veritabanı. [Dokümanlar](https://supabase.com/docs/guides/database)
|
||||
- [x] Kimlik Doğrulama ve Yetkilendirme. [Dokümanlar](https://supabase.com/docs/guides/auth)
|
||||
- [x] Otomatik oluşturulan API'ler.
|
||||
- [x] REST. [Dokümanlar](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Gerçek zamanlı abonelikler. [Dokümanlar](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Dokümanlar](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Docs](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Gerçek zamanlı abonelikler. [Dokümanlar](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Fonksiyonlar.
|
||||
- [x] Veritabanı Fonksiyonları. [Dokümanlar](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Kenar İşlevleri [Dokümanlar](https://supabase.com/docs/guides/functions)
|
||||
|
||||
+3
-3
@@ -12,9 +12,9 @@
|
||||
- [x] Розміщена база даних Postgres. [Документи](https://supabase.com/docs/guides/database)
|
||||
- [x] Аутентифікація та авторизація. [Документи](https://supabase.com/docs/guides/auth)
|
||||
- [x] Автоматично згенеровані API.
|
||||
- [x] REST. [Документи](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL. [Документи](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] Підписки в режимі реального часу. [Документи](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST. [Документи](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL. [Документи](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Підписки в режимі реального часу. [Документи](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] Функції.
|
||||
- [x] Функції бази даних. [Документи](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Граничні функції [Документи](https://supabase.com/docs/guides/functions)
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
- [x] Cơ sở dữ liệu Postgres tự quản lý. [Tài liệu](https://supabase.com/docs/guides/database)
|
||||
- [x] Xác thực và uỷ quyền. [Tài liệu](https://supabase.com/docs/guides/auth)
|
||||
- [x] APIs tự động khởi tạo.
|
||||
- [x] REST. [Tài liệu](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] Lắng nghe thay đổi thời gian thực. [Tài liệu](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] GraphQL (Thử nghiệm). [Tài liệu](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] REST. [Tài liệu](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] Lắng nghe thay đổi thời gian thực. [Tài liệu](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] GraphQL (Thử nghiệm). [Tài liệu](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] Chức năng hàm.
|
||||
- [x] Hàm dành cho cơ sở dữ liệu (Database functions). [Tài liệu](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] Hàm được phân phối trên toàn cầu (Edge Functions). [Tài liệu](https://supabase.com/docs/guides/functions)
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
- [x] Postgres 数据库托管。[文档](https://supabase.com/docs/guides/database)
|
||||
- [x] 身份验证和授权。[文档](https://supabase.com/docs/guides/auth)
|
||||
- [x] 自动生成的 API。
|
||||
- [x] REST。[文档](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] 实时订阅。[文档](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] GraphQL(测试版)。[文档](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] REST。[文档](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] 实时订阅。[文档](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] GraphQL(测试版)。[文档](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] 函数。
|
||||
- [x] 数据库函数。[文档](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] 边缘函数。[文档](https://supabase.com/docs/guides/functions)
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
- [x] 托管的 Postgres 数据库。[文档](https://supabase.com/docs/guides/database)
|
||||
- [x] 认证和授权。[文档](https://supabase.com/docs/guides/auth)
|
||||
- [x] 自动生成的 API。
|
||||
- [x] REST.[文档](https://supabase.com/docs/guides/database/api#rest-api)
|
||||
- [x] GraphQL。[文件](https://supabase.com/docs/guides/database/api#graphql-api)
|
||||
- [x] 实时订阅。[文档](https://supabase.com/docs/guides/database/api#realtime-api)
|
||||
- [x] REST.[文档](https://supabase.com/docs/guides/api#rest-api-overview)
|
||||
- [x] GraphQL。[文件](https://supabase.com/docs/guides/api#graphql-api-overview)
|
||||
- [x] 实时订阅。[文档](https://supabase.com/docs/guides/api#realtime-api-overview)
|
||||
- [x] 函数。
|
||||
- [x] 数据库函数。[文件](https://supabase.com/docs/guides/database/functions)
|
||||
- [x] 边缘功能 [文档](https://supabase.com/docs/guides/functions)
|
||||
|
||||
Generated
+4
-5
@@ -11,7 +11,6 @@
|
||||
"workspaces": [
|
||||
"apps/www",
|
||||
"apps/docs",
|
||||
"apps/new-docs",
|
||||
"studio",
|
||||
"tests",
|
||||
"packages/*"
|
||||
@@ -42805,7 +42804,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^1.7.14",
|
||||
"@supabase/gotrue-js": "2.24.0",
|
||||
"@supabase/gotrue-js": "^2.31.0",
|
||||
"@supabase/ui": "^0.37.0-alpha.50",
|
||||
"react-use": "^17.4.0"
|
||||
},
|
||||
@@ -42818,9 +42817,9 @@
|
||||
}
|
||||
},
|
||||
"packages/common/node_modules/@supabase/gotrue-js": {
|
||||
"version": "2.24.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.24.0.tgz",
|
||||
"integrity": "sha512-ZsH4K5cbMTjfMytXaDYVYs9l9igmlZFxiwXn7J2IP/CklWR5qmLCma+dvat5rccPLITVkN6oAZbKxDzW+pEgCg==",
|
||||
"version": "2.31.0",
|
||||
"resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.31.0.tgz",
|
||||
"integrity": "sha512-YcwlbbNfedlue/HVIXtYBb4fuOrs29gNOTl6AmyxPp4zryRxzFvslVN9kmLDBRUAVU9fnPJh2bgOR3chRjJX5w==",
|
||||
"dependencies": {
|
||||
"cross-fetch": "^3.1.5"
|
||||
}
|
||||
|
||||
+1
-1
@@ -8,13 +8,13 @@
|
||||
"workspaces": [
|
||||
"apps/www",
|
||||
"apps/docs",
|
||||
"apps/new-docs",
|
||||
"studio",
|
||||
"tests",
|
||||
"packages/*"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "turbo run build",
|
||||
"build:studio": "turbo run build --filter=studio",
|
||||
"dev": "turbo run dev --parallel",
|
||||
"dev:reference": "turbo run dev --filter=reference --parallel",
|
||||
"dev:studio": "turbo run dev --filter=studio --parallel",
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^1.7.14",
|
||||
"@supabase/gotrue-js": "2.24.0",
|
||||
"@supabase/gotrue-js": "^2.31.0",
|
||||
"@supabase/ui": "^0.37.0-alpha.50",
|
||||
"react-use": "^17.4.0"
|
||||
},
|
||||
|
||||
Loaded 100 of 195 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user