Every atomic assertion extracted from the underlying record, ranked by evidence strength.
`supabase-js` is an isomorphic JavaScript library.
`supabase-js` can interact with a Postgres database.
`supabase-js` can listen to database changes.
`supabase-js` can invoke Deno Edge Functions.
`supabase-js` can build login and user management functionality.
`supabase-js` can manage large files.
`supabase-js` can be installed via npm.
`supabase-js` can be installed via CDN.
`supabase-js` can be used in the Deno runtime via JSR.
`supabase-js` uses the Data API to query Postgres data.
`supabase-js` uses the Data API to mutate Postgres data.
Data API roles require permissions to access tables.
Data API roles require permissions to access functions.
Permissions for Data API roles can be granted via Data API integrations settings.
Permissions for Data API roles can be granted via SQL.
Row Level Security (RLS) should be enabled for tables when granting client role access.
Policies should be created for each role's allowed operations.
The `anon` role can be granted `select` permission on tables.
The `authenticated` role can be granted `select` permission on tables.
The `authenticated` role can be granted `insert` permission on tables.
The `authenticated` role can be granted `update` permission on tables.
The `authenticated` role can be granted `delete` permission on tables.
The `service_role` can be granted `all` permissions on tables.
The `authenticated` role can be granted `execute` permission on functions.
The `service_role` can be granted `execute` permission on functions.
The `createClient` function initializes the Supabase client.
The `createClient` function requires a `supabaseUrl` parameter of type string.
The `createClient` function requires a `supabaseKey` parameter of type string.
The `createClient` function accepts an optional `options` parameter of type `SupabaseClientOptions`.
`supabase-js` supports TypeScript.
`supabase-js` TypeScript support includes type inference.
`supabase-js` TypeScript support includes autocompletion.
`supabase-js` TypeScript support includes type-safe queries.
`supabase-js` detects `not null` constraints for TypeScript typing.
`supabase-js` detects generated columns for TypeScript typing.
Nullable columns in `supabase-js` are typed as `T | null`.
Generated columns in `supabase-js` show a type error when inserted into.
`supabase-js` detects relationships between tables for TypeScript typing.
One-to-many relationships in `supabase-js` are typed as `T[]`.
Many-to-one relationships in `supabase-js` are typed as `T | null`.
Supabase CLI can generate TypeScript types for `supabase-js`.
TypeScript types for `supabase-js` can be generated from the Supabase dashboard.
Generated TypeScript types for `supabase-js` are based on the database schema.
The `overrideTypes` method can partially override the type of returned data.
The `overrideTypes` method can completely replace the type of returned data.
The `select()` method performs a SELECT query on a table or view.
The `select()` method's `count` option returns the total number of rows that match filters.
Supabase projects return a maximum of 1,000 rows by default.
The default maximum row limit of 1,000 can be changed in project's API settings.
The `range()` method can be used for pagination.
The `select()` method can be combined with filters.
The `select()` method can be combined with modifiers.
`apikey` is a reserved keyword in the Supabase Platform and should be avoided as a column name.
The `select()` method accepts an optional `columns` parameter.
The `select()` method accepts an optional `options` parameter.
The `insert()` method performs an INSERT query on a table or view.
By default, the `insert()` method does not return inserted rows.
The `insert()` method can return inserted rows by chaining with `.select()`.
The `insert()` method requires a `values` parameter (object or array).
Supabase provides a JavaScript client library named `supabase-js`.