diff --git a/apps/docs/components/reference/CLICommandSection.tsx b/apps/docs/components/reference/CLICommandSection.tsx new file mode 100644 index 00000000000..5fed86e034d --- /dev/null +++ b/apps/docs/components/reference/CLICommandSection.tsx @@ -0,0 +1,129 @@ +import CodeBlock from '~/components/CodeBlock/CodeBlock' +import Options from '~/components/Options' +import Param from '~/components/Params' +import RefSubLayout from '~/layouts/ref/RefSubLayout' + +interface ICommonFunc { + id: string + title: string + slug: string + product: string + libs: string + items: ICommonFunc[] +} + +interface IRefFunctionSection { + funcData: any + commonFuncData: ICommonFunc + spec: any +} + +export type Flag = { + id: string + name: string + description: string + default_value: string + accepted_values: AcceptedValue[] +} + +export type AcceptedValue = { + id: string + name: string + type: 'string' | 'boolean' | 'object' + description?: string +} + +export type Command = { + id: string + title: string + description: string + flags?: Flag[] + summary: string + tags?: [] + links?: [] + subcommands?: [] + usage?: string +} + +const CliCommandSection = (props) => { + const command = props.spec.commands.find((x: any) => x.id === props.funcData.id) + + return ( + + +
+
+
+

+ {command.summary} +

+
+ + {/* {command.usage && ( + + {command.usage} + + )} */} + + {command.subcommands.length > 0 && ( +
+

Available Commands

+ +
+ )} + {command.flags.length > 0 && ( + <> +

Flags

+
    + {command.flags.map((flag: Flag) => ( + <> +
  • + + {flag?.accepted_values && ( + + {flag?.accepted_values.map((value) => { + return + })} + + )} + +
  • + + ))} +
+ + )} +
+
+
+ + {command.usage && ( + + {command.usage} + + )} + +
+ ) +} + +export default CliCommandSection diff --git a/apps/docs/components/reference/RefSectionHandler.tsx b/apps/docs/components/reference/RefSectionHandler.tsx index 4898f6433b1..e477984ebfe 100644 --- a/apps/docs/components/reference/RefSectionHandler.tsx +++ b/apps/docs/components/reference/RefSectionHandler.tsx @@ -6,12 +6,16 @@ import components from '~/components' import RefEducationSection from '~/components/reference/RefEducationSection' import RefFunctionSection from '~/components/reference/RefFunctionSection' import OldLayout from '~/layouts/Default' +import RefSubLayout from '~/layouts/ref/RefSubLayout' +import CliCommandSection from './CLICommandSection' interface Props { sections: any[] // to do spec: any // to do typeSpec: any // to do pageProps: any // to do, from staticProps + + type: 'client-lib' | 'cli' | 'api' } const RefSectionHandler = (props) => { @@ -41,27 +45,35 @@ const RefSectionHandler = (props) => { ) } - return props.sections.map((x) => { - switch (x.isFunc) { - case false: - const markdownData = props.pageProps.docs.find((doc) => doc.id === x.id) - console.log(markdownData) + return ( + + {props.sections.map((x) => { + switch (x.isFunc) { + case false: + const markdownData = props.pageProps.docs.find((doc) => doc.id === x.id) + console.log(markdownData) - return - break + return + break - default: - return ( - - ) - break - } - }) + default: + if (props.type === 'cli') { + return + } else { + return ( + + ) + } + break + } + })} + + ) } export default RefSectionHandler diff --git a/apps/docs/docs/ref/cli/cli.mdx b/apps/docs/docs/ref/cli/cli.mdx deleted file mode 100644 index 5bfbe7e543a..00000000000 --- a/apps/docs/docs/ref/cli/cli.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -id: intro -slug: / -sidebar_position: 1 -sidebar_label: Supabase CLI -title: Supabase CLI -hide_table_of_contents: true ---- - -The Supabase CLI provides tools to develop your project locally and deploy to the Supabase Platform. -The CLI is still under development, but it contains all the functionality for working with your Supabase projects and the Supabase Platform. - -- Run Supabase locally: [`supabase start`](/docs/reference/cli/usage#supabase-start) -- Manage database migrations: [`supabase migration`](/docs/reference/cli/usage#supabase-migration) -- CI/CD for releasing to production: [`supabase db push`](/docs/reference/cli/usage#supabase-db-push) -- Manage your Supabase projects: [`supabase projects`](/docs/reference/cli/usage#supabase-projects) -- Generate types directly from your database schema: [`supabase gen types`](/docs/reference/cli/usage#supabase-gen) - - A [community-supported GitHub Action](https://github.com/lyqht/generate-supabase-db-types-github-action) to generate TypeScript types -- Shell autocomplete: [`supabase completion`](/docs/reference/cli/usage#supabase-completion) - - A [community-supported Fig autocomplete spec](https://fig.io/manual/supabase) for macOS terminal - -## Additional Links - -- [Install the Supabase CLI](/docs/guides/cli) -- [Source code](https://github.com/supabase/cli) -- [Known bugs and issues](https://github.com/supabase/cli/issues) -- [Supabase CLI v1 and Management API Beta](https://supabase.com/blog/supabase-cli-v1-and-admin-api-beta) -- [The CLI team announcing CLI V1 and Management API Beta - Video](https://www.youtube.com/watch?v=OpPOaJI_Z28) diff --git a/apps/docs/docs/ref/cli/introduction.mdx b/apps/docs/docs/ref/cli/introduction.mdx new file mode 100644 index 00000000000..31ed416a896 --- /dev/null +++ b/apps/docs/docs/ref/cli/introduction.mdx @@ -0,0 +1,40 @@ +--- +id: intro +slug: / +sidebar_position: 1 +sidebar_label: Supabase CLI +title: Supabase CLI +hide_table_of_contents: true +--- + + + + + The Supabase CLI provides tools to develop your project locally and deploy to the Supabase Platform. + The CLI is still under development, but it contains all the functionality for working with your Supabase projects and the Supabase Platform. + + - Run Supabase locally: [`supabase start`](/docs/reference/cli/usage#supabase-start) + - Manage database migrations: [`supabase migration`](/docs/reference/cli/usage#supabase-migration) + - CI/CD for releasing to production: [`supabase db push`](/docs/reference/cli/usage#supabase-db-push) + - Manage your Supabase projects: [`supabase projects`](/docs/reference/cli/usage#supabase-projects) + - Generate types directly from your database schema: [`supabase gen types`](/docs/reference/cli/usage#supabase-gen) + - A [community-supported GitHub Action](https://github.com/lyqht/generate-supabase-db-types-github-action) to generate TypeScript types + - Shell autocomplete: [`supabase completion`](/docs/reference/cli/usage#supabase-completion) + + - A [community-supported Fig autocomplete spec](https://fig.io/manual/supabase) for macOS terminal + + + + + + Additional Links + + - [Install the Supabase CLI](/docs/guides/cli) + - [Source code](https://github.com/supabase/cli) + - [Known bugs and issues](https://github.com/supabase/cli/issues) + - [Supabase CLI v1 and Management API Beta](https://supabase.com/blog/supabase-cli-v1-and-admin-api-beta) + - [The CLI team announcing CLI V1 and Management API Beta - Video](https://www.youtube.com/watch?v=OpPOaJI_Z28) + + + + diff --git a/apps/docs/layouts/ref/RefSubLayout.tsx b/apps/docs/layouts/ref/RefSubLayout.tsx index 39f080d7a29..2a216fed366 100644 --- a/apps/docs/layouts/ref/RefSubLayout.tsx +++ b/apps/docs/layouts/ref/RefSubLayout.tsx @@ -55,7 +55,7 @@ const Section: FC = (props) => {
diff --git a/apps/docs/pages/reference/cli/[...slug].tsx b/apps/docs/pages/reference/cli/[...slug].tsx index 084f4af25ae..9e28eab2c06 100644 --- a/apps/docs/pages/reference/cli/[...slug].tsx +++ b/apps/docs/pages/reference/cli/[...slug].tsx @@ -1,7 +1,7 @@ import fs from 'fs' import matter from 'gray-matter' // @ts-expect-error -import cliSpec from '~/../../spec/cli_v1_commands_new_shape.yaml' assert { type: 'yml' } +import spec from '~/../../spec/cli_v1_commands_new_shape.yaml' assert { type: 'yml' } import CodeBlock from '~/components/CodeBlock/CodeBlock' import Options from '~/components/Options' import Param from '~/components/Params' @@ -14,6 +14,15 @@ import { serialize } from 'next-mdx-remote/serialize' import components from '~/components/index' import { MDXRemote } from 'next-mdx-remote' import OldLayout from '~/layouts/Default' +import { flattenSections } from '~/lib/helpers' + +import cliCommonSections from '~/../../spec/common-cli-sections.json' assert { type: 'json' } +import CliCommandSection from '~/components/reference/CLICommandSection' +import handleRefGetStaticPaths from '~/lib/mdx/handleRefStaticPaths' +import handleRefStaticProps from '~/lib/mdx/handleRefStaticProps' +import RefSectionHandler from '~/components/reference/RefSectionHandler' + +const sections = flattenSections(cliCommonSections) export type AcceptedValue = { id: string @@ -44,6 +53,18 @@ export type Command = { export default function Config(props) { console.log(props.docs) + + console.log( + spec.commands.map((x) => { + return { + id: x.id, + title: x.title, + slug: x.id, + isFunc: true, + } + }) + ) + /* * handle old ref pages */ @@ -56,214 +77,13 @@ export default function Config(props) { ) } - return ( - <> - {console.log(props.docs.filter((doc) => doc.introPage))} - - {props.docs - .filter((doc) => doc.introPage) - .map((item) => ( - - - - ))} - - -
- -
-
-
-

{cliSpec.info.title}

-

{cliSpec.info.description}

-
- -
- {cliSpec.commands.map((command: Command, commandIndex) => { - return ( - - -
-
-
-

- {command.summary} -

-
- - {/* {command.usage && ( - - {command.usage} - - )} */} - - {command.subcommands.length > 0 && ( -
-

- Available Commands -

- -
- )} - {command.flags.length > 0 && ( - <> -

Flags

-
    - {command.flags.map((flag: Flag) => ( - <> -
  • - - {flag?.accepted_values && ( - - {flag?.accepted_values.map((value) => { - return - })} - - )} - -
  • - - ))} -
- - )} -
-
-
- - {command.usage && ( - - {command.usage} - - )} - -
- ) - })} -
-
-
-
- - ) + return } export async function getStaticProps({ params }: { params: { slug: string[] } }) { - // an array of ids of the intro sections for this library - const introPages = ['cli'] - const specPpages = cliSpec.commands - - const pages = [...introPages, ...specPpages] - - /** - * Read all the markdown files that might have - * - custom text - * - call outs - * - important notes regarding implementation - */ - const allMarkdownDocs = await Promise.all( - pages.map(async (x, i) => { - const pathName = `docs/ref/cli/${x}.mdx` - - function checkFileExists(x) { - // console.log('checking this ', x) - if (fs.existsSync(x)) { - return true - } else { - return false - } - } - - const markdownExists = checkFileExists(pathName) - - const fileContents = markdownExists ? fs.readFileSync(pathName, 'utf8') : '' - const { data, content } = matter(fileContents) - - return { - id: x, - title: x, - // ...content, - meta: data, - introPage: introPages.includes(x), - content: content ? await serialize(content || '') : null, - } - }) - ) - - /* - * old content generation - * this is for grabbing to old markdown files - */ - - let slug - if (params.slug.length > 1) { - slug = `docs/reference/cli/${params.slug.join('/')}` - } else { - slug = `docs/reference/cli/${params.slug[0]}` - } - - /* - * handle old ref pages - */ - if (process.env.NEXT_PUBLIC_NEW_DOCS === 'false') { - let doc = getDocsBySlug(slug) - const content = await serialize(doc.content || '') - return { - props: { - /* - * old reference docs are below - */ - ...doc, - content, - toc: toc(doc.content, { maxdepth: 1, firsth1: false }), - }, - } - } else { - return { - props: { - docs: allMarkdownDocs, - }, - } - } + return handleRefStaticProps(sections, params, '/cli', '/cli') } export function getStaticPaths() { - let docs = getAllDocs() - - return { - paths: docs.map(() => { - return { - params: { - slug: docs.map((d) => d.slug), - }, - } - }), - fallback: 'blocking', - } + return handleRefGetStaticPaths() } diff --git a/apps/docs/public/sitemap.xml b/apps/docs/public/sitemap.xml index b64ee4d42c9..023980c4ded 100644 --- a/apps/docs/public/sitemap.xml +++ b/apps/docs/public/sitemap.xml @@ -84,6 +84,24 @@ 0.5 + + https://supabase.com/docs/handbook/contributing + weekly + 0.5 + + + + https://supabase.com/docs/handbook/introduction + weekly + 0.5 + + + + https://supabase.com/docs/handbook/supasquad + weekly + 0.5 + + https://supabase.com/docs/guides/api weekly @@ -228,24 +246,6 @@ 0.5 - - https://supabase.com/docs/handbook/contributing - weekly - 0.5 - - - - https://supabase.com/docs/handbook/introduction - weekly - 0.5 - - - - https://supabase.com/docs/handbook/supasquad - weekly - 0.5 - - https://supabase.com/docs/tutorials/nextjs weekly @@ -276,12 +276,6 @@ 0.5 - - https://supabase.com/docs/guides/api/generating-types - weekly - 0.5 - - https://supabase.com/docs/getting-started/quickstarts/nextjs weekly @@ -300,6 +294,144 @@ 0.5 + + https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-google-oauth + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-gotrue + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-policies + weekly + 0.5 + + + + https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security + weekly + 0.5 + + + + https://supabase.com/docs/guides/api/generating-types + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/local-development + weekly + 0.5 + + + + https://supabase.com/docs/guides/cli/managing-environments + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/arrays + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/connecting-to-postgres + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/full-text-search + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/functions + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/json + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-passwords + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/managing-timezones + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/overview + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/replication + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/sql-to-api + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/tables + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/testing + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/timeouts + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/webhooks + weekly + 0.5 + + https://supabase.com/docs/guides/auth/auth-apple weekly @@ -486,108 +618,6 @@ 0.5 - - https://supabase.com/docs/guides/cli/local-development - weekly - 0.5 - - - - https://supabase.com/docs/guides/cli/managing-environments - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/arrays - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/connecting-to-postgres - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/full-text-search - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/functions - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/json - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-passwords - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/managing-timezones - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/overview - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/replication - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/sql-to-api - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/tables - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/testing - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/timeouts - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/webhooks - weekly - 0.5 - - https://supabase.com/docs/guides/functions/auth weekly @@ -1002,36 +1032,6 @@ 0.5 - - https://supabase.com/docs/learn/auth-deep-dive/auth-deep-dive-jwts - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-google-oauth - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-gotrue - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-policies - weekly - 0.5 - - - - https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security - weekly - 0.5 - - https://supabase.com/docs/new/auth/auth-login weekly @@ -1044,6 +1044,42 @@ 0.5 + + https://supabase.com/docs/guides/database/extensions/http + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions/pgcron + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions/pgnet + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions/pgtap + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions/plv8 + weekly + 0.5 + + + + https://supabase.com/docs/guides/database/extensions/uuid-ossp + weekly + 0.5 + + https://supabase.com/docs/guides/auth/auth-helpers/auth-ui weekly @@ -1074,6 +1110,18 @@ 0.5 + + https://supabase.com/docs/guides/functions/examples/index + weekly + 0.5 + + + + https://supabase.com/docs/guides/functions/examples/og-image + weekly + 0.5 + + https://supabase.com/docs/guides/auth/passwordless-login/email-otp-magic-link weekly @@ -1206,54 +1254,6 @@ 0.5 - - https://supabase.com/docs/guides/database/extensions/http - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions/pgcron - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions/pgnet - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions/pgtap - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions/plv8 - weekly - 0.5 - - - - https://supabase.com/docs/guides/database/extensions/uuid-ossp - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/index - weekly - 0.5 - - - - https://supabase.com/docs/guides/functions/examples/og-image - weekly - 0.5 - - https://supabase.com/docs/guides/resources/migrating-to-supabase/firebase-auth weekly diff --git a/spec/common-cli-sections.json b/spec/common-cli-sections.json new file mode 100644 index 00000000000..73698c45b5e --- /dev/null +++ b/spec/common-cli-sections.json @@ -0,0 +1,330 @@ +[ + { + "title": "introduction", + "id": "introduction", + "slug": "introduction", + "isFunc": false + }, + { + "title": "general", + "items": [ + { + "id": "supabase-test", + "title": "supabase test", + "slug": "supabase-test", + "isFunc": true + }, + { + "id": "supabase-test-db", + "title": "supabase test db", + "slug": "supabase-test-db", + "isFunc": true + }, + { + "id": "supabase-stop", + "title": "supabase stop", + "slug": "supabase-stop", + "isFunc": true + }, + { + "id": "supabase-status", + "title": "supabase status", + "slug": "supabase-status", + "isFunc": true + }, + { + "id": "supabase-start", + "title": "supabase start", + "slug": "supabase-start", + "isFunc": true + }, + { + "id": "supabase-login", + "title": "supabase login", + "slug": "supabase-login", + "isFunc": true + }, + { + "id": "supabase-link", + "title": "supabase link", + "slug": "supabase-link", + "isFunc": true + }, + { + "id": "supabase-init", + "title": "supabase init", + "slug": "supabase-init", + "isFunc": true + }, + { + "id": "supabase-gen", + "title": "supabase gen", + "slug": "supabase-gen", + "isFunc": true + }, + { + "id": "supabase-gen-types", + "title": "supabase gen types", + "slug": "supabase-gen-types", + "isFunc": true + }, + { + "id": "supabase-gen-types-typescript", + "title": "supabase gen types typescript", + "slug": "supabase-gen-types-typescript", + "isFunc": true + } + ] + }, + { + "title": "secrets", + "items": [ + { + "id": "supabase-secrets", + "title": "supabase secrets", + "slug": "supabase-secrets", + "isFunc": true + }, + { + "id": "supabase-secrets-unset", + "title": "supabase secrets unset", + "slug": "supabase-secrets-unset", + "isFunc": true + }, + { + "id": "supabase-secrets-set", + "title": "supabase secrets set", + "slug": "supabase-secrets-set", + "isFunc": true + }, + { + "id": "supabase-secrets-list", + "title": "supabase secrets list", + "slug": "supabase-secrets-list", + "isFunc": true + } + ] + }, + { + "title": "projects", + "items": [ + { + "id": "supabase-projects", + "title": "supabase projects", + "slug": "supabase-projects", + "isFunc": true + }, + { + "id": "supabase-projects-list", + "title": "supabase projects list", + "slug": "supabase-projects-list", + "isFunc": true + }, + { + "id": "supabase-projects-create", + "title": "supabase projects create", + "slug": "supabase-projects-create", + "isFunc": true + } + ] + }, + { + "title": "organizations", + "items": [ + { + "id": "supabase-orgs", + "title": "supabase orgs", + "slug": "supabase-orgs", + "isFunc": true + }, + { + "id": "supabase-orgs-list", + "title": "supabase orgs list", + "slug": "supabase-orgs-list", + "isFunc": true + } + ] + }, + { + "title": "migrations", + "items": [ + { + "id": "supabase-migration", + "title": "supabase migration", + "slug": "supabase-migration", + "isFunc": true + }, + { + "id": "supabase-migration-new", + "title": "supabase migration new", + "slug": "supabase-migration-new", + "isFunc": true + }, + { + "id": "supabase-migration-list", + "title": "supabase migration list", + "slug": "supabase-migration-list", + "isFunc": true + } + ] + }, + { + "title": "Edge Functions", + "items": [ + { + "id": "supabase-functions", + "title": "supabase functions", + "slug": "supabase-functions", + "isFunc": true + }, + { + "id": "supabase-functions-serve", + "title": "supabase functions serve", + "slug": "supabase-functions-serve", + "isFunc": true + }, + { + "id": "supabase-functions-new", + "title": "supabase functions new", + "slug": "supabase-functions-new", + "isFunc": true + }, + { + "id": "supabase-functions-deploy", + "title": "supabase functions deploy", + "slug": "supabase-functions-deploy", + "isFunc": true + }, + { + "id": "supabase-functions-delete", + "title": "supabase functions delete", + "slug": "supabase-functions-delete", + "isFunc": true + } + ] + }, + { + "title": "Domains", + "Items": [ + { + "id": "supabase-domains", + "title": "supabase domains", + "slug": "supabase-domains", + "isFunc": true + }, + { + "id": "supabase-domains-reverify", + "title": "supabase domains reverify", + "slug": "supabase-domains-reverify", + "isFunc": true + }, + { + "id": "supabase-domains-get", + "title": "supabase domains get", + "slug": "supabase-domains-get", + "isFunc": true + }, + { + "id": "supabase-domains-delete", + "title": "supabase domains delete", + "slug": "supabase-domains-delete", + "isFunc": true + }, + { + "id": "supabase-domains-create", + "title": "supabase domains create", + "slug": "supabase-domains-create", + "isFunc": true + }, + { + "id": "supabase-domains-activate", + "title": "supabase domains activate", + "slug": "supabase-domains-activate", + "isFunc": true + } + ] + }, + { + "title": "Database", + "items": [ + { "id": "supabase-db", "title": "supabase db", "slug": "supabase-db", "isFunc": true }, + { + "id": "supabase-db-reset", + "title": "supabase db reset", + "slug": "supabase-db-reset", + "isFunc": true + }, + { + "id": "supabase-db-remote", + "title": "supabase db remote", + "slug": "supabase-db-remote", + "isFunc": true + }, + { + "id": "supabase-db-remote-commit", + "title": "supabase db remote commit", + "slug": "supabase-db-remote-commit", + "isFunc": true + }, + { + "id": "supabase-db-remote-changes", + "title": "supabase db remote changes", + "slug": "supabase-db-remote-changes", + "isFunc": true + }, + { + "id": "supabase-db-push", + "title": "supabase db push", + "slug": "supabase-db-push", + "isFunc": true + }, + { + "id": "supabase-db-lint", + "title": "supabase db lint", + "slug": "supabase-db-lint", + "isFunc": true + }, + { + "id": "supabase-db-diff", + "title": "supabase db diff", + "slug": "supabase-db-diff", + "isFunc": true + } + ] + }, + { + "title": "Completion", + "items": [ + { + "id": "supabase-completion", + "title": "supabase completion", + "slug": "supabase-completion", + "isFunc": true + }, + { + "id": "supabase-completion-zsh", + "title": "supabase completion zsh", + "slug": "supabase-completion-zsh", + "isFunc": true + }, + { + "id": "supabase-completion-powershell", + "title": "supabase completion powershell", + "slug": "supabase-completion-powershell", + "isFunc": true + }, + { + "id": "supabase-completion-fish", + "title": "supabase completion fish", + "slug": "supabase-completion-fish", + "isFunc": true + }, + { + "id": "supabase-completion-bash", + "title": "supabase completion bash", + "slug": "supabase-completion-bash", + "isFunc": true + } + ] + } +]