From 46182ac4ba5c433172e6253d7e738f86ea58eadb Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 5 Oct 2022 16:09:20 -0230 Subject: [PATCH 001/185] Reoreder sidebar menu items --- .../NavigationBar/NavigationBar.tsx | 16 ++++- .../NavigationBar/NavigationBar.utils.tsx | 64 +++++++++++-------- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx index 8cf5d5aaaf8..331bcb8b521 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx @@ -7,7 +7,11 @@ import { Button, Dropdown, IconHome, IconSettings, IconUser } from '@supabase/ui import { useFlag, useStore } from 'hooks' import { IS_PLATFORM } from 'lib/constants' -import { generateOtherRoutes, generateProductRoutes } from './NavigationBar.utils' +import { + generateOtherRoutes, + generateProductRoutes, + generateToolRoutes, +} from './NavigationBar.utils' import NavigationIconButton from './NavigationIconButton' import { useParams } from 'hooks/misc/useParams' @@ -22,6 +26,7 @@ const NavigationBar: FC = ({}) => { const ongoingIncident = useFlag('ongoingIncident') const activeRoute = router.pathname.split('/')[3] + const toolRoutes = generateToolRoutes(projectRef, projectBaseInfo) const productRoutes = generateProductRoutes(projectRef, projectBaseInfo) const otherRoutes = generateOtherRoutes(projectRef, projectBaseInfo) @@ -53,6 +58,15 @@ const NavigationBar: FC = ({}) => { }} />
+ {toolRoutes.map((route) => ( + + ))} +
+ {productRoutes.map((route) => ( { +export const generateToolRoutes = (ref?: string, project?: ProjectBase): Route[] => { const isProjectBuilding = project?.status !== PROJECT_STATUS.ACTIVE_HEALTHY const buildingUrl = `/project/${ref}/building` @@ -31,6 +31,31 @@ export const generateProductRoutes = (ref?: string, project?: ProjectBase): Rout ), link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/editor`), }, + { + key: 'sql', + label: 'SQL Editor', + icon: ( + code.replace(/svg/, 'svg class="m-auto text-color-inherit"')} + /> + ), + link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/sql`), + }, + ] +} +export const generateProductRoutes = (ref?: string, project?: ProjectBase): Route[] => { + const isProjectBuilding = project?.status !== PROJECT_STATUS.ACTIVE_HEALTHY + const buildingUrl = `/project/${ref}/building` + + return [ + { + key: 'database', + label: 'Database', + icon: , + link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/database/tables`), + }, { key: 'auth', label: 'Authentication', @@ -47,24 +72,7 @@ export const generateProductRoutes = (ref?: string, project?: ProjectBase): Rout }, ] : []), - { - key: 'sql', - label: 'SQL Editor', - icon: ( - code.replace(/svg/, 'svg class="m-auto text-color-inherit"')} - /> - ), - link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/sql`), - }, - { - key: 'database', - label: 'Database', - icon: , - link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/database/tables`), - }, + ...(IS_PLATFORM ? [ { @@ -86,20 +94,20 @@ export const generateOtherRoutes = (ref?: string, project?: ProjectBase): Route[ ...(IS_PLATFORM ? [ { - key: 'logs-explorer', - label: 'Logs Explorer', - icon: , - link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/logs-explorer`), + key: 'reports', + label: 'Reports', + icon: , + link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/reports`), }, ] : []), ...(IS_PLATFORM ? [ { - key: 'reports', - label: 'Reports', - icon: , - link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/reports`), + key: 'logs-explorer', + label: 'Logs', + icon: , + link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/logs-explorer`), }, ] : []), @@ -113,7 +121,7 @@ export const generateOtherRoutes = (ref?: string, project?: ProjectBase): Route[ ? [ { key: 'settings', - label: 'Settings', + label: 'Project Settings', icon: , link: ref && `/project/${ref}/settings/general`, }, From dd183dd912786bd36f8a9c84ad41c18abdc88842 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 6 Oct 2022 09:22:49 -0230 Subject: [PATCH 002/185] Move database sidebar items --- .../DatabaseLayout/DatabaseMenu.utils.ts | 22 ++++++++++++++++++- .../components/ui/ProductMenu/ProductMenu.tsx | 1 + .../ui/ProductMenu/ProductMenu.types.ts | 1 + .../ui/ProductMenu/ProductMenuItem.tsx | 6 +++-- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts index b643cc05066..8dc5c5b9109 100644 --- a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts +++ b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts @@ -16,19 +16,39 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { title: 'Database', items: [ { name: 'Tables', key: 'tables', url: `/project/${ref}/database/tables`, items: [] }, - { name: 'Roles', key: 'roles', url: `/project/${ref}/database/roles`, items: [] }, + { + name: 'Triggers', + key: 'triggers', + url: `/project/${ref}/database/triggers`, + items: [], + isPreview: true, + }, + { + name: 'Functions', + key: 'functions', + url: `/project/${ref}/database/functions`, + items: [], + }, { name: 'Extensions', key: 'extensions', url: `/project/${ref}/database/extensions`, items: [], }, + { name: 'Roles', key: 'roles', url: `/project/${ref}/database/roles`, items: [] }, { name: 'Replication', key: 'replication', url: `/project/${ref}/database/replication`, items: [], }, + { + name: 'Webhooks', + key: 'hooks', + url: `/project/${ref}/database/hooks`, + items: [], + isPreview: true, + }, { name: 'Backups', key: 'backups', diff --git a/studio/components/ui/ProductMenu/ProductMenu.tsx b/studio/components/ui/ProductMenu/ProductMenu.tsx index e59b970dbcf..c4bd670ee3e 100644 --- a/studio/components/ui/ProductMenu/ProductMenu.tsx +++ b/studio/components/ui/ProductMenu/ProductMenu.tsx @@ -37,6 +37,7 @@ const ProductMenu: FC = ({ page, menu }) => { isActive={page === item.key} isExternal={item.isExternal} target={item.isExternal ? '_blank' : '_self'} + isPreview={item.isPreview} /> ))} diff --git a/studio/components/ui/ProductMenu/ProductMenu.types.ts b/studio/components/ui/ProductMenu/ProductMenu.types.ts index 4b7f66ac816..748e0b14a07 100644 --- a/studio/components/ui/ProductMenu/ProductMenu.types.ts +++ b/studio/components/ui/ProductMenu/ProductMenu.types.ts @@ -14,4 +14,5 @@ export interface ProductMenuGroupItem { icon?: ReactNode isExternal?: boolean disabled?: boolean + isPreview?: boolean } diff --git a/studio/components/ui/ProductMenu/ProductMenuItem.tsx b/studio/components/ui/ProductMenu/ProductMenuItem.tsx index eafbec75206..82d30048a97 100644 --- a/studio/components/ui/ProductMenu/ProductMenuItem.tsx +++ b/studio/components/ui/ProductMenu/ProductMenuItem.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import { FC, ReactNode } from 'react' -import { Button, IconExternalLink, Menu } from '@supabase/ui' +import { Badge, Button, IconExternalLink, Menu } from '@supabase/ui' interface Props { name: string | ReactNode @@ -13,6 +13,7 @@ interface Props { onClick?: () => void textClassName?: string hoverText?: string + ispreview?: boolean } const ProductMenuItem: FC = ({ @@ -26,6 +27,7 @@ const ProductMenuItem: FC = ({ onClick, textClassName = '', hoverText = '', + isPreview = false, }) => { const menuItem = ( @@ -34,7 +36,7 @@ const ProductMenuItem: FC = ({ title={hoverText ? hoverText : typeof name === 'string' ? name : ''} className={'flex items-center truncate ' + textClassName} > - {name} + {name} {isPreview && Alpha} {action} From 4105b1cca37bc3ba759ae3a311e9dc80898b9c5f Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 6 Oct 2022 13:29:27 -0230 Subject: [PATCH 003/185] Move alpha items to database section --- .../DatabaseLayout/DatabaseMenu.utils.ts | 32 +------------------ .../ui/ProductMenu/ProductMenuItem.tsx | 9 ++++-- 2 files changed, 7 insertions(+), 34 deletions(-) diff --git a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts index 8dc5c5b9109..9a6cce9ada7 100644 --- a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts +++ b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts @@ -28,6 +28,7 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { key: 'functions', url: `/project/${ref}/database/functions`, items: [], + isPreview: true, }, { name: 'Extensions', @@ -98,36 +99,5 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { }, ] : []), - ...(IS_PLATFORM - ? [ - { - title: 'Alpha Preview', - items: [ - { - name: 'Database Triggers', - key: 'triggers', - url: `/project/${ref}/database/triggers`, - items: [], - }, - { - name: 'Database Functions', - key: 'functions', - url: `/project/${ref}/database/functions`, - items: [], - }, - ...(showHooksRoute - ? [ - { - name: 'Database Webhooks', - key: 'hooks', - url: `/project/${ref}/database/hooks`, - items: [], - }, - ] - : []), - ], - }, - ] - : []), ] } diff --git a/studio/components/ui/ProductMenu/ProductMenuItem.tsx b/studio/components/ui/ProductMenu/ProductMenuItem.tsx index 9ab0e31e01d..3349658a87c 100644 --- a/studio/components/ui/ProductMenu/ProductMenuItem.tsx +++ b/studio/components/ui/ProductMenu/ProductMenuItem.tsx @@ -13,7 +13,7 @@ interface Props { onClick?: () => void textClassName?: string hoverText?: string - ispreview?: boolean + isPreview?: boolean } const ProductMenuItem: FC = ({ @@ -34,9 +34,12 @@ const ProductMenuItem: FC = ({
- {name} {isPreview && Alpha} + {name}{' '} + {isPreview && ( + Alpha + )} {action}
From 044df61b7aaa4a132087692890d410e09dc746c4 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 6 Oct 2022 16:00:55 -0230 Subject: [PATCH 004/185] Move auth sidebar items --- .../layouts/AuthLayout/AuthLayout.utils.ts | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/studio/components/layouts/AuthLayout/AuthLayout.utils.ts b/studio/components/layouts/AuthLayout/AuthLayout.utils.ts index b48ed1dcc54..b7aed94533f 100644 --- a/studio/components/layouts/AuthLayout/AuthLayout.utils.ts +++ b/studio/components/layouts/AuthLayout/AuthLayout.utils.ts @@ -4,21 +4,8 @@ import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' export const generateAuthMenu = (ref: string): ProductMenuGroup[] => { return [ { - title: 'General', - items: [ - { name: 'Users', key: 'users', url: `/project/${ref}/auth/users`, items: [] }, - { name: 'Policies', key: 'policies', url: `/project/${ref}/auth/policies`, items: [] }, - ...(IS_PLATFORM - ? [ - { - name: 'Logs', - key: 'logs', - url: `/project/${ref}/auth/logs`, - items: [], - }, - ] - : []), - ], + title: 'Users (?)', + items: [{ name: 'Users', key: 'users', url: `/project/${ref}/auth/users`, items: [] }], }, ...(IS_PLATFORM ? [ @@ -28,13 +15,26 @@ export const generateAuthMenu = (ref: string): ProductMenuGroup[] => { ...(IS_PLATFORM ? [ { - name: 'Settings', + name: 'Settings or General?', key: 'settings', url: `/project/${ref}/auth/settings`, items: [], }, ] : []), + + { + name: 'Policies', + key: 'policies', + url: `/project/${ref}/auth/policies`, + items: [], + }, + { + name: 'Providers?', + key: 'policies', + url: `/project/${ref}/auth/policies`, + items: [], + }, { name: 'Email Templates', key: 'templates', From acc14fd3cb8b8ea3a2b681179effea88cc1d44ba Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Tue, 11 Oct 2022 16:44:16 -0230 Subject: [PATCH 005/185] Move logs explorer to new logs route --- studio/__mocks__/components/layouts.js | 2 +- .../Settings/Logs/LogsNavigation.tsx | 4 +- .../DatabaseLayout/DatabaseMenu.utils.ts | 22 ----- .../LogsExplorerLayout/LogsExplorerLayout.tsx | 64 -------------- .../layouts/LogsLayout/LogsLayout.tsx | 47 ++++++++++ .../layouts/LogsLayout/LogsMenu.utils.ts | 88 +++++++++++++++++++ .../NavigationBar/NavigationBar.utils.tsx | 4 +- studio/components/layouts/index.ts | 4 +- .../components/ui/Logs/LogsExplorerHeader.tsx | 23 +++++ .../explorer}/index.tsx | 14 +-- .../explorer}/recent.tsx | 10 ++- .../explorer}/saved.tsx | 12 +-- .../explorer}/templates.tsx | 10 ++- .../{database => logs}/postgres-logs.tsx | 4 +- 14 files changed, 195 insertions(+), 113 deletions(-) delete mode 100644 studio/components/layouts/LogsExplorerLayout/LogsExplorerLayout.tsx create mode 100644 studio/components/layouts/LogsLayout/LogsLayout.tsx create mode 100644 studio/components/layouts/LogsLayout/LogsMenu.utils.ts create mode 100644 studio/components/ui/Logs/LogsExplorerHeader.tsx rename studio/pages/project/[ref]/{logs-explorer => logs/explorer}/index.tsx (94%) rename studio/pages/project/[ref]/{logs-explorer => logs/explorer}/recent.tsx (87%) rename studio/pages/project/[ref]/{logs-explorer => logs/explorer}/saved.tsx (85%) rename studio/pages/project/[ref]/{logs-explorer => logs/explorer}/templates.tsx (88%) rename studio/pages/project/[ref]/{database => logs}/postgres-logs.tsx (80%) diff --git a/studio/__mocks__/components/layouts.js b/studio/__mocks__/components/layouts.js index 3f5dde5e8c8..3fd60166088 100644 --- a/studio/__mocks__/components/layouts.js +++ b/studio/__mocks__/components/layouts.js @@ -1,3 +1,3 @@ const MockLayout = jest.fn().mockImplementation(({ children }) => <>{children}) -export const LogsExplorerLayout = MockLayout +export const LogsLayout = MockLayout export default MockLayout diff --git a/studio/components/interfaces/Settings/Logs/LogsNavigation.tsx b/studio/components/interfaces/Settings/Logs/LogsNavigation.tsx index 5303b742a96..8662d71e792 100644 --- a/studio/components/interfaces/Settings/Logs/LogsNavigation.tsx +++ b/studio/components/interfaces/Settings/Logs/LogsNavigation.tsx @@ -8,7 +8,7 @@ interface TabItem { } const LogsNavigation = () => { const router = useRouter() - const activeRoute = router.pathname.split('/')[4] + const activeRoute = router.pathname.split('/')[5] const { ref } = router.query const indexRoute = 'query' @@ -27,7 +27,7 @@ const LogsNavigation = () => { size="medium" activeId={!activeRoute ? indexRoute : activeRoute} onClick={(e: string) => { - router.push(`/project/${ref}/logs-explorer/${e === indexRoute ? '' : e}`) + router.push(`/project/${ref}/logs/explorer/${e === indexRoute ? '' : e}`) }} > {tabs.map((item) => ( diff --git a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts index 9a6cce9ada7..de59453733d 100644 --- a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts +++ b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts @@ -63,12 +63,6 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { { title: 'Logs and Usage', items: [ - { - name: 'API logs', - key: 'api-logs', - url: `/project/${ref}/database/api-logs`, - items: [], - }, ...(reportsOverview ? [ { @@ -79,22 +73,6 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { }, ] : []), - { - name: 'Postgres logs', - key: 'postgres-logs', - url: `/project/${ref}/database/postgres-logs`, - items: [], - }, - ...(logsRealtime - ? [ - { - name: 'Realtime logs', - key: 'realtime-logs', - url: `/project/${ref}/database/realtime-logs`, - items: [], - }, - ] - : []), ], }, ] diff --git a/studio/components/layouts/LogsExplorerLayout/LogsExplorerLayout.tsx b/studio/components/layouts/LogsExplorerLayout/LogsExplorerLayout.tsx deleted file mode 100644 index 6ddd5e9555e..00000000000 --- a/studio/components/layouts/LogsExplorerLayout/LogsExplorerLayout.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import { FC, useEffect, ReactNode } from 'react' -import { observer } from 'mobx-react-lite' -import { Badge, IconList, Loading } from 'ui' -import { PermissionAction } from '@supabase/shared-types/out/constants' - -import { checkPermissions, useStore, withAuth } from 'hooks' -import BaseLayout from 'components/layouts' -import NoPermission from 'components/ui/NoPermission' -import LogsNavigation from 'components/interfaces/Settings/Logs/LogsNavigation' - -interface Props { - subtitle?: ReactNode - children?: ReactNode -} - -const PageLayout: FC = ({ subtitle, children }) => { - const canUseLogsExplorer = checkPermissions(PermissionAction.ANALYTICS_READ, 'logflare') - - if (!canUseLogsExplorer) { - return ( - -
- -
-
- ) - } - - return ( - -
-
-
-
- -
-

Logs Explorer

- {subtitle && {subtitle}} -
- -
-
- {children} -
-
-
- ) -} - -export default withAuth(observer(PageLayout)) diff --git a/studio/components/layouts/LogsLayout/LogsLayout.tsx b/studio/components/layouts/LogsLayout/LogsLayout.tsx new file mode 100644 index 00000000000..f13b031e8b5 --- /dev/null +++ b/studio/components/layouts/LogsLayout/LogsLayout.tsx @@ -0,0 +1,47 @@ +import { FC, ReactNode } from 'react' +import { observer } from 'mobx-react-lite' +import { PermissionAction } from '@supabase/shared-types/out/constants' +import { useRouter } from 'next/router' +import { checkPermissions, useStore, withAuth } from 'hooks' +import BaseLayout from 'components/layouts' +import NoPermission from 'components/ui/NoPermission' +import { generateLogsMenu } from './LogsMenu.utils' +import ProductMenu from 'components/ui/ProductMenu' + +interface Props { + subtitle?: ReactNode + children?: ReactNode +} + +const LogsLayout: FC = ({ subtitle, children }) => { + const { ui } = useStore() + const router = useRouter() + const page = router.pathname.split('/')[4] + + const project = ui.selectedProject + + const canUseLogsExplorer = checkPermissions(PermissionAction.ANALYTICS_READ, 'logflare') + + if (!canUseLogsExplorer) { + return ( + +
+ +
+
+ ) + } + + return ( + } + > +
+ {children} +
+
+ ) +} + +export default withAuth(observer(LogsLayout)) diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts new file mode 100644 index 00000000000..4c461031b31 --- /dev/null +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -0,0 +1,88 @@ +import { Project } from 'types' +import { IS_PLATFORM } from 'lib/constants' +import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' +import { useFlag } from 'hooks' + +export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { + const ref = project?.ref ?? 'default' + const logsRealtime = useFlag('logsRealtime') + + return [ + { + title: 'Logs', + items: [ + { + name: 'Explorer', + key: 'explorer', + url: `/project/${ref}/logs/explorer`, + items: [], + }, + { + name: 'Postgres logs', + key: 'postgres-logs', + url: `/project/${ref}/logs/postgres-logs`, + items: [], + }, + { + name: 'Query logs(?)', + key: 'api-logs', + url: `/project/${ref}/database/insights?`, + items: [], + }, + { + name: 'PostgREST logs', + key: 'api-logs', + url: `/project/${ref}/database/api-logs`, + items: [], + }, + { + name: 'API logs(?)', + key: 'api-logs', + url: `/project/${ref}/database/api-logs`, + items: [], + }, + ...(IS_PLATFORM + ? [ + { + name: 'Auth logs', + key: 'logs', + url: `/project/${ref}/auth/logs`, + items: [], + }, + ] + : []), + ...(IS_PLATFORM + ? [ + { + name: 'Auth audit logs(?)', + key: 'logs', + url: `/project/${ref}/auth/logs`, + items: [], + }, + ] + : []), + ...(IS_PLATFORM + ? [ + { + name: 'Storage logs', + key: 'logs', + url: `/project/${ref}/storage/logs`, + items: [], + }, + ] + : []), + + ...(logsRealtime + ? [ + { + name: 'Realtime logs', + key: 'realtime-logs', + url: `/project/${ref}/database/realtime-logs`, + items: [], + }, + ] + : []), + ], + }, + ] +} diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx index e61f44eaa9b..d28104bcd95 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx @@ -104,10 +104,10 @@ export const generateOtherRoutes = (ref?: string, project?: ProjectBase): Route[ ...(IS_PLATFORM ? [ { - key: 'logs-explorer', + key: 'explorer', label: 'Logs', icon: , - link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/logs-explorer`), + link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/logs/explorer`), }, ] : []), diff --git a/studio/components/layouts/index.ts b/studio/components/layouts/index.ts index a7cd8c77950..195a2fb3054 100644 --- a/studio/components/layouts/index.ts +++ b/studio/components/layouts/index.ts @@ -12,7 +12,7 @@ import WizardLayout from './WizardLayout' import { WizardLayoutWithoutAuth } from './WizardLayout' import VercelIntegrationLayout from './VercelIntegrationLayout' import BillingLayout from './BillingLayout' -import LogsExplorerLayout from './LogsExplorerLayout/LogsExplorerLayout' +import LogsLayout from './LogsLayout/LogsLayout' export { ProjectLayoutWithAuth, @@ -29,7 +29,7 @@ export { WizardLayoutWithoutAuth, VercelIntegrationLayout, BillingLayout, - LogsExplorerLayout, + LogsLayout, } export default ProjectLayout diff --git a/studio/components/ui/Logs/LogsExplorerHeader.tsx b/studio/components/ui/Logs/LogsExplorerHeader.tsx new file mode 100644 index 00000000000..552bbf81763 --- /dev/null +++ b/studio/components/ui/Logs/LogsExplorerHeader.tsx @@ -0,0 +1,23 @@ +import LogsNavigation from 'components/interfaces/Settings/Logs/LogsNavigation' +import { IconList } from 'ui' + +const LogsExplorerHeader = () => { + return ( +
+
+
+ +
+

Logs Explorer

+ {/* {subtitle && {subtitle}} */} +
+ +
+ ) +} + +export default LogsExplorerHeader diff --git a/studio/pages/project/[ref]/logs-explorer/index.tsx b/studio/pages/project/[ref]/logs/explorer/index.tsx similarity index 94% rename from studio/pages/project/[ref]/logs-explorer/index.tsx rename to studio/pages/project/[ref]/logs/explorer/index.tsx index 573c6840730..f660c7f2ce8 100644 --- a/studio/pages/project/[ref]/logs-explorer/index.tsx +++ b/studio/pages/project/[ref]/logs/explorer/index.tsx @@ -3,13 +3,13 @@ import toast from 'react-hot-toast' import { useEffect, useState } from 'react' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { Input, Modal, Form, Button } from 'ui' +import { Input, Modal, Form, Button, Badge, IconList } from 'ui' import { useStore } from 'hooks' import useLogsQuery from 'hooks/analytics/useLogsQuery' import { NextPageWithLayout, UserContent } from 'types' import { uuidv4 } from 'lib/helpers' -import { LogsExplorerLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import CodeEditor from 'components/ui/CodeEditor' import ShimmerLine from 'components/ui/ShimmerLine' import LoadingOpacity from 'components/ui/LoadingOpacity' @@ -24,6 +24,8 @@ import { TEMPLATES, } from 'components/interfaces/Settings/Logs' import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt' +import LogsNavigation from 'components/interfaces/Settings/Logs/LogsNavigation' +import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader' export const LogsExplorerPage: NextPageWithLayout = () => { const router = useRouter() @@ -119,7 +121,9 @@ export const LogsExplorerPage: NextPageWithLayout = () => { } return ( - <> +
+ +
{ )} - +
) } -LogsExplorerPage.getLayout = (page) => {page} +LogsExplorerPage.getLayout = (page) => {page} export default observer(LogsExplorerPage) diff --git a/studio/pages/project/[ref]/logs-explorer/recent.tsx b/studio/pages/project/[ref]/logs/explorer/recent.tsx similarity index 87% rename from studio/pages/project/[ref]/logs-explorer/recent.tsx rename to studio/pages/project/[ref]/logs/explorer/recent.tsx index 48eb03ca5c4..6fb5a0cf981 100644 --- a/studio/pages/project/[ref]/logs-explorer/recent.tsx +++ b/studio/pages/project/[ref]/logs/explorer/recent.tsx @@ -4,11 +4,12 @@ import { observer } from 'mobx-react-lite' import { Button, IconClock, IconSave, Loading } from 'ui' import { useStore, withAuth } from 'hooks' import RecentQueriesItem from 'components/interfaces/Settings/Logs/RecentQueriesItem' -import LogsExplorerLayout from 'components/layouts/LogsExplorerLayout/LogsExplorerLayout' +import LogsLayout from 'components/layouts/LogsLayout/LogsLayout' import Table from 'components/to-be-cleaned/Table' import { useRouter } from 'next/router' import { LogSqlSnippets, NextPageWithLayout } from 'types' +import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader' export const LogsSavedPage: NextPageWithLayout = () => { const { content, ui } = useStore() @@ -21,7 +22,8 @@ export const LogsSavedPage: NextPageWithLayout = () => { const recent = content.recentLogSqlSnippets.slice().reverse() return ( - <> +
+ {recent.length > 0 && ( { )} - + ) } -LogsSavedPage.getLayout = (page) => {page} +LogsSavedPage.getLayout = (page) => {page} export default observer(LogsSavedPage) diff --git a/studio/pages/project/[ref]/logs-explorer/saved.tsx b/studio/pages/project/[ref]/logs/explorer/saved.tsx similarity index 85% rename from studio/pages/project/[ref]/logs-explorer/saved.tsx rename to studio/pages/project/[ref]/logs/explorer/saved.tsx index d42d917df4b..871c513cbe4 100644 --- a/studio/pages/project/[ref]/logs-explorer/saved.tsx +++ b/studio/pages/project/[ref]/logs/explorer/saved.tsx @@ -4,11 +4,12 @@ import { observer } from 'mobx-react-lite' import { IconSave, Loading } from 'ui' import { useStore } from 'hooks' import { LogsSavedQueriesItem } from 'components/interfaces/Settings/Logs' -import { LogsExplorerLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import Table from 'components/to-be-cleaned/Table' import { useRouter } from 'next/router' import { NextPageWithLayout } from 'types' +import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader' export const LogsSavedPage: NextPageWithLayout = () => { const { content, ui } = useStore() @@ -24,8 +25,9 @@ export const LogsSavedPage: NextPageWithLayout = () => { } const saved = content.savedLogSqlSnippets() return ( - <> -
+
+ +
{saved.length > 0 && (
{

)} - + ) } -LogsSavedPage.getLayout = (page) => {page} +LogsSavedPage.getLayout = (page) => {page} export default observer(LogsSavedPage) diff --git a/studio/pages/project/[ref]/logs-explorer/templates.tsx b/studio/pages/project/[ref]/logs/explorer/templates.tsx similarity index 88% rename from studio/pages/project/[ref]/logs-explorer/templates.tsx rename to studio/pages/project/[ref]/logs/explorer/templates.tsx index e52d487cfd0..6ee18397a3e 100644 --- a/studio/pages/project/[ref]/logs-explorer/templates.tsx +++ b/studio/pages/project/[ref]/logs/explorer/templates.tsx @@ -3,17 +3,19 @@ import { useRouter } from 'next/router' import { observer, useStaticRendering } from 'mobx-react-lite' import { IconCode, Badge, Collapsible, Button, Popover } from 'ui' import { TEMPLATES } from 'components/interfaces/Settings/Logs' -import LogsExplorerLayout from 'components/layouts/LogsExplorerLayout/LogsExplorerLayout' +import LogsLayout from 'components/layouts/LogsLayout/LogsLayout' import CardButton from 'components/ui/CardButton' import { NextPageWithLayout } from 'types' +import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader' export const LogsTemplatesPage: NextPageWithLayout = () => { const router = useRouter() const { ref } = router.query return ( -
-
+
+ +
{TEMPLATES.filter((template) => template.mode === 'custom').map((template, i) => { const [showPreview, setShowPreview] = useState(false) return ( @@ -72,6 +74,6 @@ export const LogsTemplatesPage: NextPageWithLayout = () => { ) } -LogsTemplatesPage.getLayout = (page) => {page} +LogsTemplatesPage.getLayout = (page) => {page} export default observer(LogsTemplatesPage) diff --git a/studio/pages/project/[ref]/database/postgres-logs.tsx b/studio/pages/project/[ref]/logs/postgres-logs.tsx similarity index 80% rename from studio/pages/project/[ref]/database/postgres-logs.tsx rename to studio/pages/project/[ref]/logs/postgres-logs.tsx index 604a36e2189..147cae85344 100644 --- a/studio/pages/project/[ref]/database/postgres-logs.tsx +++ b/studio/pages/project/[ref]/logs/postgres-logs.tsx @@ -1,7 +1,7 @@ import React from 'react' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { DatabaseLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import LogsPreviewer from 'components/interfaces/Settings/Logs/LogsPreviewer' import { NextPageWithLayout } from 'types' @@ -20,6 +20,6 @@ export const LogPage: NextPageWithLayout = () => { ) } -LogPage.getLayout = (page) => {page} +LogPage.getLayout = (page) => {page} export default observer(LogPage) From 35c30b5cfbfb14fab14b3bc079e7727cc3fe3827 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Tue, 11 Oct 2022 16:46:57 -0230 Subject: [PATCH 006/185] Update Logs Explorer path names --- studio/components/interfaces/Reports/ReportWidget.tsx | 2 +- .../interfaces/Settings/Logs/Logs.SavedQueriesItem.tsx | 2 +- studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx | 2 +- .../components/interfaces/Settings/Logs/RecentQueriesItem.tsx | 2 +- studio/pages/project/[ref]/logs/explorer/recent.tsx | 2 +- studio/pages/project/[ref]/logs/explorer/saved.tsx | 2 +- studio/pages/project/[ref]/logs/explorer/templates.tsx | 2 +- studio/tests/pages/projects/logs-explorer/saved.test.js | 2 +- studio/tests/pages/projects/logs-query.test.js | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/studio/components/interfaces/Reports/ReportWidget.tsx b/studio/components/interfaces/Reports/ReportWidget.tsx index a1fce7c36ad..5e66d717734 100644 --- a/studio/components/interfaces/Reports/ReportWidget.tsx +++ b/studio/components/interfaces/Reports/ReportWidget.tsx @@ -32,7 +32,7 @@ const ReportWidget: React.FC = (props) => { { router.push({ - pathname: `/project/${ref}/logs-explorer`, + pathname: `/project/${ref}/logs/explorer`, query: { q: props.params.sql, its: props.params.iso_timestamp_start, diff --git a/studio/components/interfaces/Settings/Logs/Logs.SavedQueriesItem.tsx b/studio/components/interfaces/Settings/Logs/Logs.SavedQueriesItem.tsx index 93fbf311fd9..76547dfd529 100644 --- a/studio/components/interfaces/Settings/Logs/Logs.SavedQueriesItem.tsx +++ b/studio/components/interfaces/Settings/Logs/Logs.SavedQueriesItem.tsx @@ -46,7 +46,7 @@ const SavedQueriesItem: FC = ({ item }: Props) => { type="alternative" iconRight={} onClick={() => - router.push(`/project/${ref}/logs-explorer?q=${encodeURIComponent(item.content.sql)}`) + router.push(`/project/${ref}/logs/explorer?q=${encodeURIComponent(item.content.sql)}`) } > Run diff --git a/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx b/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx index 47616568488..a649a87d319 100644 --- a/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx +++ b/studio/components/interfaces/Settings/Logs/LogsPreviewer.tsx @@ -141,7 +141,7 @@ export const LogsPreviewer: React.FC = ({ defaultFromValue={params.iso_timestamp_start} onExploreClick={() => { router.push( - `/project/${projectRef}/logs-explorer?q=${encodeURIComponent( + `/project/${projectRef}/logs/explorer?q=${encodeURIComponent( params.sql || '' )}&its=${encodeURIComponent(params.iso_timestamp_start || '')}&ite=${encodeURIComponent( params.iso_timestamp_end || '' diff --git a/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx b/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx index 7919e66a401..89ca5bcd51b 100644 --- a/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx +++ b/studio/components/interfaces/Settings/Logs/RecentQueriesItem.tsx @@ -24,7 +24,7 @@ const RecentQueriesItem: React.FC = ({ item }) => { type="alternative" iconRight={} onClick={() => - router.push(`/project/${ref}/logs-explorer?q=${encodeURIComponent(item.sql)}`) + router.push(`/project/${ref}/logs/explorer?q=${encodeURIComponent(item.sql)}`) } > Run diff --git a/studio/pages/project/[ref]/logs/explorer/recent.tsx b/studio/pages/project/[ref]/logs/explorer/recent.tsx index 6fb5a0cf981..9a9292fbc2c 100644 --- a/studio/pages/project/[ref]/logs/explorer/recent.tsx +++ b/studio/pages/project/[ref]/logs/explorer/recent.tsx @@ -54,7 +54,7 @@ export const LogsSavedPage: NextPageWithLayout = () => {

No Recent Queries Yet

Your recent queries run from the{' '} - + Query {' '} tab will show here. diff --git a/studio/pages/project/[ref]/logs/explorer/saved.tsx b/studio/pages/project/[ref]/logs/explorer/saved.tsx index 871c513cbe4..3d9ea64aec5 100644 --- a/studio/pages/project/[ref]/logs/explorer/saved.tsx +++ b/studio/pages/project/[ref]/logs/explorer/saved.tsx @@ -52,7 +52,7 @@ export const LogsSavedPage: NextPageWithLayout = () => {

No Saved Queries Yet

Saved queries will appear here. Queries can be saved from the{' '} - + Query {' '} tab. diff --git a/studio/pages/project/[ref]/logs/explorer/templates.tsx b/studio/pages/project/[ref]/logs/explorer/templates.tsx index 6ee18397a3e..4a58fb44305 100644 --- a/studio/pages/project/[ref]/logs/explorer/templates.tsx +++ b/studio/pages/project/[ref]/logs/explorer/templates.tsx @@ -38,7 +38,7 @@ export const LogsTemplatesPage: NextPageWithLayout = () => {

} containerHeightClassName="h-40" - linkHref={`/project/${ref}/logs-explorer?q=${encodeURI(template.searchString)}`} + linkHref={`/project/${ref}/logs/explorer?q=${encodeURI(template.searchString)}`} description={template.description} footer={
diff --git a/studio/tests/pages/projects/logs-explorer/saved.test.js b/studio/tests/pages/projects/logs-explorer/saved.test.js index 6b8525aa34d..62b71eeb973 100644 --- a/studio/tests/pages/projects/logs-explorer/saved.test.js +++ b/studio/tests/pages/projects/logs-explorer/saved.test.js @@ -1,6 +1,6 @@ // mock the fetch function import { get } from 'lib/common/fetch' -import { LogsSavedPage } from 'pages/project/[ref]/logs-explorer/saved' +import { LogsSavedPage } from 'pages/project/[ref]/logs/explorer/saved' import { render } from 'tests/helpers' test('on load, refresh user content', async () => { diff --git a/studio/tests/pages/projects/logs-query.test.js b/studio/tests/pages/projects/logs-query.test.js index 84d63e92f85..767b9450af6 100644 --- a/studio/tests/pages/projects/logs-query.test.js +++ b/studio/tests/pages/projects/logs-query.test.js @@ -1,6 +1,6 @@ import { get } from 'lib/common/fetch' import { useRouter } from 'next/router' -import { LogsExplorerPage } from 'pages/project/[ref]/logs-explorer/index' +import { LogsExplorerPage } from 'pages/project/[ref]/logs/explorer/index' import { render } from 'tests/helpers' import { waitFor, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' From a6b1a1ebadc368f9070ac1e2d929cca5f67f945b Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 12 Oct 2022 12:44:12 -0230 Subject: [PATCH 007/185] Move all logs pages --- .../layouts/LogsLayout/LogsMenu.utils.ts | 20 +++++++------------ .../NavigationBar/NavigationBar.utils.tsx | 2 +- .../{auth/logs.tsx => logs/auth-logs.tsx} | 4 ++-- .../api-logs.tsx => logs/postgrest-logs.tsx} | 4 ++-- .../{database => logs}/realtime-logs.tsx | 4 ++-- .../logs.tsx => logs/storage-logs.tsx} | 4 ++-- 6 files changed, 16 insertions(+), 22 deletions(-) rename studio/pages/project/[ref]/{auth/logs.tsx => logs/auth-logs.tsx} (86%) rename studio/pages/project/[ref]/{database/api-logs.tsx => logs/postgrest-logs.tsx} (80%) rename studio/pages/project/[ref]/{database => logs}/realtime-logs.tsx (80%) rename studio/pages/project/[ref]/{storage/logs.tsx => logs/storage-logs.tsx} (80%) diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index 4c461031b31..80f59c3f6da 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -31,22 +31,16 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { }, { name: 'PostgREST logs', - key: 'api-logs', - url: `/project/${ref}/database/api-logs`, - items: [], - }, - { - name: 'API logs(?)', - key: 'api-logs', - url: `/project/${ref}/database/api-logs`, + key: 'postgrest-logs', + url: `/project/${ref}/logs/postgrest-logs`, items: [], }, ...(IS_PLATFORM ? [ { name: 'Auth logs', - key: 'logs', - url: `/project/${ref}/auth/logs`, + key: 'auth-logs', + url: `/project/${ref}/logs/auth-logs`, items: [], }, ] @@ -65,8 +59,8 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { ? [ { name: 'Storage logs', - key: 'logs', - url: `/project/${ref}/storage/logs`, + key: 'storage-logs', + url: `/project/${ref}/logs/storage-logs`, items: [], }, ] @@ -77,7 +71,7 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { { name: 'Realtime logs', key: 'realtime-logs', - url: `/project/${ref}/database/realtime-logs`, + url: `/project/${ref}/logs/realtime-logs`, items: [], }, ] diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx index d28104bcd95..7494bee61b1 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx @@ -113,7 +113,7 @@ export const generateOtherRoutes = (ref?: string, project?: ProjectBase): Route[ : []), { key: 'api', - label: 'API', + label: 'API Docs', icon: , link: ref && (isProjectBuilding ? buildingUrl : `/project/${ref}/api`), }, diff --git a/studio/pages/project/[ref]/auth/logs.tsx b/studio/pages/project/[ref]/logs/auth-logs.tsx similarity index 86% rename from studio/pages/project/[ref]/auth/logs.tsx rename to studio/pages/project/[ref]/logs/auth-logs.tsx index bf2fbffeee6..8dc6e5d9765 100644 --- a/studio/pages/project/[ref]/auth/logs.tsx +++ b/studio/pages/project/[ref]/logs/auth-logs.tsx @@ -3,7 +3,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { NextPageWithLayout } from 'types' import { checkPermissions, useStore } from 'hooks' -import { AuthLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import LogsPreviewer from 'components/interfaces/Settings/Logs/LogsPreviewer' import NoPermission from 'components/ui/NoPermission' @@ -20,6 +20,6 @@ const LogsPage: NextPageWithLayout = () => { ) } -LogsPage.getLayout = (page) => {page} +LogsPage.getLayout = (page) => {page} export default observer(LogsPage) diff --git a/studio/pages/project/[ref]/database/api-logs.tsx b/studio/pages/project/[ref]/logs/postgrest-logs.tsx similarity index 80% rename from studio/pages/project/[ref]/database/api-logs.tsx rename to studio/pages/project/[ref]/logs/postgrest-logs.tsx index dcf797e9f2e..9c8b817e535 100644 --- a/studio/pages/project/[ref]/database/api-logs.tsx +++ b/studio/pages/project/[ref]/logs/postgrest-logs.tsx @@ -1,7 +1,7 @@ import React from 'react' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { DatabaseLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import LogsPreviewer from 'components/interfaces/Settings/Logs/LogsPreviewer' import { NextPageWithLayout } from 'types' @@ -20,6 +20,6 @@ export const LogPage: NextPageWithLayout = () => { ) } -LogPage.getLayout = (page) => {page} +LogPage.getLayout = (page) => {page} export default observer(LogPage) diff --git a/studio/pages/project/[ref]/database/realtime-logs.tsx b/studio/pages/project/[ref]/logs/realtime-logs.tsx similarity index 80% rename from studio/pages/project/[ref]/database/realtime-logs.tsx rename to studio/pages/project/[ref]/logs/realtime-logs.tsx index ca7f7ef9f63..456398eebcd 100644 --- a/studio/pages/project/[ref]/database/realtime-logs.tsx +++ b/studio/pages/project/[ref]/logs/realtime-logs.tsx @@ -1,7 +1,7 @@ import React from 'react' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { DatabaseLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import LogsPreviewer from 'components/interfaces/Settings/Logs/LogsPreviewer' import { NextPageWithLayout } from 'types' @@ -20,6 +20,6 @@ export const LogPage: NextPageWithLayout = () => { ) } -LogPage.getLayout = (page) => {page} +LogPage.getLayout = (page) => {page} export default observer(LogPage) diff --git a/studio/pages/project/[ref]/storage/logs.tsx b/studio/pages/project/[ref]/logs/storage-logs.tsx similarity index 80% rename from studio/pages/project/[ref]/storage/logs.tsx rename to studio/pages/project/[ref]/logs/storage-logs.tsx index 099a27f43a2..13246819592 100644 --- a/studio/pages/project/[ref]/storage/logs.tsx +++ b/studio/pages/project/[ref]/logs/storage-logs.tsx @@ -1,7 +1,7 @@ import React from 'react' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { StorageLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' import LogsPreviewer from 'components/interfaces/Settings/Logs/LogsPreviewer' import { NextPageWithLayout } from 'types' @@ -20,6 +20,6 @@ export const LogPage: NextPageWithLayout = () => { ) } -LogPage.getLayout = (page) => {page} +LogPage.getLayout = (page) => {page} export default observer(LogPage) From 359aed0a6a0bd025f115b5bd6160fbc46d74b69e Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 12 Oct 2022 16:27:55 -0230 Subject: [PATCH 008/185] Move api logs --- .../DatabaseLayout/DatabaseMenu.utils.ts | 19 ------------------- .../layouts/LogsLayout/LogsMenu.utils.ts | 12 +++++++++++- .../layouts/StorageLayout/StorageMenu.tsx | 15 +-------------- .../[ref]/{database => logs}/api-usage.tsx | 4 ++-- 4 files changed, 14 insertions(+), 36 deletions(-) rename studio/pages/project/[ref]/{database => logs}/api-usage.tsx (79%) diff --git a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts index de59453733d..ee4c4832ef2 100644 --- a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts +++ b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts @@ -58,24 +58,5 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { }, ], }, - ...(IS_PLATFORM - ? [ - { - title: 'Logs and Usage', - items: [ - ...(reportsOverview - ? [ - { - name: 'API usage', - key: 'api-usage', - url: `/project/${ref}/database/api-usage`, - items: [], - }, - ] - : []), - ], - }, - ] - : []), ] } diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index 80f59c3f6da..3674bb566f6 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -6,6 +6,7 @@ import { useFlag } from 'hooks' export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { const ref = project?.ref ?? 'default' const logsRealtime = useFlag('logsRealtime') + const reportsOverview = useFlag('reportsOverview') return [ { @@ -65,7 +66,6 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { }, ] : []), - ...(logsRealtime ? [ { @@ -76,6 +76,16 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { }, ] : []), + ...(IS_PLATFORM && reportsOverview + ? [ + { + name: 'API usage', + key: 'api-usage', + url: `/project/${ref}/logs/api-usage`, + items: [], + }, + ] + : []), ], }, ] diff --git a/studio/components/layouts/StorageLayout/StorageMenu.tsx b/studio/components/layouts/StorageLayout/StorageMenu.tsx index bad7eb2b10f..cb36e1ae49c 100644 --- a/studio/components/layouts/StorageLayout/StorageMenu.tsx +++ b/studio/components/layouts/StorageLayout/StorageMenu.tsx @@ -18,19 +18,13 @@ import { import ProductMenuItem from 'components/ui/ProductMenu/ProductMenuItem' import { STORAGE_ROW_STATUS } from 'components/to-be-cleaned/Storage/Storage.constants' import { useStorageStore } from 'localStores/storageExplorer/StorageExplorerStore' -import Flag from 'components/ui/Flag/Flag' interface Props {} const StorageMenu: FC = () => { const router = useRouter() const { ref, bucketId } = router.query - const page = router.pathname.split('/')[4] as - | undefined - | 'policies' - | 'settings' - | 'usage' - | 'logs' + const page = router.pathname.split('/')[4] as undefined | 'policies' | 'settings' | 'usage' const { ui } = useStore() const projectRef = ui.selectedProject?.ref @@ -109,13 +103,6 @@ const StorageMenu: FC = () => {

Policies

- - - -

Logs

-
- -
diff --git a/studio/pages/project/[ref]/database/api-usage.tsx b/studio/pages/project/[ref]/logs/api-usage.tsx similarity index 79% rename from studio/pages/project/[ref]/database/api-usage.tsx rename to studio/pages/project/[ref]/logs/api-usage.tsx index cfddd507e4a..d6c523c8564 100644 --- a/studio/pages/project/[ref]/database/api-usage.tsx +++ b/studio/pages/project/[ref]/logs/api-usage.tsx @@ -4,7 +4,7 @@ import { useRouter } from 'next/router' import { NextPageWithLayout } from 'types' import PresetReport from 'components/interfaces/Reports/PresetReport' import { Presets } from 'components/interfaces/Reports/Reports.types' -import { DatabaseLayout } from 'components/layouts' +import { LogsLayout } from 'components/layouts' export const ApiUsagePage: NextPageWithLayout = () => { const router = useRouter() @@ -13,6 +13,6 @@ export const ApiUsagePage: NextPageWithLayout = () => { return } -ApiUsagePage.getLayout = (page) => {page} +ApiUsagePage.getLayout = (page) => {page} export default observer(ApiUsagePage) From e577d61f15b5b538f3993bb6b4c64a4272e1c1be Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 12 Oct 2022 16:43:41 -0230 Subject: [PATCH 009/185] Start project settings --- .../SettingsLayout/SettingsMenu.utils.ts | 77 ++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts index f2fb7aa6848..165b6c54270 100644 --- a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts +++ b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts @@ -17,7 +17,7 @@ export const generateSettingsMenu = (ref: string, project?: ProjectBase): Produc return [ { - title: 'Project settings', + title: 'Project Settings', items: [ { name: 'General', @@ -32,11 +32,16 @@ export const generateSettingsMenu = (ref: string, project?: ProjectBase): Produc items: [], }, { - name: 'API', + name: 'Connection Settings', key: 'api', url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, items: [], }, + ], + }, + { + title: 'Project settings', + items: [ { name: 'Authentication', key: 'auth', @@ -59,5 +64,73 @@ export const generateSettingsMenu = (ref: string, project?: ProjectBase): Produc }, ], }, + { + title: 'API', + items: [ + { + name: 'API Keys', + key: 'generaleeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, + items: [], + }, + { + name: 'API Settings', + key: 'databaseeeeeeeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, + items: [], + }, + ], + }, + { + title: 'Project keys', + items: [ + { + name: 'Roll keys', + key: 'generaleeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, + items: [], + }, + { + name: 'JWT', + key: 'databaseeeeeeeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, + items: [], + }, + ], + }, + { + title: 'Backups?', + items: [ + { + name: 'Backups?', + key: 'generaleeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, + items: [], + }, + ], + }, + { + title: 'Billing', + items: [ + { + name: 'Subscription', + key: 'generaleeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, + items: [], + }, + { + name: 'Usage', + key: 'databaseeeeeeeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, + items: [], + }, + { + name: 'Invoices', + key: 'databaseeeeeeeeeee', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, + items: [], + }, + ], + }, ] } From 414f6c7854a5e7eabc22a23fa5a0d1d568f37f1a Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 13 Oct 2022 10:35:31 -0230 Subject: [PATCH 010/185] Move auth providers to own page --- .../layouts/AuthLayout/AuthLayout.utils.ts | 10 ++--- studio/pages/project/[ref]/auth/providers.tsx | 38 +++++++++++++++++++ studio/pages/project/[ref]/auth/settings.tsx | 2 - 3 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 studio/pages/project/[ref]/auth/providers.tsx diff --git a/studio/components/layouts/AuthLayout/AuthLayout.utils.ts b/studio/components/layouts/AuthLayout/AuthLayout.utils.ts index b7aed94533f..3a0446d3114 100644 --- a/studio/components/layouts/AuthLayout/AuthLayout.utils.ts +++ b/studio/components/layouts/AuthLayout/AuthLayout.utils.ts @@ -4,7 +4,7 @@ import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' export const generateAuthMenu = (ref: string): ProductMenuGroup[] => { return [ { - title: 'Users (?)', + title: 'Users', items: [{ name: 'Users', key: 'users', url: `/project/${ref}/auth/users`, items: [] }], }, ...(IS_PLATFORM @@ -15,7 +15,7 @@ export const generateAuthMenu = (ref: string): ProductMenuGroup[] => { ...(IS_PLATFORM ? [ { - name: 'Settings or General?', + name: 'Settings', key: 'settings', url: `/project/${ref}/auth/settings`, items: [], @@ -30,9 +30,9 @@ export const generateAuthMenu = (ref: string): ProductMenuGroup[] => { items: [], }, { - name: 'Providers?', - key: 'policies', - url: `/project/${ref}/auth/policies`, + name: 'Providers', + key: 'providers', + url: `/project/${ref}/auth/providers`, items: [], }, { diff --git a/studio/pages/project/[ref]/auth/providers.tsx b/studio/pages/project/[ref]/auth/providers.tsx new file mode 100644 index 00000000000..47112f72c8c --- /dev/null +++ b/studio/pages/project/[ref]/auth/providers.tsx @@ -0,0 +1,38 @@ +import { useEffect } from 'react' +import { observer } from 'mobx-react-lite' +import { PermissionAction } from '@supabase/shared-types/out/constants' + +import { NextPageWithLayout } from 'types' +import { checkPermissions, useStore } from 'hooks' +import { AuthProvidersForm } from 'components/interfaces' +import { AuthLayout } from 'components/layouts' +import { FormsContainer } from 'components/ui/Forms' +import NoPermission from 'components/ui/NoPermission' + +const PageLayout: NextPageWithLayout = () => { + const { ui, authConfig } = useStore() + + useEffect(() => { + authConfig.load() + }, [ui.selectedProjectRef]) + + const canReadAuthSettings = checkPermissions(PermissionAction.READ, 'custom_config_gotrue') + + if (!canReadAuthSettings) { + return + } else if (authConfig) { + return ( + + + + ) + } else { + return
+ } +} + +PageLayout.getLayout = (page) => { + return {page} +} + +export default observer(PageLayout) diff --git a/studio/pages/project/[ref]/auth/settings.tsx b/studio/pages/project/[ref]/auth/settings.tsx index ea14e36bc0d..f77bd369cef 100644 --- a/studio/pages/project/[ref]/auth/settings.tsx +++ b/studio/pages/project/[ref]/auth/settings.tsx @@ -4,7 +4,6 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { NextPageWithLayout } from 'types' import { checkPermissions, useStore } from 'hooks' -import { AuthProvidersForm } from 'components/interfaces' import AutoSchemaForm from 'components/interfaces/Auth/AutoSchemaForm' import RedirectDomains from 'components/interfaces/Auth/RedirectDomains/RedirectDomains' import { AuthLayout } from 'components/layouts' @@ -27,7 +26,6 @@ const PageLayout: NextPageWithLayout = () => { - ) } else { From 71de50995f5ffef826ad2b2bd2656fca34e71c46 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 13 Oct 2022 11:41:27 -0230 Subject: [PATCH 011/185] Move billing components to own files --- .../layouts/LogsLayout/LogsMenu.utils.ts | 6 -- .../SettingsLayout/SettingsMenu.utils.ts | 82 ++--------------- .../[ref]/settings/billing/invoices.tsx | 68 ++++++++++++++ .../[ref]/settings/billing/subscription.tsx | 89 +++++++++++++++++++ .../settings/billing/{index.tsx => usage.tsx} | 39 +++----- 5 files changed, 175 insertions(+), 109 deletions(-) create mode 100644 studio/pages/project/[ref]/settings/billing/invoices.tsx create mode 100644 studio/pages/project/[ref]/settings/billing/subscription.tsx rename studio/pages/project/[ref]/settings/billing/{index.tsx => usage.tsx} (75%) diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index 3674bb566f6..5db493663a6 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -24,12 +24,6 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { url: `/project/${ref}/logs/postgres-logs`, items: [], }, - { - name: 'Query logs(?)', - key: 'api-logs', - url: `/project/${ref}/database/insights?`, - items: [], - }, { name: 'PostgREST logs', key: 'postgrest-logs', diff --git a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts index 165b6c54270..7af1c2abe3d 100644 --- a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts +++ b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts @@ -39,95 +39,25 @@ export const generateSettingsMenu = (ref: string, project?: ProjectBase): Produc }, ], }, - { - title: 'Project settings', - items: [ - { - name: 'Authentication', - key: 'auth', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/auth/settings`, - items: [], - }, - { - name: 'Storage', - key: 'storage', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/storage/settings`, - items: [], - // disabled: canReadStorage, - }, - { - name: 'Billing & Usage', - key: 'billing', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing`, - items: [], - // disabled: canReadInvoices && canReadSubscriptions, - }, - ], - }, - { - title: 'API', - items: [ - { - name: 'API Keys', - key: 'generaleeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, - items: [], - }, - { - name: 'API Settings', - key: 'databaseeeeeeeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, - items: [], - }, - ], - }, - { - title: 'Project keys', - items: [ - { - name: 'Roll keys', - key: 'generaleeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, - items: [], - }, - { - name: 'JWT', - key: 'databaseeeeeeeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, - items: [], - }, - ], - }, - { - title: 'Backups?', - items: [ - { - name: 'Backups?', - key: 'generaleeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, - items: [], - }, - ], - }, { title: 'Billing', items: [ { name: 'Subscription', - key: 'generaleeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, + key: 'billing', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/subscription`, items: [], }, { name: 'Usage', - key: 'databaseeeeeeeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, + key: 'usage', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/usage`, items: [], }, { name: 'Invoices', - key: 'databaseeeeeeeeeee', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/databaseeeeee`, + key: 'billing/invoices', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/invoices`, items: [], }, ], diff --git a/studio/pages/project/[ref]/settings/billing/invoices.tsx b/studio/pages/project/[ref]/settings/billing/invoices.tsx new file mode 100644 index 00000000000..29c76ba8d21 --- /dev/null +++ b/studio/pages/project/[ref]/settings/billing/invoices.tsx @@ -0,0 +1,68 @@ +import { observer } from 'mobx-react-lite' +import { FC, useEffect } from 'react' + +import { SettingsLayout } from 'components/layouts' +import LoadingUI from 'components/ui/Loading' +import OveragesBanner from 'components/ui/OveragesBanner/OveragesBanner' +import { useProjectSubscription, useStore } from 'hooks' +import { NextPageWithLayout, Project } from 'types' + +import { Invoices } from 'components/interfaces/Billing' + +const ProjectBilling: NextPageWithLayout = () => { + const { ui } = useStore() + const project = ui.selectedProject + + return ( +
+
+ +
+
+ ) +} + +ProjectBilling.getLayout = (page) => ( + {page} +) + +export default observer(ProjectBilling) + +interface SettingsProps { + project?: Project +} + +const Settings: FC = ({ project }) => { + const { ui } = useStore() + const projectTier = ui.selectedProject?.subscription_tier + + const { + subscription, + isLoading: loading, + error, + } = useProjectSubscription(ui.selectedProject?.ref) + + useEffect(() => { + if (error) { + ui.setNotification({ + category: 'error', + message: `Failed to get project subscription: ${error?.message ?? 'unknown'}`, + }) + } + }, [error]) + + if (!subscription) { + return + } + + return ( +
+ {projectTier !== undefined && } + +
+

Invoices

+ +
+
+ ) +} diff --git a/studio/pages/project/[ref]/settings/billing/subscription.tsx b/studio/pages/project/[ref]/settings/billing/subscription.tsx new file mode 100644 index 00000000000..e576ae8e385 --- /dev/null +++ b/studio/pages/project/[ref]/settings/billing/subscription.tsx @@ -0,0 +1,89 @@ +import { observer } from 'mobx-react-lite' +import { FC, useEffect, useState } from 'react' +import { Loading } from 'ui' + +import { SettingsLayout } from 'components/layouts' +import LoadingUI from 'components/ui/Loading' +import OveragesBanner from 'components/ui/OveragesBanner/OveragesBanner' +import { useProjectPaygStatistics, useProjectSubscription, useStore } from 'hooks' +import { NextPageWithLayout, Project } from 'types' + +import { Subscription } from 'components/interfaces/Billing' +import { PaygStats } from 'components/interfaces/Billing/PAYGUsage/PAYGUsage.types' + +const ProjectBilling: NextPageWithLayout = () => { + const { ui } = useStore() + const project = ui.selectedProject + + return ( +
+
+ +
+
+ ) +} + +ProjectBilling.getLayout = (page) => ( + {page} +) + +export default observer(ProjectBilling) + +interface SettingsProps { + project?: Project +} + +const Settings: FC = ({ project }) => { + const { ui } = useStore() + const projectTier = ui.selectedProject?.subscription_tier + + const { + subscription, + isLoading: loading, + error, + } = useProjectSubscription(ui.selectedProject?.ref) + + const { paygStats }: { paygStats: PaygStats | undefined } = useProjectPaygStatistics( + ui.selectedProject?.ref, + subscription?.tier?.supabase_prod_id + ) + + useEffect(() => { + if (error) { + ui.setNotification({ + category: 'error', + message: `Failed to get project subscription: ${error?.message ?? 'unknown'}`, + }) + } + }, [error]) + + if (!subscription) { + return + } + + return ( +
+ {projectTier !== undefined && } + + {loading ? ( + +
+
+

Loading usage breakdown

+
+
+
+ ) : ( + <> + )} +
+ ) +} diff --git a/studio/pages/project/[ref]/settings/billing/index.tsx b/studio/pages/project/[ref]/settings/billing/usage.tsx similarity index 75% rename from studio/pages/project/[ref]/settings/billing/index.tsx rename to studio/pages/project/[ref]/settings/billing/usage.tsx index f1db9798a2a..17d51e7475e 100644 --- a/studio/pages/project/[ref]/settings/billing/index.tsx +++ b/studio/pages/project/[ref]/settings/billing/usage.tsx @@ -1,20 +1,19 @@ import dayjs from 'dayjs' -import { FC, useEffect, useState } from 'react' import { observer } from 'mobx-react-lite' -import { Loading, IconArrowRight } from 'ui' +import { FC, useEffect, useState } from 'react' +import { IconArrowRight, Loading } from 'ui' -import { Project, NextPageWithLayout } from 'types' -import { useProjectPaygStatistics, useProjectSubscription, useStore } from 'hooks' -import { STRIPE_PRODUCT_IDS, TIME_PERIODS_REPORTS, TIME_PERIODS_BILLING } from 'lib/constants' -import { SettingsLayout } from 'components/layouts' -import LoadingUI from 'components/ui/Loading' -import OveragesBanner from 'components/ui/OveragesBanner/OveragesBanner' -import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' -import { PAYGUsage, Subscription, Invoices } from 'components/interfaces/Billing' +import { PAYGUsage } from 'components/interfaces/Billing' import { PaygStats } from 'components/interfaces/Billing/PAYGUsage/PAYGUsage.types' import ProjectUsage from 'components/interfaces/Settings/ProjectUsageBars/ProjectUsageBars' +import { SettingsLayout } from 'components/layouts' +import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' +import LoadingUI from 'components/ui/Loading' +import { useProjectPaygStatistics, useProjectSubscription, useStore } from 'hooks' +import { STRIPE_PRODUCT_IDS, TIME_PERIODS_BILLING, TIME_PERIODS_REPORTS } from 'lib/constants' +import { NextPageWithLayout, Project } from 'types' -const ProjectBilling: NextPageWithLayout = () => { +const ProjectBillingUsage: NextPageWithLayout = () => { const { ui } = useStore() const project = ui.selectedProject @@ -27,11 +26,11 @@ const ProjectBilling: NextPageWithLayout = () => { ) } -ProjectBilling.getLayout = (page) => ( +ProjectBillingUsage.getLayout = (page) => ( {page} ) -export default observer(ProjectBilling) +export default observer(ProjectBillingUsage) interface SettingsProps { project?: Project @@ -39,7 +38,6 @@ interface SettingsProps { const Settings: FC = ({ project }) => { const { ui } = useStore() - const projectTier = ui.selectedProject?.subscription_tier const [dateRange, setDateRange] = useState() @@ -69,15 +67,6 @@ const Settings: FC = ({ project }) => { return (
- {projectTier !== undefined && } - {loading ? (
@@ -115,10 +104,6 @@ const Settings: FC = ({ project }) => { ) : ( )} -
-

Invoices

- -
) } From a061c437338d56b4aed5849759feb3b795e190df Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Mon, 17 Oct 2022 00:23:13 +0100 Subject: [PATCH 012/185] feat(ci): fix typos --- .github/workflows/fix-typos.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/fix-typos.yml diff --git a/.github/workflows/fix-typos.yml b/.github/workflows/fix-typos.yml new file mode 100644 index 00000000000..faa0e01c84d --- /dev/null +++ b/.github/workflows/fix-typos.yml @@ -0,0 +1,19 @@ +name: Automatically fix typos +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: master + - uses: sobolevn/misspell-fixer-action@master + - uses: peter-evans/create-pull-request@v2.4.4 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + with: + token: ${{ secrets.GITHUB_TOKEN }} From a9dd533fb9377fa3c4eab7b03914272c35d30769 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 16 Oct 2022 23:24:06 +0000 Subject: [PATCH 013/185] [create-pull-request] automated change --- .../reference/docs/guides/database/tables.mdx | 2 +- .../docs/guides/integrations/polyscale.mdx | 2 +- apps/reference/generator/legacy.ts | 4 +-- apps/www/_blog/2021-03-31-supabase-cli.mdx | 2 +- apps/www/_blog/2022-08-16-supabase-js-v2.mdx | 2 +- ...postgres-extension-for-json-validation.mdx | 2 +- ...trello-board-with-supabase-and-angular.mdx | 2 +- apps/www/pages/blog.tsx | 2 +- apps/www/styles/index.css | 2 +- .../flutter-todo-list/lib/constant.dart | 2 +- i18n/README.fr.md | 2 +- .../src/components/Breadcrumb/Breadcrumb.tsx | 6 ++--- .../ui/src/components/Divider/Divider.tsx | 2 +- .../components/Dropdown/Dropdown.stories.tsx | 26 +++++++++---------- .../ui/src/components/Dropdown/Dropdown.tsx | 6 ++--- .../ui/src/components/Modal/Modal.stories.tsx | 2 +- packages/ui/src/components/Modal/Modal.tsx | 6 ++--- .../components/Popover/Popover.stories.tsx | 4 +-- .../ui/src/components/Popover/Popover.tsx | 6 ++--- .../ui/src/components/SidePanel/SidePanel.tsx | 6 ++--- packages/ui/src/lib/theme/defaultTheme.ts | 8 +++--- .../common/ForeignTableModal/index.tsx | 2 +- .../header/filter/FilterPopover.tsx | 2 +- .../components/header/sort/SortPopover.tsx | 2 +- .../Account/NewAccessTokenButton.tsx | 2 +- .../Auth/Policies/PolicyEditor/index.tsx | 6 ++--- .../Policies/PolicyTableRow/PolicyRow.tsx | 2 +- .../interfaces/Auth/Users/UserDropdown.tsx | 2 +- .../AddPaymentMethodForm.tsx | 2 +- .../Billing/ExitSurvey/ExitSurvey.tsx | 2 +- .../PaymentSummaryPanel.tsx | 2 +- .../interfaces/Billing/ProUpgrade.tsx | 2 +- .../Database/Backups/PITR/PITRSelection.tsx | 6 ++--- .../Extensions/EnableExtensionModal.tsx | 4 +-- .../Database/Extensions/ExtensionCard.tsx | 4 +-- .../Database/Extensions/Extensions.tsx | 4 +-- .../Database/Functions/CreateFunction.tsx | 16 ++++++------ .../CreateHook/ServiceConfigForm/index.tsx | 6 ++--- .../Database/Hooks/CreateHook/index.tsx | 8 +++--- .../Database/Triggers/CreateTrigger.tsx | 4 +-- .../DeleteOrganizationButton.tsx | 4 +-- .../TeamSettings/InviteMemberButton.tsx | 2 +- .../TeamSettings/MemberActions.tsx | 4 +-- .../Organization/TeamSettings/MembersView.tsx | 2 +- .../interfaces/Settings/API/JWTSettings.tsx | 2 +- .../interfaces/Settings/Logs/LogTable.tsx | 2 +- .../LogsErrorRenderers.stories.tsx | 2 +- .../Settings/Logs/LogsFilterPopover.tsx | 2 +- .../Settings/Logs/UpgradePrompt.tsx | 2 +- .../ColumnEditor/ColumnEditor.tsx | 4 +-- .../ColumnEditor/InputWithSuggestions.tsx | 2 +- .../SidePanelEditor/RowEditor/RowEditor.tsx | 2 +- .../SidePanelEditor/TableEditor/Column.tsx | 6 ++--- .../TableEditor/TableEditor.tsx | 4 +-- .../FeedbackDropdown/FeedbackWidget.tsx | 2 +- .../LayoutHeader/HelpPopover.tsx | 2 +- .../NotificationsPopover/index.tsx | 8 +++--- .../LayoutHeader/OrgDropdown.tsx | 2 +- .../LayoutHeader/ProjectDropdown.tsx | 2 +- .../NavigationBar/NavigationBar.tsx | 2 +- .../ProjectLayout/ProjectPausedState.tsx | 2 +- .../layouts/SQLEditorLayout/SQLEditorMenu.tsx | 2 +- .../layouts/StorageLayout/StorageMenu.tsx | 2 +- .../TableEditorLayout/TableEditorMenu.tsx | 2 +- .../Dropdown/OrganizationDropdown.js | 2 +- .../to-be-cleaned/SqlEditor/RenameQuery.js | 2 +- .../Storage/CreateBucketModal.tsx | 2 +- .../StorageExplorer/FileExplorerRow.js | 2 +- .../StoragePolicies/StoragePolicies.js | 2 +- .../StoragePoliciesBucketRow.js | 2 +- .../StoragePolicies/StoragePoliciesEditor.js | 6 ++--- .../StorageSettings/StorageSettings.tsx | 2 +- .../components/ui/DatePicker/DatePicker.tsx | 2 +- studio/components/ui/Dialogs/ConfirmDialog.js | 2 +- .../components/ui/Modals/TextConfirmModal.tsx | 4 +-- studio/lib/common/fetch/base.ts | 4 +-- .../pages/projects/LogsPreviewer.test.js | 2 +- 77 files changed, 137 insertions(+), 137 deletions(-) diff --git a/apps/reference/docs/guides/database/tables.mdx b/apps/reference/docs/guides/database/tables.mdx index 1f0e0857329..b221f82ff7e 100644 --- a/apps/reference/docs/guides/database/tables.mdx +++ b/apps/reference/docs/guides/database/tables.mdx @@ -160,7 +160,7 @@ In the example above, we have: 1. created a column called `id` 1. assigned the data type `bigint` 1. instructed the database that this should be `generated always as identity`, which means that Postgres will automatically assign a unique number to this column. -1. Becuase it's unique, we can also use it as our `primary key`. +1. Because it's unique, we can also use it as our `primary key`. We could also use `generated by default as identity`, which would allow us to insert our own unique values. diff --git a/apps/reference/docs/guides/integrations/polyscale.mdx b/apps/reference/docs/guides/integrations/polyscale.mdx index 412f94ff2c1..1eae5729d0f 100644 --- a/apps/reference/docs/guides/integrations/polyscale.mdx +++ b/apps/reference/docs/guides/integrations/polyscale.mdx @@ -48,7 +48,7 @@ Your cache is now created. PolyScale automatically checks to see that your datab ## Step 2: Connect to your PolyScale Cache -Using your PolyScale cache is simple -- instead of connecting to your Supabase database directly, you'll replace your orignal connection string with the PolyScale connection string in your application. +Using your PolyScale cache is simple -- instead of connecting to your Supabase database directly, you'll replace your original connection string with the PolyScale connection string in your application. For example, if your original connection string was: `postgres://postgres:zqSPGHFAbPLvVCKw@db.rogpiubvixysbakciwqz.supabase.co:5432` diff --git a/apps/reference/generator/legacy.ts b/apps/reference/generator/legacy.ts index 6a2b906af3f..c2d03442d7b 100644 --- a/apps/reference/generator/legacy.ts +++ b/apps/reference/generator/legacy.ts @@ -54,7 +54,7 @@ export default async function gen(inputFileName: string, outputDir: string) { const description = pageSpec.description || - tsDocCommentToMdComment(getDescriptionFromDefintion(tsDefinition)) + tsDocCommentToMdComment(getDescriptionFromDefinition(tsDefinition)) // Create page const content = Page({ @@ -107,7 +107,7 @@ function generateParameters(tsDefinition: any) { return methodListGroup(parameters) } -function getDescriptionFromDefintion(tsDefinition) { +function getDescriptionFromDefinition(tsDefinition) { if (!tsDefinition) return null if ( ['Method', 'Constructor', 'Constructor signature'].includes( diff --git a/apps/www/_blog/2021-03-31-supabase-cli.mdx b/apps/www/_blog/2021-03-31-supabase-cli.mdx index 140a414ebcf..21d53050cfe 100644 --- a/apps/www/_blog/2021-03-31-supabase-cli.mdx +++ b/apps/www/_blog/2021-03-31-supabase-cli.mdx @@ -153,7 +153,7 @@ docker run supabase/pgadmin-schema-diff \ > diff_demo.sql Starting schema diff... -Comparision started......0% +Comparison started......0% Comparing Event Triggers...2% Comparing Extensions...4% Comparing Languages...8% diff --git a/apps/www/_blog/2022-08-16-supabase-js-v2.mdx b/apps/www/_blog/2022-08-16-supabase-js-v2.mdx index b327552f6b7..c6ddd1707ce 100644 --- a/apps/www/_blog/2022-08-16-supabase-js-v2.mdx +++ b/apps/www/_blog/2022-08-16-supabase-js-v2.mdx @@ -179,7 +179,7 @@ const supabase = createClient(apiURL, apiKey, { }) ``` -This is clearer for developers - if you're only using some parts of Supabase, you only recieve the hints for those parts. +This is clearer for developers - if you're only using some parts of Supabase, you only receive the hints for those parts.
diff --git a/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx b/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx index fedddcb4bb8..52f14bd8c01 100644 --- a/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx +++ b/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx @@ -32,7 +32,7 @@ If our application receives data via a webhook: }, "payload": { { - "sucess": true, + "success": true, "content": { "account_id": "d928b484-16bd-4f10-a827-3eb959b4cc14", "event": "SUBSCRIBED", diff --git a/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx b/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx index 8e608762b6e..74e199254fc 100644 --- a/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx +++ b/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx @@ -1307,7 +1307,7 @@ To continue, bring up the **src/app/services/data.service.ts** and add this addi Now that we can easily get all the updates to our relevant tables in realtime, we just need to handle them accordingly. -This is just a matter of finding out which **event** occured (INSERT, UPDATE, DELETE) and then applying the changes to our local data to add, change or remove data. +This is just a matter of finding out which **event** occurred (INSERT, UPDATE, DELETE) and then applying the changes to our local data to add, change or remove data. Go ahead by finally implementing our function in the **src/app/components/inside/board/board.component.ts** that we left open until now: diff --git a/apps/www/pages/blog.tsx b/apps/www/pages/blog.tsx index 4c224dc864d..a814455f140 100644 --- a/apps/www/pages/blog.tsx +++ b/apps/www/pages/blog.tsx @@ -39,7 +39,7 @@ function Blog(props: any) { const router = useRouter() useEffect(() => { - // contruct an array of blog posts + // construct an array of blog posts // not inluding the first blog post const shiftedBlogs = [...props.blogs] shiftedBlogs.shift() diff --git a/apps/www/styles/index.css b/apps/www/styles/index.css index 0770adef451..a9175b6623a 100644 --- a/apps/www/styles/index.css +++ b/apps/www/styles/index.css @@ -156,7 +156,7 @@ h6 { */ /* Database page */ -.dashboard-tabs div[role='seperator'] { +.dashboard-tabs div[role='separator'] { @apply border border-gray-50 dark:border-gray-700; } diff --git a/examples/todo-list/flutter-todo-list/lib/constant.dart b/examples/todo-list/flutter-todo-list/lib/constant.dart index 70abe48f080..a552dd1fd44 100644 --- a/examples/todo-list/flutter-todo-list/lib/constant.dart +++ b/examples/todo-list/flutter-todo-list/lib/constant.dart @@ -61,7 +61,7 @@ final appTheme = ThemeData.dark().copyWith( ); extension ShowSnackBar on BuildContext { - /// Extention method to easily display error snack bar. + /// Extension method to easily display error snack bar. void showErrorSnackbar(String text) { ScaffoldMessenger.of(this).showSnackBar( SnackBar( diff --git a/i18n/README.fr.md b/i18n/README.fr.md index c1a06000e22..09879a65e79 100644 --- a/i18n/README.fr.md +++ b/i18n/README.fr.md @@ -66,7 +66,7 @@ Vous pouvez aussi [auto-héberger](https://supabase.com/docs/guides/hosting/over #### Bibliothèques clients -Notre bibliothèque client est modulaire. Chaque sous-bibliothèque est une implémentation autonome pour un seul système externe. C'est l'une des façons dont nous soutenons les outils existants. +Notre bibliothèque client est modulaire. Chaque sous-bibliothèque est une implémentation autonome pour un seul système externe. C'est l'une des façons dont nous soutenons les outils existents.
diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx b/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx index 6b32edf834b..65d97cbb722 100644 --- a/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx @@ -11,14 +11,14 @@ interface Props { const Breadcrumb = ({ className, style, children, spacing = 'small' }: Props) => { let classes = [BreadcrumbStyle['sbui-breadcrumb--container']] - let seperatorClasses = [BreadcrumbStyle['sbui-breadcrumb--separator']] + let separatorClasses = [BreadcrumbStyle['sbui-breadcrumb--separator']] if (className) { classes.push(className) } if (spacing) { - seperatorClasses.push(`sbui-breadcrumb--separator-${spacing}`) + separatorClasses.push(`sbui-breadcrumb--separator-${spacing}`) } return ( @@ -27,7 +27,7 @@ const Breadcrumb = ({ className, style, children, spacing = 'small' }: Props) =>
  • {child} {idx + 1 < children!.length && ( -
  • ))} diff --git a/packages/ui/src/components/Divider/Divider.tsx b/packages/ui/src/components/Divider/Divider.tsx index c1b0607899f..7030dff9e56 100644 --- a/packages/ui/src/components/Divider/Divider.tsx +++ b/packages/ui/src/components/Divider/Divider.tsx @@ -37,7 +37,7 @@ export default function Divider({ return (
    {children && ( diff --git a/packages/ui/src/components/Dropdown/Dropdown.stories.tsx b/packages/ui/src/components/Dropdown/Dropdown.stories.tsx index d1f825a5772..36a13dfd86c 100644 --- a/packages/ui/src/components/Dropdown/Dropdown.stories.tsx +++ b/packages/ui/src/components/Dropdown/Dropdown.stories.tsx @@ -68,7 +68,7 @@ export const DefaultFull = (args: any) => {
    , - , + , Group label, console.log('clicked')}> Account @@ -76,17 +76,17 @@ export const DefaultFull = (args: any) => { Settings ⌘+T , - , + , Show subtitles , - , + , Red Blue Green , - , + , { Blue Green , - , + , Group label, console.log('clicked')}> Account @@ -112,7 +112,7 @@ export const DefaultFull = (args: any) => { , - , + , }> Log out , @@ -142,7 +142,7 @@ export const Default = (args: any) => ( , - , + , Group label, console.log('clicked')}> Account @@ -150,7 +150,7 @@ export const Default = (args: any) => ( Settings ⌘+T , - , + , }>Log out, ]} > @@ -172,7 +172,7 @@ export const doNotcloseOverlay = (args: any) => ( Signed in as tom@example.com , - , + , Account, Settings, @@ -207,10 +207,10 @@ export const withCustomStyles = (args: any) => ( Signed in as tom@example.com , - , + , Account, Settings, - , + ,
    From 37efc0ea96dbd3a7a06b9c2ee8177880aaa39599 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Wed, 19 Oct 2022 14:37:01 +0100 Subject: [PATCH 024/185] Create .misspell-fixer.ignore --- .misspell-fixer.ignore | 1 + 1 file changed, 1 insertion(+) create mode 100644 .misspell-fixer.ignore diff --git a/.misspell-fixer.ignore b/.misspell-fixer.ignore new file mode 100644 index 00000000000..7c90f6e4788 --- /dev/null +++ b/.misspell-fixer.ignore @@ -0,0 +1 @@ +^./i18n From 706b27ff528521e883da04893839357046dad982 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 19 Oct 2022 11:17:29 -0230 Subject: [PATCH 025/185] Fix logic --- .../components/layouts/SettingsLayout/SettingsLayout.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/studio/components/layouts/SettingsLayout/SettingsLayout.tsx b/studio/components/layouts/SettingsLayout/SettingsLayout.tsx index e583cfcd3c7..4f98e620b59 100644 --- a/studio/components/layouts/SettingsLayout/SettingsLayout.tsx +++ b/studio/components/layouts/SettingsLayout/SettingsLayout.tsx @@ -18,12 +18,11 @@ const SettingsLayout: FC = ({ title, children }) => { const projectBaseInfo = ui.selectedProjectBaseInfo const router = useRouter() - let page // billing pages live under /billing/invoices and /billing/subscription, etc // so we need to pass the [5]th part of the url to the menu - router.pathname.includes('billing') - ? (page = router.pathname.split('/')[5]) - : (page = router.pathname.split('/')[4]) + const page = router.pathname.includes('billing') + ? router.pathname.split('/')[5] + : router.pathname.split('/')[4] const menuRoutes = generateSettingsMenu(projectRef, projectBaseInfo) From 78bda0c99f3da16d8bfc0c636723fd6197e8c3a2 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 19 Oct 2022 11:17:43 -0230 Subject: [PATCH 026/185] Remove isPlatform check --- .../layouts/LogsLayout/LogsMenu.utils.ts | 53 ++++++++----------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index 1ebf6f3f18f..ba0683be8d7 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -1,5 +1,4 @@ import { Project } from 'types' -import { IS_PLATFORM } from 'lib/constants' import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' import { useFlag } from 'hooks' @@ -30,37 +29,27 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { url: `/project/${ref}/logs/postgrest-logs`, items: [], }, - ...(IS_PLATFORM - ? [ - { - name: 'Auth logs', - key: 'auth-logs', - url: `/project/${ref}/logs/auth-logs`, - items: [], - }, - ] - : []), - ...(IS_PLATFORM - ? [ - { - name: 'Storage logs', - key: 'storage-logs', - url: `/project/${ref}/logs/storage-logs`, - items: [], - }, - ] - : []), - ...(logsRealtime - ? [ - { - name: 'Realtime logs', - key: 'realtime-logs', - url: `/project/${ref}/logs/realtime-logs`, - items: [], - }, - ] - : []), - ...(IS_PLATFORM && reportsOverview + { + name: 'Auth logs', + key: 'auth-logs', + url: `/project/${ref}/logs/auth-logs`, + items: [], + }, + { + name: 'Storage logs', + key: 'storage-logs', + url: `/project/${ref}/logs/storage-logs`, + items: [], + }, + + { + name: 'Realtime logs', + key: 'realtime-logs', + url: `/project/${ref}/logs/realtime-logs`, + items: [], + }, + + ...(reportsOverview ? [ { name: 'API usage', From 16eacef60eb79da7f26a1df3d6bc891c2b7f8bae Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Wed, 19 Oct 2022 18:54:28 +0100 Subject: [PATCH 027/185] Update constant.dart --- examples/todo-list/flutter-todo-list/lib/constant.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/todo-list/flutter-todo-list/lib/constant.dart b/examples/todo-list/flutter-todo-list/lib/constant.dart index a552dd1fd44..70abe48f080 100644 --- a/examples/todo-list/flutter-todo-list/lib/constant.dart +++ b/examples/todo-list/flutter-todo-list/lib/constant.dart @@ -61,7 +61,7 @@ final appTheme = ThemeData.dark().copyWith( ); extension ShowSnackBar on BuildContext { - /// Extension method to easily display error snack bar. + /// Extention method to easily display error snack bar. void showErrorSnackbar(String text) { ScaffoldMessenger.of(this).showSnackBar( SnackBar( From e5db50da923892049f98f5b4ef7eaae9b712e1b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 17:55:22 +0000 Subject: [PATCH 028/185] [create-pull-request] automated change --- .../flutter-user-management/lib/components/avatar.dart | 2 +- .../flutter-user-management/lib/pages/account_page.dart | 8 ++++---- .../flutter-user-management/lib/pages/login_page.dart | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/user-management/flutter-user-management/lib/components/avatar.dart b/examples/user-management/flutter-user-management/lib/components/avatar.dart index c59531751a8..e784b810c8b 100644 --- a/examples/user-management/flutter-user-management/lib/components/avatar.dart +++ b/examples/user-management/flutter-user-management/lib/components/avatar.dart @@ -80,7 +80,7 @@ class _AvatarState extends State { } } catch (error) { if (mounted) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } } diff --git a/examples/user-management/flutter-user-management/lib/pages/account_page.dart b/examples/user-management/flutter-user-management/lib/pages/account_page.dart index e959cfc51da..8c5d7aacb2b 100644 --- a/examples/user-management/flutter-user-management/lib/pages/account_page.dart +++ b/examples/user-management/flutter-user-management/lib/pages/account_page.dart @@ -35,7 +35,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected exception occured'); + context.showErrorSnackBar(message: 'Unexpected exception occurred'); } setState(() { @@ -65,7 +65,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpeted error occured'); + context.showErrorSnackBar(message: 'Unexpeted error occurred'); } setState(() { _loading = false; @@ -78,7 +78,7 @@ class _AccountPageState extends State { } on GoTrueException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } if (mounted) { Navigator.of(context).pushReplacementNamed('/'); @@ -99,7 +99,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error has occured'); + context.showErrorSnackBar(message: 'Unexpected error has occurred'); } if (!mounted) { return; diff --git a/examples/user-management/flutter-user-management/lib/pages/login_page.dart b/examples/user-management/flutter-user-management/lib/pages/login_page.dart index 463c950c453..8a00e568f2b 100644 --- a/examples/user-management/flutter-user-management/lib/pages/login_page.dart +++ b/examples/user-management/flutter-user-management/lib/pages/login_page.dart @@ -35,7 +35,7 @@ class _LoginPageState extends State { } on GoTrueException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } setState(() { From a3364755141cc504655ccc8543398112e9c35cfe Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 21 Oct 2022 15:13:41 +0100 Subject: [PATCH 029/185] Update database.tsx --- studio/pages/project/[ref]/settings/database.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index dd89bf6e2ad..bbe3a80bf46 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -289,7 +289,7 @@ const ResetDbPassword: FC = () => { /> - +
    From 263ab8d682b3a0a0a933ec60f732534277655af5 Mon Sep 17 00:00:00 2001 From: Chase Granberry Date: Wed, 26 Oct 2022 05:45:13 -0700 Subject: [PATCH 038/185] Realtime limits docs improvements --- .../reference/docs/guides/realtime/limits.mdx | 35 +++++++++---------- apps/reference/nav/_referenceSidebars.js | 7 +--- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/apps/reference/docs/guides/realtime/limits.mdx b/apps/reference/docs/guides/realtime/limits.mdx index 76884e6674b..ee4c404b9d4 100644 --- a/apps/reference/docs/guides/realtime/limits.mdx +++ b/apps/reference/docs/guides/realtime/limits.mdx @@ -1,43 +1,42 @@ --- -id: limits +id: rate-limits title: Realtime Rate Limits -description: Realtime Rate Limiting +description: Understanding Realtime rate limiting +sidebar_label: Rate Limits --- -Since deploying a global multi-tenant cluster for Supabase Realtime, we've implimented some rate limits to protect our infrastructure. +Supabase Realtime is a global cluster. We've implemented some rate limits to help ensure high availability for all customers. -Rate limits are mostly configurable per project and our cluster can support millions of concurrent connections if needed. If you're running into any rate limiting and it's causing issues, please [contact support](https://app.supabase.com/support/new). +Rate limits are configurable per project and our cluster supports millions of concurrent connections. [Contact support](https://app.supabase.com/support/new) if these limits are causing issues. ## Limits by Plan Limits are set on the Free and Pro plans accordingly. See our [pricing page](https://supabase.com/pricing) for more information. -Above the Pro plan Realtime is billed on a usage basis. We still employ limiting above the Pro plan to protect our infrastructure. If you're on an Enterprise plan simply contact support and we'll increase your limits as needed. +Enterprise plans are billed on a usage basis. We still employ limiting on Enterprise plans. If you're on an Enterprise plan simply contact support and we'll increase your limits as needed. Enterprise plan limits start at: -- 500 concurrent users +- 500 concurrent clients - 1,000 messages per second - 500 concurrent Channels ## System Limits -Some limits apply to all projects and are not currently configurable per project. +The following limits apply to all projects. - 500 Channel joins per second -- 100 Channels per connected user +- 100 Channels per connected client -## Client-side Limiting +## Client-Side Limiting -Some basic WebSocket message rate limiting has been implimented client-side. +Some basic WebSocket message rate limiting is implemented client-side. -See the [Cursor Positions Quickstart](/docs/guides/realtime/quickstart#cursor-positions) section where a `eventsPerSecond` parameter is passed in when instantiating the Supabase client. - -- Default: `10` events per second +For example, the [multiplayer.dev demo](/docs/guides/realtime/quickstart#cursor-positions) instantiates the Supabase client with an `eventsPerSecond` parameter. ## Rate Limiting Errors -Rate limiting errors can appear in backend logs and messages in a WebSocket. +Rate limiting errors can appear in backend logs and messages in the WebSocket connection. :::note Use the [Realtime Inspector](https://realtime.supabase.com/inspector/new) to reproduce an error and share those connection details with Supabase support. @@ -49,18 +48,18 @@ If your project is being rate limited, check your [Realtime logs](https://app.su ### WebSocket Errors -- `tenant_events`: In the event your project is generating too many messages per second clients will be disconnected. `supabase-js` will attempt to reconnect automatically. It should reconnect successfully if the rate limit decreases appropriately. +- `tenant_events`: Clients will be disconnected if your project is generating too many messages per second. `supabase-js` should reconnect automatically if the message rate decreases appropriately. -Some limits will cause a Channel join to be refused. In this case a reply in the WebSocket will be one of: +Some limits can cause a Channel join to be refused. Realtime will reply with one of the following WebSocket messages: - `too_many_channels`: Too many channels currently joined for a single user. - `too_many_connections`: Too many total concurrent connections for a project. - `too_many_joins`: Too many Channel joins per second. :::note -Use Chroms DevTools to find the WebSocket initiation request and view individual messages. +Use your browser's developer tools to find the WebSocket initiation request and view individual messages. ::: ## Payload Limits -Realtime has a PubSub message payload size limit of 1 megabyte. +Realtime has a message byte size limit of 1 megabyte. diff --git a/apps/reference/nav/_referenceSidebars.js b/apps/reference/nav/_referenceSidebars.js index 549730d1d4e..4d3c70e6640 100644 --- a/apps/reference/nav/_referenceSidebars.js +++ b/apps/reference/nav/_referenceSidebars.js @@ -173,12 +173,7 @@ const sidebars = { 'guides/realtime', 'guides/realtime/quickstart', 'guides/realtime/postgres-cdc', - { - type: 'doc', - id: 'guides/realtime/limits', // document ID - label: 'Limits', // sidebar label - } - + 'guides/realtime/rate-limits' ] }, { From 7d63a29443a5ecd823da49e7f1c25298c8afb716 Mon Sep 17 00:00:00 2001 From: Chase Granberry Date: Wed, 26 Oct 2022 05:54:35 -0700 Subject: [PATCH 039/185] Better wording for when client auto reconnects --- apps/reference/docs/guides/realtime/limits.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/realtime/limits.mdx b/apps/reference/docs/guides/realtime/limits.mdx index ee4c404b9d4..03cec1d6c5e 100644 --- a/apps/reference/docs/guides/realtime/limits.mdx +++ b/apps/reference/docs/guides/realtime/limits.mdx @@ -48,7 +48,7 @@ If your project is being rate limited, check your [Realtime logs](https://app.su ### WebSocket Errors -- `tenant_events`: Clients will be disconnected if your project is generating too many messages per second. `supabase-js` should reconnect automatically if the message rate decreases appropriately. +- `tenant_events`: Clients will be disconnected if your project is generating too many messages per second. `supabase-js` should reconnect automatically when the message rate decreases below your plan limit. Some limits can cause a Channel join to be refused. Realtime will reply with one of the following WebSocket messages: From 7eb813200b9f1a370c8989328fbe13596a31429a Mon Sep 17 00:00:00 2001 From: Chase Granberry Date: Wed, 26 Oct 2022 05:58:31 -0700 Subject: [PATCH 040/185] Single client vs single user --- apps/reference/docs/guides/realtime/limits.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/realtime/limits.mdx b/apps/reference/docs/guides/realtime/limits.mdx index 03cec1d6c5e..ce81a3abdc9 100644 --- a/apps/reference/docs/guides/realtime/limits.mdx +++ b/apps/reference/docs/guides/realtime/limits.mdx @@ -52,7 +52,7 @@ If your project is being rate limited, check your [Realtime logs](https://app.su Some limits can cause a Channel join to be refused. Realtime will reply with one of the following WebSocket messages: -- `too_many_channels`: Too many channels currently joined for a single user. +- `too_many_channels`: Too many channels currently joined for a single client. - `too_many_connections`: Too many total concurrent connections for a project. - `too_many_joins`: Too many Channel joins per second. From ebf6dad5eee29983eb15c0f50325dc5f6ff463d0 Mon Sep 17 00:00:00 2001 From: Chase Granberry Date: Wed, 26 Oct 2022 06:20:08 -0700 Subject: [PATCH 041/185] Colon vs period --- apps/reference/docs/guides/realtime/limits.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/realtime/limits.mdx b/apps/reference/docs/guides/realtime/limits.mdx index ce81a3abdc9..a0f2ed78216 100644 --- a/apps/reference/docs/guides/realtime/limits.mdx +++ b/apps/reference/docs/guides/realtime/limits.mdx @@ -23,7 +23,7 @@ Enterprise plan limits start at: ## System Limits -The following limits apply to all projects. +The following limits apply to all projects: - 500 Channel joins per second - 100 Channels per connected client From f075c5c61615755ad61c69a117c41b0accf362b7 Mon Sep 17 00:00:00 2001 From: Chase Granberry Date: Wed, 26 Oct 2022 06:20:50 -0700 Subject: [PATCH 042/185] Add Presence limits --- apps/reference/docs/guides/realtime/limits.mdx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/apps/reference/docs/guides/realtime/limits.mdx b/apps/reference/docs/guides/realtime/limits.mdx index a0f2ed78216..5b88247652a 100644 --- a/apps/reference/docs/guides/realtime/limits.mdx +++ b/apps/reference/docs/guides/realtime/limits.mdx @@ -63,3 +63,12 @@ Use your browser's developer tools to find the WebSocket initiation request and ## Payload Limits Realtime has a message byte size limit of 1 megabyte. + +## Presence Limits + +Realtime Presence is a CRDT backed in-memory key value store based on Phoenix Presence. It's more expensive to update a Presence than Broadcast a message. + +The following limits apply to Presence messages: + +- 10 keys per object +- Message rate limit is 10% of your Realtime message rate limit From 91757781d296b335632c0705e337ea69c24ba5b8 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 12:37:17 -0230 Subject: [PATCH 043/185] Add new Reports layout --- .../layouts/LogsLayout/LogsMenu.utils.ts | 14 +- .../layouts/ReportsLayout/ReportsLayout.tsx | 9 +- .../ReportsLayout/ReportsMenu.utils.ts | 34 +++++ .../SettingsLayout/SettingsMenu.utils.ts | 2 +- studio/pages/project/[ref]/reports/[id].tsx | 3 +- .../[ref]/{logs => reports}/api-usage.tsx | 4 +- .../pages/project/[ref]/reports/database.tsx | 127 ++++++++++++++++++ .../pages/project/[ref]/settings/database.tsx | 101 -------------- 8 files changed, 178 insertions(+), 116 deletions(-) create mode 100644 studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts rename studio/pages/project/[ref]/{logs => reports}/api-usage.tsx (77%) create mode 100644 studio/pages/project/[ref]/reports/database.tsx diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index b4551f77c74..d67625440fa 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -11,38 +11,38 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { title: 'Logs', items: [ { - name: 'Explorer', + name: 'Logs Explorer', key: 'explorer', url: `/project/${ref}/logs/explorer`, items: [], }, { - name: 'Postgres logs', + name: 'Postgres', key: 'postgres-logs', url: `/project/${ref}/logs/postgres-logs`, items: [], }, { - name: 'PostgREST logs', + name: 'PostgREST', key: 'postgrest-logs', url: `/project/${ref}/logs/postgrest-logs`, items: [], }, { - name: 'Auth logs', + name: 'Auth', key: 'auth-logs', url: `/project/${ref}/logs/auth-logs`, items: [], }, { - name: 'Storage logs', + name: 'Storage', key: 'storage-logs', url: `/project/${ref}/logs/storage-logs`, items: [], }, { - name: 'Realtime logs', + name: 'Realtime', key: 'realtime-logs', url: `/project/${ref}/logs/realtime-logs`, items: [], @@ -51,7 +51,7 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { ...(productReports ? [ { - name: 'API usage', + name: 'Usage (used to be "API usage") move to reports', key: 'api-usage', url: `/project/${ref}/logs/api-usage`, items: [], diff --git a/studio/components/layouts/ReportsLayout/ReportsLayout.tsx b/studio/components/layouts/ReportsLayout/ReportsLayout.tsx index 1ac4056fa5e..d2b090f6c2c 100644 --- a/studio/components/layouts/ReportsLayout/ReportsLayout.tsx +++ b/studio/components/layouts/ReportsLayout/ReportsLayout.tsx @@ -4,6 +4,7 @@ import { useRouter } from 'next/router' import { useStore, withAuth } from 'hooks' import BaseLayout from '..' import ProductMenu from 'components/ui/ProductMenu' +import { generateReportsMenu } from './ReportsMenu.utils' interface Props { title: string @@ -12,7 +13,7 @@ interface Props { const ReportsLayout: FC = ({ title, children }) => { const { ui } = useStore() - const projectRef = ui.selectedProjectRef as string + const project = ui.selectedProject const router = useRouter() const page = router.pathname.split('/')[4] || '' @@ -22,7 +23,7 @@ const ReportsLayout: FC = ({ title, children }) => { { name: 'Overview', key: '', - url: `/project/${projectRef}/reports`, + url: `/project/${project}/reports`, items: [], }, ], @@ -32,7 +33,7 @@ const ReportsLayout: FC = ({ title, children }) => { { name: 'Dashboard', key: 'dashboard', - url: `/project/${projectRef}/reports/dashboard`, + url: `/project/${project}/reports/dashboard`, items: [], }, ], @@ -42,7 +43,7 @@ const ReportsLayout: FC = ({ title, children }) => { } + productMenu={} >
    {children} diff --git a/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts b/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts new file mode 100644 index 00000000000..b36fec9b7dd --- /dev/null +++ b/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts @@ -0,0 +1,34 @@ +import { Project } from 'types' +import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' +import { useFlag } from 'hooks' + +export const generateReportsMenu = (project?: Project): ProductMenuGroup[] => { + const ref = project?.ref ?? 'default' + const productReports = useFlag('productReports') + + return [ + { + title: 'Reports', + items: [ + { + name: 'Custom reports?', + key: 'reports', + url: `/project/${ref}/reports`, + items: [], + }, + { + name: 'API?', + key: 'api-usage', + url: `/project/${ref}/reports/api-usage`, + items: [], + }, + { + name: 'Database?', + key: 'database', + url: `/project/${ref}/reports/database`, + items: [], + }, + ], + }, + ] +} diff --git a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts index bc2b02a22ed..c9b26d031e7 100644 --- a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts +++ b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts @@ -33,7 +33,7 @@ export const generateSettingsMenu = (ref: string, project?: ProjectBase): Produc items: [], }, { - name: 'Connections', + name: 'API', key: 'api', url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/api`, items: [], diff --git a/studio/pages/project/[ref]/reports/[id].tsx b/studio/pages/project/[ref]/reports/[id].tsx index 5bb2526a034..9afcfa08e0a 100644 --- a/studio/pages/project/[ref]/reports/[id].tsx +++ b/studio/pages/project/[ref]/reports/[id].tsx @@ -3,6 +3,7 @@ import { NextPageWithLayout } from 'types' import { ProjectLayoutWithAuth } from 'components/layouts' import EditReportModal from 'components/to-be-cleaned/Reports/EditReportModal' import Reports from 'components/interfaces/Reports/Reports' +import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout' const PageLayout: NextPageWithLayout = () => ( <> @@ -13,6 +14,6 @@ const PageLayout: NextPageWithLayout = () => ( ) -PageLayout.getLayout = (page) => {page} +PageLayout.getLayout = (page) => {page} export default observer(PageLayout) diff --git a/studio/pages/project/[ref]/logs/api-usage.tsx b/studio/pages/project/[ref]/reports/api-usage.tsx similarity index 77% rename from studio/pages/project/[ref]/logs/api-usage.tsx rename to studio/pages/project/[ref]/reports/api-usage.tsx index d6c523c8564..9a027edf251 100644 --- a/studio/pages/project/[ref]/logs/api-usage.tsx +++ b/studio/pages/project/[ref]/reports/api-usage.tsx @@ -4,7 +4,7 @@ import { useRouter } from 'next/router' import { NextPageWithLayout } from 'types' import PresetReport from 'components/interfaces/Reports/PresetReport' import { Presets } from 'components/interfaces/Reports/Reports.types' -import { LogsLayout } from 'components/layouts' +import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout' export const ApiUsagePage: NextPageWithLayout = () => { const router = useRouter() @@ -13,6 +13,6 @@ export const ApiUsagePage: NextPageWithLayout = () => { return } -ApiUsagePage.getLayout = (page) => {page} +ApiUsagePage.getLayout = (page) => {page} export default observer(ApiUsagePage) diff --git a/studio/pages/project/[ref]/reports/database.tsx b/studio/pages/project/[ref]/reports/database.tsx new file mode 100644 index 00000000000..42da85a7c12 --- /dev/null +++ b/studio/pages/project/[ref]/reports/database.tsx @@ -0,0 +1,127 @@ +import dayjs from 'dayjs' +import useSWR from 'swr' +import * as Tooltip from '@radix-ui/react-tooltip' +import { FC, useState, useRef, useEffect } from 'react' +import { toJS } from 'mobx' +import { observer } from 'mobx-react-lite' +import { useRouter } from 'next/router' +import { debounce } from 'lodash' +import generator from 'generate-password' +import { Input, Button, IconDownload, IconArrowRight, Tabs, Modal } from 'ui' +import { PermissionAction } from '@supabase/shared-types/out/constants' + +import { NextPageWithLayout } from 'types' +import { checkPermissions, useFlag, useStore } from 'hooks' +import { get, patch } from 'lib/common/fetch' +import { pluckObjectFields, passwordStrength } from 'lib/helpers' +import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH, TIME_PERIODS_INFRA } from 'lib/constants' + +import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout' +import PasswordStrengthBar from 'components/ui/PasswordStrengthBar' +import Panel from 'components/ui/Panel' +import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' +import ChartHandler from 'components/to-be-cleaned/Charts/ChartHandler' +import ProjectUsageMinimal from 'components/interfaces/Settings/ProjectUsageBars/ProjectUsageMinimal' + +const ProjectSettings: NextPageWithLayout = () => { + const router = useRouter() + const { ref } = router.query + + const { ui } = useStore() + const project = ui.selectedProject + + return ( +
    +
    +
    + +
    +
    +
    + ) +} + +ProjectSettings.getLayout = (page) => {page} + +export default observer(ProjectSettings) + +const DatabaseUsage: FC = ({ project }) => { + const [dateRange, setDateRange] = useState(undefined) + const router = useRouter() + const ref = router.query.ref as string + + return ( + <> +
    +
    + + Database health + + } + > + +
    + + {dateRange && ( +
    +

    + {dayjs(dateRange.period_start.date).format('MMMM D, hh:mma')} +

    +

    + +

    +

    + {dayjs(dateRange.period_end.date).format('MMMM D, hh:mma')} +

    +
    + )} +
    +
    + {dateRange && ( + + )} + + {dateRange && ( + + )} + + {dateRange && ( + + )} +
    +
    +
    +
    +
    + + ) +} diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index dd89bf6e2ad..dd342a1af8b 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -19,23 +19,18 @@ import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH, TIME_PERIODS_INFRA } from ' import { SettingsLayout } from 'components/layouts' import PasswordStrengthBar from 'components/ui/PasswordStrengthBar' import Panel from 'components/ui/Panel' -import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' -import ChartHandler from 'components/to-be-cleaned/Charts/ChartHandler' import ConnectionPooling from 'components/interfaces/Database/Pooling/ConnectionPooling' -import ProjectUsageMinimal from 'components/interfaces/Settings/ProjectUsageBars/ProjectUsageMinimal' const ProjectSettings: NextPageWithLayout = () => { const router = useRouter() const { ref } = router.query const { ui } = useStore() - const project = ui.selectedProject return (
    -
    @@ -48,102 +43,6 @@ ProjectSettings.getLayout = (page) => {page} = ({ project }) => { - const [dateRange, setDateRange] = useState(undefined) - const router = useRouter() - const ref = router.query.ref as string - - return ( - <> -
    -
    - - Database health - - } - > - -
    - - {dateRange && ( -
    -

    - {dayjs(dateRange.period_start.date).format('MMMM D, hh:mma')} -

    -

    - -

    -

    - {dayjs(dateRange.period_end.date).format('MMMM D, hh:mma')} -

    -
    - )} -
    -
    - {dateRange && ( - - )} - - {dateRange && ( - - )} - - {dateRange && ( - - )} -
    -
    -
    -
    -
    -
    -
    - - Database usage - - } - > - - - - -
    -
    - - ) -} - const ResetDbPassword: FC = () => { const { ui } = useStore() const projectRef = ui.selectedProject?.ref From 2e47ebef8d65cb75a8bce4a94eca03cee94bb855 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 14:38:51 -0230 Subject: [PATCH 044/185] Move around auth config --- studio/components/interfaces/Auth/AutoSchemaForm.tsx | 7 ------- studio/components/layouts/AuthLayout/AuthLayout.utils.ts | 6 ++++++ studio/pages/project/[ref]/settings/database.tsx | 7 ++----- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/studio/components/interfaces/Auth/AutoSchemaForm.tsx b/studio/components/interfaces/Auth/AutoSchemaForm.tsx index eddcc1980ba..2e85e5ee3e9 100644 --- a/studio/components/interfaces/Auth/AutoSchemaForm.tsx +++ b/studio/components/interfaces/Auth/AutoSchemaForm.tsx @@ -126,13 +126,6 @@ const AutoSchemaForm = observer(() => { {/* Permitted redirects for anything on that domain */} {/* Check with @kangming about this */} - { url: `/project/${ref}/auth/templates`, items: [], }, + { + name: 'URL Configuration', + key: 'url-configuration', + url: `/project/${ref}/auth/url-configuration`, + items: [], + }, ], }, ] diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index dd342a1af8b..3a28f1b5826 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -1,4 +1,3 @@ -import dayjs from 'dayjs' import useSWR from 'swr' import * as Tooltip from '@radix-ui/react-tooltip' import { FC, useState, useRef, useEffect } from 'react' @@ -7,14 +6,14 @@ import { observer } from 'mobx-react-lite' import { useRouter } from 'next/router' import { debounce } from 'lodash' import generator from 'generate-password' -import { Input, Button, IconDownload, IconArrowRight, Tabs, Modal } from 'ui' +import { Input, Button, IconDownload, Tabs, Modal } from 'ui' import { PermissionAction } from '@supabase/shared-types/out/constants' import { NextPageWithLayout } from 'types' import { checkPermissions, useFlag, useStore } from 'hooks' import { get, patch } from 'lib/common/fetch' import { pluckObjectFields, passwordStrength } from 'lib/helpers' -import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH, TIME_PERIODS_INFRA } from 'lib/constants' +import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH } from 'lib/constants' import { SettingsLayout } from 'components/layouts' import PasswordStrengthBar from 'components/ui/PasswordStrengthBar' @@ -25,8 +24,6 @@ const ProjectSettings: NextPageWithLayout = () => { const router = useRouter() const { ref } = router.query - const { ui } = useStore() - return (
    From 5dbd11976c295d13520f865f5a654107064305fa Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 14:39:09 -0230 Subject: [PATCH 045/185] Add new auth files --- .../interfaces/Auth/SiteUrl/SiteUrl.tsx | 131 ++++++++++++++++++ .../project/[ref]/auth/url-configuration.tsx | 41 ++++++ 2 files changed, 172 insertions(+) create mode 100644 studio/components/interfaces/Auth/SiteUrl/SiteUrl.tsx create mode 100644 studio/pages/project/[ref]/auth/url-configuration.tsx diff --git a/studio/components/interfaces/Auth/SiteUrl/SiteUrl.tsx b/studio/components/interfaces/Auth/SiteUrl/SiteUrl.tsx new file mode 100644 index 00000000000..1ad738c80be --- /dev/null +++ b/studio/components/interfaces/Auth/SiteUrl/SiteUrl.tsx @@ -0,0 +1,131 @@ +import { PermissionAction } from '@supabase/shared-types/out/constants' +import { observer } from 'mobx-react-lite' +import { useEffect, useState } from 'react' +import { Form, Input } from 'ui' +import { boolean, number, object, string } from 'yup' + +import { + FormActions, + FormHeader, + FormPanel, + FormSection, + FormSectionContent, + FormSectionLabel, +} from 'components/ui/Forms' +import { checkPermissions, useStore } from 'hooks' + +const SiteUrl = observer(() => { + const { authConfig, ui } = useStore() + const { isLoaded } = authConfig + + const formId = 'auth-config-general-form' + const [hidden, setHidden] = useState(true) + + const canUpdateConfig = checkPermissions(PermissionAction.UPDATE, 'custom_config_gotrue') + + const INITIAL_VALUES = { + DISABLE_SIGNUP: !authConfig.config.DISABLE_SIGNUP, + JWT_EXP: authConfig.config.JWT_EXP, + SITE_URL: authConfig.config.SITE_URL, + REFRESH_TOKEN_ROTATION_ENABLED: authConfig.config.REFRESH_TOKEN_ROTATION_ENABLED || false, + SECURITY_REFRESH_TOKEN_REUSE_INTERVAL: authConfig.config.SECURITY_REFRESH_TOKEN_REUSE_INTERVAL, + SECURITY_CAPTCHA_ENABLED: authConfig.config.SECURITY_CAPTCHA_ENABLED || false, + SECURITY_CAPTCHA_SECRET: authConfig.config.SECURITY_CAPTCHA_SECRET || '', + } + + const schema = object({ + DISABLE_SIGNUP: boolean().required(), + SITE_URL: string().required('Must have a Site URL'), + JWT_EXP: number() + .max(604800, 'Must be less than 604800') + .required('Must have a JWT expiry value'), + REFRESH_TOKEN_ROTATION_ENABLED: boolean().required(), + SECURITY_REFRESH_TOKEN_REUSE_INTERVAL: number() + .min(0, 'Must be a value more than 0') + .required('Must have a Reuse Interval value'), + SECURITY_CAPTCHA_ENABLED: boolean().required(), + SECURITY_CAPTCHA_SECRET: string().when('SECURITY_CAPTCHA_ENABLED', { + is: true, + then: string().required('Must have a hCaptcha secret'), + }), + }) + + const onSubmit = async (values: any, { setSubmitting, resetForm }: any) => { + const payload = { ...values } + payload.DISABLE_SIGNUP = !values.DISABLE_SIGNUP + payload.SECURITY_CAPTCHA_PROVIDER = 'hcaptcha' + + setSubmitting(true) + const { error } = await authConfig.update(payload) + + if (!error) { + ui.setNotification({ + category: 'success', + message: `Successfully updated settings`, + }) + resetForm({ values: values, initialValues: values }) + } else { + ui.setNotification({ + category: 'error', + message: `Failed to update settings`, + }) + } + + setSubmitting(false) + } + + return ( +
    + {({ isSubmitting, handleReset, resetForm, values, initialValues }: any) => { + const hasChanges = JSON.stringify(values) !== JSON.stringify(initialValues) + + // Form is reset once remote data is loaded in store + useEffect(() => { + resetForm({ values: INITIAL_VALUES, initialValues: INITIAL_VALUES }) + }, [authConfig.isLoaded]) + + return ( + <> + + + +
    + } + > + + + + + + + + ) + }} + + ) +}) + +export default SiteUrl diff --git a/studio/pages/project/[ref]/auth/url-configuration.tsx b/studio/pages/project/[ref]/auth/url-configuration.tsx new file mode 100644 index 00000000000..fd7ced97616 --- /dev/null +++ b/studio/pages/project/[ref]/auth/url-configuration.tsx @@ -0,0 +1,41 @@ +import { useEffect } from 'react' +import { observer } from 'mobx-react-lite' +import { PermissionAction } from '@supabase/shared-types/out/constants' + +import { NextPageWithLayout } from 'types' +import { useStore, checkPermissions } from 'hooks' +import { AuthLayout } from 'components/layouts' + +import NoPermission from 'components/ui/NoPermission' +import RedirectDomains from 'components/interfaces/Auth/RedirectDomains/RedirectDomains' +import { FormsContainer } from 'components/ui/Forms' +import SiteUrl from 'components/interfaces/Auth/SiteUrl/SiteUrl' + +const URLConfiguration: NextPageWithLayout = () => { + const { ui, authConfig } = useStore() + + useEffect(() => { + authConfig.load() + }, [ui.selectedProjectRef]) + + const canReadAuthSettings = checkPermissions(PermissionAction.READ, 'custom_config_gotrue') + + if (!canReadAuthSettings) { + return + } else if (authConfig) { + return ( + + + + + ) + } else { + return
    + } +} + +URLConfiguration.getLayout = (page) => { + return {page} +} + +export default observer(URLConfiguration) From 098b41362997d87400245d67689f69901734c7da Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 15:12:37 -0230 Subject: [PATCH 046/185] Style formatting --- .../interfaces/Auth/AutoSchemaForm.tsx | 2 +- .../Database/Pooling/ConnectionPooling.tsx | 130 +++++++++--------- .../interfaces/Settings/API/ServiceList.tsx | 1 + .../layouts/AuthLayout/AuthLayout.utils.ts | 2 +- studio/pages/project/[ref]/settings/auth.tsx | 4 +- 5 files changed, 70 insertions(+), 69 deletions(-) diff --git a/studio/components/interfaces/Auth/AutoSchemaForm.tsx b/studio/components/interfaces/Auth/AutoSchemaForm.tsx index 2e85e5ee3e9..0e037598632 100644 --- a/studio/components/interfaces/Auth/AutoSchemaForm.tsx +++ b/studio/components/interfaces/Auth/AutoSchemaForm.tsx @@ -87,7 +87,7 @@ const AutoSchemaForm = observer(() => { return ( <> = observer( } return ( - setUpdates(model)} - onSubmit={(model: any) => updateConfig(model)} - onReset={() => setUpdates(bouncerInfo)} - > - ) } ) diff --git a/studio/components/interfaces/Settings/API/ServiceList.tsx b/studio/components/interfaces/Settings/API/ServiceList.tsx index b3630cc3791..f1dcce06dca 100644 --- a/studio/components/interfaces/Settings/API/ServiceList.tsx +++ b/studio/components/interfaces/Settings/API/ServiceList.tsx @@ -62,6 +62,7 @@ const ServiceList: FC = ({ projectRef }) => { return ( <>
    +

    API Settings

    Project URL}> diff --git a/studio/components/layouts/AuthLayout/AuthLayout.utils.ts b/studio/components/layouts/AuthLayout/AuthLayout.utils.ts index 39ea6b17c65..e357c6dcf69 100644 --- a/studio/components/layouts/AuthLayout/AuthLayout.utils.ts +++ b/studio/components/layouts/AuthLayout/AuthLayout.utils.ts @@ -4,7 +4,7 @@ import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' export const generateAuthMenu = (ref: string): ProductMenuGroup[] => { return [ { - title: 'Users', + title: 'Manage', items: [{ name: 'Users', key: 'users', url: `/project/${ref}/auth/users`, items: [] }], }, ...(IS_PLATFORM diff --git a/studio/pages/project/[ref]/settings/auth.tsx b/studio/pages/project/[ref]/settings/auth.tsx index 42ace03d6e5..89878a14aff 100644 --- a/studio/pages/project/[ref]/settings/auth.tsx +++ b/studio/pages/project/[ref]/settings/auth.tsx @@ -5,8 +5,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { NextPageWithLayout } from 'types' import { checkPermissions, useStore } from 'hooks' import AutoSchemaForm from 'components/interfaces/Auth/AutoSchemaForm' -import RedirectDomains from 'components/interfaces/Auth/RedirectDomains/RedirectDomains' -import { AuthLayout, SettingsLayout } from 'components/layouts' +import { SettingsLayout } from 'components/layouts' import { FormsContainer } from 'components/ui/Forms' import NoPermission from 'components/ui/NoPermission' @@ -25,7 +24,6 @@ const PageLayout: NextPageWithLayout = () => { return ( - ) } else { From 015e09f890f1a9cfbd3c05244d5a837fc819717d Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 15:12:57 -0230 Subject: [PATCH 047/185] Heading changes --- .../layouts/ReportsLayout/ReportsLayout.tsx | 23 +------------------ .../ReportsLayout/ReportsMenu.utils.ts | 8 +++---- .../layouts/StorageLayout/StorageMenu.tsx | 2 +- studio/pages/project/[ref]/reports/index.tsx | 6 ++--- .../pages/project/[ref]/settings/database.tsx | 9 ++++---- 5 files changed, 13 insertions(+), 35 deletions(-) diff --git a/studio/components/layouts/ReportsLayout/ReportsLayout.tsx b/studio/components/layouts/ReportsLayout/ReportsLayout.tsx index d2b090f6c2c..07888894ebe 100644 --- a/studio/components/layouts/ReportsLayout/ReportsLayout.tsx +++ b/studio/components/layouts/ReportsLayout/ReportsLayout.tsx @@ -17,28 +17,7 @@ const ReportsLayout: FC = ({ title, children }) => { const router = useRouter() const page = router.pathname.split('/')[4] || '' - const menuRoutes = [ - { - items: [ - { - name: 'Overview', - key: '', - url: `/project/${project}/reports`, - items: [], - }, - ], - }, - { - items: [ - { - name: 'Dashboard', - key: 'dashboard', - url: `/project/${project}/reports/dashboard`, - items: [], - }, - ], - }, - ] + return ( { const ref = project?.ref ?? 'default' - const productReports = useFlag('productReports') return [ { title: 'Reports', items: [ { - name: 'Custom reports?', + name: 'Custom reports', key: 'reports', url: `/project/${ref}/reports`, items: [], }, { - name: 'API?', + name: 'API', key: 'api-usage', url: `/project/${ref}/reports/api-usage`, items: [], }, { - name: 'Database?', + name: 'Database', key: 'database', url: `/project/${ref}/reports/database`, items: [], diff --git a/studio/components/layouts/StorageLayout/StorageMenu.tsx b/studio/components/layouts/StorageLayout/StorageMenu.tsx index f268f14869e..1d379d5fd22 100644 --- a/studio/components/layouts/StorageLayout/StorageMenu.tsx +++ b/studio/components/layouts/StorageLayout/StorageMenu.tsx @@ -95,7 +95,7 @@ const StorageMenu: FC = () => { )}
    - +
    diff --git a/studio/pages/project/[ref]/reports/index.tsx b/studio/pages/project/[ref]/reports/index.tsx index 3c8315fd8e4..ac2f6334460 100644 --- a/studio/pages/project/[ref]/reports/index.tsx +++ b/studio/pages/project/[ref]/reports/index.tsx @@ -9,9 +9,9 @@ import { post } from 'lib/common/fetch' import { API_URL, PROJECT_STATUS } from 'lib/constants' import { useProjectContentStore } from 'stores/projectContentStore' import Loading from 'components/ui/Loading' -import { ProjectLayoutWithAuth } from 'components/layouts' import ProductEmptyState from 'components/to-be-cleaned/ProductEmptyState' import { createReport } from 'components/to-be-cleaned/Reports/Reports.utils' +import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout' export const UserReportPage: NextPageWithLayout = () => { const [loading, setLoading] = useState(true) @@ -52,7 +52,7 @@ export const UserReportPage: NextPageWithLayout = () => { }, [ref]) return ( -
    +
    {loading ? ( ) : ( @@ -83,6 +83,6 @@ export const UserReportPage: NextPageWithLayout = () => { ) } -UserReportPage.getLayout = (page) => {page} +UserReportPage.getLayout = (page) => {page} export default observer(UserReportPage) diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index 3a28f1b5826..6c7ee82e098 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -278,8 +278,9 @@ const GeneralSettings: FC = ({ projectRef }) => { return ( <> -
    -
    +
    +
    +

    Database Settings

    @@ -342,8 +343,8 @@ const GeneralSettings: FC = ({ projectRef }) => {
    -
    -
    +
    +
    From b880227efce7b60c23c8d4caaa08a44d338d568f Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 16:21:15 -0230 Subject: [PATCH 048/185] Move smtp settings to auth settings --- .../interfaces/Reports/Reports.constants.ts | 10 ++-- .../layouts/LogsLayout/LogsMenu.utils.ts | 15 ------ studio/pages/project/[ref]/auth/templates.tsx | 3 +- studio/pages/project/[ref]/reports/[id].tsx | 2 +- .../pages/project/[ref]/reports/database.tsx | 48 +++++-------------- studio/pages/project/[ref]/settings/auth.tsx | 2 + .../tests/pages/projects/logs-query.test.js | 1 - 7 files changed, 22 insertions(+), 59 deletions(-) diff --git a/studio/components/interfaces/Reports/Reports.constants.ts b/studio/components/interfaces/Reports/Reports.constants.ts index 64e209f1a45..ac4492a7075 100644 --- a/studio/components/interfaces/Reports/Reports.constants.ts +++ b/studio/components/interfaces/Reports/Reports.constants.ts @@ -30,10 +30,10 @@ export const REPORTS_DATEPICKER_HELPERS: DatetimeHelper[] = [ export const PRESET_CONFIG = { [Presets.OVERVIEW]: { - title: 'API Usage', + title: '', sql: { statusCodes: ` - select + select timestamp_trunc(timestamp, hour) as timestamp, r.status_code as status_code, count(status_code) as count @@ -82,9 +82,9 @@ ORDER BY method, status_code ORDER BY - sum DESC, - count desc, - avg_origin_time DESC + sum DESC, + count desc, + avg_origin_time DESC LIMIT 50 `, }, diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index d67625440fa..4bf8454c05a 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -1,14 +1,10 @@ import { Project } from 'types' import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' -import { useFlag } from 'hooks' export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { const ref = project?.ref ?? 'default' - const productReports = useFlag('productReports') - return [ { - title: 'Logs', items: [ { name: 'Logs Explorer', @@ -47,17 +43,6 @@ export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { url: `/project/${ref}/logs/realtime-logs`, items: [], }, - - ...(productReports - ? [ - { - name: 'Usage (used to be "API usage") move to reports', - key: 'api-usage', - url: `/project/${ref}/logs/api-usage`, - items: [], - }, - ] - : []), ], }, ] diff --git a/studio/pages/project/[ref]/auth/templates.tsx b/studio/pages/project/[ref]/auth/templates.tsx index 56a21f3dee6..6d4db080b1d 100644 --- a/studio/pages/project/[ref]/auth/templates.tsx +++ b/studio/pages/project/[ref]/auth/templates.tsx @@ -5,7 +5,7 @@ import { PermissionAction } from '@supabase/shared-types/out/constants' import { NextPageWithLayout } from 'types' import { useStore, checkPermissions } from 'hooks' import { AuthLayout } from 'components/layouts' -import { EmailTemplates, SmtpForm } from 'components/interfaces' +import { EmailTemplates } from 'components/interfaces' import { FormsContainer } from 'components/ui/Forms' import NoPermission from 'components/ui/NoPermission' @@ -23,7 +23,6 @@ const PageLayout: NextPageWithLayout = () => { } else if (authConfig) { return ( - ) diff --git a/studio/pages/project/[ref]/reports/[id].tsx b/studio/pages/project/[ref]/reports/[id].tsx index 9afcfa08e0a..8687314216c 100644 --- a/studio/pages/project/[ref]/reports/[id].tsx +++ b/studio/pages/project/[ref]/reports/[id].tsx @@ -7,7 +7,7 @@ import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout' const PageLayout: NextPageWithLayout = () => ( <> -
    +
    diff --git a/studio/pages/project/[ref]/reports/database.tsx b/studio/pages/project/[ref]/reports/database.tsx index 42da85a7c12..426285d268d 100644 --- a/studio/pages/project/[ref]/reports/database.tsx +++ b/studio/pages/project/[ref]/reports/database.tsx @@ -1,39 +1,25 @@ import dayjs from 'dayjs' -import useSWR from 'swr' -import * as Tooltip from '@radix-ui/react-tooltip' -import { FC, useState, useRef, useEffect } from 'react' -import { toJS } from 'mobx' import { observer } from 'mobx-react-lite' -import { useRouter } from 'next/router' -import { debounce } from 'lodash' -import generator from 'generate-password' -import { Input, Button, IconDownload, IconArrowRight, Tabs, Modal } from 'ui' -import { PermissionAction } from '@supabase/shared-types/out/constants' +import { FC, useState } from 'react' +import { IconArrowRight } from 'ui' +import { useStore } from 'hooks' +import { TIME_PERIODS_INFRA } from 'lib/constants' import { NextPageWithLayout } from 'types' -import { checkPermissions, useFlag, useStore } from 'hooks' -import { get, patch } from 'lib/common/fetch' -import { pluckObjectFields, passwordStrength } from 'lib/helpers' -import { API_URL, DEFAULT_MINIMUM_PASSWORD_STRENGTH, TIME_PERIODS_INFRA } from 'lib/constants' import ReportsLayout from 'components/layouts/ReportsLayout/ReportsLayout' -import PasswordStrengthBar from 'components/ui/PasswordStrengthBar' -import Panel from 'components/ui/Panel' -import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' import ChartHandler from 'components/to-be-cleaned/Charts/ChartHandler' -import ProjectUsageMinimal from 'components/interfaces/Settings/ProjectUsageBars/ProjectUsageMinimal' - -const ProjectSettings: NextPageWithLayout = () => { - const router = useRouter() - const { ref } = router.query +import DateRangePicker from 'components/to-be-cleaned/DateRangePicker' +import Panel from 'components/ui/Panel' +const DatabaseReport: NextPageWithLayout = () => { const { ui } = useStore() const project = ui.selectedProject return ( -
    +
    -
    +
    @@ -41,26 +27,18 @@ const ProjectSettings: NextPageWithLayout = () => { ) } -ProjectSettings.getLayout = (page) => {page} +DatabaseReport.getLayout = (page) => {page} -export default observer(ProjectSettings) +export default observer(DatabaseReport) -const DatabaseUsage: FC = ({ project }) => { +const DatabaseUsage: FC = () => { const [dateRange, setDateRange] = useState(undefined) - const router = useRouter() - const ref = router.query.ref as string return ( <>
    - - Database health - - } - > +
    { const { ui, authConfig } = useStore() @@ -24,6 +25,7 @@ const PageLayout: NextPageWithLayout = () => { return ( + ) } else { diff --git a/studio/tests/pages/projects/logs-query.test.js b/studio/tests/pages/projects/logs-query.test.js index 4d0a286664d..3ae3b637d34 100644 --- a/studio/tests/pages/projects/logs-query.test.js +++ b/studio/tests/pages/projects/logs-query.test.js @@ -8,7 +8,6 @@ import { logDataFixture } from '../../fixtures' import { clickDropdown } from 'tests/helpers' import dayjs from 'dayjs' import { useProjectSubscription } from 'hooks' -import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt' const defaultRouterMock = () => { const router = jest.fn() From ec1e9fd960e1bdc6ea966800f4c56bf21f25e5e3 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 16:39:15 -0230 Subject: [PATCH 049/185] Nudge form containers in settings panel --- .../Database/Pooling/ConnectionPooling.tsx | 2 +- .../DatabaseLayout/DatabaseMenu.utils.ts | 22 +++++++++++-------- .../NavigationBar/NavigationBar.utils.tsx | 6 ++++- studio/pages/project/[ref]/settings/api.tsx | 4 ++-- studio/pages/project/[ref]/settings/auth.tsx | 4 ++-- .../pages/project/[ref]/settings/database.tsx | 12 +++++----- .../pages/project/[ref]/settings/general.tsx | 4 ++-- 7 files changed, 30 insertions(+), 24 deletions(-) diff --git a/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx b/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx index 4780ba57714..5ce932a2488 100644 --- a/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx +++ b/studio/components/interfaces/Database/Pooling/ConnectionPooling.tsx @@ -162,7 +162,7 @@ export const PgbouncerConfig: FC = observer( } return ( -
    +
    { key: 'triggers', url: `/project/${ref}/database/triggers`, items: [], - isPreview: true, + isPreview: false, }, { name: 'Functions', key: 'functions', url: `/project/${ref}/database/functions`, items: [], - isPreview: true, + isPreview: false, }, { name: 'Extensions', @@ -42,13 +42,17 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { url: `/project/${ref}/database/replication`, items: [], }, - { - name: 'Webhooks', - key: 'hooks', - url: `/project/${ref}/database/hooks`, - items: [], - isPreview: true, - }, + ...(showHooksRoute + ? [ + { + name: 'Webhooks', + key: 'hooks', + url: `/project/${ref}/database/hooks`, + items: [], + isPreview: true, + }, + ] + : []), { name: 'Backups', key: 'backups', diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx index bda1690a721..1370a36bce1 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx @@ -66,7 +66,11 @@ export const generateProductRoutes = (ref?: string, project?: ProjectBase): Rout icon: , link: ref && - (isProjectPaused ? homeUrl : isProjectBuilding ? buildingUrl : `/project/${ref}/editor`), + (isProjectPaused + ? homeUrl + : isProjectBuilding + ? buildingUrl + : `/project/${ref}/database/tables`), }, { key: 'auth', diff --git a/studio/pages/project/[ref]/settings/api.tsx b/studio/pages/project/[ref]/settings/api.tsx index 37e3947aee2..15224b86f1e 100644 --- a/studio/pages/project/[ref]/settings/api.tsx +++ b/studio/pages/project/[ref]/settings/api.tsx @@ -38,9 +38,9 @@ const ApiSettings: NextPageWithLayout = () => { return ( - +
    - +
    ) } diff --git a/studio/pages/project/[ref]/settings/auth.tsx b/studio/pages/project/[ref]/settings/auth.tsx index 87f50db0883..4ac0f372b80 100644 --- a/studio/pages/project/[ref]/settings/auth.tsx +++ b/studio/pages/project/[ref]/settings/auth.tsx @@ -23,10 +23,10 @@ const PageLayout: NextPageWithLayout = () => { return } else if (authConfig) { return ( - +
    - +
    ) } else { return
    diff --git a/studio/pages/project/[ref]/settings/database.tsx b/studio/pages/project/[ref]/settings/database.tsx index 6c7ee82e098..147150b7a20 100644 --- a/studio/pages/project/[ref]/settings/database.tsx +++ b/studio/pages/project/[ref]/settings/database.tsx @@ -25,12 +25,10 @@ const ProjectSettings: NextPageWithLayout = () => { const { ref } = router.query return ( -
    +
    -
    - - -
    + +
    ) @@ -278,7 +276,7 @@ const GeneralSettings: FC = ({ projectRef }) => { return ( <> -
    +

    Database Settings

    = ({ projectRef }) => {
    -
    +
    { return ( - +
    - +
    ) } From 6a99c386a0809c766a4344622e81e34a419f66eb Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 16:56:53 -0230 Subject: [PATCH 050/185] Fix reports active menu item --- studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts b/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts index ba6849adcb9..4e078ee8c89 100644 --- a/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts +++ b/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts @@ -10,7 +10,7 @@ export const generateReportsMenu = (project?: Project): ProductMenuGroup[] => { items: [ { name: 'Custom reports', - key: 'reports', + key: '', url: `/project/${ref}/reports`, items: [], }, From 0ad6cf749d40df35a05aef119d437b87fcbb7693 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Wed, 26 Oct 2022 17:09:44 -0230 Subject: [PATCH 051/185] Wrap items in is_platform --- .../layouts/LogsLayout/LogsMenu.utils.ts | 85 ++++++++++--------- .../ReportsLayout/ReportsMenu.utils.ts | 18 ++-- .../SettingsLayout/SettingsMenu.utils.ts | 52 +++++++----- .../pages/project/[ref]/settings/general.tsx | 3 +- 4 files changed, 87 insertions(+), 71 deletions(-) diff --git a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts index 4bf8454c05a..300c227774f 100644 --- a/studio/components/layouts/LogsLayout/LogsMenu.utils.ts +++ b/studio/components/layouts/LogsLayout/LogsMenu.utils.ts @@ -1,49 +1,54 @@ import { Project } from 'types' import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' +import { IS_PLATFORM } from 'lib/constants' export const generateLogsMenu = (project?: Project): ProductMenuGroup[] => { const ref = project?.ref ?? 'default' return [ - { - items: [ - { - name: 'Logs Explorer', - key: 'explorer', - url: `/project/${ref}/logs/explorer`, - items: [], - }, - { - name: 'Postgres', - key: 'postgres-logs', - url: `/project/${ref}/logs/postgres-logs`, - items: [], - }, - { - name: 'PostgREST', - key: 'postgrest-logs', - url: `/project/${ref}/logs/postgrest-logs`, - items: [], - }, - { - name: 'Auth', - key: 'auth-logs', - url: `/project/${ref}/logs/auth-logs`, - items: [], - }, - { - name: 'Storage', - key: 'storage-logs', - url: `/project/${ref}/logs/storage-logs`, - items: [], - }, + ...(IS_PLATFORM + ? [ + { + items: [ + { + name: 'Logs Explorer', + key: 'explorer', + url: `/project/${ref}/logs/explorer`, + items: [], + }, + { + name: 'Postgres', + key: 'postgres-logs', + url: `/project/${ref}/logs/postgres-logs`, + items: [], + }, + { + name: 'PostgREST', + key: 'postgrest-logs', + url: `/project/${ref}/logs/postgrest-logs`, + items: [], + }, + { + name: 'Auth', + key: 'auth-logs', + url: `/project/${ref}/logs/auth-logs`, + items: [], + }, + { + name: 'Storage', + key: 'storage-logs', + url: `/project/${ref}/logs/storage-logs`, + items: [], + }, - { - name: 'Realtime', - key: 'realtime-logs', - url: `/project/${ref}/logs/realtime-logs`, - items: [], - }, - ], - }, + { + name: 'Realtime', + key: 'realtime-logs', + url: `/project/${ref}/logs/realtime-logs`, + items: [], + }, + ], + }, + ] + : []), ] } diff --git a/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts b/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts index 4e078ee8c89..28c14e91e92 100644 --- a/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts +++ b/studio/components/layouts/ReportsLayout/ReportsMenu.utils.ts @@ -1,8 +1,10 @@ import { Project } from 'types' import { ProductMenuGroup } from 'components/ui/ProductMenu/ProductMenu.types' +import { useFlag } from 'hooks' export const generateReportsMenu = (project?: Project): ProductMenuGroup[] => { const ref = project?.ref ?? 'default' + const productReports = useFlag('productReports') return [ { @@ -14,12 +16,16 @@ export const generateReportsMenu = (project?: Project): ProductMenuGroup[] => { url: `/project/${ref}/reports`, items: [], }, - { - name: 'API', - key: 'api-usage', - url: `/project/${ref}/reports/api-usage`, - items: [], - }, + ...(productReports + ? [ + { + name: 'API usage', + key: 'api-usage', + url: `/project/${ref}/reports/api-usage`, + items: [], + }, + ] + : []), { name: 'Database', key: 'database', diff --git a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts index c9b26d031e7..72aace81800 100644 --- a/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts +++ b/studio/components/layouts/SettingsLayout/SettingsMenu.utils.ts @@ -60,28 +60,34 @@ export const generateSettingsMenu = (ref: string, project?: ProjectBase): Produc : []), ], }, - { - title: 'Billing', - items: [ - { - name: 'Subscription', - key: 'subscription', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/subscription`, - items: [], - }, - { - name: 'Usage', - key: 'usage', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/usage`, - items: [], - }, - { - name: 'Invoices', - key: 'invoices', - url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/invoices`, - items: [], - }, - ], - }, + ...(IS_PLATFORM + ? [ + { + title: 'Billing', + items: [ + { + name: 'Subscription', + key: 'subscription', + url: isProjectBuilding + ? buildingUrl + : `/project/${ref}/settings/billing/subscription`, + items: [], + }, + { + name: 'Usage', + key: 'usage', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/usage`, + items: [], + }, + { + name: 'Invoices', + key: 'invoices', + url: isProjectBuilding ? buildingUrl : `/project/${ref}/settings/billing/invoices`, + items: [], + }, + ], + }, + ] + : []), ] } diff --git a/studio/pages/project/[ref]/settings/general.tsx b/studio/pages/project/[ref]/settings/general.tsx index ab210d6762c..63f43cd3ca1 100644 --- a/studio/pages/project/[ref]/settings/general.tsx +++ b/studio/pages/project/[ref]/settings/general.tsx @@ -1,12 +1,11 @@ import { observer } from 'mobx-react-lite' import { NextPageWithLayout } from 'types' import { SettingsLayout } from 'components/layouts' -import { FormsContainer } from 'components/ui/Forms' import { General, Infrastructure, DeleteProjectPanel } from 'components/interfaces/Settings/General' const ProjectSettings: NextPageWithLayout = () => { return ( -
    +
    From fe917faf4650feeb9b7b4ece748209263b5bcdce Mon Sep 17 00:00:00 2001 From: Andrew Smith Date: Wed, 26 Oct 2022 21:45:37 +0000 Subject: [PATCH 052/185] Update examples with latest supabase-js Update schema file to work with latest supabase-js --- .../nextjs-slack-clone/package-lock.json | 120 +++++++-------- .../nextjs-slack-clone/package.json | 2 +- .../sveltejs-todo-list/package-lock.json | 118 +++++++------- .../todo-list/sveltejs-todo-list/package.json | 2 +- .../sveltejs-todo-list/src/App.svelte | 4 +- .../sveltejs-todo-list/src/assets/app.css | 12 +- .../sveltejs-todo-list/src/lib/schema.ts | 61 ++++---- .../sveltejs-todo-list/src/schema.ts | 0 .../angular-user-management/package-lock.json | 62 ++++---- .../angular-user-management/package.json | 2 +- .../angular-user-management/src/schema.ts | 64 ++++---- .../expo-user-management/package-lock.json | 110 ++++++------- .../expo-user-management/package.json | 2 +- .../package-lock.json | 145 +++++++++--------- .../nextjs-ts-user-management/package.json | 6 +- .../nuxtjs-user-management/package-lock.json | 94 ++++++------ .../nuxtjs-user-management/package.json | 2 +- .../react-user-management/package-lock.json | 94 ++++++------ .../react-user-management/package.json | 2 +- .../solid-user-management/package-lock.json | 118 +++++++------- .../solid-user-management/package.json | 2 +- .../solid-user-management/src/schema.ts | 10 +- .../svelte-user-management/package-lock.json | 134 ++++++++-------- .../svelte-user-management/package.json | 2 +- .../svelte-user-management/src/schema.ts | 10 +- .../package-lock.json | 74 ++++----- .../sveltekit-user-management/package.json | 4 +- .../sveltekit-user-management/src/schema.ts | 10 +- .../vue3-user-management/package-lock.json | 38 ++--- .../vue3-user-management/package.json | 2 +- 30 files changed, 674 insertions(+), 632 deletions(-) delete mode 100644 examples/todo-list/sveltejs-todo-list/src/schema.ts diff --git a/examples/slack-clone/nextjs-slack-clone/package-lock.json b/examples/slack-clone/nextjs-slack-clone/package-lock.json index 029aeb791b2..2670abf6381 100644 --- a/examples/slack-clone/nextjs-slack-clone/package-lock.json +++ b/examples/slack-clone/nextjs-slack-clone/package-lock.json @@ -9,8 +9,8 @@ "version": "0.2.0", "license": "MIT", "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9", - "next": "*", + "@supabase/supabase-js": "^2.0.4", + "next": "latest", "react": "^18.0.0", "react-dom": "^18.0.0", "sass": "^1.26.2", @@ -296,56 +296,56 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -513,9 +513,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -1744,9 +1744,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -1966,56 +1966,56 @@ "optional": true }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -2131,9 +2131,9 @@ } }, "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "requires": { "node-gyp-build": "^4.3.0" } @@ -3055,9 +3055,9 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "requires": { "node-gyp-build": "^4.3.0" } diff --git a/examples/slack-clone/nextjs-slack-clone/package.json b/examples/slack-clone/nextjs-slack-clone/package.json index 7250a1c3e46..65ab3eb6fed 100644 --- a/examples/slack-clone/nextjs-slack-clone/package.json +++ b/examples/slack-clone/nextjs-slack-clone/package.json @@ -9,7 +9,7 @@ "start": "next start" }, "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "next": "latest", "react": "^18.0.0", "react-dom": "^18.0.0", diff --git a/examples/todo-list/sveltejs-todo-list/package-lock.json b/examples/todo-list/sveltejs-todo-list/package-lock.json index 90dee03f68a..8130f4a0c4e 100644 --- a/examples/todo-list/sveltejs-todo-list/package-lock.json +++ b/examples/todo-list/sveltejs-todo-list/package-lock.json @@ -8,7 +8,7 @@ "name": "sveltejs-todo-list", "version": "2.0.0", "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9" + "@supabase/supabase-js": "^2.0.4" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.1", @@ -114,56 +114,56 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -348,9 +348,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -2163,9 +2163,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -2417,56 +2417,56 @@ } }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -2608,9 +2608,9 @@ "dev": true }, "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "requires": { "node-gyp-build": "^4.3.0" } @@ -3794,9 +3794,9 @@ "dev": true }, "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "requires": { "node-gyp-build": "^4.3.0" } diff --git a/examples/todo-list/sveltejs-todo-list/package.json b/examples/todo-list/sveltejs-todo-list/package.json index 468bb718162..bd62d122e37 100644 --- a/examples/todo-list/sveltejs-todo-list/package.json +++ b/examples/todo-list/sveltejs-todo-list/package.json @@ -25,6 +25,6 @@ "vite": "^3.0.0" }, "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9" + "@supabase/supabase-js": "^2.0.4" } } diff --git a/examples/todo-list/sveltejs-todo-list/src/App.svelte b/examples/todo-list/sveltejs-todo-list/src/App.svelte index 4dcc94bea0e..a50f2020373 100644 --- a/examples/todo-list/sveltejs-todo-list/src/App.svelte +++ b/examples/todo-list/sveltejs-todo-list/src/App.svelte @@ -12,8 +12,8 @@ user = session?.user ?? null; }); - const { subscription: authListener } = supabase.auth.onAuthStateChange( - (event, session) => { + const { data: { subscription: authListener } } = supabase.auth.onAuthStateChange( + (_, session) => { const currentUser = session?.user; user = currentUser ?? null; } diff --git a/examples/todo-list/sveltejs-todo-list/src/assets/app.css b/examples/todo-list/sveltejs-todo-list/src/assets/app.css index cfb98d7817e..e20cf35c6f2 100644 --- a/examples/todo-list/sveltejs-todo-list/src/assets/app.css +++ b/examples/todo-list/sveltejs-todo-list/src/assets/app.css @@ -922,9 +922,9 @@ video { } .transition { - transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } @@ -961,9 +961,9 @@ video { background-color: rgb(255 255 255 / var(--tw-bg-opacity)); --tw-text-opacity: 1; color: rgb(0 0 0 / var(--tw-text-opacity)); - transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } @@ -988,9 +988,9 @@ video { background-color: rgb(0 0 0 / var(--tw-bg-opacity)); --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); - transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } diff --git a/examples/todo-list/sveltejs-todo-list/src/lib/schema.ts b/examples/todo-list/sveltejs-todo-list/src/lib/schema.ts index e01829eedbd..4090c7f04ce 100644 --- a/examples/todo-list/sveltejs-todo-list/src/lib/schema.ts +++ b/examples/todo-list/sveltejs-todo-list/src/lib/schema.ts @@ -1,39 +1,40 @@ -export type Json = - | string - | number - | boolean - | null - | { [key: string]: Json } - | Json[]; +export type Json = string | number | boolean | null | { [key: string]: Json } | Json[] export interface Database { public: { Tables: { todos: { Row: { - id: number; - user_id: string; - task: string | null; - is_complete: boolean | null; - inserted_at: string; - }; + id: number + user_id: string + task: string | null + is_complete: boolean | null + inserted_at: string + } Insert: { - id?: number; - user_id: string; - task?: string | null; - is_complete?: boolean | null; - inserted_at?: string; - }; + id?: number + user_id: string + task?: string | null + is_complete?: boolean | null + inserted_at?: string + } Update: { - id?: number; - user_id?: string; - task?: string | null; - is_complete?: boolean | null; - inserted_at?: string; - }; - }; - }; - Functions: {}; - }; + id?: number + user_id?: string + task?: string | null + is_complete?: boolean | null + inserted_at?: string + } + } + } + Views: { + [_ in never]: never + } + Functions: { + [_ in never]: never + } + Enums: { + [_ in never]: never + } + } } - diff --git a/examples/todo-list/sveltejs-todo-list/src/schema.ts b/examples/todo-list/sveltejs-todo-list/src/schema.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/examples/user-management/angular-user-management/package-lock.json b/examples/user-management/angular-user-management/package-lock.json index a7470fd31f2..f7f475dbde1 100644 --- a/examples/user-management/angular-user-management/package-lock.json +++ b/examples/user-management/angular-user-management/package-lock.json @@ -16,7 +16,7 @@ "@angular/platform-browser": "^14.2.0", "@angular/platform-browser-dynamic": "^14.2.0", "@angular/router": "^14.2.0", - "@supabase/supabase-js": "^2.0.0", + "@supabase/supabase-js": "^2.0.4", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" @@ -2850,25 +2850,25 @@ } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0.tgz", - "integrity": "sha512-MRR4g8dThgSnlnjkL2Jvc6gS73W68hLq48/Q245CLvUPt3KtOh3WXpvo4rZDEDHYVkyVga+L9IQixo6YTsjMQg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0.tgz", - "integrity": "sha512-DJVt5Z76pik3Fxt1es4fmquq6GrwR3nLqcb2Q6VpHXSudtixML0Cyxsu0DPzxa6ruSQrO9s08s0OQgwaIA1C0Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" @@ -2883,14 +2883,14 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } @@ -14001,25 +14001,25 @@ } }, "@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0.tgz", - "integrity": "sha512-MRR4g8dThgSnlnjkL2Jvc6gS73W68hLq48/Q245CLvUPt3KtOh3WXpvo4rZDEDHYVkyVga+L9IQixo6YTsjMQg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0.tgz", - "integrity": "sha512-DJVt5Z76pik3Fxt1es4fmquq6GrwR3nLqcb2Q6VpHXSudtixML0Cyxsu0DPzxa6ruSQrO9s08s0OQgwaIA1C0Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" @@ -14034,14 +14034,14 @@ } }, "@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } diff --git a/examples/user-management/angular-user-management/package.json b/examples/user-management/angular-user-management/package.json index 7eb208e5b08..734206c496a 100644 --- a/examples/user-management/angular-user-management/package.json +++ b/examples/user-management/angular-user-management/package.json @@ -18,7 +18,7 @@ "@angular/platform-browser": "^14.2.0", "@angular/platform-browser-dynamic": "^14.2.0", "@angular/router": "^14.2.0", - "@supabase/supabase-js": "^2.0.0", + "@supabase/supabase-js": "^2.0.4", "rxjs": "~7.5.0", "tslib": "^2.3.0", "zone.js": "~0.11.4" diff --git a/examples/user-management/angular-user-management/src/schema.ts b/examples/user-management/angular-user-management/src/schema.ts index 8ddee25be6b..4593c033977 100644 --- a/examples/user-management/angular-user-management/src/schema.ts +++ b/examples/user-management/angular-user-management/src/schema.ts @@ -1,32 +1,40 @@ export type Json = string | number | boolean | null | { [key: string]: Json } | Json[] export interface Database { - public: { - Tables: { - profiles: { - Row: { - id: string - updated_at: string | null - username: string | null - avatar_url: string | null - website: string | null - } - Insert: { - id: string - updated_at?: string | null - username?: string | null - avatar_url?: string | null - website?: string | null - } - Update: { - id?: string - updated_at?: string | null - username?: string | null - avatar_url?: string | null - website?: string | null - } - } - } - Functions: {} - } + public: { + Tables: { + profiles: { + Row: { + id: string + updated_at: string | null + username: string | null + avatar_url: string | null + website: string | null + } + Insert: { + id: string + updated_at?: string | null + username?: string | null + avatar_url?: string | null + website?: string | null + } + Update: { + id?: string + updated_at?: string | null + username?: string | null + avatar_url?: string | null + website?: string | null + } + } + } + Views: { + [_ in never]: never + } + Functions: { + [_ in never]: never + } + Enums: { + [_ in never]: never + } + } } diff --git a/examples/user-management/expo-user-management/package-lock.json b/examples/user-management/expo-user-management/package-lock.json index 7611e0df8e2..cf092799d1f 100644 --- a/examples/user-management/expo-user-management/package-lock.json +++ b/examples/user-management/expo-user-management/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@expo/webpack-config": "^0.17.0", "@react-native-async-storage/async-storage": "^1.17.9", - "@supabase/supabase-js": "^2.0.0-rc.1", + "@supabase/supabase-js": "^2.0.4", "expo": "~46.0.9", "expo-splash-screen": "~0.16.2", "expo-status-bar": "~1.4.0", @@ -4633,56 +4633,56 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.1.tgz", - "integrity": "sha512-mzDVMEqWOSZ45XnwSftpNQjHWBtMcg4uLOfJ3rvHvD0M3y8oKnPHC69zv1JQ2vHhQhsarhIgD44mCNG4adorfQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.1.tgz", - "integrity": "sha512-J8uiunIYaIcrlceuGkDXBusrQi0USyZm+R4E/EqmYabwygkzDpZtruVgnK43oABBmVXtmESOeLly89PTSY3kIw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.1.tgz", - "integrity": "sha512-WQtBZluEO0nzP7aw4WpiQkBWFxk1f6uPm07Hq2b1hmJ/xw3sHInxZSQY6EZw9IBx6h5s1EuA+XlGiIE0NYGmOQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.1.tgz", - "integrity": "sha512-3wFXNPp1ZrpZjs4hqCqjHhhrvqBoMnVptpHmIysLhlLOOC62pfQa0SuuWE/z1ZCqIYsOORcWEj/cQLj80c2XRw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.1", - "@supabase/postgrest-js": "^1.0.0-rc.1", - "@supabase/realtime-js": "^2.0.0-rc.1", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -9092,11 +9092,11 @@ } }, "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dependencies": { - "type": "^2.5.0" + "type": "^2.7.2" } }, "node_modules/ext/node_modules/type": { @@ -23554,56 +23554,56 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.1.tgz", - "integrity": "sha512-mzDVMEqWOSZ45XnwSftpNQjHWBtMcg4uLOfJ3rvHvD0M3y8oKnPHC69zv1JQ2vHhQhsarhIgD44mCNG4adorfQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.1.tgz", - "integrity": "sha512-J8uiunIYaIcrlceuGkDXBusrQi0USyZm+R4E/EqmYabwygkzDpZtruVgnK43oABBmVXtmESOeLly89PTSY3kIw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.1.tgz", - "integrity": "sha512-WQtBZluEO0nzP7aw4WpiQkBWFxk1f6uPm07Hq2b1hmJ/xw3sHInxZSQY6EZw9IBx6h5s1EuA+XlGiIE0NYGmOQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.1.tgz", - "integrity": "sha512-3wFXNPp1ZrpZjs4hqCqjHhhrvqBoMnVptpHmIysLhlLOOC62pfQa0SuuWE/z1ZCqIYsOORcWEj/cQLj80c2XRw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.1", - "@supabase/postgrest-js": "^1.0.0-rc.1", - "@supabase/realtime-js": "^2.0.0-rc.1", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -27129,11 +27129,11 @@ } }, "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "requires": { - "type": "^2.5.0" + "type": "^2.7.2" }, "dependencies": { "type": { diff --git a/examples/user-management/expo-user-management/package.json b/examples/user-management/expo-user-management/package.json index 05cd66a8e50..36baca0e84d 100644 --- a/examples/user-management/expo-user-management/package.json +++ b/examples/user-management/expo-user-management/package.json @@ -11,7 +11,7 @@ "dependencies": { "@expo/webpack-config": "^0.17.0", "@react-native-async-storage/async-storage": "^1.17.9", - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "expo": "~46.0.9", "expo-splash-screen": "~0.16.2", "expo-status-bar": "~1.4.0", diff --git a/examples/user-management/nextjs-ts-user-management/package-lock.json b/examples/user-management/nextjs-ts-user-management/package-lock.json index 5a0c96ae620..e56a717918b 100644 --- a/examples/user-management/nextjs-ts-user-management/package-lock.json +++ b/examples/user-management/nextjs-ts-user-management/package-lock.json @@ -8,10 +8,10 @@ "name": "nextjs-ts-user-management", "version": "0.1.0", "dependencies": { - "@supabase/auth-helpers-nextjs": "^0.4.1", - "@supabase/auth-helpers-react": "^0.3.0", + "@supabase/auth-helpers-nextjs": "^0.4.2", + "@supabase/auth-helpers-react": "^0.3.1", "@supabase/auth-ui-react": "^0.2.2", - "@supabase/supabase-js": "^2.0.0", + "@supabase/supabase-js": "^2.0.4", "next": "12.3.1", "react": "18.2.0", "react-dom": "18.2.0" @@ -416,25 +416,31 @@ } }, "node_modules/@supabase/auth-helpers-nextjs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.4.1.tgz", - "integrity": "sha512-qrtMYlLoxm/Xf2U1l+OeDlckEzQHbRusIRcj5JKOj+gV/r62/VkDpB92cgjt3bbVtPDka5szXF4tBku6ZZkMeQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.4.2.tgz", + "integrity": "sha512-66CVKuUem4HwD/Te0a0569+j/jE7M52c0fW5bBSsPIqD9u1m+h/cnVuQxw+Ij7gphh36tKkRfOc8Ivn42+k6bQ==", "dependencies": { - "@supabase/auth-helpers-shared": "0.2.0" + "@supabase/auth-helpers-shared": "0.2.1" + }, + "peerDependencies": { + "@supabase/supabase-js": "^2.0.4" } }, "node_modules/@supabase/auth-helpers-react": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.0.tgz", - "integrity": "sha512-yCJPUdtElPxmlk6FXZJdMWLnCuYU1qD7pzHxVjF+vO+NwddZ00qKTi53UJu83+H3QeDgZZrNR1ueCi/sLY+kYw==", - "dependencies": { - "@supabase/auth-helpers-shared": "0.2.0" + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz", + "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==", + "peerDependencies": { + "@supabase/supabase-js": "^2.0.4" } }, "node_modules/@supabase/auth-helpers-shared": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.0.tgz", - "integrity": "sha512-GaWzuP3RjLSdSlFajbgwQkZO24A14DSEIJG5sUva/sUYWkriEWROjf8Vbwg4YsSxqeU6fP3lloFeync9BwgyYA==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.1.tgz", + "integrity": "sha512-L54gCCD8xCV6mHta0vE7CLxJ7pisSlsd9KIWB1ENyfZ0baeU9H39AqNVyYcAoHBPrUaZYx877J4WYYoqwuyi+w==", + "peerDependencies": { + "@supabase/supabase-js": "^2.0.4" + } }, "node_modules/@supabase/auth-ui-react": { "version": "0.2.2", @@ -463,25 +469,25 @@ } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0.tgz", - "integrity": "sha512-MRR4g8dThgSnlnjkL2Jvc6gS73W68hLq48/Q245CLvUPt3KtOh3WXpvo4rZDEDHYVkyVga+L9IQixo6YTsjMQg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0.tgz", - "integrity": "sha512-DJVt5Z76pik3Fxt1es4fmquq6GrwR3nLqcb2Q6VpHXSudtixML0Cyxsu0DPzxa6ruSQrO9s08s0OQgwaIA1C0Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" @@ -496,14 +502,14 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } @@ -906,9 +912,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -3406,9 +3412,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -3750,25 +3756,24 @@ "requires": {} }, "@supabase/auth-helpers-nextjs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.4.1.tgz", - "integrity": "sha512-qrtMYlLoxm/Xf2U1l+OeDlckEzQHbRusIRcj5JKOj+gV/r62/VkDpB92cgjt3bbVtPDka5szXF4tBku6ZZkMeQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-nextjs/-/auth-helpers-nextjs-0.4.2.tgz", + "integrity": "sha512-66CVKuUem4HwD/Te0a0569+j/jE7M52c0fW5bBSsPIqD9u1m+h/cnVuQxw+Ij7gphh36tKkRfOc8Ivn42+k6bQ==", "requires": { - "@supabase/auth-helpers-shared": "0.2.0" + "@supabase/auth-helpers-shared": "0.2.1" } }, "@supabase/auth-helpers-react": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.0.tgz", - "integrity": "sha512-yCJPUdtElPxmlk6FXZJdMWLnCuYU1qD7pzHxVjF+vO+NwddZ00qKTi53UJu83+H3QeDgZZrNR1ueCi/sLY+kYw==", - "requires": { - "@supabase/auth-helpers-shared": "0.2.0" - } + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-react/-/auth-helpers-react-0.3.1.tgz", + "integrity": "sha512-g3SFv08Dz9FapNif/ZY1b7qKGlMJDyTLSayHBz3kb3FuYxg7aLWgQtydDhm5AGbc0XtvpIBuhGTIOVevwpdosA==", + "requires": {} }, "@supabase/auth-helpers-shared": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.0.tgz", - "integrity": "sha512-GaWzuP3RjLSdSlFajbgwQkZO24A14DSEIJG5sUva/sUYWkriEWROjf8Vbwg4YsSxqeU6fP3lloFeync9BwgyYA==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.1.tgz", + "integrity": "sha512-L54gCCD8xCV6mHta0vE7CLxJ7pisSlsd9KIWB1ENyfZ0baeU9H39AqNVyYcAoHBPrUaZYx877J4WYYoqwuyi+w==", + "requires": {} }, "@supabase/auth-ui-react": { "version": "0.2.2", @@ -3791,25 +3796,25 @@ } }, "@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0.tgz", - "integrity": "sha512-MRR4g8dThgSnlnjkL2Jvc6gS73W68hLq48/Q245CLvUPt3KtOh3WXpvo4rZDEDHYVkyVga+L9IQixo6YTsjMQg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0.tgz", - "integrity": "sha512-DJVt5Z76pik3Fxt1es4fmquq6GrwR3nLqcb2Q6VpHXSudtixML0Cyxsu0DPzxa6ruSQrO9s08s0OQgwaIA1C0Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" @@ -3824,14 +3829,14 @@ } }, "@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } @@ -4123,9 +4128,9 @@ } }, "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "requires": { "node-gyp-build": "^4.3.0" } @@ -5933,9 +5938,9 @@ "requires": {} }, "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "requires": { "node-gyp-build": "^4.3.0" } diff --git a/examples/user-management/nextjs-ts-user-management/package.json b/examples/user-management/nextjs-ts-user-management/package.json index 3c9ef5763ef..b9d16a158cf 100644 --- a/examples/user-management/nextjs-ts-user-management/package.json +++ b/examples/user-management/nextjs-ts-user-management/package.json @@ -8,10 +8,10 @@ "start": "next start" }, "dependencies": { - "@supabase/auth-helpers-nextjs": "^0.4.1", - "@supabase/auth-helpers-react": "^0.3.0", + "@supabase/auth-helpers-nextjs": "^0.4.2", + "@supabase/auth-helpers-react": "^0.3.1", "@supabase/auth-ui-react": "^0.2.2", - "@supabase/supabase-js": "^2.0.0", + "@supabase/supabase-js": "^2.0.4", "next": "12.3.1", "react": "18.2.0", "react-dom": "18.2.0" diff --git a/examples/user-management/nuxtjs-user-management/package-lock.json b/examples/user-management/nuxtjs-user-management/package-lock.json index 32cb8f279b0..9d71565dd1e 100644 --- a/examples/user-management/nuxtjs-user-management/package-lock.json +++ b/examples/user-management/nuxtjs-user-management/package-lock.json @@ -9,7 +9,7 @@ "version": "2.0.0", "dependencies": { "@nuxtjs/dotenv": "^1.4.1", - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "core-js": "^3.9.1", "nuxt": "^2.15.8" } @@ -2719,56 +2719,56 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -15953,56 +15953,56 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, diff --git a/examples/user-management/nuxtjs-user-management/package.json b/examples/user-management/nuxtjs-user-management/package.json index df6161eb611..38d6e89bdd0 100644 --- a/examples/user-management/nuxtjs-user-management/package.json +++ b/examples/user-management/nuxtjs-user-management/package.json @@ -10,7 +10,7 @@ }, "dependencies": { "@nuxtjs/dotenv": "^1.4.1", - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "core-js": "^3.9.1", "nuxt": "^2.15.8" } diff --git a/examples/user-management/react-user-management/package-lock.json b/examples/user-management/react-user-management/package-lock.json index a2d9247fb1f..bfbb8adf04f 100644 --- a/examples/user-management/react-user-management/package-lock.json +++ b/examples/user-management/react-user-management/package-lock.json @@ -8,7 +8,7 @@ "name": "react-user-management", "version": "0.1.0", "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^11.2.6", "@testing-library/user-event": "^12.8.3", @@ -2534,56 +2534,56 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -23631,56 +23631,56 @@ } }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, diff --git a/examples/user-management/react-user-management/package.json b/examples/user-management/react-user-management/package.json index bf6de14a7b2..4cfca28bde7 100644 --- a/examples/user-management/react-user-management/package.json +++ b/examples/user-management/react-user-management/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "@testing-library/jest-dom": "^5.12.0", "@testing-library/react": "^11.2.6", "@testing-library/user-event": "^12.8.3", diff --git a/examples/user-management/solid-user-management/package-lock.json b/examples/user-management/solid-user-management/package-lock.json index 897bc78f550..601825ff2d6 100644 --- a/examples/user-management/solid-user-management/package-lock.json +++ b/examples/user-management/solid-user-management/package-lock.json @@ -9,7 +9,7 @@ "version": "0.2.0", "license": "MIT", "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "solid-js": "^1.4.7" }, "devDependencies": { @@ -544,56 +544,56 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -682,9 +682,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -1628,9 +1628,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -2135,56 +2135,56 @@ } }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -2247,9 +2247,9 @@ } }, "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "requires": { "node-gyp-build": "^4.3.0" } @@ -2827,9 +2827,9 @@ } }, "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "requires": { "node-gyp-build": "^4.3.0" } diff --git a/examples/user-management/solid-user-management/package.json b/examples/user-management/solid-user-management/package.json index 5f832fb6d93..7a852c7be27 100644 --- a/examples/user-management/solid-user-management/package.json +++ b/examples/user-management/solid-user-management/package.json @@ -17,7 +17,7 @@ "vite-plugin-solid": "^2.3.0" }, "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9", + "@supabase/supabase-js": "^2.0.4", "solid-js": "^1.4.7" } } diff --git a/examples/user-management/solid-user-management/src/schema.ts b/examples/user-management/solid-user-management/src/schema.ts index 8ddee25be6b..7800a5bd9ef 100644 --- a/examples/user-management/solid-user-management/src/schema.ts +++ b/examples/user-management/solid-user-management/src/schema.ts @@ -27,6 +27,14 @@ export interface Database { } } } - Functions: {} + Views: { + [_ in never]: never + } + Functions: { + [_ in never]: never + } + Enums: { + [_ in never]: never + } } } diff --git a/examples/user-management/svelte-user-management/package-lock.json b/examples/user-management/svelte-user-management/package-lock.json index b1c4f5264f6..646d11721d0 100644 --- a/examples/user-management/svelte-user-management/package-lock.json +++ b/examples/user-management/svelte-user-management/package-lock.json @@ -8,7 +8,7 @@ "name": "svelte-user-management", "version": "0.0.0", "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9" + "@supabase/supabase-js": "^2.0.4" }, "devDependencies": { "@sveltejs/vite-plugin-svelte": "^1.0.1", @@ -111,56 +111,56 @@ } }, "node_modules/@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "dependencies": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "node_modules/@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "dependencies": { "cross-fetch": "^3.1.5" } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -283,9 +283,9 @@ } }, "node_modules/bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -790,11 +790,11 @@ "dev": true }, "node_modules/ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dependencies": { - "type": "^2.5.0" + "type": "^2.7.2" } }, "node_modules/ext/node_modules/type": { @@ -1600,9 +1600,9 @@ } }, "node_modules/utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -1777,56 +1777,56 @@ } }, "@supabase/functions-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0-rc.1.tgz", - "integrity": "sha512-cYFaSA28NoTREM4ZrHWaxXjElfY0S8umrjoffTbmI4Rgkg8+4raBnQIi52usfr5MuFpy566vhbLNOcP9kNHjOw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-2.0.0.tgz", + "integrity": "sha512-ozb7bds2yvf5k7NM2ZzUkxvsx4S4i2eRKFSJetdTADV91T65g4gCzEs9L3LUXSrghcGIkUaon03VPzOrFredqg==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/gotrue-js": { - "version": "2.0.0-rc.4", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.0-rc.4.tgz", - "integrity": "sha512-jHWyF1/Rl/1MXybFnHnHVjXYrOuvLzSUACow2Ii2KFD7zURPjPzy5KvOzq6tk+wL92LDgCl88nU1QVvO7dvRog==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/postgrest-js": { - "version": "1.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.0.0-rc.5.tgz", - "integrity": "sha512-rBOyhK+qLd2fdX6WbCW3e9gY9qbwC5Zeso6QWM+00RlRz3k156lxnreVpe4KKGXNT3JMqJwAHXjQ2lbxmtBJqg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-1.1.0.tgz", + "integrity": "sha512-qkY8TqIu5sJuae8gjeDPjEqPrefzcTraW9PNSVJQHq4TEv98ZmwaXGwBGz0bVL63bqrGA5hqREbQHkANUTXrvA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/realtime-js": { - "version": "2.0.0-rc.5", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.0.0-rc.5.tgz", - "integrity": "sha512-0JiSJjoTmwleufGzBQwEVamI047jnAiemBk8qOkgwyoLOlfGTQk8XSA7aT023BsGVgRNKZqp/jJJAVBht/Rd2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-2.1.0.tgz", + "integrity": "sha512-iplLCofTeYjnx9FIOsIwHLhMp0+7UVyiA4/sCeq40VdOgN9eTIhjEno9Tgh4dJARi4aaXoKfRX1DTxgZaOpPAw==", "requires": { "@types/phoenix": "^1.5.4", "websocket": "^1.0.34" } }, "@supabase/storage-js": { - "version": "2.0.0-rc.1", - "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0-rc.1.tgz", - "integrity": "sha512-OjPtPuKzhzQW6nO/UdwVJVFrzfFnIWt1u+gTQ4+8t1+IBdn7xDHssDteBPkMCd+fYcbMZrqpggbagoFH3FylXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-2.0.0.tgz", + "integrity": "sha512-7kXThdRt/xqnOOvZZxBqNkeX1CFNUWc0hYBJtNN/Uvt8ok9hD14foYmroWrHn046wEYFqUrB9U35JYsfTrvltA==", "requires": { "cross-fetch": "^3.1.5" } }, "@supabase/supabase-js": { - "version": "2.0.0-rc.9", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0-rc.9.tgz", - "integrity": "sha512-WTb60mEjzkI7FcuQA7KW9IkLltl2I7ojlpBIORwbekuCz5nKDSlo4g6/Wyo4u6Qe97weh3mhFMLGZRorhRq7lg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { - "@supabase/functions-js": "^2.0.0-rc.1", - "@supabase/gotrue-js": "^2.0.0-rc.4", - "@supabase/postgrest-js": "^1.0.0-rc.5", - "@supabase/realtime-js": "^2.0.0-rc.5", - "@supabase/storage-js": "^2.0.0-rc.1", + "@supabase/functions-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", + "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } }, @@ -1924,9 +1924,9 @@ "dev": true }, "bufferutil": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", - "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.7.tgz", + "integrity": "sha512-kukuqc39WOHtdxtw4UScxF/WVnMFVSQVKhtx3AjZJzhd0RGZZldcrfSEbVsWWe6KNH253574cq5F+wpv0G9pJw==", "requires": { "node-gyp-build": "^4.3.0" } @@ -2208,11 +2208,11 @@ "dev": true }, "ext": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", - "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "requires": { - "type": "^2.5.0" + "type": "^2.7.2" }, "dependencies": { "type": { @@ -2755,9 +2755,9 @@ "dev": true }, "utf-8-validate": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", - "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "requires": { "node-gyp-build": "^4.3.0" } diff --git a/examples/user-management/svelte-user-management/package.json b/examples/user-management/svelte-user-management/package.json index a9f3b3645a6..248be639d24 100644 --- a/examples/user-management/svelte-user-management/package.json +++ b/examples/user-management/svelte-user-management/package.json @@ -20,6 +20,6 @@ "vite": "^3.0.7" }, "dependencies": { - "@supabase/supabase-js": "^2.0.0-rc.9" + "@supabase/supabase-js": "^2.0.4" } } diff --git a/examples/user-management/svelte-user-management/src/schema.ts b/examples/user-management/svelte-user-management/src/schema.ts index 8ddee25be6b..7800a5bd9ef 100644 --- a/examples/user-management/svelte-user-management/src/schema.ts +++ b/examples/user-management/svelte-user-management/src/schema.ts @@ -27,6 +27,14 @@ export interface Database { } } } - Functions: {} + Views: { + [_ in never]: never + } + Functions: { + [_ in never]: never + } + Enums: { + [_ in never]: never + } } } diff --git a/examples/user-management/sveltekit-user-management/package-lock.json b/examples/user-management/sveltekit-user-management/package-lock.json index 0c19af4c120..633a5af5ecc 100644 --- a/examples/user-management/sveltekit-user-management/package-lock.json +++ b/examples/user-management/sveltekit-user-management/package-lock.json @@ -8,8 +8,8 @@ "name": "sveltekit-user-management", "version": "0.0.1", "dependencies": { - "@supabase/auth-helpers-sveltekit": "^0.8.2", - "@supabase/supabase-js": "^2.0.0" + "@supabase/auth-helpers-sveltekit": "^0.8.3", + "@supabase/supabase-js": "^2.0.4" }, "devDependencies": { "@fontsource/fira-mono": "^4.5.0", @@ -183,19 +183,22 @@ } }, "node_modules/@supabase/auth-helpers-shared": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.0.tgz", - "integrity": "sha512-GaWzuP3RjLSdSlFajbgwQkZO24A14DSEIJG5sUva/sUYWkriEWROjf8Vbwg4YsSxqeU6fP3lloFeync9BwgyYA==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.1.tgz", + "integrity": "sha512-L54gCCD8xCV6mHta0vE7CLxJ7pisSlsd9KIWB1ENyfZ0baeU9H39AqNVyYcAoHBPrUaZYx877J4WYYoqwuyi+w==", + "peerDependencies": { + "@supabase/supabase-js": "^2.0.4" + } }, "node_modules/@supabase/auth-helpers-sveltekit": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.8.2.tgz", - "integrity": "sha512-z7gqMLZFMNIbOStoJ/mn6uc7ZAcLF/QPJP38nNVlQUNodQvtbG90ecaxCOC+TZAoYokZzs4gP7EXRLDRZAMfXA==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.8.3.tgz", + "integrity": "sha512-31Mu4hoRPynuPwJtf08ldb6N886vzNKoG5nXkc/X4oiKduy6px+MbsWTrILNA3/oacrRF1FPc4KWuGMeulTNWg==", "dependencies": { - "@supabase/auth-helpers-shared": "0.2.0" + "@supabase/auth-helpers-shared": "0.2.1" }, "peerDependencies": { - "@supabase/supabase-js": "2.0.0" + "@supabase/supabase-js": "^2.0.4" } }, "node_modules/@supabase/functions-js": { @@ -207,9 +210,9 @@ } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } @@ -240,14 +243,14 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } @@ -2652,16 +2655,17 @@ } }, "@supabase/auth-helpers-shared": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.0.tgz", - "integrity": "sha512-GaWzuP3RjLSdSlFajbgwQkZO24A14DSEIJG5sUva/sUYWkriEWROjf8Vbwg4YsSxqeU6fP3lloFeync9BwgyYA==" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-shared/-/auth-helpers-shared-0.2.1.tgz", + "integrity": "sha512-L54gCCD8xCV6mHta0vE7CLxJ7pisSlsd9KIWB1ENyfZ0baeU9H39AqNVyYcAoHBPrUaZYx877J4WYYoqwuyi+w==", + "requires": {} }, "@supabase/auth-helpers-sveltekit": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.8.2.tgz", - "integrity": "sha512-z7gqMLZFMNIbOStoJ/mn6uc7ZAcLF/QPJP38nNVlQUNodQvtbG90ecaxCOC+TZAoYokZzs4gP7EXRLDRZAMfXA==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@supabase/auth-helpers-sveltekit/-/auth-helpers-sveltekit-0.8.3.tgz", + "integrity": "sha512-31Mu4hoRPynuPwJtf08ldb6N886vzNKoG5nXkc/X4oiKduy6px+MbsWTrILNA3/oacrRF1FPc4KWuGMeulTNWg==", "requires": { - "@supabase/auth-helpers-shared": "0.2.0" + "@supabase/auth-helpers-shared": "0.2.1" } }, "@supabase/functions-js": { @@ -2673,9 +2677,9 @@ } }, "@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } @@ -2706,14 +2710,14 @@ } }, "@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } diff --git a/examples/user-management/sveltekit-user-management/package.json b/examples/user-management/sveltekit-user-management/package.json index 5f76bbb8b30..21223edb6b1 100644 --- a/examples/user-management/sveltekit-user-management/package.json +++ b/examples/user-management/sveltekit-user-management/package.json @@ -27,7 +27,7 @@ }, "type": "module", "dependencies": { - "@supabase/auth-helpers-sveltekit": "^0.8.2", - "@supabase/supabase-js": "^2.0.0" + "@supabase/auth-helpers-sveltekit": "^0.8.3", + "@supabase/supabase-js": "^2.0.4" } } diff --git a/examples/user-management/sveltekit-user-management/src/schema.ts b/examples/user-management/sveltekit-user-management/src/schema.ts index 8ddee25be6b..7800a5bd9ef 100644 --- a/examples/user-management/sveltekit-user-management/src/schema.ts +++ b/examples/user-management/sveltekit-user-management/src/schema.ts @@ -27,6 +27,14 @@ export interface Database { } } } - Functions: {} + Views: { + [_ in never]: never + } + Functions: { + [_ in never]: never + } + Enums: { + [_ in never]: never + } } } diff --git a/examples/user-management/vue3-user-management/package-lock.json b/examples/user-management/vue3-user-management/package-lock.json index ce8d57bce93..af762cc7613 100644 --- a/examples/user-management/vue3-user-management/package-lock.json +++ b/examples/user-management/vue3-user-management/package-lock.json @@ -8,7 +8,7 @@ "name": "vue3-user-management", "version": "0.0.0", "dependencies": { - "@supabase/supabase-js": "^2.0.0", + "@supabase/supabase-js": "^2.0.4", "vue": "^3.2.37" }, "devDependencies": { @@ -68,9 +68,9 @@ } }, "node_modules/@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "dependencies": { "cross-fetch": "^3.1.5" } @@ -101,14 +101,14 @@ } }, "node_modules/@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "dependencies": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } @@ -1040,9 +1040,9 @@ } }, "@supabase/gotrue-js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.0.1.tgz", - "integrity": "sha512-PCzHeFhz33lPWLZT+UiVDpGkZQI3K1wwhkhgAjvJdkyCbwK5u+LWWUzz0AX66bGGLpg1IYQIP7oz8V68XVjzMA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-2.2.1.tgz", + "integrity": "sha512-CgQaYAJmGbOLPSqan4mjRgGikzsrlkKdPq0UNG7WZQv5HlHJlAYW8HeyNw/SKfIbxQBm8s2dBCeUyX+NdfB2Rw==", "requires": { "cross-fetch": "^3.1.5" } @@ -1073,14 +1073,14 @@ } }, "@supabase/supabase-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.0.tgz", - "integrity": "sha512-8nNMXYzBlQVSDONFaNgyyxsAdUY+C9Q/7vEDYDdTFTyC3i+luXTDOSjHMLcjIky/+x5rIAcNQqqIJ48HJUluXA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-2.0.4.tgz", + "integrity": "sha512-Z5uLyJm9bz5LMFnt5d1I6ccxVTdvKbJa0RsYGgKlA+QiyGvBxRRvVh8pqlYP1571DlycGG7bWngNwdv7/pehrg==", "requires": { "@supabase/functions-js": "^2.0.0", - "@supabase/gotrue-js": "^2.0.1", - "@supabase/postgrest-js": "^1.0.0", - "@supabase/realtime-js": "^2.0.0", + "@supabase/gotrue-js": "^2.2.0", + "@supabase/postgrest-js": "^1.1.0", + "@supabase/realtime-js": "^2.1.0", "@supabase/storage-js": "^2.0.0", "cross-fetch": "^3.1.5" } diff --git a/examples/user-management/vue3-user-management/package.json b/examples/user-management/vue3-user-management/package.json index c99c05e7222..07d2627d076 100644 --- a/examples/user-management/vue3-user-management/package.json +++ b/examples/user-management/vue3-user-management/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "@supabase/supabase-js": "^2.0.0", + "@supabase/supabase-js": "^2.0.4", "vue": "^3.2.37" }, "devDependencies": { From ccdf86811302c100702396b7640fd4dc8ca4c67c Mon Sep 17 00:00:00 2001 From: Lakshan Perera Date: Thu, 27 Oct 2022 16:53:53 +1100 Subject: [PATCH 053/185] added opengraph example --- .../supabase/functions/opengraph/handler.tsx | 31 +++++++++++++++++++ .../supabase/functions/opengraph/index.ts | 6 ++++ 2 files changed, 37 insertions(+) create mode 100644 examples/edge-functions/supabase/functions/opengraph/handler.tsx create mode 100644 examples/edge-functions/supabase/functions/opengraph/index.ts diff --git a/examples/edge-functions/supabase/functions/opengraph/handler.tsx b/examples/edge-functions/supabase/functions/opengraph/handler.tsx new file mode 100644 index 00000000000..6a206a09ade --- /dev/null +++ b/examples/edge-functions/supabase/functions/opengraph/handler.tsx @@ -0,0 +1,31 @@ +import React from "https://esm.sh/react@18.2.0"; +import { ImageResponse } from "https://deno.land/x/og_edge/mod.ts"; + +export async function handler(req: Request) { + return new ImageResponse( +
    + 👋, It works! +
    , + { + width: 1200, + height: 630, + // Supported options: 'twemoji', 'blobmoji', 'noto', 'openmoji', 'fluent', 'fluentFlat' + // Default to 'twemoji' + emoji: "twemoji", + }, + ); +} + diff --git a/examples/edge-functions/supabase/functions/opengraph/index.ts b/examples/edge-functions/supabase/functions/opengraph/index.ts new file mode 100644 index 00000000000..5a7c5c38685 --- /dev/null +++ b/examples/edge-functions/supabase/functions/opengraph/index.ts @@ -0,0 +1,6 @@ +import { serve } from "https://deno.land/std@0.140.0/http/server.ts"; + +import {handler} from './handler.tsx' + +// @ts-ignore +serve(handler); From d536a899a0071325b7d9c1ace5a0e870b7575b2b Mon Sep 17 00:00:00 2001 From: thorwebdev Date: Thu, 27 Oct 2022 15:14:43 +0800 Subject: [PATCH 054/185] chore: cleanup --- .../supabase/functions/opengraph/handler.tsx | 47 ++++++++++--------- .../supabase/functions/opengraph/index.ts | 12 +++-- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/examples/edge-functions/supabase/functions/opengraph/handler.tsx b/examples/edge-functions/supabase/functions/opengraph/handler.tsx index 6a206a09ade..c5448aa74db 100644 --- a/examples/edge-functions/supabase/functions/opengraph/handler.tsx +++ b/examples/edge-functions/supabase/functions/opengraph/handler.tsx @@ -1,31 +1,32 @@ -import React from "https://esm.sh/react@18.2.0"; -import { ImageResponse } from "https://deno.land/x/og_edge/mod.ts"; +import React from 'https://esm.sh/react@18.2.0?deno-std=0.140.0' +import { ImageResponse } from 'https://deno.land/x/og_edge@0.0.2/mod.ts' export async function handler(req: Request) { - return new ImageResponse( -
    - 👋, It works! -
    , + return new ImageResponse( + ( +
    + NICE! 🔥 +
    + ), { width: 1200, height: 630, // Supported options: 'twemoji', 'blobmoji', 'noto', 'openmoji', 'fluent', 'fluentFlat' // Default to 'twemoji' - emoji: "twemoji", - }, - ); + emoji: 'twemoji', + } + ) } - diff --git a/examples/edge-functions/supabase/functions/opengraph/index.ts b/examples/edge-functions/supabase/functions/opengraph/index.ts index 5a7c5c38685..e16e8b4d5c6 100644 --- a/examples/edge-functions/supabase/functions/opengraph/index.ts +++ b/examples/edge-functions/supabase/functions/opengraph/index.ts @@ -1,6 +1,12 @@ -import { serve } from "https://deno.land/std@0.140.0/http/server.ts"; +// Follow this setup guide to integrate the Deno language server with your editor: +// https://deno.land/manual/getting_started/setup_your_environment +// This enables autocomplete, go to definition, etc. -import {handler} from './handler.tsx' +import { serve } from 'https://deno.land/std@0.140.0/http/server.ts' + +import { handler } from './handler.tsx' // @ts-ignore -serve(handler); +serve(handler) + +// To deploy: supabase functions deploy opengraph --no-verify-jwt From fc41f3f66de1e3654b7c08d640f230aa165cfd28 Mon Sep 17 00:00:00 2001 From: thorwebdev Date: Thu, 27 Oct 2022 15:19:05 +0800 Subject: [PATCH 055/185] chore: add readme. --- .../supabase/functions/opengraph/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 examples/edge-functions/supabase/functions/opengraph/README.md diff --git a/examples/edge-functions/supabase/functions/opengraph/README.md b/examples/edge-functions/supabase/functions/opengraph/README.md new file mode 100644 index 00000000000..a8a337e0065 --- /dev/null +++ b/examples/edge-functions/supabase/functions/opengraph/README.md @@ -0,0 +1,12 @@ +# Open Graph Image Generation + +Generate Open Graph images with Deno and Supabase Edge Functions, no framework needed. This is a fork of the awesome [@vercel/og](https://www.npmjs.com/package/@vercel/og), ported to run on Deno. + +- Docs: https://deno.land/x/og_edge@0.0.2 +- Demo: https://zdtdtxajzydjqzuktnqx.functions.supabase.co/opengraph + +## Deploy + +```bash +supabase functions deploy opengraph --no-verify-jwt +``` From 6db6f66f98e783f62ba62fb998806107ca5b7b04 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 15:07:26 +0700 Subject: [PATCH 056/185] Added version header, updated generate scripts --- apps/temp-docs/.gitignore | 2 +- .../components/Navigation/NavBar.tsx | 45 ++- ...v.constants.ts => Navigation.constants.ts} | 34 ++- .../components/Navigation/Navigation.types.ts | 22 ++ .../components/Navigation/SideBar.tsx | 13 +- .../{authProviders.js => authProviders.ts} | 0 apps/temp-docs/data/nav/README.md | 27 ++ apps/temp-docs/data/nav/auth-server.ts | 1 + .../data/nonGeneratedReferencePages.ts | 26 ++ .../docs/dart/auth-onauthstatechange.mdx | 72 ----- apps/temp-docs/docs/dart/auth-session.mdx | 66 ----- apps/temp-docs/docs/dart/auth-signin.mdx | 103 ------- .../docs/dart/auth-signinwithprovider.mdx | 129 --------- apps/temp-docs/docs/dart/auth-signout.mdx | 70 ----- apps/temp-docs/docs/dart/auth-signup.mdx | 62 ---- apps/temp-docs/docs/dart/auth-update.mdx | 76 ----- apps/temp-docs/docs/dart/auth-user.mdx | 66 ----- apps/temp-docs/docs/dart/containedby.mdx | 145 ---------- apps/temp-docs/docs/dart/contains.mdx | 145 ---------- apps/temp-docs/docs/dart/delete.mdx | 76 ----- apps/temp-docs/docs/dart/eq.mdx | 146 ---------- apps/temp-docs/docs/dart/filter.mdx | 170 ----------- apps/temp-docs/docs/dart/getsubscriptions.mdx | 66 ----- apps/temp-docs/docs/dart/gt.mdx | 146 ---------- apps/temp-docs/docs/dart/gte.mdx | 146 ---------- apps/temp-docs/docs/dart/ilike.mdx | 146 ---------- apps/temp-docs/docs/dart/in_.mdx | 148 ---------- apps/temp-docs/docs/dart/index.mdx | 12 - apps/temp-docs/docs/dart/initializing.mdx | 84 ------ apps/temp-docs/docs/dart/insert.mdx | 102 ------- apps/temp-docs/docs/dart/installing.mdx | 32 --- apps/temp-docs/docs/dart/is_.mdx | 148 ---------- apps/temp-docs/docs/dart/like.mdx | 191 ------------ apps/temp-docs/docs/dart/limit.mdx | 99 ------- apps/temp-docs/docs/dart/lt.mdx | 146 ---------- apps/temp-docs/docs/dart/lte.mdx | 191 ------------ apps/temp-docs/docs/dart/match.mdx | 146 ---------- apps/temp-docs/docs/dart/neq.mdx | 146 ---------- apps/temp-docs/docs/dart/not.mdx | 146 ---------- apps/temp-docs/docs/dart/or.mdx | 98 ------- apps/temp-docs/docs/dart/order.mdx | 99 ------- apps/temp-docs/docs/dart/overlaps.mdx | 145 ---------- apps/temp-docs/docs/dart/range.mdx | 74 ----- apps/temp-docs/docs/dart/rangeadjacent.mdx | 145 ---------- apps/temp-docs/docs/dart/rangegt.mdx | 145 ---------- apps/temp-docs/docs/dart/rangegte.mdx | 145 ---------- apps/temp-docs/docs/dart/rangelt.mdx | 145 ---------- apps/temp-docs/docs/dart/rangelte.mdx | 145 ---------- .../docs/dart/removesubscription.mdx | 67 ----- .../docs/dart/reset-password-email.mdx | 114 -------- apps/temp-docs/docs/dart/rpc.mdx | 119 -------- apps/temp-docs/docs/dart/select.mdx | 272 ------------------ apps/temp-docs/docs/dart/single.mdx | 74 ----- .../docs/dart/storage-createbucket.mdx | 73 ----- .../docs/dart/storage-deletebucket.mdx | 73 ----- .../docs/dart/storage-emptybucket.mdx | 73 ----- .../dart/storage-from-createsignedurl.mdx | 79 ----- .../docs/dart/storage-from-download.mdx | 75 ----- .../docs/dart/storage-from-getpublicurl.mdx | 62 ---- .../temp-docs/docs/dart/storage-from-list.mdx | 75 ----- .../temp-docs/docs/dart/storage-from-move.mdx | 75 ----- .../docs/dart/storage-from-remove.mdx | 75 ----- .../docs/dart/storage-from-update.mdx | 83 ------ .../docs/dart/storage-from-upload.mdx | 152 ---------- .../temp-docs/docs/dart/storage-getbucket.mdx | 97 ------- .../docs/dart/storage-listbuckets.mdx | 73 ----- .../docs/dart/storage-updatebucket.mdx | 73 ----- apps/temp-docs/docs/dart/stream.mdx | 147 ---------- apps/temp-docs/docs/dart/subscribe.mdx | 237 --------------- apps/temp-docs/docs/dart/textsearch.mdx | 147 ---------- apps/temp-docs/docs/dart/update.mdx | 109 ------- apps/temp-docs/docs/dart/upsert.mdx | 128 --------- apps/temp-docs/docs/dart/using-filters.mdx | 44 --- apps/temp-docs/docs/dart/using-modifiers.mdx | 13 - .../docs/postgres/changing-timezones.mdx | 119 -------- apps/temp-docs/docs/postgres/columns.mdx | 95 ------ .../docs/postgres/connection-strings.mdx | 135 --------- .../docs/postgres/database-passwords.mdx | 53 ---- .../docs/postgres/database-users.mdx | 53 ---- apps/temp-docs/docs/postgres/index.mdx | 15 - apps/temp-docs/docs/postgres/publications.mdx | 210 -------------- apps/temp-docs/docs/postgres/schemas.mdx | 114 -------- apps/temp-docs/docs/postgres/tables.mdx | 161 ----------- apps/temp-docs/docs/reference/api.mdx | 37 +++ .../docs/reference/api/release-notes.mdx | 12 + apps/temp-docs/docs/reference/auth.mdx | 22 ++ .../auth/release-notes.mdx} | 0 apps/temp-docs/docs/reference/cli.mdx | 29 ++ apps/temp-docs/docs/reference/cli/.gitkeep | 0 apps/temp-docs/docs/reference/cli/about.mdx | 25 -- .../docs/reference/cli/config-reference.mdx | 35 --- apps/temp-docs/docs/reference/cli/index.mdx | 27 -- .../docs/reference/cli/release-notes.mdx | 7 + .../cli/supabase-db-branch-create.mdx | 16 -- .../cli/supabase-db-branch-delete.mdx | 16 -- .../reference/cli/supabase-db-branch-list.mdx | 16 -- .../reference/cli/supabase-db-changes.mdx | 16 -- .../docs/reference/cli/supabase-db-commit.mdx | 16 -- .../docs/reference/cli/supabase-db-push.mdx | 16 -- .../cli/supabase-db-remote-commit.mdx | 16 -- .../reference/cli/supabase-db-remote-set.mdx | 16 -- .../docs/reference/cli/supabase-db-reset.mdx | 16 -- .../docs/reference/cli/supabase-db-switch.mdx | 16 -- .../docs/reference/cli/supabase-eject.mdx | 17 -- .../docs/reference/cli/supabase-help.mdx | 17 -- .../docs/reference/cli/supabase-init.mdx | 16 -- .../reference/cli/supabase-migration-new.mdx | 16 -- .../docs/reference/cli/supabase-start.mdx | 16 -- .../docs/reference/cli/supabase-stop.mdx | 15 - apps/temp-docs/docs/reference/dart/.gitkeep | 0 .../reference/dart/auth-onauthstatechange.mdx | 72 ----- .../docs/reference/dart/auth-session.mdx | 66 ----- .../docs/reference/dart/auth-signin.mdx | 103 ------- .../dart/auth-signinwithprovider.mdx | 129 --------- .../docs/reference/dart/auth-signout.mdx | 70 ----- .../docs/reference/dart/auth-signup.mdx | 62 ---- .../docs/reference/dart/auth-update.mdx | 76 ----- .../docs/reference/dart/auth-user.mdx | 66 ----- .../docs/reference/dart/containedby.mdx | 145 ---------- .../docs/reference/dart/contains.mdx | 145 ---------- apps/temp-docs/docs/reference/dart/delete.mdx | 76 ----- apps/temp-docs/docs/reference/dart/eq.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/filter.mdx | 170 ----------- .../docs/reference/dart/getsubscriptions.mdx | 66 ----- apps/temp-docs/docs/reference/dart/gt.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/gte.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/ilike.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/in_.mdx | 148 ---------- apps/temp-docs/docs/reference/dart/index.mdx | 12 - .../docs/reference/dart/initializing.mdx | 84 ------ apps/temp-docs/docs/reference/dart/insert.mdx | 102 ------- .../docs/reference/dart/installing.mdx | 32 --- apps/temp-docs/docs/reference/dart/is_.mdx | 148 ---------- apps/temp-docs/docs/reference/dart/like.mdx | 191 ------------ apps/temp-docs/docs/reference/dart/limit.mdx | 99 ------- apps/temp-docs/docs/reference/dart/lt.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/lte.mdx | 191 ------------ apps/temp-docs/docs/reference/dart/match.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/neq.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/not.mdx | 146 ---------- apps/temp-docs/docs/reference/dart/or.mdx | 98 ------- apps/temp-docs/docs/reference/dart/order.mdx | 99 ------- .../docs/reference/dart/overlaps.mdx | 145 ---------- apps/temp-docs/docs/reference/dart/range.mdx | 74 ----- .../docs/reference/dart/rangeadjacent.mdx | 145 ---------- .../temp-docs/docs/reference/dart/rangegt.mdx | 145 ---------- .../docs/reference/dart/rangegte.mdx | 145 ---------- .../temp-docs/docs/reference/dart/rangelt.mdx | 145 ---------- .../docs/reference/dart/rangelte.mdx | 145 ---------- .../reference/dart/removesubscription.mdx | 67 ----- .../reference/dart/reset-password-email.mdx | 114 -------- apps/temp-docs/docs/reference/dart/rpc.mdx | 119 -------- apps/temp-docs/docs/reference/dart/select.mdx | 272 ------------------ apps/temp-docs/docs/reference/dart/single.mdx | 74 ----- .../reference/dart/storage-createbucket.mdx | 73 ----- .../reference/dart/storage-deletebucket.mdx | 73 ----- .../reference/dart/storage-emptybucket.mdx | 73 ----- .../dart/storage-from-createsignedurl.mdx | 79 ----- .../reference/dart/storage-from-download.mdx | 75 ----- .../dart/storage-from-getpublicurl.mdx | 62 ---- .../docs/reference/dart/storage-from-list.mdx | 75 ----- .../docs/reference/dart/storage-from-move.mdx | 75 ----- .../reference/dart/storage-from-remove.mdx | 75 ----- .../reference/dart/storage-from-update.mdx | 83 ------ .../reference/dart/storage-from-upload.mdx | 152 ---------- .../docs/reference/dart/storage-getbucket.mdx | 97 ------- .../reference/dart/storage-listbuckets.mdx | 73 ----- .../reference/dart/storage-updatebucket.mdx | 73 ----- apps/temp-docs/docs/reference/dart/stream.mdx | 147 ---------- .../docs/reference/dart/subscribe.mdx | 237 --------------- .../docs/reference/dart/textsearch.mdx | 147 ---------- apps/temp-docs/docs/reference/dart/update.mdx | 109 ------- apps/temp-docs/docs/reference/dart/upsert.mdx | 128 --------- .../docs/reference/dart/using-filters.mdx | 44 --- .../docs/reference/dart/using-modifiers.mdx | 13 - apps/temp-docs/docs/reference/dart/v0.mdx | 26 ++ .../docs/reference/javascript/v1.mdx | 20 ++ .../javascript/v1/generating-types.mdx | 42 +++ .../reference/javascript/v1/initializing.mdx | 151 ++++++++++ .../reference/javascript/v1/installing.mdx | 37 +++ apps/temp-docs/docs/reference/storage.mdx | 28 ++ .../docs/reference/storage/release-notes.mdx | 7 + apps/temp-docs/layouts/Default.tsx | 21 +- apps/temp-docs/layouts/Guide.tsx | 3 +- apps/temp-docs/lib/docs.ts | 35 ++- apps/temp-docs/lib/helpers.ts | 8 +- apps/temp-docs/package.json | 27 +- apps/temp-docs/pages/[...slug].tsx | 29 +- apps/temp-docs/pages/index.tsx | 4 +- 189 files changed, 643 insertions(+), 15713 deletions(-) rename apps/temp-docs/components/Navigation/{Nav.constants.ts => Navigation.constants.ts} (96%) create mode 100644 apps/temp-docs/components/Navigation/Navigation.types.ts rename apps/temp-docs/data/{authProviders.js => authProviders.ts} (100%) create mode 100644 apps/temp-docs/data/nav/README.md create mode 100644 apps/temp-docs/data/nonGeneratedReferencePages.ts delete mode 100644 apps/temp-docs/docs/dart/auth-onauthstatechange.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-session.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-signin.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-signinwithprovider.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-signout.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-signup.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-update.mdx delete mode 100644 apps/temp-docs/docs/dart/auth-user.mdx delete mode 100644 apps/temp-docs/docs/dart/containedby.mdx delete mode 100644 apps/temp-docs/docs/dart/contains.mdx delete mode 100644 apps/temp-docs/docs/dart/delete.mdx delete mode 100644 apps/temp-docs/docs/dart/eq.mdx delete mode 100644 apps/temp-docs/docs/dart/filter.mdx delete mode 100644 apps/temp-docs/docs/dart/getsubscriptions.mdx delete mode 100644 apps/temp-docs/docs/dart/gt.mdx delete mode 100644 apps/temp-docs/docs/dart/gte.mdx delete mode 100644 apps/temp-docs/docs/dart/ilike.mdx delete mode 100644 apps/temp-docs/docs/dart/in_.mdx delete mode 100644 apps/temp-docs/docs/dart/index.mdx delete mode 100644 apps/temp-docs/docs/dart/initializing.mdx delete mode 100644 apps/temp-docs/docs/dart/insert.mdx delete mode 100644 apps/temp-docs/docs/dart/installing.mdx delete mode 100644 apps/temp-docs/docs/dart/is_.mdx delete mode 100644 apps/temp-docs/docs/dart/like.mdx delete mode 100644 apps/temp-docs/docs/dart/limit.mdx delete mode 100644 apps/temp-docs/docs/dart/lt.mdx delete mode 100644 apps/temp-docs/docs/dart/lte.mdx delete mode 100644 apps/temp-docs/docs/dart/match.mdx delete mode 100644 apps/temp-docs/docs/dart/neq.mdx delete mode 100644 apps/temp-docs/docs/dart/not.mdx delete mode 100644 apps/temp-docs/docs/dart/or.mdx delete mode 100644 apps/temp-docs/docs/dart/order.mdx delete mode 100644 apps/temp-docs/docs/dart/overlaps.mdx delete mode 100644 apps/temp-docs/docs/dart/range.mdx delete mode 100644 apps/temp-docs/docs/dart/rangeadjacent.mdx delete mode 100644 apps/temp-docs/docs/dart/rangegt.mdx delete mode 100644 apps/temp-docs/docs/dart/rangegte.mdx delete mode 100644 apps/temp-docs/docs/dart/rangelt.mdx delete mode 100644 apps/temp-docs/docs/dart/rangelte.mdx delete mode 100644 apps/temp-docs/docs/dart/removesubscription.mdx delete mode 100644 apps/temp-docs/docs/dart/reset-password-email.mdx delete mode 100644 apps/temp-docs/docs/dart/rpc.mdx delete mode 100644 apps/temp-docs/docs/dart/select.mdx delete mode 100644 apps/temp-docs/docs/dart/single.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-createbucket.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-deletebucket.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-emptybucket.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-createsignedurl.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-download.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-getpublicurl.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-list.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-move.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-remove.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-update.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-from-upload.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-getbucket.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-listbuckets.mdx delete mode 100644 apps/temp-docs/docs/dart/storage-updatebucket.mdx delete mode 100644 apps/temp-docs/docs/dart/stream.mdx delete mode 100644 apps/temp-docs/docs/dart/subscribe.mdx delete mode 100644 apps/temp-docs/docs/dart/textsearch.mdx delete mode 100644 apps/temp-docs/docs/dart/update.mdx delete mode 100644 apps/temp-docs/docs/dart/upsert.mdx delete mode 100644 apps/temp-docs/docs/dart/using-filters.mdx delete mode 100644 apps/temp-docs/docs/dart/using-modifiers.mdx delete mode 100644 apps/temp-docs/docs/postgres/changing-timezones.mdx delete mode 100644 apps/temp-docs/docs/postgres/columns.mdx delete mode 100644 apps/temp-docs/docs/postgres/connection-strings.mdx delete mode 100644 apps/temp-docs/docs/postgres/database-passwords.mdx delete mode 100644 apps/temp-docs/docs/postgres/database-users.mdx delete mode 100644 apps/temp-docs/docs/postgres/index.mdx delete mode 100644 apps/temp-docs/docs/postgres/publications.mdx delete mode 100644 apps/temp-docs/docs/postgres/schemas.mdx delete mode 100644 apps/temp-docs/docs/postgres/tables.mdx create mode 100644 apps/temp-docs/docs/reference/api.mdx create mode 100644 apps/temp-docs/docs/reference/api/release-notes.mdx create mode 100644 apps/temp-docs/docs/reference/auth.mdx rename apps/temp-docs/docs/{dart/.gitkeep => reference/auth/release-notes.mdx} (100%) create mode 100644 apps/temp-docs/docs/reference/cli.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/.gitkeep delete mode 100644 apps/temp-docs/docs/reference/cli/about.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/config-reference.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/index.mdx create mode 100644 apps/temp-docs/docs/reference/cli/release-notes.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-branch-create.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-branch-delete.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-branch-list.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-changes.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-commit.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-push.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-remote-commit.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-remote-set.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-reset.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-db-switch.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-eject.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-help.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-init.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-migration-new.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-start.mdx delete mode 100644 apps/temp-docs/docs/reference/cli/supabase-stop.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/.gitkeep delete mode 100644 apps/temp-docs/docs/reference/dart/auth-onauthstatechange.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-session.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-signin.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-signinwithprovider.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-signout.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-signup.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-update.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/auth-user.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/containedby.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/contains.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/delete.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/eq.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/filter.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/getsubscriptions.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/gt.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/gte.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/ilike.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/in_.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/index.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/initializing.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/insert.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/installing.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/is_.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/like.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/limit.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/lt.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/lte.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/match.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/neq.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/not.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/or.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/order.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/overlaps.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/range.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/rangeadjacent.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/rangegt.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/rangegte.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/rangelt.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/rangelte.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/removesubscription.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/reset-password-email.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/rpc.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/select.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/single.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-createbucket.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-deletebucket.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-emptybucket.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-createsignedurl.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-download.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-getpublicurl.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-list.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-move.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-remove.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-update.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-from-upload.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-getbucket.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-listbuckets.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/storage-updatebucket.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/stream.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/subscribe.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/textsearch.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/update.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/upsert.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/using-filters.mdx delete mode 100644 apps/temp-docs/docs/reference/dart/using-modifiers.mdx create mode 100644 apps/temp-docs/docs/reference/dart/v0.mdx create mode 100644 apps/temp-docs/docs/reference/javascript/v1.mdx create mode 100644 apps/temp-docs/docs/reference/javascript/v1/generating-types.mdx create mode 100644 apps/temp-docs/docs/reference/javascript/v1/initializing.mdx create mode 100644 apps/temp-docs/docs/reference/javascript/v1/installing.mdx create mode 100644 apps/temp-docs/docs/reference/storage.mdx create mode 100644 apps/temp-docs/docs/reference/storage/release-notes.mdx diff --git a/apps/temp-docs/.gitignore b/apps/temp-docs/.gitignore index 820d2d9ff0a..f6ec88eea34 100644 --- a/apps/temp-docs/.gitignore +++ b/apps/temp-docs/.gitignore @@ -18,4 +18,4 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -**/*/generated \ No newline at end of file +**/*/generated/**/* \ No newline at end of file diff --git a/apps/temp-docs/components/Navigation/NavBar.tsx b/apps/temp-docs/components/Navigation/NavBar.tsx index e8a3f40e9be..4d35ee4d5e4 100644 --- a/apps/temp-docs/components/Navigation/NavBar.tsx +++ b/apps/temp-docs/components/Navigation/NavBar.tsx @@ -1,13 +1,26 @@ import Image from 'next/image' import Link from 'next/link' -import { useState, useEffect } from 'react' -import { IconMenu, IconSearch, Input, IconCommand, Button, IconMoon, IconSun } from 'ui' +import { useRouter } from 'next/router' +import { useState, useEffect, FC } from 'react' +import { IconMenu, IconSearch, Input, IconCommand, Button, IconMoon, IconSun, Listbox } from 'ui' import { useTheme } from '../Providers' -const NavBar = ({ currentPage }: { currentPage: string }) => { +interface Props { + currentPage: string + versions: string[] +} + +const NavBar: FC = ({ currentPage, versions }) => { const { isDarkMode, toggleTheme } = useTheme() const [mounted, setMounted] = useState(false) + const { asPath, push } = useRouter() + const pathSegments = asPath.split('/') + const library = pathSegments.length >= 3 ? pathSegments[2] : undefined + const version = versions.includes(pathSegments[pathSegments.indexOf(library) + 1]) + ? pathSegments[pathSegments.indexOf(library) + 1] + : versions[0] + useEffect(() => { setMounted(true) }, [isDarkMode]) @@ -25,6 +38,16 @@ const NavBar = ({ currentPage }: { currentPage: string }) => { document.documentElement.className = key === 'true' ? 'dark' : '' } + const onSelectVersion = (version: string) => { + // [Joshen] Ideally we use but this works for now + if (!library) return + if (version === versions[0]) { + push(`/reference/${library}`) + } else { + push(`/reference/${library}/${version}`) + } + } + return ( + {versions.length > 0 && ( +
    + + {versions.map((version) => ( + + {version} + + ))} + +
    + )}
    diff --git a/apps/temp-docs/components/Navigation/Nav.constants.ts b/apps/temp-docs/components/Navigation/Navigation.constants.ts similarity index 96% rename from apps/temp-docs/components/Navigation/Nav.constants.ts rename to apps/temp-docs/components/Navigation/Navigation.constants.ts index 7a65550e57a..f573d630134 100644 --- a/apps/temp-docs/components/Navigation/Nav.constants.ts +++ b/apps/temp-docs/components/Navigation/Navigation.constants.ts @@ -7,19 +7,29 @@ import SupabaseAPINav from 'data/nav/supabase-api' import AuthServerNav from 'data/nav/auth-server' import StorageServerNav from 'data/nav/storage-server' -export interface NavMenu { - [key: string]: NavMenuGroup[] -} +import { NavMenu, References } from './Navigation.types' -export interface NavMenuGroup { - label: string - items: NavMenuSection[] -} - -export interface NavMenuSection { - name: string - url?: string - items: NavMenuSection[] +export const REFERENCES: References = { + javascript: { + name: 'supabase-js', + library: 'supabase-js', + icon: '/docs/img/libraries/javascript-icon.svg', + }, + dart: { + name: 'Flutter', + library: 'supabase-dart', + icon: '/docs/img/libraries/dart-icon.svg', + }, + cli: { + name: 'CLI', + library: undefined, + icon: '/docs/img/libraries/cli-icon.svg', + }, + api: { + name: 'API', + library: undefined, + icon: '/docs/img/libraries/api-icon.svg', + }, } export const menuItems: NavMenu = { diff --git a/apps/temp-docs/components/Navigation/Navigation.types.ts b/apps/temp-docs/components/Navigation/Navigation.types.ts new file mode 100644 index 00000000000..91617d172ff --- /dev/null +++ b/apps/temp-docs/components/Navigation/Navigation.types.ts @@ -0,0 +1,22 @@ +export interface NavMenu { + [key: string]: NavMenuGroup[] +} + +export interface NavMenuGroup { + label: string + items: NavMenuSection[] +} + +export interface NavMenuSection { + name: string + url?: string + items: NavMenuSection[] +} + +export interface References { + [key: string]: { + name: string + library?: string + icon: string + } +} diff --git a/apps/temp-docs/components/Navigation/SideBar.tsx b/apps/temp-docs/components/Navigation/SideBar.tsx index 96c0bbc4721..19285ac73cc 100644 --- a/apps/temp-docs/components/Navigation/SideBar.tsx +++ b/apps/temp-docs/components/Navigation/SideBar.tsx @@ -2,7 +2,8 @@ import Link from 'next/link' import Image from 'next/image' import { useRouter } from 'next/router' import { IconChevronRight, IconArrowLeft } from '~/../../packages/ui' -import { NavMenuGroup, NavMenuSection } from './Nav.constants' +import { REFERENCES } from './Navigation.constants' +import { NavMenuGroup, NavMenuSection } from './Navigation.types' import * as Accordion from '@radix-ui/react-accordion' const SideBar = ({ menuItems = [] }: { menuItems: any }) => { @@ -10,13 +11,7 @@ const SideBar = ({ menuItems = [] }: { menuItems: any }) => { const pathSegments = asPath.split('/') const isInReferencePages = pathSegments.includes('reference') && pathSegments.length >= 3 - const references = { - javascript: { name: 'supabase-js', icon: '/docs/img/libraries/javascript-icon.svg' }, - dart: { name: 'Flutter', icon: '/docs/img/libraries/dart-icon.svg' }, - cli: { name: 'CLI', icon: '/docs/img/libraries/cli-icon.svg' }, - api: { name: 'API', icon: '/docs/img/libraries/api-icon.svg' }, - } - const referenceMeta = pathSegments.length >= 3 ? references[pathSegments[2]] : undefined + const referenceMeta = pathSegments.length >= 3 ? REFERENCES[pathSegments[2]] : undefined const currentSection: NavMenuGroup = menuItems.find((group) => { const foundItem = group.items.find((section) => { @@ -45,8 +40,6 @@ const SideBar = ({ menuItems = [] }: { menuItems: any }) => { }) : undefined - console.log({ currentSection, currentSubSection }) - return (
    - - - -```dart -final subscription = supabase.auth.onAuthStateChange((event, session) { - print(session?.user?.id); - // handle auth state change -}); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Listen to auth changes - - - - - - - -```dart -final subscription = supabase.auth.onAuthStateChange((event, session) { - print(session?.user?.id); - // handle auth state change -}); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/auth-session.mdx b/apps/temp-docs/docs/dart/auth-session.mdx deleted file mode 100644 index 361bb5d22fb..00000000000 --- a/apps/temp-docs/docs/dart/auth-session.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: auth-session -title: "auth.session()" -slug: auth-session -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Returns the session data, if there is an active session. - - - - - - -```dart -final session = supabase.auth.session(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Get the session data - - - - - - - -```dart -final session = supabase.auth.session(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/auth-signin.mdx b/apps/temp-docs/docs/dart/auth-signin.mdx deleted file mode 100644 index 31ab4d1a35a..00000000000 --- a/apps/temp-docs/docs/dart/auth-signin.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -id: auth-signin -title: 'auth.signIn()' -slug: auth-signin -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs' -import TabsPanel from '@theme/TabsPanel' - -Log in an existing user, or login via a third-party provider. - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com', password: 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -## Notes - -- A user can sign up via email, phone number. -- 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) -- Similarly, if you provide `phone` without a `password`, the user will be sent a one time password. -- If you are looking to sign users in with OAuth in Flutter apps, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider). - -## Examples - -### Sign in with email. - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com', password: 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -### Sign in with magic link. - -If email is provided, but 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. - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com'); - -final error = res.error; -``` - - - - - -### Get OAuth sign in URL. - -Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth. -If you are looking to sign in a user via OAuth on Flutter app, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider). - - - - - -```dart -final res = await supabase.auth.signIn(provider: Provider.github); - -final url = res.data?.url; -final error = res.error; -``` - - - - diff --git a/apps/temp-docs/docs/dart/auth-signinwithprovider.mdx b/apps/temp-docs/docs/dart/auth-signinwithprovider.mdx deleted file mode 100644 index 62863ba012e..00000000000 --- a/apps/temp-docs/docs/dart/auth-signinwithprovider.mdx +++ /dev/null @@ -1,129 +0,0 @@ ---- -id: auth-signinwithprovider -title: "auth.signInWithProvider()" -slug: auth-signinwithprovider -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Signs the user in using third party OAuth providers. - - - - - - -```dart -final res = await supabase.auth.signInWithProvider(Provider.github); - -final error = res.error; -``` - - - - - - - - - - -## Notes - -- `auth.signInWithProvider()` is only available on `supabase_flutter` -- It will open the browser to the relevant login page. - - - - - - - - - - -## Examples - -### Sign in with provider. - - - - - - - -```dart -final res = await supabase.auth.signInWithProvider(Provider.github); - -final error = res.error; -``` - - - - - - -### With `redirectTo` - -Specify the redirect link to bring back the user via deeplink. -Note that `redirectTo` should be null for Flutter Web. - - - - - - -```dart -final res = await supabase.auth.signInWithProvider( - Provider.github, - options: AuthOptions( - redirectTo: kIsWeb - ? null - : 'io.supabase.flutter://reset-callback/'), -); - -final error = res.error; -``` - - - - - - -### With scopes - -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. - - - - - - -```dart -const { user, session, error } = await supabase.auth.signIn({ - provider: 'github' -}, { - scopes: 'repo gist notifications' -}) -const oAuthToken = session.provider_token // use to access provider API -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/auth-signout.mdx b/apps/temp-docs/docs/dart/auth-signout.mdx deleted file mode 100644 index d1458aec554..00000000000 --- a/apps/temp-docs/docs/dart/auth-signout.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -id: auth-signout -title: "auth.signOut()" -slug: auth-signout -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Signs out the current user, if there is a logged in user. - - - - - - -```dart -final res = await supabase.auth.signOut(); - -final error = res.error; -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Sign out - - - - - - - -```dart -final res = await supabase.auth.signOut(); - -final error = res.error; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/auth-signup.mdx b/apps/temp-docs/docs/dart/auth-signup.mdx deleted file mode 100644 index b891b85bc2f..00000000000 --- a/apps/temp-docs/docs/dart/auth-signup.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: auth-signup -title: 'auth.signUp()' -slug: auth-signup -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs' -import TabsPanel from '@theme/TabsPanel' - -Creates a new user. - - - - - -```dart -final res = await supabase.auth.signUp('example@email.com', 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -## Notes - -- 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) - -## Examples - -### Sign up. - - - - - -```dart -final res = await supabase.auth.signUp('example@email.com', 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -### Sign up with third-party providers. - -If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider) method available on `supabase_flutter`. diff --git a/apps/temp-docs/docs/dart/auth-update.mdx b/apps/temp-docs/docs/dart/auth-update.mdx deleted file mode 100644 index 95451f08b8e..00000000000 --- a/apps/temp-docs/docs/dart/auth-update.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: auth-update -title: "auth.update()" -slug: auth-update -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Updates user data, if there is a logged in user. - - - - - - -```dart -final res = await supabase.auth.update( - UserAttributes(data: {'hello': 'world'}) -); - -final error = res.error; -``` - - - - - - - - - - -## Notes - -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 - -### Update a user's metadata. - - - - - - - -```dart -final res = await supabase.auth.update( - UserAttributes(data: {'hello': 'world'}) -); - -final error = res.error; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/auth-user.mdx b/apps/temp-docs/docs/dart/auth-user.mdx deleted file mode 100644 index fb11208dea8..00000000000 --- a/apps/temp-docs/docs/dart/auth-user.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: auth-user -title: "auth.user()" -slug: auth-user -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Returns the user data, if there is a logged in user. - - - - - - -```dart -final user = supabase.auth.user(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Get the logged in user - - - - - - - -```dart -final user = supabase.auth.user(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/containedby.mdx b/apps/temp-docs/docs/dart/containedby.mdx deleted file mode 100644 index 0902ece9744..00000000000 --- a/apps/temp-docs/docs/dart/containedby.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: containedby -title: ".containedBy()" -slug: containedby -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .containedBy('main_exports', ['orks', 'surveillance', 'evil']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/contains.mdx b/apps/temp-docs/docs/dart/contains.mdx deleted file mode 100644 index c350feeecbc..00000000000 --- a/apps/temp-docs/docs/dart/contains.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: contains -title: ".contains()" -slug: contains -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/delete.mdx b/apps/temp-docs/docs/dart/delete.mdx deleted file mode 100644 index 37b570eefa3..00000000000 --- a/apps/temp-docs/docs/dart/delete.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: delete -title: "Delete data: delete()" -slug: delete -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs a DELETE on the table. - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .match({ 'id': 666 }) - .execute(); -``` - - - - - - - - - - -## Notes - -TODO update link to dart -- `delete()` should always be combined with [Filters](/docs/reference/javascript/using-filters) to target the item(s) you wish to delete. - - - - - - - - - - -## Examples - -### Delete records - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .match({ 'id': 666 }) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/eq.mdx b/apps/temp-docs/docs/dart/eq.mdx deleted file mode 100644 index b631453c7f3..00000000000 --- a/apps/temp-docs/docs/dart/eq.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: eq -title: ".eq()" -slug: eq -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` exactly matches the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .eq('name', 'The shire') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .eq('name', 'The shire') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .eq('name', 'San Francisco') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .eq('name', 'Mordor') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .eq('name', 'San Francisco') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/filter.mdx b/apps/temp-docs/docs/dart/filter.mdx deleted file mode 100644 index b637f533442..00000000000 --- a/apps/temp-docs/docs/dart/filter.mdx +++ /dev/null @@ -1,170 +0,0 @@ ---- -id: filter -title: ".filter()" -slug: filter -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose `column` satisfies the filter. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - - - - - -## Notes - -- `.filter()` expects you to use the raw [PostgREST syntax](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for the filter values, so it should only be used as an escape hatch in case other filters don't work. - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .filter('name', 'in', '("Paris","Tokyo")') -``` - - - - - - -### Filter embedded resources - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, countries ( name )') - .filter('countries.name', 'in', '("France","Japan")') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/getsubscriptions.mdx b/apps/temp-docs/docs/dart/getsubscriptions.mdx deleted file mode 100644 index 1ddf8924852..00000000000 --- a/apps/temp-docs/docs/dart/getsubscriptions.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: getsubscriptions -title: "getSubscriptions()" -slug: getsubscriptions -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Returns an array of all your subscriptions. - - - - - - -```dart -final subscriptions = supabase.getSubscriptions(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Get all subscriptions - - - - - - - -```dart -final subscriptions = supabase.getSubscriptions(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/gt.mdx b/apps/temp-docs/docs/dart/gt.mdx deleted file mode 100644 index 4c211f5b871..00000000000 --- a/apps/temp-docs/docs/dart/gt.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: gt -title: ".gt()" -slug: gt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is greater than the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gt('country_id', 250) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gt('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .gt('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .gt('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .gt('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/gte.mdx b/apps/temp-docs/docs/dart/gte.mdx deleted file mode 100644 index 1effd302292..00000000000 --- a/apps/temp-docs/docs/dart/gte.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: gte -title: ".gte()" -slug: gte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is greater than or equal to the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gte('country_id', 250) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gte('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .gte('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .gte('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .gte('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/ilike.mdx b/apps/temp-docs/docs/dart/ilike.mdx deleted file mode 100644 index 35fa42c2602..00000000000 --- a/apps/temp-docs/docs/dart/ilike.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: ilike -title: ".ilike()" -slug: ilike -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value in the stated `column` matches the supplied `pattern` (case insensitive). - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .ilike('name', '%la%') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .ilike('name', '%la%') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .ilike('name', '%la%') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .ilike('name', '%la%') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .ilike('name', '%la%') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/in_.mdx b/apps/temp-docs/docs/dart/in_.mdx deleted file mode 100644 index 23d18ca4ed3..00000000000 --- a/apps/temp-docs/docs/dart/in_.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -id: in_ -title: ".in_()" -slug: in_ -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is found on the specified `values`. - -`is_` and `in_` filter methods are suffixed with `_` to avoid collisions with reserved keywords. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/index.mdx b/apps/temp-docs/docs/dart/index.mdx deleted file mode 100644 index acffea0ac94..00000000000 --- a/apps/temp-docs/docs/dart/index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: index -title: "Getting started" -slug: getting-started -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - -Supabase Dart. \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/initializing.mdx b/apps/temp-docs/docs/dart/initializing.mdx deleted file mode 100644 index 87b3b493a6c..00000000000 --- a/apps/temp-docs/docs/dart/initializing.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: initializing -title: "Initializing" -slug: initializing -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -## Dart -You can initialize a new Supabase client using the `SupabaseClient()` 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. - - -## Flutter - -For `supabase_flutter`, you will be using the static `initialize()` method on `Supabase` class. - - - - - - - - - - - - - - - - - - - - -## Examples - -### Dart SupabaseClient() - - - - - - - -```dart -final supabase = SupabaseClient('https://xyzcompany.supabase.co', 'public-anon-key'); -``` - - - - - - -### Flutter initialize() - - - - - - - -```dart title="main.dart" -Future main() async { - await Supabase.initialize(url: 'https://xyzcompany.supabase.co', anonKey: 'public-anon-key'); - runApp(MyApp()); -} -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/insert.mdx b/apps/temp-docs/docs/dart/insert.mdx deleted file mode 100644 index c5422081ee2..00000000000 --- a/apps/temp-docs/docs/dart/insert.mdx +++ /dev/null @@ -1,102 +0,0 @@ ---- -id: insert -title: "Create data: insert()" -slug: insert -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs an INSERT into the table. - - - - - - -```dart -final res = await supabase - .from('cities') - .insert([ - {'name': 'The Shire', 'country_id': 554} - ]).execute(); -``` - - - - - - - - - - -## Notes - -- 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 - -### Create a record - - - - - - - -```dart -final res = await supabase - .from('cities') - .insert([ - {'name': 'The Shire', 'country_id': 554} - ]).execute(); -``` - - - - - - -### Bulk create - - - - - - - -```dart -final res = await supabase - .from('cities') - .insert([ - {'name': 'The Shire', 'country_id': 554}, - {'name': 'Rohan', 'country_id': 555}, - ]).execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/installing.mdx b/apps/temp-docs/docs/dart/installing.mdx deleted file mode 100644 index 290000ecd86..00000000000 --- a/apps/temp-docs/docs/dart/installing.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: installing -title: "Installing" -slug: installing -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -## Dart - -Dart libraries are built and supported by the community. - -```bash -dart pub add supabase -``` - -Find the source code on [GitHub](https://github.com/supabase/supabase-dart). - -## Flutter - -For Flutter project, you can use [supabase_flutter](https://github.com/supabase/supabase-flutter). - -```bash -flutter pub add supabase_flutter -``` - -`supabase_flutter` plugin uses `supabase` plugin internally, and it adds some Flutter specific functionality such as handling deeplinks coming back from magic link verifications. -If you are creating a Flutter application, we recommend using `supabase_flutter` instead of `supabase`. - -For the most part `supabase_flutter` shares the same API as `supabase` with few exceptions such as initialization or OAuth sign in. \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/is_.mdx b/apps/temp-docs/docs/dart/is_.mdx deleted file mode 100644 index c1d5af70780..00000000000 --- a/apps/temp-docs/docs/dart/is_.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -id: is_ -title: ".is_()" -slug: is_ -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -A check for exact equality (null, true, false), finds all rows whose value on the stated `column` exactly match the specified `value`. - -`is_` and `in_` filter methods are suffixed with `_` to avoid collisions with reserved keywords. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .is_('name', null) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .is_('name', null) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .is_('name', null) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .is_('name', null) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .is_('name', null) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/like.mdx b/apps/temp-docs/docs/dart/like.mdx deleted file mode 100644 index 4fae8c3c8c7..00000000000 --- a/apps/temp-docs/docs/dart/like.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -id: like -title: ".like()" -slug: like -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value in the stated `column` matches the supplied `pattern` (case sensitive). - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .like('name', '%la%') - .execute(); -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - column - - - required - - - object - -

      -
      - -The column to filter on. - -
      - -
    • - - -
    • -

      - - pattern - - - required - - - string - -

      -
      - -The pattern to filter with. - -
      - -
    • - -
    - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .like('name', '%la%') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .like('name', '%la%') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .like('name', '%la%') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .like('name', '%la%') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/limit.mdx b/apps/temp-docs/docs/dart/limit.mdx deleted file mode 100644 index 2a22a201405..00000000000 --- a/apps/temp-docs/docs/dart/limit.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -id: limit -title: "limit()" -slug: limit -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Limits the result with the specified count. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .limit(1) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .limit(1) - .execute(); -``` - - - - - - -### With embedded resources - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, cities(name)') - .eq('name', 'United States') - .limit(1, foreignTable: 'cities' ) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/lt.mdx b/apps/temp-docs/docs/dart/lt.mdx deleted file mode 100644 index b98cd7589b7..00000000000 --- a/apps/temp-docs/docs/dart/lt.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: lt -title: ".lt()" -slug: lt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is less than the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lt('country_id', 250) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lt('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .lt('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .lt('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .lt('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/lte.mdx b/apps/temp-docs/docs/dart/lte.mdx deleted file mode 100644 index 8337ccc9a89..00000000000 --- a/apps/temp-docs/docs/dart/lte.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -id: lte -title: ".lte()" -slug: lte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is less than or equal to the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lte('country_id', 250) - .execute(); -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - column - - - required - - - object - -

      -
      - -The column to filter on. - -
      - -
    • - - -
    • -

      - - value - - - required - - - object - -

      -
      - -The value to filter with. - -
      - -
    • - -
    - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lte('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .lte('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .lte('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .lte('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/match.mdx b/apps/temp-docs/docs/dart/match.mdx deleted file mode 100644 index 69f9a18c47d..00000000000 --- a/apps/temp-docs/docs/dart/match.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: match -title: ".match()" -slug: match -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose columns match the specified `query` object. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/neq.mdx b/apps/temp-docs/docs/dart/neq.mdx deleted file mode 100644 index 92654e12b36..00000000000 --- a/apps/temp-docs/docs/dart/neq.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: neq -title: ".neq()" -slug: neq -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` doesn't match the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .neq('name', 'The shire') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .neq('name', 'The shire') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .neq('name', 'San Francisco') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .neq('name', 'Mordor') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .neq('name', 'Lagos') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/not.mdx b/apps/temp-docs/docs/dart/not.mdx deleted file mode 100644 index cc41b7f6038..00000000000 --- a/apps/temp-docs/docs/dart/not.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: not -title: ".not()" -slug: not -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows which doesn't satisfy the filter. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities) - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/or.mdx b/apps/temp-docs/docs/dart/or.mdx deleted file mode 100644 index 4852ebc659b..00000000000 --- a/apps/temp-docs/docs/dart/or.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -id: or -title: ".or()" -slug: or -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows satisfying at least one of the filters. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .or('id.eq.20,id.eq.30') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .or('id.eq.20,id.eq.30') - .execute(); -``` - - - - - - -### Use `or` with `and` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .or('id.gt.20,and(name.eq.New Zealand,name.eq.France)') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/order.mdx b/apps/temp-docs/docs/dart/order.mdx deleted file mode 100644 index 18daaacd619..00000000000 --- a/apps/temp-docs/docs/dart/order.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -id: order -title: "order()" -slug: order -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Orders the result with the specified column. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .order('id', ascending: false ) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .order('id', ascending: false ) - .execute(); -``` - - - - - - -### With embedded resources - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, cities(name)') - .eq('name', 'United States') - .order('name', foreignTable: 'cities') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/overlaps.mdx b/apps/temp-docs/docs/dart/overlaps.mdx deleted file mode 100644 index d7ca0f689b2..00000000000 --- a/apps/temp-docs/docs/dart/overlaps.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: overlaps -title: ".overlaps()" -slug: overlaps -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/range.mdx b/apps/temp-docs/docs/dart/range.mdx deleted file mode 100644 index affd16f8583..00000000000 --- a/apps/temp-docs/docs/dart/range.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -id: range -title: "range()" -slug: range -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Limits the result to rows within the specified range, inclusive. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .range(0,3) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .range(0,3) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/rangeadjacent.mdx b/apps/temp-docs/docs/dart/rangeadjacent.mdx deleted file mode 100644 index f31f4f505e9..00000000000 --- a/apps/temp-docs/docs/dart/rangeadjacent.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangeadjacent -title: ".rangeAdjacent()" -slug: rangeadjacent -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/rangegt.mdx b/apps/temp-docs/docs/dart/rangegt.mdx deleted file mode 100644 index 6ddd4b34ed8..00000000000 --- a/apps/temp-docs/docs/dart/rangegt.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangegt -title: ".rangeGt()" -slug: rangegt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/rangegte.mdx b/apps/temp-docs/docs/dart/rangegte.mdx deleted file mode 100644 index 3a674440832..00000000000 --- a/apps/temp-docs/docs/dart/rangegte.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangegte -title: ".rangeGte()" -slug: rangegte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/rangelt.mdx b/apps/temp-docs/docs/dart/rangelt.mdx deleted file mode 100644 index 43cb40cbd68..00000000000 --- a/apps/temp-docs/docs/dart/rangelt.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangelt -title: ".rangeLt()" -slug: rangelt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/rangelte.mdx b/apps/temp-docs/docs/dart/rangelte.mdx deleted file mode 100644 index c673b888736..00000000000 --- a/apps/temp-docs/docs/dart/rangelte.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangelte -title: ".rangeLte()" -slug: rangelte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeLte('population_range_millions', [150, 250]) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/removesubscription.mdx b/apps/temp-docs/docs/dart/removesubscription.mdx deleted file mode 100644 index 76504e2880d..00000000000 --- a/apps/temp-docs/docs/dart/removesubscription.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -id: removesubscription -title: "removeSubscription()" -slug: removesubscription -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Removes an active subscription and returns the number of open connections. - - - - - - -```dart -supabase.removeSubscription(mySubscription); -``` - - - - - - - - - - -## Notes - -- 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 - -### Remove a subscription - - - - - - - -```dart -supabase.removeSubscription(mySubscription); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/reset-password-email.mdx b/apps/temp-docs/docs/dart/reset-password-email.mdx deleted file mode 100644 index 27086ba3c05..00000000000 --- a/apps/temp-docs/docs/dart/reset-password-email.mdx +++ /dev/null @@ -1,114 +0,0 @@ ---- -id: reset-password-email -title: "Reset Password (Email)" -slug: reset-password-email -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Sends a reset request to an email address. - - - - - - -```dart -final res = await supabase.auth.api.resetPasswordForEmail('user@example.com'); - -final error = res.error; -``` - - - - - - - - - - -## Notes - -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: - -```dart -final res = await supabase.auth.api.updateUser( - accessToken, - UserAttributes(password: 'NEW_PASSWORD'), -); -``` - - - - - - - - - - -## Examples - -### Reset password - - - - - - - -```dart -final res = await supabase.auth.api.resetPasswordForEmail('user@example.com'); - -final error = res.error; -``` - - - - - - -### Reset password for Flutter - - - - - - - -You can pass `redirectTo` to open the app via deeplink when user opens the password reset email. -```dart -final res = await supabase.auth.api.resetPasswordForEmail( - 'user@example.com', - options: AuthOptions(redirectTo: kIsWeb - ? null - : 'io.supabase.flutter://reset-callback/'), -); - -final error = res.error; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/rpc.mdx b/apps/temp-docs/docs/dart/rpc.mdx deleted file mode 100644 index f24ef39b765..00000000000 --- a/apps/temp-docs/docs/dart/rpc.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -id: rpc -title: "Stored Procedures: rpc()" -slug: rpc -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -You can call stored procedures 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. - - - - - - -```dart -final res = await supabase - .rpc('hello_world') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Call a stored procedure - -This is an example invoking a stored procedure. - - - - - -```dart -final res = await supabase - .rpc('hello_world') - .execute(); -``` - - - - - - -### With Parameters - - - - - - - -```dart -final res = await supabase - .rpc('echo_city', params: { 'name': 'The Shire' }) - .execute(); -``` - - - - - - -### With count option - -You can specify a count option to get the row count along with your data. -Allowed values for count option are `exact`, `planned` and `estimated`. - - - - - - -```dart -final res = await supabase - .rpc('hello_world') - .execute(count: CountOption.exact); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/select.mdx b/apps/temp-docs/docs/dart/select.mdx deleted file mode 100644 index 15037ea81b6..00000000000 --- a/apps/temp-docs/docs/dart/select.mdx +++ /dev/null @@ -1,272 +0,0 @@ ---- -id: select -title: "Fetch data: select()" -slug: select -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs vertical filtering with SELECT. - - - - - - -```dart -final res = await supabase - .from('cities') - .select() - .execute(); - -final data = res.data; -final error = res.error; -``` - - - - - - - - - - -## Notes - -- 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](/docs/reference/dart/using-modifiers) -- `select()` can be combined with [Filters](/docs/reference/dart/using-filters) - - - - - - - - - - -## Examples - -### Getting your data - - - - - - - -```dart -final res = await supabase - .from('cities') - .select() - .execute(); - -final data = res.data; -final error = res.error; -``` - - - - - - -### Selecting specific columns - -You can select specific fields from your tables. - - - - - -```dart -final res = await supabase - .from('cities') - .select('name') - .execute(); -``` - - - - - - -### Query foreign tables - -If your database has relationships, you can query related tables too. - - - - - -```dart -final res = await supabase - .from('countries') - .select(''' - name, - cities ( - name - ) - ''') - .execute(); -``` - - - - - - -### Query the same foreign table multiple times - -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: - - - - - - -```dart -final res = await supabase - .from('products') - .select(''' - id, - supplier:supplier_id ( name ), - purchaser:purchaser_id ( name ) - ''') - .execute(); -``` - - - - - - -### Filtering with inner joins - -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": - - - - - - - -``` -Not yet implemented -``` - - - - - - -### Querying with count option - -You can get the number of rows by using the count option. -Allowed values for count option are [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). - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name') - .execute(count: CountOption.exact); - -final count = res.count; -``` - - - - - - -### Querying JSON data - -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. - - - - - - -```dart -final res = await supabase - .from('users') - .select(''' - id, name, - address->street - ''') - .eq('address->postcode', 90210) - .execute(); -``` - - - - - - -### Return data as CSV - -By default the data is returned in JSON format, however you can also request for it to be returned as Comma Separated Values. - - - - - - -```dart -final res = await supabase - .from('users') - .select() - .csv() - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/single.mdx b/apps/temp-docs/docs/dart/single.mdx deleted file mode 100644 index 8d201ae0dca..00000000000 --- a/apps/temp-docs/docs/dart/single.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -id: single -title: "single()" -slug: single -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Retrieves only one row from the result. Result must be one row (e.g. using limit), otherwise this will result in an error. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .single() - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .single() - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-createbucket.mdx b/apps/temp-docs/docs/dart/storage-createbucket.mdx deleted file mode 100644 index 01ea9fa63b0..00000000000 --- a/apps/temp-docs/docs/dart/storage-createbucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-createbucket -title: "createBucket()" -slug: storage-createbucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Creates a new Storage bucket - - - - - - -```dart -final res = await supabase - .storage - .createBucket('avatars'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `insert` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Create bucket - - - - - - - -```dart -final res = await supabase - .storage - .createBucket('avatars'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-deletebucket.mdx b/apps/temp-docs/docs/dart/storage-deletebucket.mdx deleted file mode 100644 index 60a020ac22b..00000000000 --- a/apps/temp-docs/docs/dart/storage-deletebucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-deletebucket -title: "deleteBucket()" -slug: storage-deletebucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Deletes an existing bucket. A bucket can't be deleted with existing objects inside it. You must first `empty()` the bucket. - - - - - - -```dart -final res = await supabase - .storage - .deleteBucket('avatars'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` and `delete` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Delete bucket - - - - - - - -```dart -final res = await supabase - .storage - .deleteBucket('avatars'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-emptybucket.mdx b/apps/temp-docs/docs/dart/storage-emptybucket.mdx deleted file mode 100644 index 0476cb9d25c..00000000000 --- a/apps/temp-docs/docs/dart/storage-emptybucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-emptybucket -title: "emptyBucket()" -slug: storage-emptybucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Removes all objects inside a single bucket. - - - - - - -```dart -final res = await supabase - .storage - .emptyBucket('avatars'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` - - `objects` permissions: `select` and `delete` - - - - - - - - - - -## Examples - -### Empty bucket - - - - - - - -```dart -final res = await supabase - .storage - .emptyBucket('avatars'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-createsignedurl.mdx b/apps/temp-docs/docs/dart/storage-from-createsignedurl.mdx deleted file mode 100644 index 9609d9a96c6..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-createsignedurl.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -id: storage-from-createsignedurl -title: "from.createSignedUrl()" -slug: storage-from-createsignedurl -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Create signed url to download file without requiring permissions. This URL can be valid for a set number of seconds. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .createSignedUrl('avatar1.png', 60); - -final signedURL = res.data; -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `select` - - - - - - - - - - -## Examples - -### Create Signed URL - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .createSignedUrl('avatar1.png', 60); - -final signedURL = res.data; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-download.mdx b/apps/temp-docs/docs/dart/storage-from-download.mdx deleted file mode 100644 index f5173ee7804..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-download.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-download -title: "from.download()" -slug: storage-from-download -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Downloads a file. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .download('avatar1.png'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `select` - - - - - - - - - - -## Examples - -### Download file - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .download('avatar1.png'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-getpublicurl.mdx b/apps/temp-docs/docs/dart/storage-from-getpublicurl.mdx deleted file mode 100644 index 1013ec51f67..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-getpublicurl.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: storage-from-getpublicurl -title: 'from.getPublicUrl()' -slug: storage-from-getpublicurl -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs' -import TabsPanel from '@theme/TabsPanel' - -Retrieve URLs for assets in public buckets - - - - - -```dart -final res = supabase - .storage - .from('public-bucket') - .getPublicUrl('avatar1.png'); - -final publicURL = res.data; -``` - - - - - -## Notes - -- The bucket needs to be set to public, either via [updateBucket()](/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 - -### Returns the URL for an asset in a public bucket - - - - - -```dart -final res = supabase - .storage - .from('public-bucket') - .getPublicUrl('avatar1.png'); - -final publicURL = res.data; -``` - - - - diff --git a/apps/temp-docs/docs/dart/storage-from-list.mdx b/apps/temp-docs/docs/dart/storage-from-list.mdx deleted file mode 100644 index 36c9dc50985..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-list.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-list -title: "from.list()" -slug: storage-from-list -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Lists all the files within a bucket. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .list(); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `select` - - - - - - - - - - -## Examples - -### List files in a bucket - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .list(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-move.mdx b/apps/temp-docs/docs/dart/storage-from-move.mdx deleted file mode 100644 index 7c14443d94a..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-move.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-move -title: "from.move()" -slug: storage-from-move -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Moves an existing file, optionally renaming it at the same time. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .move('public/avatar1.png', 'private/avatar2.png'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `update` and `select` - - - - - - - - - - -## Examples - -### Move file - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .move('public/avatar1.png', 'private/avatar2.png'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-remove.mdx b/apps/temp-docs/docs/dart/storage-from-remove.mdx deleted file mode 100644 index 083be494c4e..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-remove.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-remove -title: "from.remove()" -slug: storage-from-remove -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Deletes files within the same bucket - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .remove(['avatar1.png']); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `delete` and `select` - - - - - - - - - - -## Examples - -### Delete file - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .remove(['avatar1.png']); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-update.mdx b/apps/temp-docs/docs/dart/storage-from-update.mdx deleted file mode 100644 index cbe7ccccfd9..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-update.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -id: storage-from-update -title: "from.update()" -slug: storage-from-update -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Replaces an existing file at the specified path with a new one. - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .update('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `update` and `select` - - - - - - - - - - -## Examples - -### Update file - - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .update('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-from-upload.mdx b/apps/temp-docs/docs/dart/storage-from-upload.mdx deleted file mode 100644 index 59b18350554..00000000000 --- a/apps/temp-docs/docs/dart/storage-from-upload.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -id: storage-from-upload -title: "from.upload()" -slug: storage-from-upload -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Uploads a file to an existing bucket. - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .upload('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - path - - - required - - - string - -

      -
      - -The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. - -
      - -
    • - - -
    • -

      - - fileBody - - - required - - - ArrayBuffer | ArrayBufferView | Blob | Buffer | File | FormData | ReadableStream | ReadableStream | URLSearchParams | string - -

      -
      - -The body of the file to be stored in the bucket. - -
      - -
    • - - -
    • -

      - - fileOptions - - - optional - - - FileOptions - -

      -
      - -HTTP headers. -`cacheControl`: string, the `Cache-Control: max-age=` seconds value. -`contentType`: string, the `Content-Type` header value. Should be specified if using a `fileBody` that is neither `Blob` nor `File` nor `FormData`, otherwise will default to `text/plain;charset=UTF-8`. -`upsert`: boolean, whether to perform an upsert. - -
      - -
    • - -
    - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `insert` - - - - - - - - - - -## Examples - -### Upload file - - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .upload('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-getbucket.mdx b/apps/temp-docs/docs/dart/storage-getbucket.mdx deleted file mode 100644 index 77608338562..00000000000 --- a/apps/temp-docs/docs/dart/storage-getbucket.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -id: storage-getbucket -title: "getBucket()" -slug: storage-getbucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Retrieves the details of an existing Storage bucket. - - - - - - -```dart -final res = await supabase - .storage - .getBucket('avatars') -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - id - - - required - - - string - -

      -
      - -The unique identifier of the bucket you would like to retrieve. - -
      - -
    • - -
    - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Get bucket - - - - - - - -```dart -final res = await supabase - .storage - .getBucket('avatars') -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-listbuckets.mdx b/apps/temp-docs/docs/dart/storage-listbuckets.mdx deleted file mode 100644 index c6b8d028480..00000000000 --- a/apps/temp-docs/docs/dart/storage-listbuckets.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-listbuckets -title: "listBuckets()" -slug: storage-listbuckets -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Retrieves the details of all Storage buckets within an existing product. - - - - - - -```dart -final res = await supabase - .storage - .listBuckets() -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### List buckets - - - - - - - -```dart -final res = await supabase - .storage - .listBuckets() -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/storage-updatebucket.mdx b/apps/temp-docs/docs/dart/storage-updatebucket.mdx deleted file mode 100644 index c89037e2f2d..00000000000 --- a/apps/temp-docs/docs/dart/storage-updatebucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-updatebucket -title: "updateBucket()" -slug: storage-updatebucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Updates a new Storage bucket - - - - - - -```dart -final res = await supabase - .storage - .updateBucket('avatars', { public: false }); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `update` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Update bucket - - - - - - - -```dart -final res = await supabase - .storage - .updateBucket('avatars', { public: false }); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/stream.mdx b/apps/temp-docs/docs/dart/stream.mdx deleted file mode 100644 index 167b41e13c4..00000000000 --- a/apps/temp-docs/docs/dart/stream.mdx +++ /dev/null @@ -1,147 +0,0 @@ ---- -id: stream -title: "stream()" -slug: stream -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Notifies of data at the queried table. - - - - - - -```dart -supabase - .from('countries') - .stream() - .execute(); -``` - - - - - - - - - - -## Notes - -- `stream()` will emit the initial data as well as any further change on the database as `Stream` of `List>` by combining Postgrest and Realtime. - - - - - - - - - - -## Examples - -### Listening to a specific table - - - - - - - -```dart -supabase - .from('countries') - .stream() - .execute(); -``` - - - - - - -### Listening to a specific rows within a table - -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. -This syntax is the as how you can filter data in Realtime - - - - - - -```dart -supabase - .from('countries:id=eq.120') - .stream() - .execute(); -``` - - - - - - -### With `order()` - - - - - - - -```dart -supabase - .from('countries') - .stream() - .order('name', ascending: false) - .execute(); -``` - - - - - - -### With `limit()` - - - - - - - -```dart -supabase - .from('countries') - .stream() - .order('name', ascending: false) - .limit(10) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/subscribe.mdx b/apps/temp-docs/docs/dart/subscribe.mdx deleted file mode 100644 index 6c109f64659..00000000000 --- a/apps/temp-docs/docs/dart/subscribe.mdx +++ /dev/null @@ -1,237 +0,0 @@ ---- -id: subscribe -title: "on().subscribe()" -slug: subscribe -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Subscribe to realtime changes in your database. - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.all, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - - - - - -## Notes - -- Realtime is disabled by default for new Projects for better database performance and security. You can turn it on by [managing replication](/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 - -### Listen to all database changes - - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.all, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to a specific table - - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.all, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to inserts - - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.insert, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to updates - -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; -``` - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.update, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to deletes - -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; -``` - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.delete, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to multiple events - -You can chain listeners if you want to listen to multiple events for each table. - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.insert, handleInsert) - .on(SupabaseEventTypes.delete, handleDelete) - .subscribe(); -``` - - - - - - -### Listening to row level changes - -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. - - - - - -```dart -final mySubscription = supabase - .from('countries:id=eq.200') - .on(SupabaseEventTypes.update, handleRecordUpdated) - .subscribe(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/textsearch.mdx b/apps/temp-docs/docs/dart/textsearch.mdx deleted file mode 100644 index edda6a8dd14..00000000000 --- a/apps/temp-docs/docs/dart/textsearch.mdx +++ /dev/null @@ -1,147 +0,0 @@ ---- -id: textsearch -title: ".textSearch()" -slug: textsearch -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose tsvector value on the stated `column` matches to_tsquery(query). - - - - - - - - - - - - - - - - - - - - -## Examples - -### Text search - - - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat' & 'cat'", - config: 'english' - ) - .execute(); -``` - - - - - - -### Basic normalization - -Uses PostgreSQL's `plainto_tsquery` function. - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat' & 'cat'", - type: TextSearchType.plain, - config: 'english' - ) - .execute(); -``` - - - - - - -### Full normalization - -Uses PostgreSQL's `phraseto_tsquery` function. - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat' & 'cat'", - type: TextSearchType.phrase, - config: 'english' - ) - .execute(); -``` - - - - - - -### Full normalization - -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. - - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat or cat'", - type: TextSearchType.websearch, - config: 'english' - ) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/update.mdx b/apps/temp-docs/docs/dart/update.mdx deleted file mode 100644 index 18519852ff0..00000000000 --- a/apps/temp-docs/docs/dart/update.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -id: update -title: "Modify data: update()" -slug: update -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs an UPDATE on the table. - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Middle Earth' }) - .match({ 'name': 'Auckland' }) - .execute(); -``` - - - - - - - - - - -## Notes - -TODO update the link to dart -- `update()` should always be combined with [Filters](/docs/reference/javascript/using-filters) to target the item(s) you wish to update. - - - - - - - - - - -## Examples - -### Updating your data - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Middle Earth' }) - .match({ 'name': 'Auckland' }) - .execute(); -``` - - - - - - -### Updating JSON data - -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. - - - - - - -```dart -final res = await supabase - .from('users') - .update({ - 'address': { - 'street': 'Melrose Place', - 'postcode': 90210 - } - }) - .eq('address->postcode', 90210) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/upsert.mdx b/apps/temp-docs/docs/dart/upsert.mdx deleted file mode 100644 index 085eab75a02..00000000000 --- a/apps/temp-docs/docs/dart/upsert.mdx +++ /dev/null @@ -1,128 +0,0 @@ ---- -id: upsert -title: "Upsert data: upsert()" -slug: upsert -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs an UPSERT into the table. - - - - - - -```dart -final res = await supabase - .from('messages') - .upsert({ 'id': 3, 'message': 'foo', 'username': 'supabot' }) - .execute(); -``` - - - - - - - - - - -## Notes - -- 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 - -### Upsert your data - - - - - - - -```dart -final res = await supabase - .from('messages') - .upsert({ 'id': 3, 'message': 'foo', 'username': 'supabot' }) - .execute(); -``` - - - - - - -### Upserting into tables with constraints - -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`. - - - - - - -```dart -final res = await supabase - .from('users') - .upsert({ 'username': 'supabot' }, { 'onConflict': 'username' }) - .execute(); -``` - - - - - - -### Return the exact number of rows - -Allowed values for count option are `exact`, `planned` and `estimated`. - - - - - - -```dart -final res = await supabase - .from('users') - .upsert({ - 'id': 3, - 'message': 'foo', - 'username': 'supabot' - }) - .execute(count: CountOption.exact); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/using-filters.mdx b/apps/temp-docs/docs/dart/using-filters.mdx deleted file mode 100644 index 3296a3ee251..00000000000 --- a/apps/temp-docs/docs/dart/using-filters.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: using-filters -title: "Using Filters" -slug: using-filters -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Filters can be used on `select()`, `update()`, and `delete()` queries. - -If a Stored Procedure returns a table response, you can also apply filters. - -### Applying Filters - -You must apply your filters to the end of your query. For example: - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .eq('name', 'The Shire') // Correct - .execute(); - -final res = await supabase - .from('cities') - .eq('name', 'The Shire') // Incorrect - .select('name, country_id') - .execute(); -``` - -### Chaining - -Filters can be chained together to produce advanced queries. For example: - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gte('population', 1000) - .lt('population', 10000) - .execute(); -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/dart/using-modifiers.mdx b/apps/temp-docs/docs/dart/using-modifiers.mdx deleted file mode 100644 index 8aefaf43501..00000000000 --- a/apps/temp-docs/docs/dart/using-modifiers.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: using-modifiers -title: "Using Modifiers" -slug: using-modifiers -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Modifiers can be used on `select()` queries. - -If a Stored Procedure returns a table response, you can also apply modifiers to the `rpc()` function. \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/changing-timezones.mdx b/apps/temp-docs/docs/postgres/changing-timezones.mdx deleted file mode 100644 index d05e32afc8b..00000000000 --- a/apps/temp-docs/docs/postgres/changing-timezones.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -id: changing-timezones -title: "Changing Timezones" -slug: changing-timezones -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Data types. - - - - - - -```sql -alter database postgres -set timezone to 'America/New_York'; -``` - - - - - - - - - - -## Notes - -- View a full list of timezones on [Wikipedia](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). - - - - - - - - - - -## Examples - -### Change timezone - - - - - - - -```sql -alter database postgres -set timezone to 'America/New_York'; -``` - - - - - - -### Full list of timezones - -Get a full list of timezones supported by your database. This will return the following columns: - -- `name`: Time zone name -- `abbrev`: Time zone abbreviation -- `utc_offset`: Offset from UTC (positive means east of Greenwich) -- `is_dst`: True if currently observing daylight savings - - - - - - -```sql -select name, abbrev, utc_offset, is_dst -from pg_timezone_names() -order by name; -``` - - - - - - -### Search for a specific timezone - -Use `ilike` (case insensitive search) to find specific timezones. - - - - - -```sql -select * -from pg_timezone_names() -where name ilike '%york%'; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/columns.mdx b/apps/temp-docs/docs/postgres/columns.mdx deleted file mode 100644 index 0ccaa830381..00000000000 --- a/apps/temp-docs/docs/postgres/columns.mdx +++ /dev/null @@ -1,95 +0,0 @@ ---- -id: columns -title: "Columns" -slug: columns -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Creating columns. - - - - - - -```sql -create table table_name ( - id integer primary key, - data jsonb, - name text -); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### During table creation - - - - - - - -```sql -create table table_name ( - id integer primary key, - data jsonb, - name text -); -``` - - - - - - -### Create column - - - - - - - -```sql -alter table new_table -add new_column text; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/connection-strings.mdx b/apps/temp-docs/docs/postgres/connection-strings.mdx deleted file mode 100644 index 12e4f919c9c..00000000000 --- a/apps/temp-docs/docs/postgres/connection-strings.mdx +++ /dev/null @@ -1,135 +0,0 @@ ---- -id: connection-strings -title: "Connection Strings" -slug: connection-strings -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -There are various ways to connect to your database, depending on the configuration of your Postgres instance and the tool which you are connecting with. - - - - - - -```bash -postgres://postgres:postgres@localhost:5432/postgres -# or -postgresql://postgres:postgres@localhost:5432/postgres -``` - - - - - - - - - - -## Notes - -- [Official Documentation](https://www.postgresql.org/docs/current/libpq-connect.html). -- Avoid using special characters usernames and passwords. If you use special characters in a connection URL, you'll need to URL encode any special characters. - - - - - - - - - - -## Examples - -### Basic connection string - -If you're using a default setup, your postgres connection string will likely be in the format: - -`postgres://{user}:{password}@{host}:{port}/{database_name}` - - - - - - -```bash -postgres://postgres:postgres@localhost:5432/postgres -# or -postgresql://postgres:postgres@localhost:5432/postgres -``` - - - - - - -### JDBC - -See full [documentation](http://jdbc.postgresql.org/documentation/head/connect.html). - - - - - -```bash -jdbc:postgresql://{host}:{port}/{database_name} -``` - - - - - - -### ADO.NET - -See full [documentation](http://npgsql.projects.postgresql.org/docs/manual/UserManual.html). - - - - - -```bash -Server=host;Port=5432;User Id=username;Password=secret;Database=database_name; -``` - - - - - - -### PHP - -See full [documentation](http://php.net/manual/en/book.pgsql.php). - - - - - -```bash -host=hostname port=5432 dbname=databasename user=username password=secret -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/database-passwords.mdx b/apps/temp-docs/docs/postgres/database-passwords.mdx deleted file mode 100644 index 9f58234b1a1..00000000000 --- a/apps/temp-docs/docs/postgres/database-passwords.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: database-passwords -title: "Database Passwords" -slug: database-passwords -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Manage the passwords of your database users using any super user. - - - - - - - - - - - - - - - - - - - - -## Examples - -### Password reset - - - - - - - -```sql -alter user postgres -with password 'new_password'; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/database-users.mdx b/apps/temp-docs/docs/postgres/database-users.mdx deleted file mode 100644 index 8ccca2ce94a..00000000000 --- a/apps/temp-docs/docs/postgres/database-users.mdx +++ /dev/null @@ -1,53 +0,0 @@ ---- -id: database-users -title: "Database Users" -slug: database-users -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Users and Roles are almost interchangeable. - - - - - - - - - - - - - - - - - - - - -## Examples - -### Create New User - - - - - - - -```sql -create user new_user -with password 'hello'; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/index.mdx b/apps/temp-docs/docs/postgres/index.mdx deleted file mode 100644 index b6641472785..00000000000 --- a/apps/temp-docs/docs/postgres/index.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: index -title: "Getting started" -slug: getting-started -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - -PostgreSQL, also known as Postgres, is a free and open-source relational -database management system emphasizing extensibility and SQL compliance. -It was originally named POSTGRES, referring to its origins as a successor -to the Ingres database developed at the University of California, Berkeley. \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/publications.mdx b/apps/temp-docs/docs/postgres/publications.mdx deleted file mode 100644 index 87559a38e34..00000000000 --- a/apps/temp-docs/docs/postgres/publications.mdx +++ /dev/null @@ -1,210 +0,0 @@ ---- -id: publications -title: "Publications" -slug: publications -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Publications are a way of grouping changes generated from a table or a group of tables. -These changes can then be sent to other systems (usually another Postgres database). - - - - - - - - - - - - - - - - - - - - -## Examples - -### Create a Publication - -This publication will contain all changes to all tables. - - - - - - -```sql -create publication publication_name -for all tables; -``` - - - - - - -### Create a Publication which listens to individual tables - - - - - - - -```sql -create publication publication_name -for table table_one, table_two; -``` - - - - - - -### Add tables to an existing publication - - - - - - - -```sql -alter publication publication_name -add table table_name; -``` - - - - - - -### Listens to inserts only - - - - - - - -```sql -create publication publication_name -for all tables -with (publish = 'insert'); -``` - - - - - - -### Listens to updates only - - - - - - - -```sql -create publication publication_name -for all tables -with (publish = 'update'); -``` - - - - - - -### Listens to deletions only - - - - - - - -```sql -create publication publication_name -for all tables -with (publish = 'delete'); -``` - - - - - - -### Remove a Publication - - - - - - - -```sql -drop publication if exists publication_name; -``` - - - - - - -### Recreate a Publication - -If you are planning to re-create a publication, it's best to do it in a transaction to ensure the operation succeeds. - - - - - - -```sql -begin; - -- remove the realtime publication - drop publication if exists publication_name; - - -- re-create the publication but don't enable it for any tables - create publication publication_name; -commit; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/schemas.mdx b/apps/temp-docs/docs/postgres/schemas.mdx deleted file mode 100644 index ad4fbf6d9ef..00000000000 --- a/apps/temp-docs/docs/postgres/schemas.mdx +++ /dev/null @@ -1,114 +0,0 @@ ---- -id: schemas -title: "Schemas" -slug: schemas -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Schemas are like "folders". They help to keep your database organized. - -Schemas are particularly useful for security. You can set different permissions on each schema. -For example, you might want to use a `public` schema for user-facing data, and an `auth` schema for all logins and secured data. - - - - - - -```sql -create schema schema_name; -``` - - - - - - - - - - -## Notes - -- Schemas contain [tables](/docs/reference/postgres/tables), columns, triggers, functions, etc. -- Postgres comes with a `public` schema set up by default. -- It is best practice to use lowercase and underscores when naming schemas. For example: `schema_name`, not `Schema Name`. - - - - - - - - - - -## Examples - -### Creating a schema - - - - - - - -```sql -create schema schema_name; -``` - - - - - - -### Removing a schema - - - - - - - -```sql -drop schema if exists schema_name; -``` - - - - - - -### Using special characters - -Although it's not recommended, you can use uppercase and spaces when naming your schema by wrapping the name with double-quotes. -As a result, you will always need to use double-quotes when referencing your schema. - - - - - - -```sql -create schema "Schema Name"; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/postgres/tables.mdx b/apps/temp-docs/docs/postgres/tables.mdx deleted file mode 100644 index 05df802a961..00000000000 --- a/apps/temp-docs/docs/postgres/tables.mdx +++ /dev/null @@ -1,161 +0,0 @@ ---- -id: tables -title: "Tables" -slug: tables -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/postgres.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Tables are similar to excel spreadsheets. They contain columns & rows of data. There are a few key differences from a spreadsheet however: - -- Every column is a strict type of data. When you set up a column, you must define what "data type" it is. -- Tables can be joined together through relationships. For example you can have a "users" table, which is joined to a "teams" table. - - - - - - -```sql -create table table_name ( - id integer primary key, - data jsonb, - name text -); - -# with schema -create table schema_name.table_name ( - id integer primary key, - data jsonb, - name text -); -``` - - - - - - - - - - -## Notes - -- Tables contain columns, rows, triggers, comments, -- It is best practice to use lowercase and underscores when naming tables. For example: `table_name`, not `Table Name`. -- Tables belong to [schemas](/docs/reference/postgres/schemas). If you don't explicitly pass the schema, Postgres will assume that you want to create the table in the `public` schema. - - - - - - - - - - -## Examples - -### Create table - - - - - - - -```sql -create table table_name ( - id integer primary key, - data jsonb, - name text -); - -# with schema -create table schema_name.table_name ( - id integer primary key, - data jsonb, - name text -); -``` - - - - - - -### Primary keys using multiple columns - - - - - - - -```sql -create table table_name ( - column_1 data_type, - column_2 data_type - -- Constraints: - primary key (column_1, column_2) -); -``` - - - - - - -### Multiple foreign keys to the same table - - - - - - - -```sql -alter table table_name - add constraint constraint_name_1 foreign key (column_1) references foreign_table(id), - add constraint constraint_name_2 foreign key (column_2) references foreign_table(id); -``` - - - - - - -### Delete a table - - - - - - - -```sql -delete table if exists table_name; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/api.mdx b/apps/temp-docs/docs/reference/api.mdx new file mode 100644 index 00000000000..8f9bd942142 --- /dev/null +++ b/apps/temp-docs/docs/reference/api.mdx @@ -0,0 +1,37 @@ +--- +slug: / +sidebar_position: 1 +sidebar_label: Supabase API +--- + +# Supabase API + +The Supabase API allows you to manage your projects programmatically. + +## Status + +The Supabase API is in `beta`. It is usable in it's current state, but it's likely that there will be breaking changes. + +## Authentication + +All API requests require a Supabase Personal token to be included in the Authorization header: `Authorization Bearer -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-branch-delete.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-branch-delete.mdx deleted file mode 100644 index 37ddb844a7c..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-branch-delete.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-branch-delete -title: "supabase db branch delete" -slug: supabase-db-branch-delete -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Delete a branch. - -Usage: - supabase db branch delete -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-branch-list.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-branch-list.mdx deleted file mode 100644 index 9933f256e6e..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-branch-list.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-branch-list -title: "supabase db branch list" -slug: supabase-db-branch-list -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -List branches. - -Usage: - supabase db branch list -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-changes.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-changes.mdx deleted file mode 100644 index 2b4bdbe6cf1..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-changes.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-changes -title: "supabase db changes" -slug: supabase-db-changes -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Diffs the local database with current migrations, then print the diff to standard output. - -Usage: - supabase db changes -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-commit.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-commit.mdx deleted file mode 100644 index 8823a7fa6d3..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-commit.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-commit -title: "supabase db commit" -slug: supabase-db-commit -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Diffs the local database with current migrations, writing it as a new migration. - -Usage: - supabase db commit -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-push.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-push.mdx deleted file mode 100644 index 0b3435b4186..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-push.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-push -title: "supabase db push" -slug: supabase-db-push -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Push new migrations to the remote database. - -Usage: - supabase db push -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-remote-commit.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-remote-commit.mdx deleted file mode 100644 index c09e1ee77e0..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-remote-commit.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-remote-commit -title: "supabase db remote commit" -slug: supabase-db-remote-commit -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Commit changes on the remote database since the last pushed migration. - -Usage: - supabase db remote commit -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-remote-set.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-remote-set.mdx deleted file mode 100644 index 93a240ee0a5..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-remote-set.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-remote-set -title: "supabase db remote set" -slug: supabase-db-remote-set -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Set the remote database to push migrations to. - -Usage: - supabase db remote set -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-reset.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-reset.mdx deleted file mode 100644 index dea74ae7534..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-reset.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-reset -title: "supabase db reset" -slug: supabase-db-reset -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Resets the local database to reflect current migrations. Any changes on the local database that is not committed will be lost. - -Usage: - supabase db reset -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-db-switch.mdx b/apps/temp-docs/docs/reference/cli/supabase-db-switch.mdx deleted file mode 100644 index faf65f86268..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-db-switch.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-db-switch -title: "supabase db switch" -slug: supabase-db-switch -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Switch branches. - -Usage: - supabase db switch -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-eject.mdx b/apps/temp-docs/docs/reference/cli/supabase-eject.mdx deleted file mode 100644 index e7d12225dab..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-eject.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: supabase-eject -title: "supabase eject" -slug: supabase-eject -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -```bash -supabase eject -``` - -Run in any folder to create a `docker` folder with a `docker-compose.yml`. This is useful for self-hosting or adding custom configuration. - -See our [Self Hosting](/docs/guides/hosting/overview) docs for more details. \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-help.mdx b/apps/temp-docs/docs/reference/cli/supabase-help.mdx deleted file mode 100644 index 8494f7305ee..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-help.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: supabase-help -title: "supabase help" -slug: supabase-help -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Help provides help for any command in the application. -Simply type supabase help [path to command] for full details. - -Usage: - supabase help [command] -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-init.mdx b/apps/temp-docs/docs/reference/cli/supabase-init.mdx deleted file mode 100644 index 21472d298d8..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-init.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-init -title: "supabase init" -slug: supabase-init -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Initialize a project to use Supabase CLI. - -Usage: - supabase init -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-migration-new.mdx b/apps/temp-docs/docs/reference/cli/supabase-migration-new.mdx deleted file mode 100644 index 90d692a1598..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-migration-new.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-migration-new -title: "supabase migration new" -slug: supabase-migration-new -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Create an empty migration. - -Usage: - supabase migration new -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-start.mdx b/apps/temp-docs/docs/reference/cli/supabase-start.mdx deleted file mode 100644 index d7eb6395774..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-start.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: supabase-start -title: "supabase start" -slug: supabase-start -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -``` -Start the Supabase local development setup. - -Usage: - supabase start -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/cli/supabase-stop.mdx b/apps/temp-docs/docs/reference/cli/supabase-stop.mdx deleted file mode 100644 index ca813c5a1c2..00000000000 --- a/apps/temp-docs/docs/reference/cli/supabase-stop.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: supabase-stop -title: "supabase stop" -slug: supabase-stop -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/cli.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -```bash -supabase stop -``` - -When you are finished with Supabase, run `supabase stop` to stop the Docker services. \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/.gitkeep b/apps/temp-docs/docs/reference/dart/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/apps/temp-docs/docs/reference/dart/auth-onauthstatechange.mdx b/apps/temp-docs/docs/reference/dart/auth-onauthstatechange.mdx deleted file mode 100644 index e495f9deeb2..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-onauthstatechange.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -id: auth-onauthstatechange -title: "auth.onAuthStateChange()" -slug: auth-onauthstatechange -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Receive a notification every time an auth event happens. - - - - - - -```dart -final subscription = supabase.auth.onAuthStateChange((event, session) { - print(session?.user?.id); - // handle auth state change -}); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Listen to auth changes - - - - - - - -```dart -final subscription = supabase.auth.onAuthStateChange((event, session) { - print(session?.user?.id); - // handle auth state change -}); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/auth-session.mdx b/apps/temp-docs/docs/reference/dart/auth-session.mdx deleted file mode 100644 index 361bb5d22fb..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-session.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: auth-session -title: "auth.session()" -slug: auth-session -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Returns the session data, if there is an active session. - - - - - - -```dart -final session = supabase.auth.session(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Get the session data - - - - - - - -```dart -final session = supabase.auth.session(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/auth-signin.mdx b/apps/temp-docs/docs/reference/dart/auth-signin.mdx deleted file mode 100644 index 31ab4d1a35a..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-signin.mdx +++ /dev/null @@ -1,103 +0,0 @@ ---- -id: auth-signin -title: 'auth.signIn()' -slug: auth-signin -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs' -import TabsPanel from '@theme/TabsPanel' - -Log in an existing user, or login via a third-party provider. - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com', password: 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -## Notes - -- A user can sign up via email, phone number. -- 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) -- Similarly, if you provide `phone` without a `password`, the user will be sent a one time password. -- If you are looking to sign users in with OAuth in Flutter apps, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider). - -## Examples - -### Sign in with email. - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com', password: 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -### Sign in with magic link. - -If email is provided, but 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. - - - - - -```dart -final res = await supabase.auth.signIn(email: 'example@email.com'); - -final error = res.error; -``` - - - - - -### Get OAuth sign in URL. - -Passing provider parameter to `signIn()` will return a URL to sign your user in via OAuth. -If you are looking to sign in a user via OAuth on Flutter app, go to [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider). - - - - - -```dart -final res = await supabase.auth.signIn(provider: Provider.github); - -final url = res.data?.url; -final error = res.error; -``` - - - - diff --git a/apps/temp-docs/docs/reference/dart/auth-signinwithprovider.mdx b/apps/temp-docs/docs/reference/dart/auth-signinwithprovider.mdx deleted file mode 100644 index 62863ba012e..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-signinwithprovider.mdx +++ /dev/null @@ -1,129 +0,0 @@ ---- -id: auth-signinwithprovider -title: "auth.signInWithProvider()" -slug: auth-signinwithprovider -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Signs the user in using third party OAuth providers. - - - - - - -```dart -final res = await supabase.auth.signInWithProvider(Provider.github); - -final error = res.error; -``` - - - - - - - - - - -## Notes - -- `auth.signInWithProvider()` is only available on `supabase_flutter` -- It will open the browser to the relevant login page. - - - - - - - - - - -## Examples - -### Sign in with provider. - - - - - - - -```dart -final res = await supabase.auth.signInWithProvider(Provider.github); - -final error = res.error; -``` - - - - - - -### With `redirectTo` - -Specify the redirect link to bring back the user via deeplink. -Note that `redirectTo` should be null for Flutter Web. - - - - - - -```dart -final res = await supabase.auth.signInWithProvider( - Provider.github, - options: AuthOptions( - redirectTo: kIsWeb - ? null - : 'io.supabase.flutter://reset-callback/'), -); - -final error = res.error; -``` - - - - - - -### With scopes - -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. - - - - - - -```dart -const { user, session, error } = await supabase.auth.signIn({ - provider: 'github' -}, { - scopes: 'repo gist notifications' -}) -const oAuthToken = session.provider_token // use to access provider API -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/auth-signout.mdx b/apps/temp-docs/docs/reference/dart/auth-signout.mdx deleted file mode 100644 index d1458aec554..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-signout.mdx +++ /dev/null @@ -1,70 +0,0 @@ ---- -id: auth-signout -title: "auth.signOut()" -slug: auth-signout -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Signs out the current user, if there is a logged in user. - - - - - - -```dart -final res = await supabase.auth.signOut(); - -final error = res.error; -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Sign out - - - - - - - -```dart -final res = await supabase.auth.signOut(); - -final error = res.error; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/auth-signup.mdx b/apps/temp-docs/docs/reference/dart/auth-signup.mdx deleted file mode 100644 index b891b85bc2f..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-signup.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: auth-signup -title: 'auth.signUp()' -slug: auth-signup -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs' -import TabsPanel from '@theme/TabsPanel' - -Creates a new user. - - - - - -```dart -final res = await supabase.auth.signUp('example@email.com', 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -## Notes - -- 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) - -## Examples - -### Sign up. - - - - - -```dart -final res = await supabase.auth.signUp('example@email.com', 'example-password'); - -final user = res.data?.user; -final error = res.error; -``` - - - - - -### Sign up with third-party providers. - -If you are using Flutter, you can sign up with OAuth providers using the [`signInWithProvider()`](/docs/reference/dart/auth-signinwithprovider) method available on `supabase_flutter`. diff --git a/apps/temp-docs/docs/reference/dart/auth-update.mdx b/apps/temp-docs/docs/reference/dart/auth-update.mdx deleted file mode 100644 index 95451f08b8e..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-update.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: auth-update -title: "auth.update()" -slug: auth-update -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Updates user data, if there is a logged in user. - - - - - - -```dart -final res = await supabase.auth.update( - UserAttributes(data: {'hello': 'world'}) -); - -final error = res.error; -``` - - - - - - - - - - -## Notes - -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 - -### Update a user's metadata. - - - - - - - -```dart -final res = await supabase.auth.update( - UserAttributes(data: {'hello': 'world'}) -); - -final error = res.error; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/auth-user.mdx b/apps/temp-docs/docs/reference/dart/auth-user.mdx deleted file mode 100644 index fb11208dea8..00000000000 --- a/apps/temp-docs/docs/reference/dart/auth-user.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: auth-user -title: "auth.user()" -slug: auth-user -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Returns the user data, if there is a logged in user. - - - - - - -```dart -final user = supabase.auth.user(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Get the logged in user - - - - - - - -```dart -final user = supabase.auth.user(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/containedby.mdx b/apps/temp-docs/docs/reference/dart/containedby.mdx deleted file mode 100644 index 0902ece9744..00000000000 --- a/apps/temp-docs/docs/reference/dart/containedby.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: containedby -title: ".containedBy()" -slug: containedby -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .containedBy('main_exports', ['orks', 'surveillance', 'evil']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .containedBy('main_exports', ['cars', 'food', 'machine']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/contains.mdx b/apps/temp-docs/docs/reference/dart/contains.mdx deleted file mode 100644 index c350feeecbc..00000000000 --- a/apps/temp-docs/docs/reference/dart/contains.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: contains -title: ".contains()" -slug: contains -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .contains('main_exports', ['oil']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/delete.mdx b/apps/temp-docs/docs/reference/dart/delete.mdx deleted file mode 100644 index 37b570eefa3..00000000000 --- a/apps/temp-docs/docs/reference/dart/delete.mdx +++ /dev/null @@ -1,76 +0,0 @@ ---- -id: delete -title: "Delete data: delete()" -slug: delete -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs a DELETE on the table. - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .match({ 'id': 666 }) - .execute(); -``` - - - - - - - - - - -## Notes - -TODO update link to dart -- `delete()` should always be combined with [Filters](/docs/reference/javascript/using-filters) to target the item(s) you wish to delete. - - - - - - - - - - -## Examples - -### Delete records - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .match({ 'id': 666 }) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/eq.mdx b/apps/temp-docs/docs/reference/dart/eq.mdx deleted file mode 100644 index b631453c7f3..00000000000 --- a/apps/temp-docs/docs/reference/dart/eq.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: eq -title: ".eq()" -slug: eq -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` exactly matches the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .eq('name', 'The shire') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .eq('name', 'The shire') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .eq('name', 'San Francisco') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .eq('name', 'Mordor') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .eq('name', 'San Francisco') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/filter.mdx b/apps/temp-docs/docs/reference/dart/filter.mdx deleted file mode 100644 index b637f533442..00000000000 --- a/apps/temp-docs/docs/reference/dart/filter.mdx +++ /dev/null @@ -1,170 +0,0 @@ ---- -id: filter -title: ".filter()" -slug: filter -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose `column` satisfies the filter. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - - - - - -## Notes - -- `.filter()` expects you to use the raw [PostgREST syntax](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for the filter values, so it should only be used as an escape hatch in case other filters don't work. - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .filter('name', 'in', '("Paris","Tokyo")') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .filter('name', 'in', '("Paris","Tokyo")') -``` - - - - - - -### Filter embedded resources - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, countries ( name )') - .filter('countries.name', 'in', '("France","Japan")') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/getsubscriptions.mdx b/apps/temp-docs/docs/reference/dart/getsubscriptions.mdx deleted file mode 100644 index 1ddf8924852..00000000000 --- a/apps/temp-docs/docs/reference/dart/getsubscriptions.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -id: getsubscriptions -title: "getSubscriptions()" -slug: getsubscriptions -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Returns an array of all your subscriptions. - - - - - - -```dart -final subscriptions = supabase.getSubscriptions(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Get all subscriptions - - - - - - - -```dart -final subscriptions = supabase.getSubscriptions(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/gt.mdx b/apps/temp-docs/docs/reference/dart/gt.mdx deleted file mode 100644 index 4c211f5b871..00000000000 --- a/apps/temp-docs/docs/reference/dart/gt.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: gt -title: ".gt()" -slug: gt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is greater than the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gt('country_id', 250) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gt('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .gt('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .gt('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .gt('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/gte.mdx b/apps/temp-docs/docs/reference/dart/gte.mdx deleted file mode 100644 index 1effd302292..00000000000 --- a/apps/temp-docs/docs/reference/dart/gte.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: gte -title: ".gte()" -slug: gte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is greater than or equal to the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gte('country_id', 250) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gte('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .gte('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .gte('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .gte('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/ilike.mdx b/apps/temp-docs/docs/reference/dart/ilike.mdx deleted file mode 100644 index 35fa42c2602..00000000000 --- a/apps/temp-docs/docs/reference/dart/ilike.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: ilike -title: ".ilike()" -slug: ilike -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value in the stated `column` matches the supplied `pattern` (case insensitive). - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .ilike('name', '%la%') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .ilike('name', '%la%') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .ilike('name', '%la%') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .ilike('name', '%la%') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .ilike('name', '%la%') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/in_.mdx b/apps/temp-docs/docs/reference/dart/in_.mdx deleted file mode 100644 index 23d18ca4ed3..00000000000 --- a/apps/temp-docs/docs/reference/dart/in_.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -id: in_ -title: ".in_()" -slug: in_ -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is found on the specified `values`. - -`is_` and `in_` filter methods are suffixed with `_` to avoid collisions with reserved keywords. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .in_('name', ['Rio de Janeiro', 'San Francisco']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/index.mdx b/apps/temp-docs/docs/reference/dart/index.mdx deleted file mode 100644 index acffea0ac94..00000000000 --- a/apps/temp-docs/docs/reference/dart/index.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: index -title: "Getting started" -slug: getting-started -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - -Supabase Dart. \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/initializing.mdx b/apps/temp-docs/docs/reference/dart/initializing.mdx deleted file mode 100644 index 87b3b493a6c..00000000000 --- a/apps/temp-docs/docs/reference/dart/initializing.mdx +++ /dev/null @@ -1,84 +0,0 @@ ---- -id: initializing -title: "Initializing" -slug: initializing -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -## Dart -You can initialize a new Supabase client using the `SupabaseClient()` 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. - - -## Flutter - -For `supabase_flutter`, you will be using the static `initialize()` method on `Supabase` class. - - - - - - - - - - - - - - - - - - - - -## Examples - -### Dart SupabaseClient() - - - - - - - -```dart -final supabase = SupabaseClient('https://xyzcompany.supabase.co', 'public-anon-key'); -``` - - - - - - -### Flutter initialize() - - - - - - - -```dart title="main.dart" -Future main() async { - await Supabase.initialize(url: 'https://xyzcompany.supabase.co', anonKey: 'public-anon-key'); - runApp(MyApp()); -} -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/insert.mdx b/apps/temp-docs/docs/reference/dart/insert.mdx deleted file mode 100644 index c5422081ee2..00000000000 --- a/apps/temp-docs/docs/reference/dart/insert.mdx +++ /dev/null @@ -1,102 +0,0 @@ ---- -id: insert -title: "Create data: insert()" -slug: insert -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs an INSERT into the table. - - - - - - -```dart -final res = await supabase - .from('cities') - .insert([ - {'name': 'The Shire', 'country_id': 554} - ]).execute(); -``` - - - - - - - - - - -## Notes - -- 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 - -### Create a record - - - - - - - -```dart -final res = await supabase - .from('cities') - .insert([ - {'name': 'The Shire', 'country_id': 554} - ]).execute(); -``` - - - - - - -### Bulk create - - - - - - - -```dart -final res = await supabase - .from('cities') - .insert([ - {'name': 'The Shire', 'country_id': 554}, - {'name': 'Rohan', 'country_id': 555}, - ]).execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/installing.mdx b/apps/temp-docs/docs/reference/dart/installing.mdx deleted file mode 100644 index 290000ecd86..00000000000 --- a/apps/temp-docs/docs/reference/dart/installing.mdx +++ /dev/null @@ -1,32 +0,0 @@ ---- -id: installing -title: "Installing" -slug: installing -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -## Dart - -Dart libraries are built and supported by the community. - -```bash -dart pub add supabase -``` - -Find the source code on [GitHub](https://github.com/supabase/supabase-dart). - -## Flutter - -For Flutter project, you can use [supabase_flutter](https://github.com/supabase/supabase-flutter). - -```bash -flutter pub add supabase_flutter -``` - -`supabase_flutter` plugin uses `supabase` plugin internally, and it adds some Flutter specific functionality such as handling deeplinks coming back from magic link verifications. -If you are creating a Flutter application, we recommend using `supabase_flutter` instead of `supabase`. - -For the most part `supabase_flutter` shares the same API as `supabase` with few exceptions such as initialization or OAuth sign in. \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/is_.mdx b/apps/temp-docs/docs/reference/dart/is_.mdx deleted file mode 100644 index c1d5af70780..00000000000 --- a/apps/temp-docs/docs/reference/dart/is_.mdx +++ /dev/null @@ -1,148 +0,0 @@ ---- -id: is_ -title: ".is_()" -slug: is_ -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -A check for exact equality (null, true, false), finds all rows whose value on the stated `column` exactly match the specified `value`. - -`is_` and `in_` filter methods are suffixed with `_` to avoid collisions with reserved keywords. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .is_('name', null) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .is_('name', null) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .is_('name', null) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .is_('name', null) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .is_('name', null) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/like.mdx b/apps/temp-docs/docs/reference/dart/like.mdx deleted file mode 100644 index 4fae8c3c8c7..00000000000 --- a/apps/temp-docs/docs/reference/dart/like.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -id: like -title: ".like()" -slug: like -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value in the stated `column` matches the supplied `pattern` (case sensitive). - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .like('name', '%la%') - .execute(); -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - column - - - required - - - object - -

      -
      - -The column to filter on. - -
      - -
    • - - -
    • -

      - - pattern - - - required - - - string - -

      -
      - -The pattern to filter with. - -
      - -
    • - -
    - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .like('name', '%la%') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .like('name', '%la%') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .like('name', '%la%') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .like('name', '%la%') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/limit.mdx b/apps/temp-docs/docs/reference/dart/limit.mdx deleted file mode 100644 index 2a22a201405..00000000000 --- a/apps/temp-docs/docs/reference/dart/limit.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -id: limit -title: "limit()" -slug: limit -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Limits the result with the specified count. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .limit(1) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .limit(1) - .execute(); -``` - - - - - - -### With embedded resources - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, cities(name)') - .eq('name', 'United States') - .limit(1, foreignTable: 'cities' ) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/lt.mdx b/apps/temp-docs/docs/reference/dart/lt.mdx deleted file mode 100644 index b98cd7589b7..00000000000 --- a/apps/temp-docs/docs/reference/dart/lt.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: lt -title: ".lt()" -slug: lt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is less than the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lt('country_id', 250) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lt('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .lt('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .lt('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .lt('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/lte.mdx b/apps/temp-docs/docs/reference/dart/lte.mdx deleted file mode 100644 index 8337ccc9a89..00000000000 --- a/apps/temp-docs/docs/reference/dart/lte.mdx +++ /dev/null @@ -1,191 +0,0 @@ ---- -id: lte -title: ".lte()" -slug: lte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` is less than or equal to the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lte('country_id', 250) - .execute(); -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - column - - - required - - - object - -

      -
      - -The column to filter on. - -
      - -
    • - - -
    • -

      - - value - - - required - - - object - -

      -
      - -The value to filter with. - -
      - -
    • - -
    - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .lte('country_id', 250) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .lte('country_id', 250) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .lte('country_id', 250) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .lte('country_id', 250) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/match.mdx b/apps/temp-docs/docs/reference/dart/match.mdx deleted file mode 100644 index 69f9a18c47d..00000000000 --- a/apps/temp-docs/docs/reference/dart/match.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: match -title: ".match()" -slug: match -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose columns match the specified `query` object. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .match({'name': 'Beijing', 'country_id': 156}) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/neq.mdx b/apps/temp-docs/docs/reference/dart/neq.mdx deleted file mode 100644 index 92654e12b36..00000000000 --- a/apps/temp-docs/docs/reference/dart/neq.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: neq -title: ".neq()" -slug: neq -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose value on the stated `column` doesn't match the specified `value`. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .neq('name', 'The shire') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .neq('name', 'The shire') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .neq('name', 'San Francisco') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .neq('name', 'Mordor') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities') - .neq('name', 'Lagos') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/not.mdx b/apps/temp-docs/docs/reference/dart/not.mdx deleted file mode 100644 index cc41b7f6038..00000000000 --- a/apps/temp-docs/docs/reference/dart/not.mdx +++ /dev/null @@ -1,146 +0,0 @@ ---- -id: not -title: ".not()" -slug: not -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows which doesn't satisfy the filter. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Mordor' }) - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .delete() - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_cities) - .not('name', 'eq', 'Paris') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/or.mdx b/apps/temp-docs/docs/reference/dart/or.mdx deleted file mode 100644 index 4852ebc659b..00000000000 --- a/apps/temp-docs/docs/reference/dart/or.mdx +++ /dev/null @@ -1,98 +0,0 @@ ---- -id: or -title: ".or()" -slug: or -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows satisfying at least one of the filters. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .or('id.eq.20,id.eq.30') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .or('id.eq.20,id.eq.30') - .execute(); -``` - - - - - - -### Use `or` with `and` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .or('id.gt.20,and(name.eq.New Zealand,name.eq.France)') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/order.mdx b/apps/temp-docs/docs/reference/dart/order.mdx deleted file mode 100644 index 18daaacd619..00000000000 --- a/apps/temp-docs/docs/reference/dart/order.mdx +++ /dev/null @@ -1,99 +0,0 @@ ---- -id: order -title: "order()" -slug: order -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Orders the result with the specified column. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .order('id', ascending: false ) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .order('id', ascending: false ) - .execute(); -``` - - - - - - -### With embedded resources - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, cities(name)') - .eq('name', 'United States') - .order('name', foreignTable: 'cities') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/overlaps.mdx b/apps/temp-docs/docs/reference/dart/overlaps.mdx deleted file mode 100644 index d7ca0f689b2..00000000000 --- a/apps/temp-docs/docs/reference/dart/overlaps.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: overlaps -title: ".overlaps()" -slug: overlaps -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, main_exports') - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .overlaps('main_exports', ['computers', 'minerals']) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/range.mdx b/apps/temp-docs/docs/reference/dart/range.mdx deleted file mode 100644 index affd16f8583..00000000000 --- a/apps/temp-docs/docs/reference/dart/range.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -id: range -title: "range()" -slug: range -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Limits the result to rows within the specified range, inclusive. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .range(0,3) - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .range(0,3) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/rangeadjacent.mdx b/apps/temp-docs/docs/reference/dart/rangeadjacent.mdx deleted file mode 100644 index f31f4f505e9..00000000000 --- a/apps/temp-docs/docs/reference/dart/rangeadjacent.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangeadjacent -title: ".rangeAdjacent()" -slug: rangeadjacent -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeAdjacent('population_range_millions', '[70, 185]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/rangegt.mdx b/apps/temp-docs/docs/reference/dart/rangegt.mdx deleted file mode 100644 index 6ddd4b34ed8..00000000000 --- a/apps/temp-docs/docs/reference/dart/rangegt.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangegt -title: ".rangeGt()" -slug: rangegt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeGt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/rangegte.mdx b/apps/temp-docs/docs/reference/dart/rangegte.mdx deleted file mode 100644 index 3a674440832..00000000000 --- a/apps/temp-docs/docs/reference/dart/rangegte.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangegte -title: ".rangeGte()" -slug: rangegte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeGte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/rangelt.mdx b/apps/temp-docs/docs/reference/dart/rangelt.mdx deleted file mode 100644 index 43cb40cbd68..00000000000 --- a/apps/temp-docs/docs/reference/dart/rangelt.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangelt -title: ".rangeLt()" -slug: rangelt -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeLt('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/rangelte.mdx b/apps/temp-docs/docs/reference/dart/rangelte.mdx deleted file mode 100644 index c673b888736..00000000000 --- a/apps/temp-docs/docs/reference/dart/rangelte.mdx +++ /dev/null @@ -1,145 +0,0 @@ ---- -id: rangelte -title: ".rangeLte()" -slug: rangelte -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .select('name, id, population_range_millions') - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `update()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .update({ 'name': 'Mordor' }) - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `delete()` - - - - - - - -```dart -final res = await supabase - .from('countries') - .delete() - .rangeLte('population_range_millions', '[150, 250]') - .execute(); -``` - - - - - - -### With `rpc()` - - - - - - - -```dart -// Only valid if the Stored Procedure returns a table type. -final res = await supabase - .rpc('echo_all_countries') - .rangeLte('population_range_millions', [150, 250]) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/removesubscription.mdx b/apps/temp-docs/docs/reference/dart/removesubscription.mdx deleted file mode 100644 index 76504e2880d..00000000000 --- a/apps/temp-docs/docs/reference/dart/removesubscription.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -id: removesubscription -title: "removeSubscription()" -slug: removesubscription -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Removes an active subscription and returns the number of open connections. - - - - - - -```dart -supabase.removeSubscription(mySubscription); -``` - - - - - - - - - - -## Notes - -- 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 - -### Remove a subscription - - - - - - - -```dart -supabase.removeSubscription(mySubscription); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/reset-password-email.mdx b/apps/temp-docs/docs/reference/dart/reset-password-email.mdx deleted file mode 100644 index 27086ba3c05..00000000000 --- a/apps/temp-docs/docs/reference/dart/reset-password-email.mdx +++ /dev/null @@ -1,114 +0,0 @@ ---- -id: reset-password-email -title: "Reset Password (Email)" -slug: reset-password-email -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Sends a reset request to an email address. - - - - - - -```dart -final res = await supabase.auth.api.resetPasswordForEmail('user@example.com'); - -final error = res.error; -``` - - - - - - - - - - -## Notes - -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: - -```dart -final res = await supabase.auth.api.updateUser( - accessToken, - UserAttributes(password: 'NEW_PASSWORD'), -); -``` - - - - - - - - - - -## Examples - -### Reset password - - - - - - - -```dart -final res = await supabase.auth.api.resetPasswordForEmail('user@example.com'); - -final error = res.error; -``` - - - - - - -### Reset password for Flutter - - - - - - - -You can pass `redirectTo` to open the app via deeplink when user opens the password reset email. -```dart -final res = await supabase.auth.api.resetPasswordForEmail( - 'user@example.com', - options: AuthOptions(redirectTo: kIsWeb - ? null - : 'io.supabase.flutter://reset-callback/'), -); - -final error = res.error; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/rpc.mdx b/apps/temp-docs/docs/reference/dart/rpc.mdx deleted file mode 100644 index f24ef39b765..00000000000 --- a/apps/temp-docs/docs/reference/dart/rpc.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -id: rpc -title: "Stored Procedures: rpc()" -slug: rpc -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -You can call stored procedures 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. - - - - - - -```dart -final res = await supabase - .rpc('hello_world') - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### Call a stored procedure - -This is an example invoking a stored procedure. - - - - - -```dart -final res = await supabase - .rpc('hello_world') - .execute(); -``` - - - - - - -### With Parameters - - - - - - - -```dart -final res = await supabase - .rpc('echo_city', params: { 'name': 'The Shire' }) - .execute(); -``` - - - - - - -### With count option - -You can specify a count option to get the row count along with your data. -Allowed values for count option are `exact`, `planned` and `estimated`. - - - - - - -```dart -final res = await supabase - .rpc('hello_world') - .execute(count: CountOption.exact); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/select.mdx b/apps/temp-docs/docs/reference/dart/select.mdx deleted file mode 100644 index 15037ea81b6..00000000000 --- a/apps/temp-docs/docs/reference/dart/select.mdx +++ /dev/null @@ -1,272 +0,0 @@ ---- -id: select -title: "Fetch data: select()" -slug: select -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs vertical filtering with SELECT. - - - - - - -```dart -final res = await supabase - .from('cities') - .select() - .execute(); - -final data = res.data; -final error = res.error; -``` - - - - - - - - - - -## Notes - -- 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](/docs/reference/dart/using-modifiers) -- `select()` can be combined with [Filters](/docs/reference/dart/using-filters) - - - - - - - - - - -## Examples - -### Getting your data - - - - - - - -```dart -final res = await supabase - .from('cities') - .select() - .execute(); - -final data = res.data; -final error = res.error; -``` - - - - - - -### Selecting specific columns - -You can select specific fields from your tables. - - - - - -```dart -final res = await supabase - .from('cities') - .select('name') - .execute(); -``` - - - - - - -### Query foreign tables - -If your database has relationships, you can query related tables too. - - - - - -```dart -final res = await supabase - .from('countries') - .select(''' - name, - cities ( - name - ) - ''') - .execute(); -``` - - - - - - -### Query the same foreign table multiple times - -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: - - - - - - -```dart -final res = await supabase - .from('products') - .select(''' - id, - supplier:supplier_id ( name ), - purchaser:purchaser_id ( name ) - ''') - .execute(); -``` - - - - - - -### Filtering with inner joins - -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": - - - - - - - -``` -Not yet implemented -``` - - - - - - -### Querying with count option - -You can get the number of rows by using the count option. -Allowed values for count option are [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). - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name') - .execute(count: CountOption.exact); - -final count = res.count; -``` - - - - - - -### Querying JSON data - -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. - - - - - - -```dart -final res = await supabase - .from('users') - .select(''' - id, name, - address->street - ''') - .eq('address->postcode', 90210) - .execute(); -``` - - - - - - -### Return data as CSV - -By default the data is returned in JSON format, however you can also request for it to be returned as Comma Separated Values. - - - - - - -```dart -final res = await supabase - .from('users') - .select() - .csv() - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/single.mdx b/apps/temp-docs/docs/reference/dart/single.mdx deleted file mode 100644 index 8d201ae0dca..00000000000 --- a/apps/temp-docs/docs/reference/dart/single.mdx +++ /dev/null @@ -1,74 +0,0 @@ ---- -id: single -title: "single()" -slug: single -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Retrieves only one row from the result. Result must be one row (e.g. using limit), otherwise this will result in an error. - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .single() - .execute(); -``` - - - - - - - - - - - - - - - - - - - - - - -## Examples - -### With `select()` - - - - - - - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .single() - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-createbucket.mdx b/apps/temp-docs/docs/reference/dart/storage-createbucket.mdx deleted file mode 100644 index 01ea9fa63b0..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-createbucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-createbucket -title: "createBucket()" -slug: storage-createbucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Creates a new Storage bucket - - - - - - -```dart -final res = await supabase - .storage - .createBucket('avatars'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `insert` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Create bucket - - - - - - - -```dart -final res = await supabase - .storage - .createBucket('avatars'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-deletebucket.mdx b/apps/temp-docs/docs/reference/dart/storage-deletebucket.mdx deleted file mode 100644 index 60a020ac22b..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-deletebucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-deletebucket -title: "deleteBucket()" -slug: storage-deletebucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Deletes an existing bucket. A bucket can't be deleted with existing objects inside it. You must first `empty()` the bucket. - - - - - - -```dart -final res = await supabase - .storage - .deleteBucket('avatars'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` and `delete` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Delete bucket - - - - - - - -```dart -final res = await supabase - .storage - .deleteBucket('avatars'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-emptybucket.mdx b/apps/temp-docs/docs/reference/dart/storage-emptybucket.mdx deleted file mode 100644 index 0476cb9d25c..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-emptybucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-emptybucket -title: "emptyBucket()" -slug: storage-emptybucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Removes all objects inside a single bucket. - - - - - - -```dart -final res = await supabase - .storage - .emptyBucket('avatars'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` - - `objects` permissions: `select` and `delete` - - - - - - - - - - -## Examples - -### Empty bucket - - - - - - - -```dart -final res = await supabase - .storage - .emptyBucket('avatars'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-createsignedurl.mdx b/apps/temp-docs/docs/reference/dart/storage-from-createsignedurl.mdx deleted file mode 100644 index 9609d9a96c6..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-createsignedurl.mdx +++ /dev/null @@ -1,79 +0,0 @@ ---- -id: storage-from-createsignedurl -title: "from.createSignedUrl()" -slug: storage-from-createsignedurl -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Create signed url to download file without requiring permissions. This URL can be valid for a set number of seconds. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .createSignedUrl('avatar1.png', 60); - -final signedURL = res.data; -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `select` - - - - - - - - - - -## Examples - -### Create Signed URL - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .createSignedUrl('avatar1.png', 60); - -final signedURL = res.data; -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-download.mdx b/apps/temp-docs/docs/reference/dart/storage-from-download.mdx deleted file mode 100644 index f5173ee7804..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-download.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-download -title: "from.download()" -slug: storage-from-download -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Downloads a file. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .download('avatar1.png'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `select` - - - - - - - - - - -## Examples - -### Download file - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .download('avatar1.png'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-getpublicurl.mdx b/apps/temp-docs/docs/reference/dart/storage-from-getpublicurl.mdx deleted file mode 100644 index 1013ec51f67..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-getpublicurl.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: storage-from-getpublicurl -title: 'from.getPublicUrl()' -slug: storage-from-getpublicurl -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs' -import TabsPanel from '@theme/TabsPanel' - -Retrieve URLs for assets in public buckets - - - - - -```dart -final res = supabase - .storage - .from('public-bucket') - .getPublicUrl('avatar1.png'); - -final publicURL = res.data; -``` - - - - - -## Notes - -- The bucket needs to be set to public, either via [updateBucket()](/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 - -### Returns the URL for an asset in a public bucket - - - - - -```dart -final res = supabase - .storage - .from('public-bucket') - .getPublicUrl('avatar1.png'); - -final publicURL = res.data; -``` - - - - diff --git a/apps/temp-docs/docs/reference/dart/storage-from-list.mdx b/apps/temp-docs/docs/reference/dart/storage-from-list.mdx deleted file mode 100644 index 36c9dc50985..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-list.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-list -title: "from.list()" -slug: storage-from-list -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Lists all the files within a bucket. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .list(); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `select` - - - - - - - - - - -## Examples - -### List files in a bucket - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .list(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-move.mdx b/apps/temp-docs/docs/reference/dart/storage-from-move.mdx deleted file mode 100644 index 7c14443d94a..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-move.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-move -title: "from.move()" -slug: storage-from-move -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Moves an existing file, optionally renaming it at the same time. - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .move('public/avatar1.png', 'private/avatar2.png'); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `update` and `select` - - - - - - - - - - -## Examples - -### Move file - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .move('public/avatar1.png', 'private/avatar2.png'); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-remove.mdx b/apps/temp-docs/docs/reference/dart/storage-from-remove.mdx deleted file mode 100644 index 083be494c4e..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-remove.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -id: storage-from-remove -title: "from.remove()" -slug: storage-from-remove -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Deletes files within the same bucket - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .remove(['avatar1.png']); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `delete` and `select` - - - - - - - - - - -## Examples - -### Delete file - - - - - - - -```dart -final res = await supabase - .storage - .from('avatars') - .remove(['avatar1.png']); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-update.mdx b/apps/temp-docs/docs/reference/dart/storage-from-update.mdx deleted file mode 100644 index cbe7ccccfd9..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-update.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -id: storage-from-update -title: "from.update()" -slug: storage-from-update -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Replaces an existing file at the specified path with a new one. - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .update('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `update` and `select` - - - - - - - - - - -## Examples - -### Update file - - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .update('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-from-upload.mdx b/apps/temp-docs/docs/reference/dart/storage-from-upload.mdx deleted file mode 100644 index 59b18350554..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-from-upload.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -id: storage-from-upload -title: "from.upload()" -slug: storage-from-upload -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Uploads a file to an existing bucket. - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .upload('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - path - - - required - - - string - -

      -
      - -The relative file path. Should be of the format `folder/subfolder/filename.png`. The bucket must already exist before attempting to upload. - -
      - -
    • - - -
    • -

      - - fileBody - - - required - - - ArrayBuffer | ArrayBufferView | Blob | Buffer | File | FormData | ReadableStream | ReadableStream | URLSearchParams | string - -

      -
      - -The body of the file to be stored in the bucket. - -
      - -
    • - - -
    • -

      - - fileOptions - - - optional - - - FileOptions - -

      -
      - -HTTP headers. -`cacheControl`: string, the `Cache-Control: max-age=` seconds value. -`contentType`: string, the `Content-Type` header value. Should be specified if using a `fileBody` that is neither `Blob` nor `File` nor `FormData`, otherwise will default to `text/plain;charset=UTF-8`. -`upsert`: boolean, whether to perform an upsert. - -
      - -
    • - -
    - - -## Notes - -- Policy permissions required: - - `buckets` permissions: none - - `objects` permissions: `insert` - - - - - - - - - - -## Examples - -### Upload file - - - - - - - -```dart -final avatarFile = File('path/to/file'); -final res = await supabase - .storage - .from('avatars') - .upload('public/avatar1.png', avatarFile, fileOptions: FileOptions( - cacheControl: '3600', - upsert: false - )); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-getbucket.mdx b/apps/temp-docs/docs/reference/dart/storage-getbucket.mdx deleted file mode 100644 index 77608338562..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-getbucket.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -id: storage-getbucket -title: "getBucket()" -slug: storage-getbucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Retrieves the details of an existing Storage bucket. - - - - - - -```dart -final res = await supabase - .storage - .getBucket('avatars') -``` - - - - - - -## Parameters - - -
      - -
    • -

      - - id - - - required - - - string - -

      -
      - -The unique identifier of the bucket you would like to retrieve. - -
      - -
    • - -
    - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Get bucket - - - - - - - -```dart -final res = await supabase - .storage - .getBucket('avatars') -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-listbuckets.mdx b/apps/temp-docs/docs/reference/dart/storage-listbuckets.mdx deleted file mode 100644 index c6b8d028480..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-listbuckets.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-listbuckets -title: "listBuckets()" -slug: storage-listbuckets -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Retrieves the details of all Storage buckets within an existing product. - - - - - - -```dart -final res = await supabase - .storage - .listBuckets() -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `select` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### List buckets - - - - - - - -```dart -final res = await supabase - .storage - .listBuckets() -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/storage-updatebucket.mdx b/apps/temp-docs/docs/reference/dart/storage-updatebucket.mdx deleted file mode 100644 index c89037e2f2d..00000000000 --- a/apps/temp-docs/docs/reference/dart/storage-updatebucket.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -id: storage-updatebucket -title: "updateBucket()" -slug: storage-updatebucket -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Updates a new Storage bucket - - - - - - -```dart -final res = await supabase - .storage - .updateBucket('avatars', { public: false }); -``` - - - - - - - - - - -## Notes - -- Policy permissions required: - - `buckets` permissions: `update` - - `objects` permissions: none - - - - - - - - - - -## Examples - -### Update bucket - - - - - - - -```dart -final res = await supabase - .storage - .updateBucket('avatars', { public: false }); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/stream.mdx b/apps/temp-docs/docs/reference/dart/stream.mdx deleted file mode 100644 index 167b41e13c4..00000000000 --- a/apps/temp-docs/docs/reference/dart/stream.mdx +++ /dev/null @@ -1,147 +0,0 @@ ---- -id: stream -title: "stream()" -slug: stream -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Notifies of data at the queried table. - - - - - - -```dart -supabase - .from('countries') - .stream() - .execute(); -``` - - - - - - - - - - -## Notes - -- `stream()` will emit the initial data as well as any further change on the database as `Stream` of `List>` by combining Postgrest and Realtime. - - - - - - - - - - -## Examples - -### Listening to a specific table - - - - - - - -```dart -supabase - .from('countries') - .stream() - .execute(); -``` - - - - - - -### Listening to a specific rows within a table - -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. -This syntax is the as how you can filter data in Realtime - - - - - - -```dart -supabase - .from('countries:id=eq.120') - .stream() - .execute(); -``` - - - - - - -### With `order()` - - - - - - - -```dart -supabase - .from('countries') - .stream() - .order('name', ascending: false) - .execute(); -``` - - - - - - -### With `limit()` - - - - - - - -```dart -supabase - .from('countries') - .stream() - .order('name', ascending: false) - .limit(10) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/subscribe.mdx b/apps/temp-docs/docs/reference/dart/subscribe.mdx deleted file mode 100644 index 6c109f64659..00000000000 --- a/apps/temp-docs/docs/reference/dart/subscribe.mdx +++ /dev/null @@ -1,237 +0,0 @@ ---- -id: subscribe -title: "on().subscribe()" -slug: subscribe -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Subscribe to realtime changes in your database. - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.all, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - - - - - -## Notes - -- Realtime is disabled by default for new Projects for better database performance and security. You can turn it on by [managing replication](/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 - -### Listen to all database changes - - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.all, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to a specific table - - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.all, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to inserts - - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.insert, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to updates - -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; -``` - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.update, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to deletes - -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; -``` - - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.delete, (payload) { - // Handle realtime payload - }) - .subscribe(); -``` - - - - - - -### Listening to multiple events - -You can chain listeners if you want to listen to multiple events for each table. - - - - - -```dart -final mySubscription = supabase - .from('countries') - .on(SupabaseEventTypes.insert, handleInsert) - .on(SupabaseEventTypes.delete, handleDelete) - .subscribe(); -``` - - - - - - -### Listening to row level changes - -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. - - - - - -```dart -final mySubscription = supabase - .from('countries:id=eq.200') - .on(SupabaseEventTypes.update, handleRecordUpdated) - .subscribe(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/textsearch.mdx b/apps/temp-docs/docs/reference/dart/textsearch.mdx deleted file mode 100644 index edda6a8dd14..00000000000 --- a/apps/temp-docs/docs/reference/dart/textsearch.mdx +++ /dev/null @@ -1,147 +0,0 @@ ---- -id: textsearch -title: ".textSearch()" -slug: textsearch -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Finds all rows whose tsvector value on the stated `column` matches to_tsquery(query). - - - - - - - - - - - - - - - - - - - - -## Examples - -### Text search - - - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat' & 'cat'", - config: 'english' - ) - .execute(); -``` - - - - - - -### Basic normalization - -Uses PostgreSQL's `plainto_tsquery` function. - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat' & 'cat'", - type: TextSearchType.plain, - config: 'english' - ) - .execute(); -``` - - - - - - -### Full normalization - -Uses PostgreSQL's `phraseto_tsquery` function. - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat' & 'cat'", - type: TextSearchType.phrase, - config: 'english' - ) - .execute(); -``` - - - - - - -### Full normalization - -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. - - - - - - -```dart -final res = await supabase - .from('quotes') - .select('catchphrase') - .textSearch('catchphrase', "'fat or cat'", - type: TextSearchType.websearch, - config: 'english' - ) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/update.mdx b/apps/temp-docs/docs/reference/dart/update.mdx deleted file mode 100644 index 18519852ff0..00000000000 --- a/apps/temp-docs/docs/reference/dart/update.mdx +++ /dev/null @@ -1,109 +0,0 @@ ---- -id: update -title: "Modify data: update()" -slug: update -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs an UPDATE on the table. - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Middle Earth' }) - .match({ 'name': 'Auckland' }) - .execute(); -``` - - - - - - - - - - -## Notes - -TODO update the link to dart -- `update()` should always be combined with [Filters](/docs/reference/javascript/using-filters) to target the item(s) you wish to update. - - - - - - - - - - -## Examples - -### Updating your data - - - - - - - -```dart -final res = await supabase - .from('cities') - .update({ 'name': 'Middle Earth' }) - .match({ 'name': 'Auckland' }) - .execute(); -``` - - - - - - -### Updating JSON data - -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. - - - - - - -```dart -final res = await supabase - .from('users') - .update({ - 'address': { - 'street': 'Melrose Place', - 'postcode': 90210 - } - }) - .eq('address->postcode', 90210) - .execute(); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/upsert.mdx b/apps/temp-docs/docs/reference/dart/upsert.mdx deleted file mode 100644 index 085eab75a02..00000000000 --- a/apps/temp-docs/docs/reference/dart/upsert.mdx +++ /dev/null @@ -1,128 +0,0 @@ ---- -id: upsert -title: "Upsert data: upsert()" -slug: upsert -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Performs an UPSERT into the table. - - - - - - -```dart -final res = await supabase - .from('messages') - .upsert({ 'id': 3, 'message': 'foo', 'username': 'supabot' }) - .execute(); -``` - - - - - - - - - - -## Notes - -- 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 - -### Upsert your data - - - - - - - -```dart -final res = await supabase - .from('messages') - .upsert({ 'id': 3, 'message': 'foo', 'username': 'supabot' }) - .execute(); -``` - - - - - - -### Upserting into tables with constraints - -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`. - - - - - - -```dart -final res = await supabase - .from('users') - .upsert({ 'username': 'supabot' }, { 'onConflict': 'username' }) - .execute(); -``` - - - - - - -### Return the exact number of rows - -Allowed values for count option are `exact`, `planned` and `estimated`. - - - - - - -```dart -final res = await supabase - .from('users') - .upsert({ - 'id': 3, - 'message': 'foo', - 'username': 'supabot' - }) - .execute(count: CountOption.exact); -``` - - - - - \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/using-filters.mdx b/apps/temp-docs/docs/reference/dart/using-filters.mdx deleted file mode 100644 index 3296a3ee251..00000000000 --- a/apps/temp-docs/docs/reference/dart/using-filters.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -id: using-filters -title: "Using Filters" -slug: using-filters -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Filters can be used on `select()`, `update()`, and `delete()` queries. - -If a Stored Procedure returns a table response, you can also apply filters. - -### Applying Filters - -You must apply your filters to the end of your query. For example: - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .eq('name', 'The Shire') // Correct - .execute(); - -final res = await supabase - .from('cities') - .eq('name', 'The Shire') // Incorrect - .select('name, country_id') - .execute(); -``` - -### Chaining - -Filters can be chained together to produce advanced queries. For example: - -```dart -final res = await supabase - .from('cities') - .select('name, country_id') - .gte('population', 1000) - .lt('population', 10000) - .execute(); -``` \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/using-modifiers.mdx b/apps/temp-docs/docs/reference/dart/using-modifiers.mdx deleted file mode 100644 index 8aefaf43501..00000000000 --- a/apps/temp-docs/docs/reference/dart/using-modifiers.mdx +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: using-modifiers -title: "Using Modifiers" -slug: using-modifiers -custom_edit_url: https://github.com/supabase/supabase/edit/master/web/spec/dart.yml ---- - -import Tabs from '@theme/Tabs'; -import TabsPanel from '@theme/TabsPanel'; - -Modifiers can be used on `select()` queries. - -If a Stored Procedure returns a table response, you can also apply modifiers to the `rpc()` function. \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/dart/v0.mdx b/apps/temp-docs/docs/reference/dart/v0.mdx new file mode 100644 index 00000000000..9ba0ee46873 --- /dev/null +++ b/apps/temp-docs/docs/reference/dart/v0.mdx @@ -0,0 +1,26 @@ +--- +id: intro +slug: / +sidebar_label: Supabase Dart Library +--- + +# Supabase Dart Library + +:::caution +You're viewing the docs for an older version of the `supabase-flutter` library. +::: + +This reference documents every object and method available in Supabase's isomorphic Dart library, `supabase-dart`. + +You can use the `supabase-dart` library to: + +- interact with your Postgres database +- listen to database changes +- invoke Deno Edge Functions +- build login and user management functionality +- manage large files + +## Additional Links + +- Source Code: [github.com/supabase/supabase-dart](https://github.com/supabase/supabase-dart) +- [Known bugs and issues](https://github.com/supabase/supabase-dart/issues) diff --git a/apps/temp-docs/docs/reference/javascript/v1.mdx b/apps/temp-docs/docs/reference/javascript/v1.mdx new file mode 100644 index 00000000000..97230e84aea --- /dev/null +++ b/apps/temp-docs/docs/reference/javascript/v1.mdx @@ -0,0 +1,20 @@ +--- +id: intro +title: 'Supabase JavaScript Library' +slug: / +sidebar_label: Supabase JavaScript Library +--- + +:::caution +You're viewing the docs for an older version of the `supabase-js` library. +::: + +This reference documents every object and method available in Supabase's isomorphic JavaScript library, `supabase-js`. + +You can use the `supabase-js` library to: + +- interact with your Postgres database +- listen to database changes +- invoke Deno Edge Functions +- build login and user management functionality +- manage large files diff --git a/apps/temp-docs/docs/reference/javascript/v1/generating-types.mdx b/apps/temp-docs/docs/reference/javascript/v1/generating-types.mdx new file mode 100644 index 00000000000..033cfdb9165 --- /dev/null +++ b/apps/temp-docs/docs/reference/javascript/v1/generating-types.mdx @@ -0,0 +1,42 @@ +--- +id: generating-types +title: 'Generating Types' +slug: generating-types +custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +Supabase will soon release native type generators that dump your database types for various languages. For now, we support TypeScript [through third-party tools](/docs/guides/api/generating-types). + +## Usage with TypeScript + +`supabase-js` ships with type definitions for usage with TypeScript and for convenient IntelliSense auto-complete and documentation in your editor. + +When using TypeScript, you can pass the type of database row as a type parameter to the `from` method to get better auto-completion support down the chain. +If you don't provide a type for the row you need to explicitly pass `from('tableName')`. + +```ts +type Message = { + id: number + inserted_at: string + message: string + user_id: string + channel_id: number + author: { username: string } +} + +const response = await supabase + .from('messages') // Message maps to the type of the row in your database. + .select('*, author:user_id(username)') + .match({ channel_id: 2 }) // Your IDE will be able to help with auto-completion. +response.data // Response data will be of type Array. + +// If you don't provide a type for the row you need to explicitly pass `from('tableName')`. +const response = await supabase + .from('messages') + .select('*, author:user_id(username)') + .match({ channel_id: 2 }) +response.data // Response data will be of type Array. +``` diff --git a/apps/temp-docs/docs/reference/javascript/v1/initializing.mdx b/apps/temp-docs/docs/reference/javascript/v1/initializing.mdx new file mode 100644 index 00000000000..711f03f2aed --- /dev/null +++ b/apps/temp-docs/docs/reference/javascript/v1/initializing.mdx @@ -0,0 +1,151 @@ +--- +id: initializing +title: 'Initializing' +slug: initializing +custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +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. + +## Parameters + +
      + +
    • +

      + + supabaseUrl + + + required + + + string + +

      +
      + +The unique Supabase URL which is supplied when you create a new project in your project dashboard. + +
      + +
    • + +
    • +

      + + supabaseKey + + + required + + + string + +

      +
      + +The unique Supabase Key which is supplied when you create a new project in your project dashboard. + +
      + +
    • + +
    • +

      + + options + + + optional + + + SupabaseClientOptions + +

      +
      + +No description provided. + +
      + +
    • + +
    + +## Examples + +### createClient() + +```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' +) +``` + +### With additional parameters + +```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 +) +``` + +### API schemas + +```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', + } +) +``` + +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. + +### Custom `fetch` implementation + +```js +import { createClient } from '@supabase/supabase-js' + +const supabase = createClient( + 'https://xyzcompany.supabase.co', + 'public-anon-key', + { + fetch: fetch.bind(globalThis), + } +) +``` + +`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). diff --git a/apps/temp-docs/docs/reference/javascript/v1/installing.mdx b/apps/temp-docs/docs/reference/javascript/v1/installing.mdx new file mode 100644 index 00000000000..4441c7253d7 --- /dev/null +++ b/apps/temp-docs/docs/reference/javascript/v1/installing.mdx @@ -0,0 +1,37 @@ +--- +id: installing +title: 'Installing' +slug: installing +custom_edit_url: https://github.com/supabase/supabase/edit/master/spec/supabase_js_v1.yml +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +All JavaScript libraries are built directly by the Supabase team. + +Other languages are built by the community and supported by Supabase. + +## JavaScript + +Via NPM + +```bash +npm install @supabase/supabase-js +``` + +Via Yarn + +```bash +yarn add @supabase/supabase-js +``` + +Find the source code on [GitHub](https://github.com/supabase/supabase-js). + +Or via CDN + +```js + +//or + +``` diff --git a/apps/temp-docs/docs/reference/storage.mdx b/apps/temp-docs/docs/reference/storage.mdx new file mode 100644 index 00000000000..4c038f6c7aa --- /dev/null +++ b/apps/temp-docs/docs/reference/storage.mdx @@ -0,0 +1,28 @@ +--- +slug: / +sidebar_position: 1 +sidebar_label: Storage Server +--- + +# Supabase Storage Server + +An S3 compatible object storage service that integrates with Postgres. + +- Uses Postgres as it's datastore for storing metadata +- Authorization rules are written as Postgres Row Level Security policies +- Integrates with S3 as the storage backend (with more in the pipeline!) +- Extremely lightweight and performant + +Read [this post](https://supabase.com/blog/supabase-storage) on why we decided to build a new object storage service. + +## Client libraries + +- [JavaScript](https://github.com/supabase/storage-js) +- [Dart](https://github.com/supabase/storage-dart) + +## Additional Links + +- [Source Code](https://github.com/supabase/storage-api) +- [Known bugs and issues](https://github.com/supabase/storage-js/issues) +- [Storage Guides](https://supabase.com/docs/guides/storage) +- [OpenAPI Docs](https://supabase.github.io/storage-api/) diff --git a/apps/temp-docs/docs/reference/storage/release-notes.mdx b/apps/temp-docs/docs/reference/storage/release-notes.mdx new file mode 100644 index 00000000000..8dad269f0d9 --- /dev/null +++ b/apps/temp-docs/docs/reference/storage/release-notes.mdx @@ -0,0 +1,7 @@ +--- +id: release-notes +--- + +# Release Notes + +All release notes can be found in the [GitHub Releases](https://github.com/supabase/storage-api/releases) page. diff --git a/apps/temp-docs/layouts/Default.tsx b/apps/temp-docs/layouts/Default.tsx index d9fa6f17424..12493ef2abc 100644 --- a/apps/temp-docs/layouts/Default.tsx +++ b/apps/temp-docs/layouts/Default.tsx @@ -1,22 +1,19 @@ -import { useEffect } from 'react' +import { useEffect, FC } from 'react' import Head from 'next/head' import NavBar from '../components/Navigation/NavBar' import SideBar from '../components/Navigation/SideBar' import Footer from '../components/Footer' -const Layout = ({ - meta, - children, - toc, - menuItems, - currentPage, -}: { - meta: { title: string; description: string; hide_table_of_contents?: boolean } +interface Props { + meta: { title: string; description?: string; hide_table_of_contents?: boolean } children: any toc?: any menuItems: any currentPage: string -}) => { + versions: string[] +} + +const Layout: FC = ({ meta, children, toc, menuItems, currentPage, versions }) => { useEffect(() => { const key = localStorage.getItem('supabaseDarkMode') if (!key) { @@ -27,7 +24,7 @@ const Layout = ({ } }, []) - console.log('default', currentPage) + console.log('Default:Layout', { currentPage }) return ( <> @@ -49,7 +46,7 @@ const Layout = ({
    - +
    diff --git a/apps/temp-docs/layouts/Guide.tsx b/apps/temp-docs/layouts/Guide.tsx index 3fbaeee5bc4..00b36a428ee 100644 --- a/apps/temp-docs/layouts/Guide.tsx +++ b/apps/temp-docs/layouts/Guide.tsx @@ -1,7 +1,7 @@ import { MDXProvider } from '@mdx-js/react' import { NextSeo } from 'next-seo' import { useRouter } from 'next/router' -import { menuItems } from '~/components/Navigation/Nav.constants' +import { menuItems } from '~/components/Navigation/Navigation.constants' import Layout from '~/layouts/Default' import { getPageType } from '~/lib/helpers' import getComponents from '~/lib/mdx/getComponents' @@ -22,6 +22,7 @@ export default function ContentsLayout({ context }: any) { menuItems[page] } currentPage={page} + versions={[]} >
    {context.children}
    diff --git a/apps/temp-docs/lib/docs.ts b/apps/temp-docs/lib/docs.ts index 4af21292994..7942f7ac243 100644 --- a/apps/temp-docs/lib/docs.ts +++ b/apps/temp-docs/lib/docs.ts @@ -1,16 +1,11 @@ import fs from 'fs' import { join } from 'path' import matter from 'gray-matter' +import nonGeneratedReferencePages from 'data/nonGeneratedReferencePages' +import { REFERENCES } from 'components/Navigation/Navigation.constants' const docsDirectory = process.cwd() -const nonGeneratedReferencePages = [ - 'docs/reference/javascript/installing', - 'docs/reference/javascript/release-notes', - 'docs/reference/javascript/upgrade-guide', - 'docs/reference/javascript/typescript-support', -] - const getPathToGeneratedDoc = (slug: string) => { const sections = slug.split('/') const updatedSections = sections.slice() @@ -19,13 +14,21 @@ const getPathToGeneratedDoc = (slug: string) => { } export function getDocsBySlug(slug: string) { - console.log('getDocsBySlug', { slug }) const realSlug = slug.replace(/\.mdx$/, '') + const formattedSlug = - realSlug.includes('/javascript/') && !nonGeneratedReferencePages.includes(realSlug) + (realSlug.includes('reference/javascript/') && + !nonGeneratedReferencePages.includes(realSlug)) || + (realSlug.includes('reference/dart/') && !nonGeneratedReferencePages.includes(realSlug)) || + (realSlug.includes('reference/cli/') && !nonGeneratedReferencePages.includes(realSlug)) || + (realSlug.includes('reference/api/') && !nonGeneratedReferencePages.includes(realSlug)) || + (realSlug.includes('reference/auth/') && !nonGeneratedReferencePages.includes(realSlug)) || + (realSlug.includes('reference/storage/') && !nonGeneratedReferencePages.includes(realSlug)) ? getPathToGeneratedDoc(realSlug) : realSlug + console.log('getDocsBySlug', { slug, formattedSlug }) + // files can either be .md or .mdx // we need to check which one exists let fullPath @@ -55,12 +58,24 @@ export function getDocsBySlug(slug: string) { export function getAllDocs() { const slugs = walk('docs') - console.log('getAllDocs', slugs) const docs = slugs.map((slug) => getDocsBySlug(slug)) return docs } +export function getLibraryVersions(slug: string) { + const paths = slug.split('/') + if (paths.includes('reference') && paths.length >= 3) { + const reference = REFERENCES[paths[2]] + if (reference?.library !== undefined) { + const path = `data/nav/${reference.library}` + const list = fs.readdirSync(path).map((file) => file.split('.')[0]) + return list.reverse() + } + } + return [] +} + function walk(dir: string) { let results: string[] = [] const list = fs.readdirSync(dir) diff --git a/apps/temp-docs/lib/helpers.ts b/apps/temp-docs/lib/helpers.ts index 93ec6fdb7cd..957482fe354 100644 --- a/apps/temp-docs/lib/helpers.ts +++ b/apps/temp-docs/lib/helpers.ts @@ -6,14 +6,14 @@ export function getPageType(asPath: string) { if (asPath.includes('/guides')) { page = 'docs' - } else if (asPath.includes('/reference/javascript')) { - page = 'reference/javascript' } else if (asPath.includes('/reference/javascript/v1')) { page = 'reference/javascript/v1' - } else if (asPath.includes('/reference/dart')) { - page = 'reference/dart' + } else if (asPath.includes('/reference/javascript')) { + page = 'reference/javascript' } else if (asPath.includes('/reference/dart/v0')) { page = 'reference/dart/v0' + } else if (asPath.includes('/reference/dart')) { + page = 'reference/dart' } else if (asPath.includes('/reference/api')) { page = 'reference/api' } else if (asPath.includes('/reference/cli')) { diff --git a/apps/temp-docs/package.json b/apps/temp-docs/package.json index 16a4b5a0822..4a8db191589 100644 --- a/apps/temp-docs/package.json +++ b/apps/temp-docs/package.json @@ -7,24 +7,31 @@ "build": "next build", "start": "next start", "lint": "next lint", + "generate:all": "npm-run-all --parallel gen:api gen:cli gen:gotrue gen:storage gen:supabase-dart:v0 gen:supabase-dart:v1 gen:supabase-js:v1 gen:supabase-js:v2", + "gen:api": "npm-run-all gen:api:usage", - "gen:api:usage": "ts-node ./generator/index.ts gen --type api --url https://api.supabase.com --input ../../spec/transforms/api_v0_openapi_deparsed.json --output ./_api/usage.mdx", + "gen:api:usage": "ts-node ./generator/index.ts gen --type api --url https://api.supabase.com --input ../../spec/transforms/api_v0_openapi_deparsed.json --output ./docs/reference/api/generated/usage.mdx", + "gen:cli": "npm-run-all gen:cli:commands gen:cli:config", - "gen:cli:commands": "ts-node ./generator/index.ts gen --type cli --input ../../spec/cli_v1_commands.yaml --output ./_cli/generated/usage.mdx ", - "gen:cli:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/cli_v1_config.yaml --output ./_cli/generated/config.mdx", + "gen:cli:commands": "ts-node ./generator/index.ts gen --type cli --input ../../spec/cli_v1_commands.yaml --output ./docs/reference/cli/generated/usage.mdx ", + "gen:cli:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/cli_v1_config.yaml --output ./docs/reference/cli/generated/config.mdx", + "gen:gotrue": "npm-run-all gen:gotrue:config gen:gotrue:usage", - "gen:gotrue:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/gotrue_v1_config.yaml --output ./_gotrue/config.mdx", - "gen:gotrue:usage": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/auth_v1_openapi_deparsed.json --output ./_gotrue/usage.mdx", + "gen:gotrue:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/gotrue_v1_config.yaml --output ./docs/reference/auth/generated/config.mdx", + "gen:gotrue:usage": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/auth_v1_openapi_deparsed.json --output ./docs/reference/auth/generated/usage.mdx", + "gen:storage": "npm-run-all gen:storage:api gen:storage:config", - "gen:storage:api": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/storage_v0_openapi_deparsed.json --output ./_storage/generated/usage.mdx", - "gen:storage:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/storage_v0_config.yaml --output ./_storage/generated/config.mdx", + "gen:storage:api": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/storage_v0_openapi_deparsed.json --output ./docs/reference/storage/generated/usage.mdx", + "gen:storage:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/storage_v0_config.yaml --output ./docs/reference/storage/generated/config.mdx", + "gen:supabase-dart:v0": "npm-run-all gen:supabase-dart:v0:ref", - "gen:supabase-dart:v0:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v0.yml --output ./_supabase_dart_versioned_docs/version-v0/generated", + "gen:supabase-dart:v0:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v0.yml --output ./docs/reference/dart/v0/generated", "gen:supabase-dart:v1": "npm-run-all gen:supabase-dart:v1:ref", - "gen:supabase-dart:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v1.yml --output ./_supabase_dart/generated", + "gen:supabase-dart:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v1.yml --output ./docs/reference/dart/generated", + "gen:supabase-js:v1": "npm-run-all gen:supabase-js:v1:ref", - "gen:supabase-js:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v1.yml --output ./_supabase_js_versioned_docs/version-v1/generated", + "gen:supabase-js:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v1.yml --output ./docs/reference/javascript/v1/generated", "gen:supabase-js:v2": "npm-run-all gen:supabase-js:v2:ref", "gen:supabase-js:v2:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v2.yml --output ./docs/reference/javascript/generated" }, diff --git a/apps/temp-docs/pages/[...slug].tsx b/apps/temp-docs/pages/[...slug].tsx index 018f615b9b1..6ee70385677 100644 --- a/apps/temp-docs/pages/[...slug].tsx +++ b/apps/temp-docs/pages/[...slug].tsx @@ -3,9 +3,9 @@ import { useRouter } from 'next/router' import { MDXRemote } from 'next-mdx-remote' import { serialize } from 'next-mdx-remote/serialize' import components from '../components/index' -import { menuItems } from '../components/Navigation/Nav.constants' +import { menuItems } from '../components/Navigation/Navigation.constants' import { getPageType } from '../lib/helpers' -import { getAllDocs, getDocsBySlug } from '../lib/docs' +import { getAllDocs, getDocsBySlug, getLibraryVersions } from '../lib/docs' import Layout from '~/layouts/Default' // table of contents extractor @@ -18,15 +18,29 @@ interface Meta { hide_table_of_contents: boolean } -export default function Doc({ meta, content, toc }: { meta: Meta; content: any; toc: any }) { +export default function Doc({ + meta, + content, + versions, + toc, +}: { + meta: Meta + content: any + versions: string[] + toc: any +}) { const { asPath } = useRouter() const page = getPageType(asPath) - console.log('[slug]', { meta, asPath, page }) - return ( // @ts-ignore - + @@ -44,13 +58,14 @@ export async function getStaticProps({ params }: { params: { slug: string[] } }) } let doc = getDocsBySlug(slug) - const content = await serialize(doc.content || '') + const versions = getLibraryVersions(slug) return { props: { ...doc, content, + versions, toc: toc(doc.content, { maxdepth: 2 }), }, } diff --git a/apps/temp-docs/pages/index.tsx b/apps/temp-docs/pages/index.tsx index e5ab19cd79c..d11b16a831b 100644 --- a/apps/temp-docs/pages/index.tsx +++ b/apps/temp-docs/pages/index.tsx @@ -2,7 +2,7 @@ import { MDXProvider } from '@mdx-js/react' import { MDXRemote } from 'next-mdx-remote' import { serialize } from 'next-mdx-remote/serialize' import components from '~/components' -import { menuItems } from '~/components/Navigation/Nav.constants' +import { menuItems } from '~/components/Navigation/Navigation.constants' import Layout from '~/layouts/Default' import { getDocsBySlug } from '../lib/docs' @@ -15,7 +15,7 @@ export default function Home({ }) { console.log({ menuItems }, 'index') return ( - + From 51a6b0524a504bec68301f7cb9e39ea7c3ba9e48 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 15:21:28 +0700 Subject: [PATCH 057/185] Update naming in side bar --- apps/temp-docs/components/Navigation/Navigation.constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/temp-docs/components/Navigation/Navigation.constants.ts b/apps/temp-docs/components/Navigation/Navigation.constants.ts index f573d630134..be47bb3933c 100644 --- a/apps/temp-docs/components/Navigation/Navigation.constants.ts +++ b/apps/temp-docs/components/Navigation/Navigation.constants.ts @@ -301,7 +301,7 @@ export const menuItems: NavMenu = { { name: 'Supabase Javascript Library', url: '/reference/javascript', items: [] }, { name: 'Supabase Flutter Library', url: '/reference/dart', items: [] }, { name: 'Supabase CLI', url: '/reference/cli', items: [] }, - { name: 'Supabase API', url: '/reference/api', items: [] }, + { name: 'Management API', url: '/reference/api', items: [] }, ], }, { From e53ca04de339cbb1fd69ccb8efe8fde8d0b01f74 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 15:32:19 +0700 Subject: [PATCH 058/185] Patch --- apps/temp-docs/components/Navigation/SideBar.tsx | 1 + apps/temp-docs/data/nav/auth-server.ts | 1 - apps/temp-docs/docs/reference/auth/release-notes.mdx | 7 +++++++ apps/temp-docs/lib/helpers.ts | 4 ++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/apps/temp-docs/components/Navigation/SideBar.tsx b/apps/temp-docs/components/Navigation/SideBar.tsx index 19285ac73cc..bdf5d4b453c 100644 --- a/apps/temp-docs/components/Navigation/SideBar.tsx +++ b/apps/temp-docs/components/Navigation/SideBar.tsx @@ -73,6 +73,7 @@ const SideBar = ({ menuItems = [] }: { menuItems: any }) => { )} {menuItems.length === 1 ? (
    +

    {menuItems[0].label}

    {menuItems[0].items.map((item) => ( diff --git a/apps/temp-docs/data/nav/auth-server.ts b/apps/temp-docs/data/nav/auth-server.ts index 93d3b0f4a1f..8dfa1bbe110 100644 --- a/apps/temp-docs/data/nav/auth-server.ts +++ b/apps/temp-docs/data/nav/auth-server.ts @@ -3,7 +3,6 @@ const Nav = [ label: 'Auth', items: [ { name: 'Auth Server', url: '/reference/auth', items: [] }, - { name: 'Usage', url: '/reference/auth/usage', items: [] }, { name: 'Configuration', url: '/reference/auth/config', items: [] }, { name: 'Release Notes', url: '/reference/auth/release-notes', items: [] }, ], diff --git a/apps/temp-docs/docs/reference/auth/release-notes.mdx b/apps/temp-docs/docs/reference/auth/release-notes.mdx index e69de29bb2d..cb164542845 100644 --- a/apps/temp-docs/docs/reference/auth/release-notes.mdx +++ b/apps/temp-docs/docs/reference/auth/release-notes.mdx @@ -0,0 +1,7 @@ +--- +id: release-notes +--- + +# Release Notes + +All release notes can be found in the [GitHub Releases](https://github.com/supabase/gotrue/releases) page. diff --git a/apps/temp-docs/lib/helpers.ts b/apps/temp-docs/lib/helpers.ts index 957482fe354..72a2484e483 100644 --- a/apps/temp-docs/lib/helpers.ts +++ b/apps/temp-docs/lib/helpers.ts @@ -18,6 +18,10 @@ export function getPageType(asPath: string) { page = 'reference/api' } else if (asPath.includes('/reference/cli')) { page = 'reference/cli' + } else if (asPath.includes('/reference/auth')) { + page = 'reference/auth' + } else if (asPath.includes('/reference/storage')) { + page = 'reference/storage' } else if (asPath.includes('/reference')) { page = 'reference' } else { From 3f942051c3d7b55b26f6e1a08a61a503e0896563 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 15:35:09 +0700 Subject: [PATCH 059/185] Update build command --- apps/temp-docs/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/temp-docs/package.json b/apps/temp-docs/package.json index 4a8db191589..27cc92fd1e8 100644 --- a/apps/temp-docs/package.json +++ b/apps/temp-docs/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "dev": "next dev --port 3001", - "build": "next build", + "build": "npm run generate:all && next build", "start": "next start", "lint": "next lint", @@ -29,7 +29,7 @@ "gen:supabase-dart:v0:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v0.yml --output ./docs/reference/dart/v0/generated", "gen:supabase-dart:v1": "npm-run-all gen:supabase-dart:v1:ref", "gen:supabase-dart:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v1.yml --output ./docs/reference/dart/generated", - + "gen:supabase-js:v1": "npm-run-all gen:supabase-js:v1:ref", "gen:supabase-js:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v1.yml --output ./docs/reference/javascript/v1/generated", "gen:supabase-js:v2": "npm-run-all gen:supabase-js:v2:ref", From adac616e8676c92786fd5cc259100f3639bb40be Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 15:50:41 +0700 Subject: [PATCH 060/185] update --- .../docs/reference/dart/initializing.mdx | 42 ++ .../docs/reference/dart/installing.mdx | 24 + .../docs/reference/dart/upgrade-guide.mdx | 581 ++++++++++++++++++ .../{release-notes.md => release-notes.mdx} | 0 ...ript-support.md => typescript-support.mdx} | 0 apps/temp-docs/package.json | 9 +- 6 files changed, 648 insertions(+), 8 deletions(-) create mode 100644 apps/temp-docs/docs/reference/dart/initializing.mdx create mode 100644 apps/temp-docs/docs/reference/dart/installing.mdx create mode 100644 apps/temp-docs/docs/reference/dart/upgrade-guide.mdx rename apps/temp-docs/docs/reference/javascript/{release-notes.md => release-notes.mdx} (100%) rename apps/temp-docs/docs/reference/javascript/{typescript-support.md => typescript-support.mdx} (100%) diff --git a/apps/temp-docs/docs/reference/dart/initializing.mdx b/apps/temp-docs/docs/reference/dart/initializing.mdx new file mode 100644 index 00000000000..3a76f300c65 --- /dev/null +++ b/apps/temp-docs/docs/reference/dart/initializing.mdx @@ -0,0 +1,42 @@ +--- +id: initializing +title: 'Initializing' +slug: initializing +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +## Flutter + +For `supabase-flutter`, you will be using the static `initialize()` method on `Supabase` class. + +### Flutter `initialize()` + +```dart title="main.dart" +Future main() async { + await Supabase.initialize(url: 'https://xyzcompany.supabase.co', anonKey: 'public-anon-key'); + runApp(MyApp()); +} +``` + +### Access `SupabaseClient` instance + +Once you initialize Supabase in your `main()` method, you can access the `SupabaseClient` instance from anywhere in your app. + +```dart +final supabase = Supabase.instance.client; +``` + +## Other Dart Projects + +You can initialize a new Supabase client using the `SupabaseClient()` 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. + +### Dart `SupabaseClient()` + +```dart +final supabase = SupabaseClient('https://xyzcompany.supabase.co', 'public-anon-key'); +``` diff --git a/apps/temp-docs/docs/reference/dart/installing.mdx b/apps/temp-docs/docs/reference/dart/installing.mdx new file mode 100644 index 00000000000..49822681a67 --- /dev/null +++ b/apps/temp-docs/docs/reference/dart/installing.mdx @@ -0,0 +1,24 @@ +--- +id: installing +title: 'Installing' +slug: installing +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +## Flutter + +For Flutter project, you can use [supabase_flutter](https://pub.dev/packages/supabase_flutter) package. + +```bash +flutter pub add supabase_flutter +``` + +## Other Dart projects + +For non-Flutter projects using Dart, such as server-side Dart or Angular-Dart, you can use the [supabase](https://pub.dev/packages/supabase) package. + +```bash +dart pub add supabase +``` diff --git a/apps/temp-docs/docs/reference/dart/upgrade-guide.mdx b/apps/temp-docs/docs/reference/dart/upgrade-guide.mdx new file mode 100644 index 00000000000..5ceb6784e50 --- /dev/null +++ b/apps/temp-docs/docs/reference/dart/upgrade-guide.mdx @@ -0,0 +1,581 @@ +--- +id: upgrade-guide +title: Upgrade to supabase-flutter v1 +description: 'Learn how to upgrade to supabase-flutter v1.' +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +supabase-flutter focuses on improving the developer experience and making it easier to use. This guide will help you upgrade from supabase-flutter v0 to v1. + +## Upgrade the client library + +Update the package in your pubspec.yaml file. + +```yaml +supabase_flutter: ^1.0.0 +``` + +## Error handling + +The way supabase-flutter throws error has changed in v1. In v0, errors were returned as a response. In v1, errors are thrown as exceptions. This makes it more intuitive as a Flutter developer to handle errors. + + + + + +```dart +final res = await supabase.from('my_table').select().execute(); +final error = res.error; +if(error != null) { + // handle error +} +final data = res.data; +``` + + + + + +```dart +try { + final data = supabase.from('my_table').select(); +} catch (error) { + // handle error +} +``` + + + + +## Auth classes / methods + +### Usage of `SupabaseAuthState` and `SupabaseAuthRequiredState` classes + +In v0, `SupabaseAuthState` and `SupabaseAuthRequiredState` were required to handle automatic token refresh and to listen to auth state change. In v1, `SupabaseAuthState` and `SupabaseAuthRequiredState` are deprecated, and token refresh will happen automatically just by initializing Supabase. [`onAuthStateChange`](/docs/reference/dart/upgrade-guide#listening-to-auth-state-change) can be used to action on auth state change. + + + + + +```dart +await Supabase.initialize( + url: 'SUPABASE_URL', + anonKey: 'SUPABASE_ANON_KEY', +); +... + +class AuthState extends SupabaseAuthState { + ... +} + +... + +class AuthRequiredState extends SupabaseAuthState { + ... +} +``` + + + + + +```dart +await Supabase.initialize( + url: 'SUPABASE_URL', + anonKey: 'SUPABASE_ANON_KEY', +); +``` + + + + +### Listening to auth state change + +`onAuthStateChange` now returns a `Stream`. + + + + + +```dart +final authSubscription = supabase.auth.onAuthStateChange((event, session) { + // handle auth state change +}); + +// Unsubscribe when no longer needed +authSubscription.data?.unsubscribe(); +``` + + + + + +```dart +final authSubscription = supabase.auth.onAuthStateChange.listen((data) { + final AuthChangeEvent event = data.event; + final Session? session = data.session; + // handle auth state change + }); + +// Unsubscribe when no longer needed +authSubscription.cancel(); +``` + + + + +### Sign in with email and password + +The signIn() method has been deprecated in favor of more explicit method signatures to help with type hinting. Previously it was difficult for developers to know what they were missing (e.g., a lot of developers didn't realize they could use passwordless magic links). + + + + + +```dart +await supabase.auth.signIn(email: email, password: password); +``` + + + + + +```dart +await supabase.auth.signInWithPassword(email: email, password: password); +``` + + + + +### Sign in with magic link + + + + + +```dart +await supabase.auth.signIn(email: email); +``` + + + + + +```dart +await supabase.auth.signInWithOtp(email: email); +``` + + + + +### Sign in with a third-party OAuth provider + + + + + +```dart +await supabase.auth.signInWithProvider( + Provider.github, + options: AuthOptions( + redirectTo: kIsWeb + ? null + : 'io.supabase.flutter://reset-callback/'), +); +``` + + + + + +```dart +await supabase.auth.signInWithOAuth( + Provider.github, + redirectTo: kIsWeb ? null : 'io.supabase.flutter://reset-callback/', +); +``` + + + + +### Sign in with phone + + + + + +```dart +await supabase.auth.signIn( + phone: '+13334445555', + password: 'example-password', +); +``` + + + + + +```dart +await supabase.auth.signInWithPassword( + phone: '+13334445555', + password: 'example-password', +); +``` + + + + +### Sign in with phone using OTP + + + + + +```dart +final res = await supabase.auth.signIn(phone: phone); +``` + + + + + +```dart +await supabase.auth.signInWithOtp( + phone: phone, +); + +// After receiving a SMS with a OTP. +await supabase.auth.verifyOTP( + type: OtpType.sms, + token: token, + phone: phone, +); +``` + + + + +### Reset password for email + + + + + +```dart +await supabase.auth.api.resetPasswordForEmail( + email, + options: + AuthOptions(redirectTo: 'io.supabase.flutter://reset-callback/'), +); +``` + + + + + +```dart +await supabase.auth.resetPasswordForEmail( + email, + redirectTo: kIsWeb ? null : 'io.supabase.flutter://reset-callback/', +); +``` + + + + +### Get the user's current session + + + + + +```dart + final session = supabase.auth.session(); +``` + + + + + +```dart +final Session? session = supabase.auth.currentSession; +``` + + + + +### Get the logged-in user + + + + + +```dart +final user = supabase.auth.user(); +``` + + + + + +```dart +final User? user = supabase.auth.currentUser; +``` + + + + +### Update user data for a logged-in user + + + + + +```dart +await supabase.auth.update( + UserAttributes(data: {'hello': 'world'}) +); +``` + + + + + +```dart +await supabase.updateUser( + UserAttributes( + data: { 'hello': 'world' }, + ), +); +``` + + + + +## Data methods + +`.insert()` / `.upsert()` / `.update()` / `.delete()` don't return rows by default. + +Previously, these methods return inserted/updated/deleted rows by default (which caused [some confusion](https://github.com/supabase/supabase/discussions/1548)), and you can opt to not return it by specifying `returning: 'minimal'`. Now the default behavior is to not return rows. To return inserted/updated/deleted rows, add a `.select()` call at the end. + +Also, calling `.execute()` at the end of the query was a requirement in v0, but in v1 `.execute` is deperecated. + +### Insert without returning inserted data + + + + + +```dart +await supabase + .from('my_table') + .insert(data, returning: ReturningOption.minimal) + .execute(); + +``` + + + + + +```dart +await supabase.from('my_table').insert(data); +``` + + + + +### Insert with returning inserted data + + + + + +```dart +final res = await supabase + .from('my_table') + .insert(data) + .execute(); +``` + + + + + +```dart +final insertedData = await supabase.from('my_table').insert(data).select(); +``` + + + + +## Realtime methods + +### Stream + +`.stream()` no longer needs the `.execute()` at the end. Also, filtering by `eq` is a lot easier now. `primaryKey` is now a named parameter to make it more obvious what to pass. + + + + + +```dart +supabase.from('my_table:id=eq.120') + .stream(['id']) + .listen(); +``` + + + + + +```dart +supabase.from('my_table') + .stream(primaryKey: ['id']) + .eq('id', '120') + .listen(); +``` + + + + +### Subscribe + + + + + +```dart +final subscription = supabase + .from('countries') + .on(SupabaseEventTypes.all, (payload) { + // Handle realtime payload + }) + .subscribe(); +``` + + + + + +```dart +final channel = supabase.channel('*'); +channel.on( + RealtimeListenTypes.postgresChanges, + ChannelFilter(event: '*', schema: '*'), + (payload, [ref]) { + // Handle realtime payload + }, +).subscribe(); +``` + + + + +### Unsubscribe + + + + + +```dart +supabase.removeSubscription(subscription); +``` + + + + + +```dart +await supabase.removeChannel(channel); +``` + + + diff --git a/apps/temp-docs/docs/reference/javascript/release-notes.md b/apps/temp-docs/docs/reference/javascript/release-notes.mdx similarity index 100% rename from apps/temp-docs/docs/reference/javascript/release-notes.md rename to apps/temp-docs/docs/reference/javascript/release-notes.mdx diff --git a/apps/temp-docs/docs/reference/javascript/typescript-support.md b/apps/temp-docs/docs/reference/javascript/typescript-support.mdx similarity index 100% rename from apps/temp-docs/docs/reference/javascript/typescript-support.md rename to apps/temp-docs/docs/reference/javascript/typescript-support.mdx diff --git a/apps/temp-docs/package.json b/apps/temp-docs/package.json index 27cc92fd1e8..a538b9f53b6 100644 --- a/apps/temp-docs/package.json +++ b/apps/temp-docs/package.json @@ -4,32 +4,25 @@ "private": true, "scripts": { "dev": "next dev --port 3001", - "build": "npm run generate:all && next build", + "build": "next build", "start": "next start", "lint": "next lint", - "generate:all": "npm-run-all --parallel gen:api gen:cli gen:gotrue gen:storage gen:supabase-dart:v0 gen:supabase-dart:v1 gen:supabase-js:v1 gen:supabase-js:v2", - "gen:api": "npm-run-all gen:api:usage", "gen:api:usage": "ts-node ./generator/index.ts gen --type api --url https://api.supabase.com --input ../../spec/transforms/api_v0_openapi_deparsed.json --output ./docs/reference/api/generated/usage.mdx", - "gen:cli": "npm-run-all gen:cli:commands gen:cli:config", "gen:cli:commands": "ts-node ./generator/index.ts gen --type cli --input ../../spec/cli_v1_commands.yaml --output ./docs/reference/cli/generated/usage.mdx ", "gen:cli:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/cli_v1_config.yaml --output ./docs/reference/cli/generated/config.mdx", - "gen:gotrue": "npm-run-all gen:gotrue:config gen:gotrue:usage", "gen:gotrue:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/gotrue_v1_config.yaml --output ./docs/reference/auth/generated/config.mdx", "gen:gotrue:usage": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/auth_v1_openapi_deparsed.json --output ./docs/reference/auth/generated/usage.mdx", - "gen:storage": "npm-run-all gen:storage:api gen:storage:config", "gen:storage:api": "ts-node ./generator/index.ts gen --type api --input ../../spec/transforms/storage_v0_openapi_deparsed.json --output ./docs/reference/storage/generated/usage.mdx", "gen:storage:config": "ts-node ./generator/index.ts gen --type config --input ../../spec/storage_v0_config.yaml --output ./docs/reference/storage/generated/config.mdx", - "gen:supabase-dart:v0": "npm-run-all gen:supabase-dart:v0:ref", "gen:supabase-dart:v0:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v0.yml --output ./docs/reference/dart/v0/generated", "gen:supabase-dart:v1": "npm-run-all gen:supabase-dart:v1:ref", "gen:supabase-dart:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_dart_v1.yml --output ./docs/reference/dart/generated", - "gen:supabase-js:v1": "npm-run-all gen:supabase-js:v1:ref", "gen:supabase-js:v1:ref": "ts-node ./generator/index.ts gen --type legacy --input ../../spec/supabase_js_v1.yml --output ./docs/reference/javascript/v1/generated", "gen:supabase-js:v2": "npm-run-all gen:supabase-js:v2:ref", From ad45baa2ada01c9b45f3fef10c9166d4f56eccf0 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 16:03:28 +0700 Subject: [PATCH 061/185] Update build command --- apps/temp-docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/temp-docs/package.json b/apps/temp-docs/package.json index a538b9f53b6..052948427fe 100644 --- a/apps/temp-docs/package.json +++ b/apps/temp-docs/package.json @@ -4,7 +4,7 @@ "private": true, "scripts": { "dev": "next dev --port 3001", - "build": "next build", + "build": "npm run generate:all && next build", "start": "next start", "lint": "next lint", "generate:all": "npm-run-all --parallel gen:api gen:cli gen:gotrue gen:storage gen:supabase-dart:v0 gen:supabase-dart:v1 gen:supabase-js:v1 gen:supabase-js:v2", From 77a7a5179abe2f4a1998b1228cc0a481e22d517f Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 16:13:40 +0700 Subject: [PATCH 062/185] Add generated folders --- apps/temp-docs/.gitignore | 4 +++- apps/temp-docs/docs/reference/api/generated/.gitkeep | 0 apps/temp-docs/docs/reference/auth/generated/.gitkeep | 0 apps/temp-docs/docs/reference/cli/generated/.gitkeep | 0 apps/temp-docs/docs/reference/dart/generated/.gitkeep | 0 apps/temp-docs/docs/reference/dart/v0/generated/.gitkeep | 0 apps/temp-docs/docs/reference/javascript/generated/.gitkeep | 0 .../temp-docs/docs/reference/javascript/v1/generated/.gitkeep | 0 apps/temp-docs/docs/reference/storage/generated/.gitkeep | 0 9 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 apps/temp-docs/docs/reference/api/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/auth/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/cli/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/dart/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/dart/v0/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/javascript/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/javascript/v1/generated/.gitkeep create mode 100644 apps/temp-docs/docs/reference/storage/generated/.gitkeep diff --git a/apps/temp-docs/.gitignore b/apps/temp-docs/.gitignore index f6ec88eea34..fd62e0e6867 100644 --- a/apps/temp-docs/.gitignore +++ b/apps/temp-docs/.gitignore @@ -18,4 +18,6 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -**/*/generated/**/* \ No newline at end of file +**/*/generated/**/* +!**/*/generated/.gitkeep +!**/*/generated/**/.gitkeep \ No newline at end of file diff --git a/apps/temp-docs/docs/reference/api/generated/.gitkeep b/apps/temp-docs/docs/reference/api/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/auth/generated/.gitkeep b/apps/temp-docs/docs/reference/auth/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/cli/generated/.gitkeep b/apps/temp-docs/docs/reference/cli/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/dart/generated/.gitkeep b/apps/temp-docs/docs/reference/dart/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/dart/v0/generated/.gitkeep b/apps/temp-docs/docs/reference/dart/v0/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/javascript/generated/.gitkeep b/apps/temp-docs/docs/reference/javascript/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/javascript/v1/generated/.gitkeep b/apps/temp-docs/docs/reference/javascript/v1/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/apps/temp-docs/docs/reference/storage/generated/.gitkeep b/apps/temp-docs/docs/reference/storage/generated/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d From 7cf931f6245c2dd55ef81865cae4a3f076513c51 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 16:32:39 +0700 Subject: [PATCH 063/185] test --- apps/temp-docs/layouts/Default.tsx | 9 ++++++++- apps/temp-docs/pages/[...slug].tsx | 25 ++++++++----------------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/apps/temp-docs/layouts/Default.tsx b/apps/temp-docs/layouts/Default.tsx index 12493ef2abc..c6b07acc354 100644 --- a/apps/temp-docs/layouts/Default.tsx +++ b/apps/temp-docs/layouts/Default.tsx @@ -13,7 +13,14 @@ interface Props { versions: string[] } -const Layout: FC = ({ meta, children, toc, menuItems, currentPage, versions }) => { +const Layout: FC = ({ + meta, + children, + toc, + menuItems, + currentPage, + versions = ['v2', 'v1'], +}) => { useEffect(() => { const key = localStorage.getItem('supabaseDarkMode') if (!key) { diff --git a/apps/temp-docs/pages/[...slug].tsx b/apps/temp-docs/pages/[...slug].tsx index 6ee70385677..5a55099aa94 100644 --- a/apps/temp-docs/pages/[...slug].tsx +++ b/apps/temp-docs/pages/[...slug].tsx @@ -18,29 +18,20 @@ interface Meta { hide_table_of_contents: boolean } -export default function Doc({ - meta, - content, - versions, - toc, -}: { +interface Props { meta: Meta content: any - versions: string[] + // versions: string[] toc: any -}) { +} + +export default function Doc({ meta, content, toc }: Props) { const { asPath } = useRouter() const page = getPageType(asPath) return ( // @ts-ignore - + @@ -59,13 +50,13 @@ export async function getStaticProps({ params }: { params: { slug: string[] } }) let doc = getDocsBySlug(slug) const content = await serialize(doc.content || '') - const versions = getLibraryVersions(slug) + // const versions = getLibraryVersions(slug) return { props: { ...doc, content, - versions, + // versions, toc: toc(doc.content, { maxdepth: 2 }), }, } From 2eecdaab24a8c9c68e66e311a5299f156243ba91 Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 16:50:58 +0700 Subject: [PATCH 064/185] Change the way we read available versions --- .../components/Navigation/NavBar.tsx | 8 ++++-- .../Navigation/Navigation.constants.ts | 4 +++ .../components/Navigation/Navigation.types.ts | 1 + apps/temp-docs/data/nav/README.md | 8 ++++-- apps/temp-docs/layouts/Default.tsx | 12 ++------ apps/temp-docs/lib/docs.ts | 28 ++++++++++--------- apps/temp-docs/pages/[...slug].tsx | 5 +--- apps/temp-docs/pages/index.tsx | 3 +- 8 files changed, 35 insertions(+), 34 deletions(-) diff --git a/apps/temp-docs/components/Navigation/NavBar.tsx b/apps/temp-docs/components/Navigation/NavBar.tsx index 4d35ee4d5e4..6b5acba1d00 100644 --- a/apps/temp-docs/components/Navigation/NavBar.tsx +++ b/apps/temp-docs/components/Navigation/NavBar.tsx @@ -4,19 +4,23 @@ import { useRouter } from 'next/router' import { useState, useEffect, FC } from 'react' import { IconMenu, IconSearch, Input, IconCommand, Button, IconMoon, IconSun, Listbox } from 'ui' import { useTheme } from '../Providers' +import { REFERENCES } from './Navigation.constants' interface Props { currentPage: string - versions: string[] } -const NavBar: FC = ({ currentPage, versions }) => { +const NavBar: FC = ({ currentPage }) => { const { isDarkMode, toggleTheme } = useTheme() const [mounted, setMounted] = useState(false) const { asPath, push } = useRouter() const pathSegments = asPath.split('/') + const library = pathSegments.length >= 3 ? pathSegments[2] : undefined + const libraryMeta = REFERENCES?.[library] ?? undefined + const versions = libraryMeta?.versions ?? [] + const version = versions.includes(pathSegments[pathSegments.indexOf(library) + 1]) ? pathSegments[pathSegments.indexOf(library) + 1] : versions[0] diff --git a/apps/temp-docs/components/Navigation/Navigation.constants.ts b/apps/temp-docs/components/Navigation/Navigation.constants.ts index be47bb3933c..6815a1bbb6c 100644 --- a/apps/temp-docs/components/Navigation/Navigation.constants.ts +++ b/apps/temp-docs/components/Navigation/Navigation.constants.ts @@ -13,21 +13,25 @@ export const REFERENCES: References = { javascript: { name: 'supabase-js', library: 'supabase-js', + versions: ['v2', 'v1'], icon: '/docs/img/libraries/javascript-icon.svg', }, dart: { name: 'Flutter', library: 'supabase-dart', + versions: ['v1', 'v0'], icon: '/docs/img/libraries/dart-icon.svg', }, cli: { name: 'CLI', library: undefined, + versions: [], icon: '/docs/img/libraries/cli-icon.svg', }, api: { name: 'API', library: undefined, + versions: [], icon: '/docs/img/libraries/api-icon.svg', }, } diff --git a/apps/temp-docs/components/Navigation/Navigation.types.ts b/apps/temp-docs/components/Navigation/Navigation.types.ts index 91617d172ff..3422099a2ae 100644 --- a/apps/temp-docs/components/Navigation/Navigation.types.ts +++ b/apps/temp-docs/components/Navigation/Navigation.types.ts @@ -17,6 +17,7 @@ export interface References { [key: string]: { name: string library?: string + versions: string[] icon: string } } diff --git a/apps/temp-docs/data/nav/README.md b/apps/temp-docs/data/nav/README.md index 521203dfe5d..452165a6740 100644 --- a/apps/temp-docs/data/nav/README.md +++ b/apps/temp-docs/data/nav/README.md @@ -1,11 +1,13 @@ # [WIP] Adding navigation for a new section +[Note] This isn't the best way for versioning in my opinion, but this is the current way to do it while we're migrating to Next.js + This folder holds the structure for the side navigation menu in the reference documentation pages. Each reference section (as well as their individual versions where applicable) have its own set of navigation. The following are relevant to adding navigation for a new section: - `getPageType()` from `lib/helpers` -- `menuItems` from `components/Navigation/Navigation.constants` +- `menuItems` and `REFERENCES` from `components/Navigation/Navigation.constants` - `NavMenu` from `components/Navigation/Navigation.types` ## Adding navigation for a section that doesn't require versioning @@ -18,9 +20,9 @@ Finally, add the menu to `menuItems` under a new key - the key should be what yo ## Adding navigation for a section that requires versioning -This is more applicable for client libraries (e.g supabase-js and supabase-dart). Versions will all sit within their own folder - if the folder doesn't exist yet, just create one. +This is more applicable for client libraries (e.g supabase-js and supabase-dart). Versions will all sit within their own folder - if the folder doesn't exist yet, just create one. The navigation for each section will then be named as 'v1', 'v2', and so on. -The navigation for each section will then be named as 'v1', 'v2', and so on. The version selector in `NavBar` will pick up what available versions there are from here. +Then, update `REFERENCES` accordingly. Thereafter, update `getPageType` to be able to get the page type based on the URL path - preferably follow the syntax of `reference/{section_name}/{version}`. Typically the latest version available will not have the `/{version}` in it. diff --git a/apps/temp-docs/layouts/Default.tsx b/apps/temp-docs/layouts/Default.tsx index c6b07acc354..c4220745f8b 100644 --- a/apps/temp-docs/layouts/Default.tsx +++ b/apps/temp-docs/layouts/Default.tsx @@ -10,17 +10,9 @@ interface Props { toc?: any menuItems: any currentPage: string - versions: string[] } -const Layout: FC = ({ - meta, - children, - toc, - menuItems, - currentPage, - versions = ['v2', 'v1'], -}) => { +const Layout: FC = ({ meta, children, toc, menuItems, currentPage }) => { useEffect(() => { const key = localStorage.getItem('supabaseDarkMode') if (!key) { @@ -53,7 +45,7 @@ const Layout: FC = ({
    - +
    diff --git a/apps/temp-docs/lib/docs.ts b/apps/temp-docs/lib/docs.ts index 7942f7ac243..7612b4b00c4 100644 --- a/apps/temp-docs/lib/docs.ts +++ b/apps/temp-docs/lib/docs.ts @@ -63,19 +63,6 @@ export function getAllDocs() { return docs } -export function getLibraryVersions(slug: string) { - const paths = slug.split('/') - if (paths.includes('reference') && paths.length >= 3) { - const reference = REFERENCES[paths[2]] - if (reference?.library !== undefined) { - const path = `data/nav/${reference.library}` - const list = fs.readdirSync(path).map((file) => file.split('.')[0]) - return list.reverse() - } - } - return [] -} - function walk(dir: string) { let results: string[] = [] const list = fs.readdirSync(dir) @@ -92,3 +79,18 @@ function walk(dir: string) { }) return results } + +// [Joshen] Initially tried to simplify the NavBar versioning by reading the directory +// but caused some issues on Vercel. Just gonna park this for now. +export function getLibraryVersions(slug: string) { + const paths = slug.split('/') + if (paths.includes('reference') && paths.length >= 3) { + const reference = REFERENCES[paths[2]] + if (reference?.library !== undefined) { + const path = `data/nav/${reference.library}` + const list = fs.readdirSync(path).map((file) => file.split('.')[0]) + return list.reverse() + } + } + return [] +} diff --git a/apps/temp-docs/pages/[...slug].tsx b/apps/temp-docs/pages/[...slug].tsx index 5a55099aa94..3a1c8a90c0c 100644 --- a/apps/temp-docs/pages/[...slug].tsx +++ b/apps/temp-docs/pages/[...slug].tsx @@ -5,7 +5,7 @@ import { serialize } from 'next-mdx-remote/serialize' import components from '../components/index' import { menuItems } from '../components/Navigation/Navigation.constants' import { getPageType } from '../lib/helpers' -import { getAllDocs, getDocsBySlug, getLibraryVersions } from '../lib/docs' +import { getAllDocs, getDocsBySlug } from '../lib/docs' import Layout from '~/layouts/Default' // table of contents extractor @@ -21,7 +21,6 @@ interface Meta { interface Props { meta: Meta content: any - // versions: string[] toc: any } @@ -50,13 +49,11 @@ export async function getStaticProps({ params }: { params: { slug: string[] } }) let doc = getDocsBySlug(slug) const content = await serialize(doc.content || '') - // const versions = getLibraryVersions(slug) return { props: { ...doc, content, - // versions, toc: toc(doc.content, { maxdepth: 2 }), }, } diff --git a/apps/temp-docs/pages/index.tsx b/apps/temp-docs/pages/index.tsx index d11b16a831b..7be96f8bb61 100644 --- a/apps/temp-docs/pages/index.tsx +++ b/apps/temp-docs/pages/index.tsx @@ -13,9 +13,8 @@ export default function Home({ meta: { title: string; description: string } content: any }) { - console.log({ menuItems }, 'index') return ( - + From 49d1fa8f1b989f7bfad34d0afad75150179ffccd Mon Sep 17 00:00:00 2001 From: Joshen Lim Date: Thu, 27 Oct 2022 16:53:37 +0700 Subject: [PATCH 065/185] fix --- apps/temp-docs/layouts/Guide.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/temp-docs/layouts/Guide.tsx b/apps/temp-docs/layouts/Guide.tsx index 00b36a428ee..3a2538ddcf0 100644 --- a/apps/temp-docs/layouts/Guide.tsx +++ b/apps/temp-docs/layouts/Guide.tsx @@ -22,7 +22,6 @@ export default function ContentsLayout({ context }: any) { menuItems[page] } currentPage={page} - versions={[]} >
    {context.children}
    From 76a6716466284c9b6e7155689a1315e062f018c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Thu, 27 Oct 2022 11:44:10 +0100 Subject: [PATCH 066/185] What is PostgreSQL commitfest and how to contribute --- .../2022-10-27-postgresql-commitfest.mdx | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 apps/www/_blog/2022-10-27-postgresql-commitfest.mdx diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx new file mode 100644 index 00000000000..53249d298b9 --- /dev/null +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -0,0 +1,150 @@ +--- +title: 'What is PostgreSQL commitfest and how to contribute' +description: 'Comparing one of the most popular Postgres features against alternatives' +author: pavel +image: postgres-fts-vs-the-rest/postgres-full-text-search.jpg +thumb: postgres-fts-vs-the-rest/postgres-full-text-search.jpg +tags: + - postgres +date: '2022-10-27' +toc_depth: 3 +--- + +The PostgreSQL community has a specific, effective, and time-tested method for contributing to the core code. + +Proposals and changes to PostgreSQL (called patches) are submitted via email to the common Postgres hackers' mailing list . Then you can track all activity simply by reading your mailbox. You can also follow this mailing list online at [postgresql.org/list/pgadmin-hackers](https://www.postgresql.org/list/pgadmin-hackers/). + +The mailing list contains a lot of different discussions. Some of the patches are preliminary POCs (proof-of-concept) not to be committed to the core directly, and some are urgent bug fixes. When a feature is intended for merging this should be done by creating a Commitfest entry, which resembles a pull request. + +## What is Commitfest? + +Commitfest is a month-long activity where Postgres contributors and core staff (committers) dedicate to looking at the patches, reviewing them, improving, and committing to the master branch. Effectively these are the months you most probably get feedback on your patches. + +There are 5 commitfests each year. You can see the schedule at [commitfest.postgresql.org](https://commitfest.postgresql.org/). You can only attach a patch to a commitfest **that hasn't started yet** (i.e. before 1st day of a commitfest month). + +## Why participate in Commitfest? + +There are numerous benefits: + +- You gain knowledge of PostgreSQL internals by reviewing other hackers' patches, and grow your profile within the community. +- The process of reviewing involves more senior PostgreSQL experts and as a rule, the code proposed becomes better. +- Lower risk for your code. If you're running a fork or extension that diverges from PG core then only you are responsible for its maintenance. Once it is merged, the entire community will help with maintenance and the API becomes the "official" way to do it. +- PostgreSQL commits are likely to survive longer than you do. Like a book manuscript, you get to leave a small history in the world. +- To re-enforce the community. Many features, like performance, have diverse options and many people discuss how to make them better. This is more effective when you join the party. + +## Which patches are welcome on a Commitfest? + + +Generally, all patches that touch the core code are welcome. It's not necessary that they are complex. In fact, it's an excellent strategy to start by fixing or improving something small. + +The main topics to propose are ****bugfixes, performance, server features, clients, security, SQL commands, testing improvements, replication and recovery, procedural languages, code refactoring (yes, it's very important!), monitoring and control, and documentation. + +Some ideas on what to submit: + +- Very small and uncontroversial fixes (especially bug fixes) have a good chance to be reviewed and committed even before Commitfest. If they aren't, just attach it to commitfest. +- If you make your feature an extension, the chance of committing it to the core is small. There are nice extensions like Pageinspect and Amcheck, that are committed into PG code as contribs but it is rare (contribs - are extensions that are inside the main PG package) +- There is no need to propose patches to refine translations, .po files etc. This is done by specialists. If you have user-visible messages in your patch just leave it English-only. +- Refining documents, readmes, and comments are welcome if they are clear and precise enough. You can propose a fix for only one line of comment but please don't do nitpicking. +- Performance-related features should better demonstrate performance increase at least in some use cases and no performance degradation in others. +- If your patch changes user behavior be ready to discuss and rework the interface. It's not easy to reach an agreement among many hackers with varying opinions. + +You can find a list of patches for the upcoming commitfest here: [commitfest.postgresql.org/40](https://commitfest.postgresql.org/40/) + +## Quick steps on how to make a patch + +Make a git branch that is based on the most recent master branch ([https://github.com/postgres/postgres](https://github.com/postgres/postgres)): + + +``` bash + git clone https://github.com/postgres/postgres + git checkout master + git checkout -b your_branch_name +``` + +Add your code to the branch (i.e. cherry-pick your commits from another branch). + +Rebase and squash your patch code to be 1 commit against master: + +``` + git rebase -i HEAD~5 + # This will take the last 5 commits in a branch + # and you can do anything with them: + # squash, change order, change commit message, etc +``` + +Edit your commit message to be meaningful and clear. Be concise, but don’t be too short. Reviewers enjoy understanding the purpose of a patch and what it does. This is especially important if the patchset consists of several patches. The first line of the commit message will become the patch name on a step later so make that line particularly clear and concise. + +Don’t forget to add all the patch authors with their emails to the commit message. + +``` + git format-patch -1 -v13 +# 1 = patch depth. +# The number of topmost patches to include +# v13 = the patch version. +# Make new version number anytime you want to +# send updated patch to the same thread) +``` + +Attach the file(s) to an email message (they look like `v13-0001-Naming-of-a-patch.patch`) + +Compose email message to pgsql-hackers@postgresql.org. Write all rationale and details of your proposal. The main thing to bear in mind is that attracting attention to your proposal is like 50% of success. Also, please be polite. + +It’s encouraged to split complicated patches into several independently working parts as it’s much easier to review (although not all complicated patches are easy to decompose). + +## Submitting to a Commitfest thread + +After you have created a patch, you can attach it to a Commitfest thread: + +- Make sure that you have sent email with your patch to the mailing list +- Open commitfests page [commitfest.postgresql.org](https://commitfest.postgresql.org/) and choose the nearest commitfest with the status "Open" +- Click "New patch" button. +- Create a concise description, chose the relevant topic, and fill in the msgid in the hackers mailing list to attach a thread (which can be found in a full header of a mail message e.g.`Message-ID: `) +- Click "Create patch" button. + +That's all. Congrats! + +## After your patch is submitted to commitfest + +After you have a submitted your patch, several things will happen: + +- It will appear on CI page [cfbot.cputube.org](http://cfbot.cputube.org/) which will check its health against several architectures and OSes. If the patch has any errors then you should fix/rebase it. New versions of patches sent in messages replying to the mail thread are taken by CFBot automatically. Send updated versions of all patches in a patchset even if only one changed, otherwise cfbot will not take it properly. Clean status patches will attract reviewers' and committers' attention first. +- It will get "Needs review" status and anyone could add a review and change it to "Ready for committer" or "Waiting on author". +- You are supposed to **answer the questions** and communicate on your patch regularly during commitfest. That includes fixing the things the other hackers propose. It's likely better to follow their opinion and it almost always takes much less effort than arguing. Be polite, even if comments seem like nitpicking (probably they are not, actually). +- Give back. You are supposed to **review** the same number of patches that you proposed to commitfest and with similar complexity. You can choose what to review based on your interest, your knowledge of a particular part of Postgres (e.g. indexes or planner things), or even your personal acquaintance with the author. As a rule of thumb, you are supposed to specify if you are from the same company as the author (it is not prohibited but this should be clear, the best way is just to add your company to the email signature). + +The commit process is a two-step: + +1. Preliminary review. It could be done by anyone (including you). A detailed guide on how to do this [](https://wiki.postgresql.org/wiki/Reviewing_a_Patch) If there are no doubts reviewer sets the status to "Ready for committer". If the patch needs some changes a reviewer can set "Waiting on author". Reviewers can leave a favorable review but that's only a signal. After other reviewers join the conversation, if there are no objections then one of them will make it "Ready for committer". It's pretty normal if there is more than one reviewer. In fact the more reviewers, the better. +2. Final review by a committer. Committers are the most senior members of a community and it's a formal status. The list of committers: [](https://wiki.postgresql.org/wiki/Committers) As a result a committer can commit it or push back to "Waiting on author", or "Need review". + +The time and attention of committers are limited, which is why there is a two-step process. Some patches that pass the initial review won't receive reviewers' attention. In that case, they will be transferred to the next commitfest automatically. + +## When does the commitfest finish? + +CF finishes around the 1st day of the next month (i.e. November CF starts on November 1 and finishes on December 1). For any patches that do not get merged: + +- Patches with the status "Ready for committer" or "Need review" will be transferred to the next CF. +- Patches with the status "Waiting on author" are transferred automatically if the questions and proposals in the thread are not unaddressed for more than 2 weeks. Otherwise, it will be dropped from CF with "Returned with feedback". + +All these "automatic" things are actually done by commitfest managers (volunteers), so if you have any requests, doubts, or questions you can write them personally. + +Please note that hackers almost never reject patches! They just return it and the author if he is still willing and has time to work on the patch further can attach it (the same thread) to the next commitfest anytime. + +## What is feature-freeze? + +Feature-freeze is an annual event that targets patches released into a major PostgreSQL version. Feature-freeze for the "current-year" release is at the end of a March commitfest. All patches committed on and before will be released in the PG major release (in October). Everything committed after March (July, September, etc) will go into next year's major release. + +For that reason, the March Commitfest takes **10-15 days longer** than the usual 1 month, finishing in mid-April. It's important for the author to continue watching your patches and feedback until that time. Commits in early April are big! + +## Important tips + +- If you want to discuss something with hackers without a thread overhead (which makes it more difficult to read by other hackers) you can wipe out from the reply list and leave only the participants you want. If you do this, you should add `[offlist]` to the message subject to prevent confusion. +- The hackers mail list receives *a lot* of messages. It's advisable to set up mail filtering so that hackers' messages are sorted into separate places and shown as threads. But ensure that all messages that contain **your address** will NOT go into this place so that you can read all answers to your proposal among your prioritized emails. +- Patches that need minor rework like rebase or comments refine are pushed back to "Waiting on author". Therefore, almost-ready patch very often stall, waiting for a new review, during which it will need another rebase and it goes into a vicious circle. If you are certain that the change is minor and doesn't affect functionality, you can return the patch to the same state it had before (if it was "Ready-for-committer" it should be ready for committer even after rebase). It's good manners to mention this change in a hacker's thread to remove suspicions that you want to hijack the patch status. + + + + + + + From 495d7355333e572fc73305b42c77f7a291f1b230 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Thu, 27 Oct 2022 11:59:43 +0100 Subject: [PATCH 067/185] Added image and author --- .../2022-10-27-postgresql-commitfest.mdx | 4 ++-- apps/www/lib/authors.json | 8 ++++++++ .../what-is-postgres-commitfest.jpg | Bin 0 -> 1057070 bytes 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 apps/www/public/images/blog/what-is-postgres-commitfest/what-is-postgres-commitfest.jpg diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index 53249d298b9..786d5db331c 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -2,8 +2,8 @@ title: 'What is PostgreSQL commitfest and how to contribute' description: 'Comparing one of the most popular Postgres features against alternatives' author: pavel -image: postgres-fts-vs-the-rest/postgres-full-text-search.jpg -thumb: postgres-fts-vs-the-rest/postgres-full-text-search.jpg +image: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg +thumb: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg tags: - postgres date: '2022-10-27' diff --git a/apps/www/lib/authors.json b/apps/www/lib/authors.json index 264614b5159..32aa9a36de2 100644 --- a/apps/www/lib/authors.json +++ b/apps/www/lib/authors.json @@ -221,5 +221,13 @@ "position": "Engineering", "author_url": "https://github.com/burggraf", "author_image_url": "https://github.com/burggraf.png" + }, + { + "author_id": "pavel", + "author": "Pavel Borisov", + "username": "pavel", + "position": "Postgres Engineer", + "author_url": "https://github.com/pashkinelfe", + "author_image_url": "https://avatars.githubusercontent.com/u/63344111?v=4" } ] diff --git a/apps/www/public/images/blog/what-is-postgres-commitfest/what-is-postgres-commitfest.jpg b/apps/www/public/images/blog/what-is-postgres-commitfest/what-is-postgres-commitfest.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20286f9b98f2b352484513c309f0392dad18ed79 GIT binary patch literal 1057070 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

    dHee=}g4=i`tSK@bJHU4Zxi@f{^cp= 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 z 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�zvv^+VUa*&&H;9M7Sm_-@++VX`&w>4_ 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%0Df^V4WBAY>MC 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�o%e%Zg@8X}* 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�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

    6pgzmK)JMIQDmVv1 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¥}k63pAN( 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%0DT3>!QRDz{4+Ow=LB$g~I5A{g!SVlxDKKVvB9n= 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%0D!n|5;^G1t;L0 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�Fd2G!2bXdxZCp9ZN*^817y7 zix|PRK76{*KdRlYJI1(XW5d~A6-$Qttn~v=)@BMRB^-pBwUJRL*DZOM)lmvU2Qr;& z2}oZUaqV*Pc|jDN`+RS}H-l!;w#ZsuJ+=E@y_PP%tPN;{koX>s8_p5vopus;9(DJL z)DjxSI+pGk_b$cmHWwk}iI?`V$lmSTCzp!hQl+NN{L<3Q#4!#S&7xeK8twO9qktRl zYEneU?!Y}<>~?dxc4#;?ZbnYEEVgegUcD6NDNxK&t5+_fG}TIKAxfrPFmNO(3P~lD z6rDiBFhDf~0-VtFb~gp08}VR9g$^l&5-d25IS@#=^X`xy3Eo#pRdk1iK?DZd_?wF4 zc)oU?V!X0=ybmOu-!nR*P;ON);;3xpaJ4YnRuSIY+MHn<{Ra6X!c2; zK1TJXy?eaw7?x7+(`SLdE&CYd_gvMa!_3&RknDbJLFqkkX+I0Io&9Fri^E)BBf>Ma zYv=N3H%_Kp(n64mRVq?al!8{8b(Kz;){vx?Y6}S@0?JTUA9TC|6haODQ~Xxu@^rn5 z({Ho63d?8^A95&t;9h;lUjPt~KMWVUr0Y60P??#4Mw2;Oo?|tcuR@JF6sp#%R-FWq zrj0t46tq%E5Xeah00sauQrbo|0ssl1nQubR4fs$X!-)Bc`;eiy^Y0nH^Nyi?f zam4edT|?58k!U-?IaX_hJWEE7wnfs=EwJscIcA0&)`P70DC%p&b-+Cv&c#3B9(mwG z$hUt+oyjV*7=bVp33IqEa*LZTR z;|vi#8FFgMIz#RRD5^&L1{U~fCbo9)%w8u=qd7HN?K{YL=*Bq-Ex7IgHQ7&v!zr88 zOl8`9N5=Sf7NNuGWH@NaD=HQ$l8Pxn)RZUG()B#cq?NlZVwv42Nh-!%b>~SX4Hl=0 z(+u%%6GZ6iU4|{HC8pQ&ff@95(DX;u2|ktme^vK`)738l^vVS4i7ZJX#mLeO?RK=g z-HTkDX}!9k8;Cb;&n39X(qcm~mVy+bzqC?X2f)E}lY>?ufaM@Mg91x}32^Mr;e~=m zzpTK;9d~v~Hh4)JalrH0J{`oUXERxKX0p_Z%IO5sTAfH*QBf(X1vM&}AxR1#h6E`p z=EhzH=ST%Qgv8rz!2-syz`Gd?z7H^fG&~&7aEgo&S@nJ3rRSb?(DTPwhXD?P^QeM|fNCT$(#lbYJkA7%_JJ(QcY@@& z15&N?9&_tuTfS??p8+Jf4}%F8N@Uo8$$<*F(n*mDOAggjo=kA`_X33lv z)KozloD${15VaB^hLnY*f)3{e9vtY}O|)I3$YyDHZqwoZJHt3mQ;1Q|aN(V)m<>sK zDXl6_l_%8JHC3*i5=mJ!(xU1-iqZ(5mdE)2VU+j`dC)enxzPZXt1`L8A`e-| zo^*#F03`|;Bf?}5NGEaPUMY~``PAkzITMpYGU=yV)*_8Mm8u1(ii)Q|sRdywN&`~G0s(?ZOUYzG1bZdhNdSi_zax5+-Ml33!c&~W{TVT-wHHuX40b%s zNoW$pS^+K{nr`W3cKo@u12D8RbtXk|P`G-tDp8twjoE|hPLQG!2BHR}yaxa%sJSlg zaatMgL@0y>l_W9&R)mYY2Zp$&M}y}pSI=a>T&Ghn>gfccl||A~P*BrOs?w9J4GTJg z(1E2WT2-Xs;9eS_qGwIQNg=l@{H-%$wOj1&LbBQf2b_zp_<85UkGn9M(7}3Mv!M&G z5EoavMuRz774uoD)M%oO8o8RaDbYfLlSZ9NidtzTvUx_f_H8VYsq`o&vaUI|rDt*I za3I5eDT@3!ZaDNqSKf8N>3ob{BVKA&q}8x$W+CBWPDmceYXV*fU|w93Ly=pW?f9I0 za@@=*r`b0wktWh1rHzQNW-bg`V|q|?rT+j+3Kc|-j|K=ZZcA)S0V+3-tAhzojW^#e zs7USkUOU36cyl$vs_^4eIaO6ujMkcKrlnL;RGP|KzqLhb2?-R!5TKxxbEK(ya9w*@ zL6q_QO35gLU~dXOj4lX=*WDShXj2ubd|fx5Pm z1C<+k#+4QXhXvMHKqRma`?%j&`w{SgHf^pPKSGr-ByB}tY!9wtK!c<&A1OOb3 zAS?n@&MXPiYyqlmbd@VU=oo!1&DwlL$2e~mrIJQNhW@6!s8OhWRTKfrkeU?zQ~Js% zWhgG7K{{OsOVl{ybP%dn8>d}q%Ie-$=J7N}jkZ`~TA#GqzHlOt92(IcI>3@*Kdzdw z9#kRSU}#MnsxgoQ5bf;(vZpdYZdALFOvQ;Kk-g6zzvn5^GGJJ^7l5N7K}v@S((V{L z3#i)$!Mm?Bw|)rEl!Ylei#bzifPJ57wv9Z*=?RBW!LHmFb!4KmHEyH+~ z4CZq!`qc_bQK>{B3Lu(l6qb=uK?+?Z9Z5=xQWO+i9ZJRsCDJIg+>-Thpej>ibu@*V zJ*vkR1PG!GSHq7w`7b&(94R7t3<6%@phR7rek(W(GibUq}TaGq50W=JA+l^#%B z7*{J6QF}NbB!cfCoEfnzJ{~mO$SDDwg2acBe%BpiOqe$W&{9c~rax9(8@70Vj&Qyg zlj2!??+qE+nU)llrkM&#sc8LPs_L?-Q+;HrkW#f0qJ(6i$?8-Y%5U*2`>b zEL%0K+1-MB?(0731w-DJ7<3Tx=#J{XTmS`Gq3X$UZb-Q!NK5sb2z1>*uo4J5Z)B** zOq>+ut;H&FVUHXpV*pts&{f@9+?doZs`6#ldL3GVOS7{O($Y@l#NM`ntvy=$q|0^- zS>uOk&vDKhnDG8bh0)>Or#qJQ0t87NqN02qPia zgT>{So!l2YsIB4Iv~98ul(bu7TJ_*X5j7y|Kds*&xeezC5Z!hYqgBV9ds;$4US6(4 zmeR?z1qYH~5T@lii5j_zS`Ifnqj1CxGI8 z%z~R#I3yBCm^Uo$?Cj)&WfoCUlk%@RS1LC%C77X?&E>1t%cC($hGLCe#U+HbWFnwa z(!^;|QaMUUC@O70fI+WKMHEm{m~(Euq8ssS@u5P9VMK`u_aVg!t~~RkI`V)B)hR*= zsF@A8@fQ}!aeVbW)<-A$r8H&JNoiV9N~KzfT9j3yikD50l7yvBr4*-_galI@Zi4Hi z5~(qH@^3#xSglqYGtjLu#i8>R=iLsx`_4GwbfKDc+g9d)ks*?j#bVl!Xw$DMV^Z$1-%O%cz9{QOZ5sVU3Vt3-knRD{(u&=XTyy<*Zrl9D+~tSgMTUJ`jb z*D4uT8q}XA^0d8z({F(e9h%eV9&##>^U)o0BdCNIp}Jlr*_T0df@LD;Eu+lWr&}?Y z%+R8m6sqQGSEorNXrWD26r|Elm{6pJB?$#K1x6jWa8jkzQ+X*t_PMvE1{=;mg9-QE zefV&kapse`ggfJ$XVCBp&=bekuyqfLTl{P4M`f>cQaGrpo)614yn zgvrtf3{8vbDk+!_dk)p{tk!H_iQbDpYc<<@c8tFo;gozgnBjG}a;oR*dc~(TrjpW1 zssm3lYL%+0YETS>B`GK&DRqZZMhmB0JhGDG(U9^tc+s?dwkDT@Zij2sv%Bcl4zxh< z4!V!Sb=O9rawn|&#o$%qj+6v+_+~Z-+0rklxb~R9hGRVden$6D_<2+6j3lTrYa~e| z5Yc{Zor+cfrJoc z4##*G9S=l!6nK}SKj|dv?=Goz-C#fp`9PguAu0isH*u)Dmr!Q`oyL)23RkqlP3;%F z7DR2We^+dkf|QW0FB5eAVy1GT&|RHO1ao2#5^2^I;eKr1qn##-xr8F@$!BLB#<8T% zphyK$XJGI`-s&a`>EJRIJh7sdJ3YrbOpj`myUe!Nf#>qvFN$TenarupQl?j`m`YTl zR)Un&q?)BP>M1McPNjxt1u6(B5TJn~c6@ej!MZw1%^KNbjRFLJK^6T}d0utW9e6xl zc(|`R>&S$IxIkxrtNgecNV>ZvMPlSz6) z*0ZT#^H)It0#waZ;X281yPIoA+2h$PP;Bwy`e?Ah)`$zlP4}J-x?UQ@IOz_$@d4xk z926R`b}pr;0PYLwf|Jf(81jHpQbDqgD|eD>NtMp;kK$TF(g1cWNO1duaQ^ZFk^{z| zTLzNJ5_HQ|d7~PV#if+MIZP=m`k1jG9YC|(g%Ab}Z}|LZ7k38jo*(0!Glpe&j#oXy zzg?-E2i4R{XcQ1>sXnHvs*tKwwSQ=uw1rBV$z+8j6=CN|AcIZ3QvL1W=}jGMwnwtX zv)arEa0&Ji6V%0A3h}9L3Y^Bn>QVLxGLA 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 b-6C(oH~C17!!k2K=10JPc5)Mdto<@XM- ztM*UtKWyGiuo~+L(gn1j%2g}j+Ju}6Mij*qsYQ+kDX^GgrssNiEPj%3+@5CMC!eI> z_fSkzf8(QRVB&AjLQ~{H*fhey*kK2^`OS$6`&HiQ$mnU4_c~kvUScRGoazIMyj%ov z#f1_&`1TI+eV`uO-MrL%8C$2kRoTt6kr>>kl-$)*X*u56rQ@N+z zKu^6N`Q)BDQ~7hq)`cy^4NoKR;SnAkr*LnBmV}yRqO(xDP@Mbk?-stCmOP((san}k z-iLq)B?*NvI8-6QAVsA$3a1*wuQm^V80E-E!`s(YY(J4)OTs#^axX zB(&uwQx}@cK3gkqt4%t+Uc7BINVuR&h>FrJVRB@4;`#6@g($TchygdwN5B*|(*$9A z13x#FdYK~*tuPD!s}yV)1Ui<&M0S-UhqExYbGXAjGy2nh1|v~qdZX~*P%K4lvJcHU!!|AE`TqQpubQPW9i`4T#CtZmXO^MKKMS$J8EkTkYB|QlD~D zH(UN5a2t%+aNBb3d_dKf=T9cO&5+{BQvF#7O5;=X85_8I?bpw(M=`$!mmB+vZ~yq>7q7T@o%ZB+ zy-1}zD@dd2{qt4|dUnJ>1y&nY{LzGLVS99g0XXreK0WiR8KQ#dVW@LEgQvfKj(Dt zG-yH8t@Fbma{Vx%(rtZrM`%hhTWn!tBv~k1^s4Fl%A|a{+@OGC3Wm}{)$0cRCtT0l&8MV1I@Kg~pjU7%%kA$D3VPWBLa4{sH9m1Vs_nprf6G_$cciG;N z+ichZfjS%e3QzNO``(>~Hk6*bZ6>Vj$I|(J;V^VwWe@r&oijdt?_!yI`Nb)C|0-k2 zGWM1y`Pet-tALgF@#$4&W9{tq43fWDtw{*ncd-IPmHiN$^%9|oXeh~&pA07wA$(Ir zZTxLU9X#x;AXl#J+EFlTS1bP9#99J(3SrKlYS{6{8}y829~nec-3q?CFs zX+o6*Ju_SrH$7rtpn^;=%p`ai2LTB}onVAm`T!1vY%b=c=Nx**8>@y@>2|ziix%%l zOrBxwzRGCZ(QEr1kwS>*)r${v^y8y3<$E93k3=m!WEj5MdK3X0;#6!BC$12tqa7^OQ5;tXEETR2@M&t$zYBuw+Fn z<>&F1JuFE43{n&!FT_Ozd`h&hSaDF{Zr0T~#yevIdHN2xtGVnbX5CJ@-jFEW6@6x{ zo*q(q^~s0)u2|F8Er!I^z>xFf#C&P$@b`+3HF{;w)7apt3JSy1%wT3}PUSE=9ROZb z7@=@iPcy4Zv~A2^`|nIq+i@1bTVb341K2q;fK4MJ{VgUvL90Wf(-FC6STtO&k~dXP zfsMRRMN$#C7hz6T_%oI^!N=vZr<$)-qU~dT81c8zQ*N|xpJYmFqdqW45Tuvm(CAOC z`2Po(>B_B}zBd=7&02~1G(IH7-B~ZhgU5f_S@lQFixt(HeP;E%8nR-TKwA1i=oDgi z@LTNoB;=!j!)3(#CO!WqF>Xxx>67HRsF58sz*CDbG#933%fiIdyeSXYfhnX?@}T4L zfW=hbZcbe5oy?JF3M%orIQQJQaE6-p7*Kbo9JU-eRVIs`82+zM=)v_rO*7L8tEouh z3}8thzvPQ=SA_M!H5qakdtqn#5{6x4%a~2MF~S$RCtaIoR}359ryFatl3CGglK0t( z!sG%^Wc43N-jp*p!C|hYx-?>_{$1oZG#lChe=$jG@R%# z7%X}#Ld`fKaW@gMxy%UoBa=EEWV``MqaI{6H(bgwJqJvHabj)qCEg zfb+WoO0Vn-<{2ngH%W9*10eO(000a6m6Eg^28T#<6!bcMD1Al+E2N7!2GJ+00=2 zA3&32-lc6Bk5D~^v+Gd{MP=*zdAGnMX|%$RjQvRUL*Hndgv~F}%0GWJhxo?p=`+Td zRNL6A{11%c$O_cdaJvB+pf8@o{U9tME*8_}8vBODqhzNg3>*#RkhNNJR>F66FhW1m zcRhu6WsES3LI8{ON{U(R%aCdL4j^7GsCqOmDHoo+N2p_yxc_{2@K6t87sHW=i>D4Z zfacGYrwEuM!PE|4ZvG_av+g|Me?eL;?sYg)*JeCqd&1v*AS2pW-Flve&M-A-ausTk z{+vk8ZihowbGcbcl~ek4c8%yaSV4M&nXA)LZ| zhB%yxi$hnq3-6%Axwg&ziE3f5&*b$S(8BNVF-om6wUr8@^_2=&zu_lI`q$i^JD(Mr z0oQrM<3qoJ56AwQAw`70o_*VxXzfXQkZic^>-Q%WcRB2-o16X}-EA2(Ij3<-KBxS* zQ`YAqlIl#5foM}8DEsq|;+B>*hJNwTa*35<=dK#4`7@K4xs(Z&*rHRH(^No} z3%i03lhS|(3iXSM@Xq6W1xW;bh*QJCcG6g`pmvO2eN!PsfUgg+o6_z8Wkvns z{nuI*nl+YI z<9MxjXXx!DZ*Ddu1hy9NBD z9P9Y?3-zKx3{4XBCyLo{oeEyPpOcJD9Az{(nsh#6#1+HKSn#(0czqI?0>_|44;sji)*Yp-kuVUEvPv8vid3YeK}?caG0l@8i<-!jUAZ6CHIf&*w(f_ zs~?QTozEeITD1tzcfO)G) zvIcUIzpI83i~Q%qacC@v2rw*19>;7t(%}DjwYjdzu&|{)pN>^q!gvw zo8z?F7Um^w4}BL^`?Fwh9l>4_WzGya1Fi*7juKw2&ce<72wN}m^2i}>Q`W8leWBrQ z@^5WwHk_LHXk%n!t($h6FKCZmoUD$bW=)wBPZ-YHuW&0#V+JjoUJG4pn1&8W$@lwp zkThCC?Ds~#;$=UNo-Hp_twI$vMC2j!W~Mb6N5G=4?2Kech5QoF&IdukZ_h*r3Y^mk zz7}Hk{;KGeWFG3ONnKo20f?!DoUg&ZAGIg6YIrsk{2M0~lZ~~zkP;G8luqNME<4~P z)+*xQ>(^1K<8I^Kg3O+7v{@pDAl#hj(Qs340XDz%tEy)r8N&rC6eSsC)0wHjiM z3(a^pcxjepbd=)!g0Zff+)=#P5^~ypF`$l41t8tMApki5Y0q8L&FbdT_{rzjZ5l&! z*O!Oq>wg@{}V8K=#WP5L0r%HYAJDmL3NDu4BTE|~F$nvWMSc6~m0?;US zLN_{pYu+y}401C#^@>lpMf{}sI6?$7hpD6~87ib{Lf!K=xl8ikMHI*qF%Q#D6v)^II&k26FpY+Rnl|f&hm`3-CyE`l~qOY^p$_0?~g{{TIWgUesgwh#R0p*?pSt3KAvvgz$(97~cLvmnfDb5SR0+o)e; zoQ0(tR}n|}9J@ILe%*WIW0Z~6a}w;cw|yL48%+L3S3 zCDVN>&K^lks7C+|vemRrsG`9RxH!d7Q-yHcI5<52ocHPelJE{F+<5Lj>`t&2+mSXVelguFe;6w zR!*ZFrqjYD5Sb4ki!vSIbC{D%R|heW;PdNji~dcu58+CV@;}kJR^TT{NlomYqg-VRsPy-2}jc&((R~3cG#*0 zo?j))wlfHx+CQc8t8gIHi37KUhh$qlgmMnJDIiS%z&4&(diA7Tv7bR`fos`r8B(W= z!@Fs;mtx9Li=_86{Qm$fc0!AH^Dcj+nriPVZI1xW59d!69wtcQeK5;atF}^#n6HNG z9X`tbbJb%FT((T=xh(cOE+>nEhy;(Kk}QKNR(PuUFGj56H(WYw{`BbQYu=c%j&=!I z+lYHUz>g%}=tJyS)`MH%+ z@y5!^n!w=2XU|sdT~cNT-AnKC?+=|*%z@XT%2q(-?-_axv8$;p% z%y`%@lnA4uuPxXm$J&>h@F-JQ6eCHn$cQoaU=*eLLyCD6A0YWuQDAkC_`f}nfaR{) zcTUa@jmIIJ=x?Gt4B2mKmsh&t{E|(hZN;Uj;rE6DhZK4!xj6-HY;N6>DtRms#!i%z zHdvWReH%Ovooi=AK|c9=)N3L|I;lIE0!Bah`!G?z`TqTRe_dSk z-t2s+5o8aP!9<@IYp9oPb=MyoIKZIHCH=68$@Yl{E2$!6$HL?i04a+K@*OYgFV+2=DPz1GiIfw)A#USu0 z4s}j2VzkP+wztW6y-s!Rx5s1kSp5xiKPlp30&Tf67LWq8Fy4a%O+BHHwoQ;mm@}7T zsg*?Kvk)p!=+#nC;LbEq?7%=s&pmG(oRNm^WTYplvya*nZpn0e`n6>G6iW!Y-2#lM z&cm=knaltjEGE*PzoGqdH|-Vo7T3!@^y*@{_9y7?w`+K}8k@WyFLrzKa?v|gp**z9 zos?UAtUa8z_CL~8RqP|WOf@Q}$|x}qp^!357pX_hna&t<-8X?B2LhU31)i&1xZJW0 z6tX7%d_6z?W}r+G z_Yu?My+$)koR9Si(XGSNFx_8WWgIG91+%ggs)ow6GGswQPDD^L0;7x>0`bv_*!Kp?DsvbA4;Q}g13d11 zpT=AxHnbsfhU#Vd1pe!_XDki=S(ie_35!`H#8nnmu-VjZTt3vu92~bLU7eVmM>|4c zpVgNcLnAocS(1$0KYKESQK%s>c)*DQusH>Kcwl0nG2=Nd50?FAs=U2U?v5(&4$=mc z%3&q?#srlQjoBhjla$(Nj$9?ENS(=|L7_5{hLYOFnNQ=11`f6&IP5uMix_Kmt6`?yXn(x+IB<9 zV-LUVBA$HRvoMjT0g|PxEQstA5w_(R-qscyYpxfHX?|L~F4;(r?Wx=4dzUo5*|GKT zd`rqT$0Qx07d8^@a4GzoK9Tv6Nkx@b1L(yh=QLRr2RWmb_#rB4BHGo&qic>m(ZBH@ zNYo6(+mRotyyx$zWb~#`OlGa_KoOF2@9ZX!+9imF<%%_bl5YL`>a!=r&!yyc?L)8s zEzfq5(&@=0`>v|&2G=Z5e*>d8?R%#v zC8DTkbg*!!Z2FtitrK>g?CMOU5ia!6pmM4yVAQk%@IzTK3p1Gwr;1(yESUpqGJ`Y+ zZj(Gr)MpoKTXz^B9`Nm%|9lR3H*sJ~0s97&v*&FFAXvd-J3XO)^Wsm5tx?cNgQMHh zS2RC6NDl+agYP#?$X0`^rwDo)e9Z1GSMHs&K(vcFo1bYr2NKa&m<2uaLmsL*-;_4V z1;@s_sO!Y|GZQ+Lgb18qoQADfNXI*!Vz3JAq&D{`bb_sb_Zu-Ka=YenmGGiK@KA~y z-+F;_fC7lNG3+LQfEoW88RV`AX%^&&G}kv**uK!ToqXR+DdV}^9$Dx5$XauM2VP5c zsqGrbaOv)_JbYvEdNgpD{ODe%SzNf<`zh>YY$dgab=8ecwWMl$ZLa1TQ<4o!i?V|T z=>VHNE+|Pd7LQ<`St0%+pF=ey< zm4DQ8{g3)FYFWO%1lkooqWeutZQ^CUbz$s*S*+duj6w{(G4lZ zJUq-mDk?!1g3J%j;zR%NYg}s3Yc^l6Jb~)HN@gi6OCce3DNRRN83sz@)O@qACii$= zF(214czKV;m3RI-hI$mfmL@`1E1rIQ*YSAc;#5iwYh8axXA%h5>)0wnF2(4G1uNDe z0i=J__uYwCqdvQ|9X+bGm|CS}>cgcJAW`qf_>}7psRb@;lLddk4HuMQ$BSdn4$xeu zD0S&+{^=Y3lgn1nHX+UAeX$Ppe%dr#o(mSHti-`dlv*3s4A&DOvDsCe9kAg%ag$ju zth|LWq#Qp@!PHNP>z9!2?vyCsY(E+c3a))Y0%cQEiw?6nt475oqTaHSBGBne!K?1o4ZLFgoWTuaO9xsJZ0UI2q8C&m=>1RtK`Bi)@5tuoYkEzijLl!tSziC2Uj{_GH1Rb_xPPOZAOxI zlrTz6yU%R6%zWO)hP94>Z?lie%601y;Wi?LH%r&C#E*{Y6`wDUvzM)RU+nmewM*9yjYVTjk7U3)qPa3Z?Ytb=&rOQTQ_s#8 z+$X@9n-U|&NBO0P<{ch(q;@?obFqni$QaiAe2ImgV{)hrn){?7EIcO;z>$cYFN4n7ppdu!2Nog zFSY@yPm%7oncLFd<`e&Qc^kvKd{{!rQA~c2!;|X9B6*blyru4{|9nZ{fKGjK@bb#? zFM{OKmLG2VDk3G$MKOCp=*)%2E%i3%!51WfeRoIwYD|pY+1BjWnEYx@lz>j~hnCUzate<*W?wVRlyMoQ5n6I}YY zYwp=5?GHCyD}+e8#PL!nXW|{q?)oUVf69M4)bF|#LTd5t>Tg&4qkHRhyqwdz9E=gB zy0z`dPsbk@!b08z)Sk1tCRwT3(79+_c5VK09y$dqvJC5RBH+>DcUSSr&-Fd=*vv*c z`R&^qRDP}3e5o|lf(km!{a_Im8 z01!#*o;PzLqCO-!ypTm24_&RK7JZcycjkYU!wdoNwQiR^%EJNR%yB{44cnKGRef%& zE^b!`g;)1q&JBKYm?Qh(#n(uBx}JLXab+l-L^oTct0LhND#*HXnRMfmnA?p2zRFy5 zFVJ^goQQ6cVo2I;eri<}l!4NzQiGSh9T0+N0uErA+$CS?X*hSuj=t1?8}^n;sCAQ7 zvtJfP#{7^}Y5whY*!-J4%zy2qqObjMA_K-kU%Y>%UeY=;i~8v_H*RQvT1;r**4M>3 zD92QMb7O#+VrtL}tl!CI4itJ&ch?`{TJq6kR00)5l*x)Q)H?G_SSv448$@rkkyJ0A zIs9o04czQ9V@TIW=T@9K9G>5;1j=?uh6TPFz9BQp{7Wnl*k^P%1-W6c2zWL5yJ_8G z4~m@uni+4Jky7oi{rkKI2U>VrY-xlnp604fK%}9nKs=SKvokuzkbSXd%bh-FYJEk0jfnIaE(sr9oQAcG^8ZF`ySI*;6O>AH_azE3BDsgmrz>T(eJZ=_iqeGbuhTbupB0R- z7eUS3e6aC_eRC9Hp8dr>;Q&hzICARXsl2qjCV;7Zh90MvW(#}U$WPi&2{%+hvGh@p z)I%0#K$38OEf)V<@jZmDiH+U-+rv-(jieZ6h*k+e?>`abFA6o)?}h?bR23kEO8%Ch z@!drG2KLgc*VQ2w9$j572kd>Qjk+xJfZ2L~navtWDW?3ySF>d+NVKFtgq0*Vxf;e* zWMcEPu1K#?{Y8uB)7Fo06O@Rq$rEI>ZdqzM7bi>HR8bj_NFVFhMgB%~Yx*c7!#|jF z|5Nx)zn3X^>Tqcy1ByF&#sZ8Wcu#55?-yg8Xvd9VgJf2n$b3zl-O>`&S4Io%Q%w3UylUGZy!9wy_}M9o<6;5=&Tw2c`cj~*a{NNZPxW4 zhzyxJ4dg;U8*L=@8S%?U)!>J|Ays@wwC4@g~FV~^9m`jdAuNQGoT z?3LhZSD@X9?f;<8-xJrlLusx=jfj4~jK>k@EA&OtF!Sp2qZi6(9NxaC#OZN5uav>N ztm41fyE)Dg8_`7ABby-@5 zk2;vyny;0KfMeC=S>cBL0>6CSt-_{XzduIh&fy0h)-gl&$YQktCq#P4rJVdv8X7UD zCtdO#=Ow4-%RCN~Yn6p#=!WlT%Umnveg@{>GPOYMP3bfxL9rDv^CYyfolwX6!6)4^ z_3A#>kAuHJY|A;MLqaQL4URV~$|@bQhB|Z!jwV!C-rQ;4GgQ$Ox?@%>@Ir6fKh* z9*4wi=XLBvd~r1}X$3Mn&+)%_me0id$K6^t>1F%sIC68Fr=m;!T|>wKZVKT%3MpZr|!y zZQF;^>%@kfo}OzTAzQER>Gkin=S{EvuC}i6&$+N6JA8L#SU?|0<;tj1^az-v37F&Y zZF40NJ<*f$I7kA;Do*;<0UfuVrXcHnDb-|FuD9m}x@kll!VUoit%-z06}l!fmsAw* zhYLPt3-@IthaD7OTC^5}))0}(#@e`5sO#( zzLM*+(-&ejVKzSQrfw$@pUXQO*AgN~d-_n3-0}9ZCtrC5gmcC9?&kc+20jcu8XrvJi>RpO;&>ZNVNi=zGi!Cp2u=9=ljEf31MhyW3EUkPwn z3K1^p;-ZI=f9!A9lD78A#Sxgkjy&#^V$U0V|0ym4tgq*c57zO!+`AXbTs3Az6$&t5 z5{ITR3n3RzDwspfvp^2P=?L}%gyTLk1*elHqshi`-V*^Kt^HCr{7k;NetCvDfyUd+ z6mkH7D{yhWu&%jdBznkorMYU+c*{X}!L^6XQ>7;E!KLl$U0Tt=Xt*W!eO9%`r<)Ti zlQ(NyE|KO}e<|7;#~Ffq+oAon|I&QW*yzs@|F{pZtWLI3o$2>UFuuRl~j z3Eyaqhupepqu%vNHm>VwEZ*dlUW>IHhd9$E6nLX1%)HlkPp)4Y^^_x>qgm8!b8XaNEk_4`q z8Mw0W7y8FgM;Cpn+8;k4d*IFI{-_#NI8ck5# zx;kob1aq`tI0d15UQcfv$f_U;O6Si;(?sP5JO*0HB@o6wVVGPeOXWCIh^7MCo=~{@ z(rp`0NMzDgZWKl97G!a#m~&|g=X1e7;_?-w!cd$rE|WMPk`&6f|9D?XFy7&UFd|o_ zCj>WlipC&5+VW}%5a)b~fo>EhMqKM$ab zrLQ%l3lCq?2ZrB1>$Y*namCZZ z(Q%G6jLELlx~a{jkSS*LpWoL1oW}moBD>|qzF5wC$=^)p^VUXx8&{Wo?SO7c#v^0U4_YID%Ty*pU%B!ge7b=&P%5QlwPo%+uz&C zr|pB>oVf>q8KZ%i-M#-4(f5D92dlsi2SoPcw^kt;eKnnf0w2aNnC{sUOGwJ-F1?o!4! zw7IScY#k&CxLloAmu-Hv^7hqA2$S1?0Q{*&ncPpgRX?9;1l!XJ2x9zp`d*D09T~6D z??hzB_DFx6GmROLG0Br|7JcqYwUglr7ecQ5t%g~n@pALPqr>uQZx zB}sNK67>4v!L?bas>9VG6s`MExtyAGKiu=StN-EkK;~PSAHOfsg{sqv)>rVBRduIp zzHJOzW~~3Sn)`oF28GuTXT1LbO5JAON!hhr`io9)NV{af1G*fF<+`ubLsXmV92l%M zyO^#+zNW7p(~4$x?G_!&=H`&RYEm~vFOlqI{Y1!OXgAK^E5Yudpao${F>!&C)lSP> zyNi>Rk`HN+zNbd@s^}fee_I~PNPpQ>HTE+1T>H8$=*(fBQmfWB@Znje-9G>QHl75I z*bR6rdrbW5>cow`0NJUfw4{@t$7 zUkhSgc=I?W;5&n^z)Ravyd7)2jkewflanjq5Ybobly?Km<0oTI2)p0#kJo_*Rp9nY z`L?@J1kH;D(ei^#i@nVI8k~XR(I8Ck_S*Rim*HENvcNV*4+cG=ySLoj?b?1IQTd-Q-T(P1=!b$G&tE^u4QoWO+_2mc@&(<{%Hd5O3 z>dTc}S@Vgmt>Ug6e)H7Csg2hD4{A#f7o5&dMN)5SP#vJ84C+Wtd^E1gEACFpixVJS zWqpWR{OwnTziF;wph6rI)?Ieq5(u!B0e^XW=t z=7PV{r%O$$A8ExOyoy(c316$S#)(O0?>z{KHSY3F%PNzKSq`jqf96JO&)&t)J(WZL zoefwfYmZ0gn?JtoGC0+>dv$Q$ee(|))m=L`^N?Zk!QQ67KOmJ>To*G$yqKDt3@6}`0l)VXMn-N+2 zann5R=;_rjFMiJb@wi3ry%|V)@41GZOahBk;YX&=Y(XtJG)_kTv}0CMli)hUy3oz=$sD=R%> z;>YVep;)iwRhy#6Ma5b+mxvaN=s(5_k^AMFzSNeR@?A%G#_XS%?zBBb8dq(qUnz6k zeJ?3qfaDc0O;o-{lB%=*C?B5hcB@u1ggJLk(o9vh=c#tDuayqItY|sX@mqQGn6bZO zV%(}9a?m3pjd=KtXF63g>%+!(89kj~UxTAnWd?0`PL)~nJPF@r#>Jw&&kI30vG(h6 ze&*&v4Rm00CBj%sa~awSJ{kh}JKGTxmF1V9wX@wZ2{5Kq>kYE!rj&W#wD)pTj%E`7 zB+}p5TFrUsuod`OQS+sMh@g~r-({55v&9{!Ux_cUtpX)x;mevC10|*etubiGfgQyx z(0mMXd*P4u!xmnx8Z3d~=7^t<7Mn>XgNL_qF}Wz>x-Ku+Pmx`_ajA>=kVYPoj9y1o z+zv%icCbFo9YvoG7ZHR!$v}@0>FwgaTaB)F8Ar#Yi}P$W4*yUc_4H-NRP&)%i9p3Q z2ro))zd;5&WF-W(LANilL&O!nodK0aXJe{Sk9@>q)|e+ftpH^wK#&Os?yC4L(Rip6 z&Cl-a=wg6|uI~gfkMD1GWn3m9b+=}yY0QyXJdX12oz>!Azgyo@KW-3dSC+8nl=|l< zT1{2H%e;$u^R4c?4B4w7*smKlv2&m`2zhTo7wZ$W>y=p1e*T8XU9Rufi#9A#Y)eL% zZ%&fN*)UWTE2O>FyY*NT z>DK4=dg8JuP@ZW{Me3YATL&&TG@zXx+;gLVYI5gmQG;?p+MKa0h%)$v?=`z}(0(6a zNP8j7hq?WWs!lto`b5VQ(jjkr4W%^)%oglO)kc`9@ZUY_Zv5GLr};}bOZc@p+~BiB zU~nXWS{yFqqh2gH|9hXQ933UsUrK-ft$63|R;~xF)O#)wcsL=kG=iZhVeGapYH6wsUSaFTb6r8Pw)rjOPE; zmg$Q`%)rC889kq0GYdPm!rxKABf9b+hL+lY-2X1Kt&FU3fVG9%GZ{D(pkkN~CcA0K zxj!c$mq%bmiXOWJI3$kMY@O-OM`d~XC@pX;96n+4|nmH2qhi%~1 zSi;n3mRsCjc#jCs_Uptvq!-iWHvo%?1{N zsya=$rKj|0u~K=>iZ2UB-lQDe4<<(vef4@;d7g5c6Vt!T1RE>v@aUBv&WA3@c;wt2 zn6yPk&fk$PCF!kDXXk>`r`m=D>krq~_Rd+xs#ZU8s1Bbv_S_ske-fICxnTwM@tj|n znX8@}Fu`X!XNJN{0F^Sig=&${fDRi1WV=B3)IVDaBEc-S+OMQ6kGSq?(voZJm$phqk%tz|j0y;|;_|{_YW4HY zFSyvhC3Sy;K#^=>7DK|a*Ua^xqwM71s{d%ARKX4*FlS+Lg?oBE_x7OrO_*MPiVLJ^ zQ5Im#O0j4aE;I4#1mrETTfr5}xN0pdCv+m-1>9*&^6wvcIJ&j%J^MY&4*&(04Yl&I zvTOqoQrtI37|ThG>am46W$|A%g!X01jiNNpPL3N5S-7;=GNhDDxx6Ytv)LGkp|qv% zBV0U-l%Z%4s@?aY`uj>nH7vEDwYZOg6}R(!7Ok>yIkOc5e`cuvycs&C|GSJYenK1! zH^xu*3=oIMrOaSPJ-lJ1=YzR7xLll}6g)7=Fgev-1=AFx_kgByFzF8drALX{qj6!m^A&}wW# z)>*q*j4+x*J_fT-+#vfFK<2)E-s7ira~buPR#bewRC*aov0p}K9nrG(v|J<%Yvq3S z`Q|uEUzUd85D&E79b<}N?$aZfGP2ejJJ4lG$K5ZWd~%`S=RTZcOyjj9h8shrKDKni z7Z>tT_YDA@o&QItzmMx=v}PEDY=0~rQ`p4Pkto8!Wh;^_UtZiW9O7?vc-UuHL-Pe0 zs@>UrE#HVe5@h1W-6h6yQThHD@@d-bkDx&cn1p#QRz1cL(}TAD0>9PYD>^{YB@U4w_7Ta5aOK(?& zpY1rCiV-T*4zL2?XUh3fhd8DPIDfuCT-hGSn+<4`LjxuT%3Urs*&7|i=dy3x$ zt=BPJR5ZBKYibif)~REb6{K$V$!dLt(Jd!dp_YN4C4Y*FaAV&CWhg6XZsDJcz#R1G zRsO1-wQ^)`2pjq@EbJR6b-mUzaVt*raY-Co3qZ;rFOGc{p`@d6uFWrK6@CN% z0M4J-^NY2}phG?EmN{|#O$9C~W3kFb+_L1FY&^S2JR>WvXPZ^t@~Za);Ca&%}EOVL2M_%9_lJ1i1cy#g1 z;)}X1lsAgSlP(@@)$KdpyGI<3n7O2C%Ae3K7seKd^DJoF2BV*MdWEgrkgCuYzySw~0XgJ>;MTY!zBy;@lOllsn*2NRsq5X8u0i$5yFS~o zTe@f!-c>`$glO&9bZ+v+CF&)Ii};#V?pm(Lu;MM-k+iJh7{uen*ss7SPU{U)v*zAq4M{2Bzh=w|VR{x>*_= zhh0`wyXgdPoeRUf5T}n3Bcz5M+3{nwESK$%){Js;dsM5nro{zPKi`PoTDe$N*>Tn$ zv1?fjl~56ag^X2rfafBHxPDD6v?ZP?87Pn;wGbMAUpjrOs zj9C4wj*ba*Sv%;2)24@`IqFl$Y%6!r-O#tLSy#VZ?mZ_fp-WJ^qjYJxpliJa#clG| z5x@rh%FA_eQ$4uq_koB+z=#q|COCsU`}Fwj>Kj|4mE?H5IyMgtYw=mZ>a1TFPq&W` z2b}TV!919_L` zxF5wAk`ne3pGy3?5V;CNFN2CHLRefbsG!c#m3`^{Bi`w^o|IsQ0pnt=SURg~alKT~ z^6^F@uVsyBpGus^I=4Pvn`*A&W!Fclcdm&nev@i729<1B4u^WJKcuX}?0%K7JCzO+ z(Bp;~4co6?LZ+Xp8iN2DG$=zbzz@-4Cg8o_jF;&*ssd~a*qPft!3822V^zeVfT-7vzs^8^~-9LE;k@U_@C)J;ld2nsde4fDffW4}>~@gl!)kf1FFzII+>ToHKXV|<)kKNpQ+zDwWCCYWtez+UNi+nSqotITdM0hlXKk`A%@rAwq&pr{sp zT4Yek>Rw|O|4Yop`M|D*ufhJh1Ah|9?T4gG(&f{FnpFRr!9FJCTMoZqB7H66Q7C7m z2&PG|=8>{u3YlF;+l_4Nuc7B`IBlJ?v5-`FFM1X{dHQp?1tWFNWB6Q=Q?O@EkMVpf z$}~Y)M_`a@^||ObAM*`_5SS0GPm0Z0hG+ej1HS*0I^l`U@W)p>fn=n_;zF@_PxuGl z6DQS&UdIsS`0G*}#Gl067u~t~DLnQQ_GhyQ12>!E0uvVeMp_158ra0;6P6M&u`E;DZff ztCI_Lz1s2E_4ZcBYQS4}mmdFRwG`$W-fAJpo%A`ctztH$e6^9gMn zEm><_fiQUXL(f{?t4@mpCo?xHFu6&=To(4h@H-QC`(}$FfY^Uf0f(b`Lh;5oh4pgm zsfd=u{pgViQA$lCypakr_-sBCup>X|5j8$Ds)B@TZn`WL)d$@H@|#U7YZE5Cf|9N3 zt8j-XR%F_|c4a1@zf6n}MWPyt#O@P_C_aqus?`p9(*3sS!p&P3l8vRyE|iS6gYZe*Q0J14Hjjx_8ST#{FbqD2dwVKmHOkdB1j?OUr z79gpd?O?1U!^Cx%JE!7uihvB_N;MDD=K8}SPbjxi72A6#Hc3m>>|tWki(fh)MRziPbm!lcJI~ zLF1-X?|suJUZ^rDoqFxU@fW9!Fww^}8CcyD*LxImmopT^fnmq>&jrr)>jmmrY;G^* zn?|co$Ab$(uTS29DP3>YQ?)kK$U0`UyvQpAHQUF1jI;^M+>~0%&ad~ZE@qKlE4w8@ zS#Db4=S@G9#q~cw*0(D3G^a%fx_f+%3MrkZ%KCWDA1m`;eV6G7_IFFmF)nCHWI2ak zOnoTOvn`otgO!iPBpGw)7lb^6o>FG3dJ&siM_YwMgH?D8Uw-Uy<;Ikg0Ez!!aOK|& zd(g;n!8gF);`VnL`K6P_zp`kf_I*wR%v20L`1WuLjnFeLX<@>-;*gxM`TC941p~GE zTi-H-Qd3-5&E7K+qgM}|>2xhVNk^NSp=KgUxC(fv9{i%Quim+Dtt=zrH9!UV%>2O_ zfZ2CqYG^T`Z#M?Zo%ze|xgi^XrJkc$ckH7e6DCV`{0!9HzVh`+cvf7T*2na63W43o zSiX2K=)C8(v4@XzIpVK4wS?>QN8;|iAM9Un zwJ z6cWzp)?M@${DZ)eLYP7VV0PP58Lt@?_cRJ~KD=l@B*wZ?3?Xk`+h~*IBVsCX&Rn(Y z4}Y67E-N2_L*AE7zI;7Pu7N|!BmbkI?am{R^saSLyR@LfDe^>(Vo137{Zjh$AgY zW8=FtF&n4xlk>-G*|N;V7oF45>MlRmwDUESh&`a; z^S$8NPBbsdpv?48f%C+6A!l5|n}|k|?%`9D%BT}oJ*+ZHO2soNkifo?=$z#!7x)h*dz z^dh~RFW7%l>%-vl#_6>5|6AnnPZz_IE_Mxh=Pr!}IWnXjWc zJ`)3bUz`@TL7<7=0`t2TQ=;A_EYMmWQt$uBwW*>ycDw}eEv=m{s%x{5XkFCPl7p{e zdStm_Y7TOcF5tj0Mwg21IbKRMN{o&^xrBxUCiBFa5CKqPc76cw$oW<%5I?qGmyi;fn!`HNfqE-dZ z_oD*>jxQEfEQ}YG=T{nqxm8jRSKrfw?Q;KcD?ImGh&6Ez%IHJYqtl1 ziB?0eg|IKz;~?$vYz{{w)ZvGR_i(J zSkcqjlug2&3YD(SqYDEdZQGhR0E5A$muLtyn<&W{20}?P$EN)!rb`n(>GryCy5d$< zb1$7zH)2N9VI;N`?kZLo(MIgkoG}5+cs>oq8CPgGn)jF&e6k(xAeIi!8vTymqLk&_ zqfnQ%Q787?khpj5N++)?eZ4_;!Dm^DqX~7nd>}LD?)fCppUf}h$_L(@Lg8{gFYBgG zl!am<7FTTEa**+~rl&U5<7SneK3|@AsI4Cylo)gBXZw;m_Rg+)Iv33%HTK@_DmP77 z`Xp48`!18c>yIShK>oR4{MM~b={%!I z;fL?{4b+peQ9ww^rG(NXOv}*YVtF|)&1^kW8SS3wSV+5sg%Us2p7s7Sm(z1DO%zBm zYSj=5A+Y9S{rRy&?cIRTnr2%wL&zpNYym-yqxb=X&e5#rToUem5o3{^>c1MFNGftB zDjD1l@kV`Psv!=f&e1mIt`U@Ul-G{=v+0bZu|z7Vcxz95{^=%sQ?xr^7^t~r>%sil zR%(53o@%UFWW*DP?=p^O=zyu!ed*`vQTN?{1U|QaqUeZv@>7@w4yHI2Ql zx$W@#yqp9C1t18VSgR`xz#7pl&bA;Rob4+THnuPxf}xLlAFDUIrax{h>Sj1aswHCw z&QP5}^;{~l36&k$45fZdOg@>?H0_oaAD_F_a@V|z<;djSLzf+t1ZAmIVOJq}O>~Eq z*Wz+wwPtoQ`@sKfbQLRST3W-yLN7hY)d~_z^l33 zGD`S!ivFEvLgSn-qgdG3NWzgYIh=~P(vUEqReio)Ma8T3PMHK1YosvV!z1PT5cKl3 zLVZ>)oR!*-h3z&1tai*liptD~3_Q?vd8#NLW2CS5e}7}Q@dGKuVxX@8}LMX>$EIam%{F_p{ntQPGp{GL&7o zSh=4vkq<>d4E-;9T8-~IV#KmgmhL>Mw`0w^ z?$TVk+egJtM%d7lTOSATmb?jX$(glXBzA(J6{xtyk0-yZ)jI&oU)x0Np7ngA8Bzh# zb9~B90~&N(`>AsBeQRNLT?Gpo!@IPp%uTSUE^vM_)4~E6R9TKC)9?e_m98 zDn9|EGw_6d=*OYrx`)aJq%5)7kXh^)seF2rgi}d4vG#&BK?WP|DZhGoo6i(@)Yu$} z!MKDhZs6s^`E?PY4WCr42YyicfINYsGjw%sOWD$VTpq3S>ndN}`{m`^q35nWuI%wF zG!n~72GKxvE9b6^UoYzXg>C42NphWU-7Q+nB{^&9j(kO-T5D2~W>l^72-ISKV$H@e zz+%)HTsTu(QtR|ORB*M$bY(x}`AlOttFpY&F+Jnz+UyYm%{5TuKvqjDa*7eBu991b zEeqrluUGu&d6DZ;NHwLrvml_AZ3aB8mvCjk&w;yMPDPzuY%jNyFyY4^c=hnj`0ltJ zRTkQ;&oI+jHwrP3?jBe6nNncv?))n37THMwGn{tLbXVlDH)J{DFJZ0-ePW=|?oQzs z6_~c>R|{}Soa@r)VA;_`__8yg?E%D6e3bxjg8Og+!L`n@-aY<;7s3wgBr>N4HtVck zBXjXByB?p!=$*Y=om5}FXJE6Q|IvD_evOg!DaBqO)(3%0iN<->PUKw$tQ}P~=}&+% zO(7eWfQaUMbjJV2s@hdP`%YzQg1a0BsEPb8mSQYc7wnDh$I9AN$^N?7Z-wf@6`<`U zi|MmK=3ceN>7mT{cEBMcahjWxSJxfLifz}_h^SIKD6SIc);Q%~3DmLx%hQ{l)H&Uu z;uWA7Yn&fs7Q*qhE2pq>DbWH{U+>r|kftZ7%LIz#M}v9;W;pQu0;C*@Il$uA$=#Mk zgde3`CH^F3LI&Q{Wh3$#AU%iOgom?5L}Vf`R%wOWIYPG+UZ(wlH-q%7$yQFDOi5iB zgC+f0)WfOhgZ;qSY7HO7TD2`Rv6XDC3dqPz)TzI$1WBdLnorGB2c1L z|7n8eh~ikIA>c;kL3Y<5_6V&af!|*&1+&oi3H7-~;LeKFc!dCIV)QeKNTC`PIEp5m zI-$`=w`8vDiSxTs1fu?{gEgXkvL{5W!0^PXZZF_{mpN*dYLT%WS~)%HVq*6fLK(X0 zL!tDgMeS3#_DOM(buj0t&6q*THv4`t;=|*vwADWn{p%!C(Nn|EY69oi)Xk{fih}J-_x`eDnj-X2cBtZZ$|j#aDZ zys8~oqS5YM@7<~%F%YEr;_!Mst7!VjA691#0@lWquKCR=aQKYU9#CwH zH!2#r)FNgD>9!h9mLzTs*Y-aT(E6=IvEH{PBQ7X6P1#(X-L^!(vqp0(|1GVOUzh*u z1=>yOg#sPZHT6I+I^Fx$HTlreU8f5*`;xY?=XrNf(U6n5UVSDOB`<+SlJ^PgM1LGR zV!SFdUd?sgnAM=xth_ap@N#;?U88l@%m8_V#?Q;-ovYb?ti4*fm6zVnO*UI@NZsxq zc=$b^FxV3JZUA{a^0igF7f*gV!UsZh((`6=8is zo%ZPte?(5mtQ(|^BF2OLj2Vjs71yq&zrWNqIZ1p!s)1Plqr$Xb*Ns&@>w9n0y`m4w zIPwvP{zCuoo43OE7EBLMV*SgSG6RzAU0<8EKRQ=&k6Vl+r7x>iDhFGpPEApL(7CO0 zzD7aZMS?i@?N-3<_aqeW&Z%)O2l6c<4F3>lK`_wVQYjX@TomDa<|DT;p4D@5cB?_U z*{FgQOiKADvnjF%-H~~V`dpbBtsV>qv*kEo{AzO$pM={!%&E62kQiZa=cz`Vpr$&f zy>X_L4M?jM@%st{*IwO@%1=Ib;5L}+Tg_jhCLyupntOL{bGPh z!8gmr%Y*s4#{vgsi02=+xJ1)Ia!)6dTH<>3hS^(@(Ji@w&8uERmu%(u`hXTCcmHgp zX}GsuM0;^O8GlDCY?T6D>R?B)gvK;%3zlN^;qor07=5{1L2U)x_B|stPF%;IBAZ}f zl-o;d|HXf*FflNEZ;+fvB^T9$Sg>trSy<2)xHn^TlTwpX+~-{G9^jihc}@hwxALPV z&8HF?gcqWk5jv8r z&f`o@bsg`{9hw}f;0zDV4_*Ht=?XI$Kj-xJB|pB1fAF=c?P8#0EI;^EK+#WKf+&i7 zSp$W!_Iv80)ctC;=6h~j%oV%xGz&kT?c(#WQ4o;3+|E@|4|3XQCMJg&c#xmVijOl8 z?~a+uvjAp1nnh1B7RxaA)^AkFGlOq>vacJAJ*aBgbjxxtp^YDac0$#z`h5&DUQ;yE zZ0`-kLaGVhSnV}Dfx#3RC68V3VTgb>b(idqE8A=>eqqdGA&K>? zL9`t`&VW)-Vru>do>Yp3Y$L+v_hCS-az6XvVi}kQ(MO=F{eWZhB%_b%5*xXjH9{&j zuC$+K3gz)}**M5>F^~~Li^h$$F;J|@akWPqwxeBZk%+=LB6U3_8PH z7ibl7*8oiNhCTy7+IXpl*t`eQmT7JdV4cjg-qGV&NNNwkU(An%bV#GiO#@cuJ_!uP zI}Z+Cdi$i;G*)fWRFted;xv7an4dAfnrn$uAJ6R#Bo?&4VOeVZtylh^4N!lpC=3Y2b>PL?A}(t| zY|N1^)d1B$WE7}IOoTN7p6oq#C(IU%3XAy}UAl0{r>N(m&irywFv zP5VIhfxz^rS_LC*ft!r6yl0u(&ns>gp0y(yyb70IRF|^%6|~f@QE|DjGhxdy3)yxb z-R+gQ^Tzu@hA*)d(&HhXK8WZ5wPd!tV+p0fKfI(v8arXSE=UZBRMTQ7WED`yrw0B- zZ~k+J<61QaG6~~utAJ}vdGk%F2(c2I(A*1LdSMNT9Is)|m zARe>~jQW1%*c3Sa9wp~(s_+nij$#-J^gufzXzGw@)e+Xk1AQWiozy*p!4LM!p**f4 zY_>~(d&NCf=q|qO%X{7N>9gCx1pMHsjAIjSKZt%?VHES0u)2pI1UaT_3(SpfQ6sn5 z(oiDluOcnef&u6G-gn0a@>>`Q(rGqR{Cd}W|0C$b4Tqcx`%DNsB6+RDgOqAJr~Ew1c(ao=y4 z@irAj5-O}61>HYviJjXiPddoG2@91pw`w}E>tj_;mDOu*y<#%COI`7XQ?lp+w=xds zRvy!j=T7+==7jgBt0gNic@p*?D?stPNzXsADfBmzP1j(92iRGv8D4)>Tj&moPCN0K z568U?1w_OOs96Q<#X7l?L}SVEZ{0UvtUMRG7vb$9Ib%Vao-rPD-&;SR)AjR#D=HqJ zahIt@t-diMR;To4%jc-GSUoj`$TO0KM1P=N$rl)f>G_7PT%DNKMhd3Loz19vu`Dfl zwZU^_A`^Pos$$R8*fH{c$cN08o`kbI*lQw#!erYr*X_WXQl%JX$>n%@JbM5uPs$xcX7}yLc zMVnc{9IpNFf?AV1hG}V$IR}pmLy9{=I6%GOziYRrdD~cY@#)fcSv+YR= zU;0yzWo3VnfWFJbP5heGpfz{6J$7u9^&KNX>#X=gH;_rk71F!I5->~^@`D2I5Z_;>6y^KX4ou)Z0hrwc6snq9V z?Z$bzn=sA$O@^|*cQkXA6e8ze)*lqsA;ik`Bw|aLybJMWj69R$Qk_J%)UocTvWOAO z_YVwg-a3n3(j9Rhe{oDEN6LgI+%#jn-A{8q`%WluJ?~Tx>${`A+4cPFD=g=Zr@C!g zBjU7C`ek+xy2DMgyk#gJ*`$4#?)Kn4?% zaglq`Y@M7}v-xZ}0?_sR_k%DOoo#knoq?B0fSeYVr7>e=$wd)t@~hcH?ccz zJyB16>uM(1mbEkylZ$9s^=s!{ZqhX3jGo5AIg zhQB5r9yyk`uKhd?ut^tA4JQ$Dk>W8^-ZB=#v!>E4Y|(WhJV*~1Ty)IOyCWwyYK(>a zIg$o!ivP~3;OM4F3UVl@2p{D`!fE!h8yg96qmyLs1r&4t7}?|@vud<$m( zJoKcYz%7PPAC&YFTp3f}WjX;SFUrRVEJ)oikc0H%JH{z)_~88M3b^{7u3SV79V`Jd zkUi_d1oqlqDUda^^WlM|th9-#6($bSC+bA#+;812*Qb9wA(Rn%{G>qbj&GQdVktP$PxTk!u+>8>fQazH(<)i8#7P0!iU9IWoLhs zqAc%fuZ^_>x4^X+Vk>MOQKneKTp=nT0^j3#;kDcf& zYwB}ml`a-d?qwt1nUnQV;dkT*;FEm>07oSqNNL)nsbHomQy}WT*&De@LQ|vLwqA%; zt@tWraC(nP0O$AF!I>_pu_#-t-ZBqVG>ogWgi>SviMuqMm&IiUx}KOR=V9%%CAW@4 zJv}DQgOG@vEpvMR`F8&H+C<`9slE^USsIr|;X9jF9;q-Hnl1W<0Q&X= zbCP;-LX8WboILSj=mxY?_k$yr!Jxy2bpju@TiV=seQi-I%J6UZ{1*q~w>4gvRIq|L zytH8L2a-5HGwmUWP0ntCK=1Bkp)NI3PRra8B?Lfv)xJd$UF}lYZhes_q2<7dbGDgA zZoH-f#p=!uMvKNsFCT*ZZvD9W;&{{_aIR1+4!${acF`}f~meN-1hl{TSB+(^(KRL6c1Mi8;-ni`{8V&9D~9|Km#lM;x8oTb5JtKi*G+9 zR0o>6bHxYa&OgR6<=3;W%g{;ADBRLA(5NgOB6ull&eOpbMlb>mh9>(}c3 zD%k@kTs_TYh@Lk_{xPHlIYWl30DGa0lyabc&bf4>w+40=>pL1z2YS+sDjz|tW6brI zORIytJO4T$e-l5Y@tWDD$p{Ga8U8NHHWVl$4u)q(LaRK;?KQ$JpSIL>x6}ndhKL0` z&KC%AP6-QPUbtx?Y4rh)0BbYpe$V-N^^LAKJ8W7+uiNTrBfZDBn&C6S|6sJ?!wg9o z5SFR+lyT@wK5R3%Loz~dF9X-YE@<9zw?=%anVKx|Apgem@A(GQ!d_+|!h~Z6ws~!) zQ)8RmDs^(-MJ2Je=dUQSJSes87NdJ-Q5N80UZA5ebS&lMiNAJYHIl#-X*iFO?r0xa zWE*cuwu}#JDdk%!U|RJ8^`q6ksiQt>wub}&ZNos$hl7xOQYpPaI85^f&Ri6z8nRpq z^lB`FYy*udjXcbfa;pmZs35~fCWvbEb@tpyl9ql|bKO@|s8o{%T>o2GL2xmYRY7*Y z6&}{H!X5|cj;Z~OIFZ6EK!4KWp}-VH%*v4)=wt9*DJhHPg4E`g7Fu1M+^s-wxPn;w zHM{mM77{kv9a}aM-r!BBFwHfoX0#lwj3`>ouz5=)^Y&W`(A?bkNTZzen9f|@7tKkL zFhkXaFWo7G7*gv*O;=X!o;kS96A7DMTa$tYs#Pn2J{4C=>u-skJGX!g`7*XmteeO9 z?32(mjOakcX7sVWot-@({X3=+rj#p-+*ruqV(91u9c}BAC}-_KKGhhbCk~`Nl}O7< zAcLB354M)Es685eo&fp95q{$?v-1Aaq5iiM;UuDyeHR+X`?EjvqECzT_nC8g88Vqb zAF2L<+6__=PjmZiBs42?sM#5)ZUHIW-HZ$**#)>`1(6awf_l`(xmNlPygT2SyoK2&{l0 zy*$>Q{AWq;e;~-ePO`t<$X^${7vBo!PJMJK1~cLdB?~kMrXJh~v1oBs zmCGtf06}ZkHwSJ-DEU|afbt;kEgf9!r?rlvjO1>SM{AqX{L>VHfs$U3@y<`XlZ8S9 zBLVcDS$*|*o;sT`^Zw8CVR9V?P%Qu3O8v(Rk+>lDbLeb-y(`W$B~a&ivxFLp;%$(Z z>s%mYqpz&xPDkU?Ubu2Pn%III#)bRT5b3>YJp#|~G8`#PKERW>Nn0SMbnd}gi0x-2gZ?7PE)xAPR)H4;?x+l z2n28kMuzG09dQF(piBt}i;N<^#JLx?yq%l;Kuo(S7mezD>dM@p3Q?xU21;%v6f|G}gt~KE32k&VDF{^M#SyI@JnR&1*jAV2Iy8M+=;@ z_UGTdy~K*+-H8)G&Bfa0Pr7m&>gcmvSbk+EZF!)k=v>-Dbf8air}MRvVaE?K@9m|B z$XXTYK2t~6FEAOQt>^3Q@t4S_RLtJG@H|^^A!Y6o?o3aUlDk1|7+jSlEkl<(PsrU1 zwzq? zGxzia?G{k0X))ShIIjA*2KbsrqcKo+BlJ({8=z<-0tV-L;s5{$Inf%`du`R%n2%hh zvYHB?k)BWq3i389UX8aCgWX@XFv4B?RQ$fn+(@ir=6P5RtIQg!pLfhV7Y5w?Pu&sTVThlUJy)LjT^>Mc54rR!Rbf5OM z>DGnIx@+QfHj7kf1{u7*Z54j*yG*_mp|(Xac5*L@>^Itw1M^8q#uHNdI`m{AG{c6jVori{+ z5%a7d2P1q_@J%_{(`E-Ni$F=?X~wHBbe7W~q?$iBb4H^Q#_ej~uVt@(&EeO3(9ga# z0g$EB&wb`-*Yo6q1Xd?VpU8h{(=Ksk?#D#REti!AME&DX^qhXd0+v5h&hs4WhvV?R z`c~~qO(m?V?XVW?Y2@B!MqHDUswOWywr=)1nM$Xe7pc9KTIR(S#l>jTu9<&p6dfKJR`ETyXRl#;J@dgh7maMh=sdS8U;c zGRvuglp*@3iK5kP(kpRlqS(ML{l7CBTJ>lYDI z|3V4|VWZqpN(+Dq|9^uG0Jp=0VyVmeN$5Sx#y=Z>{tr> Date: Thu, 27 Oct 2022 13:15:21 +0200 Subject: [PATCH 068/185] fix: problem rendering email in mdx --- apps/www/_blog/2022-10-27-postgresql-commitfest.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index 786d5db331c..ffc9b0eaa64 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -12,7 +12,7 @@ toc_depth: 3 The PostgreSQL community has a specific, effective, and time-tested method for contributing to the core code. -Proposals and changes to PostgreSQL (called patches) are submitted via email to the common Postgres hackers' mailing list . Then you can track all activity simply by reading your mailbox. You can also follow this mailing list online at [postgresql.org/list/pgadmin-hackers](https://www.postgresql.org/list/pgadmin-hackers/). +Proposals and changes to PostgreSQL (called patches) are submitted via email to the common Postgres hackers' mailing list pgsql-hackers@postgresql.org. Then you can track all activity simply by reading your mailbox. You can also follow this mailing list online at [postgresql.org/list/pgadmin-hackers](https://www.postgresql.org/list/pgadmin-hackers/). The mailing list contains a lot of different discussions. Some of the patches are preliminary POCs (proof-of-concept) not to be committed to the core directly, and some are urgent bug fixes. When a feature is intended for merging this should be done by creating a Commitfest entry, which resembles a pull request. From 7ae85c8419cee9d01f06b8181b8fea88f4a88b69 Mon Sep 17 00:00:00 2001 From: Ant Wilson Date: Thu, 27 Oct 2022 13:51:52 +0200 Subject: [PATCH 069/185] fix: more mdx issues --- apps/www/_blog/2022-10-27-postgresql-commitfest.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index ffc9b0eaa64..62d1cdb6d3d 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -1,6 +1,6 @@ --- title: 'What is PostgreSQL commitfest and how to contribute' -description: 'Comparing one of the most popular Postgres features against alternatives' +description: 'A time-tested method for contributing to the core Postgres code' author: pavel image: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg thumb: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg @@ -95,7 +95,7 @@ It’s encouraged to split complicated patches into several independently workin After you have created a patch, you can attach it to a Commitfest thread: -- Make sure that you have sent email with your patch to the mailing list +- Make sure that you have sent email with your patch to the pgsql-hackers@postgresql.org mailing list - Open commitfests page [commitfest.postgresql.org](https://commitfest.postgresql.org/) and choose the nearest commitfest with the status "Open" - Click "New patch" button. - Create a concise description, chose the relevant topic, and fill in the msgid in the hackers mailing list to attach a thread (which can be found in a full header of a mail message e.g.`Message-ID: `) @@ -114,8 +114,8 @@ After you have a submitted your patch, several things will happen: The commit process is a two-step: -1. Preliminary review. It could be done by anyone (including you). A detailed guide on how to do this [](https://wiki.postgresql.org/wiki/Reviewing_a_Patch) If there are no doubts reviewer sets the status to "Ready for committer". If the patch needs some changes a reviewer can set "Waiting on author". Reviewers can leave a favorable review but that's only a signal. After other reviewers join the conversation, if there are no objections then one of them will make it "Ready for committer". It's pretty normal if there is more than one reviewer. In fact the more reviewers, the better. -2. Final review by a committer. Committers are the most senior members of a community and it's a formal status. The list of committers: [](https://wiki.postgresql.org/wiki/Committers) As a result a committer can commit it or push back to "Waiting on author", or "Need review". +1. Preliminary review. It could be done by anyone (including you). A detailed guide on how to do this [https://wiki.postgresql.org/wiki/Reviewing_a_Patch](https://wiki.postgresql.org/wiki/Reviewing_a_Patch) If there are no doubts reviewer sets the status to "Ready for committer". If the patch needs some changes a reviewer can set "Waiting on author". Reviewers can leave a favorable review but that's only a signal. After other reviewers join the conversation, if there are no objections then one of them will make it "Ready for committer". It's pretty normal if there is more than one reviewer. In fact the more reviewers, the better. +2. Final review by a committer. Committers are the most senior members of a community and it's a formal status. The list of committers: [https://wiki.postgresql.org/wiki/Committers](https://wiki.postgresql.org/wiki/Committers) As a result a committer can commit it or push back to "Waiting on author", or "Need review". The time and attention of committers are limited, which is why there is a two-step process. Some patches that pass the initial review won't receive reviewers' attention. In that case, they will be transferred to the next commitfest automatically. @@ -138,7 +138,7 @@ For that reason, the March Commitfest takes **10-15 days longer** than the usual ## Important tips -- If you want to discuss something with hackers without a thread overhead (which makes it more difficult to read by other hackers) you can wipe out from the reply list and leave only the participants you want. If you do this, you should add `[offlist]` to the message subject to prevent confusion. +- If you want to discuss something with hackers without a thread overhead (which makes it more difficult to read by other hackers) you can wipe out pgsql-hackers@postgresql.org from the reply list and leave only the participants you want. If you do this, you should add `[offlist]` to the message subject to prevent confusion. - The hackers mail list receives *a lot* of messages. It's advisable to set up mail filtering so that hackers' messages are sorted into separate places and shown as threads. But ensure that all messages that contain **your address** will NOT go into this place so that you can read all answers to your proposal among your prioritized emails. - Patches that need minor rework like rebase or comments refine are pushed back to "Waiting on author". Therefore, almost-ready patch very often stall, waiting for a new review, during which it will need another rebase and it goes into a vicious circle. If you are certain that the change is minor and doesn't affect functionality, you can return the patch to the same state it had before (if it was "Ready-for-committer" it should be ready for committer even after rebase). It's good manners to mention this change in a hacker's thread to remove suspicions that you want to hijack the patch status. From 57646704f07142cb0f7c74b7b7cc858c9cf654f1 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 27 Oct 2022 09:25:52 -0230 Subject: [PATCH 070/185] Clean up imports --- studio/pages/project/[ref]/logs/explorer/index.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/studio/pages/project/[ref]/logs/explorer/index.tsx b/studio/pages/project/[ref]/logs/explorer/index.tsx index ae6db7cae11..f166123a6f8 100644 --- a/studio/pages/project/[ref]/logs/explorer/index.tsx +++ b/studio/pages/project/[ref]/logs/explorer/index.tsx @@ -3,7 +3,7 @@ import toast from 'react-hot-toast' import { useEffect, useState } from 'react' import { useRouter } from 'next/router' import { observer } from 'mobx-react-lite' -import { Input, Modal, Form, Button, Badge, IconList } from 'ui' +import { Input, Modal, Form, Button } from 'ui' import { useProjectSubscription, useStore } from 'hooks' import useLogsQuery from 'hooks/analytics/useLogsQuery' @@ -25,9 +25,7 @@ import { TEMPLATES, } from 'components/interfaces/Settings/Logs' import { useUpgradePrompt } from 'hooks/misc/useUpgradePrompt' -import { StripeProduct } from 'components/interfaces/Billing' import UpgradePrompt from 'components/interfaces/Settings/Logs/UpgradePrompt' -import LogsNavigation from 'components/interfaces/Settings/Logs/LogsNavigation' import LogsExplorerHeader from 'components/ui/Logs/LogsExplorerHeader' export const LogsExplorerPage: NextPageWithLayout = () => { From d73593c3760d67f39dc45418434fc3e81c607160 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 27 Oct 2022 09:33:53 -0230 Subject: [PATCH 071/185] Fix failing test --- studio/tests/components/Reports/PresetReport.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/studio/tests/components/Reports/PresetReport.test.js b/studio/tests/components/Reports/PresetReport.test.js index 0ec8c174abf..7813c376821 100644 --- a/studio/tests/components/Reports/PresetReport.test.js +++ b/studio/tests/components/Reports/PresetReport.test.js @@ -71,7 +71,6 @@ beforeEach(() => { test('static elements', async () => { render() await screen.findByText(/Last 7 days/) - await screen.findAllByText(/API Usage/) await screen.findAllByText(/Refresh/) }) From 1125d1a4e4453379034f65cc465d182194a4c204 Mon Sep 17 00:00:00 2001 From: Ant Wilson Date: Thu, 27 Oct 2022 14:14:00 +0200 Subject: [PATCH 072/185] chore: add CTA --- apps/www/_blog/2022-10-27-postgresql-commitfest.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index 62d1cdb6d3d..3535d4a0869 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -142,6 +142,8 @@ For that reason, the March Commitfest takes **10-15 days longer** than the usual - The hackers mail list receives *a lot* of messages. It's advisable to set up mail filtering so that hackers' messages are sorted into separate places and shown as threads. But ensure that all messages that contain **your address** will NOT go into this place so that you can read all answers to your proposal among your prioritized emails. - Patches that need minor rework like rebase or comments refine are pushed back to "Waiting on author". Therefore, almost-ready patch very often stall, waiting for a new review, during which it will need another rebase and it goes into a vicious circle. If you are certain that the change is minor and doesn't affect functionality, you can return the patch to the same state it had before (if it was "Ready-for-committer" it should be ready for committer even after rebase). It's good manners to mention this change in a hacker's thread to remove suspicions that you want to hijack the patch status. +If you're interested in contributing to PostgreSQL full time, [Supabase is hiring Postgres Core Contributors](https://boards.greenhouse.io/supabase/jobs/4307456004). + From 2028180776fa4384c835f70404d905d644559ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ramiro=20Nu=C3=B1ez=20Dosio?= Date: Thu, 27 Oct 2022 13:25:05 +0100 Subject: [PATCH 073/185] Added H2 with Postgres resources --- apps/www/_blog/2022-10-27-postgresql-commitfest.mdx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index 3535d4a0869..e653620fe8a 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -144,9 +144,12 @@ For that reason, the March Commitfest takes **10-15 days longer** than the usual If you're interested in contributing to PostgreSQL full time, [Supabase is hiring Postgres Core Contributors](https://boards.greenhouse.io/supabase/jobs/4307456004). +## More Postgres resources - - - - - +- [Postgres Full Text Search vs the rest](https://supabase.com/blog/postgres-full-text-search-vs-the-rest) +- [Postgres WASM by Snaplet and Supabase](https://supabase.com/blog/postgres-wasm) +- [Choosing a Postgres Primary Key](https://supabase.com/blog/choosing-a-postgres-primary-key) +- [Implementing "seen by" functionality with Postgres](https://supabase.com/blog/seen-by-in-postgresql) +- [Partial data dumps using Postgres Row Level Security](https://supabase.com/blog/partial-postgresql-data-dumps-with-rls) +- [Postgres Views](https://supabase.com/blog/postgresql-views) +- [Realtime Postgres RLS on Supabase](https://supabase.com/blog/realtime-row-level-security-in-postgresql) From ac2a1b80ca01785ab61ba6059a3d83c3d3f5f57c Mon Sep 17 00:00:00 2001 From: Eric Hsieh Date: Thu, 27 Oct 2022 20:29:16 +0800 Subject: [PATCH 074/185] Update outdated link in DEVELOPERS.md --- DEVELOPERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPERS.md b/DEVELOPERS.md index c3448678b88..c6376d34057 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -163,7 +163,7 @@ Did you have an issue, like a merge conflict, or don't know how to open a pull r ### Add a redirect -Create a new entry in the [`next.config.js`](https://github.com/supabase/supabase/blob/master/apps/www/next.config.js) file in our main site. +Create a new entry in the [`redirects.js`](https://github.com/supabase/supabase/blob/master/apps/www/lib/redirects.js) file in our main site. ## Monorepo From 44e992126f240354361de6edd5c4ada511c8c767 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:24:25 +0200 Subject: [PATCH 075/185] minor updates --- .../2022-10-27-postgresql-commitfest.mdx | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index e653620fe8a..c0c45e3785a 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -2,7 +2,7 @@ title: 'What is PostgreSQL commitfest and how to contribute' description: 'A time-tested method for contributing to the core Postgres code' author: pavel -image: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg +image: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg thumb: what-is-postgres-commitfest/what-is-postgres-commitfest.jpg tags: - postgres @@ -26,39 +26,37 @@ There are 5 commitfests each year. You can see the schedule at [commitfest.postg There are numerous benefits: -- You gain knowledge of PostgreSQL internals by reviewing other hackers' patches, and grow your profile within the community. -- The process of reviewing involves more senior PostgreSQL experts and as a rule, the code proposed becomes better. -- Lower risk for your code. If you're running a fork or extension that diverges from PG core then only you are responsible for its maintenance. Once it is merged, the entire community will help with maintenance and the API becomes the "official" way to do it. -- PostgreSQL commits are likely to survive longer than you do. Like a book manuscript, you get to leave a small history in the world. -- To re-enforce the community. Many features, like performance, have diverse options and many people discuss how to make them better. This is more effective when you join the party. +- You gain knowledge of PostgreSQL internals by reviewing other hackers' patches, and grow your profile within the community. +- The process of reviewing involves more senior PostgreSQL experts and as a rule, the code proposed becomes better. +- Lower risk for your code. If you're running a fork or extension that diverges from PG core then only you are responsible for its maintenance. Once it is merged, the entire community will help with maintenance and the API becomes the "official" way to do it. +- PostgreSQL commits are likely to survive longer than you do. Like a book manuscript, you get to leave a small history in the world. +- To re-enforce the community. Many features, like performance, have diverse options and many people discuss how to make them better. This is more effective when you join the party. ## Which patches are welcome on a Commitfest? - Generally, all patches that touch the core code are welcome. It's not necessary that they are complex. In fact, it's an excellent strategy to start by fixing or improving something small. -The main topics to propose are ****bugfixes, performance, server features, clients, security, SQL commands, testing improvements, replication and recovery, procedural languages, code refactoring (yes, it's very important!), monitoring and control, and documentation. +The main topics to propose are \*\*\*\*bugfixes, performance, server features, clients, security, SQL commands, testing improvements, replication and recovery, procedural languages, code refactoring (yes, it's very important!), monitoring and control, and documentation. Some ideas on what to submit: -- Very small and uncontroversial fixes (especially bug fixes) have a good chance to be reviewed and committed even before Commitfest. If they aren't, just attach it to commitfest. -- If you make your feature an extension, the chance of committing it to the core is small. There are nice extensions like Pageinspect and Amcheck, that are committed into PG code as contribs but it is rare (contribs - are extensions that are inside the main PG package) -- There is no need to propose patches to refine translations, .po files etc. This is done by specialists. If you have user-visible messages in your patch just leave it English-only. -- Refining documents, readmes, and comments are welcome if they are clear and precise enough. You can propose a fix for only one line of comment but please don't do nitpicking. -- Performance-related features should better demonstrate performance increase at least in some use cases and no performance degradation in others. -- If your patch changes user behavior be ready to discuss and rework the interface. It's not easy to reach an agreement among many hackers with varying opinions. +- Very small and uncontroversial fixes (especially bug fixes) have a good chance to be reviewed and committed even before Commitfest. If they aren't, just attach it to commitfest. +- If you make your feature an extension, the chance of committing it to the core is small. There are nice extensions like Pageinspect and Amcheck, that are committed into PG code as contribs but it is rare (contribs - are extensions that are inside the main PG package) +- There is no need to propose patches to refine translations, .po files etc. This is done by specialists. If you have user-visible messages in your patch just leave it English-only. +- Refining documents, readmes, and comments are welcome if they are clear and precise enough. You can propose a fix for only one line of comment but please don't do nitpicking. +- Performance-related features should better demonstrate performance increase at least in some use cases and no performance degradation in others. +- If your patch changes user behavior be ready to discuss and rework the interface. It's not easy to reach an agreement among many hackers with varying opinions. You can find a list of patches for the upcoming commitfest here: [commitfest.postgresql.org/40](https://commitfest.postgresql.org/40/) ## Quick steps on how to make a patch -Make a git branch that is based on the most recent master branch ([https://github.com/postgres/postgres](https://github.com/postgres/postgres)): +Make a git branch that is based on the most recent master branch ([github.com/postgres/postgres](https://github.com/postgres/postgres)): - -``` bash - git clone https://github.com/postgres/postgres - git checkout master - git checkout -b your_branch_name +```bash +git clone https://github.com/postgres/postgres +git checkout master +git checkout -b your_branch_name ``` Add your code to the branch (i.e. cherry-pick your commits from another branch). @@ -66,22 +64,24 @@ Add your code to the branch (i.e. cherry-pick your commits from another branch). Rebase and squash your patch code to be 1 commit against master: ``` - git rebase -i HEAD~5 - # This will take the last 5 commits in a branch - # and you can do anything with them: - # squash, change order, change commit message, etc +git rebase -i HEAD~5 + +# This will take the last 5 commits in a branch +# and you can do anything with them: +# squash, change order, change commit message, etc ``` -Edit your commit message to be meaningful and clear. Be concise, but don’t be too short. Reviewers enjoy understanding the purpose of a patch and what it does. This is especially important if the patchset consists of several patches. The first line of the commit message will become the patch name on a step later so make that line particularly clear and concise. +Edit your commit message to be meaningful and clear. Be concise, but don't be too short. Reviewers enjoy understanding the purpose of a patch and what it does. This is especially important if the patchset consists of several patches. The first line of the commit message will become the patch name on a step later so make that line particularly clear and concise. -Don’t forget to add all the patch authors with their emails to the commit message. +Don't forget to add all the patch authors with their emails to the commit message. ``` - git format-patch -1 -v13 +git format-patch -1 -v13 + # 1 = patch depth. # The number of topmost patches to include # v13 = the patch version. -# Make new version number anytime you want to +# Make new version number anytime you want to # send updated patch to the same thread) ``` @@ -89,17 +89,17 @@ Attach the file(s) to an email message (they look like `v13-0001-Naming-of-a-pat Compose email message to pgsql-hackers@postgresql.org. Write all rationale and details of your proposal. The main thing to bear in mind is that attracting attention to your proposal is like 50% of success. Also, please be polite. -It’s encouraged to split complicated patches into several independently working parts as it’s much easier to review (although not all complicated patches are easy to decompose). +It's encouraged to split complicated patches into several independently working parts as it's much easier to review (although not all complicated patches are easy to decompose). ## Submitting to a Commitfest thread After you have created a patch, you can attach it to a Commitfest thread: -- Make sure that you have sent email with your patch to the pgsql-hackers@postgresql.org mailing list -- Open commitfests page [commitfest.postgresql.org](https://commitfest.postgresql.org/) and choose the nearest commitfest with the status "Open" -- Click "New patch" button. -- Create a concise description, chose the relevant topic, and fill in the msgid in the hackers mailing list to attach a thread (which can be found in a full header of a mail message e.g.`Message-ID: `) -- Click "Create patch" button. +- Make sure that you have sent email with your patch to the pgsql-hackers@postgresql.org mailing list +- Open commitfests page [commitfest.postgresql.org](https://commitfest.postgresql.org/) and choose the nearest commitfest with the status "Open" +- Click "New patch" button. +- Create a concise description, chose the relevant topic, and fill in the msgid in the hackers mailing list to attach a thread (which can be found in a full header of a mail message e.g.`Message-ID: `) +- Click "Create patch" button. That's all. Congrats! @@ -107,15 +107,15 @@ That's all. Congrats! After you have a submitted your patch, several things will happen: -- It will appear on CI page [cfbot.cputube.org](http://cfbot.cputube.org/) which will check its health against several architectures and OSes. If the patch has any errors then you should fix/rebase it. New versions of patches sent in messages replying to the mail thread are taken by CFBot automatically. Send updated versions of all patches in a patchset even if only one changed, otherwise cfbot will not take it properly. Clean status patches will attract reviewers' and committers' attention first. -- It will get "Needs review" status and anyone could add a review and change it to "Ready for committer" or "Waiting on author". -- You are supposed to **answer the questions** and communicate on your patch regularly during commitfest. That includes fixing the things the other hackers propose. It's likely better to follow their opinion and it almost always takes much less effort than arguing. Be polite, even if comments seem like nitpicking (probably they are not, actually). -- Give back. You are supposed to **review** the same number of patches that you proposed to commitfest and with similar complexity. You can choose what to review based on your interest, your knowledge of a particular part of Postgres (e.g. indexes or planner things), or even your personal acquaintance with the author. As a rule of thumb, you are supposed to specify if you are from the same company as the author (it is not prohibited but this should be clear, the best way is just to add your company to the email signature). +- It will appear on CI page [cfbot.cputube.org](http://cfbot.cputube.org/) which will check its health against several architectures and OSes. If the patch has any errors then you should fix/rebase it. New versions of patches sent in messages replying to the mail thread are taken by CFBot automatically. Send updated versions of all patches in a patchset even if only one changed, otherwise cfbot will not take it properly. Clean status patches will attract reviewers' and committers' attention first. +- It will get "Needs review" status and anyone could add a review and change it to "Ready for committer" or "Waiting on author". +- You are supposed to **answer the questions** and communicate on your patch regularly during commitfest. That includes fixing the things the other hackers propose. It's likely better to follow their opinion and it almost always takes much less effort than arguing. Be polite, even if comments seem like nitpicking (probably they are not, actually). +- Give back. You are supposed to **review** the same number of patches that you proposed to commitfest and with similar complexity. You can choose what to review based on your interest, your knowledge of a particular part of Postgres (e.g. indexes or planner things), or even your personal acquaintance with the author. As a rule of thumb, you are supposed to specify if you are from the same company as the author (it is not prohibited but this should be clear, the best way is just to add your company to the email signature). The commit process is a two-step: -1. Preliminary review. It could be done by anyone (including you). A detailed guide on how to do this [https://wiki.postgresql.org/wiki/Reviewing_a_Patch](https://wiki.postgresql.org/wiki/Reviewing_a_Patch) If there are no doubts reviewer sets the status to "Ready for committer". If the patch needs some changes a reviewer can set "Waiting on author". Reviewers can leave a favorable review but that's only a signal. After other reviewers join the conversation, if there are no objections then one of them will make it "Ready for committer". It's pretty normal if there is more than one reviewer. In fact the more reviewers, the better. -2. Final review by a committer. Committers are the most senior members of a community and it's a formal status. The list of committers: [https://wiki.postgresql.org/wiki/Committers](https://wiki.postgresql.org/wiki/Committers) As a result a committer can commit it or push back to "Waiting on author", or "Need review". +1. Preliminary review. It could be done by anyone (including you). A detailed guide on how to do this [wiki.postgresql.org/wiki/Reviewing_a_Patch](https://wiki.postgresql.org/wiki/Reviewing_a_Patch) If there are no doubts reviewer sets the status to "Ready for committer". If the patch needs some changes a reviewer can set "Waiting on author". Reviewers can leave a favorable review but that's only a signal. After other reviewers join the conversation, if there are no objections then one of them will make it "Ready for committer". It's pretty normal if there is more than one reviewer. In fact the more reviewers, the better. +2. Final review by a committer. Committers are the most senior members of a community and it's a formal status. The list of committers: [wiki.postgresql.org/wiki/Committers](https://wiki.postgresql.org/wiki/Committers) As a result a committer can commit it or push back to "Waiting on author", or "Need review". The time and attention of committers are limited, which is why there is a two-step process. Some patches that pass the initial review won't receive reviewers' attention. In that case, they will be transferred to the next commitfest automatically. @@ -123,8 +123,8 @@ The time and attention of committers are limited, which is why there is a two-st CF finishes around the 1st day of the next month (i.e. November CF starts on November 1 and finishes on December 1). For any patches that do not get merged: -- Patches with the status "Ready for committer" or "Need review" will be transferred to the next CF. -- Patches with the status "Waiting on author" are transferred automatically if the questions and proposals in the thread are not unaddressed for more than 2 weeks. Otherwise, it will be dropped from CF with "Returned with feedback". +- Patches with the status "Ready for committer" or "Need review" will be transferred to the next CF. +- Patches with the status "Waiting on author" are transferred automatically if the questions and proposals in the thread are not unaddressed for more than 2 weeks. Otherwise, it will be dropped from CF with "Returned with feedback". All these "automatic" things are actually done by commitfest managers (volunteers), so if you have any requests, doubts, or questions you can write them personally. @@ -138,9 +138,9 @@ For that reason, the March Commitfest takes **10-15 days longer** than the usual ## Important tips -- If you want to discuss something with hackers without a thread overhead (which makes it more difficult to read by other hackers) you can wipe out pgsql-hackers@postgresql.org from the reply list and leave only the participants you want. If you do this, you should add `[offlist]` to the message subject to prevent confusion. -- The hackers mail list receives *a lot* of messages. It's advisable to set up mail filtering so that hackers' messages are sorted into separate places and shown as threads. But ensure that all messages that contain **your address** will NOT go into this place so that you can read all answers to your proposal among your prioritized emails. -- Patches that need minor rework like rebase or comments refine are pushed back to "Waiting on author". Therefore, almost-ready patch very often stall, waiting for a new review, during which it will need another rebase and it goes into a vicious circle. If you are certain that the change is minor and doesn't affect functionality, you can return the patch to the same state it had before (if it was "Ready-for-committer" it should be ready for committer even after rebase). It's good manners to mention this change in a hacker's thread to remove suspicions that you want to hijack the patch status. +- If you want to discuss something with hackers without a thread overhead (which makes it more difficult to read by other hackers) you can wipe out pgsql-hackers@postgresql.org from the reply list and leave only the participants you want. If you do this, you should add `[offlist]` to the message subject to prevent confusion. +- The hackers mail list receives _a lot_ of messages. It's advisable to set up mail filtering so that hackers' messages are sorted into separate places and shown as threads. But ensure that all messages that contain **your address** will NOT go into this place so that you can read all answers to your proposal among your prioritized emails. +- Patches that need minor rework like rebase or comments refine are pushed back to "Waiting on author". Therefore, almost-ready patch very often stall, waiting for a new review, during which it will need another rebase and it goes into a vicious circle. If you are certain that the change is minor and doesn't affect functionality, you can return the patch to the same state it had before (if it was "Ready-for-committer" it should be ready for committer even after rebase). It's good manners to mention this change in a hacker's thread to remove suspicions that you want to hijack the patch status. If you're interested in contributing to PostgreSQL full time, [Supabase is hiring Postgres Core Contributors](https://boards.greenhouse.io/supabase/jobs/4307456004). From edc80d48bdb4fa7e318beee3ab40d85201649291 Mon Sep 17 00:00:00 2001 From: Joel Lee Date: Thu, 27 Oct 2022 16:15:25 +0100 Subject: [PATCH 076/185] fix: update stray ****'s in Postgres commitfest blogpost (#9904) Update 2022-10-27-postgresql-commitfest.mdx --- apps/www/_blog/2022-10-27-postgresql-commitfest.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index c0c45e3785a..fdef4deb1c2 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -36,7 +36,7 @@ There are numerous benefits: Generally, all patches that touch the core code are welcome. It's not necessary that they are complex. In fact, it's an excellent strategy to start by fixing or improving something small. -The main topics to propose are \*\*\*\*bugfixes, performance, server features, clients, security, SQL commands, testing improvements, replication and recovery, procedural languages, code refactoring (yes, it's very important!), monitoring and control, and documentation. +The main topics to propose are: bugfixes, performance, server features, clients, security, SQL commands, testing improvements, replication and recovery, procedural languages, code refactoring (yes, it's very important!), monitoring and control, and documentation. Some ideas on what to submit: From 5baab051b605c22f5d56bf8ca1cb9c55a86b7254 Mon Sep 17 00:00:00 2001 From: Pavel Borisov <63344111+pashkinelfe@users.noreply.github.com> Date: Thu, 27 Oct 2022 19:27:06 +0400 Subject: [PATCH 077/185] Update 2022-10-27-postgresql-commitfest.mdx I've added two more pieces of advice at request of Alexander. --- apps/www/_blog/2022-10-27-postgresql-commitfest.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx index fdef4deb1c2..0e9a8af3f3f 100644 --- a/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx +++ b/apps/www/_blog/2022-10-27-postgresql-commitfest.mdx @@ -141,6 +141,8 @@ For that reason, the March Commitfest takes **10-15 days longer** than the usual - If you want to discuss something with hackers without a thread overhead (which makes it more difficult to read by other hackers) you can wipe out pgsql-hackers@postgresql.org from the reply list and leave only the participants you want. If you do this, you should add `[offlist]` to the message subject to prevent confusion. - The hackers mail list receives _a lot_ of messages. It's advisable to set up mail filtering so that hackers' messages are sorted into separate places and shown as threads. But ensure that all messages that contain **your address** will NOT go into this place so that you can read all answers to your proposal among your prioritized emails. - Patches that need minor rework like rebase or comments refine are pushed back to "Waiting on author". Therefore, almost-ready patch very often stall, waiting for a new review, during which it will need another rebase and it goes into a vicious circle. If you are certain that the change is minor and doesn't affect functionality, you can return the patch to the same state it had before (if it was "Ready-for-committer" it should be ready for committer even after rebase). It's good manners to mention this change in a hacker's thread to remove suspicions that you want to hijack the patch status. +- It’s very good to be proactive with your patch not only change something on request. Sometimes it’s hard to describe in detail what needs improving and hackers may give only approximate direction of work. If you see criticism it’s very good to answer this with possible proposals on how can you change the code, or what measurements you can do to drop possible doubts about functionality or performance. +- It’s also very nice to keep watching activity in the patch thread after it is committed. Sometimes small problems arise later and you can propose a separate fix and get a reputation as a responsible contributor. Also, you know your code better and it would be very valuable for everyone though other hackers could help you with this. If you're interested in contributing to PostgreSQL full time, [Supabase is hiring Postgres Core Contributors](https://boards.greenhouse.io/supabase/jobs/4307456004). From 1955dfec1be42ee47b17eccc66e9303fa2a1f0b4 Mon Sep 17 00:00:00 2001 From: dannykng Date: Thu, 27 Oct 2022 09:12:19 -0700 Subject: [PATCH 078/185] Data APIs -> Serverless APIs --- apps/reference/docs/guides/api.mdx | 2 +- apps/reference/nav/_referenceSidebars.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/reference/docs/guides/api.mdx b/apps/reference/docs/guides/api.mdx index abae0380c72..9aeafc23aa0 100644 --- a/apps/reference/docs/guides/api.mdx +++ b/apps/reference/docs/guides/api.mdx @@ -1,6 +1,6 @@ --- id: api -title: Data APIs +title: Serverless APIs description: Auto-generating and Realtime APIs. sidebar_label: Overview --- diff --git a/apps/reference/nav/_referenceSidebars.js b/apps/reference/nav/_referenceSidebars.js index b87a4b84ff5..616e5fe27a6 100644 --- a/apps/reference/nav/_referenceSidebars.js +++ b/apps/reference/nav/_referenceSidebars.js @@ -125,7 +125,7 @@ const sidebars = { // 'guides/database/sql-to-api', { type: 'category', - label: 'Data APIs', + label: 'Serverless APIs', collapsed: true, items: ['guides/api', 'guides/api/generating-types'], }, From d23a0d587caad58b9e2e3e624435fa7ec912847a Mon Sep 17 00:00:00 2001 From: Han Qiao Date: Fri, 28 Oct 2022 00:52:11 +0800 Subject: [PATCH 079/185] chore: update cli reference docs to 1.11.3 (#9896) * chore: update cli reference docs to 1.11.3 * chore: hide db test command --- spec/cli_v1_commands.yaml | 179 ++++++++++++++++++++++++++++++++++---- 1 file changed, 164 insertions(+), 15 deletions(-) diff --git a/spec/cli_v1_commands.yaml b/spec/cli_v1_commands.yaml index f4b6ba415c2..d7af310d127 100644 --- a/spec/cli_v1_commands.yaml +++ b/spec/cli_v1_commands.yaml @@ -1,7 +1,7 @@ clispec: '001' info: id: cli - version: 1.8.5 + version: 1.11.3 title: Supabase CLI language: sh source: https://github.com/supabase/cli @@ -12,14 +12,49 @@ info: options: |- ```sh --debug output debug logs to stderr + --experimental enable experimental features -h, --help help for supabase --workdir string path to a Supabase project directory ``` + tags: + - id: local-dev + title: Local Development + - id: management-api + title: Management APIs + - id: other-commands + title: Additional Commands commands: + - id: supabase-test + title: supabase test + summary: Run tests on local Supabase containers + tags: + - local-dev + links: [] + subcommands: + - supabase-test-db + options: |- + ```sh + -h, --help help for test + ``` + - id: supabase-test-db + title: supabase test db + summary: Tests local database with pgTAP + tags: [] + links: [] + usage: |- + ```sh + supabase test db [flags] + ``` + subcommands: [] + options: |- + ```sh + -h, --help help for db + ``` - id: supabase-stop title: supabase stop summary: Stop all local Supabase containers - tags: [] + tags: + - local-dev links: [] usage: |- ```sh @@ -34,7 +69,8 @@ commands: - id: supabase-status title: supabase status summary: Show status of local Supabase containers - tags: [] + tags: + - local-dev links: [] usage: |- ```sh @@ -48,7 +84,8 @@ commands: - id: supabase-start title: supabase start summary: Start containers for Supabase local development - tags: [] + tags: + - local-dev links: [] usage: |- ```sh @@ -62,7 +99,8 @@ commands: - id: supabase-secrets title: supabase secrets summary: Manage Supabase secrets - tags: [] + tags: + - management-api links: [] subcommands: - supabase-secrets-list @@ -121,7 +159,8 @@ commands: - id: supabase-projects title: supabase projects summary: Manage Supabase projects - tags: [] + tags: + - management-api links: [] subcommands: - supabase-projects-create @@ -167,7 +206,8 @@ commands: - id: supabase-orgs title: supabase orgs summary: Manage Supabase organizations - tags: [] + tags: + - management-api links: [] subcommands: - supabase-orgs-list @@ -193,7 +233,8 @@ commands: - id: supabase-migration title: supabase migration summary: Manage database migration scripts - tags: [] + tags: + - local-dev links: [] subcommands: - supabase-migration-list @@ -234,7 +275,8 @@ commands: - id: supabase-login title: supabase login summary: Authenticate using an access token - tags: [] + tags: + - local-dev links: [] usage: |- ```sh @@ -248,7 +290,8 @@ commands: - id: supabase-link title: supabase link summary: Link to a Supabase project - tags: [] + tags: + - local-dev links: [] usage: |- ```sh @@ -264,7 +307,8 @@ commands: - id: supabase-init title: supabase init summary: Initialize a local project - tags: [] + tags: + - local-dev links: [] usage: |- ```sh @@ -278,7 +322,8 @@ commands: - id: supabase-gen title: supabase gen summary: Run code generation tools - tags: [] + tags: + - local-dev links: [] subcommands: - supabase-gen-types @@ -321,7 +366,8 @@ commands: - id: supabase-functions title: supabase functions summary: Manage Supabase Edge functions - tags: [] + tags: + - management-api links: [] subcommands: - supabase-functions-delete @@ -396,10 +442,111 @@ commands: -h, --help help for delete --project-ref string Project ref of the Supabase project. ``` + - id: supabase-domains + title: supabase domains + summary: Manage custom domain names for Supabase projects + tags: + - management-api + links: [] + subcommands: + - supabase-domains-activate + - supabase-domains-create + - supabase-domains-delete + - supabase-domains-get + - supabase-domains-reverify + options: |- + ```sh + -h, --help help for domains + --include-raw-output Include raw output (useful for debugging). + --project-ref string Project ref of the Supabase project. + ``` + - id: supabase-domains-reverify + title: supabase domains reverify + summary: Re-verify the custom hostname config for your project. + tags: [] + links: [] + usage: |- + ```sh + supabase domains reverify [flags] + ``` + subcommands: [] + options: |- + ```sh + -h, --help help for reverify + ``` + - id: supabase-domains-get + title: supabase domains get + summary: Get the current custom hostname config. + description: | + Retrieve the custom hostname config for your project, as stored in the Supabase platform. + tags: [] + links: [] + usage: |- + ```sh + supabase domains get [flags] + ``` + subcommands: [] + options: |- + ```sh + -h, --help help for get + ``` + - id: supabase-domains-delete + title: supabase domains delete + summary: Deletes the custom hostname config for your project. + tags: [] + links: [] + usage: |- + ```sh + supabase domains delete [flags] + ``` + subcommands: [] + options: |- + ```sh + -h, --help help for delete + ``` + - id: supabase-domains-create + title: supabase domains create + summary: Create a custom hostname. + description: |- + Create a custom hostname for your Supabase project. + + Expects your custom hostname to have a CNAME record to your Supabase project's subdomain. + tags: [] + links: [] + usage: |- + ```sh + supabase domains create [flags] + ``` + subcommands: [] + options: |- + ```sh + --custom-hostname string The custom hostname to use for your Supabase project. + -h, --help help for create + ``` + - id: supabase-domains-activate + title: supabase domains activate + summary: Activate the custom hostname for a project. + description: |- + Activates the custom hostname configuration for a project. + + This reconfigures your Supabase project to respond to requests on your custom hostname. + After the custom hostname is activated, your project's auth services will no longer function on the Supabase-provisioned subdomain. + tags: [] + links: [] + usage: |- + ```sh + supabase domains activate [flags] + ``` + subcommands: [] + options: |- + ```sh + -h, --help help for activate + ``` - id: supabase-db title: supabase db summary: Manage local Postgres databases - tags: [] + tags: + - local-dev links: [] subcommands: - supabase-db-branch @@ -514,6 +661,7 @@ commands: ```sh -f, --file string Saves schema diff to a file. -h, --help help for diff + --linked Diffs local schema against linked project. -s, --schema strings List of schema to include. (default [public]) --use-migra Use migra to generate schema diff. ``` @@ -595,7 +743,8 @@ commands: description: | Generate the autocompletion script for supabase for the specified shell. See each sub-command's help for details on how to use the generated script. - tags: [] + tags: + - other-commands links: [] subcommands: - supabase-completion-bash From 29a4c62a550a60166bb9701c0ad959d67ea40fb6 Mon Sep 17 00:00:00 2001 From: dannykng Date: Thu, 27 Oct 2022 10:34:42 -0700 Subject: [PATCH 080/185] Run prettier --- apps/reference/nav/_referenceSidebars.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/reference/nav/_referenceSidebars.js b/apps/reference/nav/_referenceSidebars.js index 4d3c70e6640..17cefe6566e 100644 --- a/apps/reference/nav/_referenceSidebars.js +++ b/apps/reference/nav/_referenceSidebars.js @@ -173,8 +173,8 @@ const sidebars = { 'guides/realtime', 'guides/realtime/quickstart', 'guides/realtime/postgres-cdc', - 'guides/realtime/rate-limits' - ] + 'guides/realtime/rate-limits', + ], }, { type: 'category', From 68d20ab7c694d82ccaeae1de6dafa488daf4b63e Mon Sep 17 00:00:00 2001 From: dannykng Date: Thu, 27 Oct 2022 10:38:25 -0700 Subject: [PATCH 081/185] limits.mdx -> rate-limits.mdx --- .../docs/guides/realtime/{limits.mdx => rate-limits.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename apps/reference/docs/guides/realtime/{limits.mdx => rate-limits.mdx} (100%) diff --git a/apps/reference/docs/guides/realtime/limits.mdx b/apps/reference/docs/guides/realtime/rate-limits.mdx similarity index 100% rename from apps/reference/docs/guides/realtime/limits.mdx rename to apps/reference/docs/guides/realtime/rate-limits.mdx From 8a929c4ac707662e521682b746224bc7f467f40c Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Thu, 27 Oct 2022 15:19:38 -0230 Subject: [PATCH 082/185] Updates --- .../interfaces/Auth/RedirectDomains/RedirectDomains.tsx | 4 ++-- .../components/layouts/DatabaseLayout/DatabaseMenu.utils.ts | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx b/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx index c5cdbaa2d14..14354efddd0 100644 --- a/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx +++ b/studio/components/interfaces/Auth/RedirectDomains/RedirectDomains.tsx @@ -88,12 +88,12 @@ const RedirectDomains = () => {

    {!canUpdateConfig && ( diff --git a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts index 954c094af28..cc69a5ff75c 100644 --- a/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts +++ b/studio/components/layouts/DatabaseLayout/DatabaseMenu.utils.ts @@ -12,7 +12,6 @@ export const generateDatabaseMenu = (project?: Project): ProductMenuGroup[] => { return [ { - title: 'Database', items: [ { name: 'Tables', key: 'tables', url: `/project/${ref}/database/tables`, items: [] }, { From 3127a94b236b6f89da1141f54a8a1b311d293b93 Mon Sep 17 00:00:00 2001 From: Ollie Halliday <22655069+Hallidayo@users.noreply.github.com> Date: Thu, 27 Oct 2022 20:50:22 +0100 Subject: [PATCH 083/185] changed variable name --- apps/reference/docs/guides/with-flutter.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/reference/docs/guides/with-flutter.mdx b/apps/reference/docs/guides/with-flutter.mdx index a09a5b9f56d..d71bcafea34 100644 --- a/apps/reference/docs/guides/with-flutter.mdx +++ b/apps/reference/docs/guides/with-flutter.mdx @@ -171,7 +171,7 @@ class SplashPage extends StatefulWidget { } class _SplashPageState extends State { - bool _redicrectCalled = false; + bool _redirectCalled = false; @override void didChangeDependencies() { super.didChangeDependencies(); @@ -180,11 +180,11 @@ class _SplashPageState extends State { Future _redirect() async { await Future.delayed(Duration.zero); - if (_redicrectCalled || !mounted) { + if (_redirectCalled || !mounted) { return; } - _redicrectCalled = true; + _redirectCalled = true; final session = supabase.auth.currentSession; if (session != null) { Navigator.of(context).pushReplacementNamed('/account'); From 80d06242622ec8e2ec4459f8da85815d4e5fab69 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 03:32:02 +0100 Subject: [PATCH 084/185] fix(typos): add github action to prevent typos + fix typos (#9598) * feat(ci): fix typos * [create-pull-request] automated change * Update index.tsx * Update README.fr.md * Create .misspell-fixer.ignore * Update constant.dart * [create-pull-request] automated change * Update database.tsx * [create-pull-request] automated change * [create-pull-request] automated change Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .github/workflows/fix-typos.yml | 19 ++++++++++++++ .misspell-fixer.ignore | 1 + .../reference/docs/guides/database/tables.mdx | 2 +- .../docs/guides/integrations/polyscale.mdx | 2 +- apps/reference/docs/guides/with-flutter.mdx | 18 ++++++------- apps/reference/generator/legacy.ts | 4 +-- apps/www/_blog/2021-03-31-supabase-cli.mdx | 2 +- apps/www/_blog/2022-08-16-supabase-js-v2.mdx | 2 +- ...postgres-extension-for-json-validation.mdx | 2 +- ...trello-board-with-supabase-and-angular.mdx | 2 +- apps/www/pages/blog.tsx | 2 +- apps/www/styles/index.css | 2 +- .../lib/components/avatar.dart | 2 +- .../lib/pages/account_page.dart | 8 +++--- .../lib/pages/login_page.dart | 2 +- .../src/components/Breadcrumb/Breadcrumb.tsx | 6 ++--- .../ui/src/components/Divider/Divider.tsx | 2 +- .../components/Dropdown/Dropdown.stories.tsx | 26 +++++++++---------- .../ui/src/components/Dropdown/Dropdown.tsx | 6 ++--- .../ui/src/components/Modal/Modal.stories.tsx | 2 +- packages/ui/src/components/Modal/Modal.tsx | 6 ++--- .../components/Popover/Popover.stories.tsx | 4 +-- .../ui/src/components/Popover/Popover.tsx | 6 ++--- .../ui/src/components/SidePanel/SidePanel.tsx | 6 ++--- packages/ui/src/lib/theme/defaultTheme.ts | 8 +++--- .../common/ForeignTableModal/index.tsx | 2 +- .../header/filter/FilterPopover.tsx | 2 +- .../components/header/sort/SortPopover.tsx | 2 +- .../Account/NewAccessTokenButton.tsx | 2 +- .../Auth/Policies/PolicyEditor/index.tsx | 6 ++--- .../Policies/PolicyTableRow/PolicyRow.tsx | 2 +- .../interfaces/Auth/Users/UserDropdown.tsx | 2 +- .../AddPaymentMethodForm.tsx | 2 +- .../Billing/ExitSurvey/ExitSurvey.tsx | 2 +- .../PaymentSummaryPanel.tsx | 2 +- .../interfaces/Billing/ProUpgrade.tsx | 2 +- .../Database/Backups/PITR/PITRSelection.tsx | 6 ++--- .../Extensions/EnableExtensionModal.tsx | 4 +-- .../Database/Extensions/ExtensionCard.tsx | 4 +-- .../Database/Extensions/Extensions.tsx | 4 +-- .../Database/Functions/CreateFunction.tsx | 16 ++++++------ .../CreateHook/ServiceConfigForm/index.tsx | 6 ++--- .../Database/Hooks/CreateHook/index.tsx | 8 +++--- .../Database/Triggers/CreateTrigger.tsx | 4 +-- .../DeleteOrganizationButton.tsx | 4 +-- .../TeamSettings/InviteMemberButton.tsx | 2 +- .../TeamSettings/MemberActions.tsx | 4 +-- .../Organization/TeamSettings/MembersView.tsx | 2 +- .../interfaces/Settings/API/JWTSettings.tsx | 2 +- .../interfaces/Settings/Logs/LogTable.tsx | 2 +- .../LogsErrorRenderers.stories.tsx | 2 +- .../Settings/Logs/LogsFilterPopover.tsx | 2 +- .../Settings/Logs/UpgradePrompt.tsx | 2 +- .../ColumnEditor/ColumnEditor.tsx | 4 +-- .../ColumnEditor/InputWithSuggestions.tsx | 2 +- .../SidePanelEditor/RowEditor/RowEditor.tsx | 2 +- .../SidePanelEditor/TableEditor/Column.tsx | 6 ++--- .../TableEditor/TableEditor.tsx | 4 +-- .../FeedbackDropdown/FeedbackWidget.tsx | 2 +- .../LayoutHeader/HelpPopover.tsx | 2 +- .../NotificationsPopover/index.tsx | 8 +++--- .../LayoutHeader/OrgDropdown.tsx | 2 +- .../LayoutHeader/ProjectDropdown.tsx | 2 +- .../NavigationBar/NavigationBar.tsx | 2 +- .../ProjectLayout/ProjectPausedState.tsx | 2 +- .../layouts/SQLEditorLayout/SQLEditorMenu.tsx | 2 +- .../layouts/StorageLayout/StorageMenu.tsx | 2 +- .../TableEditorLayout/TableEditorMenu.tsx | 2 +- .../Dropdown/OrganizationDropdown.js | 2 +- .../to-be-cleaned/SqlEditor/RenameQuery.js | 2 +- .../Storage/CreateBucketModal.tsx | 2 +- .../StorageExplorer/FileExplorerRow.js | 2 +- .../StoragePolicies/StoragePolicies.js | 2 +- .../StoragePoliciesBucketRow.js | 2 +- .../StoragePolicies/StoragePoliciesEditor.js | 6 ++--- .../StorageSettings/StorageSettings.tsx | 2 +- .../components/ui/DatePicker/DatePicker.tsx | 2 +- studio/components/ui/Dialogs/ConfirmDialog.js | 2 +- .../components/ui/Modals/TextConfirmModal.tsx | 4 +-- studio/lib/common/fetch/base.ts | 4 +-- .../[ref]/settings/billing/update/index.tsx | 2 +- .../pages/project/[ref]/settings/database.tsx | 2 +- .../pages/projects/LogsPreviewer.test.js | 2 +- 83 files changed, 172 insertions(+), 152 deletions(-) create mode 100644 .github/workflows/fix-typos.yml create mode 100644 .misspell-fixer.ignore diff --git a/.github/workflows/fix-typos.yml b/.github/workflows/fix-typos.yml new file mode 100644 index 00000000000..faa0e01c84d --- /dev/null +++ b/.github/workflows/fix-typos.yml @@ -0,0 +1,19 @@ +name: Automatically fix typos +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + ref: master + - uses: sobolevn/misspell-fixer-action@master + - uses: peter-evans/create-pull-request@v2.4.4 + env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + with: + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.misspell-fixer.ignore b/.misspell-fixer.ignore new file mode 100644 index 00000000000..7c90f6e4788 --- /dev/null +++ b/.misspell-fixer.ignore @@ -0,0 +1 @@ +^./i18n diff --git a/apps/reference/docs/guides/database/tables.mdx b/apps/reference/docs/guides/database/tables.mdx index ed9292a9f3e..7f4d0e914ca 100644 --- a/apps/reference/docs/guides/database/tables.mdx +++ b/apps/reference/docs/guides/database/tables.mdx @@ -160,7 +160,7 @@ In the example above, we have: 1. created a column called `id` 1. assigned the data type `bigint` 1. instructed the database that this should be `generated always as identity`, which means that Postgres will automatically assign a unique number to this column. -1. Becuase it's unique, we can also use it as our `primary key`. +1. Because it's unique, we can also use it as our `primary key`. We could also use `generated by default as identity`, which would allow us to insert our own unique values. diff --git a/apps/reference/docs/guides/integrations/polyscale.mdx b/apps/reference/docs/guides/integrations/polyscale.mdx index 412f94ff2c1..1eae5729d0f 100644 --- a/apps/reference/docs/guides/integrations/polyscale.mdx +++ b/apps/reference/docs/guides/integrations/polyscale.mdx @@ -48,7 +48,7 @@ Your cache is now created. PolyScale automatically checks to see that your datab ## Step 2: Connect to your PolyScale Cache -Using your PolyScale cache is simple -- instead of connecting to your Supabase database directly, you'll replace your orignal connection string with the PolyScale connection string in your application. +Using your PolyScale cache is simple -- instead of connecting to your Supabase database directly, you'll replace your original connection string with the PolyScale connection string in your application. For example, if your original connection string was: `postgres://postgres:zqSPGHFAbPLvVCKw@db.rogpiubvixysbakciwqz.supabase.co:5432` diff --git a/apps/reference/docs/guides/with-flutter.mdx b/apps/reference/docs/guides/with-flutter.mdx index d71bcafea34..b531e6112e5 100644 --- a/apps/reference/docs/guides/with-flutter.mdx +++ b/apps/reference/docs/guides/with-flutter.mdx @@ -249,7 +249,7 @@ class _LoginPageState extends State { } on AuthException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } setState(() { @@ -346,7 +346,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected exception occured'); + context.showErrorSnackBar(message: 'Unexpected exception occurred'); } setState(() { @@ -376,7 +376,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpeted error occured'); + context.showErrorSnackBar(message: 'Unexpeted error occurred'); } setState(() { _loading = false; @@ -389,7 +389,7 @@ class _AccountPageState extends State { } on AuthException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } if (mounted) { Navigator.of(context).pushReplacementNamed('/'); @@ -619,7 +619,7 @@ class _AvatarState extends State { } } catch (error) { if (mounted) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } } @@ -670,7 +670,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected exception occured'); + context.showErrorSnackBar(message: 'Unexpected exception occurred'); } setState(() { @@ -700,7 +700,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpeted error occured'); + context.showErrorSnackBar(message: 'Unexpeted error occurred'); } setState(() { _loading = false; @@ -713,7 +713,7 @@ class _AccountPageState extends State { } on AuthException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } if (mounted) { Navigator.of(context).pushReplacementNamed('/'); @@ -734,7 +734,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error has occured'); + context.showErrorSnackBar(message: 'Unexpected error has occurred'); } if (!mounted) { return; diff --git a/apps/reference/generator/legacy.ts b/apps/reference/generator/legacy.ts index 6a2b906af3f..c2d03442d7b 100644 --- a/apps/reference/generator/legacy.ts +++ b/apps/reference/generator/legacy.ts @@ -54,7 +54,7 @@ export default async function gen(inputFileName: string, outputDir: string) { const description = pageSpec.description || - tsDocCommentToMdComment(getDescriptionFromDefintion(tsDefinition)) + tsDocCommentToMdComment(getDescriptionFromDefinition(tsDefinition)) // Create page const content = Page({ @@ -107,7 +107,7 @@ function generateParameters(tsDefinition: any) { return methodListGroup(parameters) } -function getDescriptionFromDefintion(tsDefinition) { +function getDescriptionFromDefinition(tsDefinition) { if (!tsDefinition) return null if ( ['Method', 'Constructor', 'Constructor signature'].includes( diff --git a/apps/www/_blog/2021-03-31-supabase-cli.mdx b/apps/www/_blog/2021-03-31-supabase-cli.mdx index 51cfaf6e55d..b24682700de 100644 --- a/apps/www/_blog/2021-03-31-supabase-cli.mdx +++ b/apps/www/_blog/2021-03-31-supabase-cli.mdx @@ -153,7 +153,7 @@ docker run supabase/pgadmin-schema-diff \ > diff_demo.sql Starting schema diff... -Comparision started......0% +Comparison started......0% Comparing Event Triggers...2% Comparing Extensions...4% Comparing Languages...8% diff --git a/apps/www/_blog/2022-08-16-supabase-js-v2.mdx b/apps/www/_blog/2022-08-16-supabase-js-v2.mdx index f195da5b5c6..711954ce122 100644 --- a/apps/www/_blog/2022-08-16-supabase-js-v2.mdx +++ b/apps/www/_blog/2022-08-16-supabase-js-v2.mdx @@ -186,7 +186,7 @@ const supabase = createClient(apiURL, apiKey, { }) ``` -This is clearer for developers - if you're only using some parts of Supabase, you only recieve the hints for those parts. +This is clearer for developers - if you're only using some parts of Supabase, you only receive the hints for those parts.
    diff --git a/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx b/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx index fedddcb4bb8..52f14bd8c01 100644 --- a/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx +++ b/apps/www/_blog/2022-08-19-pg-jsonschema-a-postgres-extension-for-json-validation.mdx @@ -32,7 +32,7 @@ If our application receives data via a webhook: }, "payload": { { - "sucess": true, + "success": true, "content": { "account_id": "d928b484-16bd-4f10-a827-3eb959b4cc14", "event": "SUBSCRIBED", diff --git a/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx b/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx index 8e608762b6e..74e199254fc 100644 --- a/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx +++ b/apps/www/_blog/2022-08-24-building-a-realtime-trello-board-with-supabase-and-angular.mdx @@ -1307,7 +1307,7 @@ To continue, bring up the **src/app/services/data.service.ts** and add this addi Now that we can easily get all the updates to our relevant tables in realtime, we just need to handle them accordingly. -This is just a matter of finding out which **event** occured (INSERT, UPDATE, DELETE) and then applying the changes to our local data to add, change or remove data. +This is just a matter of finding out which **event** occurred (INSERT, UPDATE, DELETE) and then applying the changes to our local data to add, change or remove data. Go ahead by finally implementing our function in the **src/app/components/inside/board/board.component.ts** that we left open until now: diff --git a/apps/www/pages/blog.tsx b/apps/www/pages/blog.tsx index 6be2ff2453d..3e020c9533b 100644 --- a/apps/www/pages/blog.tsx +++ b/apps/www/pages/blog.tsx @@ -39,7 +39,7 @@ function Blog(props: any) { const router = useRouter() useEffect(() => { - // contruct an array of blog posts + // construct an array of blog posts // not inluding the first blog post const shiftedBlogs = [...props.blogs] shiftedBlogs.shift() diff --git a/apps/www/styles/index.css b/apps/www/styles/index.css index 0770adef451..a9175b6623a 100644 --- a/apps/www/styles/index.css +++ b/apps/www/styles/index.css @@ -156,7 +156,7 @@ h6 { */ /* Database page */ -.dashboard-tabs div[role='seperator'] { +.dashboard-tabs div[role='separator'] { @apply border border-gray-50 dark:border-gray-700; } diff --git a/examples/user-management/flutter-user-management/lib/components/avatar.dart b/examples/user-management/flutter-user-management/lib/components/avatar.dart index 826366d76c1..8bd3ab13244 100644 --- a/examples/user-management/flutter-user-management/lib/components/avatar.dart +++ b/examples/user-management/flutter-user-management/lib/components/avatar.dart @@ -80,7 +80,7 @@ class _AvatarState extends State { } } catch (error) { if (mounted) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } } diff --git a/examples/user-management/flutter-user-management/lib/pages/account_page.dart b/examples/user-management/flutter-user-management/lib/pages/account_page.dart index ac7d4fc13b6..7fc66e26525 100644 --- a/examples/user-management/flutter-user-management/lib/pages/account_page.dart +++ b/examples/user-management/flutter-user-management/lib/pages/account_page.dart @@ -35,7 +35,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected exception occured'); + context.showErrorSnackBar(message: 'Unexpected exception occurred'); } setState(() { @@ -65,7 +65,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpeted error occured'); + context.showErrorSnackBar(message: 'Unexpeted error occurred'); } setState(() { _loading = false; @@ -78,7 +78,7 @@ class _AccountPageState extends State { } on AuthException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } if (mounted) { Navigator.of(context).pushReplacementNamed('/'); @@ -99,7 +99,7 @@ class _AccountPageState extends State { } on PostgrestException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error has occured'); + context.showErrorSnackBar(message: 'Unexpected error has occurred'); } if (!mounted) { return; diff --git a/examples/user-management/flutter-user-management/lib/pages/login_page.dart b/examples/user-management/flutter-user-management/lib/pages/login_page.dart index b7f8bf491a3..f4bcbbcdac1 100644 --- a/examples/user-management/flutter-user-management/lib/pages/login_page.dart +++ b/examples/user-management/flutter-user-management/lib/pages/login_page.dart @@ -36,7 +36,7 @@ class _LoginPageState extends State { } on AuthException catch (error) { context.showErrorSnackBar(message: error.message); } catch (error) { - context.showErrorSnackBar(message: 'Unexpected error occured'); + context.showErrorSnackBar(message: 'Unexpected error occurred'); } setState(() { diff --git a/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx b/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx index 6b32edf834b..65d97cbb722 100644 --- a/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx +++ b/packages/ui/src/components/Breadcrumb/Breadcrumb.tsx @@ -11,14 +11,14 @@ interface Props { const Breadcrumb = ({ className, style, children, spacing = 'small' }: Props) => { let classes = [BreadcrumbStyle['sbui-breadcrumb--container']] - let seperatorClasses = [BreadcrumbStyle['sbui-breadcrumb--separator']] + let separatorClasses = [BreadcrumbStyle['sbui-breadcrumb--separator']] if (className) { classes.push(className) } if (spacing) { - seperatorClasses.push(`sbui-breadcrumb--separator-${spacing}`) + separatorClasses.push(`sbui-breadcrumb--separator-${spacing}`) } return ( @@ -27,7 +27,7 @@ const Breadcrumb = ({ className, style, children, spacing = 'small' }: Props) =>
  • {child} {idx + 1 < children!.length && ( -
  • ))} diff --git a/packages/ui/src/components/Divider/Divider.tsx b/packages/ui/src/components/Divider/Divider.tsx index c1b0607899f..7030dff9e56 100644 --- a/packages/ui/src/components/Divider/Divider.tsx +++ b/packages/ui/src/components/Divider/Divider.tsx @@ -37,7 +37,7 @@ export default function Divider({ return (
    {children && ( diff --git a/packages/ui/src/components/Dropdown/Dropdown.stories.tsx b/packages/ui/src/components/Dropdown/Dropdown.stories.tsx index d1f825a5772..36a13dfd86c 100644 --- a/packages/ui/src/components/Dropdown/Dropdown.stories.tsx +++ b/packages/ui/src/components/Dropdown/Dropdown.stories.tsx @@ -68,7 +68,7 @@ export const DefaultFull = (args: any) => {
    , - , + , Group label, console.log('clicked')}> Account @@ -76,17 +76,17 @@ export const DefaultFull = (args: any) => { Settings ⌘+T , - , + , Show subtitles , - , + , Red Blue Green , - , + , { Blue Green , - , + , Group label, console.log('clicked')}> Account @@ -112,7 +112,7 @@ export const DefaultFull = (args: any) => { , - , + , }> Log out , @@ -142,7 +142,7 @@ export const Default = (args: any) => (
    , - , + , Group label, console.log('clicked')}> Account @@ -150,7 +150,7 @@ export const Default = (args: any) => ( Settings ⌘+T , - , + , }>Log out, ]} > @@ -172,7 +172,7 @@ export const doNotcloseOverlay = (args: any) => ( Signed in as tom@example.com , - , + , Account, Settings, @@ -207,10 +207,10 @@ export const withCustomStyles = (args: any) => ( Signed in as tom@example.com , - , + , Account, Settings, - , + ,
    + return
    } -Popover.Seperator = Seperator +Popover.Separator = Separator Popover.Close = Close export default Popover diff --git a/packages/ui/src/components/SidePanel/SidePanel.tsx b/packages/ui/src/components/SidePanel/SidePanel.tsx index 6b54d4aeacc..72da477eb79 100644 --- a/packages/ui/src/components/SidePanel/SidePanel.tsx +++ b/packages/ui/src/components/SidePanel/SidePanel.tsx @@ -115,10 +115,10 @@ const SidePanel = ({ ) } -export function Seperator() { +export function Separator() { let __styles = styleHandler('sidepanel') - return
    + return
    } export function Content({ children }: { children: React.ReactNode }) { @@ -128,5 +128,5 @@ export function Content({ children }: { children: React.ReactNode }) { } SidePanel.Content = Content -SidePanel.Seperator = Seperator +SidePanel.Separator = Separator export default SidePanel diff --git a/packages/ui/src/lib/theme/defaultTheme.ts b/packages/ui/src/lib/theme/defaultTheme.ts index c271dd02d6b..e14706669f2 100644 --- a/packages/ui/src/lib/theme/defaultTheme.ts +++ b/packages/ui/src/lib/theme/defaultTheme.ts @@ -982,7 +982,7 @@ export default { data-closed:animate-panel-slide-right-in `, }, - seperator: ` + separator: ` w-full h-px my-2 @@ -1216,7 +1216,7 @@ export default { px-4 flex items-center space-x-2 py-1.5 text-xs `, - seperator: ` + separator: ` w-full h-px my-2 @@ -1297,7 +1297,7 @@ export default { transition text-scale-900 hover:text-scale-1100 `, - seperator: ` + separator: ` w-full h-px my-2 @@ -1453,7 +1453,7 @@ export default { overflow-y-auto data-open:animate-overlay-show data-closed:animate-overlay-hide `, - seperator: ` + separator: ` w-full h-px my-2 diff --git a/studio/components/grid/components/common/ForeignTableModal/index.tsx b/studio/components/grid/components/common/ForeignTableModal/index.tsx index ac89ca6ee09..78e1bdb56f0 100644 --- a/studio/components/grid/components/common/ForeignTableModal/index.tsx +++ b/studio/components/grid/components/common/ForeignTableModal/index.tsx @@ -146,7 +146,7 @@ export const ForeignTableModal: React.FC = ({ onChange={onFilterChange} /> - +
    {
    )}
    - +
    )} - +
    {columns && columns.length > 0 ? ( { className="w-full" /> - +
    - +
    - +
    - +
    - + )} {isPendingInviteAcceptance ? ( @@ -212,7 +212,7 @@ const MemberActions: FC = ({ members, member, roles }) => { )} {canResendInvite && isExpired && ( <> - + handleResendInvite(member)}>

    Resend invitation

    diff --git a/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx b/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx index d9df79bf9f1..101401a91c3 100644 --- a/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx +++ b/studio/components/interfaces/Organization/TeamSettings/MembersView.tsx @@ -266,7 +266,7 @@ const MembersView = () => { By changing the role of this member their permissions will change.

    - +
    diff --git a/studio/components/interfaces/Settings/Logs/UpgradePrompt.tsx b/studio/components/interfaces/Settings/Logs/UpgradePrompt.tsx index 0d3ca8a64ca..91d2b741cf9 100644 --- a/studio/components/interfaces/Settings/Logs/UpgradePrompt.tsx +++ b/studio/components/interfaces/Settings/Logs/UpgradePrompt.tsx @@ -51,7 +51,7 @@ const UpgradePrompt: React.FC = ({ show, setShowUpgradePrompt }) => {
    - +
    - +
    @@ -202,7 +202,7 @@ const ColumnEditor: FC = ({ />
    - +
    = ({ overlay={ <> {suggestionsHeader || 'Suggestions'} - + {filteredSuggestions.map((suggestion: Suggestion) => ( = ({ {optionalFields.length > 0 && ( <> - +
    diff --git a/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx b/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx index 3e74d2c1910..f435ec8964b 100644 --- a/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx +++ b/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/Column.tsx @@ -157,7 +157,7 @@ const Column: FC = ({ className="p-4" onChange={() => onUpdateColumn({ isNullable: !column.isNullable })} /> - + )} @@ -170,7 +170,7 @@ const Column: FC = ({ className="p-4" onChange={() => onUpdateColumn({ isUnique: !column.isUnique })} /> - + )} {column.format.includes('int') && ( @@ -186,7 +186,7 @@ const Column: FC = ({ onUpdateColumn({ isIdentity, isArray }) }} /> - + )} diff --git a/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx b/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx index a3d18c14300..baa02b2921d 100644 --- a/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx +++ b/studio/components/interfaces/TableGridEditor/SidePanelEditor/TableEditor/TableEditor.tsx @@ -197,7 +197,7 @@ const TableEditor: FC = ({ />
    - +
    = ({ />
    - +
    {!isDuplicating && ( diff --git a/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx b/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx index 94054cc1442..da81cb0847e 100644 --- a/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx +++ b/studio/components/layouts/ProjectLayout/LayoutHeader/FeedbackDropdown/FeedbackWidget.tsx @@ -99,7 +99,7 @@ const FeedbackWidget: FC = ({ onClose }) => { value={feedback} onChange={onFeedbackChange} /> - +
    - +
    Reach out to the community
    diff --git a/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/index.tsx b/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/index.tsx index 23014f3f254..6252cf60567 100644 --- a/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/index.tsx +++ b/studio/components/layouts/ProjectLayout/LayoutHeader/NotificationsPopover/index.tsx @@ -102,7 +102,7 @@ const NotificationsPopover: FC = () => { await app.projects.fetchDetail(projectToApplyMigration.ref, (project) => meta.setProjectDetails(project)) ui.setNotification({ category: 'success', - message: `Succesfully applied migration for project "${projectToApplyMigration.name}"`, + message: `Successfully applied migration for project "${projectToApplyMigration.name}"`, }) } else { ui.setNotification({ @@ -124,7 +124,7 @@ const NotificationsPopover: FC = () => { await app.projects.fetchDetail(projectToRollbackMigration.ref, (project) => meta.setProjectDetails(project)) ui.setNotification({ category: 'success', - message: `Succesfully rolled back migration for project "${projectToRollbackMigration.name}"`, + message: `Successfully rolled back migration for project "${projectToRollbackMigration.name}"`, }) } else { ui.setNotification({ @@ -146,7 +146,7 @@ const NotificationsPopover: FC = () => { await app.projects.fetchDetail(projectToFinalizeMigration.ref, (project) => meta.setProjectDetails(project)) ui.setNotification({ category: 'success', - message: `Succesfully finalized migration for project "${projectToFinalizeMigration.name}"`, + message: `Successfully finalized migration for project "${projectToFinalizeMigration.name}"`, }) } else { ui.setNotification({ @@ -204,7 +204,7 @@ const NotificationsPopover: FC = () => { setTargetNotification(notification) }} /> - {i !== notifications.length - 1 && } + {i !== notifications.length - 1 && } ))} diff --git a/studio/components/layouts/ProjectLayout/LayoutHeader/OrgDropdown.tsx b/studio/components/layouts/ProjectLayout/LayoutHeader/OrgDropdown.tsx index f5ebfe64e92..81a508929eb 100644 --- a/studio/components/layouts/ProjectLayout/LayoutHeader/OrgDropdown.tsx +++ b/studio/components/layouts/ProjectLayout/LayoutHeader/OrgDropdown.tsx @@ -25,7 +25,7 @@ const OrgDropdown = () => { {x.name} ))} - + } onClick={() => router.push(`/new`)}> New organization diff --git a/studio/components/layouts/ProjectLayout/LayoutHeader/ProjectDropdown.tsx b/studio/components/layouts/ProjectLayout/LayoutHeader/ProjectDropdown.tsx index dff7e100fff..0f6d73bd0ee 100644 --- a/studio/components/layouts/ProjectLayout/LayoutHeader/ProjectDropdown.tsx +++ b/studio/components/layouts/ProjectLayout/LayoutHeader/ProjectDropdown.tsx @@ -52,7 +52,7 @@ const ProjectDropdown = () => {
    ))} - + }>New project diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx index cec263e8441..28c2acbd276 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.tsx @@ -82,7 +82,7 @@ const NavigationBar: FC = ({}) => { Account Preferences - + )} Theme diff --git a/studio/components/layouts/ProjectLayout/ProjectPausedState.tsx b/studio/components/layouts/ProjectLayout/ProjectPausedState.tsx index a6e40267b34..61bf61c4f15 100644 --- a/studio/components/layouts/ProjectLayout/ProjectPausedState.tsx +++ b/studio/components/layouts/ProjectLayout/ProjectPausedState.tsx @@ -135,7 +135,7 @@ const ProjectPausedState: FC = ({ project }) => {

    - +
    - +
    { if (option.name === 'Separator') { - return + return } else { return ( { /* Functions that involve the CRUD for policies - For each API call within the Promise.all, return true if an error occured, else return false + For each API call within the Promise.all, return true if an error occurred, else return false */ const onCreatePolicies = async (payloads) => { return await Promise.all( diff --git a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js index be6fcc93881..24cc64e8ff8 100644 --- a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js +++ b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesBucketRow.js @@ -33,7 +33,7 @@ const PolicyRow = ({ > Edit - + } type="outline" diff --git a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js index 81bb4307f74..36c17ab3190 100644 --- a/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js +++ b/studio/components/to-be-cleaned/Storage/StoragePolicies/StoragePoliciesEditor.js @@ -117,14 +117,14 @@ const StoragePoliciesEditor = ({ onUpdatePolicyName={onUpdatePolicyName} /> - + - + - + { fileSizeLimit: updatedValue.value, unformattedFileSizeLimit: res.fileSizeLimit, } - ui.setNotification({ category: 'success', message: 'Sucessfully updated settings' }) + ui.setNotification({ category: 'success', message: 'Successfully updated settings' }) } } } diff --git a/studio/components/ui/DatePicker/DatePicker.tsx b/studio/components/ui/DatePicker/DatePicker.tsx index dc79e1ba450..a4162f49600 100644 --- a/studio/components/ui/DatePicker/DatePicker.tsx +++ b/studio/components/ui/DatePicker/DatePicker.tsx @@ -211,7 +211,7 @@ function _DatePicker({ from: startDate?.toISOString() || null, to: endDate?.toISOString() || null, })} - +
    - +
    - +
    {/* */} +
    + +
    + {/* */}
    Date: Fri, 28 Oct 2022 14:38:09 +0300 Subject: [PATCH 092/185] update generate link supabase-js docs --- spec/supabase_js_v2.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/spec/supabase_js_v2.yml b/spec/supabase_js_v2.yml index 876e455e63f..d08acab55e9 100644 --- a/spec/supabase_js_v2.yml +++ b/spec/supabase_js_v2.yml @@ -583,13 +583,21 @@ pages: email: 'email@example.com' }) ``` - - name: Generate a link to change email addresses + - name: Generate links to change current email address isSpotlight: false js: | ```js const { data, error } = await supabase.auth.admin.generateLink({ type: 'email_change_current', - email: 'old.email@example.com', + email: 'current.email@example.com', + newEmail: 'new.email@example.com' + }) + ``` + js: | + ```js + const { data, error } = await supabase.auth.admin.generateLink({ + type: 'email_change_new', + email: 'current.email@example.com', newEmail: 'new.email@example.com' }) ``` From 241052080cd78a3b0df21841061a3b50f66c4313 Mon Sep 17 00:00:00 2001 From: Hargun Kaur <56452820+hkaur008@users.noreply.github.com> Date: Fri, 28 Oct 2022 17:09:28 +0530 Subject: [PATCH 093/185] added width fit content (#9926) --- apps/www/styles/index.css | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/www/styles/index.css b/apps/www/styles/index.css index a9175b6623a..4bd521fc206 100644 --- a/apps/www/styles/index.css +++ b/apps/www/styles/index.css @@ -20,6 +20,7 @@ html { scroll-behavior: smooth; + width: fit-content; } body { From f6b2279996a840f703610dee438071650f77c702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludvig=20Stiernstr=C3=B6m?= Date: Fri, 28 Oct 2022 13:43:56 +0200 Subject: [PATCH 094/185] docs: TypeScript in JavaScript example #9922 (#9923) FIX: TypeScript in JavaScript example #9922 --- apps/reference/docs/guides/with-nextjs.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/reference/docs/guides/with-nextjs.mdx b/apps/reference/docs/guides/with-nextjs.mdx index 82492aca8a0..5cb3e9ae359 100644 --- a/apps/reference/docs/guides/with-nextjs.mdx +++ b/apps/reference/docs/guides/with-nextjs.mdx @@ -473,13 +473,12 @@ export default function Account({ session }: { session: Session }) { Now that we have all the components in place, let's update `pages/index.js`: ```jsx title="pages/index.js" -import type { NextPage } from 'next' import { Auth, ThemeSupa } from '@supabase/auth-ui-react' import { useSession, useSupabaseClient } from '@supabase/auth-helpers-react' // highlight-next-line import Account from '../components/Account' -const Home: NextPage = () => { +const Home = () => { const session = useSession() const supabase = useSupabaseClient() From 4547450fa5ba0dc64ade9a27125a24b4318767e9 Mon Sep 17 00:00:00 2001 From: Kang Ming Date: Fri, 28 Oct 2022 04:50:32 -0700 Subject: [PATCH 095/185] docs: release notes should use signInWithOtp (#9912) --- apps/reference/_supabase_js/release-notes.md | 4 ++-- apps/temp-docs/_supabase_js/release-notes.md | 4 ++-- apps/temp-docs/docs/reference/javascript/release-notes.mdx | 4 ++-- apps/www/lib/redirects.js | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/apps/reference/_supabase_js/release-notes.md b/apps/reference/_supabase_js/release-notes.md index d77cf283abc..9e8ddae32c4 100644 --- a/apps/reference/_supabase_js/release-notes.md +++ b/apps/reference/_supabase_js/release-notes.md @@ -106,7 +106,7 @@ interface Session { ### New Auth methods We're removing the `signIn()` method in favor of more explicit function signatures: -`signInWithPassword()`, `signInWithPasswordless()`, and `signInWithOtp()`. +`signInWithPassword()`, `signInWithOtp()`, and `signInWithOtp()`. ```ts // v2 @@ -170,7 +170,7 @@ Deprecated and removed `setAuth()` . To set a custom `access_token` jwt instead, - client-level `throwOnError` - `gotrue-js` - `supabase-js` client allows passing a `storageKey` param which will allow the user to set the key used in local storage for storing the session. By default, this will be namespace-d with the supabase project ref. ([PR](https://github.com/supabase/supabase-js/pull/460)) - - `signIn` method is now split into `signInWithPassword` , `signInWithPasswordless` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) + - `signIn` method is now split into `signInWithPassword` , `signInWithOtp` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) - Deprecated and removed `session()` , `user()` in favour of using `getSession()` instead. `getSession()` will always return a valid session if a user is already logged in, meaning no more random logouts. ([PR](https://github.com/supabase/gotrue-js/pull/299)) - Deprecated and removed setting for `multitab` support because `getSession()` and gotrue’s reuse interval setting takes care of session management across multiple tabs ([PR](https://github.com/supabase/gotrue-js/pull/366)) - No more throwing of random errors, gotrue-js v2 always returns a custom error type: ([PR](https://github.com/supabase/gotrue-js/pull/341)) diff --git a/apps/temp-docs/_supabase_js/release-notes.md b/apps/temp-docs/_supabase_js/release-notes.md index 715215f2197..f102eb5493c 100644 --- a/apps/temp-docs/_supabase_js/release-notes.md +++ b/apps/temp-docs/_supabase_js/release-notes.md @@ -104,7 +104,7 @@ interface Session { ### New Auth methods We're removing the `signIn()` method in favor of more explicit function signatures: -`signInWithPassword()`, `signInWithPasswordless()`, and `signInWithOtp()`. +`signInWithPassword()`, `signInWithOtp()`, and `signInWithOtp()`. ```ts // v2 @@ -168,7 +168,7 @@ Deprecated and removed `setAuth()` . To set a custom `access_token` jwt instead, - client-level `throwOnError` - `gotrue-js` - `supabase-js` client allows passing a `storageKey` param which will allow the user to set the key used in local storage for storing the session. By default, this will be namespace-d with the supabase project ref. ([PR](https://github.com/supabase/supabase-js/pull/460)) - - `signIn` method is now split into `signInWithPassword` , `signInWithPasswordless` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) + - `signIn` method is now split into `signInWithPassword` , `signInWithOtp` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) - Deprecated and removed `session()` , `user()` in favour of using `getSession()` instead. `getSession()` will always return a valid session if a user is already logged in, meaning no more random logouts. ([PR](https://github.com/supabase/gotrue-js/pull/299)) - Deprecated and removed setting for `multitab` support because `getSession()` and gotrue’s reuse interval setting takes care of session management across multiple tabs ([PR](https://github.com/supabase/gotrue-js/pull/366)) - No more throwing of random errors, gotrue-js v2 always returns a custom error type: ([PR](https://github.com/supabase/gotrue-js/pull/341)) diff --git a/apps/temp-docs/docs/reference/javascript/release-notes.mdx b/apps/temp-docs/docs/reference/javascript/release-notes.mdx index 715215f2197..f102eb5493c 100644 --- a/apps/temp-docs/docs/reference/javascript/release-notes.mdx +++ b/apps/temp-docs/docs/reference/javascript/release-notes.mdx @@ -104,7 +104,7 @@ interface Session { ### New Auth methods We're removing the `signIn()` method in favor of more explicit function signatures: -`signInWithPassword()`, `signInWithPasswordless()`, and `signInWithOtp()`. +`signInWithPassword()`, `signInWithOtp()`, and `signInWithOtp()`. ```ts // v2 @@ -168,7 +168,7 @@ Deprecated and removed `setAuth()` . To set a custom `access_token` jwt instead, - client-level `throwOnError` - `gotrue-js` - `supabase-js` client allows passing a `storageKey` param which will allow the user to set the key used in local storage for storing the session. By default, this will be namespace-d with the supabase project ref. ([PR](https://github.com/supabase/supabase-js/pull/460)) - - `signIn` method is now split into `signInWithPassword` , `signInWithPasswordless` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) + - `signIn` method is now split into `signInWithPassword` , `signInWithOtp` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) - Deprecated and removed `session()` , `user()` in favour of using `getSession()` instead. `getSession()` will always return a valid session if a user is already logged in, meaning no more random logouts. ([PR](https://github.com/supabase/gotrue-js/pull/299)) - Deprecated and removed setting for `multitab` support because `getSession()` and gotrue’s reuse interval setting takes care of session management across multiple tabs ([PR](https://github.com/supabase/gotrue-js/pull/366)) - No more throwing of random errors, gotrue-js v2 always returns a custom error type: ([PR](https://github.com/supabase/gotrue-js/pull/341)) diff --git a/apps/www/lib/redirects.js b/apps/www/lib/redirects.js index 35faead7bad..f8de63342f0 100644 --- a/apps/www/lib/redirects.js +++ b/apps/www/lib/redirects.js @@ -1442,7 +1442,7 @@ module.exports = [ source: '/docs/reference/javascript/auth-api-updateuserbyid', destination: '/docs/reference/javascript/v1/auth-api-updateuserbyid', }, - // signIn method is now split into signInWithPassword ,signInWithPasswordless ,signInWithOAuth + // signIn method is now split into signInWithPassword ,signInWithOtp ,signInWithOAuth // send traffic to v1 docs instead { permanent: true, @@ -1501,7 +1501,7 @@ module.exports = [ source: '/docs/reference/dart/reset-password-email', destination: '/docs/reference/dart/auth-resetpasswordforemail', }, - // signIn method is now split into signInWithPassword ,signInWithPasswordless ,signInWithOAuth + // signIn method is now split into signInWithPassword ,signInWithOtp ,signInWithOAuth // send traffic to v0 docs instead { permanent: true, From 7e1c987346606c2faef9404baf28f69e2784ee5c Mon Sep 17 00:00:00 2001 From: hallidayo <22655069+Hallidayo@users.noreply.github.com> Date: Fri, 28 Oct 2022 12:52:38 +0100 Subject: [PATCH 096/185] feat: edge functions setup buttons (#9874) added anchor tag to open in new tab --- .../interfaces/Functions/FunctionsEmptyState.tsx | 16 ++++++++++------ .../Functions/TerminalInstructions.tsx | 16 ++++++++++------ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/studio/components/interfaces/Functions/FunctionsEmptyState.tsx b/studio/components/interfaces/Functions/FunctionsEmptyState.tsx index 9778dae6955..c100eaa152e 100644 --- a/studio/components/interfaces/Functions/FunctionsEmptyState.tsx +++ b/studio/components/interfaces/Functions/FunctionsEmptyState.tsx @@ -17,17 +17,21 @@ const FunctionsEmptyState = () => {

    - + + + - + + +
    diff --git a/studio/components/interfaces/Functions/TerminalInstructions.tsx b/studio/components/interfaces/Functions/TerminalInstructions.tsx index 378c628e82c..4bf07d8c62d 100644 --- a/studio/components/interfaces/Functions/TerminalInstructions.tsx +++ b/studio/components/interfaces/Functions/TerminalInstructions.tsx @@ -133,17 +133,21 @@ const TerminalInstructions: FC = ({ closable = false }) => {
    - + + + - + + +
    From dc8e302e862f42408ccd444b66cea0ac22c86b11 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Fri, 28 Oct 2022 13:53:51 +0200 Subject: [PATCH 097/185] Updates the spec, adds refreshSession (#9873) --- apps/reference/nav/supabase_js_sidebars.js | 1 + spec/Makefile | 53 +- spec/enrichments/tsdoc_v1/combined.json | 2786 +---- spec/enrichments/tsdoc_v2/combined.json | 10028 +++++++++++----- spec/enrichments/tsdoc_v2/gotrue.json | 6671 +++++++--- .../tsdoc_v2/gotrue_dereferenced.json | 9478 +++++++++++---- spec/enrichments/tsdoc_v2/postgrest.json | 486 +- .../tsdoc_v2/postgrest_dereferenced.json | 548 +- spec/storage_v0_openapi.json | 30 + spec/supabase_js_v2.yml | 19 + .../storage_v0_openapi_deparsed.json | 53 + 11 files changed, 20256 insertions(+), 9897 deletions(-) diff --git a/apps/reference/nav/supabase_js_sidebars.js b/apps/reference/nav/supabase_js_sidebars.js index f354bb7cbd1..fc07909a7c7 100644 --- a/apps/reference/nav/supabase_js_sidebars.js +++ b/apps/reference/nav/supabase_js_sidebars.js @@ -41,6 +41,7 @@ const sidebars = { 'generated/auth-signout', 'generated/auth-verifyotp', 'generated/auth-getsession', + 'generated/auth-refreshsession', 'generated/auth-getuser', 'generated/auth-updateuser', 'generated/auth-setsession', diff --git a/spec/Makefile b/spec/Makefile index 37dc86dfba4..030f4ec46cf 100644 --- a/spec/Makefile +++ b/spec/Makefile @@ -14,7 +14,7 @@ init: ############################################################################### # Download all the specs ############################################################################### -download: download.api.v1 download.auth.v1 download.storage.v1 download.tsdoc.v1 download.tsdoc.v2 +download: download.api.v1 download.auth.v1 download.storage.v1 download.tsdoc.v2 download.api.v1: curl -sS https://api.supabase.com/api/v1-json > $(REPO_DIR)/api_v0_openapi.json @@ -25,13 +25,14 @@ download.auth.v1: download.storage.v1: curl -sS https://supabase.github.io/storage-api/api.json > $(REPO_DIR)/storage_v0_openapi.json -download.tsdoc.v1: - curl -sS https://supabase.github.io/supabase-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/supabase.json - curl -sS https://supabase.github.io/gotrue-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/gotrue.json - curl -sS https://supabase.github.io/postgrest-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/postgrest.json - curl -sS https://supabase.github.io/realtime-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/realtime.json - curl -sS https://supabase.github.io/storage-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/storage.json - curl -sS https://supabase.github.io/functions-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/functions.json +# No longer updated +# download.tsdoc.v1: +# curl -sS https://supabase.github.io/supabase-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/supabase.json +# curl -sS https://supabase.github.io/gotrue-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/gotrue.json +# curl -sS https://supabase.github.io/postgrest-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/postgrest.json +# curl -sS https://supabase.github.io/realtime-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/realtime.json +# curl -sS https://supabase.github.io/storage-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/storage.json +# curl -sS https://supabase.github.io/functions-js/v1/spec.json > $(REPO_DIR)/enrichments/tsdoc_v1/functions.json download.tsdoc.v2: curl -sS https://supabase.github.io/supabase-js/v2/spec.json > $(REPO_DIR)/enrichments/tsdoc_v2/supabase.json @@ -44,7 +45,7 @@ download.tsdoc.v2: ############################################################################### # Transform docs into working files ############################################################################### -transform: dereference.api.v0 dereference.auth.v1 dereference.storage.v0 dereference.tsdoc.v1 dereference.tsdoc.v2 combine.tsdoc.v1 combine.tsdoc.v2 +transform: dereference.api.v0 dereference.auth.v1 dereference.storage.v0 dereference.tsdoc.v2 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 @@ -55,13 +56,14 @@ dereference.auth.v1: dereference.storage.v0: npx swagger-cli bundle --dereference --outfile $(REPO_DIR)/transforms/storage_v0_openapi_deparsed.json $(REPO_DIR)/storage_v0_openapi.json -dereference.tsdoc.v1: - cd $(REPO_DIR)/parser && npm run tsdoc:dereference:functions:v1 - cd $(REPO_DIR)/parser && npm run tsdoc:dereference:gotrue:v1 - cd $(REPO_DIR)/parser && npm run tsdoc:dereference:postgrest:v1 - cd $(REPO_DIR)/parser && npm run tsdoc:dereference:realtime:v1 - cd $(REPO_DIR)/parser && npm run tsdoc:dereference:storage:v1 - cd $(REPO_DIR)/parser && npm run tsdoc:dereference:supabase:v1 +# No longer updated +# dereference.tsdoc.v1: +# cd $(REPO_DIR)/parser && npm run tsdoc:dereference:functions:v1 +# cd $(REPO_DIR)/parser && npm run tsdoc:dereference:gotrue:v1 +# cd $(REPO_DIR)/parser && npm run tsdoc:dereference:postgrest:v1 +# cd $(REPO_DIR)/parser && npm run tsdoc:dereference:realtime:v1 +# cd $(REPO_DIR)/parser && npm run tsdoc:dereference:storage:v1 +# cd $(REPO_DIR)/parser && npm run tsdoc:dereference:supabase:v1 dereference.tsdoc.v2: cd $(REPO_DIR)/parser && npm run tsdoc:dereference:functions:v2 @@ -71,15 +73,16 @@ dereference.tsdoc.v2: cd $(REPO_DIR)/parser && npm run tsdoc:dereference:storage:v2 cd $(REPO_DIR)/parser && npm run tsdoc:dereference:supabase:v2 -combine.tsdoc.v1: - jq -s '{ name: "Combined Specs", children: [.[0], .[1], .[2], .[3], .[4], .[5]] }' \ - $(REPO_DIR)/enrichments/tsdoc_v1/supabase_dereferenced.json \ - $(REPO_DIR)/enrichments/tsdoc_v1/gotrue_dereferenced.json \ - $(REPO_DIR)/enrichments/tsdoc_v1/postgrest_dereferenced.json \ - $(REPO_DIR)/enrichments/tsdoc_v1/realtime_dereferenced.json \ - $(REPO_DIR)/enrichments/tsdoc_v1/storage_dereferenced.json \ - $(REPO_DIR)/enrichments/tsdoc_v1/functions_dereferenced.json \ - > $(REPO_DIR)/enrichments/tsdoc_v1/combined.json +# No longer updated +# combine.tsdoc.v1: +# jq -s '{ name: "Combined Specs", children: [.[0], .[1], .[2], .[3], .[4], .[5]] }' \ +# $(REPO_DIR)/enrichments/tsdoc_v1/supabase_dereferenced.json \ +# $(REPO_DIR)/enrichments/tsdoc_v1/gotrue_dereferenced.json \ +# $(REPO_DIR)/enrichments/tsdoc_v1/postgrest_dereferenced.json \ +# $(REPO_DIR)/enrichments/tsdoc_v1/realtime_dereferenced.json \ +# $(REPO_DIR)/enrichments/tsdoc_v1/storage_dereferenced.json \ +# $(REPO_DIR)/enrichments/tsdoc_v1/functions_dereferenced.json \ +# > $(REPO_DIR)/enrichments/tsdoc_v1/combined.json combine.tsdoc.v2: jq -s '{ name: "Combined Specs", children: [.[0], .[1], .[2], .[3], .[4], .[5]] }' \ diff --git a/spec/enrichments/tsdoc_v1/combined.json b/spec/enrichments/tsdoc_v1/combined.json index 6fe1d520fe1..829f79c7d7b 100644 --- a/spec/enrichments/tsdoc_v1/combined.json +++ b/spec/enrichments/tsdoc_v1/combined.json @@ -420,19 +420,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 83, - 91, - 86, - 89, - 82, - 87, - 84, - 85, - 88, - 81, - 90 - ] + "children": [83, 91, 86, 89, 82, 87, 84, 85, 88, 81, 90] } ], "sources": [ @@ -1001,9 +989,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 175 - ] + "children": [175] } ] } @@ -1542,19 +1528,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 83, - 91, - 86, - 89, - 82, - 87, - 84, - 85, - 88, - 81, - 90 - ] + "children": [83, 91, 86, 89, 82, 87, 84, 85, 88, 81, 90] } ], "sources": [ @@ -1738,9 +1712,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 180 - ] + "children": [180] } ] } @@ -1939,9 +1911,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 161 - ] + "children": [161] } ] } @@ -1981,10 +1951,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 159, - 162 - ] + "children": [159, 162] } ] } @@ -2096,9 +2063,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 169 - ] + "children": [169] } ] } @@ -2138,10 +2103,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 167, - 170 - ] + "children": [167, 170] } ] } @@ -2298,10 +2260,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 155, - 154 - ] + "children": [155, 154] } ] } @@ -2330,58 +2289,24 @@ { "title": "Constructors", "kind": 512, - "children": [ - 112 - ] + "children": [112] }, { "title": "Properties", "kind": 1024, "children": [ - 117, - 121, - 131, - 126, - 123, - 133, - 125, - 124, - 120, - 119, - 118, - 132, - 122, - 138, - 137 + 117, 121, 131, 126, 123, 133, 125, 124, 120, 119, 118, 132, 122, 138, 137 ] }, { "title": "Accessors", "kind": 262144, - "children": [ - 139, - 141 - ] + "children": [139, 141] }, { "title": "Methods", "kind": 2048, - "children": [ - 171, - 191, - 197, - 189, - 186, - 183, - 195, - 193, - 176, - 143, - 181, - 156, - 163, - 147 - ] + "children": [171, 191, 197, 189, 186, 183, 195, 193, 176, 143, 181, 156, 163, 147] } ], "sources": [ @@ -2750,19 +2675,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 83, - 91, - 86, - 89, - 82, - 87, - 84, - 85, - 88, - 81, - 90 - ] + "children": [83, 91, 86, 89, 82, 87, 84, 85, 88, 81, 90] } ], "sources": [ @@ -2791,24 +2704,17 @@ { "title": "References", "kind": 16777216, - "children": [ - 202, - 203 - ] + "children": [202, 203] }, { "title": "Classes", "kind": 128, - "children": [ - 111 - ] + "children": [111] }, { "title": "Functions", "kind": 64, - "children": [ - 106 - ] + "children": [106] } ], "sources": [ @@ -3081,14 +2987,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 13, - 9, - 11, - 10, - 18, - 12 - ] + "children": [13, 9, 11, 10, 18, 12] } ] } @@ -3374,27 +3273,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 3 - ] + "children": [3] }, { "title": "Properties", "kind": 1024, - "children": [ - 21, - 20, - 22, - 19, - 23 - ] + "children": [21, 20, 22, 19, 23] }, { "title": "Methods", "kind": 2048, - "children": [ - 24 - ] + "children": [24] } ], "sources": [ @@ -3434,9 +3323,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 2 - ] + "children": [2] } ], "sources": [ @@ -3711,10 +3598,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 45, - 47 - ] + "children": [45, 47] } ] } @@ -3911,25 +3795,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 34 - ] + "children": [34] }, { "title": "Properties", "kind": 1024, - "children": [ - 40 - ] + "children": [40] }, { "title": "Methods", "kind": 2048, - "children": [ - 41, - 49, - 56 - ] + "children": [41, 49, 56] } ], "sources": [ @@ -3945,9 +3821,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 33 - ] + "children": [33] } ], "sources": [ @@ -4013,9 +3887,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 62 - ] + "children": [62] } ] } @@ -4048,10 +3920,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 60, - 63 - ] + "children": [60, 63] } ], "sources": [ @@ -4168,11 +4037,7 @@ { "title": "Functions", "kind": 64, - "children": [ - 70, - 67, - 65 - ] + "children": [70, 67, 65] } ], "sources": [ @@ -4588,19 +4453,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 83, - 91, - 86, - 89, - 82, - 87, - 84, - 85, - 88, - 81, - 90 - ] + "children": [83, 91, 86, 89, 82, 87, 84, 85, 88, 81, 90] } ], "sources": [ @@ -4843,15 +4696,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 94, - 100, - 95, - 98, - 99, - 96, - 97 - ] + "children": [94, 100, 95, 98, 99, 96, 97] } ], "sources": [ @@ -4869,20 +4714,12 @@ { "title": "Interfaces", "kind": 256, - "children": [ - 73 - ] + "children": [73] }, { "title": "Type Aliases", "kind": 4194304, - "children": [ - 78, - 74, - 79, - 102, - 92 - ] + "children": [78, 74, 79, 102, 92] } ], "sources": [ @@ -4926,9 +4763,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 104 - ] + "children": [104] } ], "sources": [ @@ -4944,15 +4779,7 @@ { "title": "Modules", "kind": 2, - "children": [ - 105, - 1, - 32, - 59, - 64, - 72, - 103 - ] + "children": [105, 1, 32, 59, 64, 72, 103] } ] }, @@ -5190,12 +5017,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 11, - 12, - 7, - 6 - ] + "children": [11, 12, 7, 6] } ] } @@ -5759,17 +5581,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 541, - 548, - 544, - 547, - 542, - 546, - 545, - 543, - 540 - ] + "children": [541, 548, 544, 547, 542, 546, 545, 543, 540] } ], "sources": [ @@ -5865,11 +5677,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 201, - 202, - 200 - ] + "children": [201, 202, 200] } ] } @@ -5944,11 +5752,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 205, - 206, - 204 - ] + "children": [205, 206, 204] } ] } @@ -6059,9 +5863,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 179 - ] + "children": [179] } ] } @@ -6216,11 +6018,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 246, - 247, - 245 - ] + "children": [246, 247, 245] } ] } @@ -6390,11 +6188,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 191, - 190, - 192 - ] + "children": [191, 190, 192] } ] } @@ -6480,10 +6274,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 194, - 195 - ] + "children": [194, 195] } ] } @@ -6791,11 +6582,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 41, - 39, - 40 - ] + "children": [41, 39, 40] } ] } @@ -6950,11 +6737,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 253, - 254, - 252 - ] + "children": [253, 254, 252] } ] } @@ -7144,12 +6927,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 231, - 232, - 229, - 230 - ] + "children": [231, 232, 229, 230] } ] } @@ -7258,10 +7036,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 219, - 220 - ] + "children": [219, 220] } ] } @@ -7317,10 +7092,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 222, - 223 - ] + "children": [222, 223] } ] } @@ -7433,10 +7205,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 148, - 147 - ] + "children": [148, 147] } ] } @@ -7517,10 +7286,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 150, - 151 - ] + "children": [150, 151] } ] } @@ -7614,10 +7380,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 210, - 211 - ] + "children": [210, 211] } ] } @@ -7676,10 +7439,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 213, - 214 - ] + "children": [213, 214] } ] } @@ -7806,10 +7566,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 167, - 168 - ] + "children": [167, 168] } ] } @@ -7920,10 +7677,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 158, - 157 - ] + "children": [158, 157] } ] } @@ -8009,10 +7763,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 160, - 162 - ] + "children": [160, 162] } ] } @@ -8143,11 +7894,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 102, - 101, - 100 - ] + "children": [102, 101, 100] } ] } @@ -8233,10 +7980,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 104, - 106 - ] + "children": [104, 106] } ] } @@ -8347,10 +8091,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 113, - 112 - ] + "children": [113, 112] } ] } @@ -8436,10 +8177,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 115, - 117 - ] + "children": [115, 117] } ] } @@ -8624,10 +8362,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 64, - 63 - ] + "children": [64, 63] } ] } @@ -8708,10 +8443,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 66, - 67 - ] + "children": [66, 67] } ] } @@ -8867,13 +8599,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 587, - 584, - 588, - 585, - 586 - ] + "children": [587, 584, 588, 585, 586] } ], "sources": [ @@ -8960,10 +8686,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 93, - 94 - ] + "children": [93, 94] } ] } @@ -9068,9 +8791,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 85 - ] + "children": [85] } ] } @@ -9151,10 +8872,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 87, - 88 - ] + "children": [87, 88] } ] } @@ -9251,9 +8969,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 122 - ] + "children": [122] } ] } @@ -9399,11 +9115,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 53, - 52, - 51 - ] + "children": [53, 52, 51] } ] } @@ -9489,10 +9201,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 55, - 56 - ] + "children": [55, 56] } ] } @@ -9617,10 +9326,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 75, - 74 - ] + "children": [75, 74] } ] } @@ -9706,10 +9412,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 77, - 78 - ] + "children": [77, 78] } ] } @@ -9900,13 +9603,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 538, - 534, - 537, - 536, - 535 - ] + "children": [538, 534, 537, 536, 535] } ], "sources": [ @@ -10028,11 +9725,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 261, - 262, - 260 - ] + "children": [261, 262, 260] } ] } @@ -10341,17 +10034,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 541, - 548, - 544, - 547, - 542, - 546, - 545, - 543, - 540 - ] + "children": [541, 548, 544, 547, 542, 546, 545, 543, 540] } ], "sources": [ @@ -10473,11 +10156,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 239, - 240, - 238 - ] + "children": [239, 240, 238] } ] } @@ -10587,9 +10266,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 129 - ] + "children": [129] } ] } @@ -10675,10 +10352,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 131, - 132 - ] + "children": [131, 132] } ] } @@ -10796,9 +10470,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 138 - ] + "children": [138] } ] } @@ -10884,10 +10556,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 140, - 141 - ] + "children": [140, 141] } ] } @@ -10905,52 +10574,19 @@ { "title": "Constructors", "kind": 512, - "children": [ - 2 - ] + "children": [2] }, { "title": "Properties", "kind": 1024, - "children": [ - 22, - 23, - 18, - 17 - ] + "children": [22, 23, 18, 17] }, { "title": "Methods", "kind": 2048, "children": [ - 28, - 32, - 196, - 173, - 241, - 184, - 180, - 34, - 248, - 224, - 215, - 142, - 207, - 163, - 152, - 95, - 107, - 169, - 57, - 89, - 79, - 118, - 45, - 68, - 255, - 233, - 123, - 133 + 28, 32, 196, 173, 241, 184, 180, 34, 248, 224, 215, 142, 207, 163, 152, 95, 107, + 169, 57, 89, 79, 118, 45, 68, 255, 233, 123, 133 ] } ], @@ -11351,17 +10987,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 274, - 278, - 273, - 279, - 269, - 276, - 277, - 275, - 268 - ] + "children": [274, 278, 273, 279, 269, 276, 277, 275, 268] } ] } @@ -11751,10 +11377,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 458, - 459 - ] + "children": [458, 459] } ] } @@ -11812,10 +11435,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 461, - 462 - ] + "children": [461, 462] } ] } @@ -11935,10 +11555,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 390, - 389 - ] + "children": [390, 389] } ] } @@ -12044,12 +11661,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 392, - 395, - 394, - 393 - ] + "children": [392, 395, 394, 393] } ] } @@ -12148,12 +11760,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 397, - 400, - 399, - 398 - ] + "children": [397, 400, 399, 398] } ] } @@ -12310,13 +11917,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 587, - 584, - 588, - 585, - 586 - ] + "children": [587, 584, 588, 585, 586] } ], "sources": [ @@ -12431,11 +12032,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 449, - 447, - 448 - ] + "children": [449, 447, 448] } ] } @@ -12533,9 +12130,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 407 - ] + "children": [407] } ] } @@ -12641,12 +12236,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 409, - 412, - 411, - 410 - ] + "children": [409, 412, 411, 410] } ] } @@ -12745,12 +12335,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 414, - 417, - 416, - 415 - ] + "children": [414, 417, 416, 415] } ] } @@ -12992,11 +12577,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 425, - 423, - 424 - ] + "children": [425, 423, 424] } ] } @@ -13120,14 +12701,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 432, - 435, - 430, - 433, - 431, - 434 - ] + "children": [432, 435, 430, 433, 431, 434] } ] } @@ -13245,14 +12819,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 437, - 440, - 441, - 439, - 442, - 438 - ] + "children": [437, 440, 441, 439, 442, 438] } ] } @@ -13631,15 +13198,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 488, - 490, - 489, - 487, - 491, - 492, - 493 - ] + "children": [488, 490, 489, 487, 491, 492, 493] } ], "sources": [ @@ -13994,15 +13553,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 488, - 490, - 489, - 487, - 491, - 492, - 493 - ] + "children": [488, 490, 489, 487, 491, 492, 493] } ], "sources": [ @@ -14140,9 +13691,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 365 - ] + "children": [365] } ] } @@ -14222,10 +13771,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 367, - 368 - ] + "children": [367, 368] } ] } @@ -14399,10 +13945,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 381, - 382 - ] + "children": [381, 382] } ] } @@ -14534,11 +14077,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 342, - 344, - 343 - ] + "children": [342, 344, 343] } ] } @@ -14750,10 +14289,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 357, - 356 - ] + "children": [357, 356] } ] } @@ -14934,14 +14470,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 564, - 569, - 566, - 565, - 568, - 567 - ] + "children": [564, 569, 566, 565, 568, 567] } ], "sources": [ @@ -15103,13 +14632,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 314, - 315, - 311, - 313, - 312 - ] + "children": [314, 315, 311, 313, 312] } ] } @@ -15268,13 +14791,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 324, - 322, - 320, - 323, - 321 - ] + "children": [324, 322, 320, 323, 321] } ] } @@ -15356,9 +14873,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 372 - ] + "children": [372] } ] } @@ -15539,14 +15054,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 564, - 569, - 566, - 565, - 568, - 567 - ] + "children": [564, 569, 566, 565, 568, 567] } ], "sources": [ @@ -15639,11 +15147,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 301, - 300, - 299 - ] + "children": [301, 300, 299] } ] } @@ -15752,11 +15256,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 305, - 304, - 303 - ] + "children": [305, 304, 303] } ] } @@ -15930,13 +15430,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 538, - 534, - 537, - 536, - 535 - ] + "children": [538, 534, 537, 536, 535] } ], "sources": [ @@ -16058,11 +15552,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 349, - 351, - 350 - ] + "children": [349, 351, 350] } ] } @@ -16221,9 +15711,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 330 - ] + "children": [330] } ] } @@ -16332,11 +15820,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 334, - 333, - 332 - ] + "children": [334, 333, 332] } ] } @@ -16354,56 +15838,19 @@ { "title": "Constructors", "kind": 512, - "children": [ - 264 - ] + "children": [264] }, { "title": "Properties", "kind": 1024, - "children": [ - 284, - 287, - 286, - 285, - 289, - 290, - 293, - 288, - 292, - 291 - ] + "children": [284, 287, 286, 285, 289, 290, 293, 288, 292, 291] }, { "title": "Methods", "kind": 2048, "children": [ - 454, - 383, - 443, - 401, - 418, - 479, - 477, - 463, - 469, - 452, - 450, - 472, - 466, - 474, - 361, - 373, - 339, - 337, - 358, - 352, - 306, - 369, - 294, - 345, - 335, - 325 + 454, 383, 443, 401, 418, 479, 477, 463, 469, 452, 450, 472, 466, 474, 361, 373, 339, + 337, 358, 352, 306, 369, 294, 345, 335, 325 ] } ], @@ -16663,17 +16110,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 541, - 548, - 544, - 547, - 542, - 546, - 545, - 543, - 540 - ] + "children": [541, 548, 544, 547, 542, 546, 545, 543, 540] } ], "sources": [ @@ -16739,10 +16176,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 484, - 485 - ] + "children": [484, 485] } ], "sources": [ @@ -16865,13 +16299,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 560, - 559, - 558, - 561, - 562 - ] + "children": [560, 559, 558, 561, 562] } ], "sources": [ @@ -16991,13 +16419,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 587, - 584, - 588, - 585, - 586 - ] + "children": [587, 584, 588, 585, 586] } ], "sources": [ @@ -17179,15 +16601,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 488, - 490, - 489, - 487, - 491, - 492, - 493 - ] + "children": [488, 490, 489, 487, 491, 492, 493] } ], "sources": [ @@ -17369,17 +16783,12 @@ { "title": "Properties", "kind": 1024, - "children": [ - 550 - ] + "children": [550] }, { "title": "Methods", "kind": 2048, - "children": [ - 551, - 555 - ] + "children": [551, 555] } ], "sources": [ @@ -17464,9 +16873,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 509 - ] + "children": [509] } ], "indexSignature": { @@ -17886,26 +17293,8 @@ "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 + 522, 507, 516, 517, 526, 525, 523, 519, 527, 506, 532, 521, 529, 520, 524, 528, 518, + 530, 531, 512 ] } ], @@ -18044,13 +17433,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 538, - 534, - 537, - 536, - 535 - ] + "children": [538, 534, 537, 536, 535] } ], "sources": [ @@ -18202,14 +17585,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 564, - 569, - 566, - 565, - 568, - 567 - ] + "children": [564, 569, 566, 565, 568, 567] } ], "sources": [ @@ -18389,15 +17765,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 502, - 495, - 497, - 503, - 501, - 504, - 496 - ] + "children": [502, 495, 497, 503, 501, 504, 496] } ], "sources": [ @@ -18495,12 +17863,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 577, - 578, - 579, - 580 - ] + "children": [577, 578, 579, 580] } ], "sources": [ @@ -18600,12 +17963,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 572, - 573, - 574, - 575 - ] + "children": [572, 573, 574, 575] } ], "sources": [ @@ -18893,40 +18251,17 @@ { "title": "Classes", "kind": 128, - "children": [ - 1, - 263 - ] + "children": [1, 263] }, { "title": "Interfaces", "kind": 256, - "children": [ - 539, - 483, - 557, - 583, - 486, - 549, - 505, - 533, - 563, - 494, - 576, - 571 - ] + "children": [539, 483, 557, 583, 486, 549, 505, 533, 563, 494, 576, 571] }, { "title": "Type Aliases", "kind": 4194304, - "children": [ - 482, - 582, - 581, - 481, - 589, - 570 - ] + "children": [482, 582, 581, 481, 589, 570] } ], "sources": [ @@ -19184,12 +18519,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 522, - 517, - 521, - 523 - ] + "children": [522, 517, 521, 523] } ], "sources": [ @@ -19680,10 +19010,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 539, - 538 - ] + "children": [539, 538] } ], "sources": [ @@ -19728,29 +19055,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 512 - ] + "children": [512] }, { "title": "Properties", "kind": 1024, - "children": [ - 510, - 505, - 509, - 511, - 504 - ] + "children": [510, 505, 509, 511, 504] }, { "title": "Methods", "kind": 2048, - "children": [ - 524, - 527, - 531 - ] + "children": [524, 527, 531] } ], "sources": [ @@ -19766,9 +19081,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 503 - ] + "children": [503] } ], "sources": [ @@ -20590,32 +19903,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 41 - ] + "children": [41] }, { "title": "Properties", "kind": 1024, - "children": [ - 40, - 36, - 39, - 31, - 29, - 35, - 37, - 38, - 30 - ] + "children": [40, 36, 39, 31, 29, 35, 37, 38, 30] }, { "title": "Methods", "kind": 2048, - "children": [ - 47, - 44 - ] + "children": [47, 44] } ], "sources": [ @@ -21830,13 +21128,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 326, - 329, - 328, - 327, - 330 - ] + "children": [326, 329, 328, 327, 330] } ], "sources": [ @@ -22305,9 +21597,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 257 - ] + "children": [257] } ], "sources": [ @@ -22974,9 +22264,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 303 - ] + "children": [303] } ], "sources": [ @@ -23764,9 +23052,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 162 - ] + "children": [162] } ], "sources": [ @@ -23941,11 +23227,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 295, - 297, - 296 - ] + "children": [295, 297, 296] } ], "sources": [ @@ -24199,9 +23481,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 271 - ] + "children": [271] } ], "sources": [ @@ -24350,9 +23630,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 264 - ] + "children": [264] } ], "sources": [ @@ -24491,9 +23769,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 310 - ] + "children": [310] } ], "sources": [ @@ -25167,10 +24443,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 249, - 250 - ] + "children": [249, 250] } ], "sources": [ @@ -25694,9 +24967,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 278 - ] + "children": [278] } ], "sources": [ @@ -25730,30 +25001,13 @@ { "title": "Constructors", "kind": 512, - "children": [ - 343 - ] + "children": [343] }, { "title": "Properties", "kind": 1024, "children": [ - 237, - 342, - 338, - 212, - 207, - 341, - 333, - 331, - 227, - 232, - 242, - 337, - 339, - 340, - 217, - 222, + 237, 342, 338, 212, 207, 341, 333, 331, 227, 232, 242, 337, 339, 340, 217, 222, 332 ] }, @@ -25761,45 +25015,9 @@ "title": "Methods", "kind": 2048, "children": [ - 311, - 208, - 203, - 318, - 163, - 322, - 279, - 251, - 320, - 171, - 175, - 191, - 199, - 195, - 187, - 298, - 179, - 183, - 284, - 316, - 167, - 152, - 157, - 290, - 238, - 265, - 258, - 304, - 233, - 218, - 223, - 213, - 228, - 287, - 314, - 243, - 349, - 346, - 272 + 311, 208, 203, 318, 163, 322, 279, 251, 320, 171, 175, 191, 199, 195, 187, 298, + 179, 183, 284, 316, 167, 152, 157, 290, 238, 265, 258, 304, 233, 218, 223, 213, + 228, 287, 314, 243, 349, 346, 272 ] } ], @@ -26046,16 +25264,12 @@ { "title": "Classes", "kind": 128, - "children": [ - 150 - ] + "children": [150] }, { "title": "Type aliases", "kind": 4194304, - "children": [ - 361 - ] + "children": [361] } ], "sources": [ @@ -26302,12 +25516,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 375, - 370, - 374, - 376 - ] + "children": [375, 370, 374, 376] } ], "sources": [ @@ -26804,10 +26013,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 420, - 419 - ] + "children": [420, 419] } ], "sources": [ @@ -27004,10 +26210,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 390, - 389 - ] + "children": [390, 389] } ] } @@ -27246,12 +26449,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 398, - 396, - 397, - 395 - ] + "children": [398, 396, 397, 395] } ] } @@ -27419,10 +26617,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 383, - 382 - ] + "children": [383, 382] } ], "sources": [ @@ -27975,10 +27170,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 414, - 413 - ] + "children": [414, 413] } ], "sources": [ @@ -28230,12 +27422,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 406, - 407, - 404, - 405 - ] + "children": [406, 407, 404, 405] } ], "sources": [ @@ -28276,37 +27463,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 365 - ] + "children": [365] }, { "title": "Properties", "kind": 1024, - "children": [ - 432, - 428, - 431, - 423, - 421, - 427, - 429, - 430, - 422 - ] + "children": [432, 428, 431, 423, 421, 427, 429, 430, 422] }, { "title": "Methods", "kind": 2048, - "children": [ - 415, - 384, - 377, - 436, - 433, - 408, - 399 - ] + "children": [415, 384, 377, 436, 433, 408, 399] } ], "sources": [ @@ -28354,9 +27521,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 363 - ] + "children": [363] } ], "sources": [ @@ -28603,12 +27768,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 461, - 456, - 460, - 462 - ] + "children": [461, 456, 460, 462] } ], "sources": [ @@ -29113,10 +28273,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 469, - 468 - ] + "children": [469, 468] } ], "sources": [ @@ -29532,33 +28689,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 451 - ] + "children": [451] }, { "title": "Properties", "kind": 1024, - "children": [ - 481, - 477, - 480, - 472, - 470, - 476, - 478, - 479, - 471 - ] + "children": [481, 477, 480, 472, 470, 476, 478, 479, 471] }, { "title": "Methods", "kind": 2048, - "children": [ - 463, - 485, - 482 - ] + "children": [463, 485, 482] } ], "sources": [ @@ -29606,9 +28747,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 449 - ] + "children": [449] } ], "sources": [ @@ -30416,32 +29555,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 41 - ] + "children": [41] }, { "title": "Properties", "kind": 1024, - "children": [ - 40, - 36, - 39, - 31, - 29, - 35, - 37, - 38, - 30 - ] + "children": [40, 36, 39, 31, 29, 35, 37, 38, 30] }, { "title": "Methods", "kind": 2048, - "children": [ - 47, - 44 - ] + "children": [47, 44] } ], "sources": [ @@ -31115,13 +30239,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 114, - 117, - 116, - 115, - 118 - ] + "children": [114, 117, 116, 115, 118] } ], "sources": [ @@ -31324,9 +30442,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 91 - ] + "children": [91] } ], "sources": [ @@ -31548,11 +30664,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 83, - 85, - 84 - ] + "children": [83, 85, 84] } ], "sources": [ @@ -31691,9 +30803,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 98 - ] + "children": [98] } ], "sources": [ @@ -32202,42 +31312,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 131 - ] + "children": [131] }, { "title": "Properties", "kind": 1024, - "children": [ - 130, - 126, - 129, - 121, - 119, - 125, - 127, - 128, - 120 - ] + "children": [130, 126, 129, 121, 119, 125, 127, 128, 120] }, { "title": "Methods", "kind": 2048, - "children": [ - 99, - 106, - 110, - 108, - 86, - 104, - 78, - 92, - 75, - 102, - 137, - 134 - ] + "children": [99, 106, 110, 108, 86, 104, 78, 92, 75, 102, 137, 134] } ], "sources": [ @@ -32292,9 +31377,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 73 - ] + "children": [73] } ], "sources": [ @@ -32351,9 +31434,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 501 - ] + "children": [501] } ], "sources": [ @@ -32373,9 +31454,7 @@ { "title": "Object literals", "kind": 2097152, - "children": [ - 500 - ] + "children": [500] } ], "sources": [ @@ -32478,32 +31557,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 41 - ] + "children": [41] }, { "title": "Properties", "kind": 1024, - "children": [ - 40, - 36, - 39, - 31, - 29, - 35, - 37, - 38, - 30 - ] + "children": [40, 36, 39, 31, 29, 35, 37, 38, 30] }, { "title": "Methods", "kind": 2048, - "children": [ - 47, - 44 - ] + "children": [47, 44] } ], "sources": [ @@ -33220,32 +32284,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 41 - ] + "children": [41] }, { "title": "Properties", "kind": 1024, - "children": [ - 40, - 36, - 39, - 31, - 29, - 35, - 37, - 38, - 30 - ] + "children": [40, 36, 39, 31, 29, 35, 37, 38, 30] }, { "title": "Methods", "kind": 2048, - "children": [ - 47, - 44 - ] + "children": [47, 44] } ], "sources": [ @@ -33344,10 +32393,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 3, - 4 - ] + "children": [3, 4] } ], "sources": [ @@ -33506,14 +32552,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 16, - 17, - 15, - 14, - 18, - 19 - ] + "children": [16, 17, 15, 14, 18, 19] } ], "sources": [ @@ -33685,14 +32724,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 9, - 10, - 8, - 7, - 11, - 12 - ] + "children": [9, 10, 8, 7, 11, 12] } ], "sources": [ @@ -33831,13 +32863,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 24, - 23, - 22, - 25, - 26 - ] + "children": [24, 23, 22, 25, 26] } ], "sources": [ @@ -33994,12 +33020,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 65, - 63, - 64, - 62 - ] + "children": [65, 63, 64, 62] } ], "sources": [ @@ -34160,30 +33181,17 @@ { "title": "Classes", "kind": 128, - "children": [ - 27 - ] + "children": [27] }, { "title": "Interfaces", "kind": 256, - "children": [ - 2, - 13, - 5, - 20 - ] + "children": [2, 13, 5, 20] }, { "title": "Type aliases", "kind": 4194304, - "children": [ - 59, - 60, - 70, - 66, - 68 - ] + "children": [59, 60, 70, 66, 68] } ], "sources": [ @@ -34231,9 +33239,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 498 - ] + "children": [498] } ], "sources": [ @@ -34249,17 +33255,7 @@ { "title": "Modules", "kind": 1, - "children": [ - 502, - 540, - 149, - 362, - 448, - 72, - 499, - 1, - 497 - ] + "children": [502, 540, 149, 362, 448, 72, 499, 1, 497] } ] }, @@ -34704,18 +33700,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 348, - 347, - 350, - 344, - 346, - 345, - 354, - 349, - 343, - 342 - ] + "children": [348, 347, 350, 344, 346, 345, 354, 349, 343, 342] } ], "sources": [ @@ -35767,9 +34752,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 366 - ] + "children": [366] } ], "sources": [ @@ -36012,10 +34995,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 272, - 271 - ] + "children": [272, 271] } ], "sources": [ @@ -36388,9 +35368,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 308 - ] + "children": [308] } ], "sources": [ @@ -36725,12 +35703,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 361, - 362, - 363, - 360 - ] + "children": [361, 362, 363, 360] } ], "sources": [ @@ -36920,72 +35893,30 @@ { "title": "Constructors", "kind": 512, - "children": [ - 260 - ] + "children": [260] }, { "title": "Properties", "kind": 1024, "children": [ - 229, - 230, - 252, - 250, - 249, - 231, - 232, - 242, - 244, - 248, - 243, - 236, - 245, - 251, - 247, - 246, - 253, - 254, - 240, - 241 + 229, 230, 252, 250, 249, 231, 232, 242, 244, + 248, 243, 236, 245, 251, 247, 246, 253, 254, + 240, 241 ] }, { "title": "Methods", "kind": 2048, "children": [ - 329, - 336, - 321, - 324, - 319, - 338, - 327, - 297, - 264, - 290, - 266, - 309, - 292, - 316, - 273, - 311, - 281, - 304, - 284, - 287, - 278, - 301, - 294, - 313 + 329, 336, 321, 324, 319, 338, 327, 297, 264, + 290, 266, 309, 292, 316, 273, 311, 281, 304, + 284, 287, 278, 301, 294, 313 ] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 255 - ] + "children": [255] } ], "sources": [ @@ -37972,14 +36903,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 21, - 16, - 17, - 18, - 20, - 19 - ] + "children": [21, 16, 17, 18, 20, 19] } ], "sources": [ @@ -38438,51 +37362,19 @@ { "title": "Constructors", "kind": 512, - "children": [ - 148 - ] + "children": [148] }, { "title": "Properties", "kind": 1024, - "children": [ - 141, - 145, - 144, - 150, - 147, - 146, - 154, - 143, - 142, - 149 - ] + "children": [141, 145, 144, 150, 147, 146, 154, 143, 142, 149] }, { "title": "Methods", "kind": 2048, "children": [ - 180, - 217, - 219, - 221, - 223, - 225, - 201, - 204, - 177, - 173, - 167, - 170, - 196, - 182, - 206, - 162, - 214, - 164, - 209, - 193, - 187 + 180, 217, 219, 221, 223, 225, 201, 204, 177, 173, 167, 170, 196, + 182, 206, 162, 214, 164, 209, 193, 187 ] } ], @@ -38682,12 +37574,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 257, - 258, - 259, - 256 - ] + "children": [257, 258, 259, 256] } ], "sources": [ @@ -38707,72 +37594,28 @@ { "title": "Constructors", "kind": 512, - "children": [ - 260 - ] + "children": [260] }, { "title": "Properties", "kind": 1024, "children": [ - 229, - 230, - 252, - 250, - 249, - 231, - 232, - 242, - 244, - 248, - 243, - 236, - 245, - 251, - 247, - 246, - 253, - 254, - 240, - 241 + 229, 230, 252, 250, 249, 231, 232, 242, 244, 248, 243, 236, 245, 251, 247, 246, + 253, 254, 240, 241 ] }, { "title": "Methods", "kind": 2048, "children": [ - 329, - 336, - 321, - 324, - 319, - 338, - 327, - 297, - 264, - 290, - 266, - 309, - 292, - 316, - 273, - 311, - 281, - 304, - 284, - 287, - 278, - 301, - 294, - 313 + 329, 336, 321, 324, 319, 338, 327, 297, 264, 290, 266, 309, 292, 316, 273, 311, + 281, 304, 284, 287, 278, 301, 294, 313 ] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 255 - ] + "children": [255] } ], "sources": [ @@ -38869,9 +37712,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 366 - ] + "children": [366] } ], "sources": [ @@ -38983,12 +37824,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 361, - 362, - 363, - 360 - ] + "children": [361, 362, 363, 360] } ], "sources": [ @@ -39363,18 +38199,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 348, - 347, - 350, - 344, - 346, - 345, - 354, - 349, - 343, - 342 - ] + "children": [348, 347, 350, 344, 346, 345, 354, 349, 343, 342] } ], "sources": [ @@ -39421,25 +38246,17 @@ { "title": "Classes", "kind": 128, - "children": [ - 228 - ] + "children": [228] }, { "title": "Type aliases", "kind": 4194304, - "children": [ - 364, - 358, - 340 - ] + "children": [364, 358, 340] }, { "title": "Functions", "kind": 64, - "children": [ - 369 - ] + "children": [369] } ], "sources": [ @@ -39996,15 +38813,7 @@ "title": "Variables", "kind": 32, "children": [ - 348, - 347, - 350, - 344, - 346, - 345, - 354, - 349, - 343, + 348, 347, 350, 344, 346, 345, 354, 349, 343, 342 ] } @@ -41058,9 +39867,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 366 - ] + "children": [366] } ], "sources": [ @@ -41303,10 +40110,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 272, - 271 - ] + "children": [272, 271] } ], "sources": [ @@ -41679,9 +40483,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 308 - ] + "children": [308] } ], "sources": [ @@ -42016,12 +40818,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 361, - 362, - 363, - 360 - ] + "children": [361, 362, 363, 360] } ], "sources": [ @@ -42100,51 +40897,22 @@ { "title": "Constructors", "kind": 512, - "children": [ - 148 - ] + "children": [148] }, { "title": "Properties", "kind": 1024, "children": [ - 141, - 145, - 144, - 150, - 147, - 146, - 154, - 143, - 142, - 149 + 141, 145, 144, 150, 147, 146, 154, 143, 142, 149 ] }, { "title": "Methods", "kind": 2048, "children": [ - 180, - 217, - 219, - 221, - 223, - 225, - 201, - 204, - 177, - 173, - 167, - 170, - 196, - 182, - 206, - 162, - 214, - 164, - 209, - 193, - 187 + 180, 217, 219, 221, 223, 225, 201, 204, 177, + 173, 167, 170, 196, 182, 206, 162, 214, 164, + 209, 193, 187 ] } ], @@ -42344,12 +41112,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 257, - 258, - 259, - 256 - ] + "children": [257, 258, 259, 256] } ], "sources": [ @@ -42369,72 +41132,28 @@ { "title": "Constructors", "kind": 512, - "children": [ - 260 - ] + "children": [260] }, { "title": "Properties", "kind": 1024, "children": [ - 229, - 230, - 252, - 250, - 249, - 231, - 232, - 242, - 244, - 248, - 243, - 236, - 245, - 251, - 247, - 246, - 253, - 254, - 240, - 241 + 229, 230, 252, 250, 249, 231, 232, 242, 244, 248, 243, 236, 245, + 251, 247, 246, 253, 254, 240, 241 ] }, { "title": "Methods", "kind": 2048, "children": [ - 329, - 336, - 321, - 324, - 319, - 338, - 327, - 297, - 264, - 290, - 266, - 309, - 292, - 316, - 273, - 311, - 281, - 304, - 284, - 287, - 278, - 301, - 294, - 313 + 329, 336, 321, 324, 319, 338, 327, 297, 264, 290, 266, 309, 292, + 316, 273, 311, 281, 304, 284, 287, 278, 301, 294, 313 ] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 255 - ] + "children": [255] } ], "sources": [ @@ -43421,14 +42140,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 21, - 16, - 17, - 18, - 20, - 19 - ] + "children": [21, 16, 17, 18, 20, 19] } ], "sources": [ @@ -43887,51 +42599,19 @@ { "title": "Constructors", "kind": 512, - "children": [ - 148 - ] + "children": [148] }, { "title": "Properties", "kind": 1024, - "children": [ - 141, - 145, - 144, - 150, - 147, - 146, - 154, - 143, - 142, - 149 - ] + "children": [141, 145, 144, 150, 147, 146, 154, 143, 142, 149] }, { "title": "Methods", "kind": 2048, "children": [ - 180, - 217, - 219, - 221, - 223, - 225, - 201, - 204, - 177, - 173, - 167, - 170, - 196, - 182, - 206, - 162, - 214, - 164, - 209, - 193, - 187 + 180, 217, 219, 221, 223, 225, 201, 204, 177, 173, 167, 170, 196, 182, 206, 162, + 214, 164, 209, 193, 187 ] } ], @@ -43948,9 +42628,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 140 - ] + "children": [140] } ], "sources": [ @@ -44104,14 +42782,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 21, - 16, - 17, - 18, - 20, - 19 - ] + "children": [21, 16, 17, 18, 20, 19] } ], "sources": [ @@ -44221,13 +42892,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 10, - 11, - 12, - 13, - 14 - ] + "children": [10, 11, 12, 13, 14] } ], "sources": [ @@ -44320,12 +42985,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 28, - 27, - 25, - 26 - ] + "children": [28, 27, 25, 26] } ], "sources": [ @@ -44418,12 +43078,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 8, - 7, - 5, - 6 - ] + "children": [8, 7, 5, 6] } ], "sources": [ @@ -44465,9 +43120,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 23 - ] + "children": [23] } ], "sources": [ @@ -44580,9 +43233,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 30 - ] + "children": [30] } ], "sources": [ @@ -44602,29 +43253,17 @@ { "title": "Enumerations", "kind": 4, - "children": [ - 15, - 9, - 24, - 4, - 22 - ] + "children": [15, 9, 24, 4, 22] }, { "title": "Variables", "kind": 32, - "children": [ - 32, - 31, - 33 - ] + "children": [32, 31, 33] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 29 - ] + "children": [29] } ], "sources": [ @@ -45229,16 +43868,8 @@ "title": "Variables", "kind": 32, "children": [ - 348, - 347, - 350, - 344, - 346, - 345, - 354, - 349, - 343, - 342 + 348, 347, 350, 344, 346, + 345, 354, 349, 343, 342 ] } ], @@ -46291,9 +44922,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 366 - ] + "children": [366] } ], "sources": [ @@ -46536,10 +45165,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 272, - 271 - ] + "children": [272, 271] } ], "sources": [ @@ -46912,9 +45538,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 308 - ] + "children": [308] } ], "sources": [ @@ -47250,10 +45874,7 @@ "title": "Variables", "kind": 32, "children": [ - 361, - 362, - 363, - 360 + 361, 362, 363, 360 ] } ], @@ -47509,12 +46130,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 257, - 258, - 259, - 256 - ] + "children": [257, 258, 259, 256] } ], "sources": [ @@ -47534,72 +46150,30 @@ { "title": "Constructors", "kind": 512, - "children": [ - 260 - ] + "children": [260] }, { "title": "Properties", "kind": 1024, "children": [ - 229, - 230, - 252, - 250, - 249, - 231, - 232, - 242, - 244, - 248, - 243, - 236, - 245, - 251, - 247, - 246, - 253, - 254, - 240, - 241 + 229, 230, 252, 250, 249, 231, 232, 242, 244, + 248, 243, 236, 245, 251, 247, 246, 253, 254, + 240, 241 ] }, { "title": "Methods", "kind": 2048, "children": [ - 329, - 336, - 321, - 324, - 319, - 338, - 327, - 297, - 264, - 290, - 266, - 309, - 292, - 316, - 273, - 311, - 281, - 304, - 284, - 287, - 278, - 301, - 294, - 313 + 329, 336, 321, 324, 319, 338, 327, 297, 264, + 290, 266, 309, 292, 316, 273, 311, 281, 304, + 284, 287, 278, 301, 294, 313 ] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 255 - ] + "children": [255] } ], "sources": [ @@ -48586,14 +47160,7 @@ { "title": "Enumeration members", "kind": 16, - "children": [ - 21, - 16, - 17, - 18, - 20, - 19 - ] + "children": [21, 16, 17, 18, 20, 19] } ], "sources": [ @@ -49052,51 +47619,19 @@ { "title": "Constructors", "kind": 512, - "children": [ - 148 - ] + "children": [148] }, { "title": "Properties", "kind": 1024, - "children": [ - 141, - 145, - 144, - 150, - 147, - 146, - 154, - 143, - 142, - 149 - ] + "children": [141, 145, 144, 150, 147, 146, 154, 143, 142, 149] }, { "title": "Methods", "kind": 2048, "children": [ - 180, - 217, - 219, - 221, - 223, - 225, - 201, - 204, - 177, - 173, - 167, - 170, - 196, - 182, - 206, - 162, - 214, - 164, - 209, - 193, - 187 + 180, 217, 219, 221, 223, 225, 201, 204, 177, 173, 167, 170, 196, + 182, 206, 162, 214, 164, 209, 193, 187 ] } ], @@ -49415,10 +47950,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 85, - 84 - ] + "children": [85, 84] } ], "sources": [ @@ -49507,10 +48039,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 81, - 80 - ] + "children": [81, 80] } ], "sources": [ @@ -49865,10 +48394,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 135, - 134 - ] + "children": [135, 134] } ], "sources": [ @@ -50249,42 +48775,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 87 - ] + "children": [87] }, { "title": "Properties", "kind": 1024, - "children": [ - 88, - 89, - 90, - 82, - 78, - 77, - 86, - 75, - 94, - 76 - ] + "children": [88, 89, 90, 82, 78, 77, 86, 75, 94, 76] }, { "title": "Methods", "kind": 2048, - "children": [ - 126, - 128, - 136, - 130, - 124, - 114, - 103, - 106, - 118, - 120, - 108 - ] + "children": [126, 128, 136, 130, 124, 114, 103, 106, 118, 120, 108] } ], "sources": [ @@ -50300,9 +48801,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 74 - ] + "children": [74] } ], "sources": [ @@ -50482,12 +48981,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 61, - 62, - 59, - 60 - ] + "children": [61, 62, 59, 60] } ] } @@ -50657,12 +49151,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 71, - 72, - 69, - 70 - ] + "children": [71, 72, 69, 70] } ], "sources": [ @@ -50757,18 +49246,12 @@ { "title": "Properties", "kind": 1024, - "children": [ - 50 - ] + "children": [50] }, { "title": "Methods", "kind": 2048, - "children": [ - 55, - 63, - 51 - ] + "children": [55, 63, 51] } ], "sources": [ @@ -50784,9 +49267,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 49 - ] + "children": [49] } ], "sources": [ @@ -51047,27 +49528,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 38 - ] + "children": [38] }, { "title": "Properties", "kind": 1024, - "children": [ - 39, - 36, - 40, - 37 - ] + "children": [39, 36, 40, 37] }, { "title": "Methods", "kind": 2048, - "children": [ - 44, - 46 - ] + "children": [44, 46] } ], "sources": [ @@ -51083,9 +49554,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 35 - ] + "children": [35] } ], "sources": [ @@ -51532,30 +50001,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 + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396 ] } ], @@ -51719,12 +50166,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 401, - 399, - 400, - 402 - ] + "children": [401, 399, 400, 402] } ], "sources": [ @@ -52125,12 +50567,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 401, - 399, - 400, - 402 - ] + "children": [401, 399, 400, 402] } ], "sources": [ @@ -52270,9 +50707,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 415 - ] + "children": [415] } ], "sources": [ @@ -52494,12 +50929,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 401, - 399, - 400, - 402 - ] + "children": [401, 399, 400, 402] } ], "sources": [ @@ -53176,34 +51606,17 @@ { "title": "Enumerations", "kind": 4, - "children": [ - 372 - ] + "children": [372] }, { "title": "Type aliases", "kind": 4194304, - "children": [ - 403, - 397, - 405, - 404 - ] + "children": [403, 397, 405, 404] }, { "title": "Functions", "kind": 64, - "children": [ - 422, - 409, - 416, - 426, - 438, - 429, - 435, - 432, - 442 - ] + "children": [422, 409, 416, 426, 438, 429, 435, 432, 442] } ], "sources": [ @@ -53251,9 +51664,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 2 - ] + "children": [2] } ], "sources": [ @@ -53269,17 +51680,7 @@ { "title": "Modules", "kind": 1, - "children": [ - 227, - 139, - 445, - 3, - 73, - 48, - 34, - 371, - 1 - ] + "children": [227, 139, 445, 3, 73, 48, 34, 371, 1] } ] }, @@ -53669,9 +52070,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 347 - ] + "children": [347] } ], "sources": [ @@ -53763,10 +52162,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 349, - 350 - ] + "children": [349, 350] } ], "sources": [ @@ -53907,9 +52303,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 376 - ] + "children": [376] } ], "sources": [ @@ -53962,10 +52356,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 374, - 377 - ] + "children": [374, 377] } ], "sources": [ @@ -54106,9 +52497,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 368 - ] + "children": [368] } ], "sources": [ @@ -54161,10 +52550,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 366, - 369 - ] + "children": [366, 369] } ], "sources": [ @@ -54368,10 +52754,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 340, - 341 - ] + "children": [340, 341] } ], "sources": [ @@ -54507,10 +52890,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 334, - 335 - ] + "children": [334, 335] } ], "sources": [ @@ -54626,9 +53006,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 356 - ] + "children": [356] } ], "sources": [ @@ -54710,9 +53088,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 360 - ] + "children": [360] } ], "sources": [ @@ -54765,10 +53141,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 358, - 361 - ] + "children": [358, 361] } ], "sources": [ @@ -54808,31 +53181,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 314 - ] + "children": [314] }, { "title": "Properties", "kind": 1024, - "children": [ - 330, - 326, - 325 - ] + "children": [330, 326, 325] }, { "title": "Methods", "kind": 2048, - "children": [ - 342, - 370, - 362, - 322, - 336, - 331, - 351 - ] + "children": [342, 370, 362, 322, 336, 331, 351] } ], "sources": [ @@ -54855,9 +53214,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 313 - ] + "children": [313] } ], "sources": [ @@ -54963,16 +53320,7 @@ { "title": "References", "kind": 16777216, - "children": [ - 381, - 382, - 384, - 386, - 385, - 383, - 379, - 380 - ] + "children": [381, 382, 384, 386, 385, 383, 379, 380] } ], "sources": [ @@ -55337,9 +53685,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 138 - ] + "children": [138] } ], "sources": [ @@ -55431,10 +53777,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 140, - 141 - ] + "children": [140, 141] } ], "sources": [ @@ -55565,9 +53908,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 167 - ] + "children": [167] } ], "sources": [ @@ -55620,10 +53961,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 165, - 168 - ] + "children": [165, 168] } ], "sources": [ @@ -55754,9 +54092,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 159 - ] + "children": [159] } ], "sources": [ @@ -55809,10 +54145,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 157, - 160 - ] + "children": [157, 160] } ], "sources": [ @@ -55953,10 +54286,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 131, - 132 - ] + "children": [131, 132] } ], "sources": [ @@ -56082,10 +54412,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 125, - 126 - ] + "children": [125, 126] } ], "sources": [ @@ -56191,9 +54518,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 147 - ] + "children": [147] } ], "sources": [ @@ -56275,9 +54600,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 151 - ] + "children": [151] } ], "sources": [ @@ -56330,10 +54653,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 149, - 152 - ] + "children": [149, 152] } ], "sources": [ @@ -56363,30 +54683,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 114 - ] + "children": [114] }, { "title": "Properties", "kind": 1024, - "children": [ - 113, - 109, - 108 - ] + "children": [113, 109, 108] }, { "title": "Methods", "kind": 2048, - "children": [ - 133, - 161, - 153, - 127, - 122, - 142 - ] + "children": [133, 161, 153, 127, 122, 142] } ], "sources": [ @@ -56409,9 +54716,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 107 - ] + "children": [107] } ], "sources": [ @@ -56962,9 +55267,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 234 - ] + "children": [234] } ], "sources": [ @@ -57017,10 +55320,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 232, - 235 - ] + "children": [232, 235] } ], "sources": [ @@ -57167,9 +55467,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 243 - ] + "children": [243] } ], "sources": [ @@ -57251,11 +55549,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 241, - 244, - 245 - ] + "children": [241, 244, 245] } ], "sources": [ @@ -57465,11 +55759,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 253, - 254, - 255 - ] + "children": [253, 254, 255] } ], "sources": [ @@ -57523,10 +55813,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 251, - 256 - ] + "children": [251, 256] } ], "sources": [ @@ -57666,10 +55953,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 261, - 262 - ] + "children": [261, 262] } ], "sources": [ @@ -57797,9 +56081,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 269 - ] + "children": [269] } ], "sources": [ @@ -57881,11 +56163,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 267, - 270, - 271 - ] + "children": [267, 270, 271] } ], "sources": [ @@ -58108,12 +56386,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 100, - 101, - 103, - 102 - ] + "children": [100, 101, 103, 102] } ], "sources": [ @@ -58177,9 +56450,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -58274,10 +56545,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 284, - 285 - ] + "children": [284, 285] } ], "sources": [ @@ -58424,9 +56692,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 225 - ] + "children": [225] } ], "sources": [ @@ -58479,10 +56745,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 223, - 226 - ] + "children": [223, 226] } ], "sources": [ @@ -58629,10 +56892,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 276, - 277 - ] + "children": [276, 277] } ], "sources": [ @@ -58881,11 +57141,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 96, - 97, - 98 - ] + "children": [96, 97, 98] } ], "sources": [ @@ -58967,9 +57223,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 216 - ] + "children": [216] } ], "sources": [ @@ -59022,10 +57276,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 214, - 217 - ] + "children": [214, 217] } ], "sources": [ @@ -59274,11 +57525,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 96, - 97, - 98 - ] + "children": [96, 97, 98] } ], "sources": [ @@ -59360,9 +57607,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 206 - ] + "children": [206] } ], "sources": [ @@ -59415,10 +57660,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 204, - 207 - ] + "children": [204, 207] } ], "sources": [ @@ -59693,11 +57935,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 96, - 97, - 98 - ] + "children": [96, 97, 98] } ], "sources": [ @@ -59779,9 +58017,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 196 - ] + "children": [196] } ], "sources": [ @@ -59834,10 +58070,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 194, - 197 - ] + "children": [194, 197] } ], "sources": [ @@ -59867,38 +58100,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 178 - ] + "children": [178] }, { "title": "Properties", "kind": 1024, - "children": [ - 176, - 177, - 172, - 171 - ] + "children": [176, 177, 172, 171] }, { "title": "Methods", "kind": 2048, - "children": [ - 286, - 289, - 227, - 236, - 246, - 257, - 263, - 278, - 218, - 272, - 208, - 198, - 187 - ] + "children": [286, 289, 227, 236, 246, 257, 263, 278, 218, 272, 208, 198, 187] } ], "sources": [ @@ -59980,11 +58192,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 299, - 300, - 301 - ] + "children": [299, 300, 301] } ], "sources": [ @@ -60096,10 +58304,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 296, - 297 - ] + "children": [296, 297] } ], "sources": [ @@ -60119,17 +58324,12 @@ { "title": "Variables", "kind": 32, - "children": [ - 293, - 294 - ] + "children": [293, 294] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 295 - ] + "children": [295] } ], "sources": [ @@ -60149,17 +58349,12 @@ { "title": "Classes", "kind": 128, - "children": [ - 170 - ] + "children": [170] }, { "title": "Object literals", "kind": 2097152, - "children": [ - 298, - 292 - ] + "children": [298, 292] } ], "sources": [ @@ -60216,9 +58411,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 5 - ] + "children": [5] } ], "sources": [ @@ -60238,9 +58431,7 @@ { "title": "Object literals", "kind": 2097152, - "children": [ - 4 - ] + "children": [4] } ], "sources": [ @@ -60377,10 +58568,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -60426,9 +58614,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -60734,10 +58920,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -60797,9 +58980,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -61118,10 +59299,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -61181,9 +59359,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -61436,10 +59612,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -61500,9 +59673,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -61799,10 +59970,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -61863,9 +60031,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -62109,10 +60275,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -62173,9 +60336,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -62419,10 +60580,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 12 - ] + "children": [8, 12] } ], "sources": [ @@ -62483,9 +60641,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 14 - ] + "children": [14] } ], "sources": [ @@ -62524,32 +60680,17 @@ { "title": "Interfaces", "kind": 256, - "children": [ - 7, - 13 - ] + "children": [7, 13] }, { "title": "Type aliases", "kind": 4194304, - "children": [ - 15, - 16 - ] + "children": [15, 16] }, { "title": "Functions", "kind": 64, - "children": [ - 17, - 24, - 33, - 41, - 20, - 47, - 54, - 61 - ] + "children": [17, 24, 33, 41, 20, 47, 54, 61] } ], "sources": [ @@ -62667,16 +60808,12 @@ { "title": "Type aliases", "kind": 4194304, - "children": [ - 69 - ] + "children": [69] }, { "title": "Functions", "kind": 64, - "children": [ - 70 - ] + "children": [70] } ], "sources": [ @@ -62792,17 +60929,7 @@ { "title": "References", "kind": 16777216, - "children": [ - 305, - 311, - 306, - 308, - 310, - 309, - 307, - 303, - 304 - ] + "children": [305, 311, 306, 308, 310, 309, 307, 303, 304] } ], "sources": [ @@ -62957,14 +61084,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 78, - 75, - 76, - 77, - 80, - 79 - ] + "children": [78, 75, 76, 77, 80, 79] } ], "sources": [ @@ -63185,17 +61305,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 83, - 91, - 87, - 85, - 88, - 89, - 82, - 84, - 86 - ] + "children": [83, 91, 87, 85, 88, 89, 82, 84, 86] } ], "sources": [ @@ -63314,11 +61424,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 96, - 97, - 98 - ] + "children": [96, 97, 98] } ], "sources": [ @@ -63363,9 +61469,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 105 - ] + "children": [105] } ], "sources": [ @@ -63514,12 +61618,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 100, - 101, - 103, - 102 - ] + "children": [100, 101, 103, 102] } ], "sources": [ @@ -63604,10 +61703,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 93, - 94 - ] + "children": [93, 94] } ], "sources": [ @@ -63623,14 +61719,7 @@ { "title": "Interfaces", "kind": 256, - "children": [ - 74, - 81, - 95, - 104, - 99, - 92 - ] + "children": [74, 81, 95, 104, 99, 92] } ], "sources": [ @@ -63678,9 +61767,7 @@ { "title": "Variables", "kind": 32, - "children": [ - 2 - ] + "children": [2] } ], "sources": [ @@ -63696,18 +61783,7 @@ { "title": "Modules", "kind": 1, - "children": [ - 312, - 378, - 106, - 169, - 3, - 6, - 68, - 302, - 73, - 1 - ] + "children": [312, 378, 106, 169, 3, 6, 68, 302, 73, 1] } ] }, @@ -63889,10 +61965,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 8, - 7 - ] + "children": [8, 7] } ] } @@ -64164,10 +62237,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 29, - 30 - ] + "children": [29, 30] } ] } @@ -64224,10 +62294,7 @@ { "title": "Properties", "kind": 1024, - "children": [ - 32, - 33 - ] + "children": [32, 33] } ] } @@ -64296,26 +62363,17 @@ { "title": "Constructors", "kind": 512, - "children": [ - 2 - ] + "children": [2] }, { "title": "Properties", "kind": 1024, - "children": [ - 15, - 14, - 13 - ] + "children": [15, 14, 13] }, { "title": "Methods", "kind": 2048, - "children": [ - 23, - 20 - ] + "children": [23, 20] } ], "sources": [ @@ -64331,9 +62389,7 @@ { "title": "Classes", "kind": 128, - "children": [ - 1 - ] + "children": [1] } ], "sources": [ diff --git a/spec/enrichments/tsdoc_v2/combined.json b/spec/enrichments/tsdoc_v2/combined.json index 13e245020ec..cbd3a512996 100644 --- a/spec/enrichments/tsdoc_v2/combined.json +++ b/spec/enrichments/tsdoc_v2/combined.json @@ -5669,14 +5669,14 @@ "originalName": "", "children": [ { - "id": 502, + "id": 699, "name": "AuthApiError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 503, + "id": 700, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -5690,14 +5690,14 @@ ], "signatures": [ { - "id": 504, + "id": 701, "name": "new AuthApiError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 505, + "id": 702, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -5708,7 +5708,7 @@ } }, { - "id": 506, + "id": 703, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -5721,24 +5721,24 @@ ], "type": { "type": "reference", - "id": 502, + "id": 699, "name": "AuthApiError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 507, + "id": 704, "name": "status", "kind": 1024, "kindString": "Property", @@ -5756,7 +5756,7 @@ } }, { - "id": 508, + "id": 705, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -5770,7 +5770,7 @@ ], "signatures": [ { - "id": 509, + "id": 706, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -5778,14 +5778,14 @@ "type": { "type": "reflection", "declaration": { - "id": 510, + "id": 707, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 512, + "id": 709, "name": "message", "kind": 1024, "kindString": "Property", @@ -5804,7 +5804,7 @@ "defaultValue": "..." }, { - "id": 511, + "id": 708, "name": "name", "kind": 1024, "kindString": "Property", @@ -5823,7 +5823,7 @@ "defaultValue": "..." }, { - "id": 513, + "id": 710, "name": "status", "kind": 1024, "kindString": "Property", @@ -5846,7 +5846,7 @@ { "title": "Properties", "kind": 1024, - "children": [512, 511, 513] + "children": [709, 708, 710] } ] } @@ -5859,17 +5859,17 @@ { "title": "Constructors", "kind": 512, - "children": [503] + "children": [700] }, { "title": "Properties", "kind": 1024, - "children": [507] + "children": [704] }, { "title": "Methods", "kind": 2048, - "children": [508] + "children": [705] } ], "sources": [ @@ -5882,20 +5882,20 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] }, { - "id": 497, + "id": 694, "name": "AuthError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 498, + "id": 695, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -5909,14 +5909,14 @@ ], "signatures": [ { - "id": 499, + "id": 696, "name": "new AuthError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 500, + "id": 697, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -5929,7 +5929,7 @@ ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" }, "overwrites": { @@ -5948,7 +5948,7 @@ { "title": "Constructors", "kind": 512, - "children": [498] + "children": [695] } ], "sources": [ @@ -5969,30 +5969,30 @@ "extendedBy": [ { "type": "reference", - "id": 502, + "id": 699, "name": "AuthApiError" }, { "type": "reference", - "id": 515, + "id": 712, "name": "AuthUnknownError" }, { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 563, + "id": 760, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -6006,14 +6006,14 @@ ], "signatures": [ { - "id": 564, + "id": 761, "name": "new AuthImplicitGrantRedirectError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 565, + "id": 762, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -6024,7 +6024,7 @@ } }, { - "id": 566, + "id": 763, "name": "details", "kind": 32768, "kindString": "Parameter", @@ -6039,14 +6039,14 @@ { "type": "reflection", "declaration": { - "id": 567, + "id": 764, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 569, + "id": 766, "name": "code", "kind": 1024, "kindString": "Property", @@ -6064,7 +6064,7 @@ } }, { - "id": 568, + "id": 765, "name": "error", "kind": 1024, "kindString": "Property", @@ -6086,7 +6086,7 @@ { "title": "Properties", "kind": 1024, - "children": [569, 568] + "children": [766, 765] } ] } @@ -6098,24 +6098,24 @@ ], "type": { "type": "reference", - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 570, + "id": 767, "name": "details", "kind": 1024, "kindString": "Property", @@ -6137,14 +6137,14 @@ { "type": "reflection", "declaration": { - "id": 571, + "id": 768, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 573, + "id": 770, "name": "code", "kind": 1024, "kindString": "Property", @@ -6162,7 +6162,7 @@ } }, { - "id": 572, + "id": 769, "name": "error", "kind": 1024, "kindString": "Property", @@ -6184,7 +6184,7 @@ { "title": "Properties", "kind": 1024, - "children": [573, 572] + "children": [770, 769] } ] } @@ -6194,7 +6194,7 @@ "defaultValue": "null" }, { - "id": 584, + "id": 781, "name": "name", "kind": 1024, "kindString": "Property", @@ -6212,12 +6212,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 585, + "id": 782, "name": "status", "kind": 1024, "kindString": "Property", @@ -6235,12 +6235,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 574, + "id": 771, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -6254,7 +6254,7 @@ ], "signatures": [ { - "id": 575, + "id": 772, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -6262,14 +6262,14 @@ "type": { "type": "reflection", "declaration": { - "id": 576, + "id": 773, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 580, + "id": 777, "name": "details", "kind": 1024, "kindString": "Property", @@ -6291,14 +6291,14 @@ { "type": "reflection", "declaration": { - "id": 581, + "id": 778, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 583, + "id": 780, "name": "code", "kind": 1024, "kindString": "Property", @@ -6316,7 +6316,7 @@ } }, { - "id": 582, + "id": 779, "name": "error", "kind": 1024, "kindString": "Property", @@ -6338,7 +6338,7 @@ { "title": "Properties", "kind": 1024, - "children": [583, 582] + "children": [780, 779] } ] } @@ -6348,7 +6348,7 @@ "defaultValue": "..." }, { - "id": 578, + "id": 775, "name": "message", "kind": 1024, "kindString": "Property", @@ -6367,7 +6367,7 @@ "defaultValue": "..." }, { - "id": 577, + "id": 774, "name": "name", "kind": 1024, "kindString": "Property", @@ -6386,7 +6386,7 @@ "defaultValue": "..." }, { - "id": 579, + "id": 776, "name": "status", "kind": 1024, "kindString": "Property", @@ -6409,21 +6409,21 @@ { "title": "Properties", "kind": 1024, - "children": [580, 578, 577, 579] + "children": [777, 775, 774, 776] } ] } }, "overwrites": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "overwrites": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -6432,17 +6432,17 @@ { "title": "Constructors", "kind": 512, - "children": [563] + "children": [760] }, { "title": "Properties", "kind": 1024, - "children": [570, 584, 585] + "children": [767, 781, 782] }, { "title": "Methods", "kind": 2048, - "children": [574] + "children": [771] } ], "sources": [ @@ -6455,20 +6455,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 550, + "id": 747, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -6482,14 +6482,14 @@ ], "signatures": [ { - "id": 551, + "id": 748, "name": "new AuthInvalidCredentialsError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 552, + "id": 749, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -6502,24 +6502,24 @@ ], "type": { "type": "reference", - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 553, + "id": 750, "name": "name", "kind": 1024, "kindString": "Property", @@ -6537,12 +6537,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 554, + "id": 751, "name": "status", "kind": 1024, "kindString": "Property", @@ -6560,12 +6560,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 555, + "id": 752, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -6579,7 +6579,7 @@ ], "signatures": [ { - "id": 556, + "id": 753, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -6587,14 +6587,14 @@ "type": { "type": "reflection", "declaration": { - "id": 557, + "id": 754, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 559, + "id": 756, "name": "message", "kind": 1024, "kindString": "Property", @@ -6613,7 +6613,7 @@ "defaultValue": "..." }, { - "id": 558, + "id": 755, "name": "name", "kind": 1024, "kindString": "Property", @@ -6632,7 +6632,7 @@ "defaultValue": "..." }, { - "id": 560, + "id": 757, "name": "status", "kind": 1024, "kindString": "Property", @@ -6655,21 +6655,21 @@ { "title": "Properties", "kind": 1024, - "children": [559, 558, 560] + "children": [756, 755, 757] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -6678,17 +6678,17 @@ { "title": "Constructors", "kind": 512, - "children": [550] + "children": [747] }, { "title": "Properties", "kind": 1024, - "children": [553, 554] + "children": [750, 751] }, { "title": "Methods", "kind": 2048, - "children": [555] + "children": [752] } ], "sources": [ @@ -6701,20 +6701,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 587, + "id": 784, "name": "AuthRetryableFetchError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 588, + "id": 785, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -6728,14 +6728,14 @@ ], "signatures": [ { - "id": 589, + "id": 786, "name": "new AuthRetryableFetchError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 590, + "id": 787, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -6746,7 +6746,7 @@ } }, { - "id": 591, + "id": 788, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -6759,24 +6759,24 @@ ], "type": { "type": "reference", - "id": 587, + "id": 784, "name": "AuthRetryableFetchError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 592, + "id": 789, "name": "name", "kind": 1024, "kindString": "Property", @@ -6794,12 +6794,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 593, + "id": 790, "name": "status", "kind": 1024, "kindString": "Property", @@ -6817,12 +6817,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 594, + "id": 791, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -6836,7 +6836,7 @@ ], "signatures": [ { - "id": 595, + "id": 792, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -6844,14 +6844,14 @@ "type": { "type": "reflection", "declaration": { - "id": 596, + "id": 793, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 598, + "id": 795, "name": "message", "kind": 1024, "kindString": "Property", @@ -6870,7 +6870,7 @@ "defaultValue": "..." }, { - "id": 597, + "id": 794, "name": "name", "kind": 1024, "kindString": "Property", @@ -6889,7 +6889,7 @@ "defaultValue": "..." }, { - "id": 599, + "id": 796, "name": "status", "kind": 1024, "kindString": "Property", @@ -6912,21 +6912,21 @@ { "title": "Properties", "kind": 1024, - "children": [598, 597, 599] + "children": [795, 794, 796] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -6935,17 +6935,17 @@ { "title": "Constructors", "kind": 512, - "children": [588] + "children": [785] }, { "title": "Properties", "kind": 1024, - "children": [592, 593] + "children": [789, 790] }, { "title": "Methods", "kind": 2048, - "children": [594] + "children": [791] } ], "sources": [ @@ -6958,20 +6958,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 537, + "id": 734, "name": "AuthSessionMissingError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 538, + "id": 735, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -6985,31 +6985,31 @@ ], "signatures": [ { - "id": 539, + "id": 736, "name": "new AuthSessionMissingError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "type": { "type": "reference", - "id": 537, + "id": 734, "name": "AuthSessionMissingError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 540, + "id": 737, "name": "name", "kind": 1024, "kindString": "Property", @@ -7027,12 +7027,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 541, + "id": 738, "name": "status", "kind": 1024, "kindString": "Property", @@ -7050,12 +7050,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 542, + "id": 739, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -7069,7 +7069,7 @@ ], "signatures": [ { - "id": 543, + "id": 740, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -7077,14 +7077,14 @@ "type": { "type": "reflection", "declaration": { - "id": 544, + "id": 741, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 546, + "id": 743, "name": "message", "kind": 1024, "kindString": "Property", @@ -7103,7 +7103,7 @@ "defaultValue": "..." }, { - "id": 545, + "id": 742, "name": "name", "kind": 1024, "kindString": "Property", @@ -7122,7 +7122,7 @@ "defaultValue": "..." }, { - "id": 547, + "id": 744, "name": "status", "kind": 1024, "kindString": "Property", @@ -7145,21 +7145,21 @@ { "title": "Properties", "kind": 1024, - "children": [546, 545, 547] + "children": [743, 742, 744] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -7168,17 +7168,17 @@ { "title": "Constructors", "kind": 512, - "children": [538] + "children": [735] }, { "title": "Properties", "kind": 1024, - "children": [540, 541] + "children": [737, 738] }, { "title": "Methods", "kind": 2048, - "children": [542] + "children": [739] } ], "sources": [ @@ -7191,20 +7191,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 515, + "id": 712, "name": "AuthUnknownError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 516, + "id": 713, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -7218,14 +7218,14 @@ ], "signatures": [ { - "id": 517, + "id": 714, "name": "new AuthUnknownError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 518, + "id": 715, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -7236,7 +7236,7 @@ } }, { - "id": 519, + "id": 716, "name": "originalError", "kind": 32768, "kindString": "Parameter", @@ -7249,24 +7249,24 @@ ], "type": { "type": "reference", - "id": 515, + "id": 712, "name": "AuthUnknownError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 520, + "id": 717, "name": "originalError", "kind": 1024, "kindString": "Property", @@ -7288,12 +7288,12 @@ { "title": "Constructors", "kind": 512, - "children": [516] + "children": [713] }, { "title": "Properties", "kind": 1024, - "children": [520] + "children": [717] } ], "sources": [ @@ -7306,20 +7306,20 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] }, { - "id": 522, + "id": 719, "name": "CustomAuthError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 523, + "id": 720, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -7333,14 +7333,14 @@ ], "signatures": [ { - "id": 524, + "id": 721, "name": "new CustomAuthError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 525, + "id": 722, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -7351,7 +7351,7 @@ } }, { - "id": 526, + "id": 723, "name": "name", "kind": 32768, "kindString": "Parameter", @@ -7362,7 +7362,7 @@ } }, { - "id": 527, + "id": 724, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -7375,24 +7375,24 @@ ], "type": { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 528, + "id": 725, "name": "name", "kind": 1024, "kindString": "Property", @@ -7414,7 +7414,7 @@ } }, { - "id": 529, + "id": 726, "name": "status", "kind": 1024, "kindString": "Property", @@ -7432,7 +7432,7 @@ } }, { - "id": 530, + "id": 727, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -7446,7 +7446,7 @@ ], "signatures": [ { - "id": 531, + "id": 728, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -7454,14 +7454,14 @@ "type": { "type": "reflection", "declaration": { - "id": 532, + "id": 729, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 534, + "id": 731, "name": "message", "kind": 1024, "kindString": "Property", @@ -7480,7 +7480,7 @@ "defaultValue": "..." }, { - "id": 533, + "id": 730, "name": "name", "kind": 1024, "kindString": "Property", @@ -7499,7 +7499,7 @@ "defaultValue": "..." }, { - "id": 535, + "id": 732, "name": "status", "kind": 1024, "kindString": "Property", @@ -7522,7 +7522,7 @@ { "title": "Properties", "kind": 1024, - "children": [534, 533, 535] + "children": [731, 730, 732] } ] } @@ -7535,17 +7535,17 @@ { "title": "Constructors", "kind": 512, - "children": [523] + "children": [720] }, { "title": "Properties", "kind": 1024, - "children": [528, 529] + "children": [725, 726] }, { "title": "Methods", "kind": 2048, - "children": [530] + "children": [727] } ], "sources": [ @@ -7558,29 +7558,29 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ], "extendedBy": [ { "type": "reference", - "id": 537, + "id": 734, "name": "AuthSessionMissingError" }, { "type": "reference", - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError" }, { "type": "reference", - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError" }, { "type": "reference", - "id": 587, + "id": 784, "name": "AuthRetryableFetchError" } ] @@ -7601,7 +7601,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 19, + "line": 28, "character": 2 } ], @@ -7639,7 +7639,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 28, + "line": 37, "character": 4 } ], @@ -7729,7 +7729,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 25, + "line": 34, "character": 4 } ], @@ -7776,7 +7776,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 24, + "line": 33, "character": 4 } ], @@ -7806,7 +7806,29 @@ ] }, { - "id": 41, + "id": 16, + "name": "mfa", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Contains all MFA administration methods." + }, + "sources": [ + { + "fileName": "src/GoTrueAdminApi.ts", + "line": 20, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 673, + "name": "GoTrueAdminMFAApi" + } + }, + { + "id": 43, "name": "createUser", "kind": 2048, "kindString": "Method", @@ -7814,13 +7836,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 126, + "line": 139, "character": 8 } ], "signatures": [ { - "id": 42, + "id": 44, "name": "createUser", "kind": 4096, "kindString": "Call signature", @@ -7830,24 +7852,24 @@ }, "parameters": [ { - "id": 43, + "id": 45, "name": "attributes", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes", "dereferenced": { - "id": 343, + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -7861,7 +7883,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -7871,7 +7893,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -7885,7 +7907,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -7895,7 +7917,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -7909,7 +7931,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -7919,12 +7941,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -7937,7 +7959,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -7947,12 +7969,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -7966,7 +7988,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -7976,7 +7998,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -7989,7 +8011,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -7999,12 +8021,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -8017,7 +8039,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -8027,12 +8049,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -8046,7 +8068,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -8056,7 +8078,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -8070,7 +8092,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -8084,20 +8106,20 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] @@ -8110,7 +8132,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -8122,7 +8144,7 @@ ] }, { - "id": 63, + "id": 65, "name": "deleteUser", "kind": 2048, "kindString": "Method", @@ -8130,13 +8152,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 216, + "line": 229, "character": 8 } ], "signatures": [ { - "id": 64, + "id": 66, "name": "deleteUser", "kind": 4096, "kindString": "Call signature", @@ -8146,7 +8168,7 @@ }, "parameters": [ { - "id": 65, + "id": 67, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -8165,7 +8187,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -8177,7 +8199,7 @@ ] }, { - "id": 38, + "id": 40, "name": "generateLink", "kind": 2048, "kindString": "Method", @@ -8185,13 +8207,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 92, + "line": 105, "character": 8 } ], "signatures": [ { - "id": 39, + "id": 41, "name": "generateLink", "kind": 4096, "kindString": "Call signature", @@ -8201,17 +8223,17 @@ }, "parameters": [ { - "id": 40, + "id": 42, "name": "params", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 461, + "id": 517, "name": "GenerateLinkParams", "dereferenced": { - "id": 461, + "id": 517, "name": "GenerateLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -8219,7 +8241,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 443, + "line": 512, "character": 12 } ], @@ -8228,22 +8250,22 @@ "types": [ { "type": "reference", - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams" }, { "type": "reference", - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams" }, { "type": "reference", - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams" }, { "type": "reference", - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams" } ] @@ -8257,7 +8279,7 @@ "typeArguments": [ { "type": "reference", - "id": 462, + "id": 518, "name": "GenerateLinkResponse" } ], @@ -8269,7 +8291,7 @@ ] }, { - "id": 56, + "id": 58, "name": "getUserById", "kind": 2048, "kindString": "Method", @@ -8277,13 +8299,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 171, + "line": 184, "character": 8 } ], "signatures": [ { - "id": 57, + "id": 59, "name": "getUserById", "kind": 4096, "kindString": "Call signature", @@ -8293,7 +8315,7 @@ }, "parameters": [ { - "id": 58, + "id": 60, "name": "uid", "kind": 32768, "kindString": "Parameter", @@ -8312,7 +8334,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -8324,7 +8346,7 @@ ] }, { - "id": 31, + "id": 33, "name": "inviteUserByEmail", "kind": 2048, "kindString": "Method", @@ -8332,13 +8354,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 62, + "line": 75, "character": 8 } ], "signatures": [ { - "id": 32, + "id": 34, "name": "inviteUserByEmail", "kind": 4096, "kindString": "Call signature", @@ -8348,7 +8370,7 @@ }, "parameters": [ { - "id": 33, + "id": 35, "name": "email", "kind": 32768, "kindString": "Parameter", @@ -8362,7 +8384,7 @@ } }, { - "id": 34, + "id": 36, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -8370,14 +8392,14 @@ "type": { "type": "reflection", "declaration": { - "id": 35, + "id": 37, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 37, + "id": 39, "name": "data", "kind": 1024, "kindString": "Property", @@ -8390,7 +8412,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 66, + "line": 79, "character": 6 } ], @@ -8400,7 +8422,7 @@ } }, { - "id": 36, + "id": 38, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -8413,7 +8435,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 65, + "line": 78, "character": 6 } ], @@ -8427,7 +8449,7 @@ { "title": "Properties", "kind": 1024, - "children": [37, 36] + "children": [39, 38] } ] } @@ -8440,7 +8462,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -8452,7 +8474,7 @@ ] }, { - "id": 44, + "id": 46, "name": "listUsers", "kind": 2048, "kindString": "Method", @@ -8460,13 +8482,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 147, + "line": 160, "character": 8 } ], "signatures": [ { - "id": 45, + "id": 47, "name": "listUsers", "kind": 4096, "kindString": "Call signature", @@ -8484,14 +8506,14 @@ { "type": "reflection", "declaration": { - "id": 46, + "id": 48, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 47, + "id": 49, "name": "data", "kind": 1024, "kindString": "Property", @@ -8499,21 +8521,21 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 48, + "id": 50, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 49, + "id": 51, "name": "users", "kind": 1024, "kindString": "Property", @@ -8521,7 +8543,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 14 } ], @@ -8529,7 +8551,7 @@ "type": "array", "elementType": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -8539,14 +8561,14 @@ { "title": "Properties", "kind": 1024, - "children": [49] + "children": [51] } ] } } }, { - "id": 50, + "id": 52, "name": "error", "kind": 1024, "kindString": "Property", @@ -8554,7 +8576,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 31 } ], @@ -8568,7 +8590,7 @@ { "title": "Properties", "kind": 1024, - "children": [47, 50] + "children": [49, 52] } ] } @@ -8576,14 +8598,14 @@ { "type": "reflection", "declaration": { - "id": 51, + "id": 53, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 52, + "id": 54, "name": "data", "kind": 1024, "kindString": "Property", @@ -8591,21 +8613,21 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 49 } ], "type": { "type": "reflection", "declaration": { - "id": 53, + "id": 55, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 54, + "id": 56, "name": "users", "kind": 1024, "kindString": "Property", @@ -8613,7 +8635,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 57 } ], @@ -8626,14 +8648,14 @@ { "title": "Properties", "kind": 1024, - "children": [54] + "children": [56] } ] } } }, { - "id": 55, + "id": 57, "name": "error", "kind": 1024, "kindString": "Property", @@ -8641,13 +8663,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 70 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -8656,7 +8678,7 @@ { "title": "Properties", "kind": 1024, - "children": [52, 55] + "children": [54, 57] } ] } @@ -8672,7 +8694,7 @@ ] }, { - "id": 26, + "id": 27, "name": "signOut", "kind": 2048, "kindString": "Method", @@ -8680,13 +8702,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 39, + "line": 52, "character": 8 } ], "signatures": [ { - "id": 27, + "id": 28, "name": "signOut", "kind": 4096, "kindString": "Call signature", @@ -8696,7 +8718,7 @@ }, "parameters": [ { - "id": 28, + "id": 29, "name": "jwt", "kind": 32768, "kindString": "Parameter", @@ -8716,14 +8738,32 @@ { "type": "reflection", "declaration": { - "id": 29, + "id": 30, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 30, + "id": 31, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueAdminApi.ts", + "line": 52, + "character": 40 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 32, "name": "error", "kind": 1024, "kindString": "Property", @@ -8731,8 +8771,8 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 39, - "character": 40 + "line": 52, + "character": 52 } ], "type": { @@ -8744,7 +8784,7 @@ }, { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] @@ -8755,7 +8795,7 @@ { "title": "Properties", "kind": 1024, - "children": [30] + "children": [31, 32] } ] } @@ -8769,7 +8809,7 @@ ] }, { - "id": 59, + "id": 61, "name": "updateUserById", "kind": 2048, "kindString": "Method", @@ -8777,13 +8817,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 193, + "line": 206, "character": 8 } ], "signatures": [ { - "id": 60, + "id": 62, "name": "updateUserById", "kind": 4096, "kindString": "Call signature", @@ -8793,7 +8833,7 @@ }, "parameters": [ { - "id": 61, + "id": 63, "name": "uid", "kind": 32768, "kindString": "Parameter", @@ -8804,7 +8844,7 @@ } }, { - "id": 62, + "id": 64, "name": "attributes", "kind": 32768, "kindString": "Parameter", @@ -8814,17 +8854,17 @@ }, "type": { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes", "dereferenced": { - "id": 343, + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -8838,7 +8878,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -8848,7 +8888,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -8862,7 +8902,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -8872,7 +8912,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -8886,7 +8926,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -8896,12 +8936,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -8914,7 +8954,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -8924,12 +8964,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -8943,7 +8983,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -8953,7 +8993,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -8966,7 +9006,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -8976,12 +9016,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -8994,7 +9034,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -9004,12 +9044,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -9023,7 +9063,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -9033,7 +9073,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -9047,7 +9087,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -9061,20 +9101,20 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] @@ -9087,7 +9127,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -9105,29 +9145,34 @@ "kind": 512, "children": [2] }, + { + "title": "Properties", + "kind": 1024, + "children": [16] + }, { "title": "Methods", "kind": 2048, - "children": [41, 63, 38, 56, 31, 44, 26, 59] + "children": [43, 65, 40, 58, 33, 46, 27, 61] } ], "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 12, + "line": 18, "character": 21 } ] }, { - "id": 66, + "id": 74, "name": "GoTrueClient", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 67, + "id": 75, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -9135,13 +9180,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 105, + "line": 124, "character": 2 } ], "signatures": [ { - "id": 68, + "id": 76, "name": "new GoTrueClient", "kind": 16384, "kindString": "Constructor signature", @@ -9151,17 +9196,17 @@ }, "parameters": [ { - "id": 69, + "id": 77, "name": "options", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "dereferenced": { - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "kind": 4194304, "kindString": "Type alias", @@ -9169,67 +9214,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 241, + "id": 282, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 249, + "id": 290, "name": "autoRefreshToken", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 41, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 248, - "name": "detectSessionInUrl", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 39, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 252, - "name": "fetch", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, "sources": [ { "fileName": "src/lib/types.ts", @@ -9237,13 +9242,53 @@ "character": 2 } ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 289, + "name": "detectSessionInUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 45, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 293, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 53, + "character": 2 + } + ], "type": { "type": "reference", "name": "Fetch" } }, { - "id": 243, + "id": 284, "name": "headers", "kind": 1024, "kindString": "Property", @@ -9253,14 +9298,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 244, + "id": 285, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -9268,19 +9313,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 12 } ], "indexSignature": { - "id": 245, + "id": 286, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 246, + "id": 287, "name": "key", "kind": 32768, "flags": {}, @@ -9299,13 +9344,54 @@ } }, { - "id": 250, + "id": 291, "name": "persistSession", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 49, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 292, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 51, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 680, + "name": "SupportedStorage" + } + }, + { + "id": 288, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, "sources": [ { "fileName": "src/lib/types.ts", @@ -9313,54 +9399,13 @@ "character": 2 } ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 251, - "name": "storage", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 45, - "character": 2 - } - ], - "type": { - "type": "reference", - "id": 483, - "name": "SupportedStorage" - } - }, - { - "id": 247, - "name": "storageKey", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 37, - "character": 2 - } - ], "type": { "type": "intrinsic", "name": "string" } }, { - "id": 242, + "id": 283, "name": "url", "kind": 1024, "kindString": "Property", @@ -9370,7 +9415,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 33, + "line": 39, "character": 2 } ], @@ -9384,13 +9429,13 @@ { "title": "Properties", "kind": 1024, - "children": [249, 248, 252, 243, 250, 251, 247, 242] + "children": [290, 289, 293, 284, 291, 292, 288, 283] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 34 } ] @@ -9402,14 +9447,14 @@ ], "type": { "type": "reference", - "id": 66, + "id": 74, "name": "default" } } ] }, { - "id": 70, + "id": 78, "name": "admin", "kind": 1024, "kindString": "Property", @@ -9420,7 +9465,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 69, + "line": 84, "character": 2 } ], @@ -9431,7 +9476,29 @@ } }, { - "id": 111, + "id": 79, + "name": "mfa", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Namespace for the MFA methods." + }, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 88, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 628, + "name": "GoTrueMFAApi" + } + }, + { + "id": 120, "name": "getSession", "kind": 2048, "kindString": "Method", @@ -9439,13 +9506,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 410, + "line": 440, "character": 8 } ], "signatures": [ { - "id": 112, + "id": 121, "name": "getSession", "kind": 4096, "kindString": "Call signature", @@ -9462,14 +9529,14 @@ { "type": "reflection", "declaration": { - "id": 113, + "id": 122, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 114, + "id": 123, "name": "data", "kind": 1024, "kindString": "Property", @@ -9477,21 +9544,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 412, + "line": 442, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 115, + "id": 124, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 116, + "id": 125, "name": "session", "kind": 1024, "kindString": "Property", @@ -9499,13 +9566,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 413, + "line": 443, "character": 10 } ], "type": { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } } @@ -9514,14 +9581,14 @@ { "title": "Properties", "kind": 1024, - "children": [116] + "children": [125] } ] } } }, { - "id": 117, + "id": 126, "name": "error", "kind": 1024, "kindString": "Property", @@ -9529,7 +9596,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 415, + "line": 445, "character": 8 } ], @@ -9543,7 +9610,7 @@ { "title": "Properties", "kind": 1024, - "children": [114, 117] + "children": [123, 126] } ] } @@ -9551,14 +9618,14 @@ { "type": "reflection", "declaration": { - "id": 118, + "id": 127, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 119, + "id": 128, "name": "data", "kind": 1024, "kindString": "Property", @@ -9566,21 +9633,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 418, + "line": 448, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 120, + "id": 129, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 121, + "id": 130, "name": "session", "kind": 1024, "kindString": "Property", @@ -9588,7 +9655,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 419, + "line": 449, "character": 10 } ], @@ -9602,14 +9669,14 @@ { "title": "Properties", "kind": 1024, - "children": [121] + "children": [130] } ] } } }, { - "id": 122, + "id": 131, "name": "error", "kind": 1024, "kindString": "Property", @@ -9617,13 +9684,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 421, + "line": 451, "character": 8 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -9632,7 +9699,7 @@ { "title": "Properties", "kind": 1024, - "children": [119, 122] + "children": [128, 131] } ] } @@ -9640,14 +9707,14 @@ { "type": "reflection", "declaration": { - "id": 123, + "id": 132, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 124, + "id": 133, "name": "data", "kind": 1024, "kindString": "Property", @@ -9655,21 +9722,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 424, + "line": 454, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 125, + "id": 134, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 126, + "id": 135, "name": "session", "kind": 1024, "kindString": "Property", @@ -9677,7 +9744,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 425, + "line": 455, "character": 10 } ], @@ -9691,14 +9758,14 @@ { "title": "Properties", "kind": 1024, - "children": [126] + "children": [135] } ] } } }, { - "id": 127, + "id": 136, "name": "error", "kind": 1024, "kindString": "Property", @@ -9706,7 +9773,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 427, + "line": 457, "character": 8 } ], @@ -9720,7 +9787,7 @@ { "title": "Properties", "kind": 1024, - "children": [124, 127] + "children": [133, 136] } ] } @@ -9736,7 +9803,7 @@ ] }, { - "id": 128, + "id": 137, "name": "getUser", "kind": 2048, "kindString": "Method", @@ -9744,13 +9811,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 473, + "line": 504, "character": 8 } ], "signatures": [ { - "id": 129, + "id": 138, "name": "getUser", "kind": 4096, "kindString": "Call signature", @@ -9760,7 +9827,7 @@ }, "parameters": [ { - "id": 130, + "id": 139, "name": "jwt", "kind": 32768, "kindString": "Parameter", @@ -9781,7 +9848,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -9793,7 +9860,7 @@ ] }, { - "id": 92, + "id": 101, "name": "initialize", "kind": 2048, "kindString": "Method", @@ -9801,13 +9868,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 131, + "line": 159, "character": 2 } ], "signatures": [ { - "id": 93, + "id": 102, "name": "initialize", "kind": 4096, "kindString": "Call signature", @@ -9820,7 +9887,7 @@ "typeArguments": [ { "type": "reference", - "id": 484, + "id": 681, "name": "InitializeResult" } ], @@ -9832,7 +9899,7 @@ ] }, { - "id": 157, + "id": 178, "name": "onAuthStateChange", "kind": 2048, "kindString": "Method", @@ -9840,13 +9907,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 701, + "line": 784, "character": 2 } ], "signatures": [ { - "id": 158, + "id": 179, "name": "onAuthStateChange", "kind": 4096, "kindString": "Call signature", @@ -9856,7 +9923,7 @@ }, "parameters": [ { - "id": 159, + "id": 180, "name": "callback", "kind": 32768, "kindString": "Parameter", @@ -9867,33 +9934,33 @@ "type": { "type": "reflection", "declaration": { - "id": 160, + "id": 181, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "signatures": [ { - "id": 161, + "id": 182, "name": "__type", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 162, + "id": 183, "name": "event", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 239, + "id": 280, "name": "AuthChangeEvent" } }, { - "id": 163, + "id": 184, "name": "session", "kind": 32768, "kindString": "Parameter", @@ -9907,7 +9974,7 @@ }, { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } ] @@ -9927,14 +9994,14 @@ "type": { "type": "reflection", "declaration": { - "id": 164, + "id": 185, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 165, + "id": 186, "name": "data", "kind": 1024, "kindString": "Property", @@ -9942,21 +10009,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 702, + "line": 785, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 166, + "id": 187, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 167, + "id": 188, "name": "subscription", "kind": 1024, "kindString": "Property", @@ -9964,13 +10031,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 702, + "line": 785, "character": 12 } ], "type": { "type": "reference", - "id": 353, + "id": 405, "name": "Subscription" } } @@ -9979,7 +10046,7 @@ { "title": "Properties", "kind": 1024, - "children": [167] + "children": [188] } ] } @@ -9990,7 +10057,7 @@ { "title": "Properties", "kind": 1024, - "children": [165] + "children": [186] } ] } @@ -9999,7 +10066,97 @@ ] }, { - "id": 168, + "id": 153, + "name": "refreshSession", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 645, + "character": 8 + } + ], + "signatures": [ + { + "id": 154, + "name": "refreshSession", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns a new session, regardless of expiry status.\nTakes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession().\nIf the current session's refresh token is invalid, an error will be thrown." + }, + "parameters": [ + { + "id": 155, + "name": "currentSession", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The current session. If passed in, it must contain a refresh token.\n" + }, + "type": { + "type": "reflection", + "declaration": { + "id": 156, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 157, + "name": "refresh_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 645, + "character": 42 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [157] + } + ] + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 189, "name": "resetPasswordForEmail", "kind": 2048, "kindString": "Method", @@ -10007,13 +10164,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 724, + "line": 807, "character": 8 } ], "signatures": [ { - "id": 169, + "id": 190, "name": "resetPasswordForEmail", "kind": 4096, "kindString": "Call signature", @@ -10023,7 +10180,7 @@ }, "parameters": [ { - "id": 170, + "id": 191, "name": "email", "kind": 32768, "kindString": "Parameter", @@ -10037,7 +10194,7 @@ } }, { - "id": 171, + "id": 192, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -10045,14 +10202,14 @@ "type": { "type": "reflection", "declaration": { - "id": 172, + "id": 193, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 174, + "id": 195, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -10065,7 +10222,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 728, + "line": 811, "character": 6 } ], @@ -10075,7 +10232,7 @@ } }, { - "id": 173, + "id": 194, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -10088,7 +10245,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 727, + "line": 810, "character": 6 } ], @@ -10102,7 +10259,7 @@ { "title": "Properties", "kind": 1024, - "children": [174, 173] + "children": [195, 194] } ] } @@ -10119,14 +10276,14 @@ { "type": "reflection", "declaration": { - "id": 175, + "id": 196, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 176, + "id": 197, "name": "data", "kind": 1024, "kindString": "Property", @@ -10134,14 +10291,14 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 732, + "line": 815, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 177, + "id": 198, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -10150,7 +10307,7 @@ } }, { - "id": 178, + "id": 199, "name": "error", "kind": 1024, "kindString": "Property", @@ -10158,7 +10315,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 733, + "line": 816, "character": 8 } ], @@ -10172,7 +10329,7 @@ { "title": "Properties", "kind": 1024, - "children": [176, 178] + "children": [197, 199] } ] } @@ -10180,14 +10337,14 @@ { "type": "reflection", "declaration": { - "id": 179, + "id": 200, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 180, + "id": 201, "name": "data", "kind": 1024, "kindString": "Property", @@ -10195,7 +10352,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 735, + "line": 818, "character": 8 } ], @@ -10205,7 +10362,7 @@ } }, { - "id": 181, + "id": 202, "name": "error", "kind": 1024, "kindString": "Property", @@ -10213,13 +10370,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 735, + "line": 818, "character": 20 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -10228,7 +10385,7 @@ { "title": "Properties", "kind": 1024, - "children": [180, 181] + "children": [201, 202] } ] } @@ -10244,7 +10401,7 @@ ] }, { - "id": 134, + "id": 150, "name": "setSession", "kind": 2048, "kindString": "Method", @@ -10252,13 +10409,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 539, + "line": 581, "character": 8 } ], "signatures": [ { - "id": 135, + "id": 151, "name": "setSession", "kind": 4096, "kindString": "Call signature", @@ -10268,7 +10425,7 @@ }, "parameters": [ { - "id": 136, + "id": 152, "name": "currentSession", "kind": 32768, "kindString": "Parameter", @@ -10281,7 +10438,7 @@ "typeArguments": [ { "type": "reference", - "id": 290, + "id": 331, "name": "Session" }, { @@ -10309,7 +10466,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -10321,7 +10478,7 @@ ] }, { - "id": 102, + "id": 111, "name": "signInWithOAuth", "kind": 2048, "kindString": "Method", @@ -10329,13 +10486,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 307, + "line": 337, "character": 8 } ], "signatures": [ { - "id": 103, + "id": 112, "name": "signInWithOAuth", "kind": 4096, "kindString": "Call signature", @@ -10345,17 +10502,17 @@ }, "parameters": [ { - "id": 104, + "id": 113, "name": "credentials", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "dereferenced": { - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "kind": 4194304, "kindString": "Type alias", @@ -10363,21 +10520,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 407, + "id": 463, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 409, + "id": 465, "name": "options", "kind": 1024, "kindString": "Property", @@ -10387,21 +10544,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 410, + "id": 466, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 413, + "id": 469, "name": "queryParams", "kind": 1024, "kindString": "Property", @@ -10414,14 +10571,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 414, + "id": 470, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -10429,19 +10586,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 18 } ], "indexSignature": { - "id": 415, + "id": 471, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 416, + "id": 472, "name": "key", "kind": 32768, "flags": {}, @@ -10460,7 +10617,7 @@ } }, { - "id": 411, + "id": 467, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -10473,7 +10630,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 359, + "line": 428, "character": 4 } ], @@ -10483,7 +10640,7 @@ } }, { - "id": 412, + "id": 468, "name": "scopes", "kind": 1024, "kindString": "Property", @@ -10496,7 +10653,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 361, + "line": 430, "character": 4 } ], @@ -10510,13 +10667,13 @@ { "title": "Properties", "kind": 1024, - "children": [413, 411, 412] + "children": [469, 467, 468] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 12 } ] @@ -10524,7 +10681,7 @@ } }, { - "id": 408, + "id": 464, "name": "provider", "kind": 1024, "kindString": "Property", @@ -10535,13 +10692,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 356, + "line": 425, "character": 2 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } } @@ -10550,13 +10707,13 @@ { "title": "Properties", "kind": 1024, - "children": [409, 408] + "children": [465, 464] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 41 } ] @@ -10571,7 +10728,7 @@ "typeArguments": [ { "type": "reference", - "id": 266, + "id": 307, "name": "OAuthResponse" } ], @@ -10583,7 +10740,7 @@ ] }, { - "id": 105, + "id": 114, "name": "signInWithOtp", "kind": 2048, "kindString": "Method", @@ -10591,13 +10748,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 322, + "line": 352, "character": 8 } ], "signatures": [ { - "id": 106, + "id": 115, "name": "signInWithOtp", "kind": 4096, "kindString": "Call signature", @@ -10605,6 +10762,888 @@ "comment": { "shortText": "Log in a user using magiclink or a one-time password (OTP).\nIf the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent.\nIf the `{{ .Token }}` variable is specified in the email template, an OTP will be sent.\nIf you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins." }, + "parameters": [ + { + "id": 116, + "name": "credentials", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 446, + "name": "SignInWithPasswordlessCredentials", + "dereferenced": { + "id": 446, + "name": "SignInWithPasswordlessCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 387, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 447, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 448, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 390, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 449, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 450, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 454, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 403, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 453, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 401, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 451, + "name": "emailRedirectTo", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The redirect url embedded in the email link" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 393, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 452, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 395, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [454, 453, 451, 452] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 16 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [448, 449] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 388, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 455, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 457, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 458, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 461, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 419, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 460, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 417, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 459, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 411, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [461, 460, 459] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 16 + } + ] + } + } + }, + { + "id": 456, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 408, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [457, 456] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 406, + "character": 4 + } + ] + } + } + ] + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 108, + "name": "signInWithPassword", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 285, + "character": 8 + } + ], + "signatures": [ + { + "id": 109, + "name": "signInWithPassword", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Log in an existing user with an email and password or phone and password." + }, + "parameters": [ + { + "id": 110, + "name": "credentials", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 431, + "name": "SignInWithPasswordCredentials", + "dereferenced": { + "id": 431, + "name": "SignInWithPasswordCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 353, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 432, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 433, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 356, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 435, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 359, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 436, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 438, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 367, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 437, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 365, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [438, 437] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 359, + "character": 16 + } + ] + } + } + }, + { + "id": 434, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 358, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [433, 435, 434] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 354, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 439, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 442, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 375, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 443, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 445, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 383, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 444, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 381, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [445, 444] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 375, + "character": 16 + } + ] + } + } + }, + { + "id": 441, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 374, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 440, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 372, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [442, 441, 440] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 370, + "character": 4 + } + ] + } + } + ] + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 174, + "name": "signOut", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 765, + "character": 8 + } + ], + "signatures": [ + { + "id": 175, + "name": "signOut", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Inside a browser context, `signOut()` will remove the logged in user from the browser session\nand log them out - removing all items from localstorage and then trigger a `\"SIGNED_OUT\"` event.", + "text": "For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`.\nThere is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.\n" + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reflection", + "declaration": { + "id": 176, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 177, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 765, + "character": 29 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": null + }, + { + "type": "reference", + "id": 694, + "name": "AuthError" + } + ] + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [177] + } + ] + } + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 105, + "name": "signUp", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 222, + "character": 8 + } + ], + "signatures": [ + { + "id": 106, + "name": "signUp", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Creates a new user.", + "returns": "A logged-in session if the server has \"autoconfirm\" ON" + }, "parameters": [ { "id": 107, @@ -10614,11 +11653,11 @@ "flags": {}, "type": { "type": "reference", - "id": 390, - "name": "SignInWithPasswordlessCredentials", + "id": 415, + "name": "SignUpWithPasswordCredentials", "dereferenced": { - "id": 390, - "name": "SignInWithPasswordlessCredentials", + "id": 415, + "name": "SignUpWithPasswordCredentials", "kind": 4194304, "kindString": "Type alias", "flags": {}, @@ -10635,14 +11674,14 @@ { "type": "reflection", "declaration": { - "id": 391, + "id": 416, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 392, + "id": 417, "name": "email", "kind": 1024, "kindString": "Property", @@ -10663,7 +11702,7 @@ } }, { - "id": 393, + "id": 419, "name": "options", "kind": 1024, "kindString": "Property", @@ -10673,21 +11712,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 394, + "id": 420, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 398, + "id": 423, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -10710,7 +11749,7 @@ } }, { - "id": 397, + "id": 422, "name": "data", "kind": 1024, "kindString": "Property", @@ -10734,7 +11773,7 @@ } }, { - "id": 395, + "id": 421, "name": "emailRedirectTo", "kind": 1024, "kindString": "Property", @@ -10747,7 +11786,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 324, + "line": 326, "character": 8 } ], @@ -10755,54 +11794,52 @@ "type": "intrinsic", "name": "string" } - }, - { - "id": 396, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 326, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [398, 397, 395, 396] + "children": [423, 422, 421] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 16 } ] } } + }, + { + "id": 418, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 323, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [392, 393] + "children": [417, 419, 418] } ], "sources": [ @@ -10817,14 +11854,14 @@ { "type": "reflection", "declaration": { - "id": 399, + "id": 424, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 401, + "id": 427, "name": "options", "kind": 1024, "kindString": "Property", @@ -10834,21 +11871,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 402, + "id": 428, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 405, + "id": 430, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -10871,7 +11908,7 @@ } }, { - "id": 404, + "id": 429, "name": "data", "kind": 1024, "kindString": "Property", @@ -10893,42 +11930,19 @@ "type": "intrinsic", "name": "object" } - }, - { - "id": 403, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 342, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [405, 404, 403] + "children": [430, 429] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 16 } ] @@ -10936,7 +11950,28 @@ } }, { - "id": 400, + "id": 426, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 341, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 425, "name": "phone", "kind": 1024, "kindString": "Property", @@ -10961,7 +11996,7 @@ { "title": "Properties", "kind": 1024, - "children": [401, 400] + "children": [427, 426, 425] } ], "sources": [ @@ -10984,7 +12019,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -10996,837 +12031,7 @@ ] }, { - "id": 99, - "name": "signInWithPassword", - "kind": 2048, - "kindString": "Method", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 257, - "character": 8 - } - ], - "signatures": [ - { - "id": 100, - "name": "signInWithPassword", - "kind": 4096, - "kindString": "Call signature", - "flags": {}, - "comment": { - "shortText": "Log in an existing user with an email and password or phone and password." - }, - "parameters": [ - { - "id": 101, - "name": "credentials", - "kind": 32768, - "kindString": "Parameter", - "flags": {}, - "type": { - "type": "reference", - "id": 377, - "name": "SignInWithPasswordCredentials", - "dereferenced": { - "id": 377, - "name": "SignInWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 296, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 378, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 379, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 299, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 381, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 302, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 382, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 383, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 304, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [383] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 302, - "character": 16 - } - ] - } - } - }, - { - "id": 380, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 301, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [379, 381, 380] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 297, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 384, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 387, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 312, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 388, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 389, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 314, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [389] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 312, - "character": 16 - } - ] - } - } - }, - { - "id": 386, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 311, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 385, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 309, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [387, 386, 385] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 307, - "character": 4 - } - ] - } - } - ] - } - } - } - } - ], - "type": { - "type": "reference", - "typeArguments": [ - { - "type": "reference", - "id": 253, - "name": "AuthResponse" - } - ], - "qualifiedName": "Promise", - "package": "typescript", - "name": "Promise" - } - } - ] - }, - { - "id": 153, - "name": "signOut", - "kind": 2048, - "kindString": "Method", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 682, - "character": 8 - } - ], - "signatures": [ - { - "id": 154, - "name": "signOut", - "kind": 4096, - "kindString": "Call signature", - "flags": {}, - "comment": { - "shortText": "Inside a browser context, `signOut()` will remove the logged in user from the browser session\nand log them out - removing all items from localstorage and then trigger a `\"SIGNED_OUT\"` event.", - "text": "For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`.\nThere is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.\n" - }, - "type": { - "type": "reference", - "typeArguments": [ - { - "type": "reflection", - "declaration": { - "id": 155, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 156, - "name": "error", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 682, - "character": 29 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "literal", - "value": null - }, - { - "type": "reference", - "id": 497, - "name": "AuthError" - } - ] - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [156] - } - ] - } - } - ], - "qualifiedName": "Promise", - "package": "typescript", - "name": "Promise" - } - } - ] - }, - { - "id": 96, - "name": "signUp", - "kind": 2048, - "kindString": "Method", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 194, - "character": 8 - } - ], - "signatures": [ - { - "id": 97, - "name": "signUp", - "kind": 4096, - "kindString": "Call signature", - "flags": {}, - "comment": { - "shortText": "Creates a new user.", - "returns": "A logged-in session if the server has \"autoconfirm\" ON" - }, - "parameters": [ - { - "id": 98, - "name": "credentials", - "kind": 32768, - "kindString": "Parameter", - "flags": {}, - "type": { - "type": "reference", - "id": 361, - "name": "SignUpWithPasswordCredentials", - "dereferenced": { - "id": 361, - "name": "SignUpWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 261, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 362, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 363, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 264, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 365, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 366, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 369, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 277, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 368, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 275, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - }, - { - "id": 367, - "name": "emailRedirectTo", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "The redirect url embedded in the email link" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 269, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [369, 368, 367] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 16 - } - ] - } - } - }, - { - "id": 364, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 266, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [363, 365, 364] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 262, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 370, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 373, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 374, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 376, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 293, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 375, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 291, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [376, 375] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 16 - } - ] - } - } - }, - { - "id": 372, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 284, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 371, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 282, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [373, 372, 371] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 280, - "character": 4 - } - ] - } - } - ] - } - } - } - } - ], - "type": { - "type": "reference", - "typeArguments": [ - { - "type": "reference", - "id": 253, - "name": "AuthResponse" - } - ], - "qualifiedName": "Promise", - "package": "typescript", - "name": "Promise" - } - } - ] - }, - { - "id": 131, + "id": 140, "name": "updateUser", "kind": 2048, "kindString": "Method", @@ -11834,13 +12039,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 502, + "line": 533, "character": 8 } ], "signatures": [ { - "id": 132, + "id": 141, "name": "updateUser", "kind": 4096, "kindString": "Call signature", @@ -11850,24 +12055,24 @@ }, "parameters": [ { - "id": 133, + "id": 142, "name": "attributes", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes", "dereferenced": { - "id": 338, + "id": 390, "name": "UserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 342, + "id": 394, "name": "data", "kind": 1024, "kindString": "Property", @@ -11881,7 +12086,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -11891,7 +12096,7 @@ } }, { - "id": 339, + "id": 391, "name": "email", "kind": 1024, "kindString": "Property", @@ -11904,7 +12109,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -11914,7 +12119,7 @@ } }, { - "id": 341, + "id": 393, "name": "password", "kind": 1024, "kindString": "Property", @@ -11927,7 +12132,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -11937,7 +12142,7 @@ } }, { - "id": 340, + "id": 392, "name": "phone", "kind": 1024, "kindString": "Property", @@ -11950,7 +12155,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -11964,20 +12169,20 @@ { "title": "Properties", "kind": 1024, - "children": [342, 339, 341, 340] + "children": [394, 391, 393, 392] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 170, + "line": 223, "character": 17 } ], "extendedBy": [ { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } ] @@ -11990,7 +12195,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -12002,7 +12207,7 @@ ] }, { - "id": 108, + "id": 117, "name": "verifyOtp", "kind": 2048, "kindString": "Method", @@ -12010,13 +12215,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 366, + "line": 396, "character": 8 } ], "signatures": [ { - "id": 109, + "id": 118, "name": "verifyOtp", "kind": 4096, "kindString": "Call signature", @@ -12026,17 +12231,17 @@ }, "parameters": [ { - "id": 110, + "id": 119, "name": "params", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 417, + "id": 473, "name": "VerifyOtpParams", "dereferenced": { - "id": 417, + "id": 473, "name": "VerifyOtpParams", "kind": 4194304, "kindString": "Type alias", @@ -12044,7 +12249,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 367, + "line": 436, "character": 12 } ], @@ -12053,12 +12258,12 @@ "types": [ { "type": "reference", - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams" }, { "type": "reference", - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams" } ] @@ -12072,7 +12277,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -12088,36 +12293,111 @@ { "title": "Constructors", "kind": 512, - "children": [67] + "children": [75] }, { "title": "Properties", "kind": 1024, - "children": [70] + "children": [78, 79] }, { "title": "Methods", "kind": 2048, - "children": [111, 128, 92, 157, 168, 134, 102, 105, 99, 153, 96, 131, 108] + "children": [120, 137, 101, 178, 153, 189, 150, 111, 114, 108, 174, 105, 140, 117] } ], "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 64, + "line": 79, "character": 21 } ] }, { - "id": 343, + "id": 340, + "name": "AMREntry", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "An authentication methord reference (AMR) entry.", + "text": "An entry designates what method was used by the user to verify their\nidentity and at what time.\n", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}.\n" + } + ] + }, + "children": [ + { + "id": 341, + "name": "method", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Authentication method name." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 142, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 342, + "name": "timestamp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Timestamp when the method was successfully used. Represents number of\nseconds since 1st January 1970 (UNIX epoch) in UTC." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 148, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [341, 342] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 140, + "character": 17 + } + ] + }, + { + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -12131,7 +12411,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -12141,7 +12421,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -12155,7 +12435,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -12165,7 +12445,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -12179,7 +12459,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -12189,12 +12469,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -12207,7 +12487,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -12217,12 +12497,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -12236,7 +12516,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -12246,7 +12526,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -12259,7 +12539,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -12269,12 +12549,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -12287,7 +12567,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -12297,12 +12577,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -12316,7 +12596,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -12326,7 +12606,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -12340,7 +12620,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -12354,33 +12634,204 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] }, { - "id": 458, + "id": 354, + "name": "Factor", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "A MFA factor.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#enroll}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#listFactors}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAAdminApi#listFactors}\n" + } + ] + }, + "children": [ + { + "id": 359, + "name": "created_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 186, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 357, + "name": "factor_type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of factor. Only `totp` supported with this version but may change in\nfuture versions." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 181, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 356, + "name": "friendly_name", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Friendly name of the factor, useful to disambiguate between multiple factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 175, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 355, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 172, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 358, + "name": "status", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Factor's status." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 184, + "character": 2 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "verified" + }, + { + "type": "literal", + "value": "unverified" + } + ] + } + }, + { + "id": 360, + "name": "updated_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 187, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [359, 357, 356, 355, 358, 360] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 170, + "character": 17 + } + ] + }, + { + "id": 514, "name": "GenerateLinkOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 459, + "id": 515, "name": "data", "kind": 1024, "kindString": "Property", @@ -12394,7 +12845,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 438, + "line": 507, "character": 2 } ], @@ -12404,7 +12855,7 @@ } }, { - "id": 460, + "id": 516, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -12417,7 +12868,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 440, + "line": 509, "character": 2 } ], @@ -12431,26 +12882,1172 @@ { "title": "Properties", "kind": 1024, - "children": [459, 460] + "children": [515, 516] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 432, + "line": 501, "character": 17 } ] }, { - "id": 290, + "id": 673, + "name": "GoTrueAdminMFAApi", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "Contains the full multi-factor authentication administration API.", + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "children": [ + { + "id": 677, + "name": "deleteFactor", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 678, + "name": "deleteFactor", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Deletes a factor on a user. This will log the user out of all active\nsessions (if the deleted factor was verified). There's no need to delete\nunverified factors.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#unenroll}\n" + }, + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 679, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "dereferenced": { + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 658, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 659, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the MFA factor to delete." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 868, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 660, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user whose factor is being deleted." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 871, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [659, 660] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 45 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 648, + "name": "AuthMFAAdminDeleteFactorResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 674, + "name": "listFactors", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 675, + "name": "listFactors", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Lists all factors attached to a user.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 676, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "dereferenced": { + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 671, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 672, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user for which to list all MFA factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 892, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [672] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 44 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 661, + "name": "AuthMFAAdminListFactorsResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Methods", + "kind": 2048, + "children": [677, 674] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 900, + "character": 17 + } + ] + }, + { + "id": 628, + "name": "GoTrueMFAApi", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "Contains the full multi-factor authentication API.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "children": [ + { + "id": 632, + "name": "challenge", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 633, + "name": "challenge", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Prepares a challenge used to verify that a user has access to a MFA\nfactor. Provide the challenge ID and verification code by calling\n{@link GoTrueMFAApi#verify}.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 634, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 552, + "name": "MFAChallengeParams", + "dereferenced": { + "id": 552, + "name": "MFAChallengeParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 553, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 554, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor to be challenged." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 600, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [554] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 33 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 596, + "name": "AuthMFAChallengeResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 641, + "name": "challengeAndVerify", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 642, + "name": "challengeAndVerify", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Helper method which creates a challenge and immediately uses the given code to verify against it thereafter. The verification code is\nprovided by the user by entering a code seen in their authenticator app.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challengeAndVerify}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 643, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "dereferenced": { + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 556, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 558, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 610, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 557, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 608, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [558, 557] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 42 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 559, + "name": "AuthMFAVerifyResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 629, + "name": "enroll", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 630, + "name": "enroll", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Starts the enrollment process for a new Multi-Factor Authentication\nfactor. This method creates a new factor in the 'unverified' state.\nPresent the QR code or secret to the user and ask them to add it to their\nauthenticator app. Ask the user to provide you with an authenticator code\nfrom their app and verify it by calling challenge and then verify.", + "text": "The first successful verification of an unverified factor activates the\nfactor. All other sessions are logged out and the current one gets an\n`aal2` authenticator level.\n", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#verify}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 631, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 539, + "name": "MFAEnrollParams", + "dereferenced": { + "id": 539, + "name": "MFAEnrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 540, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 541, + "name": "factorType", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 568, + "character": 2 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + }, + { + "id": 543, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 570, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 542, + "name": "issuer", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 569, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [541, 543, 542] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 30 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 572, + "name": "AuthMFAEnrollResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 646, + "name": "getAuthenticatorAssuranceLevel", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 647, + "name": "getAuthenticatorAssuranceLevel", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns the Authenticator Assurance Level (AAL) for the active session.", + "text": "- `aal1` (or `null`) means that the user's identity has been verified only\nwith a conventional login (email+password, OTP, magic link, social login,\netc.).\n- `aal2` means that the user's identity has been verified both with a conventional login and at least one MFA factor.\n\nAlthough this method returns a promise, it's fairly quick (microseconds)\nand rarely uses the network. You can use this to check whether the current\nuser needs to be shown a screen to verify their MFA factors.\n", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 617, + "name": "AuthMFAGetAuthenticatorAssuranceLevelResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 644, + "name": "listFactors", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 645, + "name": "listFactors", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns the list of MFA factors enabled for this user. For most use cases\nyou should consider using {@link\nGoTrueMFAApi#getAuthenticatorAssuranceLevel}. This uses a cached version\nof the factors and avoids incurring a network call. If you need to update\nthis list, call {@link GoTrueClient#getUser} first.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#enroll}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}" + }, + { + "tag": "see", + "text": "{@link GoTrueClient#getUser}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 606, + "name": "AuthMFAListFactorsResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 638, + "name": "unenroll", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 639, + "name": "unenroll", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Unenroll removes a MFA factor. Unverified factors can safely be ignored\nand it's not necessary to unenroll them. Unenrolling a verified MFA factor\ncannot be done from a session with an `aal1` authenticator level.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 640, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 544, + "name": "MFAUnenrollParams", + "dereferenced": { + "id": 544, + "name": "MFAUnenrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 545, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 546, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 578, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [546] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 32 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 587, + "name": "AuthMFAUnenrollResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 635, + "name": "verify", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 636, + "name": "verify", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Verifies a verification code against a challenge. The verification code is\nprovided by the user by entering a code seen in their authenticator app.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 637, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 547, + "name": "MFAVerifyParams", + "dereferenced": { + "id": 547, + "name": "MFAVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 548, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 550, + "name": "challengeId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the challenge being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 589, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 551, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 592, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 549, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 586, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [550, 551, 549] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 30 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 559, + "name": "AuthMFAVerifyResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Methods", + "kind": 2048, + "children": [632, 641, 629, 646, 644, 638, 635] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 760, + "character": 17 + } + ] + }, + { + "id": 331, "name": "Session", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 293, + "id": 334, "name": "access_token", "kind": 1024, "kindString": "Property", @@ -12461,7 +14058,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 109, + "line": 115, "character": 2 } ], @@ -12471,7 +14068,7 @@ } }, { - "id": 296, + "id": 337, "name": "expires_at", "kind": 1024, "kindString": "Property", @@ -12484,7 +14081,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 121, + "line": 127, "character": 2 } ], @@ -12494,7 +14091,7 @@ } }, { - "id": 295, + "id": 336, "name": "expires_in", "kind": 1024, "kindString": "Property", @@ -12505,7 +14102,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 117, + "line": 123, "character": 2 } ], @@ -12515,7 +14112,7 @@ } }, { - "id": 292, + "id": 333, "name": "provider_refresh_token", "kind": 1024, "kindString": "Property", @@ -12528,7 +14125,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 105, + "line": 111, "character": 2 } ], @@ -12547,7 +14144,7 @@ } }, { - "id": 291, + "id": 332, "name": "provider_token", "kind": 1024, "kindString": "Property", @@ -12560,7 +14157,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 100, + "line": 106, "character": 2 } ], @@ -12579,7 +14176,7 @@ } }, { - "id": 294, + "id": 335, "name": "refresh_token", "kind": 1024, "kindString": "Property", @@ -12590,7 +14187,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 113, + "line": 119, "character": 2 } ], @@ -12600,7 +14197,7 @@ } }, { - "id": 297, + "id": 338, "name": "token_type", "kind": 1024, "kindString": "Property", @@ -12608,7 +14205,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 122, + "line": 128, "character": 2 } ], @@ -12618,7 +14215,7 @@ } }, { - "id": 298, + "id": 339, "name": "user", "kind": 1024, "kindString": "Property", @@ -12626,13 +14223,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 123, + "line": 129, "character": 2 } ], "type": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -12641,26 +14238,26 @@ { "title": "Properties", "kind": 1024, - "children": [293, 296, 295, 292, 291, 294, 297, 298] + "children": [334, 337, 336, 333, 332, 335, 338, 339] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 96, + "line": 102, "character": 17 } ] }, { - "id": 353, + "id": 405, "name": "Subscription", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 354, + "id": 406, "name": "id", "kind": 1024, "kindString": "Property", @@ -12671,7 +14268,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 250, + "line": 303, "character": 2 } ], @@ -12681,7 +14278,7 @@ } }, { - "id": 355, + "id": 407, "name": "callback", "kind": 2048, "kindString": "Method", @@ -12689,13 +14286,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 254, + "line": 307, "character": 2 } ], "signatures": [ { - "id": 356, + "id": 408, "name": "callback", "kind": 4096, "kindString": "Call signature", @@ -12705,17 +14302,17 @@ }, "parameters": [ { - "id": 357, + "id": 409, "name": "event", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 239, + "id": 280, "name": "AuthChangeEvent", "dereferenced": { - "id": 239, + "id": 280, "name": "AuthChangeEvent", "kind": 4194304, "kindString": "Type alias", @@ -12723,7 +14320,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 23, + "line": 28, "character": 12 } ], @@ -12753,6 +14350,11 @@ { "type": "literal", "value": "USER_DELETED" + }, + { + "type": "reference", + "id": 279, + "name": "AuthChangeEventMFA" } ] } @@ -12760,7 +14362,7 @@ } }, { - "id": 358, + "id": 410, "name": "session", "kind": 32768, "kindString": "Parameter", @@ -12774,7 +14376,7 @@ }, { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } ] @@ -12789,7 +14391,7 @@ ] }, { - "id": 359, + "id": 411, "name": "unsubscribe", "kind": 2048, "kindString": "Method", @@ -12797,13 +14399,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 258, + "line": 311, "character": 2 } ], "signatures": [ { - "id": 360, + "id": 412, "name": "unsubscribe", "kind": 4096, "kindString": "Call signature", @@ -12823,31 +14425,72 @@ { "title": "Properties", "kind": 1024, - "children": [354] + "children": [406] }, { "title": "Methods", "kind": 2048, - "children": [355, 359] + "children": [407, 411] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 246, + "line": 299, "character": 17 } ] }, { - "id": 317, + "id": 413, + "name": "UpdatableFactorAttributes", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "children": [ + { + "id": 414, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 315, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [414] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 314, + "character": 17 + } + ] + }, + { + "id": 368, "name": "User", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 327, + "id": 378, "name": "action_link", "kind": 1024, "kindString": "Property", @@ -12857,7 +14500,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 157, + "line": 209, "character": 2 } ], @@ -12867,7 +14510,7 @@ } }, { - "id": 319, + "id": 370, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -12875,18 +14518,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 149, + "line": 201, "character": 2 } ], "type": { "type": "reference", - "id": 310, + "id": 361, "name": "UserAppMetadata" } }, { - "id": 321, + "id": 372, "name": "aud", "kind": 1024, "kindString": "Property", @@ -12894,7 +14537,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 151, + "line": 203, "character": 2 } ], @@ -12904,7 +14547,7 @@ } }, { - "id": 322, + "id": 373, "name": "confirmation_sent_at", "kind": 1024, "kindString": "Property", @@ -12914,7 +14557,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 152, + "line": 204, "character": 2 } ], @@ -12924,7 +14567,7 @@ } }, { - "id": 331, + "id": 382, "name": "confirmed_at", "kind": 1024, "kindString": "Property", @@ -12934,7 +14577,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 161, + "line": 213, "character": 2 } ], @@ -12944,7 +14587,7 @@ } }, { - "id": 330, + "id": 381, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -12952,7 +14595,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 160, + "line": 212, "character": 2 } ], @@ -12962,7 +14605,7 @@ } }, { - "id": 328, + "id": 379, "name": "email", "kind": 1024, "kindString": "Property", @@ -12972,7 +14615,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 158, + "line": 210, "character": 2 } ], @@ -12982,7 +14625,7 @@ } }, { - "id": 324, + "id": 375, "name": "email_change_sent_at", "kind": 1024, "kindString": "Property", @@ -12992,7 +14635,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 154, + "line": 206, "character": 2 } ], @@ -13002,7 +14645,7 @@ } }, { - "id": 332, + "id": 383, "name": "email_confirmed_at", "kind": 1024, "kindString": "Property", @@ -13012,7 +14655,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 162, + "line": 214, "character": 2 } ], @@ -13022,7 +14665,31 @@ } }, { - "id": 318, + "id": 389, + "name": "factors", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 220, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + }, + { + "id": 369, "name": "id", "kind": 1024, "kindString": "Property", @@ -13030,7 +14697,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 148, + "line": 200, "character": 2 } ], @@ -13040,7 +14707,7 @@ } }, { - "id": 337, + "id": 388, "name": "identities", "kind": 1024, "kindString": "Property", @@ -13050,7 +14717,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 167, + "line": 219, "character": 2 } ], @@ -13058,13 +14725,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 299, + "id": 343, "name": "UserIdentity" } } }, { - "id": 326, + "id": 377, "name": "invited_at", "kind": 1024, "kindString": "Property", @@ -13074,7 +14741,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 156, + "line": 208, "character": 2 } ], @@ -13084,7 +14751,7 @@ } }, { - "id": 334, + "id": 385, "name": "last_sign_in_at", "kind": 1024, "kindString": "Property", @@ -13094,7 +14761,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 164, + "line": 216, "character": 2 } ], @@ -13104,7 +14771,7 @@ } }, { - "id": 325, + "id": 376, "name": "new_email", "kind": 1024, "kindString": "Property", @@ -13114,7 +14781,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 155, + "line": 207, "character": 2 } ], @@ -13124,7 +14791,7 @@ } }, { - "id": 329, + "id": 380, "name": "phone", "kind": 1024, "kindString": "Property", @@ -13134,7 +14801,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 159, + "line": 211, "character": 2 } ], @@ -13144,7 +14811,7 @@ } }, { - "id": 333, + "id": 384, "name": "phone_confirmed_at", "kind": 1024, "kindString": "Property", @@ -13154,7 +14821,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 163, + "line": 215, "character": 2 } ], @@ -13164,7 +14831,7 @@ } }, { - "id": 323, + "id": 374, "name": "recovery_sent_at", "kind": 1024, "kindString": "Property", @@ -13174,7 +14841,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 153, + "line": 205, "character": 2 } ], @@ -13184,7 +14851,7 @@ } }, { - "id": 335, + "id": 386, "name": "role", "kind": 1024, "kindString": "Property", @@ -13194,7 +14861,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 165, + "line": 217, "character": 2 } ], @@ -13204,7 +14871,7 @@ } }, { - "id": 336, + "id": 387, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -13214,7 +14881,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 166, + "line": 218, "character": 2 } ], @@ -13224,7 +14891,7 @@ } }, { - "id": 320, + "id": 371, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -13232,13 +14899,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 150, + "line": 202, "character": 2 } ], "type": { "type": "reference", - "id": 314, + "id": 365, "name": "UserMetadata" } } @@ -13248,28 +14915,28 @@ "title": "Properties", "kind": 1024, "children": [ - 327, 319, 321, 322, 331, 330, 328, 324, 332, 318, 337, 326, 334, 325, 329, 333, 323, - 335, 336, 320 + 378, 370, 372, 373, 382, 381, 379, 375, 383, 389, 369, 388, 377, 385, 376, 380, 384, + 374, 386, 387, 371 ] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 147, + "line": 199, "character": 17 } ] }, { - "id": 310, + "id": 361, "name": "UserAppMetadata", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 311, + "id": 362, "name": "provider", "kind": 1024, "kindString": "Property", @@ -13279,7 +14946,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 139, + "line": 191, "character": 2 } ], @@ -13293,25 +14960,25 @@ { "title": "Properties", "kind": 1024, - "children": [311] + "children": [362] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 138, + "line": 190, "character": 17 } ], "indexSignature": { - "id": 312, + "id": 363, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 313, + "id": 364, "name": "key", "kind": 32768, "flags": {}, @@ -13328,14 +14995,14 @@ } }, { - "id": 338, + "id": 390, "name": "UserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 342, + "id": 394, "name": "data", "kind": 1024, "kindString": "Property", @@ -13349,7 +15016,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -13359,7 +15026,7 @@ } }, { - "id": 339, + "id": 391, "name": "email", "kind": 1024, "kindString": "Property", @@ -13372,7 +15039,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -13382,7 +15049,7 @@ } }, { - "id": 341, + "id": 393, "name": "password", "kind": 1024, "kindString": "Property", @@ -13395,7 +15062,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -13405,7 +15072,7 @@ } }, { - "id": 340, + "id": 392, "name": "phone", "kind": 1024, "kindString": "Property", @@ -13418,7 +15085,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -13432,33 +15099,33 @@ { "title": "Properties", "kind": 1024, - "children": [342, 339, 341, 340] + "children": [394, 391, 393, 392] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 170, + "line": 223, "character": 17 } ], "extendedBy": [ { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } ] }, { - "id": 299, + "id": 343, "name": "UserIdentity", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 307, + "id": 351, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -13466,7 +15133,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 133, + "line": 158, "character": 2 } ], @@ -13476,7 +15143,7 @@ } }, { - "id": 300, + "id": 344, "name": "id", "kind": 1024, "kindString": "Property", @@ -13484,7 +15151,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 127, + "line": 152, "character": 2 } ], @@ -13494,7 +15161,7 @@ } }, { - "id": 302, + "id": 346, "name": "identity_data", "kind": 1024, "kindString": "Property", @@ -13502,27 +15169,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 129, + "line": 154, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 303, + "id": 347, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "indexSignature": { - "id": 304, + "id": 348, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 305, + "id": 349, "name": "key", "kind": 32768, "flags": {}, @@ -13541,7 +15208,7 @@ } }, { - "id": 308, + "id": 352, "name": "last_sign_in_at", "kind": 1024, "kindString": "Property", @@ -13549,7 +15216,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 134, + "line": 159, "character": 2 } ], @@ -13559,7 +15226,7 @@ } }, { - "id": 306, + "id": 350, "name": "provider", "kind": 1024, "kindString": "Property", @@ -13567,7 +15234,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 132, + "line": 157, "character": 2 } ], @@ -13577,7 +15244,7 @@ } }, { - "id": 309, + "id": 353, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -13587,7 +15254,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 135, + "line": 160, "character": 2 } ], @@ -13597,7 +15264,7 @@ } }, { - "id": 301, + "id": 345, "name": "user_id", "kind": 1024, "kindString": "Property", @@ -13605,7 +15272,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 128, + "line": 153, "character": 2 } ], @@ -13619,19 +15286,19 @@ { "title": "Properties", "kind": 1024, - "children": [307, 300, 302, 308, 306, 309, 301] + "children": [351, 344, 346, 352, 350, 353, 345] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 126, + "line": 151, "character": 17 } ] }, { - "id": 314, + "id": 365, "name": "UserMetadata", "kind": 256, "kindString": "Interface", @@ -13639,19 +15306,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 143, + "line": 195, "character": 17 } ], "indexSignature": { - "id": 315, + "id": 366, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 316, + "id": 367, "name": "key", "kind": 32768, "flags": {}, @@ -13668,14 +15335,14 @@ } }, { - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 427, + "id": 483, "name": "email", "kind": 1024, "kindString": "Property", @@ -13686,7 +15353,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 384, + "line": 453, "character": 2 } ], @@ -13696,7 +15363,7 @@ } }, { - "id": 430, + "id": 486, "name": "options", "kind": 1024, "kindString": "Property", @@ -13706,21 +15373,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 389, + "line": 458, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 431, + "id": 487, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 433, + "id": 489, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -13733,7 +15400,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 393, + "line": 462, "character": 4 } ], @@ -13743,7 +15410,7 @@ } }, { - "id": 432, + "id": 488, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -13756,7 +15423,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 391, + "line": 460, "character": 4 } ], @@ -13770,14 +15437,14 @@ { "title": "Properties", "kind": 1024, - "children": [433, 432] + "children": [489, 488] } ] } } }, { - "id": 428, + "id": 484, "name": "token", "kind": 1024, "kindString": "Property", @@ -13788,7 +15455,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 386, + "line": 455, "character": 2 } ], @@ -13798,7 +15465,7 @@ } }, { - "id": 429, + "id": 485, "name": "type", "kind": 1024, "kindString": "Property", @@ -13809,13 +15476,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 388, + "line": 457, "character": 2 } ], "type": { "type": "reference", - "id": 435, + "id": 491, "name": "EmailOtpType" } } @@ -13824,26 +15491,26 @@ { "title": "Properties", "kind": 1024, - "children": [427, 430, 428, 429] + "children": [483, 486, 484, 485] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 382, + "line": 451, "character": 17 } ] }, { - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 422, + "id": 478, "name": "options", "kind": 1024, "kindString": "Property", @@ -13853,21 +15520,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 375, + "line": 444, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 423, + "id": 479, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 425, + "id": 481, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -13880,7 +15547,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 379, + "line": 448, "character": 4 } ], @@ -13890,7 +15557,7 @@ } }, { - "id": 424, + "id": 480, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -13903,7 +15570,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 377, + "line": 446, "character": 4 } ], @@ -13917,14 +15584,14 @@ { "title": "Properties", "kind": 1024, - "children": [425, 424] + "children": [481, 480] } ] } } }, { - "id": 419, + "id": 475, "name": "phone", "kind": 1024, "kindString": "Property", @@ -13935,7 +15602,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 370, + "line": 439, "character": 2 } ], @@ -13945,7 +15612,7 @@ } }, { - "id": 420, + "id": 476, "name": "token", "kind": 1024, "kindString": "Property", @@ -13956,7 +15623,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 372, + "line": 441, "character": 2 } ], @@ -13966,7 +15633,7 @@ } }, { - "id": 421, + "id": 477, "name": "type", "kind": 1024, "kindString": "Property", @@ -13977,13 +15644,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 374, + "line": 443, "character": 2 } ], "type": { "type": "reference", - "id": 434, + "id": 490, "name": "MobileOtpType" } } @@ -13992,19 +15659,19 @@ { "title": "Properties", "kind": 1024, - "children": [422, 419, 420, 421] + "children": [478, 475, 476, 477] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 368, + "line": 437, "character": 17 } ] }, { - "id": 239, + "id": 280, "name": "AuthChangeEvent", "kind": 4194304, "kindString": "Type alias", @@ -14012,7 +15679,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 23, + "line": 28, "character": 12 } ], @@ -14042,20 +15709,149 @@ { "type": "literal", "value": "USER_DELETED" + }, + { + "type": "reference", + "id": 279, + "name": "AuthChangeEventMFA" } ] } }, { - "id": 253, - "name": "AuthResponse", + "id": 279, + "name": "AuthChangeEventMFA", "kind": 4194304, "kindString": "Type alias", "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, "sources": [ { "fileName": "src/lib/types.ts", - "line": 50, + "line": 26, + "character": 12 + } + ], + "type": { + "type": "literal", + "value": "MFA_CHALLENGE_VERIFIED" + } + }, + { + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 658, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 659, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the MFA factor to delete." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 868, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 660, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user whose factor is being deleted." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 871, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [659, 660] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 45 + } + ] + } + } + }, + { + "id": 648, + "name": "AuthMFAAdminDeleteFactorResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 853, "character": 12 } ], @@ -14065,14 +15861,14 @@ { "type": "reflection", "declaration": { - "id": 254, + "id": 649, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 255, + "id": 650, "name": "data", "kind": 1024, "kindString": "Property", @@ -14080,29 +15876,1058 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 52, + "line": 855, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 256, + "id": 651, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 258, - "name": "session", + "id": 652, + "name": "id", "kind": 1024, "kindString": "Property", "flags": {}, + "comment": { + "shortText": "ID of the factor that was successfully deleted." + }, "sources": [ { "fileName": "src/lib/types.ts", - "line": 54, + "line": 857, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [652] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 855, + "character": 12 + } + ] + } + } + }, + { + "id": 653, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 859, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [650, 653] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 854, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 654, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 655, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 656, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [655, 656] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 671, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 672, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user for which to list all MFA factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 892, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [672] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 44 + } + ] + } + } + }, + { + "id": 661, + "name": "AuthMFAAdminListFactorsResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 877, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 662, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 663, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 879, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 664, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 665, + "name": "factors", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "All factors attached to the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 881, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [665] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 879, + "character": 12 + } + ] + } + } + }, + { + "id": 666, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 883, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [663, 666] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 878, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 667, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 668, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 669, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [668, 669] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 596, + "name": "AuthMFAChallengeResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 693, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 597, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 598, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 695, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 599, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 601, + "name": "expires_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Timestamp in UNIX seconds when this challenge will no longer be usable." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 700, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 600, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the newly created challenge." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 697, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [601, 600] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 695, + "character": 12 + } + ] + } + } + }, + { + "id": 602, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 702, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [598, 602] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 694, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 603, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 604, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 605, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [604, 605] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 572, + "name": "AuthMFAEnrollResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 644, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 573, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 574, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 646, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 575, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 576, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor that was just enrolled (in an unverified state)." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 648, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 578, + "name": "totp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "TOTP enrollment information." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 654, + "character": 8 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 579, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 580, + "name": "qr_code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Contains a QR code encoding the authenticator URI. You can\nconvert it to a URL by prepending `data:image/svg+xml;utf-8,` to\nthe value. Avoid logging this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 658, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 581, + "name": "secret", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The TOTP secret (also encoded in the QR code). Show this secret\nin a password-style field to the user, in case they are unable to\nscan the QR code. Avoid logging this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 663, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 582, + "name": "uri", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The authenticator URI encoded within the QR code, should you need\nto use it. Avoid loggin this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 667, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [580, 581, 582] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 654, + "character": 14 + } + ] + } + } + }, + { + "id": 577, + "name": "type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of MFA factor. Only `totp` supported for now." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 651, + "character": 8 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [576, 578, 577] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 646, + "character": 12 + } + ] + } + } + }, + { + "id": 583, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 670, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [574, 583] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 645, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 584, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 585, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 673, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 586, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 674, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [585, 586] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 672, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 617, + "name": "AuthMFAGetAuthenticatorAssuranceLevelResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 730, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 618, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 619, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 732, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 620, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 623, + "name": "currentAuthenticationMethods", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "A list of all authentication methods attached to this session. Use\nthe information here to detect the last time a user verified a\nfactor, for example if implementing a step-up scenario." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 749, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 340, + "name": "AMREntry" + } + } + }, + { + "id": 621, + "name": "currentLevel", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Current AAL level of the session." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 734, "character": 8 } ], @@ -14111,7 +16936,937 @@ "types": [ { "type": "reference", - "id": 290, + "id": 616, + "name": "AuthenticatorAssuranceLevels" + }, + { + "type": "literal", + "value": null + } + ] + } + }, + { + "id": 622, + "name": "nextLevel", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Next possible AAL level for the session. If the next level is higher\nthan the current one, the user should go through MFA.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 742, + "character": 8 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 616, + "name": "AuthenticatorAssuranceLevels" + }, + { + "type": "literal", + "value": null + } + ] + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [623, 621, 622] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 732, + "character": 12 + } + ] + } + } + }, + { + "id": 624, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 751, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [619, 624] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 731, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 625, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 626, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 627, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [626, 627] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 606, + "name": "AuthMFAListFactorsResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 709, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 607, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 608, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 711, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 609, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 610, + "name": "all", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "All available factors (verified and unverified)." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 713, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + }, + { + "id": 611, + "name": "totp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Only verified TOTP factors. (A subset of `all`.)" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 716, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [610, 611] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 711, + "character": 12 + } + ] + } + } + }, + { + "id": 612, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 718, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [608, 612] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 710, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 613, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 614, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 615, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [614, 615] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 587, + "name": "AuthMFAUnenrollResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 680, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 588, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 589, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 682, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 590, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 591, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor that was successfully unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 684, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [591] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 682, + "character": 12 + } + ] + } + } + }, + { + "id": 592, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 686, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [589, 592] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 681, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 593, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 594, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 595, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [594, 595] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 559, + "name": "AuthMFAVerifyResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 616, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 560, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 561, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 618, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 562, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 563, + "name": "access_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "New access token (JWT) after successful verification." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 620, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 565, + "name": "expires_in", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Number of seconds in which the access token will expire." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 626, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 566, + "name": "refresh_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Refresh token you can use to obtain new access tokens when expired." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 629, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 564, + "name": "token_type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of token, typically `Bearer`." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 623, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 567, + "name": "user", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Updated user profile." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 632, + "character": 8 + } + ], + "type": { + "type": "reference", + "id": 368, + "name": "User" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [563, 565, 566, 564, 567] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 618, + "character": 12 + } + ] + } + } + }, + { + "id": 568, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 634, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [561, 568] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 617, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 569, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 570, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 637, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 571, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 638, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [570, 571] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 636, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 294, + "name": "AuthResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 56, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 295, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 296, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 58, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 297, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 299, + "name": "session", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 60, + "character": 8 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 331, "name": "Session" }, { @@ -14122,7 +17877,7 @@ } }, { - "id": 257, + "id": 298, "name": "user", "kind": 1024, "kindString": "Property", @@ -14130,7 +17885,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 53, + "line": 59, "character": 8 } ], @@ -14139,7 +17894,7 @@ "types": [ { "type": "reference", - "id": 317, + "id": 368, "name": "User" }, { @@ -14154,13 +17909,13 @@ { "title": "Properties", "kind": 1024, - "children": [258, 257] + "children": [299, 298] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 52, + "line": 58, "character": 12 } ] @@ -14168,7 +17923,7 @@ } }, { - "id": 259, + "id": 300, "name": "error", "kind": 1024, "kindString": "Property", @@ -14176,7 +17931,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 56, + "line": 62, "character": 6 } ], @@ -14190,13 +17945,13 @@ { "title": "Properties", "kind": 1024, - "children": [255, 259] + "children": [296, 300] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 51, + "line": 57, "character": 4 } ] @@ -14205,14 +17960,14 @@ { "type": "reflection", "declaration": { - "id": 260, + "id": 301, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 261, + "id": 302, "name": "data", "kind": 1024, "kindString": "Property", @@ -14220,21 +17975,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 59, + "line": 65, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 262, + "id": 303, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 264, + "id": 305, "name": "session", "kind": 1024, "kindString": "Property", @@ -14242,7 +17997,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 61, + "line": 67, "character": 8 } ], @@ -14252,7 +18007,7 @@ } }, { - "id": 263, + "id": 304, "name": "user", "kind": 1024, "kindString": "Property", @@ -14260,7 +18015,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 60, + "line": 66, "character": 8 } ], @@ -14274,13 +18029,13 @@ { "title": "Properties", "kind": 1024, - "children": [264, 263] + "children": [305, 304] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 59, + "line": 65, "character": 12 } ] @@ -14288,7 +18043,7 @@ } }, { - "id": 265, + "id": 306, "name": "error", "kind": 1024, "kindString": "Property", @@ -14296,13 +18051,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 63, + "line": 69, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -14311,13 +18066,13 @@ { "title": "Properties", "kind": 1024, - "children": [261, 265] + "children": [302, 306] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 58, + "line": 64, "character": 4 } ] @@ -14327,7 +18082,42 @@ } }, { - "id": 487, + "id": 616, + "name": "AuthenticatorAssuranceLevels", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 725, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "aal1" + }, + { + "type": "literal", + "value": "aal2" + } + ] + } + }, + { + "id": 684, "name": "CallRefreshTokenResult", "kind": 4194304, "kindString": "Type alias", @@ -14335,7 +18125,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 508, + "line": 933, "character": 12 } ], @@ -14345,14 +18135,14 @@ { "type": "reflection", "declaration": { - "id": 488, + "id": 685, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 490, + "id": 687, "name": "error", "kind": 1024, "kindString": "Property", @@ -14360,7 +18150,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 511, + "line": 936, "character": 6 } ], @@ -14370,7 +18160,7 @@ } }, { - "id": 489, + "id": 686, "name": "session", "kind": 1024, "kindString": "Property", @@ -14378,13 +18168,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 510, + "line": 935, "character": 6 } ], "type": { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } } @@ -14393,13 +18183,13 @@ { "title": "Properties", "kind": 1024, - "children": [490, 489] + "children": [687, 686] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 509, + "line": 934, "character": 4 } ] @@ -14408,14 +18198,14 @@ { "type": "reflection", "declaration": { - "id": 491, + "id": 688, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 493, + "id": 690, "name": "error", "kind": 1024, "kindString": "Property", @@ -14423,18 +18213,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 515, + "line": 940, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } }, { - "id": 492, + "id": 689, "name": "session", "kind": 1024, "kindString": "Property", @@ -14442,7 +18232,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 514, + "line": 939, "character": 6 } ], @@ -14456,13 +18246,13 @@ { "title": "Properties", "kind": 1024, - "children": [493, 492] + "children": [690, 689] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 513, + "line": 938, "character": 4 } ] @@ -14472,7 +18262,7 @@ } }, { - "id": 435, + "id": 491, "name": "EmailOtpType", "kind": 4194304, "kindString": "Type alias", @@ -14480,7 +18270,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 398, + "line": 467, "character": 12 } ], @@ -14511,7 +18301,7 @@ } }, { - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -14519,21 +18309,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 421, + "line": 490, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 453, + "id": 509, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 455, + "id": 511, "name": "email", "kind": 1024, "kindString": "Property", @@ -14544,7 +18334,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 424, + "line": 493, "character": 2 } ], @@ -14554,7 +18344,7 @@ } }, { - "id": 456, + "id": 512, "name": "newEmail", "kind": 1024, "kindString": "Property", @@ -14565,7 +18355,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 428, + "line": 497, "character": 2 } ], @@ -14575,7 +18365,7 @@ } }, { - "id": 457, + "id": 513, "name": "options", "kind": 1024, "kindString": "Property", @@ -14585,7 +18375,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 429, + "line": 498, "character": 2 } ], @@ -14594,7 +18384,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -14608,7 +18398,7 @@ } }, { - "id": 454, + "id": 510, "name": "type", "kind": 1024, "kindString": "Property", @@ -14616,7 +18406,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 422, + "line": 491, "character": 2 } ], @@ -14639,13 +18429,13 @@ { "title": "Properties", "kind": 1024, - "children": [455, 456, 457, 454] + "children": [511, 512, 513, 510] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 421, + "line": 490, "character": 44 } ] @@ -14653,7 +18443,7 @@ } }, { - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams", "kind": 4194304, "kindString": "Type alias", @@ -14661,21 +18451,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 407, + "line": 476, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 443, + "id": 499, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 445, + "id": 501, "name": "email", "kind": 1024, "kindString": "Property", @@ -14686,7 +18476,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 410, + "line": 479, "character": 2 } ], @@ -14696,7 +18486,7 @@ } }, { - "id": 446, + "id": 502, "name": "options", "kind": 1024, "kindString": "Property", @@ -14706,7 +18496,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 411, + "line": 480, "character": 2 } ], @@ -14715,7 +18505,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -14738,7 +18528,7 @@ } }, { - "id": 444, + "id": 500, "name": "type", "kind": 1024, "kindString": "Property", @@ -14746,7 +18536,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 408, + "line": 477, "character": 2 } ], @@ -14769,13 +18559,13 @@ { "title": "Properties", "kind": 1024, - "children": [445, 446, 444] + "children": [501, 502, 500] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 407, + "line": 476, "character": 46 } ] @@ -14783,7 +18573,7 @@ } }, { - "id": 461, + "id": 517, "name": "GenerateLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -14791,7 +18581,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 443, + "line": 512, "character": 12 } ], @@ -14800,29 +18590,29 @@ "types": [ { "type": "reference", - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams" }, { "type": "reference", - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams" }, { "type": "reference", - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams" }, { "type": "reference", - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams" } ] } }, { - "id": 475, + "id": 531, "name": "GenerateLinkProperties", "kind": 4194304, "kindString": "Type alias", @@ -14833,21 +18623,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 466, + "line": 535, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 476, + "id": 532, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 477, + "id": 533, "name": "action_link", "kind": 1024, "kindString": "Property", @@ -14858,7 +18648,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 471, + "line": 540, "character": 2 } ], @@ -14868,7 +18658,7 @@ } }, { - "id": 478, + "id": 534, "name": "email_otp", "kind": 1024, "kindString": "Property", @@ -14879,7 +18669,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 476, + "line": 545, "character": 2 } ], @@ -14889,7 +18679,7 @@ } }, { - "id": 479, + "id": 535, "name": "hashed_token", "kind": 1024, "kindString": "Property", @@ -14900,7 +18690,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 480, + "line": 549, "character": 2 } ], @@ -14910,7 +18700,7 @@ } }, { - "id": 480, + "id": 536, "name": "redirect_to", "kind": 1024, "kindString": "Property", @@ -14921,7 +18711,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 482, + "line": 551, "character": 2 } ], @@ -14931,7 +18721,7 @@ } }, { - "id": 481, + "id": 537, "name": "verification_type", "kind": 1024, "kindString": "Property", @@ -14942,13 +18732,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 484, + "line": 553, "character": 2 } ], "type": { "type": "reference", - "id": 482, + "id": 538, "name": "GenerateLinkType" } } @@ -14957,13 +18747,13 @@ { "title": "Properties", "kind": 1024, - "children": [477, 478, 479, 480, 481] + "children": [533, 534, 535, 536, 537] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 466, + "line": 535, "character": 37 } ] @@ -14971,7 +18761,7 @@ } }, { - "id": 462, + "id": 518, "name": "GenerateLinkResponse", "kind": 4194304, "kindString": "Type alias", @@ -14979,7 +18769,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 449, + "line": 518, "character": 12 } ], @@ -14989,14 +18779,14 @@ { "type": "reflection", "declaration": { - "id": 463, + "id": 519, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 464, + "id": 520, "name": "data", "kind": 1024, "kindString": "Property", @@ -15004,21 +18794,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 451, + "line": 520, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 465, + "id": 521, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 466, + "id": 522, "name": "properties", "kind": 1024, "kindString": "Property", @@ -15026,18 +18816,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 452, + "line": 521, "character": 8 } ], "type": { "type": "reference", - "id": 475, + "id": 531, "name": "GenerateLinkProperties" } }, { - "id": 467, + "id": 523, "name": "user", "kind": 1024, "kindString": "Property", @@ -15045,13 +18835,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 453, + "line": 522, "character": 8 } ], "type": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -15060,13 +18850,13 @@ { "title": "Properties", "kind": 1024, - "children": [466, 467] + "children": [522, 523] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 451, + "line": 520, "character": 12 } ] @@ -15074,7 +18864,7 @@ } }, { - "id": 468, + "id": 524, "name": "error", "kind": 1024, "kindString": "Property", @@ -15082,7 +18872,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 455, + "line": 524, "character": 6 } ], @@ -15096,13 +18886,13 @@ { "title": "Properties", "kind": 1024, - "children": [464, 468] + "children": [520, 524] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 450, + "line": 519, "character": 4 } ] @@ -15111,14 +18901,14 @@ { "type": "reflection", "declaration": { - "id": 469, + "id": 525, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 470, + "id": 526, "name": "data", "kind": 1024, "kindString": "Property", @@ -15126,21 +18916,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 458, + "line": 527, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 471, + "id": 527, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 472, + "id": 528, "name": "properties", "kind": 1024, "kindString": "Property", @@ -15148,7 +18938,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 459, + "line": 528, "character": 8 } ], @@ -15158,7 +18948,7 @@ } }, { - "id": 473, + "id": 529, "name": "user", "kind": 1024, "kindString": "Property", @@ -15166,7 +18956,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 460, + "line": 529, "character": 8 } ], @@ -15180,13 +18970,13 @@ { "title": "Properties", "kind": 1024, - "children": [472, 473] + "children": [528, 529] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 458, + "line": 527, "character": 12 } ] @@ -15194,7 +18984,7 @@ } }, { - "id": 474, + "id": 530, "name": "error", "kind": 1024, "kindString": "Property", @@ -15202,13 +18992,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 462, + "line": 531, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -15217,13 +19007,13 @@ { "title": "Properties", "kind": 1024, - "children": [470, 474] + "children": [526, 530] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 457, + "line": 526, "character": 4 } ] @@ -15233,7 +19023,7 @@ } }, { - "id": 482, + "id": 538, "name": "GenerateLinkType", "kind": 4194304, "kindString": "Type alias", @@ -15241,7 +19031,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 487, + "line": 556, "character": 12 } ], @@ -15276,7 +19066,7 @@ } }, { - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -15284,21 +19074,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 414, + "line": 483, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 448, + "id": 504, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 450, + "id": 506, "name": "email", "kind": 1024, "kindString": "Property", @@ -15309,7 +19099,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 417, + "line": 486, "character": 2 } ], @@ -15319,7 +19109,7 @@ } }, { - "id": 451, + "id": 507, "name": "options", "kind": 1024, "kindString": "Property", @@ -15329,7 +19119,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 418, + "line": 487, "character": 2 } ], @@ -15338,7 +19128,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -15352,7 +19142,7 @@ } }, { - "id": 449, + "id": 505, "name": "type", "kind": 1024, "kindString": "Property", @@ -15360,7 +19150,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 415, + "line": 484, "character": 2 } ], @@ -15374,13 +19164,13 @@ { "title": "Properties", "kind": 1024, - "children": [450, 451, 449] + "children": [506, 507, 505] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 414, + "line": 483, "character": 41 } ] @@ -15388,7 +19178,7 @@ } }, { - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -15396,21 +19186,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 400, + "line": 469, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 437, + "id": 493, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 439, + "id": 495, "name": "email", "kind": 1024, "kindString": "Property", @@ -15418,7 +19208,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 402, + "line": 471, "character": 2 } ], @@ -15428,7 +19218,7 @@ } }, { - "id": 441, + "id": 497, "name": "options", "kind": 1024, "kindString": "Property", @@ -15438,7 +19228,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 404, + "line": 473, "character": 2 } ], @@ -15447,7 +19237,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -15470,7 +19260,7 @@ } }, { - "id": 440, + "id": 496, "name": "password", "kind": 1024, "kindString": "Property", @@ -15478,7 +19268,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 403, + "line": 472, "character": 2 } ], @@ -15488,7 +19278,7 @@ } }, { - "id": 438, + "id": 494, "name": "type", "kind": 1024, "kindString": "Property", @@ -15496,7 +19286,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 401, + "line": 470, "character": 2 } ], @@ -15510,13 +19300,13 @@ { "title": "Properties", "kind": 1024, - "children": [439, 441, 440, 438] + "children": [495, 497, 496, 494] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 400, + "line": 469, "character": 39 } ] @@ -15524,7 +19314,7 @@ } }, { - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "kind": 4194304, "kindString": "Type alias", @@ -15532,67 +19322,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 241, + "id": 282, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 249, + "id": 290, "name": "autoRefreshToken", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 41, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 248, - "name": "detectSessionInUrl", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 39, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 252, - "name": "fetch", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, "sources": [ { "fileName": "src/lib/types.ts", @@ -15600,13 +19350,53 @@ "character": 2 } ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 289, + "name": "detectSessionInUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 45, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 293, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 53, + "character": 2 + } + ], "type": { "type": "reference", "name": "Fetch" } }, { - "id": 243, + "id": 284, "name": "headers", "kind": 1024, "kindString": "Property", @@ -15616,14 +19406,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 244, + "id": 285, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -15631,19 +19421,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 12 } ], "indexSignature": { - "id": 245, + "id": 286, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 246, + "id": 287, "name": "key", "kind": 32768, "flags": {}, @@ -15662,13 +19452,54 @@ } }, { - "id": 250, + "id": 291, "name": "persistSession", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 49, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 292, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 51, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 680, + "name": "SupportedStorage" + } + }, + { + "id": 288, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, "sources": [ { "fileName": "src/lib/types.ts", @@ -15676,54 +19507,13 @@ "character": 2 } ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 251, - "name": "storage", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 45, - "character": 2 - } - ], - "type": { - "type": "reference", - "id": 483, - "name": "SupportedStorage" - } - }, - { - "id": 247, - "name": "storageKey", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 37, - "character": 2 - } - ], "type": { "type": "intrinsic", "name": "string" } }, { - "id": 242, + "id": 283, "name": "url", "kind": 1024, "kindString": "Property", @@ -15733,7 +19523,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 33, + "line": 39, "character": 2 } ], @@ -15747,13 +19537,13 @@ { "title": "Properties", "kind": 1024, - "children": [249, 248, 252, 243, 250, 251, 247, 242] + "children": [290, 289, 293, 284, 291, 292, 288, 283] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 34 } ] @@ -15761,7 +19551,7 @@ } }, { - "id": 484, + "id": 681, "name": "InitializeResult", "kind": 4194304, "kindString": "Type alias", @@ -15769,21 +19559,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 485, + "id": 682, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 486, + "id": 683, "name": "error", "kind": 1024, "kindString": "Property", @@ -15791,7 +19581,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 33 } ], @@ -15800,7 +19590,7 @@ "types": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" }, { @@ -15815,13 +19605,13 @@ { "title": "Properties", "kind": 1024, - "children": [486] + "children": [683] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 31 } ] @@ -15829,7 +19619,452 @@ } }, { - "id": 434, + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 556, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 558, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 610, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 557, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 608, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [558, 557] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 42 + } + ] + } + } + }, + { + "id": 552, + "name": "MFAChallengeParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 553, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 554, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor to be challenged." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 600, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [554] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 33 + } + ] + } + } + }, + { + "id": 539, + "name": "MFAEnrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 540, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 541, + "name": "factorType", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 568, + "character": 2 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + }, + { + "id": 543, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 570, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 542, + "name": "issuer", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 569, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [541, 543, 542] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 30 + } + ] + } + } + }, + { + "id": 544, + "name": "MFAUnenrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 545, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 546, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 578, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [546] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 32 + } + ] + } + } + }, + { + "id": 547, + "name": "MFAVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 548, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 550, + "name": "challengeId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the challenge being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 589, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 551, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 592, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 549, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 586, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [550, 551, 549] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 30 + } + ] + } + } + }, + { + "id": 490, "name": "MobileOtpType", "kind": 4194304, "kindString": "Type alias", @@ -15837,7 +20072,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 397, + "line": 466, "character": 12 } ], @@ -15856,7 +20091,7 @@ } }, { - "id": 266, + "id": 307, "name": "OAuthResponse", "kind": 4194304, "kindString": "Type alias", @@ -15864,7 +20099,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 66, + "line": 72, "character": 12 } ], @@ -15874,14 +20109,14 @@ { "type": "reflection", "declaration": { - "id": 267, + "id": 308, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 268, + "id": 309, "name": "data", "kind": 1024, "kindString": "Property", @@ -15889,21 +20124,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 68, + "line": 74, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 269, + "id": 310, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 270, + "id": 311, "name": "provider", "kind": 1024, "kindString": "Property", @@ -15911,18 +20146,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 69, + "line": 75, "character": 8 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } }, { - "id": 271, + "id": 312, "name": "url", "kind": 1024, "kindString": "Property", @@ -15930,7 +20165,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 70, + "line": 76, "character": 8 } ], @@ -15944,13 +20179,13 @@ { "title": "Properties", "kind": 1024, - "children": [270, 271] + "children": [311, 312] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 68, + "line": 74, "character": 12 } ] @@ -15958,7 +20193,7 @@ } }, { - "id": 272, + "id": 313, "name": "error", "kind": 1024, "kindString": "Property", @@ -15966,7 +20201,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 72, + "line": 78, "character": 6 } ], @@ -15980,13 +20215,13 @@ { "title": "Properties", "kind": 1024, - "children": [268, 272] + "children": [309, 313] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 67, + "line": 73, "character": 4 } ] @@ -15995,14 +20230,14 @@ { "type": "reflection", "declaration": { - "id": 273, + "id": 314, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 274, + "id": 315, "name": "data", "kind": 1024, "kindString": "Property", @@ -16010,21 +20245,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 75, + "line": 81, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 275, + "id": 316, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 276, + "id": 317, "name": "provider", "kind": 1024, "kindString": "Property", @@ -16032,18 +20267,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 76, + "line": 82, "character": 8 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } }, { - "id": 277, + "id": 318, "name": "url", "kind": 1024, "kindString": "Property", @@ -16051,7 +20286,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 77, + "line": 83, "character": 8 } ], @@ -16065,13 +20300,13 @@ { "title": "Properties", "kind": 1024, - "children": [276, 277] + "children": [317, 318] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 75, + "line": 81, "character": 12 } ] @@ -16079,7 +20314,7 @@ } }, { - "id": 278, + "id": 319, "name": "error", "kind": 1024, "kindString": "Property", @@ -16087,13 +20322,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 79, + "line": 85, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -16102,13 +20337,13 @@ { "title": "Properties", "kind": 1024, - "children": [274, 278] + "children": [315, 319] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 74, + "line": 80, "character": 4 } ] @@ -16118,7 +20353,7 @@ } }, { - "id": 238, + "id": 278, "name": "Provider", "kind": 4194304, "kindString": "Type alias", @@ -16204,7 +20439,7 @@ } }, { - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "kind": 4194304, "kindString": "Type alias", @@ -16212,21 +20447,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 407, + "id": 463, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 409, + "id": 465, "name": "options", "kind": 1024, "kindString": "Property", @@ -16236,21 +20471,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 410, + "id": 466, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 413, + "id": 469, "name": "queryParams", "kind": 1024, "kindString": "Property", @@ -16263,14 +20498,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 414, + "id": 470, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -16278,19 +20513,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 18 } ], "indexSignature": { - "id": 415, + "id": 471, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 416, + "id": 472, "name": "key", "kind": 32768, "flags": {}, @@ -16309,7 +20544,7 @@ } }, { - "id": 411, + "id": 467, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -16322,7 +20557,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 359, + "line": 428, "character": 4 } ], @@ -16332,7 +20567,7 @@ } }, { - "id": 412, + "id": 468, "name": "scopes", "kind": 1024, "kindString": "Property", @@ -16345,7 +20580,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 361, + "line": 430, "character": 4 } ], @@ -16359,13 +20594,13 @@ { "title": "Properties", "kind": 1024, - "children": [413, 411, 412] + "children": [469, 467, 468] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 12 } ] @@ -16373,7 +20608,7 @@ } }, { - "id": 408, + "id": 464, "name": "provider", "kind": 1024, "kindString": "Property", @@ -16384,13 +20619,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 356, + "line": 425, "character": 2 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } } @@ -16399,13 +20634,13 @@ { "title": "Properties", "kind": 1024, - "children": [409, 408] + "children": [465, 464] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 41 } ] @@ -16413,7 +20648,7 @@ } }, { - "id": 377, + "id": 431, "name": "SignInWithPasswordCredentials", "kind": 4194304, "kindString": "Type alias", @@ -16421,7 +20656,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 296, + "line": 353, "character": 12 } ], @@ -16431,14 +20666,14 @@ { "type": "reflection", "declaration": { - "id": 378, + "id": 432, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 379, + "id": 433, "name": "email", "kind": 1024, "kindString": "Property", @@ -16449,7 +20684,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 299, + "line": 356, "character": 6 } ], @@ -16459,7 +20694,7 @@ } }, { - "id": 381, + "id": 435, "name": "options", "kind": 1024, "kindString": "Property", @@ -16469,21 +20704,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 302, + "line": 359, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 382, + "id": 436, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 383, + "id": 438, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -16496,7 +20731,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 304, + "line": 367, "character": 8 } ], @@ -16504,19 +20739,43 @@ "type": "intrinsic", "name": "string" } + }, + { + "id": 437, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 365, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [383] + "children": [438, 437] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 302, + "line": 359, "character": 16 } ] @@ -16524,7 +20783,7 @@ } }, { - "id": 380, + "id": 434, "name": "password", "kind": 1024, "kindString": "Property", @@ -16535,7 +20794,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 301, + "line": 358, "character": 6 } ], @@ -16549,13 +20808,13 @@ { "title": "Properties", "kind": 1024, - "children": [379, 381, 380] + "children": [433, 435, 434] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 297, + "line": 354, "character": 4 } ] @@ -16564,14 +20823,14 @@ { "type": "reflection", "declaration": { - "id": 384, + "id": 439, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 387, + "id": 442, "name": "options", "kind": 1024, "kindString": "Property", @@ -16581,21 +20840,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 312, + "line": 375, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 388, + "id": 443, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 389, + "id": 445, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -16608,7 +20867,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 314, + "line": 383, "character": 8 } ], @@ -16616,19 +20875,43 @@ "type": "intrinsic", "name": "string" } + }, + { + "id": 444, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 381, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [389] + "children": [445, 444] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 312, + "line": 375, "character": 16 } ] @@ -16636,7 +20919,7 @@ } }, { - "id": 386, + "id": 441, "name": "password", "kind": 1024, "kindString": "Property", @@ -16647,7 +20930,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 311, + "line": 374, "character": 6 } ], @@ -16657,7 +20940,7 @@ } }, { - "id": 385, + "id": 440, "name": "phone", "kind": 1024, "kindString": "Property", @@ -16668,7 +20951,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 309, + "line": 372, "character": 6 } ], @@ -16682,13 +20965,13 @@ { "title": "Properties", "kind": 1024, - "children": [387, 386, 385] + "children": [442, 441, 440] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 307, + "line": 370, "character": 4 } ] @@ -16698,11 +20981,371 @@ } }, { - "id": 390, + "id": 446, "name": "SignInWithPasswordlessCredentials", "kind": 4194304, "kindString": "Type alias", "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 387, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 447, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 448, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 390, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 449, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 450, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 454, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 403, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 453, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 401, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 451, + "name": "emailRedirectTo", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The redirect url embedded in the email link" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 393, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 452, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 395, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [454, 453, 451, 452] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 16 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [448, 449] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 388, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 455, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 457, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 458, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 461, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 419, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 460, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 417, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 459, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 411, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [461, 460, 459] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 16 + } + ] + } + } + }, + { + "id": 456, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 408, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [457, 456] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 406, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 415, + "name": "SignUpWithPasswordCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, "sources": [ { "fileName": "src/lib/types.ts", @@ -16716,14 +21359,14 @@ { "type": "reflection", "declaration": { - "id": 391, + "id": 416, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 392, + "id": 417, "name": "email", "kind": 1024, "kindString": "Property", @@ -16744,7 +21387,7 @@ } }, { - "id": 393, + "id": 419, "name": "options", "kind": 1024, "kindString": "Property", @@ -16754,21 +21397,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 394, + "id": 420, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 398, + "id": 423, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -16791,7 +21434,7 @@ } }, { - "id": 397, + "id": 422, "name": "data", "kind": 1024, "kindString": "Property", @@ -16815,7 +21458,7 @@ } }, { - "id": 395, + "id": 421, "name": "emailRedirectTo", "kind": 1024, "kindString": "Property", @@ -16828,7 +21471,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 324, + "line": 326, "character": 8 } ], @@ -16836,54 +21479,52 @@ "type": "intrinsic", "name": "string" } - }, - { - "id": 396, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 326, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [398, 397, 395, 396] + "children": [423, 422, 421] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 16 } ] } } + }, + { + "id": 418, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 323, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [392, 393] + "children": [417, 419, 418] } ], "sources": [ @@ -16898,14 +21539,14 @@ { "type": "reflection", "declaration": { - "id": 399, + "id": 424, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 401, + "id": 427, "name": "options", "kind": 1024, "kindString": "Property", @@ -16915,21 +21556,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 402, + "id": 428, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 405, + "id": 430, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -16952,7 +21593,7 @@ } }, { - "id": 404, + "id": 429, "name": "data", "kind": 1024, "kindString": "Property", @@ -16974,42 +21615,19 @@ "type": "intrinsic", "name": "object" } - }, - { - "id": 403, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 342, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [405, 404, 403] + "children": [430, 429] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 16 } ] @@ -17017,7 +21635,28 @@ } }, { - "id": 400, + "id": 426, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 341, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 425, "name": "phone", "kind": 1024, "kindString": "Property", @@ -17042,7 +21681,7 @@ { "title": "Properties", "kind": 1024, - "children": [401, 400] + "children": [427, 426, 425] } ], "sources": [ @@ -17058,363 +21697,7 @@ } }, { - "id": 361, - "name": "SignUpWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 261, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 362, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 363, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 264, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 365, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 366, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 369, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 277, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 368, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 275, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - }, - { - "id": 367, - "name": "emailRedirectTo", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "The redirect url embedded in the email link" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 269, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [369, 368, 367] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 16 - } - ] - } - } - }, - { - "id": 364, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 266, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [363, 365, 364] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 262, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 370, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 373, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 374, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 376, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 293, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 375, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 291, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [376, 375] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 16 - } - ] - } - } - }, - { - "id": 372, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 284, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 371, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 282, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [373, 372, 371] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 280, - "character": 4 - } - ] - } - } - ] - } - }, - { - "id": 483, + "id": 680, "name": "SupportedStorage", "kind": 4194304, "kindString": "Type alias", @@ -17422,7 +21705,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 504, + "line": 929, "character": 12 } ], @@ -17465,7 +21748,7 @@ } }, { - "id": 279, + "id": 320, "name": "UserResponse", "kind": 4194304, "kindString": "Type alias", @@ -17473,7 +21756,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 82, + "line": 88, "character": 12 } ], @@ -17483,117 +21766,14 @@ { "type": "reflection", "declaration": { - "id": 280, + "id": 321, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 281, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 84, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 282, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 283, - "name": "user", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 85, - "character": 8 - } - ], - "type": { - "type": "reference", - "id": 317, - "name": "User" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [283] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 84, - "character": 12 - } - ] - } - } - }, - { - "id": 284, - "name": "error", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 87, - "character": 6 - } - ], - "type": { - "type": "literal", - "value": null - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [281, 284] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 83, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 285, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 286, + "id": 322, "name": "data", "kind": 1024, "kindString": "Property", @@ -17608,14 +21788,14 @@ "type": { "type": "reflection", "declaration": { - "id": 287, + "id": 323, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 288, + "id": 324, "name": "user", "kind": 1024, "kindString": "Property", @@ -17628,8 +21808,9 @@ } ], "type": { - "type": "literal", - "value": null + "type": "reference", + "id": 368, + "name": "User" } } ], @@ -17637,7 +21818,7 @@ { "title": "Properties", "kind": 1024, - "children": [288] + "children": [324] } ], "sources": [ @@ -17651,7 +21832,7 @@ } }, { - "id": 289, + "id": 325, "name": "error", "kind": 1024, "kindString": "Property", @@ -17664,9 +21845,8 @@ } ], "type": { - "type": "reference", - "id": 497, - "name": "AuthError" + "type": "literal", + "value": null } } ], @@ -17674,7 +21854,7 @@ { "title": "Properties", "kind": 1024, - "children": [286, 289] + "children": [322, 325] } ], "sources": [ @@ -17685,12 +21865,115 @@ } ] } + }, + { + "type": "reflection", + "declaration": { + "id": 326, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 327, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 328, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 329, + "name": "user", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 97, + "character": 8 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [329] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 12 + } + ] + } + } + }, + { + "id": 330, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 99, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [327, 330] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 95, + "character": 4 + } + ] + } } ] } }, { - "id": 417, + "id": 473, "name": "VerifyOtpParams", "kind": 4194304, "kindString": "Type alias", @@ -17698,7 +21981,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 367, + "line": 436, "character": 12 } ], @@ -17707,19 +21990,19 @@ "types": [ { "type": "reference", - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams" }, { "type": "reference", - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams" } ] } }, { - "id": 494, + "id": 691, "name": "isAuthError", "kind": 64, "kindString": "Function", @@ -17733,14 +22016,14 @@ ], "signatures": [ { - "id": 495, + "id": 692, "name": "isAuthError", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 496, + "id": 693, "name": "error", "kind": 32768, "kindString": "Parameter", @@ -17757,7 +22040,7 @@ "asserts": false, "targetType": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -17769,25 +22052,28 @@ { "title": "Classes", "kind": 128, - "children": [502, 497, 562, 549, 587, 537, 515, 522, 1, 66] + "children": [699, 694, 759, 746, 784, 734, 712, 719, 1, 74] }, { "title": "Interfaces", "kind": 256, - "children": [343, 458, 290, 353, 317, 310, 338, 299, 314, 426, 418] + "children": [ + 340, 395, 354, 514, 673, 628, 331, 405, 413, 368, 361, 390, 343, 365, 482, 474 + ] }, { "title": "Type Aliases", "kind": 4194304, "children": [ - 239, 253, 487, 435, 452, 442, 461, 475, 462, 482, 447, 436, 240, 484, 434, 266, 238, - 406, 377, 390, 361, 483, 279, 417 + 280, 279, 657, 648, 670, 661, 596, 572, 617, 606, 587, 559, 294, 616, 684, 491, 508, + 498, 517, 531, 518, 538, 503, 492, 281, 681, 555, 552, 539, 544, 547, 490, 307, 278, + 462, 431, 446, 415, 680, 320, 473 ] }, { "title": "Functions", "kind": 64, - "children": [494] + "children": [691] } ], "sources": [ @@ -17826,7 +22112,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -17891,7 +22177,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -17964,7 +22250,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -17986,7 +22272,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -18007,7 +22293,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -18105,7 +22391,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -18138,7 +22424,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -18181,7 +22467,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -18202,7 +22488,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -18225,7 +22511,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -18248,7 +22534,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -18269,7 +22555,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -18340,7 +22626,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -18429,7 +22715,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -18528,7 +22814,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -18587,7 +22873,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -18655,7 +22941,7 @@ "fileName": "src/PostgrestClient.ts", "line": 41, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L41" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L41" } ], "signatures": [ @@ -18838,7 +23124,7 @@ "fileName": "src/PostgrestClient.ts", "line": 50, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L50" } ], "type": { @@ -18952,7 +23238,7 @@ "fileName": "src/PostgrestClient.ts", "line": 48, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L48" } ], "type": { @@ -18993,7 +23279,7 @@ "fileName": "src/PostgrestClient.ts", "line": 49, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L49" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L49" } ], "type": { @@ -19014,7 +23300,7 @@ "fileName": "src/PostgrestClient.ts", "line": 47, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L47" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L47" } ] } @@ -19060,7 +23346,7 @@ "fileName": "src/PostgrestClient.ts", "line": 29, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L29" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L29" } ], "type": { @@ -19156,7 +23442,7 @@ "fileName": "src/PostgrestClient.ts", "line": 27, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L27" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L27" } ], "type": { @@ -19189,7 +23475,7 @@ "fileName": "src/PostgrestClient.ts", "line": 28, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L28" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L28" } ], "type": { @@ -19209,7 +23495,7 @@ "fileName": "src/PostgrestClient.ts", "line": 26, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L26" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L26" } ], "type": { @@ -19228,25 +23514,25 @@ "fileName": "src/PostgrestClient.ts", "line": 64, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L64" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L64" }, { "fileName": "src/PostgrestClient.ts", "line": 68, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L68" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L68" }, { "fileName": "src/PostgrestClient.ts", "line": 71, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L71" }, { "fileName": "src/PostgrestClient.ts", "line": 72, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L72" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L72" } ], "signatures": [ @@ -19441,7 +23727,7 @@ "fileName": "src/PostgrestClient.ts", "line": 102, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L102" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L102" } ], "signatures": [ @@ -19610,7 +23896,7 @@ "fileName": "src/PostgrestClient.ts", "line": 113, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L113" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L113" } ], "type": { @@ -19668,7 +23954,7 @@ "fileName": "src/PostgrestClient.ts", "line": 112, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L112" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L112" } ], "type": { @@ -19688,7 +23974,7 @@ "fileName": "src/PostgrestClient.ts", "line": 111, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L111" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L111" } ] } @@ -19821,7 +24107,7 @@ "fileName": "src/PostgrestClient.ts", "line": 17, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L17" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L17" } ], "typeParameters": [ @@ -19991,7 +24277,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -20082,7 +24368,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -20151,7 +24437,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -20173,7 +24459,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -20194,7 +24480,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -20292,7 +24578,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -20325,7 +24611,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -20368,7 +24654,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -20389,7 +24675,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -20412,7 +24698,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -20435,7 +24721,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -20456,7 +24742,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -20527,7 +24813,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -20616,7 +24902,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -20715,7 +25001,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -20774,7 +25060,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -20867,7 +25153,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -20894,7 +25180,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -20920,7 +25206,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -21023,7 +25309,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -21061,7 +25347,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -21109,7 +25395,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -21135,7 +25421,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -21163,7 +25449,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -21191,7 +25477,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -21217,7 +25503,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 130, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L130" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L130" } ], "signatures": [ @@ -21304,19 +25590,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 216, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L216" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L216" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 220, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L220" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L220" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 221, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L221" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L221" } ], "signatures": [ @@ -21559,19 +25845,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 189, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L189" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L189" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 193, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L193" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L193" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 194, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L194" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L194" } ], "signatures": [ @@ -21814,7 +26100,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 161, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L161" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L161" } ], "signatures": [ @@ -21883,19 +26169,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 41, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L41" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L41" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 42, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L42" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L42" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L43" } ], "signatures": [ @@ -22098,7 +26384,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 195, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L195" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L195" } ], "signatures": [ @@ -22178,7 +26464,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 203, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L203" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L203" } ], "type": { @@ -22215,7 +26501,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 206, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L206" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L206" } ], "type": { @@ -22256,7 +26542,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 208, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L208" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L208" } ], "type": { @@ -22302,7 +26588,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 205, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L205" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L205" } ], "type": { @@ -22347,7 +26633,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 204, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L204" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L204" } ], "type": { @@ -22384,7 +26670,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 207, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L207" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L207" } ], "type": { @@ -22404,7 +26690,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 202, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L202" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L202" } ] } @@ -22491,19 +26777,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 441, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L441" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L441" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 446, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L446" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L446" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 447, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L447" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L447" } ], "signatures": [ @@ -22804,7 +27090,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L169" } ], "signatures": [ @@ -22885,19 +27171,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 67, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L67" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 68, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L68" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L68" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L69" } ], "signatures": [ @@ -23084,19 +27370,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 80, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L80" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L80" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 81, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L81" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L81" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 82, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L82" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L82" } ], "signatures": [ @@ -23283,19 +27569,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 132, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L132" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L132" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 133, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L133" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L133" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 134, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L134" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L134" } ], "signatures": [ @@ -23473,19 +27759,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 167, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L167" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L167" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 168, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L168" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L168" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L169" } ], "signatures": [ @@ -23678,19 +27964,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 151, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L151" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L151" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 155, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L155" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L155" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 156, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L156" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L156" } ], "signatures": [ @@ -23933,19 +28219,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 119, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L119" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L119" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 120, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L120" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L120" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 121, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L121" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L121" } ], "signatures": [ @@ -24123,7 +28409,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "signatures": [ @@ -24214,7 +28500,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 43, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "type": { @@ -24234,7 +28520,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 41, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ] } @@ -24288,19 +28574,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 93, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L93" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L93" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 94, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L94" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L94" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 95, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L95" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L95" } ], "signatures": [ @@ -24487,19 +28773,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 106, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L106" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L106" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 107, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L107" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L107" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 108, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L108" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L108" } ], "signatures": [ @@ -24686,19 +28972,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 376, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L376" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L376" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 377, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L377" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L377" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 378, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L378" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L378" } ], "signatures": [ @@ -24878,7 +29164,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 152, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L152" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L152" } ], "signatures": [ @@ -24956,19 +29242,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 54, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L54" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L54" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 55, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L55" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L55" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 56, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L56" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L56" } ], "signatures": [ @@ -25155,19 +29441,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 398, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L398" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L398" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 403, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L403" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L403" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 404, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L404" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L404" } ], "signatures": [ @@ -25384,7 +29670,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ], "signatures": [ @@ -25475,7 +29761,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 42, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ], "type": { @@ -25495,7 +29781,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 40, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ] } @@ -25539,19 +29825,19 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 65, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L65" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L69" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 73, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L73" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L73" } ], "signatures": [ @@ -25666,7 +29952,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -25695,7 +29981,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -25756,7 +30042,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -25776,7 +30062,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ] } @@ -25859,7 +30145,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -25878,7 +30164,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -25899,7 +30185,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -25919,7 +30205,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ] } @@ -25972,19 +30258,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 315, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L315" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L315" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 319, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L319" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L319" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 320, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L320" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L320" } ], "signatures": [ @@ -26195,7 +30481,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "signatures": [ @@ -26313,7 +30599,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 54, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "type": { @@ -26333,7 +30619,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 52, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ] } @@ -26387,19 +30673,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 301, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L301" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L301" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 302, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L302" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L302" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 303, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L303" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L303" } ], "signatures": [ @@ -26577,19 +30863,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 242, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L242" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L242" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 243, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L243" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L243" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 244, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L244" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L244" } ], "signatures": [ @@ -26767,19 +31053,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 257, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L257" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L257" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 258, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L258" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L258" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 259, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L259" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L259" } ], "signatures": [ @@ -26965,19 +31251,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 271, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L271" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L271" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 272, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L272" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L272" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 273, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L273" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L273" } ], "signatures": [ @@ -27155,19 +31441,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 286, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L286" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L286" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 287, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L287" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L287" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 288, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L288" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L288" } ], "signatures": [ @@ -27353,7 +31639,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 249, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L249" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L249" } ], "signatures": [ @@ -27442,7 +31728,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 235, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L235" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L235" } ], "signatures": [ @@ -27514,7 +31800,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 24, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L24" } ], "signatures": [ @@ -27688,7 +31974,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 141, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L141" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L141" } ], "signatures": [ @@ -27766,19 +32052,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 341, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L341" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L341" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 346, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L346" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L346" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 351, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L351" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L351" } ], "signatures": [ @@ -27912,7 +32198,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ], "type": { @@ -27949,7 +32235,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 33, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ], "type": { @@ -27982,7 +32268,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ] } @@ -28071,7 +32357,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ], "type": { @@ -28092,7 +32378,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 33, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ], "type": { @@ -28125,7 +32411,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ] } @@ -28168,7 +32454,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -28239,7 +32525,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -28328,7 +32614,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -28429,7 +32715,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -28512,7 +32798,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 28, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L28" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L28" } ], "typeParameters": [ @@ -28601,7 +32887,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 16, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L16" } ], "signatures": [ @@ -28686,7 +32972,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 25, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L25" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L25" } ], "type": { @@ -28784,7 +33070,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 23, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L23" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L23" } ], "type": { @@ -28817,7 +33103,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 24, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L24" } ], "type": { @@ -28837,7 +33123,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 22, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L22" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L22" } ] } @@ -28877,7 +33163,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 14, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L14" } ], "type": { @@ -28973,7 +33259,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 11, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L11" } ], "type": { @@ -29006,7 +33292,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 12, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L12" } ], "type": { @@ -29027,7 +33313,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 13, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L13" } ], "type": { @@ -29048,7 +33334,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 10, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L10" } ], "type": { @@ -29069,7 +33355,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 299, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L299" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L299" } ], "signatures": [ @@ -29173,7 +33459,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 302, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L302" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L302" } ], "type": { @@ -29206,7 +33492,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 301, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L301" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L301" } ] } @@ -29256,7 +33542,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 120, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L120" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L120" } ], "signatures": [ @@ -29418,7 +33704,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 125, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L125" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L125" } ], "type": { @@ -29451,7 +33737,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 124, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L124" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L124" } ] } @@ -29501,7 +33787,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 55, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L55" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L55" } ], "signatures": [ @@ -29672,7 +33958,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 65, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L65" } ], "type": { @@ -29730,7 +34016,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 64, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L64" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L64" } ], "type": { @@ -29750,7 +34036,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 63, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L63" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L63" } ] } @@ -29801,7 +34087,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 250, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L250" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L250" } ], "signatures": [ @@ -29951,7 +34237,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 255, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L255" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L255" } ], "type": { @@ -29984,7 +34270,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 254, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L254" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L254" } ] } @@ -30034,7 +34320,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 192, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L192" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L192" } ], "signatures": [ @@ -30236,7 +34522,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 201, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L201" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L201" } ], "type": { @@ -30294,7 +34580,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 200, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L200" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L200" } ], "type": { @@ -30331,7 +34617,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 199, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L199" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L199" } ], "type": { @@ -30351,7 +34637,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 198, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L198" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L198" } ] } @@ -30410,7 +34696,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 6, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L6" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L6" } ], "typeParameters": [ @@ -30465,7 +34751,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -30556,7 +34842,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -30625,7 +34911,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -30647,7 +34933,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -30668,7 +34954,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -30766,7 +35052,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -30799,7 +35085,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -30842,7 +35128,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -30863,7 +35149,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -30886,7 +35172,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -30909,7 +35195,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -30930,7 +35216,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -31001,7 +35287,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -31090,7 +35376,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -31189,7 +35475,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -31248,7 +35534,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -31341,7 +35627,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -31368,7 +35654,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -31394,7 +35680,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -31497,7 +35783,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -31535,7 +35821,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -31583,7 +35869,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -31609,7 +35895,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -31637,7 +35923,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -31665,7 +35951,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -31691,7 +35977,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 130, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L130" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L130" } ], "signatures": [ @@ -31768,7 +36054,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 161, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L161" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L161" } ], "signatures": [ @@ -31827,7 +36113,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 195, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L195" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L195" } ], "signatures": [ @@ -31907,7 +36193,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 203, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L203" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L203" } ], "type": { @@ -31944,7 +36230,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 206, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L206" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L206" } ], "type": { @@ -31985,7 +36271,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 208, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L208" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L208" } ], "type": { @@ -32031,7 +36317,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 205, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L205" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L205" } ], "type": { @@ -32076,7 +36362,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 204, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L204" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L204" } ], "type": { @@ -32113,7 +36399,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 207, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L207" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L207" } ], "type": { @@ -32133,7 +36419,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 202, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L202" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L202" } ] } @@ -32210,7 +36496,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L169" } ], "signatures": [ @@ -32281,7 +36567,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "signatures": [ @@ -32372,7 +36658,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 43, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "type": { @@ -32392,7 +36678,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 41, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ] } @@ -32436,7 +36722,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 152, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L152" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L152" } ], "signatures": [ @@ -32504,19 +36790,19 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 65, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L65" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L69" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 73, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L73" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L73" } ], "signatures": [ @@ -32631,7 +36917,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -32660,7 +36946,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -32721,7 +37007,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -32741,7 +37027,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ] } @@ -32819,7 +37105,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -32838,7 +37124,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -32859,7 +37145,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -32879,7 +37165,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ] } @@ -32922,7 +37208,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "signatures": [ @@ -33040,7 +37326,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 54, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "type": { @@ -33060,7 +37346,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 52, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ] } @@ -33104,7 +37390,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 249, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L249" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L249" } ], "signatures": [ @@ -33183,7 +37469,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 235, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L235" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L235" } ], "signatures": [ @@ -33245,7 +37531,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 24, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L24" } ], "signatures": [ @@ -33409,7 +37695,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 141, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L141" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L141" } ], "signatures": [ @@ -33477,7 +37763,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -33548,7 +37834,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -33637,7 +37923,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -33738,7 +38024,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -33817,7 +38103,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 10, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L10" } ], "typeParameters": [ @@ -33910,7 +38196,7 @@ "fileName": "src/types.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L8" } ], "type": { @@ -33933,7 +38219,7 @@ "fileName": "src/types.ts", "line": 12, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L12" } ], "type": { @@ -33952,7 +38238,7 @@ "fileName": "src/types.ts", "line": 10, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L10" } ], "type": { @@ -33971,7 +38257,7 @@ "fileName": "src/types.ts", "line": 11, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L11" } ], "type": { @@ -33990,7 +38276,7 @@ "fileName": "src/types.ts", "line": 9, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L9" } ], "type": { @@ -34010,7 +38296,7 @@ "fileName": "src/types.ts", "line": 8, "character": 29, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L8" } ] } @@ -34027,7 +38313,7 @@ "fileName": "src/types.ts", "line": 45, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L45" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L45" } ], "typeParameters": [ @@ -34072,7 +38358,7 @@ "fileName": "src/types.ts", "line": 35, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L35" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L35" } ], "typeParameters": [ @@ -34116,7 +38402,7 @@ "fileName": "src/types.ts", "line": 42, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L42" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L42" } ], "typeParameters": [ @@ -34165,7 +38451,7 @@ "fileName": "src/index.ts", "line": 1, "character": 0, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/index.ts#L1" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/index.ts#L1" } ] }, diff --git a/spec/enrichments/tsdoc_v2/gotrue.json b/spec/enrichments/tsdoc_v2/gotrue.json index 6bd8e38c40f..67a022d3383 100644 --- a/spec/enrichments/tsdoc_v2/gotrue.json +++ b/spec/enrichments/tsdoc_v2/gotrue.json @@ -7,14 +7,14 @@ "originalName": "", "children": [ { - "id": 502, + "id": 699, "name": "AuthApiError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 503, + "id": 700, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -28,14 +28,14 @@ ], "signatures": [ { - "id": 504, + "id": 701, "name": "new AuthApiError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 505, + "id": 702, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -46,7 +46,7 @@ } }, { - "id": 506, + "id": 703, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -59,24 +59,24 @@ ], "type": { "type": "reference", - "id": 502, + "id": 699, "name": "AuthApiError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 507, + "id": 704, "name": "status", "kind": 1024, "kindString": "Property", @@ -94,7 +94,7 @@ } }, { - "id": 508, + "id": 705, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -108,7 +108,7 @@ ], "signatures": [ { - "id": 509, + "id": 706, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -116,14 +116,14 @@ "type": { "type": "reflection", "declaration": { - "id": 510, + "id": 707, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 512, + "id": 709, "name": "message", "kind": 1024, "kindString": "Property", @@ -142,7 +142,7 @@ "defaultValue": "..." }, { - "id": 511, + "id": 708, "name": "name", "kind": 1024, "kindString": "Property", @@ -161,7 +161,7 @@ "defaultValue": "..." }, { - "id": 513, + "id": 710, "name": "status", "kind": 1024, "kindString": "Property", @@ -184,7 +184,7 @@ { "title": "Properties", "kind": 1024, - "children": [512, 511, 513] + "children": [709, 708, 710] } ] } @@ -197,17 +197,17 @@ { "title": "Constructors", "kind": 512, - "children": [503] + "children": [700] }, { "title": "Properties", "kind": 1024, - "children": [507] + "children": [704] }, { "title": "Methods", "kind": 2048, - "children": [508] + "children": [705] } ], "sources": [ @@ -220,20 +220,20 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] }, { - "id": 497, + "id": 694, "name": "AuthError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 498, + "id": 695, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -247,14 +247,14 @@ ], "signatures": [ { - "id": 499, + "id": 696, "name": "new AuthError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 500, + "id": 697, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -267,7 +267,7 @@ ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" }, "overwrites": { @@ -286,7 +286,7 @@ { "title": "Constructors", "kind": 512, - "children": [498] + "children": [695] } ], "sources": [ @@ -307,30 +307,30 @@ "extendedBy": [ { "type": "reference", - "id": 502, + "id": 699, "name": "AuthApiError" }, { "type": "reference", - "id": 515, + "id": 712, "name": "AuthUnknownError" }, { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 563, + "id": 760, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -344,14 +344,14 @@ ], "signatures": [ { - "id": 564, + "id": 761, "name": "new AuthImplicitGrantRedirectError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 565, + "id": 762, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -362,7 +362,7 @@ } }, { - "id": 566, + "id": 763, "name": "details", "kind": 32768, "kindString": "Parameter", @@ -377,14 +377,14 @@ { "type": "reflection", "declaration": { - "id": 567, + "id": 764, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 569, + "id": 766, "name": "code", "kind": 1024, "kindString": "Property", @@ -402,7 +402,7 @@ } }, { - "id": 568, + "id": 765, "name": "error", "kind": 1024, "kindString": "Property", @@ -424,7 +424,7 @@ { "title": "Properties", "kind": 1024, - "children": [569, 568] + "children": [766, 765] } ] } @@ -436,24 +436,24 @@ ], "type": { "type": "reference", - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 570, + "id": 767, "name": "details", "kind": 1024, "kindString": "Property", @@ -475,14 +475,14 @@ { "type": "reflection", "declaration": { - "id": 571, + "id": 768, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 573, + "id": 770, "name": "code", "kind": 1024, "kindString": "Property", @@ -500,7 +500,7 @@ } }, { - "id": 572, + "id": 769, "name": "error", "kind": 1024, "kindString": "Property", @@ -522,7 +522,7 @@ { "title": "Properties", "kind": 1024, - "children": [573, 572] + "children": [770, 769] } ] } @@ -532,7 +532,7 @@ "defaultValue": "null" }, { - "id": 584, + "id": 781, "name": "name", "kind": 1024, "kindString": "Property", @@ -550,12 +550,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 585, + "id": 782, "name": "status", "kind": 1024, "kindString": "Property", @@ -573,12 +573,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 574, + "id": 771, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -592,7 +592,7 @@ ], "signatures": [ { - "id": 575, + "id": 772, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -600,14 +600,14 @@ "type": { "type": "reflection", "declaration": { - "id": 576, + "id": 773, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 580, + "id": 777, "name": "details", "kind": 1024, "kindString": "Property", @@ -629,14 +629,14 @@ { "type": "reflection", "declaration": { - "id": 581, + "id": 778, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 583, + "id": 780, "name": "code", "kind": 1024, "kindString": "Property", @@ -654,7 +654,7 @@ } }, { - "id": 582, + "id": 779, "name": "error", "kind": 1024, "kindString": "Property", @@ -676,7 +676,7 @@ { "title": "Properties", "kind": 1024, - "children": [583, 582] + "children": [780, 779] } ] } @@ -686,7 +686,7 @@ "defaultValue": "..." }, { - "id": 578, + "id": 775, "name": "message", "kind": 1024, "kindString": "Property", @@ -705,7 +705,7 @@ "defaultValue": "..." }, { - "id": 577, + "id": 774, "name": "name", "kind": 1024, "kindString": "Property", @@ -724,7 +724,7 @@ "defaultValue": "..." }, { - "id": 579, + "id": 776, "name": "status", "kind": 1024, "kindString": "Property", @@ -747,21 +747,21 @@ { "title": "Properties", "kind": 1024, - "children": [580, 578, 577, 579] + "children": [777, 775, 774, 776] } ] } }, "overwrites": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "overwrites": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -770,17 +770,17 @@ { "title": "Constructors", "kind": 512, - "children": [563] + "children": [760] }, { "title": "Properties", "kind": 1024, - "children": [570, 584, 585] + "children": [767, 781, 782] }, { "title": "Methods", "kind": 2048, - "children": [574] + "children": [771] } ], "sources": [ @@ -793,20 +793,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 550, + "id": 747, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -820,14 +820,14 @@ ], "signatures": [ { - "id": 551, + "id": 748, "name": "new AuthInvalidCredentialsError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 552, + "id": 749, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -840,24 +840,24 @@ ], "type": { "type": "reference", - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 553, + "id": 750, "name": "name", "kind": 1024, "kindString": "Property", @@ -875,12 +875,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 554, + "id": 751, "name": "status", "kind": 1024, "kindString": "Property", @@ -898,12 +898,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 555, + "id": 752, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -917,7 +917,7 @@ ], "signatures": [ { - "id": 556, + "id": 753, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -925,14 +925,14 @@ "type": { "type": "reflection", "declaration": { - "id": 557, + "id": 754, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 559, + "id": 756, "name": "message", "kind": 1024, "kindString": "Property", @@ -951,7 +951,7 @@ "defaultValue": "..." }, { - "id": 558, + "id": 755, "name": "name", "kind": 1024, "kindString": "Property", @@ -970,7 +970,7 @@ "defaultValue": "..." }, { - "id": 560, + "id": 757, "name": "status", "kind": 1024, "kindString": "Property", @@ -993,21 +993,21 @@ { "title": "Properties", "kind": 1024, - "children": [559, 558, 560] + "children": [756, 755, 757] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -1016,17 +1016,17 @@ { "title": "Constructors", "kind": 512, - "children": [550] + "children": [747] }, { "title": "Properties", "kind": 1024, - "children": [553, 554] + "children": [750, 751] }, { "title": "Methods", "kind": 2048, - "children": [555] + "children": [752] } ], "sources": [ @@ -1039,20 +1039,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 587, + "id": 784, "name": "AuthRetryableFetchError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 588, + "id": 785, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1066,14 +1066,14 @@ ], "signatures": [ { - "id": 589, + "id": 786, "name": "new AuthRetryableFetchError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 590, + "id": 787, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1084,7 +1084,7 @@ } }, { - "id": 591, + "id": 788, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -1097,24 +1097,24 @@ ], "type": { "type": "reference", - "id": 587, + "id": 784, "name": "AuthRetryableFetchError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 592, + "id": 789, "name": "name", "kind": 1024, "kindString": "Property", @@ -1132,12 +1132,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 593, + "id": 790, "name": "status", "kind": 1024, "kindString": "Property", @@ -1155,12 +1155,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 594, + "id": 791, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -1174,7 +1174,7 @@ ], "signatures": [ { - "id": 595, + "id": 792, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -1182,14 +1182,14 @@ "type": { "type": "reflection", "declaration": { - "id": 596, + "id": 793, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 598, + "id": 795, "name": "message", "kind": 1024, "kindString": "Property", @@ -1208,7 +1208,7 @@ "defaultValue": "..." }, { - "id": 597, + "id": 794, "name": "name", "kind": 1024, "kindString": "Property", @@ -1227,7 +1227,7 @@ "defaultValue": "..." }, { - "id": 599, + "id": 796, "name": "status", "kind": 1024, "kindString": "Property", @@ -1250,21 +1250,21 @@ { "title": "Properties", "kind": 1024, - "children": [598, 597, 599] + "children": [795, 794, 796] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -1273,17 +1273,17 @@ { "title": "Constructors", "kind": 512, - "children": [588] + "children": [785] }, { "title": "Properties", "kind": 1024, - "children": [592, 593] + "children": [789, 790] }, { "title": "Methods", "kind": 2048, - "children": [594] + "children": [791] } ], "sources": [ @@ -1296,20 +1296,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 537, + "id": 734, "name": "AuthSessionMissingError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 538, + "id": 735, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1323,31 +1323,31 @@ ], "signatures": [ { - "id": 539, + "id": 736, "name": "new AuthSessionMissingError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "type": { "type": "reference", - "id": 537, + "id": 734, "name": "AuthSessionMissingError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 540, + "id": 737, "name": "name", "kind": 1024, "kindString": "Property", @@ -1365,12 +1365,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 541, + "id": 738, "name": "status", "kind": 1024, "kindString": "Property", @@ -1388,12 +1388,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 542, + "id": 739, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -1407,7 +1407,7 @@ ], "signatures": [ { - "id": 543, + "id": 740, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -1415,14 +1415,14 @@ "type": { "type": "reflection", "declaration": { - "id": 544, + "id": 741, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 546, + "id": 743, "name": "message", "kind": 1024, "kindString": "Property", @@ -1441,7 +1441,7 @@ "defaultValue": "..." }, { - "id": 545, + "id": 742, "name": "name", "kind": 1024, "kindString": "Property", @@ -1460,7 +1460,7 @@ "defaultValue": "..." }, { - "id": 547, + "id": 744, "name": "status", "kind": 1024, "kindString": "Property", @@ -1483,21 +1483,21 @@ { "title": "Properties", "kind": 1024, - "children": [546, 545, 547] + "children": [743, 742, 744] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -1506,17 +1506,17 @@ { "title": "Constructors", "kind": 512, - "children": [538] + "children": [735] }, { "title": "Properties", "kind": 1024, - "children": [540, 541] + "children": [737, 738] }, { "title": "Methods", "kind": 2048, - "children": [542] + "children": [739] } ], "sources": [ @@ -1529,20 +1529,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 515, + "id": 712, "name": "AuthUnknownError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 516, + "id": 713, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1556,14 +1556,14 @@ ], "signatures": [ { - "id": 517, + "id": 714, "name": "new AuthUnknownError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 518, + "id": 715, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1574,7 +1574,7 @@ } }, { - "id": 519, + "id": 716, "name": "originalError", "kind": 32768, "kindString": "Parameter", @@ -1587,24 +1587,24 @@ ], "type": { "type": "reference", - "id": 515, + "id": 712, "name": "AuthUnknownError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 520, + "id": 717, "name": "originalError", "kind": 1024, "kindString": "Property", @@ -1626,12 +1626,12 @@ { "title": "Constructors", "kind": 512, - "children": [516] + "children": [713] }, { "title": "Properties", "kind": 1024, - "children": [520] + "children": [717] } ], "sources": [ @@ -1644,20 +1644,20 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] }, { - "id": 522, + "id": 719, "name": "CustomAuthError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 523, + "id": 720, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1671,14 +1671,14 @@ ], "signatures": [ { - "id": 524, + "id": 721, "name": "new CustomAuthError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 525, + "id": 722, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1689,7 +1689,7 @@ } }, { - "id": 526, + "id": 723, "name": "name", "kind": 32768, "kindString": "Parameter", @@ -1700,7 +1700,7 @@ } }, { - "id": 527, + "id": 724, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -1713,24 +1713,24 @@ ], "type": { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 528, + "id": 725, "name": "name", "kind": 1024, "kindString": "Property", @@ -1752,7 +1752,7 @@ } }, { - "id": 529, + "id": 726, "name": "status", "kind": 1024, "kindString": "Property", @@ -1770,7 +1770,7 @@ } }, { - "id": 530, + "id": 727, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -1784,7 +1784,7 @@ ], "signatures": [ { - "id": 531, + "id": 728, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -1792,14 +1792,14 @@ "type": { "type": "reflection", "declaration": { - "id": 532, + "id": 729, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 534, + "id": 731, "name": "message", "kind": 1024, "kindString": "Property", @@ -1818,7 +1818,7 @@ "defaultValue": "..." }, { - "id": 533, + "id": 730, "name": "name", "kind": 1024, "kindString": "Property", @@ -1837,7 +1837,7 @@ "defaultValue": "..." }, { - "id": 535, + "id": 732, "name": "status", "kind": 1024, "kindString": "Property", @@ -1860,7 +1860,7 @@ { "title": "Properties", "kind": 1024, - "children": [534, 533, 535] + "children": [731, 730, 732] } ] } @@ -1873,17 +1873,17 @@ { "title": "Constructors", "kind": 512, - "children": [523] + "children": [720] }, { "title": "Properties", "kind": 1024, - "children": [528, 529] + "children": [725, 726] }, { "title": "Methods", "kind": 2048, - "children": [530] + "children": [727] } ], "sources": [ @@ -1896,29 +1896,29 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ], "extendedBy": [ { "type": "reference", - "id": 537, + "id": 734, "name": "AuthSessionMissingError" }, { "type": "reference", - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError" }, { "type": "reference", - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError" }, { "type": "reference", - "id": 587, + "id": 784, "name": "AuthRetryableFetchError" } ] @@ -1939,7 +1939,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 19, + "line": 28, "character": 2 } ], @@ -1977,7 +1977,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 28, + "line": 37, "character": 4 } ], @@ -2067,7 +2067,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 25, + "line": 34, "character": 4 } ], @@ -2114,7 +2114,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 24, + "line": 33, "character": 4 } ], @@ -2144,7 +2144,29 @@ ] }, { - "id": 41, + "id": 16, + "name": "mfa", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Contains all MFA administration methods." + }, + "sources": [ + { + "fileName": "src/GoTrueAdminApi.ts", + "line": 20, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 673, + "name": "GoTrueAdminMFAApi" + } + }, + { + "id": 43, "name": "createUser", "kind": 2048, "kindString": "Method", @@ -2152,13 +2174,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 126, + "line": 139, "character": 8 } ], "signatures": [ { - "id": 42, + "id": 44, "name": "createUser", "kind": 4096, "kindString": "Call signature", @@ -2168,14 +2190,14 @@ }, "parameters": [ { - "id": 43, + "id": 45, "name": "attributes", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } } @@ -2185,7 +2207,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2197,7 +2219,7 @@ ] }, { - "id": 63, + "id": 65, "name": "deleteUser", "kind": 2048, "kindString": "Method", @@ -2205,13 +2227,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 216, + "line": 229, "character": 8 } ], "signatures": [ { - "id": 64, + "id": 66, "name": "deleteUser", "kind": 4096, "kindString": "Call signature", @@ -2221,7 +2243,7 @@ }, "parameters": [ { - "id": 65, + "id": 67, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -2240,7 +2262,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2252,7 +2274,7 @@ ] }, { - "id": 38, + "id": 40, "name": "generateLink", "kind": 2048, "kindString": "Method", @@ -2260,13 +2282,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 92, + "line": 105, "character": 8 } ], "signatures": [ { - "id": 39, + "id": 41, "name": "generateLink", "kind": 4096, "kindString": "Call signature", @@ -2276,14 +2298,14 @@ }, "parameters": [ { - "id": 40, + "id": 42, "name": "params", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 461, + "id": 517, "name": "GenerateLinkParams" } } @@ -2293,7 +2315,7 @@ "typeArguments": [ { "type": "reference", - "id": 462, + "id": 518, "name": "GenerateLinkResponse" } ], @@ -2305,7 +2327,7 @@ ] }, { - "id": 56, + "id": 58, "name": "getUserById", "kind": 2048, "kindString": "Method", @@ -2313,13 +2335,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 171, + "line": 184, "character": 8 } ], "signatures": [ { - "id": 57, + "id": 59, "name": "getUserById", "kind": 4096, "kindString": "Call signature", @@ -2329,7 +2351,7 @@ }, "parameters": [ { - "id": 58, + "id": 60, "name": "uid", "kind": 32768, "kindString": "Parameter", @@ -2348,7 +2370,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2360,7 +2382,7 @@ ] }, { - "id": 31, + "id": 33, "name": "inviteUserByEmail", "kind": 2048, "kindString": "Method", @@ -2368,13 +2390,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 62, + "line": 75, "character": 8 } ], "signatures": [ { - "id": 32, + "id": 34, "name": "inviteUserByEmail", "kind": 4096, "kindString": "Call signature", @@ -2384,7 +2406,7 @@ }, "parameters": [ { - "id": 33, + "id": 35, "name": "email", "kind": 32768, "kindString": "Parameter", @@ -2398,7 +2420,7 @@ } }, { - "id": 34, + "id": 36, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -2406,14 +2428,14 @@ "type": { "type": "reflection", "declaration": { - "id": 35, + "id": 37, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 37, + "id": 39, "name": "data", "kind": 1024, "kindString": "Property", @@ -2426,7 +2448,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 66, + "line": 79, "character": 6 } ], @@ -2436,7 +2458,7 @@ } }, { - "id": 36, + "id": 38, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -2449,7 +2471,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 65, + "line": 78, "character": 6 } ], @@ -2463,7 +2485,7 @@ { "title": "Properties", "kind": 1024, - "children": [37, 36] + "children": [39, 38] } ] } @@ -2476,7 +2498,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2488,7 +2510,7 @@ ] }, { - "id": 44, + "id": 46, "name": "listUsers", "kind": 2048, "kindString": "Method", @@ -2496,13 +2518,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 147, + "line": 160, "character": 8 } ], "signatures": [ { - "id": 45, + "id": 47, "name": "listUsers", "kind": 4096, "kindString": "Call signature", @@ -2520,14 +2542,14 @@ { "type": "reflection", "declaration": { - "id": 46, + "id": 48, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 47, + "id": 49, "name": "data", "kind": 1024, "kindString": "Property", @@ -2535,21 +2557,21 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 48, + "id": 50, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 49, + "id": 51, "name": "users", "kind": 1024, "kindString": "Property", @@ -2557,7 +2579,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 14 } ], @@ -2565,7 +2587,7 @@ "type": "array", "elementType": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -2575,14 +2597,14 @@ { "title": "Properties", "kind": 1024, - "children": [49] + "children": [51] } ] } } }, { - "id": 50, + "id": 52, "name": "error", "kind": 1024, "kindString": "Property", @@ -2590,7 +2612,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 31 } ], @@ -2604,7 +2626,7 @@ { "title": "Properties", "kind": 1024, - "children": [47, 50] + "children": [49, 52] } ] } @@ -2612,14 +2634,14 @@ { "type": "reflection", "declaration": { - "id": 51, + "id": 53, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 52, + "id": 54, "name": "data", "kind": 1024, "kindString": "Property", @@ -2627,21 +2649,21 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 49 } ], "type": { "type": "reflection", "declaration": { - "id": 53, + "id": 55, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 54, + "id": 56, "name": "users", "kind": 1024, "kindString": "Property", @@ -2649,7 +2671,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 57 } ], @@ -2662,14 +2684,14 @@ { "title": "Properties", "kind": 1024, - "children": [54] + "children": [56] } ] } } }, { - "id": 55, + "id": 57, "name": "error", "kind": 1024, "kindString": "Property", @@ -2677,13 +2699,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 70 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -2692,7 +2714,7 @@ { "title": "Properties", "kind": 1024, - "children": [52, 55] + "children": [54, 57] } ] } @@ -2708,7 +2730,7 @@ ] }, { - "id": 26, + "id": 27, "name": "signOut", "kind": 2048, "kindString": "Method", @@ -2716,13 +2738,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 39, + "line": 52, "character": 8 } ], "signatures": [ { - "id": 27, + "id": 28, "name": "signOut", "kind": 4096, "kindString": "Call signature", @@ -2732,7 +2754,7 @@ }, "parameters": [ { - "id": 28, + "id": 29, "name": "jwt", "kind": 32768, "kindString": "Parameter", @@ -2752,14 +2774,32 @@ { "type": "reflection", "declaration": { - "id": 29, + "id": 30, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 30, + "id": 31, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueAdminApi.ts", + "line": 52, + "character": 40 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 32, "name": "error", "kind": 1024, "kindString": "Property", @@ -2767,8 +2807,8 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 39, - "character": 40 + "line": 52, + "character": 52 } ], "type": { @@ -2780,7 +2820,7 @@ }, { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] @@ -2791,7 +2831,7 @@ { "title": "Properties", "kind": 1024, - "children": [30] + "children": [31, 32] } ] } @@ -2805,7 +2845,7 @@ ] }, { - "id": 59, + "id": 61, "name": "updateUserById", "kind": 2048, "kindString": "Method", @@ -2813,13 +2853,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 193, + "line": 206, "character": 8 } ], "signatures": [ { - "id": 60, + "id": 62, "name": "updateUserById", "kind": 4096, "kindString": "Call signature", @@ -2829,7 +2869,7 @@ }, "parameters": [ { - "id": 61, + "id": 63, "name": "uid", "kind": 32768, "kindString": "Parameter", @@ -2840,7 +2880,7 @@ } }, { - "id": 62, + "id": 64, "name": "attributes", "kind": 32768, "kindString": "Parameter", @@ -2850,7 +2890,7 @@ }, "type": { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } } @@ -2860,7 +2900,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2878,29 +2918,34 @@ "kind": 512, "children": [2] }, + { + "title": "Properties", + "kind": 1024, + "children": [16] + }, { "title": "Methods", "kind": 2048, - "children": [41, 63, 38, 56, 31, 44, 26, 59] + "children": [43, 65, 40, 58, 33, 46, 27, 61] } ], "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 12, + "line": 18, "character": 21 } ] }, { - "id": 66, + "id": 74, "name": "GoTrueClient", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 67, + "id": 75, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -2908,13 +2953,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 105, + "line": 124, "character": 2 } ], "signatures": [ { - "id": 68, + "id": 76, "name": "new GoTrueClient", "kind": 16384, "kindString": "Constructor signature", @@ -2924,28 +2969,28 @@ }, "parameters": [ { - "id": 69, + "id": 77, "name": "options", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 240, + "id": 281, "name": "GoTrueClientOptions" } } ], "type": { "type": "reference", - "id": 66, + "id": 74, "name": "default" } } ] }, { - "id": 70, + "id": 78, "name": "admin", "kind": 1024, "kindString": "Property", @@ -2956,7 +3001,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 69, + "line": 84, "character": 2 } ], @@ -2967,7 +3012,29 @@ } }, { - "id": 111, + "id": 79, + "name": "mfa", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Namespace for the MFA methods." + }, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 88, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 628, + "name": "GoTrueMFAApi" + } + }, + { + "id": 120, "name": "getSession", "kind": 2048, "kindString": "Method", @@ -2975,13 +3042,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 410, + "line": 440, "character": 8 } ], "signatures": [ { - "id": 112, + "id": 121, "name": "getSession", "kind": 4096, "kindString": "Call signature", @@ -2998,14 +3065,14 @@ { "type": "reflection", "declaration": { - "id": 113, + "id": 122, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 114, + "id": 123, "name": "data", "kind": 1024, "kindString": "Property", @@ -3013,21 +3080,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 412, + "line": 442, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 115, + "id": 124, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 116, + "id": 125, "name": "session", "kind": 1024, "kindString": "Property", @@ -3035,13 +3102,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 413, + "line": 443, "character": 10 } ], "type": { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } } @@ -3050,14 +3117,14 @@ { "title": "Properties", "kind": 1024, - "children": [116] + "children": [125] } ] } } }, { - "id": 117, + "id": 126, "name": "error", "kind": 1024, "kindString": "Property", @@ -3065,7 +3132,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 415, + "line": 445, "character": 8 } ], @@ -3079,7 +3146,7 @@ { "title": "Properties", "kind": 1024, - "children": [114, 117] + "children": [123, 126] } ] } @@ -3087,14 +3154,14 @@ { "type": "reflection", "declaration": { - "id": 118, + "id": 127, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 119, + "id": 128, "name": "data", "kind": 1024, "kindString": "Property", @@ -3102,21 +3169,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 418, + "line": 448, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 120, + "id": 129, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 121, + "id": 130, "name": "session", "kind": 1024, "kindString": "Property", @@ -3124,7 +3191,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 419, + "line": 449, "character": 10 } ], @@ -3138,14 +3205,14 @@ { "title": "Properties", "kind": 1024, - "children": [121] + "children": [130] } ] } } }, { - "id": 122, + "id": 131, "name": "error", "kind": 1024, "kindString": "Property", @@ -3153,13 +3220,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 421, + "line": 451, "character": 8 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -3168,7 +3235,7 @@ { "title": "Properties", "kind": 1024, - "children": [119, 122] + "children": [128, 131] } ] } @@ -3176,14 +3243,14 @@ { "type": "reflection", "declaration": { - "id": 123, + "id": 132, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 124, + "id": 133, "name": "data", "kind": 1024, "kindString": "Property", @@ -3191,21 +3258,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 424, + "line": 454, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 125, + "id": 134, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 126, + "id": 135, "name": "session", "kind": 1024, "kindString": "Property", @@ -3213,7 +3280,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 425, + "line": 455, "character": 10 } ], @@ -3227,14 +3294,14 @@ { "title": "Properties", "kind": 1024, - "children": [126] + "children": [135] } ] } } }, { - "id": 127, + "id": 136, "name": "error", "kind": 1024, "kindString": "Property", @@ -3242,7 +3309,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 427, + "line": 457, "character": 8 } ], @@ -3256,7 +3323,7 @@ { "title": "Properties", "kind": 1024, - "children": [124, 127] + "children": [133, 136] } ] } @@ -3272,7 +3339,7 @@ ] }, { - "id": 128, + "id": 137, "name": "getUser", "kind": 2048, "kindString": "Method", @@ -3280,13 +3347,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 473, + "line": 504, "character": 8 } ], "signatures": [ { - "id": 129, + "id": 138, "name": "getUser", "kind": 4096, "kindString": "Call signature", @@ -3296,7 +3363,7 @@ }, "parameters": [ { - "id": 130, + "id": 139, "name": "jwt", "kind": 32768, "kindString": "Parameter", @@ -3317,7 +3384,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -3329,7 +3396,7 @@ ] }, { - "id": 92, + "id": 101, "name": "initialize", "kind": 2048, "kindString": "Method", @@ -3337,13 +3404,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 131, + "line": 159, "character": 2 } ], "signatures": [ { - "id": 93, + "id": 102, "name": "initialize", "kind": 4096, "kindString": "Call signature", @@ -3356,7 +3423,7 @@ "typeArguments": [ { "type": "reference", - "id": 484, + "id": 681, "name": "InitializeResult" } ], @@ -3368,7 +3435,7 @@ ] }, { - "id": 157, + "id": 178, "name": "onAuthStateChange", "kind": 2048, "kindString": "Method", @@ -3376,13 +3443,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 701, + "line": 784, "character": 2 } ], "signatures": [ { - "id": 158, + "id": 179, "name": "onAuthStateChange", "kind": 4096, "kindString": "Call signature", @@ -3392,7 +3459,7 @@ }, "parameters": [ { - "id": 159, + "id": 180, "name": "callback", "kind": 32768, "kindString": "Parameter", @@ -3403,33 +3470,33 @@ "type": { "type": "reflection", "declaration": { - "id": 160, + "id": 181, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "signatures": [ { - "id": 161, + "id": 182, "name": "__type", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 162, + "id": 183, "name": "event", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 239, + "id": 280, "name": "AuthChangeEvent" } }, { - "id": 163, + "id": 184, "name": "session", "kind": 32768, "kindString": "Parameter", @@ -3443,7 +3510,7 @@ }, { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } ] @@ -3463,14 +3530,14 @@ "type": { "type": "reflection", "declaration": { - "id": 164, + "id": 185, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 165, + "id": 186, "name": "data", "kind": 1024, "kindString": "Property", @@ -3478,21 +3545,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 702, + "line": 785, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 166, + "id": 187, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 167, + "id": 188, "name": "subscription", "kind": 1024, "kindString": "Property", @@ -3500,13 +3567,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 702, + "line": 785, "character": 12 } ], "type": { "type": "reference", - "id": 353, + "id": 405, "name": "Subscription" } } @@ -3515,7 +3582,7 @@ { "title": "Properties", "kind": 1024, - "children": [167] + "children": [188] } ] } @@ -3526,7 +3593,7 @@ { "title": "Properties", "kind": 1024, - "children": [165] + "children": [186] } ] } @@ -3535,7 +3602,97 @@ ] }, { - "id": 168, + "id": 153, + "name": "refreshSession", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 645, + "character": 8 + } + ], + "signatures": [ + { + "id": 154, + "name": "refreshSession", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns a new session, regardless of expiry status.\nTakes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession().\nIf the current session's refresh token is invalid, an error will be thrown." + }, + "parameters": [ + { + "id": 155, + "name": "currentSession", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The current session. If passed in, it must contain a refresh token.\n" + }, + "type": { + "type": "reflection", + "declaration": { + "id": 156, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 157, + "name": "refresh_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 645, + "character": 42 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [157] + } + ] + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 189, "name": "resetPasswordForEmail", "kind": 2048, "kindString": "Method", @@ -3543,13 +3700,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 724, + "line": 807, "character": 8 } ], "signatures": [ { - "id": 169, + "id": 190, "name": "resetPasswordForEmail", "kind": 4096, "kindString": "Call signature", @@ -3559,7 +3716,7 @@ }, "parameters": [ { - "id": 170, + "id": 191, "name": "email", "kind": 32768, "kindString": "Parameter", @@ -3573,7 +3730,7 @@ } }, { - "id": 171, + "id": 192, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -3581,14 +3738,14 @@ "type": { "type": "reflection", "declaration": { - "id": 172, + "id": 193, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 174, + "id": 195, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -3601,7 +3758,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 728, + "line": 811, "character": 6 } ], @@ -3611,7 +3768,7 @@ } }, { - "id": 173, + "id": 194, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -3624,7 +3781,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 727, + "line": 810, "character": 6 } ], @@ -3638,7 +3795,7 @@ { "title": "Properties", "kind": 1024, - "children": [174, 173] + "children": [195, 194] } ] } @@ -3655,14 +3812,14 @@ { "type": "reflection", "declaration": { - "id": 175, + "id": 196, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 176, + "id": 197, "name": "data", "kind": 1024, "kindString": "Property", @@ -3670,14 +3827,14 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 732, + "line": 815, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 177, + "id": 198, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -3686,7 +3843,7 @@ } }, { - "id": 178, + "id": 199, "name": "error", "kind": 1024, "kindString": "Property", @@ -3694,7 +3851,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 733, + "line": 816, "character": 8 } ], @@ -3708,7 +3865,7 @@ { "title": "Properties", "kind": 1024, - "children": [176, 178] + "children": [197, 199] } ] } @@ -3716,14 +3873,14 @@ { "type": "reflection", "declaration": { - "id": 179, + "id": 200, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 180, + "id": 201, "name": "data", "kind": 1024, "kindString": "Property", @@ -3731,7 +3888,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 735, + "line": 818, "character": 8 } ], @@ -3741,7 +3898,7 @@ } }, { - "id": 181, + "id": 202, "name": "error", "kind": 1024, "kindString": "Property", @@ -3749,13 +3906,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 735, + "line": 818, "character": 20 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -3764,7 +3921,7 @@ { "title": "Properties", "kind": 1024, - "children": [180, 181] + "children": [201, 202] } ] } @@ -3780,7 +3937,7 @@ ] }, { - "id": 134, + "id": 150, "name": "setSession", "kind": 2048, "kindString": "Method", @@ -3788,13 +3945,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 539, + "line": 581, "character": 8 } ], "signatures": [ { - "id": 135, + "id": 151, "name": "setSession", "kind": 4096, "kindString": "Call signature", @@ -3804,7 +3961,7 @@ }, "parameters": [ { - "id": 136, + "id": 152, "name": "currentSession", "kind": 32768, "kindString": "Parameter", @@ -3817,7 +3974,7 @@ "typeArguments": [ { "type": "reference", - "id": 290, + "id": 331, "name": "Session" }, { @@ -3845,7 +4002,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -3857,7 +4014,7 @@ ] }, { - "id": 102, + "id": 111, "name": "signInWithOAuth", "kind": 2048, "kindString": "Method", @@ -3865,13 +4022,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 307, + "line": 337, "character": 8 } ], "signatures": [ { - "id": 103, + "id": 112, "name": "signInWithOAuth", "kind": 4096, "kindString": "Call signature", @@ -3881,14 +4038,14 @@ }, "parameters": [ { - "id": 104, + "id": 113, "name": "credentials", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials" } } @@ -3898,7 +4055,7 @@ "typeArguments": [ { "type": "reference", - "id": 266, + "id": 307, "name": "OAuthResponse" } ], @@ -3910,7 +4067,7 @@ ] }, { - "id": 105, + "id": 114, "name": "signInWithOtp", "kind": 2048, "kindString": "Method", @@ -3918,13 +4075,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 322, + "line": 352, "character": 8 } ], "signatures": [ { - "id": 106, + "id": 115, "name": "signInWithOtp", "kind": 4096, "kindString": "Call signature", @@ -3934,14 +4091,14 @@ }, "parameters": [ { - "id": 107, + "id": 116, "name": "credentials", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 390, + "id": 446, "name": "SignInWithPasswordlessCredentials" } } @@ -3951,7 +4108,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -3963,7 +4120,7 @@ ] }, { - "id": 99, + "id": 108, "name": "signInWithPassword", "kind": 2048, "kindString": "Method", @@ -3971,13 +4128,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 257, + "line": 285, "character": 8 } ], "signatures": [ { - "id": 100, + "id": 109, "name": "signInWithPassword", "kind": 4096, "kindString": "Call signature", @@ -3987,14 +4144,14 @@ }, "parameters": [ { - "id": 101, + "id": 110, "name": "credentials", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 377, + "id": 431, "name": "SignInWithPasswordCredentials" } } @@ -4004,7 +4161,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -4016,7 +4173,7 @@ ] }, { - "id": 153, + "id": 174, "name": "signOut", "kind": 2048, "kindString": "Method", @@ -4024,13 +4181,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 682, + "line": 765, "character": 8 } ], "signatures": [ { - "id": 154, + "id": 175, "name": "signOut", "kind": 4096, "kindString": "Call signature", @@ -4045,14 +4202,14 @@ { "type": "reflection", "declaration": { - "id": 155, + "id": 176, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 156, + "id": 177, "name": "error", "kind": 1024, "kindString": "Property", @@ -4060,7 +4217,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 682, + "line": 765, "character": 29 } ], @@ -4073,7 +4230,7 @@ }, { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] @@ -4084,7 +4241,7 @@ { "title": "Properties", "kind": 1024, - "children": [156] + "children": [177] } ] } @@ -4098,7 +4255,7 @@ ] }, { - "id": 96, + "id": 105, "name": "signUp", "kind": 2048, "kindString": "Method", @@ -4106,13 +4263,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 194, + "line": 222, "character": 8 } ], "signatures": [ { - "id": 97, + "id": 106, "name": "signUp", "kind": 4096, "kindString": "Call signature", @@ -4123,14 +4280,14 @@ }, "parameters": [ { - "id": 98, + "id": 107, "name": "credentials", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 361, + "id": 415, "name": "SignUpWithPasswordCredentials" } } @@ -4140,7 +4297,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -4152,7 +4309,7 @@ ] }, { - "id": 131, + "id": 140, "name": "updateUser", "kind": 2048, "kindString": "Method", @@ -4160,13 +4317,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 502, + "line": 533, "character": 8 } ], "signatures": [ { - "id": 132, + "id": 141, "name": "updateUser", "kind": 4096, "kindString": "Call signature", @@ -4176,14 +4333,14 @@ }, "parameters": [ { - "id": 133, + "id": 142, "name": "attributes", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } } @@ -4193,7 +4350,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -4205,7 +4362,7 @@ ] }, { - "id": 108, + "id": 117, "name": "verifyOtp", "kind": 2048, "kindString": "Method", @@ -4213,13 +4370,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 366, + "line": 396, "character": 8 } ], "signatures": [ { - "id": 109, + "id": 118, "name": "verifyOtp", "kind": 4096, "kindString": "Call signature", @@ -4229,14 +4386,14 @@ }, "parameters": [ { - "id": 110, + "id": 119, "name": "params", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 417, + "id": 473, "name": "VerifyOtpParams" } } @@ -4246,7 +4403,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -4262,36 +4419,111 @@ { "title": "Constructors", "kind": 512, - "children": [67] + "children": [75] }, { "title": "Properties", "kind": 1024, - "children": [70] + "children": [78, 79] }, { "title": "Methods", "kind": 2048, - "children": [111, 128, 92, 157, 168, 134, 102, 105, 99, 153, 96, 131, 108] + "children": [120, 137, 101, 178, 153, 189, 150, 111, 114, 108, 174, 105, 140, 117] } ], "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 64, + "line": 79, "character": 21 } ] }, { - "id": 343, + "id": 340, + "name": "AMREntry", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "An authentication methord reference (AMR) entry.", + "text": "An entry designates what method was used by the user to verify their\nidentity and at what time.\n", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}.\n" + } + ] + }, + "children": [ + { + "id": 341, + "name": "method", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Authentication method name." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 142, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 342, + "name": "timestamp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Timestamp when the method was successfully used. Represents number of\nseconds since 1st January 1970 (UNIX epoch) in UTC." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 148, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [341, 342] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 140, + "character": 17 + } + ] + }, + { + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -4305,7 +4537,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -4315,7 +4547,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -4329,7 +4561,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -4339,7 +4571,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -4353,7 +4585,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -4363,12 +4595,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -4381,7 +4613,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -4391,12 +4623,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -4410,7 +4642,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -4420,7 +4652,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -4433,7 +4665,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -4443,12 +4675,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -4461,7 +4693,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -4471,12 +4703,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -4490,7 +4722,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -4500,7 +4732,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -4514,7 +4746,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -4528,33 +4760,204 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] }, { - "id": 458, + "id": 354, + "name": "Factor", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "A MFA factor.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#enroll}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#listFactors}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAAdminApi#listFactors}\n" + } + ] + }, + "children": [ + { + "id": 359, + "name": "created_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 186, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 357, + "name": "factor_type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of factor. Only `totp` supported with this version but may change in\nfuture versions." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 181, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 356, + "name": "friendly_name", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Friendly name of the factor, useful to disambiguate between multiple factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 175, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 355, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 172, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 358, + "name": "status", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Factor's status." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 184, + "character": 2 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "verified" + }, + { + "type": "literal", + "value": "unverified" + } + ] + } + }, + { + "id": 360, + "name": "updated_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 187, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [359, 357, 356, 355, 358, 360] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 170, + "character": 17 + } + ] + }, + { + "id": 514, "name": "GenerateLinkOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 459, + "id": 515, "name": "data", "kind": 1024, "kindString": "Property", @@ -4568,7 +4971,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 438, + "line": 507, "character": 2 } ], @@ -4578,7 +4981,7 @@ } }, { - "id": 460, + "id": 516, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -4591,7 +4994,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 440, + "line": 509, "character": 2 } ], @@ -4605,26 +5008,568 @@ { "title": "Properties", "kind": 1024, - "children": [459, 460] + "children": [515, 516] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 432, + "line": 501, "character": 17 } ] }, { - "id": 290, + "id": 673, + "name": "GoTrueAdminMFAApi", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "Contains the full multi-factor authentication administration API.", + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "children": [ + { + "id": 677, + "name": "deleteFactor", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 678, + "name": "deleteFactor", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Deletes a factor on a user. This will log the user out of all active\nsessions (if the deleted factor was verified). There's no need to delete\nunverified factors.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#unenroll}\n" + }, + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 679, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 648, + "name": "AuthMFAAdminDeleteFactorResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 674, + "name": "listFactors", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 675, + "name": "listFactors", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Lists all factors attached to a user.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 676, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 670, + "name": "AuthMFAAdminListFactorsParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 661, + "name": "AuthMFAAdminListFactorsResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Methods", + "kind": 2048, + "children": [677, 674] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 900, + "character": 17 + } + ] + }, + { + "id": 628, + "name": "GoTrueMFAApi", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "Contains the full multi-factor authentication API.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "children": [ + { + "id": 632, + "name": "challenge", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 633, + "name": "challenge", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Prepares a challenge used to verify that a user has access to a MFA\nfactor. Provide the challenge ID and verification code by calling\n{@link GoTrueMFAApi#verify}.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 634, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 552, + "name": "MFAChallengeParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 596, + "name": "AuthMFAChallengeResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 641, + "name": "challengeAndVerify", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 642, + "name": "challengeAndVerify", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Helper method which creates a challenge and immediately uses the given code to verify against it thereafter. The verification code is\nprovided by the user by entering a code seen in their authenticator app.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challengeAndVerify}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 643, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 555, + "name": "MFAChallengeAndVerifyParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 559, + "name": "AuthMFAVerifyResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 629, + "name": "enroll", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 630, + "name": "enroll", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Starts the enrollment process for a new Multi-Factor Authentication\nfactor. This method creates a new factor in the 'unverified' state.\nPresent the QR code or secret to the user and ask them to add it to their\nauthenticator app. Ask the user to provide you with an authenticator code\nfrom their app and verify it by calling challenge and then verify.", + "text": "The first successful verification of an unverified factor activates the\nfactor. All other sessions are logged out and the current one gets an\n`aal2` authenticator level.\n", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#verify}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 631, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 539, + "name": "MFAEnrollParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 572, + "name": "AuthMFAEnrollResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 646, + "name": "getAuthenticatorAssuranceLevel", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 647, + "name": "getAuthenticatorAssuranceLevel", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns the Authenticator Assurance Level (AAL) for the active session.", + "text": "- `aal1` (or `null`) means that the user's identity has been verified only\nwith a conventional login (email+password, OTP, magic link, social login,\netc.).\n- `aal2` means that the user's identity has been verified both with a conventional login and at least one MFA factor.\n\nAlthough this method returns a promise, it's fairly quick (microseconds)\nand rarely uses the network. You can use this to check whether the current\nuser needs to be shown a screen to verify their MFA factors.\n", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 617, + "name": "AuthMFAGetAuthenticatorAssuranceLevelResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 644, + "name": "listFactors", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 645, + "name": "listFactors", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns the list of MFA factors enabled for this user. For most use cases\nyou should consider using {@link\nGoTrueMFAApi#getAuthenticatorAssuranceLevel}. This uses a cached version\nof the factors and avoids incurring a network call. If you need to update\nthis list, call {@link GoTrueClient#getUser} first.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#enroll}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}" + }, + { + "tag": "see", + "text": "{@link GoTrueClient#getUser}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 606, + "name": "AuthMFAListFactorsResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 638, + "name": "unenroll", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 639, + "name": "unenroll", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Unenroll removes a MFA factor. Unverified factors can safely be ignored\nand it's not necessary to unenroll them. Unenrolling a verified MFA factor\ncannot be done from a session with an `aal1` authenticator level.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 640, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 544, + "name": "MFAUnenrollParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 587, + "name": "AuthMFAUnenrollResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 635, + "name": "verify", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 636, + "name": "verify", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Verifies a verification code against a challenge. The verification code is\nprovided by the user by entering a code seen in their authenticator app.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 637, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 547, + "name": "MFAVerifyParams" + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 559, + "name": "AuthMFAVerifyResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Methods", + "kind": 2048, + "children": [632, 641, 629, 646, 644, 638, 635] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 760, + "character": 17 + } + ] + }, + { + "id": 331, "name": "Session", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 293, + "id": 334, "name": "access_token", "kind": 1024, "kindString": "Property", @@ -4635,7 +5580,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 109, + "line": 115, "character": 2 } ], @@ -4645,7 +5590,7 @@ } }, { - "id": 296, + "id": 337, "name": "expires_at", "kind": 1024, "kindString": "Property", @@ -4658,7 +5603,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 121, + "line": 127, "character": 2 } ], @@ -4668,7 +5613,7 @@ } }, { - "id": 295, + "id": 336, "name": "expires_in", "kind": 1024, "kindString": "Property", @@ -4679,7 +5624,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 117, + "line": 123, "character": 2 } ], @@ -4689,7 +5634,7 @@ } }, { - "id": 292, + "id": 333, "name": "provider_refresh_token", "kind": 1024, "kindString": "Property", @@ -4702,7 +5647,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 105, + "line": 111, "character": 2 } ], @@ -4721,7 +5666,7 @@ } }, { - "id": 291, + "id": 332, "name": "provider_token", "kind": 1024, "kindString": "Property", @@ -4734,7 +5679,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 100, + "line": 106, "character": 2 } ], @@ -4753,7 +5698,7 @@ } }, { - "id": 294, + "id": 335, "name": "refresh_token", "kind": 1024, "kindString": "Property", @@ -4764,7 +5709,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 113, + "line": 119, "character": 2 } ], @@ -4774,7 +5719,7 @@ } }, { - "id": 297, + "id": 338, "name": "token_type", "kind": 1024, "kindString": "Property", @@ -4782,7 +5727,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 122, + "line": 128, "character": 2 } ], @@ -4792,7 +5737,7 @@ } }, { - "id": 298, + "id": 339, "name": "user", "kind": 1024, "kindString": "Property", @@ -4800,13 +5745,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 123, + "line": 129, "character": 2 } ], "type": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -4815,26 +5760,26 @@ { "title": "Properties", "kind": 1024, - "children": [293, 296, 295, 292, 291, 294, 297, 298] + "children": [334, 337, 336, 333, 332, 335, 338, 339] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 96, + "line": 102, "character": 17 } ] }, { - "id": 353, + "id": 405, "name": "Subscription", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 354, + "id": 406, "name": "id", "kind": 1024, "kindString": "Property", @@ -4845,7 +5790,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 250, + "line": 303, "character": 2 } ], @@ -4855,7 +5800,7 @@ } }, { - "id": 355, + "id": 407, "name": "callback", "kind": 2048, "kindString": "Method", @@ -4863,13 +5808,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 254, + "line": 307, "character": 2 } ], "signatures": [ { - "id": 356, + "id": 408, "name": "callback", "kind": 4096, "kindString": "Call signature", @@ -4879,19 +5824,19 @@ }, "parameters": [ { - "id": 357, + "id": 409, "name": "event", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 239, + "id": 280, "name": "AuthChangeEvent" } }, { - "id": 358, + "id": 410, "name": "session", "kind": 32768, "kindString": "Parameter", @@ -4905,7 +5850,7 @@ }, { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } ] @@ -4920,7 +5865,7 @@ ] }, { - "id": 359, + "id": 411, "name": "unsubscribe", "kind": 2048, "kindString": "Method", @@ -4928,13 +5873,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 258, + "line": 311, "character": 2 } ], "signatures": [ { - "id": 360, + "id": 412, "name": "unsubscribe", "kind": 4096, "kindString": "Call signature", @@ -4954,31 +5899,72 @@ { "title": "Properties", "kind": 1024, - "children": [354] + "children": [406] }, { "title": "Methods", "kind": 2048, - "children": [355, 359] + "children": [407, 411] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 246, + "line": 299, "character": 17 } ] }, { - "id": 317, + "id": 413, + "name": "UpdatableFactorAttributes", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "children": [ + { + "id": 414, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 315, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [414] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 314, + "character": 17 + } + ] + }, + { + "id": 368, "name": "User", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 327, + "id": 378, "name": "action_link", "kind": 1024, "kindString": "Property", @@ -4988,7 +5974,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 157, + "line": 209, "character": 2 } ], @@ -4998,7 +5984,7 @@ } }, { - "id": 319, + "id": 370, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -5006,18 +5992,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 149, + "line": 201, "character": 2 } ], "type": { "type": "reference", - "id": 310, + "id": 361, "name": "UserAppMetadata" } }, { - "id": 321, + "id": 372, "name": "aud", "kind": 1024, "kindString": "Property", @@ -5025,7 +6011,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 151, + "line": 203, "character": 2 } ], @@ -5035,7 +6021,7 @@ } }, { - "id": 322, + "id": 373, "name": "confirmation_sent_at", "kind": 1024, "kindString": "Property", @@ -5045,7 +6031,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 152, + "line": 204, "character": 2 } ], @@ -5055,7 +6041,7 @@ } }, { - "id": 331, + "id": 382, "name": "confirmed_at", "kind": 1024, "kindString": "Property", @@ -5065,7 +6051,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 161, + "line": 213, "character": 2 } ], @@ -5075,7 +6061,7 @@ } }, { - "id": 330, + "id": 381, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -5083,7 +6069,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 160, + "line": 212, "character": 2 } ], @@ -5093,7 +6079,7 @@ } }, { - "id": 328, + "id": 379, "name": "email", "kind": 1024, "kindString": "Property", @@ -5103,7 +6089,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 158, + "line": 210, "character": 2 } ], @@ -5113,7 +6099,7 @@ } }, { - "id": 324, + "id": 375, "name": "email_change_sent_at", "kind": 1024, "kindString": "Property", @@ -5123,7 +6109,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 154, + "line": 206, "character": 2 } ], @@ -5133,7 +6119,7 @@ } }, { - "id": 332, + "id": 383, "name": "email_confirmed_at", "kind": 1024, "kindString": "Property", @@ -5143,7 +6129,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 162, + "line": 214, "character": 2 } ], @@ -5153,7 +6139,31 @@ } }, { - "id": 318, + "id": 389, + "name": "factors", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 220, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + }, + { + "id": 369, "name": "id", "kind": 1024, "kindString": "Property", @@ -5161,7 +6171,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 148, + "line": 200, "character": 2 } ], @@ -5171,7 +6181,7 @@ } }, { - "id": 337, + "id": 388, "name": "identities", "kind": 1024, "kindString": "Property", @@ -5181,7 +6191,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 167, + "line": 219, "character": 2 } ], @@ -5189,13 +6199,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 299, + "id": 343, "name": "UserIdentity" } } }, { - "id": 326, + "id": 377, "name": "invited_at", "kind": 1024, "kindString": "Property", @@ -5205,7 +6215,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 156, + "line": 208, "character": 2 } ], @@ -5215,7 +6225,7 @@ } }, { - "id": 334, + "id": 385, "name": "last_sign_in_at", "kind": 1024, "kindString": "Property", @@ -5225,7 +6235,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 164, + "line": 216, "character": 2 } ], @@ -5235,7 +6245,7 @@ } }, { - "id": 325, + "id": 376, "name": "new_email", "kind": 1024, "kindString": "Property", @@ -5245,7 +6255,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 155, + "line": 207, "character": 2 } ], @@ -5255,7 +6265,7 @@ } }, { - "id": 329, + "id": 380, "name": "phone", "kind": 1024, "kindString": "Property", @@ -5265,7 +6275,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 159, + "line": 211, "character": 2 } ], @@ -5275,7 +6285,7 @@ } }, { - "id": 333, + "id": 384, "name": "phone_confirmed_at", "kind": 1024, "kindString": "Property", @@ -5285,7 +6295,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 163, + "line": 215, "character": 2 } ], @@ -5295,7 +6305,7 @@ } }, { - "id": 323, + "id": 374, "name": "recovery_sent_at", "kind": 1024, "kindString": "Property", @@ -5305,7 +6315,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 153, + "line": 205, "character": 2 } ], @@ -5315,7 +6325,7 @@ } }, { - "id": 335, + "id": 386, "name": "role", "kind": 1024, "kindString": "Property", @@ -5325,7 +6335,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 165, + "line": 217, "character": 2 } ], @@ -5335,7 +6345,7 @@ } }, { - "id": 336, + "id": 387, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -5345,7 +6355,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 166, + "line": 218, "character": 2 } ], @@ -5355,7 +6365,7 @@ } }, { - "id": 320, + "id": 371, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -5363,13 +6373,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 150, + "line": 202, "character": 2 } ], "type": { "type": "reference", - "id": 314, + "id": 365, "name": "UserMetadata" } } @@ -5379,28 +6389,28 @@ "title": "Properties", "kind": 1024, "children": [ - 327, 319, 321, 322, 331, 330, 328, 324, 332, 318, 337, 326, 334, 325, 329, 333, 323, - 335, 336, 320 + 378, 370, 372, 373, 382, 381, 379, 375, 383, 389, 369, 388, 377, 385, 376, 380, 384, + 374, 386, 387, 371 ] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 147, + "line": 199, "character": 17 } ] }, { - "id": 310, + "id": 361, "name": "UserAppMetadata", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 311, + "id": 362, "name": "provider", "kind": 1024, "kindString": "Property", @@ -5410,7 +6420,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 139, + "line": 191, "character": 2 } ], @@ -5424,25 +6434,25 @@ { "title": "Properties", "kind": 1024, - "children": [311] + "children": [362] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 138, + "line": 190, "character": 17 } ], "indexSignature": { - "id": 312, + "id": 363, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 313, + "id": 364, "name": "key", "kind": 32768, "flags": {}, @@ -5459,14 +6469,14 @@ } }, { - "id": 338, + "id": 390, "name": "UserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 342, + "id": 394, "name": "data", "kind": 1024, "kindString": "Property", @@ -5480,7 +6490,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -5490,7 +6500,7 @@ } }, { - "id": 339, + "id": 391, "name": "email", "kind": 1024, "kindString": "Property", @@ -5503,7 +6513,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -5513,7 +6523,7 @@ } }, { - "id": 341, + "id": 393, "name": "password", "kind": 1024, "kindString": "Property", @@ -5526,7 +6536,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -5536,7 +6546,7 @@ } }, { - "id": 340, + "id": 392, "name": "phone", "kind": 1024, "kindString": "Property", @@ -5549,7 +6559,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -5563,33 +6573,33 @@ { "title": "Properties", "kind": 1024, - "children": [342, 339, 341, 340] + "children": [394, 391, 393, 392] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 170, + "line": 223, "character": 17 } ], "extendedBy": [ { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } ] }, { - "id": 299, + "id": 343, "name": "UserIdentity", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 307, + "id": 351, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -5597,7 +6607,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 133, + "line": 158, "character": 2 } ], @@ -5607,7 +6617,7 @@ } }, { - "id": 300, + "id": 344, "name": "id", "kind": 1024, "kindString": "Property", @@ -5615,7 +6625,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 127, + "line": 152, "character": 2 } ], @@ -5625,7 +6635,7 @@ } }, { - "id": 302, + "id": 346, "name": "identity_data", "kind": 1024, "kindString": "Property", @@ -5633,27 +6643,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 129, + "line": 154, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 303, + "id": 347, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "indexSignature": { - "id": 304, + "id": 348, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 305, + "id": 349, "name": "key", "kind": 32768, "flags": {}, @@ -5672,7 +6682,7 @@ } }, { - "id": 308, + "id": 352, "name": "last_sign_in_at", "kind": 1024, "kindString": "Property", @@ -5680,7 +6690,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 134, + "line": 159, "character": 2 } ], @@ -5690,7 +6700,7 @@ } }, { - "id": 306, + "id": 350, "name": "provider", "kind": 1024, "kindString": "Property", @@ -5698,7 +6708,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 132, + "line": 157, "character": 2 } ], @@ -5708,7 +6718,7 @@ } }, { - "id": 309, + "id": 353, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -5718,7 +6728,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 135, + "line": 160, "character": 2 } ], @@ -5728,7 +6738,7 @@ } }, { - "id": 301, + "id": 345, "name": "user_id", "kind": 1024, "kindString": "Property", @@ -5736,7 +6746,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 128, + "line": 153, "character": 2 } ], @@ -5750,19 +6760,19 @@ { "title": "Properties", "kind": 1024, - "children": [307, 300, 302, 308, 306, 309, 301] + "children": [351, 344, 346, 352, 350, 353, 345] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 126, + "line": 151, "character": 17 } ] }, { - "id": 314, + "id": 365, "name": "UserMetadata", "kind": 256, "kindString": "Interface", @@ -5770,19 +6780,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 143, + "line": 195, "character": 17 } ], "indexSignature": { - "id": 315, + "id": 366, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 316, + "id": 367, "name": "key", "kind": 32768, "flags": {}, @@ -5799,14 +6809,14 @@ } }, { - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 427, + "id": 483, "name": "email", "kind": 1024, "kindString": "Property", @@ -5817,7 +6827,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 384, + "line": 453, "character": 2 } ], @@ -5827,7 +6837,7 @@ } }, { - "id": 430, + "id": 486, "name": "options", "kind": 1024, "kindString": "Property", @@ -5837,21 +6847,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 389, + "line": 458, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 431, + "id": 487, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 433, + "id": 489, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -5864,7 +6874,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 393, + "line": 462, "character": 4 } ], @@ -5874,7 +6884,7 @@ } }, { - "id": 432, + "id": 488, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -5887,7 +6897,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 391, + "line": 460, "character": 4 } ], @@ -5901,14 +6911,14 @@ { "title": "Properties", "kind": 1024, - "children": [433, 432] + "children": [489, 488] } ] } } }, { - "id": 428, + "id": 484, "name": "token", "kind": 1024, "kindString": "Property", @@ -5919,7 +6929,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 386, + "line": 455, "character": 2 } ], @@ -5929,7 +6939,7 @@ } }, { - "id": 429, + "id": 485, "name": "type", "kind": 1024, "kindString": "Property", @@ -5940,13 +6950,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 388, + "line": 457, "character": 2 } ], "type": { "type": "reference", - "id": 435, + "id": 491, "name": "EmailOtpType" } } @@ -5955,26 +6965,26 @@ { "title": "Properties", "kind": 1024, - "children": [427, 430, 428, 429] + "children": [483, 486, 484, 485] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 382, + "line": 451, "character": 17 } ] }, { - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 422, + "id": 478, "name": "options", "kind": 1024, "kindString": "Property", @@ -5984,21 +6994,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 375, + "line": 444, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 423, + "id": 479, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 425, + "id": 481, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -6011,7 +7021,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 379, + "line": 448, "character": 4 } ], @@ -6021,7 +7031,7 @@ } }, { - "id": 424, + "id": 480, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -6034,7 +7044,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 377, + "line": 446, "character": 4 } ], @@ -6048,14 +7058,14 @@ { "title": "Properties", "kind": 1024, - "children": [425, 424] + "children": [481, 480] } ] } } }, { - "id": 419, + "id": 475, "name": "phone", "kind": 1024, "kindString": "Property", @@ -6066,7 +7076,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 370, + "line": 439, "character": 2 } ], @@ -6076,7 +7086,7 @@ } }, { - "id": 420, + "id": 476, "name": "token", "kind": 1024, "kindString": "Property", @@ -6087,7 +7097,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 372, + "line": 441, "character": 2 } ], @@ -6097,7 +7107,7 @@ } }, { - "id": 421, + "id": 477, "name": "type", "kind": 1024, "kindString": "Property", @@ -6108,13 +7118,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 374, + "line": 443, "character": 2 } ], "type": { "type": "reference", - "id": 434, + "id": 490, "name": "MobileOtpType" } } @@ -6123,19 +7133,19 @@ { "title": "Properties", "kind": 1024, - "children": [422, 419, 420, 421] + "children": [478, 475, 476, 477] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 368, + "line": 437, "character": 17 } ] }, { - "id": 239, + "id": 280, "name": "AuthChangeEvent", "kind": 4194304, "kindString": "Type alias", @@ -6143,7 +7153,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 23, + "line": 28, "character": 12 } ], @@ -6173,20 +7183,149 @@ { "type": "literal", "value": "USER_DELETED" + }, + { + "type": "reference", + "id": 279, + "name": "AuthChangeEventMFA" } ] } }, { - "id": 253, - "name": "AuthResponse", + "id": 279, + "name": "AuthChangeEventMFA", "kind": 4194304, "kindString": "Type alias", "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, "sources": [ { "fileName": "src/lib/types.ts", - "line": 50, + "line": 26, + "character": 12 + } + ], + "type": { + "type": "literal", + "value": "MFA_CHALLENGE_VERIFIED" + } + }, + { + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 658, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 659, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the MFA factor to delete." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 868, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 660, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user whose factor is being deleted." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 871, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [659, 660] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 45 + } + ] + } + } + }, + { + "id": 648, + "name": "AuthMFAAdminDeleteFactorResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 853, "character": 12 } ], @@ -6196,14 +7335,14 @@ { "type": "reflection", "declaration": { - "id": 254, + "id": 649, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 255, + "id": 650, "name": "data", "kind": 1024, "kindString": "Property", @@ -6211,29 +7350,1058 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 52, + "line": 855, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 256, + "id": 651, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 258, - "name": "session", + "id": 652, + "name": "id", "kind": 1024, "kindString": "Property", "flags": {}, + "comment": { + "shortText": "ID of the factor that was successfully deleted." + }, "sources": [ { "fileName": "src/lib/types.ts", - "line": 54, + "line": 857, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [652] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 855, + "character": 12 + } + ] + } + } + }, + { + "id": 653, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 859, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [650, 653] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 854, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 654, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 655, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 656, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [655, 656] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 671, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 672, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user for which to list all MFA factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 892, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [672] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 44 + } + ] + } + } + }, + { + "id": 661, + "name": "AuthMFAAdminListFactorsResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 877, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 662, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 663, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 879, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 664, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 665, + "name": "factors", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "All factors attached to the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 881, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [665] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 879, + "character": 12 + } + ] + } + } + }, + { + "id": 666, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 883, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [663, 666] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 878, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 667, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 668, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 669, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [668, 669] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 596, + "name": "AuthMFAChallengeResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 693, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 597, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 598, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 695, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 599, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 601, + "name": "expires_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Timestamp in UNIX seconds when this challenge will no longer be usable." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 700, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 600, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the newly created challenge." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 697, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [601, 600] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 695, + "character": 12 + } + ] + } + } + }, + { + "id": 602, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 702, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [598, 602] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 694, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 603, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 604, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 605, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [604, 605] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 572, + "name": "AuthMFAEnrollResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 644, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 573, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 574, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 646, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 575, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 576, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor that was just enrolled (in an unverified state)." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 648, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 578, + "name": "totp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "TOTP enrollment information." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 654, + "character": 8 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 579, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 580, + "name": "qr_code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Contains a QR code encoding the authenticator URI. You can\nconvert it to a URL by prepending `data:image/svg+xml;utf-8,` to\nthe value. Avoid logging this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 658, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 581, + "name": "secret", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The TOTP secret (also encoded in the QR code). Show this secret\nin a password-style field to the user, in case they are unable to\nscan the QR code. Avoid logging this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 663, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 582, + "name": "uri", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The authenticator URI encoded within the QR code, should you need\nto use it. Avoid loggin this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 667, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [580, 581, 582] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 654, + "character": 14 + } + ] + } + } + }, + { + "id": 577, + "name": "type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of MFA factor. Only `totp` supported for now." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 651, + "character": 8 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [576, 578, 577] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 646, + "character": 12 + } + ] + } + } + }, + { + "id": 583, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 670, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [574, 583] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 645, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 584, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 585, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 673, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 586, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 674, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [585, 586] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 672, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 617, + "name": "AuthMFAGetAuthenticatorAssuranceLevelResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 730, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 618, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 619, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 732, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 620, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 623, + "name": "currentAuthenticationMethods", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "A list of all authentication methods attached to this session. Use\nthe information here to detect the last time a user verified a\nfactor, for example if implementing a step-up scenario." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 749, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 340, + "name": "AMREntry" + } + } + }, + { + "id": 621, + "name": "currentLevel", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Current AAL level of the session." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 734, "character": 8 } ], @@ -6242,7 +8410,937 @@ "types": [ { "type": "reference", - "id": 290, + "id": 616, + "name": "AuthenticatorAssuranceLevels" + }, + { + "type": "literal", + "value": null + } + ] + } + }, + { + "id": 622, + "name": "nextLevel", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Next possible AAL level for the session. If the next level is higher\nthan the current one, the user should go through MFA.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 742, + "character": 8 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 616, + "name": "AuthenticatorAssuranceLevels" + }, + { + "type": "literal", + "value": null + } + ] + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [623, 621, 622] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 732, + "character": 12 + } + ] + } + } + }, + { + "id": 624, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 751, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [619, 624] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 731, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 625, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 626, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 627, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [626, 627] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 606, + "name": "AuthMFAListFactorsResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 709, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 607, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 608, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 711, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 609, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 610, + "name": "all", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "All available factors (verified and unverified)." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 713, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + }, + { + "id": 611, + "name": "totp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Only verified TOTP factors. (A subset of `all`.)" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 716, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [610, 611] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 711, + "character": 12 + } + ] + } + } + }, + { + "id": 612, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 718, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [608, 612] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 710, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 613, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 614, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 615, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [614, 615] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 587, + "name": "AuthMFAUnenrollResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 680, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 588, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 589, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 682, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 590, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 591, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor that was successfully unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 684, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [591] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 682, + "character": 12 + } + ] + } + } + }, + { + "id": 592, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 686, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [589, 592] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 681, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 593, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 594, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 595, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [594, 595] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 559, + "name": "AuthMFAVerifyResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 616, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 560, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 561, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 618, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 562, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 563, + "name": "access_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "New access token (JWT) after successful verification." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 620, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 565, + "name": "expires_in", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Number of seconds in which the access token will expire." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 626, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 566, + "name": "refresh_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Refresh token you can use to obtain new access tokens when expired." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 629, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 564, + "name": "token_type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of token, typically `Bearer`." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 623, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 567, + "name": "user", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Updated user profile." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 632, + "character": 8 + } + ], + "type": { + "type": "reference", + "id": 368, + "name": "User" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [563, 565, 566, 564, 567] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 618, + "character": 12 + } + ] + } + } + }, + { + "id": 568, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 634, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [561, 568] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 617, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 569, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 570, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 637, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 571, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 638, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [570, 571] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 636, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 294, + "name": "AuthResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 56, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 295, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 296, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 58, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 297, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 299, + "name": "session", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 60, + "character": 8 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 331, "name": "Session" }, { @@ -6253,7 +9351,7 @@ } }, { - "id": 257, + "id": 298, "name": "user", "kind": 1024, "kindString": "Property", @@ -6261,7 +9359,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 53, + "line": 59, "character": 8 } ], @@ -6270,7 +9368,7 @@ "types": [ { "type": "reference", - "id": 317, + "id": 368, "name": "User" }, { @@ -6285,13 +9383,13 @@ { "title": "Properties", "kind": 1024, - "children": [258, 257] + "children": [299, 298] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 52, + "line": 58, "character": 12 } ] @@ -6299,7 +9397,7 @@ } }, { - "id": 259, + "id": 300, "name": "error", "kind": 1024, "kindString": "Property", @@ -6307,7 +9405,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 56, + "line": 62, "character": 6 } ], @@ -6321,13 +9419,13 @@ { "title": "Properties", "kind": 1024, - "children": [255, 259] + "children": [296, 300] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 51, + "line": 57, "character": 4 } ] @@ -6336,14 +9434,14 @@ { "type": "reflection", "declaration": { - "id": 260, + "id": 301, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 261, + "id": 302, "name": "data", "kind": 1024, "kindString": "Property", @@ -6351,21 +9449,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 59, + "line": 65, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 262, + "id": 303, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 264, + "id": 305, "name": "session", "kind": 1024, "kindString": "Property", @@ -6373,7 +9471,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 61, + "line": 67, "character": 8 } ], @@ -6383,7 +9481,7 @@ } }, { - "id": 263, + "id": 304, "name": "user", "kind": 1024, "kindString": "Property", @@ -6391,7 +9489,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 60, + "line": 66, "character": 8 } ], @@ -6405,13 +9503,13 @@ { "title": "Properties", "kind": 1024, - "children": [264, 263] + "children": [305, 304] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 59, + "line": 65, "character": 12 } ] @@ -6419,7 +9517,7 @@ } }, { - "id": 265, + "id": 306, "name": "error", "kind": 1024, "kindString": "Property", @@ -6427,13 +9525,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 63, + "line": 69, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -6442,13 +9540,13 @@ { "title": "Properties", "kind": 1024, - "children": [261, 265] + "children": [302, 306] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 58, + "line": 64, "character": 4 } ] @@ -6458,7 +9556,42 @@ } }, { - "id": 487, + "id": 616, + "name": "AuthenticatorAssuranceLevels", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 725, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "aal1" + }, + { + "type": "literal", + "value": "aal2" + } + ] + } + }, + { + "id": 684, "name": "CallRefreshTokenResult", "kind": 4194304, "kindString": "Type alias", @@ -6466,7 +9599,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 508, + "line": 933, "character": 12 } ], @@ -6476,14 +9609,14 @@ { "type": "reflection", "declaration": { - "id": 488, + "id": 685, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 490, + "id": 687, "name": "error", "kind": 1024, "kindString": "Property", @@ -6491,7 +9624,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 511, + "line": 936, "character": 6 } ], @@ -6501,7 +9634,7 @@ } }, { - "id": 489, + "id": 686, "name": "session", "kind": 1024, "kindString": "Property", @@ -6509,13 +9642,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 510, + "line": 935, "character": 6 } ], "type": { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } } @@ -6524,13 +9657,13 @@ { "title": "Properties", "kind": 1024, - "children": [490, 489] + "children": [687, 686] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 509, + "line": 934, "character": 4 } ] @@ -6539,14 +9672,14 @@ { "type": "reflection", "declaration": { - "id": 491, + "id": 688, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 493, + "id": 690, "name": "error", "kind": 1024, "kindString": "Property", @@ -6554,18 +9687,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 515, + "line": 940, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } }, { - "id": 492, + "id": 689, "name": "session", "kind": 1024, "kindString": "Property", @@ -6573,7 +9706,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 514, + "line": 939, "character": 6 } ], @@ -6587,13 +9720,13 @@ { "title": "Properties", "kind": 1024, - "children": [493, 492] + "children": [690, 689] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 513, + "line": 938, "character": 4 } ] @@ -6603,7 +9736,7 @@ } }, { - "id": 435, + "id": 491, "name": "EmailOtpType", "kind": 4194304, "kindString": "Type alias", @@ -6611,7 +9744,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 398, + "line": 467, "character": 12 } ], @@ -6642,7 +9775,7 @@ } }, { - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -6650,21 +9783,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 421, + "line": 490, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 453, + "id": 509, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 455, + "id": 511, "name": "email", "kind": 1024, "kindString": "Property", @@ -6675,7 +9808,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 424, + "line": 493, "character": 2 } ], @@ -6685,7 +9818,7 @@ } }, { - "id": 456, + "id": 512, "name": "newEmail", "kind": 1024, "kindString": "Property", @@ -6696,7 +9829,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 428, + "line": 497, "character": 2 } ], @@ -6706,7 +9839,7 @@ } }, { - "id": 457, + "id": 513, "name": "options", "kind": 1024, "kindString": "Property", @@ -6716,7 +9849,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 429, + "line": 498, "character": 2 } ], @@ -6725,7 +9858,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -6739,7 +9872,7 @@ } }, { - "id": 454, + "id": 510, "name": "type", "kind": 1024, "kindString": "Property", @@ -6747,7 +9880,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 422, + "line": 491, "character": 2 } ], @@ -6770,13 +9903,13 @@ { "title": "Properties", "kind": 1024, - "children": [455, 456, 457, 454] + "children": [511, 512, 513, 510] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 421, + "line": 490, "character": 44 } ] @@ -6784,7 +9917,7 @@ } }, { - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams", "kind": 4194304, "kindString": "Type alias", @@ -6792,21 +9925,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 407, + "line": 476, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 443, + "id": 499, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 445, + "id": 501, "name": "email", "kind": 1024, "kindString": "Property", @@ -6817,7 +9950,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 410, + "line": 479, "character": 2 } ], @@ -6827,7 +9960,7 @@ } }, { - "id": 446, + "id": 502, "name": "options", "kind": 1024, "kindString": "Property", @@ -6837,7 +9970,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 411, + "line": 480, "character": 2 } ], @@ -6846,7 +9979,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -6869,7 +10002,7 @@ } }, { - "id": 444, + "id": 500, "name": "type", "kind": 1024, "kindString": "Property", @@ -6877,7 +10010,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 408, + "line": 477, "character": 2 } ], @@ -6900,13 +10033,13 @@ { "title": "Properties", "kind": 1024, - "children": [445, 446, 444] + "children": [501, 502, 500] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 407, + "line": 476, "character": 46 } ] @@ -6914,7 +10047,7 @@ } }, { - "id": 461, + "id": 517, "name": "GenerateLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -6922,7 +10055,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 443, + "line": 512, "character": 12 } ], @@ -6931,29 +10064,29 @@ "types": [ { "type": "reference", - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams" }, { "type": "reference", - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams" }, { "type": "reference", - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams" }, { "type": "reference", - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams" } ] } }, { - "id": 475, + "id": 531, "name": "GenerateLinkProperties", "kind": 4194304, "kindString": "Type alias", @@ -6964,21 +10097,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 466, + "line": 535, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 476, + "id": 532, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 477, + "id": 533, "name": "action_link", "kind": 1024, "kindString": "Property", @@ -6989,7 +10122,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 471, + "line": 540, "character": 2 } ], @@ -6999,7 +10132,7 @@ } }, { - "id": 478, + "id": 534, "name": "email_otp", "kind": 1024, "kindString": "Property", @@ -7010,7 +10143,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 476, + "line": 545, "character": 2 } ], @@ -7020,7 +10153,7 @@ } }, { - "id": 479, + "id": 535, "name": "hashed_token", "kind": 1024, "kindString": "Property", @@ -7031,7 +10164,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 480, + "line": 549, "character": 2 } ], @@ -7041,7 +10174,7 @@ } }, { - "id": 480, + "id": 536, "name": "redirect_to", "kind": 1024, "kindString": "Property", @@ -7052,7 +10185,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 482, + "line": 551, "character": 2 } ], @@ -7062,7 +10195,7 @@ } }, { - "id": 481, + "id": 537, "name": "verification_type", "kind": 1024, "kindString": "Property", @@ -7073,13 +10206,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 484, + "line": 553, "character": 2 } ], "type": { "type": "reference", - "id": 482, + "id": 538, "name": "GenerateLinkType" } } @@ -7088,13 +10221,13 @@ { "title": "Properties", "kind": 1024, - "children": [477, 478, 479, 480, 481] + "children": [533, 534, 535, 536, 537] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 466, + "line": 535, "character": 37 } ] @@ -7102,7 +10235,7 @@ } }, { - "id": 462, + "id": 518, "name": "GenerateLinkResponse", "kind": 4194304, "kindString": "Type alias", @@ -7110,7 +10243,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 449, + "line": 518, "character": 12 } ], @@ -7120,14 +10253,14 @@ { "type": "reflection", "declaration": { - "id": 463, + "id": 519, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 464, + "id": 520, "name": "data", "kind": 1024, "kindString": "Property", @@ -7135,21 +10268,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 451, + "line": 520, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 465, + "id": 521, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 466, + "id": 522, "name": "properties", "kind": 1024, "kindString": "Property", @@ -7157,18 +10290,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 452, + "line": 521, "character": 8 } ], "type": { "type": "reference", - "id": 475, + "id": 531, "name": "GenerateLinkProperties" } }, { - "id": 467, + "id": 523, "name": "user", "kind": 1024, "kindString": "Property", @@ -7176,13 +10309,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 453, + "line": 522, "character": 8 } ], "type": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -7191,13 +10324,13 @@ { "title": "Properties", "kind": 1024, - "children": [466, 467] + "children": [522, 523] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 451, + "line": 520, "character": 12 } ] @@ -7205,7 +10338,7 @@ } }, { - "id": 468, + "id": 524, "name": "error", "kind": 1024, "kindString": "Property", @@ -7213,7 +10346,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 455, + "line": 524, "character": 6 } ], @@ -7227,13 +10360,13 @@ { "title": "Properties", "kind": 1024, - "children": [464, 468] + "children": [520, 524] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 450, + "line": 519, "character": 4 } ] @@ -7242,14 +10375,14 @@ { "type": "reflection", "declaration": { - "id": 469, + "id": 525, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 470, + "id": 526, "name": "data", "kind": 1024, "kindString": "Property", @@ -7257,21 +10390,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 458, + "line": 527, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 471, + "id": 527, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 472, + "id": 528, "name": "properties", "kind": 1024, "kindString": "Property", @@ -7279,7 +10412,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 459, + "line": 528, "character": 8 } ], @@ -7289,7 +10422,7 @@ } }, { - "id": 473, + "id": 529, "name": "user", "kind": 1024, "kindString": "Property", @@ -7297,7 +10430,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 460, + "line": 529, "character": 8 } ], @@ -7311,13 +10444,13 @@ { "title": "Properties", "kind": 1024, - "children": [472, 473] + "children": [528, 529] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 458, + "line": 527, "character": 12 } ] @@ -7325,7 +10458,7 @@ } }, { - "id": 474, + "id": 530, "name": "error", "kind": 1024, "kindString": "Property", @@ -7333,13 +10466,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 462, + "line": 531, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -7348,13 +10481,13 @@ { "title": "Properties", "kind": 1024, - "children": [470, 474] + "children": [526, 530] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 457, + "line": 526, "character": 4 } ] @@ -7364,7 +10497,7 @@ } }, { - "id": 482, + "id": 538, "name": "GenerateLinkType", "kind": 4194304, "kindString": "Type alias", @@ -7372,7 +10505,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 487, + "line": 556, "character": 12 } ], @@ -7407,7 +10540,7 @@ } }, { - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -7415,21 +10548,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 414, + "line": 483, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 448, + "id": 504, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 450, + "id": 506, "name": "email", "kind": 1024, "kindString": "Property", @@ -7440,7 +10573,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 417, + "line": 486, "character": 2 } ], @@ -7450,7 +10583,7 @@ } }, { - "id": 451, + "id": 507, "name": "options", "kind": 1024, "kindString": "Property", @@ -7460,7 +10593,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 418, + "line": 487, "character": 2 } ], @@ -7469,7 +10602,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -7483,7 +10616,7 @@ } }, { - "id": 449, + "id": 505, "name": "type", "kind": 1024, "kindString": "Property", @@ -7491,7 +10624,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 415, + "line": 484, "character": 2 } ], @@ -7505,13 +10638,13 @@ { "title": "Properties", "kind": 1024, - "children": [450, 451, 449] + "children": [506, 507, 505] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 414, + "line": 483, "character": 41 } ] @@ -7519,7 +10652,7 @@ } }, { - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -7527,21 +10660,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 400, + "line": 469, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 437, + "id": 493, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 439, + "id": 495, "name": "email", "kind": 1024, "kindString": "Property", @@ -7549,7 +10682,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 402, + "line": 471, "character": 2 } ], @@ -7559,7 +10692,7 @@ } }, { - "id": 441, + "id": 497, "name": "options", "kind": 1024, "kindString": "Property", @@ -7569,7 +10702,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 404, + "line": 473, "character": 2 } ], @@ -7578,7 +10711,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -7601,7 +10734,7 @@ } }, { - "id": 440, + "id": 496, "name": "password", "kind": 1024, "kindString": "Property", @@ -7609,7 +10742,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 403, + "line": 472, "character": 2 } ], @@ -7619,7 +10752,7 @@ } }, { - "id": 438, + "id": 494, "name": "type", "kind": 1024, "kindString": "Property", @@ -7627,7 +10760,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 401, + "line": 470, "character": 2 } ], @@ -7641,13 +10774,13 @@ { "title": "Properties", "kind": 1024, - "children": [439, 441, 440, 438] + "children": [495, 497, 496, 494] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 400, + "line": 469, "character": 39 } ] @@ -7655,7 +10788,7 @@ } }, { - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "kind": 4194304, "kindString": "Type alias", @@ -7663,67 +10796,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 241, + "id": 282, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 249, + "id": 290, "name": "autoRefreshToken", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 41, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 248, - "name": "detectSessionInUrl", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 39, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 252, - "name": "fetch", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, "sources": [ { "fileName": "src/lib/types.ts", @@ -7731,13 +10824,53 @@ "character": 2 } ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 289, + "name": "detectSessionInUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 45, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 293, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 53, + "character": 2 + } + ], "type": { "type": "reference", "name": "Fetch" } }, { - "id": 243, + "id": 284, "name": "headers", "kind": 1024, "kindString": "Property", @@ -7747,14 +10880,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 244, + "id": 285, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -7762,19 +10895,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 12 } ], "indexSignature": { - "id": 245, + "id": 286, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 246, + "id": 287, "name": "key", "kind": 32768, "flags": {}, @@ -7793,13 +10926,54 @@ } }, { - "id": 250, + "id": 291, "name": "persistSession", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 49, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 292, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 51, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 680, + "name": "SupportedStorage" + } + }, + { + "id": 288, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, "sources": [ { "fileName": "src/lib/types.ts", @@ -7807,54 +10981,13 @@ "character": 2 } ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 251, - "name": "storage", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 45, - "character": 2 - } - ], - "type": { - "type": "reference", - "id": 483, - "name": "SupportedStorage" - } - }, - { - "id": 247, - "name": "storageKey", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 37, - "character": 2 - } - ], "type": { "type": "intrinsic", "name": "string" } }, { - "id": 242, + "id": 283, "name": "url", "kind": 1024, "kindString": "Property", @@ -7864,7 +10997,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 33, + "line": 39, "character": 2 } ], @@ -7878,13 +11011,13 @@ { "title": "Properties", "kind": 1024, - "children": [249, 248, 252, 243, 250, 251, 247, 242] + "children": [290, 289, 293, 284, 291, 292, 288, 283] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 34 } ] @@ -7892,7 +11025,7 @@ } }, { - "id": 484, + "id": 681, "name": "InitializeResult", "kind": 4194304, "kindString": "Type alias", @@ -7900,21 +11033,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 485, + "id": 682, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 486, + "id": 683, "name": "error", "kind": 1024, "kindString": "Property", @@ -7922,7 +11055,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 33 } ], @@ -7931,7 +11064,7 @@ "types": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" }, { @@ -7946,13 +11079,13 @@ { "title": "Properties", "kind": 1024, - "children": [486] + "children": [683] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 31 } ] @@ -7960,7 +11093,452 @@ } }, { - "id": 434, + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 556, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 558, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 610, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 557, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 608, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [558, 557] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 42 + } + ] + } + } + }, + { + "id": 552, + "name": "MFAChallengeParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 553, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 554, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor to be challenged." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 600, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [554] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 33 + } + ] + } + } + }, + { + "id": 539, + "name": "MFAEnrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 540, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 541, + "name": "factorType", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 568, + "character": 2 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + }, + { + "id": 543, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 570, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 542, + "name": "issuer", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 569, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [541, 543, 542] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 30 + } + ] + } + } + }, + { + "id": 544, + "name": "MFAUnenrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 545, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 546, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 578, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [546] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 32 + } + ] + } + } + }, + { + "id": 547, + "name": "MFAVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 548, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 550, + "name": "challengeId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the challenge being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 589, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 551, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 592, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 549, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 586, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [550, 551, 549] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 30 + } + ] + } + } + }, + { + "id": 490, "name": "MobileOtpType", "kind": 4194304, "kindString": "Type alias", @@ -7968,7 +11546,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 397, + "line": 466, "character": 12 } ], @@ -7987,7 +11565,7 @@ } }, { - "id": 266, + "id": 307, "name": "OAuthResponse", "kind": 4194304, "kindString": "Type alias", @@ -7995,7 +11573,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 66, + "line": 72, "character": 12 } ], @@ -8005,14 +11583,14 @@ { "type": "reflection", "declaration": { - "id": 267, + "id": 308, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 268, + "id": 309, "name": "data", "kind": 1024, "kindString": "Property", @@ -8020,21 +11598,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 68, + "line": 74, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 269, + "id": 310, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 270, + "id": 311, "name": "provider", "kind": 1024, "kindString": "Property", @@ -8042,18 +11620,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 69, + "line": 75, "character": 8 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } }, { - "id": 271, + "id": 312, "name": "url", "kind": 1024, "kindString": "Property", @@ -8061,7 +11639,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 70, + "line": 76, "character": 8 } ], @@ -8075,13 +11653,13 @@ { "title": "Properties", "kind": 1024, - "children": [270, 271] + "children": [311, 312] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 68, + "line": 74, "character": 12 } ] @@ -8089,7 +11667,7 @@ } }, { - "id": 272, + "id": 313, "name": "error", "kind": 1024, "kindString": "Property", @@ -8097,7 +11675,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 72, + "line": 78, "character": 6 } ], @@ -8111,13 +11689,13 @@ { "title": "Properties", "kind": 1024, - "children": [268, 272] + "children": [309, 313] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 67, + "line": 73, "character": 4 } ] @@ -8126,14 +11704,14 @@ { "type": "reflection", "declaration": { - "id": 273, + "id": 314, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 274, + "id": 315, "name": "data", "kind": 1024, "kindString": "Property", @@ -8141,21 +11719,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 75, + "line": 81, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 275, + "id": 316, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 276, + "id": 317, "name": "provider", "kind": 1024, "kindString": "Property", @@ -8163,18 +11741,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 76, + "line": 82, "character": 8 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } }, { - "id": 277, + "id": 318, "name": "url", "kind": 1024, "kindString": "Property", @@ -8182,7 +11760,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 77, + "line": 83, "character": 8 } ], @@ -8196,13 +11774,13 @@ { "title": "Properties", "kind": 1024, - "children": [276, 277] + "children": [317, 318] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 75, + "line": 81, "character": 12 } ] @@ -8210,7 +11788,7 @@ } }, { - "id": 278, + "id": 319, "name": "error", "kind": 1024, "kindString": "Property", @@ -8218,13 +11796,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 79, + "line": 85, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -8233,13 +11811,13 @@ { "title": "Properties", "kind": 1024, - "children": [274, 278] + "children": [315, 319] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 74, + "line": 80, "character": 4 } ] @@ -8249,7 +11827,7 @@ } }, { - "id": 238, + "id": 278, "name": "Provider", "kind": 4194304, "kindString": "Type alias", @@ -8335,7 +11913,7 @@ } }, { - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "kind": 4194304, "kindString": "Type alias", @@ -8343,21 +11921,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 407, + "id": 463, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 409, + "id": 465, "name": "options", "kind": 1024, "kindString": "Property", @@ -8367,21 +11945,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 410, + "id": 466, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 413, + "id": 469, "name": "queryParams", "kind": 1024, "kindString": "Property", @@ -8394,14 +11972,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 414, + "id": 470, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -8409,19 +11987,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 18 } ], "indexSignature": { - "id": 415, + "id": 471, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 416, + "id": 472, "name": "key", "kind": 32768, "flags": {}, @@ -8440,7 +12018,7 @@ } }, { - "id": 411, + "id": 467, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -8453,7 +12031,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 359, + "line": 428, "character": 4 } ], @@ -8463,7 +12041,7 @@ } }, { - "id": 412, + "id": 468, "name": "scopes", "kind": 1024, "kindString": "Property", @@ -8476,7 +12054,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 361, + "line": 430, "character": 4 } ], @@ -8490,13 +12068,13 @@ { "title": "Properties", "kind": 1024, - "children": [413, 411, 412] + "children": [469, 467, 468] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 12 } ] @@ -8504,7 +12082,7 @@ } }, { - "id": 408, + "id": 464, "name": "provider", "kind": 1024, "kindString": "Property", @@ -8515,13 +12093,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 356, + "line": 425, "character": 2 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } } @@ -8530,13 +12108,13 @@ { "title": "Properties", "kind": 1024, - "children": [409, 408] + "children": [465, 464] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 41 } ] @@ -8544,7 +12122,7 @@ } }, { - "id": 377, + "id": 431, "name": "SignInWithPasswordCredentials", "kind": 4194304, "kindString": "Type alias", @@ -8552,7 +12130,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 296, + "line": 353, "character": 12 } ], @@ -8562,14 +12140,14 @@ { "type": "reflection", "declaration": { - "id": 378, + "id": 432, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 379, + "id": 433, "name": "email", "kind": 1024, "kindString": "Property", @@ -8580,7 +12158,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 299, + "line": 356, "character": 6 } ], @@ -8590,7 +12168,7 @@ } }, { - "id": 381, + "id": 435, "name": "options", "kind": 1024, "kindString": "Property", @@ -8600,21 +12178,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 302, + "line": 359, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 382, + "id": 436, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 383, + "id": 438, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -8627,7 +12205,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 304, + "line": 367, "character": 8 } ], @@ -8635,19 +12213,43 @@ "type": "intrinsic", "name": "string" } + }, + { + "id": 437, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 365, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [383] + "children": [438, 437] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 302, + "line": 359, "character": 16 } ] @@ -8655,7 +12257,7 @@ } }, { - "id": 380, + "id": 434, "name": "password", "kind": 1024, "kindString": "Property", @@ -8666,7 +12268,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 301, + "line": 358, "character": 6 } ], @@ -8680,13 +12282,13 @@ { "title": "Properties", "kind": 1024, - "children": [379, 381, 380] + "children": [433, 435, 434] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 297, + "line": 354, "character": 4 } ] @@ -8695,14 +12297,14 @@ { "type": "reflection", "declaration": { - "id": 384, + "id": 439, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 387, + "id": 442, "name": "options", "kind": 1024, "kindString": "Property", @@ -8712,21 +12314,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 312, + "line": 375, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 388, + "id": 443, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 389, + "id": 445, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -8739,7 +12341,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 314, + "line": 383, "character": 8 } ], @@ -8747,19 +12349,43 @@ "type": "intrinsic", "name": "string" } + }, + { + "id": 444, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 381, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [389] + "children": [445, 444] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 312, + "line": 375, "character": 16 } ] @@ -8767,7 +12393,7 @@ } }, { - "id": 386, + "id": 441, "name": "password", "kind": 1024, "kindString": "Property", @@ -8778,7 +12404,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 311, + "line": 374, "character": 6 } ], @@ -8788,7 +12414,7 @@ } }, { - "id": 385, + "id": 440, "name": "phone", "kind": 1024, "kindString": "Property", @@ -8799,7 +12425,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 309, + "line": 372, "character": 6 } ], @@ -8813,13 +12439,13 @@ { "title": "Properties", "kind": 1024, - "children": [387, 386, 385] + "children": [442, 441, 440] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 307, + "line": 370, "character": 4 } ] @@ -8829,11 +12455,371 @@ } }, { - "id": 390, + "id": 446, "name": "SignInWithPasswordlessCredentials", "kind": 4194304, "kindString": "Type alias", "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 387, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 447, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 448, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 390, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 449, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 450, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 454, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 403, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 453, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 401, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 451, + "name": "emailRedirectTo", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The redirect url embedded in the email link" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 393, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 452, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 395, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [454, 453, 451, 452] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 16 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [448, 449] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 388, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 455, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 457, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 458, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 461, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 419, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 460, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 417, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 459, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 411, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [461, 460, 459] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 16 + } + ] + } + } + }, + { + "id": 456, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 408, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [457, 456] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 406, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 415, + "name": "SignUpWithPasswordCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, "sources": [ { "fileName": "src/lib/types.ts", @@ -8847,14 +12833,14 @@ { "type": "reflection", "declaration": { - "id": 391, + "id": 416, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 392, + "id": 417, "name": "email", "kind": 1024, "kindString": "Property", @@ -8875,7 +12861,7 @@ } }, { - "id": 393, + "id": 419, "name": "options", "kind": 1024, "kindString": "Property", @@ -8885,21 +12871,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 394, + "id": 420, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 398, + "id": 423, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -8922,7 +12908,7 @@ } }, { - "id": 397, + "id": 422, "name": "data", "kind": 1024, "kindString": "Property", @@ -8946,7 +12932,7 @@ } }, { - "id": 395, + "id": 421, "name": "emailRedirectTo", "kind": 1024, "kindString": "Property", @@ -8959,7 +12945,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 324, + "line": 326, "character": 8 } ], @@ -8967,54 +12953,52 @@ "type": "intrinsic", "name": "string" } - }, - { - "id": 396, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 326, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [398, 397, 395, 396] + "children": [423, 422, 421] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 16 } ] } } + }, + { + "id": 418, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 323, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [392, 393] + "children": [417, 419, 418] } ], "sources": [ @@ -9029,14 +13013,14 @@ { "type": "reflection", "declaration": { - "id": 399, + "id": 424, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 401, + "id": 427, "name": "options", "kind": 1024, "kindString": "Property", @@ -9046,21 +13030,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 402, + "id": 428, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 405, + "id": 430, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -9083,7 +13067,7 @@ } }, { - "id": 404, + "id": 429, "name": "data", "kind": 1024, "kindString": "Property", @@ -9105,42 +13089,19 @@ "type": "intrinsic", "name": "object" } - }, - { - "id": 403, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 342, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [405, 404, 403] + "children": [430, 429] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 16 } ] @@ -9148,7 +13109,28 @@ } }, { - "id": 400, + "id": 426, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 341, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 425, "name": "phone", "kind": 1024, "kindString": "Property", @@ -9173,7 +13155,7 @@ { "title": "Properties", "kind": 1024, - "children": [401, 400] + "children": [427, 426, 425] } ], "sources": [ @@ -9189,363 +13171,7 @@ } }, { - "id": 361, - "name": "SignUpWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 261, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 362, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 363, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 264, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 365, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 366, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 369, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 277, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 368, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 275, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - }, - { - "id": 367, - "name": "emailRedirectTo", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "The redirect url embedded in the email link" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 269, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [369, 368, 367] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 16 - } - ] - } - } - }, - { - "id": 364, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 266, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [363, 365, 364] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 262, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 370, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 373, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 374, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 376, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 293, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 375, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 291, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [376, 375] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 16 - } - ] - } - } - }, - { - "id": 372, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 284, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 371, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 282, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [373, 372, 371] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 280, - "character": 4 - } - ] - } - } - ] - } - }, - { - "id": 483, + "id": 680, "name": "SupportedStorage", "kind": 4194304, "kindString": "Type alias", @@ -9553,7 +13179,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 504, + "line": 929, "character": 12 } ], @@ -9596,7 +13222,7 @@ } }, { - "id": 279, + "id": 320, "name": "UserResponse", "kind": 4194304, "kindString": "Type alias", @@ -9604,7 +13230,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 82, + "line": 88, "character": 12 } ], @@ -9614,117 +13240,14 @@ { "type": "reflection", "declaration": { - "id": 280, + "id": 321, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 281, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 84, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 282, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 283, - "name": "user", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 85, - "character": 8 - } - ], - "type": { - "type": "reference", - "id": 317, - "name": "User" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [283] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 84, - "character": 12 - } - ] - } - } - }, - { - "id": 284, - "name": "error", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 87, - "character": 6 - } - ], - "type": { - "type": "literal", - "value": null - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [281, 284] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 83, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 285, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 286, + "id": 322, "name": "data", "kind": 1024, "kindString": "Property", @@ -9739,14 +13262,14 @@ "type": { "type": "reflection", "declaration": { - "id": 287, + "id": 323, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 288, + "id": 324, "name": "user", "kind": 1024, "kindString": "Property", @@ -9759,8 +13282,9 @@ } ], "type": { - "type": "literal", - "value": null + "type": "reference", + "id": 368, + "name": "User" } } ], @@ -9768,7 +13292,7 @@ { "title": "Properties", "kind": 1024, - "children": [288] + "children": [324] } ], "sources": [ @@ -9782,7 +13306,7 @@ } }, { - "id": 289, + "id": 325, "name": "error", "kind": 1024, "kindString": "Property", @@ -9795,9 +13319,8 @@ } ], "type": { - "type": "reference", - "id": 497, - "name": "AuthError" + "type": "literal", + "value": null } } ], @@ -9805,7 +13328,7 @@ { "title": "Properties", "kind": 1024, - "children": [286, 289] + "children": [322, 325] } ], "sources": [ @@ -9816,12 +13339,115 @@ } ] } + }, + { + "type": "reflection", + "declaration": { + "id": 326, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 327, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 328, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 329, + "name": "user", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 97, + "character": 8 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [329] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 12 + } + ] + } + } + }, + { + "id": 330, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 99, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [327, 330] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 95, + "character": 4 + } + ] + } } ] } }, { - "id": 417, + "id": 473, "name": "VerifyOtpParams", "kind": 4194304, "kindString": "Type alias", @@ -9829,7 +13455,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 367, + "line": 436, "character": 12 } ], @@ -9838,19 +13464,19 @@ "types": [ { "type": "reference", - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams" }, { "type": "reference", - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams" } ] } }, { - "id": 494, + "id": 691, "name": "isAuthError", "kind": 64, "kindString": "Function", @@ -9864,14 +13490,14 @@ ], "signatures": [ { - "id": 495, + "id": 692, "name": "isAuthError", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 496, + "id": 693, "name": "error", "kind": 32768, "kindString": "Parameter", @@ -9888,7 +13514,7 @@ "asserts": false, "targetType": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -9900,25 +13526,26 @@ { "title": "Classes", "kind": 128, - "children": [502, 497, 562, 549, 587, 537, 515, 522, 1, 66] + "children": [699, 694, 759, 746, 784, 734, 712, 719, 1, 74] }, { "title": "Interfaces", "kind": 256, - "children": [343, 458, 290, 353, 317, 310, 338, 299, 314, 426, 418] + "children": [340, 395, 354, 514, 673, 628, 331, 405, 413, 368, 361, 390, 343, 365, 482, 474] }, { "title": "Type Aliases", "kind": 4194304, "children": [ - 239, 253, 487, 435, 452, 442, 461, 475, 462, 482, 447, 436, 240, 484, 434, 266, 238, 406, - 377, 390, 361, 483, 279, 417 + 280, 279, 657, 648, 670, 661, 596, 572, 617, 606, 587, 559, 294, 616, 684, 491, 508, 498, + 517, 531, 518, 538, 503, 492, 281, 681, 555, 552, 539, 544, 547, 490, 307, 278, 462, 431, + 446, 415, 680, 320, 473 ] }, { "title": "Functions", "kind": 64, - "children": [494] + "children": [691] } ], "sources": [ diff --git a/spec/enrichments/tsdoc_v2/gotrue_dereferenced.json b/spec/enrichments/tsdoc_v2/gotrue_dereferenced.json index a05525ab227..e1819c39b1f 100644 --- a/spec/enrichments/tsdoc_v2/gotrue_dereferenced.json +++ b/spec/enrichments/tsdoc_v2/gotrue_dereferenced.json @@ -7,14 +7,14 @@ "originalName": "", "children": [ { - "id": 502, + "id": 699, "name": "AuthApiError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 503, + "id": 700, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -28,14 +28,14 @@ ], "signatures": [ { - "id": 504, + "id": 701, "name": "new AuthApiError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 505, + "id": 702, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -46,7 +46,7 @@ } }, { - "id": 506, + "id": 703, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -59,24 +59,24 @@ ], "type": { "type": "reference", - "id": 502, + "id": 699, "name": "AuthApiError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 507, + "id": 704, "name": "status", "kind": 1024, "kindString": "Property", @@ -94,7 +94,7 @@ } }, { - "id": 508, + "id": 705, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -108,7 +108,7 @@ ], "signatures": [ { - "id": 509, + "id": 706, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -116,14 +116,14 @@ "type": { "type": "reflection", "declaration": { - "id": 510, + "id": 707, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 512, + "id": 709, "name": "message", "kind": 1024, "kindString": "Property", @@ -142,7 +142,7 @@ "defaultValue": "..." }, { - "id": 511, + "id": 708, "name": "name", "kind": 1024, "kindString": "Property", @@ -161,7 +161,7 @@ "defaultValue": "..." }, { - "id": 513, + "id": 710, "name": "status", "kind": 1024, "kindString": "Property", @@ -184,7 +184,7 @@ { "title": "Properties", "kind": 1024, - "children": [512, 511, 513] + "children": [709, 708, 710] } ] } @@ -197,17 +197,17 @@ { "title": "Constructors", "kind": 512, - "children": [503] + "children": [700] }, { "title": "Properties", "kind": 1024, - "children": [507] + "children": [704] }, { "title": "Methods", "kind": 2048, - "children": [508] + "children": [705] } ], "sources": [ @@ -220,20 +220,20 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] }, { - "id": 497, + "id": 694, "name": "AuthError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 498, + "id": 695, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -247,14 +247,14 @@ ], "signatures": [ { - "id": 499, + "id": 696, "name": "new AuthError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 500, + "id": 697, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -267,7 +267,7 @@ ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" }, "overwrites": { @@ -286,7 +286,7 @@ { "title": "Constructors", "kind": 512, - "children": [498] + "children": [695] } ], "sources": [ @@ -307,30 +307,30 @@ "extendedBy": [ { "type": "reference", - "id": 502, + "id": 699, "name": "AuthApiError" }, { "type": "reference", - "id": 515, + "id": 712, "name": "AuthUnknownError" }, { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 563, + "id": 760, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -344,14 +344,14 @@ ], "signatures": [ { - "id": 564, + "id": 761, "name": "new AuthImplicitGrantRedirectError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 565, + "id": 762, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -362,7 +362,7 @@ } }, { - "id": 566, + "id": 763, "name": "details", "kind": 32768, "kindString": "Parameter", @@ -377,14 +377,14 @@ { "type": "reflection", "declaration": { - "id": 567, + "id": 764, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 569, + "id": 766, "name": "code", "kind": 1024, "kindString": "Property", @@ -402,7 +402,7 @@ } }, { - "id": 568, + "id": 765, "name": "error", "kind": 1024, "kindString": "Property", @@ -424,7 +424,7 @@ { "title": "Properties", "kind": 1024, - "children": [569, 568] + "children": [766, 765] } ] } @@ -436,24 +436,24 @@ ], "type": { "type": "reference", - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 570, + "id": 767, "name": "details", "kind": 1024, "kindString": "Property", @@ -475,14 +475,14 @@ { "type": "reflection", "declaration": { - "id": 571, + "id": 768, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 573, + "id": 770, "name": "code", "kind": 1024, "kindString": "Property", @@ -500,7 +500,7 @@ } }, { - "id": 572, + "id": 769, "name": "error", "kind": 1024, "kindString": "Property", @@ -522,7 +522,7 @@ { "title": "Properties", "kind": 1024, - "children": [573, 572] + "children": [770, 769] } ] } @@ -532,7 +532,7 @@ "defaultValue": "null" }, { - "id": 584, + "id": 781, "name": "name", "kind": 1024, "kindString": "Property", @@ -550,12 +550,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 585, + "id": 782, "name": "status", "kind": 1024, "kindString": "Property", @@ -573,12 +573,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 574, + "id": 771, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -592,7 +592,7 @@ ], "signatures": [ { - "id": 575, + "id": 772, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -600,14 +600,14 @@ "type": { "type": "reflection", "declaration": { - "id": 576, + "id": 773, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 580, + "id": 777, "name": "details", "kind": 1024, "kindString": "Property", @@ -629,14 +629,14 @@ { "type": "reflection", "declaration": { - "id": 581, + "id": 778, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 583, + "id": 780, "name": "code", "kind": 1024, "kindString": "Property", @@ -654,7 +654,7 @@ } }, { - "id": 582, + "id": 779, "name": "error", "kind": 1024, "kindString": "Property", @@ -676,7 +676,7 @@ { "title": "Properties", "kind": 1024, - "children": [583, 582] + "children": [780, 779] } ] } @@ -686,7 +686,7 @@ "defaultValue": "..." }, { - "id": 578, + "id": 775, "name": "message", "kind": 1024, "kindString": "Property", @@ -705,7 +705,7 @@ "defaultValue": "..." }, { - "id": 577, + "id": 774, "name": "name", "kind": 1024, "kindString": "Property", @@ -724,7 +724,7 @@ "defaultValue": "..." }, { - "id": 579, + "id": 776, "name": "status", "kind": 1024, "kindString": "Property", @@ -747,21 +747,21 @@ { "title": "Properties", "kind": 1024, - "children": [580, 578, 577, 579] + "children": [777, 775, 774, 776] } ] } }, "overwrites": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "overwrites": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -770,17 +770,17 @@ { "title": "Constructors", "kind": 512, - "children": [563] + "children": [760] }, { "title": "Properties", "kind": 1024, - "children": [570, 584, 585] + "children": [767, 781, 782] }, { "title": "Methods", "kind": 2048, - "children": [574] + "children": [771] } ], "sources": [ @@ -793,20 +793,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 550, + "id": 747, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -820,14 +820,14 @@ ], "signatures": [ { - "id": 551, + "id": 748, "name": "new AuthInvalidCredentialsError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 552, + "id": 749, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -840,24 +840,24 @@ ], "type": { "type": "reference", - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 553, + "id": 750, "name": "name", "kind": 1024, "kindString": "Property", @@ -875,12 +875,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 554, + "id": 751, "name": "status", "kind": 1024, "kindString": "Property", @@ -898,12 +898,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 555, + "id": 752, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -917,7 +917,7 @@ ], "signatures": [ { - "id": 556, + "id": 753, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -925,14 +925,14 @@ "type": { "type": "reflection", "declaration": { - "id": 557, + "id": 754, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 559, + "id": 756, "name": "message", "kind": 1024, "kindString": "Property", @@ -951,7 +951,7 @@ "defaultValue": "..." }, { - "id": 558, + "id": 755, "name": "name", "kind": 1024, "kindString": "Property", @@ -970,7 +970,7 @@ "defaultValue": "..." }, { - "id": 560, + "id": 757, "name": "status", "kind": 1024, "kindString": "Property", @@ -993,21 +993,21 @@ { "title": "Properties", "kind": 1024, - "children": [559, 558, 560] + "children": [756, 755, 757] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -1016,17 +1016,17 @@ { "title": "Constructors", "kind": 512, - "children": [550] + "children": [747] }, { "title": "Properties", "kind": 1024, - "children": [553, 554] + "children": [750, 751] }, { "title": "Methods", "kind": 2048, - "children": [555] + "children": [752] } ], "sources": [ @@ -1039,20 +1039,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 587, + "id": 784, "name": "AuthRetryableFetchError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 588, + "id": 785, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1066,14 +1066,14 @@ ], "signatures": [ { - "id": 589, + "id": 786, "name": "new AuthRetryableFetchError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 590, + "id": 787, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1084,7 +1084,7 @@ } }, { - "id": 591, + "id": 788, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -1097,24 +1097,24 @@ ], "type": { "type": "reference", - "id": 587, + "id": 784, "name": "AuthRetryableFetchError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 592, + "id": 789, "name": "name", "kind": 1024, "kindString": "Property", @@ -1132,12 +1132,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 593, + "id": 790, "name": "status", "kind": 1024, "kindString": "Property", @@ -1155,12 +1155,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 594, + "id": 791, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -1174,7 +1174,7 @@ ], "signatures": [ { - "id": 595, + "id": 792, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -1182,14 +1182,14 @@ "type": { "type": "reflection", "declaration": { - "id": 596, + "id": 793, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 598, + "id": 795, "name": "message", "kind": 1024, "kindString": "Property", @@ -1208,7 +1208,7 @@ "defaultValue": "..." }, { - "id": 597, + "id": 794, "name": "name", "kind": 1024, "kindString": "Property", @@ -1227,7 +1227,7 @@ "defaultValue": "..." }, { - "id": 599, + "id": 796, "name": "status", "kind": 1024, "kindString": "Property", @@ -1250,21 +1250,21 @@ { "title": "Properties", "kind": 1024, - "children": [598, 597, 599] + "children": [795, 794, 796] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -1273,17 +1273,17 @@ { "title": "Constructors", "kind": 512, - "children": [588] + "children": [785] }, { "title": "Properties", "kind": 1024, - "children": [592, 593] + "children": [789, 790] }, { "title": "Methods", "kind": 2048, - "children": [594] + "children": [791] } ], "sources": [ @@ -1296,20 +1296,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 537, + "id": 734, "name": "AuthSessionMissingError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 538, + "id": 735, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1323,31 +1323,31 @@ ], "signatures": [ { - "id": 539, + "id": 736, "name": "new AuthSessionMissingError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "type": { "type": "reference", - "id": 537, + "id": 734, "name": "AuthSessionMissingError" }, "overwrites": { "type": "reference", - "id": 524, + "id": 721, "name": "CustomAuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 523, + "id": 720, "name": "CustomAuthError.constructor" } }, { - "id": 540, + "id": 737, "name": "name", "kind": 1024, "kindString": "Property", @@ -1365,12 +1365,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 528, + "id": 725, "name": "CustomAuthError.name" } }, { - "id": 541, + "id": 738, "name": "status", "kind": 1024, "kindString": "Property", @@ -1388,12 +1388,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 529, + "id": 726, "name": "CustomAuthError.status" } }, { - "id": 542, + "id": 739, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -1407,7 +1407,7 @@ ], "signatures": [ { - "id": 543, + "id": 740, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -1415,14 +1415,14 @@ "type": { "type": "reflection", "declaration": { - "id": 544, + "id": 741, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 546, + "id": 743, "name": "message", "kind": 1024, "kindString": "Property", @@ -1441,7 +1441,7 @@ "defaultValue": "..." }, { - "id": 545, + "id": 742, "name": "name", "kind": 1024, "kindString": "Property", @@ -1460,7 +1460,7 @@ "defaultValue": "..." }, { - "id": 547, + "id": 744, "name": "status", "kind": 1024, "kindString": "Property", @@ -1483,21 +1483,21 @@ { "title": "Properties", "kind": 1024, - "children": [546, 545, 547] + "children": [743, 742, 744] } ] } }, "inheritedFrom": { "type": "reference", - "id": 531, + "id": 728, "name": "CustomAuthError.toJSON" } } ], "inheritedFrom": { "type": "reference", - "id": 530, + "id": 727, "name": "CustomAuthError.toJSON" } } @@ -1506,17 +1506,17 @@ { "title": "Constructors", "kind": 512, - "children": [538] + "children": [735] }, { "title": "Properties", "kind": 1024, - "children": [540, 541] + "children": [737, 738] }, { "title": "Methods", "kind": 2048, - "children": [542] + "children": [739] } ], "sources": [ @@ -1529,20 +1529,20 @@ "extendedTypes": [ { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" } ] }, { - "id": 515, + "id": 712, "name": "AuthUnknownError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 516, + "id": 713, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1556,14 +1556,14 @@ ], "signatures": [ { - "id": 517, + "id": 714, "name": "new AuthUnknownError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 518, + "id": 715, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1574,7 +1574,7 @@ } }, { - "id": 519, + "id": 716, "name": "originalError", "kind": 32768, "kindString": "Parameter", @@ -1587,24 +1587,24 @@ ], "type": { "type": "reference", - "id": 515, + "id": 712, "name": "AuthUnknownError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 520, + "id": 717, "name": "originalError", "kind": 1024, "kindString": "Property", @@ -1626,12 +1626,12 @@ { "title": "Constructors", "kind": 512, - "children": [516] + "children": [713] }, { "title": "Properties", "kind": 1024, - "children": [520] + "children": [717] } ], "sources": [ @@ -1644,20 +1644,20 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] }, { - "id": 522, + "id": 719, "name": "CustomAuthError", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 523, + "id": 720, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -1671,14 +1671,14 @@ ], "signatures": [ { - "id": 524, + "id": 721, "name": "new CustomAuthError", "kind": 16384, "kindString": "Constructor signature", "flags": {}, "parameters": [ { - "id": 525, + "id": 722, "name": "message", "kind": 32768, "kindString": "Parameter", @@ -1689,7 +1689,7 @@ } }, { - "id": 526, + "id": 723, "name": "name", "kind": 32768, "kindString": "Parameter", @@ -1700,7 +1700,7 @@ } }, { - "id": 527, + "id": 724, "name": "status", "kind": 32768, "kindString": "Parameter", @@ -1713,24 +1713,24 @@ ], "type": { "type": "reference", - "id": 522, + "id": 719, "name": "CustomAuthError" }, "overwrites": { "type": "reference", - "id": 499, + "id": 696, "name": "AuthError.constructor" } } ], "overwrites": { "type": "reference", - "id": 498, + "id": 695, "name": "AuthError.constructor" } }, { - "id": 528, + "id": 725, "name": "name", "kind": 1024, "kindString": "Property", @@ -1752,7 +1752,7 @@ } }, { - "id": 529, + "id": 726, "name": "status", "kind": 1024, "kindString": "Property", @@ -1770,7 +1770,7 @@ } }, { - "id": 530, + "id": 727, "name": "toJSON", "kind": 2048, "kindString": "Method", @@ -1784,7 +1784,7 @@ ], "signatures": [ { - "id": 531, + "id": 728, "name": "toJSON", "kind": 4096, "kindString": "Call signature", @@ -1792,14 +1792,14 @@ "type": { "type": "reflection", "declaration": { - "id": 532, + "id": 729, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 534, + "id": 731, "name": "message", "kind": 1024, "kindString": "Property", @@ -1818,7 +1818,7 @@ "defaultValue": "..." }, { - "id": 533, + "id": 730, "name": "name", "kind": 1024, "kindString": "Property", @@ -1837,7 +1837,7 @@ "defaultValue": "..." }, { - "id": 535, + "id": 732, "name": "status", "kind": 1024, "kindString": "Property", @@ -1860,7 +1860,7 @@ { "title": "Properties", "kind": 1024, - "children": [534, 533, 535] + "children": [731, 730, 732] } ] } @@ -1873,17 +1873,17 @@ { "title": "Constructors", "kind": 512, - "children": [523] + "children": [720] }, { "title": "Properties", "kind": 1024, - "children": [528, 529] + "children": [725, 726] }, { "title": "Methods", "kind": 2048, - "children": [530] + "children": [727] } ], "sources": [ @@ -1896,29 +1896,29 @@ "extendedTypes": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ], "extendedBy": [ { "type": "reference", - "id": 537, + "id": 734, "name": "AuthSessionMissingError" }, { "type": "reference", - "id": 549, + "id": 746, "name": "AuthInvalidCredentialsError" }, { "type": "reference", - "id": 562, + "id": 759, "name": "AuthImplicitGrantRedirectError" }, { "type": "reference", - "id": 587, + "id": 784, "name": "AuthRetryableFetchError" } ] @@ -1939,7 +1939,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 19, + "line": 28, "character": 2 } ], @@ -1977,7 +1977,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 28, + "line": 37, "character": 4 } ], @@ -2067,7 +2067,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 25, + "line": 34, "character": 4 } ], @@ -2114,7 +2114,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 24, + "line": 33, "character": 4 } ], @@ -2144,7 +2144,29 @@ ] }, { - "id": 41, + "id": 16, + "name": "mfa", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Contains all MFA administration methods." + }, + "sources": [ + { + "fileName": "src/GoTrueAdminApi.ts", + "line": 20, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 673, + "name": "GoTrueAdminMFAApi" + } + }, + { + "id": 43, "name": "createUser", "kind": 2048, "kindString": "Method", @@ -2152,13 +2174,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 126, + "line": 139, "character": 8 } ], "signatures": [ { - "id": 42, + "id": 44, "name": "createUser", "kind": 4096, "kindString": "Call signature", @@ -2168,24 +2190,24 @@ }, "parameters": [ { - "id": 43, + "id": 45, "name": "attributes", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes", "dereferenced": { - "id": 343, + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -2199,7 +2221,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -2209,7 +2231,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -2223,7 +2245,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -2233,7 +2255,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -2247,7 +2269,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -2257,12 +2279,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -2275,7 +2297,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -2285,12 +2307,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -2304,7 +2326,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -2314,7 +2336,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -2327,7 +2349,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -2337,12 +2359,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -2355,7 +2377,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -2365,12 +2387,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -2384,7 +2406,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -2394,7 +2416,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -2408,7 +2430,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -2422,20 +2444,20 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] @@ -2448,7 +2470,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2460,7 +2482,7 @@ ] }, { - "id": 63, + "id": 65, "name": "deleteUser", "kind": 2048, "kindString": "Method", @@ -2468,13 +2490,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 216, + "line": 229, "character": 8 } ], "signatures": [ { - "id": 64, + "id": 66, "name": "deleteUser", "kind": 4096, "kindString": "Call signature", @@ -2484,7 +2506,7 @@ }, "parameters": [ { - "id": 65, + "id": 67, "name": "id", "kind": 32768, "kindString": "Parameter", @@ -2503,7 +2525,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2515,7 +2537,7 @@ ] }, { - "id": 38, + "id": 40, "name": "generateLink", "kind": 2048, "kindString": "Method", @@ -2523,13 +2545,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 92, + "line": 105, "character": 8 } ], "signatures": [ { - "id": 39, + "id": 41, "name": "generateLink", "kind": 4096, "kindString": "Call signature", @@ -2539,17 +2561,17 @@ }, "parameters": [ { - "id": 40, + "id": 42, "name": "params", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 461, + "id": 517, "name": "GenerateLinkParams", "dereferenced": { - "id": 461, + "id": 517, "name": "GenerateLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -2557,7 +2579,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 443, + "line": 512, "character": 12 } ], @@ -2566,22 +2588,22 @@ "types": [ { "type": "reference", - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams" }, { "type": "reference", - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams" }, { "type": "reference", - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams" }, { "type": "reference", - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams" } ] @@ -2595,7 +2617,7 @@ "typeArguments": [ { "type": "reference", - "id": 462, + "id": 518, "name": "GenerateLinkResponse" } ], @@ -2607,7 +2629,7 @@ ] }, { - "id": 56, + "id": 58, "name": "getUserById", "kind": 2048, "kindString": "Method", @@ -2615,13 +2637,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 171, + "line": 184, "character": 8 } ], "signatures": [ { - "id": 57, + "id": 59, "name": "getUserById", "kind": 4096, "kindString": "Call signature", @@ -2631,7 +2653,7 @@ }, "parameters": [ { - "id": 58, + "id": 60, "name": "uid", "kind": 32768, "kindString": "Parameter", @@ -2650,7 +2672,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2662,7 +2684,7 @@ ] }, { - "id": 31, + "id": 33, "name": "inviteUserByEmail", "kind": 2048, "kindString": "Method", @@ -2670,13 +2692,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 62, + "line": 75, "character": 8 } ], "signatures": [ { - "id": 32, + "id": 34, "name": "inviteUserByEmail", "kind": 4096, "kindString": "Call signature", @@ -2686,7 +2708,7 @@ }, "parameters": [ { - "id": 33, + "id": 35, "name": "email", "kind": 32768, "kindString": "Parameter", @@ -2700,7 +2722,7 @@ } }, { - "id": 34, + "id": 36, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -2708,14 +2730,14 @@ "type": { "type": "reflection", "declaration": { - "id": 35, + "id": 37, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 37, + "id": 39, "name": "data", "kind": 1024, "kindString": "Property", @@ -2728,7 +2750,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 66, + "line": 79, "character": 6 } ], @@ -2738,7 +2760,7 @@ } }, { - "id": 36, + "id": 38, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -2751,7 +2773,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 65, + "line": 78, "character": 6 } ], @@ -2765,7 +2787,7 @@ { "title": "Properties", "kind": 1024, - "children": [37, 36] + "children": [39, 38] } ] } @@ -2778,7 +2800,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -2790,7 +2812,7 @@ ] }, { - "id": 44, + "id": 46, "name": "listUsers", "kind": 2048, "kindString": "Method", @@ -2798,13 +2820,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 147, + "line": 160, "character": 8 } ], "signatures": [ { - "id": 45, + "id": 47, "name": "listUsers", "kind": 4096, "kindString": "Call signature", @@ -2822,14 +2844,14 @@ { "type": "reflection", "declaration": { - "id": 46, + "id": 48, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 47, + "id": 49, "name": "data", "kind": 1024, "kindString": "Property", @@ -2837,21 +2859,21 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 48, + "id": 50, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 49, + "id": 51, "name": "users", "kind": 1024, "kindString": "Property", @@ -2859,7 +2881,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 14 } ], @@ -2867,7 +2889,7 @@ "type": "array", "elementType": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -2877,14 +2899,14 @@ { "title": "Properties", "kind": 1024, - "children": [49] + "children": [51] } ] } } }, { - "id": 50, + "id": 52, "name": "error", "kind": 1024, "kindString": "Property", @@ -2892,7 +2914,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 31 } ], @@ -2906,7 +2928,7 @@ { "title": "Properties", "kind": 1024, - "children": [47, 50] + "children": [49, 52] } ] } @@ -2914,14 +2936,14 @@ { "type": "reflection", "declaration": { - "id": 51, + "id": 53, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 52, + "id": 54, "name": "data", "kind": 1024, "kindString": "Property", @@ -2929,21 +2951,21 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 49 } ], "type": { "type": "reflection", "declaration": { - "id": 53, + "id": 55, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 54, + "id": 56, "name": "users", "kind": 1024, "kindString": "Property", @@ -2951,7 +2973,7 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 57 } ], @@ -2964,14 +2986,14 @@ { "title": "Properties", "kind": 1024, - "children": [54] + "children": [56] } ] } } }, { - "id": 55, + "id": 57, "name": "error", "kind": 1024, "kindString": "Property", @@ -2979,13 +3001,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 148, + "line": 161, "character": 70 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -2994,7 +3016,7 @@ { "title": "Properties", "kind": 1024, - "children": [52, 55] + "children": [54, 57] } ] } @@ -3010,7 +3032,7 @@ ] }, { - "id": 26, + "id": 27, "name": "signOut", "kind": 2048, "kindString": "Method", @@ -3018,13 +3040,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 39, + "line": 52, "character": 8 } ], "signatures": [ { - "id": 27, + "id": 28, "name": "signOut", "kind": 4096, "kindString": "Call signature", @@ -3034,7 +3056,7 @@ }, "parameters": [ { - "id": 28, + "id": 29, "name": "jwt", "kind": 32768, "kindString": "Parameter", @@ -3054,14 +3076,32 @@ { "type": "reflection", "declaration": { - "id": 29, + "id": 30, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 30, + "id": 31, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueAdminApi.ts", + "line": 52, + "character": 40 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 32, "name": "error", "kind": 1024, "kindString": "Property", @@ -3069,8 +3109,8 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 39, - "character": 40 + "line": 52, + "character": 52 } ], "type": { @@ -3082,7 +3122,7 @@ }, { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } ] @@ -3093,7 +3133,7 @@ { "title": "Properties", "kind": 1024, - "children": [30] + "children": [31, 32] } ] } @@ -3107,7 +3147,7 @@ ] }, { - "id": 59, + "id": 61, "name": "updateUserById", "kind": 2048, "kindString": "Method", @@ -3115,13 +3155,13 @@ "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 193, + "line": 206, "character": 8 } ], "signatures": [ { - "id": 60, + "id": 62, "name": "updateUserById", "kind": 4096, "kindString": "Call signature", @@ -3131,7 +3171,7 @@ }, "parameters": [ { - "id": 61, + "id": 63, "name": "uid", "kind": 32768, "kindString": "Parameter", @@ -3142,7 +3182,7 @@ } }, { - "id": 62, + "id": 64, "name": "attributes", "kind": 32768, "kindString": "Parameter", @@ -3152,17 +3192,17 @@ }, "type": { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes", "dereferenced": { - "id": 343, + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -3176,7 +3216,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -3186,7 +3226,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -3200,7 +3240,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -3210,7 +3250,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -3224,7 +3264,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -3234,12 +3274,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -3252,7 +3292,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -3262,12 +3302,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -3281,7 +3321,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -3291,7 +3331,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -3304,7 +3344,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -3314,12 +3354,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -3332,7 +3372,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -3342,12 +3382,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -3361,7 +3401,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -3371,7 +3411,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -3385,7 +3425,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -3399,20 +3439,20 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] @@ -3425,7 +3465,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -3443,29 +3483,34 @@ "kind": 512, "children": [2] }, + { + "title": "Properties", + "kind": 1024, + "children": [16] + }, { "title": "Methods", "kind": 2048, - "children": [41, 63, 38, 56, 31, 44, 26, 59] + "children": [43, 65, 40, 58, 33, 46, 27, 61] } ], "sources": [ { "fileName": "src/GoTrueAdminApi.ts", - "line": 12, + "line": 18, "character": 21 } ] }, { - "id": 66, + "id": 74, "name": "GoTrueClient", "kind": 128, "kindString": "Class", "flags": {}, "children": [ { - "id": 67, + "id": 75, "name": "constructor", "kind": 512, "kindString": "Constructor", @@ -3473,13 +3518,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 105, + "line": 124, "character": 2 } ], "signatures": [ { - "id": 68, + "id": 76, "name": "new GoTrueClient", "kind": 16384, "kindString": "Constructor signature", @@ -3489,17 +3534,17 @@ }, "parameters": [ { - "id": 69, + "id": 77, "name": "options", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "dereferenced": { - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "kind": 4194304, "kindString": "Type alias", @@ -3507,67 +3552,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 241, + "id": 282, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 249, + "id": 290, "name": "autoRefreshToken", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 41, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 248, - "name": "detectSessionInUrl", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 39, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 252, - "name": "fetch", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, "sources": [ { "fileName": "src/lib/types.ts", @@ -3575,13 +3580,53 @@ "character": 2 } ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 289, + "name": "detectSessionInUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 45, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 293, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 53, + "character": 2 + } + ], "type": { "type": "reference", "name": "Fetch" } }, { - "id": 243, + "id": 284, "name": "headers", "kind": 1024, "kindString": "Property", @@ -3591,14 +3636,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 244, + "id": 285, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -3606,19 +3651,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 12 } ], "indexSignature": { - "id": 245, + "id": 286, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 246, + "id": 287, "name": "key", "kind": 32768, "flags": {}, @@ -3637,13 +3682,54 @@ } }, { - "id": 250, + "id": 291, "name": "persistSession", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 49, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 292, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 51, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 680, + "name": "SupportedStorage" + } + }, + { + "id": 288, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, "sources": [ { "fileName": "src/lib/types.ts", @@ -3651,54 +3737,13 @@ "character": 2 } ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 251, - "name": "storage", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 45, - "character": 2 - } - ], - "type": { - "type": "reference", - "id": 483, - "name": "SupportedStorage" - } - }, - { - "id": 247, - "name": "storageKey", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 37, - "character": 2 - } - ], "type": { "type": "intrinsic", "name": "string" } }, { - "id": 242, + "id": 283, "name": "url", "kind": 1024, "kindString": "Property", @@ -3708,7 +3753,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 33, + "line": 39, "character": 2 } ], @@ -3722,13 +3767,13 @@ { "title": "Properties", "kind": 1024, - "children": [249, 248, 252, 243, 250, 251, 247, 242] + "children": [290, 289, 293, 284, 291, 292, 288, 283] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 34 } ] @@ -3740,14 +3785,14 @@ ], "type": { "type": "reference", - "id": 66, + "id": 74, "name": "default" } } ] }, { - "id": 70, + "id": 78, "name": "admin", "kind": 1024, "kindString": "Property", @@ -3758,7 +3803,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 69, + "line": 84, "character": 2 } ], @@ -3769,7 +3814,29 @@ } }, { - "id": 111, + "id": 79, + "name": "mfa", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Namespace for the MFA methods." + }, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 88, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 628, + "name": "GoTrueMFAApi" + } + }, + { + "id": 120, "name": "getSession", "kind": 2048, "kindString": "Method", @@ -3777,13 +3844,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 410, + "line": 440, "character": 8 } ], "signatures": [ { - "id": 112, + "id": 121, "name": "getSession", "kind": 4096, "kindString": "Call signature", @@ -3800,14 +3867,14 @@ { "type": "reflection", "declaration": { - "id": 113, + "id": 122, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 114, + "id": 123, "name": "data", "kind": 1024, "kindString": "Property", @@ -3815,21 +3882,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 412, + "line": 442, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 115, + "id": 124, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 116, + "id": 125, "name": "session", "kind": 1024, "kindString": "Property", @@ -3837,13 +3904,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 413, + "line": 443, "character": 10 } ], "type": { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } } @@ -3852,14 +3919,14 @@ { "title": "Properties", "kind": 1024, - "children": [116] + "children": [125] } ] } } }, { - "id": 117, + "id": 126, "name": "error", "kind": 1024, "kindString": "Property", @@ -3867,7 +3934,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 415, + "line": 445, "character": 8 } ], @@ -3881,7 +3948,7 @@ { "title": "Properties", "kind": 1024, - "children": [114, 117] + "children": [123, 126] } ] } @@ -3889,14 +3956,14 @@ { "type": "reflection", "declaration": { - "id": 118, + "id": 127, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 119, + "id": 128, "name": "data", "kind": 1024, "kindString": "Property", @@ -3904,21 +3971,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 418, + "line": 448, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 120, + "id": 129, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 121, + "id": 130, "name": "session", "kind": 1024, "kindString": "Property", @@ -3926,7 +3993,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 419, + "line": 449, "character": 10 } ], @@ -3940,14 +4007,14 @@ { "title": "Properties", "kind": 1024, - "children": [121] + "children": [130] } ] } } }, { - "id": 122, + "id": 131, "name": "error", "kind": 1024, "kindString": "Property", @@ -3955,13 +4022,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 421, + "line": 451, "character": 8 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -3970,7 +4037,7 @@ { "title": "Properties", "kind": 1024, - "children": [119, 122] + "children": [128, 131] } ] } @@ -3978,14 +4045,14 @@ { "type": "reflection", "declaration": { - "id": 123, + "id": 132, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 124, + "id": 133, "name": "data", "kind": 1024, "kindString": "Property", @@ -3993,21 +4060,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 424, + "line": 454, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 125, + "id": 134, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 126, + "id": 135, "name": "session", "kind": 1024, "kindString": "Property", @@ -4015,7 +4082,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 425, + "line": 455, "character": 10 } ], @@ -4029,14 +4096,14 @@ { "title": "Properties", "kind": 1024, - "children": [126] + "children": [135] } ] } } }, { - "id": 127, + "id": 136, "name": "error", "kind": 1024, "kindString": "Property", @@ -4044,7 +4111,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 427, + "line": 457, "character": 8 } ], @@ -4058,7 +4125,7 @@ { "title": "Properties", "kind": 1024, - "children": [124, 127] + "children": [133, 136] } ] } @@ -4074,7 +4141,7 @@ ] }, { - "id": 128, + "id": 137, "name": "getUser", "kind": 2048, "kindString": "Method", @@ -4082,13 +4149,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 473, + "line": 504, "character": 8 } ], "signatures": [ { - "id": 129, + "id": 138, "name": "getUser", "kind": 4096, "kindString": "Call signature", @@ -4098,7 +4165,7 @@ }, "parameters": [ { - "id": 130, + "id": 139, "name": "jwt", "kind": 32768, "kindString": "Parameter", @@ -4119,7 +4186,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -4131,7 +4198,7 @@ ] }, { - "id": 92, + "id": 101, "name": "initialize", "kind": 2048, "kindString": "Method", @@ -4139,13 +4206,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 131, + "line": 159, "character": 2 } ], "signatures": [ { - "id": 93, + "id": 102, "name": "initialize", "kind": 4096, "kindString": "Call signature", @@ -4158,7 +4225,7 @@ "typeArguments": [ { "type": "reference", - "id": 484, + "id": 681, "name": "InitializeResult" } ], @@ -4170,7 +4237,7 @@ ] }, { - "id": 157, + "id": 178, "name": "onAuthStateChange", "kind": 2048, "kindString": "Method", @@ -4178,13 +4245,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 701, + "line": 784, "character": 2 } ], "signatures": [ { - "id": 158, + "id": 179, "name": "onAuthStateChange", "kind": 4096, "kindString": "Call signature", @@ -4194,7 +4261,7 @@ }, "parameters": [ { - "id": 159, + "id": 180, "name": "callback", "kind": 32768, "kindString": "Parameter", @@ -4205,33 +4272,33 @@ "type": { "type": "reflection", "declaration": { - "id": 160, + "id": 181, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "signatures": [ { - "id": 161, + "id": 182, "name": "__type", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 162, + "id": 183, "name": "event", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 239, + "id": 280, "name": "AuthChangeEvent" } }, { - "id": 163, + "id": 184, "name": "session", "kind": 32768, "kindString": "Parameter", @@ -4245,7 +4312,7 @@ }, { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } ] @@ -4265,14 +4332,14 @@ "type": { "type": "reflection", "declaration": { - "id": 164, + "id": 185, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 165, + "id": 186, "name": "data", "kind": 1024, "kindString": "Property", @@ -4280,21 +4347,21 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 702, + "line": 785, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 166, + "id": 187, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 167, + "id": 188, "name": "subscription", "kind": 1024, "kindString": "Property", @@ -4302,13 +4369,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 702, + "line": 785, "character": 12 } ], "type": { "type": "reference", - "id": 353, + "id": 405, "name": "Subscription" } } @@ -4317,7 +4384,7 @@ { "title": "Properties", "kind": 1024, - "children": [167] + "children": [188] } ] } @@ -4328,7 +4395,7 @@ { "title": "Properties", "kind": 1024, - "children": [165] + "children": [186] } ] } @@ -4337,7 +4404,97 @@ ] }, { - "id": 168, + "id": 153, + "name": "refreshSession", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 645, + "character": 8 + } + ], + "signatures": [ + { + "id": 154, + "name": "refreshSession", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns a new session, regardless of expiry status.\nTakes in an optional current session. If not passed in, then refreshSession() will attempt to retrieve it from getSession().\nIf the current session's refresh token is invalid, an error will be thrown." + }, + "parameters": [ + { + "id": 155, + "name": "currentSession", + "kind": 32768, + "kindString": "Parameter", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The current session. If passed in, it must contain a refresh token.\n" + }, + "type": { + "type": "reflection", + "declaration": { + "id": 156, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 157, + "name": "refresh_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 645, + "character": 42 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [157] + } + ] + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 189, "name": "resetPasswordForEmail", "kind": 2048, "kindString": "Method", @@ -4345,13 +4502,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 724, + "line": 807, "character": 8 } ], "signatures": [ { - "id": 169, + "id": 190, "name": "resetPasswordForEmail", "kind": 4096, "kindString": "Call signature", @@ -4361,7 +4518,7 @@ }, "parameters": [ { - "id": 170, + "id": 191, "name": "email", "kind": 32768, "kindString": "Parameter", @@ -4375,7 +4532,7 @@ } }, { - "id": 171, + "id": 192, "name": "options", "kind": 32768, "kindString": "Parameter", @@ -4383,14 +4540,14 @@ "type": { "type": "reflection", "declaration": { - "id": 172, + "id": 193, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 174, + "id": 195, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -4403,7 +4560,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 728, + "line": 811, "character": 6 } ], @@ -4413,7 +4570,7 @@ } }, { - "id": 173, + "id": 194, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -4426,7 +4583,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 727, + "line": 810, "character": 6 } ], @@ -4440,7 +4597,7 @@ { "title": "Properties", "kind": 1024, - "children": [174, 173] + "children": [195, 194] } ] } @@ -4457,14 +4614,14 @@ { "type": "reflection", "declaration": { - "id": 175, + "id": 196, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 176, + "id": 197, "name": "data", "kind": 1024, "kindString": "Property", @@ -4472,14 +4629,14 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 732, + "line": 815, "character": 8 } ], "type": { "type": "reflection", "declaration": { - "id": 177, + "id": 198, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -4488,7 +4645,7 @@ } }, { - "id": 178, + "id": 199, "name": "error", "kind": 1024, "kindString": "Property", @@ -4496,7 +4653,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 733, + "line": 816, "character": 8 } ], @@ -4510,7 +4667,7 @@ { "title": "Properties", "kind": 1024, - "children": [176, 178] + "children": [197, 199] } ] } @@ -4518,14 +4675,14 @@ { "type": "reflection", "declaration": { - "id": 179, + "id": 200, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 180, + "id": 201, "name": "data", "kind": 1024, "kindString": "Property", @@ -4533,7 +4690,7 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 735, + "line": 818, "character": 8 } ], @@ -4543,7 +4700,7 @@ } }, { - "id": 181, + "id": 202, "name": "error", "kind": 1024, "kindString": "Property", @@ -4551,13 +4708,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 735, + "line": 818, "character": 20 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -4566,7 +4723,7 @@ { "title": "Properties", "kind": 1024, - "children": [180, 181] + "children": [201, 202] } ] } @@ -4582,7 +4739,7 @@ ] }, { - "id": 134, + "id": 150, "name": "setSession", "kind": 2048, "kindString": "Method", @@ -4590,13 +4747,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 539, + "line": 581, "character": 8 } ], "signatures": [ { - "id": 135, + "id": 151, "name": "setSession", "kind": 4096, "kindString": "Call signature", @@ -4606,7 +4763,7 @@ }, "parameters": [ { - "id": 136, + "id": 152, "name": "currentSession", "kind": 32768, "kindString": "Parameter", @@ -4619,7 +4776,7 @@ "typeArguments": [ { "type": "reference", - "id": 290, + "id": 331, "name": "Session" }, { @@ -4647,7 +4804,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -4659,7 +4816,7 @@ ] }, { - "id": 102, + "id": 111, "name": "signInWithOAuth", "kind": 2048, "kindString": "Method", @@ -4667,13 +4824,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 307, + "line": 337, "character": 8 } ], "signatures": [ { - "id": 103, + "id": 112, "name": "signInWithOAuth", "kind": 4096, "kindString": "Call signature", @@ -4683,17 +4840,17 @@ }, "parameters": [ { - "id": 104, + "id": 113, "name": "credentials", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "dereferenced": { - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "kind": 4194304, "kindString": "Type alias", @@ -4701,21 +4858,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 407, + "id": 463, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 409, + "id": 465, "name": "options", "kind": 1024, "kindString": "Property", @@ -4725,21 +4882,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 410, + "id": 466, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 413, + "id": 469, "name": "queryParams", "kind": 1024, "kindString": "Property", @@ -4752,14 +4909,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 414, + "id": 470, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -4767,19 +4924,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 18 } ], "indexSignature": { - "id": 415, + "id": 471, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 416, + "id": 472, "name": "key", "kind": 32768, "flags": {}, @@ -4798,7 +4955,7 @@ } }, { - "id": 411, + "id": 467, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -4811,7 +4968,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 359, + "line": 428, "character": 4 } ], @@ -4821,7 +4978,7 @@ } }, { - "id": 412, + "id": 468, "name": "scopes", "kind": 1024, "kindString": "Property", @@ -4834,7 +4991,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 361, + "line": 430, "character": 4 } ], @@ -4848,13 +5005,13 @@ { "title": "Properties", "kind": 1024, - "children": [413, 411, 412] + "children": [469, 467, 468] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 12 } ] @@ -4862,7 +5019,7 @@ } }, { - "id": 408, + "id": 464, "name": "provider", "kind": 1024, "kindString": "Property", @@ -4873,13 +5030,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 356, + "line": 425, "character": 2 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } } @@ -4888,13 +5045,13 @@ { "title": "Properties", "kind": 1024, - "children": [409, 408] + "children": [465, 464] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 41 } ] @@ -4909,7 +5066,7 @@ "typeArguments": [ { "type": "reference", - "id": 266, + "id": 307, "name": "OAuthResponse" } ], @@ -4921,7 +5078,7 @@ ] }, { - "id": 105, + "id": 114, "name": "signInWithOtp", "kind": 2048, "kindString": "Method", @@ -4929,13 +5086,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 322, + "line": 352, "character": 8 } ], "signatures": [ { - "id": 106, + "id": 115, "name": "signInWithOtp", "kind": 4096, "kindString": "Call signature", @@ -4943,6 +5100,888 @@ "comment": { "shortText": "Log in a user using magiclink or a one-time password (OTP).\nIf the `{{ .ConfirmationURL }}` variable is specified in the email template, a magiclink will be sent.\nIf the `{{ .Token }}` variable is specified in the email template, an OTP will be sent.\nIf you're using phone sign-ins, only an OTP will be sent. You won't be able to send a magiclink for phone sign-ins." }, + "parameters": [ + { + "id": 116, + "name": "credentials", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 446, + "name": "SignInWithPasswordlessCredentials", + "dereferenced": { + "id": 446, + "name": "SignInWithPasswordlessCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 387, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 447, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 448, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 390, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 449, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 450, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 454, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 403, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 453, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 401, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 451, + "name": "emailRedirectTo", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The redirect url embedded in the email link" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 393, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 452, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 395, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [454, 453, 451, 452] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 16 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [448, 449] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 388, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 455, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 457, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 458, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 461, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 419, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 460, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 417, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 459, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 411, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [461, 460, 459] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 16 + } + ] + } + } + }, + { + "id": 456, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 408, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [457, 456] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 406, + "character": 4 + } + ] + } + } + ] + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 108, + "name": "signInWithPassword", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 285, + "character": 8 + } + ], + "signatures": [ + { + "id": 109, + "name": "signInWithPassword", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Log in an existing user with an email and password or phone and password." + }, + "parameters": [ + { + "id": 110, + "name": "credentials", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 431, + "name": "SignInWithPasswordCredentials", + "dereferenced": { + "id": 431, + "name": "SignInWithPasswordCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 353, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 432, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 433, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 356, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 435, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 359, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 436, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 438, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 367, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 437, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 365, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [438, 437] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 359, + "character": 16 + } + ] + } + } + }, + { + "id": 434, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 358, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [433, 435, 434] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 354, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 439, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 442, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 375, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 443, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 445, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 383, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 444, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 381, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [445, 444] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 375, + "character": 16 + } + ] + } + } + }, + { + "id": 441, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 374, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 440, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 372, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [442, 441, 440] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 370, + "character": 4 + } + ] + } + } + ] + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 294, + "name": "AuthResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 174, + "name": "signOut", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 765, + "character": 8 + } + ], + "signatures": [ + { + "id": 175, + "name": "signOut", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Inside a browser context, `signOut()` will remove the logged in user from the browser session\nand log them out - removing all items from localstorage and then trigger a `\"SIGNED_OUT\"` event.", + "text": "For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`.\nThere is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.\n" + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reflection", + "declaration": { + "id": 176, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 177, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 765, + "character": 29 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": null + }, + { + "type": "reference", + "id": 694, + "name": "AuthError" + } + ] + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [177] + } + ] + } + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 105, + "name": "signUp", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "sources": [ + { + "fileName": "src/GoTrueClient.ts", + "line": 222, + "character": 8 + } + ], + "signatures": [ + { + "id": 106, + "name": "signUp", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Creates a new user.", + "returns": "A logged-in session if the server has \"autoconfirm\" ON" + }, "parameters": [ { "id": 107, @@ -4952,11 +5991,11 @@ "flags": {}, "type": { "type": "reference", - "id": 390, - "name": "SignInWithPasswordlessCredentials", + "id": 415, + "name": "SignUpWithPasswordCredentials", "dereferenced": { - "id": 390, - "name": "SignInWithPasswordlessCredentials", + "id": 415, + "name": "SignUpWithPasswordCredentials", "kind": 4194304, "kindString": "Type alias", "flags": {}, @@ -4973,14 +6012,14 @@ { "type": "reflection", "declaration": { - "id": 391, + "id": 416, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 392, + "id": 417, "name": "email", "kind": 1024, "kindString": "Property", @@ -5001,7 +6040,7 @@ } }, { - "id": 393, + "id": 419, "name": "options", "kind": 1024, "kindString": "Property", @@ -5011,21 +6050,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 394, + "id": 420, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 398, + "id": 423, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -5048,7 +6087,7 @@ } }, { - "id": 397, + "id": 422, "name": "data", "kind": 1024, "kindString": "Property", @@ -5072,7 +6111,7 @@ } }, { - "id": 395, + "id": 421, "name": "emailRedirectTo", "kind": 1024, "kindString": "Property", @@ -5085,7 +6124,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 324, + "line": 326, "character": 8 } ], @@ -5093,54 +6132,52 @@ "type": "intrinsic", "name": "string" } - }, - { - "id": 396, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 326, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [398, 397, 395, 396] + "children": [423, 422, 421] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 16 } ] } } + }, + { + "id": 418, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 323, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [392, 393] + "children": [417, 419, 418] } ], "sources": [ @@ -5155,14 +6192,14 @@ { "type": "reflection", "declaration": { - "id": 399, + "id": 424, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 401, + "id": 427, "name": "options", "kind": 1024, "kindString": "Property", @@ -5172,21 +6209,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 402, + "id": 428, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 405, + "id": 430, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -5209,7 +6246,7 @@ } }, { - "id": 404, + "id": 429, "name": "data", "kind": 1024, "kindString": "Property", @@ -5231,42 +6268,19 @@ "type": "intrinsic", "name": "object" } - }, - { - "id": 403, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 342, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [405, 404, 403] + "children": [430, 429] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 16 } ] @@ -5274,7 +6288,28 @@ } }, { - "id": 400, + "id": 426, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 341, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 425, "name": "phone", "kind": 1024, "kindString": "Property", @@ -5299,7 +6334,7 @@ { "title": "Properties", "kind": 1024, - "children": [401, 400] + "children": [427, 426, 425] } ], "sources": [ @@ -5322,7 +6357,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -5334,837 +6369,7 @@ ] }, { - "id": 99, - "name": "signInWithPassword", - "kind": 2048, - "kindString": "Method", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 257, - "character": 8 - } - ], - "signatures": [ - { - "id": 100, - "name": "signInWithPassword", - "kind": 4096, - "kindString": "Call signature", - "flags": {}, - "comment": { - "shortText": "Log in an existing user with an email and password or phone and password." - }, - "parameters": [ - { - "id": 101, - "name": "credentials", - "kind": 32768, - "kindString": "Parameter", - "flags": {}, - "type": { - "type": "reference", - "id": 377, - "name": "SignInWithPasswordCredentials", - "dereferenced": { - "id": 377, - "name": "SignInWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 296, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 378, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 379, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 299, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 381, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 302, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 382, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 383, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 304, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [383] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 302, - "character": 16 - } - ] - } - } - }, - { - "id": 380, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 301, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [379, 381, 380] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 297, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 384, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 387, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 312, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 388, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 389, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 314, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [389] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 312, - "character": 16 - } - ] - } - } - }, - { - "id": 386, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 311, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 385, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 309, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [387, 386, 385] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 307, - "character": 4 - } - ] - } - } - ] - } - } - } - } - ], - "type": { - "type": "reference", - "typeArguments": [ - { - "type": "reference", - "id": 253, - "name": "AuthResponse" - } - ], - "qualifiedName": "Promise", - "package": "typescript", - "name": "Promise" - } - } - ] - }, - { - "id": 153, - "name": "signOut", - "kind": 2048, - "kindString": "Method", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 682, - "character": 8 - } - ], - "signatures": [ - { - "id": 154, - "name": "signOut", - "kind": 4096, - "kindString": "Call signature", - "flags": {}, - "comment": { - "shortText": "Inside a browser context, `signOut()` will remove the logged in user from the browser session\nand log them out - removing all items from localstorage and then trigger a `\"SIGNED_OUT\"` event.", - "text": "For server-side management, you can revoke all refresh tokens for a user by passing a user's JWT through to `auth.api.signOut(JWT: string)`.\nThere is no way to revoke a user's access token jwt until it expires. It is recommended to set a shorter expiry on the jwt for this reason.\n" - }, - "type": { - "type": "reference", - "typeArguments": [ - { - "type": "reflection", - "declaration": { - "id": 155, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 156, - "name": "error", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 682, - "character": 29 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "literal", - "value": null - }, - { - "type": "reference", - "id": 497, - "name": "AuthError" - } - ] - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [156] - } - ] - } - } - ], - "qualifiedName": "Promise", - "package": "typescript", - "name": "Promise" - } - } - ] - }, - { - "id": 96, - "name": "signUp", - "kind": 2048, - "kindString": "Method", - "flags": {}, - "sources": [ - { - "fileName": "src/GoTrueClient.ts", - "line": 194, - "character": 8 - } - ], - "signatures": [ - { - "id": 97, - "name": "signUp", - "kind": 4096, - "kindString": "Call signature", - "flags": {}, - "comment": { - "shortText": "Creates a new user.", - "returns": "A logged-in session if the server has \"autoconfirm\" ON" - }, - "parameters": [ - { - "id": 98, - "name": "credentials", - "kind": 32768, - "kindString": "Parameter", - "flags": {}, - "type": { - "type": "reference", - "id": 361, - "name": "SignUpWithPasswordCredentials", - "dereferenced": { - "id": 361, - "name": "SignUpWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 261, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 362, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 363, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 264, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 365, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 366, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 369, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 277, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 368, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 275, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - }, - { - "id": 367, - "name": "emailRedirectTo", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "The redirect url embedded in the email link" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 269, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [369, 368, 367] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 16 - } - ] - } - } - }, - { - "id": 364, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 266, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [363, 365, 364] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 262, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 370, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 373, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 374, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 376, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 293, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 375, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 291, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [376, 375] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 16 - } - ] - } - } - }, - { - "id": 372, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 284, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 371, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 282, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [373, 372, 371] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 280, - "character": 4 - } - ] - } - } - ] - } - } - } - } - ], - "type": { - "type": "reference", - "typeArguments": [ - { - "type": "reference", - "id": 253, - "name": "AuthResponse" - } - ], - "qualifiedName": "Promise", - "package": "typescript", - "name": "Promise" - } - } - ] - }, - { - "id": 131, + "id": 140, "name": "updateUser", "kind": 2048, "kindString": "Method", @@ -6172,13 +6377,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 502, + "line": 533, "character": 8 } ], "signatures": [ { - "id": 132, + "id": 141, "name": "updateUser", "kind": 4096, "kindString": "Call signature", @@ -6188,24 +6393,24 @@ }, "parameters": [ { - "id": 133, + "id": 142, "name": "attributes", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes", "dereferenced": { - "id": 338, + "id": 390, "name": "UserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 342, + "id": 394, "name": "data", "kind": 1024, "kindString": "Property", @@ -6219,7 +6424,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -6229,7 +6434,7 @@ } }, { - "id": 339, + "id": 391, "name": "email", "kind": 1024, "kindString": "Property", @@ -6242,7 +6447,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -6252,7 +6457,7 @@ } }, { - "id": 341, + "id": 393, "name": "password", "kind": 1024, "kindString": "Property", @@ -6265,7 +6470,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -6275,7 +6480,7 @@ } }, { - "id": 340, + "id": 392, "name": "phone", "kind": 1024, "kindString": "Property", @@ -6288,7 +6493,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -6302,20 +6507,20 @@ { "title": "Properties", "kind": 1024, - "children": [342, 339, 341, 340] + "children": [394, 391, 393, 392] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 170, + "line": 223, "character": 17 } ], "extendedBy": [ { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } ] @@ -6328,7 +6533,7 @@ "typeArguments": [ { "type": "reference", - "id": 279, + "id": 320, "name": "UserResponse" } ], @@ -6340,7 +6545,7 @@ ] }, { - "id": 108, + "id": 117, "name": "verifyOtp", "kind": 2048, "kindString": "Method", @@ -6348,13 +6553,13 @@ "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 366, + "line": 396, "character": 8 } ], "signatures": [ { - "id": 109, + "id": 118, "name": "verifyOtp", "kind": 4096, "kindString": "Call signature", @@ -6364,17 +6569,17 @@ }, "parameters": [ { - "id": 110, + "id": 119, "name": "params", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 417, + "id": 473, "name": "VerifyOtpParams", "dereferenced": { - "id": 417, + "id": 473, "name": "VerifyOtpParams", "kind": 4194304, "kindString": "Type alias", @@ -6382,7 +6587,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 367, + "line": 436, "character": 12 } ], @@ -6391,12 +6596,12 @@ "types": [ { "type": "reference", - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams" }, { "type": "reference", - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams" } ] @@ -6410,7 +6615,7 @@ "typeArguments": [ { "type": "reference", - "id": 253, + "id": 294, "name": "AuthResponse" } ], @@ -6426,36 +6631,111 @@ { "title": "Constructors", "kind": 512, - "children": [67] + "children": [75] }, { "title": "Properties", "kind": 1024, - "children": [70] + "children": [78, 79] }, { "title": "Methods", "kind": 2048, - "children": [111, 128, 92, 157, 168, 134, 102, 105, 99, 153, 96, 131, 108] + "children": [120, 137, 101, 178, 153, 189, 150, 111, 114, 108, 174, 105, 140, 117] } ], "sources": [ { "fileName": "src/GoTrueClient.ts", - "line": 64, + "line": 79, "character": 21 } ] }, { - "id": 343, + "id": 340, + "name": "AMREntry", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "An authentication methord reference (AMR) entry.", + "text": "An entry designates what method was used by the user to verify their\nidentity and at what time.\n", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}.\n" + } + ] + }, + "children": [ + { + "id": 341, + "name": "method", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Authentication method name." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 142, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 342, + "name": "timestamp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Timestamp when the method was successfully used. Represents number of\nseconds since 1st January 1970 (UNIX epoch) in UTC." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 148, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [341, 342] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 140, + "character": 17 + } + ] + }, + { + "id": 395, "name": "AdminUserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 345, + "id": 397, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -6469,7 +6749,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 217, + "line": 270, "character": 2 } ], @@ -6479,7 +6759,7 @@ } }, { - "id": 348, + "id": 400, "name": "ban_duration", "kind": 1024, "kindString": "Property", @@ -6493,7 +6773,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 243, + "line": 296, "character": 2 } ], @@ -6503,7 +6783,7 @@ } }, { - "id": 352, + "id": 404, "name": "data", "kind": 1024, "kindString": "Property", @@ -6517,7 +6797,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -6527,12 +6807,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 342, + "id": 394, "name": "UserAttributes.data" } }, { - "id": 349, + "id": 401, "name": "email", "kind": 1024, "kindString": "Property", @@ -6545,7 +6825,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -6555,12 +6835,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 339, + "id": 391, "name": "UserAttributes.email" } }, { - "id": 346, + "id": 398, "name": "email_confirm", "kind": 1024, "kindString": "Property", @@ -6574,7 +6854,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 224, + "line": 277, "character": 2 } ], @@ -6584,7 +6864,7 @@ } }, { - "id": 351, + "id": 403, "name": "password", "kind": 1024, "kindString": "Property", @@ -6597,7 +6877,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -6607,12 +6887,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 341, + "id": 393, "name": "UserAttributes.password" } }, { - "id": 350, + "id": 402, "name": "phone", "kind": 1024, "kindString": "Property", @@ -6625,7 +6905,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -6635,12 +6915,12 @@ }, "inheritedFrom": { "type": "reference", - "id": 340, + "id": 392, "name": "UserAttributes.phone" } }, { - "id": 347, + "id": 399, "name": "phone_confirm", "kind": 1024, "kindString": "Property", @@ -6654,7 +6934,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 231, + "line": 284, "character": 2 } ], @@ -6664,7 +6944,7 @@ } }, { - "id": 344, + "id": 396, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -6678,7 +6958,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 207, + "line": 260, "character": 2 } ], @@ -6692,33 +6972,204 @@ { "title": "Properties", "kind": 1024, - "children": [345, 348, 352, 349, 346, 351, 350, 347, 344] + "children": [397, 400, 404, 401, 398, 403, 402, 399, 396] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 195, + "line": 248, "character": 17 } ], "extendedTypes": [ { "type": "reference", - "id": 338, + "id": 390, "name": "UserAttributes" } ] }, { - "id": 458, + "id": 354, + "name": "Factor", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "A MFA factor.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#enroll}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#listFactors}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAAdminApi#listFactors}\n" + } + ] + }, + "children": [ + { + "id": 359, + "name": "created_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 186, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 357, + "name": "factor_type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of factor. Only `totp` supported with this version but may change in\nfuture versions." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 181, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 356, + "name": "friendly_name", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Friendly name of the factor, useful to disambiguate between multiple factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 175, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 355, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 172, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 358, + "name": "status", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Factor's status." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 184, + "character": 2 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "verified" + }, + { + "type": "literal", + "value": "unverified" + } + ] + } + }, + { + "id": 360, + "name": "updated_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 187, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [359, 357, 356, 355, 358, 360] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 170, + "character": 17 + } + ] + }, + { + "id": 514, "name": "GenerateLinkOptions", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 459, + "id": 515, "name": "data", "kind": 1024, "kindString": "Property", @@ -6732,7 +7183,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 438, + "line": 507, "character": 2 } ], @@ -6742,7 +7193,7 @@ } }, { - "id": 460, + "id": 516, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -6755,7 +7206,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 440, + "line": 509, "character": 2 } ], @@ -6769,26 +7220,1172 @@ { "title": "Properties", "kind": 1024, - "children": [459, 460] + "children": [515, 516] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 432, + "line": 501, "character": 17 } ] }, { - "id": 290, + "id": 673, + "name": "GoTrueAdminMFAApi", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "Contains the full multi-factor authentication administration API.", + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "children": [ + { + "id": 677, + "name": "deleteFactor", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 678, + "name": "deleteFactor", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Deletes a factor on a user. This will log the user out of all active\nsessions (if the deleted factor was verified). There's no need to delete\nunverified factors.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#unenroll}\n" + }, + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 679, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "dereferenced": { + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 658, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 659, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the MFA factor to delete." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 868, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 660, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user whose factor is being deleted." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 871, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [659, 660] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 45 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 648, + "name": "AuthMFAAdminDeleteFactorResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 674, + "name": "listFactors", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 675, + "name": "listFactors", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Lists all factors attached to a user.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 676, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "dereferenced": { + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 671, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 672, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user for which to list all MFA factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 892, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [672] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 44 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 661, + "name": "AuthMFAAdminListFactorsResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Methods", + "kind": 2048, + "children": [677, 674] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 900, + "character": 17 + } + ] + }, + { + "id": 628, + "name": "GoTrueMFAApi", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "comment": { + "shortText": "Contains the full multi-factor authentication API.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "children": [ + { + "id": 632, + "name": "challenge", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 633, + "name": "challenge", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Prepares a challenge used to verify that a user has access to a MFA\nfactor. Provide the challenge ID and verification code by calling\n{@link GoTrueMFAApi#verify}.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 634, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 552, + "name": "MFAChallengeParams", + "dereferenced": { + "id": 552, + "name": "MFAChallengeParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 553, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 554, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor to be challenged." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 600, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [554] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 33 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 596, + "name": "AuthMFAChallengeResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 641, + "name": "challengeAndVerify", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 642, + "name": "challengeAndVerify", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Helper method which creates a challenge and immediately uses the given code to verify against it thereafter. The verification code is\nprovided by the user by entering a code seen in their authenticator app.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challengeAndVerify}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 643, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "dereferenced": { + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 556, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 558, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 610, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 557, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 608, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [558, 557] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 42 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 559, + "name": "AuthMFAVerifyResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 629, + "name": "enroll", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 630, + "name": "enroll", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Starts the enrollment process for a new Multi-Factor Authentication\nfactor. This method creates a new factor in the 'unverified' state.\nPresent the QR code or secret to the user and ask them to add it to their\nauthenticator app. Ask the user to provide you with an authenticator code\nfrom their app and verify it by calling challenge and then verify.", + "text": "The first successful verification of an unverified factor activates the\nfactor. All other sessions are logged out and the current one gets an\n`aal2` authenticator level.\n", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#verify}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 631, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 539, + "name": "MFAEnrollParams", + "dereferenced": { + "id": 539, + "name": "MFAEnrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 540, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 541, + "name": "factorType", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 568, + "character": 2 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + }, + { + "id": 543, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 570, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 542, + "name": "issuer", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 569, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [541, 543, 542] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 30 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 572, + "name": "AuthMFAEnrollResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 646, + "name": "getAuthenticatorAssuranceLevel", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 647, + "name": "getAuthenticatorAssuranceLevel", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns the Authenticator Assurance Level (AAL) for the active session.", + "text": "- `aal1` (or `null`) means that the user's identity has been verified only\nwith a conventional login (email+password, OTP, magic link, social login,\netc.).\n- `aal2` means that the user's identity has been verified both with a conventional login and at least one MFA factor.\n\nAlthough this method returns a promise, it's fairly quick (microseconds)\nand rarely uses the network. You can use this to check whether the current\nuser needs to be shown a screen to verify their MFA factors.\n", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 617, + "name": "AuthMFAGetAuthenticatorAssuranceLevelResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 644, + "name": "listFactors", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 645, + "name": "listFactors", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Returns the list of MFA factors enabled for this user. For most use cases\nyou should consider using {@link\nGoTrueMFAApi#getAuthenticatorAssuranceLevel}. This uses a cached version\nof the factors and avoids incurring a network call. If you need to update\nthis list, call {@link GoTrueClient#getUser} first.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#enroll}" + }, + { + "tag": "see", + "text": "{@link GoTrueMFAApi#getAuthenticatorAssuranceLevel}" + }, + { + "tag": "see", + "text": "{@link GoTrueClient#getUser}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 606, + "name": "AuthMFAListFactorsResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 638, + "name": "unenroll", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 639, + "name": "unenroll", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Unenroll removes a MFA factor. Unverified factors can safely be ignored\nand it's not necessary to unenroll them. Unenrolling a verified MFA factor\ncannot be done from a session with an `aal1` authenticator level.", + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 640, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 544, + "name": "MFAUnenrollParams", + "dereferenced": { + "id": 544, + "name": "MFAUnenrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 545, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 546, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 578, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [546] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 32 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 587, + "name": "AuthMFAUnenrollResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + }, + { + "id": 635, + "name": "verify", + "kind": 2048, + "kindString": "Method", + "flags": {}, + "signatures": [ + { + "id": 636, + "name": "verify", + "kind": 4096, + "kindString": "Call signature", + "flags": {}, + "comment": { + "shortText": "Verifies a verification code against a challenge. The verification code is\nprovided by the user by entering a code seen in their authenticator app.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}\n" + }, + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "parameters": [ + { + "id": 637, + "name": "params", + "kind": 32768, + "kindString": "Parameter", + "flags": {}, + "type": { + "type": "reference", + "id": 547, + "name": "MFAVerifyParams", + "dereferenced": { + "id": 547, + "name": "MFAVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 548, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 550, + "name": "challengeId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the challenge being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 589, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 551, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 592, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 549, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 586, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [550, 551, 549] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 30 + } + ] + } + } + } + } + } + ], + "type": { + "type": "reference", + "typeArguments": [ + { + "type": "reference", + "id": 559, + "name": "AuthMFAVerifyResponse" + } + ], + "qualifiedName": "Promise", + "package": "typescript", + "name": "Promise" + } + } + ] + } + ], + "groups": [ + { + "title": "Methods", + "kind": 2048, + "children": [632, 641, 629, 646, 644, 638, 635] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 760, + "character": 17 + } + ] + }, + { + "id": 331, "name": "Session", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 293, + "id": 334, "name": "access_token", "kind": 1024, "kindString": "Property", @@ -6799,7 +8396,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 109, + "line": 115, "character": 2 } ], @@ -6809,7 +8406,7 @@ } }, { - "id": 296, + "id": 337, "name": "expires_at", "kind": 1024, "kindString": "Property", @@ -6822,7 +8419,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 121, + "line": 127, "character": 2 } ], @@ -6832,7 +8429,7 @@ } }, { - "id": 295, + "id": 336, "name": "expires_in", "kind": 1024, "kindString": "Property", @@ -6843,7 +8440,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 117, + "line": 123, "character": 2 } ], @@ -6853,7 +8450,7 @@ } }, { - "id": 292, + "id": 333, "name": "provider_refresh_token", "kind": 1024, "kindString": "Property", @@ -6866,7 +8463,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 105, + "line": 111, "character": 2 } ], @@ -6885,7 +8482,7 @@ } }, { - "id": 291, + "id": 332, "name": "provider_token", "kind": 1024, "kindString": "Property", @@ -6898,7 +8495,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 100, + "line": 106, "character": 2 } ], @@ -6917,7 +8514,7 @@ } }, { - "id": 294, + "id": 335, "name": "refresh_token", "kind": 1024, "kindString": "Property", @@ -6928,7 +8525,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 113, + "line": 119, "character": 2 } ], @@ -6938,7 +8535,7 @@ } }, { - "id": 297, + "id": 338, "name": "token_type", "kind": 1024, "kindString": "Property", @@ -6946,7 +8543,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 122, + "line": 128, "character": 2 } ], @@ -6956,7 +8553,7 @@ } }, { - "id": 298, + "id": 339, "name": "user", "kind": 1024, "kindString": "Property", @@ -6964,13 +8561,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 123, + "line": 129, "character": 2 } ], "type": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -6979,26 +8576,26 @@ { "title": "Properties", "kind": 1024, - "children": [293, 296, 295, 292, 291, 294, 297, 298] + "children": [334, 337, 336, 333, 332, 335, 338, 339] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 96, + "line": 102, "character": 17 } ] }, { - "id": 353, + "id": 405, "name": "Subscription", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 354, + "id": 406, "name": "id", "kind": 1024, "kindString": "Property", @@ -7009,7 +8606,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 250, + "line": 303, "character": 2 } ], @@ -7019,7 +8616,7 @@ } }, { - "id": 355, + "id": 407, "name": "callback", "kind": 2048, "kindString": "Method", @@ -7027,13 +8624,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 254, + "line": 307, "character": 2 } ], "signatures": [ { - "id": 356, + "id": 408, "name": "callback", "kind": 4096, "kindString": "Call signature", @@ -7043,17 +8640,17 @@ }, "parameters": [ { - "id": 357, + "id": 409, "name": "event", "kind": 32768, "kindString": "Parameter", "flags": {}, "type": { "type": "reference", - "id": 239, + "id": 280, "name": "AuthChangeEvent", "dereferenced": { - "id": 239, + "id": 280, "name": "AuthChangeEvent", "kind": 4194304, "kindString": "Type alias", @@ -7061,7 +8658,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 23, + "line": 28, "character": 12 } ], @@ -7091,6 +8688,11 @@ { "type": "literal", "value": "USER_DELETED" + }, + { + "type": "reference", + "id": 279, + "name": "AuthChangeEventMFA" } ] } @@ -7098,7 +8700,7 @@ } }, { - "id": 358, + "id": 410, "name": "session", "kind": 32768, "kindString": "Parameter", @@ -7112,7 +8714,7 @@ }, { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } ] @@ -7127,7 +8729,7 @@ ] }, { - "id": 359, + "id": 411, "name": "unsubscribe", "kind": 2048, "kindString": "Method", @@ -7135,13 +8737,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 258, + "line": 311, "character": 2 } ], "signatures": [ { - "id": 360, + "id": 412, "name": "unsubscribe", "kind": 4096, "kindString": "Call signature", @@ -7161,31 +8763,72 @@ { "title": "Properties", "kind": 1024, - "children": [354] + "children": [406] }, { "title": "Methods", "kind": 2048, - "children": [355, 359] + "children": [407, 411] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 246, + "line": 299, "character": 17 } ] }, { - "id": 317, + "id": 413, + "name": "UpdatableFactorAttributes", + "kind": 256, + "kindString": "Interface", + "flags": {}, + "children": [ + { + "id": 414, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 315, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [414] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 314, + "character": 17 + } + ] + }, + { + "id": 368, "name": "User", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 327, + "id": 378, "name": "action_link", "kind": 1024, "kindString": "Property", @@ -7195,7 +8838,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 157, + "line": 209, "character": 2 } ], @@ -7205,7 +8848,7 @@ } }, { - "id": 319, + "id": 370, "name": "app_metadata", "kind": 1024, "kindString": "Property", @@ -7213,18 +8856,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 149, + "line": 201, "character": 2 } ], "type": { "type": "reference", - "id": 310, + "id": 361, "name": "UserAppMetadata" } }, { - "id": 321, + "id": 372, "name": "aud", "kind": 1024, "kindString": "Property", @@ -7232,7 +8875,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 151, + "line": 203, "character": 2 } ], @@ -7242,7 +8885,7 @@ } }, { - "id": 322, + "id": 373, "name": "confirmation_sent_at", "kind": 1024, "kindString": "Property", @@ -7252,7 +8895,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 152, + "line": 204, "character": 2 } ], @@ -7262,7 +8905,7 @@ } }, { - "id": 331, + "id": 382, "name": "confirmed_at", "kind": 1024, "kindString": "Property", @@ -7272,7 +8915,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 161, + "line": 213, "character": 2 } ], @@ -7282,7 +8925,7 @@ } }, { - "id": 330, + "id": 381, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -7290,7 +8933,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 160, + "line": 212, "character": 2 } ], @@ -7300,7 +8943,7 @@ } }, { - "id": 328, + "id": 379, "name": "email", "kind": 1024, "kindString": "Property", @@ -7310,7 +8953,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 158, + "line": 210, "character": 2 } ], @@ -7320,7 +8963,7 @@ } }, { - "id": 324, + "id": 375, "name": "email_change_sent_at", "kind": 1024, "kindString": "Property", @@ -7330,7 +8973,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 154, + "line": 206, "character": 2 } ], @@ -7340,7 +8983,7 @@ } }, { - "id": 332, + "id": 383, "name": "email_confirmed_at", "kind": 1024, "kindString": "Property", @@ -7350,7 +8993,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 162, + "line": 214, "character": 2 } ], @@ -7360,7 +9003,31 @@ } }, { - "id": 318, + "id": 389, + "name": "factors", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 220, + "character": 2 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + }, + { + "id": 369, "name": "id", "kind": 1024, "kindString": "Property", @@ -7368,7 +9035,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 148, + "line": 200, "character": 2 } ], @@ -7378,7 +9045,7 @@ } }, { - "id": 337, + "id": 388, "name": "identities", "kind": 1024, "kindString": "Property", @@ -7388,7 +9055,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 167, + "line": 219, "character": 2 } ], @@ -7396,13 +9063,13 @@ "type": "array", "elementType": { "type": "reference", - "id": 299, + "id": 343, "name": "UserIdentity" } } }, { - "id": 326, + "id": 377, "name": "invited_at", "kind": 1024, "kindString": "Property", @@ -7412,7 +9079,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 156, + "line": 208, "character": 2 } ], @@ -7422,7 +9089,7 @@ } }, { - "id": 334, + "id": 385, "name": "last_sign_in_at", "kind": 1024, "kindString": "Property", @@ -7432,7 +9099,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 164, + "line": 216, "character": 2 } ], @@ -7442,7 +9109,7 @@ } }, { - "id": 325, + "id": 376, "name": "new_email", "kind": 1024, "kindString": "Property", @@ -7452,7 +9119,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 155, + "line": 207, "character": 2 } ], @@ -7462,7 +9129,7 @@ } }, { - "id": 329, + "id": 380, "name": "phone", "kind": 1024, "kindString": "Property", @@ -7472,7 +9139,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 159, + "line": 211, "character": 2 } ], @@ -7482,7 +9149,7 @@ } }, { - "id": 333, + "id": 384, "name": "phone_confirmed_at", "kind": 1024, "kindString": "Property", @@ -7492,7 +9159,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 163, + "line": 215, "character": 2 } ], @@ -7502,7 +9169,7 @@ } }, { - "id": 323, + "id": 374, "name": "recovery_sent_at", "kind": 1024, "kindString": "Property", @@ -7512,7 +9179,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 153, + "line": 205, "character": 2 } ], @@ -7522,7 +9189,7 @@ } }, { - "id": 335, + "id": 386, "name": "role", "kind": 1024, "kindString": "Property", @@ -7532,7 +9199,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 165, + "line": 217, "character": 2 } ], @@ -7542,7 +9209,7 @@ } }, { - "id": 336, + "id": 387, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -7552,7 +9219,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 166, + "line": 218, "character": 2 } ], @@ -7562,7 +9229,7 @@ } }, { - "id": 320, + "id": 371, "name": "user_metadata", "kind": 1024, "kindString": "Property", @@ -7570,13 +9237,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 150, + "line": 202, "character": 2 } ], "type": { "type": "reference", - "id": 314, + "id": 365, "name": "UserMetadata" } } @@ -7586,28 +9253,28 @@ "title": "Properties", "kind": 1024, "children": [ - 327, 319, 321, 322, 331, 330, 328, 324, 332, 318, 337, 326, 334, 325, 329, 333, 323, - 335, 336, 320 + 378, 370, 372, 373, 382, 381, 379, 375, 383, 389, 369, 388, 377, 385, 376, 380, 384, + 374, 386, 387, 371 ] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 147, + "line": 199, "character": 17 } ] }, { - "id": 310, + "id": 361, "name": "UserAppMetadata", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 311, + "id": 362, "name": "provider", "kind": 1024, "kindString": "Property", @@ -7617,7 +9284,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 139, + "line": 191, "character": 2 } ], @@ -7631,25 +9298,25 @@ { "title": "Properties", "kind": 1024, - "children": [311] + "children": [362] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 138, + "line": 190, "character": 17 } ], "indexSignature": { - "id": 312, + "id": 363, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 313, + "id": 364, "name": "key", "kind": 32768, "flags": {}, @@ -7666,14 +9333,14 @@ } }, { - "id": 338, + "id": 390, "name": "UserAttributes", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 342, + "id": 394, "name": "data", "kind": 1024, "kindString": "Property", @@ -7687,7 +9354,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 192, + "line": 245, "character": 2 } ], @@ -7697,7 +9364,7 @@ } }, { - "id": 339, + "id": 391, "name": "email", "kind": 1024, "kindString": "Property", @@ -7710,7 +9377,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 174, + "line": 227, "character": 2 } ], @@ -7720,7 +9387,7 @@ } }, { - "id": 341, + "id": 393, "name": "password", "kind": 1024, "kindString": "Property", @@ -7733,7 +9400,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 184, + "line": 237, "character": 2 } ], @@ -7743,7 +9410,7 @@ } }, { - "id": 340, + "id": 392, "name": "phone", "kind": 1024, "kindString": "Property", @@ -7756,7 +9423,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 179, + "line": 232, "character": 2 } ], @@ -7770,33 +9437,33 @@ { "title": "Properties", "kind": 1024, - "children": [342, 339, 341, 340] + "children": [394, 391, 393, 392] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 170, + "line": 223, "character": 17 } ], "extendedBy": [ { "type": "reference", - "id": 343, + "id": 395, "name": "AdminUserAttributes" } ] }, { - "id": 299, + "id": 343, "name": "UserIdentity", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 307, + "id": 351, "name": "created_at", "kind": 1024, "kindString": "Property", @@ -7804,7 +9471,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 133, + "line": 158, "character": 2 } ], @@ -7814,7 +9481,7 @@ } }, { - "id": 300, + "id": 344, "name": "id", "kind": 1024, "kindString": "Property", @@ -7822,7 +9489,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 127, + "line": 152, "character": 2 } ], @@ -7832,7 +9499,7 @@ } }, { - "id": 302, + "id": 346, "name": "identity_data", "kind": 1024, "kindString": "Property", @@ -7840,27 +9507,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 129, + "line": 154, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 303, + "id": 347, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "indexSignature": { - "id": 304, + "id": 348, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 305, + "id": 349, "name": "key", "kind": 32768, "flags": {}, @@ -7879,7 +9546,7 @@ } }, { - "id": 308, + "id": 352, "name": "last_sign_in_at", "kind": 1024, "kindString": "Property", @@ -7887,7 +9554,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 134, + "line": 159, "character": 2 } ], @@ -7897,7 +9564,7 @@ } }, { - "id": 306, + "id": 350, "name": "provider", "kind": 1024, "kindString": "Property", @@ -7905,7 +9572,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 132, + "line": 157, "character": 2 } ], @@ -7915,7 +9582,7 @@ } }, { - "id": 309, + "id": 353, "name": "updated_at", "kind": 1024, "kindString": "Property", @@ -7925,7 +9592,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 135, + "line": 160, "character": 2 } ], @@ -7935,7 +9602,7 @@ } }, { - "id": 301, + "id": 345, "name": "user_id", "kind": 1024, "kindString": "Property", @@ -7943,7 +9610,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 128, + "line": 153, "character": 2 } ], @@ -7957,19 +9624,19 @@ { "title": "Properties", "kind": 1024, - "children": [307, 300, 302, 308, 306, 309, 301] + "children": [351, 344, 346, 352, 350, 353, 345] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 126, + "line": 151, "character": 17 } ] }, { - "id": 314, + "id": 365, "name": "UserMetadata", "kind": 256, "kindString": "Interface", @@ -7977,19 +9644,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 143, + "line": 195, "character": 17 } ], "indexSignature": { - "id": 315, + "id": 366, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 316, + "id": 367, "name": "key", "kind": 32768, "flags": {}, @@ -8006,14 +9673,14 @@ } }, { - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 427, + "id": 483, "name": "email", "kind": 1024, "kindString": "Property", @@ -8024,7 +9691,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 384, + "line": 453, "character": 2 } ], @@ -8034,7 +9701,7 @@ } }, { - "id": 430, + "id": 486, "name": "options", "kind": 1024, "kindString": "Property", @@ -8044,21 +9711,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 389, + "line": 458, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 431, + "id": 487, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 433, + "id": 489, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -8071,7 +9738,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 393, + "line": 462, "character": 4 } ], @@ -8081,7 +9748,7 @@ } }, { - "id": 432, + "id": 488, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -8094,7 +9761,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 391, + "line": 460, "character": 4 } ], @@ -8108,14 +9775,14 @@ { "title": "Properties", "kind": 1024, - "children": [433, 432] + "children": [489, 488] } ] } } }, { - "id": 428, + "id": 484, "name": "token", "kind": 1024, "kindString": "Property", @@ -8126,7 +9793,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 386, + "line": 455, "character": 2 } ], @@ -8136,7 +9803,7 @@ } }, { - "id": 429, + "id": 485, "name": "type", "kind": 1024, "kindString": "Property", @@ -8147,13 +9814,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 388, + "line": 457, "character": 2 } ], "type": { "type": "reference", - "id": 435, + "id": 491, "name": "EmailOtpType" } } @@ -8162,26 +9829,26 @@ { "title": "Properties", "kind": 1024, - "children": [427, 430, 428, 429] + "children": [483, 486, 484, 485] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 382, + "line": 451, "character": 17 } ] }, { - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams", "kind": 256, "kindString": "Interface", "flags": {}, "children": [ { - "id": 422, + "id": 478, "name": "options", "kind": 1024, "kindString": "Property", @@ -8191,21 +9858,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 375, + "line": 444, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 423, + "id": 479, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 425, + "id": 481, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -8218,7 +9885,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 379, + "line": 448, "character": 4 } ], @@ -8228,7 +9895,7 @@ } }, { - "id": 424, + "id": 480, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -8241,7 +9908,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 377, + "line": 446, "character": 4 } ], @@ -8255,14 +9922,14 @@ { "title": "Properties", "kind": 1024, - "children": [425, 424] + "children": [481, 480] } ] } } }, { - "id": 419, + "id": 475, "name": "phone", "kind": 1024, "kindString": "Property", @@ -8273,7 +9940,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 370, + "line": 439, "character": 2 } ], @@ -8283,7 +9950,7 @@ } }, { - "id": 420, + "id": 476, "name": "token", "kind": 1024, "kindString": "Property", @@ -8294,7 +9961,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 372, + "line": 441, "character": 2 } ], @@ -8304,7 +9971,7 @@ } }, { - "id": 421, + "id": 477, "name": "type", "kind": 1024, "kindString": "Property", @@ -8315,13 +9982,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 374, + "line": 443, "character": 2 } ], "type": { "type": "reference", - "id": 434, + "id": 490, "name": "MobileOtpType" } } @@ -8330,19 +9997,19 @@ { "title": "Properties", "kind": 1024, - "children": [422, 419, 420, 421] + "children": [478, 475, 476, 477] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 368, + "line": 437, "character": 17 } ] }, { - "id": 239, + "id": 280, "name": "AuthChangeEvent", "kind": 4194304, "kindString": "Type alias", @@ -8350,7 +10017,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 23, + "line": 28, "character": 12 } ], @@ -8380,20 +10047,149 @@ { "type": "literal", "value": "USER_DELETED" + }, + { + "type": "reference", + "id": 279, + "name": "AuthChangeEventMFA" } ] } }, { - "id": 253, - "name": "AuthResponse", + "id": 279, + "name": "AuthChangeEventMFA", "kind": 4194304, "kindString": "Type alias", "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, "sources": [ { "fileName": "src/lib/types.ts", - "line": 50, + "line": 26, + "character": 12 + } + ], + "type": { + "type": "literal", + "value": "MFA_CHALLENGE_VERIFIED" + } + }, + { + "id": 657, + "name": "AuthMFAAdminDeleteFactorParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 658, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 659, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the MFA factor to delete." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 868, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 660, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user whose factor is being deleted." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 871, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [659, 660] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 866, + "character": 45 + } + ] + } + } + }, + { + "id": 648, + "name": "AuthMFAAdminDeleteFactorResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 853, "character": 12 } ], @@ -8403,14 +10199,14 @@ { "type": "reflection", "declaration": { - "id": 254, + "id": 649, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 255, + "id": 650, "name": "data", "kind": 1024, "kindString": "Property", @@ -8418,29 +10214,1058 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 52, + "line": 855, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 256, + "id": 651, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 258, - "name": "session", + "id": 652, + "name": "id", "kind": 1024, "kindString": "Property", "flags": {}, + "comment": { + "shortText": "ID of the factor that was successfully deleted." + }, "sources": [ { "fileName": "src/lib/types.ts", - "line": 54, + "line": 857, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [652] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 855, + "character": 12 + } + ] + } + } + }, + { + "id": 653, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 859, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [650, 653] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 854, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 654, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 655, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 656, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [655, 656] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 861, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 670, + "name": "AuthMFAAdminListFactorsParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 671, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 672, + "name": "userId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the user for which to list all MFA factors." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 892, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [672] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 890, + "character": 44 + } + ] + } + } + }, + { + "id": 661, + "name": "AuthMFAAdminListFactorsResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "expermental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 877, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 662, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 663, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 879, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 664, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 665, + "name": "factors", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "All factors attached to the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 881, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [665] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 879, + "character": 12 + } + ] + } + } + }, + { + "id": 666, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 883, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [663, 666] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 878, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 667, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 668, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 669, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [668, 669] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 885, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 596, + "name": "AuthMFAChallengeResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 693, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 597, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 598, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 695, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 599, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 601, + "name": "expires_at", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Timestamp in UNIX seconds when this challenge will no longer be usable." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 700, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 600, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the newly created challenge." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 697, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [601, 600] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 695, + "character": 12 + } + ] + } + } + }, + { + "id": 602, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 702, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [598, 602] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 694, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 603, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 604, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 605, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [604, 605] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 704, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 572, + "name": "AuthMFAEnrollResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 644, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 573, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 574, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 646, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 575, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 576, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor that was just enrolled (in an unverified state)." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 648, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 578, + "name": "totp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "TOTP enrollment information." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 654, + "character": 8 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 579, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 580, + "name": "qr_code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Contains a QR code encoding the authenticator URI. You can\nconvert it to a URL by prepending `data:image/svg+xml;utf-8,` to\nthe value. Avoid logging this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 658, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 581, + "name": "secret", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The TOTP secret (also encoded in the QR code). Show this secret\nin a password-style field to the user, in case they are unable to\nscan the QR code. Avoid logging this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 663, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 582, + "name": "uri", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The authenticator URI encoded within the QR code, should you need\nto use it. Avoid loggin this value to the console." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 667, + "character": 10 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [580, 581, 582] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 654, + "character": 14 + } + ] + } + } + }, + { + "id": 577, + "name": "type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of MFA factor. Only `totp` supported for now." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 651, + "character": 8 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [576, 578, 577] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 646, + "character": 12 + } + ] + } + } + }, + { + "id": 583, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 670, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [574, 583] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 645, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 584, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 585, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 673, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 586, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 674, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [585, 586] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 672, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 617, + "name": "AuthMFAGetAuthenticatorAssuranceLevelResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 730, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 618, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 619, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 732, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 620, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 623, + "name": "currentAuthenticationMethods", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "A list of all authentication methods attached to this session. Use\nthe information here to detect the last time a user verified a\nfactor, for example if implementing a step-up scenario." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 749, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 340, + "name": "AMREntry" + } + } + }, + { + "id": 621, + "name": "currentLevel", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Current AAL level of the session." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 734, "character": 8 } ], @@ -8449,7 +11274,937 @@ "types": [ { "type": "reference", - "id": 290, + "id": 616, + "name": "AuthenticatorAssuranceLevels" + }, + { + "type": "literal", + "value": null + } + ] + } + }, + { + "id": 622, + "name": "nextLevel", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Next possible AAL level for the session. If the next level is higher\nthan the current one, the user should go through MFA.", + "tags": [ + { + "tag": "see", + "text": "{@link GoTrueMFAApi#challenge}\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 742, + "character": 8 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 616, + "name": "AuthenticatorAssuranceLevels" + }, + { + "type": "literal", + "value": null + } + ] + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [623, 621, 622] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 732, + "character": 12 + } + ] + } + } + }, + { + "id": 624, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 751, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [619, 624] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 731, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 625, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 626, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 627, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [626, 627] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 753, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 606, + "name": "AuthMFAListFactorsResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 709, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 607, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 608, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 711, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 609, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 610, + "name": "all", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "All available factors (verified and unverified)." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 713, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + }, + { + "id": 611, + "name": "totp", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Only verified TOTP factors. (A subset of `all`.)" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 716, + "character": 8 + } + ], + "type": { + "type": "array", + "elementType": { + "type": "reference", + "id": 354, + "name": "Factor" + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [610, 611] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 711, + "character": 12 + } + ] + } + } + }, + { + "id": 612, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 718, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [608, 612] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 710, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 613, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 614, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 615, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [614, 615] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 720, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 587, + "name": "AuthMFAUnenrollResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 680, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 588, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 589, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 682, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 590, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 591, + "name": "id", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor that was successfully unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 684, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [591] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 682, + "character": 12 + } + ] + } + } + }, + { + "id": 592, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 686, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [589, 592] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 681, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 593, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 594, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 595, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 18 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [594, 595] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 688, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 559, + "name": "AuthMFAVerifyResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 616, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 560, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 561, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 618, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 562, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 563, + "name": "access_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "New access token (JWT) after successful verification." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 620, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 565, + "name": "expires_in", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Number of seconds in which the access token will expire." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 626, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "number" + } + }, + { + "id": 566, + "name": "refresh_token", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Refresh token you can use to obtain new access tokens when expired." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 629, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 564, + "name": "token_type", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Type of token, typically `Bearer`." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 623, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 567, + "name": "user", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Updated user profile." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 632, + "character": 8 + } + ], + "type": { + "type": "reference", + "id": 368, + "name": "User" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [563, 565, 566, 564, 567] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 618, + "character": 12 + } + ] + } + } + }, + { + "id": 568, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 634, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [561, 568] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 617, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 569, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 570, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 637, + "character": 6 + } + ], + "type": { + "type": "literal", + "value": null + } + }, + { + "id": 571, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 638, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [570, 571] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 636, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 294, + "name": "AuthResponse", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 56, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 295, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 296, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 58, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 297, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 299, + "name": "session", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 60, + "character": 8 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reference", + "id": 331, "name": "Session" }, { @@ -8460,7 +12215,7 @@ } }, { - "id": 257, + "id": 298, "name": "user", "kind": 1024, "kindString": "Property", @@ -8468,7 +12223,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 53, + "line": 59, "character": 8 } ], @@ -8477,7 +12232,7 @@ "types": [ { "type": "reference", - "id": 317, + "id": 368, "name": "User" }, { @@ -8492,13 +12247,13 @@ { "title": "Properties", "kind": 1024, - "children": [258, 257] + "children": [299, 298] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 52, + "line": 58, "character": 12 } ] @@ -8506,7 +12261,7 @@ } }, { - "id": 259, + "id": 300, "name": "error", "kind": 1024, "kindString": "Property", @@ -8514,7 +12269,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 56, + "line": 62, "character": 6 } ], @@ -8528,13 +12283,13 @@ { "title": "Properties", "kind": 1024, - "children": [255, 259] + "children": [296, 300] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 51, + "line": 57, "character": 4 } ] @@ -8543,14 +12298,14 @@ { "type": "reflection", "declaration": { - "id": 260, + "id": 301, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 261, + "id": 302, "name": "data", "kind": 1024, "kindString": "Property", @@ -8558,21 +12313,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 59, + "line": 65, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 262, + "id": 303, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 264, + "id": 305, "name": "session", "kind": 1024, "kindString": "Property", @@ -8580,7 +12335,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 61, + "line": 67, "character": 8 } ], @@ -8590,7 +12345,7 @@ } }, { - "id": 263, + "id": 304, "name": "user", "kind": 1024, "kindString": "Property", @@ -8598,7 +12353,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 60, + "line": 66, "character": 8 } ], @@ -8612,13 +12367,13 @@ { "title": "Properties", "kind": 1024, - "children": [264, 263] + "children": [305, 304] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 59, + "line": 65, "character": 12 } ] @@ -8626,7 +12381,7 @@ } }, { - "id": 265, + "id": 306, "name": "error", "kind": 1024, "kindString": "Property", @@ -8634,13 +12389,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 63, + "line": 69, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -8649,13 +12404,13 @@ { "title": "Properties", "kind": 1024, - "children": [261, 265] + "children": [302, 306] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 58, + "line": 64, "character": 4 } ] @@ -8665,7 +12420,42 @@ } }, { - "id": 487, + "id": 616, + "name": "AuthenticatorAssuranceLevels", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 725, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "literal", + "value": "aal1" + }, + { + "type": "literal", + "value": "aal2" + } + ] + } + }, + { + "id": 684, "name": "CallRefreshTokenResult", "kind": 4194304, "kindString": "Type alias", @@ -8673,7 +12463,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 508, + "line": 933, "character": 12 } ], @@ -8683,14 +12473,14 @@ { "type": "reflection", "declaration": { - "id": 488, + "id": 685, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 490, + "id": 687, "name": "error", "kind": 1024, "kindString": "Property", @@ -8698,7 +12488,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 511, + "line": 936, "character": 6 } ], @@ -8708,7 +12498,7 @@ } }, { - "id": 489, + "id": 686, "name": "session", "kind": 1024, "kindString": "Property", @@ -8716,13 +12506,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 510, + "line": 935, "character": 6 } ], "type": { "type": "reference", - "id": 290, + "id": 331, "name": "Session" } } @@ -8731,13 +12521,13 @@ { "title": "Properties", "kind": 1024, - "children": [490, 489] + "children": [687, 686] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 509, + "line": 934, "character": 4 } ] @@ -8746,14 +12536,14 @@ { "type": "reflection", "declaration": { - "id": 491, + "id": 688, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 493, + "id": 690, "name": "error", "kind": 1024, "kindString": "Property", @@ -8761,18 +12551,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 515, + "line": 940, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } }, { - "id": 492, + "id": 689, "name": "session", "kind": 1024, "kindString": "Property", @@ -8780,7 +12570,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 514, + "line": 939, "character": 6 } ], @@ -8794,13 +12584,13 @@ { "title": "Properties", "kind": 1024, - "children": [493, 492] + "children": [690, 689] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 513, + "line": 938, "character": 4 } ] @@ -8810,7 +12600,7 @@ } }, { - "id": 435, + "id": 491, "name": "EmailOtpType", "kind": 4194304, "kindString": "Type alias", @@ -8818,7 +12608,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 398, + "line": 467, "character": 12 } ], @@ -8849,7 +12639,7 @@ } }, { - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -8857,21 +12647,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 421, + "line": 490, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 453, + "id": 509, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 455, + "id": 511, "name": "email", "kind": 1024, "kindString": "Property", @@ -8882,7 +12672,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 424, + "line": 493, "character": 2 } ], @@ -8892,7 +12682,7 @@ } }, { - "id": 456, + "id": 512, "name": "newEmail", "kind": 1024, "kindString": "Property", @@ -8903,7 +12693,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 428, + "line": 497, "character": 2 } ], @@ -8913,7 +12703,7 @@ } }, { - "id": 457, + "id": 513, "name": "options", "kind": 1024, "kindString": "Property", @@ -8923,7 +12713,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 429, + "line": 498, "character": 2 } ], @@ -8932,7 +12722,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -8946,7 +12736,7 @@ } }, { - "id": 454, + "id": 510, "name": "type", "kind": 1024, "kindString": "Property", @@ -8954,7 +12744,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 422, + "line": 491, "character": 2 } ], @@ -8977,13 +12767,13 @@ { "title": "Properties", "kind": 1024, - "children": [455, 456, 457, 454] + "children": [511, 512, 513, 510] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 421, + "line": 490, "character": 44 } ] @@ -8991,7 +12781,7 @@ } }, { - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams", "kind": 4194304, "kindString": "Type alias", @@ -8999,21 +12789,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 407, + "line": 476, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 443, + "id": 499, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 445, + "id": 501, "name": "email", "kind": 1024, "kindString": "Property", @@ -9024,7 +12814,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 410, + "line": 479, "character": 2 } ], @@ -9034,7 +12824,7 @@ } }, { - "id": 446, + "id": 502, "name": "options", "kind": 1024, "kindString": "Property", @@ -9044,7 +12834,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 411, + "line": 480, "character": 2 } ], @@ -9053,7 +12843,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -9076,7 +12866,7 @@ } }, { - "id": 444, + "id": 500, "name": "type", "kind": 1024, "kindString": "Property", @@ -9084,7 +12874,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 408, + "line": 477, "character": 2 } ], @@ -9107,13 +12897,13 @@ { "title": "Properties", "kind": 1024, - "children": [445, 446, 444] + "children": [501, 502, 500] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 407, + "line": 476, "character": 46 } ] @@ -9121,7 +12911,7 @@ } }, { - "id": 461, + "id": 517, "name": "GenerateLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -9129,7 +12919,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 443, + "line": 512, "character": 12 } ], @@ -9138,29 +12928,29 @@ "types": [ { "type": "reference", - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams" }, { "type": "reference", - "id": 442, + "id": 498, "name": "GenerateInviteOrMagiclinkParams" }, { "type": "reference", - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams" }, { "type": "reference", - "id": 452, + "id": 508, "name": "GenerateEmailChangeLinkParams" } ] } }, { - "id": 475, + "id": 531, "name": "GenerateLinkProperties", "kind": 4194304, "kindString": "Type alias", @@ -9171,21 +12961,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 466, + "line": 535, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 476, + "id": 532, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 477, + "id": 533, "name": "action_link", "kind": 1024, "kindString": "Property", @@ -9196,7 +12986,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 471, + "line": 540, "character": 2 } ], @@ -9206,7 +12996,7 @@ } }, { - "id": 478, + "id": 534, "name": "email_otp", "kind": 1024, "kindString": "Property", @@ -9217,7 +13007,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 476, + "line": 545, "character": 2 } ], @@ -9227,7 +13017,7 @@ } }, { - "id": 479, + "id": 535, "name": "hashed_token", "kind": 1024, "kindString": "Property", @@ -9238,7 +13028,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 480, + "line": 549, "character": 2 } ], @@ -9248,7 +13038,7 @@ } }, { - "id": 480, + "id": 536, "name": "redirect_to", "kind": 1024, "kindString": "Property", @@ -9259,7 +13049,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 482, + "line": 551, "character": 2 } ], @@ -9269,7 +13059,7 @@ } }, { - "id": 481, + "id": 537, "name": "verification_type", "kind": 1024, "kindString": "Property", @@ -9280,13 +13070,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 484, + "line": 553, "character": 2 } ], "type": { "type": "reference", - "id": 482, + "id": 538, "name": "GenerateLinkType" } } @@ -9295,13 +13085,13 @@ { "title": "Properties", "kind": 1024, - "children": [477, 478, 479, 480, 481] + "children": [533, 534, 535, 536, 537] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 466, + "line": 535, "character": 37 } ] @@ -9309,7 +13099,7 @@ } }, { - "id": 462, + "id": 518, "name": "GenerateLinkResponse", "kind": 4194304, "kindString": "Type alias", @@ -9317,7 +13107,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 449, + "line": 518, "character": 12 } ], @@ -9327,14 +13117,14 @@ { "type": "reflection", "declaration": { - "id": 463, + "id": 519, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 464, + "id": 520, "name": "data", "kind": 1024, "kindString": "Property", @@ -9342,21 +13132,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 451, + "line": 520, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 465, + "id": 521, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 466, + "id": 522, "name": "properties", "kind": 1024, "kindString": "Property", @@ -9364,18 +13154,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 452, + "line": 521, "character": 8 } ], "type": { "type": "reference", - "id": 475, + "id": 531, "name": "GenerateLinkProperties" } }, { - "id": 467, + "id": 523, "name": "user", "kind": 1024, "kindString": "Property", @@ -9383,13 +13173,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 453, + "line": 522, "character": 8 } ], "type": { "type": "reference", - "id": 317, + "id": 368, "name": "User" } } @@ -9398,13 +13188,13 @@ { "title": "Properties", "kind": 1024, - "children": [466, 467] + "children": [522, 523] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 451, + "line": 520, "character": 12 } ] @@ -9412,7 +13202,7 @@ } }, { - "id": 468, + "id": 524, "name": "error", "kind": 1024, "kindString": "Property", @@ -9420,7 +13210,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 455, + "line": 524, "character": 6 } ], @@ -9434,13 +13224,13 @@ { "title": "Properties", "kind": 1024, - "children": [464, 468] + "children": [520, 524] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 450, + "line": 519, "character": 4 } ] @@ -9449,14 +13239,14 @@ { "type": "reflection", "declaration": { - "id": 469, + "id": 525, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 470, + "id": 526, "name": "data", "kind": 1024, "kindString": "Property", @@ -9464,21 +13254,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 458, + "line": 527, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 471, + "id": 527, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 472, + "id": 528, "name": "properties", "kind": 1024, "kindString": "Property", @@ -9486,7 +13276,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 459, + "line": 528, "character": 8 } ], @@ -9496,7 +13286,7 @@ } }, { - "id": 473, + "id": 529, "name": "user", "kind": 1024, "kindString": "Property", @@ -9504,7 +13294,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 460, + "line": 529, "character": 8 } ], @@ -9518,13 +13308,13 @@ { "title": "Properties", "kind": 1024, - "children": [472, 473] + "children": [528, 529] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 458, + "line": 527, "character": 12 } ] @@ -9532,7 +13322,7 @@ } }, { - "id": 474, + "id": 530, "name": "error", "kind": 1024, "kindString": "Property", @@ -9540,13 +13330,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 462, + "line": 531, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -9555,13 +13345,13 @@ { "title": "Properties", "kind": 1024, - "children": [470, 474] + "children": [526, 530] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 457, + "line": 526, "character": 4 } ] @@ -9571,7 +13361,7 @@ } }, { - "id": 482, + "id": 538, "name": "GenerateLinkType", "kind": 4194304, "kindString": "Type alias", @@ -9579,7 +13369,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 487, + "line": 556, "character": 12 } ], @@ -9614,7 +13404,7 @@ } }, { - "id": 447, + "id": 503, "name": "GenerateRecoveryLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -9622,21 +13412,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 414, + "line": 483, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 448, + "id": 504, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 450, + "id": 506, "name": "email", "kind": 1024, "kindString": "Property", @@ -9647,7 +13437,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 417, + "line": 486, "character": 2 } ], @@ -9657,7 +13447,7 @@ } }, { - "id": 451, + "id": 507, "name": "options", "kind": 1024, "kindString": "Property", @@ -9667,7 +13457,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 418, + "line": 487, "character": 2 } ], @@ -9676,7 +13466,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -9690,7 +13480,7 @@ } }, { - "id": 449, + "id": 505, "name": "type", "kind": 1024, "kindString": "Property", @@ -9698,7 +13488,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 415, + "line": 484, "character": 2 } ], @@ -9712,13 +13502,13 @@ { "title": "Properties", "kind": 1024, - "children": [450, 451, 449] + "children": [506, 507, 505] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 414, + "line": 483, "character": 41 } ] @@ -9726,7 +13516,7 @@ } }, { - "id": 436, + "id": 492, "name": "GenerateSignupLinkParams", "kind": 4194304, "kindString": "Type alias", @@ -9734,21 +13524,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 400, + "line": 469, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 437, + "id": 493, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 439, + "id": 495, "name": "email", "kind": 1024, "kindString": "Property", @@ -9756,7 +13546,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 402, + "line": 471, "character": 2 } ], @@ -9766,7 +13556,7 @@ } }, { - "id": 441, + "id": 497, "name": "options", "kind": 1024, "kindString": "Property", @@ -9776,7 +13566,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 404, + "line": 473, "character": 2 } ], @@ -9785,7 +13575,7 @@ "typeArguments": [ { "type": "reference", - "id": 458, + "id": 514, "name": "GenerateLinkOptions" }, { @@ -9808,7 +13598,7 @@ } }, { - "id": 440, + "id": 496, "name": "password", "kind": 1024, "kindString": "Property", @@ -9816,7 +13606,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 403, + "line": 472, "character": 2 } ], @@ -9826,7 +13616,7 @@ } }, { - "id": 438, + "id": 494, "name": "type", "kind": 1024, "kindString": "Property", @@ -9834,7 +13624,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 401, + "line": 470, "character": 2 } ], @@ -9848,13 +13638,13 @@ { "title": "Properties", "kind": 1024, - "children": [439, 441, 440, 438] + "children": [495, 497, 496, 494] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 400, + "line": 469, "character": 39 } ] @@ -9862,7 +13652,7 @@ } }, { - "id": 240, + "id": 281, "name": "GoTrueClientOptions", "kind": 4194304, "kindString": "Type alias", @@ -9870,67 +13660,27 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 241, + "id": 282, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 249, + "id": 290, "name": "autoRefreshToken", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 41, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 248, - "name": "detectSessionInUrl", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 39, - "character": 2 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 252, - "name": "fetch", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, "sources": [ { "fileName": "src/lib/types.ts", @@ -9938,13 +13688,53 @@ "character": 2 } ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 289, + "name": "detectSessionInUrl", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 45, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 293, + "name": "fetch", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 53, + "character": 2 + } + ], "type": { "type": "reference", "name": "Fetch" } }, { - "id": 243, + "id": 284, "name": "headers", "kind": 1024, "kindString": "Property", @@ -9954,14 +13744,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 244, + "id": 285, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -9969,19 +13759,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 35, + "line": 41, "character": 12 } ], "indexSignature": { - "id": 245, + "id": 286, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 246, + "id": 287, "name": "key", "kind": 32768, "flags": {}, @@ -10000,13 +13790,54 @@ } }, { - "id": 250, + "id": 291, "name": "persistSession", "kind": 1024, "kindString": "Property", "flags": { "isOptional": true }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 49, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + }, + { + "id": 292, + "name": "storage", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 51, + "character": 2 + } + ], + "type": { + "type": "reference", + "id": 680, + "name": "SupportedStorage" + } + }, + { + "id": 288, + "name": "storageKey", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, "sources": [ { "fileName": "src/lib/types.ts", @@ -10014,54 +13845,13 @@ "character": 2 } ], - "type": { - "type": "intrinsic", - "name": "boolean" - } - }, - { - "id": 251, - "name": "storage", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 45, - "character": 2 - } - ], - "type": { - "type": "reference", - "id": 483, - "name": "SupportedStorage" - } - }, - { - "id": 247, - "name": "storageKey", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 37, - "character": 2 - } - ], "type": { "type": "intrinsic", "name": "string" } }, { - "id": 242, + "id": 283, "name": "url", "kind": 1024, "kindString": "Property", @@ -10071,7 +13861,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 33, + "line": 39, "character": 2 } ], @@ -10085,13 +13875,13 @@ { "title": "Properties", "kind": 1024, - "children": [249, 248, 252, 243, 250, 251, 247, 242] + "children": [290, 289, 293, 284, 291, 292, 288, 283] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 31, + "line": 37, "character": 34 } ] @@ -10099,7 +13889,7 @@ } }, { - "id": 484, + "id": 681, "name": "InitializeResult", "kind": 4194304, "kindString": "Type alias", @@ -10107,21 +13897,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 485, + "id": 682, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 486, + "id": 683, "name": "error", "kind": 1024, "kindString": "Property", @@ -10129,7 +13919,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 33 } ], @@ -10138,7 +13928,7 @@ "types": [ { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" }, { @@ -10153,13 +13943,13 @@ { "title": "Properties", "kind": 1024, - "children": [486] + "children": [683] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 506, + "line": 931, "character": 31 } ] @@ -10167,7 +13957,452 @@ } }, { - "id": 434, + "id": 555, + "name": "MFAChallengeAndVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 556, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 558, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 610, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 557, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 608, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [558, 557] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 606, + "character": 42 + } + ] + } + } + }, + { + "id": 552, + "name": "MFAChallengeParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 553, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 554, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor to be challenged." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 600, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [554] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 598, + "character": 33 + } + ] + } + } + }, + { + "id": 539, + "name": "MFAEnrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 540, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 541, + "name": "factorType", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 568, + "character": 2 + } + ], + "type": { + "type": "literal", + "value": "totp" + } + }, + { + "id": 543, + "name": "friendlyName", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 570, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 542, + "name": "issuer", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 569, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [541, 543, 542] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 567, + "character": 30 + } + ] + } + } + }, + { + "id": 544, + "name": "MFAUnenrollParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 545, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 546, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being unenrolled." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 578, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [546] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 576, + "character": 32 + } + ] + } + } + }, + { + "id": 547, + "name": "MFAVerifyParams", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, + "comment": { + "tags": [ + { + "tag": "experimental", + "text": "\n" + } + ] + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 12 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 548, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 550, + "name": "challengeId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the challenge being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 589, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 551, + "name": "code", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "Verification code provided by the user." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 592, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 549, + "name": "factorId", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "ID of the factor being verified." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 586, + "character": 2 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [550, 551, 549] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 584, + "character": 30 + } + ] + } + } + }, + { + "id": 490, "name": "MobileOtpType", "kind": 4194304, "kindString": "Type alias", @@ -10175,7 +14410,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 397, + "line": 466, "character": 12 } ], @@ -10194,7 +14429,7 @@ } }, { - "id": 266, + "id": 307, "name": "OAuthResponse", "kind": 4194304, "kindString": "Type alias", @@ -10202,7 +14437,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 66, + "line": 72, "character": 12 } ], @@ -10212,14 +14447,14 @@ { "type": "reflection", "declaration": { - "id": 267, + "id": 308, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 268, + "id": 309, "name": "data", "kind": 1024, "kindString": "Property", @@ -10227,21 +14462,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 68, + "line": 74, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 269, + "id": 310, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 270, + "id": 311, "name": "provider", "kind": 1024, "kindString": "Property", @@ -10249,18 +14484,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 69, + "line": 75, "character": 8 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } }, { - "id": 271, + "id": 312, "name": "url", "kind": 1024, "kindString": "Property", @@ -10268,7 +14503,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 70, + "line": 76, "character": 8 } ], @@ -10282,13 +14517,13 @@ { "title": "Properties", "kind": 1024, - "children": [270, 271] + "children": [311, 312] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 68, + "line": 74, "character": 12 } ] @@ -10296,7 +14531,7 @@ } }, { - "id": 272, + "id": 313, "name": "error", "kind": 1024, "kindString": "Property", @@ -10304,7 +14539,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 72, + "line": 78, "character": 6 } ], @@ -10318,13 +14553,13 @@ { "title": "Properties", "kind": 1024, - "children": [268, 272] + "children": [309, 313] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 67, + "line": 73, "character": 4 } ] @@ -10333,14 +14568,14 @@ { "type": "reflection", "declaration": { - "id": 273, + "id": 314, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 274, + "id": 315, "name": "data", "kind": 1024, "kindString": "Property", @@ -10348,21 +14583,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 75, + "line": 81, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 275, + "id": 316, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 276, + "id": 317, "name": "provider", "kind": 1024, "kindString": "Property", @@ -10370,18 +14605,18 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 76, + "line": 82, "character": 8 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } }, { - "id": 277, + "id": 318, "name": "url", "kind": 1024, "kindString": "Property", @@ -10389,7 +14624,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 77, + "line": 83, "character": 8 } ], @@ -10403,13 +14638,13 @@ { "title": "Properties", "kind": 1024, - "children": [276, 277] + "children": [317, 318] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 75, + "line": 81, "character": 12 } ] @@ -10417,7 +14652,7 @@ } }, { - "id": 278, + "id": 319, "name": "error", "kind": 1024, "kindString": "Property", @@ -10425,13 +14660,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 79, + "line": 85, "character": 6 } ], "type": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -10440,13 +14675,13 @@ { "title": "Properties", "kind": 1024, - "children": [274, 278] + "children": [315, 319] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 74, + "line": 80, "character": 4 } ] @@ -10456,7 +14691,7 @@ } }, { - "id": 238, + "id": 278, "name": "Provider", "kind": 4194304, "kindString": "Type alias", @@ -10542,7 +14777,7 @@ } }, { - "id": 406, + "id": 462, "name": "SignInWithOAuthCredentials", "kind": 4194304, "kindString": "Type alias", @@ -10550,21 +14785,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 12 } ], "type": { "type": "reflection", "declaration": { - "id": 407, + "id": 463, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 409, + "id": 465, "name": "options", "kind": 1024, "kindString": "Property", @@ -10574,21 +14809,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 2 } ], "type": { "type": "reflection", "declaration": { - "id": 410, + "id": 466, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 413, + "id": 469, "name": "queryParams", "kind": 1024, "kindString": "Property", @@ -10601,14 +14836,14 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 4 } ], "type": { "type": "reflection", "declaration": { - "id": 414, + "id": 470, "name": "__type", "kind": 65536, "kindString": "Type literal", @@ -10616,19 +14851,19 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 363, + "line": 432, "character": 18 } ], "indexSignature": { - "id": 415, + "id": 471, "name": "__index", "kind": 8192, "kindString": "Index signature", "flags": {}, "parameters": [ { - "id": 416, + "id": 472, "name": "key", "kind": 32768, "flags": {}, @@ -10647,7 +14882,7 @@ } }, { - "id": 411, + "id": 467, "name": "redirectTo", "kind": 1024, "kindString": "Property", @@ -10660,7 +14895,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 359, + "line": 428, "character": 4 } ], @@ -10670,7 +14905,7 @@ } }, { - "id": 412, + "id": 468, "name": "scopes", "kind": 1024, "kindString": "Property", @@ -10683,7 +14918,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 361, + "line": 430, "character": 4 } ], @@ -10697,13 +14932,13 @@ { "title": "Properties", "kind": 1024, - "children": [413, 411, 412] + "children": [469, 467, 468] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 357, + "line": 426, "character": 12 } ] @@ -10711,7 +14946,7 @@ } }, { - "id": 408, + "id": 464, "name": "provider", "kind": 1024, "kindString": "Property", @@ -10722,13 +14957,13 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 356, + "line": 425, "character": 2 } ], "type": { "type": "reference", - "id": 238, + "id": 278, "name": "Provider" } } @@ -10737,13 +14972,13 @@ { "title": "Properties", "kind": 1024, - "children": [409, 408] + "children": [465, 464] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 354, + "line": 423, "character": 41 } ] @@ -10751,7 +14986,7 @@ } }, { - "id": 377, + "id": 431, "name": "SignInWithPasswordCredentials", "kind": 4194304, "kindString": "Type alias", @@ -10759,7 +14994,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 296, + "line": 353, "character": 12 } ], @@ -10769,14 +15004,14 @@ { "type": "reflection", "declaration": { - "id": 378, + "id": 432, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 379, + "id": 433, "name": "email", "kind": 1024, "kindString": "Property", @@ -10787,7 +15022,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 299, + "line": 356, "character": 6 } ], @@ -10797,7 +15032,7 @@ } }, { - "id": 381, + "id": 435, "name": "options", "kind": 1024, "kindString": "Property", @@ -10807,21 +15042,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 302, + "line": 359, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 382, + "id": 436, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 383, + "id": 438, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -10834,7 +15069,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 304, + "line": 367, "character": 8 } ], @@ -10842,19 +15077,43 @@ "type": "intrinsic", "name": "string" } + }, + { + "id": 437, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 365, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [383] + "children": [438, 437] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 302, + "line": 359, "character": 16 } ] @@ -10862,7 +15121,7 @@ } }, { - "id": 380, + "id": 434, "name": "password", "kind": 1024, "kindString": "Property", @@ -10873,7 +15132,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 301, + "line": 358, "character": 6 } ], @@ -10887,13 +15146,13 @@ { "title": "Properties", "kind": 1024, - "children": [379, 381, 380] + "children": [433, 435, 434] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 297, + "line": 354, "character": 4 } ] @@ -10902,14 +15161,14 @@ { "type": "reflection", "declaration": { - "id": 384, + "id": 439, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 387, + "id": 442, "name": "options", "kind": 1024, "kindString": "Property", @@ -10919,21 +15178,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 312, + "line": 375, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 388, + "id": 443, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 389, + "id": 445, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -10946,7 +15205,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 314, + "line": 383, "character": 8 } ], @@ -10954,19 +15213,43 @@ "type": "intrinsic", "name": "string" } + }, + { + "id": 444, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 381, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [389] + "children": [445, 444] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 312, + "line": 375, "character": 16 } ] @@ -10974,7 +15257,7 @@ } }, { - "id": 386, + "id": 441, "name": "password", "kind": 1024, "kindString": "Property", @@ -10985,7 +15268,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 311, + "line": 374, "character": 6 } ], @@ -10995,7 +15278,7 @@ } }, { - "id": 385, + "id": 440, "name": "phone", "kind": 1024, "kindString": "Property", @@ -11006,7 +15289,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 309, + "line": 372, "character": 6 } ], @@ -11020,13 +15303,13 @@ { "title": "Properties", "kind": 1024, - "children": [387, 386, 385] + "children": [442, 441, 440] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 307, + "line": 370, "character": 4 } ] @@ -11036,11 +15319,371 @@ } }, { - "id": 390, + "id": 446, "name": "SignInWithPasswordlessCredentials", "kind": 4194304, "kindString": "Type alias", "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 387, + "character": 12 + } + ], + "type": { + "type": "union", + "types": [ + { + "type": "reflection", + "declaration": { + "id": 447, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 448, + "name": "email", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's email address." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 390, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 449, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 450, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 454, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 403, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 453, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 401, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 451, + "name": "emailRedirectTo", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "The redirect url embedded in the email link" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 393, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 452, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 395, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [454, 453, 451, 452] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 391, + "character": 16 + } + ] + } + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [448, 449] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 388, + "character": 4 + } + ] + } + }, + { + "type": "reflection", + "declaration": { + "id": 455, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 457, + "name": "options", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 458, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 461, + "name": "captchaToken", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "Verification token received when the user completes the captcha on the site." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 419, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 460, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", + "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 417, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "object" + } + }, + { + "id": 459, + "name": "shouldCreateUser", + "kind": 1024, + "kindString": "Property", + "flags": { + "isOptional": true + }, + "comment": { + "shortText": "If set to false, this method will not create a new user. Defaults to true." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 411, + "character": 8 + } + ], + "type": { + "type": "intrinsic", + "name": "boolean" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [461, 460, 459] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 409, + "character": 16 + } + ] + } + } + }, + { + "id": 456, + "name": "phone", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's phone number." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 408, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [457, 456] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 406, + "character": 4 + } + ] + } + } + ] + } + }, + { + "id": 415, + "name": "SignUpWithPasswordCredentials", + "kind": 4194304, + "kindString": "Type alias", + "flags": {}, "sources": [ { "fileName": "src/lib/types.ts", @@ -11054,14 +15697,14 @@ { "type": "reflection", "declaration": { - "id": 391, + "id": 416, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 392, + "id": 417, "name": "email", "kind": 1024, "kindString": "Property", @@ -11082,7 +15725,7 @@ } }, { - "id": 393, + "id": 419, "name": "options", "kind": 1024, "kindString": "Property", @@ -11092,21 +15735,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 394, + "id": 420, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 398, + "id": 423, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -11129,7 +15772,7 @@ } }, { - "id": 397, + "id": 422, "name": "data", "kind": 1024, "kindString": "Property", @@ -11153,7 +15796,7 @@ } }, { - "id": 395, + "id": 421, "name": "emailRedirectTo", "kind": 1024, "kindString": "Property", @@ -11166,7 +15809,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 324, + "line": 326, "character": 8 } ], @@ -11174,54 +15817,52 @@ "type": "intrinsic", "name": "string" } - }, - { - "id": 396, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 326, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [398, 397, 395, 396] + "children": [423, 422, 421] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 322, + "line": 324, "character": 16 } ] } } + }, + { + "id": 418, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 323, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [392, 393] + "children": [417, 419, 418] } ], "sources": [ @@ -11236,14 +15877,14 @@ { "type": "reflection", "declaration": { - "id": 399, + "id": 424, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 401, + "id": 427, "name": "options", "kind": 1024, "kindString": "Property", @@ -11253,21 +15894,21 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 6 } ], "type": { "type": "reflection", "declaration": { - "id": 402, + "id": 428, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 405, + "id": 430, "name": "captchaToken", "kind": 1024, "kindString": "Property", @@ -11290,7 +15931,7 @@ } }, { - "id": 404, + "id": 429, "name": "data", "kind": 1024, "kindString": "Property", @@ -11312,42 +15953,19 @@ "type": "intrinsic", "name": "object" } - }, - { - "id": 403, - "name": "shouldCreateUser", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "If set to false, this method will not create a new user. Defaults to true." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 342, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "boolean" - } } ], "groups": [ { "title": "Properties", "kind": 1024, - "children": [405, 404, 403] + "children": [430, 429] } ], "sources": [ { "fileName": "src/lib/types.ts", - "line": 340, + "line": 342, "character": 16 } ] @@ -11355,7 +15973,28 @@ } }, { - "id": 400, + "id": 426, + "name": "password", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "comment": { + "shortText": "The user's password." + }, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 341, + "character": 6 + } + ], + "type": { + "type": "intrinsic", + "name": "string" + } + }, + { + "id": 425, "name": "phone", "kind": 1024, "kindString": "Property", @@ -11380,7 +16019,7 @@ { "title": "Properties", "kind": 1024, - "children": [401, 400] + "children": [427, 426, 425] } ], "sources": [ @@ -11396,363 +16035,7 @@ } }, { - "id": 361, - "name": "SignUpWithPasswordCredentials", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 261, - "character": 12 - } - ], - "type": { - "type": "union", - "types": [ - { - "type": "reflection", - "declaration": { - "id": 362, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 363, - "name": "email", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's email address." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 264, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 365, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 366, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 369, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 277, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 368, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 275, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - }, - { - "id": 367, - "name": "emailRedirectTo", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "The redirect url embedded in the email link" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 269, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [369, 368, 367] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 267, - "character": 16 - } - ] - } - } - }, - { - "id": 364, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 266, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [363, 365, 364] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 262, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 370, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 373, - "name": "options", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 374, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 376, - "name": "captchaToken", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "Verification token received when the user completes the captcha on the site." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 293, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 375, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": { - "isOptional": true - }, - "comment": { - "shortText": "A custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column.", - "text": "The `data` should be a JSON object that includes user-specific info, such as their first and last name.\n" - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 291, - "character": 8 - } - ], - "type": { - "type": "intrinsic", - "name": "object" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [376, 375] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 285, - "character": 16 - } - ] - } - } - }, - { - "id": 372, - "name": "password", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's password." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 284, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - }, - { - "id": 371, - "name": "phone", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "comment": { - "shortText": "The user's phone number." - }, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 282, - "character": 6 - } - ], - "type": { - "type": "intrinsic", - "name": "string" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [373, 372, 371] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 280, - "character": 4 - } - ] - } - } - ] - } - }, - { - "id": 483, + "id": 680, "name": "SupportedStorage", "kind": 4194304, "kindString": "Type alias", @@ -11760,7 +16043,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 504, + "line": 929, "character": 12 } ], @@ -11803,7 +16086,7 @@ } }, { - "id": 279, + "id": 320, "name": "UserResponse", "kind": 4194304, "kindString": "Type alias", @@ -11811,7 +16094,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 82, + "line": 88, "character": 12 } ], @@ -11821,117 +16104,14 @@ { "type": "reflection", "declaration": { - "id": 280, + "id": 321, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 281, - "name": "data", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 84, - "character": 6 - } - ], - "type": { - "type": "reflection", - "declaration": { - "id": 282, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 283, - "name": "user", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 85, - "character": 8 - } - ], - "type": { - "type": "reference", - "id": 317, - "name": "User" - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [283] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 84, - "character": 12 - } - ] - } - } - }, - { - "id": 284, - "name": "error", - "kind": 1024, - "kindString": "Property", - "flags": {}, - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 87, - "character": 6 - } - ], - "type": { - "type": "literal", - "value": null - } - } - ], - "groups": [ - { - "title": "Properties", - "kind": 1024, - "children": [281, 284] - } - ], - "sources": [ - { - "fileName": "src/lib/types.ts", - "line": 83, - "character": 4 - } - ] - } - }, - { - "type": "reflection", - "declaration": { - "id": 285, - "name": "__type", - "kind": 65536, - "kindString": "Type literal", - "flags": {}, - "children": [ - { - "id": 286, + "id": 322, "name": "data", "kind": 1024, "kindString": "Property", @@ -11946,14 +16126,14 @@ "type": { "type": "reflection", "declaration": { - "id": 287, + "id": 323, "name": "__type", "kind": 65536, "kindString": "Type literal", "flags": {}, "children": [ { - "id": 288, + "id": 324, "name": "user", "kind": 1024, "kindString": "Property", @@ -11966,8 +16146,9 @@ } ], "type": { - "type": "literal", - "value": null + "type": "reference", + "id": 368, + "name": "User" } } ], @@ -11975,7 +16156,7 @@ { "title": "Properties", "kind": 1024, - "children": [288] + "children": [324] } ], "sources": [ @@ -11989,7 +16170,7 @@ } }, { - "id": 289, + "id": 325, "name": "error", "kind": 1024, "kindString": "Property", @@ -12002,9 +16183,8 @@ } ], "type": { - "type": "reference", - "id": 497, - "name": "AuthError" + "type": "literal", + "value": null } } ], @@ -12012,7 +16192,7 @@ { "title": "Properties", "kind": 1024, - "children": [286, 289] + "children": [322, 325] } ], "sources": [ @@ -12023,12 +16203,115 @@ } ] } + }, + { + "type": "reflection", + "declaration": { + "id": 326, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 327, + "name": "data", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 6 + } + ], + "type": { + "type": "reflection", + "declaration": { + "id": 328, + "name": "__type", + "kind": 65536, + "kindString": "Type literal", + "flags": {}, + "children": [ + { + "id": 329, + "name": "user", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 97, + "character": 8 + } + ], + "type": { + "type": "literal", + "value": null + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [329] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 96, + "character": 12 + } + ] + } + } + }, + { + "id": 330, + "name": "error", + "kind": 1024, + "kindString": "Property", + "flags": {}, + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 99, + "character": 6 + } + ], + "type": { + "type": "reference", + "id": 694, + "name": "AuthError" + } + } + ], + "groups": [ + { + "title": "Properties", + "kind": 1024, + "children": [327, 330] + } + ], + "sources": [ + { + "fileName": "src/lib/types.ts", + "line": 95, + "character": 4 + } + ] + } } ] } }, { - "id": 417, + "id": 473, "name": "VerifyOtpParams", "kind": 4194304, "kindString": "Type alias", @@ -12036,7 +16319,7 @@ "sources": [ { "fileName": "src/lib/types.ts", - "line": 367, + "line": 436, "character": 12 } ], @@ -12045,19 +16328,19 @@ "types": [ { "type": "reference", - "id": 418, + "id": 474, "name": "VerifyMobileOtpParams" }, { "type": "reference", - "id": 426, + "id": 482, "name": "VerifyEmailOtpParams" } ] } }, { - "id": 494, + "id": 691, "name": "isAuthError", "kind": 64, "kindString": "Function", @@ -12071,14 +16354,14 @@ ], "signatures": [ { - "id": 495, + "id": 692, "name": "isAuthError", "kind": 4096, "kindString": "Call signature", "flags": {}, "parameters": [ { - "id": 496, + "id": 693, "name": "error", "kind": 32768, "kindString": "Parameter", @@ -12095,7 +16378,7 @@ "asserts": false, "targetType": { "type": "reference", - "id": 497, + "id": 694, "name": "AuthError" } } @@ -12107,25 +16390,26 @@ { "title": "Classes", "kind": 128, - "children": [502, 497, 562, 549, 587, 537, 515, 522, 1, 66] + "children": [699, 694, 759, 746, 784, 734, 712, 719, 1, 74] }, { "title": "Interfaces", "kind": 256, - "children": [343, 458, 290, 353, 317, 310, 338, 299, 314, 426, 418] + "children": [340, 395, 354, 514, 673, 628, 331, 405, 413, 368, 361, 390, 343, 365, 482, 474] }, { "title": "Type Aliases", "kind": 4194304, "children": [ - 239, 253, 487, 435, 452, 442, 461, 475, 462, 482, 447, 436, 240, 484, 434, 266, 238, 406, - 377, 390, 361, 483, 279, 417 + 280, 279, 657, 648, 670, 661, 596, 572, 617, 606, 587, 559, 294, 616, 684, 491, 508, 498, + 517, 531, 518, 538, 503, 492, 281, 681, 555, 552, 539, 544, 547, 490, 307, 278, 462, 431, + 446, 415, 680, 320, 473 ] }, { "title": "Functions", "kind": 64, - "children": [494] + "children": [691] } ], "sources": [ diff --git a/spec/enrichments/tsdoc_v2/postgrest.json b/spec/enrichments/tsdoc_v2/postgrest.json index dd02fdd3c9b..2938ac1634e 100644 --- a/spec/enrichments/tsdoc_v2/postgrest.json +++ b/spec/enrichments/tsdoc_v2/postgrest.json @@ -26,7 +26,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -94,7 +94,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -116,7 +116,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -137,7 +137,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -235,7 +235,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -268,7 +268,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -311,7 +311,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -332,7 +332,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -355,7 +355,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -378,7 +378,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -399,7 +399,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -470,7 +470,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -559,7 +559,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -658,7 +658,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -717,7 +717,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -785,7 +785,7 @@ "fileName": "src/PostgrestClient.ts", "line": 41, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L41" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L41" } ], "signatures": [ @@ -968,7 +968,7 @@ "fileName": "src/PostgrestClient.ts", "line": 50, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L50" } ], "type": { @@ -1082,7 +1082,7 @@ "fileName": "src/PostgrestClient.ts", "line": 48, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L48" } ], "type": { @@ -1123,7 +1123,7 @@ "fileName": "src/PostgrestClient.ts", "line": 49, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L49" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L49" } ], "type": { @@ -1144,7 +1144,7 @@ "fileName": "src/PostgrestClient.ts", "line": 47, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L47" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L47" } ] } @@ -1190,7 +1190,7 @@ "fileName": "src/PostgrestClient.ts", "line": 29, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L29" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L29" } ], "type": { @@ -1286,7 +1286,7 @@ "fileName": "src/PostgrestClient.ts", "line": 27, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L27" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L27" } ], "type": { @@ -1319,7 +1319,7 @@ "fileName": "src/PostgrestClient.ts", "line": 28, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L28" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L28" } ], "type": { @@ -1339,7 +1339,7 @@ "fileName": "src/PostgrestClient.ts", "line": 26, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L26" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L26" } ], "type": { @@ -1358,25 +1358,25 @@ "fileName": "src/PostgrestClient.ts", "line": 64, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L64" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L64" }, { "fileName": "src/PostgrestClient.ts", "line": 68, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L68" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L68" }, { "fileName": "src/PostgrestClient.ts", "line": 71, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L71" }, { "fileName": "src/PostgrestClient.ts", "line": 72, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L72" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L72" } ], "signatures": [ @@ -1569,7 +1569,7 @@ "fileName": "src/PostgrestClient.ts", "line": 102, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L102" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L102" } ], "signatures": [ @@ -1737,7 +1737,7 @@ "fileName": "src/PostgrestClient.ts", "line": 113, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L113" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L113" } ], "type": { @@ -1795,7 +1795,7 @@ "fileName": "src/PostgrestClient.ts", "line": 112, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L112" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L112" } ], "type": { @@ -1815,7 +1815,7 @@ "fileName": "src/PostgrestClient.ts", "line": 111, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L111" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L111" } ] } @@ -1948,7 +1948,7 @@ "fileName": "src/PostgrestClient.ts", "line": 17, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L17" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L17" } ], "typeParameters": [ @@ -2118,7 +2118,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -2240,7 +2240,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -2267,7 +2267,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -2293,7 +2293,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -2396,7 +2396,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -2434,7 +2434,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -2482,7 +2482,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -2508,7 +2508,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -2536,7 +2536,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -2564,7 +2564,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -2590,7 +2590,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 130, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L130" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L130" } ], "signatures": [ @@ -2677,19 +2677,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 216, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L216" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L216" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 220, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L220" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L220" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 221, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L221" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L221" } ], "signatures": [ @@ -2931,19 +2931,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 189, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L189" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L189" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 193, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L193" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L193" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 194, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L194" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L194" } ], "signatures": [ @@ -3185,7 +3185,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 161, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L161" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L161" } ], "signatures": [ @@ -3254,19 +3254,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 41, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L41" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L41" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 42, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L42" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L42" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L43" } ], "signatures": [ @@ -3468,7 +3468,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 195, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L195" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L195" } ], "signatures": [ @@ -3548,7 +3548,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 203, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L203" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L203" } ], "type": { @@ -3585,7 +3585,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 206, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L206" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L206" } ], "type": { @@ -3626,7 +3626,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 208, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L208" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L208" } ], "type": { @@ -3672,7 +3672,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 205, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L205" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L205" } ], "type": { @@ -3717,7 +3717,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 204, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L204" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L204" } ], "type": { @@ -3754,7 +3754,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 207, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L207" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L207" } ], "type": { @@ -3774,7 +3774,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 202, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L202" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L202" } ] } @@ -3861,19 +3861,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 441, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L441" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L441" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 446, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L446" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L446" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 447, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L447" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L447" } ], "signatures": [ @@ -4173,7 +4173,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L169" } ], "signatures": [ @@ -4254,19 +4254,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 67, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L67" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 68, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L68" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L68" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L69" } ], "signatures": [ @@ -4452,19 +4452,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 80, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L80" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L80" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 81, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L81" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L81" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 82, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L82" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L82" } ], "signatures": [ @@ -4650,19 +4650,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 132, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L132" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L132" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 133, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L133" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L133" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 134, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L134" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L134" } ], "signatures": [ @@ -4839,19 +4839,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 167, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L167" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L167" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 168, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L168" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L168" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L169" } ], "signatures": [ @@ -5043,19 +5043,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 151, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L151" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L151" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 155, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L155" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L155" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 156, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L156" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L156" } ], "signatures": [ @@ -5297,19 +5297,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 119, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L119" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L119" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 120, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L120" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L120" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 121, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L121" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L121" } ], "signatures": [ @@ -5486,7 +5486,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "signatures": [ @@ -5577,7 +5577,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 43, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "type": { @@ -5597,7 +5597,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 41, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ] } @@ -5651,19 +5651,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 93, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L93" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L93" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 94, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L94" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L94" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 95, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L95" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L95" } ], "signatures": [ @@ -5849,19 +5849,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 106, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L106" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L106" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 107, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L107" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L107" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 108, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L108" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L108" } ], "signatures": [ @@ -6047,19 +6047,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 376, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L376" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L376" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 377, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L377" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L377" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 378, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L378" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L378" } ], "signatures": [ @@ -6239,7 +6239,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 152, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L152" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L152" } ], "signatures": [ @@ -6317,19 +6317,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 54, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L54" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L54" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 55, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L55" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L55" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 56, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L56" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L56" } ], "signatures": [ @@ -6515,19 +6515,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 398, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L398" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L398" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 403, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L403" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L403" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 404, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L404" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L404" } ], "signatures": [ @@ -6743,7 +6743,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ], "signatures": [ @@ -6834,7 +6834,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 42, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ], "type": { @@ -6854,7 +6854,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 40, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ] } @@ -6898,19 +6898,19 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 65, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L65" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L69" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 73, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L73" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L73" } ], "signatures": [ @@ -7024,7 +7024,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -7053,7 +7053,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -7114,7 +7114,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -7134,7 +7134,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ] } @@ -7217,7 +7217,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -7236,7 +7236,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -7257,7 +7257,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -7277,7 +7277,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ] } @@ -7330,19 +7330,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 315, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L315" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L315" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 319, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L319" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L319" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 320, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L320" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L320" } ], "signatures": [ @@ -7552,7 +7552,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "signatures": [ @@ -7670,7 +7670,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 54, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "type": { @@ -7690,7 +7690,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 52, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ] } @@ -7744,19 +7744,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 301, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L301" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L301" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 302, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L302" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L302" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 303, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L303" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L303" } ], "signatures": [ @@ -7933,19 +7933,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 242, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L242" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L242" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 243, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L243" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L243" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 244, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L244" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L244" } ], "signatures": [ @@ -8122,19 +8122,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 257, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L257" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L257" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 258, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L258" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L258" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 259, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L259" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L259" } ], "signatures": [ @@ -8319,19 +8319,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 271, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L271" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L271" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 272, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L272" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L272" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 273, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L273" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L273" } ], "signatures": [ @@ -8508,19 +8508,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 286, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L286" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L286" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 287, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L287" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L287" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 288, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L288" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L288" } ], "signatures": [ @@ -8705,7 +8705,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 249, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L249" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L249" } ], "signatures": [ @@ -8794,7 +8794,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 235, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L235" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L235" } ], "signatures": [ @@ -8866,7 +8866,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 24, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L24" } ], "signatures": [ @@ -9039,7 +9039,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 141, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L141" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L141" } ], "signatures": [ @@ -9117,19 +9117,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 341, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L341" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L341" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 346, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L346" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L346" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 351, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L351" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L351" } ], "signatures": [ @@ -9262,7 +9262,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ], "type": { @@ -9299,7 +9299,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 33, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ], "type": { @@ -9332,7 +9332,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ] } @@ -9421,7 +9421,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ], "type": { @@ -9442,7 +9442,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 33, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ], "type": { @@ -9475,7 +9475,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ] } @@ -9518,7 +9518,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -9589,7 +9589,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -9678,7 +9678,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -9779,7 +9779,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -9862,7 +9862,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 28, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L28" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L28" } ], "typeParameters": [ @@ -9951,7 +9951,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 16, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L16" } ], "signatures": [ @@ -10036,7 +10036,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 25, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L25" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L25" } ], "type": { @@ -10134,7 +10134,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 23, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L23" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L23" } ], "type": { @@ -10167,7 +10167,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 24, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L24" } ], "type": { @@ -10187,7 +10187,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 22, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L22" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L22" } ] } @@ -10227,7 +10227,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 14, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L14" } ], "type": { @@ -10323,7 +10323,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 11, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L11" } ], "type": { @@ -10356,7 +10356,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 12, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L12" } ], "type": { @@ -10377,7 +10377,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 13, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L13" } ], "type": { @@ -10398,7 +10398,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 10, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L10" } ], "type": { @@ -10419,7 +10419,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 299, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L299" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L299" } ], "signatures": [ @@ -10523,7 +10523,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 302, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L302" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L302" } ], "type": { @@ -10556,7 +10556,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 301, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L301" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L301" } ] } @@ -10606,7 +10606,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 120, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L120" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L120" } ], "signatures": [ @@ -10768,7 +10768,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 125, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L125" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L125" } ], "type": { @@ -10801,7 +10801,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 124, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L124" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L124" } ] } @@ -10851,7 +10851,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 55, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L55" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L55" } ], "signatures": [ @@ -11021,7 +11021,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 65, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L65" } ], "type": { @@ -11079,7 +11079,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 64, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L64" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L64" } ], "type": { @@ -11099,7 +11099,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 63, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L63" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L63" } ] } @@ -11150,7 +11150,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 250, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L250" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L250" } ], "signatures": [ @@ -11299,7 +11299,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 255, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L255" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L255" } ], "type": { @@ -11332,7 +11332,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 254, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L254" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L254" } ] } @@ -11382,7 +11382,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 192, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L192" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L192" } ], "signatures": [ @@ -11584,7 +11584,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 201, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L201" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L201" } ], "type": { @@ -11642,7 +11642,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 200, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L200" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L200" } ], "type": { @@ -11679,7 +11679,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 199, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L199" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L199" } ], "type": { @@ -11699,7 +11699,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 198, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L198" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L198" } ] } @@ -11758,7 +11758,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 6, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L6" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L6" } ], "typeParameters": [ @@ -11813,7 +11813,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -11935,7 +11935,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -11962,7 +11962,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -11988,7 +11988,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -12091,7 +12091,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -12129,7 +12129,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -12177,7 +12177,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -12203,7 +12203,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -12231,7 +12231,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -12259,7 +12259,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -12285,7 +12285,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 130, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L130" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L130" } ], "signatures": [ @@ -12362,7 +12362,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 161, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L161" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L161" } ], "signatures": [ @@ -12421,7 +12421,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 195, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L195" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L195" } ], "signatures": [ @@ -12501,7 +12501,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 203, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L203" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L203" } ], "type": { @@ -12538,7 +12538,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 206, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L206" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L206" } ], "type": { @@ -12579,7 +12579,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 208, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L208" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L208" } ], "type": { @@ -12625,7 +12625,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 205, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L205" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L205" } ], "type": { @@ -12670,7 +12670,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 204, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L204" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L204" } ], "type": { @@ -12707,7 +12707,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 207, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L207" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L207" } ], "type": { @@ -12727,7 +12727,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 202, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L202" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L202" } ] } @@ -12804,7 +12804,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L169" } ], "signatures": [ @@ -12875,7 +12875,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "signatures": [ @@ -12966,7 +12966,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 43, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "type": { @@ -12986,7 +12986,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 41, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ] } @@ -13030,7 +13030,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 152, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L152" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L152" } ], "signatures": [ @@ -13098,19 +13098,19 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 65, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L65" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L69" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 73, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L73" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L73" } ], "signatures": [ @@ -13224,7 +13224,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -13253,7 +13253,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -13314,7 +13314,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -13334,7 +13334,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ] } @@ -13412,7 +13412,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -13431,7 +13431,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -13452,7 +13452,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -13472,7 +13472,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ] } @@ -13515,7 +13515,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "signatures": [ @@ -13633,7 +13633,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 54, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "type": { @@ -13653,7 +13653,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 52, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ] } @@ -13697,7 +13697,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 249, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L249" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L249" } ], "signatures": [ @@ -13776,7 +13776,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 235, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L235" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L235" } ], "signatures": [ @@ -13838,7 +13838,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 24, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L24" } ], "signatures": [ @@ -14001,7 +14001,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 141, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L141" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L141" } ], "signatures": [ @@ -14069,7 +14069,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -14140,7 +14140,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -14229,7 +14229,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -14330,7 +14330,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -14409,7 +14409,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 10, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L10" } ], "typeParameters": [ @@ -14502,7 +14502,7 @@ "fileName": "src/types.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L8" } ], "type": { @@ -14525,7 +14525,7 @@ "fileName": "src/types.ts", "line": 12, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L12" } ], "type": { @@ -14544,7 +14544,7 @@ "fileName": "src/types.ts", "line": 10, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L10" } ], "type": { @@ -14563,7 +14563,7 @@ "fileName": "src/types.ts", "line": 11, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L11" } ], "type": { @@ -14582,7 +14582,7 @@ "fileName": "src/types.ts", "line": 9, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L9" } ], "type": { @@ -14602,7 +14602,7 @@ "fileName": "src/types.ts", "line": 8, "character": 29, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L8" } ] } @@ -14619,7 +14619,7 @@ "fileName": "src/types.ts", "line": 45, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L45" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L45" } ], "typeParameters": [ @@ -14664,7 +14664,7 @@ "fileName": "src/types.ts", "line": 35, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L35" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L35" } ], "typeParameters": [ @@ -14708,7 +14708,7 @@ "fileName": "src/types.ts", "line": 42, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L42" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L42" } ], "typeParameters": [ @@ -14757,7 +14757,7 @@ "fileName": "src/index.ts", "line": 1, "character": 0, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/index.ts#L1" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/index.ts#L1" } ] } diff --git a/spec/enrichments/tsdoc_v2/postgrest_dereferenced.json b/spec/enrichments/tsdoc_v2/postgrest_dereferenced.json index da51bd27592..755724aceea 100644 --- a/spec/enrichments/tsdoc_v2/postgrest_dereferenced.json +++ b/spec/enrichments/tsdoc_v2/postgrest_dereferenced.json @@ -26,7 +26,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -91,7 +91,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -164,7 +164,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -186,7 +186,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -207,7 +207,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -305,7 +305,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -338,7 +338,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -381,7 +381,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -402,7 +402,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -425,7 +425,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -448,7 +448,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -469,7 +469,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -540,7 +540,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -629,7 +629,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -728,7 +728,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -787,7 +787,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -855,7 +855,7 @@ "fileName": "src/PostgrestClient.ts", "line": 41, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L41" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L41" } ], "signatures": [ @@ -1038,7 +1038,7 @@ "fileName": "src/PostgrestClient.ts", "line": 50, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L50" } ], "type": { @@ -1152,7 +1152,7 @@ "fileName": "src/PostgrestClient.ts", "line": 48, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L48" } ], "type": { @@ -1193,7 +1193,7 @@ "fileName": "src/PostgrestClient.ts", "line": 49, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L49" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L49" } ], "type": { @@ -1214,7 +1214,7 @@ "fileName": "src/PostgrestClient.ts", "line": 47, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L47" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L47" } ] } @@ -1260,7 +1260,7 @@ "fileName": "src/PostgrestClient.ts", "line": 29, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L29" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L29" } ], "type": { @@ -1356,7 +1356,7 @@ "fileName": "src/PostgrestClient.ts", "line": 27, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L27" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L27" } ], "type": { @@ -1389,7 +1389,7 @@ "fileName": "src/PostgrestClient.ts", "line": 28, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L28" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L28" } ], "type": { @@ -1409,7 +1409,7 @@ "fileName": "src/PostgrestClient.ts", "line": 26, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L26" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L26" } ], "type": { @@ -1428,25 +1428,25 @@ "fileName": "src/PostgrestClient.ts", "line": 64, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L64" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L64" }, { "fileName": "src/PostgrestClient.ts", "line": 68, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L68" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L68" }, { "fileName": "src/PostgrestClient.ts", "line": 71, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L71" }, { "fileName": "src/PostgrestClient.ts", "line": 72, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L72" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L72" } ], "signatures": [ @@ -1641,7 +1641,7 @@ "fileName": "src/PostgrestClient.ts", "line": 102, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L102" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L102" } ], "signatures": [ @@ -1810,7 +1810,7 @@ "fileName": "src/PostgrestClient.ts", "line": 113, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L113" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L113" } ], "type": { @@ -1868,7 +1868,7 @@ "fileName": "src/PostgrestClient.ts", "line": 112, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L112" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L112" } ], "type": { @@ -1888,7 +1888,7 @@ "fileName": "src/PostgrestClient.ts", "line": 111, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L111" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L111" } ] } @@ -2021,7 +2021,7 @@ "fileName": "src/PostgrestClient.ts", "line": 17, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestClient.ts#L17" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestClient.ts#L17" } ], "typeParameters": [ @@ -2191,7 +2191,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -2282,7 +2282,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -2351,7 +2351,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -2373,7 +2373,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -2394,7 +2394,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -2492,7 +2492,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -2525,7 +2525,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -2568,7 +2568,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -2589,7 +2589,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -2612,7 +2612,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -2635,7 +2635,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -2656,7 +2656,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -2727,7 +2727,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -2816,7 +2816,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -2915,7 +2915,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -2974,7 +2974,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -3067,7 +3067,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -3094,7 +3094,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -3120,7 +3120,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -3223,7 +3223,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -3261,7 +3261,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -3309,7 +3309,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -3335,7 +3335,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -3363,7 +3363,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -3391,7 +3391,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -3417,7 +3417,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 130, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L130" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L130" } ], "signatures": [ @@ -3504,19 +3504,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 216, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L216" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L216" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 220, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L220" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L220" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 221, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L221" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L221" } ], "signatures": [ @@ -3759,19 +3759,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 189, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L189" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L189" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 193, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L193" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L193" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 194, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L194" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L194" } ], "signatures": [ @@ -4014,7 +4014,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 161, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L161" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L161" } ], "signatures": [ @@ -4083,19 +4083,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 41, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L41" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L41" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 42, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L42" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L42" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L43" } ], "signatures": [ @@ -4298,7 +4298,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 195, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L195" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L195" } ], "signatures": [ @@ -4378,7 +4378,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 203, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L203" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L203" } ], "type": { @@ -4415,7 +4415,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 206, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L206" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L206" } ], "type": { @@ -4456,7 +4456,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 208, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L208" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L208" } ], "type": { @@ -4502,7 +4502,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 205, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L205" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L205" } ], "type": { @@ -4547,7 +4547,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 204, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L204" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L204" } ], "type": { @@ -4584,7 +4584,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 207, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L207" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L207" } ], "type": { @@ -4604,7 +4604,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 202, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L202" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L202" } ] } @@ -4691,19 +4691,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 441, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L441" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L441" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 446, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L446" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L446" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 447, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L447" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L447" } ], "signatures": [ @@ -5004,7 +5004,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L169" } ], "signatures": [ @@ -5085,19 +5085,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 67, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L67" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 68, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L68" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L68" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L69" } ], "signatures": [ @@ -5284,19 +5284,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 80, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L80" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L80" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 81, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L81" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L81" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 82, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L82" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L82" } ], "signatures": [ @@ -5483,19 +5483,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 132, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L132" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L132" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 133, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L133" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L133" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 134, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L134" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L134" } ], "signatures": [ @@ -5673,19 +5673,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 167, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L167" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L167" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 168, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L168" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L168" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L169" } ], "signatures": [ @@ -5878,19 +5878,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 151, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L151" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L151" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 155, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L155" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L155" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 156, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L156" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L156" } ], "signatures": [ @@ -6133,19 +6133,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 119, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L119" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L119" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 120, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L120" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L120" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 121, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L121" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L121" } ], "signatures": [ @@ -6323,7 +6323,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "signatures": [ @@ -6414,7 +6414,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 43, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "type": { @@ -6434,7 +6434,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 41, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ] } @@ -6488,19 +6488,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 93, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L93" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L93" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 94, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L94" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L94" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 95, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L95" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L95" } ], "signatures": [ @@ -6687,19 +6687,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 106, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L106" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L106" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 107, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L107" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L107" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 108, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L108" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L108" } ], "signatures": [ @@ -6886,19 +6886,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 376, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L376" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L376" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 377, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L377" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L377" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 378, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L378" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L378" } ], "signatures": [ @@ -7078,7 +7078,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 152, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L152" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L152" } ], "signatures": [ @@ -7156,19 +7156,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 54, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L54" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L54" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 55, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L55" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L55" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 56, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L56" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L56" } ], "signatures": [ @@ -7355,19 +7355,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 398, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L398" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L398" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 403, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L403" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L403" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 404, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L404" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L404" } ], "signatures": [ @@ -7584,7 +7584,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ], "signatures": [ @@ -7675,7 +7675,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 42, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ], "type": { @@ -7695,7 +7695,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 422, "character": 40, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L422" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L422" } ] } @@ -7739,19 +7739,19 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 65, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L65" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L69" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 73, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L73" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L73" } ], "signatures": [ @@ -7866,7 +7866,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -7895,7 +7895,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -7956,7 +7956,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -7976,7 +7976,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ] } @@ -8059,7 +8059,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -8078,7 +8078,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -8099,7 +8099,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -8119,7 +8119,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ] } @@ -8172,19 +8172,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 315, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L315" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L315" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 319, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L319" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L319" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 320, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L320" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L320" } ], "signatures": [ @@ -8395,7 +8395,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "signatures": [ @@ -8513,7 +8513,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 54, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "type": { @@ -8533,7 +8533,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 52, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ] } @@ -8587,19 +8587,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 301, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L301" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L301" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 302, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L302" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L302" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 303, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L303" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L303" } ], "signatures": [ @@ -8777,19 +8777,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 242, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L242" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L242" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 243, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L243" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L243" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 244, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L244" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L244" } ], "signatures": [ @@ -8967,19 +8967,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 257, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L257" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L257" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 258, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L258" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L258" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 259, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L259" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L259" } ], "signatures": [ @@ -9165,19 +9165,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 271, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L271" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L271" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 272, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L272" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L272" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 273, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L273" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L273" } ], "signatures": [ @@ -9355,19 +9355,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 286, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L286" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L286" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 287, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L287" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L287" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 288, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L288" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L288" } ], "signatures": [ @@ -9553,7 +9553,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 249, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L249" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L249" } ], "signatures": [ @@ -9642,7 +9642,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 235, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L235" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L235" } ], "signatures": [ @@ -9714,7 +9714,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 24, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L24" } ], "signatures": [ @@ -9888,7 +9888,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 141, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L141" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L141" } ], "signatures": [ @@ -9966,19 +9966,19 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 341, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L341" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L341" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 346, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L346" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L346" }, { "fileName": "src/PostgrestFilterBuilder.ts", "line": 351, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L351" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L351" } ], "signatures": [ @@ -10112,7 +10112,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ], "type": { @@ -10149,7 +10149,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 33, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ], "type": { @@ -10182,7 +10182,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 344, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L344" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L344" } ] } @@ -10271,7 +10271,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ], "type": { @@ -10292,7 +10292,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 33, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ], "type": { @@ -10325,7 +10325,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 349, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L349" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L349" } ] } @@ -10368,7 +10368,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -10439,7 +10439,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -10528,7 +10528,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -10629,7 +10629,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -10712,7 +10712,7 @@ "fileName": "src/PostgrestFilterBuilder.ts", "line": 28, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestFilterBuilder.ts#L28" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestFilterBuilder.ts#L28" } ], "typeParameters": [ @@ -10801,7 +10801,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 16, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L16" } ], "signatures": [ @@ -10886,7 +10886,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 25, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L25" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L25" } ], "type": { @@ -10984,7 +10984,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 23, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L23" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L23" } ], "type": { @@ -11017,7 +11017,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 24, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L24" } ], "type": { @@ -11037,7 +11037,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 22, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L22" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L22" } ] } @@ -11077,7 +11077,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 14, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L14" } ], "type": { @@ -11173,7 +11173,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 11, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L11" } ], "type": { @@ -11206,7 +11206,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 12, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L12" } ], "type": { @@ -11227,7 +11227,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 13, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L13" } ], "type": { @@ -11248,7 +11248,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 10, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L10" } ], "type": { @@ -11269,7 +11269,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 299, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L299" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L299" } ], "signatures": [ @@ -11373,7 +11373,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 302, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L302" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L302" } ], "type": { @@ -11406,7 +11406,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 301, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L301" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L301" } ] } @@ -11456,7 +11456,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 120, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L120" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L120" } ], "signatures": [ @@ -11618,7 +11618,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 125, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L125" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L125" } ], "type": { @@ -11651,7 +11651,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 124, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L124" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L124" } ] } @@ -11701,7 +11701,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 55, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L55" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L55" } ], "signatures": [ @@ -11872,7 +11872,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 65, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L65" } ], "type": { @@ -11930,7 +11930,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 64, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L64" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L64" } ], "type": { @@ -11950,7 +11950,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 63, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L63" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L63" } ] } @@ -12001,7 +12001,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 250, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L250" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L250" } ], "signatures": [ @@ -12151,7 +12151,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 255, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L255" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L255" } ], "type": { @@ -12184,7 +12184,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 254, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L254" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L254" } ] } @@ -12234,7 +12234,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 192, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L192" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L192" } ], "signatures": [ @@ -12436,7 +12436,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 201, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L201" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L201" } ], "type": { @@ -12494,7 +12494,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 200, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L200" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L200" } ], "type": { @@ -12531,7 +12531,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 199, "character": 6, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L199" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L199" } ], "type": { @@ -12551,7 +12551,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 198, "character": 7, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L198" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L198" } ] } @@ -12610,7 +12610,7 @@ "fileName": "src/PostgrestQueryBuilder.ts", "line": 6, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestQueryBuilder.ts#L6" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestQueryBuilder.ts#L6" } ], "typeParameters": [ @@ -12665,7 +12665,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -12756,7 +12756,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 18, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L18" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L18" } ], "signatures": [ @@ -12825,7 +12825,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -12847,7 +12847,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -12868,7 +12868,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -12966,7 +12966,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -12999,7 +12999,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -13042,7 +13042,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -13063,7 +13063,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -13086,7 +13086,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -13109,7 +13109,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -13130,7 +13130,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -13201,7 +13201,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -13290,7 +13290,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -13389,7 +13389,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -13448,7 +13448,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 5, "character": 30, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L5" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L5" } ], "typeParameters": [ @@ -13541,7 +13541,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 16, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L16" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L16" } ], "type": { @@ -13568,7 +13568,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 12, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L12" } ], "type": { @@ -13594,7 +13594,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 15, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L15" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L15" } ], "type": { @@ -13697,7 +13697,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 10, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L10" } ], "type": { @@ -13735,7 +13735,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L8" } ], "type": { @@ -13783,7 +13783,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 11, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L11" } ], "type": { @@ -13809,7 +13809,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 13, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L13" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L13" } ], "type": { @@ -13837,7 +13837,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 14, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L14" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L14" } ], "type": { @@ -13865,7 +13865,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 9, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L9" } ], "type": { @@ -13891,7 +13891,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 130, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L130" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L130" } ], "signatures": [ @@ -13968,7 +13968,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 161, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L161" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L161" } ], "signatures": [ @@ -14027,7 +14027,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 195, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L195" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L195" } ], "signatures": [ @@ -14107,7 +14107,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 203, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L203" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L203" } ], "type": { @@ -14144,7 +14144,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 206, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L206" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L206" } ], "type": { @@ -14185,7 +14185,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 208, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L208" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L208" } ], "type": { @@ -14231,7 +14231,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 205, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L205" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L205" } ], "type": { @@ -14276,7 +14276,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 204, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L204" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L204" } ], "type": { @@ -14313,7 +14313,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 207, "character": 4, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L207" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L207" } ], "type": { @@ -14333,7 +14333,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 202, "character": 5, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L202" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L202" } ] } @@ -14410,7 +14410,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 169, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L169" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L169" } ], "signatures": [ @@ -14481,7 +14481,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "signatures": [ @@ -14572,7 +14572,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 43, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ], "type": { @@ -14592,7 +14592,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 101, "character": 41, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L101" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L101" } ] } @@ -14636,7 +14636,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 152, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L152" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L152" } ], "signatures": [ @@ -14704,19 +14704,19 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 65, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L65" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L65" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 69, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L69" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L69" }, { "fileName": "src/PostgrestTransformBuilder.ts", "line": 73, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L73" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L73" } ], "signatures": [ @@ -14831,7 +14831,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -14860,7 +14860,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -14921,7 +14921,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ], "type": { @@ -14941,7 +14941,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 67, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L67" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L67" } ] } @@ -15019,7 +15019,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 16, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -15038,7 +15038,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 59, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -15059,7 +15059,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 37, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ], "type": { @@ -15079,7 +15079,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 71, "character": 14, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L71" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L71" } ] } @@ -15122,7 +15122,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "signatures": [ @@ -15240,7 +15240,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 54, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ], "type": { @@ -15260,7 +15260,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 116, "character": 52, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L116" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L116" } ] } @@ -15304,7 +15304,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 249, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L249" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L249" } ], "signatures": [ @@ -15383,7 +15383,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 235, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L235" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L235" } ], "signatures": [ @@ -15445,7 +15445,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 24, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L24" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L24" } ], "signatures": [ @@ -15609,7 +15609,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 141, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L141" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L141" } ], "signatures": [ @@ -15677,7 +15677,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 48, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L48" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L48" } ], "signatures": [ @@ -15748,7 +15748,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 50, "character": 9, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L50" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L50" } ], "signatures": [ @@ -15837,7 +15837,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 53, "character": 18, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L53" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L53" } ], "signatures": [ @@ -15938,7 +15938,7 @@ "fileName": "src/PostgrestBuilder.ts", "line": 43, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestBuilder.ts#L43" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestBuilder.ts#L43" } ], "signatures": [ @@ -16017,7 +16017,7 @@ "fileName": "src/PostgrestTransformBuilder.ts", "line": 10, "character": 21, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/PostgrestTransformBuilder.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/PostgrestTransformBuilder.ts#L10" } ], "typeParameters": [ @@ -16110,7 +16110,7 @@ "fileName": "src/types.ts", "line": 8, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L8" } ], "type": { @@ -16133,7 +16133,7 @@ "fileName": "src/types.ts", "line": 12, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L12" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L12" } ], "type": { @@ -16152,7 +16152,7 @@ "fileName": "src/types.ts", "line": 10, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L10" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L10" } ], "type": { @@ -16171,7 +16171,7 @@ "fileName": "src/types.ts", "line": 11, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L11" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L11" } ], "type": { @@ -16190,7 +16190,7 @@ "fileName": "src/types.ts", "line": 9, "character": 2, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L9" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L9" } ], "type": { @@ -16210,7 +16210,7 @@ "fileName": "src/types.ts", "line": 8, "character": 29, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L8" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L8" } ] } @@ -16227,7 +16227,7 @@ "fileName": "src/types.ts", "line": 45, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L45" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L45" } ], "typeParameters": [ @@ -16272,7 +16272,7 @@ "fileName": "src/types.ts", "line": 35, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L35" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L35" } ], "typeParameters": [ @@ -16316,7 +16316,7 @@ "fileName": "src/types.ts", "line": 42, "character": 12, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/types.ts#L42" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/types.ts#L42" } ], "typeParameters": [ @@ -16365,7 +16365,7 @@ "fileName": "src/index.ts", "line": 1, "character": 0, - "url": "https://github.com/supabase/postgrest-js/blob/709f245/src/index.ts#L1" + "url": "https://github.com/supabase/postgrest-js/blob/84f1518/src/index.ts#L1" } ] } diff --git a/spec/storage_v0_openapi.json b/spec/storage_v0_openapi.json index b8b6ffd2e95..d4dfc93562e 100644 --- a/spec/storage_v0_openapi.json +++ b/spec/storage_v0_openapi.json @@ -1166,6 +1166,36 @@ } } }, + "/object/info/public/{bucketName}/{wildcard}": { + "get": { + "summary": "Get object info", + "description": "returns object info", + "parameters": [ + { + "schema": { "type": "string", "example": "avatars" }, + "example": "avatars", + "in": "path", + "name": "bucketName", + "required": true + }, + { + "schema": { "type": "string", "example": "folder/cat.png" }, + "example": "folder/cat.png", + "in": "path", + "name": "*", + "required": true + } + ], + "responses": { + "4XX": { + "description": "Default Response", + "content": { + "application/json": { "schema": { "$ref": "#/components/schemas/def-1" } } + } + } + } + } + }, "/render/authenticated/{bucketName}/{wildcard}": { "get": { "summary": "Render an authenticated image with the given transformations", diff --git a/spec/supabase_js_v2.yml b/spec/supabase_js_v2.yml index 876e455e63f..8e4214e65d1 100644 --- a/spec/supabase_js_v2.yml +++ b/spec/supabase_js_v2.yml @@ -345,6 +345,25 @@ pages: ```js const { data, error } = supabase.auth.setSession(refresh_token) ``` + auth.refreshSession(): + title: 'refreshSession()' + $ref: '@supabase/gotrue-js.GoTrueClient.refreshSession' + notes: | + - This method will refresh the session whether the current one is expired or not. + - Both examples destructure `user` and `session` from `data`. This is not required; so `const { data, error } =` is also valid. + examples: + - name: Refresh session using the current session + isSpotlight: true + js: | + ```js + const { data: { user, session }, error } = await supabase.auth.refreshSession() + ``` + - name: Refresh session using a passed-in session + isSpotlight: true + js: | + ```js + const { data: { user, session }, error } = await supabase.auth.refreshSession({ refresh_token }) + ``` auth.onAuthStateChange(): title: 'onAuthStateChange()' $ref: '@supabase/gotrue-js.GoTrueClient.onAuthStateChange' diff --git a/spec/transforms/storage_v0_openapi_deparsed.json b/spec/transforms/storage_v0_openapi_deparsed.json index 6b74f1c5c73..6fd5adbb7a6 100644 --- a/spec/transforms/storage_v0_openapi_deparsed.json +++ b/spec/transforms/storage_v0_openapi_deparsed.json @@ -1825,6 +1825,59 @@ } } }, + "/object/info/public/{bucketName}/{wildcard}": { + "get": { + "summary": "Get object info", + "description": "returns object info", + "parameters": [ + { + "schema": { + "type": "string", + "example": "avatars" + }, + "example": "avatars", + "in": "path", + "name": "bucketName", + "required": true + }, + { + "schema": { + "type": "string", + "example": "folder/cat.png" + }, + "example": "folder/cat.png", + "in": "path", + "name": "*", + "required": true + } + ], + "responses": { + "4XX": { + "description": "Default Response", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "statusCode": { + "type": "string" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": ["statusCode", "error", "message"], + "title": "errorSchema" + } + } + } + } + } + } + }, "/render/authenticated/{bucketName}/{wildcard}": { "get": { "summary": "Render an authenticated image with the given transformations", From 39d49cf29e49da3b79e5361424b88519faa8dd8e Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 10:12:25 -0230 Subject: [PATCH 098/185] Fix width on marketing site --- apps/www/styles/index.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/www/styles/index.css b/apps/www/styles/index.css index 4bd521fc206..f4dae6822d8 100644 --- a/apps/www/styles/index.css +++ b/apps/www/styles/index.css @@ -20,7 +20,7 @@ html { scroll-behavior: smooth; - width: fit-content; + width: 100%; } body { @@ -144,7 +144,7 @@ h6 { */ /* transform-origin: var(--sectionTransformOrigin); transform: skewY(var(--sectionAngle)); background: var(--backgroundColor); - overflow: + overflow: hidden; */ } From 75b4bff429511cc9124d75f47a164669764ed4c7 Mon Sep 17 00:00:00 2001 From: Paul Cioanca Date: Fri, 28 Oct 2022 15:54:20 +0300 Subject: [PATCH 099/185] docs: add readonly-mode information (#9824) * docs: add readonly-mode information * docs: apply suggestions from review Co-authored-by: dng * Update apps/reference/docs/guides/platform/disk-usage.mdx Co-authored-by: dng * docs: update based on review * updates the disk usage -> databaes usage (#9931) * updates the disk usage -> databaes usage * Update apps/reference/docs/guides/platform/disk-usage.mdx Co-authored-by: Paul Cioanca * disk -> database Co-authored-by: Paul Cioanca Co-authored-by: dng Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com> --- .../docs/guides/platform/database-usage.mdx | 55 +++++++++++++++++++ .../docs/guides/platform/disk-usage.mdx | 25 --------- apps/reference/nav/_referenceSidebars.js | 2 +- 3 files changed, 56 insertions(+), 26 deletions(-) create mode 100644 apps/reference/docs/guides/platform/database-usage.mdx delete mode 100644 apps/reference/docs/guides/platform/disk-usage.mdx diff --git a/apps/reference/docs/guides/platform/database-usage.mdx b/apps/reference/docs/guides/platform/database-usage.mdx new file mode 100644 index 00000000000..353b8f6c734 --- /dev/null +++ b/apps/reference/docs/guides/platform/database-usage.mdx @@ -0,0 +1,55 @@ +--- +id: database-usage +title: Database usage +description: Understanding how database usage applies to your subscription. +--- + +Database storage refers to the _monthly average storage usage_, as reported by Postgres. This metric is reported in your project's [billing page](https://app.supabase.com/project/_/settings/billing) and is updated daily. + +For an instantaneous live view of the DB storage usage, you can execute in Postgres: + +```sql +select sum(pg_database_size(pg_database.datname)) / (1024 * 1024) as db_size_mb +from pg_database; +``` + +This value is also reported in the [database settings page](https://app.supabase.com/project/_/settings/database). + +## Database storage management + +Your project will be changed to read-only mode once it reaches 95% of your subscription quota, preventing further writes to your project. +In read-only mode, clients will encounter errors such as `cannot execute INSERT in a read-only transaction`. + +Regular operation (read-write mode) is automatically re-enabled once database storage usage falls under 95%. + +If you are on Pro or Enterprise, database storage expands automatically, however you may also encounter this error if fill the database faster than it can expand. + +Supabase uses network-attached storage, which balances performance with scalability. Pro projects can store up to 1024TB. +If you intend to grow beyond this, reach out to our team to learn more about our Enterprise tier. + +### Increasing available database storage + +1. [Upgrade to the Pro or Enterprise plan](https://app.supabase.com/project/_/settings/billing) to increase your storage quota. + +2. Delete data from your project's database to lower its disk usage. If your database is already in read-only mode, run the following command to change the transaction mode to read-write for your session: + + ```sql + SET default_transaction_read_only = 'off'; + ``` + + This allows you to delete data from within the session. + +## Vacuum operations + +Postgres does not immediately reclaim the physical space used by dead tuples (i.e., deleted rows) in the DB. Instead, they are internally marked as removed until a [vacuum operation](https://www.postgresql.org/docs/current/routine-vacuuming.html) is executed. +As a result, deleting data from your database may not immediately reduce the reported disk usage. + +:::note +Vacuum operations can temporarily increase resource utilization, which may adversely impact the observed performance of your project until the maintenance is completed. +::: + +Supabase projects have automatic vacuuming enabled, which ensures that these operations are performed regularly to keep the database healthy and performant. +However, it can be necessary to either [fine-tune](https://www.percona.com/blog/2018/08/10/tuning-autovacuum-in-postgresql-and-autovacuum-internals/) +the [autovacuum parameters](https://www.enterprisedb.com/blog/postgresql-vacuum-and-analyze-best-practice-tips), +or [manually initiate](https://www.postgresql.org/docs/current/sql-vacuum.html) vacuum operations. +For example, running a manual vacuum after deleting large amounts of data from your DB could help reduce the reported disk usage by Postgres. diff --git a/apps/reference/docs/guides/platform/disk-usage.mdx b/apps/reference/docs/guides/platform/disk-usage.mdx deleted file mode 100644 index 7c7854cf43b..00000000000 --- a/apps/reference/docs/guides/platform/disk-usage.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -id: disk-usage -title: Disk space usage -description: Learn how database disk space usage is reported. ---- - -Database disk space usage refers to the _monthly average disk usage_, as reported by Postgres. This metric is reported in your project's [billing page](https://app.supabase.com/project/_/settings/billing) and is updated daily. - -For an instantaneous live view of the DB disk space being used by your project, you can execute in Postgres: - -```sql -SELECT SUM(pg_database_size(pg_database.datname)) / (1024 * 1024) as db_size_mb FROM pg_database; -``` - -This value is also reported in the [database settings page](https://app.supabase.com/project/_/settings/database). - -## Vacuum operations - -Postgres does not immediately reclaim the physical space used by dead tuples (i.e., deleted rows) in the DB. Instead, they are internally marked as removed until a [vacuum operation](https://www.postgresql.org/docs/current/routine-vacuuming.html) is executed. As a result, deleting data from your DB may not immediately reduce the reported disk usage. - -:::note -Vacuum operations can temporarily increase resource utilization, which can adversely impact the observed performance of your project until the maintenance is completed. -::: - -Supabase projects have automatic vacuuming enabled, which ensures that these operations are performed regularly to keep the database healthy and performant. However, it can be necessary to either [fine-tune](https://www.percona.com/blog/2018/08/10/tuning-autovacuum-in-postgresql-and-autovacuum-internals/) [the autovacuum parameters](https://www.enterprisedb.com/blog/postgresql-vacuum-and-analyze-best-practice-tips), or [manually initiate](https://www.postgresql.org/docs/current/sql-vacuum.html) vacuum operations. For example, running a manual vacuum after deleting large amounts of data from your DB could help reduce the reported disk usage by Postgres. diff --git a/apps/reference/nav/_referenceSidebars.js b/apps/reference/nav/_referenceSidebars.js index 7063f0cb677..075bccc8f66 100644 --- a/apps/reference/nav/_referenceSidebars.js +++ b/apps/reference/nav/_referenceSidebars.js @@ -191,7 +191,7 @@ const sidebars = { items: [ 'guides/hosting/platform', 'guides/platform/custom-domains', - 'guides/platform/disk-usage', + 'guides/platform/database-usage', 'guides/platform/logs', 'guides/platform/metrics', 'guides/platform/migrating-and-upgrading-projects', From ef01dbe370ba4df65666fc2960e468a8ef0c1f4f Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:10:36 +0100 Subject: [PATCH 100/185] chore(typos): fix typo in read me --- apps/reference/src/css/components/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/src/css/components/README.md b/apps/reference/src/css/components/README.md index b27f0f6857b..35572b81131 100644 --- a/apps/reference/src/css/components/README.md +++ b/apps/reference/src/css/components/README.md @@ -26,7 +26,7 @@ Global variables can be overridden at root like this: } ``` -Styles can be overriden like this: +Styles can be overridden like this: ```css #__docusaurus { From 1734a3106e5cd9927a204083a995747479caf2f3 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:15:18 +0100 Subject: [PATCH 101/185] chore(typos): fix typos --- apps/reference/_supabase_js/release-notes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/reference/_supabase_js/release-notes.md b/apps/reference/_supabase_js/release-notes.md index 9e8ddae32c4..2f5594ffaa1 100644 --- a/apps/reference/_supabase_js/release-notes.md +++ b/apps/reference/_supabase_js/release-notes.md @@ -149,7 +149,7 @@ supabaseClient .subscribe() ``` -We will deprecate the `.from().on().subscribe()` method previosuly used for listening to postgres changes. +We will deprecate the `.from().on().subscribe()` method previously used for listening to postgres changes. ### Deprecated setAuth() @@ -171,7 +171,7 @@ Deprecated and removed `setAuth()` . To set a custom `access_token` jwt instead, - `gotrue-js` - `supabase-js` client allows passing a `storageKey` param which will allow the user to set the key used in local storage for storing the session. By default, this will be namespace-d with the supabase project ref. ([PR](https://github.com/supabase/supabase-js/pull/460)) - `signIn` method is now split into `signInWithPassword` , `signInWithOtp` , `signInWithOAuth` ([PR](https://github.com/supabase/gotrue-js/pull/304)) - - Deprecated and removed `session()` , `user()` in favour of using `getSession()` instead. `getSession()` will always return a valid session if a user is already logged in, meaning no more random logouts. ([PR](https://github.com/supabase/gotrue-js/pull/299)) + - Deprecated and removed `session()` , `user()` in favor of using `getSession()` instead. `getSession()` will always return a valid session if a user is already logged in, meaning no more random logouts. ([PR](https://github.com/supabase/gotrue-js/pull/299)) - Deprecated and removed setting for `multitab` support because `getSession()` and gotrue’s reuse interval setting takes care of session management across multiple tabs ([PR](https://github.com/supabase/gotrue-js/pull/366)) - No more throwing of random errors, gotrue-js v2 always returns a custom error type: ([PR](https://github.com/supabase/gotrue-js/pull/341)) - `AuthSessionMissingError` From 9086ea7a556b1d66c98841506b220128c9717ade Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:16:53 +0100 Subject: [PATCH 102/185] chore(typos): fix typo --- apps/reference/docs/guides/with-nextjs.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/with-nextjs.mdx b/apps/reference/docs/guides/with-nextjs.mdx index 5cb3e9ae359..a479c08b942 100644 --- a/apps/reference/docs/guides/with-nextjs.mdx +++ b/apps/reference/docs/guides/with-nextjs.mdx @@ -770,6 +770,6 @@ At this stage you have a fully functional application! - Explore the [pre-built Auth UI for React](https://supabase.com/docs/guides/auth/auth-helpers/auth-ui). - Explore the [Auth Helpers for Next.js](https://supabase.com/docs/guides/auth/auth-helpers/nextjs). - Explore the [Supabase Cache Helpers](https://github.com/psteinroe/supabase-cache-helpers). -- See the [Next.js Supscription Payments Starter](https://github.com/vercel/nextjs-subscription-payments) template on GitHub. +- See the [Next.js Subscription Payments Starter](https://github.com/vercel/nextjs-subscription-payments) template on GitHub. - Got a question? [Ask here](https://github.com/supabase/supabase/discussions). - Sign in: [app.supabase.com](https://app.supabase.com) From c480c1bec781a2bdd34b1670ef31426a6e1e7c95 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:17:30 +0100 Subject: [PATCH 103/185] chore(typos): fix typos --- apps/reference/docs/guides/integrations/supertokens.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/integrations/supertokens.mdx b/apps/reference/docs/guides/integrations/supertokens.mdx index c532f3b0d14..eafc7c9c28d 100644 --- a/apps/reference/docs/guides/integrations/supertokens.mdx +++ b/apps/reference/docs/guides/integrations/supertokens.mdx @@ -49,7 +49,7 @@ Click `Save` to create the new table. ## Step 3: Setup your Next.js App with SuperTokens. -Since the scope of this guide is limited to the intergration between SuperTokens and Supabase, you can refer to the SuperTokens website to see [how to setup your Next.js app with SuperTokens](https://supertokens.com/docs/thirdpartyemailpassword/nextjs/about). +Since the scope of this guide is limited to the integration between SuperTokens and Supabase, you can refer to the SuperTokens website to see [how to setup your Next.js app with SuperTokens](https://supertokens.com/docs/thirdpartyemailpassword/nextjs/about). Once you finish setting up your app, you will be greeted with the following screen From e11be714280ff5ca81591d0cd27ff3de910a16db Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:17:59 +0100 Subject: [PATCH 104/185] chore(typos): fix typos --- apps/reference/docs/guides/features.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/features.mdx b/apps/reference/docs/guides/features.mdx index e41d5f1f752..e43747288eb 100755 --- a/apps/reference/docs/guides/features.mdx +++ b/apps/reference/docs/guides/features.mdx @@ -127,7 +127,7 @@ Globally distributed TypeScript functions to execute custom business logic. [Doc
    -## Project Managment +## Project Management ### CLI From b43557ecebd5eccf744b9cb5f36d62ef29c6a381 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:18:26 +0100 Subject: [PATCH 105/185] chore(typos): fix typos --- apps/reference/docs/guides/hosting/platform.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/hosting/platform.mdx b/apps/reference/docs/guides/hosting/platform.mdx index bbfe32e34f8..3997b043be6 100644 --- a/apps/reference/docs/guides/hosting/platform.mdx +++ b/apps/reference/docs/guides/hosting/platform.mdx @@ -47,7 +47,7 @@ You can also assign roles to your team members with different access levels. The | **Members** | | Add an Owner | ✅ | | | | Remove an Owner | ✅ | | | -| Add an Adminstrator | ✅ | ✅ | | +| Add an Administrator | ✅ | ✅ | | | Remove an Administrator | ✅ | ✅ | | | Add a Developer | ✅ | ✅ | | | Remove a Developer | ✅ | ✅ | | From f818a5c91ac5f95ad39588fade3455bbf4e63914 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 14:19:48 +0100 Subject: [PATCH 106/185] chore(typos): fix typos --- apps/www/components/Nav/Announcement.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/components/Nav/Announcement.tsx b/apps/www/components/Nav/Announcement.tsx index 9f5b7bc22e1..cfd46ac631a 100644 --- a/apps/www/components/Nav/Announcement.tsx +++ b/apps/www/components/Nav/Announcement.tsx @@ -52,7 +52,7 @@ const Announcement = () => {
    Date: Fri, 28 Oct 2022 12:20:13 -0230 Subject: [PATCH 117/185] Revert "added width fit content (#9926)" This reverts commit 241052080cd78a3b0df21841061a3b50f66c4313. --- apps/www/styles/index.css | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/www/styles/index.css b/apps/www/styles/index.css index 4bd521fc206..a9175b6623a 100644 --- a/apps/www/styles/index.css +++ b/apps/www/styles/index.css @@ -20,7 +20,6 @@ html { scroll-behavior: smooth; - width: fit-content; } body { From 01aa494916748a3ccd360d6222489c9fbbc8932f Mon Sep 17 00:00:00 2001 From: Victor Hyltoft Date: Fri, 28 Oct 2022 17:22:31 +0200 Subject: [PATCH 118/185] Fixed docs for updating a user in Flutter Seems this is a little oversight as all the other methods under the "Auth" tab has "supabase.auth" in front. I did confirm this is indeed a mistake in the docs and the correct code is "supabase.auth.updateUser". --- spec/supabase_dart_v1.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/supabase_dart_v1.yml b/spec/supabase_dart_v1.yml index 5ea1953b524..d83ffa4af3c 100644 --- a/spec/supabase_dart_v1.yml +++ b/spec/supabase_dart_v1.yml @@ -223,7 +223,7 @@ pages: isSpotlight: true dart: | ```dart - final UserResponse res = await supabase.updateUser( + final UserResponse res = await supabase.auth.updateUser( UserAttributes( email: 'example@email.com', ), @@ -234,7 +234,7 @@ pages: isSpotlight: false dart: | ```dart - final UserResponse res = await supabase.updateUser( + final UserResponse res = await supabase.auth.updateUser( UserAttributes( password: 'new password', ), @@ -245,7 +245,7 @@ pages: isSpotlight: true dart: | ```dart - final UserResponse res = await supabase.updateUser( + final UserResponse res = await supabase.auth.updateUser( UserAttributes( data: { 'hello': 'world' }, ), From 23d92f1cce86b0d9266c3c7d3640bc023fe57eac Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 13:03:42 -0230 Subject: [PATCH 119/185] remove comment --- apps/www/styles/index.css | 5 ----- 1 file changed, 5 deletions(-) diff --git a/apps/www/styles/index.css b/apps/www/styles/index.css index a9175b6623a..4567584c0a6 100644 --- a/apps/www/styles/index.css +++ b/apps/www/styles/index.css @@ -140,11 +140,6 @@ h6 { */ transform-origin: 100% 0; transform: skewY(-2deg); overflow: hidden; - /* transform-origin: var(--sectionTransformOrigin); - transform: skewY(var(--sectionAngle)); - background: var(--backgroundColor); - overflow: - hidden; */ } .section-container { From c45d184b1c97a5d178d5ee186ce7a3f1c59b6c2d Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 13:06:30 -0230 Subject: [PATCH 120/185] Add bundle analyzer --- apps/www/package.json | 8 ++++---- package-lock.json | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/apps/www/package.json b/apps/www/package.json index f4498eddb05..7a4558bb19e 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -16,12 +16,13 @@ "@heroicons/react": "^1.0.6", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", + "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "classnames": "^2.3.1", - "config": "*", "common": "*", + "config": "*", "date-fns": "2.10.0", "dayjs": "^1.11.4", "globby": "^12.0.2", @@ -29,9 +30,9 @@ "markdown-toc": "^1.2.0", "marked": "^4.0.12", "next": "latest", + "next-compose-plugins": "^2.2.1", "next-mdx-remote": "^4.1.0", "next-seo": "^4.20.0", - "next-compose-plugins": "^2.2.1", "next-transpile-modules": "^9.0.0", "nodemailer": "^6.7.3", "parse-numeric-range": "^1.3.0", @@ -50,13 +51,12 @@ "remark-html": "^15.0.1", "swiper": "^6.5.0", "swr": "^0.5.4", - "ui": "*", "typescript": "^4.0.3", + "ui": "*", "use-debounce": "^7.0.1", "uuid": "^8.3.2" }, "devDependencies": { - "config": "*", "@tailwindcss/typography": "^0.5.7", "@types/classnames": "^2.3.1", "@types/jest": "^25.2.2", diff --git a/package-lock.json b/package-lock.json index a475726371a..ebb8ca5b78d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -684,6 +684,7 @@ "@heroicons/react": "^1.0.6", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", + "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", @@ -799,6 +800,14 @@ "react": "^16.13.1 || ^17.0.0" } }, + "apps/www/node_modules/@next/bundle-analyzer": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.0.0.tgz", + "integrity": "sha512-xWfNTieCJuaCxqrl5eeDXDAtx2Ka2hivnjTkgOC+TmbpCqp992iYYETULd9d5z7AnRssn4ugZ3vt8iC2ltaBOg==", + "dependencies": { + "webpack-bundle-analyzer": "4.3.0" + } + }, "apps/www/node_modules/@next/mdx": { "version": "10.2.3", "license": "MIT", @@ -64692,6 +64701,7 @@ "@heroicons/react": "^1.0.6", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", + "@next/bundle-analyzer": "*", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", @@ -64789,6 +64799,14 @@ "version": "1.6.22", "requires": {} }, + "@next/bundle-analyzer": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-13.0.0.tgz", + "integrity": "sha512-xWfNTieCJuaCxqrl5eeDXDAtx2Ka2hivnjTkgOC+TmbpCqp992iYYETULd9d5z7AnRssn4ugZ3vt8iC2ltaBOg==", + "requires": { + "webpack-bundle-analyzer": "4.3.0" + } + }, "@next/mdx": { "version": "10.2.3", "requires": {} From 53e31d66dc3ea57672e67e6860d8020c972c4724 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 13:19:31 -0230 Subject: [PATCH 121/185] Add yup --- apps/www/package.json | 3 ++- package-lock.json | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/www/package.json b/apps/www/package.json index 7a4558bb19e..ad8d7654ba9 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -54,7 +54,8 @@ "typescript": "^4.0.3", "ui": "*", "use-debounce": "^7.0.1", - "uuid": "^8.3.2" + "uuid": "^8.3.2", + "yup": "^0.32.11" }, "devDependencies": { "@tailwindcss/typography": "^0.5.7", diff --git a/package-lock.json b/package-lock.json index ebb8ca5b78d..2c872e70186 100644 --- a/package-lock.json +++ b/package-lock.json @@ -722,7 +722,8 @@ "typescript": "^4.0.3", "ui": "*", "use-debounce": "^7.0.1", - "uuid": "^8.3.2" + "uuid": "^8.3.2", + "yup": "^0.32.11" }, "devDependencies": { "@tailwindcss/typography": "^0.5.7", @@ -64701,7 +64702,7 @@ "@heroicons/react": "^1.0.6", "@mdx-js/loader": "^1.6.22", "@mdx-js/react": "^1.6.22", - "@next/bundle-analyzer": "*", + "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", @@ -64758,7 +64759,8 @@ "typescript": "^4.0.3", "ui": "*", "use-debounce": "^7.0.1", - "uuid": "^8.3.2" + "uuid": "^8.3.2", + "yup": "*" }, "dependencies": { "@jest/types": { From 8bef2886db21da5f4a51ae428ea373747b8b3ad4 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 14:25:29 -0230 Subject: [PATCH 122/185] Add storybook addons --- apps/www/package.json | 1 + package-lock.json | 122 +++++++++--------------------------------- 2 files changed, 26 insertions(+), 97 deletions(-) diff --git a/apps/www/package.json b/apps/www/package.json index ad8d7654ba9..f97c7038413 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -18,6 +18,7 @@ "@mdx-js/react": "^1.6.22", "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", + "@storybook/addon-actions": "^6.5.13", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "classnames": "^2.3.1", diff --git a/package-lock.json b/package-lock.json index 2c872e70186..c55a31c1f00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -686,6 +686,7 @@ "@mdx-js/react": "^1.6.22", "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", + "@storybook/addon-actions": "^6.5.13", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "classnames": "^2.3.1", @@ -6805,7 +6806,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.13.tgz", "integrity": "sha512-3Tji0gIy95havhTpSc6CsFl5lNxGn4O5Y1U9fyji+GRkKqDFOrvVLYAHPtLOpYdEI5tF0bDo+akiqfDouY8+eA==", - "dev": true, "dependencies": { "@storybook/addons": "6.5.13", "@storybook/api": "6.5.13", @@ -7280,7 +7280,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz", "integrity": "sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==", - "dev": true, "dependencies": { "@storybook/api": "6.5.13", "@storybook/channels": "6.5.13", @@ -7307,7 +7306,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz", "integrity": "sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==", - "dev": true, "dependencies": { "@storybook/channels": "6.5.13", "@storybook/client-logger": "6.5.13", @@ -7645,7 +7643,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz", "integrity": "sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==", - "dev": true, "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -7696,7 +7693,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz", "integrity": "sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==", - "dev": true, "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -7710,7 +7706,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.13.tgz", "integrity": "sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==", - "dev": true, "dependencies": { "@storybook/client-logger": "6.5.13", "@storybook/csf": "0.0.2--canary.4566f4d.1", @@ -7985,7 +7980,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz", "integrity": "sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==", - "dev": true, "dependencies": { "core-js": "^3.8.2" }, @@ -8184,7 +8178,6 @@ "version": "0.0.2--canary.4566f4d.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", - "dev": true, "dependencies": { "lodash": "^4.17.15" } @@ -8819,7 +8812,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz", "integrity": "sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==", - "dev": true, "dependencies": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -8840,7 +8832,6 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", - "dev": true, "dependencies": { "core-js": "^3.6.5", "find-up": "^4.1.0" @@ -8856,7 +8847,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -8869,7 +8859,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -8881,7 +8870,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -8896,7 +8884,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -9084,7 +9071,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz", "integrity": "sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==", - "dev": true, "dependencies": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -9664,8 +9650,7 @@ "node_modules/@types/is-function": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", - "dev": true + "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", @@ -10076,8 +10061,7 @@ "node_modules/@types/webpack-env": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", - "dev": true + "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" }, "node_modules/@types/webpack-sources": { "version": "3.2.0", @@ -13491,7 +13475,6 @@ "version": "3.26.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", - "dev": true, "hasInstallScript": true, "funding": { "type": "opencollective", @@ -14865,8 +14848,7 @@ "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, "node_modules/dom7": { "version": "3.0.0", @@ -17610,7 +17592,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -19191,7 +19172,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", - "dev": true, "dependencies": { "is-object": "^1.0.1", "is-window": "^1.0.2" @@ -19237,8 +19217,7 @@ "node_modules/is-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" }, "node_modules/is-generator-fn": { "version": "2.1.0", @@ -19329,7 +19308,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19531,8 +19509,7 @@ "node_modules/is-window": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", - "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==", - "dev": true + "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==" }, "node_modules/is-windows": { "version": "1.0.2", @@ -23506,8 +23483,7 @@ "node_modules/map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" }, "node_modules/map-visit": { "version": "1.0.0", @@ -24101,7 +24077,6 @@ "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, "dependencies": { "map-or-similar": "^1.5.0" } @@ -25090,7 +25065,6 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, "dependencies": { "dom-walk": "^0.1.0" } @@ -26413,7 +26387,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "devOptional": true, "engines": { "node": ">=6" } @@ -26826,7 +26799,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", - "dev": true, "dependencies": { "@babel/runtime": "^7.17.8" }, @@ -28514,7 +28486,6 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "devOptional": true, "engines": { "node": ">= 0.6.0" } @@ -28721,7 +28692,6 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -29221,7 +29191,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", "is-dom": "^1.0.0", @@ -32244,8 +32213,7 @@ "node_modules/store2": { "version": "2.14.2", "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", - "dev": true + "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" }, "node_modules/storybook-dark-mode": { "version": "1.1.2", @@ -32879,7 +32847,6 @@ "version": "6.0.8", "resolved": "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz", "integrity": "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==", - "dev": true, "dependencies": { "@types/is-function": "^1.0.0", "global": "^4.4.0", @@ -32895,7 +32862,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -33410,7 +33376,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true, "engines": { "node": ">=6.10" } @@ -34723,8 +34688,7 @@ "node_modules/uuid-browser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", - "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", - "dev": true + "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==" }, "node_modules/uuid-by-string": { "version": "3.0.7", @@ -41422,7 +41386,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.13.tgz", "integrity": "sha512-3Tji0gIy95havhTpSc6CsFl5lNxGn4O5Y1U9fyji+GRkKqDFOrvVLYAHPtLOpYdEI5tF0bDo+akiqfDouY8+eA==", - "dev": true, "requires": { "@storybook/addons": "6.5.13", "@storybook/api": "6.5.13", @@ -41669,7 +41632,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz", "integrity": "sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==", - "dev": true, "requires": { "@storybook/api": "6.5.13", "@storybook/channels": "6.5.13", @@ -41688,7 +41650,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz", "integrity": "sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==", - "dev": true, "requires": { "@storybook/channels": "6.5.13", "@storybook/client-logger": "6.5.13", @@ -41958,7 +41919,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz", "integrity": "sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==", - "dev": true, "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -41997,7 +41957,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz", "integrity": "sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==", - "dev": true, "requires": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -42007,7 +41966,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.13.tgz", "integrity": "sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==", - "dev": true, "requires": { "@storybook/client-logger": "6.5.13", "@storybook/csf": "0.0.2--canary.4566f4d.1", @@ -42202,7 +42160,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz", "integrity": "sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==", - "dev": true, "requires": { "core-js": "^3.8.2" } @@ -42347,7 +42304,6 @@ "version": "0.0.2--canary.4566f4d.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", - "dev": true, "requires": { "lodash": "^4.17.15" } @@ -42814,7 +42770,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz", "integrity": "sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==", - "dev": true, "requires": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -42827,7 +42782,6 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", - "dev": true, "requires": { "core-js": "^3.6.5", "find-up": "^4.1.0" @@ -42837,7 +42791,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -42847,7 +42800,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -42856,7 +42808,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -42865,7 +42816,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -43009,7 +42959,6 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz", "integrity": "sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==", - "dev": true, "requires": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -43501,8 +43450,7 @@ "@types/is-function": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", - "dev": true + "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==" }, "@types/istanbul-lib-coverage": { "version": "2.0.4", @@ -43911,8 +43859,7 @@ "@types/webpack-env": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", - "dev": true + "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" }, "@types/webpack-sources": { "version": "3.2.0", @@ -46569,8 +46516,7 @@ "core-js": { "version": "3.26.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", - "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", - "dev": true + "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" }, "core-js-compat": { "version": "3.26.0", @@ -47676,8 +47622,7 @@ "dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, "dom7": { "version": "3.0.0", @@ -49805,7 +49750,6 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, "requires": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -50939,7 +50883,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", - "dev": true, "requires": { "is-object": "^1.0.1", "is-window": "^1.0.2" @@ -50970,8 +50913,7 @@ "is-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" }, "is-generator-fn": { "version": "2.1.0", @@ -51032,8 +50974,7 @@ "is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "dev": true + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" }, "is-plain-obj": { "version": "4.1.0", @@ -51168,8 +51109,7 @@ "is-window": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", - "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==", - "dev": true + "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==" }, "is-windows": { "version": "1.0.2", @@ -54252,8 +54192,7 @@ "map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", - "dev": true + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" }, "map-visit": { "version": "1.0.0", @@ -54693,7 +54632,6 @@ "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", - "dev": true, "requires": { "map-or-similar": "^1.5.0" } @@ -55336,7 +55274,6 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, "requires": { "dom-walk": "^0.1.0" } @@ -56337,8 +56274,7 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "devOptional": true + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "packet-reader": { "version": "1.0.0", @@ -56660,7 +56596,6 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", - "dev": true, "requires": { "@babel/runtime": "^7.17.8" } @@ -57932,8 +57867,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "devOptional": true + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" }, "process-nextick-args": { "version": "2.0.1", @@ -58110,7 +58044,6 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, "requires": { "side-channel": "^1.0.4" } @@ -58466,7 +58399,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", - "dev": true, "requires": { "@babel/runtime": "^7.0.0", "is-dom": "^1.0.0", @@ -60769,8 +60701,7 @@ "store2": { "version": "2.14.2", "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", - "dev": true + "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" }, "storybook-dark-mode": { "version": "1.1.2", @@ -61742,7 +61673,6 @@ "version": "6.0.8", "resolved": "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz", "integrity": "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==", - "dev": true, "requires": { "@types/is-function": "^1.0.0", "global": "^4.4.0", @@ -61757,8 +61687,7 @@ "isobject": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", - "dev": true + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" } } }, @@ -62614,8 +62543,7 @@ "ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" }, "ts-invariant": { "version": "0.10.3", @@ -63542,8 +63470,7 @@ "uuid-browser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", - "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", - "dev": true + "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==" }, "uuid-by-string": { "version": "3.0.7", @@ -64704,6 +64631,7 @@ "@mdx-js/react": "^1.6.22", "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", + "@storybook/addon-actions": "*", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "@tailwindcss/typography": "^0.5.7", @@ -64760,7 +64688,7 @@ "ui": "*", "use-debounce": "^7.0.1", "uuid": "^8.3.2", - "yup": "*" + "yup": "^0.32.11" }, "dependencies": { "@jest/types": { From dd34251e5401c527ad27e1cce08a87021c322639 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 14:36:16 -0230 Subject: [PATCH 123/185] Move storybook import --- apps/www/package.json | 1 - package-lock.json | 121 +++++++++++++++++++++++++++++++++--------- package.json | 1 + 3 files changed, 98 insertions(+), 25 deletions(-) diff --git a/apps/www/package.json b/apps/www/package.json index f97c7038413..ad8d7654ba9 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -18,7 +18,6 @@ "@mdx-js/react": "^1.6.22", "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", - "@storybook/addon-actions": "^6.5.13", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "classnames": "^2.3.1", diff --git a/package-lock.json b/package-lock.json index c55a31c1f00..f635c655039 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "mini-svg-data-uri": "^1.4.4" }, "devDependencies": { + "@storybook/addon-actions": "^6.5.13", "@types/json-stringify-safe": "^5.0.0", "eslint": "^7.32.0", "eslint-config-custom": "*", @@ -686,7 +687,6 @@ "@mdx-js/react": "^1.6.22", "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", - "@storybook/addon-actions": "^6.5.13", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "classnames": "^2.3.1", @@ -6806,6 +6806,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.13.tgz", "integrity": "sha512-3Tji0gIy95havhTpSc6CsFl5lNxGn4O5Y1U9fyji+GRkKqDFOrvVLYAHPtLOpYdEI5tF0bDo+akiqfDouY8+eA==", + "dev": true, "dependencies": { "@storybook/addons": "6.5.13", "@storybook/api": "6.5.13", @@ -7280,6 +7281,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz", "integrity": "sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==", + "dev": true, "dependencies": { "@storybook/api": "6.5.13", "@storybook/channels": "6.5.13", @@ -7306,6 +7308,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz", "integrity": "sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==", + "dev": true, "dependencies": { "@storybook/channels": "6.5.13", "@storybook/client-logger": "6.5.13", @@ -7643,6 +7646,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz", "integrity": "sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==", + "dev": true, "dependencies": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -7693,6 +7697,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz", "integrity": "sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==", + "dev": true, "dependencies": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -7706,6 +7711,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.13.tgz", "integrity": "sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==", + "dev": true, "dependencies": { "@storybook/client-logger": "6.5.13", "@storybook/csf": "0.0.2--canary.4566f4d.1", @@ -7980,6 +7986,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz", "integrity": "sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==", + "dev": true, "dependencies": { "core-js": "^3.8.2" }, @@ -8178,6 +8185,7 @@ "version": "0.0.2--canary.4566f4d.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", + "dev": true, "dependencies": { "lodash": "^4.17.15" } @@ -8812,6 +8820,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz", "integrity": "sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==", + "dev": true, "dependencies": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -8832,6 +8841,7 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, "dependencies": { "core-js": "^3.6.5", "find-up": "^4.1.0" @@ -8847,6 +8857,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -8859,6 +8870,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -8870,6 +8882,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -8884,6 +8897,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -9071,6 +9085,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz", "integrity": "sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==", + "dev": true, "dependencies": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -9650,7 +9665,8 @@ "node_modules/@types/is-function": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==" + "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", + "dev": true }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.4", @@ -10061,7 +10077,8 @@ "node_modules/@types/webpack-env": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" + "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", + "dev": true }, "node_modules/@types/webpack-sources": { "version": "3.2.0", @@ -13475,6 +13492,7 @@ "version": "3.26.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", + "dev": true, "hasInstallScript": true, "funding": { "type": "opencollective", @@ -14848,7 +14866,8 @@ "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true }, "node_modules/dom7": { "version": "3.0.0", @@ -17592,6 +17611,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, "dependencies": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -19172,6 +19192,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, "dependencies": { "is-object": "^1.0.1", "is-window": "^1.0.2" @@ -19217,7 +19238,8 @@ "node_modules/is-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true }, "node_modules/is-generator-fn": { "version": "2.1.0", @@ -19308,6 +19330,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19509,7 +19532,8 @@ "node_modules/is-window": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", - "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==" + "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==", + "dev": true }, "node_modules/is-windows": { "version": "1.0.2", @@ -23483,7 +23507,8 @@ "node_modules/map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true }, "node_modules/map-visit": { "version": "1.0.0", @@ -24077,6 +24102,7 @@ "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, "dependencies": { "map-or-similar": "^1.5.0" } @@ -25065,6 +25091,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, "dependencies": { "dom-walk": "^0.1.0" } @@ -26387,6 +26414,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "devOptional": true, "engines": { "node": ">=6" } @@ -26799,6 +26827,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", + "dev": true, "dependencies": { "@babel/runtime": "^7.17.8" }, @@ -28486,6 +28515,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "devOptional": true, "engines": { "node": ">= 0.6.0" } @@ -28692,6 +28722,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -29191,6 +29222,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", + "dev": true, "dependencies": { "@babel/runtime": "^7.0.0", "is-dom": "^1.0.0", @@ -32213,7 +32245,8 @@ "node_modules/store2": { "version": "2.14.2", "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" + "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "dev": true }, "node_modules/storybook-dark-mode": { "version": "1.1.2", @@ -32847,6 +32880,7 @@ "version": "6.0.8", "resolved": "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz", "integrity": "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==", + "dev": true, "dependencies": { "@types/is-function": "^1.0.0", "global": "^4.4.0", @@ -32862,6 +32896,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -33376,6 +33411,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, "engines": { "node": ">=6.10" } @@ -34688,7 +34724,8 @@ "node_modules/uuid-browser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", - "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==" + "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", + "dev": true }, "node_modules/uuid-by-string": { "version": "3.0.7", @@ -41386,6 +41423,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-6.5.13.tgz", "integrity": "sha512-3Tji0gIy95havhTpSc6CsFl5lNxGn4O5Y1U9fyji+GRkKqDFOrvVLYAHPtLOpYdEI5tF0bDo+akiqfDouY8+eA==", + "dev": true, "requires": { "@storybook/addons": "6.5.13", "@storybook/api": "6.5.13", @@ -41632,6 +41670,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.13.tgz", "integrity": "sha512-18CqzNnrGMfeZtiKz+R/3rHtSNnfNwz6y6prIQIbWseK16jY8ELTfIFGviwO5V2OqpbHDQi5+xQQ63QAIb89YA==", + "dev": true, "requires": { "@storybook/api": "6.5.13", "@storybook/channels": "6.5.13", @@ -41650,6 +41689,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/api/-/api-6.5.13.tgz", "integrity": "sha512-xVSmB7/IuFd6G7eiJjbI2MuS7SZunoUM6d+YCWpjiehfMeX47MXt1gZtOwFrgJC1ShZlefXFahq/dvxwtmWs+w==", + "dev": true, "requires": { "@storybook/channels": "6.5.13", "@storybook/client-logger": "6.5.13", @@ -41919,6 +41959,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-6.5.13.tgz", "integrity": "sha512-sGYSilE30bz0jG+HdHnkv0B4XkAv2hP+KRZr4xmnv+MOOQpRnZpJ5Z3HVU16s17cj/83NWihKj6BuKcEVzyilg==", + "dev": true, "requires": { "core-js": "^3.8.2", "ts-dedent": "^2.0.0", @@ -41957,6 +41998,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-6.5.13.tgz", "integrity": "sha512-F2SMW3LWFGXLm2ENTwTitrLWJgmMXRf3CWQXdN2EbkNCIBHy5Zcbt+91K4OX8e2e5h9gjGfrdYbyYDYOoUCEfA==", + "dev": true, "requires": { "core-js": "^3.8.2", "global": "^4.4.0" @@ -41966,6 +42008,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-6.5.13.tgz", "integrity": "sha512-6Hhx70JK5pGfKCkqMU4yq/BBH+vRTmzj7tZKfPwba+f8VmTMoOr/2ysTQFRtXryiHB6Z15xBYgfq5x2pIwQzLQ==", + "dev": true, "requires": { "@storybook/client-logger": "6.5.13", "@storybook/csf": "0.0.2--canary.4566f4d.1", @@ -42160,6 +42203,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-6.5.13.tgz", "integrity": "sha512-kL745tPpRKejzHToA3/CoBNbI+NPRVk186vGxXBmk95OEg0TlwgQExP8BnqEtLlRZMbW08e4+6kilc1M1M4N5w==", + "dev": true, "requires": { "core-js": "^3.8.2" } @@ -42304,6 +42348,7 @@ "version": "0.0.2--canary.4566f4d.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.2--canary.4566f4d.1.tgz", "integrity": "sha512-9OVvMVh3t9znYZwb0Svf/YQoxX2gVOeQTGe2bses2yj+a3+OJnCrUF3/hGv6Em7KujtOdL2LL+JnG49oMVGFgQ==", + "dev": true, "requires": { "lodash": "^4.17.15" } @@ -42770,6 +42815,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.13.tgz", "integrity": "sha512-sf5aogfirH5ucD0d0hc2mKf2iyWsZsvXhr5kjxUQmgkcoflkGUWhc34sbSQVRQ1i8K5lkLIDH/q2s1Zr2SbzhQ==", + "dev": true, "requires": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -42782,6 +42828,7 @@ "version": "7.3.2", "resolved": "https://registry.npmjs.org/@storybook/semver/-/semver-7.3.2.tgz", "integrity": "sha512-SWeszlsiPsMI0Ps0jVNtH64cI5c0UF3f7KgjVKJoNP30crQ6wUSddY2hsdeczZXEKVJGEn50Q60flcGsQGIcrg==", + "dev": true, "requires": { "core-js": "^3.6.5", "find-up": "^4.1.0" @@ -42791,6 +42838,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -42800,6 +42848,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -42808,6 +42857,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "requires": { "p-try": "^2.0.0" } @@ -42816,6 +42866,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -42959,6 +43010,7 @@ "version": "6.5.13", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.13.tgz", "integrity": "sha512-oif5NGFAUQhizo50r+ctw2hZNLWV4dPHai+L/gFvbaSeRBeHSNkIcMoZ2FlrO566HdGZTDutYXcR+xus8rI28g==", + "dev": true, "requires": { "@storybook/client-logger": "6.5.13", "core-js": "^3.8.2", @@ -43450,7 +43502,8 @@ "@types/is-function": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", - "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==" + "integrity": "sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==", + "dev": true }, "@types/istanbul-lib-coverage": { "version": "2.0.4", @@ -43859,7 +43912,8 @@ "@types/webpack-env": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.18.0.tgz", - "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==" + "integrity": "sha512-56/MAlX5WMsPVbOg7tAxnYvNYMMWr/QJiIp6BxVSW3JJXUVzzOn64qW8TzQyMSqSUFM2+PVI4aUHcHOzIz/1tg==", + "dev": true }, "@types/webpack-sources": { "version": "3.2.0", @@ -46516,7 +46570,8 @@ "core-js": { "version": "3.26.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", - "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==" + "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", + "dev": true }, "core-js-compat": { "version": "3.26.0", @@ -47622,7 +47677,8 @@ "dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true }, "dom7": { "version": "3.0.0", @@ -49750,6 +49806,7 @@ "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, "requires": { "min-document": "^2.19.0", "process": "^0.11.10" @@ -50883,6 +50940,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-dom/-/is-dom-1.1.0.tgz", "integrity": "sha512-u82f6mvhYxRPKpw8V1N0W8ce1xXwOrQtgGcxl6UCL5zBmZu3is/18K0rR7uFCnMDuAsS/3W54mGL4vsaFUQlEQ==", + "dev": true, "requires": { "is-object": "^1.0.1", "is-window": "^1.0.2" @@ -50913,7 +50971,8 @@ "is-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true }, "is-generator-fn": { "version": "2.1.0", @@ -50974,7 +51033,8 @@ "is-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==" + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true }, "is-plain-obj": { "version": "4.1.0", @@ -51109,7 +51169,8 @@ "is-window": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-window/-/is-window-1.0.2.tgz", - "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==" + "integrity": "sha512-uj00kdXyZb9t9RcAUAwMZAnkBUwdYGhYlt7djMXhfyhUCzwNba50tIiBKR7q0l7tdoBtFVw/3JmLY6fI3rmZmg==", + "dev": true }, "is-windows": { "version": "1.0.2", @@ -54192,7 +54253,8 @@ "map-or-similar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz", - "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==" + "integrity": "sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==", + "dev": true }, "map-visit": { "version": "1.0.0", @@ -54632,6 +54694,7 @@ "version": "1.11.3", "resolved": "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz", "integrity": "sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==", + "dev": true, "requires": { "map-or-similar": "^1.5.0" } @@ -55274,6 +55337,7 @@ "version": "2.19.0", "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, "requires": { "dom-walk": "^0.1.0" } @@ -56274,7 +56338,8 @@ "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "devOptional": true }, "packet-reader": { "version": "1.0.0", @@ -56596,6 +56661,7 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", + "dev": true, "requires": { "@babel/runtime": "^7.17.8" } @@ -57867,7 +57933,8 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "devOptional": true }, "process-nextick-args": { "version": "2.0.1", @@ -58044,6 +58111,7 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, "requires": { "side-channel": "^1.0.4" } @@ -58399,6 +58467,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/react-inspector/-/react-inspector-5.1.1.tgz", "integrity": "sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==", + "dev": true, "requires": { "@babel/runtime": "^7.0.0", "is-dom": "^1.0.0", @@ -60701,7 +60770,8 @@ "store2": { "version": "2.14.2", "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==" + "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "dev": true }, "storybook-dark-mode": { "version": "1.1.2", @@ -61673,6 +61743,7 @@ "version": "6.0.8", "resolved": "https://registry.npmjs.org/telejson/-/telejson-6.0.8.tgz", "integrity": "sha512-nerNXi+j8NK1QEfBHtZUN/aLdDcyupA//9kAboYLrtzZlPLpUfqbVGWb9zz91f/mIjRbAYhbgtnJHY8I1b5MBg==", + "dev": true, "requires": { "@types/is-function": "^1.0.0", "global": "^4.4.0", @@ -61687,7 +61758,8 @@ "isobject": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", - "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==", + "dev": true } } }, @@ -62543,7 +62615,8 @@ "ts-dedent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true }, "ts-invariant": { "version": "0.10.3", @@ -63470,7 +63543,8 @@ "uuid-browser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid-browser/-/uuid-browser-3.1.0.tgz", - "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==" + "integrity": "sha512-dsNgbLaTrd6l3MMxTtouOCFw4CBFc/3a+GgYA2YyrJvyQ1u6q4pcu3ktLoUZ/VN/Aw9WsauazbgsgdfVWgAKQg==", + "dev": true }, "uuid-by-string": { "version": "3.0.7", @@ -64631,7 +64705,6 @@ "@mdx-js/react": "^1.6.22", "@next/bundle-analyzer": "^13.0.0", "@next/mdx": "^10.0.7", - "@storybook/addon-actions": "*", "@supabase/auth-ui-react": "^0.1.6", "@supabase/supabase-js": "^2.0.0", "@tailwindcss/typography": "^0.5.7", diff --git a/package.json b/package.json index d435f0f2a56..f476a92ab25 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ }, "devDependencies": { "@types/json-stringify-safe": "^5.0.0", + "@storybook/addon-actions": "^6.5.13", "eslint": "^7.32.0", "eslint-config-custom": "*", "json-stringify-safe": "^5.0.1", From c4593911d9cc246ead942163b7f64ad9977eec3d Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 14:43:08 -0230 Subject: [PATCH 124/185] Remove handler function --- packages/ui/src/components/Typography/Link.tsx | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/packages/ui/src/components/Typography/Link.tsx b/packages/ui/src/components/Typography/Link.tsx index 910d05b4170..b7122dcb14e 100644 --- a/packages/ui/src/components/Typography/Link.tsx +++ b/packages/ui/src/components/Typography/Link.tsx @@ -1,4 +1,3 @@ -import { HandlerFunction } from '@storybook/addon-actions' import React from 'react' // @ts-ignore // import LinkStyles from './Link.module.css' @@ -9,17 +8,10 @@ interface Props { href?: string className?: string style?: React.CSSProperties - onClick?: HandlerFunction + onClick?: any } -function Link({ - children, - target = '_blank', - href, - className, - onClick, - style, -}: Props) { +function Link({ children, target = '_blank', href, className, onClick, style }: Props) { // let classes = [ // LinkStyles['sbui-typography'], // LinkStyles['sbui-typography-link'], From 8d366d8c545b7173daf48d4c0718ec7f38cfb07d Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 14:43:30 -0230 Subject: [PATCH 125/185] Remove storybook addons --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index f476a92ab25..d435f0f2a56 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ }, "devDependencies": { "@types/json-stringify-safe": "^5.0.0", - "@storybook/addon-actions": "^6.5.13", "eslint": "^7.32.0", "eslint-config-custom": "*", "json-stringify-safe": "^5.0.1", From 86357eae5430a2a412f859d2eb2249be25d7c9c9 Mon Sep 17 00:00:00 2001 From: hallidayo <22655069+Hallidayo@users.noreply.github.com> Date: Fri, 28 Oct 2022 18:54:09 +0100 Subject: [PATCH 126/185] docs: korean readme (#9936) changed some of the translation and added chart --- i18n/README.ko.md | 134 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 121 insertions(+), 13 deletions(-) diff --git a/i18n/README.ko.md b/i18n/README.ko.md index 7389332a2df..7e7e371295b 100644 --- a/i18n/README.ko.md +++ b/i18n/README.ko.md @@ -7,7 +7,7 @@ # Supabase -[Supabase](https://supabase.com)는 오픈 소스 Firebase 대체 제품입니다. 엔터프라이즈 급 오픈 소스 도구를 사용하여 Firebase 기능을 구축하고 있습니다. +[Supabase](https://supabase.com)는 오픈 소스 Firebase 대안입니다. 엔터프라이즈급 오픈 소스 도구를 사용하여 Firebase의 기능을 구축하고 있습니다. - [x] 호스팅 된 Postgres 데이터베이스. [Docs](https://supabase.com/docs/guides/database) - [x] 사용자 인증 및 권한 부여. [Docs](https://supabase.com/docs/guides/auth) @@ -39,7 +39,7 @@ - [x] Alpha: 제한된 사용자를 대상으로 테스트 - [x] Public Alpha: 누구나[app.supabase.com](https://app.supabase.com)에서 등록 할 수 있습니다. 그러나, 버그 등이 있을 수 있으므로 양해 바랍니다. - [x] Public Beta: 기업을 제외한 대부분의 유스 케이스에 적합할 정도로 안정적 -- [ ] Public: 제품 준비중 +- [ ] Public: 프로덕션 준비 완료 현재 Public Beta를 실시하고 있습니다. 주요 업데이트에 대한 알림을 받으려면 이 저장소의 "releases"를 Watch 해주세요. @@ -70,17 +70,125 @@ Supabase는 [호스팅 플랫폼](https://app.supabase.com)입니다. 아무것 Supabase 클라이언트 라이브러리는 모듈식 입니다. 각 하위 라이브러리는 단일 외부 시스템에 대한 독립 실행형 구조입니다. 이는 기존 도구를 지원하는 방법 중 하나입니다. -- **`supabase-{lang}`**: 아래 모든 라이브러리를 내포 한 클라이언트 라이브러리 - - `postgrest-{lang}`: [PostgREST](https://github.com/postgrest/postgrest)용 클라이언트 라이브러리 - - `realtime-{lang}`: [Realtime](https://github.com/supabase/realtime)용 클라이언트 라이브러리 - - `gotrue-{lang}`: [GoTrue](https://github.com/netlify/gotrue)용 클라이언트 라이브러리 - -| 저장소 | 공식 | 커뮤니티 | -| --------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| **`supabase-{lang}`** | [`JS`](https://github.com/supabase/supabase-js) | [`C#`](https://github.com/supabase/supabase-csharp) \| [`Flutter`](https://github.com/supabase/supabase-flutter) \| [`Python`](https://github.com/supabase/supabase-py) \| `Rust` \| [`Ruby`](https://github.com/supabase/supabase-rb) \| `Go` | -| `postgrest-{lang}` | [`JS`](https://github.com/supabase/postgrest-js) | [`C#`](https://github.com/supabase/postgrest-csharp) \| [`Dart`](https://github.com/supabase/postgrest-dart) \| [`Python`](https://github.com/supabase/postgrest-py) \| [`Rust`](https://github.com/supabase/postgrest-rs) \| [`Ruby`](https://github.com/supabase/postgrest-rb) \| [`Go`](https://github.com/supabase/postgrest-go) | -| `realtime-{lang}` | [`JS`](https://github.com/supabase/realtime-js) | [`C#`](https://github.com/supabase/realtime-csharp) \| [`Dart`](https://github.com/supabase/realtime-dart) \| [`Python`](https://github.com/supabase/realtime-py) \| `Rust` \| `Ruby` \| `Go` | -| `gotrue-{lang}` | [`JS`](https://github.com/supabase/gotrue-js) | [`C#`](https://github.com/supabase/gotrue-csharp) \| [`Dart`](https://github.com/supabase/gotrue-dart) \| [`Python`](https://github.com/supabase/gotrue-py) \| `Rust` \| `Ruby` \| `Go` | +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    언어고객기능 클라이언트(Supabase 클라이언트에 번들)
    SupabasePostgRESTGoTrueRealtimeStorageFunctions
    ⚡️ 공식적인 ⚡️
    JavaScript (TypeScript)supabase-jspostgrest-jsgotrue-jsrealtime-jsstorage-jsfunctions-js
    💚 지역 사회 💚
    C#supabase-csharppostgrest-csharpgotrue-csharprealtime-csharpstorage-csharpfunctions-csharp
    Fluttersupabase-flutterpostgrest-dartgotrue-dartrealtime-dartstorage-dartfunctions-dart
    Go-postgrest-go--storage-gofunctions-go
    Java--gotrue-java---
    Kotlin-postgrest-ktgotrue-kt---
    Pythonsupabase-pypostgrest-pygotrue-pyrealtime-pystorage-pyfunctions-py
    Rubysupabase-rbpostgrest-rb----
    Rust-postgrest-rs----
    Swiftsupabase-swiftpostgrest-swiftgotrue-swiftrealtime-swiftstorage-swift-
    From a21d09438257eaa70c4b3c53de1f7280760d0013 Mon Sep 17 00:00:00 2001 From: dng Date: Fri, 28 Oct 2022 10:55:07 -0700 Subject: [PATCH 127/185] Update apps/reference/docs/guides/hosting/platform.mdx --- apps/reference/docs/guides/hosting/platform.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/docs/guides/hosting/platform.mdx b/apps/reference/docs/guides/hosting/platform.mdx index 3997b043be6..a8c24cba66f 100644 --- a/apps/reference/docs/guides/hosting/platform.mdx +++ b/apps/reference/docs/guides/hosting/platform.mdx @@ -47,7 +47,7 @@ You can also assign roles to your team members with different access levels. The | **Members** | | Add an Owner | ✅ | | | | Remove an Owner | ✅ | | | -| Add an Administrator | ✅ | ✅ | | +| Add an Administrator | ✅ | ✅ | | | Remove an Administrator | ✅ | ✅ | | | Add a Developer | ✅ | ✅ | | | Remove a Developer | ✅ | ✅ | | From f858d00970e86050dfbc366e5f1a7e3e9fd2f3ac Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:41:54 +0100 Subject: [PATCH 128/185] chore(typo): fix typos --- about/src/css/custom.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/about/src/css/custom.css b/about/src/css/custom.css index 01b3ef754fe..0fc6287b057 100755 --- a/about/src/css/custom.css +++ b/about/src/css/custom.css @@ -690,7 +690,7 @@ div[class*=' codeBlockTitle'] { font-size: 0.8rem !important; border-color: #444; } -.repsonse-header { +.response-header { border-radius: 0 0 4px 4px; } From d5dd96e405af17b170073b9a5f872b44a31b0c5a Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:42:22 +0100 Subject: [PATCH 129/185] chore(typos): fix typos --- apps/reference/src/components/CustomCodeBlock.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/reference/src/components/CustomCodeBlock.js b/apps/reference/src/components/CustomCodeBlock.js index 484c8896661..e19c15349f5 100644 --- a/apps/reference/src/components/CustomCodeBlock.js +++ b/apps/reference/src/components/CustomCodeBlock.js @@ -31,7 +31,7 @@ export default function CustomCodeBlock({
    {response && ( <> -
    +
    Date: Fri, 28 Oct 2022 19:42:55 +0100 Subject: [PATCH 130/185] chore(typos): fix typos --- about/docs/careers/graphic-web-designers.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/about/docs/careers/graphic-web-designers.mdx b/about/docs/careers/graphic-web-designers.mdx index d05dec2cb7e..3652de4fbd9 100644 --- a/about/docs/careers/graphic-web-designers.mdx +++ b/about/docs/careers/graphic-web-designers.mdx @@ -15,7 +15,7 @@ import Process from '@site/docs/careers/_snippets/process.mdx' We're looking for Graphic / Web Designers to join our team to help change the way developers build their applications. -You'll be primarily responsible for growing our marketing and brand collataral across the entire Supabase ecosystem. +You'll be primarily responsible for growing our marketing and brand collateral across the entire Supabase ecosystem. You'll be an indispensable part of team, by working very closely with our sales, marketing, front end team, founders and backend engineers; you'll be directly contributing to brand decisions, building a team culture and co authoring internal processes for a growing team. We want to expand our marketing efforts rapidly throughout 2022 and want you to be at the centre of growing and nurturing our brand, while also nurturing new talent that come on board. From 150883d3ce80cf2bb6c34bc70ed08fe4bbf3d199 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:43:18 +0100 Subject: [PATCH 131/185] chore(typos): fix typos --- DEVELOPERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEVELOPERS.md b/DEVELOPERS.md index c6376d34057..5a1476143f1 100644 --- a/DEVELOPERS.md +++ b/DEVELOPERS.md @@ -183,7 +183,7 @@ Then edit and visit any of the following sites: Site | Directory | Description | Local development server ---- | --------- | ----------- | ------------------------ [supabase.com](https://supabase.com) | `/apps/www` | The main website | http://localhost:3000 -[supabase.com/docs](https://supabase.com/docs) | `apps/reference` | Guides and Reference documentaion | http://localhost:3010/docs +[supabase.com/docs](https://supabase.com/docs) | `apps/reference` | Guides and Reference documentation | http://localhost:3010/docs [POC] Community forum | `/apps/temp-community-forum` | GitHub Discussions in a Next.js site | http://localhost:3002 [POC] DEV articles site | `/apps/temp-community-tutorials` | A Next.js site for our DEV articles (which community members can write) | http://localhost:3003 From 9b272033977c5d4a60287b902cf4e3ccbf432623 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:44:16 +0100 Subject: [PATCH 132/185] chore(typos): fix typos --- spec/enrichments/tsdoc_v1/realtime.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/enrichments/tsdoc_v1/realtime.json b/spec/enrichments/tsdoc_v1/realtime.json index 49295003cef..6d22658314f 100644 --- a/spec/enrichments/tsdoc_v1/realtime.json +++ b/spec/enrichments/tsdoc_v1/realtime.json @@ -1337,7 +1337,7 @@ "isExported": true }, "comment": { - "shortText": "Retuns `true` is the connection is open." + "shortText": "Returns `true` is the connection is open." }, "type": { "type": "intrinsic", @@ -1421,7 +1421,7 @@ }, "comment": { "shortText": "Logs the message.", - "text": "For customized logging, `this.logger` can be overriden.\n" + "text": "For customized logging, `this.logger` can be overridden.\n" }, "parameters": [ { From dbf9e9d773ace8350f6a96c99d6432edd7ed755d Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:45:27 +0100 Subject: [PATCH 133/185] chore(typos): fix typos --- spec/enrichments/tsdoc_v1/realtime_dereferenced.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/enrichments/tsdoc_v1/realtime_dereferenced.json b/spec/enrichments/tsdoc_v1/realtime_dereferenced.json index 5c124afed3e..1f68f54b94d 100644 --- a/spec/enrichments/tsdoc_v1/realtime_dereferenced.json +++ b/spec/enrichments/tsdoc_v1/realtime_dereferenced.json @@ -1811,7 +1811,7 @@ "isExported": true }, "comment": { - "shortText": "Retuns `true` is the connection is open." + "shortText": "Returns `true` is the connection is open." }, "type": { "type": "intrinsic", @@ -1895,7 +1895,7 @@ }, "comment": { "shortText": "Logs the message.", - "text": "For customized logging, `this.logger` can be overriden.\n" + "text": "For customized logging, `this.logger` can be overridden.\n" }, "parameters": [ { @@ -6924,7 +6924,7 @@ "isExported": true }, "comment": { - "shortText": "Retuns `true` is the connection is open." + "shortText": "Returns `true` is the connection is open." }, "type": { "type": "intrinsic", @@ -7008,7 +7008,7 @@ }, "comment": { "shortText": "Logs the message.", - "text": "For customized logging, `this.logger` can be overriden.\n" + "text": "For customized logging, `this.logger` can be overridden.\n" }, "parameters": [ { @@ -11979,7 +11979,7 @@ "isExported": true }, "comment": { - "shortText": "Retuns `true` is the connection is open." + "shortText": "Returns `true` is the connection is open." }, "type": { "type": "intrinsic", @@ -12063,7 +12063,7 @@ }, "comment": { "shortText": "Logs the message.", - "text": "For customized logging, `this.logger` can be overriden.\n" + "text": "For customized logging, `this.logger` can be overridden.\n" }, "parameters": [ { From e71a1343c9881c760877d7aa8f2b47bbedb7e6f2 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:46:52 +0100 Subject: [PATCH 134/185] chore(typos): fix typos --- spec/enrichments/tsdoc_v2/realtime.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/enrichments/tsdoc_v2/realtime.json b/spec/enrichments/tsdoc_v2/realtime.json index 25defebb2ae..ce7213b48c2 100644 --- a/spec/enrichments/tsdoc_v2/realtime.json +++ b/spec/enrichments/tsdoc_v2/realtime.json @@ -3467,7 +3467,7 @@ "kindString": "Call signature", "flags": {}, "comment": { - "shortText": "Retuns `true` is the connection is open." + "shortText": "Returns `true` is the connection is open." }, "type": { "type": "intrinsic", @@ -3498,7 +3498,7 @@ "flags": {}, "comment": { "shortText": "Logs the message.", - "text": "For customized logging, `this.logger` can be overriden.\n" + "text": "For customized logging, `this.logger` can be overridden.\n" }, "parameters": [ { From 57b2bc2c15f24b860798fdc12aa09ac09ca19136 Mon Sep 17 00:00:00 2001 From: Sara Tavares <29093946+stavares843@users.noreply.github.com> Date: Fri, 28 Oct 2022 19:47:23 +0100 Subject: [PATCH 135/185] chore(typos): fix typos --- spec/enrichments/tsdoc_v2/realtime.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/enrichments/tsdoc_v2/realtime.json b/spec/enrichments/tsdoc_v2/realtime.json index ce7213b48c2..79913e6a85a 100644 --- a/spec/enrichments/tsdoc_v2/realtime.json +++ b/spec/enrichments/tsdoc_v2/realtime.json @@ -4108,7 +4108,7 @@ "isOptional": true }, "comment": { - "shortText": "self option enables client to receive message it broadcast\nack option instructs server to acknowlege that broadcast message was received" + "shortText": "self option enables client to receive message it broadcast\nack option instructs server to acknowledge that broadcast message was received" }, "sources": [ { From 89b24dde7c157c827f067e424963d6475cc2908f Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 16:18:58 -0230 Subject: [PATCH 136/185] Chore/fix org delete modal (#9898) Fix modal text input placeholder --- .../Organization/GeneralSettings/DeleteOrganizationButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx b/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx index 5c35341bfab..81f7a5608f8 100644 --- a/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx +++ b/studio/components/interfaces/Organization/GeneralSettings/DeleteOrganizationButton.tsx @@ -105,7 +105,7 @@ const DeleteOrganizationButton = observer(() => { } onChange={(e) => setValue(e.target.value)} value={value} - placeholder="Type in the orgnaization name" + placeholder="Enter the string above" className="w-full" /> From 3d6dc9750ff4b81051a3f78c103b013737cba160 Mon Sep 17 00:00:00 2001 From: dannykng Date: Fri, 28 Oct 2022 11:51:30 -0700 Subject: [PATCH 137/185] Fix build issue --- spec/supabase_js_v2.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spec/supabase_js_v2.yml b/spec/supabase_js_v2.yml index cd85376edfc..2bce4c9adc0 100644 --- a/spec/supabase_js_v2.yml +++ b/spec/supabase_js_v2.yml @@ -611,9 +611,7 @@ pages: email: 'current.email@example.com', newEmail: 'new.email@example.com' }) - ``` - js: | - ```js + const { data, error } = await supabase.auth.admin.generateLink({ type: 'email_change_new', email: 'current.email@example.com', From ebf9e7346e8c311ed37d377f1db4f8eb327bc743 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 16:22:13 -0230 Subject: [PATCH 138/185] Fix logs active item --- .../layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx index 1370a36bce1..c5b6ddb9036 100644 --- a/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx +++ b/studio/components/layouts/ProjectLayout/NavigationBar/NavigationBar.utils.tsx @@ -147,7 +147,7 @@ export const generateOtherRoutes = (ref?: string, project?: ProjectBase): Route[ ...(IS_PLATFORM ? [ { - key: 'explorer', + key: 'logs', label: 'Logs', icon: , link: From e179f718f2986ec9e97475ab7ab86e760bc41a60 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Fri, 28 Oct 2022 20:53:21 +0200 Subject: [PATCH 139/185] Adds the new testing doc to the sidebar (#9945) --- apps/reference/docs/guides/{cli => database}/testing.mdx | 2 +- apps/reference/nav/_referenceSidebars.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) rename apps/reference/docs/guides/{cli => database}/testing.mdx (90%) diff --git a/apps/reference/docs/guides/cli/testing.mdx b/apps/reference/docs/guides/database/testing.mdx similarity index 90% rename from apps/reference/docs/guides/cli/testing.mdx rename to apps/reference/docs/guides/database/testing.mdx index ce2d1b299a2..a1e2267df44 100644 --- a/apps/reference/docs/guides/cli/testing.mdx +++ b/apps/reference/docs/guides/database/testing.mdx @@ -29,7 +29,7 @@ touch ./supabase/tests/database/hello_world.test.sql All `sql` files use [pgTAP](/docs/guides/database/extensions/pgtap) as the test runner. -Let’s write a simple test to check that our `auth.users` table has an ID column. Open `hello_world.test.sql` and add the following code: +Let's write a simple test to check that our `auth.users` table has an ID column. Open `hello_world.test.sql` and add the following code: ```sql begin; diff --git a/apps/reference/nav/_referenceSidebars.js b/apps/reference/nav/_referenceSidebars.js index 075bccc8f66..a5b95fc6501 100644 --- a/apps/reference/nav/_referenceSidebars.js +++ b/apps/reference/nav/_referenceSidebars.js @@ -120,6 +120,7 @@ const sidebars = { 'guides/database/functions', 'guides/database/webhooks', 'guides/database/full-text-search', + 'guides/database/testing', // 'guides/database/json', // 'guides/database/arrays', // 'guides/database/sql-to-api', From 079afd21080add12580090d3e4cae53f3a722e31 Mon Sep 17 00:00:00 2001 From: dng Date: Fri, 28 Oct 2022 11:59:38 -0700 Subject: [PATCH 140/185] Update spec/supabase_js_v2.yml Co-authored-by: Kang Ming --- spec/supabase_js_v2.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/supabase_js_v2.yml b/spec/supabase_js_v2.yml index 2bce4c9adc0..3074d777e12 100644 --- a/spec/supabase_js_v2.yml +++ b/spec/supabase_js_v2.yml @@ -612,6 +612,7 @@ pages: newEmail: 'new.email@example.com' }) + // generate an email change link to be sent to the new email address const { data, error } = await supabase.auth.admin.generateLink({ type: 'email_change_new', email: 'current.email@example.com', From f5f8f0fb198dcd838b5034134461cb530aa2e6a9 Mon Sep 17 00:00:00 2001 From: Kang Ming Date: Fri, 28 Oct 2022 12:00:39 -0700 Subject: [PATCH 141/185] add comment for generating email change link --- spec/supabase_js_v2.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/supabase_js_v2.yml b/spec/supabase_js_v2.yml index 3074d777e12..633c7adb202 100644 --- a/spec/supabase_js_v2.yml +++ b/spec/supabase_js_v2.yml @@ -606,6 +606,7 @@ pages: isSpotlight: false js: | ```js + // generate an email change link to be sent to the current email address const { data, error } = await supabase.auth.admin.generateLink({ type: 'email_change_current', email: 'current.email@example.com', From 5029c753ad9293fb0dfa753b4bc8b144894a9ad3 Mon Sep 17 00:00:00 2001 From: Terry Sutton Date: Fri, 28 Oct 2022 16:48:28 -0230 Subject: [PATCH 142/185] Fix failing test --- packages/ui/src/components/Tabs/Tabs.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/src/components/Tabs/Tabs.tsx b/packages/ui/src/components/Tabs/Tabs.tsx index e79fd1569ce..da9de69154f 100644 --- a/packages/ui/src/components/Tabs/Tabs.tsx +++ b/packages/ui/src/components/Tabs/Tabs.tsx @@ -50,7 +50,7 @@ function Tabs({ ) const router = useRouter() - const hash = router.asPath.split('#')[1]?.toUpperCase() + const hash = router.asPath?.split('#')[1]?.toUpperCase() let __styles = styleHandler('tabs') From 5d3a3dddcde0b98e11ed072f1114f01a68c6c4d9 Mon Sep 17 00:00:00 2001 From: Jon Meyers Date: Sat, 29 Oct 2022 21:44:03 +1100 Subject: [PATCH 143/185] docs: add docs for remix auth helpers --- .../docs/guides/auth/auth-helpers/remix.mdx | 881 ++++++++++++++++++ 1 file changed, 881 insertions(+) create mode 100644 apps/reference/docs/guides/auth/auth-helpers/remix.mdx diff --git a/apps/reference/docs/guides/auth/auth-helpers/remix.mdx b/apps/reference/docs/guides/auth/auth-helpers/remix.mdx new file mode 100644 index 00000000000..7596e258640 --- /dev/null +++ b/apps/reference/docs/guides/auth/auth-helpers/remix.mdx @@ -0,0 +1,881 @@ +--- +id: remix +title: Supabase Auth with Remix +description: Authentication helpers for loaders and actions in Remix. +sidebar_label: 'Remix' +--- + +import Tabs from '@theme/Tabs' +import TabItem from '@theme/TabItem' + +This submodule provides convenience helpers for implementing user authentication in Remix applications. + +## Install the Remix helper library + + + + + +```sh +npm install @supabase/auth-helpers-remix +``` + +This library supports the following tooling versions: + +- Remix: `>=1.7.2` + + + + +```sh +yarn add @supabase/auth-helpers-remix +``` + +This library supports the following tooling versions: + +- Remix: `>=1.7.2` + +## Set up environment variables + +Retrieve your project URL and anon key in your project's [API settings](https://app.supabase.com/project/_/settings/api) in the Dashboard to set up the following environment variables. For local development you can set them in a `.env` file. See an [example](https://github.com/supabase/auth-helpers/blob/main/examples/remix/.env.example). + +```bash title=".env" +SUPABASE_URL=YOUR_SUPABASE_URL +SUPABASE_ANON_KEY=YOUR_SUPABASE_ANON_KEY +``` + +## Loader + + + + +Loader functions run on the server immediately before the component is rendered. They respond to all GET requests on a route. You can create an authenticated Supabase client by calling the `createSupabaseClient` function and passing it your `SUPABASE_URL`, `SUPABASE_ANON_KEY`, and a `Request` and `Response`. + +```jsx +import { json } from '@remix-run/node'; // change this import to whatever runtime you are using +import { createSupabaseClient } from '@supabase/auth-helpers-remix'; + +export const loader = async ({ request }) => { + const response = new Response(); + // an empty response is required for the auth helpers + // to set cookies to manage auth + + const supabaseClient = createSupabaseClient( + process.env.SUPABASE_URL, + process.env.SUPABASE_ANON_KEY, + { request, response } + ); + + const { data } = await supabaseClient.from('test').select('*'); + + // in order for the set-cookie header to be set, + // headers must be returned as part of the loader response + return json( + { data }, + { + headers: response.headers + } + ); +}; +``` + +> Supabase will set cookie headers to manage the user's auth session, therefore, the `response.headers` must be returned from the `Loader` function. + + + + +Loader functions run on the server immediately before the component is rendered. You can create an authenticated Supabase client by calling the `createSupabaseClient` function and passing it your `SUPABASE_URL`, `SUPABASE_ANON_KEY`, and a `Request` and `Response`. + +```jsx +import { LoaderFunction, json } from '@remix-run/node'; // change this import to whatever runtime you are using +import { createSupabaseClient } from '@supabase/auth-helpers-remix'; + +export const loader: LoaderFunction = async ({ + request +}: { + request: Request +}) => { + const response = new Response(); + const supabaseClient = createSupabaseClient( + process.env.SUPABASE_URL, + process.env.SUPABASE_ANON_KEY, + { request, response } + ); + + const { data } = await supabaseClient.from('test').select('*'); + + return json( + { data }, + { + headers: response.headers + } + ); +}; +``` + +> Supabase will set cookie headers to manage the user's auth session, therefore, the `response.headers` must be returned from the `Loader` function. + + + + +## Action + + + + +Action functions run on the server and respond to HTTP requests to a route, other than GET - POST, PUT, PATCH, DELETE etc. You can create an authenticated Supabase client by calling the `createSupabaseClient` function and passing it your `SUPABASE_URL`, `SUPABASE_ANON_KEY`, and a `Request` and `Response`. + +```jsx +import { json } from '@remix-run/node'; // change this import to whatever runtime you are using +import { createSupabaseClient } from '@supabase/auth-helpers-remix'; + +export const action = async ({ request }) => { + const response = new Response(); + + const supabaseClient = createSupabaseClient( + process.env.SUPABASE_URL, + process.env.SUPABASE_ANON_KEY, + { request, response } + ); + + const { data } = await supabaseClient.from('test').select('*'); + + return json( + { data }, + { + headers: response.headers + } + ); +}; +``` + +> Supabase will set cookie headers to manage the user's auth session, therefore, the `response.headers` must be returned from the `Action` function. + + + + +Action functions run on the server and respond to HTTP requests to a route, other than GET - POST, PUT, PATCH, DELETE etc. You can create an authenticated Supabase client by calling the `createSupabaseClient` function and passing it your `SUPABASE_URL`, `SUPABASE_ANON_KEY`, and a `Request` and `Response`. + +```jsx +import { ActionFunction, json } from '@remix-run/node'; // change this import to whatever runtime you are using +import { createSupabaseClient } from '@supabase/auth-helpers-remix'; + +export const action: ActionFunction = async ({ + request +}: { + request: Request +}) => { + const response = new Response(); + + const supabaseClient = createSupabaseClient( + process.env.SUPABASE_URL, + process.env.SUPABASE_ANON_KEY, + { request, response } + ); + + const { data } = await supabaseClient.from('test').select('*'); + + return json( + { data }, + { + headers: response.headers + } + ); +}; +``` + +> Supabase will set cookie headers to manage the user's auth session, therefore, the `response.headers` must be returned from the `Action` function. + + + + +## Session and User + +You can determine if a user is authenticated by checking their session using the `getSession` function. + +```jsx +const { data: { session }} = await supabaseClient.auth.getSession(); +``` + +The session contains a user property. + +```jsx +const user = session?.user; +``` + +> This is the recommended way for accessing the logged in user. There is also a `getUser()` function but this does not refresh the session if it has expired. + +## Client-side + + + + +In order to use the Supabase client in the browser - fetching data in `useEffect` or subscribing to realtime events - we need to do a little more plumbing. Remix does not include a way to make environment variables available to the browser, so we need to pipe them through from a `loader` function in our `root.jsx` route and attach them to the `window`. + +```jsx title="app/root.jsx" +export const loader = () => { + const { SUPABASE_URL, SUPABASE_ANON_KEY } = process.env; + return json({ + env: { + SUPABASE_URL, + SUPABASE_ANON_KEY + } + }); +}; +``` + +> These may not be stored in `process.env` for environments other than Node. + +Next, we call the `useLoaderData` hook in our component to get the `env` object. + +```jsx title="app/root.jsx" +const { env } = useLoaderData(); +``` + +And then, add a `