mirror of
https://github.com/supabase/supabase.git
synced 2026-10-07 02:15:05 +03:00
52 files changed
+925
-1148
No files matched your search
@@ -0,0 +1,98 @@
|
||||
# Developing Supabase Docs
|
||||
|
||||
## Getting started
|
||||
|
||||
Thanks for your interest in [Supabase docs](https://supabase.com/docs) and for wanting to contribute! Before you begin, read the
|
||||
[code of conduct](https://github.com/supabase/.github/blob/main/CODE_OF_CONDUCT.md) and check out the
|
||||
[existing issues](https://github.com/supabase/supabase/issues).
|
||||
This document describes how to set up your development environment to contribute to [Supabase docs](https://supabase.com/docs).
|
||||
|
||||
For a complete run-down on how all of our tools work together, see the main DEVELOPERS.md. That readme describes how to get set up locally in lots of detail, including minimum requirements, our Turborepo setup, installing packages, sharing components across projects, and more. This readme deals specifically with the docs site.
|
||||
|
||||
## Local setup
|
||||
|
||||
[supabase.com/docs](https://supabase.com/docs) is a Next.JS site. You can get setup by following the same steps for all of our other Next.JS projects:
|
||||
|
||||
1. Follow the steps outlined in the Local Development section of the main [DEVELOPERS.md](https://github.com/supabase/supabase/blob/master/DEVELOPERS.md)
|
||||
2. Start the local docs site by navigating to `/apps/docs` and running `npm run dev`
|
||||
3. Visit http://localhost:3001/docs in your browser - don't forget to append the `/docs` to the end
|
||||
4. Your local site should look exactly like [https://supabase.com/docs](https://supabase.com/docs)
|
||||
|
||||
## Types of documentation
|
||||
|
||||
[https://supabase.com/docs](https://supabase.com/docs) has several different kinds of documentation, all coming from different sources.
|
||||
|
||||
### Guides
|
||||
|
||||
The primary, instructional type of content. Basically anything that lives on the `https://supabase.com/docs/guides` route. This includes Guides for Auth, Database, Storage, Realtime, Edge Functions, as well as general resources, self-hosting instructions, and integrations. These are all [`.mdx`](https://mdxjs.com/) files — a combination of Markdown and Javascript.
|
||||
|
||||
#### Things to know
|
||||
|
||||
Here's a simple [example](https://supabase.com/docs/guides/functions) `.mdx` Guide, and here is [the source on Github](https://raw.githubusercontent.com/supabase/supabase/master/apps/docs/pages/guides/functions.mdx).
|
||||
|
||||
Some things to note:
|
||||
|
||||
1. The files need to import a Layout at the top
|
||||
2. The files need to export a `Page` at the bottom with the `<Layout>` component
|
||||
3. The files frontmatter is stored in `const meta = {}`. You should always include `title` and `description`.
|
||||
4. You can write Markdown as you normally would, but you can also write regular Javascript and JSX. Note the `examples` array that we iterate over.
|
||||
5. Any Javascript variables you use in these files need to be exported in order to be used (i.e., `export const examples = []`).
|
||||
|
||||
##### Using components
|
||||
|
||||
You can use any standard React components in these `.mdx` files without having to explicitly import them in each file. All components get imported in a [common components](https://github.com/supabase/supabase/blob/master/apps/docs/components/index.tsx) file and can be used in any `.mdx` file. Components can also be "intercepted" and modified via this file. Note how we're intercepting the `h2`, `h3` and `code` tags and modifying them before converting the `mdx` to `html`.
|
||||
|
||||
### Reference docs for client libraries
|
||||
|
||||
We maintain client libraries for [Javascript](https://supabase.com/docs/reference/javascript) and [Flutter/Dart](https://supabase.com/docs/reference/dart) (with more to come). These reference docs document every object and method available for developers to use. The are assembled from different sources and work much differently than the `.mdx` Guides we just looked at.
|
||||
|
||||
The client libraries are essentially wrappers around the clients for the various tools we use — GoTrue, PostgREST, Storage, Functions, and Realtime. The easiest way to describe how the things fit together is to look at an example and trace where the various pieces of information are coming from.
|
||||
|
||||
#### Example
|
||||
|
||||
Let's look at the `updateUser()` function in the `supabase-js` library.
|
||||
|
||||
#### Common file
|
||||
|
||||
Several pieces of information for this function come from a [common file](https://github.com/supabase/supabase/blob/3d774b3b7bcdcb410e25726d832467584ebea686/spec/common-client-libs-sections.json#L548) where we store information shared by all libraries.
|
||||
|
||||
1. id — used to identify this function
|
||||
2. title - the human-readable title
|
||||
3. slug — the url slug
|
||||
4. product - the Supabase tool or product that "owns" this function. Since `updateUser()` is an auth function, its product is `auth`
|
||||
5. type — `updateUser()` is a function and marked as such, but we can also have sections of markdown interspersed with these function definitions.
|
||||
|
||||
When a new function is added, this info would need to be manually added to the common file.
|
||||
|
||||
#### Function Parameters
|
||||
|
||||
The `updateUser()` function takes one parameter: `attributes`. The details for this parameter live in the GoTrue client library, referenced via a `$ref` property in the `supabase-js` [spec file](https://github.com/supabase/supabase/blob/cb04d85262db6a371539dda7df9b00ba5a901e87/spec/supabase_js_v2.yml#L357). Here, the `$ref` property is pointing to the [actual function definition](https://github.com/supabase/gotrue-js/blob/2d60e79073b96ae8c97a6ce18e2601ed1e2a2712/src/GoTrueClient.ts#L590) in the `gotrue-js` library. The accepted values for the `attributes` parameter come from the [type definition](https://github.com/supabase/gotrue-js/blob/16d3deb822097e8640a3a15b94a5690b3beaf11b/src/lib/types.ts#L233).
|
||||
|
||||
These individual library spec files are fetched via this [Makefile](https://github.com/supabase/supabase/blob/master/spec/Makefile), and get [transformed](https://github.com/supabase/supabase/blob/master/spec/enrichments/tsdoc_v2/supabase_dereferenced.json) to combine the information we need (params, types, etc). Unless you're a library maintainer, you shouldn't need to worry about this part of the process.
|
||||
|
||||
If you are a library maintainer, the last important note about these library files is that the [Makefile](https://github.com/supabase/supabase/blob/master/spec/Makefile) pulls from the `gh-pages` branch of the client library repo. Here's an example of the [`realtime-js` spec file](https://github.com/supabase/realtime-js/blob/gh-pages/v2/spec.json). Updating something like function params or returns, the process is:
|
||||
|
||||
1. Get your changes merged to `master` in your library
|
||||
2. This will kick off an action that automatically updates the spec file in the library's `gh-pages` branch
|
||||
3. Run `make` in `/spec` of the `supabase/supabase` repo. This will regenerate all of the `tsdoc` files that the docs site uses
|
||||
4. You should now see the changes you've made in the docs site locally
|
||||
|
||||
#### Function Examples
|
||||
|
||||
The `updateUser()` function has three examples listed with it. The examples are stored along with the `$ref` property in the [supabase_js_v2 spec file](https://github.com/supabase/supabase/blob/master/spec/supabase_js_v2.yml).
|
||||
|
||||
#### Rendering in Next.JS
|
||||
|
||||
These reference docs are rendered by Next.JS via a dynamic route using a [`[...slug.tsx]`](https://github.com/supabase/supabase/blob/master/apps/docs/pages/reference/javascript/%5B...slug%5D.tsx). Here, we use the library [spec file](https://github.com/supabase/supabase/blob/bd0514553c627db8f1e8d0b3ae440ccb6759d228/apps/docs/pages/reference/javascript/%5B...slug%5D.tsx#L4) and the [common file](https://github.com/supabase/supabase/blob/bd0514553c627db8f1e8d0b3ae440ccb6759d228/apps/docs/pages/reference/javascript/%5B...slug%5D.tsx#L1) to output the info you see on the page.
|
||||
|
||||
### Other reference docs
|
||||
|
||||
The reference docs for the [Supabase Management API](https://supabase.com/docs/reference/api) and the [Supabase CLI](https://supabase.com/docs/reference/cli) are a little more straightforward than the client libraries. Both files also have a [common file](https://github.com/supabase/supabase/blob/master/spec/common-cli-sections.json) which handles things like `title`, `id` and `slug`. Both also have a spec file detailing things like parameters, descriptions, and responses ([Management API](https://github.com/supabase/supabase/blob/master/spec/api_v0_openapi.json) / [CLI](https://github.com/supabase/supabase/blob/master/spec/cli_v1_commands.yaml))
|
||||
|
||||
On the Next.JS side of things, these work almost exactly the same as the client libaries with a dynamic [`[...slug.tsx]`](https://github.com/supabase/supabase/blob/master/apps/docs/pages/reference/cli/%5B...slug%5D.tsx).
|
||||
|
||||
### Misc
|
||||
|
||||
#### Search
|
||||
|
||||
Search is handled through Algolia. When the site is built, a [search script](https://github.com/supabase/supabase/blob/master/apps/docs/scripts/build-search.ts) runs through all of the types of content, generating search objects that are sent to Algolia to index.
|
||||
@@ -257,20 +257,18 @@ const Content: React.FC<INavigationMenuRefList> = ({ id, lib, commonSections, sp
|
||||
<Fragment key={fn.id}>
|
||||
<RenderLink {...fn} lib={lib} />
|
||||
{fn.items &&
|
||||
fn.items
|
||||
//.filter((item) => item.libs.includes(lib))
|
||||
.map((item) => (
|
||||
<RenderLink
|
||||
{...item}
|
||||
library={menu.title}
|
||||
index={fnIndex}
|
||||
modifierIds={modifierIds}
|
||||
filterIds={filterIds}
|
||||
authServerIds={authServerIds}
|
||||
lib={lib}
|
||||
allowedKeys={allowedKeys}
|
||||
/>
|
||||
))}
|
||||
fn.items.map((item) => (
|
||||
<RenderLink
|
||||
{...item}
|
||||
library={menu.title}
|
||||
index={fnIndex}
|
||||
modifierIds={modifierIds}
|
||||
filterIds={filterIds}
|
||||
authServerIds={authServerIds}
|
||||
lib={lib}
|
||||
allowedKeys={allowedKeys}
|
||||
/>
|
||||
))}
|
||||
</Fragment>
|
||||
) : (
|
||||
<Fragment key={fn.title}>
|
||||
|
||||
@@ -70,7 +70,9 @@ const Option: FC<IOption> = (props) => {
|
||||
</span>
|
||||
<span className="text-scale-900 text-xs">{props.type ?? 'no type'}</span>
|
||||
</div>
|
||||
<p className="text-sm text-scale-1000 m-0">{props.description ?? 'nodescription'}</p>
|
||||
|
||||
{props.description && <p className="text-sm text-scale-1000 m-0">{props.description}</p>}
|
||||
|
||||
{props.children}
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -20,7 +20,9 @@ const Param: FC<IParamProps> = (paramItem) => {
|
||||
</span>
|
||||
<span className="text-scale-900 text-xs">{paramItem.type ?? 'no type'}</span>
|
||||
</div>
|
||||
<p className="text-sm text-scale-1000 m-0">{paramItem.description ?? 'nodescription'}</p>
|
||||
{paramItem.description && (
|
||||
<p className="text-sm text-scale-1000 m-0">{paramItem.description} </p>
|
||||
)}
|
||||
{paramItem.children}
|
||||
</li>
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Button, Tabs, Alert } from 'ui'
|
||||
import { Button, Tabs, Alert, GlassPanel } from 'ui'
|
||||
import Link from 'next/link'
|
||||
|
||||
// Common components
|
||||
import Admonition from './Admonition'
|
||||
@@ -38,6 +39,8 @@ const components = {
|
||||
Button,
|
||||
ButtonCard,
|
||||
CodeBlock,
|
||||
GlassPanel,
|
||||
Link,
|
||||
Frameworks,
|
||||
AuthProviders,
|
||||
FunctionsExamples,
|
||||
|
||||
@@ -16,7 +16,7 @@ interface ICommonFunc {
|
||||
}
|
||||
|
||||
interface IRefFunctionSection {
|
||||
funcData: any
|
||||
funcData: ICommonFunc
|
||||
commonFuncData: ICommonFunc
|
||||
spec: any
|
||||
}
|
||||
|
||||
@@ -10,22 +10,7 @@ import { extractTsDocNode, generateParameters } from '~/lib/refGenerator/helpers
|
||||
|
||||
import RefDetailCollapse from '~/components/reference/RefDetailCollapse'
|
||||
import { Fragment } from 'react'
|
||||
|
||||
interface ICommonFunc {
|
||||
id: string
|
||||
title: string
|
||||
slug: string
|
||||
product: string
|
||||
libs: string
|
||||
items: ICommonFunc[]
|
||||
}
|
||||
|
||||
interface IRefFunctionSection {
|
||||
funcData: any
|
||||
commonFuncData: ICommonFunc
|
||||
spec: any
|
||||
typeSpec?: any
|
||||
}
|
||||
import { IRefFunctionSection } from './Reference.types'
|
||||
|
||||
const RefFunctionSection: React.FC<IRefFunctionSection> = (props) => {
|
||||
const item = props.spec.functions.find((x: any) => x.id === props.funcData.id)
|
||||
@@ -204,7 +189,6 @@ const RefFunctionSection: React.FC<IRefFunctionSection> = (props) => {
|
||||
</RefDetailCollapse>
|
||||
)}
|
||||
|
||||
|
||||
<CodeBlock
|
||||
className="useless-code-block-class"
|
||||
language={codeBlockLang}
|
||||
|
||||
@@ -1,35 +1,31 @@
|
||||
import { MDXRemote } from 'next-mdx-remote'
|
||||
import { useRouter } from 'next/router'
|
||||
import { useEffect } from 'react'
|
||||
|
||||
import components from '~/components'
|
||||
import RefEducationSection from '~/components/reference/RefEducationSection'
|
||||
import RefFunctionSection from '~/components/reference/RefFunctionSection'
|
||||
|
||||
import RefSubLayout from '~/layouts/ref/RefSubLayout'
|
||||
import ApiOperationSection from './ApiOperationSection'
|
||||
import CliCommandSection from './CLICommandSection'
|
||||
import { IAPISpec, ICommonFunc, IRefStaticDoc, ISpec, TypeSpec } from './Reference.types'
|
||||
|
||||
interface Props {
|
||||
sections: any[] // to do
|
||||
spec: any // to do
|
||||
typeSpec: any // to do
|
||||
pageProps: any // to do, from staticProps
|
||||
|
||||
interface RefSectionHandlerProps {
|
||||
sections: ICommonFunc[]
|
||||
spec?: ISpec | IAPISpec
|
||||
typeSpec?: TypeSpec
|
||||
pageProps: { docs: IRefStaticDoc[] }
|
||||
type: 'client-lib' | 'cli' | 'api'
|
||||
}
|
||||
|
||||
const RefSectionHandler = (props) => {
|
||||
const RefSectionHandler = (props: RefSectionHandlerProps) => {
|
||||
const router = useRouter()
|
||||
|
||||
const slug = router.query.slug[0]
|
||||
|
||||
const isNewDocs = process.env.NEXT_PUBLIC_NEW_DOCS === 'true'
|
||||
|
||||
// When user lands on a url like http://supabase.com/docs/reference/javascript/sign-up
|
||||
// find the #sign-up element and scroll to that
|
||||
useEffect(() => {
|
||||
if (isNewDocs && document && slug !== 'start') {
|
||||
if (document && slug !== 'start') {
|
||||
document.querySelector(`#${slug}`) && document.querySelector(`#${slug}`).scrollIntoView()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
import { enrichedOperation } from '~/lib/refGenerator/helpers'
|
||||
|
||||
export interface ISpec {
|
||||
openref: any
|
||||
info: {
|
||||
id: string
|
||||
title: string
|
||||
description: string
|
||||
definition: string
|
||||
libraries: any
|
||||
slugPrefix: string
|
||||
specUrl: string
|
||||
}
|
||||
functions: IFunctionDefinition[]
|
||||
}
|
||||
|
||||
export interface IAPISpec {
|
||||
info: {
|
||||
title: string
|
||||
description?: string
|
||||
version: string
|
||||
contact?: {}
|
||||
}
|
||||
operations: enrichedOperation[]
|
||||
sections: any
|
||||
}
|
||||
|
||||
export interface IFunctionDefinition {
|
||||
title: string
|
||||
id: string
|
||||
$ref: string
|
||||
description: string
|
||||
examples?: []
|
||||
}
|
||||
|
||||
export interface ICommonFunc {
|
||||
id: string
|
||||
title: string
|
||||
slug: string
|
||||
product: string
|
||||
type: string
|
||||
parent?: string
|
||||
items: ICommonFunc[]
|
||||
}
|
||||
|
||||
export interface IRefFunctionSection {
|
||||
funcData: any
|
||||
commonFuncData: ICommonFunc
|
||||
spec: any
|
||||
typeSpec?: TypeSpec
|
||||
}
|
||||
|
||||
export interface IRefStaticDoc {
|
||||
id: string
|
||||
title: string
|
||||
meta: {
|
||||
id: string
|
||||
title: string
|
||||
hideTitle: boolean
|
||||
}
|
||||
content: {
|
||||
compiledSource: string
|
||||
frontmatter: {}
|
||||
scope: {}
|
||||
}
|
||||
}
|
||||
|
||||
export type TypeSpec = {
|
||||
name: string
|
||||
children: TypeSpecChild[]
|
||||
}
|
||||
|
||||
export type TypeSpecChild = {
|
||||
id: number
|
||||
name: string
|
||||
kind: number
|
||||
kindString?: string
|
||||
flags?: {}
|
||||
originalName?: string
|
||||
children?: TypeSpecChild[]
|
||||
defaultValue?: string
|
||||
default?: any
|
||||
groups?: any
|
||||
sources?: any
|
||||
target?: any
|
||||
comment?: TypeSpecChildComment
|
||||
typeParameter?: any
|
||||
implementedTypes?: any
|
||||
extendedTypes?: any
|
||||
dereferenced?: TypeSpecChild
|
||||
extendedBy?: any
|
||||
indexSignature?: any
|
||||
extendsType?: any
|
||||
objectType?: any
|
||||
trueType?: any
|
||||
falseType?: any
|
||||
type?: any
|
||||
signatures?: any
|
||||
overwrites?: any
|
||||
inheritedFrom?: any
|
||||
implementationOf?: any
|
||||
}
|
||||
|
||||
export interface TypeSpecChildComment {
|
||||
shortText?: string
|
||||
text?: string | null
|
||||
returns?: string | null
|
||||
tags?: any
|
||||
}
|
||||
@@ -1,33 +1,12 @@
|
||||
import generateOldRefMarkdown from '~/lib/mdx/generateOldRefMarkdown'
|
||||
import generateRefMarkdown from '~/lib/mdx/generateRefMarkdown'
|
||||
|
||||
async function handleRefStaticProps(sections, params, librarypath, urlPath) {
|
||||
async function handleRefStaticProps(sections, librarypath) {
|
||||
let markdownContent = await generateRefMarkdown(sections, librarypath)
|
||||
|
||||
/*
|
||||
* old content generation
|
||||
* this is for grabbing to old markdown files
|
||||
*/
|
||||
|
||||
let slug
|
||||
if (params.slug.length > 1) {
|
||||
slug = `docs/reference${urlPath}/${params.slug.join('/')}`
|
||||
} else {
|
||||
slug = `docs/reference${urlPath}/${params.slug[0]}`
|
||||
}
|
||||
|
||||
/*
|
||||
* handle old ref pages
|
||||
*/
|
||||
if (process.env.NEXT_PUBLIC_NEW_DOCS === 'false') {
|
||||
const oldMarkdown = await generateOldRefMarkdown(slug)
|
||||
return oldMarkdown
|
||||
} else {
|
||||
return {
|
||||
props: {
|
||||
docs: markdownContent,
|
||||
},
|
||||
}
|
||||
return {
|
||||
props: {
|
||||
docs: markdownContent,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -218,6 +218,12 @@ export type enrichedOperation = OpenAPIV3.OperationObject & {
|
||||
operationId: string
|
||||
operation: string
|
||||
responseList: []
|
||||
description?: string
|
||||
parameters?: []
|
||||
responses?: {}
|
||||
security?: []
|
||||
summary?: string
|
||||
tags?: []
|
||||
}
|
||||
|
||||
export function gen_v3(spec: OpenAPIV3.Document, dest: string, { apiUrl }: { apiUrl: string }) {
|
||||
|
||||
@@ -39,7 +39,7 @@ yarn add @supabase/auth-helpers-sveltekit
|
||||
|
||||
### Configuration
|
||||
|
||||
Set up the fillowing env vars. For local development you can set them in a `.env` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/sveltekit/.env.example).
|
||||
Set up the following env vars. For local development you can set them in a `.env` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/sveltekit/.env.example).
|
||||
|
||||
```bash
|
||||
# Find these in your Supabase project settings > API
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import Layout from '~/layouts/DefaultGuideLayout'
|
||||
import NewContent from '~/pages/new/auth.mdx'
|
||||
|
||||
import { useRouter } from 'next/router'
|
||||
|
||||
export const meta = {
|
||||
@@ -174,12 +174,6 @@ When users sign up, Supabase assigns them a unique ID. You can reference this ID
|
||||
<source src="/docs/videos/auth-zoom2.mp4" type="video/mp4" muted playsInline />
|
||||
</video>
|
||||
|
||||
export const Page = ({ children }) => {
|
||||
const router = useRouter()
|
||||
if (process.env.NEXT_PUBLIC_NEW_DOCS === 'true' && !router.asPath.includes('overview')) {
|
||||
return NewContent()
|
||||
}
|
||||
return <Layout meta={meta} children={children} />
|
||||
}
|
||||
export const Page = ({ children }) => <Layout meta={meta} children={children} />
|
||||
|
||||
export default Page
|
||||
@@ -88,9 +88,8 @@ Reference: [rpc()](../../reference/javascript/rpc)
|
||||
<TabPanel id="dart" label="Dart">
|
||||
|
||||
```dart
|
||||
final res = await supabase
|
||||
.rpc('hello_world')
|
||||
.execute();
|
||||
final data = await supabase
|
||||
.rpc('hello_world');
|
||||
```
|
||||
|
||||
Reference: [rpc()](../../reference/dart/rpc)
|
||||
@@ -199,10 +198,9 @@ const { data, error } = supabase.rpc('get_planets').eq('id', 1)
|
||||
<TabPanel id="dart" label="Dart">
|
||||
|
||||
```dart
|
||||
final res = await supabase
|
||||
final data = await supabase
|
||||
.rpc('get_planets')
|
||||
.eq('id', 1)
|
||||
.execute();
|
||||
.eq('id', 1);
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
@@ -254,9 +252,8 @@ const { data, error } = await supabase.rpc('add_planet', { name: 'Jakku' })
|
||||
<TabPanel id="dart" label="Dart">
|
||||
|
||||
```dart
|
||||
final res = await supabase
|
||||
.rpc('add_planet', params: { 'name': 'Jakku' })
|
||||
.execute();
|
||||
final data = await supabase
|
||||
.rpc('add_planet', params: { 'name': 'Jakku' });
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
|
||||
@@ -206,7 +206,7 @@ const { data, error } = await supabase
|
||||
<TabPanel id="dart" label="Dart">
|
||||
|
||||
```sql
|
||||
final res = await supabase
|
||||
await supabase
|
||||
.from('movies')
|
||||
.insert([{
|
||||
name: 'The Empire Strikes Back',
|
||||
@@ -214,7 +214,7 @@ final res = await supabase
|
||||
}, {
|
||||
name: 'Return of the Jedi',
|
||||
description: 'After a daring mission to rescue Han Solo from Jabba the Hutt, the Rebels dispatch to Endor to destroy the second Death Star.'
|
||||
}]).execute();
|
||||
}]);
|
||||
```
|
||||
|
||||
</TabPanel>
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import Layout from '~/layouts/DefaultGuideLayout'
|
||||
import { Button, GlassPanel } from 'ui'
|
||||
import Link from 'next/link'
|
||||
|
||||
export const meta = {
|
||||
id: 'functions',
|
||||
|
||||
@@ -85,28 +85,28 @@ export const webapps = [
|
||||
title: 'Angular',
|
||||
href: '/guides/getting-started/tutorials/with-angular',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Angular and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/angular-icon',
|
||||
},
|
||||
{
|
||||
title: 'RedwoodJS',
|
||||
href: '/guides/getting-started/tutorials/with-redwoodjs',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with RedwoodJS and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/redwood-icon',
|
||||
},
|
||||
{
|
||||
title: 'Svelte',
|
||||
href: '/guides/getting-started/tutorials/with-svelte',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Svelte and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/svelte-icon',
|
||||
},
|
||||
{
|
||||
title: 'SvelteKit',
|
||||
href: '/guides/getting-started/tutorials/with-sveltekit',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with SvelteKit and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/svelte-icon',
|
||||
},
|
||||
{
|
||||
@@ -120,28 +120,28 @@ export const webapps = [
|
||||
title: 'Expo',
|
||||
href: '/guides/getting-started/tutorials/with-expo',
|
||||
description:
|
||||
'Learn how to build a user management app with React and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Expo and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/expo-icon',
|
||||
},
|
||||
{
|
||||
title: 'Ionic React',
|
||||
href: '/guides/getting-started/tutorials/with-ionic-react',
|
||||
description:
|
||||
'Learn how to build a user management app with React and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Ionic React and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/ionic-icon',
|
||||
},
|
||||
{
|
||||
title: 'Ionic Vue',
|
||||
href: '/guides/getting-started/tutorials/with-ionic-vue',
|
||||
description:
|
||||
'Learn how to build a user management app with Flutter and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Ionic Vue and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/ionic-icon',
|
||||
},
|
||||
{
|
||||
title: 'Ionic Angular',
|
||||
href: '/guides/getting-started/tutorials/with-ionic-angular',
|
||||
description:
|
||||
'Learn how to build a user management app with NextJS and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Ionic Angular and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/ionic-icon',
|
||||
},
|
||||
]
|
||||
|
||||
@@ -31,6 +31,13 @@ Make sure you have these installed on your local machine:
|
||||
supabase login
|
||||
```
|
||||
|
||||
<Admonition type="note">
|
||||
|
||||
If you installed the Supabase CLI via NPM you may have to use `npx supabase login`.
|
||||
|
||||
</Admonition>
|
||||
|
||||
|
||||
## Initialize your project
|
||||
|
||||
Create a new folder for your project and start a new git repository:
|
||||
|
||||
@@ -84,31 +84,31 @@ export const webapps = [
|
||||
icon: '/docs/img/icons/nuxt-icon',
|
||||
},
|
||||
{
|
||||
title: 'Anglular',
|
||||
title: 'Angular',
|
||||
href: '/guides/tutorials/with-angular',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Angular and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/angular-icon',
|
||||
},
|
||||
{
|
||||
title: 'RedwoodJS',
|
||||
href: '/guides/tutorials/with-redwoodjs',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with RedwoodJS and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/redwood-icon',
|
||||
},
|
||||
{
|
||||
title: 'Svelte',
|
||||
href: '/guides/tutorials/with-svelte',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Svelte and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/svelte-icon',
|
||||
},
|
||||
{
|
||||
title: 'SvelteKit',
|
||||
href: '/guides/tutorials/with-sveltekit',
|
||||
description:
|
||||
'Learn how to build a user management app with Nuxt 3 and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with SvelteKit and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/svelte-icon',
|
||||
},
|
||||
]
|
||||
@@ -125,7 +125,7 @@ export const mobile = [
|
||||
title: 'Expo',
|
||||
href: '/guides/tutorials/with-expo',
|
||||
description:
|
||||
'Learn how to build a user management app with React and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Expo and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/expo-icon',
|
||||
},
|
||||
]
|
||||
@@ -135,21 +135,21 @@ export const lowCode = [
|
||||
title: 'Ionic React',
|
||||
href: '/guides/tutorials/with-ionic-react',
|
||||
description:
|
||||
'Learn how to build a user management app with React and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Ionic React and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/ionic-icon',
|
||||
},
|
||||
{
|
||||
title: 'Ionic Vue',
|
||||
href: '/guides/tutorials/with-ionic-vue',
|
||||
description:
|
||||
'Learn how to build a user management app with Flutter and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Ionic Vue and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/ionic-icon',
|
||||
},
|
||||
{
|
||||
title: 'Ionic Angular',
|
||||
href: '/guides/tutorials/with-ionic-angular',
|
||||
description:
|
||||
'Learn how to build a user management app with NextJS and Supabase Database, Auth, and Storage functionality.',
|
||||
'Learn how to build a user management app with Ionic Angular and Supabase Database, Auth, and Storage functionality.',
|
||||
icon: '/docs/img/icons/ionic-icon',
|
||||
},
|
||||
]
|
||||
|
||||
@@ -15,8 +15,8 @@ export default function Config(props) {
|
||||
return <RefSectionHandler sections={sections} spec={generatedSpec} pageProps={props} type="api" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/api', '/api')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/api')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -14,8 +14,8 @@ export default function CliRef(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} type="cli" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/cli', '/cli')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/cli')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -9,11 +9,11 @@ import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps'
|
||||
const sections = flattenSections(clientLibsCommonSections)
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} />
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} type="client-lib" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/dart', '/dart')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/dart')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -29,13 +29,14 @@ export default function JSReference(props) {
|
||||
spec={spec}
|
||||
typeSpec={typeSpec}
|
||||
pageProps={props}
|
||||
type="client-lib"
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/dart', '/dart')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/dart')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -9,11 +9,11 @@ import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps'
|
||||
const sections = flattenSections(clientLibsCommonSections)
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} />
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} type="client-lib" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/dart/v0', '/dart/v0')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/dart/v0')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -28,13 +28,14 @@ export default function JSReference(props) {
|
||||
spec={spec}
|
||||
typeSpec={typeSpec}
|
||||
pageProps={props}
|
||||
type="client-lib"
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/dart/v0', '/dart/v0')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/dart/v0')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -10,11 +10,19 @@ import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps'
|
||||
const sections = flattenSections(clientLibsCommonSections)
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} typeSpec={typeSpec} pageProps={props} />
|
||||
return (
|
||||
<RefSectionHandler
|
||||
sections={sections}
|
||||
spec={spec}
|
||||
typeSpec={typeSpec}
|
||||
pageProps={props}
|
||||
type="client-lib"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/javascript', '/javascript')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/javascript')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -29,13 +29,14 @@ export default function JSReference(props) {
|
||||
spec={spec}
|
||||
typeSpec={typeSpec}
|
||||
pageProps={props}
|
||||
type="client-lib"
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/javascript', '/javascript')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/javascript')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -10,11 +10,19 @@ import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps'
|
||||
const sections = flattenSections(clientLibsCommonSections)
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} typeSpec={typeSpec} pageProps={props} />
|
||||
return (
|
||||
<RefSectionHandler
|
||||
sections={sections}
|
||||
spec={spec}
|
||||
typeSpec={typeSpec}
|
||||
pageProps={props}
|
||||
type="client-lib"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/javascript/v1', '/javascript/v1')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/javascript/v1')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -28,13 +28,14 @@ export default function JSReference(props) {
|
||||
spec={spec}
|
||||
typeSpec={typeSpec}
|
||||
pageProps={props}
|
||||
type="client-lib"
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/javascript/v1', '/javascript/v1')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/javascript/v1')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -12,11 +12,11 @@ const sections = flattenSections(selfHostingAuthCommonSections)
|
||||
const spec = gen_v3(authSpec, 'wat', { apiUrl: 'apiv0' })
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} />
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} type="api" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/self-hosting-auth', '/self-hosting-auth')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/self-hosting-auth')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -9,11 +9,11 @@ import { gen_v3 } from '~/lib/refGenerator/helpers'
|
||||
const sections = flattenSections(selfHostingRealtimeCommonSections)
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} pageProps={props} />
|
||||
return <RefSectionHandler sections={sections} pageProps={props} type="api" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/self-hosting-realtime', '/self-hosting-realtime')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/self-hosting-realtime')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
@@ -12,11 +12,11 @@ const sections = flattenSections(selfHostingStorageCommonSections)
|
||||
const spec = gen_v3(storageSpec, 'wat', { apiUrl: 'apiv0' })
|
||||
|
||||
export default function JSReference(props) {
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} />
|
||||
return <RefSectionHandler sections={sections} spec={spec} pageProps={props} type="api" />
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }: { params: { slug: string[] } }) {
|
||||
return handleRefStaticProps(sections, params, '/self-hosting-storage', '/self-hosting-storage')
|
||||
export async function getStaticProps() {
|
||||
return handleRefStaticProps(sections, '/self-hosting-storage')
|
||||
}
|
||||
|
||||
export function getStaticPaths() {
|
||||
|
||||
+174
-126
@@ -78,6 +78,12 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/self-hosting</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/storage</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -126,6 +132,78 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-captcha</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-email-templates</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-email</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-helpers</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-magic-link</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-mfa</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/managing-user-data</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/overview</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/phone-login</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/row-level-security</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/server-side-rendering</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/social-login</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/arrays</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -216,78 +294,6 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-captcha</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-email-templates</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-email</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-helpers</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-magic-link</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-mfa</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/managing-user-data</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/overview</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/phone-login</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/row-level-security</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/server-side-rendering</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/social-login</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/functions/auth</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -570,12 +576,6 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/self-hosting</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/supabase-cli</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -612,6 +612,12 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/self-hosting/docker</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -642,42 +648,6 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/http</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/pgcron</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/pgnet</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/pgtap</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/plv8</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/uuid-ossp</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/auth/auth-helpers/auth-ui</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -829,25 +799,43 @@
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/functions/examples/og-image</loc>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/http</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/getting-started/quickstarts/nextjs</loc>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/pgcron</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/getting-started/quickstarts/nuxtjs</loc>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/pgnet</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/getting-started/quickstarts/reactjs</loc>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/pgtap</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/plv8</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/postgis</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/database/extensions/uuid-ossp</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
@@ -936,6 +924,30 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/functions/examples/og-image</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/getting-started/quickstarts/nextjs</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/getting-started/quickstarts/nuxtjs</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/getting-started/quickstarts/reactjs</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/platform/sso/azure</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -954,6 +966,24 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/supabase-cli/local-development</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/supabase-cli/managing-environments</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/self-hosting/auth/config</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -979,19 +1009,13 @@
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/self-hosting/docker</loc>
|
||||
<loc>https://supabase.com/docs/guides/self-hosting/realtime/config</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/supabase-cli/local-development</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/guides/resources/supabase-cli/managing-environments</loc>
|
||||
<loc>https://supabase.com/docs/guides/self-hosting/storage/config</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
@@ -3326,6 +3350,24 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/reference/cli/supabase-network-bans</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/reference/cli/supabase-network-bans-remove</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/reference/cli/supabase-network-bans-get</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/reference/cli/supabase-migration</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
@@ -3488,6 +3530,12 @@
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/reference/cli/supabase-db-dump</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
<changefreq>0.5</changefreq>
|
||||
</url>
|
||||
|
||||
<url>
|
||||
<loc>https://supabase.com/docs/reference/cli/supabase-db-diff</loc>
|
||||
<changefreq>weekly</changefreq>
|
||||
|
||||
@@ -194,6 +194,7 @@
|
||||
},
|
||||
{
|
||||
"title": "Asset transformations",
|
||||
"tooltip": "Origin images are only relevant for image transformations. Images in the bucket which are not transformed do not count towards this limit.",
|
||||
"tiers": {
|
||||
"free": false,
|
||||
"pro": "Unlimited transformations for 100 origin images, then 5$ per 1000 origin images",
|
||||
|
||||
+25
-2
@@ -1,3 +1,4 @@
|
||||
import authors from 'lib/authors.json'
|
||||
const dayjs = require('dayjs')
|
||||
var utc = require('dayjs/plugin/utc')
|
||||
var advancedFormat = require('dayjs/plugin/advancedFormat')
|
||||
@@ -17,8 +18,29 @@ const generateRssItem = (post: any): string => {
|
||||
`
|
||||
}
|
||||
|
||||
export const generateRss = (posts: any[]): string => {
|
||||
return `
|
||||
// we generate a main rss.xml flie as well as individual files for
|
||||
// authors who publish under the `planetpg` tag
|
||||
export const generateRss = (posts: any[], authorID?: string): string => {
|
||||
const authorInfo = authors.find((item) => item.author_id === authorID)
|
||||
|
||||
if (authorID) {
|
||||
return `
|
||||
<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 ${authorInfo?.author} at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>${dayjs(posts[0].date)
|
||||
.utc()
|
||||
.format('ddd, DD MMM YYYY HH:hh:mm ZZ')}</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-${authorID}-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
${posts.map(generateRssItem).join('')}
|
||||
</channel>
|
||||
</rss>
|
||||
`
|
||||
} else {
|
||||
return `
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>Blog - Supabase</title>
|
||||
@@ -33,4 +55,5 @@ export const generateRss = (posts: any[]): string => {
|
||||
</channel>
|
||||
</rss>
|
||||
`
|
||||
}
|
||||
}
|
||||
+12
-5
@@ -19,16 +19,23 @@ export async function getStaticProps() {
|
||||
const allPostsData = getSortedPosts('_blog', undefined, undefined, '** BLOG PAGE **')
|
||||
const categories = getAllCategories('_blog')
|
||||
const rss = generateRss(allPostsData)
|
||||
// @ts-ignore
|
||||
const planetPgPosts = allPostsData.filter((post) => post.tags.includes('planetpg'))
|
||||
const planetPgrss = generateRss(planetPgPosts)
|
||||
|
||||
// create a rss feed in public directory
|
||||
// rss feed is added via <Head> component in render return
|
||||
fs.writeFileSync('./public/rss.xml', rss)
|
||||
|
||||
// create separate feed for just posts promoted in PlanetPG
|
||||
fs.writeFileSync('./public/planetpg-rss.xml', planetPgrss)
|
||||
// generate a series of rss feeds for each author (for PlanetPG)
|
||||
const planetPgPosts = allPostsData.filter((post: any) => post.tags.includes('planetpg'))
|
||||
const planetPgAuthors = planetPgPosts.map((post: any) => post.author.split(','))
|
||||
const uniquePlanetPgAuthors = new Set([].concat(...planetPgAuthors))
|
||||
|
||||
uniquePlanetPgAuthors.forEach((author) => {
|
||||
const authorPosts = planetPgPosts.filter((post: any) => post.author.includes(author))
|
||||
if (authorPosts.length > 0) {
|
||||
const authorRss = generateRss(authorPosts, author)
|
||||
fs.writeFileSync(`./public/planetpg-${author}-rss.xml`, authorRss)
|
||||
}
|
||||
})
|
||||
|
||||
return {
|
||||
props: {
|
||||
|
||||
@@ -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 03:03:30 +0000</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 03:03:30 +0000</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>Sun, 02 Aug 2020 02:02:30 +0000</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>Thu, 09 Jul 2020 02:02:30 +0000</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>Tue, 07 Jul 2020 02:02:30 +0000</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>Sat, 27 Feb 2021 03:03:30 +0000</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>Sat, 27 Feb 2021 03:03:30 +0000</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 03:03:30 +0000</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 03:03:30 +0000</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 02:02:30 +0000</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 03:03:30 +0000</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 03:03:30 +0000</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 03:03:30 +0000</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 Oliver Rice at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Thu, 15 Dec 2022 03:03:30 +0000</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-oli_rice-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<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 03:03:30 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/audit</guid>
|
||||
<title>Postgres Auditing in 150 lines of SQL</title>
|
||||
<link>https://supabase.com/blog/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 03:03:30 +0000</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 Paul Copplestone at Supabase</description>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Mon, 27 Jun 2022 02:02:30 +0000</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/planetpg-paul_copplestone-rss.xml" rel="self" type="application/rss+xml"/>
|
||||
<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 02:02:30 +0000</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>Fri, 05 Mar 2021 03:03:30 +0000</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>Wed, 18 Nov 2020 03:03:30 +0000</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 03:03:30 +0000</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 03:03:30 +0000</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 02:02:30 +0000</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -1,159 +0,0 @@
|
||||
|
||||
<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>Thu, 15 Dec 2022 03:03:30 +0000</lastBuildDate>
|
||||
<atom:link href="https://supabase.com/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 03:03:30 +0000</pubDate>
|
||||
</item>
|
||||
<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 03:03:30 +0000</pubDate>
|
||||
</item>
|
||||
<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 03:03:30 +0000</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 03:03:30 +0000</pubDate>
|
||||
</item>
|
||||
<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 03:03:30 +0000</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 03:03:30 +0000</pubDate>
|
||||
</item>
|
||||
<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 03:03:30 +0000</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 02:02:30 +0000</pubDate>
|
||||
</item>
|
||||
<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 02:02:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<guid>https://supabase.com/blog/audit</guid>
|
||||
<title>Postgres Auditing in 150 lines of SQL</title>
|
||||
<link>https://supabase.com/blog/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 03:03:30 +0000</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 02:02:30 +0000</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>Fri, 05 Mar 2021 03:03:30 +0000</pubDate>
|
||||
</item>
|
||||
<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>Sat, 27 Feb 2021 03:03:30 +0000</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>Wed, 18 Nov 2020 03:03:30 +0000</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>Sun, 02 Aug 2020 02:02:30 +0000</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>Thu, 09 Jul 2020 02:02:30 +0000</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>Tue, 07 Jul 2020 02:02:30 +0000</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 03:03:30 +0000</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 03:03:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</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 02:02:30 +0000</pubDate>
|
||||
</item>
|
||||
|
||||
</channel>
|
||||
</rss>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,485 +0,0 @@
|
||||
openref: 0.1
|
||||
|
||||
info:
|
||||
id: reference/common-library-file
|
||||
title: Supabase Client libs common
|
||||
description: |
|
||||
|
||||
This file shares info common between the JS and Dart libraries.
|
||||
|
||||
functions:
|
||||
- id: initializing
|
||||
title: initializing
|
||||
slug: initializing
|
||||
|
||||
- id: select
|
||||
title: 'Fetching data'
|
||||
slug: select
|
||||
product: database
|
||||
|
||||
- id: insert
|
||||
title: 'Insert data'
|
||||
slug: insert
|
||||
product: 'database'
|
||||
|
||||
- id: update
|
||||
title: 'Update data'
|
||||
slug: update
|
||||
product: 'database'
|
||||
|
||||
- id: upsert
|
||||
title: 'Upsert data'
|
||||
slug: upsert
|
||||
product: 'database'
|
||||
|
||||
- id: delete
|
||||
title: 'Delete data'
|
||||
slug: delete
|
||||
product: 'database'
|
||||
|
||||
- id: rpc
|
||||
title: 'Postgres functions'
|
||||
slug: rpc
|
||||
product: 'database'
|
||||
|
||||
- id: using-filters
|
||||
title: 'Using filters'
|
||||
slug: using-filters
|
||||
product: 'database'
|
||||
|
||||
- id: eq
|
||||
title: eq()
|
||||
slug: eq
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: neq
|
||||
title: neq()
|
||||
slug: neq
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: gt
|
||||
title: gt()
|
||||
slug: gt
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: gte
|
||||
title: gte()
|
||||
slug: gte
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: lt
|
||||
title: lt()
|
||||
slug: lt
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: lte
|
||||
title: lte()
|
||||
slug: lte
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: like
|
||||
title: like()
|
||||
slug: like
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: ilike
|
||||
title: ilike()
|
||||
slug: ilike
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: is
|
||||
title: is()
|
||||
slug: is
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: in
|
||||
title: in()
|
||||
slug: in
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: contains
|
||||
title: contains()
|
||||
slug: contains
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: contained-by
|
||||
title: containedBy()
|
||||
slug: containedby
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: range-gt
|
||||
title: rangeGt()
|
||||
slug: rangegt
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: range-gte
|
||||
title: rangeGte()
|
||||
slug: rangegte
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: range-lt
|
||||
title: rangeLt()
|
||||
slug: rangelt
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: range-lte
|
||||
title: rangeLte()
|
||||
slug: rangelte
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: range-adjacent
|
||||
title: rangeAdjacent()
|
||||
slug: rangeadjacent
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: overlaps
|
||||
title: overlaps()
|
||||
slug: overlaps
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: text-search
|
||||
title: textSearch()
|
||||
slug: textsearch
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: match
|
||||
title: match()
|
||||
slug: match
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: not
|
||||
title: not()
|
||||
slug: not
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: or
|
||||
title: or()
|
||||
slug: or
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: filter
|
||||
title: filter()
|
||||
slug: filter
|
||||
product: 'database'
|
||||
parent: 'Filters'
|
||||
|
||||
- id: using-modifiers
|
||||
title: Using Modifiers
|
||||
slug: using-modifiers
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: db-modifiers-select
|
||||
title: select()
|
||||
slug: db-modifiers-select
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: order
|
||||
title: order()
|
||||
slug: order
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: limit
|
||||
title: limit()
|
||||
slug: limit
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: range
|
||||
title: range()
|
||||
slug: range
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: abort-signal
|
||||
title: abortSignal()
|
||||
slug: db-abortsignal
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: single
|
||||
title: single()
|
||||
slug: single
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: maybe-single
|
||||
title: maybeSingle()
|
||||
slug: maybesingle
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: csv
|
||||
title: csv()
|
||||
slug: db-csv
|
||||
product: 'database'
|
||||
parent: 'Modifiers'
|
||||
|
||||
- id: sign-up
|
||||
title: Sign up
|
||||
slug: auth-signup
|
||||
product: 'auth'
|
||||
|
||||
- id: sign-in
|
||||
title: Sign in
|
||||
slug: auth-signin
|
||||
product: 'auth'
|
||||
|
||||
- id: set-auth
|
||||
title: setAuth()
|
||||
slug: auth-setauth
|
||||
product: 'auth'
|
||||
|
||||
- id: send-mobile-otp
|
||||
title: sendMobileOTP()
|
||||
slug: auth-api-sendmobileotp
|
||||
product: 'auth'
|
||||
|
||||
- id: sign-in-with-password
|
||||
title: Sign in with password
|
||||
slug: auth-signinwithpassword
|
||||
product: 'auth'
|
||||
|
||||
- id: sign-in-with-otp
|
||||
title: Sign in with OTP
|
||||
slug: auth-signinwithotp
|
||||
product: 'auth'
|
||||
|
||||
- id: sign-in-with-oauth
|
||||
title: Sign in with 0auth
|
||||
slug: auth-signinwithoauth
|
||||
product: 'auth'
|
||||
|
||||
- id: sign-out
|
||||
title: signOut()
|
||||
slug: auth-signout
|
||||
product: 'auth'
|
||||
|
||||
- id: verify-otp
|
||||
title: verifyOtp()
|
||||
slug: auth-verifyotp
|
||||
product: 'auth'
|
||||
|
||||
- id: get-session
|
||||
title: getSession()
|
||||
slug: auth-getsession
|
||||
product: 'auth'
|
||||
|
||||
- id: get-user
|
||||
title: getUser()
|
||||
slug: auth-getuser
|
||||
product: 'auth'
|
||||
|
||||
- id: update-user
|
||||
title: updateUser()
|
||||
slug: auth-updateuser
|
||||
product: 'auth'
|
||||
|
||||
- id: set-session
|
||||
title: setSession()
|
||||
slug: auth-setsession
|
||||
product: 'auth'
|
||||
|
||||
- id: refresh-session
|
||||
title: refreshSession()
|
||||
slug: auth-refreshsession
|
||||
product: 'auth'
|
||||
|
||||
- id: on-auth-state-change
|
||||
title: onAuthStateChange()
|
||||
slug: auth-onauthstatechange
|
||||
product: 'auth'
|
||||
|
||||
- id: admin-api
|
||||
title: Overview
|
||||
slug: supabase-auth-admin-api
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: get-user-by-id
|
||||
title: getUserById()
|
||||
slug: auth-admin-getuserbyid
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: list-users
|
||||
title: listUsers()
|
||||
slug: auth-admin-listusers
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: create-user
|
||||
title: createUser()
|
||||
slug: auth-admin-createuser
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: delete-user
|
||||
title: deleteUser()
|
||||
slug: auth-admin-deleteuser
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: invite-user-by-email
|
||||
title: inviteUserByEmail()
|
||||
slug: auth-admin-inviteuserbyemail
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: reset-password-for-email
|
||||
title: resetPasswordForEmail()
|
||||
slug: auth-admin-resetpasswordforemail
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: generate-link
|
||||
title: generateLink()
|
||||
slug: auth-admin-generatelink
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: update-user-by-id
|
||||
title: updateUserById()
|
||||
slug: auth-admin-updateuserbyid
|
||||
product: 'auth-admin'
|
||||
|
||||
- id: invoke
|
||||
title: invoke()
|
||||
slug: auth-admin-invoke
|
||||
product: 'functions'
|
||||
|
||||
- id: stream
|
||||
title: stream()
|
||||
slug: stream
|
||||
product: 'realtime'
|
||||
|
||||
- id: subscribe
|
||||
title: on().subscribe()
|
||||
slug: subscribe
|
||||
product: 'realtime'
|
||||
|
||||
- id: remove-subscription
|
||||
title: removeSubscription()
|
||||
slug: removesubscription
|
||||
product: 'realtime'
|
||||
|
||||
- id: remove-all-subscriptions
|
||||
title: removeallsubscriptions()
|
||||
slug: removeallsubscriptions
|
||||
product: 'realtime'
|
||||
|
||||
- id: get-subscriptions
|
||||
title: getSubscriptions()
|
||||
slug: getsubscriptions
|
||||
product: 'realtime'
|
||||
|
||||
- id: get-channels
|
||||
title: getChannels()
|
||||
slug: getchannels
|
||||
product: 'realtime'
|
||||
|
||||
- id: remove-channel
|
||||
title: removeChannel()
|
||||
slug: removechannel
|
||||
product: 'realtime'
|
||||
|
||||
- id: remove-all-channels
|
||||
title: removeAllChannels()
|
||||
slug: removeallchannels
|
||||
product: 'realtime'
|
||||
|
||||
- id: list-buckets
|
||||
title: listBuckets()
|
||||
slug: storage-listbuckets
|
||||
product: 'storage'
|
||||
|
||||
- id: get-bucket
|
||||
title: getBucket()
|
||||
slug: storage-getbucket
|
||||
product: 'storage'
|
||||
|
||||
- id: create-bucket
|
||||
title: createBucket()
|
||||
slug: storage-createbucket
|
||||
product: 'storage'
|
||||
|
||||
- id: empty-bucket
|
||||
title: emptyBucket()
|
||||
slug: storage-emptybucket
|
||||
product: 'storage'
|
||||
|
||||
- id: update-bucket
|
||||
title: updateBucket()
|
||||
slug: storage-updatebucket
|
||||
product: 'storage'
|
||||
|
||||
- id: delete-bucket
|
||||
title: deleteBucket()
|
||||
slug: storage-deletebucket
|
||||
product: 'storage'
|
||||
|
||||
- id: from-upload
|
||||
title: from.upload()
|
||||
slug: storage-from-upload
|
||||
product: 'storage'
|
||||
|
||||
- id: from-update
|
||||
title: from.update()
|
||||
slug: storage-from-update
|
||||
product: 'storage'
|
||||
|
||||
- id: from-move
|
||||
title: from.move()
|
||||
slug: storage-from-move
|
||||
product: 'storage'
|
||||
|
||||
- id: from-copy
|
||||
title: from.copy()
|
||||
slug: storage-from-copy
|
||||
product: 'storage'
|
||||
|
||||
- id: from-create-signed-url
|
||||
title: from.createSignedUrl()
|
||||
slug: storage-from-createsignedurl
|
||||
product: 'storage'
|
||||
|
||||
- id: from-create-signed-urls
|
||||
title: from.createSignedUrls()
|
||||
slug: storage-from-createsignedurls
|
||||
product: 'storage'
|
||||
|
||||
- id: from-get-public-url
|
||||
title: from.getPublicUrl()
|
||||
slug: storage-from-getpublicurl
|
||||
product: 'storage'
|
||||
|
||||
- id: from-download
|
||||
title: from.download()
|
||||
slug: storage-from-download
|
||||
product: 'storage'
|
||||
|
||||
- id: from-remove
|
||||
title: from.remove()
|
||||
slug: storage-from-remove
|
||||
product: 'storage'
|
||||
|
||||
- id: from-list
|
||||
title: from.list()
|
||||
slug: storage-from-list
|
||||
product: 'storage'
|
||||
@@ -79271,7 +79271,7 @@
|
||||
"kindString": "Call signature",
|
||||
"flags": {},
|
||||
"comment": {
|
||||
"shortText": "Downloads a file."
|
||||
"shortText": "Downloads a file from a private bucket. For public buckets, make a request to the URL returned from `getPublicUrl` instead."
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
|
||||
@@ -5251,7 +5251,7 @@
|
||||
"kindString": "Call signature",
|
||||
"flags": {},
|
||||
"comment": {
|
||||
"shortText": "Downloads a file."
|
||||
"shortText": "Downloads a file from a private bucket. For public buckets, make a request to the URL returned from `getPublicUrl` instead."
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
|
||||
@@ -5550,7 +5550,7 @@
|
||||
"kindString": "Call signature",
|
||||
"flags": {},
|
||||
"comment": {
|
||||
"shortText": "Downloads a file."
|
||||
"shortText": "Downloads a file from a private bucket. For public buckets, make a request to the URL returned from `getPublicUrl` instead."
|
||||
},
|
||||
"parameters": [
|
||||
{
|
||||
|
||||
@@ -40,7 +40,7 @@ parameters:
|
||||
tags: ['general'] # {string[]} These tags are useful for grouping parameters
|
||||
required: true
|
||||
description: |
|
||||
The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.
|
||||
The base URL of your website. Used as an allow-list for redirects and for constructing URLs used in emails.
|
||||
- id: 'GOTRUE_URI_ALLOW_LIST' # {string} A unique identifier for this param.
|
||||
title: 'auth.additional_redirect_urls' # {string} Any name.
|
||||
tags: ['general'] # {string[]} These tags are useful for grouping parameters
|
||||
|
||||
Reference in new issue
Block a user