diff --git a/apps/docs/components/Extensions.js b/apps/docs/components/Extensions.js
deleted file mode 100644
index 47753d6bfde..00000000000
--- a/apps/docs/components/Extensions.js
+++ /dev/null
@@ -1,35 +0,0 @@
-import React, { useState } from 'react'
-import extensions from '../data/extensions.json'
-
-export default function Extensions() {
- const [filter, setFilter] = useState('')
- return (
- <>
-
-
- setFilter(e.target.value)}
- />
-
-
- {extensions
- .filter((x) => x.name.indexOf(filter) >= 0)
- .map((extension) => (
-
-
-
- {extension.name}
-
-
- {extension.comment.charAt(0).toUpperCase() + extension.comment.slice(1)}
-
-
-
- ))}
-
- >
- )
-}
diff --git a/apps/docs/components/Extensions.tsx b/apps/docs/components/Extensions.tsx
new file mode 100644
index 00000000000..0175afe77a5
--- /dev/null
+++ b/apps/docs/components/Extensions.tsx
@@ -0,0 +1,126 @@
+import Link from 'next/link'
+import React, { useState } from 'react'
+import { IconExternalLink, IconX, Input } from 'ui'
+import extensions from '../data/extensions.json'
+
+type extension = {
+ name: string
+ schema: string | null
+ default_version: string
+ installed_version: string | null
+ comment: string
+ tags: string[]
+ link?: string
+}
+
+function getUniqueTags(json: extension[]) {
+ const tags = []
+ for (const item of json) {
+ tags.push(...item.tags)
+ }
+ return [...new Set(tags)]
+}
+
+export default function Extensions() {
+ const [searchTerm, setSearchTerm] = useState('')
+ const [filters, setFilters] = useState([])
+
+ const tags = getUniqueTags(extensions)
+
+ function handleChecked(tag) {
+ if (filters.includes(tag)) {
+ setFilters(filters.filter((x) => x !== tag))
+ } else {
+ setFilters([...filters, tag])
+ }
+ }
+
+ return (
+ <>
+
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+
+
Filter
+
+
+
+
+
+
+
+
+
+ {extensions
+ .filter((x) => x.name.indexOf(searchTerm) >= 0)
+ .filter((x) =>
+ filters.length === 0 ? x : x.tags.some((item) => filters.includes(item))
+ )
+ .map((extension) => (
+
+
+
+ {extension.name}
+
+
+ {extension.comment.charAt(0).toUpperCase() + extension.comment.slice(1)}
+
+ {extension.link && (
+
+
+
+
+
+
+
+ )}
+
+
+ ))}
+
+
+
+ >
+ )
+}
diff --git a/apps/docs/data/extensions.json b/apps/docs/data/extensions.json
index 164600eb93e..c04f21f0543 100644
--- a/apps/docs/data/extensions.json
+++ b/apps/docs/data/extensions.json
@@ -4,489 +4,560 @@
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "Used to parse an address into constituent elements. Generally used to support geocoding address normalization step."
+ "comment": "Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.",
+ "tags": [],
+ "link": "http://supabase.com/docs/guides/extensions/etc/etc/etc"
},
{
"name": "address_standardizer-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "Used to parse an address into constituent elements. Generally used to support geocoding address normalization step."
+ "comment": "Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.",
+ "tags": []
},
{
"name": "address_standardizer_data_us",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "Address Standardizer US dataset example"
+ "comment": "Address Standardizer US dataset example",
+ "tags": []
},
{
"name": "address_standardizer_data_us-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "Address Standardizer US dataset example"
+ "comment": "Address Standardizer US dataset example",
+ "tags": ["addresses"]
},
{
"name": "adminpack",
"schema": null,
"default_version": "2.0",
"installed_version": null,
- "comment": "administrative functions for PostgreSQL"
+ "comment": "administrative functions for PostgreSQL",
+ "tags": []
},
{
"name": "amcheck",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "functions for verifying relation integrity"
+ "comment": "functions for verifying relation integrity",
+ "tags": []
},
{
"name": "autoinc",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "functions for autoincrementing fields"
+ "comment": "functions for autoincrementing fields",
+ "tags": []
},
{
"name": "bloom",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "bloom access method - signature file based index"
+ "comment": "bloom access method - signature file based index",
+ "tags": []
},
{
"name": "btree_gin",
"schema": null,
"default_version": "1.3",
"installed_version": null,
- "comment": "support for indexing common datatypes in GIN"
+ "comment": "support for indexing common datatypes in GIN",
+ "tags": []
},
{
"name": "btree_gist",
"schema": null,
"default_version": "1.5",
"installed_version": null,
- "comment": "support for indexing common datatypes in GiST"
+ "comment": "support for indexing common datatypes in GiST",
+ "tags": []
},
{
"name": "citext",
"schema": null,
"default_version": "1.6",
"installed_version": null,
- "comment": "data type for case-insensitive character strings"
+ "comment": "data type for case-insensitive character strings",
+ "tags": []
},
{
"name": "cube",
"schema": null,
"default_version": "1.4",
"installed_version": null,
- "comment": "data type for multidimensional cubes"
+ "comment": "data type for multidimensional cubes",
+ "tags": []
},
{
"name": "dblink",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "connect to other PostgreSQL databases from within a database"
+ "comment": "connect to other PostgreSQL databases from within a database",
+ "tags": []
},
{
"name": "dict_int",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "text search dictionary template for integers"
+ "comment": "text search dictionary template for integers",
+ "tags": []
},
{
"name": "dict_xsyn",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "text search dictionary template for extended synonym processing"
+ "comment": "text search dictionary template for extended synonym processing",
+ "tags": []
},
{
"name": "earthdistance",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "calculate great-circle distances on the surface of the Earth"
+ "comment": "calculate great-circle distances on the surface of the Earth",
+ "tags": []
},
{
"name": "file_fdw",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "foreign-data wrapper for flat file access"
+ "comment": "foreign-data wrapper for flat file access",
+ "tags": []
},
{
"name": "fuzzystrmatch",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "determine similarities and distance between strings"
+ "comment": "determine similarities and distance between strings",
+ "tags": []
},
{
"name": "hstore",
"schema": null,
"default_version": "1.6",
"installed_version": null,
- "comment": "data type for storing sets of (key, value) pairs"
+ "comment": "data type for storing sets of (key, value) pairs",
+ "tags": []
},
{
"name": "http",
"schema": "extensions",
"default_version": "1.3",
"installed_version": "1.3",
- "comment": "HTTP client for PostgreSQL, allows web page retrieval inside the database."
+ "comment": "HTTP client for PostgreSQL, allows web page retrieval inside the database.",
+ "tags": []
},
{
"name": "insert_username",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "functions for tracking who changed a table"
+ "comment": "functions for tracking who changed a table",
+ "tags": []
},
{
"name": "intagg",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "integer aggregator and enumerator (obsolete)"
+ "comment": "integer aggregator and enumerator (obsolete)",
+ "tags": []
},
{
"name": "intarray",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "functions, operators, and index support for 1-D arrays of integers"
+ "comment": "functions, operators, and index support for 1-D arrays of integers",
+ "tags": []
},
{
"name": "isn",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "data types for international product numbering standards"
+ "comment": "data types for international product numbering standards",
+ "tags": []
},
{
"name": "lo",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "Large Object maintenance"
+ "comment": "Large Object maintenance",
+ "tags": []
},
{
"name": "ltree",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "data type for hierarchical tree-like structures"
+ "comment": "data type for hierarchical tree-like structures",
+ "tags": []
},
{
"name": "moddatetime",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "functions for tracking last modification time"
+ "comment": "functions for tracking last modification time",
+ "tags": []
},
{
"name": "pageinspect",
"schema": null,
"default_version": "1.7",
"installed_version": null,
- "comment": "inspect the contents of database pages at a low level"
+ "comment": "inspect the contents of database pages at a low level",
+ "tags": []
},
{
"name": "pg_buffercache",
"schema": null,
"default_version": "1.3",
"installed_version": null,
- "comment": "examine the shared buffer cache"
+ "comment": "examine the shared buffer cache",
+ "tags": []
},
{
"name": "pg_cron",
"schema": "extensions",
"default_version": "1.3",
"installed_version": "1.3",
- "comment": "Job scheduler for PostgreSQL"
+ "comment": "Job scheduler for PostgreSQL",
+ "tags": []
},
{
"name": "pg_freespacemap",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "examine the free space map (FSM)"
+ "comment": "examine the free space map (FSM)",
+ "tags": []
},
{
"name": "pg_prewarm",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "prewarm relation data"
+ "comment": "prewarm relation data",
+ "tags": []
},
{
"name": "pg_stat_statements",
"schema": null,
"default_version": "1.7",
"installed_version": null,
- "comment": "track execution statistics of all SQL statements executed"
+ "comment": "track execution statistics of all SQL statements executed",
+ "tags": []
},
{
"name": "pg_trgm",
"schema": null,
"default_version": "1.4",
"installed_version": null,
- "comment": "text similarity measurement and index searching based on trigrams"
+ "comment": "text similarity measurement and index searching based on trigrams",
+ "tags": []
},
{
"name": "pg_visibility",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "examine the visibility map (VM) and page-level visibility info"
+ "comment": "examine the visibility map (VM) and page-level visibility info",
+ "tags": []
},
{
"name": "pgaudit",
"schema": null,
"default_version": "1.4",
"installed_version": null,
- "comment": "provides auditing functionality"
+ "comment": "provides auditing functionality",
+ "tags": []
},
{
"name": "pgcrypto",
"schema": "extensions",
"default_version": "1.3",
"installed_version": "1.3",
- "comment": "cryptographic functions"
+ "comment": "cryptographic functions",
+ "tags": []
},
{
"name": "pgjwt",
"schema": "extensions",
"default_version": "0.1.0",
"installed_version": "0.1.0",
- "comment": "JSON Web Token API for Postgresql"
+ "comment": "JSON Web Token API for Postgresql",
+ "tags": []
},
{
"name": "pgrowlocks",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "show row-level locking information"
+ "comment": "show row-level locking information",
+ "tags": []
},
{
"name": "pgstattuple",
"schema": null,
"default_version": "1.5",
"installed_version": null,
- "comment": "show tuple-level statistics"
+ "comment": "show tuple-level statistics",
+ "tags": []
},
{
"name": "pgtap",
"schema": null,
"default_version": "1.1.0",
"installed_version": null,
- "comment": "Unit testing for PostgreSQL"
+ "comment": "Unit testing for PostgreSQL",
+ "tags": []
},
{
"name": "plcoffee",
"schema": null,
"default_version": "3.0alpha",
"installed_version": null,
- "comment": "PL/CoffeeScript (v8) trusted procedural language"
+ "comment": "PL/CoffeeScript (v8) trusted procedural language",
+ "tags": []
},
{
"name": "pljava",
"schema": null,
"default_version": "1.6.0",
"installed_version": null,
- "comment": "PL/Java procedural language (https://tada.github.io/pljava/)"
+ "comment": "PL/Java procedural language (https://tada.github.io/pljava/)",
+ "tags": []
},
{
"name": "plls",
"schema": null,
"default_version": "3.0alpha",
"installed_version": null,
- "comment": "PL/LiveScript (v8) trusted procedural language"
+ "comment": "PL/LiveScript (v8) trusted procedural language",
+ "tags": []
},
{
"name": "plpgsql",
"schema": "pg_catalog",
"default_version": "1.0",
"installed_version": "1.0",
- "comment": "PL/pgSQL procedural language"
+ "comment": "PL/pgSQL procedural language",
+ "tags": []
},
{
"name": "plpgsql_check",
"schema": null,
"default_version": "1.11",
"installed_version": null,
- "comment": "extended check for plpgsql functions"
+ "comment": "extended check for plpgsql functions",
+ "tags": []
},
{
"name": "plv8",
"schema": null,
"default_version": "3.0alpha",
"installed_version": null,
- "comment": "PL/JavaScript (v8) trusted procedural language"
+ "comment": "PL/JavaScript (v8) trusted procedural language",
+ "tags": []
},
{
"name": "postgis",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS geometry and geography spatial types and functions"
+ "comment": "PostGIS geometry and geography spatial types and functions",
+ "tags": ["GIS"]
},
{
"name": "postgis-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS geometry and geography spatial types and functions"
+ "comment": "PostGIS geometry and geography spatial types and functions",
+ "tags": ["GIS"]
},
{
"name": "postgis_raster",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS raster types and functions"
+ "comment": "PostGIS raster types and functions",
+ "tags": ["GIS"]
},
{
"name": "postgis_raster-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS raster types and functions"
+ "comment": "PostGIS raster types and functions",
+ "tags": ["GIS"]
},
{
"name": "postgis_sfcgal",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS SFCGAL functions"
+ "comment": "PostGIS SFCGAL functions",
+ "tags": ["GIS"]
},
{
"name": "postgis_sfcgal-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS SFCGAL functions"
+ "comment": "PostGIS SFCGAL functions",
+ "tags": ["GIS"]
},
{
"name": "postgis_tiger_geocoder",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS tiger geocoder and reverse geocoder"
+ "comment": "PostGIS tiger geocoder and reverse geocoder",
+ "tags": ["GIS"]
},
{
"name": "postgis_tiger_geocoder-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS tiger geocoder and reverse geocoder"
+ "comment": "PostGIS tiger geocoder and reverse geocoder",
+ "tags": ["GIS"]
},
{
"name": "postgis_topology",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS topology spatial types and functions"
+ "comment": "PostGIS topology spatial types and functions",
+ "tags": ["GIS"]
},
{
"name": "postgis_topology-3",
"schema": null,
"default_version": "3.1.1",
"installed_version": null,
- "comment": "PostGIS topology spatial types and functions"
+ "comment": "PostGIS topology spatial types and functions",
+ "tags": ["GIS"]
},
{
"name": "postgres_fdw",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "foreign-data wrapper for remote PostgreSQL servers"
+ "comment": "foreign-data wrapper for remote PostgreSQL servers",
+ "tags": []
},
{
"name": "refint",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "functions for implementing referential integrity (obsolete)"
+ "comment": "functions for implementing referential integrity (obsolete)",
+ "tags": []
},
{
"name": "seg",
"schema": null,
"default_version": "1.3",
"installed_version": null,
- "comment": "data type for representing line segments or floating-point intervals"
+ "comment": "data type for representing line segments or floating-point intervals",
+ "tags": []
},
{
"name": "sslinfo",
"schema": null,
"default_version": "1.2",
"installed_version": null,
- "comment": "information about SSL certificates"
+ "comment": "information about SSL certificates",
+ "tags": []
},
{
"name": "tablefunc",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "functions that manipulate whole tables, including crosstab"
+ "comment": "functions that manipulate whole tables, including crosstab",
+ "tags": []
},
{
"name": "tcn",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "Triggered change notifications"
+ "comment": "Triggered change notifications",
+ "tags": ["notifications"]
},
{
"name": "tsm_system_rows",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "TABLESAMPLE method which accepts number of rows as a limit"
+ "comment": "TABLESAMPLE method which accepts number of rows as a limit",
+ "tags": []
},
{
"name": "tsm_system_time",
"schema": null,
"default_version": "1.0",
"installed_version": null,
- "comment": "TABLESAMPLE method which accepts time in milliseconds as a limit"
+ "comment": "TABLESAMPLE method which accepts time in milliseconds as a limit",
+ "tags": []
},
{
"name": "unaccent",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "text search dictionary that removes accents"
+ "comment": "text search dictionary that removes accents",
+ "tags": []
},
{
"name": "uuid-ossp",
"schema": "extensions",
"default_version": "1.1",
"installed_version": "1.1",
- "comment": "generate universally unique identifiers (UUIDs)"
+ "comment": "generate universally unique identifiers (UUIDs)",
+ "tags": []
},
{
"name": "vector",
"schema": "extensions",
"default_version": "0.4.0",
"installed_version": null,
- "comment": "vector data type with similarity search"
+ "comment": "vector data type with similarity search",
+ "tags": []
},
{
"name": "xml2",
"schema": null,
"default_version": "1.1",
"installed_version": null,
- "comment": "XPath querying and XSLT"
+ "comment": "XPath querying and XSLT",
+ "tags": []
},
{
"name": "pg_repack",
"schema": "extensions",
"default_version": "1.4.8",
"installed_version": "1.4.8",
- "comment": "optimize physical storage and remove bloat from tables and indexes"
+ "comment": "optimize physical storage and remove bloat from tables and indexes",
+ "tags": []
}
]
diff --git a/apps/docs/pages/guides/database/extensions.mdx b/apps/docs/pages/guides/database/extensions.mdx
index 6ae1fd74546..0002a0e9ab3 100644
--- a/apps/docs/pages/guides/database/extensions.mdx
+++ b/apps/docs/pages/guides/database/extensions.mdx
@@ -23,10 +23,6 @@ Supabase has pre-installed some of the most useful open source extensions.
2. Click **Extensions** in the sidebar.
3. Enable or disable an extension.
-
-
diff --git a/apps/docs/tsconfig.json b/apps/docs/tsconfig.json
index ce8de4c02e1..c87a0e51e07 100644
--- a/apps/docs/tsconfig.json
+++ b/apps/docs/tsconfig.json
@@ -6,7 +6,7 @@
"paths": {
"~/*": ["./*"]
},
- "target": "es5",
+ "target": "es2015",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,