diff --git a/apps/docs/pages/guides/functions/examples/telegram-bot.mdx b/apps/docs/pages/guides/functions/examples/telegram-bot.mdx
index ad87c1a7103..68254bc1b53 100644
--- a/apps/docs/pages/guides/functions/examples/telegram-bot.mdx
+++ b/apps/docs/pages/guides/functions/examples/telegram-bot.mdx
@@ -2,7 +2,7 @@ import Layout from '~/layouts/DefaultGuideLayout'
export const meta = {
id: 'examples-telegram-bot',
- title: 'Telegram Bot',
+ title: 'Building a Telegram Bot',
description: 'Building a Telegram Bot with Edge Functions.',
video: 'https://www.youtube.com/v/AWfE3a9J_uo',
}
diff --git a/apps/docs/pages/guides/functions/examples/upstash-redis.mdx b/apps/docs/pages/guides/functions/examples/upstash-redis.mdx
index 77411c5b1d8..d97d1879e63 100644
--- a/apps/docs/pages/guides/functions/examples/upstash-redis.mdx
+++ b/apps/docs/pages/guides/functions/examples/upstash-redis.mdx
@@ -5,7 +5,16 @@ export const meta = {
description: 'Build an Edge Functions Counter with Upstash Redis.',
}
-A Redis counter example that stores a [hash](https://redis.io/commands/hincrby/) of function invocation count per region.
+
+
+
+
+A Redis counter example that stores a [hash](https://redis.io/commands/hincrby/) of function invocation count per region. Find the code on [GitHub](https://github.com/supabase/supabase/tree/master/examples/edge-functions/supabase/functions/upstash-redis-counter).
## Redis database setup
diff --git a/apps/docs/pages/guides/functions/global-deployments.mdx b/apps/docs/pages/guides/functions/global-deployments.mdx
new file mode 100644
index 00000000000..dbd3810cb71
--- /dev/null
+++ b/apps/docs/pages/guides/functions/global-deployments.mdx
@@ -0,0 +1,49 @@
+import Layout from '~/layouts/DefaultGuideLayout'
+
+export const meta = {
+ id: 'functions-debugging',
+ title: 'Globally Distributed Deployments',
+ description: 'We deploy your code throughout the world, close to your users.',
+}
+
+We deploy your code throughout the world. Each new request is served from the closest region to your user. Currently located in the following regions:
+
+1. Taiwan (`asia-east1`)
+1. Hong Kong (`asia-east2`)
+1. Tokyo (`asia-northeast1`)
+1. Osaka (`asia-northeast2`)
+1. Seoul (`asia-northeast3`)
+1. Mumbai (`asia-south1`)
+1. Delhi (`asia-south2`)
+1. Singapore (`asia-southeast1`)
+1. Jakarta (`asia-southeast2`)
+1. Sydney (`australia-southeast1`)
+1. Melbourne (`australia-southeast2`)
+1. Warsaw (`europe-central2`)
+1. Finland (`europe-north1`)
+1. Belgium (`europe-west1`)
+1. London (`europe-west2`)
+1. Frankfurt (`europe-west3`)
+1. Netherlands (`europe-west4`)
+1. Zurich (`europe-west6`)
+1. Milan (`europe-west8`)
+1. Paris (`europe-west9`)
+1. Tel Aviv (`me-west1`)
+1. Madrid (`europe-southwest1`)
+1. Montréal (`northamerica-northeast1`)
+1. Toronto (`northamerica-northeast2`)
+1. São Paulo (`southamerica-east1`)
+1. Chile (`southamerica-west1`)
+1. Iowa (`us-central1`)
+1. South Carolina (`us-east1`)
+1. North Virginia (`us-east4`)
+1. Ohio (`us-east5`)
+1. Texas (`us-south1`)
+1. Oregon (`us-west1`)
+1. California (`us-west2`)
+1. Utah (`us-west3`)
+1. Nevada (`us-west4`)
+
+export const Page = ({ children }) =>
+
+export default Page
diff --git a/apps/docs/pages/guides/functions/import-maps.mdx b/apps/docs/pages/guides/functions/import-maps.mdx
index 6d61e774b55..f6c360dc3fd 100644
--- a/apps/docs/pages/guides/functions/import-maps.mdx
+++ b/apps/docs/pages/guides/functions/import-maps.mdx
@@ -2,8 +2,8 @@ import Layout from '~/layouts/DefaultGuideLayout'
export const meta = {
id: 'functions-import-maps',
- title: 'Import Maps',
- description: 'Using Import Maps.',
+ title: 'Managing packages using Import Maps',
+ description: 'Managing packages using Import Maps.',
video: 'https://www.youtube.com/v/ILr3cneZuFk',
}
diff --git a/apps/docs/pages/guides/functions/local-development.mdx b/apps/docs/pages/guides/functions/local-development.mdx
index 254cad70044..e3e77c95105 100644
--- a/apps/docs/pages/guides/functions/local-development.mdx
+++ b/apps/docs/pages/guides/functions/local-development.mdx
@@ -2,7 +2,7 @@ import Layout from '~/layouts/DefaultGuideLayout'
export const meta = {
id: 'functions-local-development',
- title: 'Local Development',
+ title: 'Developing Functions locally',
description: 'Run your Edge Functions locally.',
}
diff --git a/apps/docs/pages/guides/functions/schedule-functions.mdx b/apps/docs/pages/guides/functions/schedule-functions.mdx
index 3339fcab8fa..fb4b0552824 100644
--- a/apps/docs/pages/guides/functions/schedule-functions.mdx
+++ b/apps/docs/pages/guides/functions/schedule-functions.mdx
@@ -2,7 +2,7 @@ import Layout from '~/layouts/DefaultGuideLayout'
export const meta = {
id: 'schedule-functions',
- title: 'Schedule Edge Functions',
+ title: 'Scheduling Edge Functions',
description: 'Schedule Edge Functions with pg_cron.',
}
diff --git a/apps/docs/pages/guides/functions/secrets.mdx b/apps/docs/pages/guides/functions/secrets.mdx
index 3487fc94d79..ffbe7920042 100644
--- a/apps/docs/pages/guides/functions/secrets.mdx
+++ b/apps/docs/pages/guides/functions/secrets.mdx
@@ -2,7 +2,7 @@ import Layout from '~/layouts/DefaultGuideLayout'
export const meta = {
id: 'functions-secrets',
- title: 'Secrets and Environment Variables',
+ title: 'Managing Secrets and Environment Variables',
description: 'Managing secrets and environment variables.',
}
diff --git a/apps/docs/pages/guides/functions/examples/storage-caching.mdx b/apps/docs/pages/guides/functions/storage-caching.mdx
similarity index 90%
rename from apps/docs/pages/guides/functions/examples/storage-caching.mdx
rename to apps/docs/pages/guides/functions/storage-caching.mdx
index c9cf4de7be9..e7f70d58b0f 100644
--- a/apps/docs/pages/guides/functions/examples/storage-caching.mdx
+++ b/apps/docs/pages/guides/functions/storage-caching.mdx
@@ -1,8 +1,8 @@
import Layout from '~/layouts/DefaultGuideLayout'
export const meta = {
- id: 'examples-storage-caching',
- title: 'Caching Images with Supabase Storage CDN',
+ id: 'storage-caching',
+ title: 'Integrating with Supabase Storage',
description: 'Integrate Edge Functions with Supabase Storage to cache images on the Edge (CDN).',
video: 'https://www.youtube.com/v/wW6L52v9Ldo',
}
diff --git a/apps/docs/pages/guides/functions/typescript-support.mdx b/apps/docs/pages/guides/functions/typescript-support.mdx
new file mode 100644
index 00000000000..66f6ce4c9b6
--- /dev/null
+++ b/apps/docs/pages/guides/functions/typescript-support.mdx
@@ -0,0 +1,54 @@
+import Layout from '~/layouts/DefaultGuideLayout'
+
+export const meta = {
+ id: 'functions-debugging',
+ title: 'TypeScript Support',
+ description: 'Using TypeScript in Deno Edge Functions.',
+}
+
+One of the benefits of Deno is that it treats TypeScript as a first class
+language, just like JavaScript or Web Assembly, when running code in Deno. What
+that means is you can run or import TypeScript without installing anything more
+than the Deno CLI.
+
+## How does it work?
+
+At a high level, Deno converts TypeScript (as well as TSX and JSX) into
+JavaScript. It does this via a combination of the
+[TypeScript compiler](https://github.com/microsoft/TypeScript), which we build
+into Deno, and a Rust library called [swc](https://swc.rs/). When the code has
+been type checked and transformed, it is stored in a cache, ready for the next
+run without the need to convert it from its source to JavaScript again.
+
+## Strict by default
+
+Deno type checks TypeScript in _strict_ mode by default, and the TypeScript core
+team recommends _strict_ mode as a sensible default. This mode generally enables
+features of TypeScript that probably should have been there from the start, but
+as TypeScript continued to evolve, would be breaking changes for existing code.
+
+## Mixing JavaScript and TypeScript
+
+By default, Deno does not type check JavaScript. This can be changed, and is
+discussed further in [Configuring TypeScript in Deno](./configuration.md). Deno
+does support JavaScript importing TypeScript and TypeScript importing
+JavaScript, in complex scenarios.
+
+An important note though is that when type checking TypeScript, by default Deno
+will "read" all the JavaScript in order to be able to evaluate how it might have
+an impact on the TypeScript types. The type checker will do the best it can to
+figure out what the types are of the JavaScript you import into TypeScript,
+including reading any JSDoc comments. Details of this are discussed in detail in
+the [Types and type declarations](./types.md) section.
+
+## Type resolution
+
+One of the core design principles of Deno is to avoid non-standard module
+resolution, and this applies to type resolution as well. If you want to utilize
+JavaScript that has type definitions (e.g. a `.d.ts` file), you have to
+explicitly tell Deno about this. The details of how this is accomplished are
+covered in the [Types and type declarations](https://deno.land/manual/advanced/typescript/types) section.
+
+export const Page = ({ children }) =>
+
+export default Page
diff --git a/apps/docs/pages/guides/getting-started/tutorials/with-expo.mdx b/apps/docs/pages/guides/getting-started/tutorials/with-expo.mdx
index 5c47ae577b3..2ad275085aa 100644
--- a/apps/docs/pages/guides/getting-started/tutorials/with-expo.mdx
+++ b/apps/docs/pages/guides/getting-started/tutorials/with-expo.mdx
@@ -99,7 +99,7 @@ export default function Auth() {
}
return (
-
+
+
diff --git a/apps/docs/pages/guides/integrations.mdx b/apps/docs/pages/guides/integrations.mdx
index 60e06333e2c..1f491796c81 100644
--- a/apps/docs/pages/guides/integrations.mdx
+++ b/apps/docs/pages/guides/integrations.mdx
@@ -15,7 +15,7 @@ Explore a variety of integrations from Supabase partners. Need a different integ
{item.name}
- {item.items.map((integration) => (
+ {item.items?.map((integration) => (
= observer(
)
const [updates, setUpdates] = useState({
- pgbouncer_enabled: bouncerInfo.pgbouncer_enabled,
pool_mode: bouncerInfo.pool_mode || 'transaction',
default_pool_size: bouncerInfo.default_pool_size || '',
ignore_startup_parameters: bouncerInfo.ignore_startup_parameters || '',
@@ -159,11 +158,6 @@ export const PgbouncerConfig: FC = observer(
const formSchema = {
properties: {
- pgbouncer_enabled: {
- title: 'Enabled',
- type: 'boolean',
- help: 'Activates / deactivates Connection Pooling.',
- },
pool_mode: {
title: 'Pool Mode',
type: 'string',
@@ -176,10 +170,6 @@ export const PgbouncerConfig: FC = observer(
label: 'Session',
value: 'session',
},
- {
- label: 'Statement',
- value: 'statement',
- },
],
},
ignore_startup_parameters: {
@@ -208,16 +198,12 @@ export const PgbouncerConfig: FC = observer(
disabledMessage="You need additional permissions to update connection pooling settings"
>
-
-
-
-
- {updates.pgbouncer_enabled && (
+ {bouncerInfo.pgbouncer_enabled && (
<>