From a788003648960f8c155bd819207fc5d80e5d93b6 Mon Sep 17 00:00:00 2001 From: Copple <10214025+kiwicopple@users.noreply.github.com> Date: Mon, 2 Nov 2020 11:08:02 +0800 Subject: [PATCH] Documentation for the new DX (#253) ## What kind of change does this PR introduce? Updates the docs with the new developer experience: https://deploy-preview-253--supabase.netlify.app/docs - Documents the new Auth using `gotrue-js` - Fixes #179 - Fixes OAuth links https://github.com/supabase/supabase/issues/241#issuecomment-705632335 - [x] Add docs on Policies ## Additional context Related PR on `supabase-js` https://github.com/supabase/supabase-js/pull/50 * Updates the docs for the new Auth DX. * docs: adds docs for subscribing to rows * Updates all the reads * Updates all the docs with the new format * docs: Replaces all { error, data} with data first, because I subjectively think it looks better * Adds some of the breaking changes to a blog post * Adds headings * removes the blog post since it is now in notion * Adds the Oauth changes * removes recharts because we no longer use it * Adds basic structure for GoTrue ref * Adds styles for the api reference docs * Adds more generated docs * Downloads the files to work locally * Adds a supabase generator * Moves some of the guides into the "tools" folder * Re-shuffles some of the pages around * Generated everythign related to the Supabase Client * Refactors and categorieses the pages * Changes the names to be more readable * Migrates almost all of the filters into the API reference * Moves most of the stored procedure filters * Adds realtime-js to the mix * More desciptive titles * Moves all the generated docs to the docs folder * Moves over some of the data manipulators * Extracts most of the client functionality to the API ref * Adds more detail to the guides * Removes the reference to the emulator * Adds the supabase 1.0 blog post * Adds a redirects for netlify * chore: Updates packages * Updates broken links * Adding docs for the server * Adds comments to gotrue and pgapi * Adds a twitter icon to our navbar * Updates the auth with the new user and session return values * Updates the sponsors * Styles for cards * Adds a default value to all of the Tabs --- Makefile | 5 +- examples/todo-next-js/package-lock.json | 192 +- examples/todo-next-js/package.json | 2 +- web/ReferenceGenerator.ts | 244 + web/blog/2020-07-09-postgresql-templates.md | 2 +- web/blog/2020-08-05-supabase-auth.mdx | 2 +- ...20-10-03-supabase-alpha-september-2020.md} | 0 web/blog/2020-10-30-improved-dx.md | 122 + web/docs/client/adj.mdx | 225 + web/docs/client/auth-forgotpassword.mdx | 39 + web/docs/client/auth-onauthstatechange.mdx | 108 + web/docs/client/auth-password-reset.mdx | 39 + web/docs/client/auth-session.mdx | 80 + web/docs/client/auth-signin.mdx | 211 + web/docs/client/auth-signout.mdx | 80 + web/docs/client/auth-signup.mdx | 156 + web/docs/client/auth-update.mdx | 110 + web/docs/client/auth-user.mdx | 80 + web/docs/client/cd.mdx | 225 + web/docs/client/cs.mdx | 225 + web/docs/client/delete.mdx | 87 + web/docs/client/eq.mdx | 225 + web/docs/client/filter.mdx | 278 + web/docs/client/fts.mdx | 107 + .../generating-types.mdx} | 62 +- web/docs/client/getsubscriptions.mdx | 80 + web/docs/client/gt.mdx | 225 + web/docs/client/gte.mdx | 225 + web/docs/client/ilike.mdx | 225 + web/docs/client/in.mdx | 225 + web/docs/client/index.mdx | 19 + web/docs/client/initializing.mdx | 159 + web/docs/client/insert.mdx | 253 + web/docs/client/installing.mdx | 25 + web/docs/client/is.mdx | 225 + web/docs/client/like.mdx | 225 + web/docs/client/limit.mdx | 188 + web/docs/client/lt.mdx | 225 + web/docs/client/lte.mdx | 225 + web/docs/client/match.mdx | 204 + web/docs/client/neq.mdx | 225 + web/docs/client/not.mdx | 245 + web/docs/client/nxl.mdx | 225 + web/docs/client/nxr.mdx | 225 + web/docs/client/on.mdx | 293 + web/docs/client/or.mdx | 141 + web/docs/client/order.mdx | 230 + web/docs/client/ov.mdx | 225 + web/docs/client/phfts.mdx | 107 + web/docs/client/plfts.mdx | 107 + web/docs/client/range.mdx | 177 + web/docs/client/removesubscription.mdx | 104 + web/docs/client/reset-password-email.mdx | 104 + web/docs/client/rpc.mdx | 229 + web/docs/client/select.mdx | 254 + web/docs/client/single.mdx | 87 + web/docs/client/sl.mdx | 225 + web/docs/client/sr.mdx | 225 + web/docs/client/subscribe.mdx | 331 + web/docs/client/update.mdx | 111 + web/docs/client/using-filters.mdx | 12 + web/docs/client/using-modifiers.mdx | 12 + web/docs/client/wfts.mdx | 107 + web/docs/common/_DummyData.mdx | 39 - web/docs/gotrue/client/api-getuser.mdx | 39 + .../gotrue/client/api-refreshaccesstoken.mdx | 39 + .../client/api-resetpasswordforemail.mdx | 39 + .../gotrue/client/api-signinwithemail.mdx | 60 + web/docs/gotrue/client/api-signout.mdx | 39 + .../gotrue/client/api-signupwithemail.mdx | 105 + web/docs/gotrue/client/api-updateuser.mdx | 60 + web/docs/gotrue/client/index.mdx | 12 + web/docs/gotrue/client/initializing.mdx | 169 + web/docs/gotrue/client/installing.mdx | 24 + web/docs/gotrue/client/onauthstatechange.mdx | 8 + web/docs/gotrue/client/session.mdx | 59 + web/docs/gotrue/client/signin.mdx | 177 + web/docs/gotrue/client/signout.mdx | 59 + web/docs/gotrue/client/signup.mdx | 134 + web/docs/gotrue/client/update.mdx | 39 + web/docs/gotrue/client/user.mdx | 59 + web/docs/gotrue/server/about.md | 545 + web/docs/guides/auth.mdx | 122 + web/docs/guides/client-libraries.mdx | 310 + web/docs/guides/database.mdx | 65 + web/docs/guides/platform.mdx | 42 + web/docs/library/delete.mdx | 476 - web/docs/library/examples/delete.js | 281 - web/docs/library/examples/get.js | 459 - web/docs/library/examples/patch.js | 282 - web/docs/library/examples/post.js | 65 - web/docs/library/examples/stored.js | 282 - web/docs/library/examples/subscribe.js | 128 - web/docs/library/examples/users.js | 56 - web/docs/library/get.mdx | 1007 - web/docs/library/patch.mdx | 649 - web/docs/library/post.mdx | 103 - web/docs/library/stored-procedures.mdx | 705 - web/docs/library/subscribe.mdx | 293 - web/docs/library/user-management.mdx | 81 - web/docs/postgres/api/about.md | 13 + .../postgres/{intro.mdx => server/about.md} | 6 +- web/docs/postgres/server/aws.md | 10 + web/docs/postgres/server/digitalocean.md | 40 + web/docs/postgres/server/docker.md | 19 + web/docs/postgrest/client/adj.mdx | 61 + web/docs/postgrest/client/cd.mdx | 61 + web/docs/postgrest/client/cs.mdx | 61 + web/docs/postgrest/client/delete.mdx | 10 + web/docs/postgrest/client/eq.mdx | 61 + web/docs/postgrest/client/filter.mdx | 81 + web/docs/postgrest/client/from.mdx | 39 + web/docs/postgrest/client/fts.mdx | 107 + web/docs/postgrest/client/gt.mdx | 61 + web/docs/postgrest/client/gte.mdx | 61 + web/docs/postgrest/client/ilike.mdx | 61 + web/docs/postgrest/client/in.mdx | 61 + web/docs/postgrest/client/index.mdx | 12 + web/docs/postgrest/client/initializing.mdx | 106 + web/docs/postgrest/client/insert.mdx | 106 + web/docs/postgrest/client/installing.mdx | 25 + web/docs/postgrest/client/is.mdx | 61 + web/docs/postgrest/client/like.mdx | 61 + web/docs/postgrest/client/lt.mdx | 61 + web/docs/postgrest/client/lte.mdx | 61 + web/docs/postgrest/client/neq.mdx | 61 + web/docs/postgrest/client/not.mdx | 81 + web/docs/postgrest/client/nxl.mdx | 61 + web/docs/postgrest/client/nxr.mdx | 61 + web/docs/postgrest/client/ov.mdx | 61 + web/docs/postgrest/client/phfts.mdx | 107 + web/docs/postgrest/client/plfts.mdx | 107 + web/docs/postgrest/client/rpc.mdx | 60 + web/docs/postgrest/client/select.mdx | 39 + web/docs/postgrest/client/sl.mdx | 61 + web/docs/postgrest/client/sr.mdx | 61 + web/docs/postgrest/client/update.mdx | 39 + web/docs/postgrest/client/wfts.mdx | 107 + web/docs/postgrest/server/about.md | 95 + web/docs/realtime/about.md | 44 - web/docs/realtime/client/connect.mdx | 58 + web/docs/realtime/client/disconnect.mdx | 103 + web/docs/realtime/client/index.mdx | 12 + web/docs/realtime/client/initializing.mdx | 60 + web/docs/realtime/client/installing.mdx | 24 + web/docs/realtime/server/about.md | 116 + web/docs/realtime/{ => server}/aws.md | 0 .../realtime/{ => server}/digitalocean.md | 0 web/docs/realtime/{ => server}/docker.md | 0 web/docs/realtime/{ => server}/source.md | 0 web/docusaurus.config.js | 144 +- web/package-lock.json | 2357 +- web/package.json | 20 +- web/sidebar_realtime_server.js | 16 + web/sidebar_spec_gotrue.js | 22 + web/sidebar_spec_postgrest.js | 22 + web/sidebar_spec_realtime.js | 16 + web/sidebar_spec_supabase.js | 40 + web/sidebars.js | 100 +- web/spec/Makefile | 29 + web/spec/combined.json | 28457 ++++++++++++++++ web/spec/gen/components/Example.ts | 12 + web/spec/gen/components/Page.ts | 62 + web/spec/gen/components/Sidebar.ts | 10 + web/spec/gen/components/SidebarCategory.ts | 8 + web/spec/gen/components/Tab.ts | 10 + web/spec/gen/components/Tabs.ts | 13 + web/spec/gen/definitions.ts | 33 + web/spec/gen/lib/helpers.ts | 54 + web/spec/gotrue.json | 7188 ++++ web/spec/gotrue.yml | 164 + web/spec/postgrest.json | 8044 +++++ web/spec/postgrest.yml | 173 + web/spec/realtime.json | 7422 ++++ web/spec/realtime.yml | 79 + web/spec/supabase.json | 5629 +++ web/spec/supabase.yml | 2021 ++ web/src/css/custom.css | 107 + web/src/data/github.js | 4 +- web/src/data/repos/pg-api.json | 20 +- web/src/data/repos/postgres.json | 18 +- web/src/data/repos/realtime.json | 22 +- web/src/data/repos/supabase.json | 24 +- web/src/data/sponsors.json | 174 +- web/src/examples/users.js | 40 + web/src/pages/index.js | 19 - web/src/pages/oss.js | 20 +- web/static/_redirects | 41 + web/static/videos/table-relationships.mp4 | Bin 0 -> 2759218 bytes 189 files changed, 75629 insertions(+), 6475 deletions(-) create mode 100644 web/ReferenceGenerator.ts rename web/blog/{2020-10-03-supabase-alpha-september-2020.mdx => 2020-10-03-supabase-alpha-september-2020.md} (100%) create mode 100644 web/blog/2020-10-30-improved-dx.md create mode 100644 web/docs/client/adj.mdx create mode 100644 web/docs/client/auth-forgotpassword.mdx create mode 100644 web/docs/client/auth-onauthstatechange.mdx create mode 100644 web/docs/client/auth-password-reset.mdx create mode 100644 web/docs/client/auth-session.mdx create mode 100644 web/docs/client/auth-signin.mdx create mode 100644 web/docs/client/auth-signout.mdx create mode 100644 web/docs/client/auth-signup.mdx create mode 100644 web/docs/client/auth-update.mdx create mode 100644 web/docs/client/auth-user.mdx create mode 100644 web/docs/client/cd.mdx create mode 100644 web/docs/client/cs.mdx create mode 100644 web/docs/client/delete.mdx create mode 100644 web/docs/client/eq.mdx create mode 100644 web/docs/client/filter.mdx create mode 100644 web/docs/client/fts.mdx rename web/docs/{library/getting-started.mdx => client/generating-types.mdx} (63%) mode change 100755 => 100644 create mode 100644 web/docs/client/getsubscriptions.mdx create mode 100644 web/docs/client/gt.mdx create mode 100644 web/docs/client/gte.mdx create mode 100644 web/docs/client/ilike.mdx create mode 100644 web/docs/client/in.mdx create mode 100644 web/docs/client/index.mdx create mode 100644 web/docs/client/initializing.mdx create mode 100644 web/docs/client/insert.mdx create mode 100644 web/docs/client/installing.mdx create mode 100644 web/docs/client/is.mdx create mode 100644 web/docs/client/like.mdx create mode 100644 web/docs/client/limit.mdx create mode 100644 web/docs/client/lt.mdx create mode 100644 web/docs/client/lte.mdx create mode 100644 web/docs/client/match.mdx create mode 100644 web/docs/client/neq.mdx create mode 100644 web/docs/client/not.mdx create mode 100644 web/docs/client/nxl.mdx create mode 100644 web/docs/client/nxr.mdx create mode 100644 web/docs/client/on.mdx create mode 100644 web/docs/client/or.mdx create mode 100644 web/docs/client/order.mdx create mode 100644 web/docs/client/ov.mdx create mode 100644 web/docs/client/phfts.mdx create mode 100644 web/docs/client/plfts.mdx create mode 100644 web/docs/client/range.mdx create mode 100644 web/docs/client/removesubscription.mdx create mode 100644 web/docs/client/reset-password-email.mdx create mode 100644 web/docs/client/rpc.mdx create mode 100644 web/docs/client/select.mdx create mode 100644 web/docs/client/single.mdx create mode 100644 web/docs/client/sl.mdx create mode 100644 web/docs/client/sr.mdx create mode 100644 web/docs/client/subscribe.mdx create mode 100644 web/docs/client/update.mdx create mode 100644 web/docs/client/using-filters.mdx create mode 100644 web/docs/client/using-modifiers.mdx create mode 100644 web/docs/client/wfts.mdx delete mode 100644 web/docs/common/_DummyData.mdx create mode 100644 web/docs/gotrue/client/api-getuser.mdx create mode 100644 web/docs/gotrue/client/api-refreshaccesstoken.mdx create mode 100644 web/docs/gotrue/client/api-resetpasswordforemail.mdx create mode 100644 web/docs/gotrue/client/api-signinwithemail.mdx create mode 100644 web/docs/gotrue/client/api-signout.mdx create mode 100644 web/docs/gotrue/client/api-signupwithemail.mdx create mode 100644 web/docs/gotrue/client/api-updateuser.mdx create mode 100644 web/docs/gotrue/client/index.mdx create mode 100644 web/docs/gotrue/client/initializing.mdx create mode 100644 web/docs/gotrue/client/installing.mdx create mode 100644 web/docs/gotrue/client/onauthstatechange.mdx create mode 100644 web/docs/gotrue/client/session.mdx create mode 100644 web/docs/gotrue/client/signin.mdx create mode 100644 web/docs/gotrue/client/signout.mdx create mode 100644 web/docs/gotrue/client/signup.mdx create mode 100644 web/docs/gotrue/client/update.mdx create mode 100644 web/docs/gotrue/client/user.mdx create mode 100644 web/docs/gotrue/server/about.md create mode 100644 web/docs/guides/auth.mdx create mode 100755 web/docs/guides/client-libraries.mdx create mode 100644 web/docs/guides/database.mdx create mode 100644 web/docs/guides/platform.mdx delete mode 100644 web/docs/library/delete.mdx delete mode 100644 web/docs/library/examples/delete.js delete mode 100644 web/docs/library/examples/get.js delete mode 100644 web/docs/library/examples/patch.js delete mode 100644 web/docs/library/examples/post.js delete mode 100644 web/docs/library/examples/stored.js delete mode 100644 web/docs/library/examples/subscribe.js delete mode 100644 web/docs/library/examples/users.js delete mode 100644 web/docs/library/get.mdx delete mode 100644 web/docs/library/patch.mdx delete mode 100644 web/docs/library/post.mdx delete mode 100644 web/docs/library/stored-procedures.mdx delete mode 100644 web/docs/library/subscribe.mdx delete mode 100644 web/docs/library/user-management.mdx create mode 100644 web/docs/postgres/api/about.md rename web/docs/postgres/{intro.mdx => server/about.md} (92%) create mode 100644 web/docs/postgres/server/aws.md create mode 100644 web/docs/postgres/server/digitalocean.md create mode 100644 web/docs/postgres/server/docker.md create mode 100644 web/docs/postgrest/client/adj.mdx create mode 100644 web/docs/postgrest/client/cd.mdx create mode 100644 web/docs/postgrest/client/cs.mdx create mode 100644 web/docs/postgrest/client/delete.mdx create mode 100644 web/docs/postgrest/client/eq.mdx create mode 100644 web/docs/postgrest/client/filter.mdx create mode 100644 web/docs/postgrest/client/from.mdx create mode 100644 web/docs/postgrest/client/fts.mdx create mode 100644 web/docs/postgrest/client/gt.mdx create mode 100644 web/docs/postgrest/client/gte.mdx create mode 100644 web/docs/postgrest/client/ilike.mdx create mode 100644 web/docs/postgrest/client/in.mdx create mode 100644 web/docs/postgrest/client/index.mdx create mode 100644 web/docs/postgrest/client/initializing.mdx create mode 100644 web/docs/postgrest/client/insert.mdx create mode 100644 web/docs/postgrest/client/installing.mdx create mode 100644 web/docs/postgrest/client/is.mdx create mode 100644 web/docs/postgrest/client/like.mdx create mode 100644 web/docs/postgrest/client/lt.mdx create mode 100644 web/docs/postgrest/client/lte.mdx create mode 100644 web/docs/postgrest/client/neq.mdx create mode 100644 web/docs/postgrest/client/not.mdx create mode 100644 web/docs/postgrest/client/nxl.mdx create mode 100644 web/docs/postgrest/client/nxr.mdx create mode 100644 web/docs/postgrest/client/ov.mdx create mode 100644 web/docs/postgrest/client/phfts.mdx create mode 100644 web/docs/postgrest/client/plfts.mdx create mode 100644 web/docs/postgrest/client/rpc.mdx create mode 100644 web/docs/postgrest/client/select.mdx create mode 100644 web/docs/postgrest/client/sl.mdx create mode 100644 web/docs/postgrest/client/sr.mdx create mode 100644 web/docs/postgrest/client/update.mdx create mode 100644 web/docs/postgrest/client/wfts.mdx create mode 100644 web/docs/postgrest/server/about.md delete mode 100644 web/docs/realtime/about.md create mode 100644 web/docs/realtime/client/connect.mdx create mode 100644 web/docs/realtime/client/disconnect.mdx create mode 100644 web/docs/realtime/client/index.mdx create mode 100644 web/docs/realtime/client/initializing.mdx create mode 100644 web/docs/realtime/client/installing.mdx create mode 100644 web/docs/realtime/server/about.md rename web/docs/realtime/{ => server}/aws.md (100%) rename web/docs/realtime/{ => server}/digitalocean.md (100%) rename web/docs/realtime/{ => server}/docker.md (100%) rename web/docs/realtime/{ => server}/source.md (100%) create mode 100644 web/sidebar_realtime_server.js create mode 100644 web/sidebar_spec_gotrue.js create mode 100644 web/sidebar_spec_postgrest.js create mode 100644 web/sidebar_spec_realtime.js create mode 100644 web/sidebar_spec_supabase.js create mode 100644 web/spec/Makefile create mode 100644 web/spec/combined.json create mode 100644 web/spec/gen/components/Example.ts create mode 100644 web/spec/gen/components/Page.ts create mode 100644 web/spec/gen/components/Sidebar.ts create mode 100644 web/spec/gen/components/SidebarCategory.ts create mode 100644 web/spec/gen/components/Tab.ts create mode 100644 web/spec/gen/components/Tabs.ts create mode 100644 web/spec/gen/definitions.ts create mode 100644 web/spec/gen/lib/helpers.ts create mode 100644 web/spec/gotrue.json create mode 100644 web/spec/gotrue.yml create mode 100644 web/spec/postgrest.json create mode 100644 web/spec/postgrest.yml create mode 100644 web/spec/realtime.json create mode 100644 web/spec/realtime.yml create mode 100644 web/spec/supabase.json create mode 100644 web/spec/supabase.yml create mode 100644 web/src/examples/users.js create mode 100644 web/static/_redirects create mode 100644 web/static/videos/table-relationships.mp4 diff --git a/Makefile b/Makefile index c9600afb4c0..a6cdc86ac47 100644 --- a/Makefile +++ b/Makefile @@ -25,11 +25,8 @@ github.issues: github.repos: \ github.repos.supabase \ github.repos.realtime \ - github.repos.marketplace \ - github.repos.pg-api \ - github.repos.postgrest-js \ github.repos.postgres \ - github.repos.doctest-js + github.repos.pg-api github.repos.%: curl -sS https://api.github.com/repos/supabase/$* \ diff --git a/examples/todo-next-js/package-lock.json b/examples/todo-next-js/package-lock.json index e498c6ee404..f7d6f4b7517 100644 --- a/examples/todo-next-js/package-lock.json +++ b/examples/todo-next-js/package-lock.json @@ -1272,32 +1272,69 @@ } } }, - "@supabase/postgrest-js": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.17.0.tgz", - "integrity": "sha512-7Dt7ALli+bOQK51JMolraI08sJg2UweNuGFghr8MrX4nc3WoDwL5PP6fNZwy+j/7f7nvvM6s1OUtqNTvqiW+5Q==", + "@supabase/gotrue-js": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.5.10.tgz", + "integrity": "sha512-SAoT5znv6r/nasJQp35n72dYGkBMWgKsCHc45vrCu8M/XDNpU/9vN8TzzziK4M0tWg3LGKm7MbRkNOwLEk5a8A==", "requires": { - "superagent": "^5.2.1" + "cross-fetch": "^3.0.6" + }, + "dependencies": { + "cross-fetch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", + "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", + "requires": { + "node-fetch": "2.6.1" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } + } + }, + "@supabase/postgrest-js": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.21.0.tgz", + "integrity": "sha512-2MxPodIf1Ij+iR2RYVxziZpBv/9j6zT2d2UWSvdu2GT8yODo1hO2oXXT4cFJqvxmVX6A+z4J39wBqutt9vlttQ==", + "requires": { + "cross-fetch": "^3.0.6" + }, + "dependencies": { + "cross-fetch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", + "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", + "requires": { + "node-fetch": "2.6.1" + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + } } }, "@supabase/realtime-js": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-0.9.0.tgz", - "integrity": "sha512-aYkVsD2hNgD7QPPBV+LALJTexNf8pVhIh9qJC13NnOLYZpudtHbof+rg0dgq5+GIhYa8HzqUMdf+OwwlQVJgsw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.0.6.tgz", + "integrity": "sha512-qzYYBzXteYsqQYlLzoYwee2OloWn3w8YzUFbDYFUPdkUwLs01OIqsm+lRCzKDivmyn2G0FJQjloWcF4BF5TyBg==", "requires": { - "@babel/runtime": "^7.9.2", + "@types/websocket": "^1.0.1", "query-string": "^6.12.1", "websocket": "^1.0.31" } }, "@supabase/supabase-js": { - "version": "0.36.5", - "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-0.36.5.tgz", - "integrity": "sha512-iiY5lDIrbhQjT8grRgXbUfIU5omD8CfNI4Iio3z/DHjsdrzYNf9o0/kRAzVVITPOuqlN9g0QhPt7bzRQKxLbwA==", + "version": "github:kiwicopple/supabase-js#6199fa765eee19a83befd755faff9c9dcb250a00", + "from": "github:kiwicopple/supabase-js#feature/migrate_to_typescript", "requires": { - "@supabase/postgrest-js": "^0.17.0", - "@supabase/realtime-js": "^0.9.0", - "superagent": "^5.2.1" + "@supabase/gotrue-js": "^1.5.10", + "@supabase/postgrest-js": "^0.21.0", + "@supabase/realtime-js": "^1.0.6" } }, "@types/json-schema": { @@ -1305,6 +1342,19 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" }, + "@types/node": { + "version": "14.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.0.tgz", + "integrity": "sha512-BfbIHP9IapdupGhq/hc+jT5dyiBVZ2DdeC5WwJWQWDb0GijQlzUFAeIQn/2GtvZcd2HVUU7An8felIICFTC2qg==" + }, + "@types/websocket": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.1.tgz", + "integrity": "sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q==", + "requires": { + "@types/node": "*" + } + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -1707,11 +1757,6 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -2232,14 +2277,6 @@ "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", "dev": true }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -2297,11 +2334,6 @@ "safe-buffer": "~5.1.1" } }, - "cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -2638,11 +2670,6 @@ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", @@ -3082,11 +3109,6 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "fast-safe-stringify": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", - "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" - }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -3158,21 +3180,6 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==" - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -3854,11 +3861,6 @@ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -3895,24 +3897,6 @@ } } }, - "mime": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", - "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - }, - "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - }, - "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "requires": { - "mime-db": "1.44.0" - } - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -5167,15 +5151,10 @@ } } }, - "qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ==" - }, "query-string": { - "version": "6.13.5", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.5.tgz", - "integrity": "sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==", + "version": "6.13.6", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.13.6.tgz", + "integrity": "sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ==", "requires": { "decode-uri-component": "^0.2.0", "split-on-first": "^1.0.0", @@ -6018,41 +5997,6 @@ "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" }, - "superagent": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-5.3.1.tgz", - "integrity": "sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==", - "requires": { - "component-emitter": "^1.3.0", - "cookiejar": "^2.1.2", - "debug": "^4.1.1", - "fast-safe-stringify": "^2.0.7", - "form-data": "^3.0.0", - "formidable": "^1.2.2", - "methods": "^1.1.2", - "mime": "^2.4.6", - "qs": "^6.9.4", - "readable-stream": "^3.6.0", - "semver": "^7.3.2" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" - } - } - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", diff --git a/examples/todo-next-js/package.json b/examples/todo-next-js/package.json index d975b7eb523..08615355505 100644 --- a/examples/todo-next-js/package.json +++ b/examples/todo-next-js/package.json @@ -7,7 +7,7 @@ "start": "next start" }, "dependencies": { - "@supabase/supabase-js": "^0.36.5", + "@supabase/supabase-js": "github:kiwicopple/supabase-js#feature/migrate_to_typescript", "next": "latest", "react": "^16.13.1", "react-dom": "^16.13.1" diff --git a/web/ReferenceGenerator.ts b/web/ReferenceGenerator.ts new file mode 100644 index 00000000000..5273f612c40 --- /dev/null +++ b/web/ReferenceGenerator.ts @@ -0,0 +1,244 @@ +/** + * Usage: + * ts-node docGen.ts -o {output_dir} {input}.yml + */ + +import Example from './spec/gen/components/Example' +import Page from './spec/gen/components/Page' +import Sidebar from './spec/gen/components/Sidebar' +import SidebarCategory from './spec/gen/components/SidebarCategory' +import Tab from './spec/gen/components/Tab' +import Tabs from './spec/gen/components/Tabs' +import { slugify, tsDocCommentToMdComment, writeToDisk } from './spec/gen/lib/helpers' +import { TsDoc, OpenRef } from './spec/gen/definitions' + +const yaml = require('js-yaml') +const fs = require('fs') + +const main = (fileNames, options) => { + try { + const outputDir = options.o || options.output || '' + fileNames.forEach((inputFileName) => { + gen(inputFileName, outputDir) + }) + return + } catch (e) { + console.log(e) + } +} + +async function gen(inputFileName, outputDir) { + const docSpec = yaml.safeLoad(fs.readFileSync(inputFileName, 'utf8')) + const defRef = fs.readFileSync(docSpec.info.definition, 'utf8') + if (!defRef) return + + const definition = JSON.parse(defRef) + const allLanguages = docSpec.info.libraries + const pages = Object.entries(docSpec.pages).map(([name, x]: [string, OpenRef.Page]) => ({ + ...x, + pageName: name, + })) + + // Sidebar + const inputFileNameToSnakeCase = inputFileName.replace('/', '_').replace('.yml', '') + const sidebarFileName = `sidebar_${inputFileNameToSnakeCase}.js` + const sidebar = generateSidebar(docSpec) + await writeToDisk(sidebarFileName, sidebar) + console.log('Sidebar created: ', sidebarFileName) + + // Index Page + const indexFilename = outputDir + `/index.mdx` + const index = generateDocsIndexPage(docSpec) + await writeToDisk(indexFilename, index) + console.log('The index was saved: ', indexFilename) + + // Generate Pages + pages.forEach(async (pageSpec: OpenRef.Page) => { + try { + const slug = slugify(pageSpec.pageName) + const hasTsRef = pageSpec['$ref'] || null + const tsDefinition = hasTsRef && extractTsDocNode(hasTsRef, definition) + if (hasTsRef && !tsDefinition) throw new Error('Definition not found: ' + hasTsRef) + + const description = + pageSpec.description || tsDocCommentToMdComment(getDescriptionFromDefintion(tsDefinition)) + + // Create page + const content = Page({ + slug, + id: slug, + title: pageSpec.title || pageSpec.pageName, + description, + parameters: hasTsRef ? generateParameters(tsDefinition) : '', + spotlight: generateSpotlight(pageSpec['examples'] || [], allLanguages), + examples: generateExamples(pageSpec['examples'] || [], allLanguages), + notes: pageSpec.notes, + }) + + // Write to disk + const dest = outputDir + `/${slug}.mdx` + await writeToDisk(dest, content) + console.log('Saved: ', dest) + } catch (error) { + console.error(error) + } + }) +} + +function generateParameters(tsDefinition: any) { + let functionDeclaration = null + if (tsDefinition.kindString == 'Method') { + functionDeclaration = tsDefinition + } else if (tsDefinition.kindString == 'Constructor') { + functionDeclaration = tsDefinition + } else functionDeclaration = tsDefinition?.type?.declaration + if (!functionDeclaration) return '' + + const paramDefinitions: TsDoc.TypeDefinition[] = functionDeclaration.signatures[0].parameters // PMC: seems flaky.. why the [0]? + if (!paramDefinitions) return '' + + // const paramsComments: TsDoc.CommentTag = tsDefinition.comment?.tags?.filter(x => x.tag == 'param') + let parameters = paramDefinitions.map((x) => recurseThroughParams(x)).join(`\n`) + return methodListGroup(parameters) +} + +function getDescriptionFromDefintion(tsDefinition) { + if (!tsDefinition) return null + if (['Method', 'Constructor', 'Constructor signature'].includes(tsDefinition.kindString)) + return tsDefinition?.signatures[0].comment + else return tsDefinition?.comment || '' +} + +function recurseThroughParams(paramDefinition: TsDoc.TypeDefinition) { + let children = paramDefinition.type?.declaration?.children + const labelParams = { + name: paramDefinition.name, + isOptional: !!paramDefinition.flags.isOptional, + type: extractParamTypeAsString(paramDefinition), + description: paramDefinition.comment ? tsDocCommentToMdComment(paramDefinition.comment) : null, + } + let subContent = '' + + if (!!children) { + let properties = children + .sort((a, b) => (a.flags?.isOptional ? 1 : -1)) // required params first + .map((x) => recurseThroughParams(x)) + let heading = `
Properties
` + subContent = methodListGroup([heading].concat(properties).join('\n')) + } + + return methodListItemLabel(labelParams, subContent) +} + +const methodListGroup = (items) => ` + +` + +const methodListItemLabel = ({ name, isOptional, type, description }, subContent) => ` +
  • +

    + + ${name} + + + ${isOptional ? 'optional' : 'required'} + + + ${type} + +

    +
    + +${description ? description : 'No description provided. '} + +
    + ${subContent} +
  • +` + +function generateExamples(specExamples: any, allLanguages: any) { + return specExamples.map((example) => { + let allTabs = Tabs(allLanguages, generateTabs(allLanguages, example)) + return Example({ name: example.name, description: example.description, tabs: allTabs }) + }) +} + +/** + * A spotlight is an example which appears at the top of the page. + */ +function generateSpotlight(specExamples: any, allLanguages: any) { + const spotlight = specExamples.find((x) => x.isSpotlight) || null + const spotlightContent = !spotlight + ? '' + : Tabs(allLanguages, generateTabs(allLanguages, spotlight)) + return spotlightContent +} + +function generateTabs(allLanguages: any, example: any) { + return allLanguages + .map((library) => { + let content = example[library.id] || notImplemented + return Tab(library.id, content) + }) + .join('\n') +} + +const notImplemented = ` +\`\`\` +Not yet implemented +\`\`\` +` + +function extractParamTypeAsString(paramDefinition) { + if (paramDefinition.type?.name) { + return paramDefinition.type.name + } + if (paramDefinition.type?.type == 'union') { + return paramDefinition.type.types.map((x) => x.value).join(' | ') + } else { + return 'object' + } +} + +/** + * Iterates through the definition to find the correct definition. + * You can pass it a deeply nested node using dot notation. eg: 'LoggedInUser.data.email' + */ +function extractTsDocNode(nodeToFind: string, definition: any) { + const nodePath = nodeToFind.split('.') + let i = 0 + let currentNode = definition + while (i < nodePath.length) { + currentNode = currentNode.children.find((x) => x.name == nodePath[i]) || null + if (currentNode == null) break + i++ + } + return currentNode +} + +function generateSidebar(docSpec: any) { + let path = docSpec.info.docs.path || '' + let categories = docSpec.info.docs.sidebar.map((x) => { + const items = x.items.map((item) => { + let slug = slugify(item) + return `'${path}${slug}'` + }) + return SidebarCategory(x.name, items) + }) + return Sidebar(categories) +} + +function generateDocsIndexPage(docSpec: any) { + return Page({ + slug: slugify(docSpec.info.title), + id: 'index', + title: docSpec.info.title, + description: docSpec.info.description, + }) +} + +// Run everything +const argv = require('minimist')(process.argv.slice(2)) +main(argv['_'], argv) diff --git a/web/blog/2020-07-09-postgresql-templates.md b/web/blog/2020-07-09-postgresql-templates.md index ad0f758f0d6..ba6910f735c 100644 --- a/web/blog/2020-07-09-postgresql-templates.md +++ b/web/blog/2020-07-09-postgresql-templates.md @@ -14,7 +14,7 @@ Whenever you create a new database in Postgres, you are actually [basing it off -This database, `template1`, and another, called `template0`, are standard system databases that exist in every newly created database cluster. Don't believe me? Why not quickly [spin up a database](/docs/postgres/postgres-intro) and see it for yourself with this query: +This database, `template1`, and another, called `template0`, are standard system databases that exist in every newly created database cluster. Don't believe me? Why not quickly [spin up a database](/docs/postgres/server/about) and see it for yourself with this query: ```sql SELECT * FROM pg_database; ``` diff --git a/web/blog/2020-08-05-supabase-auth.mdx b/web/blog/2020-08-05-supabase-auth.mdx index ea80140f310..33cd05c5c6a 100644 --- a/web/blog/2020-08-05-supabase-auth.mdx +++ b/web/blog/2020-08-05-supabase-auth.mdx @@ -35,7 +35,7 @@ Supabase Auth provides all the backend services you need to authenticate and aut ### User management -Supabase makes it simple to onboard your users with our new `supabase.auth.signup()` and `supabase.auth.login()` [functions](/docs/library/user-management). +Supabase makes it simple to onboard your users with our new `supabase.auth.signup()` and `supabase.auth.login()` [functions](/docs/guides/auth).