+ Until now, trying to style an article, document, or blog post with Tailwind has been a tedious
+ task that required a keen eye for typography and a lot of complex custom CSS.
+
+```
+
+By default, Tailwind removes all of the default browser styling from paragraphs, headings, lists and more. This ends up being really useful for building application UIs because you spend less time undoing user-agent styles, but when you _really are_ just trying to style some content that came from a rich-text editor in a CMS or a markdown file, it can be surprising and unintuitive.
+
+We get lots of complaints about it actually, with people regularly asking us things like:
+
+> Why is Tailwind removing the default styles on my `h1` elements? How do I disable this? What do you mean I lose all the other base styles too?
+
+We hear you, but we're not convinced that simply disabling our base styles is what you really want. You don't want to have to remove annoying margins every time you use a `p` element in a piece of your dashboard UI. And I doubt you really want your blog posts to use the user-agent styles either — you want them to look _awesome_, not awful.
+
+The `@tailwindcss/typography` plugin is our attempt to give you what you _actually_ want, without any of the downsides of doing something stupid like disabling our base styles.
+
+It adds a new `prose` class that you can slap on any block of vanilla HTML content and turn it into a beautiful, well-formatted document:
+
+```html
+` elements aren't given a child `` tag unless there are multiple paragraphs in the list item. That means I have to worry about styling that annoying situation too.
+
+- **For example, here's another nested list.**
+
+ But this time with a second paragraph.
+
+ - These list items won't have `
` tags
+ - Because they are only one line each
+
+- **But in this second top-level list item, they will.**
+
+ This is especially annoying because of the spacing on this paragraph.
+
+ - As you can see here, because I've added a second line, this list item now has a `
` tag.
+
+ This is the second line I'm talking about by the way.
+
+ - Finally here's another list item so it's more like a list.
+
+- A closing list item, but with no nested list, because why not?
+
+And finally a sentence to close off this section.
+
+## There are other elements we need to style
+
+I almost forgot to mention links, like [this link to the Tailwind CSS website](https://tailwindcss.com). We almost made them blue but that's so yesterday, so we went with dark gray, feels edgier.
+
+| Wrestler | Origin | Finisher |
+| ----------------------- | ------------ | ------------------ |
+| Bret "The Hitman" Hart | Calgary, AB | Sharpshooter |
+| Stone Cold Steve Austin | Austin, TX | Stone Cold Stunner |
+| Randy Savage | Sarasota, FL | Elbow Drop |
+| Vader | Boulder, CO | Vader Bomb |
+| Razor Ramon | Chuluota, FL | Razor's Edge |
+
+We also need to make sure inline code looks good, like if I wanted to talk about `` elements or tell you the good news about `@tailwindcss/typography`.
+
+### Sometimes I even use `code` in headings
+
+Even though it's probably a bad idea, and historically I've had a hard time making it look good. This _"wrap the code blocks in backticks"_ trick works pretty well though really.
+
+Another thing I've done in the past is put a `code` tag inside of a link, like if I wanted to tell you about the [`tailwindcss/docs`](https://github.com/tailwindcss/docs) repository. I don't love that there is an underline below the backticks but it is absolutely not worth the madness it would require to avoid it.
+
+#### We haven't used an `h4` yet
+
+But now we have. Please don't use `h5` or `h6` in your content, Medium only supports two heading levels for a reason, you animals. I honestly considered using a `before` pseudo-element to scream at you if you use an `h5` or `h6`.
+
+We don't style them at all out of the box because `h4` elements are already so small that they are the same size as the body copy. What are we supposed to do with an `h5`, make it _smaller_ than the body copy? No thanks.
+
+### We still need to think about stacked headings though
+
+#### Let's make sure we don't screw that up with `h4` elements, either
+
+Phew, with any luck we have styled the headings above this text and they look pretty good.
+
+Let's add a closing paragraph here so things end with a decently sized block of text. I can't explain why I want things to end that way but I have to assume it's because I think things will look weird or unbalanced if there is a heading too close to the end of the document.
+
+What I've written here is probably long enough, but adding this final sentence can't hurt.
diff --git a/packages/ui/src/lib/Overlay/Overlay.module.css b/packages/ui/src/lib/Overlay/Overlay.module.css
new file mode 100644
index 00000000000..0800ca6d729
--- /dev/null
+++ b/packages/ui/src/lib/Overlay/Overlay.module.css
@@ -0,0 +1,75 @@
+/*
+ Overlay animations imported first as so placement styles are not affected.
+*/
+
+.sbui-overlay--enter {
+ @apply transition ease-out duration-100;
+}
+.sbui-overlay--enterFrom {
+ @apply transform opacity-0 scale-95;
+}
+.sbui-overlay--enterTo {
+ @apply transform opacity-100 scale-100;
+}
+.sbui-overlay--leave {
+ @apply transition ease-in duration-75;
+}
+.sbui-overlay--leaveFrom {
+ @apply transform opacity-100 scale-100;
+}
+.sbui-overlay--leaveTo {
+ @apply transform opacity-0 scale-95;
+}
+
+.sbui-overlay {
+ @apply relative inline-block;
+}
+
+.sbui-overlay-container {
+ @apply w-56;
+}
+
+.sbui-overlay-container--bottomRight {
+ @apply absolute origin-top-right right-0 mt-2;
+}
+
+.sbui-overlay-container--bottomLeft {
+ @apply absolute origin-top-left left-0 mt-2;
+}
+
+.sbui-overlay-container--bottomCenter {
+ margin-top: 0.5rem;
+ position: absolute;
+ transform-origin: center;
+ transform-origin: bottom center;
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+}
+
+.sbui-overlay-container--topRight {
+ @apply origin-bottom-right;
+ margin-top: -0.5rem;
+ position: absolute;
+ left: 0;
+ transform-origin: top left;
+ transform: translatey(-100%);
+}
+
+.sbui-overlay-container--topLeft {
+ @apply origin-bottom-left;
+ margin-top: -0.5rem;
+ position: absolute;
+ right: 0;
+ transform-origin: top left;
+ transform: translatey(-100%);
+}
+
+.sbui-overlay-container--topCenter {
+ @apply origin-bottom-left;
+ margin-top: -0.5rem;
+ position: absolute;
+ left: 50%;
+ transform-origin: top left;
+ transform: translatey(-100%) translateX(-50%);
+}
diff --git a/packages/ui/src/lib/Overlay/Overlay.tsx b/packages/ui/src/lib/Overlay/Overlay.tsx
new file mode 100644
index 00000000000..c20067b9494
--- /dev/null
+++ b/packages/ui/src/lib/Overlay/Overlay.tsx
@@ -0,0 +1,103 @@
+import React, { useEffect, useRef, useState } from 'react'
+//@ts-ignore
+import { useOnClickOutside } from './../../lib/Hooks'
+import { DropdownContext } from './OverlayContext'
+import { AnimationTailwindClasses } from '../../types'
+// @ts-ignore
+import OverlayStyles from './Overlay.module.css'
+
+import { Transition } from '@headlessui/react'
+
+interface Props {
+ visible?: boolean
+ overlay?: React.ReactNode
+ children?: React.ReactNode
+ placement?:
+ | 'bottomLeft'
+ | 'bottomRight'
+ | 'bottomCenter'
+ | 'topLeft'
+ | 'topRight'
+ | 'topCenter'
+ onVisibleChange?: any
+ disabled?: boolean
+ triggerElement?: any
+ overlayStyle?: React.CSSProperties
+ overlayClassName?: string
+ transition?: AnimationTailwindClasses
+}
+
+function Overlay({
+ visible,
+ overlay,
+ children,
+ placement = 'topCenter',
+ onVisibleChange,
+ disabled,
+ triggerElement,
+ overlayStyle,
+ overlayClassName,
+ transition,
+}: Props) {
+ const ref = useRef(null)
+ const [visibleState, setVisibleState] = useState(!!visible)
+
+ let classes = [
+ OverlayStyles['sbui-overlay-container'],
+ OverlayStyles[`sbui-overlay-container--${placement}`],
+ ]
+ if (overlayClassName) classes.push(overlayClassName)
+
+ function onToggle() {
+ setVisibleState(!visibleState)
+ if (onVisibleChange) onVisibleChange(visibleState)
+ }
+
+ // allow ovveride of Dropdown
+ useEffect(() => {
+ setVisibleState(!!visible)
+ }, [visible])
+
+ // detect clicks from outside
+ useOnClickOutside(ref, () => {
+ if (visibleState) {
+ setVisibleState(!visibleState)
+ }
+ })
+
+ const TriggerElement = () => {
+ return {triggerElement}
+ }
+
+ return (
+
+ {placement === 'bottomRight' ||
+ placement === 'bottomLeft' ||
+ placement === 'bottomCenter' ? (
+
+ ) : null}
+
+
+
+ {children}
+
+
+
+ {placement === 'topRight' ||
+ placement === 'topLeft' ||
+ placement === 'topCenter' ? (
+
+ ) : null}
+
+ )
+}
+
+export default Overlay
diff --git a/packages/ui/src/lib/Overlay/OverlayContext.tsx b/packages/ui/src/lib/Overlay/OverlayContext.tsx
new file mode 100644
index 00000000000..69ff55ae974
--- /dev/null
+++ b/packages/ui/src/lib/Overlay/OverlayContext.tsx
@@ -0,0 +1,7 @@
+import { createContext } from 'react'
+
+// Make sure the shape of the default value passed to
+// createContext matches the shape that the consumers expect!
+export const DropdownContext = createContext({
+ onClick: (e: any) => {},
+})
diff --git a/packages/ui/src/lib/Spinner/index.ts b/packages/ui/src/lib/Spinner/index.ts
new file mode 100644
index 00000000000..fb38c417455
--- /dev/null
+++ b/packages/ui/src/lib/Spinner/index.ts
@@ -0,0 +1,5 @@
+// export function() {
+// return (
+
+// )
+// }
diff --git a/packages/ui/src/lib/Spinner/styles.module.css b/packages/ui/src/lib/Spinner/styles.module.css
new file mode 100644
index 00000000000..0bf8d819238
--- /dev/null
+++ b/packages/ui/src/lib/Spinner/styles.module.css
@@ -0,0 +1,51 @@
+html {
+ background: #009688;
+}
+ html, body {
+ height: 100%;
+}
+ body {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+ .spin-loader {
+ border-radius: 80%;
+ display: block;
+ height: 50px;
+ width: 50px;
+ position: relative;
+ animation: spin 0.675s linear 0s infinite normal;
+ background: #26a69a;
+}
+ .spin-loader:before, .spin-loader:after {
+ content: "";
+ display: block;
+ position: absolute;
+}
+ .spin-loader:before {
+ border-radius: 0 90px 90px 0;
+ height: 50px;
+ width: 50%;
+ top: 0;
+ right: 0;
+ z-index: 1;
+ background: #005041;
+ background-image: linear-gradient(#26a69a, #005041);
+}
+ .spin-loader:after {
+ border-radius: 80%;
+ height: 40px;
+ width: 40px;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ z-index: 1;
+ background: #009688;
+}
+ @keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+}
+
\ No newline at end of file
diff --git a/packages/ui/src/lib/constants.ts b/packages/ui/src/lib/constants.ts
new file mode 100644
index 00000000000..2423d7bb86c
--- /dev/null
+++ b/packages/ui/src/lib/constants.ts
@@ -0,0 +1 @@
+export const HIDDEN_PLACEHOLDER = '**** **** **** ****'
diff --git a/packages/ui/src/lib/theme/customThemeExample.ts b/packages/ui/src/lib/theme/customThemeExample.ts
new file mode 100644
index 00000000000..284a945e2d8
--- /dev/null
+++ b/packages/ui/src/lib/theme/customThemeExample.ts
@@ -0,0 +1,41 @@
+const defaults = {
+ brandBackground: 'bg-black',
+ size: {
+ text: {
+ tiny: 'text-xs',
+ small: 'text-sm leading-4',
+ medium: 'text-sm',
+ large: 'text-base',
+ xlarge: 'text-base',
+ },
+ padding: {
+ tiny: 'px-2.5 py-1.5',
+ small: 'px-3 py-2',
+ medium: 'px-4 py-2',
+ large: 'px-4 py-2',
+ xlarge: 'px-6 py-3',
+ },
+ },
+}
+
+// simple settings
+
+// advanced settings
+
+// Compiled default used for data inputs and buttons
+
+const default__padding_and_text = {
+ tiny: `${defaults.size.text.tiny} ${defaults.size.padding.tiny}`,
+ small: `${defaults.size.text.small} ${defaults.size.padding.small}`,
+ medium: `${defaults.size.text.medium} ${defaults.size.padding.medium}`,
+ large: `${defaults.size.text.large} ${defaults.size.padding.large}`,
+ xlarge: `${defaults.size.text.xlarge} ${defaults.size.padding.xlarge}`,
+}
+
+export default {
+ button: {
+ type: {
+ primary: `${defaults.brandBackground} text-white hover:bg-brand-600 dark:hover:bg-brand-900`,
+ },
+ },
+}
diff --git a/packages/ui/src/lib/theme/defaultTheme.ts b/packages/ui/src/lib/theme/defaultTheme.ts
new file mode 100644
index 00000000000..49ea2ddfdd9
--- /dev/null
+++ b/packages/ui/src/lib/theme/defaultTheme.ts
@@ -0,0 +1,1605 @@
+/*
+ * Globlal Variables
+ *
+ */
+
+const defaults = {
+ bg: {
+ brand: {
+ primary: 'bg-purple-600',
+ secondary: 'bg-purple-200',
+ },
+ },
+ text: {
+ brand: 'text-purple-600',
+ body: 'text-scale-600 dark:text-scaleDark-200',
+ title: 'text-scale-700 dark:text-scaleDark-100',
+ },
+ border: {
+ brand: 'border-brand-600',
+ primary: 'border-scale-700',
+ secondary: 'border-scale-400',
+ alternative: 'border-scale-600 dark:border-scaleDark-200',
+ },
+ placeholder: 'placeholder-scale-800',
+ focus: `
+ outline-none
+ focus:ring-current focus:ring-2
+ `,
+ 'focus-visible': `
+ outline-none
+ transition-all
+ outline-0
+ focus-visible:outline-4
+ focus-visible:outline-offset-1
+ `,
+ size: {
+ // buttons, inputs, input labels use these sizes
+ text: {
+ tiny: 'text-xs',
+ small: 'text-sm leading-4',
+ medium: 'text-sm',
+ large: 'text-base',
+ xlarge: 'text-base',
+ },
+ // buttons, inputs, input labels use these sizes
+ padding: {
+ tiny: 'px-2.5 py-1',
+ small: 'px-3 py-2',
+ medium: 'px-4 py-2',
+ large: 'px-4 py-2',
+ xlarge: 'px-6 py-3',
+ },
+ },
+ overlay: {
+ base: `absolute inset-0 bg-scale-200 opacity-50`,
+ container: `fixed inset-0 transition-opacity`,
+ },
+}
+
+const utils = {
+ border: {
+ hover:
+ 'border-opacity-50 dark:border-opacity-50 hover:border-opacity-100 dark:hover:border-opacity-100',
+ fix: 'border-opacity-100 dark:border-opacity-100',
+ },
+}
+
+const default__padding_and_text = {
+ tiny: `${defaults.size.text.tiny} ${defaults.size.padding.tiny}`,
+ small: `${defaults.size.text.small} ${defaults.size.padding.small}`,
+ medium: `${defaults.size.text.medium} ${defaults.size.padding.medium}`,
+ large: `${defaults.size.text.large} ${defaults.size.padding.large}`,
+ xlarge: `${defaults.size.text.xlarge} ${defaults.size.padding.xlarge}`,
+}
+
+/*
+ * Animations
+ *
+ */
+
+const default___animations = {
+ accordion: {
+ enter: 'transition-max-height ease-in-out duration-700 overflow-hidden',
+ enterFrom: 'max-h-0',
+ enterTo: 'max-h-screen',
+ leave: 'transition-max-height ease-in-out duration-300 overflow-hidden',
+ leaveFrom: 'max-h-screen',
+ leaveTo: 'max-h-0',
+ },
+}
+
+/*
+ * Main tailwind utility classes output
+ *
+ */
+
+export default {
+ /*
+ * Accordion
+ *
+ */
+
+ accordion: {
+ variants: {
+ default: {
+ base: `
+ flex flex-col
+ space-y-3
+ `,
+ container: `
+ group
+ first:rounded-tl-md first:rounded-tr-md
+ last:rounded-bl-md last:rounded-br-md
+ overflow-hidden
+ `,
+ trigger: `
+ flex flex-row
+ gap-3
+ items-center
+ w-full
+ text-left
+ cursor-pointer
+
+ outline-none
+ focus-visible:ring-1
+ focus-visible:z-50
+ ring-scale-1100
+ `,
+ content: `
+ data-open:animate-slide-down
+ data-closed:animate-slide-up
+ `,
+ panel: `
+ py-3
+ `,
+ },
+ bordered: {
+ base: `
+ flex flex-col
+ -space-y-px
+ `,
+ container: `
+ group
+ border
+ border-scale-700
+
+ first:rounded-tl-md first:rounded-tr-md
+ last:rounded-bl-md last:rounded-br-md
+ `,
+ trigger: `
+ flex flex-row
+ items-center
+ px-6 py-4
+ w-full
+ text-left
+ cursor-pointer
+
+ font-medium
+ text-base
+ bg-transparent
+
+ outline-none
+ focus-visible:ring-1
+ focus-visible:z-50
+ ring-scale-1100
+
+ transition-colors
+ hover:bg-scale-200
+
+ overflow-hidden
+
+ group-first:rounded-tl-md group-first:rounded-tr-md
+ group-last:rounded-bl-md group-last:rounded-br-md
+ `,
+ content: `
+ data-open:animate-slide-down
+ data-closed:animate-slide-up
+ `,
+ panel: `
+ px-6 py-3
+ border-t border-scale-700
+ bg-scale-200
+ `,
+ },
+ },
+ justified: `justify-between`,
+ chevron: {
+ base: `
+ text-scale-900
+ rotate-0 group-state-open:rotate-180
+ duration-200
+ `,
+ align: {
+ left: 'order-first',
+ right: 'order-last',
+ },
+ },
+ animate: {
+ ...default___animations.accordion,
+ },
+ },
+
+ /*
+ * Badge
+ *
+ */
+
+ badge: {
+ base: 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-opacity-10',
+ size: {
+ large: 'px-3 py-0.5 rounded-full text-sm',
+ },
+ dot: '-ml-0.5 mr-1.5 h-2 w-2 rounded-full',
+ color: {
+ brand: 'bg-brand-200 text-brand-1100 border border-brand-700',
+ scale: 'bg-scale-200 text-scale-1100 border border-scale-700',
+ tomato: `bg-tomato-200 text-tomato-1100 border border-tomato-700`,
+ red: `bg-red-200 text-red-1100 border border-red-700`,
+ crimson: `bg-crimson-200 text-crimson-1100 border border-crimson-700`,
+ pink: `bg-pink-200 text-pink-1100 border border-pink-700`,
+ plum: `bg-plum-200 text-plum-1100 border border-plum-700`,
+ purple: `bg-purple-200 text-purple-1100 border border-purple-700`,
+ violet: `bg-violet-200 text-violet-1100 border border-violet-700`,
+ indigo: `bg-indigo-200 text-indigo-1100 border border-indigo-700`,
+ blue: `bg-blue-200 text-blue-1100 border border-blue-700`,
+ cyan: `bg-cyan-200 text-cyan-1100 border border-cyan-700`,
+ teal: `bg-teal-200 text-teal-1100 border border-teal-700`,
+ green: `bg-green-200 text-green-1100 border border-green-700`,
+ grass: `bg-grass-200 text-grass-1100 border border-grass-700`,
+ brown: `bg-brown-200 text-brown-1100 border border-brown-700`,
+ orange: `bg-orange-200 text-orange-1100 border border-orange-700`,
+ sky: `bg-sky-200 text-sky-1100 border border-sky-700`,
+ mint: `bg-mint-200 text-mint-1100 border border-mint-700`,
+ lime: `bg-lime-200 text-lime-1100 border border-lime-700`,
+ yellow: `bg-yellow-200 text-yellow-1100 border border-yellow-700`,
+ amber: `bg-amber-200 text-amber-1100 border border-amber-700`,
+ gold: `bg-gold-200 text-gold-1100 border border-gold-700`,
+ bronze: `bg-bronze-200 text-bronze-1100 border border-bronze-700`,
+ gray: `bg-gray-200 text-gray-1100 border border-gray-700`,
+ mauve: `bg-mauve-200 text-mauve-1100 border border-mauve-700`,
+ slate: `bg-slate-200 text-slate-1100 border border-slate-700`,
+ sage: `bg-sage-200 text-sage-1100 border border-sage-700`,
+ olive: `bg-olive-200 text-olive-1100 border border-olive-700`,
+ sand: `bg-sand-200 text-sand-1100 border border-sand-700`,
+ },
+ },
+
+ /*
+ * Alert
+ *
+ */
+
+ alert: {
+ base: `
+ relative rounded border py-4 px-6
+ flex space-x-4 items-start
+ `,
+ header: 'block text-sm font-normal mb-1',
+ description: `text-xs`,
+ variant: {
+ danger: {
+ base: `bg-red-200 dark:bg-red-100 btext-red-1200 border-red-700`,
+ icon: `text-red-900`,
+ header: `text-red-1200`,
+ description: `text-red-1100`,
+ },
+ warning: {
+ base: `bg-amber-200 dark:bg-amber-100 border-amber-700`,
+ icon: `text-amber-900`,
+ header: `text-amber-1200`,
+ description: `text-amber-1100`,
+ },
+ info: {
+ base: `bg-blue-200 dark:bg-blue-100 border-blue-700`,
+ icon: `text-blue-900`,
+ header: `text-blue-1200`,
+ description: `text-blue-1100`,
+ },
+ success: {
+ base: `bg-brand-300 dark:bg-brand-100 border-brand-700`,
+ icon: `text-brand-900`,
+ header: `text-brand-1200`,
+ description: `text-brand-1100`,
+ },
+ neutral: {
+ base: `bg-scale-300 dark:bg-scale-300 border-scale-500`,
+ icon: `text-scale-900`,
+ header: `text-scale-1200`,
+ description: `text-scale-1100`,
+ },
+ },
+ close: `
+ absolute
+ right-6 top-4
+ p-0 m-0
+ text-scale-900
+ cursor-pointer transition ease-in-out
+ bg-transparent border-transparent focus:outline-none
+ opacity-50 hover:opacity-100`,
+ },
+
+ /*
+ * Card
+ */
+
+ card: {
+ base: `
+ bg-white dark:bg-scaleDark-700
+
+ border
+ ${defaults.border.primary}
+
+ flex flex-col
+ rounded-md shadow-lg overflow-hidden relative
+ `,
+ hoverable: 'transition hover:-translate-y-1 hover:shadow-2xl',
+ head: `px-8 py-6 flex justify-between
+ border-b
+ ${defaults.border.primary} `,
+ content: 'p-8',
+ },
+
+ /*
+ * Tabs
+ */
+
+ tabs: {
+ base: `w-full justify-between space-y-4`,
+ underlined: {
+ list: `
+ flex items-center border-b
+ ${defaults.border.secondary}
+ `,
+ base: `
+ relative
+ cursor-pointer
+ text-scale-900
+ flex
+ items-center
+ space-x-2
+ text-center
+ transition
+ focus:outline-none
+ focus-visible:ring
+ focus-visible:ring-scale-700
+ focus-visible:border-scale-900
+ `,
+ inactive: `
+ hover:text-scale-1200
+ `,
+ active: `
+ text-scale-1200
+ border-b-2 border-scale-1200
+ `,
+ },
+ pills: {
+ list: 'flex space-x-1',
+ base: `
+ relative
+ cursor-pointer
+ flex
+ items-center
+ space-x-2
+ text-center
+ transition
+ shadow-sm
+ rounded
+ focus:outline-none
+ focus-visible:ring
+ focus-visible:ring-scale-700
+ focus-visible:border-scale-900
+ `,
+ inactive: `
+ bg-scale-200
+ border border-scale-700 hover:border-scale-900
+ text-scale-900 hover:text-scale-1200
+ `,
+ active: `
+ bg-scale-1200
+ text-scale-200
+ border-scale-1200
+ `,
+ },
+ block: 'w-full flex items-center justify-center',
+ size: {
+ ...default__padding_and_text,
+ },
+ scrollable: `overflow-auto whitespace-nowrap no-scrollbar mask-fadeout-right`,
+ content: `focus:outline-none focus:ring text-scale-900`,
+ },
+
+ /*
+ * Button
+ */
+
+ // button: {
+ // base : 'border border-4'
+ // }
+
+ button: {
+ base: `
+ relative
+ cursor-pointer
+ inline-flex items-center space-x-2
+ text-center
+ font-regular
+ transition ease-out duration-200
+ rounded
+ ${defaults['focus-visible']}
+
+ `,
+ label: `truncate`,
+ container: 'inline-flex font-medium',
+ type: {
+ primary: `
+ bg-brand-fixed-800 hover:bg-brand-fixed-900
+ text-lo-contrast
+ bordershadow-brand-fixed-800 hover:bordershadow-brand-fixed-1000
+ focus-visible:outline-brand-600
+ `,
+ secondary: `
+ bg-scale-1200
+ text-scale-100 hover:text-scale-800
+ focus-visible:text-scale-600
+
+ bordershadow-scale-1100 hover:bordershadow-scale-900
+
+ focus-visible:outline-scale-700
+ `,
+ default: `
+ text-scale-1200
+ bg-scale-100 hover:bg-scale-300
+ bordershadow-scale-600 hover:bordershadow-scale-700
+ dark:bordershadow-scale-700 hover:dark:bordershadow-scale-800
+ dark:bg-scale-500 dark:hover:bg-scale-600
+ focus-visible:outline-brand-600
+
+ `,
+ alternative: `
+ text-brand-1100
+ bg-brand-200 hover:bg-brand-400
+ bordershadow-brand-600 hover:bordershadow-brand-800
+ dark:bordershadow-brand-700 hover:dark:bordershadow-brand-800
+ focus-visible:border-brand-800
+ focus-visible:outline-brand-600
+ `,
+ outline: `
+ text-scale-1200
+ bg-transparent
+ bordershadow-scale-600 hover:bordershadow-scale-700
+ dark:bordershadow-scale-800 hover:dark:bordershadow-scale-900
+ focus-visible:outline-scale-700
+ `,
+ dashed: `
+ text-scale-1200
+ border
+ border-dashed
+ border-scale-700 hover:border-scale-900
+ bg-transparent
+ focus-visible:outline-scale-700
+ `,
+ link: `
+ text-brand-1100
+ border
+ border-transparent
+ hover:bg-brand-400
+ border-opacity-0
+ bg-opacity-0 dark:bg-opacity-0
+ shadow-none
+ focus-visible:outline-scale-700
+ `,
+ text: `
+ text-scale-1200
+ hover:bg-scale-500
+ shadow-none
+ focus-visible:outline-scale-700
+ `,
+ danger: `
+ text-red-1100
+ bg-red-200
+ bordershadow-red-700 hover:bordershadow-red-900
+ hover:bg-red-900
+ hover:text-lo-contrast
+ focus-visible:outline-red-700
+ `,
+ warning: `
+ text-amber-1100
+ bg-amber-200
+ bordershadow-amber-700 hover:bordershadow-amber-900
+ hover:bg-amber-900
+ hover:text-hi-contrast
+ focus-visible:outline-amber-700
+ `,
+ },
+ block: 'w-full flex items-center justify-center',
+ shadow: 'shadow-sm',
+ size: {
+ ...default__padding_and_text,
+ },
+ loading: 'animate-spin',
+ // disabled prefix is disabled (lol..) by default in tailwind
+ // so we apply normal utilities instead, however you can add disabled prefixes if you enabled them in tailwind config.
+ // see more: https://tailwindcss.com/docs/hover-focus-and-other-states#disabled
+ disabled: 'opacity-50 cursor-not-allowed pointer-events-none',
+ },
+
+ /*
+ * Input
+ */
+
+ input: {
+ base: `
+ block
+ box-border
+ w-full
+ rounded-md
+ shadow-sm
+ transition-all
+ text-scale-1200
+ border
+ focus:shadow-md
+ ${defaults.focus}
+ focus:border-scale-900
+ focus:ring-scale-400
+ ${defaults.placeholder}
+ `,
+ variants: {
+ standard: `
+ bg-scaleA-200
+ border border-scale-700
+ `,
+ error: `
+ bg-red-100
+ border border-red-700
+ focus:ring-red-500
+ placeholder:text-red-600
+ `,
+ },
+ container: 'relative',
+ with_icon: 'pl-10',
+ size: {
+ ...default__padding_and_text,
+ },
+ disabled: 'opacity-50',
+ actions_container:
+ 'absolute inset-y-0 right-0 pl-3 pr-1 flex space-x-1 items-center',
+ textarea_actions_container:
+ 'absolute inset-y-1.5 right-0 pl-3 pr-1 flex space-x-1 items-start',
+ textarea_actions_container_items: 'flex items-center',
+ },
+
+ /*
+ * Select
+ */
+
+ select: {
+ base: `
+ block
+ box-border
+ w-full
+ rounded-md
+ shadow-sm
+ transition-all
+ text-scale-1200
+ border
+ focus:shadow-md
+ ${defaults.focus}
+ focus:border-scale-900
+ focus:ring-scale-400
+ ${defaults.placeholder}
+
+ appearance-none
+ bg-none
+ `,
+ variants: {
+ standard: `
+ bg-scaleA-200
+ border border-scale-700
+ `,
+ error: `
+ bg-red-100
+ border border-red-700
+ focus:ring-red-500
+ placeholder:text-red-600
+ `,
+ },
+ container: 'relative',
+ with_icon: 'pl-10',
+ size: {
+ ...default__padding_and_text,
+ },
+ disabled: 'opacity-50',
+ actions_container:
+ 'absolute inset-y-0 right-0 pl-3 pr-1 mr-5 flex items-center',
+ chevron_container:
+ 'absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none',
+ chevron: 'h-5 w-5 text-scale-600',
+ },
+
+ /*
+ * Input Number
+ */
+
+ inputNumber: {
+ base: `
+ block
+ box-border
+ w-full
+ rounded-md
+ shadow-sm
+ transition-all
+ text-scale-1200
+ border
+ focus:shadow-md
+ ${defaults.focus}
+ focus:border-scale-900
+ focus:ring-scale-400
+ ${defaults.placeholder}
+
+ appearance-none
+ bg-none
+ `,
+ variants: {
+ standard: `
+ bg-scaleA-200
+ border border-scale-700
+ `,
+ error: `
+ bg-red-100
+ border border-red-700
+ focus:ring-red-500
+ placeholder:text-red-600
+ `,
+ },
+ disabled: 'opacity-50',
+ container: 'relative',
+ with_icon: 'pl-10',
+ size: {
+ ...default__padding_and_text,
+ },
+ actions_container:
+ 'absolute inset-y-0 right-0 pl-3 pr-1 flex space-x-1 items-center',
+ },
+
+ /*
+ * Checkbox
+ *
+ *
+ * This Checkbox requires a plugin in your config:
+
+ ```
+ // tailwind.config.js
+ module.exports = {
+ // ...
+ plugins: [
+ // ...
+ require('@tailwindcss/forms'),
+ ],
+ }
+ ```
+ *
+ *
+ */
+
+ checkbox: {
+ base: `
+ bg-transparent
+ ${defaults.focus}
+ focus:ring-scale-400
+ text-brand-900
+ border-scale-700
+ shadow-sm
+ rounded
+ cursor-pointer
+ `,
+ container: `flex cursor-pointer leading-none`,
+ size: {
+ tiny: `h-3 w-3 mt-1 mr-3`,
+ small: `h-3.5 w-3.5 mt-0.5 mr-3.5`,
+ medium: `h-4 w-4 mt-0.5 mr-3.5`,
+ large: `h-5 w-5 mt-0.5 mr-4`,
+ xlarge: `h-5 w-5 mt-0.5 mr-4`,
+ },
+ disabled: 'opacity-50',
+ label: {
+ base: `text-scale-1100 cursor-pointer`,
+ ...defaults.size.text,
+ },
+ label_before: {
+ base: 'text-scale-500',
+ ...defaults.size.text,
+ },
+ label_after: {
+ base: 'text-scale-500',
+ ...defaults.size.text,
+ },
+ description: {
+ base: `text-scale-900`,
+ ...defaults.size.text,
+ },
+ group: `space-y-3`,
+ },
+
+ /*
+ * Radio
+ *
+ *
+ * This Radio requires a plugin in your config:
+
+ ```
+ // tailwind.config.js
+ module.exports = {
+ // ...
+ plugins: [
+ // ...
+ require('@tailwindcss/forms'),
+ ],
+ }
+ ```
+ *
+ *
+ */
+
+ radio: {
+ base: `
+ absolute
+ ${defaults.focus}
+ focus:ring-brand-400
+ border-scale-700
+
+ text-brand-900
+ shadow-sm
+ cursor-pointer
+ peer
+
+ bg-scale-300
+ `,
+ hidden: `absolute opacity-0`,
+ size: {
+ tiny: `h-3 w-3`,
+ small: `h-3.5 w-3.5`,
+ medium: `h-4 w-4`,
+ large: `h-5 w-5`,
+ xlarge: `h-5 w-5`,
+ },
+ variants: {
+ cards: {
+ container: {
+ base: `relative cursor-pointer flex`,
+ align: {
+ vertical: 'flex flex-col space-y-1',
+ horizontal: 'flex flex-row space-x-2',
+ },
+ },
+ group: `-space-y-px shadow-sm`,
+ base: `
+ transition
+ border
+ first:rounded-tl-md first:rounded-tr-md
+ last:rounded-bl-md last:rounded-br-md
+ `,
+ size: {
+ tiny: `px-5 py-3`,
+ small: `px-6 py-4`,
+ medium: `px-6 py-4`,
+ large: `px-8 p-4`,
+ xlarge: `px-8 p-4`,
+ },
+ inactive: `
+ bg-scale-100 dark:bg-scale-400
+ border-scale-500 dark:border-scale-500
+ hover:border-scale-700 hover:dark:border-scale-700
+ hover:bg-scale-200 dark:hover:bg-scale-500
+ `,
+ active: `
+ bg-scale-300 dark:bg-scale-600 z-10
+ border-scale-900 dark:border-scale-900
+ border-1
+ `,
+ radio_offset: 'left-4',
+ },
+
+ 'stacked-cards': {
+ container: {
+ base: `relative cursor-pointer flex items-center justify-between`,
+ align: {
+ vertical: 'flex flex-col space-y-1',
+ horizontal: 'flex flex-row space-x-2',
+ },
+ },
+ group: `space-y-3`,
+ base: `
+ transition
+ rounded-md
+ border
+ shadow-sm
+ `,
+ size: {
+ tiny: `px-5 py-3`,
+ small: `px-6 py-4`,
+ medium: `px-6 py-4`,
+ large: `px-8 p-4`,
+ xlarge: `px-8 p-4`,
+ },
+ inactive: `
+ bg-scale-100 dark:bg-scale-400
+ border-scale-500 dark:border-scale-500
+ hover:border-scale-700 hover:dark:border-scale-700
+ hover:bg-scale-200 dark:hover:bg-scale-500
+ `,
+ active: `
+ bg-scale-300 dark:bg-scale-600 z-10
+ border-scale-900 dark:border-scale-900
+ border-1
+ `,
+ radio_offset: 'left-4',
+ },
+
+ 'small-cards': {
+ container: {
+ base: `relative cursor-pointer flex`,
+ align: {
+ vertical: 'flex flex-col space-y-1 items-center justify-center',
+ horizontal: 'flex flex-row space-x-2',
+ },
+ },
+ group: `flex flex-row gap-3`,
+ base: `
+ transition
+ border
+ rounded-lg
+ grow
+ items-center
+ flex-wrap
+ justify-center
+ shadow-sm
+ `,
+ size: {
+ tiny: `px-5 py-3`,
+ small: `px-6 py-4`,
+ medium: `px-6 py-4`,
+ large: `px-8 p-4`,
+ xlarge: `px-8 p-4`,
+ },
+ inactive: `
+ bg-scale-100 dark:bg-scale-400
+ border-scale-500 dark:border-scale-500
+ hover:border-scale-700 hover:dark:border-scale-700
+ hover:bg-scale-200 dark:hover:bg-scale-500
+ `,
+ active: `
+ bg-scale-300 dark:bg-scale-500 z-10
+ border-scale-900 dark:border-scale-900 border-1
+ `,
+ radio_offset: 'left-4',
+ },
+
+ 'large-cards': {
+ container: {
+ base: `relative cursor-pointer flex`,
+ align: {
+ vertical: 'flex flex-col space-y-1',
+ horizontal: 'flex flex-row space-x-2',
+ },
+ },
+ group: `flex flex-row gap-3`,
+ base: `
+ transition
+ border border-scale-700 hover:border-scale-900
+ shadow-sm
+ rounded-lg
+ grow
+ `,
+ size: {
+ tiny: `px-5 py-3`,
+ small: `px-6 py-4`,
+ medium: `px-6 py-4`,
+ large: `px-8 p-4`,
+ xlarge: `px-8 p-4`,
+ },
+ inactive: `
+ bg-scale-100 dark:bg-scale-400
+ border-scale-500 dark:border-scale-500
+ hover:border-scale-700 hover:dark:border-scale-700
+ hover:bg-scale-200 dark:hover:bg-scale-500
+ `,
+ active: `
+ bg-scale-300 dark:bg-scale-600 z-10
+ border-scale-900 dark:border-scale-900
+ border-1
+ `,
+ radio_offset: 'left-4',
+ },
+
+ list: {
+ container: {
+ base: `relative cursor-pointer flex`,
+ size: {
+ tiny: `pl-6`,
+ small: `pl-6`,
+ medium: `pl-7`,
+ large: `pl-10`,
+ xlarge: `pl-10`,
+ },
+ align: {
+ vertical: 'flex flex-col space-y-1',
+ horizontal: 'flex flex-row space-x-2',
+ },
+ },
+ group: `space-y-4`,
+ base: ``,
+ size: {
+ tiny: `0`,
+ small: `0`,
+ medium: `0`,
+ large: `0`,
+ xlarge: `0`,
+ },
+ active: ``,
+ radio_offset: 'left-0',
+ },
+ },
+ label: {
+ base: `text-scale-1100 cursor-pointer`,
+ ...defaults.size.text,
+ },
+ label_before: {
+ base: 'text-scale-500',
+ ...defaults.size.text,
+ },
+ label_after: {
+ base: 'text-scale-500',
+ ...defaults.size.text,
+ },
+ description: {
+ base: `text-scale-900`,
+ ...defaults.size.text,
+ },
+ optionalLabel: {
+ base: `text-scale-900`,
+ ...defaults.size.text,
+ },
+ disabled: `opacity-50 cursor-auto border-dashed`,
+ },
+
+ sidepanel: {
+ base: `
+ bg-scale-100 dark:bg-scale-300
+ flex flex-col
+ fixed
+ inset-y-0
+ max-w-full
+ h-screen
+ border-l border-overlay-border
+ shadow-xl
+ `,
+ header: `
+ space-y-1 py-4 px-4 bg-overlay-bg sm:px-6
+ border-b border-overlay-border
+ `,
+ contents: `
+ relative
+ flex-1
+ overflow-y-auto
+ `,
+ content: `
+ px-4 sm:px-6
+ `,
+ footer: `
+ flex justify-end gap-2
+ p-4 bg-overlay-bg
+ border-t border-overlay-border
+ `,
+ size: {
+ medium: `w-screen max-w-md h-full`,
+ large: `w-screen max-w-2xl h-full`,
+ },
+ align: {
+ left: `
+ left-0
+ data-open:animate-panel-slide-left-out
+ data-closed:animate-panel-slide-left-in
+ `,
+ right: `
+ right-0
+ data-open:animate-panel-slide-right-out
+ data-closed:animate-panel-slide-right-in
+ `,
+ },
+ seperator: `
+ w-full
+ h-px
+ my-2
+ bg-scale-300 dark:bg-scale-500
+ `,
+ overlay: `
+ fixed
+ bg-scale-300
+ dark:bg-scale-100
+ h-full w-full
+ left-0
+ top-0
+ opacity-75
+ data-closed:animate-fade-out-overlay-bg
+ data-open:animate-fade-in-overlay-bg
+ `,
+ // this is to reset the button
+ // it is advised not to change this
+ trigger: `
+ border-none bg-transparent p-0 focus:ring-0
+ `,
+ },
+
+ /*
+ * Toggle
+ */
+
+ toggle: {
+ base: `
+ p-0 relative
+ inline-flex flex-shrink-0
+ border-2 border-transparent
+ rounded-full
+ cursor-pointer
+ transition-colors ease-in-out duration-200
+ ${defaults.focus}
+ focus:ring-scale-400
+ bg-scale-500
+
+ hover:bg-scale-700
+ `,
+ active: `
+ bg-brand-900
+ hover:bg-brand-900
+ `,
+ handle_container: {
+ tiny: 'h-4 w-7',
+ small: 'h-6 w-11',
+ medium: 'h-6 w-11',
+ large: 'h-7 w-12',
+ xlarge: 'h-7 w-12',
+ },
+ handle: {
+ base: `
+ inline-block h-5 w-5
+ rounded-full
+ bg-scale-100
+ dark:bg-scale-900
+ shadow ring-0
+ transition
+ ease-in-out duration-200
+ `,
+ tiny: 'h-3 w-3',
+ small: 'h-5 w-5',
+ medium: 'h-5 w-5',
+ large: 'h-6 w-6',
+ xlarge: 'h-6 w-6',
+ },
+ handle_active: {
+ tiny: ' translate-x-3 dark:bg-white',
+ small: 'translate-x-5 dark:bg-white',
+ medium: 'translate-x-5 dark:bg-white',
+ large: 'translate-x-5 dark:bg-white',
+ xlarge: 'translate-x-5 dark:bg-white',
+ },
+ disabled: 'opacity-75 cursor-not-allowed',
+ },
+
+ /*
+ * Form Layout
+ */
+
+ form_layout: {
+ container: 'grid gap-2',
+
+ flex: {
+ left: {
+ base: 'flex flex-row gap-6',
+ content: ``,
+ labels: 'order-2',
+ data_input: 'order-1',
+ },
+ right: {
+ base: 'flex flex-row gap-6 justify-between',
+ content: `order-last`,
+ labels: '',
+ data_input: 'text-right',
+ },
+ },
+
+ responsive: 'md:grid md:grid-cols-12 md:gap-x-4',
+ non_responsive: 'grid grid-cols-12 gap-2',
+
+ labels_horizontal_layout:
+ 'flex flex-row space-x-2 justify-between col-span-12',
+ labels_vertical_layout: 'flex flex-col space-y-2 col-span-4',
+
+ data_input_horizontal_layout: 'col-span-12',
+
+ non_box_data_input_spacing_vertical: 'my-3',
+ non_box_data_input_spacing_horizontal: 'my-3 md:mt-0 mb-3',
+
+ data_input_vertical_layout: 'col-span-8',
+
+ data_input_vertical_layout__align_right: 'text-right',
+
+ label: {
+ base: 'block text-scale-1100',
+ size: {
+ ...defaults.size.text,
+ },
+ },
+ label_optional: {
+ base: 'text-scale-900',
+ size: {
+ ...defaults.size.text,
+ },
+ },
+ description: {
+ base: 'mt-2 text-scale-900',
+ size: {
+ ...defaults.size.text,
+ },
+ },
+ label_before: {
+ base: 'text-scale-500 ',
+ size: {
+ ...defaults.size.text,
+ },
+ },
+ label_after: {
+ base: 'text-scale-500',
+ size: {
+ ...defaults.size.text,
+ },
+ },
+ error: {
+ base: `
+ text-red-900
+ transition-all
+ data-show:mt-2
+ data-show:animate-slide-down-normal
+ data-hide:animate-slide-up-normal
+ `,
+ size: {
+ ...defaults.size.text,
+ },
+ },
+ size: {
+ tiny: 'text-xs',
+ small: 'text-sm leading-4',
+ medium: 'text-sm',
+ large: 'text-base',
+ xlarge: 'text-base',
+ },
+ },
+
+ /*
+ * Dropdown
+ */
+
+ dropdown: {
+ // root:
+ trigger: `
+ flex
+
+ border-none
+ rounded
+ bg-transparent p-0
+ outline-none
+ outline-offset-1
+ transition-all
+ focus:outline-4
+ focus:outline-scale-600
+ `,
+ item_nested: `
+ border-none
+ focus:outline-none
+ focus:bg-scale-300 dark:focus:bg-scale-500
+ focus:text-scale-1200
+ data-open:bg-scale-300 dark:data-open:bg-scale-500
+ data-open:text-scale-1200
+ `,
+ content: `
+ bg-scale-100 dark:bg-scale-300
+ border border-scale-300 dark:border-scale-500
+ rounded
+ shadow-lg
+ py-1.5
+
+ origin-dropdown
+ data-open:animate-dropdown-content-show
+ data-closed:animate-dropdown-content-hide
+ min-w-fit
+ `,
+ size: {
+ tiny: `w-40`,
+ small: `w-48`,
+ medium: `w-64`,
+ large: `w-80`,
+ xlarge: `w-96`,
+ content: `w-auto`,
+ },
+ arrow: `
+ fill-current
+ border-0 border-t
+ `,
+ item: `
+ group
+ relative
+ text-xs
+ text-scale-1100
+ px-4 py-1.5 flex items-center space-x-2
+ cursor-pointer
+ focus:bg-scale-300 dark:focus:bg-scale-500
+ focus:text-scale-1200
+ border-none
+ focus:outline-none
+ `,
+ label: `
+ text-scale-900
+ px-4 flex items-center space-x-2 py-1.5
+ text-xs
+ `,
+ seperator: `
+ w-full
+ h-px
+ my-2
+ bg-scale-300 dark:bg-scale-500
+ `,
+ misc: `
+ px-4 py-1.5
+ `,
+ check: `
+ absolute left-3
+ flex items-center
+ data-checked:text-scale-1200
+ `,
+ input: `
+ flex items-center space-x-0 pl-8 pr-4
+ `,
+ right_slot: `
+ text-scale-900
+ group-focus:text-scale-1000
+ absolute
+ -translate-y-1/2
+ right-2
+ top-1/2
+ `,
+ },
+
+ /*
+ * Popover
+ */
+
+ popover: {
+ trigger: `
+ flex
+ border-none
+
+ rounded
+ bg-transparent
+ p-0
+ outline-none
+ outline-offset-1
+ transition-all
+ focus:outline-4
+ focus:outline-scale-600
+
+ `,
+ content: `
+ bg-scale-100 dark:bg-scale-300
+ border border-scale-300 dark:border-scale-500
+ rounded
+ shadow-lg
+ data-open:animate-dropdown-content-show
+ data-closed:animate-dropdown-content-hide
+ min-w-fit
+
+ origin-popover
+ data-open:animate-dropdown-content-show
+ data-closed:animate-dropdown-content-hide
+ `,
+ size: {
+ tiny: `w-40`,
+ small: `w-48`,
+ medium: `w-64`,
+ large: `w-80`,
+ xlarge: `w-96`,
+ content: `w-auto`,
+ },
+ header: `
+ bg-scale-200 dark:bg-scale-400
+ space-y-1 py-1.5 px-3
+ border-b border-scale-300 dark:border-scale-500
+ `,
+ footer: `
+ bg-scale-200 dark:bg-scale-400
+ py-1.5 px-3
+ border-t border-scale-300 dark:border-scale-500
+ `,
+ close: `
+ transition
+ text-scale-900 hover:text-scale-1100
+ `,
+ seperator: `
+ w-full
+ h-px
+ my-2
+ bg-scale-300 dark:bg-scale-500
+ `,
+ },
+
+ /*
+ * Menu
+ */
+
+ menu: {
+ item: {
+ base: `
+ cursor-pointer
+ flex space-x-3 items-center
+ outline-none
+ focus-visible:ring-1 ring-scale-1200 focus-visible:z-10
+ group
+ `,
+ content: {
+ base: `transition truncate text-sm w-full`,
+ normal: `text-scale-1100 group-hover:text-scale-1200`,
+ active: `text-scale-1200 font-semibold`,
+ },
+ icon: {
+ base: `transition truncate text-sm`,
+ normal: `text-scale-900 group-hover:text-scale-1100`,
+ active: `text-scale-1200`,
+ },
+ variants: {
+ text: {
+ base: `
+ py-1
+ `,
+ normal: `
+ font-normal
+ border-scale-500
+ group-hover:border-scale-900`,
+ active: `
+ font-semibold
+ text-scale-900
+ z-10
+ `,
+ },
+ border: {
+ base: `
+ px-4 py-1
+ `,
+ normal: `
+ border-l
+ font-normal
+ border-scale-500
+ group-hover:border-scale-900`,
+ active: `
+ font-semibold
+
+ text-scale-900
+ z-10
+
+ border-l
+ border-brand-900
+ group-hover:border-brand-900
+ `,
+ rounded: `rounded-md`,
+ },
+ pills: {
+ base: `
+ px-3 py-1
+ `,
+ normal: `
+ font-normal
+ border-scale-500
+ group-hover:border-scale-900`,
+ active: `
+ font-semibold
+ bg-scale-400
+ dark:bg-scale-300
+ text-scale-900
+ z-10
+
+ rounded-md
+ `,
+ },
+ },
+ },
+ group: {
+ base: `
+ flex space-x-3
+ mb-2
+ font-normal
+ `,
+ icon: `text-scale-900`,
+ content: `text-sm text-scale-900 w-full`,
+ variants: {
+ text: ``,
+ pills: `px-3`,
+ border: ``,
+ },
+ },
+ },
+
+ /*
+ * modal
+ */
+ modal: {
+ base: `
+ relative
+ bg-scale-100 dark:bg-scale-300
+ my-4
+ border border-scale-300 dark:border-scale-500
+ rounded-md
+ shadow-xl
+ data-open:animate-overlay-show
+ data-closed:animate-overlay-hide
+
+ `,
+ header: `
+ bg-scale-200 dark:bg-scale-400
+ space-y-1 py-3 px-4 sm:px-5
+ border-b border-scale-300 dark:border-scale-500
+ `,
+ footer: `
+ flex justify-end gap-2
+ py-3 px-5
+ border-t border-scale-300 dark:border-scale-500
+ `,
+ size: {
+ tiny: `sm:align-middle sm:w-full sm:max-w-xs`,
+ small: `sm:align-middle sm:w-full sm:max-w-sm`,
+ medium: `sm:align-middle sm:w-full sm:max-w-lg`,
+ large: `sm:align-middle sm:w-full max-w-xl`,
+ xlarge: `sm:align-middle sm:w-full max-w-3xl`,
+ xxlarge: `sm:align-middle sm:w-full max-w-6xl`,
+ xxxlarge: `sm:align-middle sm:w-full max-w-7xl`,
+ },
+ overlay: `
+ fixed
+ bg-scale-300
+ dark:bg-scale-100
+ h-full w-full
+ left-0
+ top-0
+ opacity-75
+ data-closed:animate-fade-out-overlay-bg
+ data-open:animate-fade-in-overlay-bg
+ `,
+ scroll_overlay: `
+ fixed
+ inset-0
+ grid
+ place-items-center
+ overflow-y-auto
+ data-open:animate-overlay-show data-closed:animate-overlay-hide
+ `,
+ seperator: `
+ w-full
+ h-px
+ my-2
+ bg-scale-300 dark:bg-scale-500
+ `,
+ content: `px-5`,
+ },
+
+ // listbox
+
+ listbox: {
+ base: `
+ block
+ box-border
+ w-full
+ rounded-md
+ shadow-sm
+ text-scale-1200
+ border
+ focus:shadow-md
+ ${defaults.focus}
+ focus:border-scale-900
+ focus:ring-scale-400
+ ${defaults.placeholder}
+ indent-px
+ transition-all
+ bg-none
+ `,
+ container: 'relative',
+ label: `truncate`,
+ variants: {
+ standard: `
+ bg-scaleA-200
+ border border-scale-700
+
+ aria-expanded:border-scale-900
+ aria-expanded:ring-scale-400
+ aria-expanded:ring-2
+ `,
+ error: `
+ bg-red-100
+ border border-red-700
+ focus:ring-red-500
+ placeholder:text-red-600
+ `,
+ },
+ options_container_animate: `
+ transition
+ data-open:animate-slide-down
+ data-open:opacity-1
+ data-closed:animate-slide-up
+ data-closed:opacity-0
+ `,
+ options_container: `
+ bg-scale-100 dark:bg-scale-300
+ shadow-lg
+ border border-solid
+ border-gray-100 dark:border-gray-600 max-h-60
+ rounded-md py-1 text-base
+ sm:text-sm z-10 overflow-hidden overflow-y-scroll
+
+ origin-dropdown
+ data-open:animate-dropdown-content-show
+ data-closed:animate-dropdown-content-hide
+ `,
+ with_icon: 'pl-10',
+ addOnBefore: `
+ w-full flex flex-row items-center space-x-3
+ `,
+ size: {
+ ...default__padding_and_text,
+ },
+ disabled: `opacity-50`,
+ actions_container:
+ 'absolute inset-y-0 right-0 pl-3 pr-1 flex space-x-1 items-center',
+ chevron_container:
+ 'absolute inset-y-0 right-0 flex items-center pr-2 pointer-events-none',
+ chevron: 'h-5 w-5 text-scale-600',
+ option: `
+ w-listbox
+ transition cursor-pointer select-none relative py-2 pl-3 pr-9
+ text-scale-900
+ text-sm
+
+ focus:bg-scale-300 dark:focus:bg-scale-500
+ focus:text-scale-1200
+ border-none
+ focus:outline-none
+ `,
+ option_active: `text-scale-1200 bg-scale-600`,
+ option_disabled: `cursor-not-allowed opacity-50`,
+ option_inner: `flex items-center space-x-3`,
+ option_check: `absolute inset-y-0 right-0 flex items-center pr-3 text-brand-900`,
+ option_check_active: `text-brand-900`,
+ option_check_icon: `h-5 w-5`,
+ },
+
+ collapsible: {
+ content: `
+ data-open:animate-slide-down-normal
+ data-closed:animate-slide-up-normal
+ `,
+ },
+
+ inputErrorIcon: {
+ base: `
+ flex items-center
+ right-3 pr-2 pl-2
+ inset-y-0
+ pointer-events-none
+ text-red-900
+ `,
+ },
+
+ inputIconContainer: {
+ base: `
+ absolute inset-y-0
+ left-0 pl-3 flex
+ items-center pointer-events-none
+ text-scale-1100
+ `,
+ },
+
+ // Icon
+
+ icon: {
+ container: `flex-shrink-0 flex items-center justify-center rounded-full p-3`,
+ },
+
+ loading: {
+ base: `relative`,
+ content: {
+ base: `transition-opacity duration-300`,
+ active: `opacity-40`,
+ },
+ spinner: `
+ absolute
+ text-brand-900 animate-spin
+ inset-0
+ m-auto
+ `,
+ },
+}
diff --git a/packages/ui/src/lib/theme/styleHandler.ts b/packages/ui/src/lib/theme/styleHandler.ts
new file mode 100644
index 00000000000..e0093f1e4b8
--- /dev/null
+++ b/packages/ui/src/lib/theme/styleHandler.ts
@@ -0,0 +1,28 @@
+import { useContext } from 'react'
+import defaultTheme from './../theme/defaultTheme'
+import { ThemeContext } from './../../components/ThemeProvider/ThemeProvider'
+
+export default function styleHandler(target: string) {
+ let {
+ theme: { [target]: __styles },
+ }: any = useContext(ThemeContext)
+
+ if (!__styles) __styles = defaultTheme.button
+
+ // console.log(__styles)
+
+ // __styles.replace(/\s+/g, ' ')
+
+ // console.log('before string', __styles)
+
+ // __styles = JSON.stringify(JSON.parse(__styles))
+ __styles = JSON.stringify(__styles).replace(/\\n/g, '').replace(/\s\s+/g, ' ')
+
+ // console.log('string', __styles)
+
+ __styles = JSON.parse(__styles)
+
+ // console.log('string', __styles)
+
+ return __styles
+}
diff --git a/packages/ui/src/lib/theme/themeContext.tsx b/packages/ui/src/lib/theme/themeContext.tsx
new file mode 100644
index 00000000000..3e0fbcfc011
--- /dev/null
+++ b/packages/ui/src/lib/theme/themeContext.tsx
@@ -0,0 +1,67 @@
+import React, { useLayoutEffect, useMemo } from 'react'
+import { createContext } from 'react'
+import defaultTheme from './defaultTheme'
+
+import { mergeDeep } from '../../utils/mergeDeep'
+// import useDarkMode from './utils/useDarkMode'
+
+interface ThemeContextInterface {
+ theme?: any
+ // mode?: 'light' | 'dark'
+ // toggleMode?: any
+}
+
+export const ThemeContext = createContext({
+ theme: defaultTheme,
+ // mode: 'light',
+ // toggleMode: true,
+})
+
+interface Props extends React.HTMLAttributes {
+ children: React.ReactNode
+ /**
+ * Defines the styles used throughout the library
+ */
+ theme?: object
+ /**
+ * Defines dark mode as the default theme
+ */
+ // dark?: boolean
+ /**
+ * Allows the change of theme, reading user's preferences and saving them
+ */
+ // usePreferences?: boolean
+}
+
+const themeWrapper: React.FC = ({
+ children,
+ theme: customTheme,
+ // dark,
+ // usePreferences = false,
+}) => {
+ const mergedTheme = mergeDeep(defaultTheme, customTheme)
+ // const [mode, setMode, toggleMode] = useDarkMode(usePreferences)
+
+ // useLayoutEffect(() => {
+ // if (dark) {
+ // if (setMode != null) {
+ // setMode('dark')
+ // }
+ // document.documentElement.classList.add(`dark`)
+ // }
+ // }, [dark])
+
+ const value = useMemo(
+ () => ({
+ theme: mergedTheme,
+ // mode,
+ // toggleMode,
+ }),
+ []
+ )
+
+ // console.log('defaultTheme', defaultTheme)
+ return {children}
+}
+
+export default themeWrapper
diff --git a/packages/ui/src/lib/utilities.tsx b/packages/ui/src/lib/utilities.tsx
new file mode 100644
index 00000000000..89cc8a5a1c4
--- /dev/null
+++ b/packages/ui/src/lib/utilities.tsx
@@ -0,0 +1,78 @@
+import React from 'react'
+
+// export const FormLayout = (props: any) => {
+// const {
+// align,
+// direction,
+// size,
+// label,
+// labelOptional,
+// layout,
+// children,
+// id,
+// error,
+// descriptionText,
+// className,
+// responsive
+// } = props
+
+// const spacingClass =
+// 'space-' + (direction === 'vertical' ? 'y' : 'x') + '-' + size
+
+// const responsiveClasses = responsive ? ' md:grid-cols-12' : ' grid-cols-12'
+
+// return (
+//
+//
+// {label && (
+//
+// {label}
+//
+// )}
+// {labelOptional && (
+//
+// {labelOptional}
+//
+// )}
+//
+//
+// {children}
+// {error && (
+//
+// {error}
+//
+// )}
+// {descriptionText && (
+//
+// {descriptionText}
+//
+// )}
+//
+//
+// )
+// }
+
+// export const Space = (props: any) => {
+// const { direction, size, className } = props
+
+// const spacingClass =
+// 'space-' + (direction === 'vertical' ? 'y' : 'x') + '-' + size
+
+// return (
+//
+// {props.children}
+//
+// )
+// }
diff --git a/packages/ui/src/static/icons/apple-icon.svg b/packages/ui/src/static/icons/apple-icon.svg
new file mode 100644
index 00000000000..3902c024ec0
--- /dev/null
+++ b/packages/ui/src/static/icons/apple-icon.svg
@@ -0,0 +1,56 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/packages/ui/src/static/icons/bitbucket-icon.svg b/packages/ui/src/static/icons/bitbucket-icon.svg
new file mode 100644
index 00000000000..cdf84686d93
--- /dev/null
+++ b/packages/ui/src/static/icons/bitbucket-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/discord-icon.svg b/packages/ui/src/static/icons/discord-icon.svg
new file mode 100644
index 00000000000..3efe1ec110f
--- /dev/null
+++ b/packages/ui/src/static/icons/discord-icon.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/ui/src/static/icons/docs-illustration.svg b/packages/ui/src/static/icons/docs-illustration.svg
new file mode 100644
index 00000000000..4383eb673b7
--- /dev/null
+++ b/packages/ui/src/static/icons/docs-illustration.svg
@@ -0,0 +1,14 @@
+
+
+
diff --git a/packages/ui/src/static/icons/email-icon.svg b/packages/ui/src/static/icons/email-icon.svg
new file mode 100644
index 00000000000..8346023caa8
--- /dev/null
+++ b/packages/ui/src/static/icons/email-icon.svg
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/packages/ui/src/static/icons/facebook-icon.svg b/packages/ui/src/static/icons/facebook-icon.svg
new file mode 100644
index 00000000000..916c8eff2b7
--- /dev/null
+++ b/packages/ui/src/static/icons/facebook-icon.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/ui/src/static/icons/github-icon-dark.svg b/packages/ui/src/static/icons/github-icon-dark.svg
new file mode 100644
index 00000000000..2667c90a499
--- /dev/null
+++ b/packages/ui/src/static/icons/github-icon-dark.svg
@@ -0,0 +1,6 @@
+
+
+
diff --git a/packages/ui/src/static/icons/github-icon.svg b/packages/ui/src/static/icons/github-icon.svg
new file mode 100644
index 00000000000..61c01f33e16
--- /dev/null
+++ b/packages/ui/src/static/icons/github-icon.svg
@@ -0,0 +1,6 @@
+
+
+
diff --git a/packages/ui/src/static/icons/gitlab-icon.svg b/packages/ui/src/static/icons/gitlab-icon.svg
new file mode 100644
index 00000000000..07da670ab19
--- /dev/null
+++ b/packages/ui/src/static/icons/gitlab-icon.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1x
+
+
+ 1x
+
+
+ 1x
+
+
+
+ 1x
+
+
+
diff --git a/packages/ui/src/static/icons/google-icon.svg b/packages/ui/src/static/icons/google-icon.svg
new file mode 100644
index 00000000000..06dc52f0aa6
--- /dev/null
+++ b/packages/ui/src/static/icons/google-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/messagebird-icon.svg b/packages/ui/src/static/icons/messagebird-icon.svg
new file mode 100644
index 00000000000..b9c98603bc7
--- /dev/null
+++ b/packages/ui/src/static/icons/messagebird-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/microsoft-icon.svg b/packages/ui/src/static/icons/microsoft-icon.svg
new file mode 100644
index 00000000000..5334aa7ca68
--- /dev/null
+++ b/packages/ui/src/static/icons/microsoft-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/phone-icon.svg b/packages/ui/src/static/icons/phone-icon.svg
new file mode 100644
index 00000000000..dd84e2ca79e
--- /dev/null
+++ b/packages/ui/src/static/icons/phone-icon.svg
@@ -0,0 +1,10 @@
+
+
+
diff --git a/packages/ui/src/static/icons/slack-icon.svg b/packages/ui/src/static/icons/slack-icon.svg
new file mode 100644
index 00000000000..69a4eb6a217
--- /dev/null
+++ b/packages/ui/src/static/icons/slack-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/spotify-icon.svg b/packages/ui/src/static/icons/spotify-icon.svg
new file mode 100644
index 00000000000..41d8137620f
--- /dev/null
+++ b/packages/ui/src/static/icons/spotify-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/twilio-icon.svg b/packages/ui/src/static/icons/twilio-icon.svg
new file mode 100644
index 00000000000..76d12c7164a
--- /dev/null
+++ b/packages/ui/src/static/icons/twilio-icon.svg
@@ -0,0 +1 @@
+
diff --git a/packages/ui/src/static/icons/twitch-icon.svg b/packages/ui/src/static/icons/twitch-icon.svg
new file mode 100644
index 00000000000..ee4a95fbf02
--- /dev/null
+++ b/packages/ui/src/static/icons/twitch-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/ui/src/static/icons/twitter-icon.svg b/packages/ui/src/static/icons/twitter-icon.svg
new file mode 100644
index 00000000000..c0364cc1527
--- /dev/null
+++ b/packages/ui/src/static/icons/twitter-icon.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/ui/src/types.ts b/packages/ui/src/types.ts
new file mode 100644
index 00000000000..0af236b4966
--- /dev/null
+++ b/packages/ui/src/types.ts
@@ -0,0 +1,8 @@
+export interface AnimationTailwindClasses {
+ enter?: string
+ enterFrom?: string
+ enterTo?: string
+ leave?: string
+ leaveFrom?: string
+ leaveTo?: string
+}
diff --git a/packages/ui/src/utils/mergeDeep.ts b/packages/ui/src/utils/mergeDeep.ts
new file mode 100644
index 00000000000..3731a7ade4f
--- /dev/null
+++ b/packages/ui/src/utils/mergeDeep.ts
@@ -0,0 +1,28 @@
+/**
+ * Check if item is Object
+ */
+export function isObject(item: any): boolean {
+ return item && typeof item === 'object' && !Array.isArray(item)
+}
+
+/**
+ * Deep merge two objects.
+ * @return merged object
+ */
+export function mergeDeep(target: any, ...sources: any[]): any {
+ if (sources.length === 0) return target
+ const source = sources.shift()
+
+ if (isObject(target) && isObject(source)) {
+ for (const key in source) {
+ if (isObject(source[key])) {
+ if (!target[key]) Object.assign(target, { [key]: {} })
+ mergeDeep(target[key], source[key])
+ } else {
+ Object.assign(target, { [key]: source[key] })
+ }
+ }
+ }
+
+ return mergeDeep(target, ...sources)
+}
diff --git a/packages/ui/src/utils/randomIdGenerator.ts b/packages/ui/src/utils/randomIdGenerator.ts
new file mode 100644
index 00000000000..be7c8071b9a
--- /dev/null
+++ b/packages/ui/src/utils/randomIdGenerator.ts
@@ -0,0 +1,14 @@
+// export default function () {
+// const randomNumber = Math.floor(Math.random() * 26) + Date.now()
+// return randomNumber.toString()
+// }
+
+export default function generateUID() {
+ // I generate the UID from two parts here
+ // to ensure the random number provide enough bits.
+ var firstPart = (Math.random() * 46656) | 0
+ var secondPart = (Math.random() * 46656) | 0
+ const newFirstPart = ('00000' + firstPart.toString(36)).slice(-3)
+ const newSecondPart = ('00000' + secondPart.toString(36)).slice(-3)
+ return newFirstPart + newSecondPart
+}
diff --git a/packages/ui/src/utils/useDarkMode.ts b/packages/ui/src/utils/useDarkMode.ts
new file mode 100644
index 00000000000..8db60d6b634
--- /dev/null
+++ b/packages/ui/src/utils/useDarkMode.ts
@@ -0,0 +1,46 @@
+// import { useEffect, useState } from 'react'
+
+// export const useDarkMode = (
+// usePreferences: boolean
+// ): [Mode, React.Dispatch> | null,
+// (() => void) | null
+// ] => {
+// if (!usePreferences) return [null, null, null]
+
+// const [mode, setMode] = useState(null)
+
+// const toggleMode = () => {
+// if (mode === 'light') {
+// document.documentElement.className = ''
+// document.documentElement.classList.add('dark')
+// setMode('dark')
+// } else {
+// document.documentElement.className = ''
+// document.documentElement.classList.add('light')
+// setMode('light')
+// }
+// }
+
+// useEffect(() => {
+// const userPreference =
+// !!window.matchMedia &&
+// window.matchMedia('(prefers-color-scheme: dark)').matches
+
+// setMode(
+// // use stored theme; fallback to user preference
+// window.localStorage.getItem('theme') ||
+// (userPreference ? 'dark' : 'light')
+// )
+// }, [])
+
+// useEffect(() => {
+// if (mode) {
+// window.localStorage.setItem('theme', mode)
+// document.documentElement.classList.add(mode)
+// }
+// }, [mode])
+
+// return [mode, setMode, toggleMode]
+// }
+
+// export default useDarkMode
diff --git a/packages/ui/tailwind.config.js b/packages/ui/tailwind.config.js
new file mode 100644
index 00000000000..c1a046ced35
--- /dev/null
+++ b/packages/ui/tailwind.config.js
@@ -0,0 +1,477 @@
+const gray = {
+ 100: '#eeeeee',
+ 200: '#e0e0e0',
+ 300: '#bbbbbb',
+ 400: '#666666',
+ 500: '#444444',
+ 650: '#333',
+ 600: '#2a2a2a',
+ 700: '#1f1f1f',
+ 800: '#181818',
+ 900: '#0f0f0f',
+}
+const brand = {
+ 100: '#c5f1dd',
+ 200: '#c5f1dd',
+ 300: '#9fe7c7',
+ 400: '#65d9a5',
+ 500: '#24b47e',
+ 600: '#38bc81',
+ 700: '#1c8656',
+ 800: '#10633e',
+ 900: '#10633e',
+}
+
+const blueGray = {
+ 50: '#F8FAFC',
+ 100: '#F1F5F9',
+ 200: '#E2E8F0',
+ 300: '#CBD5E1',
+ 400: '#94A3B8',
+ 500: '#64748B',
+ 600: '#475569',
+ 700: '#334155',
+ 800: '#1E293B',
+ 900: '#0F172A',
+}
+
+const coolGray = {
+ 50: '#F9FAFB',
+ 100: '#F3F4F6',
+ 200: '#E5E7EB',
+ 300: '#D1D5DB',
+ 400: '#9CA3AF',
+ 500: '#6B7280',
+ 600: '#4B5563',
+ 700: '#374151',
+ 800: '#1F2937',
+ 900: '#111827',
+}
+
+const colors = {
+ // transparent: 'transparent',
+ // white: '#ffffff',
+ // black: '#000000',
+ // gray: {
+ // '50': '#f9fafb',
+ // '100': '#f4f5f7',
+ // '200': '#e5e7eb',
+ // '300': '#d5d6d7',
+ // '400': '#9e9e9e',
+ // '500': '#707275',
+ // '600': '#4c4f52',
+ // '700': '#24262d',
+ // '800': '#1a1c23',
+ // '900': '#121317',
+ // // default values from Tailwind UI palette
+ // // '300': '#d2d6dc',
+ // // '400': '#9fa6b2',
+ // // '500': '#6b7280',
+ // // '600': '#4b5563',
+ // // '700': '#374151',
+ // // '800': '#252f3f',
+ // // '900': '#161e2e',
+ // },
+ red: {
+ 50: '#fdf2f2',
+ 100: '#fde8e8',
+ 200: '#fbd5d5',
+ 300: '#f8b4b4',
+ 400: '#f98080',
+ 500: '#f05252',
+ 600: '#e02424',
+ 700: '#c81e1e',
+ 800: '#9b1c1c',
+ 900: '#771d1d',
+ },
+ orange: {
+ 50: '#fff8f1',
+ 100: '#feecdc',
+ 200: '#fcd9bd',
+ 300: '#fdba8c',
+ 400: '#ff8a4c',
+ 500: '#ff5a1f',
+ 600: '#d03801',
+ 700: '#b43403',
+ 800: '#8a2c0d',
+ 900: '#771d1d',
+ },
+ yellow: {
+ 50: '#fdfdea',
+ 100: '#fdf6b2',
+ 200: '#fce96a',
+ 300: '#faca15',
+ 400: '#e3a008',
+ 500: '#c27803',
+ 600: '#9f580a',
+ 700: '#8e4b10',
+ 800: '#723b13',
+ 900: '#633112',
+ },
+ green: {
+ 50: '#f3faf7',
+ 100: '#def7ec',
+ 200: '#bcf0da',
+ 300: '#84e1bc',
+ 400: '#31c48d',
+ 500: '#0e9f6e',
+ 600: '#057a55',
+ 700: '#046c4e',
+ 800: '#03543f',
+ 900: '#014737',
+ },
+ teal: {
+ 50: '#edfafa',
+ 100: '#d5f5f6',
+ 200: '#afecef',
+ 300: '#7edce2',
+ 400: '#16bdca',
+ 500: '#0694a2',
+ 600: '#047481',
+ 700: '#036672',
+ 800: '#05505c',
+ 900: '#014451',
+ },
+ blue: {
+ 50: '#ebf5ff',
+ 100: '#e1effe',
+ 200: '#c3ddfd',
+ 300: '#a4cafe',
+ 400: '#76a9fa',
+ 500: '#3f83f8',
+ 600: '#1c64f2',
+ 700: '#1a56db',
+ 800: '#1e429f',
+ 900: '#233876',
+ },
+ indigo: {
+ 50: '#f0f5ff',
+ 100: '#e5edff',
+ 200: '#cddbfe',
+ 300: '#b4c6fc',
+ 400: '#8da2fb',
+ 500: '#6875f5',
+ 600: '#5850ec',
+ 700: '#5145cd',
+ 800: '#42389d',
+ 900: '#362f78',
+ },
+ purple: {
+ 50: '#f6f5ff',
+ 100: '#edebfe',
+ 200: '#dcd7fe',
+ 300: '#cabffd',
+ 400: '#ac94fa',
+ 500: '#9061f9',
+ 600: '#7e3af2',
+ 700: '#6c2bd9',
+ 800: '#5521b5',
+ 900: '#4a1d96',
+ },
+ pink: {
+ 50: '#fdf2f8',
+ 100: '#fce8f3',
+ 200: '#fad1e8',
+ 300: '#f8b4d9',
+ 400: '#f17eb8',
+ 500: '#e74694',
+ 600: '#d61f69',
+ 700: '#bf125d',
+ 800: '#99154b',
+ 900: '#751a3d',
+ },
+}
+
+const dark = {
+ 50: '#eeeeee',
+ 100: '#eeeeee',
+ 200: '#e0e0e0',
+ 300: '#bbbbbb',
+ 400: '#666666',
+ 500: '#444444',
+ 600: '#2a2a2a',
+ 700: '#1f1f1f',
+ 800: '#181818',
+ 900: '#0f0f0f',
+}
+
+const sbui_border = {
+ 100: 'var(--border-1)',
+ 200: 'var(--border-2)',
+ 300: 'var(--border-3)',
+ 400: 'var(--border-4)',
+ 500: 'var(--border-5)',
+ 600: 'var(--border-6)',
+ 700: 'var(--border-7)',
+ 800: 'var(--border-8)',
+ 900: 'var(--border-9)',
+ 1000: 'var(--border-10)',
+ 1100: 'var(--border-11)',
+ 1200: 'var(--border-12)',
+}
+
+const sbui_background = {
+ 100: 'var(--background-1)',
+ 200: 'var(--background-2)',
+ 300: 'var(--background-3)',
+ 400: 'var(--background-4)',
+ 500: 'var(--background-5)',
+ 600: 'var(--background-6)',
+ 700: 'var(--background-7)',
+ 800: 'var(--background-8)',
+ 900: 'var(--background-9)',
+ 1000: 'var(--background-10)',
+ 1100: 'var(--background-11)',
+ 1200: 'var(--background-12)',
+}
+
+const sbui_brand = {
+ 100: 'var(--brand-1)',
+ 200: 'var(--brand-2)',
+ 300: 'var(--brand-3)',
+ 400: 'var(--brand-4)',
+ 500: 'var(--brand-5)',
+ 600: 'var(--brand-6)',
+ 700: 'var(--brand-7)',
+ 800: 'var(--brand-8)',
+ 900: 'var(--brand-9)',
+ 1000: 'var(--brand-10)',
+ 1100: 'var(--brand-11)',
+ 1200: 'var(--brand-12)',
+}
+
+const sbui_brand_fixed = {
+ 100: 'var(--brand-fixed-1)',
+ 200: 'var(--brand-fixed-2)',
+ 300: 'var(--brand-fixed-3)',
+ 400: 'var(--brand-fixed-4)',
+ 500: 'var(--brand-fixed-5)',
+ 600: 'var(--brand-fixed-6)',
+ 700: 'var(--brand-fixed-7)',
+ 800: 'var(--brand-fixed-8)',
+ 900: 'var(--brand-fixed-9)',
+ 1000: 'var(--brand-fixed-10)',
+ 1100: 'var(--brand-fixed-11)',
+ 1200: 'var(--brand-fixed-12)',
+}
+
+function generateRadixVariables() {
+ const colors = [
+ 'brand',
+ 'brand-fixed',
+ 'scale',
+ 'tomato',
+ 'red',
+ 'crimson',
+ 'pink',
+ 'plum',
+ 'purple',
+ 'violet',
+ 'indigo',
+ 'blue',
+ 'cyan',
+ 'teal',
+ 'green',
+ 'grass',
+ 'brown',
+ 'orange',
+ 'sky',
+ 'mint',
+ 'lime',
+ 'yellow',
+ 'amber',
+ 'gold',
+ 'bronze',
+ 'gray',
+ 'mauve',
+ 'slate',
+ 'sage',
+ 'olive',
+ 'sand',
+ ]
+
+ let mappedColors = {}
+
+ colors.map((x) => {
+ mappedColors[x] = {}
+ })
+
+ colors.map((x) => {
+ for (let index = 0; index < 12; index++) {
+ const step = index + 1
+ mappedColors[x][step * 100] = `var(--colors-${x}${step})`
+ }
+ })
+
+ return mappedColors
+}
+
+const custom_colors = generateRadixVariables()
+
+// console.log('radix colors', custom_colors)
+
+const ui = require('./ui.config.js')
+
+module.exports = ui({
+ content: {
+ // enabled: true,
+ content: [
+ './src/**/**/*.{js,ts,jsx,tsx,html,mdx}',
+ './src/**/*.{js,ts,jsx,tsx,html,mdx}',
+ './src/**/*.{js,ts,jsx,tsx,html,mdx}',
+ './src/lib/theme/defaultTheme.ts',
+ ],
+ // safelist: ['space-x-1'],
+ },
+ darkMode: 'class',
+ theme: {
+ // colors: {
+ // gray: { ...custom_colors.gray },
+ // slate: { ...custom_colors.slate },
+ // },
+ extend: {
+ typography: {
+ DEFAULT: {
+ css: {
+ 'code::before': {
+ content: '""',
+ },
+ 'code::after': {
+ content: '""',
+ },
+ },
+ },
+ },
+ colors: {
+ /*
+ main
+ */
+ ['brandColor']: '#EC6F0D',
+
+ ['brandScale']: { ...sbui_brand },
+ ['brandScaleFixed']: { ...sbui_brand_fixed },
+
+ // used for backgrounds
+ ['bgScale']: { ...sbui_background },
+ ['bgScaleDark']: { ...dark },
+
+ // used for borders, inputs and text
+ ['grayScale']: { ...sbui_border },
+ ['grayScaleDark']: { ...gray },
+
+ /*
+ typography
+ */
+ 'typography-body': {
+ light: coolGray[600],
+ dark: gray[100],
+ },
+ 'typography-body-secondary': {
+ light: coolGray[500],
+ dark: gray[300],
+ },
+ 'typography-body-strong': {
+ light: coolGray[100],
+ dark: 'white',
+ },
+ 'typography-body-faded': {
+ light: coolGray[400],
+ dark: gray[400],
+ },
+
+ /*
+ app backgrounds
+ */
+ 'bg-primary': {
+ light: 'white',
+ dark: gray[800],
+ },
+ 'bg-secondary': {
+ light: blueGray[100],
+ dark: gray[700],
+ },
+ 'bg-alt': {
+ light: blueGray[50], // gray[100],
+ dark: gray[600],
+ },
+
+ /*
+ Forms
+ */
+ 'input-value': {
+ light: coolGray[600],
+ dark: gray[200],
+ },
+ 'input-placeholder': {
+ light: coolGray[300],
+ dark: gray[400],
+ },
+ 'input-border': {
+ light: coolGray[300],
+ dark: gray[500],
+ },
+ 'input-label': {
+ light: coolGray[600],
+ dark: gray[200],
+ },
+ 'input-border-hover': {
+ light: coolGray[400],
+ dark: gray[400],
+ },
+ 'input-border-focus': {
+ light: brand[300],
+ dark: brand[300],
+ },
+
+ // ['brandColor']: '#7c3aed',
+ transparent: 'transparent',
+ current: 'currentColor',
+
+ black: '#000',
+ white: '#fff',
+
+ // gray: { ...gray },
+ // brand: { ...brand },
+ // blueGray: { ...blueGray },
+ // coolGray: { ...coolGray },
+
+ dark: {
+ 100: '#eeeeee',
+ 200: '#e0e0e0',
+ 300: '#bbbbbb',
+ 400: '#666666',
+ 500: '#444444',
+ 600: '#2a2a2a',
+ 700: '#1f1f1f',
+ 800: '#181818',
+ 900: '#0f0f0f',
+ },
+
+ 'secondary-text': {
+ light: '#71767F',
+ dark: '#878787',
+ },
+
+ // brand: {
+ // 50: '#82dab0',
+ // 100: '#82dab0',
+ // 200: '#69d3a0',
+ // 300: '#50cb90',
+ // 400: '#C5F1DD',
+ // 500: '#9FE7C7',
+ // 600: '#65D9A5',
+ // 700: '#3ECF8E',
+ // 800: '#24b47e', // green-500 in dashboard
+ // 900: '#2c9c6a',
+ // },
+
+ // ...custom_colors,
+ },
+
+ // transitionProperty: {
+ // 'max-height': 'max-height',
+ // },
+ },
+ },
+ plugins: [require('@tailwindcss/forms'), require('@tailwindcss/typography')],
+})
diff --git a/packages/ui/ui.config.js b/packages/ui/ui.config.js
new file mode 100644
index 00000000000..63219022ff1
--- /dev/null
+++ b/packages/ui/ui.config.js
@@ -0,0 +1,399 @@
+const deepMerge = require('deepmerge')
+const forms = require('@tailwindcss/forms')
+const plugin = require('tailwindcss/plugin')
+const radixUiColors = require('@radix-ui/colors')
+const brandColors = require('./default-colors')
+
+const { default: flattenColorPalette } = require('tailwindcss/lib/util/flattenColorPalette')
+
+// console.log(Object.keys(radixUiColors))
+
+// generates fixed scales
+// based on the root/light mode version
+const fixedOptions = ['scale', 'scaleA', 'brand']
+
+function radixColorKeys() {
+ let keys = Object.keys(radixUiColors)
+
+ /**
+ * Filter array items based on search criteria (query)
+ */
+ function filterItems(arr, query) {
+ return arr.filter(function (el) {
+ return el.toLowerCase().indexOf(query.toLowerCase()) == -1
+ })
+ }
+
+ keys = filterItems(keys, 'Dark')
+
+ // console.log('radixColorKeys', keys)
+ return keys
+}
+
+function generateColorClasses() {
+ const brandColors = ['brand', 'scale', 'scaleA']
+ const colors = [...radixColorKeys(), ...brandColors]
+
+ let mappedColors = {}
+
+ // generate the shape of the colors object
+ colors.map((x) => {
+ // create empty obj for each color
+ mappedColors[x] = {}
+ // create empty obj for each fixed color
+ if (
+ fixedOptions.some(function (v) {
+ return x.indexOf(v) >= 0
+ })
+ ) {
+ mappedColors[`${x}-fixed`] = {}
+ }
+ })
+
+ colors.map((x) => {
+ for (let index = 0; index < 12; index++) {
+ const step = index + 1
+ mappedColors[x][step * 100] = `var(--colors-${x.toLowerCase()}${step})`
+
+ if (
+ fixedOptions.some(function (v) {
+ return x.indexOf(v) >= 0
+ })
+ ) {
+ // console.log(x)
+ mappedColors[`${x}-fixed`][step * 100] = `var(--colors-fixed-${x}${step})`
+ }
+ }
+ })
+
+ return mappedColors
+}
+
+const colorClasses = generateColorClasses()
+
+/*
+ * generateCssVariables()
+ *
+ * generate the CSS variables for tailwind to use
+ *
+ */
+
+function generateCssVariables() {
+ // potential options
+ // { fixedOptions, brandColors }
+
+ let rootColors = {}
+ let darkColors = {}
+
+ const radixArray = Object.values(radixUiColors)
+ const brandArray = Object.values(brandColors)
+
+ function generateColors(colors, index, colorSet) {
+ const key = Object.keys(colorSet)[index]
+
+ if (key.includes('Dark')) {
+ darkColors = { ...darkColors, ...colors }
+ } else {
+ rootColors = { ...rootColors, ...colors }
+
+ // generate an optional 'fixed' scale of colors
+ if (
+ fixedOptions.some(function (v) {
+ return key.indexOf(v) >= 0
+ })
+ ) {
+ rootColors.fixed = { ...rootColors?.fixed, ...colors }
+ }
+ }
+ }
+
+ radixArray.map((x, i) => {
+ generateColors(x, i, radixUiColors)
+ })
+
+ brandArray.map((x, i) => {
+ generateColors(x, i, brandColors)
+ })
+
+ return {
+ root: { ...rootColors },
+ dark: { ...darkColors },
+ }
+}
+
+const variables = generateCssVariables()
+
+const uiConfig = {
+ theme: {
+ variables: {
+ DEFAULT: {
+ width: {
+ listbox: '320px',
+ },
+ colors: { ...variables.root },
+ },
+ '.dark': {
+ colors: { ...variables.dark },
+ },
+ },
+ extend: {
+ // dropdown extensions
+ transformOrigin: {
+ // tailwind class for this is `origin-dropdown`
+ dropdown: 'var(--radix-dropdown-menu-content-transform-origin)',
+ popover: 'var(--radix-popover-menu-content-transform-origin);',
+ },
+ width: {
+ listbox: 'var(--width-listbox);',
+ },
+ keyframes: {
+ fadeIn: {
+ '0%': { transform: 'scale(0.95)', opacity: 0 },
+ '100%': { transform: 'scale(1)', opacity: 1 },
+ },
+ fadeOut: {
+ '0%': { transform: 'scale(1)', opacity: 1 },
+ '100%': { transform: 'scale(0.95)', opacity: 0 },
+ },
+ overlayContentShow: {
+ '0%': { opacity: 0, transform: 'translate(0%, -2%) scale(.96)' },
+ '100%': { opacity: 1, transform: 'translate(0%, 0%) scale(1)' },
+ },
+ overlayContentHide: {
+ '0%': { opacity: 1, transform: 'translate(0%, 0%) scale(1)' },
+ '100%': { opacity: 0, transform: 'translate(0%, -2%) scale(.96)' },
+ },
+ dropdownFadeIn: {
+ '0%': { transform: 'scale(0.95)', opacity: 0 },
+ '100%': { transform: 'scale(1)', opacity: 1 },
+ },
+ dropdownFadeOut: {
+ '0%': { transform: 'scale(1)', opacity: 1 },
+ '100%': { transform: 'scale(0.95)', opacity: 0 },
+ },
+ fadeInOverlayBg: {
+ '0%': { opacity: 0 },
+ '100%': { opacity: 0.75 },
+ },
+ fadeOutOverlayBg: {
+ '0%': { opacity: 0.75 },
+ '100%': { opacity: 0 },
+ },
+ slideDown: {
+ '0%': { height: 0, opacity: 0 },
+ '100%': {
+ height: 'var(--radix-accordion-content-height)',
+ opacity: 1,
+ },
+ },
+ slideUp: {
+ '0%': { height: 'var(--radix-accordion-content-height)', opacity: 1 },
+ '100%': { height: 0, opacity: 0 },
+ },
+
+ slideDownNormal: {
+ '0%': { height: 0, opacity: 0 },
+ '100%': {
+ height: 'inherit',
+ opacity: 1,
+ },
+ },
+ slideUpNormal: {
+ '0%': { height: 'inherit', opacity: 1 },
+ '100%': { height: 0, opacity: 0 },
+ },
+
+ panelSlideLeftOut: {
+ '0%': { transform: 'translateX(-100%)', opacity: 0 },
+ '100%': {
+ transform: 'translate-x-0',
+ opacity: 1,
+ },
+ },
+ panelSlideLeftIn: {
+ '0%': { transform: 'translate-x-0', opacity: 1 },
+ '100%': { transform: 'translateX(-100%)', opacity: 0 },
+ },
+ panelSlideRightOut: {
+ '0%': { transform: 'translateX(100%)', opacity: 0 },
+ '100%': {
+ transform: 'translate-x-0',
+ opacity: 1,
+ },
+ },
+ panelSlideRightIn: {
+ '0%': { transform: 'translate-x-0', opacity: 1 },
+ '100%': { transform: 'translateX(100%)', opacity: 0 },
+ },
+ },
+ animation: {
+ 'fade-in': 'fadeIn 300ms',
+ 'fade-out': 'fadeOut 300ms',
+
+ 'dropdown-content-show': 'overlayContentShow 100ms cubic-bezier(0.16, 1, 0.3, 1)',
+ 'dropdown-content-hide': 'overlayContentHide 100ms cubic-bezier(0.16, 1, 0.3, 1)',
+
+ 'overlay-show': 'overlayContentShow 300ms cubic-bezier(0.16, 1, 0.3, 1)',
+ 'overlay-hide': 'overlayContentHide 300ms cubic-bezier(0.16, 1, 0.3, 1)',
+
+ 'fade-in-overlay-bg': 'fadeInOverlayBg 300ms',
+ 'fade-out-overlay-bg': 'fadeOutOverlayBg 300ms',
+
+ 'slide-down': 'slideDown 300ms cubic-bezier(0.87, 0, 0.13, 1)',
+ 'slide-up': 'slideUp 300ms cubic-bezier(0.87, 0, 0.13, 1)',
+
+ 'slide-down-normal': 'slideDownNormal 300ms cubic-bezier(0.87, 0, 0.13, 1)',
+ 'slide-up-normal': 'slideUpNormal 300ms cubic-bezier(0.87, 0, 0.13, 1)',
+
+ 'panel-slide-left-out': 'panelSlideLeftOut 200ms cubic-bezier(0.87, 0, 0.13, 1)',
+ 'panel-slide-left-in': 'panelSlideLeftIn 250ms cubic-bezier(0.87, 0, 0.13, 1)',
+ 'panel-slide-right-out': 'panelSlideRightOut 200ms cubic-bezier(0.87, 0, 0.13, 1)',
+ 'panel-slide-right-in': 'panelSlideRightIn 250ms cubic-bezier(0.87, 0, 0.13, 1)',
+
+ // tailwind class for this is `animate-dropdownFadeIn`
+ dropdownFadeIn: 'dropdownFadeIn 0.1s ease-out',
+ // tailwind class for this is `animate-dropdownFadeOut`
+ dropdownFadeOut: 'dropdownFadeOut 0.1s ease-out',
+ },
+ colors: {
+ ...colorClasses,
+ 'hi-contrast': `var(--colors-fixed-scale12)`,
+ 'lo-contrast': `var(--colors-fixed-scale1)`,
+ },
+ },
+ },
+ plugins: [
+ require('@mertasan/tailwindcss-variables'),
+ function ({ addUtilities, addVariant }) {
+ // addVariant('data-open', '&:[data-state=open]')
+ addUtilities({
+ ".dropdown-content[data-state='open']": {
+ animation: 'fadeIn 50ms ease-out',
+ },
+ ".dropdown-content[data-state='closed']": {
+ animation: 'fadeOut 50ms ease-in',
+ },
+
+ "[data-state='open'] .accordion-content-animation": {
+ animation: 'slideDown 200ms ease-out',
+ },
+ "[data-state='closed'] .accordion-content-animation": {
+ animation: 'slideUp 200ms ease-in',
+ },
+ '.text-code': {
+ margin: '0 0.2em',
+ padding: '0.2em 0.4em 0.1em',
+ background: 'hsla(0, 0%, 58.8%, 0.1)',
+ border: '1px solid hsla(0, 0%, 39.2%, 0.2)',
+ borderRadius: '3px',
+ },
+ '.no-scrollbar': {
+ /* Hide scrollbar for IE, Edge*/
+ '-ms-overflow-style': 'none',
+
+ /* Firefox */
+ 'scrollbar-width': 'none' /* Firefox */,
+
+ /* Hide scrollbar for Chrome, Safari and Opera */
+ '&::-webkit-scrollbar': {
+ display: 'none',
+ },
+ },
+ /* Add fadeout effect */
+ '.mask-fadeout-right': {
+ '-webkit-mask-image': 'linear-gradient(to right, white 98%, transparent 100%)',
+ 'mask-image': 'linear-gradient(to right, white 98%, transparent 100%)',
+ },
+ '.mask-fadeout-left': {
+ '-webkit-mask-image': 'linear-gradient(to left, white 98%, transparent 100%)',
+ 'mask-image': 'linear-gradient(to left, white 98%, transparent 100%)',
+ },
+ 'input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button':
+ {
+ '-webkit-appearance': 'none',
+ margin: '0',
+ },
+ })
+ addVariant('data-open-parent', '[data-state="open"] &')
+ addVariant('data-closed-parent', '[data-state="closed"] &')
+ addVariant('data-open', '&[data-state="open"]')
+ addVariant('data-closed', '&[data-state="closed"]')
+ addVariant('data-show', '&[data-state="show"]')
+ addVariant('data-hide', '&[data-state="hide"]')
+ addVariant('data-checked', '&[data-state="checked"]')
+ addVariant('data-unchecked', '&[data-state="unchecked"]')
+ addVariant('aria-expanded', '&[aria-expanded="true"]')
+ // addVariant('parent-data-open', '[data-state="open"]&')
+ },
+ function ({ matchUtilities, theme }) {
+ matchUtilities(
+ {
+ highlight: (value) => ({ boxShadow: `inset 0 1px 0 0 ${value}` }),
+ },
+ { values: flattenColorPalette(theme('backgroundColor')), type: 'color' }
+ ),
+ matchUtilities(
+ {
+ subhighlight: (value) => ({
+ boxShadow: `inset 0 -1px 0 0 ${value}`,
+ }),
+ },
+ {
+ values: flattenColorPalette(theme('backgroundColor')),
+ type: 'color',
+ }
+ ),
+ matchUtilities(
+ {
+ bordershadow: (value) => {
+ return {
+ boxShadow: `
+ var(--colors-blacka1) 0px 0px 0px 0px,
+ var(--colors-blacka1) 0px 0px 0px 0px,
+ var(--colors-blacka8) 0px 1px 1px 0px,
+ ${value} 0px 0px 0px 1px,
+ var(--colors-blacka1) 0px 0px 0px 0px,
+ var(--colors-blacka1) 0px 0px 0px 0px,
+ rgb(64 68 82 / 8%) 0px 2px 5px 0px;
+ `,
+ }
+ },
+ },
+ {
+ values: flattenColorPalette(theme('backgroundColor')),
+ type: 'color',
+ }
+ )
+ },
+ require('tailwindcss-radix')(),
+ forms,
+ ],
+}
+
+function arrayMergeFn(destinationArray, sourceArray) {
+ return destinationArray.concat(sourceArray).reduce((acc, cur) => {
+ if (acc.includes(cur)) return acc
+ return [...acc, cur]
+ }, [])
+}
+
+/**
+ * Merge Supabase UI and Tailwind CSS configurations
+ * @param {object} tailwindConfig - Tailwind config object
+ * @return {object} new config object
+ */
+function wrapper(tailwindConfig) {
+ let purge
+ if (Array.isArray(tailwindConfig.purge)) {
+ purge = {
+ content: tailwindConfig.purge,
+ }
+ } else {
+ purge = tailwindConfig.purge
+ }
+ return deepMerge({ ...tailwindConfig, purge }, uiConfig, {
+ arrayMerge: arrayMergeFn,
+ })
+}
+
+module.exports = wrapper
diff --git a/spec/Makefile b/spec/Makefile
index 65d02e57294..9964a13a95f 100644
--- a/spec/Makefile
+++ b/spec/Makefile
@@ -14,11 +14,14 @@ init:
###############################################################################
# Download all the specs
###############################################################################
-download: download.api.v1 download.storage.v1 download.tsdoc.v1 download.tsdoc.v2
+download: download.api.v1 download.auth.v1 download.storage.v1 download.tsdoc.v1 download.tsdoc.v2
download.api.v1:
curl -sS https://api.supabase.com/api/v1-json > $(REPO_DIR)/api_v0_openapi.json
+download.auth.v1:
+ curl -sS https://supabase.github.io/gotrue/swagger.json > $(REPO_DIR)/auth_v1_openapi.json
+
download.storage.v1:
curl -sS https://supabase.github.io/storage-api/api.json > $(REPO_DIR)/storage_v0_openapi.json
@@ -42,11 +45,14 @@ download.tsdoc.v2:
###############################################################################
# Transform docs into working files
###############################################################################
-transform: dereference.api.v0 dereference.storage.v0 dereference.tsdoc.v2 combine.tsdoc.v1 combine.tsdoc.v2
+transform: dereference.api.v0 dereference.auth.v1 dereference.storage.v0 dereference.tsdoc.v2 combine.tsdoc.v1 combine.tsdoc.v2
dereference.api.v0:
npx swagger-cli bundle --dereference --outfile $(REPO_DIR)/transforms/api_v0_openapi_deparsed.json $(REPO_DIR)/api_v0_openapi.json
+dereference.auth.v1:
+ npx swagger-cli bundle --dereference --outfile $(REPO_DIR)/transforms/auth_v1_openapi_deparsed.json $(REPO_DIR)/auth_v1_openapi.json
+
dereference.storage.v0:
npx swagger-cli bundle --dereference --outfile $(REPO_DIR)/transforms/storage_v0_openapi_deparsed.json $(REPO_DIR)/storage_v0_openapi.json
diff --git a/spec/WIP_supabase_js_v2_sdk.yaml b/spec/WIP_supabase_js_v2_sdk.yaml
deleted file mode 100644
index 82339fdb6f6..00000000000
--- a/spec/WIP_supabase_js_v2_sdk.yaml
+++ /dev/null
@@ -1,2665 +0,0 @@
-# The spec divided into 3 main sections:
-# info: general information about the library
-# types: a list of custom types
-# functions: public functions which the user can access
-
-sdkspec: '001'
-
-info:
- id: reference/supabase-js
- version: 'next' # {string} The current version number of the library.
- title: Supabase Client
- language: 'javascript' # {string} The language where this library is used.
- source: 'https://github.com/supabase/supabase-js' # {string} Where developers can find the source code.
- bugs: 'https://github.com/supabase/supabase-js/issues' # {string} Where developers can file bugs.
- spec: 'https://github.com/supabase/supabase-js/spec/libspec-v001.yml' # {string} Where developers can find this spec (to link directly in the docs).
- description: |
-
- Supabase JavaScript.
-
-functions:
- - id: function-create-client
- summary: 'Initializing'
- name: 'createClient()'
- tags: []
- links: []
- description: |
- You can initialize a new Supabase client using the `createClient()` method.
-
- The Supabase client is your entrypoint to the rest of the Supabase functionality
- and is the easiest way to interact with everything we offer within the Supabase ecosystem.
- usage: |
- ```js
- import { createClient } from '@supabase/supabase-js'
-
- const supabase = createClient('', '')
- ```
- examples:
- - id: example-init-basic
- summary: Create a Supabase client.
- code: |
- ```js
- import { createClient } from '@supabase/supabase-js'
-
- // Create a single supabase client for interacting with your database
- const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')
- ```
- - id: example-init-with-params
- summary: With additional parameters
- code: |
- ```js
- import { createClient } from '@supabase/supabase-js'
-
- const options = {
- schema: 'public',
- headers: { 'x-my-custom-header': 'my-app-name' },
- autoRefreshToken: true,
- persistSession: true,
- detectSessionInUrl: true
- }
- const supabase = createClient("https://xyzcompany.supabase.co", "public-anon-key", options)
- ```
- - id: example-init-scheams
- summary: API schemas
- description: |
- By default the API server points to the `public` schema. You can enable other database schemas within the Dashboard.
- Go to `Settings > API > Schema` and add the schema which you want to expose to the API.
-
- Note: each client connection can only access a single schema, so the code above can access the `other_schema` schema but cannot access the `public` schema.
- code: |
- ```js
- import { createClient } from '@supabase/supabase-js'
-
- // Provide a custom schema. Defaults to "public".
- const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', {
- schema: 'other_schema'
- })
- ```
- - id: example-init-fetch
- summary: Custom `fetch` implementation
- description: |
- `supabase-js` uses the [`cross-fetch`](https://www.npmjs.com/package/cross-fetch) library to make HTTP requests,
- but an alternative `fetch` implementation can be provided as an option.
- This is most useful in environments where `cross-fetch` is not compatible (for instance Cloudflare Workers).
- code: |
- ```js
- import { createClient } from '@supabase/supabase-js'
-
- const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key', {
- fetch: fetch.bind(globalThis)
- })
- ```
-
- - id: function-auth-signup
- summary: 'Sign up'
- name: 'signUp()'
- tags: ['auth']
- links: []
- usage: |
- ```js
- const { user, session, error } = await supabase.auth.signUp(options)
- ```
- description: |
- - By default, the user will need to verify their email address before logging in. If you would like to change this, you can disable "Email Confirmations" by going to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- - If "Email Confirmations" is turned on, a `user` is returned but `session` will be null
- - If "Email Confirmations" is turned off, both a `user` and a `session` will be returned
- - When the user confirms their email address, they will be redirected to localhost:3000 by default. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- - If signUp() is called for an existing confirmed user:
- - If "Enable email confirmations" is enabled on the "Authentication" -> "Settings" page, an obfuscated / fake user object will be returned.
- - If "Enable email confirmations" is disabled, an error with a message "User already registered" will be returned.
- - To check if a user already exists, refer to getUser().
- examples:
- - id: example-auth-signup-email
- summary: With email and password.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signUp({
- email: 'example@email.com',
- password: 'example-password',
- })
- ```
- - id: example-auth-signup-meta
- summary: With additional user meta data.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signUp(
- {
- email: 'example@email.com',
- password: 'example-password',
- },
- {
- data: {
- first_name: 'John',
- age: 27,
- }
- }
- )
- ```
- - id: example-auth-signup-phone
- summary: Sign up with Phone.
- description: |
- Supabase supports Phone Auth. After a user has verified their number, they can use the [`signIn()`](/docs/reference/javascript/auth-signin#sign-in-using-phone) method.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- phone: '+13334445555',
- password: 'some-password',
- })
-
- // After receiving an SMS with One Time Password.
- let { session, error } = await supabase.auth.verifyOTP({
- phone: '+13334445555',
- token: '123456',
- })
- ```
-
- - id: function-auth-signin
- summary: 'Sign in'
- name: 'signIn()'
- description: |
- - A user can sign up either via email or OAuth.
- - If you provide `email` without a `password`, the user will be sent a magic link.
- - The magic link's destination URL is determined by the SITE_URL config variable. To change this, you can go to Authentication -> Settings on [app.supabase.com](https://app.supabase.com)
- - Specifying a `provider` will open the browser to the relevant login page.
- examples:
- - id: example-signin-email
- summary: Sign in with email.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- email: 'example@email.com',
- password: 'example-password',
- })
- ```
- - id: example-signin-magic
- summary: Sign in with magic link.
- description: If no password is provided, the user will be sent a "magic link" to their email address, which they can click to open your application with a valid session. By default, a given user can only request a Magic Link once every 60 seconds.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- email: 'example@email.com'
- })
- ```
- - id: example-signin-third-party
- summary: Sign in using third-party providers.
- description: Supabase supports many different [third-party providers](https://supabase.com/docs/guides/auth#providers).
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- // provider can be 'github', 'google', 'gitlab', and more
- provider: 'github'
- })
- ```
- - id: example-signin-phone
- summary: Sign in with Phone.
- description: Supabase supports Phone Auth.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- phone: '+13334445555',
- password: 'some-password',
- })
- ```
- - id: example-signin-redirect
- summary: Sign in with redirect.
- description: |
- Note that the `redirectTo` param is only relevant for OAuth logins, where the login flow is managed by
- the Auth server. If you are using email/phone logins you should set up your own redirects (within the email/sms template).
-
- Sometimes you want to control where the user is redirected to after they are logged in. Supabase supports this for
- any URL path on your website (the URL must either be on the same domain as your Site URL [see Auth>Settings in dashboard], or must match one of the Additional Redirect URLs [also in Auth>Settings]).
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- provider: 'github'
- }, {
- redirectTo: 'https://example.com/welcome'
- })
- ```
- - id: example-signin-scopes
- summary: Sign in with scopes.
- description: |
- If you need additional data from an OAuth provider, you can include a space-separated list of scopes in your request to get back an OAuth provider token.
- You may also need to specify the scopes in the provider's OAuth app settings, depending on the provider.
- code: |
- ```js
- const { user, session, error } = await supabase.auth.signIn({
- provider: 'github'
- }, {
- scopes: 'repo gist notifications'
- })
- const oAuthToken = session.provider_token // use to access provider API
- ```
- - id: example-signin-refresh-token
- summary: Sign in using a refresh token (e.g. in React Native).
- description: |
- If you are completing a sign up or login in a React Native app you can pass the refresh token obtained from the provider to obtain a session.
- code: |
- ```js
- // An example using Expo's `AuthSession`
- const redirectUri = AuthSession.makeRedirectUri({ useProxy: false });
- const provider = 'google';
-
- AuthSession.startAsync({
- authUrl: `https://MYSUPABASEAPP.supabase.co/auth/v1/authorize?provider=${provider}&redirect_to=${redirectUri}`,
- returnUrl: redirectUri,
- }).then(async (response: any) => {
- if (!response) return;
- const { user, session, error } = await supabase.auth.signIn({
- refreshToken: response.params?.refresh_token,
- });
- });
- ```
-
- - id: function-auth-signout
- summary: 'Sign out'
- name: 'signOut()'
- examples:
- - id: example-signout
- summary: Sign out
- code: |
- ```js
- const { error } = await supabase.auth.signOut()
- ```
-
- - id: function-auth-session
- summary: 'Get user session'
- name: 'session()'
- examples:
- - id: example-session-basic
- summary: Get the session data
- code: |
- ```js
- const session = supabase.auth.session()
- ```
-
- - id: function-auth-user
- summary: 'Get user data'
- name: 'auth.user()'
- description: |
- This method gets the user object from memory.
- examples:
- - id: example-auth-user-get
- summary: Get the logged in user
- code: |
- ```js
- const user = supabase.auth.user()
- ```
-
- - id: function-auth-update
- summary: 'Update user metadata'
- name: 'update()'
- description: |
- User email: Email updates will send an email to both the user's current and new email with a confirmation link by default.
- To toggle this behavior off and only send a single confirmation link to the new email, toggle "Double confirm email changes" under "Authentication" -> "Settings" off.
-
-
- User metadata: It's generally better to store user data in a table inside your public schema (i.e. `public.users`).
- Use the `update()` method if you have data which rarely changes or is specific only to the logged in user.
- examples:
- - id: example-auth-update-email
- summary: Update email for authenticated user.
- description: Sends a "Confirm Email Change" email to the new email address.
- code: |
- ```js
- const { user, error } = await supabase.auth.update({email: 'new@email.com'})
- ```
- - id: example-auth-update-password
- summary: Update password for authenticated user.
- code: |
- ```js
- const { user, error } = await supabase.auth.update({password: 'new password'})
- ```
- - id: example-auth-update-meta
- summary: Update a user's metadata.
- code: |
- ```js
- const { user, error } = await supabase.auth.update({
- data: { hello: 'world' }
- })
- ```
-
- - id: function-auth-set-auth
- summary: 'Set the authenticated users'
- name: 'setAuth()'
- description: This is most useful on server-side functions where you cannot log the user in, but have access to the user's access token.
- examples:
- - id: example-auth-set-auth
- summary: Basic example
- code: |
- ```js
- function apiFunction(req, res) {
- // Assuming the access token was sent as a header "X-Supabase-Auth"
- const { access_token } = req.get('X-Supabase-Auth')
-
- // You can now use it within a Supabase Client
- const supabase = createClient("https://xyzcompany.supabase.co", "public-anon-key")
- const { user, error } = supabase.auth.setAuth(access_token)
-
- // This client will now send requests as this user
- const { data } = await supabase.from('your_table').select()
- }
- ```
- - id: example-auth-set-auth-express
- summary: With Express.
- code: |
- ```js
-
- /**
- * Make a request from the client to your server function
- */
- async function makeApiRequest() {
- const token = newClient.session()?.access_token
-
- await fetch('https://example.com/withAuth', {
- method: 'GET',
- withCredentials: true,
- credentials: 'include',
- headers: {
- 'Content-Type': 'application/json',
- 'Authorization': bearer, // Your own auth
- 'X-Supabase-Auth': token, // Set the Supabase user
- }
- })
- }
-
- /**
- * Use the Auth token in your server-side function.
- */
- async function apiFunction(req, res) {
- const { access_token } = req.get('X-Supabase-Auth')
-
- // You can now use it within a Supabase Client
- const supabase = createClient("https://xyzcompany.supabase.co", "public-anon-key")
- const { user, error } = supabase.auth.setAuth(access_token)
-
- // This client will now send requests as this user
- const { data } = await supabase.from('your_table').select()
- }
- ```
-
- - id: function-onauthstatechange
- summary: 'Listen to auth events'
- name: 'onAuthStateChange()'
- examples:
- - id: example-onauthstatechange
- summary: Listen to auth changes
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- console.log(event, session)
- })
- ```
- - id: example-onauthstatechange-signin
- summary: Listen to sign in
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- if (event == 'SIGNED_IN') console.log('SIGNED_IN', session)
- })
- ```
- - id: example-onauthstatechange-signout
- summary: Listen to sign out
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- if (event == 'SIGNED_OUT') console.log('SIGNED_OUT', session)
- })
- ```
- - id: example-onauthstatechange-refresh
- summary: Listen to token refresh
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- if (event == 'TOKEN_REFRESHED') console.log('TOKEN_REFRESHED', session)
- })
- ```
- - id: example-onauthstatechange-updates
- summary: Listen to user updates
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- if (event == 'USER_UPDATED') console.log('USER_UPDATED', session)
- })
- ```
- - id: example-onauthstatechange-delete
- summary: Listen to user deleted
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- if (event == 'USER_DELETED') console.log('USER_DELETED', session)
- })
- ```
- - id: example-onauthstatechange-password-recovery
- summary: Listen to password recovery events
- code: |
- ```js
- supabase.auth.onAuthStateChange((event, session) => {
- if (event == 'PASSWORD_RECOVERY') console.log('PASSWORD_RECOVERY', session)
- })
- ```
- - id: function-auth-getuser
- summary: 'Get User'
- name: 'getUser()'
- description: |
- - Fetches the user object from the database instead of local storage.
- - Note that user() fetches the user object from local storage which might not be the most updated.
- - Requires the user's access_token.
- examples:
- - id: example-auth-getuser
- summary: Fetch the user object using the access_token jwt.
- code: |
- ```js
- const { user, error } = await supabase.auth.api.getUser(
- 'ACCESS_TOKEN_JWT',
- )
- ```
-
- - id: function-auth-list-users
- summary: 'List all users'
- name: 'listUsers()'
- description: |
- - Requires a `service_role` key.
- - This function should be called on a server. Never expose your `service_role` key in the browser.
- examples:
- - id: example-auth-list-users
- summary: Get a full list of users.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.listUsers()
- ```
-
- - id: function-auth-create-user
- summary: 'Create user'
- name: 'auth.createUser()'
- description: |
- - Requires a `service_role` key.
- - This function should be called on a server. Never expose your `service_role` key in the browser.
- - If you do not provide the `email_confirm` and `phone_confirm` options to this function, both will default to false.
- examples:
- - id: example-create-user
- summary: Create a new user.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.createUser({
- email: 'user@email.com',
- password: 'password',
- user_metadata: { name: 'Yoda' }
- })
- ```
- - id: example-create-user-email
- summary: Auto-confirm email.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.createUser({
- email: 'user@email.com',
- email_confirm: true
- })
- ```
- - id: example-create-phone
- summary: Auto-confirm phone.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.createUser({
- phone: '1234567890',
- phone_confirm: true
- })
- ```
-
- - id: function-auth-delete-user
- summary: 'Delete user'
- name: 'deleteUser()'
- description: |
- - Requires a `service_role` key.
- - This function should be called on a server. Never expose your `service_role` key in the browser.
- examples:
- - id: example-delete-user
- summary: Remove a user completely.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.deleteUser(
- '715ed5db-f090-4b8c-a067-640ecee36aa0'
- )
- ```
-
- - id: function-auth-invite-by-email
- summary: Invite user by email
- name: 'inviteUserByEmail()'
- description: |
- - Requires a `service_role` key.
- - This function should only be called on a server. Never expose your `service_role` key in the browser.
- examples:
- - id: example-auth-invite-by-email
- summary: Basic example.
- code: |
- ```js
- const { data: user, error } = await supabase.auth
- .api
- .inviteUserByEmail('email@example.com')
- ```
-
- - id: function-auth-send-mobile-otp
- summary: 'Send mobile OTP'
- name: 'sendMobileOTP()'
- description: |
- - Requires a `service_role` key.
- - This function should only be called on a server. Never expose your `service_role` key in the browser.
- examples:
- - id: example-auth-mobile-otp
- summary: Basic example.
- code: |
- ```js
- const { data: user, error } = await supabase.auth
- .api
- .sendMobileOTP('12345879')
- ```
-
- - id: 'function-auth-reset-password'
- summary: 'Reset passwprd for email address'
- name: 'resetPasswordForEmail()'
- description: |
- Sends a reset request to an email address.
-
- When the user clicks the reset link in the email they will be forwarded to:
-
- `#access_token=x&refresh_token=y&expires_in=z&token_type=bearer&type=recovery`
-
- Your app must detect `type=recovery` in the fragment and display a password reset form to the user.
-
- You should then use the access_token in the url and new password to update the user as follows:
-
- ```js
- const { error, data } = await supabase.auth.api
- .updateUser(access_token, { password : new_password })
- ```
- examples:
- - id: example-auth-reset-password
- summary: Reset password
- code: |
- ```js
- const { data, error } = await supabase.auth.api
- .resetPasswordForEmail('user@email.com')
- ```
-
- - id: function-auth-generate-link
- summary: 'Generate Auth Link'
- name: 'generateLink()'
- description: |
- - Requires a `service_role` key.
- - This function should only be called on a server. Never expose your `service_role` key in the browser.
- examples:
- - id: example-auth-generate-link
- summary: Generate invite link.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.generateLink(
- 'invite',
- 'email@example.com'
- )
- ```
-
- - id: function-auth-update-user
- summary: 'Update user by ID'
- name: 'updateUserById()'
- description: |
- - Requires a `service_role` key.
- - This function should only be called on a server. Never expose your `service_role` key in the browser.
- examples:
- - id: example-auth-server-update-email
- summary: Updates a user's email.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.updateUserById(
- '6aa5d0d4-2a9f-4483-b6c8-0cf4c6c98ac4',
- { email: 'new@email.com' }
- )
- ```
- - id: example-auth-server-update-password
- summary: Updates a user's password.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.updateUserById(
- '6aa5d0d4-2a9f-4483-b6c8-0cf4c6c98ac4',
- { password: 'new_password' }
- )
- ```
- - id: example-auth-server-update-meta
- summary: Updates a user's metadata.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.updateUserById(
- '6aa5d0d4-2a9f-4483-b6c8-0cf4c6c98ac4',
- { user_metadata: { hello: 'world' } }
- )
- ```
- - id: example-auth-server-update-app-data
- summary: Updates a user's app_metadata.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.updateUserById(
- '6aa5d0d4-2a9f-4483-b6c8-0cf4c6c98ac4',
- { app_metadata: { plan: 'trial' } }
- )
- ```
- - id: example-auth-server-confirm-email
- summary: Confirms a user's email address.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.updateUserById(
- '6aa5d0d4-2a9f-4483-b6c8-0cf4c6c98ac4',
- { email_confirm: true }
- )
- ```
- - id: example-auth-server-confirm-phone
- summary: Confirms a user's phone number.
- code: |
- ```js
- const { data: user, error } = await supabase.auth.api.updateUserById(
- '6aa5d0d4-2a9f-4483-b6c8-0cf4c6c98ac4',
- { phone_confirm: true }
- )
- ```
- - id: function-functions-invoke
- summary: 'Invoke an Edge Function'
- name: 'invoke()'
- description: |
- Invokes a Supabase Function.
-
- :::caution
-
- Edge Functions are Experimental until 1 August 2022. There will breaking changes. Do not use them in Production.
-
- :::
-
- We have released Supabase Functions to gather feedback. You're welcome to try them out and send us feedback but we strongly advise against using them for anything in production.
- There will be breaking changes with no notice.
-
- - Requires an Authorization header.
- - Invoke params generally match the [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) spec.
- examples:
- - id: example-functions-invoke-basic
- summary: Basic invocation.
- code: |
- ```js
- const { data: user, error } = await supabase.functions.invoke('hello', {
- body: JSON.stringify({ foo: 'bar' })
- })
- ```
- - id: example-functions-invoke-response
- summary: Specifying response type.
- description: |
- By default, `invoke()` will parse the response as JSON. You can parse the response in the following formats: `json`, `blob`, `text`, and `arrayBuffer`.
- code: |
- ```js
- const { data: user, error } = await supabase.functions.invoke('hello', {
- responseType: 'text',
- body: JSON.stringify({ foo: 'bar' })
- })
- ```
- - id: example-functions-invoke-headers
- summary: Parsing custom headers.
- description: |
- You can pass custom headers to your function. Note: supabase-js automatically passes the `Authorization` header with the signed in user's JWT.
- code: |
- ```js
- const { data: user, error } = await supabase.functions.invoke('hello', {
- headers: {
- "my-custom-header": 'my-custom-header-value'
- },
- body: JSON.stringify({ foo: 'bar' })
- })
- ```
-
- - id: function-data-select
- summary: 'Fetch data from database'
- name: 'select()'
- description: |
- - By default, Supabase projects will return a maximum of 1,000 rows. This setting can be changed in Project API Settings. It's recommended that you keep it low to limit the payload size of accidental or malicious requests. You can use `range()` queries to paginate through your data.
- - `select()` can be combined with [Modifiers](https://supabase.com/docs/reference/javascript/using-modifiers)
- - `select()` can be combined with [Filters](https://supabase.com/docs/reference/javascript/using-filters)
- - If using the Supabase hosted platform `apikey` is technically a reserved keyword, since the API gateway will pluck it out for authentication. [It should be avoided as a column name](https://github.com/supabase/supabase/issues/5465).
- examples:
- - id: example-data-select
- summary: Getting your data
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select()
- ```
- - id: example-data-select-columns
- summary: Selecting specific columns
- description: You can select specific fields from your tables.
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name')
- ```
- - id: example-data-select-foreign
- summary: Query foreign tables
- description: |
- If your database has foreign key relationships, you can query related tables too.
-
- If you're in a situation where your tables are **NOT** directly related, but instead are joined by a _join table_,
- you can still use the `select()` method to query the related data. The PostgREST engine detects the relationship automatically.
- For more details, [follow the link](https://postgrest.org/en/latest/api.html#embedding-through-join-tables).
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select(`
- name,
- cities (
- name
- )
- `)
- ```
- - id: example-data-select-foreign-multiple
- summary: Query the same foreign table multiple times
- description: |
- Sometimes you will need to query the same foreign table twice.
- In this case, you can use the name of the joined column to identify
- which join you intend to use. For convenience, you can also give an
- alias for each column. For example, if we had a shop of products,
- and we wanted to get the supplier and the purchaser at the same time
- (both in the users) table:
- code: |
- ```js
- const { data, error } = await supabase
- .from('products')
- .select(`
- id,
- supplier:supplier_id ( name ),
- purchaser:purchaser_id ( name )
- `)
- ```
- - id: example-data-select-inner
- summary: Filtering with inner joins
- description: |
- If you want to filter a table based on a child table's values you can use the `!inner()` function. For example, if you wanted
- to select all rows in a `message` table which belong to a user with the `username` "Jane":
- code: |
- ```js
- const { data, error } = await supabase
- .from('messages')
- .select('*, users!inner(*)')
- .eq('users.username', 'Jane')
- ```
- - id: example-data-select-count
- summary: Querying with count option
- description: |
- You can get the number of rows by using the count option.
- Allowed values for count option are `null`, [exact](https://postgrest.org/en/stable/api.html#exact-count), [planned](https://postgrest.org/en/stable/api.html#planned-count) and [estimated](https://postgrest.org/en/stable/api.html#estimated-count).
- code: |
- ```js
- const { data, error, count } = await supabase
- .from('cities')
- .select('name', { count: 'exact' }) // if you don't want to return any rows, you can use { count: 'exact', head: true }
- ```
- - id: example-data-select-json
- summary: Querying JSON data
- description: |
- If you have data inside of a JSONB column, you can apply select
- and query filters to the data values. Postgres offers a
- [number of operators](https://www.postgresql.org/docs/current/functions-json.html)
- for querying JSON data. Also see
- [PostgREST docs](http://postgrest.org/en/v7.0.0/api.html#json-columns) for more details.
- code: |
- ```js
- const { data, error } = await supabase
- .from('users')
- .select(`
- id, name,
- address->street
- `)
- .eq('address->postcode', 90210)
- ```
- - id: example-data-select-csv
- summary: Return data as CSV
- description: |
- By default the data is returned in JSON format, however you can also request for it to be returned as Comma Separated Values.
- code: |
- ```js
- const { data, error } = await supabase
- .from('users')
- .select()
- .csv()
- ```
- - id: example-data-select-abort
- summary: Aborting requests in-flight
- description: |
- You can use an [`AbortController`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) to abort requests. Note that `status` and `statusText` doesn't mean anything for aborted requests, since the request wasn't actually fulfilled.
- code: |
- ```js
- const ac = new AbortController()
- supabase
- .from('very_big_table')
- .select()
- .abortSignal(ac.signal)
- .then(console.log)
- ac.abort()
- // {
- // error: {
- // message: 'FetchError: The user aborted a request.',
- // details: '',
- // hint: '',
- // code: ''
- // },
- // data: null,
- // body: null,
- // count: null,
- // status: 400,
- // statusText: 'Bad Request'
- // }
- ```
-
- - id: 'function-data-insert'
- summary: 'Insert data into database'
- name: 'insert()'
- description: |
- - By default, every time you run `insert()`, the client library will make a `select` to return the full record.
- This is convenient, but it can also cause problems if your Policies are not configured to allow the `select` operation.
- If you are using Row Level Security and you are encountering problems, try setting the `returning` param to `minimal`.
- examples:
- - id: example-data-create
- summary: Create a record
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .insert([
- { name: 'The Shire', country_id: 554 }
- ])
- ```
- - id: example-data-create-bulk
- summary: Bulk create
- description: |
- When running a bulk create, the operation is handled in a single transaction. If any of the inserts fail, all other operations are
- rolled back.
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .insert([
- { name: 'The Shire', country_id: 554 },
- { name: 'Rohan', country_id: 555 },
- ])
- ```
- - id: example-data-create-upsert
- summary: Upsert
- description: |
- For upsert, if set to true, primary key columns would need to be included
- in the data parameter in order for an update to properly happen. Also, primary keys
- used must be natural, not surrogate. There are however,
- [workarounds](https://github.com/PostgREST/postgrest/issues/1118)
- for surrogate primary keys.
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .insert(
- [
- { name: 'The Shire', country_id: 554 },
- { name: 'Rohan', country_id: 555 },
- { name: 'City by the Bay', country_id:840}
- ],
- { upsert: true })
- ```
-
- - id: function-data-update
- summary: 'Update data in database'
- name: 'update()'
- description: |
- - `update()` should always be combined with [Filters](https://supabase.com/docs/reference/javascript/using-filters) to target the item(s) you wish to update.
- examples:
- - id: example-data-update-basic
- summary: Updating your data
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Middle Earth' })
- .match({ name: 'Auckland' })
- ```
- - id: example-data-update-json
- summary: Updating JSON data
- description: |
- Postgres offers a
- [number of operators](https://www.postgresql.org/docs/current/functions-json.html)
- for working with JSON data. Right now it is only possible to update an entire JSON document,
- but we are [working on ideas](https://github.com/PostgREST/postgrest/issues/465) for updating individual keys.
- code: |
- ```js
- const { data, error } = await supabase
- .from('users')
- .update(`
- address: {
- street: 'Melrose Place',
- postcode: 90210
- }
- `)
- .eq('address->postcode', 90210)
- ```
-
- - id: function-data-upsert
- summary: 'Upsert data into database'
- name: 'upsert()'
- description: |
- - Primary keys should be included in the data payload in order for an update to work correctly.
- - Primary keys must be natural, not surrogate. There are however, [workarounds](https://github.com/PostgREST/postgrest/issues/1118) for surrogate primary keys.
- examples:
- - id: example-data-upsert-basic
- summary: Upsert your data
- code: |
- ```js
- const { data, error } = await supabase
- .from('messages')
- .upsert({ id: 3, message: 'foo', username: 'supabot' })
- ```
- - id: example-data-upsert-bulk
- summary: Bulk Upsert your data
- code: |
- ```js
- const { data, error } = await supabase
- .from('messages')
- .upsert([
- { id: 3, message: 'foo', username: 'supabot' },
- { id: 4, message: 'bar', username: 'supabot' }
- ])
- ```
- - id: example-data-upsert-constraints
- summary: Upserting into tables with constraints
- description: |
- Running the following will cause supabase to upsert data into the `users` table.
- If the username 'supabot' already exists, the `onConflict` argument tells supabase to overwrite that row
- based on the column passed into `onConflict`.
- code: |
- ```js
- const { data, error } = await supabase
- .from('users')
- .upsert({ username: 'supabot' }, { onConflict: 'username' })
- ```
- - id: example-data-upsert-exact
- summary: Return the exact number of rows
- code: |
- ```js
- const { data, error, count } = await supabase
- .from('users')
- .upsert({
- id: 3, message: 'foo',
- username: 'supabot'
- }, {
- count: 'exact'
- })
- ```
-
- - id: function-data-delete
- summary: 'Delete data from database'
- name: 'delete()'
- description: |
- - `delete()` should always be combined with [filters](https://supabase.com/docs/reference/javascript/using-filters) to target the item(s) you wish to delete.
- - If you use `delete()` with filters and you have
- [RLS](https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security) enabled, only
- rows visible through `SELECT` policies are deleted. Note that by default
- no rows are visible, so you need at least one `SELECT`/`ALL` policy that
- makes the rows visible.
- examples:
- - id: example-data-delete-basic
- summary: Delete records
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .match({ id: 666 })
- ```
-
- - id: function-data-rpc
- summary: 'Execute Postgres functions'
- name: 'rpc()'
- description: |
- You can call Postgres functions as a "Remote Procedure Call".
-
- That's a fancy way of saying that you can put some logic into your database then call it from anywhere.
- It's especially useful when the logic rarely changes - like password resets and updates.
-
- ```sql
- create or replace function hello_world() returns text as $$
- select 'Hello world';
- $$ language sql;
- ```
- examples:
- - id: example-data-rpc-basic
- summary: Call a Postgres function
- description: This is an example of invoking a Postgres function with no parameters.
- code: |
- ```js
- const { data, error } = await supabase
- .rpc('hello_world')
- ```
- - id: example-data-rpc-parameters
- summary: With Parameters
- code: |
- ```js
- const { data, error } = await supabase
- .rpc('echo_city', { name: 'The Shire' })
- ```
- - id: example-data-rpc-bulk
- summary: Bulk processing
- description: You can process large payloads at once using [array parameters](https://postgrest.org/en/stable/api.html#calling-functions-with-array-parameters).
- code: |
- ```js
- const { data, error } = await postgrest
- .rpc('echo_cities', { names: ['The Shire', 'Mordor'] })
- ```
- - id: example-data-rpc-filters
- summary: With filters
- description: |
- Postgres functions that return tables can also be combined with
- [Modifiers](/docs/reference/javascript/using-modifiers) and
- [Filters](https://supabase.com/docs/reference/javascript/using-filters).
- code: |
- ```js
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .select('name, population')
- .eq('name', 'The Shire')
- ```
- - id: example-data-rpc-count
- summary: With count option
- description: |
- You can specify a count option to get the row count along with your data.
- Allowed values for count option are `null`, `exact`, `planned` and `estimated`.
- code: |
- ```js
- const { data, error, count } = await supabase
- .rpc('hello_world', {}, { count: 'exact' })
- ```
-
- - id: function-realtime-subscribe
- summary: 'Subscribe to database changes'
- name: 'on().subscribe()'
- description: |
- - Realtime is disabled by default for new Projects for better database performance and security. You can turn it on by [managing replication](https://supabase.com/docs/guides/api#managing-realtime).
- - If you want to receive the "previous" data for updates and deletes, you will need to set `REPLICA IDENTITY` to `FULL`, like this: `ALTER TABLE your_table REPLICA IDENTITY FULL;`
- examples:
- - id: example-data-realtime-basic
- summary: Listen to all database changes
- code: |
- ```js
- const mySubscription = supabase
- .from('*')
- .on('*', payload => {
- console.log('Change received!', payload)
- })
- .subscribe()
- ```
- - id: example-data-realtime-table
- summary: Listening to a specific table
- code: |
- ```js
- const mySubscription = supabase
- .from('countries')
- .on('*', payload => {
- console.log('Change received!', payload)
- })
- .subscribe()
- ```
- - id: example-data-realtime-inserts
- summary: Listening to inserts
- code: |
- ```js
- const mySubscription = supabase
- .from('countries')
- .on('INSERT', payload => {
- console.log('Change received!', payload)
- })
- .subscribe()
- ```
- - id: example-data-realtime-updates
- summary: Listening to updates
- description: |
- By default, Supabase will send only the updated record. If you want to receive the previous values as well you can
- enable full replication for the table you are listening too:
-
- ```sql
- alter table "your_table" replica identity full;
- ```
- code: |
- ```js
- const mySubscription = supabase
- .from('countries')
- .on('UPDATE', payload => {
- console.log('Change received!', payload)
- })
- .subscribe()
- ```
- - id: example-data-realtime-deletes
- summary: Listening to deletes
- description: |
- By default, Supabase does not send deleted records. If you want to receive the deleted record you can
- enable full replication for the table you are listening too:
-
- ```sql
- alter table "your_table" replica identity full;
- ```
- code: |
- ```js
- const mySubscription = supabase
- .from('countries')
- .on('DELETE', payload => {
- console.log('Change received!', payload)
- })
- .subscribe()
- ```
- - id: example-data-realtime-multiple-events
- summary: Listening to multiple events
- description: You can chain listeners if you want to listen to multiple events for each table.
- code: |
- ```js
- const mySubscription = supabase
- .from('countries')
- .on('INSERT', handleRecordInserted)
- .on('DELETE', handleRecordDeleted)
- .subscribe()
- ```
- - id: example-data-realtime-rls
- summary: Listening to row level changes
- description: |
- You can listen to individual rows using the format `{table}:{col}=eq.{val}` - where `{col}` is the column name, and `{val}` is the value which you want to match.
-
- - ``eq`` filter works with all database types as under the hood, it's casting both the filter value and the database value to the correct type and then comparing them.
- code: |
- ```js
- const mySubscription = supabase
- .from('countries:id=eq.200')
- .on('UPDATE', handleRecordUpdated)
- .subscribe()
- ```
-
- - id: function-realtime-remove
- summary: 'Remove database subscription'
- name: 'removeSubscription()'
- description: |
- - Removing subscriptions is a great way to maintain the performance of your project's database. Supabase will automatically handle cleanup 30 seconds after a user is disconnected, but unused subscriptions may cause degradation as more users are simultaneously subscribed.
- examples:
- - id: example-data-realtime-remove
- summary: Remove a subscription
- code: |
- ```js
- supabase.removeSubscription(mySubscription)
- ```
-
- - id: function-realtime-remove-all
- summary: 'Remove all subscriptions'
- name: 'removeAllSubscriptions()'
- description: |
- - Removing subscriptions is a great way to maintain the performance of your project's database. Supabase will automatically handle cleanup 30 seconds after a user is disconnected, but unused subscriptions may cause degradation as more users are simultaneously subscribed.
- examples:
- - id: example-data-realtime-removeall
- summary: Removes all subscriptions
- code: |
- ```js
- supabase.removeAllSubscriptions()
- ```
-
- - id: function-realtime-getsubscription
- summary: 'Get all subcscriptions'
- name: 'getSubscriptions()'
- examples:
- - id: example-data-realtime-getsubscriptions
- summary: Get all subscriptions
- code: |
- ```js
- const subscriptions = supabase.getSubscriptions()
- ```
-
- - id: function-storage-list-buckets
- summary: 'List all buckets'
- name: 'listBuckets()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: `select`
- - `objects` permissions: none
- examples:
- - id: example-storage-list-buckets
- summary: List buckets
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .listBuckets()
- ```
-
- - id: function-storage-bucket-get
- summary: 'Get a single bucket'
- name: 'getBucket()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: `select`
- - `objects` permissions: none
- examples:
- - id: example-storage-bucket-get
- summary: Get bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .getBucket('avatars')
- ```
-
- - id: function-storage-bucket-create
- summary: 'Create a new bucket'
- name: 'createBucket()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: `insert`
- - `objects` permissions: none
- examples:
- - id: example-storage-bucket-create
- summary: Create bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .createBucket('avatars', { public: false })
- ```
-
- - id: function-storate-bucket-empty
- summary: 'Empty a bucket'
- name: 'emptyBucket()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: `select`
- - `objects` permissions: `select` and `delete`
- examples:
- - id: example-storage-bucket-empty
- summary: Empty bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .emptyBucket('avatars')
- ```
- - id: function-storage-bucket-update
- summary: 'updateBucket()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: `update`
- - `objects` permissions: none
- examples:
- - id: example-storage-bucket-update
- summary: Update bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .updateBucket('avatars', { public: false })
- ```
-
- - id: function-storage-bucket-delete
- summary: 'deleteBucket()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: `select` and `delete`
- - `objects` permissions: none
- examples:
- - id: example-storage-bucket-delete
- summary: Delete bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .deleteBucket('avatars')
- ```
-
- - id: function-storage-upload
- summary: 'Upload a file'
- name: 'from.upload()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `insert`
- - For React Native, using either `Blob`, `File` or `FormData` does not work as intended. Upload file using `ArrayBuffer` from base64 file data instead, see example below.
- examples:
- - id: example-storage-file-upload
- summary: Upload file
- code: |
- ```js
- const avatarFile = event.target.files[0]
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .upload('public/avatar1.png', avatarFile, {
- cacheControl: '3600',
- upsert: false
- })
- ```
- - id: example-storage-file-upload-base64
- summary: Upload file using `ArrayBuffer` from base64 file data
- code: |
- ```js
- import { decode } from 'base64-arraybuffer'
-
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .upload('public/avatar1.png', decode('base64FileData'), {
- contentType: 'image/png'
- })
- ```
-
- - id: functions-storage-file-update
- summary: 'Update a file'
- name: 'storage.update()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `update` and `select`
- - For React Native, using either `Blob`, `File` or `FormData` does not work as intended. Update file using `ArrayBuffer` from base64 file data instead, see example below.
- examples:
- - id: example-storage-file-update
- summary: Update file
- code: |
- ```js
- const avatarFile = event.target.files[0]
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .update('public/avatar1.png', avatarFile, {
- cacheControl: '3600',
- upsert: false
- })
- ```
- - id: example-storage-file-upload-base-64
- summary: Update file using `ArrayBuffer` from base64 file data
- code: |
- ```js
- import {decode} from 'base64-arraybuffer'
-
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .update('public/avatar1.png', decode('base64FileData'), {
- contentType: 'image/png'
- })
- ```
-
- - id: function-storage-file-move
- summary: 'Move a file'
- name: 'from.move()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `update` and `select`
- examples:
- - id: example-storage-file-move
- summary: Move file
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .move('public/avatar1.png', 'private/avatar2.png')
- ```
-
- - id: function-storage-file-copy
- summary: 'Copy a file'
- name: 'from.copy()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `insert` and `select`
- examples:
- - id: example-storage-file-copy
- summary: Copy file
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .copy('public/avatar1.png', 'private/avatar2.png')
- ```
-
- - id: function-storage-signed-url
- summary: 'Create a signed URL'
- name: 'from.createSignedUrl()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `select`
- examples:
- - id: example-storage-file-signed-url
- summary: Create Signed URL
- code: |
- ```js
- const { signedURL, error } = await supabase
- .storage
- .from('avatars')
- .createSignedUrl('folder/avatar1.png', 60)
- ```
-
- - id: function-storage-signed-urls
- summary: 'Sign multiple URLs'
- name: 'storage.createSignedUrls()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `select`
- examples:
- - id: example-storage-file-signed-urls
- summary: Create Signed URLs
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .createSignedUrls(['folder/avatar1.png', 'folder/avatar2.png'], 60)
- ```
-
- - id: function-storage-public-url
- summary: 'Get public URL'
- name: 'from.getPublicUrl()'
- description: |
- - The bucket needs to be set to public, either via [updateBucket()](https://supabase.com/docs/reference/javascript/storage-updatebucket) or by going to Storage on [app.supabase.com](https://app.supabase.com), clicking the overflow menu on a bucket and choosing "Make public"
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: none
- examples:
- - id: example-storage-file-public
- summary: Returns the URL for an asset in a public bucket
- code: |
- ```js
- const { publicURL, error } = supabase
- .storage
- .from('public-bucket')
- .getPublicUrl('folder/avatar1.png')
- ```
-
- - id: function-storage-download
- summary: 'Download a file'
- name: 'from.download()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `select`
- examples:
- - id: example-storage-file-download
- summary: Download file
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .download('folder/avatar1.png')
- ```
-
- - id: function-storage-file-remove
- summary: 'from.remove()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `delete` and `select`
- examples:
- - id: example-storage-file-upload
- summary: Delete file
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .remove(['folder/avatar1.png'])
- ```
-
- - id: function-storage-file-list
- summary: 'List files'
- name: 'from.list()'
- description: |
- - Policy permissions required:
- - `buckets` permissions: none
- - `objects` permissions: `select`
- examples:
- - id: example-storage-file-list
- summary: List files in a bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .list('folder', {
- limit: 100,
- offset: 0,
- sortBy: { column: 'name', order: 'asc' },
- })
- ```
- - id: example-storage-file-search
- summary: Search files in a bucket
- code: |
- ```js
- const { data, error } = await supabase
- .storage
- .from('avatars')
- .list('folder', {
- limit: 100,
- offset: 0,
- sortBy: { column: 'name', order: 'asc' },
- search: 'jon'
- })
- ```
-
- - id: function-data-limit
- summary: 'Limit rows returned'
- name: 'limit()'
- description: |
- Modifiers can be used on `select()` queries.
-
- If a Postgres function returns a table response, you can also apply modifiers to the `rpc()` function.
- examples:
- - id: example-data-limit-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .limit(1)
- ```
- - id: example-data-limit-embedded
- summary: With embedded resources
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, cities(name)')
- .eq('name', 'United States')
- .limit(1, { foreignTable: 'cities' })
- ```
-
- - id: function-data-order
- summary: 'Order results'
- name: 'order()'
- examples:
- - id: example-data-order-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .order('id', { ascending: false })
- ```
- - id: example-data-order-embedded
- summary: With embedded resources
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, cities(name)')
- .eq('name', 'United States')
- .order('name', {foreignTable: 'cities'})
- ```
-
- - id: function-data-range
- summary: 'Select a range of data'
- name: 'range()'
- examples:
- - id: example-data-range-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .range(0,3)
- ```
-
- - id: function-data-single
- summary: 'Get a single row of data'
- name: 'single()'
- examples:
- - id: example-data-single-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .limit(1)
- .single()
- ```
-
- - id: function-data-maybe-single
- summary: 'Return a single row if it exists'
- name: maybeSingle()
- examples:
- - id: example-data-maybe-single
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .eq('name', 'Singapore')
- .maybeSingle()
- ```
-
- - id: function-filter-or
- summary: 'Apply multiple filters with OR conditional'
- name: .or()
- description: |
- - `.or()` expects you to use the raw [PostgREST syntax](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for the filter names and values.
-
- ```js
- .or('id.in.(6,7), arraycol.cs.{"a","b"}') // Use Postgres list () for in filter. Array {} for array column and 'cs' for contains.
- .or(`id.in.(${arrList}),arraycol.cs.{${arr}}`) // You can insert a javascipt array for list or array on array column.
- .or(`id.in.(${arrList}),rangecol.cs.[${arrRange})`) // You can insert a javascipt array for list or range on a range column.
- ```
- examples:
- - id: example-filter-or-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .or('id.eq.20,id.eq.30')
- ```
- - id: example-filter-or-and
- summary: Use `or` with `and`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .or('id.gt.20,and(name.eq.New Zealand,name.eq.France)')
- ```
- - id: example-filter-or-select-foreign
- summary: Use `or` on foreign tables
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('id, cities(*)')
- .or('name.eq.Wellington,name.eq.Paris', { foreignTable: "cities" })
- ```
-
- - id: function-filter-not
- summary: 'Apply a "not" filter'
- name: .not()
- description: |
- - `.not()` expects you to use the raw [PostgREST syntax](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for the filter names and values.
-
- ```js
- .not('name','eq','Paris')
- .not('arraycol','cs','{"a","b"}') // Use Postgres array {} for array column and 'cs' for contains.
- .not('rangecol','cs','(1,2]') // Use Postgres range syntax for range column.
- .not('id','in','(6,7)') // Use Postgres list () for in filter.
- .not('id','in',`(${arr})`) // You can insert a javascript array.
- ```
- examples:
- - id: example-filter-not-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .not('name', 'eq', 'Paris')
- ```
- - id: example-filter-not-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .not('name', 'eq', 'Paris')
- ```
- - id: example-filter-not-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .not('name', 'eq', 'Paris')
- ```
- - id: example-filter-not-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .not('name', 'eq', 'Paris')
- ```
-
- - id: function-filter-match
- summary: Match on several criteria
- name: .match()
- examples:
- - id: example-filter-match-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .match({name: 'Beijing', country_id: 156})
- ```
- - id: example-filter-match-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .match({name: 'Beijing', country_id: 156})
- ```
- - id: example-filter-match-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .match({name: 'Beijing', country_id: 156})
- ```
- - id: example-filter-match-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .match({name: 'Beijing', country_id: 156})
- ```
-
- - id: function-filter-eq
- summary: Filter by exact equality
- name: .eq()
- examples:
- - id: example-filter-eq-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .eq('name', 'The shire')
- ```
- - id: example-filter-eq-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .eq('name', 'San Francisco')
- ```
- - id: example-filter-eq-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .eq('name', 'Mordor')
- ```
- - id: example-filter-eq-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .eq('name', 'San Francisco')
- ```
-
- - id: function-filter-neq
- summary: Filter by not equal
- name: .neq()
- examples:
- - id: example-filter-neq-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .neq('name', 'The shire')
- ```
- - id: example-filter-neq-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .neq('name', 'San Francisco')
- ```
- - id: example-filter-neq-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .neq('name', 'Mordor')
- ```
- - id: example-filter-neq-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .neq('name', 'Lagos')
- ```
-
- - id: function-filter-gt
- summary: Filter by greater than
- name: .gt()
- examples:
- - id: example-filter-gt-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .gt('country_id', 250)
- ```
- - id: example-filter-gt-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .gt('country_id', 250)
- ```
- - id: example-filter-gt-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .gt('country_id', 250)
- ```
- - id: example-filter-gt-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .gt('country_id', 250)
- ```
-
- - id: function-filter-gte
- summary: Filter by greater than or equal
- name: .gte()
- examples:
- - id: example-filter-gte-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .gte('country_id', 250)
- ```
- - id: example-filter-gte-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .gte('country_id', 250)
- ```
- - id: example-filter-gte-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .gte('country_id', 250)
- ```
- - id: example-filter-gte-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .gte('country_id', 250)
- ```
-
- - id: function-filter-lt
- summary: Filter by less than
- name: .lt()
- examples:
- - id: example-filter-lt-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .lt('country_id', 250)
- ```
- - id: example-filter-lt-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .lt('country_id', 250)
- ```
- - id: example-filter-lt-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .lt('country_id', 250)
- ```
- - id: example-filter-lt-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .lt('country_id', 250)
- ```
-
- - id: function-filter-lte
- summary: Filter by TBD
- name: .lte()
- examples:
- - id: example-filter-lte-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .lte('country_id', 250)
- ```
- - id: example-filter-lte-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .lte('country_id', 250)
- ```
- - id: example-filter-lte-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .lte('country_id', 250)
- ```
- - id: example-filter-lte-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .lte('country_id', 250)
- ```
-
- - id: function-filter-like
- summary: Filter by string equality
- name: .like()
- examples:
- - id: example-filter-like-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .like('name', '%la%')
- ```
- - id: example-filter-like-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .like('name', '%la%')
- ```
- - id: example-filter-like-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .like('name', '%la%')
- ```
- - id: example-filter-like-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .like('name', '%la%')
- ```
-
- - id: function-filter-ilike
- summary: Filter by string equality (case insensitive)
- name: .ilike()
- examples:
- - id: example-filter-ilike-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .ilike('name', '%la%')
- ```
- - id: example-filter-ilike-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .ilike('name', '%la%')
- ```
- - id: example-filter-ilike-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .ilike('name', '%la%')
- ```
- - id: example-filter-ilike-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .ilike('name', '%la%')
- ```
-
- - id: function-filter-is
- summary: Filter by null values
- name: .is()
- examples:
- - id: example-filter-is-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .is('name', null)
- ```
- - id: example-filter-is-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .is('name', null)
- ```
- - id: example-filter-is-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .is('name', null)
- ```
- - id: example-filter-is-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .is('name', null)
- ```
-
- - id: function-filter-in
- summary: Filter if in array
- name: .in()
- examples:
- - id: example-filter-in-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .in('name', ['Rio de Janeiro', 'San Francisco'])
- ```
- - id: example-filter-in-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .in('name', ['Rio de Janeiro', 'San Francisco'])
- ```
- - id: example-filter-in-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .in('name', ['Rio de Janeiro', 'San Francisco'])
- ```
- - id: example-filter-in-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .in('name', ['Rio de Janeiro', 'San Francisco'])
- ```
-
- - id: function-filter-contains
- summary: Filter if TBD
- name: .contains()
- description: |
- - `.contains()` can work on array columns or range columns.
- It is very useful for finding rows where a tag array contains all the values in the filter array.
-
- ```js
- .contains('arraycol',["a","b"]) // You can use a javascript array for an array column
- .contains('arraycol','{"a","b"}') // You can use a string with Postgres array {} for array column.
- .contains('rangecol','(1,2]') // Use Postgres range syntax for range column.
- .contains('rangecol',`(${arr}]`) // You can insert an array into a string.
- ```
- examples:
- - id: example-filter-contains-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, main_exports')
- .contains('main_exports', ['oil'])
- ```
- - id: example-filter-contains-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .contains('main_exports', ['oil'])
- ```
- - id: example-filter-contains-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .contains('main_exports', ['oil'])
- ```
- - id: example-filter-contains-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .contains('main_exports', ['oil'])
- ```
-
- - id: function-filter-contained-by
- summary: Filter by TBD
- name: .containedBy()
- description: |
- - `.containedBy()` can work on array columns or range columns.
-
- ```js
- .containedBy('arraycol',["a","b"]) // You can use a javascript array for an array column
- .containedBy('arraycol','{"a","b"}') // You can use a string with Postgres array {} for array column.
- .containedBy('rangecol','(1,2]') // Use Postgres range syntax for range column.
- .containedBy('rangecol',`(${arr}]`) // You can insert an array into a string.
- ```
- examples:
- - id: example-filter-contained-by-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, main_exports')
- .containedBy('main_exports', ['cars', 'food', 'machine'])
- ```
- - id: example-filter-contained-by-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .containedBy('main_exports', ['orks', 'surveillance', 'evil'])
- ```
- - id: example-filter-contained-by-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .containedBy('main_exports', ['cars', 'food', 'machine'])
- ```
- - id: example-filter-contained-by-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .containedBy('main_exports', ['cars', 'food', 'machine'])
- ```
-
- - id: function-filter-range-lt
- summary: Filter by TBD
- name: .rangeLt()
- examples:
- - id: example-filter-range-lt-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, population_range_millions')
- .rangeLt('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-lt-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .rangeLt('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-lt-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .rangeLt('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-lt-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .rangeLt('population_range_millions', '[150, 250]')
- ```
-
- - id: function-filter-range-gt
- summary: Filter by TBD
- name: .rangeGt()
- examples:
- - id: example-filter-range-gt-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, population_range_millions')
- .rangeGt('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-gt-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .rangeGt('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-gt-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .rangeGt('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-gt-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .rangeGt('population_range_millions', '[150, 250]')
- ```
-
- - id: function-filter-range-gte
- summary: Filter by TBD
- name: .rangeGte()
- examples:
- - id: example-filter-range-gte-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, population_range_millions')
- .rangeGte('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-gte-udpdate
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .rangeGte('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-gte-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .rangeGte('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-gte-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .rangeGte('population_range_millions', '[150, 250]')
- ```
-
- - id: function-filter-range-lte
- summary: Filter by TBD
- name: .rangeLte()
- examples:
- - id: example-filter-range-lte-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, population_range_millions')
- .rangeLte('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-lte-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .rangeLte('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-lte-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .rangeLte('population_range_millions', '[150, 250]')
- ```
- - id: example-filter-range-lte-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .rangeLte('population_range_millions', '[150, 250]')
- ```
-
- - id: function-filter-range-adjacent
- summary: Filter by TBD
- name: .rangeAdjacent()
- examples:
- - id: example-filter-range-adjacent-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, population_range_millions')
- .rangeAdjacent('population_range_millions', '[70, 185]')
- ```
- - id: example-filter-range-adjacent-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .rangeAdjacent('population_range_millions', '[70, 185]')
- ```
- - id: example-filter-range-adjacent-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .rangeAdjacent('population_range_millions', '[70, 185]')
- ```
- - id: example-filter-range-adjacent-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .rangeAdjacent('population_range_millions', '[70, 185]')
- ```
-
- - id: function-filter-overlaps
- summary: Filter by TBD
- name: .overlaps()
- description: |
- - `.overlaps()` can work on array columns or range columns.
-
- ```js
- .overlaps('arraycol',["a","b"]) // You can use a javascript array for an array column
- .overlaps('arraycol','{"a","b"}') // You can use a string with Postgres array {} for array column.
- .overlaps('rangecol','(1,2]') // Use Postgres range syntax for range column.
- .overlaps('rangecol',`(${arr}]`) // You can insert an array into a string.
- ```
- examples:
- - id: example-filter-overlaps-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .select('name, id, main_exports')
- .overlaps('main_exports', ['computers', 'minerals'])
- ```
- - id: example-filter-overlaps-update
- summary: With `update()`
- code: |
- ```js
- let countries = await supabase
- .from('countries')
- .update({ name: 'Mordor' })
- .overlaps('main_exports', ['computers', 'minerals'])
- ```
- - id: example-filter-overlaps-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('countries')
- .delete()
- .overlaps('main_exports', ['computers', 'minerals'])
- ```
- - id: example-filter-overlaps-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_countries')
- .overlaps('main_exports', ['computers', 'minerals'])
- ```
-
- - id: function-filter-search
- summary: Filter by TBD
- name: .textSearch()
- examples:
- - id: example-filter-search
- summary: Text search
- code: |
- ```js
- const { data, error } = await supabase
- .from('quotes')
- .select('catchphrase')
- .textSearch('catchphrase', `'fat' & 'cat'`, {
- config: 'english'
- })
- ```
- - id: example-filter-search-normalize
- summary: Basic normalization
- description: Uses PostgreSQL's `plainto_tsquery` function.
- code: |
- ```js
- const { data, error } = await supabase
- .from('quotes')
- .select('catchphrase')
- .textSearch('catchphrase', `'fat' & 'cat'`, {
- type: 'plain',
- config: 'english'
- })
- ```
- - id: example-filter-search-full-normalize
- summary: Full normalization
- description: Uses PostgreSQL's `phraseto_tsquery` function.
- code: |
- ```js
- const { data, error } = await supabase
- .from('quotes')
- .select('catchphrase')
- .textSearch('catchphrase', `'fat' & 'cat'`, {
- type: 'phrase',
- config: 'english'
- })
- ```
- - id: example-filter-search-websearch
- summary: Websearch
- description: |
- Uses PostgreSQL's `websearch_to_tsquery` function.
- This function will never raise syntax errors, which makes it possible to use raw user-supplied input for search, and can be used
- with advanced operators.
-
- - `unquoted text`: text not inside quote marks will be converted to terms separated by & operators, as if processed by plainto_tsquery.
- - `"quoted text"`: text inside quote marks will be converted to terms separated by <-> operators, as if processed by phraseto_tsquery.
- - `OR`: the word “or” will be converted to the | operator.
- - `-`: a dash will be converted to the ! operator.
-
- code: |
- ```js
- const { data, error } = await supabase
- .from('quotes')
- .select('catchphrase')
- .textSearch('catchphrase', `'fat or cat'`, {
- type: 'websearch',
- config: 'english'
- })
- ```
-
- - id: function-filter-filter
- summary: Filter by TBD
- name: .filter()
- description: |
- - `.filter()` expects you to use the raw [PostgREST syntax](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for the filter names and values, so it should only be used as an escape hatch in case other filters don't work.
- ```js
- .filter('arraycol','cs','{"a","b"}') // Use Postgres array {} for array column and 'cs' for contains.
- .filter('rangecol','cs','(1,2]') // Use Postgres range syntax for range column.
- .filter('id','in','(6,7)') // Use Postgres list () for in filter.
- .filter('id','in',`(${arr})`) // You can insert a javascript array.
- ```
- examples:
- - id: example-filter-select
- summary: With `select()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, country_id')
- .filter('name', 'in', '("Paris","Tokyo")')
- ```
- - id: example-filter-update
- summary: With `update()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .update({ name: 'Mordor' })
- .filter('name', 'in', '("Paris","Tokyo")')
- ```
- - id: example-filter-delete
- summary: With `delete()`
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .delete()
- .filter('name', 'in', '("Paris","Tokyo")')
- ```
- - id: example-filter-rpc
- summary: With `rpc()`
- code: |
- ```js
- // Only valid if the Postgres function returns a table type.
- const { data, error } = await supabase
- .rpc('echo_all_cities')
- .filter('name', 'in', '("Paris","Tokyo")')
- ```
- - id: example-filter-embedded
- summary: Filter embedded resources
- code: |
- ```js
- const { data, error } = await supabase
- .from('cities')
- .select('name, countries ( name )')
- .filter('countries.name', 'in', '("France","Japan")')
- ```
diff --git a/spec/api_v0_openapi.json b/spec/api_v0_openapi.json
index b0766f1b0ca..464b44ebb70 100644
--- a/spec/api_v0_openapi.json
+++ b/spec/api_v0_openapi.json
@@ -203,7 +203,7 @@
"security": [{ "apiKeyHeader": [], "apiKeyParam": [] }, { "bearer": [] }]
},
"patch": {
- "operationId": "UpdateFunction",
+ "operationId": "updateFunction",
"summary": "Update a function",
"description": "Updates a function with the specified slug and project.",
"parameters": [
diff --git a/spec/auth_v1_openapi.json b/spec/auth_v1_openapi.json
new file mode 100644
index 00000000000..40fa681062a
--- /dev/null
+++ b/spec/auth_v1_openapi.json
@@ -0,0 +1,1248 @@
+{
+ "produces": ["application/json"],
+ "schemes": ["http", "https"],
+ "swagger": "2.0",
+ "info": {
+ "description": "Documentation of the gotrue API.",
+ "title": "gotrue",
+ "version": "1.0.0"
+ },
+ "host": "localhost:9999",
+ "basePath": "/",
+ "paths": {
+ "/admin/generate_link": {
+ "post": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Generates an email action link.",
+ "operationId": "admin-generate-link",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/GenerateLinkParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/generateLinkResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ }
+ },
+ "/admin/user/{user_id}": {
+ "get": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Get a user.",
+ "operationId": "admin-get-user",
+ "parameters": [
+ {
+ "description": "The user's id",
+ "name": "user_id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/userResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Update a user.",
+ "operationId": "admin-update-user",
+ "parameters": [
+ {
+ "description": "The user's id",
+ "name": "user_id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/userResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Deletes a user.",
+ "operationId": "admin-delete-user",
+ "parameters": [
+ {
+ "description": "The user's id",
+ "name": "user_id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/deleteUserResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ }
+ },
+ "/admin/users": {
+ "get": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "List all users.",
+ "operationId": "admin-list-users",
+ "responses": {
+ "200": {
+ "$ref": "#/responses/adminListUserResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Returns the created user.",
+ "operationId": "admin-create-user",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/AdminUserParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/userResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ }
+ },
+ "/authorize": {
+ "get": {
+ "tags": ["oauth"],
+ "summary": "Redirects the user to the 3rd-party OAuth provider to start the OAuth1.0 or OAuth2.0 authentication process.",
+ "operationId": "authorize",
+ "parameters": [
+ {
+ "description": "The redirect url to return the user to after the `/callback` endpoint has completed.",
+ "name": "redirect_to",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "302": {
+ "$ref": "#/responses/authorizeResponse"
+ }
+ }
+ }
+ },
+ "/callback": {
+ "get": {
+ "tags": ["oauth"],
+ "summary": "Receives the redirect from an external provider during the OAuth authentication process. Starts the process of creating an access and refresh token.",
+ "operationId": "callback",
+ "responses": {
+ "302": {
+ "$ref": "#/responses/callbackResponse"
+ }
+ }
+ }
+ },
+ "/health": {
+ "get": {
+ "tags": ["health"],
+ "summary": "The healthcheck endpoint for gotrue. Returns the current gotrue version.",
+ "operationId": "health",
+ "responses": {
+ "200": {
+ "$ref": "#/responses/healthCheckResponse"
+ }
+ }
+ }
+ },
+ "/invite": {
+ "post": {
+ "tags": ["invite"],
+ "summary": "Sends an invite link to the user.",
+ "operationId": "invite",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/InviteParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/inviteResponse"
+ }
+ }
+ }
+ },
+ "/logout": {
+ "post": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["logout"],
+ "summary": "Logs out the user.",
+ "operationId": "logout",
+ "responses": {
+ "204": {
+ "$ref": "#/responses/logoutResponse"
+ }
+ }
+ }
+ },
+ "/otp": {
+ "post": {
+ "tags": ["otp"],
+ "summary": "Passwordless sign-in method for email or phone.",
+ "operationId": "otp",
+ "parameters": [
+ {
+ "description": "Only an email or phone should be provided.",
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/OtpParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/otpResponse"
+ }
+ }
+ }
+ },
+ "/recover": {
+ "post": {
+ "tags": ["recovery"],
+ "summary": "Sends a password recovery email link to the user's email.",
+ "operationId": "recovery",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/RecoverParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/recoveryResponse"
+ }
+ }
+ }
+ },
+ "/settings": {
+ "get": {
+ "tags": ["settings"],
+ "summary": "Returns the configuration settings for the gotrue server.",
+ "operationId": "settings",
+ "responses": {
+ "200": {
+ "$ref": "#/responses/settingsResponse"
+ }
+ }
+ }
+ },
+ "/signup": {
+ "post": {
+ "tags": ["signup"],
+ "summary": "Password-based signup with either email or phone.",
+ "operationId": "signup",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/SignupParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/userResponse"
+ }
+ }
+ }
+ },
+ "/token?grant_type=password": {
+ "post": {
+ "tags": ["token"],
+ "summary": "Signs in a user with a password.",
+ "operationId": "token-password",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/PasswordGrantParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/tokenResponse"
+ }
+ }
+ }
+ },
+ "/token?grant_type=refresh_token": {
+ "post": {
+ "tags": ["token"],
+ "summary": "Refreshes a user's refresh token.",
+ "operationId": "token-refresh",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/RefreshTokenGrantParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/tokenResponse"
+ }
+ }
+ }
+ },
+ "/user": {
+ "get": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["user"],
+ "summary": "Get information for the logged-in user.",
+ "operationId": "user-get",
+ "responses": {
+ "200": {
+ "$ref": "#/responses/userResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["user"],
+ "summary": "Returns the updated user.",
+ "operationId": "user-put",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/UserUpdateParams"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "$ref": "#/responses/userResponse"
+ },
+ "401": {
+ "$ref": "#/responses/unauthorizedError"
+ }
+ }
+ }
+ },
+ "/verify": {
+ "get": {
+ "tags": ["verify"],
+ "summary": "Verifies a sign up.",
+ "operationId": "verify-get",
+ "parameters": [
+ {
+ "type": "string",
+ "x-go-name": "Type",
+ "name": "type",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "Token",
+ "name": "token",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "Email",
+ "name": "email",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "Phone",
+ "name": "phone",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "RedirectTo",
+ "name": "redirect_to",
+ "in": "query"
+ }
+ ]
+ },
+ "post": {
+ "tags": ["verify"],
+ "summary": "Verifies a sign up.",
+ "operationId": "verify-post",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "$ref": "#/definitions/VerifyParams"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "definitions": {
+ "AccessTokenResponse": {
+ "description": "AccessTokenResponse represents an OAuth2 success response",
+ "type": "object",
+ "properties": {
+ "access_token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "expires_in": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ExpiresIn"
+ },
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ },
+ "token_type": {
+ "type": "string",
+ "x-go-name": "TokenType"
+ },
+ "user": {
+ "$ref": "#/definitions/User"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "AdminListUsersResponse": {
+ "type": "object",
+ "properties": {
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/User"
+ },
+ "x-go-name": "Users"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "AdminUserParams": {
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "AppMetaData"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "ban_duration": {
+ "type": "string",
+ "x-go-name": "BanDuration"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "email_confirm": {
+ "type": "boolean",
+ "x-go-name": "EmailConfirm"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ },
+ "phone_confirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneConfirm"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "UserMetaData"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "GenerateLinkParams": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "NewEmail"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "type": {
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "GenerateLinkResponse": {
+ "type": "object",
+ "properties": {
+ "action_link": {
+ "type": "string",
+ "x-go-name": "ActionLink"
+ },
+ "app_metadata": {
+ "$ref": "#/definitions/JSONMap"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "$ref": "#/definitions/NullString"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "email_otp": {
+ "type": "string",
+ "x-go-name": "EmailOtp"
+ },
+ "hashed_token": {
+ "type": "string",
+ "x-go-name": "HashedToken"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Identity"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "$ref": "#/definitions/NullString"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "$ref": "#/definitions/JSONMap"
+ },
+ "verification_type": {
+ "type": "string",
+ "x-go-name": "VerificationType"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "HealthCheckResponse": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string",
+ "x-go-name": "Description"
+ },
+ "name": {
+ "type": "string",
+ "x-go-name": "Name"
+ },
+ "version": {
+ "type": "string",
+ "x-go-name": "Version"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "Identity": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "$ref": "#/definitions/JSONMap"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "InviteParams": {
+ "description": "InviteParams are the parameters the Signup endpoint accepts",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "JSONMap": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "NullString": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "OtpParams": {
+ "description": "OtpParams contains the request body params for the otp endpoint",
+ "type": "object",
+ "properties": {
+ "create_user": {
+ "type": "boolean",
+ "x-go-name": "CreateUser"
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "PasswordGrantParams": {
+ "description": "PasswordGrantParams are the parameters the ResourceOwnerPasswordGrant method accepts",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "ProviderSettings": {
+ "type": "object",
+ "properties": {
+ "apple": {
+ "type": "boolean",
+ "x-go-name": "Apple"
+ },
+ "azure": {
+ "type": "boolean",
+ "x-go-name": "Azure"
+ },
+ "bitbucket": {
+ "type": "boolean",
+ "x-go-name": "Bitbucket"
+ },
+ "discord": {
+ "type": "boolean",
+ "x-go-name": "Discord"
+ },
+ "email": {
+ "type": "boolean",
+ "x-go-name": "Email"
+ },
+ "facebook": {
+ "type": "boolean",
+ "x-go-name": "Facebook"
+ },
+ "github": {
+ "type": "boolean",
+ "x-go-name": "GitHub"
+ },
+ "gitlab": {
+ "type": "boolean",
+ "x-go-name": "GitLab"
+ },
+ "google": {
+ "type": "boolean",
+ "x-go-name": "Google"
+ },
+ "keycloak": {
+ "type": "boolean",
+ "x-go-name": "Keycloak"
+ },
+ "linkedin": {
+ "type": "boolean",
+ "x-go-name": "Linkedin"
+ },
+ "notion": {
+ "type": "boolean",
+ "x-go-name": "Notion"
+ },
+ "phone": {
+ "type": "boolean",
+ "x-go-name": "Phone"
+ },
+ "saml": {
+ "type": "boolean",
+ "x-go-name": "SAML"
+ },
+ "slack": {
+ "type": "boolean",
+ "x-go-name": "Slack"
+ },
+ "spotify": {
+ "type": "boolean",
+ "x-go-name": "Spotify"
+ },
+ "twitch": {
+ "type": "boolean",
+ "x-go-name": "Twitch"
+ },
+ "twitter": {
+ "type": "boolean",
+ "x-go-name": "Twitter"
+ },
+ "workos": {
+ "type": "boolean",
+ "x-go-name": "WorkOS"
+ },
+ "zoom": {
+ "type": "boolean",
+ "x-go-name": "Zoom"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "RecoverParams": {
+ "description": "RecoverParams holds the parameters for a password recovery request",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "RefreshTokenGrantParams": {
+ "description": "RefreshTokenGrantParams are the parameters the RefreshTokenGrant method accepts",
+ "type": "object",
+ "properties": {
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "Settings": {
+ "type": "object",
+ "properties": {
+ "disable_signup": {
+ "type": "boolean",
+ "x-go-name": "DisableSignup"
+ },
+ "external": {
+ "$ref": "#/definitions/ProviderSettings"
+ },
+ "mailer_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "MailerAutoconfirm"
+ },
+ "phone_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneAutoconfirm"
+ },
+ "sms_provider": {
+ "type": "string",
+ "x-go-name": "SmsProvider"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "SignupParams": {
+ "description": "SignupParams are the parameters the Signup endpoint accepts",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "User": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "$ref": "#/definitions/JSONMap"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "$ref": "#/definitions/NullString"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Identity"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "$ref": "#/definitions/NullString"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "$ref": "#/definitions/JSONMap"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "UserUpdateParams": {
+ "description": "UserUpdateParams parameters for updating a user",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "AppData"
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "nonce": {
+ "type": "string",
+ "x-go-name": "Nonce"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "VerifyParams": {
+ "description": "VerifyParams are the parameters the Verify endpoint accepts",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "type": {
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "responses": {
+ "adminListUserResponse": {
+ "description": "The list of users.",
+ "schema": {
+ "$ref": "#/definitions/AdminListUsersResponse"
+ }
+ },
+ "authorizeResponse": {
+ "description": "Redirects user to the 3rd-party OAuth provider"
+ },
+ "callbackResponse": {
+ "description": "Redirects user to the redirect url specified in `/authorize`. If no `redirect_url` is provided, the user will be redirected to the `SITE_URL`."
+ },
+ "deleteUserResponse": {
+ "description": "The updated user."
+ },
+ "generateLinkResponse": {
+ "description": "The response object for generate link.",
+ "schema": {
+ "$ref": "#/definitions/GenerateLinkResponse"
+ }
+ },
+ "healthCheckResponse": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/HealthCheckResponse"
+ }
+ },
+ "inviteResponse": {
+ "description": ""
+ },
+ "logoutResponse": {
+ "description": ""
+ },
+ "otpResponse": {
+ "description": ""
+ },
+ "recoveryResponse": {
+ "description": ""
+ },
+ "settingsResponse": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/Settings"
+ }
+ },
+ "tokenResponse": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/AccessTokenResponse"
+ }
+ },
+ "unauthorizedError": {
+ "description": "This endpoint requires a bearer token."
+ },
+ "userResponse": {
+ "description": "The current user.",
+ "schema": {
+ "$ref": "#/definitions/User"
+ }
+ }
+ },
+ "securityDefinitions": {
+ "bearer": {
+ "type": "apiKey",
+ "name": "Authentication",
+ "in": "header"
+ }
+ }
+}
diff --git a/spec/enrichments/tsdoc_v1/combined.json b/spec/enrichments/tsdoc_v1/combined.json
index 82a3e21a4cd..055ada1a662 100644
--- a/spec/enrichments/tsdoc_v1/combined.json
+++ b/spec/enrichments/tsdoc_v1/combined.json
@@ -3788,7 +3788,7 @@
],
"type": {
"type": "reference",
- "id": 557,
+ "id": 558,
"name": "CookieOptions"
}
},
@@ -3975,7 +3975,7 @@
],
"type": {
"type": "reference",
- "id": 557,
+ "id": 558,
"name": "CookieOptions"
}
},
@@ -4246,7 +4246,7 @@
},
"type": {
"type": "reference",
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes"
}
}
@@ -4355,7 +4355,7 @@
],
"type": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
},
@@ -4392,7 +4392,7 @@
],
"type": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
}
@@ -4600,7 +4600,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4656,7 +4656,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4884,7 +4884,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5236,7 +5236,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5292,7 +5292,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5399,7 +5399,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5482,7 +5482,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5631,7 +5631,7 @@
],
"type": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
},
@@ -5813,7 +5813,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5977,7 +5977,7 @@
"type": "array",
"elementType": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
}
@@ -7054,7 +7054,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 583,
+ "id": 584,
"name": "OpenIDConnectCredentials"
}
}
@@ -7608,7 +7608,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -7819,7 +7819,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -7920,7 +7920,7 @@
},
"type": {
"type": "reference",
- "id": 533,
+ "id": 534,
"name": "UserAttributes"
}
}
@@ -7959,7 +7959,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8015,7 +8015,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8085,7 +8085,7 @@
},
"type": {
"type": "reference",
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes"
}
}
@@ -8124,7 +8124,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8180,7 +8180,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8348,7 +8348,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8432,7 +8432,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 570,
+ "id": 571,
"name": "VerifyOTPParams"
}
},
@@ -8523,7 +8523,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8691,7 +8691,7 @@
],
"type": {
"type": "reference",
- "id": 557,
+ "id": 558,
"name": "CookieOptions"
}
},
@@ -9099,7 +9099,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -9266,7 +9266,7 @@
},
{
"type": "reference",
- "id": 549,
+ "id": 550,
"name": "Subscription"
}
],
@@ -9287,7 +9287,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 695,
+ "line": 697,
"character": 16
}
],
@@ -9435,7 +9435,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 520,
+ "line": 522,
"character": 16
}
],
@@ -9495,7 +9495,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 525,
+ "line": 527,
"character": 6
}
],
@@ -9515,7 +9515,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 524,
+ "line": 526,
"character": 6
}
],
@@ -9680,7 +9680,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -9718,7 +9718,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 595,
+ "line": 597,
"character": 16
}
],
@@ -9738,7 +9738,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 583,
+ "id": 584,
"name": "OpenIDConnectCredentials"
}
}
@@ -9764,7 +9764,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 604,
+ "line": 606,
"character": 4
}
],
@@ -9792,7 +9792,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 602,
+ "line": 604,
"character": 4
}
],
@@ -9820,7 +9820,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 603,
+ "line": 605,
"character": 4
}
],
@@ -9833,7 +9833,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -9868,7 +9868,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 546,
+ "line": 548,
"character": 16
}
],
@@ -9928,7 +9928,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 550,
+ "line": 552,
"character": 6
}
],
@@ -10093,7 +10093,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -10131,7 +10131,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 568,
+ "line": 570,
"character": 10
}
],
@@ -10181,7 +10181,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 573,
+ "line": 575,
"character": 6
}
],
@@ -10230,7 +10230,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 571,
+ "line": 573,
"character": 6
}
],
@@ -10250,7 +10250,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 572,
+ "line": 574,
"character": 6
}
],
@@ -10471,7 +10471,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 800,
+ "line": 802,
"character": 10
}
],
@@ -10509,7 +10509,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 777,
+ "line": 779,
"character": 10
}
],
@@ -10550,7 +10550,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 714,
+ "line": 716,
"character": 10
}
],
@@ -10593,7 +10593,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 741,
+ "line": 743,
"character": 10
}
],
@@ -10636,7 +10636,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 650,
+ "line": 652,
"character": 16
}
],
@@ -10685,7 +10685,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 630,
+ "line": 632,
"character": 10
}
],
@@ -10726,7 +10726,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 746,
+ "line": 748,
"character": 16
}
],
@@ -10763,7 +10763,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 722,
+ "line": 724,
"character": 10
}
],
@@ -10809,7 +10809,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 757,
+ "line": 759,
"character": 10
}
],
@@ -11017,7 +11017,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 500,
+ "line": 502,
"character": 2
}
],
@@ -11117,7 +11117,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 501,
+ "line": 503,
"character": 4
}
],
@@ -11130,7 +11130,7 @@
},
{
"type": "reference",
- "id": 549,
+ "id": 550,
"name": "Subscription"
}
]
@@ -11145,7 +11145,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 502,
+ "line": 504,
"character": 4
}
],
@@ -11290,7 +11290,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -11558,7 +11558,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 563,
+ "id": 564,
"name": "UserCredentials"
}
},
@@ -11859,7 +11859,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -11892,7 +11892,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 485,
+ "line": 487,
"character": 8
}
],
@@ -11928,7 +11928,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 485,
+ "line": 487,
"character": 29
}
],
@@ -11997,7 +11997,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 563,
+ "id": 564,
"name": "UserCredentials"
}
},
@@ -12179,7 +12179,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -12235,7 +12235,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 533,
+ "id": 534,
"name": "UserAttributes"
}
}
@@ -12274,7 +12274,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -12330,7 +12330,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -12387,7 +12387,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -12427,7 +12427,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 570,
+ "id": 571,
"name": "VerifyOTPParams"
}
},
@@ -12569,7 +12569,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -12623,14 +12623,14 @@
]
},
{
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 541,
+ "id": 542,
"name": "app_metadata",
"kind": 1024,
"kindString": "Property",
@@ -12644,7 +12644,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 137,
+ "line": 142,
"character": 2
}
],
@@ -12654,7 +12654,7 @@
}
},
{
- "id": 548,
+ "id": 549,
"name": "data",
"kind": 1024,
"kindString": "Property",
@@ -12667,7 +12667,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 112,
+ "line": 117,
"character": 2
}
],
@@ -12677,12 +12677,12 @@
},
"inheritedFrom": {
"type": "reference",
- "id": 538,
+ "id": 539,
"name": "UserAttributes.data"
}
},
{
- "id": 544,
+ "id": 545,
"name": "email",
"kind": 1024,
"kindString": "Property",
@@ -12692,114 +12692,6 @@
"comment": {
"shortText": "The user's email."
},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 92,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- },
- "inheritedFrom": {
- "type": "reference",
- "id": 534,
- "name": "UserAttributes.email"
- }
- },
- {
- "id": 547,
- "name": "email_change_token",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "An email change token."
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 107,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- },
- "inheritedFrom": {
- "type": "reference",
- "id": 537,
- "name": "UserAttributes.email_change_token"
- }
- },
- {
- "id": 542,
- "name": "email_confirm",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "Sets if a user has confirmed their email address.",
- "text": "Only a service role can modify.\n"
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 144,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "boolean"
- }
- },
- {
- "id": 546,
- "name": "password",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "The user's password."
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 102,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- },
- "inheritedFrom": {
- "type": "reference",
- "id": 536,
- "name": "UserAttributes.password"
- }
- },
- {
- "id": 545,
- "name": "phone",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "The user's phone."
- },
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -12814,11 +12706,119 @@
"inheritedFrom": {
"type": "reference",
"id": 535,
- "name": "UserAttributes.phone"
+ "name": "UserAttributes.email"
+ }
+ },
+ {
+ "id": 548,
+ "name": "email_change_token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "An email change token."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 112,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ },
+ "inheritedFrom": {
+ "type": "reference",
+ "id": 538,
+ "name": "UserAttributes.email_change_token"
}
},
{
"id": 543,
+ "name": "email_confirm",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "Sets if a user has confirmed their email address.",
+ "text": "Only a service role can modify.\n"
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 149,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "boolean"
+ }
+ },
+ {
+ "id": 547,
+ "name": "password",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "The user's password."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 107,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ },
+ "inheritedFrom": {
+ "type": "reference",
+ "id": 537,
+ "name": "UserAttributes.password"
+ }
+ },
+ {
+ "id": 546,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "The user's phone."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 102,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ },
+ "inheritedFrom": {
+ "type": "reference",
+ "id": 536,
+ "name": "UserAttributes.phone"
+ }
+ },
+ {
+ "id": 544,
"name": "phone_confirm",
"kind": 1024,
"kindString": "Property",
@@ -12832,7 +12832,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 151,
+ "line": 156,
"character": 2
}
],
@@ -12842,7 +12842,7 @@
}
},
{
- "id": 540,
+ "id": 541,
"name": "user_metadata",
"kind": 1024,
"kindString": "Property",
@@ -12856,7 +12856,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 127,
+ "line": 132,
"character": 2
}
],
@@ -12870,20 +12870,20 @@
{
"title": "Properties",
"kind": 1024,
- "children": [541, 548, 544, 547, 542, 546, 545, 543, 540]
+ "children": [542, 549, 545, 548, 543, 547, 546, 544, 541]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 115,
+ "line": 120,
"character": 17
}
],
"extendedTypes": [
{
"type": "reference",
- "id": 533,
+ "id": 534,
"name": "UserAttributes"
}
]
@@ -12948,14 +12948,14 @@
]
},
{
- "id": 557,
+ "id": 558,
"name": "CookieOptions",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 560,
+ "id": 561,
"name": "domain",
"kind": 1024,
"kindString": "Property",
@@ -12965,7 +12965,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 175,
+ "line": 180,
"character": 2
}
],
@@ -12975,7 +12975,7 @@
}
},
{
- "id": 559,
+ "id": 560,
"name": "lifetime",
"kind": 1024,
"kindString": "Property",
@@ -12985,7 +12985,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 173,
+ "line": 178,
"character": 2
}
],
@@ -12995,33 +12995,13 @@
}
},
{
- "id": 558,
+ "id": 559,
"name": "name",
"kind": 1024,
"kindString": "Property",
"flags": {
"isOptional": true
},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 171,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 561,
- "name": "path",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -13036,6 +13016,26 @@
},
{
"id": 562,
+ "name": "path",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 181,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 563,
"name": "sameSite",
"kind": 1024,
"kindString": "Property",
@@ -13045,7 +13045,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 178,
+ "line": 183,
"character": 2
}
],
@@ -13059,26 +13059,26 @@
{
"title": "Properties",
"kind": 1024,
- "children": [560, 559, 558, 561, 562]
+ "children": [561, 560, 559, 562, 563]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 169,
+ "line": 174,
"character": 17
}
]
},
{
- "id": 583,
+ "id": 584,
"name": "OpenIDConnectCredentials",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 587,
+ "id": 588,
"name": "client_id",
"kind": 1024,
"kindString": "Property",
@@ -13088,45 +13088,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 211,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 584,
- "name": "id_token",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 208,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 588,
- "name": "issuer",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 212,
+ "line": 216,
"character": 2
}
],
@@ -13137,14 +13099,34 @@
},
{
"id": 585,
- "name": "nonce",
+ "name": "id_token",
"kind": 1024,
"kindString": "Property",
"flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 209,
+ "line": 213,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 589,
+ "name": "issuer",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 217,
"character": 2
}
],
@@ -13155,6 +13137,24 @@
},
{
"id": 586,
+ "name": "nonce",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 214,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 587,
"name": "provider",
"kind": 1024,
"kindString": "Property",
@@ -13164,7 +13164,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 210,
+ "line": 215,
"character": 2
}
],
@@ -13179,13 +13179,13 @@
{
"title": "Properties",
"kind": 1024,
- "children": [587, 584, 588, 585, 586]
+ "children": [588, 585, 589, 586, 587]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 207,
+ "line": 212,
"character": 17
}
]
@@ -13198,7 +13198,7 @@
"flags": {},
"children": [
{
- "id": 488,
+ "id": 489,
"name": "access_token",
"kind": 1024,
"kindString": "Property",
@@ -13206,7 +13206,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 34,
+ "line": 35,
"character": 2
}
],
@@ -13216,7 +13216,7 @@
}
},
{
- "id": 490,
+ "id": 491,
"name": "expires_at",
"kind": 1024,
"kindString": "Property",
@@ -13229,7 +13229,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 42,
+ "line": 43,
"character": 2
}
],
@@ -13239,7 +13239,7 @@
}
},
{
- "id": 489,
+ "id": 490,
"name": "expires_in",
"kind": 1024,
"kindString": "Property",
@@ -13252,7 +13252,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 38,
+ "line": 39,
"character": 2
}
],
@@ -13261,6 +13261,35 @@
"name": "number"
}
},
+ {
+ "id": 488,
+ "name": "provider_refresh_token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 34,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "union",
+ "types": [
+ {
+ "type": "literal",
+ "value": null
+ },
+ {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ ]
+ }
+ },
{
"id": 487,
"name": "provider_token",
@@ -13291,31 +13320,13 @@
}
},
{
- "id": 491,
+ "id": 492,
"name": "refresh_token",
"kind": 1024,
"kindString": "Property",
"flags": {
"isOptional": true
},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 43,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 492,
- "name": "token_type",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -13330,7 +13341,7 @@
},
{
"id": 493,
- "name": "user",
+ "name": "token_type",
"kind": 1024,
"kindString": "Property",
"flags": {},
@@ -13341,6 +13352,24 @@
"character": 2
}
],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 494,
+ "name": "user",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 46,
+ "character": 2
+ }
+ ],
"type": {
"type": "union",
"types": [
@@ -13350,7 +13379,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -13361,7 +13390,7 @@
{
"title": "Properties",
"kind": 1024,
- "children": [488, 490, 489, 487, 491, 492, 493]
+ "children": [489, 491, 490, 488, 487, 492, 493, 494]
}
],
"sources": [
@@ -13373,14 +13402,14 @@
]
},
{
- "id": 549,
+ "id": 550,
"name": "Subscription",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 550,
+ "id": 551,
"name": "id",
"kind": 1024,
"kindString": "Property",
@@ -13391,7 +13420,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 158,
+ "line": 163,
"character": 2
}
],
@@ -13401,7 +13430,7 @@
}
},
{
- "id": 551,
+ "id": 552,
"name": "callback",
"kind": 2048,
"kindString": "Method",
@@ -13409,13 +13438,13 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 162,
+ "line": 167,
"character": 2
}
],
"signatures": [
{
- "id": 552,
+ "id": 553,
"name": "callback",
"kind": 4096,
"kindString": "Call signature",
@@ -13425,7 +13454,7 @@
},
"parameters": [
{
- "id": 553,
+ "id": 554,
"name": "event",
"kind": 32768,
"kindString": "Parameter",
@@ -13437,7 +13466,7 @@
}
},
{
- "id": 554,
+ "id": 555,
"name": "session",
"kind": 32768,
"kindString": "Parameter",
@@ -13466,7 +13495,7 @@
]
},
{
- "id": 555,
+ "id": 556,
"name": "unsubscribe",
"kind": 2048,
"kindString": "Method",
@@ -13474,13 +13503,13 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 166,
+ "line": 171,
"character": 2
}
],
"signatures": [
{
- "id": 556,
+ "id": 557,
"name": "unsubscribe",
"kind": 4096,
"kindString": "Call signature",
@@ -13500,244 +13529,32 @@
{
"title": "Properties",
"kind": 1024,
- "children": [550]
+ "children": [551]
},
{
"title": "Methods",
"kind": 2048,
- "children": [551, 555]
+ "children": [552, 556]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 154,
+ "line": 159,
"character": 17
}
]
},
{
- "id": 505,
+ "id": 513,
"name": "User",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
- {
- "id": 522,
- "name": "action_link",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 75,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 507,
- "name": "app_metadata",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 62,
- "character": 2
- }
- ],
- "type": {
- "type": "reflection",
- "declaration": {
- "id": 508,
- "name": "__type",
- "kind": 65536,
- "kindString": "Type literal",
- "flags": {},
- "children": [
- {
- "id": 509,
- "name": "provider",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 63,
- "character": 4
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "groups": [
- {
- "title": "Properties",
- "kind": 1024,
- "children": [509]
- }
- ],
- "indexSignature": {
- "id": 510,
- "name": "__index",
- "kind": 8192,
- "kindString": "Index signature",
- "flags": {},
- "parameters": [
- {
- "id": 511,
- "name": "key",
- "kind": 32768,
- "flags": {},
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "any"
- }
- }
- }
- }
- },
- {
- "id": 516,
- "name": "aud",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 69,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 517,
- "name": "confirmation_sent_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 70,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 526,
- "name": "confirmed_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 79,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 525,
- "name": "created_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 78,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
{
"id": 523,
- "name": "email",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 76,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 519,
- "name": "email_change_sent_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 72,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 527,
- "name": "email_confirmed_at",
+ "name": "action_link",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13756,55 +13573,30 @@
}
},
{
- "id": 506,
- "name": "id",
+ "id": 515,
+ "name": "app_metadata",
"kind": 1024,
"kindString": "Property",
"flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 61,
+ "line": 72,
"character": 2
}
],
"type": {
- "type": "intrinsic",
- "name": "string"
+ "type": "reference",
+ "id": 506,
+ "name": "UserAppMetadata"
}
},
{
- "id": 532,
- "name": "identities",
+ "id": 517,
+ "name": "aud",
"kind": 1024,
"kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 85,
- "character": 2
- }
- ],
- "type": {
- "type": "array",
- "elementType": {
- "type": "reference",
- "id": 494,
- "name": "UserIdentity"
- }
- }
- },
- {
- "id": 521,
- "name": "invited_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -13818,8 +13610,8 @@
}
},
{
- "id": 529,
- "name": "last_sign_in_at",
+ "id": 518,
+ "name": "confirmation_sent_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13828,7 +13620,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 82,
+ "line": 75,
"character": 2
}
],
@@ -13838,8 +13630,8 @@
}
},
{
- "id": 520,
- "name": "new_email",
+ "id": 527,
+ "name": "confirmed_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13848,7 +13640,25 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 73,
+ "line": 84,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 526,
+ "name": "created_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 83,
"character": 2
}
],
@@ -13859,7 +13669,27 @@
},
{
"id": 524,
- "name": "phone",
+ "name": "email",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 81,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 520,
+ "name": "email_change_sent_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13879,7 +13709,7 @@
},
{
"id": 528,
- "name": "phone_confirmed_at",
+ "name": "email_confirmed_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13888,7 +13718,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 81,
+ "line": 85,
"character": 2
}
],
@@ -13898,13 +13728,11 @@
}
},
{
- "id": 518,
- "name": "recovery_sent_at",
+ "id": 514,
+ "name": "id",
"kind": 1024,
"kindString": "Property",
- "flags": {
- "isOptional": true
- },
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -13918,8 +13746,8 @@
}
},
{
- "id": 530,
- "name": "role",
+ "id": 533,
+ "name": "identities",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13928,7 +13756,131 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 83,
+ "line": 90,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "array",
+ "elementType": {
+ "type": "reference",
+ "id": 495,
+ "name": "UserIdentity"
+ }
+ }
+ },
+ {
+ "id": 522,
+ "name": "invited_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 79,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 530,
+ "name": "last_sign_in_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 87,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 521,
+ "name": "new_email",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 78,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 525,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 82,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 529,
+ "name": "phone_confirmed_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 86,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 519,
+ "name": "recovery_sent_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 76,
"character": 2
}
],
@@ -13939,7 +13891,7 @@
},
{
"id": 531,
- "name": "updated_at",
+ "name": "role",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -13948,7 +13900,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 84,
+ "line": 88,
"character": 2
}
],
@@ -13958,7 +13910,27 @@
}
},
{
- "id": 512,
+ "id": 532,
+ "name": "updated_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 89,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 516,
"name": "user_metadata",
"kind": 1024,
"kindString": "Property",
@@ -13966,42 +13938,14 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 66,
+ "line": 73,
"character": 2
}
],
"type": {
- "type": "reflection",
- "declaration": {
- "id": 513,
- "name": "__type",
- "kind": 65536,
- "kindString": "Type literal",
- "flags": {},
- "indexSignature": {
- "id": 514,
- "name": "__index",
- "kind": 8192,
- "kindString": "Index signature",
- "flags": {},
- "parameters": [
- {
- "id": 515,
- "name": "key",
- "kind": 32768,
- "flags": {},
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "any"
- }
- }
- }
+ "type": "reference",
+ "id": 510,
+ "name": "UserMetadata"
}
}
],
@@ -14010,28 +13954,94 @@
"title": "Properties",
"kind": 1024,
"children": [
- 522, 507, 516, 517, 526, 525, 523, 519, 527, 506, 532, 521, 529, 520, 524, 528, 518,
- 530, 531, 512
+ 523, 515, 517, 518, 527, 526, 524, 520, 528, 514, 533, 522, 530, 521, 525, 529, 519,
+ 531, 532, 516
]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 60,
+ "line": 70,
"character": 17
}
]
},
{
- "id": 533,
+ "id": 506,
+ "name": "UserAppMetadata",
+ "kind": 256,
+ "kindString": "Interface",
+ "flags": {},
+ "children": [
+ {
+ "id": 507,
+ "name": "provider",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 62,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "groups": [
+ {
+ "title": "Properties",
+ "kind": 1024,
+ "children": [507]
+ }
+ ],
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 61,
+ "character": 17
+ }
+ ],
+ "indexSignature": {
+ "id": 508,
+ "name": "__index",
+ "kind": 8192,
+ "kindString": "Index signature",
+ "flags": {},
+ "parameters": [
+ {
+ "id": 509,
+ "name": "key",
+ "kind": 32768,
+ "flags": {},
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "any"
+ }
+ }
+ },
+ {
+ "id": 534,
"name": "UserAttributes",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 538,
+ "id": 539,
"name": "data",
"kind": 1024,
"kindString": "Property",
@@ -14044,7 +14054,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 112,
+ "line": 117,
"character": 2
}
],
@@ -14054,7 +14064,7 @@
}
},
{
- "id": 534,
+ "id": 535,
"name": "email",
"kind": 1024,
"kindString": "Property",
@@ -14067,7 +14077,30 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 92,
+ "line": 97,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 538,
+ "name": "email_change_token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "An email change token."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 112,
"character": 2
}
],
@@ -14078,14 +14111,14 @@
},
{
"id": 537,
- "name": "email_change_token",
+ "name": "password",
"kind": 1024,
"kindString": "Property",
"flags": {
"isOptional": true
},
"comment": {
- "shortText": "An email change token."
+ "shortText": "The user's password."
},
"sources": [
{
@@ -14101,29 +14134,6 @@
},
{
"id": 536,
- "name": "password",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "The user's password."
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 102,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 535,
"name": "phone",
"kind": 1024,
"kindString": "Property",
@@ -14136,7 +14146,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 97,
+ "line": 102,
"character": 2
}
],
@@ -14150,115 +14160,34 @@
{
"title": "Properties",
"kind": 1024,
- "children": [538, 534, 537, 536, 535]
+ "children": [539, 535, 538, 537, 536]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 88,
+ "line": 93,
"character": 17
}
],
"extendedBy": [
{
"type": "reference",
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes"
}
]
},
{
- "id": 563,
+ "id": 564,
"name": "UserCredentials",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
- {
- "id": 564,
- "name": "email",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 182,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 569,
- "name": "oidc",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 188,
- "character": 2
- }
- ],
- "type": {
- "type": "reference",
- "id": 583,
- "name": "OpenIDConnectCredentials"
- }
- },
- {
- "id": 566,
- "name": "password",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 184,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
{
"id": 565,
- "name": "phone",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 183,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 568,
- "name": "provider",
+ "name": "email",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -14271,6 +14200,87 @@
"character": 2
}
],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 570,
+ "name": "oidc",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 193,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "reference",
+ "id": 584,
+ "name": "OpenIDConnectCredentials"
+ }
+ },
+ {
+ "id": 567,
+ "name": "password",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 189,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 566,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 188,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 569,
+ "name": "provider",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 192,
+ "character": 2
+ }
+ ],
"type": {
"type": "reference",
"id": 481,
@@ -14278,7 +14288,7 @@
}
},
{
- "id": 567,
+ "id": 568,
"name": "refreshToken",
"kind": 1024,
"kindString": "Property",
@@ -14288,7 +14298,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 185,
+ "line": 190,
"character": 2
}
],
@@ -14302,110 +14312,27 @@
{
"title": "Properties",
"kind": 1024,
- "children": [564, 569, 566, 565, 568, 567]
+ "children": [565, 570, 567, 566, 569, 568]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 181,
+ "line": 186,
"character": 17
}
]
},
{
- "id": 494,
+ "id": 495,
"name": "UserIdentity",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
- {
- "id": 502,
- "name": "created_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 55,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 495,
- "name": "id",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 49,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 497,
- "name": "identity_data",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 51,
- "character": 2
- }
- ],
- "type": {
- "type": "reflection",
- "declaration": {
- "id": 498,
- "name": "__type",
- "kind": 65536,
- "kindString": "Type literal",
- "flags": {},
- "indexSignature": {
- "id": 499,
- "name": "__index",
- "kind": 8192,
- "kindString": "Index signature",
- "flags": {},
- "parameters": [
- {
- "id": 500,
- "name": "key",
- "kind": 32768,
- "flags": {},
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "any"
- }
- }
- }
- }
- },
{
"id": 503,
- "name": "last_sign_in_at",
+ "name": "created_at",
"kind": 1024,
"kindString": "Property",
"flags": {},
@@ -14421,47 +14348,9 @@
"name": "string"
}
},
- {
- "id": 501,
- "name": "provider",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 54,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 504,
- "name": "updated_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 57,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
{
"id": 496,
- "name": "user_id",
+ "name": "id",
"kind": 1024,
"kindString": "Property",
"flags": {},
@@ -14476,36 +14365,312 @@
"type": "intrinsic",
"name": "string"
}
+ },
+ {
+ "id": 498,
+ "name": "identity_data",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 52,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "reflection",
+ "declaration": {
+ "id": 499,
+ "name": "__type",
+ "kind": 65536,
+ "kindString": "Type literal",
+ "flags": {},
+ "indexSignature": {
+ "id": 500,
+ "name": "__index",
+ "kind": 8192,
+ "kindString": "Index signature",
+ "flags": {},
+ "parameters": [
+ {
+ "id": 501,
+ "name": "key",
+ "kind": 32768,
+ "flags": {},
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "any"
+ }
+ }
+ }
+ }
+ },
+ {
+ "id": 504,
+ "name": "last_sign_in_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 57,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 502,
+ "name": "provider",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 55,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 505,
+ "name": "updated_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 58,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 497,
+ "name": "user_id",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 51,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
}
],
"groups": [
{
"title": "Properties",
"kind": 1024,
- "children": [502, 495, 497, 503, 501, 504, 496]
+ "children": [503, 496, 498, 504, 502, 505, 497]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 48,
+ "line": 49,
"character": 17
}
]
},
{
- "id": 576,
+ "id": 510,
+ "name": "UserMetadata",
+ "kind": 256,
+ "kindString": "Interface",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 66,
+ "character": 17
+ }
+ ],
+ "indexSignature": {
+ "id": 511,
+ "name": "__index",
+ "kind": 8192,
+ "kindString": "Index signature",
+ "flags": {},
+ "parameters": [
+ {
+ "id": 512,
+ "name": "key",
+ "kind": 32768,
+ "flags": {},
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "any"
+ }
+ }
+ },
+ {
+ "id": 577,
"name": "VerifyEmailOTPParams",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 577,
+ "id": 578,
"name": "email",
"kind": 1024,
"kindString": "Property",
"flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 204,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 579,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 205,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "undefined"
+ }
+ },
+ {
+ "id": 580,
+ "name": "token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 206,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 581,
+ "name": "type",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 207,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "reference",
+ "id": 583,
+ "name": "EmailOTPType"
+ }
+ }
+ ],
+ "groups": [
+ {
+ "title": "Properties",
+ "kind": 1024,
+ "children": [578, 579, 580, 581]
+ }
+ ],
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 203,
+ "character": 17
+ }
+ ]
+ },
+ {
+ "id": 572,
+ "name": "VerifyMobileOTPParams",
+ "kind": 256,
+ "kindString": "Interface",
+ "flags": {},
+ "children": [
+ {
+ "id": 573,
+ "name": "email",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 198,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "undefined"
+ }
+ },
+ {
+ "id": 574,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -14519,13 +14684,11 @@
}
},
{
- "id": 578,
- "name": "phone",
+ "id": 575,
+ "name": "token",
"kind": 1024,
"kindString": "Property",
- "flags": {
- "isOptional": true
- },
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -14535,15 +14698,17 @@
],
"type": {
"type": "intrinsic",
- "name": "undefined"
+ "name": "string"
}
},
{
- "id": 579,
- "name": "token",
+ "id": 576,
+ "name": "type",
"kind": 1024,
"kindString": "Property",
- "flags": {},
+ "flags": {
+ "isOptional": true
+ },
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -14551,127 +14716,9 @@
"character": 2
}
],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 580,
- "name": "type",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 202,
- "character": 2
- }
- ],
"type": {
"type": "reference",
"id": 582,
- "name": "EmailOTPType"
- }
- }
- ],
- "groups": [
- {
- "title": "Properties",
- "kind": 1024,
- "children": [577, 578, 579, 580]
- }
- ],
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 198,
- "character": 17
- }
- ]
- },
- {
- "id": 571,
- "name": "VerifyMobileOTPParams",
- "kind": 256,
- "kindString": "Interface",
- "flags": {},
- "children": [
- {
- "id": 572,
- "name": "email",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 193,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "undefined"
- }
- },
- {
- "id": 573,
- "name": "phone",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 194,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 574,
- "name": "token",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 195,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 575,
- "name": "type",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 196,
- "character": 2
- }
- ],
- "type": {
- "type": "reference",
- "id": 581,
"name": "MobileOTPType"
}
}
@@ -14680,13 +14727,13 @@
{
"title": "Properties",
"kind": 1024,
- "children": [572, 573, 574, 575]
+ "children": [573, 574, 575, 576]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 192,
+ "line": 197,
"character": 17
}
]
@@ -14735,7 +14782,7 @@
}
},
{
- "id": 582,
+ "id": 583,
"name": "EmailOTPType",
"kind": 4194304,
"kindString": "Type alias",
@@ -14743,7 +14790,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 205,
+ "line": 210,
"character": 12
}
],
@@ -14774,7 +14821,7 @@
}
},
{
- "id": 581,
+ "id": 582,
"name": "MobileOTPType",
"kind": 4194304,
"kindString": "Type alias",
@@ -14782,7 +14829,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 204,
+ "line": 209,
"character": 12
}
],
@@ -14884,7 +14931,7 @@
}
},
{
- "id": 589,
+ "id": 590,
"name": "SupportedStorage",
"kind": 4194304,
"kindString": "Type alias",
@@ -14892,7 +14939,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 224,
+ "line": 229,
"character": 12
}
],
@@ -14935,7 +14982,7 @@
}
},
{
- "id": 570,
+ "id": 571,
"name": "VerifyOTPParams",
"kind": 4194304,
"kindString": "Type alias",
@@ -14943,7 +14990,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 191,
+ "line": 196,
"character": 12
}
],
@@ -14952,12 +14999,12 @@
"types": [
{
"type": "reference",
- "id": 571,
+ "id": 572,
"name": "VerifyMobileOTPParams"
},
{
"type": "reference",
- "id": 576,
+ "id": 577,
"name": "VerifyEmailOTPParams"
}
]
@@ -14973,12 +15020,12 @@
{
"title": "Interfaces",
"kind": 256,
- "children": [539, 483, 557, 583, 486, 549, 505, 533, 563, 494, 576, 571]
+ "children": [540, 483, 558, 584, 486, 550, 513, 506, 534, 564, 495, 510, 577, 572]
},
{
"title": "Type aliases",
"kind": 4194304,
- "children": [482, 582, 581, 481, 589, 570]
+ "children": [482, 583, 582, 481, 590, 571]
}
],
"sources": [
@@ -23897,7 +23944,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 73,
+ "line": 74,
"character": 3
}
]
@@ -23913,7 +23960,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 43,
+ "line": 44,
"character": 13
}
],
@@ -23943,7 +23990,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 44,
+ "line": 45,
"character": 10
}
],
@@ -23968,7 +24015,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 60,
+ "line": 61,
"character": 6
}
],
@@ -23998,7 +24045,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 58,
+ "line": 59,
"character": 8
}
],
@@ -24018,7 +24065,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 57,
+ "line": 58,
"character": 8
}
],
@@ -24038,7 +24085,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 45,
+ "line": 46,
"character": 10
}
],
@@ -24060,7 +24107,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 46,
+ "line": 47,
"character": 9
}
],
@@ -24128,7 +24175,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 50,
+ "line": 51,
"character": 21
}
],
@@ -24149,7 +24196,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 52,
+ "line": 53,
"character": 16
}
],
@@ -24188,7 +24235,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 56,
+ "line": 57,
"character": 8
}
],
@@ -24209,7 +24256,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 51,
+ "line": 52,
"character": 19
}
],
@@ -24231,7 +24278,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 47,
+ "line": 48,
"character": 8
}
],
@@ -24298,7 +24345,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 53,
+ "line": 54,
"character": 21
}
],
@@ -24328,7 +24375,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 59,
+ "line": 60,
"character": 18
}
],
@@ -24348,7 +24395,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 55,
+ "line": 56,
"character": 16
}
],
@@ -24369,7 +24416,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 54,
+ "line": 55,
"character": 5
}
],
@@ -24390,7 +24437,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 61,
+ "line": 62,
"character": 12
}
],
@@ -24414,7 +24461,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 62,
+ "line": 63,
"character": 12
}
],
@@ -24436,7 +24483,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 48,
+ "line": 49,
"character": 9
}
],
@@ -24457,7 +24504,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 49,
+ "line": 50,
"character": 11
}
],
@@ -24550,7 +24597,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 405,
+ "line": 406,
"character": 11
}
]
@@ -24567,7 +24614,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 403,
+ "line": 404,
"character": 23
}
]
@@ -24599,7 +24646,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 416,
+ "line": 417,
"character": 26
}
]
@@ -24646,7 +24693,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 383,
+ "line": 384,
"character": 22
}
]
@@ -24693,7 +24740,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 391,
+ "line": 392,
"character": 22
}
]
@@ -24725,7 +24772,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 371,
+ "line": 372,
"character": 21
}
]
@@ -24757,7 +24804,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 423,
+ "line": 424,
"character": 24
}
]
@@ -24789,7 +24836,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 397,
+ "line": 398,
"character": 27
}
]
@@ -24835,7 +24882,7 @@
},
"type": {
"type": "reference",
- "id": 364,
+ "id": 365,
"name": "ChannelParams"
},
"defaultValue": "{}"
@@ -24851,7 +24898,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 264,
+ "line": 265,
"character": 9
}
]
@@ -24885,7 +24932,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 125,
+ "line": 126,
"character": 9
}
]
@@ -24920,7 +24967,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 233,
+ "line": 234,
"character": 17
}
]
@@ -25024,7 +25071,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 151,
+ "line": 152,
"character": 40
}
],
@@ -25044,7 +25091,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 151,
+ "line": 152,
"character": 20
}
],
@@ -25073,7 +25120,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 151,
+ "line": 152,
"character": 13
}
]
@@ -25087,7 +25134,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 148,
+ "line": 149,
"character": 12
}
]
@@ -25121,7 +25168,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 320,
+ "line": 321,
"character": 13
}
]
@@ -25155,7 +25202,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 249,
+ "line": 250,
"character": 13
}
]
@@ -25204,7 +25251,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 361,
+ "line": 362,
"character": 16
}
]
@@ -25281,7 +25328,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 178,
+ "line": 179,
"character": 5
}
]
@@ -25315,7 +25362,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 330,
+ "line": 331,
"character": 9
}
]
@@ -25373,7 +25420,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 202,
+ "line": 203,
"character": 9
}
]
@@ -25426,7 +25473,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 290,
+ "line": 291,
"character": 34
}
],
@@ -25446,7 +25493,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 290,
+ "line": 291,
"character": 27
}
]
@@ -25463,7 +25510,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 290,
+ "line": 291,
"character": 15
}
]
@@ -25521,7 +25568,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 214,
+ "line": 215,
"character": 9
}
]
@@ -25579,7 +25626,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 226,
+ "line": 227,
"character": 11
}
]
@@ -25637,7 +25684,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 190,
+ "line": 191,
"character": 8
}
]
@@ -25688,7 +25735,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 275,
+ "line": 276,
"character": 6
}
]
@@ -25741,7 +25788,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 258,
+ "line": 259,
"character": 8
}
]
@@ -25802,7 +25849,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 346,
+ "line": 347,
"character": 9
}
]
@@ -25827,7 +25874,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 70,
+ "line": 71,
"character": 9
}
],
@@ -25851,7 +25898,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 71,
+ "line": 72,
"character": 9
}
],
@@ -25875,7 +25922,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 72,
+ "line": 73,
"character": 11
}
],
@@ -25899,7 +25946,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 69,
+ "line": 70,
"character": 8
}
],
@@ -25923,7 +25970,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 63,
+ "line": 64,
"character": 22
}
],
@@ -25964,13 +26011,13 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 42,
+ "line": 43,
"character": 35
}
]
},
{
- "id": 364,
+ "id": 365,
"name": "ChannelParams",
"kind": 4194304,
"kindString": "Type alias",
@@ -25978,28 +26025,28 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 35,
+ "line": 36,
"character": 18
}
],
"type": {
"type": "reflection",
"declaration": {
- "id": 365,
+ "id": 366,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
"flags": {},
"indexSignature": [
{
- "id": 367,
+ "id": 368,
"name": "__index",
"kind": 8192,
"kindString": "Index signature",
"flags": {},
"parameters": [
{
- "id": 368,
+ "id": 369,
"name": "key",
"kind": 32768,
"kindString": "Parameter",
@@ -26018,7 +26065,7 @@
],
"children": [
{
- "id": 366,
+ "id": 367,
"name": "selfBroadcast",
"kind": 32,
"kindString": "Variable",
@@ -26028,7 +26075,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 36,
+ "line": 37,
"character": 15
}
],
@@ -26055,13 +26102,13 @@
{
"title": "Variables",
"kind": 32,
- "children": [366]
+ "children": [367]
}
],
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 35,
+ "line": 36,
"character": 20
}
]
@@ -26108,6 +26155,35 @@
"name": "string"
}
},
+ {
+ "id": 364,
+ "name": "join_ref",
+ "kind": 32,
+ "kindString": "Variable",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "RealtimeClient.ts",
+ "line": 33,
+ "character": 10
+ }
+ ],
+ "type": {
+ "type": "union",
+ "types": [
+ {
+ "type": "intrinsic",
+ "name": "undefined"
+ },
+ {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ ]
+ }
+ },
{
"id": 362,
"name": "payload",
@@ -26167,7 +26243,7 @@
{
"title": "Variables",
"kind": 32,
- "children": [361, 362, 363, 360]
+ "children": [361, 364, 362, 363, 360]
}
],
"sources": [
@@ -26556,7 +26632,7 @@
}
},
{
- "id": 369,
+ "id": 370,
"name": "noop",
"kind": 64,
"kindString": "Function",
@@ -26565,7 +26641,7 @@
},
"signatures": [
{
- "id": 370,
+ "id": 371,
"name": "noop",
"kind": 4096,
"kindString": "Call signature",
@@ -26579,7 +26655,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 40,
+ "line": 41,
"character": 10
}
]
@@ -26594,12 +26670,12 @@
{
"title": "Type aliases",
"kind": 4194304,
- "children": [364, 358, 340]
+ "children": [365, 358, 340]
},
{
"title": "Functions",
"kind": 64,
- "children": [369]
+ "children": [370]
}
],
"sources": [
@@ -28080,7 +28156,7 @@
]
},
{
- "id": 445,
+ "id": 446,
"name": "\"index\"",
"kind": 1,
"kindString": "Module",
@@ -29342,7 +29418,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 100,
+ "line": 101,
"character": 25
}
]
@@ -29374,7 +29450,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 108,
+ "line": 109,
"character": 24
}
]
@@ -29434,7 +29510,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 125,
+ "line": 126,
"character": 22
}
]
@@ -29489,7 +29565,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 115,
+ "line": 116,
"character": 12
}
],
@@ -29509,7 +29585,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 114,
+ "line": 115,
"character": 10
}
],
@@ -29529,7 +29605,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 113,
+ "line": 114,
"character": 24
}
]
@@ -29546,7 +29622,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 113,
+ "line": 114,
"character": 23
}
]
@@ -29577,7 +29653,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 95,
+ "line": 96,
"character": 9
}
]
@@ -29636,7 +29712,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 61,
+ "line": 62,
"character": 9
}
]
@@ -29744,7 +29820,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 70,
+ "line": 71,
"character": 14
}
]
@@ -29803,7 +29879,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 91,
+ "line": 92,
"character": 9
}
]
@@ -29877,7 +29953,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 57,
+ "line": 58,
"character": 24
}
]
@@ -29894,7 +29970,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 57,
+ "line": 58,
"character": 15
}
]
@@ -30695,7 +30771,7 @@
]
},
{
- "id": 371,
+ "id": 372,
"name": "\"lib/transformers\"",
"kind": 1,
"kindString": "Module",
@@ -30705,7 +30781,7 @@
"originalName": "/home/runner/work/realtime-js/realtime-js/src/lib/transformers.ts",
"children": [
{
- "id": 372,
+ "id": 373,
"name": "PostgresTypes",
"kind": 4,
"kindString": "Enumeration",
@@ -30717,7 +30793,7 @@
},
"children": [
{
- "id": 373,
+ "id": 374,
"name": "abstime",
"kind": 16,
"kindString": "Enumeration member",
@@ -30734,7 +30810,7 @@
"defaultValue": "\"abstime\""
},
{
- "id": 374,
+ "id": 375,
"name": "bool",
"kind": 16,
"kindString": "Enumeration member",
@@ -30751,7 +30827,7 @@
"defaultValue": "\"bool\""
},
{
- "id": 375,
+ "id": 376,
"name": "date",
"kind": 16,
"kindString": "Enumeration member",
@@ -30768,7 +30844,7 @@
"defaultValue": "\"date\""
},
{
- "id": 376,
+ "id": 377,
"name": "daterange",
"kind": 16,
"kindString": "Enumeration member",
@@ -30785,7 +30861,7 @@
"defaultValue": "\"daterange\""
},
{
- "id": 377,
+ "id": 378,
"name": "float4",
"kind": 16,
"kindString": "Enumeration member",
@@ -30802,7 +30878,7 @@
"defaultValue": "\"float4\""
},
{
- "id": 378,
+ "id": 379,
"name": "float8",
"kind": 16,
"kindString": "Enumeration member",
@@ -30819,7 +30895,7 @@
"defaultValue": "\"float8\""
},
{
- "id": 379,
+ "id": 380,
"name": "int2",
"kind": 16,
"kindString": "Enumeration member",
@@ -30836,7 +30912,7 @@
"defaultValue": "\"int2\""
},
{
- "id": 380,
+ "id": 381,
"name": "int4",
"kind": 16,
"kindString": "Enumeration member",
@@ -30853,7 +30929,7 @@
"defaultValue": "\"int4\""
},
{
- "id": 381,
+ "id": 382,
"name": "int4range",
"kind": 16,
"kindString": "Enumeration member",
@@ -30870,7 +30946,7 @@
"defaultValue": "\"int4range\""
},
{
- "id": 382,
+ "id": 383,
"name": "int8",
"kind": 16,
"kindString": "Enumeration member",
@@ -30887,7 +30963,7 @@
"defaultValue": "\"int8\""
},
{
- "id": 383,
+ "id": 384,
"name": "int8range",
"kind": 16,
"kindString": "Enumeration member",
@@ -30904,7 +30980,7 @@
"defaultValue": "\"int8range\""
},
{
- "id": 384,
+ "id": 385,
"name": "json",
"kind": 16,
"kindString": "Enumeration member",
@@ -30921,7 +30997,7 @@
"defaultValue": "\"json\""
},
{
- "id": 385,
+ "id": 386,
"name": "jsonb",
"kind": 16,
"kindString": "Enumeration member",
@@ -30938,7 +31014,7 @@
"defaultValue": "\"jsonb\""
},
{
- "id": 386,
+ "id": 387,
"name": "money",
"kind": 16,
"kindString": "Enumeration member",
@@ -30955,7 +31031,7 @@
"defaultValue": "\"money\""
},
{
- "id": 387,
+ "id": 388,
"name": "numeric",
"kind": 16,
"kindString": "Enumeration member",
@@ -30972,7 +31048,7 @@
"defaultValue": "\"numeric\""
},
{
- "id": 388,
+ "id": 389,
"name": "oid",
"kind": 16,
"kindString": "Enumeration member",
@@ -30989,7 +31065,7 @@
"defaultValue": "\"oid\""
},
{
- "id": 389,
+ "id": 390,
"name": "reltime",
"kind": 16,
"kindString": "Enumeration member",
@@ -31006,7 +31082,7 @@
"defaultValue": "\"reltime\""
},
{
- "id": 390,
+ "id": 391,
"name": "text",
"kind": 16,
"kindString": "Enumeration member",
@@ -31023,7 +31099,7 @@
"defaultValue": "\"text\""
},
{
- "id": 391,
+ "id": 392,
"name": "time",
"kind": 16,
"kindString": "Enumeration member",
@@ -31040,7 +31116,7 @@
"defaultValue": "\"time\""
},
{
- "id": 392,
+ "id": 393,
"name": "timestamp",
"kind": 16,
"kindString": "Enumeration member",
@@ -31057,7 +31133,7 @@
"defaultValue": "\"timestamp\""
},
{
- "id": 393,
+ "id": 394,
"name": "timestamptz",
"kind": 16,
"kindString": "Enumeration member",
@@ -31074,7 +31150,7 @@
"defaultValue": "\"timestamptz\""
},
{
- "id": 394,
+ "id": 395,
"name": "timetz",
"kind": 16,
"kindString": "Enumeration member",
@@ -31091,7 +31167,7 @@
"defaultValue": "\"timetz\""
},
{
- "id": 395,
+ "id": 396,
"name": "tsrange",
"kind": 16,
"kindString": "Enumeration member",
@@ -31108,7 +31184,7 @@
"defaultValue": "\"tsrange\""
},
{
- "id": 396,
+ "id": 397,
"name": "tstzrange",
"kind": 16,
"kindString": "Enumeration member",
@@ -31130,8 +31206,8 @@
"title": "Enumeration members",
"kind": 16,
"children": [
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
+ 390, 391, 392, 393, 394, 395, 396, 397
]
}
],
@@ -31144,7 +31220,7 @@
]
},
{
- "id": 403,
+ "id": 404,
"name": "BaseValue",
"kind": 4194304,
"kindString": "Type alias",
@@ -31179,7 +31255,7 @@
}
},
{
- "id": 397,
+ "id": 398,
"name": "Columns",
"kind": 4194304,
"kindString": "Type alias",
@@ -31196,14 +31272,14 @@
"elementType": {
"type": "reflection",
"declaration": {
- "id": 398,
+ "id": 399,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
"flags": {},
"children": [
{
- "id": 401,
+ "id": 402,
"name": "flags",
"kind": 32,
"kindString": "Variable",
@@ -31226,7 +31302,7 @@
}
},
{
- "id": 399,
+ "id": 400,
"name": "name",
"kind": 32,
"kindString": "Variable",
@@ -31244,7 +31320,7 @@
}
},
{
- "id": 400,
+ "id": 401,
"name": "type",
"kind": 32,
"kindString": "Variable",
@@ -31262,7 +31338,7 @@
}
},
{
- "id": 402,
+ "id": 403,
"name": "type_modifier",
"kind": 32,
"kindString": "Variable",
@@ -31295,7 +31371,7 @@
{
"title": "Variables",
"kind": 32,
- "children": [401, 399, 400, 402]
+ "children": [402, 400, 401, 403]
}
],
"sources": [
@@ -31310,7 +31386,7 @@
}
},
{
- "id": 405,
+ "id": 406,
"name": "Record",
"kind": 4194304,
"kindString": "Type alias",
@@ -31325,21 +31401,21 @@
"type": {
"type": "reflection",
"declaration": {
- "id": 406,
+ "id": 407,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
"flags": {},
"indexSignature": [
{
- "id": 407,
+ "id": 408,
"name": "__index",
"kind": 8192,
"kindString": "Index signature",
"flags": {},
"parameters": [
{
- "id": 408,
+ "id": 409,
"name": "key",
"kind": 32768,
"kindString": "Parameter",
@@ -31352,7 +31428,7 @@
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -31368,7 +31444,7 @@
}
},
{
- "id": 404,
+ "id": 405,
"name": "RecordValue",
"kind": 4194304,
"kindString": "Type alias",
@@ -31385,14 +31461,14 @@
"types": [
{
"type": "reference",
- "id": 403,
+ "id": 404,
"name": "BaseValue"
},
{
"type": "array",
"elementType": {
"type": "reference",
- "id": 403,
+ "id": 404,
"name": "BaseValue"
}
}
@@ -31400,7 +31476,7 @@
}
},
{
- "id": 422,
+ "id": 423,
"name": "convertCell",
"kind": 64,
"kindString": "Function",
@@ -31427,7 +31503,7 @@
},
"signatures": [
{
- "id": 423,
+ "id": 424,
"name": "convertCell",
"kind": 4096,
"kindString": "Call signature",
@@ -31453,7 +31529,7 @@
},
"parameters": [
{
- "id": 424,
+ "id": 425,
"name": "type",
"kind": 32768,
"kindString": "Parameter",
@@ -31469,7 +31545,7 @@
}
},
{
- "id": 425,
+ "id": 426,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -31478,14 +31554,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -31499,7 +31575,7 @@
]
},
{
- "id": 409,
+ "id": 410,
"name": "convertChangeData",
"kind": 64,
"kindString": "Function",
@@ -31518,7 +31594,7 @@
},
"signatures": [
{
- "id": 410,
+ "id": 411,
"name": "convertChangeData",
"kind": 4096,
"kindString": "Call signature",
@@ -31536,7 +31612,7 @@
},
"parameters": [
{
- "id": 411,
+ "id": 412,
"name": "columns",
"kind": 32768,
"kindString": "Parameter",
@@ -31545,12 +31621,12 @@
},
"type": {
"type": "reference",
- "id": 397,
+ "id": 398,
"name": "Columns"
}
},
{
- "id": 412,
+ "id": 413,
"name": "record",
"kind": 32768,
"kindString": "Parameter",
@@ -31560,12 +31636,12 @@
"comment": {},
"type": {
"type": "reference",
- "id": 405,
+ "id": 406,
"name": "Record"
}
},
{
- "id": 413,
+ "id": 414,
"name": "options",
"kind": 32768,
"kindString": "Parameter",
@@ -31578,7 +31654,7 @@
"type": {
"type": "reflection",
"declaration": {
- "id": 414,
+ "id": 415,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
@@ -31587,7 +31663,7 @@
},
"children": [
{
- "id": 415,
+ "id": 416,
"name": "skipTypes",
"kind": 32,
"kindString": "Variable",
@@ -31615,7 +31691,7 @@
{
"title": "Variables",
"kind": 32,
- "children": [415]
+ "children": [416]
}
],
"sources": [
@@ -31632,7 +31708,7 @@
],
"type": {
"type": "reference",
- "id": 405,
+ "id": 406,
"name": "Record"
}
}
@@ -31646,7 +31722,7 @@
]
},
{
- "id": 416,
+ "id": 417,
"name": "convertColumn",
"kind": 64,
"kindString": "Function",
@@ -31670,7 +31746,7 @@
},
"signatures": [
{
- "id": 417,
+ "id": 418,
"name": "convertColumn",
"kind": 4096,
"kindString": "Call signature",
@@ -31693,7 +31769,7 @@
},
"parameters": [
{
- "id": 418,
+ "id": 419,
"name": "columnName",
"kind": 32768,
"kindString": "Parameter",
@@ -31709,7 +31785,7 @@
}
},
{
- "id": 419,
+ "id": 420,
"name": "columns",
"kind": 32768,
"kindString": "Parameter",
@@ -31718,12 +31794,12 @@
},
"type": {
"type": "reference",
- "id": 397,
+ "id": 398,
"name": "Columns"
}
},
{
- "id": 420,
+ "id": 421,
"name": "record",
"kind": 32768,
"kindString": "Parameter",
@@ -31735,12 +31811,12 @@
},
"type": {
"type": "reference",
- "id": 405,
+ "id": 406,
"name": "Record"
}
},
{
- "id": 421,
+ "id": 422,
"name": "skipTypes",
"kind": 32768,
"kindString": "Parameter",
@@ -31761,7 +31837,7 @@
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -31775,7 +31851,7 @@
]
},
{
- "id": 426,
+ "id": 427,
"name": "noop",
"kind": 64,
"kindString": "Function",
@@ -31784,28 +31860,28 @@
},
"signatures": [
{
- "id": 427,
+ "id": 428,
"name": "noop",
"kind": 4096,
"kindString": "Call signature",
"flags": {},
"parameters": [
{
- "id": 428,
+ "id": 429,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
"flags": {},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -31819,7 +31895,7 @@
]
},
{
- "id": 438,
+ "id": 439,
"name": "toArray",
"kind": 64,
"kindString": "Function",
@@ -31846,7 +31922,7 @@
},
"signatures": [
{
- "id": 439,
+ "id": 440,
"name": "toArray",
"kind": 4096,
"kindString": "Call signature",
@@ -31872,7 +31948,7 @@
},
"parameters": [
{
- "id": 440,
+ "id": 441,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -31881,12 +31957,12 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
},
{
- "id": 441,
+ "id": 442,
"name": "type",
"kind": 32768,
"kindString": "Parameter",
@@ -31901,7 +31977,7 @@
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -31915,7 +31991,7 @@
]
},
{
- "id": 429,
+ "id": 430,
"name": "toBoolean",
"kind": 64,
"kindString": "Function",
@@ -31925,7 +32001,7 @@
},
"signatures": [
{
- "id": 430,
+ "id": 431,
"name": "toBoolean",
"kind": 4096,
"kindString": "Call signature",
@@ -31934,7 +32010,7 @@
},
"parameters": [
{
- "id": 431,
+ "id": 432,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -31943,14 +32019,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -31964,7 +32040,7 @@
]
},
{
- "id": 435,
+ "id": 436,
"name": "toJson",
"kind": 64,
"kindString": "Function",
@@ -31974,7 +32050,7 @@
},
"signatures": [
{
- "id": 436,
+ "id": 437,
"name": "toJson",
"kind": 4096,
"kindString": "Call signature",
@@ -31983,7 +32059,7 @@
},
"parameters": [
{
- "id": 437,
+ "id": 438,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -31992,14 +32068,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -32013,7 +32089,7 @@
]
},
{
- "id": 432,
+ "id": 433,
"name": "toNumber",
"kind": 64,
"kindString": "Function",
@@ -32023,7 +32099,7 @@
},
"signatures": [
{
- "id": 433,
+ "id": 434,
"name": "toNumber",
"kind": 4096,
"kindString": "Call signature",
@@ -32032,7 +32108,7 @@
},
"parameters": [
{
- "id": 434,
+ "id": 435,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -32041,14 +32117,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -32062,7 +32138,7 @@
]
},
{
- "id": 442,
+ "id": 443,
"name": "toTimestampString",
"kind": 64,
"kindString": "Function",
@@ -32081,7 +32157,7 @@
},
"signatures": [
{
- "id": 443,
+ "id": 444,
"name": "toTimestampString",
"kind": 4096,
"kindString": "Call signature",
@@ -32099,7 +32175,7 @@
},
"parameters": [
{
- "id": 444,
+ "id": 445,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -32108,14 +32184,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -32133,17 +32209,17 @@
{
"title": "Enumerations",
"kind": 4,
- "children": [372]
+ "children": [373]
},
{
"title": "Type aliases",
"kind": 4194304,
- "children": [403, 397, 405, 404]
+ "children": [404, 398, 406, 405]
},
{
"title": "Functions",
"kind": 64,
- "children": [422, 409, 416, 426, 438, 429, 435, 432, 442]
+ "children": [423, 410, 417, 427, 439, 430, 436, 433, 443]
}
],
"sources": [
@@ -32207,7 +32283,7 @@
{
"title": "Modules",
"kind": 1,
- "children": [227, 139, 445, 3, 73, 48, 34, 371, 1]
+ "children": [227, 139, 446, 3, 73, 48, 34, 372, 1]
}
]
},
diff --git a/spec/enrichments/tsdoc_v1/gotrue.json b/spec/enrichments/tsdoc_v1/gotrue.json
index 778105f9092..2b1e559e72b 100644
--- a/spec/enrichments/tsdoc_v1/gotrue.json
+++ b/spec/enrichments/tsdoc_v1/gotrue.json
@@ -66,7 +66,7 @@
],
"type": {
"type": "reference",
- "id": 557,
+ "id": 558,
"name": "CookieOptions"
}
},
@@ -253,7 +253,7 @@
],
"type": {
"type": "reference",
- "id": 557,
+ "id": 558,
"name": "CookieOptions"
}
},
@@ -524,7 +524,7 @@
},
"type": {
"type": "reference",
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes"
}
}
@@ -633,7 +633,7 @@
],
"type": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
},
@@ -670,7 +670,7 @@
],
"type": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
}
@@ -878,7 +878,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -934,7 +934,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -1162,7 +1162,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -1514,7 +1514,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -1570,7 +1570,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -1677,7 +1677,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -1760,7 +1760,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -1909,7 +1909,7 @@
],
"type": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
},
@@ -2091,7 +2091,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -2255,7 +2255,7 @@
"type": "array",
"elementType": {
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
}
@@ -3332,7 +3332,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 583,
+ "id": 584,
"name": "OpenIDConnectCredentials"
}
}
@@ -3886,7 +3886,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4097,7 +4097,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4198,7 +4198,7 @@
},
"type": {
"type": "reference",
- "id": 533,
+ "id": 534,
"name": "UserAttributes"
}
}
@@ -4237,7 +4237,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4293,7 +4293,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4363,7 +4363,7 @@
},
"type": {
"type": "reference",
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes"
}
}
@@ -4402,7 +4402,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4458,7 +4458,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4626,7 +4626,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4710,7 +4710,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 570,
+ "id": 571,
"name": "VerifyOTPParams"
}
},
@@ -4801,7 +4801,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -4969,7 +4969,7 @@
],
"type": {
"type": "reference",
- "id": 557,
+ "id": 558,
"name": "CookieOptions"
}
},
@@ -5377,7 +5377,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5544,7 +5544,7 @@
},
{
"type": "reference",
- "id": 549,
+ "id": 550,
"name": "Subscription"
}
],
@@ -5565,7 +5565,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 695,
+ "line": 697,
"character": 16
}
],
@@ -5713,7 +5713,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 520,
+ "line": 522,
"character": 16
}
],
@@ -5773,7 +5773,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 525,
+ "line": 527,
"character": 6
}
],
@@ -5793,7 +5793,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 524,
+ "line": 526,
"character": 6
}
],
@@ -5958,7 +5958,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -5996,7 +5996,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 595,
+ "line": 597,
"character": 16
}
],
@@ -6016,7 +6016,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 583,
+ "id": 584,
"name": "OpenIDConnectCredentials"
}
}
@@ -6042,7 +6042,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 604,
+ "line": 606,
"character": 4
}
],
@@ -6070,7 +6070,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 602,
+ "line": 604,
"character": 4
}
],
@@ -6098,7 +6098,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 603,
+ "line": 605,
"character": 4
}
],
@@ -6111,7 +6111,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -6146,7 +6146,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 546,
+ "line": 548,
"character": 16
}
],
@@ -6206,7 +6206,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 550,
+ "line": 552,
"character": 6
}
],
@@ -6371,7 +6371,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -6409,7 +6409,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 568,
+ "line": 570,
"character": 10
}
],
@@ -6459,7 +6459,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 573,
+ "line": 575,
"character": 6
}
],
@@ -6508,7 +6508,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 571,
+ "line": 573,
"character": 6
}
],
@@ -6528,7 +6528,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 572,
+ "line": 574,
"character": 6
}
],
@@ -6749,7 +6749,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 800,
+ "line": 802,
"character": 10
}
],
@@ -6787,7 +6787,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 777,
+ "line": 779,
"character": 10
}
],
@@ -6828,7 +6828,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 714,
+ "line": 716,
"character": 10
}
],
@@ -6871,7 +6871,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 741,
+ "line": 743,
"character": 10
}
],
@@ -6914,7 +6914,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 650,
+ "line": 652,
"character": 16
}
],
@@ -6963,7 +6963,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 630,
+ "line": 632,
"character": 10
}
],
@@ -7004,7 +7004,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 746,
+ "line": 748,
"character": 16
}
],
@@ -7041,7 +7041,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 722,
+ "line": 724,
"character": 10
}
],
@@ -7087,7 +7087,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 757,
+ "line": 759,
"character": 10
}
],
@@ -7295,7 +7295,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 500,
+ "line": 502,
"character": 2
}
],
@@ -7395,7 +7395,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 501,
+ "line": 503,
"character": 4
}
],
@@ -7408,7 +7408,7 @@
},
{
"type": "reference",
- "id": 549,
+ "id": 550,
"name": "Subscription"
}
]
@@ -7423,7 +7423,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 502,
+ "line": 504,
"character": 4
}
],
@@ -7568,7 +7568,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -7836,7 +7836,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 563,
+ "id": 564,
"name": "UserCredentials"
}
},
@@ -8137,7 +8137,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8170,7 +8170,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 485,
+ "line": 487,
"character": 8
}
],
@@ -8206,7 +8206,7 @@
"sources": [
{
"fileName": "src/GoTrueClient.ts",
- "line": 485,
+ "line": 487,
"character": 29
}
],
@@ -8275,7 +8275,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 563,
+ "id": 564,
"name": "UserCredentials"
}
},
@@ -8457,7 +8457,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8513,7 +8513,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 533,
+ "id": 534,
"name": "UserAttributes"
}
}
@@ -8552,7 +8552,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8608,7 +8608,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8665,7 +8665,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8705,7 +8705,7 @@
"flags": {},
"type": {
"type": "reference",
- "id": 570,
+ "id": 571,
"name": "VerifyOTPParams"
}
},
@@ -8847,7 +8847,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -8901,14 +8901,14 @@
]
},
{
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 541,
+ "id": 542,
"name": "app_metadata",
"kind": 1024,
"kindString": "Property",
@@ -8922,7 +8922,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 137,
+ "line": 142,
"character": 2
}
],
@@ -8932,7 +8932,7 @@
}
},
{
- "id": 548,
+ "id": 549,
"name": "data",
"kind": 1024,
"kindString": "Property",
@@ -8945,7 +8945,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 112,
+ "line": 117,
"character": 2
}
],
@@ -8955,12 +8955,12 @@
},
"inheritedFrom": {
"type": "reference",
- "id": 538,
+ "id": 539,
"name": "UserAttributes.data"
}
},
{
- "id": 544,
+ "id": 545,
"name": "email",
"kind": 1024,
"kindString": "Property",
@@ -8970,114 +8970,6 @@
"comment": {
"shortText": "The user's email."
},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 92,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- },
- "inheritedFrom": {
- "type": "reference",
- "id": 534,
- "name": "UserAttributes.email"
- }
- },
- {
- "id": 547,
- "name": "email_change_token",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "An email change token."
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 107,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- },
- "inheritedFrom": {
- "type": "reference",
- "id": 537,
- "name": "UserAttributes.email_change_token"
- }
- },
- {
- "id": 542,
- "name": "email_confirm",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "Sets if a user has confirmed their email address.",
- "text": "Only a service role can modify.\n"
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 144,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "boolean"
- }
- },
- {
- "id": 546,
- "name": "password",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "The user's password."
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 102,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- },
- "inheritedFrom": {
- "type": "reference",
- "id": 536,
- "name": "UserAttributes.password"
- }
- },
- {
- "id": 545,
- "name": "phone",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "The user's phone."
- },
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -9092,11 +8984,119 @@
"inheritedFrom": {
"type": "reference",
"id": 535,
- "name": "UserAttributes.phone"
+ "name": "UserAttributes.email"
+ }
+ },
+ {
+ "id": 548,
+ "name": "email_change_token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "An email change token."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 112,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ },
+ "inheritedFrom": {
+ "type": "reference",
+ "id": 538,
+ "name": "UserAttributes.email_change_token"
}
},
{
"id": 543,
+ "name": "email_confirm",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "Sets if a user has confirmed their email address.",
+ "text": "Only a service role can modify.\n"
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 149,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "boolean"
+ }
+ },
+ {
+ "id": 547,
+ "name": "password",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "The user's password."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 107,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ },
+ "inheritedFrom": {
+ "type": "reference",
+ "id": 537,
+ "name": "UserAttributes.password"
+ }
+ },
+ {
+ "id": 546,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "The user's phone."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 102,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ },
+ "inheritedFrom": {
+ "type": "reference",
+ "id": 536,
+ "name": "UserAttributes.phone"
+ }
+ },
+ {
+ "id": 544,
"name": "phone_confirm",
"kind": 1024,
"kindString": "Property",
@@ -9110,7 +9110,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 151,
+ "line": 156,
"character": 2
}
],
@@ -9120,7 +9120,7 @@
}
},
{
- "id": 540,
+ "id": 541,
"name": "user_metadata",
"kind": 1024,
"kindString": "Property",
@@ -9134,7 +9134,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 127,
+ "line": 132,
"character": 2
}
],
@@ -9148,20 +9148,20 @@
{
"title": "Properties",
"kind": 1024,
- "children": [541, 548, 544, 547, 542, 546, 545, 543, 540]
+ "children": [542, 549, 545, 548, 543, 547, 546, 544, 541]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 115,
+ "line": 120,
"character": 17
}
],
"extendedTypes": [
{
"type": "reference",
- "id": 533,
+ "id": 534,
"name": "UserAttributes"
}
]
@@ -9226,14 +9226,14 @@
]
},
{
- "id": 557,
+ "id": 558,
"name": "CookieOptions",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 560,
+ "id": 561,
"name": "domain",
"kind": 1024,
"kindString": "Property",
@@ -9243,7 +9243,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 175,
+ "line": 180,
"character": 2
}
],
@@ -9253,7 +9253,7 @@
}
},
{
- "id": 559,
+ "id": 560,
"name": "lifetime",
"kind": 1024,
"kindString": "Property",
@@ -9263,7 +9263,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 173,
+ "line": 178,
"character": 2
}
],
@@ -9273,33 +9273,13 @@
}
},
{
- "id": 558,
+ "id": 559,
"name": "name",
"kind": 1024,
"kindString": "Property",
"flags": {
"isOptional": true
},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 171,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 561,
- "name": "path",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -9314,6 +9294,26 @@
},
{
"id": 562,
+ "name": "path",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 181,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 563,
"name": "sameSite",
"kind": 1024,
"kindString": "Property",
@@ -9323,7 +9323,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 178,
+ "line": 183,
"character": 2
}
],
@@ -9337,26 +9337,26 @@
{
"title": "Properties",
"kind": 1024,
- "children": [560, 559, 558, 561, 562]
+ "children": [561, 560, 559, 562, 563]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 169,
+ "line": 174,
"character": 17
}
]
},
{
- "id": 583,
+ "id": 584,
"name": "OpenIDConnectCredentials",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 587,
+ "id": 588,
"name": "client_id",
"kind": 1024,
"kindString": "Property",
@@ -9366,45 +9366,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 211,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 584,
- "name": "id_token",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 208,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 588,
- "name": "issuer",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 212,
+ "line": 216,
"character": 2
}
],
@@ -9415,14 +9377,34 @@
},
{
"id": 585,
- "name": "nonce",
+ "name": "id_token",
"kind": 1024,
"kindString": "Property",
"flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 209,
+ "line": 213,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 589,
+ "name": "issuer",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 217,
"character": 2
}
],
@@ -9433,6 +9415,24 @@
},
{
"id": 586,
+ "name": "nonce",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 214,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 587,
"name": "provider",
"kind": 1024,
"kindString": "Property",
@@ -9442,7 +9442,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 210,
+ "line": 215,
"character": 2
}
],
@@ -9457,13 +9457,13 @@
{
"title": "Properties",
"kind": 1024,
- "children": [587, 584, 588, 585, 586]
+ "children": [588, 585, 589, 586, 587]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 207,
+ "line": 212,
"character": 17
}
]
@@ -9476,7 +9476,7 @@
"flags": {},
"children": [
{
- "id": 488,
+ "id": 489,
"name": "access_token",
"kind": 1024,
"kindString": "Property",
@@ -9484,7 +9484,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 34,
+ "line": 35,
"character": 2
}
],
@@ -9494,7 +9494,7 @@
}
},
{
- "id": 490,
+ "id": 491,
"name": "expires_at",
"kind": 1024,
"kindString": "Property",
@@ -9507,7 +9507,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 42,
+ "line": 43,
"character": 2
}
],
@@ -9517,7 +9517,7 @@
}
},
{
- "id": 489,
+ "id": 490,
"name": "expires_in",
"kind": 1024,
"kindString": "Property",
@@ -9530,7 +9530,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 38,
+ "line": 39,
"character": 2
}
],
@@ -9539,6 +9539,35 @@
"name": "number"
}
},
+ {
+ "id": 488,
+ "name": "provider_refresh_token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 34,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "union",
+ "types": [
+ {
+ "type": "literal",
+ "value": null
+ },
+ {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ ]
+ }
+ },
{
"id": 487,
"name": "provider_token",
@@ -9569,31 +9598,13 @@
}
},
{
- "id": 491,
+ "id": 492,
"name": "refresh_token",
"kind": 1024,
"kindString": "Property",
"flags": {
"isOptional": true
},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 43,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 492,
- "name": "token_type",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -9608,7 +9619,7 @@
},
{
"id": 493,
- "name": "user",
+ "name": "token_type",
"kind": 1024,
"kindString": "Property",
"flags": {},
@@ -9619,6 +9630,24 @@
"character": 2
}
],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 494,
+ "name": "user",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 46,
+ "character": 2
+ }
+ ],
"type": {
"type": "union",
"types": [
@@ -9628,7 +9657,7 @@
},
{
"type": "reference",
- "id": 505,
+ "id": 513,
"name": "User"
}
]
@@ -9639,7 +9668,7 @@
{
"title": "Properties",
"kind": 1024,
- "children": [488, 490, 489, 487, 491, 492, 493]
+ "children": [489, 491, 490, 488, 487, 492, 493, 494]
}
],
"sources": [
@@ -9651,14 +9680,14 @@
]
},
{
- "id": 549,
+ "id": 550,
"name": "Subscription",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 550,
+ "id": 551,
"name": "id",
"kind": 1024,
"kindString": "Property",
@@ -9669,7 +9698,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 158,
+ "line": 163,
"character": 2
}
],
@@ -9679,7 +9708,7 @@
}
},
{
- "id": 551,
+ "id": 552,
"name": "callback",
"kind": 2048,
"kindString": "Method",
@@ -9687,13 +9716,13 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 162,
+ "line": 167,
"character": 2
}
],
"signatures": [
{
- "id": 552,
+ "id": 553,
"name": "callback",
"kind": 4096,
"kindString": "Call signature",
@@ -9703,7 +9732,7 @@
},
"parameters": [
{
- "id": 553,
+ "id": 554,
"name": "event",
"kind": 32768,
"kindString": "Parameter",
@@ -9715,7 +9744,7 @@
}
},
{
- "id": 554,
+ "id": 555,
"name": "session",
"kind": 32768,
"kindString": "Parameter",
@@ -9744,7 +9773,7 @@
]
},
{
- "id": 555,
+ "id": 556,
"name": "unsubscribe",
"kind": 2048,
"kindString": "Method",
@@ -9752,13 +9781,13 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 166,
+ "line": 171,
"character": 2
}
],
"signatures": [
{
- "id": 556,
+ "id": 557,
"name": "unsubscribe",
"kind": 4096,
"kindString": "Call signature",
@@ -9778,244 +9807,32 @@
{
"title": "Properties",
"kind": 1024,
- "children": [550]
+ "children": [551]
},
{
"title": "Methods",
"kind": 2048,
- "children": [551, 555]
+ "children": [552, 556]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 154,
+ "line": 159,
"character": 17
}
]
},
{
- "id": 505,
+ "id": 513,
"name": "User",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
- {
- "id": 522,
- "name": "action_link",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 75,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 507,
- "name": "app_metadata",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 62,
- "character": 2
- }
- ],
- "type": {
- "type": "reflection",
- "declaration": {
- "id": 508,
- "name": "__type",
- "kind": 65536,
- "kindString": "Type literal",
- "flags": {},
- "children": [
- {
- "id": 509,
- "name": "provider",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 63,
- "character": 4
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "groups": [
- {
- "title": "Properties",
- "kind": 1024,
- "children": [509]
- }
- ],
- "indexSignature": {
- "id": 510,
- "name": "__index",
- "kind": 8192,
- "kindString": "Index signature",
- "flags": {},
- "parameters": [
- {
- "id": 511,
- "name": "key",
- "kind": 32768,
- "flags": {},
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "any"
- }
- }
- }
- }
- },
- {
- "id": 516,
- "name": "aud",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 69,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 517,
- "name": "confirmation_sent_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 70,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 526,
- "name": "confirmed_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 79,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 525,
- "name": "created_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 78,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
{
"id": 523,
- "name": "email",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 76,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 519,
- "name": "email_change_sent_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 72,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 527,
- "name": "email_confirmed_at",
+ "name": "action_link",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10034,55 +9851,30 @@
}
},
{
- "id": 506,
- "name": "id",
+ "id": 515,
+ "name": "app_metadata",
"kind": 1024,
"kindString": "Property",
"flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 61,
+ "line": 72,
"character": 2
}
],
"type": {
- "type": "intrinsic",
- "name": "string"
+ "type": "reference",
+ "id": 506,
+ "name": "UserAppMetadata"
}
},
{
- "id": 532,
- "name": "identities",
+ "id": 517,
+ "name": "aud",
"kind": 1024,
"kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 85,
- "character": 2
- }
- ],
- "type": {
- "type": "array",
- "elementType": {
- "type": "reference",
- "id": 494,
- "name": "UserIdentity"
- }
- }
- },
- {
- "id": 521,
- "name": "invited_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -10096,8 +9888,8 @@
}
},
{
- "id": 529,
- "name": "last_sign_in_at",
+ "id": 518,
+ "name": "confirmation_sent_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10106,7 +9898,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 82,
+ "line": 75,
"character": 2
}
],
@@ -10116,8 +9908,8 @@
}
},
{
- "id": 520,
- "name": "new_email",
+ "id": 527,
+ "name": "confirmed_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10126,7 +9918,25 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 73,
+ "line": 84,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 526,
+ "name": "created_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 83,
"character": 2
}
],
@@ -10137,7 +9947,27 @@
},
{
"id": 524,
- "name": "phone",
+ "name": "email",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 81,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 520,
+ "name": "email_change_sent_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10157,7 +9987,7 @@
},
{
"id": 528,
- "name": "phone_confirmed_at",
+ "name": "email_confirmed_at",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10166,7 +9996,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 81,
+ "line": 85,
"character": 2
}
],
@@ -10176,13 +10006,11 @@
}
},
{
- "id": 518,
- "name": "recovery_sent_at",
+ "id": 514,
+ "name": "id",
"kind": 1024,
"kindString": "Property",
- "flags": {
- "isOptional": true
- },
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -10196,8 +10024,8 @@
}
},
{
- "id": 530,
- "name": "role",
+ "id": 533,
+ "name": "identities",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10206,7 +10034,131 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 83,
+ "line": 90,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "array",
+ "elementType": {
+ "type": "reference",
+ "id": 495,
+ "name": "UserIdentity"
+ }
+ }
+ },
+ {
+ "id": 522,
+ "name": "invited_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 79,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 530,
+ "name": "last_sign_in_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 87,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 521,
+ "name": "new_email",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 78,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 525,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 82,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 529,
+ "name": "phone_confirmed_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 86,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 519,
+ "name": "recovery_sent_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 76,
"character": 2
}
],
@@ -10217,7 +10169,7 @@
},
{
"id": 531,
- "name": "updated_at",
+ "name": "role",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10226,7 +10178,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 84,
+ "line": 88,
"character": 2
}
],
@@ -10236,7 +10188,27 @@
}
},
{
- "id": 512,
+ "id": 532,
+ "name": "updated_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 89,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 516,
"name": "user_metadata",
"kind": 1024,
"kindString": "Property",
@@ -10244,42 +10216,14 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 66,
+ "line": 73,
"character": 2
}
],
"type": {
- "type": "reflection",
- "declaration": {
- "id": 513,
- "name": "__type",
- "kind": 65536,
- "kindString": "Type literal",
- "flags": {},
- "indexSignature": {
- "id": 514,
- "name": "__index",
- "kind": 8192,
- "kindString": "Index signature",
- "flags": {},
- "parameters": [
- {
- "id": 515,
- "name": "key",
- "kind": 32768,
- "flags": {},
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "any"
- }
- }
- }
+ "type": "reference",
+ "id": 510,
+ "name": "UserMetadata"
}
}
],
@@ -10288,28 +10232,94 @@
"title": "Properties",
"kind": 1024,
"children": [
- 522, 507, 516, 517, 526, 525, 523, 519, 527, 506, 532, 521, 529, 520, 524, 528, 518,
- 530, 531, 512
+ 523, 515, 517, 518, 527, 526, 524, 520, 528, 514, 533, 522, 530, 521, 525, 529, 519,
+ 531, 532, 516
]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 60,
+ "line": 70,
"character": 17
}
]
},
{
- "id": 533,
+ "id": 506,
+ "name": "UserAppMetadata",
+ "kind": 256,
+ "kindString": "Interface",
+ "flags": {},
+ "children": [
+ {
+ "id": 507,
+ "name": "provider",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 62,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "groups": [
+ {
+ "title": "Properties",
+ "kind": 1024,
+ "children": [507]
+ }
+ ],
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 61,
+ "character": 17
+ }
+ ],
+ "indexSignature": {
+ "id": 508,
+ "name": "__index",
+ "kind": 8192,
+ "kindString": "Index signature",
+ "flags": {},
+ "parameters": [
+ {
+ "id": 509,
+ "name": "key",
+ "kind": 32768,
+ "flags": {},
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "any"
+ }
+ }
+ },
+ {
+ "id": 534,
"name": "UserAttributes",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 538,
+ "id": 539,
"name": "data",
"kind": 1024,
"kindString": "Property",
@@ -10322,7 +10332,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 112,
+ "line": 117,
"character": 2
}
],
@@ -10332,7 +10342,7 @@
}
},
{
- "id": 534,
+ "id": 535,
"name": "email",
"kind": 1024,
"kindString": "Property",
@@ -10345,7 +10355,30 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 92,
+ "line": 97,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 538,
+ "name": "email_change_token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "comment": {
+ "shortText": "An email change token."
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 112,
"character": 2
}
],
@@ -10356,14 +10389,14 @@
},
{
"id": 537,
- "name": "email_change_token",
+ "name": "password",
"kind": 1024,
"kindString": "Property",
"flags": {
"isOptional": true
},
"comment": {
- "shortText": "An email change token."
+ "shortText": "The user's password."
},
"sources": [
{
@@ -10379,29 +10412,6 @@
},
{
"id": 536,
- "name": "password",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "comment": {
- "shortText": "The user's password."
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 102,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 535,
"name": "phone",
"kind": 1024,
"kindString": "Property",
@@ -10414,7 +10424,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 97,
+ "line": 102,
"character": 2
}
],
@@ -10428,115 +10438,34 @@
{
"title": "Properties",
"kind": 1024,
- "children": [538, 534, 537, 536, 535]
+ "children": [539, 535, 538, 537, 536]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 88,
+ "line": 93,
"character": 17
}
],
"extendedBy": [
{
"type": "reference",
- "id": 539,
+ "id": 540,
"name": "AdminUserAttributes"
}
]
},
{
- "id": 563,
+ "id": 564,
"name": "UserCredentials",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
- {
- "id": 564,
- "name": "email",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 182,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 569,
- "name": "oidc",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 188,
- "character": 2
- }
- ],
- "type": {
- "type": "reference",
- "id": 583,
- "name": "OpenIDConnectCredentials"
- }
- },
- {
- "id": 566,
- "name": "password",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 184,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
{
"id": 565,
- "name": "phone",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 183,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 568,
- "name": "provider",
+ "name": "email",
"kind": 1024,
"kindString": "Property",
"flags": {
@@ -10549,6 +10478,87 @@
"character": 2
}
],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 570,
+ "name": "oidc",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 193,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "reference",
+ "id": 584,
+ "name": "OpenIDConnectCredentials"
+ }
+ },
+ {
+ "id": 567,
+ "name": "password",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 189,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 566,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 188,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 569,
+ "name": "provider",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 192,
+ "character": 2
+ }
+ ],
"type": {
"type": "reference",
"id": 481,
@@ -10556,7 +10566,7 @@
}
},
{
- "id": 567,
+ "id": 568,
"name": "refreshToken",
"kind": 1024,
"kindString": "Property",
@@ -10566,7 +10576,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 185,
+ "line": 190,
"character": 2
}
],
@@ -10580,110 +10590,27 @@
{
"title": "Properties",
"kind": 1024,
- "children": [564, 569, 566, 565, 568, 567]
+ "children": [565, 570, 567, 566, 569, 568]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 181,
+ "line": 186,
"character": 17
}
]
},
{
- "id": 494,
+ "id": 495,
"name": "UserIdentity",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
- {
- "id": 502,
- "name": "created_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 55,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 495,
- "name": "id",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 49,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 497,
- "name": "identity_data",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 51,
- "character": 2
- }
- ],
- "type": {
- "type": "reflection",
- "declaration": {
- "id": 498,
- "name": "__type",
- "kind": 65536,
- "kindString": "Type literal",
- "flags": {},
- "indexSignature": {
- "id": 499,
- "name": "__index",
- "kind": 8192,
- "kindString": "Index signature",
- "flags": {},
- "parameters": [
- {
- "id": 500,
- "name": "key",
- "kind": 32768,
- "flags": {},
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "any"
- }
- }
- }
- }
- },
{
"id": 503,
- "name": "last_sign_in_at",
+ "name": "created_at",
"kind": 1024,
"kindString": "Property",
"flags": {},
@@ -10699,47 +10626,9 @@
"name": "string"
}
},
- {
- "id": 501,
- "name": "provider",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 54,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 504,
- "name": "updated_at",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 57,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
{
"id": 496,
- "name": "user_id",
+ "name": "id",
"kind": 1024,
"kindString": "Property",
"flags": {},
@@ -10754,36 +10643,312 @@
"type": "intrinsic",
"name": "string"
}
+ },
+ {
+ "id": 498,
+ "name": "identity_data",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 52,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "reflection",
+ "declaration": {
+ "id": 499,
+ "name": "__type",
+ "kind": 65536,
+ "kindString": "Type literal",
+ "flags": {},
+ "indexSignature": {
+ "id": 500,
+ "name": "__index",
+ "kind": 8192,
+ "kindString": "Index signature",
+ "flags": {},
+ "parameters": [
+ {
+ "id": 501,
+ "name": "key",
+ "kind": 32768,
+ "flags": {},
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "any"
+ }
+ }
+ }
+ }
+ },
+ {
+ "id": 504,
+ "name": "last_sign_in_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 57,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 502,
+ "name": "provider",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 55,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 505,
+ "name": "updated_at",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 58,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 497,
+ "name": "user_id",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 51,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
}
],
"groups": [
{
"title": "Properties",
"kind": 1024,
- "children": [502, 495, 497, 503, 501, 504, 496]
+ "children": [503, 496, 498, 504, 502, 505, 497]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 48,
+ "line": 49,
"character": 17
}
]
},
{
- "id": 576,
+ "id": 510,
+ "name": "UserMetadata",
+ "kind": 256,
+ "kindString": "Interface",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 66,
+ "character": 17
+ }
+ ],
+ "indexSignature": {
+ "id": 511,
+ "name": "__index",
+ "kind": 8192,
+ "kindString": "Index signature",
+ "flags": {},
+ "parameters": [
+ {
+ "id": 512,
+ "name": "key",
+ "kind": 32768,
+ "flags": {},
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "any"
+ }
+ }
+ },
+ {
+ "id": 577,
"name": "VerifyEmailOTPParams",
"kind": 256,
"kindString": "Interface",
"flags": {},
"children": [
{
- "id": 577,
+ "id": 578,
"name": "email",
"kind": 1024,
"kindString": "Property",
"flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 204,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 579,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 205,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "undefined"
+ }
+ },
+ {
+ "id": 580,
+ "name": "token",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 206,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ },
+ {
+ "id": 581,
+ "name": "type",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 207,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "reference",
+ "id": 583,
+ "name": "EmailOTPType"
+ }
+ }
+ ],
+ "groups": [
+ {
+ "title": "Properties",
+ "kind": 1024,
+ "children": [578, 579, 580, 581]
+ }
+ ],
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 203,
+ "character": 17
+ }
+ ]
+ },
+ {
+ "id": 572,
+ "name": "VerifyMobileOTPParams",
+ "kind": 256,
+ "kindString": "Interface",
+ "flags": {},
+ "children": [
+ {
+ "id": 573,
+ "name": "email",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "src/lib/types.ts",
+ "line": 198,
+ "character": 2
+ }
+ ],
+ "type": {
+ "type": "intrinsic",
+ "name": "undefined"
+ }
+ },
+ {
+ "id": 574,
+ "name": "phone",
+ "kind": 1024,
+ "kindString": "Property",
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -10797,13 +10962,11 @@
}
},
{
- "id": 578,
- "name": "phone",
+ "id": 575,
+ "name": "token",
"kind": 1024,
"kindString": "Property",
- "flags": {
- "isOptional": true
- },
+ "flags": {},
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -10813,15 +10976,17 @@
],
"type": {
"type": "intrinsic",
- "name": "undefined"
+ "name": "string"
}
},
{
- "id": 579,
- "name": "token",
+ "id": 576,
+ "name": "type",
"kind": 1024,
"kindString": "Property",
- "flags": {},
+ "flags": {
+ "isOptional": true
+ },
"sources": [
{
"fileName": "src/lib/types.ts",
@@ -10829,127 +10994,9 @@
"character": 2
}
],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 580,
- "name": "type",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 202,
- "character": 2
- }
- ],
"type": {
"type": "reference",
"id": 582,
- "name": "EmailOTPType"
- }
- }
- ],
- "groups": [
- {
- "title": "Properties",
- "kind": 1024,
- "children": [577, 578, 579, 580]
- }
- ],
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 198,
- "character": 17
- }
- ]
- },
- {
- "id": 571,
- "name": "VerifyMobileOTPParams",
- "kind": 256,
- "kindString": "Interface",
- "flags": {},
- "children": [
- {
- "id": 572,
- "name": "email",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 193,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "undefined"
- }
- },
- {
- "id": 573,
- "name": "phone",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 194,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 574,
- "name": "token",
- "kind": 1024,
- "kindString": "Property",
- "flags": {},
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 195,
- "character": 2
- }
- ],
- "type": {
- "type": "intrinsic",
- "name": "string"
- }
- },
- {
- "id": 575,
- "name": "type",
- "kind": 1024,
- "kindString": "Property",
- "flags": {
- "isOptional": true
- },
- "sources": [
- {
- "fileName": "src/lib/types.ts",
- "line": 196,
- "character": 2
- }
- ],
- "type": {
- "type": "reference",
- "id": 581,
"name": "MobileOTPType"
}
}
@@ -10958,13 +11005,13 @@
{
"title": "Properties",
"kind": 1024,
- "children": [572, 573, 574, 575]
+ "children": [573, 574, 575, 576]
}
],
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 192,
+ "line": 197,
"character": 17
}
]
@@ -11013,7 +11060,7 @@
}
},
{
- "id": 582,
+ "id": 583,
"name": "EmailOTPType",
"kind": 4194304,
"kindString": "Type alias",
@@ -11021,7 +11068,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 205,
+ "line": 210,
"character": 12
}
],
@@ -11052,7 +11099,7 @@
}
},
{
- "id": 581,
+ "id": 582,
"name": "MobileOTPType",
"kind": 4194304,
"kindString": "Type alias",
@@ -11060,7 +11107,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 204,
+ "line": 209,
"character": 12
}
],
@@ -11162,7 +11209,7 @@
}
},
{
- "id": 589,
+ "id": 590,
"name": "SupportedStorage",
"kind": 4194304,
"kindString": "Type alias",
@@ -11170,7 +11217,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 224,
+ "line": 229,
"character": 12
}
],
@@ -11213,7 +11260,7 @@
}
},
{
- "id": 570,
+ "id": 571,
"name": "VerifyOTPParams",
"kind": 4194304,
"kindString": "Type alias",
@@ -11221,7 +11268,7 @@
"sources": [
{
"fileName": "src/lib/types.ts",
- "line": 191,
+ "line": 196,
"character": 12
}
],
@@ -11230,12 +11277,12 @@
"types": [
{
"type": "reference",
- "id": 571,
+ "id": 572,
"name": "VerifyMobileOTPParams"
},
{
"type": "reference",
- "id": 576,
+ "id": 577,
"name": "VerifyEmailOTPParams"
}
]
@@ -11251,12 +11298,12 @@
{
"title": "Interfaces",
"kind": 256,
- "children": [539, 483, 557, 583, 486, 549, 505, 533, 563, 494, 576, 571]
+ "children": [540, 483, 558, 584, 486, 550, 513, 506, 534, 564, 495, 510, 577, 572]
},
{
"title": "Type aliases",
"kind": 4194304,
- "children": [482, 582, 581, 481, 589, 570]
+ "children": [482, 583, 582, 481, 590, 571]
}
],
"sources": [
diff --git a/spec/enrichments/tsdoc_v1/realtime.json b/spec/enrichments/tsdoc_v1/realtime.json
index ea2b032fe0d..50f34d1ed58 100644
--- a/spec/enrichments/tsdoc_v1/realtime.json
+++ b/spec/enrichments/tsdoc_v1/realtime.json
@@ -90,7 +90,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 73,
+ "line": 74,
"character": 3
}
]
@@ -106,7 +106,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 43,
+ "line": 44,
"character": 13
}
],
@@ -136,7 +136,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 44,
+ "line": 45,
"character": 10
}
],
@@ -161,7 +161,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 60,
+ "line": 61,
"character": 6
}
],
@@ -191,7 +191,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 58,
+ "line": 59,
"character": 8
}
],
@@ -211,7 +211,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 57,
+ "line": 58,
"character": 8
}
],
@@ -231,7 +231,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 45,
+ "line": 46,
"character": 10
}
],
@@ -253,7 +253,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 46,
+ "line": 47,
"character": 9
}
],
@@ -321,7 +321,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 50,
+ "line": 51,
"character": 21
}
],
@@ -342,7 +342,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 52,
+ "line": 53,
"character": 16
}
],
@@ -381,7 +381,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 56,
+ "line": 57,
"character": 8
}
],
@@ -402,7 +402,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 51,
+ "line": 52,
"character": 19
}
],
@@ -424,7 +424,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 47,
+ "line": 48,
"character": 8
}
],
@@ -491,7 +491,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 53,
+ "line": 54,
"character": 21
}
],
@@ -521,7 +521,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 59,
+ "line": 60,
"character": 18
}
],
@@ -541,7 +541,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 55,
+ "line": 56,
"character": 16
}
],
@@ -562,7 +562,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 54,
+ "line": 55,
"character": 5
}
],
@@ -583,7 +583,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 61,
+ "line": 62,
"character": 12
}
],
@@ -607,7 +607,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 62,
+ "line": 63,
"character": 12
}
],
@@ -629,7 +629,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 48,
+ "line": 49,
"character": 9
}
],
@@ -650,7 +650,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 49,
+ "line": 50,
"character": 11
}
],
@@ -743,7 +743,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 405,
+ "line": 406,
"character": 11
}
]
@@ -760,7 +760,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 403,
+ "line": 404,
"character": 23
}
]
@@ -792,7 +792,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 416,
+ "line": 417,
"character": 26
}
]
@@ -839,7 +839,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 383,
+ "line": 384,
"character": 22
}
]
@@ -886,7 +886,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 391,
+ "line": 392,
"character": 22
}
]
@@ -918,7 +918,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 371,
+ "line": 372,
"character": 21
}
]
@@ -950,7 +950,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 423,
+ "line": 424,
"character": 24
}
]
@@ -982,7 +982,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 397,
+ "line": 398,
"character": 27
}
]
@@ -1028,7 +1028,7 @@
},
"type": {
"type": "reference",
- "id": 364,
+ "id": 365,
"name": "ChannelParams"
},
"defaultValue": "{}"
@@ -1044,7 +1044,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 264,
+ "line": 265,
"character": 9
}
]
@@ -1078,7 +1078,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 125,
+ "line": 126,
"character": 9
}
]
@@ -1113,7 +1113,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 233,
+ "line": 234,
"character": 17
}
]
@@ -1217,7 +1217,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 151,
+ "line": 152,
"character": 40
}
],
@@ -1237,7 +1237,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 151,
+ "line": 152,
"character": 20
}
],
@@ -1266,7 +1266,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 151,
+ "line": 152,
"character": 13
}
]
@@ -1280,7 +1280,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 148,
+ "line": 149,
"character": 12
}
]
@@ -1314,7 +1314,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 320,
+ "line": 321,
"character": 13
}
]
@@ -1348,7 +1348,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 249,
+ "line": 250,
"character": 13
}
]
@@ -1397,7 +1397,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 361,
+ "line": 362,
"character": 16
}
]
@@ -1474,7 +1474,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 178,
+ "line": 179,
"character": 5
}
]
@@ -1508,7 +1508,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 330,
+ "line": 331,
"character": 9
}
]
@@ -1566,7 +1566,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 202,
+ "line": 203,
"character": 9
}
]
@@ -1619,7 +1619,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 290,
+ "line": 291,
"character": 34
}
],
@@ -1639,7 +1639,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 290,
+ "line": 291,
"character": 27
}
]
@@ -1656,7 +1656,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 290,
+ "line": 291,
"character": 15
}
]
@@ -1714,7 +1714,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 214,
+ "line": 215,
"character": 9
}
]
@@ -1772,7 +1772,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 226,
+ "line": 227,
"character": 11
}
]
@@ -1830,7 +1830,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 190,
+ "line": 191,
"character": 8
}
]
@@ -1881,7 +1881,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 275,
+ "line": 276,
"character": 6
}
]
@@ -1934,7 +1934,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 258,
+ "line": 259,
"character": 8
}
]
@@ -1995,7 +1995,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 346,
+ "line": 347,
"character": 9
}
]
@@ -2020,7 +2020,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 70,
+ "line": 71,
"character": 9
}
],
@@ -2044,7 +2044,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 71,
+ "line": 72,
"character": 9
}
],
@@ -2068,7 +2068,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 72,
+ "line": 73,
"character": 11
}
],
@@ -2092,7 +2092,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 69,
+ "line": 70,
"character": 8
}
],
@@ -2116,7 +2116,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 63,
+ "line": 64,
"character": 22
}
],
@@ -2157,13 +2157,13 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 42,
+ "line": 43,
"character": 35
}
]
},
{
- "id": 364,
+ "id": 365,
"name": "ChannelParams",
"kind": 4194304,
"kindString": "Type alias",
@@ -2171,28 +2171,28 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 35,
+ "line": 36,
"character": 18
}
],
"type": {
"type": "reflection",
"declaration": {
- "id": 365,
+ "id": 366,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
"flags": {},
"indexSignature": [
{
- "id": 367,
+ "id": 368,
"name": "__index",
"kind": 8192,
"kindString": "Index signature",
"flags": {},
"parameters": [
{
- "id": 368,
+ "id": 369,
"name": "key",
"kind": 32768,
"kindString": "Parameter",
@@ -2211,7 +2211,7 @@
],
"children": [
{
- "id": 366,
+ "id": 367,
"name": "selfBroadcast",
"kind": 32,
"kindString": "Variable",
@@ -2221,7 +2221,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 36,
+ "line": 37,
"character": 15
}
],
@@ -2248,13 +2248,13 @@
{
"title": "Variables",
"kind": 32,
- "children": [366]
+ "children": [367]
}
],
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 35,
+ "line": 36,
"character": 20
}
]
@@ -2301,6 +2301,35 @@
"name": "string"
}
},
+ {
+ "id": 364,
+ "name": "join_ref",
+ "kind": 32,
+ "kindString": "Variable",
+ "flags": {
+ "isOptional": true
+ },
+ "sources": [
+ {
+ "fileName": "RealtimeClient.ts",
+ "line": 33,
+ "character": 10
+ }
+ ],
+ "type": {
+ "type": "union",
+ "types": [
+ {
+ "type": "intrinsic",
+ "name": "undefined"
+ },
+ {
+ "type": "intrinsic",
+ "name": "string"
+ }
+ ]
+ }
+ },
{
"id": 362,
"name": "payload",
@@ -2360,7 +2389,7 @@
{
"title": "Variables",
"kind": 32,
- "children": [361, 362, 363, 360]
+ "children": [361, 364, 362, 363, 360]
}
],
"sources": [
@@ -2749,7 +2778,7 @@
}
},
{
- "id": 369,
+ "id": 370,
"name": "noop",
"kind": 64,
"kindString": "Function",
@@ -2758,7 +2787,7 @@
},
"signatures": [
{
- "id": 370,
+ "id": 371,
"name": "noop",
"kind": 4096,
"kindString": "Call signature",
@@ -2772,7 +2801,7 @@
"sources": [
{
"fileName": "RealtimeClient.ts",
- "line": 40,
+ "line": 41,
"character": 10
}
]
@@ -2787,12 +2816,12 @@
{
"title": "Type aliases",
"kind": 4194304,
- "children": [364, 358, 340]
+ "children": [365, 358, 340]
},
{
"title": "Functions",
"kind": 64,
- "children": [369]
+ "children": [370]
}
],
"sources": [
@@ -4273,7 +4302,7 @@
]
},
{
- "id": 445,
+ "id": 446,
"name": "\"index\"",
"kind": 1,
"kindString": "Module",
@@ -5535,7 +5564,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 100,
+ "line": 101,
"character": 25
}
]
@@ -5567,7 +5596,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 108,
+ "line": 109,
"character": 24
}
]
@@ -5627,7 +5656,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 125,
+ "line": 126,
"character": 22
}
]
@@ -5682,7 +5711,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 115,
+ "line": 116,
"character": 12
}
],
@@ -5702,7 +5731,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 114,
+ "line": 115,
"character": 10
}
],
@@ -5722,7 +5751,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 113,
+ "line": 114,
"character": 24
}
]
@@ -5739,7 +5768,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 113,
+ "line": 114,
"character": 23
}
]
@@ -5770,7 +5799,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 95,
+ "line": 96,
"character": 9
}
]
@@ -5829,7 +5858,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 61,
+ "line": 62,
"character": 9
}
]
@@ -5937,7 +5966,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 70,
+ "line": 71,
"character": 14
}
]
@@ -5996,7 +6025,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 91,
+ "line": 92,
"character": 9
}
]
@@ -6070,7 +6099,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 57,
+ "line": 58,
"character": 24
}
]
@@ -6087,7 +6116,7 @@
"sources": [
{
"fileName": "lib/push.ts",
- "line": 57,
+ "line": 58,
"character": 15
}
]
@@ -6888,7 +6917,7 @@
]
},
{
- "id": 371,
+ "id": 372,
"name": "\"lib/transformers\"",
"kind": 1,
"kindString": "Module",
@@ -6898,7 +6927,7 @@
"originalName": "/home/runner/work/realtime-js/realtime-js/src/lib/transformers.ts",
"children": [
{
- "id": 372,
+ "id": 373,
"name": "PostgresTypes",
"kind": 4,
"kindString": "Enumeration",
@@ -6910,7 +6939,7 @@
},
"children": [
{
- "id": 373,
+ "id": 374,
"name": "abstime",
"kind": 16,
"kindString": "Enumeration member",
@@ -6927,7 +6956,7 @@
"defaultValue": "\"abstime\""
},
{
- "id": 374,
+ "id": 375,
"name": "bool",
"kind": 16,
"kindString": "Enumeration member",
@@ -6944,7 +6973,7 @@
"defaultValue": "\"bool\""
},
{
- "id": 375,
+ "id": 376,
"name": "date",
"kind": 16,
"kindString": "Enumeration member",
@@ -6961,7 +6990,7 @@
"defaultValue": "\"date\""
},
{
- "id": 376,
+ "id": 377,
"name": "daterange",
"kind": 16,
"kindString": "Enumeration member",
@@ -6978,7 +7007,7 @@
"defaultValue": "\"daterange\""
},
{
- "id": 377,
+ "id": 378,
"name": "float4",
"kind": 16,
"kindString": "Enumeration member",
@@ -6995,7 +7024,7 @@
"defaultValue": "\"float4\""
},
{
- "id": 378,
+ "id": 379,
"name": "float8",
"kind": 16,
"kindString": "Enumeration member",
@@ -7012,7 +7041,7 @@
"defaultValue": "\"float8\""
},
{
- "id": 379,
+ "id": 380,
"name": "int2",
"kind": 16,
"kindString": "Enumeration member",
@@ -7029,7 +7058,7 @@
"defaultValue": "\"int2\""
},
{
- "id": 380,
+ "id": 381,
"name": "int4",
"kind": 16,
"kindString": "Enumeration member",
@@ -7046,7 +7075,7 @@
"defaultValue": "\"int4\""
},
{
- "id": 381,
+ "id": 382,
"name": "int4range",
"kind": 16,
"kindString": "Enumeration member",
@@ -7063,7 +7092,7 @@
"defaultValue": "\"int4range\""
},
{
- "id": 382,
+ "id": 383,
"name": "int8",
"kind": 16,
"kindString": "Enumeration member",
@@ -7080,7 +7109,7 @@
"defaultValue": "\"int8\""
},
{
- "id": 383,
+ "id": 384,
"name": "int8range",
"kind": 16,
"kindString": "Enumeration member",
@@ -7097,7 +7126,7 @@
"defaultValue": "\"int8range\""
},
{
- "id": 384,
+ "id": 385,
"name": "json",
"kind": 16,
"kindString": "Enumeration member",
@@ -7114,7 +7143,7 @@
"defaultValue": "\"json\""
},
{
- "id": 385,
+ "id": 386,
"name": "jsonb",
"kind": 16,
"kindString": "Enumeration member",
@@ -7131,7 +7160,7 @@
"defaultValue": "\"jsonb\""
},
{
- "id": 386,
+ "id": 387,
"name": "money",
"kind": 16,
"kindString": "Enumeration member",
@@ -7148,7 +7177,7 @@
"defaultValue": "\"money\""
},
{
- "id": 387,
+ "id": 388,
"name": "numeric",
"kind": 16,
"kindString": "Enumeration member",
@@ -7165,7 +7194,7 @@
"defaultValue": "\"numeric\""
},
{
- "id": 388,
+ "id": 389,
"name": "oid",
"kind": 16,
"kindString": "Enumeration member",
@@ -7182,7 +7211,7 @@
"defaultValue": "\"oid\""
},
{
- "id": 389,
+ "id": 390,
"name": "reltime",
"kind": 16,
"kindString": "Enumeration member",
@@ -7199,7 +7228,7 @@
"defaultValue": "\"reltime\""
},
{
- "id": 390,
+ "id": 391,
"name": "text",
"kind": 16,
"kindString": "Enumeration member",
@@ -7216,7 +7245,7 @@
"defaultValue": "\"text\""
},
{
- "id": 391,
+ "id": 392,
"name": "time",
"kind": 16,
"kindString": "Enumeration member",
@@ -7233,7 +7262,7 @@
"defaultValue": "\"time\""
},
{
- "id": 392,
+ "id": 393,
"name": "timestamp",
"kind": 16,
"kindString": "Enumeration member",
@@ -7250,7 +7279,7 @@
"defaultValue": "\"timestamp\""
},
{
- "id": 393,
+ "id": 394,
"name": "timestamptz",
"kind": 16,
"kindString": "Enumeration member",
@@ -7267,7 +7296,7 @@
"defaultValue": "\"timestamptz\""
},
{
- "id": 394,
+ "id": 395,
"name": "timetz",
"kind": 16,
"kindString": "Enumeration member",
@@ -7284,7 +7313,7 @@
"defaultValue": "\"timetz\""
},
{
- "id": 395,
+ "id": 396,
"name": "tsrange",
"kind": 16,
"kindString": "Enumeration member",
@@ -7301,7 +7330,7 @@
"defaultValue": "\"tsrange\""
},
{
- "id": 396,
+ "id": 397,
"name": "tstzrange",
"kind": 16,
"kindString": "Enumeration member",
@@ -7323,8 +7352,8 @@
"title": "Enumeration members",
"kind": 16,
"children": [
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
- 390, 391, 392, 393, 394, 395, 396
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390,
+ 391, 392, 393, 394, 395, 396, 397
]
}
],
@@ -7337,7 +7366,7 @@
]
},
{
- "id": 403,
+ "id": 404,
"name": "BaseValue",
"kind": 4194304,
"kindString": "Type alias",
@@ -7372,7 +7401,7 @@
}
},
{
- "id": 397,
+ "id": 398,
"name": "Columns",
"kind": 4194304,
"kindString": "Type alias",
@@ -7389,14 +7418,14 @@
"elementType": {
"type": "reflection",
"declaration": {
- "id": 398,
+ "id": 399,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
"flags": {},
"children": [
{
- "id": 401,
+ "id": 402,
"name": "flags",
"kind": 32,
"kindString": "Variable",
@@ -7419,7 +7448,7 @@
}
},
{
- "id": 399,
+ "id": 400,
"name": "name",
"kind": 32,
"kindString": "Variable",
@@ -7437,7 +7466,7 @@
}
},
{
- "id": 400,
+ "id": 401,
"name": "type",
"kind": 32,
"kindString": "Variable",
@@ -7455,7 +7484,7 @@
}
},
{
- "id": 402,
+ "id": 403,
"name": "type_modifier",
"kind": 32,
"kindString": "Variable",
@@ -7488,7 +7517,7 @@
{
"title": "Variables",
"kind": 32,
- "children": [401, 399, 400, 402]
+ "children": [402, 400, 401, 403]
}
],
"sources": [
@@ -7503,7 +7532,7 @@
}
},
{
- "id": 405,
+ "id": 406,
"name": "Record",
"kind": 4194304,
"kindString": "Type alias",
@@ -7518,21 +7547,21 @@
"type": {
"type": "reflection",
"declaration": {
- "id": 406,
+ "id": 407,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
"flags": {},
"indexSignature": [
{
- "id": 407,
+ "id": 408,
"name": "__index",
"kind": 8192,
"kindString": "Index signature",
"flags": {},
"parameters": [
{
- "id": 408,
+ "id": 409,
"name": "key",
"kind": 32768,
"kindString": "Parameter",
@@ -7545,7 +7574,7 @@
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -7561,7 +7590,7 @@
}
},
{
- "id": 404,
+ "id": 405,
"name": "RecordValue",
"kind": 4194304,
"kindString": "Type alias",
@@ -7578,14 +7607,14 @@
"types": [
{
"type": "reference",
- "id": 403,
+ "id": 404,
"name": "BaseValue"
},
{
"type": "array",
"elementType": {
"type": "reference",
- "id": 403,
+ "id": 404,
"name": "BaseValue"
}
}
@@ -7593,7 +7622,7 @@
}
},
{
- "id": 422,
+ "id": 423,
"name": "convertCell",
"kind": 64,
"kindString": "Function",
@@ -7620,7 +7649,7 @@
},
"signatures": [
{
- "id": 423,
+ "id": 424,
"name": "convertCell",
"kind": 4096,
"kindString": "Call signature",
@@ -7646,7 +7675,7 @@
},
"parameters": [
{
- "id": 424,
+ "id": 425,
"name": "type",
"kind": 32768,
"kindString": "Parameter",
@@ -7662,7 +7691,7 @@
}
},
{
- "id": 425,
+ "id": 426,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -7671,14 +7700,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -7692,7 +7721,7 @@
]
},
{
- "id": 409,
+ "id": 410,
"name": "convertChangeData",
"kind": 64,
"kindString": "Function",
@@ -7711,7 +7740,7 @@
},
"signatures": [
{
- "id": 410,
+ "id": 411,
"name": "convertChangeData",
"kind": 4096,
"kindString": "Call signature",
@@ -7729,7 +7758,7 @@
},
"parameters": [
{
- "id": 411,
+ "id": 412,
"name": "columns",
"kind": 32768,
"kindString": "Parameter",
@@ -7738,12 +7767,12 @@
},
"type": {
"type": "reference",
- "id": 397,
+ "id": 398,
"name": "Columns"
}
},
{
- "id": 412,
+ "id": 413,
"name": "record",
"kind": 32768,
"kindString": "Parameter",
@@ -7753,12 +7782,12 @@
"comment": {},
"type": {
"type": "reference",
- "id": 405,
+ "id": 406,
"name": "Record"
}
},
{
- "id": 413,
+ "id": 414,
"name": "options",
"kind": 32768,
"kindString": "Parameter",
@@ -7771,7 +7800,7 @@
"type": {
"type": "reflection",
"declaration": {
- "id": 414,
+ "id": 415,
"name": "__type",
"kind": 65536,
"kindString": "Type literal",
@@ -7780,7 +7809,7 @@
},
"children": [
{
- "id": 415,
+ "id": 416,
"name": "skipTypes",
"kind": 32,
"kindString": "Variable",
@@ -7808,7 +7837,7 @@
{
"title": "Variables",
"kind": 32,
- "children": [415]
+ "children": [416]
}
],
"sources": [
@@ -7825,7 +7854,7 @@
],
"type": {
"type": "reference",
- "id": 405,
+ "id": 406,
"name": "Record"
}
}
@@ -7839,7 +7868,7 @@
]
},
{
- "id": 416,
+ "id": 417,
"name": "convertColumn",
"kind": 64,
"kindString": "Function",
@@ -7863,7 +7892,7 @@
},
"signatures": [
{
- "id": 417,
+ "id": 418,
"name": "convertColumn",
"kind": 4096,
"kindString": "Call signature",
@@ -7886,7 +7915,7 @@
},
"parameters": [
{
- "id": 418,
+ "id": 419,
"name": "columnName",
"kind": 32768,
"kindString": "Parameter",
@@ -7902,7 +7931,7 @@
}
},
{
- "id": 419,
+ "id": 420,
"name": "columns",
"kind": 32768,
"kindString": "Parameter",
@@ -7911,12 +7940,12 @@
},
"type": {
"type": "reference",
- "id": 397,
+ "id": 398,
"name": "Columns"
}
},
{
- "id": 420,
+ "id": 421,
"name": "record",
"kind": 32768,
"kindString": "Parameter",
@@ -7928,12 +7957,12 @@
},
"type": {
"type": "reference",
- "id": 405,
+ "id": 406,
"name": "Record"
}
},
{
- "id": 421,
+ "id": 422,
"name": "skipTypes",
"kind": 32768,
"kindString": "Parameter",
@@ -7954,7 +7983,7 @@
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -7968,7 +7997,7 @@
]
},
{
- "id": 426,
+ "id": 427,
"name": "noop",
"kind": 64,
"kindString": "Function",
@@ -7977,28 +8006,28 @@
},
"signatures": [
{
- "id": 427,
+ "id": 428,
"name": "noop",
"kind": 4096,
"kindString": "Call signature",
"flags": {},
"parameters": [
{
- "id": 428,
+ "id": 429,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
"flags": {},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -8012,7 +8041,7 @@
]
},
{
- "id": 438,
+ "id": 439,
"name": "toArray",
"kind": 64,
"kindString": "Function",
@@ -8039,7 +8068,7 @@
},
"signatures": [
{
- "id": 439,
+ "id": 440,
"name": "toArray",
"kind": 4096,
"kindString": "Call signature",
@@ -8065,7 +8094,7 @@
},
"parameters": [
{
- "id": 440,
+ "id": 441,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -8074,12 +8103,12 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
},
{
- "id": 441,
+ "id": 442,
"name": "type",
"kind": 32768,
"kindString": "Parameter",
@@ -8094,7 +8123,7 @@
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -8108,7 +8137,7 @@
]
},
{
- "id": 429,
+ "id": 430,
"name": "toBoolean",
"kind": 64,
"kindString": "Function",
@@ -8118,7 +8147,7 @@
},
"signatures": [
{
- "id": 430,
+ "id": 431,
"name": "toBoolean",
"kind": 4096,
"kindString": "Call signature",
@@ -8127,7 +8156,7 @@
},
"parameters": [
{
- "id": 431,
+ "id": 432,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -8136,14 +8165,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -8157,7 +8186,7 @@
]
},
{
- "id": 435,
+ "id": 436,
"name": "toJson",
"kind": 64,
"kindString": "Function",
@@ -8167,7 +8196,7 @@
},
"signatures": [
{
- "id": 436,
+ "id": 437,
"name": "toJson",
"kind": 4096,
"kindString": "Call signature",
@@ -8176,7 +8205,7 @@
},
"parameters": [
{
- "id": 437,
+ "id": 438,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -8185,14 +8214,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -8206,7 +8235,7 @@
]
},
{
- "id": 432,
+ "id": 433,
"name": "toNumber",
"kind": 64,
"kindString": "Function",
@@ -8216,7 +8245,7 @@
},
"signatures": [
{
- "id": 433,
+ "id": 434,
"name": "toNumber",
"kind": 4096,
"kindString": "Call signature",
@@ -8225,7 +8254,7 @@
},
"parameters": [
{
- "id": 434,
+ "id": 435,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -8234,14 +8263,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -8255,7 +8284,7 @@
]
},
{
- "id": 442,
+ "id": 443,
"name": "toTimestampString",
"kind": 64,
"kindString": "Function",
@@ -8274,7 +8303,7 @@
},
"signatures": [
{
- "id": 443,
+ "id": 444,
"name": "toTimestampString",
"kind": 4096,
"kindString": "Call signature",
@@ -8292,7 +8321,7 @@
},
"parameters": [
{
- "id": 444,
+ "id": 445,
"name": "value",
"kind": 32768,
"kindString": "Parameter",
@@ -8301,14 +8330,14 @@
},
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
],
"type": {
"type": "reference",
- "id": 404,
+ "id": 405,
"name": "RecordValue"
}
}
@@ -8326,17 +8355,17 @@
{
"title": "Enumerations",
"kind": 4,
- "children": [372]
+ "children": [373]
},
{
"title": "Type aliases",
"kind": 4194304,
- "children": [403, 397, 405, 404]
+ "children": [404, 398, 406, 405]
},
{
"title": "Functions",
"kind": 64,
- "children": [422, 409, 416, 426, 438, 429, 435, 432, 442]
+ "children": [423, 410, 417, 427, 439, 430, 436, 433, 443]
}
],
"sources": [
@@ -8400,7 +8429,7 @@
{
"title": "Modules",
"kind": 1,
- "children": [227, 139, 445, 3, 73, 48, 34, 371, 1]
+ "children": [227, 139, 446, 3, 73, 48, 34, 372, 1]
}
]
}
diff --git a/spec/storage_v0_openapi.json b/spec/storage_v0_openapi.json
index 452022e16a8..953fdecd1a8 100644
--- a/spec/storage_v0_openapi.json
+++ b/spec/storage_v0_openapi.json
@@ -782,6 +782,16 @@
"summary": "Retrieve an object via a presigned URL",
"tags": ["object"],
"parameters": [
+ {
+ "schema": { "type": "string" },
+ "examples": {
+ "filename.jpg": { "value": "filename.jpg" },
+ "example2": { "value": null }
+ },
+ "in": "query",
+ "name": "download",
+ "required": false
+ },
{
"schema": {
"type": "string",
diff --git a/spec/supabase_dart_v0_legacy.yml b/spec/supabase_dart_v0.yml
similarity index 99%
rename from spec/supabase_dart_v0_legacy.yml
rename to spec/supabase_dart_v0.yml
index af073c8ee95..c7cf24554ba 100644
--- a/spec/supabase_dart_v0_legacy.yml
+++ b/spec/supabase_dart_v0.yml
@@ -9,7 +9,7 @@ info:
definition: ../../spec/enrichments/tsdoc_v1/combined.json
slugPrefix: '/'
- specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_dart_v1_legacy.yml
+ specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_dart_v0.yml
libraries:
- name: 'Dart'
id: 'dart'
diff --git a/spec/supabase_dart_v1_legacy.yml b/spec/supabase_dart_v1.yml
similarity index 99%
rename from spec/supabase_dart_v1_legacy.yml
rename to spec/supabase_dart_v1.yml
index 0b62f631386..eb3dd78da95 100644
--- a/spec/supabase_dart_v1_legacy.yml
+++ b/spec/supabase_dart_v1.yml
@@ -9,7 +9,7 @@ info:
definition: ../../spec/enrichments/tsdoc_v1/combined.json
slugPrefix: '/'
- specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_dart_v1_legacy.yml
+ specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_dart_v1.yml
libraries:
- name: 'Dart'
id: 'dart'
diff --git a/spec/supabase_js_v1_legacy.yml b/spec/supabase_js_v1.yml
similarity index 98%
rename from spec/supabase_js_v1_legacy.yml
rename to spec/supabase_js_v1.yml
index 785be77887c..82644287122 100644
--- a/spec/supabase_js_v1_legacy.yml
+++ b/spec/supabase_js_v1.yml
@@ -8,7 +8,7 @@ info:
Supabase JavaScript.
definition: ../../spec/enrichments/tsdoc_v1/combined.json
- specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1_legacy.yml
+ specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml
slugPrefix: '/'
libraries:
- name: 'JavaScript'
@@ -934,10 +934,8 @@ pages:
rpc():
title: 'Postgres functions: rpc()'
description: |
- You can call Postgres functions as a "Remote Procedure Call".
-
- That's a fancy way of saying that you can put some logic into your database then call it from anywhere.
- It's especially useful when the logic rarely changes - like password resets and updates.
+ You can call Postgres functions as _Remote Procedure Calls_, logic in your database that you can execute from anywhere.
+ Functions are useful when the logic rarely changes—like for password resets and updates.
```sql
create or replace function hello_world() returns text as $$
@@ -946,15 +944,14 @@ pages:
```
$ref: '@supabase/postgrest-js.PostgrestClient.rpc'
examples:
- - name: Call a Postgres function
+ - name: Call a Postgres function without arguments
isSpotlight: true
- description: This is an example of invoking a Postgres function with no parameters.
js: |
```js
const { data, error } = await supabase
.rpc('hello_world')
```
- - name: With Parameters
+ - name: Call a Postgres function with arguments
js: |
```js
const { data, error } = await supabase
@@ -967,7 +964,7 @@ pages:
const { data, error } = await postgrest
.rpc('echo_cities', { names: ['The Shire', 'Mordor'] })
```
- - name: With filters
+ - name: Call a Postgres function with filters
description: |
Postgres functions that return tables can also be combined with
[Modifiers](/docs/reference/javascript/using-modifiers) and
@@ -979,7 +976,7 @@ pages:
.select('name, population')
.eq('name', 'The Shire')
```
- - name: With count option
+ - name: Call a Postgres function with a count option
description: |
You can specify a count option to get the row count along with your data.
Allowed values for count option are `null`, `exact`, `planned` and `estimated`.
@@ -989,20 +986,6 @@ pages:
.rpc('hello_world', {}, { count: 'exact' })
```
- privileges:
- description: |
- By default, functions can be executed by any role. You can restrict this by
- sql: |
- ```sql
- ALTER DEFAULT PRIVILEGES REVOKE EXECUTE ON FUNCTIONS FROM PUBLIC;
- ```
- Then, you can choose which roles can execute functions
- sql: |
- ```sql
- GRANT EXECUTE ON FUNCTION hello_world TO authenticated;
- GRANT EXECUTE ON FUNCTION hello_world TO service_role;
- ```
-
subscribe():
title: 'on().subscribe()'
$ref: '@supabase/supabase-js.lib/SupabaseQueryBuilder.SupabaseQueryBuilder.on'
diff --git a/spec/supabase_js_v2_legacy.yml b/spec/supabase_js_v2.yml
similarity index 99%
rename from spec/supabase_js_v2_legacy.yml
rename to spec/supabase_js_v2.yml
index aeeed1d11c1..0f029ebf386 100644
--- a/spec/supabase_js_v2_legacy.yml
+++ b/spec/supabase_js_v2.yml
@@ -8,7 +8,7 @@ info:
Supabase JavaScript.
definition: ../../spec/enrichments/tsdoc_v2/combined.json
- specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v2_legacy.yml
+ specUrl: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v2.yml
slugPrefix: '/'
libraries:
- name: 'JavaScript'
@@ -1838,10 +1838,8 @@ pages:
rpc():
title: 'Postgres functions: rpc()'
description: |
- You can call Postgres functions as a "Remote Procedure Call".
-
- That's a fancy way of saying that you can put some logic into your database then call it from anywhere.
- It's especially useful when the logic rarely changes - like password resets and updates.
+ You can call Postgres functions as _Remote Procedure Calls_, logic in your database that you can execute from anywhere.
+ Functions are useful when the logic rarely changes—like for password resets and updates.
```sql
create or replace function hello_world() returns text as $$
diff --git a/spec/transforms/api_v0_openapi_deparsed.json b/spec/transforms/api_v0_openapi_deparsed.json
index fc61e4f66ed..bef33a13711 100644
--- a/spec/transforms/api_v0_openapi_deparsed.json
+++ b/spec/transforms/api_v0_openapi_deparsed.json
@@ -527,7 +527,7 @@
]
},
"patch": {
- "operationId": "UpdateFunction",
+ "operationId": "updateFunction",
"summary": "Update a function",
"description": "Updates a function with the specified slug and project.",
"parameters": [
diff --git a/spec/transforms/auth_v1_openapi_deparsed.json b/spec/transforms/auth_v1_openapi_deparsed.json
new file mode 100644
index 00000000000..97739b7a407
--- /dev/null
+++ b/spec/transforms/auth_v1_openapi_deparsed.json
@@ -0,0 +1,4477 @@
+{
+ "produces": ["application/json"],
+ "schemes": ["http", "https"],
+ "swagger": "2.0",
+ "info": {
+ "description": "Documentation of the gotrue API.",
+ "title": "gotrue",
+ "version": "1.0.0"
+ },
+ "host": "localhost:9999",
+ "basePath": "/",
+ "paths": {
+ "/admin/generate_link": {
+ "post": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Generates an email action link.",
+ "operationId": "admin-generate-link",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "NewEmail"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "type": {
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The response object for generate link.",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "action_link": {
+ "type": "string",
+ "x-go-name": "ActionLink"
+ },
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "email_otp": {
+ "type": "string",
+ "x-go-name": "EmailOtp"
+ },
+ "hashed_token": {
+ "type": "string",
+ "x-go-name": "HashedToken"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "verification_type": {
+ "type": "string",
+ "x-go-name": "VerificationType"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ }
+ },
+ "/admin/user/{user_id}": {
+ "get": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Get a user.",
+ "operationId": "admin-get-user",
+ "parameters": [
+ {
+ "description": "The user's id",
+ "name": "user_id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Update a user.",
+ "operationId": "admin-update-user",
+ "parameters": [
+ {
+ "description": "The user's id",
+ "name": "user_id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ },
+ "delete": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Deletes a user.",
+ "operationId": "admin-delete-user",
+ "parameters": [
+ {
+ "description": "The user's id",
+ "name": "user_id",
+ "in": "path",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The updated user."
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ }
+ },
+ "/admin/users": {
+ "get": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "List all users.",
+ "operationId": "admin-list-users",
+ "responses": {
+ "200": {
+ "description": "The list of users.",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Users"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ },
+ "post": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["admin"],
+ "summary": "Returns the created user.",
+ "operationId": "admin-create-user",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "AppMetaData"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "ban_duration": {
+ "type": "string",
+ "x-go-name": "BanDuration"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "email_confirm": {
+ "type": "boolean",
+ "x-go-name": "EmailConfirm"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ },
+ "phone_confirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneConfirm"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "UserMetaData"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ }
+ },
+ "/authorize": {
+ "get": {
+ "tags": ["oauth"],
+ "summary": "Redirects the user to the 3rd-party OAuth provider to start the OAuth1.0 or OAuth2.0 authentication process.",
+ "operationId": "authorize",
+ "parameters": [
+ {
+ "description": "The redirect url to return the user to after the `/callback` endpoint has completed.",
+ "name": "redirect_to",
+ "in": "query"
+ }
+ ],
+ "responses": {
+ "302": {
+ "description": "Redirects user to the 3rd-party OAuth provider"
+ }
+ }
+ }
+ },
+ "/callback": {
+ "get": {
+ "tags": ["oauth"],
+ "summary": "Receives the redirect from an external provider during the OAuth authentication process. Starts the process of creating an access and refresh token.",
+ "operationId": "callback",
+ "responses": {
+ "302": {
+ "description": "Redirects user to the redirect url specified in `/authorize`. If no `redirect_url` is provided, the user will be redirected to the `SITE_URL`."
+ }
+ }
+ }
+ },
+ "/health": {
+ "get": {
+ "tags": ["health"],
+ "summary": "The healthcheck endpoint for gotrue. Returns the current gotrue version.",
+ "operationId": "health",
+ "responses": {
+ "200": {
+ "description": "",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string",
+ "x-go-name": "Description"
+ },
+ "name": {
+ "type": "string",
+ "x-go-name": "Name"
+ },
+ "version": {
+ "type": "string",
+ "x-go-name": "Version"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ }
+ }
+ },
+ "/invite": {
+ "post": {
+ "tags": ["invite"],
+ "summary": "Sends an invite link to the user.",
+ "operationId": "invite",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "InviteParams are the parameters the Signup endpoint accepts",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ }
+ }
+ },
+ "/logout": {
+ "post": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["logout"],
+ "summary": "Logs out the user.",
+ "operationId": "logout",
+ "responses": {
+ "204": {
+ "description": ""
+ }
+ }
+ }
+ },
+ "/otp": {
+ "post": {
+ "tags": ["otp"],
+ "summary": "Passwordless sign-in method for email or phone.",
+ "operationId": "otp",
+ "parameters": [
+ {
+ "description": "Only an email or phone should be provided.",
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "OtpParams contains the request body params for the otp endpoint",
+ "type": "object",
+ "properties": {
+ "create_user": {
+ "type": "boolean",
+ "x-go-name": "CreateUser"
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ }
+ }
+ },
+ "/recover": {
+ "post": {
+ "tags": ["recovery"],
+ "summary": "Sends a password recovery email link to the user's email.",
+ "operationId": "recovery",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "RecoverParams holds the parameters for a password recovery request",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": ""
+ }
+ }
+ }
+ },
+ "/settings": {
+ "get": {
+ "tags": ["settings"],
+ "summary": "Returns the configuration settings for the gotrue server.",
+ "operationId": "settings",
+ "responses": {
+ "200": {
+ "description": "",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "disable_signup": {
+ "type": "boolean",
+ "x-go-name": "DisableSignup"
+ },
+ "external": {
+ "type": "object",
+ "properties": {
+ "apple": {
+ "type": "boolean",
+ "x-go-name": "Apple"
+ },
+ "azure": {
+ "type": "boolean",
+ "x-go-name": "Azure"
+ },
+ "bitbucket": {
+ "type": "boolean",
+ "x-go-name": "Bitbucket"
+ },
+ "discord": {
+ "type": "boolean",
+ "x-go-name": "Discord"
+ },
+ "email": {
+ "type": "boolean",
+ "x-go-name": "Email"
+ },
+ "facebook": {
+ "type": "boolean",
+ "x-go-name": "Facebook"
+ },
+ "github": {
+ "type": "boolean",
+ "x-go-name": "GitHub"
+ },
+ "gitlab": {
+ "type": "boolean",
+ "x-go-name": "GitLab"
+ },
+ "google": {
+ "type": "boolean",
+ "x-go-name": "Google"
+ },
+ "keycloak": {
+ "type": "boolean",
+ "x-go-name": "Keycloak"
+ },
+ "linkedin": {
+ "type": "boolean",
+ "x-go-name": "Linkedin"
+ },
+ "notion": {
+ "type": "boolean",
+ "x-go-name": "Notion"
+ },
+ "phone": {
+ "type": "boolean",
+ "x-go-name": "Phone"
+ },
+ "saml": {
+ "type": "boolean",
+ "x-go-name": "SAML"
+ },
+ "slack": {
+ "type": "boolean",
+ "x-go-name": "Slack"
+ },
+ "spotify": {
+ "type": "boolean",
+ "x-go-name": "Spotify"
+ },
+ "twitch": {
+ "type": "boolean",
+ "x-go-name": "Twitch"
+ },
+ "twitter": {
+ "type": "boolean",
+ "x-go-name": "Twitter"
+ },
+ "workos": {
+ "type": "boolean",
+ "x-go-name": "WorkOS"
+ },
+ "zoom": {
+ "type": "boolean",
+ "x-go-name": "Zoom"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "mailer_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "MailerAutoconfirm"
+ },
+ "phone_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneAutoconfirm"
+ },
+ "sms_provider": {
+ "type": "string",
+ "x-go-name": "SmsProvider"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ }
+ }
+ },
+ "/signup": {
+ "post": {
+ "tags": ["signup"],
+ "summary": "Password-based signup with either email or phone.",
+ "operationId": "signup",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "SignupParams are the parameters the Signup endpoint accepts",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ }
+ }
+ }
+ },
+ "/token?grant_type=password": {
+ "post": {
+ "tags": ["token"],
+ "summary": "Signs in a user with a password.",
+ "operationId": "token-password",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "PasswordGrantParams are the parameters the ResourceOwnerPasswordGrant method accepts",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "schema": {
+ "description": "AccessTokenResponse represents an OAuth2 success response",
+ "type": "object",
+ "properties": {
+ "access_token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "expires_in": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ExpiresIn"
+ },
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ },
+ "token_type": {
+ "type": "string",
+ "x-go-name": "TokenType"
+ },
+ "user": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ }
+ }
+ },
+ "/token?grant_type=refresh_token": {
+ "post": {
+ "tags": ["token"],
+ "summary": "Refreshes a user's refresh token.",
+ "operationId": "token-refresh",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "RefreshTokenGrantParams are the parameters the RefreshTokenGrant method accepts",
+ "type": "object",
+ "properties": {
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "schema": {
+ "description": "AccessTokenResponse represents an OAuth2 success response",
+ "type": "object",
+ "properties": {
+ "access_token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "expires_in": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ExpiresIn"
+ },
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ },
+ "token_type": {
+ "type": "string",
+ "x-go-name": "TokenType"
+ },
+ "user": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ }
+ }
+ },
+ "/user": {
+ "get": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["user"],
+ "summary": "Get information for the logged-in user.",
+ "operationId": "user-get",
+ "responses": {
+ "200": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ },
+ "put": {
+ "security": [
+ {
+ "bearer": []
+ }
+ ],
+ "tags": ["user"],
+ "summary": "Returns the updated user.",
+ "operationId": "user-put",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "UserUpdateParams parameters for updating a user",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "AppData"
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "nonce": {
+ "type": "string",
+ "x-go-name": "Nonce"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "401": {
+ "description": "This endpoint requires a bearer token."
+ }
+ }
+ }
+ },
+ "/verify": {
+ "get": {
+ "tags": ["verify"],
+ "summary": "Verifies a sign up.",
+ "operationId": "verify-get",
+ "parameters": [
+ {
+ "type": "string",
+ "x-go-name": "Type",
+ "name": "type",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "Token",
+ "name": "token",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "Email",
+ "name": "email",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "Phone",
+ "name": "phone",
+ "in": "query"
+ },
+ {
+ "type": "string",
+ "x-go-name": "RedirectTo",
+ "name": "redirect_to",
+ "in": "query"
+ }
+ ]
+ },
+ "post": {
+ "tags": ["verify"],
+ "summary": "Verifies a sign up.",
+ "operationId": "verify-post",
+ "parameters": [
+ {
+ "name": "Body",
+ "in": "body",
+ "schema": {
+ "description": "VerifyParams are the parameters the Verify endpoint accepts",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "type": {
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "definitions": {
+ "AccessTokenResponse": {
+ "description": "AccessTokenResponse represents an OAuth2 success response",
+ "type": "object",
+ "properties": {
+ "access_token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "expires_in": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ExpiresIn"
+ },
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ },
+ "token_type": {
+ "type": "string",
+ "x-go-name": "TokenType"
+ },
+ "user": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "AdminListUsersResponse": {
+ "type": "object",
+ "properties": {
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Users"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "AdminUserParams": {
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "AppMetaData"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "ban_duration": {
+ "type": "string",
+ "x-go-name": "BanDuration"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "email_confirm": {
+ "type": "boolean",
+ "x-go-name": "EmailConfirm"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ },
+ "phone_confirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneConfirm"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "UserMetaData"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "GenerateLinkParams": {
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "NewEmail"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "type": {
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "GenerateLinkResponse": {
+ "type": "object",
+ "properties": {
+ "action_link": {
+ "type": "string",
+ "x-go-name": "ActionLink"
+ },
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "email_otp": {
+ "type": "string",
+ "x-go-name": "EmailOtp"
+ },
+ "hashed_token": {
+ "type": "string",
+ "x-go-name": "HashedToken"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "verification_type": {
+ "type": "string",
+ "x-go-name": "VerificationType"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "HealthCheckResponse": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string",
+ "x-go-name": "Description"
+ },
+ "name": {
+ "type": "string",
+ "x-go-name": "Name"
+ },
+ "version": {
+ "type": "string",
+ "x-go-name": "Version"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "Identity": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "InviteParams": {
+ "description": "InviteParams are the parameters the Signup endpoint accepts",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "JSONMap": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "NullString": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "OtpParams": {
+ "description": "OtpParams contains the request body params for the otp endpoint",
+ "type": "object",
+ "properties": {
+ "create_user": {
+ "type": "boolean",
+ "x-go-name": "CreateUser"
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "PasswordGrantParams": {
+ "description": "PasswordGrantParams are the parameters the ResourceOwnerPasswordGrant method accepts",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "ProviderSettings": {
+ "type": "object",
+ "properties": {
+ "apple": {
+ "type": "boolean",
+ "x-go-name": "Apple"
+ },
+ "azure": {
+ "type": "boolean",
+ "x-go-name": "Azure"
+ },
+ "bitbucket": {
+ "type": "boolean",
+ "x-go-name": "Bitbucket"
+ },
+ "discord": {
+ "type": "boolean",
+ "x-go-name": "Discord"
+ },
+ "email": {
+ "type": "boolean",
+ "x-go-name": "Email"
+ },
+ "facebook": {
+ "type": "boolean",
+ "x-go-name": "Facebook"
+ },
+ "github": {
+ "type": "boolean",
+ "x-go-name": "GitHub"
+ },
+ "gitlab": {
+ "type": "boolean",
+ "x-go-name": "GitLab"
+ },
+ "google": {
+ "type": "boolean",
+ "x-go-name": "Google"
+ },
+ "keycloak": {
+ "type": "boolean",
+ "x-go-name": "Keycloak"
+ },
+ "linkedin": {
+ "type": "boolean",
+ "x-go-name": "Linkedin"
+ },
+ "notion": {
+ "type": "boolean",
+ "x-go-name": "Notion"
+ },
+ "phone": {
+ "type": "boolean",
+ "x-go-name": "Phone"
+ },
+ "saml": {
+ "type": "boolean",
+ "x-go-name": "SAML"
+ },
+ "slack": {
+ "type": "boolean",
+ "x-go-name": "Slack"
+ },
+ "spotify": {
+ "type": "boolean",
+ "x-go-name": "Spotify"
+ },
+ "twitch": {
+ "type": "boolean",
+ "x-go-name": "Twitch"
+ },
+ "twitter": {
+ "type": "boolean",
+ "x-go-name": "Twitter"
+ },
+ "workos": {
+ "type": "boolean",
+ "x-go-name": "WorkOS"
+ },
+ "zoom": {
+ "type": "boolean",
+ "x-go-name": "Zoom"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "RecoverParams": {
+ "description": "RecoverParams holds the parameters for a password recovery request",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "RefreshTokenGrantParams": {
+ "description": "RefreshTokenGrantParams are the parameters the RefreshTokenGrant method accepts",
+ "type": "object",
+ "properties": {
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "Settings": {
+ "type": "object",
+ "properties": {
+ "disable_signup": {
+ "type": "boolean",
+ "x-go-name": "DisableSignup"
+ },
+ "external": {
+ "type": "object",
+ "properties": {
+ "apple": {
+ "type": "boolean",
+ "x-go-name": "Apple"
+ },
+ "azure": {
+ "type": "boolean",
+ "x-go-name": "Azure"
+ },
+ "bitbucket": {
+ "type": "boolean",
+ "x-go-name": "Bitbucket"
+ },
+ "discord": {
+ "type": "boolean",
+ "x-go-name": "Discord"
+ },
+ "email": {
+ "type": "boolean",
+ "x-go-name": "Email"
+ },
+ "facebook": {
+ "type": "boolean",
+ "x-go-name": "Facebook"
+ },
+ "github": {
+ "type": "boolean",
+ "x-go-name": "GitHub"
+ },
+ "gitlab": {
+ "type": "boolean",
+ "x-go-name": "GitLab"
+ },
+ "google": {
+ "type": "boolean",
+ "x-go-name": "Google"
+ },
+ "keycloak": {
+ "type": "boolean",
+ "x-go-name": "Keycloak"
+ },
+ "linkedin": {
+ "type": "boolean",
+ "x-go-name": "Linkedin"
+ },
+ "notion": {
+ "type": "boolean",
+ "x-go-name": "Notion"
+ },
+ "phone": {
+ "type": "boolean",
+ "x-go-name": "Phone"
+ },
+ "saml": {
+ "type": "boolean",
+ "x-go-name": "SAML"
+ },
+ "slack": {
+ "type": "boolean",
+ "x-go-name": "Slack"
+ },
+ "spotify": {
+ "type": "boolean",
+ "x-go-name": "Spotify"
+ },
+ "twitch": {
+ "type": "boolean",
+ "x-go-name": "Twitch"
+ },
+ "twitter": {
+ "type": "boolean",
+ "x-go-name": "Twitter"
+ },
+ "workos": {
+ "type": "boolean",
+ "x-go-name": "WorkOS"
+ },
+ "zoom": {
+ "type": "boolean",
+ "x-go-name": "Zoom"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "mailer_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "MailerAutoconfirm"
+ },
+ "phone_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneAutoconfirm"
+ },
+ "sms_provider": {
+ "type": "string",
+ "x-go-name": "SmsProvider"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "SignupParams": {
+ "description": "SignupParams are the parameters the Signup endpoint accepts",
+ "type": "object",
+ "properties": {
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "User": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "UserUpdateParams": {
+ "description": "UserUpdateParams parameters for updating a user",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "AppData"
+ },
+ "data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-name": "Data"
+ },
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "nonce": {
+ "type": "string",
+ "x-go-name": "Nonce"
+ },
+ "password": {
+ "type": "string",
+ "x-go-name": "Password"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "VerifyParams": {
+ "description": "VerifyParams are the parameters the Verify endpoint accepts",
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "x-go-name": "Email"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-name": "Phone"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "type": {
+ "type": "string",
+ "x-go-name": "Type"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "responses": {
+ "adminListUserResponse": {
+ "description": "The list of users.",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Users"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "authorizeResponse": {
+ "description": "Redirects user to the 3rd-party OAuth provider"
+ },
+ "callbackResponse": {
+ "description": "Redirects user to the redirect url specified in `/authorize`. If no `redirect_url` is provided, the user will be redirected to the `SITE_URL`."
+ },
+ "deleteUserResponse": {
+ "description": "The updated user."
+ },
+ "generateLinkResponse": {
+ "description": "The response object for generate link.",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "action_link": {
+ "type": "string",
+ "x-go-name": "ActionLink"
+ },
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "email_otp": {
+ "type": "string",
+ "x-go-name": "EmailOtp"
+ },
+ "hashed_token": {
+ "type": "string",
+ "x-go-name": "HashedToken"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "redirect_to": {
+ "type": "string",
+ "x-go-name": "RedirectTo"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "verification_type": {
+ "type": "string",
+ "x-go-name": "VerificationType"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "healthCheckResponse": {
+ "description": "",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "description": {
+ "type": "string",
+ "x-go-name": "Description"
+ },
+ "name": {
+ "type": "string",
+ "x-go-name": "Name"
+ },
+ "version": {
+ "type": "string",
+ "x-go-name": "Version"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "inviteResponse": {
+ "description": ""
+ },
+ "logoutResponse": {
+ "description": ""
+ },
+ "otpResponse": {
+ "description": ""
+ },
+ "recoveryResponse": {
+ "description": ""
+ },
+ "settingsResponse": {
+ "description": "",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "disable_signup": {
+ "type": "boolean",
+ "x-go-name": "DisableSignup"
+ },
+ "external": {
+ "type": "object",
+ "properties": {
+ "apple": {
+ "type": "boolean",
+ "x-go-name": "Apple"
+ },
+ "azure": {
+ "type": "boolean",
+ "x-go-name": "Azure"
+ },
+ "bitbucket": {
+ "type": "boolean",
+ "x-go-name": "Bitbucket"
+ },
+ "discord": {
+ "type": "boolean",
+ "x-go-name": "Discord"
+ },
+ "email": {
+ "type": "boolean",
+ "x-go-name": "Email"
+ },
+ "facebook": {
+ "type": "boolean",
+ "x-go-name": "Facebook"
+ },
+ "github": {
+ "type": "boolean",
+ "x-go-name": "GitHub"
+ },
+ "gitlab": {
+ "type": "boolean",
+ "x-go-name": "GitLab"
+ },
+ "google": {
+ "type": "boolean",
+ "x-go-name": "Google"
+ },
+ "keycloak": {
+ "type": "boolean",
+ "x-go-name": "Keycloak"
+ },
+ "linkedin": {
+ "type": "boolean",
+ "x-go-name": "Linkedin"
+ },
+ "notion": {
+ "type": "boolean",
+ "x-go-name": "Notion"
+ },
+ "phone": {
+ "type": "boolean",
+ "x-go-name": "Phone"
+ },
+ "saml": {
+ "type": "boolean",
+ "x-go-name": "SAML"
+ },
+ "slack": {
+ "type": "boolean",
+ "x-go-name": "Slack"
+ },
+ "spotify": {
+ "type": "boolean",
+ "x-go-name": "Spotify"
+ },
+ "twitch": {
+ "type": "boolean",
+ "x-go-name": "Twitch"
+ },
+ "twitter": {
+ "type": "boolean",
+ "x-go-name": "Twitter"
+ },
+ "workos": {
+ "type": "boolean",
+ "x-go-name": "WorkOS"
+ },
+ "zoom": {
+ "type": "boolean",
+ "x-go-name": "Zoom"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ },
+ "mailer_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "MailerAutoconfirm"
+ },
+ "phone_autoconfirm": {
+ "type": "boolean",
+ "x-go-name": "PhoneAutoconfirm"
+ },
+ "sms_provider": {
+ "type": "string",
+ "x-go-name": "SmsProvider"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "tokenResponse": {
+ "description": "",
+ "schema": {
+ "description": "AccessTokenResponse represents an OAuth2 success response",
+ "type": "object",
+ "properties": {
+ "access_token": {
+ "type": "string",
+ "x-go-name": "Token"
+ },
+ "expires_in": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ExpiresIn"
+ },
+ "refresh_token": {
+ "type": "string",
+ "x-go-name": "RefreshToken"
+ },
+ "token_type": {
+ "type": "string",
+ "x-go-name": "TokenType"
+ },
+ "user": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/api"
+ }
+ },
+ "unauthorizedError": {
+ "description": "This endpoint requires a bearer token."
+ },
+ "userResponse": {
+ "description": "The current user.",
+ "schema": {
+ "description": "User respresents a registered user with email/password authentication",
+ "type": "object",
+ "properties": {
+ "app_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "aud": {
+ "type": "string",
+ "x-go-name": "Aud"
+ },
+ "banned_until": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "BannedUntil"
+ },
+ "confirmation_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmationSentAt"
+ },
+ "confirmed_at": {
+ "description": "For backward compatibility only. Use EmailConfirmedAt or PhoneConfirmedAt instead.",
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ConfirmedAt"
+ },
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "email": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "email_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailChangeSentAt"
+ },
+ "email_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "EmailConfirmedAt"
+ },
+ "id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "ID"
+ },
+ "identities": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "created_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "CreatedAt"
+ },
+ "id": {
+ "type": "string",
+ "x-go-name": "ID"
+ },
+ "identity_data": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "provider": {
+ "type": "string",
+ "x-go-name": "Provider"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_id": {
+ "type": "string",
+ "format": "uuid",
+ "x-go-name": "UserID"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ },
+ "x-go-name": "Identities"
+ },
+ "invited_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "InvitedAt"
+ },
+ "last_sign_in_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "LastSignInAt"
+ },
+ "new_email": {
+ "type": "string",
+ "x-go-name": "EmailChange"
+ },
+ "new_phone": {
+ "type": "string",
+ "x-go-name": "PhoneChange"
+ },
+ "phone": {
+ "type": "string",
+ "x-go-package": "github.com/netlify/gotrue/storage"
+ },
+ "phone_change_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneChangeSentAt"
+ },
+ "phone_confirmed_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "PhoneConfirmedAt"
+ },
+ "reauthentication_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "ReauthenticationSentAt"
+ },
+ "recovery_sent_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "RecoverySentAt"
+ },
+ "role": {
+ "type": "string",
+ "x-go-name": "Role"
+ },
+ "updated_at": {
+ "type": "string",
+ "format": "date-time",
+ "x-go-name": "UpdatedAt"
+ },
+ "user_metadata": {
+ "type": "object",
+ "additionalProperties": {},
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ },
+ "x-go-package": "github.com/netlify/gotrue/models"
+ }
+ }
+ },
+ "securityDefinitions": {
+ "bearer": {
+ "type": "apiKey",
+ "name": "Authentication",
+ "in": "header"
+ }
+ }
+}
diff --git a/spec/transforms/storage_v0_openapi_deparsed.json b/spec/transforms/storage_v0_openapi_deparsed.json
index f1981b7c5c8..798cbdc9b72 100644
--- a/spec/transforms/storage_v0_openapi_deparsed.json
+++ b/spec/transforms/storage_v0_openapi_deparsed.json
@@ -1199,6 +1199,22 @@
"summary": "Retrieve an object via a presigned URL",
"tags": ["object"],
"parameters": [
+ {
+ "schema": {
+ "type": "string"
+ },
+ "examples": {
+ "filename.jpg": {
+ "value": "filename.jpg"
+ },
+ "example2": {
+ "value": null
+ }
+ },
+ "in": "query",
+ "name": "download",
+ "required": false
+ },
{
"schema": {
"type": "string",
diff --git a/studio/.gitignore b/studio/.gitignore
index 89d124f2d09..9dd40bd86d1 100644
--- a/studio/.gitignore
+++ b/studio/.gitignore
@@ -32,4 +32,4 @@ yarn-error.log*
.env.staging.local
.env.production.local
-!.vercel
+.vercel
diff --git a/studio/.vercel/production.json b/studio/.vercel/production.json
deleted file mode 100644
index edfe2dadd5a..00000000000
--- a/studio/.vercel/production.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "version": 2,
- "scope": "supabase",
- "regions": [
- "arn1",
- "bom1",
- "bru1",
- "cdg1",
- "cle1",
- "dub1",
- "hnd1",
- "iad1",
- "icn1",
- "lhr1",
- "pdx1",
- "sfo1",
- "sin1",
- "syd1"
- ]
-}
diff --git a/studio/.vercel/staging.json b/studio/.vercel/staging.json
deleted file mode 100644
index e14d994267b..00000000000
--- a/studio/.vercel/staging.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "version": 2,
- "scope": "supabase",
- "regions": ["syd1"],
- "github": {
- "enabled": false
- }
-}
diff --git a/studio/components/grid/components/common/DropdownControl.tsx b/studio/components/grid/components/common/DropdownControl.tsx
index 079b49220fb..e57ddf97e9a 100644
--- a/studio/components/grid/components/common/DropdownControl.tsx
+++ b/studio/components/grid/components/common/DropdownControl.tsx
@@ -1,5 +1,5 @@
import { FC } from 'react'
-import { Dropdown } from '@supabase/ui'
+import { Dropdown } from 'ui'
interface DropdownControlProps {
options: {
@@ -38,7 +38,7 @@ const DropdownItems: FC = ({ options, onSelect }) => {
return (
onSelect(x.value)}>
- {x.preLabel && {x.preLabel} }
+ {x.preLabel && {x.preLabel} }
{x.label}
{x.postLabel && {x.postLabel} }
diff --git a/studio/components/grid/components/common/ForeignTableModal/FilterHeader.tsx b/studio/components/grid/components/common/ForeignTableModal/FilterHeader.tsx
index 7a5b87be14a..827848222bb 100644
--- a/studio/components/grid/components/common/ForeignTableModal/FilterHeader.tsx
+++ b/studio/components/grid/components/common/ForeignTableModal/FilterHeader.tsx
@@ -1,6 +1,6 @@
import React, { FC, useState } from 'react'
import AwesomeDebouncePromise from 'awesome-debounce-promise'
-import { Button, Input, IconChevronDown, IconSearch } from '@supabase/ui'
+import { Button, Input, IconChevronDown, IconSearch } from 'ui'
import { DropdownControl } from '../../common'
import { FilterOperatorOptions } from '../../header/filter'
import { Filter, FilterOperator } from '../../../types'
diff --git a/studio/components/grid/components/common/ForeignTableModal/RowItem.tsx b/studio/components/grid/components/common/ForeignTableModal/RowItem.tsx
index 82fe938679d..d27314724bb 100644
--- a/studio/components/grid/components/common/ForeignTableModal/RowItem.tsx
+++ b/studio/components/grid/components/common/ForeignTableModal/RowItem.tsx
@@ -1,5 +1,5 @@
import * as React from 'react'
-import { Menu } from '@supabase/ui'
+import { Menu } from 'ui'
import { Dictionary } from '../../../types'
interface RowItemProps {
@@ -23,7 +23,7 @@ export const RowItem: React.FC = ({ item, onSelect, columnNames })
return (