From 8168a9e85fdace79959100c0b4840a7108724cc9 Mon Sep 17 00:00:00 2001
From: Copple <10214025+kiwicopple@users.noreply.github.com>
Date: Tue, 23 Nov 2021 13:47:50 +0800
Subject: [PATCH 001/100] Adds the latest sponsors
---
web/sponsors.js | 1 +
web/src/data/sponsors.json | 10 +++++-----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/web/sponsors.js b/web/sponsors.js
index 385612ed914b8..324addddc8fbd 100644
--- a/web/sponsors.js
+++ b/web/sponsors.js
@@ -65,6 +65,7 @@ const writeFile = (data) => {
const main = async () => {
const sponsorsResponse = await fetchAllSponsors()
+ console.log('sponsorsResponse.totalCount', sponsorsResponse.totalCount)
const formatted = formatResults(sponsorsResponse)
writeFile(formatted)
}
diff --git a/web/src/data/sponsors.json b/web/src/data/sponsors.json
index 613b7aedd9219..5d175c86a573e 100644
--- a/web/src/data/sponsors.json
+++ b/web/src/data/sponsors.json
@@ -73,7 +73,7 @@
},
{
"tier": "$5 a month",
- "sponsor": "alienzz"
+ "sponsor": "avatus"
},
{
"tier": "$5 a month",
@@ -91,10 +91,6 @@
"tier": "$5 a month",
"sponsor": "glassmonkey"
},
- {
- "tier": "$5 a month",
- "sponsor": "zoutiyx"
- },
{
"tier": "$5 a month",
"sponsor": "adammoyle"
@@ -175,6 +171,10 @@
"tier": "$5 a month",
"sponsor": "killshot13"
},
+ {
+ "tier": "$5 a month",
+ "sponsor": "brdtheo"
+ },
{
"tier": "$19 a month",
"sponsor": "d-mok"
From cda6e39c278409b29cd0ba25fcc8ab946ef4908e Mon Sep 17 00:00:00 2001
From: Copple <10214025+kiwicopple@users.noreply.github.com>
Date: Wed, 24 Nov 2021 10:29:33 +0800
Subject: [PATCH 002/100] Fix graphql query
---
web/sponsors.js | 25 +++--
web/src/data/sponsors.json | 199 +------------------------------------
2 files changed, 15 insertions(+), 209 deletions(-)
diff --git a/web/sponsors.js b/web/sponsors.js
index 324addddc8fbd..f24dd077fba1c 100644
--- a/web/sponsors.js
+++ b/web/sponsors.js
@@ -3,21 +3,23 @@ var axios = require('axios')
var fs = require('fs')
const query = `
-query BIO_QUERY($username: String!) {
- organization(login: $username) {
+query Sponsors {
+ organization(login: "supabase") {
id
- sponsorshipsAsMaintainer(first: 100) {
- totalCount
+ sponsors(first: 100) {
nodes {
- createdAt
- privacyLevel
- tier {
- name
+ ... on Organization {
+ id
+ createdAt
+ name : login
}
- sponsor {
+ ... on User {
+ id
+ createdAt
login
}
}
+ totalCount
}
}
}
@@ -39,10 +41,11 @@ const fetchAllSponsors = async () => {
},
}
)
- return data.data.organization.sponsorshipsAsMaintainer
+ return data.data.organization.sponsors
}
const formatResults = (graphqlResponse) => {
+ console.log('graph', graphqlResponse)
return graphqlResponse.nodes
.filter((x) => !!x.sponsor)
.map((x) => ({
@@ -65,7 +68,7 @@ const writeFile = (data) => {
const main = async () => {
const sponsorsResponse = await fetchAllSponsors()
- console.log('sponsorsResponse.totalCount', sponsorsResponse.totalCount)
+ // console.log('sponsorsResponse.totalCount', sponsorsResponse.totalCount)
const formatted = formatResults(sponsorsResponse)
writeFile(formatted)
}
diff --git a/web/src/data/sponsors.json b/web/src/data/sponsors.json
index 5d175c86a573e..0637a088a01e8 100644
--- a/web/src/data/sponsors.json
+++ b/web/src/data/sponsors.json
@@ -1,198 +1 @@
-[
- {
- "tier": "$5 a month",
- "sponsor": "sabberworm"
- },
- {
- "tier": "$5 a month",
- "sponsor": "calendee"
- },
- {
- "tier": "$5 a month",
- "sponsor": "kylewelsby"
- },
- {
- "tier": "$5 a month",
- "sponsor": "tinjaw"
- },
- {
- "tier": "$5 a month",
- "sponsor": "ricdex"
- },
- {
- "tier": "$49 a month",
- "sponsor": "Illyism"
- },
- {
- "tier": "$5 a month",
- "sponsor": "lexifdev"
- },
- {
- "tier": "$5 a month",
- "sponsor": "tacowaco"
- },
- {
- "tier": "$5 a month",
- "sponsor": "kachar"
- },
- {
- "tier": "$19 a month",
- "sponsor": "tpberntsen"
- },
- {
- "tier": "$5 a month",
- "sponsor": "zeluizr"
- },
- {
- "tier": "$5 a month",
- "sponsor": "AndersGerner"
- },
- {
- "tier": "$5 a month",
- "sponsor": "stopyellingatme"
- },
- {
- "tier": "$19 a month",
- "sponsor": "Marviel"
- },
- {
- "tier": "$19 a month",
- "sponsor": "bookofdom"
- },
- {
- "tier": "$5 a month",
- "sponsor": "juzhiyuan"
- },
- {
- "tier": "$5 a month",
- "sponsor": "gregaltuna"
- },
- {
- "tier": "$5 a month",
- "sponsor": "ctwhome"
- },
- {
- "tier": "$5 a month",
- "sponsor": "avatus"
- },
- {
- "tier": "$5 a month",
- "sponsor": "zlwaterfield"
- },
- {
- "tier": "$5 a month",
- "sponsor": "Aaron-A"
- },
- {
- "tier": "$5 a month",
- "sponsor": "gabrielmip"
- },
- {
- "tier": "$5 a month",
- "sponsor": "glassmonkey"
- },
- {
- "tier": "$5 a month",
- "sponsor": "adammoyle"
- },
- {
- "tier": "$5 a month",
- "sponsor": "EvonuX"
- },
- {
- "tier": "$5 a month",
- "sponsor": "KoreyPeters"
- },
- {
- "tier": "$49 a month",
- "sponsor": "ymmtshny"
- },
- {
- "tier": "$19 a month",
- "sponsor": "fefurst"
- },
- {
- "tier": "$5 a month",
- "sponsor": "sebastianbachmann"
- },
- {
- "tier": "$5 a month",
- "sponsor": "jvieirar"
- },
- {
- "tier": "$19 a month",
- "sponsor": "dshukertjr"
- },
- {
- "tier": "$5 a month",
- "sponsor": "CmplxStack"
- },
- {
- "tier": "$19 a month",
- "sponsor": "roblack"
- },
- {
- "tier": "$5 a month",
- "sponsor": "davilico05"
- },
- {
- "tier": "$19 a month",
- "sponsor": "Kunstderfug"
- },
- {
- "tier": "$5 a month",
- "sponsor": "hyochan"
- },
- {
- "tier": "$5 a month",
- "sponsor": "chunterb"
- },
- {
- "tier": "$5 a month",
- "sponsor": "madebyfabian"
- },
- {
- "tier": "$5 a month",
- "sponsor": "jwanner83"
- },
- {
- "tier": "$5 a month",
- "sponsor": "herbievine"
- },
- {
- "tier": "$5 a month",
- "sponsor": "Lucostus"
- },
- {
- "tier": "$19 a month",
- "sponsor": "peachp"
- },
- {
- "tier": "$5 a month",
- "sponsor": "killshot13"
- },
- {
- "tier": "$5 a month",
- "sponsor": "brdtheo"
- },
- {
- "tier": "$19 a month",
- "sponsor": "d-mok"
- },
- {
- "tier": "$19 a month",
- "sponsor": "lIIIIIIIIIIIIIIIIIIIII"
- },
- {
- "tier": "$5 a month",
- "sponsor": "yujong-lee"
- },
- {
- "tier": "$5 a month",
- "sponsor": "gregdenson"
- },
- {
- "tier": "$5 a month",
- "sponsor": "LeDragunov"
- }
-]
\ No newline at end of file
+[]
\ No newline at end of file
From 774d418b0ebfe7a4418b268455c85d8e8a1084e7 Mon Sep 17 00:00:00 2001
From: Joshen Lim
Date: Mon, 29 Nov 2021 13:27:05 +0800
Subject: [PATCH 003/100] Prod deploy for studio (#4122)
* Blog: launch week 3 (#4087)
* init launch post
* Adds some text
* Adds the launch week history
* Adds link to blog post
* updates the Friday of the previous launch week
* chore: update images
* chore: optimize images
Co-authored-by: Jonathan Summers-Muir
* Fix/blog images (#4089)
* adds blog image
* Removes the full stops
* remove full stops
* fixes elf
* Fix og image of blog post (#4091)
* Fix typo
* Fix typo
* Fix link to supabase.io (#4095)
* Fix link to supabase.io
* Change supabase.io to supabase.com
* Fix typo
* Optimize blog post images (#4103)
* Optimize blog post images
* Update to jpg
* Optimize blog post images
* Optimize blog post images
* Update Community.tsx
* change links to point directly to supabase.com (#4111)
* Fix #4109 - Add docs url for Dart (#4113)
* Update examples.mdx (#4114)
* Fix broken twitter urls. (#4116)
* FIx broken links in new project card (#4119)
* Update local development docs (#4098)
* Update DEVELOPERS.md
* Update DEVELOPERS.md
* Change supabase.io to supabase.com
* Change app.supabase.com to app.supabase.io
* chore(deps): bump algoliasearch-helper from 3.2.2 to 3.6.2 in /about (#4048)
Bumps [algoliasearch-helper](https://github.com/algolia/algoliasearch-helper-js) from 3.2.2 to 3.6.2.
- [Release notes](https://github.com/algolia/algoliasearch-helper-js/releases)
- [Changelog](https://github.com/algolia/algoliasearch-helper-js/blob/develop/CHANGELOG)
- [Commits](https://github.com/algolia/algoliasearch-helper-js/compare/3.2.2...3.6.2)
---
updated-dependencies:
- dependency-name: algoliasearch-helper
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* add perf tests (#4032)
* init some ideas
* hide data.sql
* add simple test for meta
* switch back to old config
* revert changes
* only use one VU
* Add kong test
* hide mounted file
* move over to Apache Bench
* edit translation pt-br (#4039)
* edit translation pt-br
* format prettier
* Update doc links (#4025)
* Update doc links
* Update doc links
* Update dart doc code
Updating dart code to keep consistent.
* Update with-vue-3.mdx (#3454)
* chore(deps): bump next from 11.0.1 to 11.1.1 in /studio (#4062)
Bumps [next](https://github.com/vercel/next.js) from 11.0.1 to 11.1.1.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v11.0.1...v11.1.1)
---
updated-dependencies:
- dependency-name: next
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump supabase grid to 2.3.7 (#4120)
* Bump supabase grid to 2.3.7
* Add some small fixes and bump grid to 2.3.8
* Update all URLs to supabase.io to supabase.com
* Revert one change
Co-authored-by: Copple <10214025+kiwicopple@users.noreply.github.com>
Co-authored-by: Jonathan Summers-Muir
Co-authored-by: Isaiah Hamilton
Co-authored-by: Isaiah Hamilton <70828596+Isaiah-Hamilton@users.noreply.github.com>
Co-authored-by: Wen Bo Xie <5532241+w3b6x9@users.noreply.github.com>
Co-authored-by: Yeganathan S
Co-authored-by: Aftab Alam <532906+one-aalam@users.noreply.github.com>
Co-authored-by: Ayhan <2834954+c0b41@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Carlos Stenzel
Co-authored-by: Ezequiel Tojo
---
DEVELOPERS.md | 72 +-
about/package-lock.json | 6 +-
docker/dev/docker-compose.dev.yml | 3 +
i18n/README.ca.md | 2 +-
i18n/README.pt-br.md | 122 +-
package.json | 6 +-
.../Billing/Subscription/Subscription.tsx | 2 +-
.../Database/Pooling/BouncerSettings.tsx | 2 +-
.../interfaces/Home/Home.constants.ts | 4 +-
studio/components/interfaces/Home/Landing.tsx | 8 +-
.../Home/NewProjectPanel/GetStartedPanel.tsx | 26 +-
.../Home/NewProjectPanel/NewProjectPanel.tsx | 1 -
.../RowEditor/JsonEditor/JsonEditor.tsx | 12 +-
.../RowEditor/RowEditor.utils.ts | 4 +-
studio/components/layouts/AccountLayout.tsx | 4 +-
.../layouts/DocsLayout/DocsLayout.utils.tsx | 4 +-
.../LayoutHeader/HelpPopover.tsx | 2 +-
.../to-be-cleaned/Auth/PolicySelection.js | 4 +-
.../to-be-cleaned/BuildingState.tsx | 2 +-
studio/package-lock.json | 1764 ++++++++++++++---
studio/package.json | 4 +-
studio/pages/project/[ref]/api/index.tsx | 14 +-
studio/pages/project/[ref]/auth/policies.tsx | 2 +-
studio/pages/project/[ref]/editor/index.tsx | 5 +-
studio/pages/project/[ref]/reports/index.tsx | 2 +-
.../[ref]/storage/buckets/[bucketId].tsx | 2 +-
.../project/[ref]/storage/buckets/index.tsx | 2 +-
web/docs/guides/auth/auth-email.mdx | 5 +-
web/docs/guides/auth/auth-magic-link.mdx | 10 +-
web/docs/guides/examples.mdx | 1 +
web/docs/guides/with-vue-3.mdx | 7 +-
.../2021-07-22-supabase-launch-week-sql.mdx | 4 +-
.../2021-11-26-supabase-how-we-launch.mdx | 119 ++
...11-26-supabase-launch-week-the-trilogy.mdx | 108 +
www/data/Announcement.json | 4 +-
www/data/Community.tsx | 6 +-
.../blog/how-we-launch/how-we-launch-og.jpg | Bin 0 -> 41192 bytes
.../how-we-launch-retrospective.jpg | Bin 0 -> 80353 bytes
.../how-we-launch/how-we-launch-stickers.jpg | Bin 0 -> 515078 bytes
.../how-we-launch/how-we-launch-thumb.jpg | Bin 0 -> 41192 bytes
.../how-we-launch/how-we-launch-timeline.jpg | Bin 0 -> 37294 bytes
.../blog/how-we-launch/supabase-universe.jpg | Bin 0 -> 396833 bytes
.../total-databases-launched.jpg | Bin 0 -> 81312 bytes
.../blog/launch-week-3/launch-week-3-og.jpg | Bin 0 -> 26416 bytes
.../launch-week-3/launch-week-3-thumb.jpg | Bin 0 -> 26416 bytes
.../images/blog/launch-week-three/arnie.jpg | Bin 0 -> 392080 bytes
.../blog/launch-week-three/communityday.jpg | Bin 0 -> 797707 bytes
.../images/blog/launch-week-three/danny.jpg | Bin 0 -> 577736 bytes
.../images/blog/launch-week-three/elf.jpg | Bin 0 -> 534673 bytes
.../images/blog/launch-week-three/grinch.jpg | Bin 0 -> 473349 bytes
www/public/rss.xml | 18 +-
51 files changed, 1993 insertions(+), 370 deletions(-)
create mode 100644 www/_blog/2021-11-26-supabase-how-we-launch.mdx
create mode 100644 www/_blog/2021-11-26-supabase-launch-week-the-trilogy.mdx
create mode 100644 www/public/images/blog/how-we-launch/how-we-launch-og.jpg
create mode 100644 www/public/images/blog/how-we-launch/how-we-launch-retrospective.jpg
create mode 100644 www/public/images/blog/how-we-launch/how-we-launch-stickers.jpg
create mode 100644 www/public/images/blog/how-we-launch/how-we-launch-thumb.jpg
create mode 100644 www/public/images/blog/how-we-launch/how-we-launch-timeline.jpg
create mode 100644 www/public/images/blog/how-we-launch/supabase-universe.jpg
create mode 100644 www/public/images/blog/how-we-launch/total-databases-launched.jpg
create mode 100644 www/public/images/blog/launch-week-3/launch-week-3-og.jpg
create mode 100644 www/public/images/blog/launch-week-3/launch-week-3-thumb.jpg
create mode 100644 www/public/images/blog/launch-week-three/arnie.jpg
create mode 100644 www/public/images/blog/launch-week-three/communityday.jpg
create mode 100644 www/public/images/blog/launch-week-three/danny.jpg
create mode 100644 www/public/images/blog/launch-week-three/elf.jpg
create mode 100644 www/public/images/blog/launch-week-three/grinch.jpg
diff --git a/DEVELOPERS.md b/DEVELOPERS.md
index 93f691727306a..cccc757e1cedd 100644
--- a/DEVELOPERS.md
+++ b/DEVELOPERS.md
@@ -40,16 +40,20 @@ To build Supabase, you clone the source code repository:
### Choosing Directory
-Before you start a development server, you must choose if you want to work on the [Supabase website](https://supabase.io) or [Supabase Docs](https://supabase.io/docs/).
+Before you start a development server, you must choose if you want to work on the [Supabase Website](https://supabase.com), [Supabase Docs](https://supabase.com/docs/), or [Supabase Studio](https://app.supabase.io).
-1. Go to the supabase.io directory
+1. Go to the [Supabase Website](https://supabase.com) directory
```sh
cd www
```
- or Go to the [Supabase Docs](https://supabase.io/docs/) directory
+ Go to the [Supabase Docs](https://supabase.com/docs/) directory
```sh
cd web
```
+ Go to the [Supabase Studio](https://app.supabase.io) directory
+ ```sh
+ cd studio
+ ```
2. Install npm dependencies:
@@ -65,13 +69,19 @@ Before you start a development server, you must choose if you want to work on th
## Start a Development Server
-To debug code, and to see changes in real time, it is often useful to have a local HTTP server.
+To debug code, and to see changes in real time, it is often useful to have a local HTTP server. Click one of the three links below to choose which development server you want to start.
+
+- [Supabase Website](###Supabase-Website-Development-Server)
+- [Supabase Docs](###Supabase-Docs-Development-Server)
+- [Supabase Studio](###Supabase-Studio-Development-Server)
+
+### Supabase Website Development Server
1. Start development server
npm
```sh
- npm run start
+ npm run dev
```
or with yarn
@@ -81,12 +91,58 @@ To debug code, and to see changes in real time, it is often useful to have a loc
2. To access the local server, enter the following URL into your web browser:
- [Supabase website](https://supabase.io)
```sh
- http://localhost:3000
+ http://localhost:3000/
+ ```
+
+### Supabase Docs Development Server
+
+1. Build development server
+
+ npm
+ ```sh
+ npm run build
+ ```
+
+ or with yarn
+ ```sh
+ yarn build
```
- [Supabase Docs](https://supabase.io/docs/)
+2. Start development server
+
+ npm
+ ```sh
+ npm run start
+ ```
+
+ or with yarn
+ ```sh
+ yarn start
+ ```
+
+3. To access the local server, enter the following URL into your web browser:
+
```sh
http://localhost:3005/docs
```
+
+### Supabase Studio Development Server
+
+1. Start development server
+
+ npm
+ ```sh
+ npm run dev
+ ```
+
+ or with yarn
+ ```sh
+ yarn dev
+ ```
+
+2. To access the local server, enter the following URL into your web browser:
+
+ ```sh
+ http://localhost:8082/
+ ```
diff --git a/about/package-lock.json b/about/package-lock.json
index ca03de276ab82..49dc26a3b7e31 100644
--- a/about/package-lock.json
+++ b/about/package-lock.json
@@ -2400,9 +2400,9 @@
}
},
"algoliasearch-helper": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.2.2.tgz",
- "integrity": "sha512-/3XvE33R+gQKaiPdy3nmHYqhF8hqIu8xnlOicVxb1fD6uMFmxW8rGLzzrRfsPfxgAfm+c1NslLb3TzQVIB8aVA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.6.2.tgz",
+ "integrity": "sha512-Xx0NOA6k4ySn+R2l3UMSONAaMkyfmrZ3AP1geEMo32MxDJQJesZABZYsldO9fa6FKQxH91afhi4hO1G0Zc2opg==",
"requires": {
"events": "^1.1.1"
},
diff --git a/docker/dev/docker-compose.dev.yml b/docker/dev/docker-compose.dev.yml
index 88f25341e8406..8df366ce67b66 100644
--- a/docker/dev/docker-compose.dev.yml
+++ b/docker/dev/docker-compose.dev.yml
@@ -8,6 +8,9 @@ services:
- '2500:2500' # SMTP
- '9000:9000' # web interface
- '1100:1100' # POP3
+ meta:
+ ports:
+ - 5555:8080
db:
volumes:
- ./dev/data.sql:/docker-entrypoint-initdb.d/data.sql
diff --git a/i18n/README.ca.md b/i18n/README.ca.md
index fb36419d06b7c..7864cf4a8e1c9 100644
--- a/i18n/README.ca.md
+++ b/i18n/README.ca.md
@@ -18,7 +18,7 @@
## Documentació
-Per a veure la documentació completa, visita [supabase.io/docs](https://supabase.com/docs).
+Per a veure la documentació completa, visita [supabase.com/docs](https://supabase.com/docs).
## Comunitat i suport
diff --git a/i18n/README.pt-br.md b/i18n/README.pt-br.md
index f686226b4c462..31156cc0685c4 100644
--- a/i18n/README.pt-br.md
+++ b/i18n/README.pt-br.md
@@ -61,20 +61,114 @@ Supabase é uma [plataforma hospedada](https://app.supabase.io). Você pode se c
Nossa biblioteca de cliente é modular. Cada sub-biblioteca é uma implementação independente para cada sistema externo. Esse é uma das formas de apoiar as ferramentas existentes.
-- **`supabase-{lang}`**: Combina bibliotecas e adiciona melhorias.
- - `postgrest-{lang}`: Biblioteca de cliente para trabalhar com [PostgREST](https://github.com/postgrest/postgrest)
- - `realtime-{lang}`: Biblioteca de cliente para trabalhar com [Realtime](https://github.com/supabase/realtime)
- - `gotrue-{lang}`: Biblioteca de cliente para trabalhar com [GoTrue](https://github.com/netlify/gotrue)
-
-| Repo | Oficial | Comunidade |
-| --------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **`supabase-{lang}`** | [`JS`](https://github.com/supabase/supabase-js) | [`C#`](https://github.com/supabase/supabase-csharp) \| [`Dart`](https://github.com/supabase/supabase-dart) \| [`Python`](https://github.com/supabase/supabase-py) \| `Rust` \| [`Ruby`](https://github.com/supabase/supabase-rb) |
-| `postgrest-{lang}` | [`JS`](https://github.com/supabase/postgrest-js) | [`C#`](https://github.com/supabase/postgrest-csharp) \| [`Dart`](https://github.com/supabase/postgrest-dart) \| [`Python`](https://github.com/supabase/postgrest-py) \| [`Rust`](https://github.com/supabase/postgrest-rs) \| [`Ruby`](https://github.com/supabase/postgrest-rb) |
-| `realtime-{lang}` | [`JS`](https://github.com/supabase/realtime-js) | [`C#`](https://github.com/supabase/realtime-csharp) \| [`Dart`](https://github.com/supabase/realtime-dart) \| [`Python`](https://github.com/supabase/realtime-py) \| `Rust` \| `Ruby` |
-| `gotrue-{lang}` | [`JS`](https://github.com/supabase/gotrue-js) | [`C#`](https://github.com/supabase/gotrue-csharp) \| [`Dart`](https://github.com/supabase/gotrue-dart) \| [`Python`](https://github.com/supabase/gotrue-py) \| `Rust` \| `Ruby` |
-
-
-
+
## Traduções
diff --git a/package.json b/package.json
index 75f9fb0ce11ee..e7dd8e94d8ca0 100644
--- a/package.json
+++ b/package.json
@@ -1,5 +1,5 @@
{
- "name": "Supabase",
+ "name": "supabase",
"description": "The open source Firebase alternative.",
"version": "0.0.0",
"author": "Supabase, Inc.",
@@ -10,7 +10,9 @@
"docker:up": "cd docker && docker-compose up",
"docker:down": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml down --remove-orphans",
"docker:remove": "cd docker && docker-compose -f docker-compose.yml -f ./dev/docker-compose.dev.yml rm -vfs",
- "test": "jest"
+ "test": "jest",
+ "perf:kong": "ab -t 5 -c 20 -T application/json http://localhost:8000/",
+ "perf:meta": "ab -t 5 -c 20 -T application/json http://localhost:5555/tables"
},
"dependencies": {},
"devDependencies": {
diff --git a/studio/components/interfaces/Billing/Subscription/Subscription.tsx b/studio/components/interfaces/Billing/Subscription/Subscription.tsx
index 55451f207ffb8..615c59002797a 100644
--- a/studio/components/interfaces/Billing/Subscription/Subscription.tsx
+++ b/studio/components/interfaces/Billing/Subscription/Subscription.tsx
@@ -72,7 +72,7 @@ const Subscription: FC = ({
See our{' '}
-
+
pricing
{' '}
for a more detailed analysis of what Supabase has on offer.
diff --git a/studio/components/interfaces/Database/Pooling/BouncerSettings.tsx b/studio/components/interfaces/Database/Pooling/BouncerSettings.tsx
index 2fe3f84379676..32c3ffac127e1 100644
--- a/studio/components/interfaces/Database/Pooling/BouncerSettings.tsx
+++ b/studio/components/interfaces/Database/Pooling/BouncerSettings.tsx
@@ -166,7 +166,7 @@ const BouncerSettings: FC = ({}) => {
Learn more about connection strings{' '}
-
+
with Supabase
{' '}
and{' '}
diff --git a/studio/components/interfaces/Home/Home.constants.ts b/studio/components/interfaces/Home/Home.constants.ts
index d5c8531c3035f..d49bcb8907e0f 100644
--- a/studio/components/interfaces/Home/Home.constants.ts
+++ b/studio/components/interfaces/Home/Home.constants.ts
@@ -3,7 +3,7 @@ export const CLIENT_LIBRARIES = [
language: 'Javascript',
officialSupport: true,
releaseState: undefined,
- docsUrl: 'https://supabase.io/docs/reference/javascript/installing',
+ docsUrl: 'https://supabase.com/docs/reference/javascript/installing',
gitUrl: 'https://github.com/supabase/supabase-js',
},
{
@@ -17,7 +17,7 @@ export const CLIENT_LIBRARIES = [
language: 'Dart',
officialSupport: false,
releaseState: 'Beta',
- docsUrl: undefined,
+ docsUrl: 'https://supabase.com/docs/reference/dart/installing',
gitUrl: 'https://github.com/supabase/supabase-dart',
},
]
diff --git a/studio/components/interfaces/Home/Landing.tsx b/studio/components/interfaces/Home/Landing.tsx
index d1d611330522a..cc6142e7b7611 100644
--- a/studio/components/interfaces/Home/Landing.tsx
+++ b/studio/components/interfaces/Home/Landing.tsx
@@ -20,7 +20,7 @@ const Landing = () => {
- Documentation
+ Documentation
- Sign in
+ Sign In
@@ -58,7 +58,7 @@ const Landing = () => {
Sign In
-
+
Docs
diff --git a/studio/components/interfaces/Home/NewProjectPanel/GetStartedPanel.tsx b/studio/components/interfaces/Home/NewProjectPanel/GetStartedPanel.tsx
index 4f7f8d6fda5bf..c5e6ca9c722f5 100644
--- a/studio/components/interfaces/Home/NewProjectPanel/GetStartedPanel.tsx
+++ b/studio/components/interfaces/Home/NewProjectPanel/GetStartedPanel.tsx
@@ -47,13 +47,17 @@ const GetStartedPanel: FC
= ({}) => {
@@ -77,9 +81,11 @@ const GetStartedPanel: FC = ({}) => {
@@ -103,9 +109,11 @@ const GetStartedPanel: FC = ({}) => {
diff --git a/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx b/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx
index e85e788b4f81f..9703431f573e9 100644
--- a/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx
+++ b/studio/components/interfaces/Home/NewProjectPanel/NewProjectPanel.tsx
@@ -1,7 +1,6 @@
import { FC } from 'react'
import { Typography } from '@supabase/ui'
-import { Project } from 'types'
import GetStartedPanel from './GetStartedPanel'
import {
DisplayApiSettings,
diff --git a/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx b/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx
index d7d2a6eeb3a4d..eb14eb8724b2f 100644
--- a/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx
+++ b/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/JsonEditor/JsonEditor.tsx
@@ -6,7 +6,7 @@ import JsonEditor from './JsonCodeEditor'
import TwoOptionToggle from './TwoOptionToggle'
import DrilldownViewer from './DrilldownViewer'
import ActionBar from '../../ActionBar'
-import { minifyJSON, prettifyJSON } from 'lib/helpers'
+import { minifyJSON, prettifyJSON, tryParseJson } from 'lib/helpers'
type JsonEditProps = {
column: string
@@ -104,7 +104,7 @@ type ViewerProps = {
}
const Viewer: FC = ({ column, value }) => {
- const json = parseJSON(value)
+ const json = tryParseJson(value)
return (
<>
Viewing JSON Field: {column}
@@ -112,11 +112,3 @@ const Viewer: FC = ({ column, value }) => {
>
)
}
-
-const parseJSON = (value: string) => {
- try {
- return JSON.parse(value)
- } catch (err) {
- return undefined
- }
-}
diff --git a/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts b/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts
index 42111af3b5b01..5440281630a37 100644
--- a/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts
+++ b/studio/components/interfaces/TableGridEditor/SidePanelEditor/RowEditor/RowEditor.utils.ts
@@ -3,7 +3,7 @@ import { find, isUndefined, compact, includes, isEqual, omitBy, isNull, isString
import { Dictionary } from '@supabase/grid'
import { PostgresTable } from '@supabase/postgres-meta'
-import { uuidv4, minifyJSON } from 'lib/helpers'
+import { uuidv4, minifyJSON, tryParseJson } from 'lib/helpers'
import { RowField } from './RowEditor.types'
import { JSON_TYPES, NUMERICAL_TYPES } from '../SidePanelEditor.constants'
@@ -232,7 +232,7 @@ export const generateRowObjectFromFields = (
rowObject[field.name] = value
} else {
if (isString(value)) {
- rowObject[field.name] = JSON.parse(value)
+ rowObject[field.name] = tryParseJson(value)
}
}
} else if (NUMERICAL_TYPES.includes(field.format) && value) {
diff --git a/studio/components/layouts/AccountLayout.tsx b/studio/components/layouts/AccountLayout.tsx
index b2fece0e7138b..65bc7f74afdef 100644
--- a/studio/components/layouts/AccountLayout.tsx
+++ b/studio/components/layouts/AccountLayout.tsx
@@ -78,14 +78,14 @@ const AccountLayout = ({ children, title, breadcrumbs }: any) => {
key: 'ext-guides',
icon: '/img/book.svg',
label: 'Guides',
- href: 'https://supabase.io/docs',
+ href: 'https://supabase.com/docs',
external: true,
},
{
key: 'ext-guides',
icon: '/img/book-open.svg',
label: 'API Reference',
- href: 'https://supabase.io/docs/client/supabase-client',
+ href: 'https://supabase.com/docs/client/supabase-client',
external: true,
},
],
diff --git a/studio/components/layouts/DocsLayout/DocsLayout.utils.tsx b/studio/components/layouts/DocsLayout/DocsLayout.utils.tsx
index 1995975a04092..8810899379561 100644
--- a/studio/components/layouts/DocsLayout/DocsLayout.utils.tsx
+++ b/studio/components/layouts/DocsLayout/DocsLayout.utils.tsx
@@ -64,7 +64,7 @@ export const generateDocsMenu = (
{
name: 'Guides',
key: 'guides',
- url: `https://supabase.io/docs`,
+ url: `https://supabase.com/docs`,
icon: ,
items: [],
isExternal: true,
@@ -72,7 +72,7 @@ export const generateDocsMenu = (
{
name: 'API Reference',
key: 'api-reference',
- url: `https://supabase.io/docs/client/supabase-client`,
+ url: `https://supabase.com/docs/client/supabase-client`,
icon: ,
items: [],
isExternal: true,
diff --git a/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx b/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx
index a0d6b8df99c57..e719847a1f4c7 100644
--- a/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx
+++ b/studio/components/layouts/ProjectLayout/LayoutHeader/HelpPopover.tsx
@@ -30,7 +30,7 @@ const HelpPopover: FC = () => {
- For issues with your project hosted on supabase.io, or other inquiries about our
+ For issues with your project hosted on supabase.com, or other inquiries about our
hosted services.
diff --git a/studio/components/to-be-cleaned/Auth/PolicySelection.js b/studio/components/to-be-cleaned/Auth/PolicySelection.js
index ed7afb215ccfb..aa24958b57aed 100644
--- a/studio/components/to-be-cleaned/Auth/PolicySelection.js
+++ b/studio/components/to-be-cleaned/Auth/PolicySelection.js
@@ -56,8 +56,8 @@ const PolicySelection = ({
here
diff --git a/studio/components/to-be-cleaned/BuildingState.tsx b/studio/components/to-be-cleaned/BuildingState.tsx
index dc0d887b7cb61..d7d160ffbe1dc 100644
--- a/studio/components/to-be-cleaned/BuildingState.tsx
+++ b/studio/components/to-be-cleaned/BuildingState.tsx
@@ -72,7 +72,7 @@ const ProjectBuildingState: React.FC = () => {
description={
Browse the Supabase{' '}
-
+
documentation
diff --git a/studio/package-lock.json b/studio/package-lock.json
index 586c7a00a3d80..470f61716609b 100644
--- a/studio/package-lock.json
+++ b/studio/package-lock.json
@@ -1,11 +1,11 @@
{
"name": "studio",
- "version": "0.0.1",
+ "version": "0.0.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
- "version": "0.0.1",
+ "version": "0.0.2",
"dependencies": {
"@auth0/nextjs-auth0": "^1.6.1",
"@headlessui/react": "^1.4.1",
@@ -13,7 +13,7 @@
"@radix-ui/react-portal": "^0.1.1",
"@sentry/browser": "^6.15.0",
"@sentry/nextjs": "^6.15.0",
- "@supabase/grid": "^2.3.5",
+ "@supabase/grid": "^2.3.8",
"@supabase/postgres-meta": "^0.26.1",
"@supabase/react-data-grid": "^7.1.0-beta.7",
"@supabase/supabase-js": "^1.27.0",
@@ -29,7 +29,7 @@
"markdown-table": "=2.0.0",
"mobx": "^6.3.2",
"mobx-react-lite": "^3.2.0",
- "next": "11.0.1",
+ "next": "11.1.1",
"next-compose-plugins": "^2.2.1",
"openapi-types": "^9.1.0",
"papaparse": "^5.3.1",
@@ -159,6 +159,426 @@
"@babel/highlight": "^7.10.4"
}
},
+ "node_modules/@babel/compat-data": {
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
+ "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz",
+ "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-compilation-targets": "^7.16.0",
+ "@babel/helper-module-transforms": "^7.16.0",
+ "@babel/helpers": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.1.2",
+ "semver": "^6.3.0",
+ "source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/@babel/code-frame": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+ "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/highlight": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core/node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "peer": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/core/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "peer": true
+ },
+ "node_modules/@babel/core/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz",
+ "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/generator/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
+ "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.16.0",
+ "@babel/helper-validator-option": "^7.14.5",
+ "browserslist": "^4.17.5",
+ "semver": "^6.3.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz",
+ "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-get-function-arity": "^7.16.0",
+ "@babel/template": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-get-function-arity": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz",
+ "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-get-function-arity/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz",
+ "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz",
+ "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz",
+ "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz",
+ "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.0",
+ "@babel/helper-replace-supers": "^7.16.0",
+ "@babel/helper-simple-access": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz",
+ "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz",
+ "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.16.0",
+ "@babel/helper-optimise-call-expression": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz",
+ "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz",
+ "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==",
+ "peer": true,
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-validator-identifier": {
"version": "7.15.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
@@ -167,6 +587,42 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
+ "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz",
+ "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.3",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/highlight": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
@@ -180,6 +636,32 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/parser": {
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz",
+ "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==",
+ "peer": true,
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz",
+ "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
"node_modules/@babel/runtime": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
@@ -191,14 +673,123 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/template": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz",
+ "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template/node_modules/@babel/code-frame": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+ "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/highlight": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz",
+ "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-function-name": "^7.16.0",
+ "@babel/helper-hoist-variables": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/parser": "^7.16.3",
+ "@babel/types": "^7.16.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/@babel/code-frame": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+ "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+ "peer": true,
+ "dependencies": {
+ "@babel/highlight": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "peer": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@babel/traverse/node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "peer": true
+ },
"node_modules/@babel/types": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
- "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "version": "7.15.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+ "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
"dependencies": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.14.9",
"to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/@hapi/accept": {
@@ -268,6 +859,11 @@
"react-dom": "^16.8.0 || ^17.0.0"
}
},
+ "node_modules/@napi-rs/triples": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+ "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+ },
"node_modules/@next/bundle-analyzer": {
"version": "12.0.4",
"resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-12.0.4.tgz",
@@ -278,19 +874,19 @@
}
},
"node_modules/@next/env": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-11.0.1.tgz",
- "integrity": "sha512-yZfKh2U6R9tEYyNUrs2V3SBvCMufkJ07xMH5uWy8wqcl5gAXoEw6A/1LDqwX3j7pUutF9d1ZxpdGDA3Uag+aQQ=="
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-11.1.1.tgz",
+ "integrity": "sha512-UEAzlfKofotLmj9LIgNixAfXpRck9rt/1CU9Q4ZtNDueGBJQP3HUzPHlrLChltWY2TA5MOzDQGL82H0a3+i5Ag=="
},
"node_modules/@next/polyfill-module": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.0.1.tgz",
- "integrity": "sha512-Cjs7rrKCg4CF4Jhri8PCKlBXhszTfOQNl9AjzdNy4K5jXFyxyoSzuX2rK4IuoyE+yGp5A3XJCBEmOQ4xbUp9Mg=="
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.1.1.tgz",
+ "integrity": "sha512-9FyVSnz00WGdlLsgc2w1xL1Lm/Q25y6FYIyA+1WlJvT6LA2lbR78GKiHgedzUvrAatVGAcg/Og+d0d7B4tsJOg=="
},
"node_modules/@next/react-dev-overlay": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.0.1.tgz",
- "integrity": "sha512-lvUjMVpLsgzADs9Q8wtC5LNqvfdN+M0BDMSrqr04EDWAyyX0vURHC9hkvLbyEYWyh+WW32pwjKBXdkMnJhoqMg==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.1.1.tgz",
+ "integrity": "sha512-CXc/A0DbSk5VXYu4+zr0fHm52Zh/LhPlLyVPEctJOZL64ccxkls5xGoXvgolJCku9L0pLjJzvdfAmhNLOp5dyw==",
"dependencies": {
"@babel/code-frame": "7.12.11",
"anser": "1.4.9",
@@ -374,9 +970,9 @@
}
},
"node_modules/@next/react-refresh-utils": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.0.1.tgz",
- "integrity": "sha512-K347DM6Z7gBSE+TfUaTTceWvbj0B6iNAsFZXbFZOlfg3uyz2sbKpzPYYFocCc27yjLaS8OfR8DEdS2mZXi8Saw==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.1.1.tgz",
+ "integrity": "sha512-j186y+lWc8BHAuysAWvlOqO9Bp7E3BLK/d/Ju3W2sP5BCH5ZLyLG/p308zSy/O0MGTag0B038ZA1dCy/msouRQ==",
"peerDependencies": {
"react-refresh": "0.8.3",
"webpack": "^4 || ^5"
@@ -387,6 +983,74 @@
}
}
},
+ "node_modules/@next/swc-darwin-arm64": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.1.tgz",
+ "integrity": "sha512-KyB0aLpfQ+B2dsyGYpkM0ZwK3PV0t4C4b9yjgQc1VoTVnIjzXdDPnNOuVvmD849ZNOHfj3x8e2rlbxkj0lPm3A==",
+ "cpu": [
+ "arm64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-darwin-x64": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.1.tgz",
+ "integrity": "sha512-B3ZXgrGx0bQplbrk2oggPjKPPsmyg8Fl0PJLMTVQ+erQ8g1m5QzyS9P6tB3SiIZa180JgENuguTHlVK5qEj4UA==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-linux-x64-gnu": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.1.tgz",
+ "integrity": "sha512-qvZL7gSKF+E+GZ3L1XiTnE3cOh9rk0wkqimT/q+wwcZA4E720Lu4lrT79I3HPuj6i/JPgGvmNskcnYrDeaoFaw==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@next/swc-win32-x64-msvc": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.1.tgz",
+ "integrity": "sha512-jhnCiA1De1L+kA0gmHG1AJijHoxOcrETWziDWy8fcqSrM1NlC4aJ5Mnu6k0QMcM9MnmXTA4TQZOEv3kF7vhJUQ==",
+ "cpu": [
+ "x64"
+ ],
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/@node-rs/helper": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+ "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+ "dependencies": {
+ "@napi-rs/triples": "^1.0.3"
+ }
+ },
"node_modules/@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -826,9 +1490,9 @@
}
},
"node_modules/@supabase/grid": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@supabase/grid/-/grid-2.3.5.tgz",
- "integrity": "sha512-ABh4Hm3m9WJEg7VEB3KG2GRCgnvLnl+qF+GEDEUe41ESSW1CaD4qhpcFDBXp5s4MrCm1Qkunr54fVhuNhtH73g==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@supabase/grid/-/grid-2.3.8.tgz",
+ "integrity": "sha512-QZltcW761vuwkGeUda21W4KVfZj0c7O6sXKq75Iu4m5GnPJ7mGduklTSibfCXHPriCHg9kWW76GFnYW9oPebSw==",
"dependencies": {
"@monaco-editor/react": "^4.3.1",
"@scaleleap/pg-format": "^1.0.0",
@@ -1692,11 +2356,6 @@
"is-retry-allowed": "^2.2.0"
}
},
- "node_modules/babel-plugin-syntax-jsx": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
- "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
- },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -2365,28 +3024,6 @@
"node": ">=4"
}
},
- "node_modules/cssnano-preset-simple": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-2.0.0.tgz",
- "integrity": "sha512-HkufSLkaBJbKBFx/7aj5HmCK9Ni/JedRQm0mT2qBzMG/dEuJOLnMt2lK6K1rwOOyV4j9aSY+knbW9WoS7BYpzg==",
- "dependencies": {
- "caniuse-lite": "^1.0.30001202"
- },
- "peerDependencies": {
- "postcss": "^8.2.1"
- }
- },
- "node_modules/cssnano-simple": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-2.0.0.tgz",
- "integrity": "sha512-0G3TXaFxlh/szPEG/o3VcmCwl0N3E60XNb9YZZijew5eIs6fLjJuOPxQd9yEBaX2p/YfJtt49i4vYi38iH6/6w==",
- "dependencies": {
- "cssnano-preset-simple": "^2.0.0"
- },
- "peerDependencies": {
- "postcss": "^8.2.2"
- }
- },
"node_modules/csstype": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz",
@@ -2879,14 +3516,6 @@
"node": ">=4.0"
}
},
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -3137,6 +3766,15 @@
"node": ">=0.10.0"
}
},
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/get-intrinsic": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@@ -3223,6 +3861,15 @@
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
},
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "peer": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
@@ -3993,6 +4640,18 @@
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "peer": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -4016,14 +4675,18 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+ "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "peer": true,
"dependencies": {
- "minimist": "^1.2.0"
+ "minimist": "^1.2.5"
},
"bin": {
"json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/jsonfile": {
@@ -4091,6 +4754,17 @@
"node": ">=4.0.0"
}
},
+ "node_modules/loader-utils/node_modules/json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
"node_modules/localforage": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
@@ -4446,16 +5120,17 @@
"peer": true
},
"node_modules/next": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/next/-/next-11.0.1.tgz",
- "integrity": "sha512-yR7be7asNbvpVNpi6xxEg28wZ7Gqmj1nOt0sABH9qORmF3+pms2KZ7Cng33oK5nqPIzEEFJD0pp2PCe3/ueMIg==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/next/-/next-11.1.1.tgz",
+ "integrity": "sha512-vfLJDkwAHsZUho5R1K4w49nfYhftUMWNmeNSjCtulOvnRBuEFb7ROyRZOQk7f29rMz02eLQrPZ9yiAmPsexL2g==",
"dependencies": {
- "@babel/runtime": "7.12.5",
+ "@babel/runtime": "7.15.3",
"@hapi/accept": "5.0.2",
- "@next/env": "11.0.1",
- "@next/polyfill-module": "11.0.1",
- "@next/react-dev-overlay": "11.0.1",
- "@next/react-refresh-utils": "11.0.1",
+ "@next/env": "11.1.1",
+ "@next/polyfill-module": "11.1.1",
+ "@next/react-dev-overlay": "11.1.1",
+ "@next/react-refresh-utils": "11.1.1",
+ "@node-rs/helper": "1.2.1",
"assert": "2.0.0",
"ast-types": "0.13.2",
"browserify-zlib": "0.2.0",
@@ -4466,7 +5141,7 @@
"chokidar": "3.5.1",
"constants-browserify": "1.0.0",
"crypto-browserify": "3.12.0",
- "cssnano-simple": "2.0.0",
+ "cssnano-simple": "3.0.0",
"domain-browser": "4.19.0",
"encoding": "0.1.13",
"etag": "1.8.1",
@@ -4483,9 +5158,8 @@
"p-limit": "3.1.0",
"path-browserify": "1.0.1",
"pnp-webpack-plugin": "1.6.4",
- "postcss": "8.2.13",
+ "postcss": "8.2.15",
"process": "0.11.10",
- "prop-types": "15.7.2",
"querystring-es3": "0.2.1",
"raw-body": "2.4.1",
"react-is": "17.0.2",
@@ -4493,11 +5167,11 @@
"stream-browserify": "3.0.0",
"stream-http": "3.1.1",
"string_decoder": "1.3.0",
- "styled-jsx": "3.3.2",
+ "styled-jsx": "4.0.0",
"timers-browserify": "2.0.12",
"tty-browserify": "0.0.1",
"use-subscription": "1.5.1",
- "util": "0.12.3",
+ "util": "0.12.4",
"vm-browserify": "1.1.2",
"watchpack": "2.1.1"
},
@@ -4507,6 +5181,12 @@
"engines": {
"node": ">=12.0.0"
},
+ "optionalDependencies": {
+ "@next/swc-darwin-arm64": "11.1.1",
+ "@next/swc-darwin-x64": "11.1.1",
+ "@next/swc-linux-x64-gnu": "11.1.1",
+ "@next/swc-win32-x64-msvc": "11.1.1"
+ },
"peerDependencies": {
"fibers": ">= 3.1.0",
"node-sass": "^4.0.0 || ^5.0.0",
@@ -4537,11 +5217,14 @@
"integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
},
"node_modules/next/node_modules/@babel/runtime": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
- "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
+ "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
"dependencies": {
"regenerator-runtime": "^0.13.4"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
"node_modules/next/node_modules/browserslist": {
@@ -4566,13 +5249,40 @@
"url": "https://opencollective.com/browserslist"
}
},
+ "node_modules/next/node_modules/cssnano-simple": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-3.0.0.tgz",
+ "integrity": "sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==",
+ "dependencies": {
+ "cssnano-preset-simple": "^3.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/next/node_modules/cssnano-simple/node_modules/cssnano-preset-simple": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz",
+ "integrity": "sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001202"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.15"
+ }
+ },
"node_modules/next/node_modules/postcss": {
- "version": "8.2.13",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.13.tgz",
- "integrity": "sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ==",
+ "version": "8.2.15",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz",
+ "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
"dependencies": {
"colorette": "^1.2.2",
- "nanoid": "^3.1.22",
+ "nanoid": "^3.1.23",
"source-map": "^0.6.1"
},
"engines": {
@@ -4591,19 +5301,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/next/node_modules/util": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz",
- "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==",
- "dependencies": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "safe-buffer": "^5.1.2",
- "which-typed-array": "^1.1.2"
- }
- },
"node_modules/node-emoji": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
@@ -5307,6 +6004,7 @@
"version": "8.3.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
"integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
+ "dev": true,
"dependencies": {
"colorette": "^1.2.2",
"nanoid": "^3.1.23",
@@ -6457,6 +7155,7 @@
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
"integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+ "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -6634,12 +7333,12 @@
}
},
"node_modules/styled-jsx": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.3.2.tgz",
- "integrity": "sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.0.tgz",
+ "integrity": "sha512-2USeoWMoJ/Lx5s2y1PxuvLy/cz2Yrr8cTySV3ILHU1Vmaw1bnV7suKdblLPjnyhMD+qzN7B1SWyh4UZTARn/WA==",
"dependencies": {
- "@babel/types": "7.8.3",
- "babel-plugin-syntax-jsx": "6.18.0",
+ "@babel/plugin-syntax-jsx": "7.14.5",
+ "@babel/types": "7.15.0",
"convert-source-map": "1.7.0",
"loader-utils": "1.2.3",
"source-map": "0.7.3",
@@ -6648,7 +7347,7 @@
"stylis-rule-sheet": "0.0.10"
},
"peerDependencies": {
- "react": "15.x.x || 16.x.x || 17.x.x"
+ "react": ">= 16.8.0 || 17.x.x || 18.x.x"
}
},
"node_modules/styled-jsx/node_modules/source-map": {
@@ -7683,107 +8382,446 @@
"node": ">=0.4"
}
},
- "node_modules/yaeti": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
- "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=",
- "engines": {
- "node": ">=0.10.32"
+ "node_modules/yaeti": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz",
+ "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=",
+ "engines": {
+ "node": ">=0.10.32"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ },
+ "node_modules/yaml": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zxcvbn": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz",
+ "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA="
+ }
+ },
+ "dependencies": {
+ "@auth0/nextjs-auth0": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@auth0/nextjs-auth0/-/nextjs-auth0-1.6.1.tgz",
+ "integrity": "sha512-xecYNjI1KvFerzarMUS6p7coWWAI7/JeJ9iMxj+ztIo+VJfR9CkYV2b/Fu3A2iy+UYbIoG78YV2plOynAIUOwQ==",
+ "requires": {
+ "base64url": "^3.0.1",
+ "cookie": "^0.4.1",
+ "debug": "^4.3.2",
+ "futoin-hkdf": "^1.4.2",
+ "http-errors": "^1.8.0",
+ "joi": "^17.4.1",
+ "jose": "^2.0.5",
+ "on-headers": "^1.0.2",
+ "openid-client": "^4.9.0",
+ "tslib": "^2.3.1",
+ "url-join": "^4.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "http-errors": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
+ "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": ">= 1.5.0 < 2",
+ "toidentifier": "1.0.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
+ }
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.12.11",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+ "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "requires": {
+ "@babel/highlight": "^7.10.4"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz",
+ "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==",
+ "peer": true
+ },
+ "@babel/core": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz",
+ "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==",
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-compilation-targets": "^7.16.0",
+ "@babel/helper-module-transforms": "^7.16.0",
+ "@babel/helpers": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.1.2",
+ "semver": "^6.3.0",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+ "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+ "peer": true,
+ "requires": {
+ "@babel/highlight": "^7.16.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "peer": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "peer": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "peer": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.0.tgz",
+ "integrity": "sha512-RR8hUCfRQn9j9RPKEVXo9LiwoxLPYn6hNZlvUOR8tSnaxlD0p0+la00ZP9/SnRt6HchKr+X0fO2r8vrETiJGew==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "peer": true
+ }
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz",
+ "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==",
+ "peer": true,
+ "requires": {
+ "@babel/compat-data": "^7.16.0",
+ "@babel/helper-validator-option": "^7.14.5",
+ "browserslist": "^4.17.5",
+ "semver": "^6.3.0"
+ }
+ },
+ "@babel/helper-function-name": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz",
+ "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-get-function-arity": "^7.16.0",
+ "@babel/template": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz",
+ "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz",
+ "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.0.tgz",
+ "integrity": "sha512-bsjlBFPuWT6IWhl28EdrQ+gTvSvj5tqVP5Xeftp07SEuz5pLnsXZuDkDD3Rfcxy0IsHmbZ+7B2/9SHzxO0T+sQ==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz",
+ "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/yaml": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
- "dev": true,
- "engines": {
- "node": ">= 6"
+ "@babel/helper-module-transforms": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.0.tgz",
+ "integrity": "sha512-My4cr9ATcaBbmaEa8M0dZNA74cfI6gitvUAskgDtAFmAqyFKDSHQo5YstxPbN+lzHl2D9l/YOEFqb2mtUh4gfA==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.16.0",
+ "@babel/helper-replace-supers": "^7.16.0",
+ "@babel/helper-simple-access": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "engines": {
- "node": ">=10"
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz",
+ "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
- "node_modules/zxcvbn": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz",
- "integrity": "sha1-KOwXzwl0PtyrBW3dixsGJizHPDA="
- }
- },
- "dependencies": {
- "@auth0/nextjs-auth0": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@auth0/nextjs-auth0/-/nextjs-auth0-1.6.1.tgz",
- "integrity": "sha512-xecYNjI1KvFerzarMUS6p7coWWAI7/JeJ9iMxj+ztIo+VJfR9CkYV2b/Fu3A2iy+UYbIoG78YV2plOynAIUOwQ==",
+ "@babel/helper-plugin-utils": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz",
+ "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ=="
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.0.tgz",
+ "integrity": "sha512-TQxuQfSCdoha7cpRNJvfaYxxxzmbxXw/+6cS7V02eeDYyhxderSoMVALvwupA54/pZcOTtVeJ0xccp1nGWladA==",
+ "peer": true,
"requires": {
- "base64url": "^3.0.1",
- "cookie": "^0.4.1",
- "debug": "^4.3.2",
- "futoin-hkdf": "^1.4.2",
- "http-errors": "^1.8.0",
- "joi": "^17.4.1",
- "jose": "^2.0.5",
- "on-headers": "^1.0.2",
- "openid-client": "^4.9.0",
- "tslib": "^2.3.1",
- "url-join": "^4.0.1"
+ "@babel/helper-member-expression-to-functions": "^7.16.0",
+ "@babel/helper-optimise-call-expression": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0"
},
"dependencies": {
- "debug": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
- "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
"requires": {
- "ms": "2.1.2"
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
}
- },
- "http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ }
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz",
+ "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==",
+ "peer": true,
+ "requires": {
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
"requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
- "toidentifier": "1.0.1"
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
}
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
}
}
},
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+ "@babel/helper-split-export-declaration": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz",
+ "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==",
+ "peer": true,
"requires": {
- "@babel/highlight": "^7.10.4"
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
}
},
"@babel/helper-validator-identifier": {
@@ -7791,6 +8829,35 @@
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz",
"integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w=="
},
+ "@babel/helper-validator-option": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz",
+ "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
+ "peer": true
+ },
+ "@babel/helpers": {
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.3.tgz",
+ "integrity": "sha512-Xn8IhDlBPhvYTvgewPKawhADichOsbkZuzN7qz2BusOM0brChsyXMDJvldWaYMMUNiCQdQzNEioXTp3sC8Nt8w==",
+ "peer": true,
+ "requires": {
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.3",
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
"@babel/highlight": {
"version": "7.16.0",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz",
@@ -7801,6 +8868,20 @@
"js-tokens": "^4.0.0"
}
},
+ "@babel/parser": {
+ "version": "7.16.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz",
+ "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==",
+ "peer": true
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz",
+ "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==",
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
"@babel/runtime": {
"version": "7.15.4",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz",
@@ -7809,13 +8890,97 @@
"regenerator-runtime": "^0.13.4"
}
},
+ "@babel/template": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz",
+ "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==",
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+ "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+ "peer": true,
+ "requires": {
+ "@babel/highlight": "^7.16.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ }
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.16.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.3.tgz",
+ "integrity": "sha512-eolumr1vVMjqevCpwVO99yN/LoGL0EyHiLO5I043aYQvwOJ9eR5UsZSClHVCzfhBduMAsSzgA/6AyqPjNayJag==",
+ "peer": true,
+ "requires": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-function-name": "^7.16.0",
+ "@babel/helper-hoist-variables": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/parser": "^7.16.3",
+ "@babel/types": "^7.16.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz",
+ "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==",
+ "peer": true,
+ "requires": {
+ "@babel/highlight": "^7.16.0"
+ }
+ },
+ "@babel/types": {
+ "version": "7.16.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz",
+ "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==",
+ "peer": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "debug": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
+ "peer": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "peer": true
+ }
+ }
+ },
"@babel/types": {
- "version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.3.tgz",
- "integrity": "sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==",
+ "version": "7.15.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz",
+ "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==",
"requires": {
- "esutils": "^2.0.2",
- "lodash": "^4.17.13",
+ "@babel/helper-validator-identifier": "^7.14.9",
"to-fast-properties": "^2.0.0"
}
},
@@ -7872,6 +9037,11 @@
"prop-types": "^15.7.2"
}
},
+ "@napi-rs/triples": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz",
+ "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA=="
+ },
"@next/bundle-analyzer": {
"version": "12.0.4",
"resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-12.0.4.tgz",
@@ -7882,19 +9052,19 @@
}
},
"@next/env": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-11.0.1.tgz",
- "integrity": "sha512-yZfKh2U6R9tEYyNUrs2V3SBvCMufkJ07xMH5uWy8wqcl5gAXoEw6A/1LDqwX3j7pUutF9d1ZxpdGDA3Uag+aQQ=="
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-11.1.1.tgz",
+ "integrity": "sha512-UEAzlfKofotLmj9LIgNixAfXpRck9rt/1CU9Q4ZtNDueGBJQP3HUzPHlrLChltWY2TA5MOzDQGL82H0a3+i5Ag=="
},
"@next/polyfill-module": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.0.1.tgz",
- "integrity": "sha512-Cjs7rrKCg4CF4Jhri8PCKlBXhszTfOQNl9AjzdNy4K5jXFyxyoSzuX2rK4IuoyE+yGp5A3XJCBEmOQ4xbUp9Mg=="
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.1.1.tgz",
+ "integrity": "sha512-9FyVSnz00WGdlLsgc2w1xL1Lm/Q25y6FYIyA+1WlJvT6LA2lbR78GKiHgedzUvrAatVGAcg/Og+d0d7B4tsJOg=="
},
"@next/react-dev-overlay": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.0.1.tgz",
- "integrity": "sha512-lvUjMVpLsgzADs9Q8wtC5LNqvfdN+M0BDMSrqr04EDWAyyX0vURHC9hkvLbyEYWyh+WW32pwjKBXdkMnJhoqMg==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.1.1.tgz",
+ "integrity": "sha512-CXc/A0DbSk5VXYu4+zr0fHm52Zh/LhPlLyVPEctJOZL64ccxkls5xGoXvgolJCku9L0pLjJzvdfAmhNLOp5dyw==",
"requires": {
"@babel/code-frame": "7.12.11",
"anser": "1.4.9",
@@ -7955,11 +9125,43 @@
}
},
"@next/react-refresh-utils": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.0.1.tgz",
- "integrity": "sha512-K347DM6Z7gBSE+TfUaTTceWvbj0B6iNAsFZXbFZOlfg3uyz2sbKpzPYYFocCc27yjLaS8OfR8DEdS2mZXi8Saw==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.1.1.tgz",
+ "integrity": "sha512-j186y+lWc8BHAuysAWvlOqO9Bp7E3BLK/d/Ju3W2sP5BCH5ZLyLG/p308zSy/O0MGTag0B038ZA1dCy/msouRQ==",
"requires": {}
},
+ "@next/swc-darwin-arm64": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.1.tgz",
+ "integrity": "sha512-KyB0aLpfQ+B2dsyGYpkM0ZwK3PV0t4C4b9yjgQc1VoTVnIjzXdDPnNOuVvmD849ZNOHfj3x8e2rlbxkj0lPm3A==",
+ "optional": true
+ },
+ "@next/swc-darwin-x64": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.1.tgz",
+ "integrity": "sha512-B3ZXgrGx0bQplbrk2oggPjKPPsmyg8Fl0PJLMTVQ+erQ8g1m5QzyS9P6tB3SiIZa180JgENuguTHlVK5qEj4UA==",
+ "optional": true
+ },
+ "@next/swc-linux-x64-gnu": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.1.tgz",
+ "integrity": "sha512-qvZL7gSKF+E+GZ3L1XiTnE3cOh9rk0wkqimT/q+wwcZA4E720Lu4lrT79I3HPuj6i/JPgGvmNskcnYrDeaoFaw==",
+ "optional": true
+ },
+ "@next/swc-win32-x64-msvc": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.1.tgz",
+ "integrity": "sha512-jhnCiA1De1L+kA0gmHG1AJijHoxOcrETWziDWy8fcqSrM1NlC4aJ5Mnu6k0QMcM9MnmXTA4TQZOEv3kF7vhJUQ==",
+ "optional": true
+ },
+ "@node-rs/helper": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz",
+ "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==",
+ "requires": {
+ "@napi-rs/triples": "^1.0.3"
+ }
+ },
"@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
@@ -8333,9 +9535,9 @@
}
},
"@supabase/grid": {
- "version": "2.3.5",
- "resolved": "https://registry.npmjs.org/@supabase/grid/-/grid-2.3.5.tgz",
- "integrity": "sha512-ABh4Hm3m9WJEg7VEB3KG2GRCgnvLnl+qF+GEDEUe41ESSW1CaD4qhpcFDBXp5s4MrCm1Qkunr54fVhuNhtH73g==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/@supabase/grid/-/grid-2.3.8.tgz",
+ "integrity": "sha512-QZltcW761vuwkGeUda21W4KVfZj0c7O6sXKq75Iu4m5GnPJ7mGduklTSibfCXHPriCHg9kWW76GFnYW9oPebSw==",
"requires": {
"@monaco-editor/react": "^4.3.1",
"@scaleleap/pg-format": "^1.0.0",
@@ -9108,11 +10310,6 @@
"is-retry-allowed": "^2.2.0"
}
},
- "babel-plugin-syntax-jsx": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz",
- "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY="
- },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -9674,22 +10871,6 @@
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true
},
- "cssnano-preset-simple": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-2.0.0.tgz",
- "integrity": "sha512-HkufSLkaBJbKBFx/7aj5HmCK9Ni/JedRQm0mT2qBzMG/dEuJOLnMt2lK6K1rwOOyV4j9aSY+knbW9WoS7BYpzg==",
- "requires": {
- "caniuse-lite": "^1.0.30001202"
- }
- },
- "cssnano-simple": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-2.0.0.tgz",
- "integrity": "sha512-0G3TXaFxlh/szPEG/o3VcmCwl0N3E60XNb9YZZijew5eIs6fLjJuOPxQd9yEBaX2p/YfJtt49i4vYi38iH6/6w==",
- "requires": {
- "cssnano-preset-simple": "^2.0.0"
- }
- },
"csstype": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz",
@@ -10115,11 +11296,6 @@
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"peer": true
},
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
- },
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
@@ -10313,6 +11489,12 @@
}
}
},
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "peer": true
+ },
"get-intrinsic": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@@ -10375,6 +11557,12 @@
"resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
},
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "peer": true
+ },
"good-listener": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
@@ -10933,6 +12121,12 @@
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "peer": true
+ },
"json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
@@ -10956,11 +12150,12 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"json5": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
- "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
+ "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "peer": true,
"requires": {
- "minimist": "^1.2.0"
+ "minimist": "^1.2.5"
}
},
"jsonfile": {
@@ -11015,6 +12210,16 @@
"big.js": "^5.2.2",
"emojis-list": "^2.0.0",
"json5": "^1.0.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ }
}
},
"localforage": {
@@ -11289,16 +12494,21 @@
"peer": true
},
"next": {
- "version": "11.0.1",
- "resolved": "https://registry.npmjs.org/next/-/next-11.0.1.tgz",
- "integrity": "sha512-yR7be7asNbvpVNpi6xxEg28wZ7Gqmj1nOt0sABH9qORmF3+pms2KZ7Cng33oK5nqPIzEEFJD0pp2PCe3/ueMIg==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/next/-/next-11.1.1.tgz",
+ "integrity": "sha512-vfLJDkwAHsZUho5R1K4w49nfYhftUMWNmeNSjCtulOvnRBuEFb7ROyRZOQk7f29rMz02eLQrPZ9yiAmPsexL2g==",
"requires": {
- "@babel/runtime": "7.12.5",
+ "@babel/runtime": "7.15.3",
"@hapi/accept": "5.0.2",
- "@next/env": "11.0.1",
- "@next/polyfill-module": "11.0.1",
- "@next/react-dev-overlay": "11.0.1",
- "@next/react-refresh-utils": "11.0.1",
+ "@next/env": "11.1.1",
+ "@next/polyfill-module": "11.1.1",
+ "@next/react-dev-overlay": "11.1.1",
+ "@next/react-refresh-utils": "11.1.1",
+ "@next/swc-darwin-arm64": "11.1.1",
+ "@next/swc-darwin-x64": "11.1.1",
+ "@next/swc-linux-x64-gnu": "11.1.1",
+ "@next/swc-win32-x64-msvc": "11.1.1",
+ "@node-rs/helper": "1.2.1",
"assert": "2.0.0",
"ast-types": "0.13.2",
"browserify-zlib": "0.2.0",
@@ -11309,7 +12519,7 @@
"chokidar": "3.5.1",
"constants-browserify": "1.0.0",
"crypto-browserify": "3.12.0",
- "cssnano-simple": "2.0.0",
+ "cssnano-simple": "3.0.0",
"domain-browser": "4.19.0",
"encoding": "0.1.13",
"etag": "1.8.1",
@@ -11326,9 +12536,8 @@
"p-limit": "3.1.0",
"path-browserify": "1.0.1",
"pnp-webpack-plugin": "1.6.4",
- "postcss": "8.2.13",
+ "postcss": "8.2.15",
"process": "0.11.10",
- "prop-types": "15.7.2",
"querystring-es3": "0.2.1",
"raw-body": "2.4.1",
"react-is": "17.0.2",
@@ -11336,19 +12545,19 @@
"stream-browserify": "3.0.0",
"stream-http": "3.1.1",
"string_decoder": "1.3.0",
- "styled-jsx": "3.3.2",
+ "styled-jsx": "4.0.0",
"timers-browserify": "2.0.12",
"tty-browserify": "0.0.1",
"use-subscription": "1.5.1",
- "util": "0.12.3",
+ "util": "0.12.4",
"vm-browserify": "1.1.2",
"watchpack": "2.1.1"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz",
- "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==",
+ "version": "7.15.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz",
+ "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -11365,13 +12574,31 @@
"node-releases": "^1.1.71"
}
},
+ "cssnano-simple": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-3.0.0.tgz",
+ "integrity": "sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==",
+ "requires": {
+ "cssnano-preset-simple": "^3.0.0"
+ },
+ "dependencies": {
+ "cssnano-preset-simple": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz",
+ "integrity": "sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==",
+ "requires": {
+ "caniuse-lite": "^1.0.30001202"
+ }
+ }
+ }
+ },
"postcss": {
- "version": "8.2.13",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.13.tgz",
- "integrity": "sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ==",
+ "version": "8.2.15",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz",
+ "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==",
"requires": {
"colorette": "^1.2.2",
- "nanoid": "^3.1.22",
+ "nanoid": "^3.1.23",
"source-map": "^0.6.1"
}
},
@@ -11379,19 +12606,6 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "util": {
- "version": "0.12.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.12.3.tgz",
- "integrity": "sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog==",
- "requires": {
- "inherits": "^2.0.3",
- "is-arguments": "^1.0.4",
- "is-generator-function": "^1.0.7",
- "is-typed-array": "^1.1.3",
- "safe-buffer": "^5.1.2",
- "which-typed-array": "^1.1.2"
- }
}
}
},
@@ -11960,6 +13174,7 @@
"version": "8.3.6",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
"integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
+ "dev": true,
"requires": {
"colorette": "^1.2.2",
"nanoid": "^3.1.23",
@@ -12804,7 +14019,8 @@
"source-map-js": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz",
- "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug=="
+ "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
+ "dev": true
},
"source-map-support": {
"version": "0.5.20",
@@ -12953,12 +14169,12 @@
}
},
"styled-jsx": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-3.3.2.tgz",
- "integrity": "sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.0.tgz",
+ "integrity": "sha512-2USeoWMoJ/Lx5s2y1PxuvLy/cz2Yrr8cTySV3ILHU1Vmaw1bnV7suKdblLPjnyhMD+qzN7B1SWyh4UZTARn/WA==",
"requires": {
- "@babel/types": "7.8.3",
- "babel-plugin-syntax-jsx": "6.18.0",
+ "@babel/plugin-syntax-jsx": "7.14.5",
+ "@babel/types": "7.15.0",
"convert-source-map": "1.7.0",
"loader-utils": "1.2.3",
"source-map": "0.7.3",
diff --git a/studio/package.json b/studio/package.json
index 134bf4034c437..2561b2e049152 100644
--- a/studio/package.json
+++ b/studio/package.json
@@ -15,7 +15,7 @@
"@radix-ui/react-portal": "^0.1.1",
"@sentry/browser": "^6.15.0",
"@sentry/nextjs": "^6.15.0",
- "@supabase/grid": "^2.3.5",
+ "@supabase/grid": "^2.3.8",
"@supabase/postgres-meta": "^0.26.1",
"@supabase/react-data-grid": "^7.1.0-beta.7",
"@supabase/supabase-js": "^1.27.0",
@@ -31,7 +31,7 @@
"markdown-table": "=2.0.0",
"mobx": "^6.3.2",
"mobx-react-lite": "^3.2.0",
- "next": "11.0.1",
+ "next": "11.1.1",
"next-compose-plugins": "^2.2.1",
"openapi-types": "^9.1.0",
"papaparse": "^5.3.1",
diff --git a/studio/pages/project/[ref]/api/index.tsx b/studio/pages/project/[ref]/api/index.tsx
index 06d595bf442fe..8f77c40f86982 100644
--- a/studio/pages/project/[ref]/api/index.tsx
+++ b/studio/pages/project/[ref]/api/index.tsx
@@ -394,7 +394,7 @@ const ResourceContent = ({
To read rows in {resourceId}
, use the select
method.
-
+
Learn more.
@@ -427,7 +427,7 @@ const ResourceContent = ({
Filtering
Supabase provides a wide range of filters.
-
+
Learn more.
@@ -454,7 +454,7 @@ const ResourceContent = ({
insert
will also return the replaced values for UPSERT.
-
+
Learn more.
@@ -490,7 +490,7 @@ const ResourceContent = ({
update
will also return the replaced values for UPDATE.
-
+
Learn more.
@@ -514,7 +514,7 @@ const ResourceContent = ({
default, so remember to specify your filters!
-
+
Learn more.
@@ -538,7 +538,7 @@ const ResourceContent = ({
We are building advanced auth so that you can use realtime streams from anywhere.
-
+
Learn more.
@@ -578,7 +578,7 @@ const ResourceContent = ({
These docs are a work in progress! See our{' '}
-
+
docs
{' '}
for the additional functionality Supabase has to offer.
diff --git a/studio/pages/project/[ref]/auth/policies.tsx b/studio/pages/project/[ref]/auth/policies.tsx
index 7deeffbd2ccb1..13c83f0a3eba0 100644
--- a/studio/pages/project/[ref]/auth/policies.tsx
+++ b/studio/pages/project/[ref]/auth/policies.tsx
@@ -101,7 +101,7 @@ const AuthPolicies = observer(() => {
What is RLS?
diff --git a/studio/pages/project/[ref]/editor/index.tsx b/studio/pages/project/[ref]/editor/index.tsx
index 5a10c75219851..5f433675cfb41 100644
--- a/studio/pages/project/[ref]/editor/index.tsx
+++ b/studio/pages/project/[ref]/editor/index.tsx
@@ -1,10 +1,9 @@
-import { useState, useEffect } from 'react'
+import { useState } from 'react'
import { NextPage } from 'next'
import { observer } from 'mobx-react-lite'
-import { isUndefined, isNil } from 'lodash'
+import { isUndefined } from 'lodash'
import { PostgresTable } from '@supabase/postgres-meta'
-import { tryParseJson } from 'lib/helpers'
import { useStore, withAuth } from 'hooks'
import { TableEditorLayout } from 'components/layouts'
import { EmptyState, SidePanelEditor } from 'components/interfaces/TableGridEditor'
diff --git a/studio/pages/project/[ref]/reports/index.tsx b/studio/pages/project/[ref]/reports/index.tsx
index e7d41f8b0d845..8bc0964d79131 100644
--- a/studio/pages/project/[ref]/reports/index.tsx
+++ b/studio/pages/project/[ref]/reports/index.tsx
@@ -58,7 +58,7 @@ const PageLayout = () => {
title="Reports"
ctaButtonLabel="Create report"
// infoButtonLabel="About reports"
- // infoButtonUrl="https://supabase.io/docs/guides/storage"
+ // infoButtonUrl="https://supabase.com/docs/guides/storage"
onClickCta={() => createReport({ router })}
>
Create custom reports for your projects.
diff --git a/studio/pages/project/[ref]/storage/buckets/[bucketId].tsx b/studio/pages/project/[ref]/storage/buckets/[bucketId].tsx
index 583ec37a148b5..f7ca38bac7e23 100644
--- a/studio/pages/project/[ref]/storage/buckets/[bucketId].tsx
+++ b/studio/pages/project/[ref]/storage/buckets/[bucketId].tsx
@@ -46,7 +46,7 @@ const PageLayout = () => {
title="Storage"
ctaButtonLabel="Create a new bucket"
infoButtonLabel="About storage"
- infoButtonUrl="https://supabase.io/docs/guides/storage"
+ infoButtonUrl="https://supabase.com/docs/guides/storage"
onClickCta={openCreateBucketModal}
>
diff --git a/studio/pages/project/[ref]/storage/buckets/index.tsx b/studio/pages/project/[ref]/storage/buckets/index.tsx
index 49d9798142d3f..c6ff4a5d74f56 100644
--- a/studio/pages/project/[ref]/storage/buckets/index.tsx
+++ b/studio/pages/project/[ref]/storage/buckets/index.tsx
@@ -39,7 +39,7 @@ const PageLayout = ({}) => {
title="Storage"
ctaButtonLabel="Create a new bucket"
infoButtonLabel="About storage"
- infoButtonUrl="https://supabase.io/docs/guides/storage"
+ infoButtonUrl="https://supabase.com/docs/guides/storage"
onClickCta={openCreateBucketModal}
>
diff --git a/web/docs/guides/auth/auth-email.mdx b/web/docs/guides/auth/auth-email.mdx
index 42f904867feca..e2c3811c9e1d0 100644
--- a/web/docs/guides/auth/auth-email.mdx
+++ b/web/docs/guides/auth/auth-email.mdx
@@ -25,7 +25,10 @@ Setting up Email logins for your Supabase application.
### Add login code to your client app
-The JavaScript client code is documented here: [Supabase OAuth Client Code](/docs/reference/javascript/auth-signin#sign-in-using-third-party-providers)
+Add logins using our client libraries:
+
+- [Javascript](/docs/reference/javascript/auth-signin#sign-in-with-email)
+- [Dart](/docs/reference/dart/auth-signin#sign-in-with-email)
```dart
-final res = await supabase.auth.signIn(
- email: 'example@email.com'
-);
+final res = await supabase.auth.signIn(email: 'example@email.com');
-final user = res.data?.user;
final error = res.error;
```
diff --git a/web/docs/guides/examples.mdx b/web/docs/guides/examples.mdx
index 8382be4169648..ad8182e712f59 100644
--- a/web/docs/guides/examples.mdx
+++ b/web/docs/guides/examples.mdx
@@ -73,6 +73,7 @@ Build a basic Todo List with Supabase and your favorite frontend framework:
- Supabase + Svelte (Svelte Starter Kit) [Github](https://github.com/one-aalam/svelte-starter-kit)
- Supabase + SolidJS (SolidJS Starter Kit) [Github](https://github.com/one-aalam/solid-starter-kit)
- Supabase + Nuxt3 (Nuxt Starter Kit) [Github](https://github.com/one-aalam/nuxt-starter-kit)
+- Supabase + Remix (Remix Starter Kit) [Github](https://github.com/one-aalam/remix-starter-kit)
### Blog Posts
diff --git a/web/docs/guides/with-vue-3.mdx b/web/docs/guides/with-vue-3.mdx
index 6f357807e2eaa..665225f1e0ac9 100644
--- a/web/docs/guides/with-vue-3.mdx
+++ b/web/docs/guides/with-vue-3.mdx
@@ -490,7 +490,7 @@ Let's create an avatar for the user so that they can upload a profile photo. We
type="file"
id="single"
accept="image/*"
- @change="uploadAvatar($event)"
+ @change="uploadAvatar"
:disabled="uploading"
/>
@@ -589,6 +589,11 @@ And then we can add the widget to the Account page:
```
diff --git a/www/_blog/2021-07-22-supabase-launch-week-sql.mdx b/www/_blog/2021-07-22-supabase-launch-week-sql.mdx
index b2acfa774de91..4240545c10307 100644
--- a/www/_blog/2021-07-22-supabase-launch-week-sql.mdx
+++ b/www/_blog/2021-07-22-supabase-launch-week-sql.mdx
@@ -99,7 +99,9 @@ We all know that the best [SeQueLs](https://www.reddit.com/r/SequelMemes/) are a
### Where?
-Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) to get notified immediately.
+Read about [Supabase Hackathon](/blog/2021/07/30/supabase-swag-store),
+[Supabase Functions Updates](/blog/2021/07/30/supabase-functions-updates),
+and the Supabase [Swag Store](/2021/07/30/1-the-supabase-hackathon).
[^1]:
When we first announced, Storage was on Wednesday and Auth was on Tuesday. We switched the order of these as we are doing a
diff --git a/www/_blog/2021-11-26-supabase-how-we-launch.mdx b/www/_blog/2021-11-26-supabase-how-we-launch.mdx
new file mode 100644
index 0000000000000..7e496abf694e1
--- /dev/null
+++ b/www/_blog/2021-11-26-supabase-how-we-launch.mdx
@@ -0,0 +1,119 @@
+---
+title: 'How we launch at Supabase'
+description: The history and methodology of Supabase Launch Week.
+author: ant_wilson
+author_url: https://github.com/awalias
+author_image_url: https://github.com/awalias.png
+authorURL: https://github.com/awalias
+image: how-we-launch/how-we-launch-og.jpg
+thumb: how-we-launch/how-we-launch-thumb.jpg
+tags:
+ - tech
+date: '2021-11-26'
+toc_depth: 3
+---
+
+Next week is Supabase Launch Week. It's our third Launch Week this year, and is a key part of a Product-Led Growth strategy that has enabled us to increase the number of databases we manage 47% month-on-month for the last 18 months.
+
+We often get asked about how we're able to ship so relentlessly, and being an open source company we thought it appropriate to start "open sourcing" some of our methods around building and shipping. Our user base is constructed of companies and individuals who themselves are building for the web and marketing to enormous audiences. Hopefully they can learn some of our tricks and in turn contribute back to the community with their own launch strategies and tactics, helping us continuously learn and improve.
+
+Before I go into the nuts and bolts of what Launch Week is, and the exact processes we follow when executing one, it's probably useful if I explain how we landed on this methodology in the first place.
+
+![supabase monthly growth](/images/blog/how-we-launch/total-databases-launched.jpg)
+
+### A brief history of growth at Supabase
+
+We started work on Supabase in January 2020. Our growth plan from the start included being accepted into YCombinator. Dev Tool companies who enter YC gain a huge advantage from day one. You're placed in a cohort of hundreds of other early-stage startups, the majority of whom are developing software, and have just been given a bunch of funding, making them ideal early customers! This, however, turned out to be only a small part of what YC ultimately gifted us.
+
+At the time we joined the batch, we had around 80 alpha users of varying levels of activeness. Our plan was to spend the batch iterating the product around these early alpha users, and to do a big public launch a week or so before Demo Day (an event where you pitch to a shiver of investors). Our plan was foiled however, when an early user shared our site on Hacker News. The post stayed on the home page for several days, and ended up being one of the most upvoted dev tools launches ever (second only to Stripe!). Overnight, the number of databases we were hosting increased ten-fold. Bugs, breakages and feature requests flooded in from every angle; a fantastic problem to have for a fledgling startup. Over the course of the next 2 months we worked hard on a few major items, including Supabase Auth, and migrating our entire stack between cloud providers, along with hundreds of other smaller fixes and incremental improvements - both to our product, and to our company.
+
+A few weeks before Demo Day, we announced Auth, and shouted about it as loudly as possible. We posted it everywhere, and recruited our recently onboarded squad of [Technical Angel Investors](https://supabase.com/company#investors) to help us boost our message on social media. The response was solid, and led to an increase in the rate of user acquisition, and activation/retention rates.
+
+Post YC can often be a sink or swim moment for companies. Throughout the batch, you have regular check-ins with world-class operators, your batch mates, and inspirational talks from founders several steps ahead. When you leave, the external pressure drops, and it's up to you to put the frameworks in place to maintain your rate of progress. You no longer have the likes of Michael Siebel asking you why it's taking you so long to get Auth out the door and in the hands of users. When faced with this problem we sat down and said, "why don't we just pretend that we're starting the batch again, and do our best to recreate the conditions of an accelerator internally, complete with our very own Demo Day?". We found the actual YC Demo Day is kind of an arbitrary deadline useful for motivating all kinds of internal initiatives, whether it's fundraising, growth, or product. So we said to the team, let's just choose an arbitrary date 3 months from now, and we'll ship _something_ huge.
+
+We went the whole hog. We had kick-off events, we invited external people to come in and talk to the team about their origin stories, and even had custom swag made up specific to this product cycle. The _something_, turned out to be [Supabase Beta](https://supabase.com/beta), an announcement that marked a huge advancement in the Stability, Performance, and Security of our hosted platform. This announcement resulted in a stark increase in the rate of developer sign-ups and activation. Our "fixed timeline, flexible scope" approach to launching products had proved successful with the team. And what's more, the build-up to launch, and the launch itself, was some of the most fun any of us had had. Our small team was flying high on adrenaline, and everyone could see for themselves the immediate and direct impact their work had on Supabase's viral adoption.
+
+The very next week, still high on adrenaline, we met for a retrospective. The debrief, however, quickly turned into a planning meeting, and the question was raised "what is the MOST ambitious thing we could hope to ship 3 months from now?". A few projects got kicked about until someone suggested, "why just have one launch? Why can't we aim to ship one major feature or announcement every day for a week?". It was quickly agreed that Launch Day would instead become Launch Week.
+
+During the last week of March 2021, we went on to ship [7 major features](/blog/2021/03/25/launch-week#friday-one-more-thing). We once again saw an immediate uptick in growth rate which helped solidify our strategy.
+
+More recently we ran "[Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql)", where we bumped the versions of several key products in our stack, and added a [Community Day](https://supabase.com/blog/2021/07/26/supabase-community-day) with the aim of boosting visibility and support of various open source tools and projects that we rely on, along with products, frameworks, and tooling built by the rapidly expanding [Supabase Community](https://github.com/supabase-community/).
+
+We're now just a few days away from Launch Week III, and over time have incrementally improved upon many of the processes and tactics that help us maximize output whilst minimizing stress on the team. So let's get into some specifics about how we run a product cycle and the resulting Launch Week.
+
+### The Planning Meeting
+
+Spanning 12 different countries makes it challenging to find a time that works for everyone, but gathering together online is the first step.
+
+We always start the meeting by firing up a Google Jam Board and collectively constructing "The Supabase Universe", this is a giant brain dump of terms and concepts related to Supabase. What we're building, who it's for, who we're trying to hire, what our goals and metrics are. Literally everything that's anything to do with Supabase goes down on this virtual whiteboard. The purpose is to ensure everyone gets out of their daily mode of operation and loads up the business as a whole into their brains. Developers should be loading up marketing concepts, and the marketers should be thinking about engineering. If we're overly focused on one particular area (often engineering), then we risk setting a course in the wrong direction for the entire quarter. It's also a method of getting all the "obvious" stuff down on paper so you can move on and focus the creative efforts of everyone on new ideas; a technique borrowed from the creative industries.
+
+![supabase monthly growth](/images/blog/how-we-launch/supabase-universe.jpg)
+
+Once everyone is warmed up, we dive into the high-level goals and metrics. Are our metrics still relevant? And if so, which ones should we be aiming to boost and why? The more direct a connection between actions and metrics the better, so it's important to remind everyone of what the north star is before we start scheming on how to reach it.
+
+Then comes the main course - what are we going to build or do that's going to move the needle? List down as many ideas as possible, and go through a process of sorting and filtering as you go. Try not to go too deep on any particular idea, in-depth analysis and exploration can be done later in break out sessions, make sure you have someone responsible for pulling you out of these rabbit holes if the team starts to get drawn in to too much detail.
+
+For us, an essential part of this process is the idea that the scope is flexible - at this stage of ideation it's often impossible to tell whether an engineering project is going to take 2 or 102 days. We will always try our best to have it ready for Launch Week, but if not no worries, we'll shout about something else, and include it in the next one.
+
+Lastly we will give some discussion to hiring and any other business, and schedule any follow-up meetings or breakouts required.
+
+### The Kick Off Meeting
+
+After the breakouts we typically have a much clearer idea of what we want to aim for, and if the projects themselves are realistic. Our list at this point often sits around 12 items in length. Some projects will drop out and others will be introduced during the course of the next few months, which is ok. Each project typically has a lead assigned, and another couple of people will register their interest in helping out.
+
+For the kick-off, I always try and come up with some grotesquely garish branding (this is an internal project after all) and find some loose theme to roll with. The purpose of the meeting is to remind everyone of the goals, the timeline, and the current list of announcements we plan to make during the launch.
+
+![supabase monthly growth](/images/blog/how-we-launch/how-we-launch-stickers.jpg)
+
+### Time to Work
+
+Then it's time to get our heads down. One important point to make here is that the 3-month cycle doesn't necessarily replace more traditional project management methodologies. We leave it up to the project leads to decide how to run their project. Some teams opt for kanban boards, and stand-ups. Other projects run like open source repos, with RFCs, issue management, and fully async comms.
+
+Another key thing to mention here is that we very rarely hold back features until Launch Week. Actually, quite the opposite is true, we encourage everyone to ship features as early as possible. We announce features as they ship in our monthly Beta Update blog and newsletter - which is often limited to a blast radius containing existing users. Full write-ups, marketing copy, and broad Top-of-Funnel type marketing efforts will often happen during Launch Week to hype up these features. Actually, we've found that you can launch a new feature many times over and always manage to reach people who either forgot, ignored, or just plain missed it the first few times. We're so close to our own projects that we often overestimate the reach of our online marketing efforts.
+
+In the weeks leading up to Launch Week, we review more closely the list of items we want to Launch and start to plan for what supporting materials we'll need. There are some things such as press, which needs to be organized up to 3 weeks before you plan to Launch, so you better get started early on those items. Also being aware of which third parties are going to be involved is important. Maybe we're shipping an integration with some other tool or company, cross-company communication can be a blocker, so better to start early.
+
+![supabase monthly growth](/images/blog/how-we-launch/how-we-launch-timeline.jpg)
+
+### Pre-Launch Week
+
+One of our learnings from previous Launch Weeks was to no longer ship to prod on the day of the Launch itself :). We had a blast live-debugging prod issues on Discord last time, but this was not so conducive to getting enough sleep. Our Launch Weeks have become a marathon, so it's ideal to get all the major integrations done a week early. Also writing the content and getting someone to edit can take a couple of iterations. This all seems obvious written down here, but it took us a few iterations to start being more regimented.
+
+We have more regular check-ins throughout this week, and make sure everyone is on the same page. We have a process of "swarming" around sticky issues and blockers and a good amount of testing will be done by people who were not involved in the development of a given feature. Particularly around DX, which is an extremely high priority topic at Supabase.
+
+### Launch Week
+
+I can't think of many things more fun than executing on a Supabase Launch Week. It's the culmination of 3 months of epic work from a highly skilled team of folks distributed across every corner of the planet. The awesome thing is that, with most of the features we ship, the person who implemented the code will be the same person who writes the marketing content. This means that the content usually includes deep technical discussion. They're also probably the best person to decide which will be the most effective channels to market that particular feature. As an example, when we launched [ui.supabase.com](http://ui.supabase.com), we made sure to hit up all the front end and design channels, made sure it ranked on Product Hunt, and reached out to some friendly designers to help boost our message. This is very different from the approach we took to marketing our [file storage offering](https://supabase.com/blog/2021/03/30/supabase-storage). The technical design discussion of Storage is better suited to channels like Hacker News, and technical conference audiences who may be more interested in DX than UI components.
+
+When it comes to the day of each launch we've gotten into the habit of constructing a finely detailed schedule to follow. It will contain items such as:
+
+- 7:30am Twitter spaces reminder tweet
+- 7:55am Product Hunt goes live
+- 8:00am Blog post goes live
+- 8:05am Post launch tweet 1
+- 8:10am Share tweet with Angels
+- 8:15am Twitter spaces go live
+
+Of course, it's possible to run this all without such a fine-grained schedule, but the launches can get kind of hectic, so it's easier to not have to think - just do.
+
+### The Rest
+
+Despite being a ton of fun, it's inevitable that some team members will have pulled long days and nights to get their feature out the door, as well as pumping it on as many marketing channels as possible. Launching new things also includes managing support requests, bug fixes, responding to questions, and even managing PRs from the community excited to contribute to new repos or areas of the codebase. This is unsustainable without proper rest so each cycle ends with a good amount of downtime and maintenance mode. Having said that, the adrenaline of Launch Week often spills over into the following days and weeks, so it's not uncommon for members of the team to continue in Launch Mode for a while before taking some downtime.
+
+### The Retrospective
+
+Once the dust has settled, the **most** **important** phase of the entire process can begin. To skip the retro would be to rubbish the entire process, as we would never learn from mistakes or adapt to capitalize on new tactics discovered throughout the preceding weeks and months. We always make sure to cover what went well, what went badly, and what can be improved. This list is then read aloud again at the start of the next planning meeting. The process as it exists today is the product of 4 previous iterations, and is still far from its final form. Amongst other things, our team is growing fast, so it's yet to be seen if the same processes will extend to so many team members, and in which ways they will have to adapt. Lastly, we always make sure to discuss the question "Is Launch Week still relevant?", and "How would we know if we were approaching some local maxima in terms of process and productive output?".
+
+![supabase monthly growth](/images/blog/how-we-launch/how-we-launch-retrospective.jpg)
+
+### Some Other Thoughts
+
+This "internal accelerator" model has worked well within Supabase as a 2-person team and is still proving effective now at 30, but there's no telling whether it would work as well in other organizations. I would be very keen to learn from those who also do something similar.
+
+In some ways, running Supabase is like launching many startups at the same time, we have to build and maintain many different parallel projects in order to match Firebase's incredible suite of products, which could be one reason why it lends itself so well to this acceleration model. And, in fact, being a Firebase alternative is only a small part of [what we want to achieve with Supabase](https://supabase.com/blog/2021/10/28/supabase-series-a), so we have many, many more initiatives to run as we grow.
+
+Running an accelerator model may also be why we've had success [hiring so many other founders](https://about.supabase.com/careers/founders). We're able to give a high degree of autonomy to individuals when it comes to managing projects and initiatives. If this kind of work environment sounds interesting to you, we have tons of [open roles](https://about.supabase.com/careers). We've already hired people who joined because they "couldn't stand to watch another Launch Week from the sidelines" and team members often quote experiencing their first Launch Week as one of the highlights of their Supabase journey so far. It clearly has benefits that extend beyond just growth and user activation.
+
+Make sure you follow us on [Twitter](https://twitter.com/supabase), join our [Discord](https://discord.supabase.com), or [sign up for Supabase](https://app.supabase.io) in order to keep up to date on all things Supabase.
+
+Supabase is the Open Source Firebase Alternative.
diff --git a/www/_blog/2021-11-26-supabase-launch-week-the-trilogy.mdx b/www/_blog/2021-11-26-supabase-launch-week-the-trilogy.mdx
new file mode 100644
index 0000000000000..f40ef687111bf
--- /dev/null
+++ b/www/_blog/2021-11-26-supabase-launch-week-the-trilogy.mdx
@@ -0,0 +1,108 @@
+---
+title: 'Supabase Launch Week III: Holiday Special'
+description: Tis the season to be shipping.
+author: paul_copplestone
+author_url: https://github.com/kiwicopple
+author_image_url: https://github.com/kiwicopple.png
+authorURL: https://github.com/kiwicopple
+image: launch-week-3/launch-week-3-og.jpg
+thumb: launch-week-3/launch-week-3-thumb.jpg
+tags:
+ - launch-week
+date: '2021-11-26'
+toc_depth: 2
+---
+
+In March, Supabase held a [Launch Week](/blog/2021/03/25/launch-week) where we launched a new product/feature every day for a week.
+
+In July we did [Launch Week II: The SQL](/blog/2021/07/22/supabase-launch-week-sql), with another week of feature releases.
+
+Santa's little hackers have been hard at work because we've got another five days of launches ready to go.
+
+## What to expect
+
+We don't want to spoil the surprise, so for now we'll give you a teaser of what to expect. Come back each day to see what we launch, or follow us on twitter to keep up to date: [@supabase](https://twitter.com/supabase) and follow the hashtag [#supalaunchweek](https://twitter.com/hashtag/supalaunchweek).
+
+## Monday: Community Day
+
+![Monday: Community Day](/images/blog/launch-week-three/communityday.jpg)
+
+### **When?**
+
+Monday 29 November 2021: 7am PT
+
+### What?
+
+Last Launch Week we introduced the idea of Community Day - a day where we shine a spotlight on some of the open source tools that we use, and community contributions. If you liked that one, you're going to love this one.
+
+### Where?
+
+Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) to get notified immediately.
+
+## Tuesday: Dashboard Surprise
+
+![Tuesday: Dashboard Surprise](/images/blog/launch-week-three/elf.jpg)
+
+### **When?**
+
+Tuesday 30 November 2021: 7am PT
+
+### What?
+
+The frontend team have been gift wrapping something special, and checking it twice before committing. Something big and public is on it's way.
+
+### Where?
+
+Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) or [Discord](https://discord.supabase.com) to get notified immediately.
+
+## Wednesday: Realtime Updates
+
+![Wednesday: Realtime Updates](/images/blog/launch-week-three/grinch.jpg)
+
+### **When?**
+
+Wednesday 1 December 2021: 7am PT
+
+### What?
+
+Don't let the grinch steal your data this Christmas - we have a huge security update coming for Realtime.
+
+### Where?
+
+Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) or [Discord](https://discord.supabase.com) to get notified immediately.
+
+## Thursday: A new player enters the game
+
+![Thursday: A new player enters the game](/images/blog/launch-week-three/arnie.jpg)
+
+### **When?**
+
+Thursday 2 December 2021.
+
+### What?
+
+What's in the box? This one's a secret so you'll just need to dial in on Thursday.
+
+### Where?
+
+Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) or [Discord](https://discord.supabase.com) to get notified immediately.
+
+## Friday: (One more thing)
+
+![Friday: (One more thing)](/images/blog/launch-week-three/danny.jpg)
+
+### **When?**
+
+Friday 3 December 2021.
+
+### What?
+
+Let's be honest. It's never just one more thing.
+
+### Where?
+
+Blog post coming soon. Follow our [Twitter](https://twitter.com/supabase) or [Discord](https://discord.supabase.com) to get notified immediately.
+
+## Build in public
+
+Launch week isn't just about shipping features, it's a way to get the community involved too. Every day when we launch a new feature we'll be doing it live on Discord, Twitter, or YouTube.
diff --git a/www/data/Announcement.json b/www/data/Announcement.json
index 07a97afcd2485..a621dbb850a9d 100644
--- a/www/data/Announcement.json
+++ b/www/data/Announcement.json
@@ -1,6 +1,6 @@
{
"show": true,
"text": "Supabase Launch Week III starting 29th November",
- "cta": "Latest Launch Week news",
- "link": "/blog/2021/11/05/supabase-beta-october-2021"
+ "cta": "Find out what's coming",
+ "link": "/blog/2021/11/26/supabase-launch-week-the-trilogy"
}
diff --git a/www/data/Community.tsx b/www/data/Community.tsx
index 90eca0a11c17d..dbda1d7ddeccc 100644
--- a/www/data/Community.tsx
+++ b/www/data/Community.tsx
@@ -13,7 +13,7 @@ type CommunityItem = {
const data: CommunityItem[] = [
{
title: 'Developers',
- stat: '40,000+',
+ stat: '50,000+',
statLabel: 'Registered developers',
img: 'supabase.png',
detail: () => (
@@ -31,7 +31,7 @@ const data: CommunityItem[] = [
},
{
title: 'GitHub',
- stat: '20,000+',
+ stat: '22,000+',
statLabel: 'Github stars',
img: 'github.png',
invertImgDarkMode: true,
@@ -43,7 +43,7 @@ const data: CommunityItem[] = [
},
{
title: 'Twitter',
- stat: '17,000+',
+ stat: '19,000+',
statLabel: 'Followers',
img: 'twitter.png',
detail: () => (
diff --git a/www/public/images/blog/how-we-launch/how-we-launch-og.jpg b/www/public/images/blog/how-we-launch/how-we-launch-og.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..9d7a8082bc5ea92c018ccd9844c850b023b84150
GIT binary patch
literal 41192
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
literal 0
HcmV?d00001
diff --git a/www/public/images/blog/how-we-launch/how-we-launch-retrospective.jpg b/www/public/images/blog/how-we-launch/how-we-launch-retrospective.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8c2a266b362e1338f8bf350d58fc31ec79ef237e
GIT binary patch
literal 80353
zcmeFYcT`);vL}qsaSqsIlP}q1lQSHXC6dWO2uwx@fypN79NXk9ayCICgUQK&4JIRk
z$Re4Xvj_qthWBRfyZ5a-^Jdoi{`_8RE$!N>-rZZ(RbAaxzrLBi`9<;qs0vUexpU_?
z5{BCk$;~W@((T>(Ut33<2$U7D8Rg`;eno}AVyv`qaLlHuqcOHQfdXJdJxVu#Q@jlD-$$kcjgn}$o219Uq>=epboR%(P%D{3O
z8PAMU_z~t)dT}x(*&;S6Q&uvKo|mq7^d1)%Yt9rq2?La2i>DlrCZl}_t&|A^Dov*!
zsNvaB5H64Z_XjamoBrk~@;omNSVaf1M#@wH0A-2^;k)wH>I_?}``LcsG_3%h#NZlk
zNX8tKj^83Ij}m&R?N0a>1g=hJ%&U7hO>whRT@*d(f{$ude;iWDGx)do4gUY6{U{
zGuxw>agp-TKPuySa>Vye4pfm^K4~L1LBqVqX%Zq})RHGNCMrHusR9SW0Lzk78S!(Nkbz`g?pDq{g)AK&HXndyN(Pw
zDyC}sx=hQ(f>;ZzupV>ztgdx40#v-eE&Hwua&)Qv*YXXCrH)haPooy!<{ys2mA|Bk
z#xgHQ^iKKLEUFqSCf9a|5W_l@#e!{wJ)zys{HJJ%3F;k(h0IUCoS>PG@5h?3`T>C8
zSd5UxC?}Nxt1ib5Xx8+xQ!@f3hfju7T34vO>EtND(u`&jU{eI~#YwH04p
zYtX-DoMl$hV0=DPy2G&BTLB0}R}&txgkaoe-KbvJ*LK5nr@A0nd#sf(sttuzGy?FX
za|m$9mn?b>L8F^NQ5Z*YQLpoZzul1VV+8!QL5;DoKS$I{T>!;!)(bz0M}Uh++VwhB
zrn9NU^K8rb!k<=G_GIVmb|>W=>3nB5B$*4^oz6~6qMwmZDeHNQL~}F=l1r9^zT8K?
z^4t6<8C^im!1i8I**p8QqDBucFHY%r%b-lcUlU+r2HSDUgt5&w`_B}l@b)a8rt2rS
zot|1~u#HN&A$bfJYn-aKymV4qQVckb?A}v|
zoEQ7>WXFl10*;pR&S0!V*`0CM;WLzZ_jZ>=STy`ZMpx@N+d7_9NUlo7XTB-#9v_RW
zP}J@}p~Wuvj7#5r;`r=_B&oP(pmtbtE(trMzrD|{E8})gi$!;oG^7XDy*mWVAc7oG
zm?%s^rnNvN>$>a#?}`HWSmx`PL{Q7=;BuR+ZB7y=EeO|lxH3HM$rZy}*0!f3nClyw
z21s8X7zG)31@dY@-(Ygz2bj9V8YUk5C(h{`nM^}3`0X5;jblC)A6E3-hpNK8iOI=`nWZaLk9&n*-sfkD
z_&!7FVTQ$gD3*s8g1-3Rchd3QtFd(&k3RyOvprUu_eta!54m(76r{X4gnQXBkv{1&
zn<7IrCSxpQC7?sEji$lumhsmS`~?xqxy=z%g&f_89*n5$N4=s#rSIEPE-QvZ^>s1h
z+f@x7n*uxYfGa2G2Z@+uOsk(CUm`hsXIw0-FYH9H-bpE3q*brRm`U^lxM}zl#FdK0
z>+Ms!O0JNv5g;GtER6PA*|YodP(B;iQm$V()6urGdTgd>)YqmsJf*`6#0g3!%t?u~
z>GWBBHl!OVE>
z;yWlpn&h)t{ndA3Mg;5z`2s^|{mj@{ZGW`MKKEfWrXKAddjE!mj4>{HoZD4dxX#kkp_G2|R
z`5Uyz)i?MITakT3LQzmV)Ssj>jGvI0uY0UGc7O72#9*0+fs8s&Bm~S6oNi2~|6F(p
zfymWwer~ZXXQ2!LbA5q|5B-5BW=B68pM6-jsLQR2I
zkt08t=g~=EUfSty7VC8G-OPMaD%bDFQD9Og!bxmUNp`r90p)t3W(`UqUQ+!f4>p=z
z+Qqg%x+|fU5h@QpuxTksVO(UxniKb)^ZfD+p3Vt0_3VGF^zs@M-R%dpzHcJ{ux9*coI$!-U$v~zWl252L((GIvIQkMc`pf|Ag{ysDJ(+rX
z2>dG|I|8TTD!Gv)Ad?f`5rA-U&^tOtcYGZ1j?g4jvL(FgL)9}3D80(8Dhoo|r;*oe
z$2CJuU@c^BZ(YbTAIvq0<&bY-wSBFm<$n70uuMDPUf+-qlynfSpO`lIkssj=vtT`~
zP*H?x9;Aoi-MIZ|YWN@jr5E~7%meYe{a9V7?9H<6Z`Yq#C~Iy|<|k8Zo73g)UAg3aAb#1A1g
z7^~S)>`cL0G^)GLKWZ#5PMZwoJmZfq8kv2_@oMUr=`WbB$Ur+)BN%8fI8>O}wfJ-W
zb34k2uJwUXAQeF{z4kKEMZKx*XKT!+l)9kQX<0e1=X;h~SM8|TY{llWsKymR@fAVg
zWvo}>Thu&ca@^6af!>sSWSLquDOVW?48!EHv9Z`*TX^o(&B{Bj6oj?T|fENGXeD@|l24&kVKIq|F^YL_smYOzR0C-6)t0fhfp9awrEyB_^=3
zv9SsZ3k!LCD@{LjkUPA}`SCs>J@2SH$AKytpdQNwz<8N~%2o2>k3}o=V}FL4uPn6L
zMy!hL#$n&4zvI%OJ@=YhY&nrLTqa7PYMsZR8YhPqYHvI7S<+wtEk!g6frXYp)DGXz
zvRC2*Bh_+mNS^NR#3%Szjo{4vBUVi7>RtK$r!SMC9K7J{NO>i(X1b><&rLViC(QnU
zr5$nxC64>XFT&iiJd;(~wcq^22Q$kbTgFSR39>KfY|1A2Ic*2|7&o^ikzU12v*q>F
z#0uL7Riyi?qbk}f63E$4YJ8je+(mdHDI=BK3R`%=&3C_huV>I^p5!e_#8IQxR=n`@
zyg-de$6*}QF=5Vm4muX5fquOrK=*tNH>XRpFBfxcUz&qG-M3j4KNGHaccjBEJeSdH
z*u=01Hyqe?P~9|F$kln1CSYCen{lw_Y%7bDQn;|7h)JK~8cSpz8lTGEZtk3sEtZ1d>8YdpaTDE0cS_Z*6=@CBCD*-4ka%lJTC9t#i0NdCI79!`FVm@Mv!*k|WA6IV+|Bi-
zM{c6|O6vpC9tz{vI!E`OvYH9WTs=3idktMb_Rro?oalk02&Dkfd0TW(c}z0GwqH8(FBTUwH+g~q=0}?7UK
z9*eYck*z(Cf#{iMjp8W?PpHUL?VIF&4+B_W?wXWe4{Qhwy!K0dhJ2+LyG>4bHKRxh
zx*-v$_!fIu8n=G!QD;4?(#0^Py`QZxMgRV+nUOzf?=zOz2{Liv)W%BLXIBn0d{|=z
z(|eV=@Y!bU=LT781&i04r(eBvFWu<$bzA$9#kiTk+J=o55aAU4EPnD_JWsT|;cZeu
zZy$h-=J~Y(%CP6SA#)0AQlooq2p)M|C+<#zn+eXJ_du)ai0{N)vD)#pG<@uncX}gS
zsJDSuV74=;^Y!1=PQM{xDXK`*%^#fADQGUw9*AF8s;Y=vh49Od6=(q4^6m3P&NLJe
z%ajG&JaPd+SV+$tECd7^mR+W`OU6Lmrog%^^%;ul;|&aEh|etS_DEXxu)(g56P4x4
z>0@nwiDkbbm6Z*F4bT|ZqcxGQpGZ5-I?6Y~(AvN+;eo$JSQ}rDt{W>*hQ)QLNdG67
z@L%6BZr5vTA#L3S9ay`c+*P(1L~m({D=S;J*XYvZLcSgNKKBh?rK30QYXski>BDp2
zl=?sZGE%=GISkC{oWikRzSy8x@7-l|xHFiAF|^5d#=S4zaH^P7@=Cj0yI!oWM`*a^
z1uT8HR;pU&_$eh0G!4Us_aNjr`p(OO?@ROrOhrkh_=ZxhT^nsvT$#eYR@BXS)3t0n
zGm?ISS1LJJ>5zl!&r+mz(}*(al*@}-7bRDLdpZ^ps0FW
zWjcp}Cm)#TZCyanzmP^*r2oWm-;f~md3Xh1MXR&%)x6G}yU=k}Gd@c2Sc&znowQVX
zLjXX3cwu>DhmU@vXFW5-HSZdF1%3*{=N5{-XYiZ__D*P}*=-4mG0A8vuqu^*?R>^Q
zxic(X4MY9YXgTR6Dl6MtkK!SWlpsygJ7X|ohT&+BD3{ccJiQr=*xS+!vn{69Yg+@E
z_l7R{>y;mu)8UB&%UJ{5;=SK!M;*5}G>cnSElhuvpGZ(uTZCI#3c`nQVTfx8A2;c1
z9K?jKNoZaXQ!BRzP*_}a_m^@N%FU{?+-w}?W&7&X^5upk1lf;&grh%e`F7bpTJdE^
zhlR5R$id)*&i`3l7h%0NWeup9OV?WXz44@B?R$!`f5s+0d2Mn=Er_AfeWo>>PSdo?
zLXp|-XFw)w-Tcj~8SAHXN2%Apk|owbt*@cQS3qe)j^ZBFfpsee_O(?>ke4Me
zvpMVCzJ`+2le~CK+f&2HIQg0IC!Os?h9Dae(P;++W3a;@kq(ParuJr;UbrElemEsk
zAT2tTt}t=IEQ4iTEAiz>v`bNik{mdi%of_pSh=D
z_p5-)f=qV>-4ajV%{@Dqg%xVKChv<<1p-_P%&d^5fzv0PxxkwnTy*u{E>>M@(1xwz
zicO*F2Zj)~ieGY&K;KoFIIxk;^9E)Zh0Mk8hn2x`j|iA_FA!{5CuEryzX1XO~(QGQxZl__etOkD}70?y21_-pA6{@bNfihEM#
zHbasNeavx8l^U}{v>i~vMG82+qLpl~7&fu38r1O(Q%4^X%oo=EdxiI)&L6`+hOA@*
z*BPw2L7bOoo$ULF{p0R4vhVb+sj$*S3JTZO0N)S%`4*T=)>sz~plm_TTpE
zY#&0I7CcEUu^t01HNAe@K_7-yuP)+C-QOeg7Vd7BYf#@$EgrC_zzT1eu~?c_E5ACB
z4P{}7jRI8Mt|^|;X=DJgFyrJD$BL?)dpb3`gLHqrTI%;!n5<0CpovhXA?A#S^KQ{h
z#-QdeXoi=~ertXn>?=kH$RXL5WA)JHcN?zslAQ3gWdB0^h}1jjcPg&2;U5MD(N$PC
z9SMH457PWeHgS2@{&k_VVT=(R7|7w_>B|t})RZpk!X@1q=^MdNe%JCga>#xX)0eoF
zF}BAgONcJ(tI6?JtiGnGTYPU3{yR*Ulz-mlaDAiR_lXX)VAi@~M$(U=b$}@`)Y?SJ
ztSvG^ae^G`h7!#w>hmAFG|0R=znLUQSN%d;IUcIJ^1@;8qW>c-)~
zj2%B&hqrb7z0p0Ojnna8v)A4``i;hJYx6F58uL4MA^TiC&bPZ&Ms+=XI${$9P`KS-
z1-#yjgs3{c&$=k*0i^4=9UzMEmI+|;sh<5mq3DjO-cb)i2rE`otfRCYmT?isYNBZ1
zLm!k{rkxFaB?5ci;U`Qi{1LQv&$p8JuFL*;f~-cy`9_+Z&{$pEU^aXl{j9!LyqG>9
zT+J}Qn1hR;k>2vV@edx$zMx6gij=maewe7>u}+i=zPl^KMEpU~$Z4@({WkVvWrZeY
zO0A&ylz)aDJ7y;goC`~SxbjuIayzdJc&za!{*8`4X#Ku}TFQ>0*eG`{UTA=&GtDhG
z^ihG@$3SB;7Tx?UqzdGrQp!YZoy(Q_MKKfMdZn1i>u%~on3O?VGC3EULj-Hr%iI2n
zZnb-?)0>_J+y{=Q$9+6Y$_=l)A(8SEoNHZ$l*@V@1wzKx>Z$?~_D9k$n;ym0jFnu(
ziZ_Xpb&r4ZFrzd;?X5`ZHD}N;P1b7v;V=hE8@y4xr`a@z)P5V
z7+WuEwjwe<$;%>B^4LVqlA~J5Xmie(5`0;fdIGmC-kersh4qN=#^d;dlh0WuD{(W<
z?b7vw&_^_*
zTy6q$S=HLX*$X!-wiG%V7t223DGG){6e*54YFB!7UrsD}R(Qn!0`DZ*q8xWC{S*w>
z55_D&dfg>5Ooky)ko7WbI@-Y&ZTJ(-Fo&Bk>`9QyQzDJmvK$pmvVu&RxRHL{iE5s?
z&hSDOH@wKZ4Ty)nfSBnJFt*nEE8s}upWcpB>-1&SPGINjvqJvd5F=k$8*r)G{(!5f
zOfOEqc#jqcunnb4BG=H}_z_R%Y{aaRi8`j~67ZK>2p^EO#=O~q!MoPk4*dN6<@Nvi
zW@cdLqm)jhuV`&?uR5g|e~mjAN&i?sW?4l4D_Bh16r^`~u=T8u~8c%TE(S
z>D}&YD30WDut0?M43r_l!fZ4tX}*F3wKR>~ZH88Y4b)YRE4tEt8GUe7MV477=ay1-Rda*mTbY9(J1f5zf
zbY|LMCr8e8Uq~mq`^^o>8J$k$_fa)3aU=Dx_hdG5FQ^XI?uoFY=vs4X@G4w@PiOFi
zvzaS}KBAh&ROOGLhZ>n44X%wAG4_#9glqd3%D4HM{8e-xs39iw)ZH2~i^lBt=z{8(
zAF11=@k?;z>yy(dm6bm}KhT(Uu9bTZ%AMU_&+Akxs!ecp7V~$1^-MuFR&PlJhZqWDNZAU&kY}1o{He)X=#I=
zwlbgnUvvF?6&?Onbbsz{Rs8X89QCeAKyj%W2_J;1=!bOLS8hAPZZ}Is+yC6%ztYdK
z$w&@v1+~NTO#;op=ncu9SkO8`p^xkeXCKt=cJZ%I{2zaL9@GxMd|m=5=uK2jQ0OBM
z>m4R$_k909*1u&i!xdots5^@$+^Y&@zit(65BY574AT3Ye64r
z(uLhdvbSdzX8X|A4(oeu31n2#r##Vc{PO*uUg6G;E4wR4*R@9$
zYUA4#J!}T{%>&+h*BiX^ghTAMc5Pv(s{=U-twsO1x-44k?41dB!gY0V
z)r;{2$J<0mM*HuC5cUUb{24>F{RW?lr|2O(Znm=!32Jo?$vQtEJs_v9-12ilwAuwr
zyO#y1X8CIVf%xK-m}xP(m9}ZHJ8|$r_+{2(xg@V>yU!kyXH?0CnB}3rq@@!FQ-|x9
zpC8-mZvI0$&(5=t_roXl=JPfrcjkjL9XAA^qKD%rVqbfST;h`+A#;z5Y%ABUT4;sx
zuUr3?DMtHZRvI3gWf^NYX0b1FnEIt1K?rpDq<|dUeU$>GO6*I};9TT_dHi;7j4U}^
zzyKX2yBw7lkS5+*l>6=<{r>MM>gS)1B(sF(#Roj{WSJ?}g}z{MdsDM0^YwVSwK|RH
z9%IP@)~heh?7}#PJsmXP>yWj1vnHmzdQiULR`AHp}hDf0*bP+$e;wX2u8IYs7_l!stnl=Q1@wsBnOw8O~>t(T_QO5ir3sO1KFbGy%v3*|DK9kjm}V8B1YQp=6ksh#2PLO#R?
zBIyw2%N
z(0HsqoNLGG&&_I9qW*WGd|TkaWq>AtN8SDWfzd`AV$;P!CuPj~?wgeove>zI>ciiYW&=V7?d`yN
z(<6OWk*sT(9f2&v?(+PhTKUt9k|<87GaDtjUAjr1lUkw#rH|>%(1auRo@3ec>1k;N
z6ge^MFhiCy5h|6;F0Oi8P`y!6QLXVY>P>rhw=?KBMUC|xizhq1&vkh=07WJ4z&4?b
z>T0{-j*m@`g*6@}UID$-wyJfbBrk$mncHVCuL!MAhSw-6a6ydAf&rHODp@(QO-u9;
zVj{9{>~KfCbklagb9Apy7=OACZZBz|I(^)#C8`|O{i^rx0wN)KuJKw1BM^w?I5`A}pE}2psQ2#23w&JdGpH9zS*zWdYJQCBH3X0iqhrVXL92i76O@OziM*GNru9S`)mR%MOEv*XW^IxN*p{X`{ojiMCcLGVdsOI
z>9bB&m2ZcW&FQoC6pxm5qJ8(|J4%iF4;ETmN=h3V6TUWg;pCVEf@X1>kgtZG8dKXT
zob)i1hyseyDKqM4k}NR4Aq^&PZ9|1MpC@{E=&J|uJ;6eG!mCZ(x`by(mrYb-S=P;c
zpFl{(v2hJ=QJ8!)&B*hD-tD6r)AFfxPg>BU*E3&ZAE;^B0ECqvu{$t9h05|(eWxq^
zjK|`zlo&J*dl{Nj6A4~su
zGhO2Wy$E---D<#l+Rx?M68BNT=lR!+b*V1;x?JxX3$3>8H}KE_Y0@Kp_VJx2zTmxG
zZ-m+=x=-xTGHNmZ8ZJ{z7nH+~?6NdntEZ%)4dfU76b@5@Tk@1F)a!EaigSKX9TT=`
zIy9pOxK-m>0A_(mWe3L(vD6!Gz7xaoZK?`^G_jLr?TH=M)h81t~0h)EHNbNG|XY
zUE)y#xd1upz8@15d_TG}s!3pHsrzd?(NUei2+-`|J$GMoJqpS#+!$z#EvPI5dnLQ-
zK1*R!9=8?sdRr?c$M9i4t%+8G_DULGp`w@UW-E!)ceC#++lW!?kXpCQ?l|V{he%8W
zG-H$-GaFLv*{eXK{_|ZPA>%8k6#j;Uqz%er^?b*MYS#8s_VkjP(L$4i(&%C6z_s^Y
z9X>>Zjm_x6eW3?2NBG+6VXv?dSZid&J
z&TK*lCS*OoS5o49C3oE-DP%8~vfP^ClNHax%vJ1l;mn_0%Jrq(vNt+IIuhF`yxg+Y
zAs87Bf+~(HamRwow?vOA|!)7#%p$O7u8192ek$MC{<@m*nnXKhF0v__J;$v1>Ij~e$6~)d-M&d4O^ZxRB$E1BCBXst6n6z
zrnSSZi);F*hKu`*=!57~3tF#V%+pulXVKEhz
z-4iabAUij&?DjsX(y!G6CexZgxRO>aWsf%xdRnFdFB_grNmOtffJVW?Q)%O>yHX1i
z_l)t);~J9fU0^OGm2Zzl@`)V}Z@rL>X@#;MU3Eoyg%Y!K1I?c|Brll2A*&V!o(w%=
zq2x6WY@Tyf503qCb5TZ>Pp|VFL{vy;x=j$iIoz82NFgOm)h#(%?GVqj^V=fhQjheH
z>D#DJV_WFzh5@=`^GOnB(;8Zxsgnbyn~DwxM^)o7v#xa$oBRxY*q1fdqZnXmG}CWL
zAfnc!(;J=;MB8F01`sR_7Y@*!Rjw-Vo7YFTIlFyDgrtZ#XSuSP-1|
zH4;pgyjx&Als;~RE{tZ9`12nV3T~kL;!v7GUdU5wkOv$Z3nB<`S?#PMTVp?EOq^Lb
zNR3_O9Cub1&W<3WmDQaXL3b?@KS~Z@^WS(xEnQ2i~5E`2)n8nt39p<9^AV@@Ia6k~4I`T#ar>#CG@VvJJhs
zoRL$T;^YEbTew*J6`{+3)>>(vh}L^{vQCrzGUbztbvz$glwp=0mwwc-MGaa&oPO^f
z^{2!S(LTDrB@c^?PN}U(@Gh85Hyt(P<+iUHYgw#9FdbprdXSC=m7vSyVnhPO2Y5M3
zPh?P(4nj`}rDMpH#6+Q~z}KF|8T5rHLtzE1M;zXi%T9)e4Aq}E?L
znSVHtguk8jQrip$G)RzT9V!Hzt9ZqWf_E1S;aTxC4_mnsqihci!@pq~rfK
zcz(G4K)-S!%ELhJ-FaV>L@APR}lWm-!YkeB-x@7119IIq}XEJI3}4e+g_XO$
zA>l&J#iWuh0qqKcLAMF^cgtBeneII09E3vVFWZ5pTVA`r)^Ix4i|IB{%wUq4`Or`C
zda{Z!0o_g&4Vu`dtdE`UOi5t5wcOf)8JC(h!4w(4Yk|l*XvzE2-9e1g6!JgUs?eGbpAR9P6IC0v669S5;}z977+!l)kXTm}pYVImpX3r(|}W^I$W^UsT5Ecj>Z
zixxHCe!52ot~_m^k%{bHJ*nqPTsL{_nWC67kqcy7q553DO42fJ6_NeRDCn
zt+fC6^^jnv=2=y#){yHLyi8@ErIpS4d-3>M$$f5(vP$=J)4@p(!!+00g_VEdkg#?*f*?r`Q3$L4^&Epyi@gp8@ftsWfv
z<5H&_Ah@t(rz?du#i=8<_AH;CVdj)Sk8Vhqn@?=QI%9i0TKsrh@2k+vwo)gs!RxA~
zSMzO84BpR+X-0J+OP@HM1?uafG=K&xQSr1R!>^<(WQuV-mB*76n8H+#GI`4s50oGP
z(Vmjpr{Y#?zQ8IyXO$tdBV{B(&RSd7@D!EDV^o=E&l~o?^!+&o1nSq|&()UP4o8iA
zPM@r6wEfKT5I~n$_o|N@sE!5-v$BaWp|SZ+xrpd$=Ll20Mep
zDza$E^Ezz7P3Kjbf3sLs=_**UP=PcQ(8X7S1tdwE?RJJ5A`;N2UP5KR5*yr$%gP&y
z$EhS{hfCw-<)Xq)=&iCEZsQZB#Flks~3+YmlwX-1)W0$!f_wGq&wey0tP2xacU0bI!zoCD>w$zi@(??o%Ox{z8
zuJ3M<2d-Kd?sDfcV`S)JwW&A7b!Kn*T^(HW5a>;#3501Nw{GG5`+rPlOi}Pqc~r^$
zgx)#3?Jt!4@W`x)p)8}jqm+y>%)B;%YLI(Vi3sa{Icwb88IZj;f8--Rn%*qYOv6u0
z=5RJGt&wkuJBe`~V>{Mh%&~xqmu|yO#>-4XHZ-B
z$7=Fq@?NFPExe7%=f!B4Jk+Ygy{KTyV~*)01FZS2ZaI~oQoW)|Acc)PwW@ZOSB~#x
zO4jdCaktINzSMHVpiINBX8U}8Gvyg@67F%Tlw`{8a{
z;L*Zu&A21cD}@S&Ma(usmH@PBG0o5xp>e=n_?CA{WVfylP~JWwnB=?dwmEJdj=2ocbw<%#EEK+yw(v~nlyb7%u*$K1>>@kZ(FGnqkH
z#?!$3IfCIuTPd*hNs;gDAn};ez+^DP1TVP?9B3%`VeU(wTi+Pw^~BY(Zk5Qr#Xiu0
z_Vs~So@1!^y$Bj{J8YY@Qp{ZDTG2z^9mKXtKO=iR_HH1ZZznz>;>?LWeJ|ksU(1%J
zzxK{Mv76hqN#OjHcDAg|;|aIZ5jq>8!ahT-98UkqCsQK>P8v_#scgNoi!P5D2t+2=
zKmVZ}|4L1Jm}O)}6QMdvEU#UTCF(Av0qEKpIi|@9Pv}dX#wGU5K)(L4{s+d;-h4o_
zq6ERW84q1Wm2AD{dSg5phBpqCyDCAaHeP@<1>~b5RC|!PTkxd$6^&W!dc6FVN}lyo
zcYQ7LNwn=5F+Q;aNs$1LMmBo3v;BrERlbMoUek
z&paPI-`|viF;p8w&^;K}tFS`|?Dy#q%05hddR9^M9p+A7qGxAxffl1il?zjxSb1#n
zt(d96aKvr9p1fSrcs~&s5N8_{1?Gji9-fanxi%+%bV!I*K-O1{X)KG@nwa&9olTC>
z*oeo+GzltMaa`U-j#n4(9%BruS@guzUxL)em0*}wK8&~_Ni~8mo)C17;rkBwTTFW69Wt6-i}p<>
zLeQ_AbzvYpP3?kJXZ1F5RYex0Ho=auPa;FAT!J3*;AUQhlI2M-gM`@HE=N9!1&Sxys@iRucpO3pUX};W
z5vAaYAwdGgW>3tAT$Ju6ktIaLdinomCjVf|qAv#lf3O+lD`8ef
zn#1dCg^la|NZykh5d=1HtIR5oc>tZ^fJyd}Nh
zuYymh0R^=5t9x`_qqzhL&9DWwuzZiH8pYT{Khw2~>RuwFv0~^mPB^zL(fIqE$T|K}
zyh75Bpk>i|L-Mr>FCW~ydQ_TCfoW#+p5>xAm8sBm72&PO$GFR7g?8zn^J|^%Rr3i;
zxF8G*djSw3lr$p8lJnWeppu=*jC79(b7T@h&A-RV#kztVT1_<*T_yu{ZA=~`HwgEp
zdOFde`EbA;S}3gdXjK^XQmn0(ed)#Dr-3^%?!)w#J@4}CCRR%vmsT8i$qZdb#Be
z@@Z>)@2FEL)fMsKY<0Jap3Y@X`wzJ8&o=Ud-UQ~#_Yh_HRl*ocH|q^a<>DU^b_50Y
zQ{oNDUl;OE-0f|L)t0JtZdYLWQ|`f6#4ciOvd-ehRggmEZcsBq(rZ^Iym!v6dn8{N
zUs!6JbK8c;s}l=TvKtbeH3fU=oHZ7)-E}Y0H&l-Z2B
zUGJoR8MR!4Sud;|2#BP-H_}#Y%&Sh*g^=0W!e5R3l4H{6+KpTs^O7e71xBCy&ifnd
z1yeU5z1rg2Dn4&agj;@{*%WBS0(o_wIc&Ca9m79TJcGwDwt2eWV&0_MhNoyb)F3sQ=5kgn
zmc+3GFAT&)-_~-_38q2RJ5#nfZc|ZvtLnGkHwa12NfUT>FSziJYBrrb0J*zZ4TMlM
z*xTm=E3XEm$Jt7khW;oqJOVFjVaw$)?PJ9!7pa^DIoG>@>a60-9RWXu(20tWV?A4B
zJ&>rlY}Av~DVn9jEESStcQSDx=!{wNW95)xiV=X^ZMStY9&_V9gHy(n`O9DW|G?K10;tHNL5Qk@8ltHFGc1o5#uyduIJ2)QWhlLb!OCpRP#
zn}PaYP3jY`bAR1}q7H-`f^O6Fo-L--=flD&fplP1ap6qo8JunXojmE
z7gvkzr|8J+a0!)h7few2E6?frujTy|!Fb&-)!R1fL4A3wtbDMXL@+kMMym*IsYO=hHE!#uQ^QVBk*rh=8n?H1cx(nXUr;x1Y4O)c)8?Bq&j3C0
z7N)L)57x;EZDfk^&Ri!to!v$j*k1m#^;v8CX;LP~X^@f;ODF0*d2-C`3xOrS
zw5u)dvGD5RsGo)Lm`xTSxopoB#(-ZGSl%`DRv-4!R3n3yU4IVyT5o
zPw{|mx0B=c%BnVGqf$eiiQA~<1}~UC1UmhR)6QQ!iRP7E>C5uL2sm6#zP|~oPx@sJ
z(ggLE$>C&YDa-&tM!%Dg1cN7Q-7bgH@lfim`27|uxyIU+kaWsJAQjDhU-~8bn
z7EcSCvNexQ9`X3RN$}#@t26Eb&F-A~!jjSIro=KwtA=abE)+3ug3acgm3_?lyF5&4NoHAU1cRz5UO
z*N6-dm_}~wZqN1Oq`H0lSbZ)Q;w&jz2V47*N
zJJn^MmCTZhzk5}|U$4t#fzkN#)!-2jvJ4_yS5Bc-ZLHZ@uT5DRidaS@fXHceU$p^%
zv!?thdZ8eaOZFp|-VM+slrO9tEM)hB~wR2vlSONH&w%gc$Ev_xK94Zh6KB_)z4O^dzY
z(B5rT#48xJ)^$cQ0j6x+y>)=6`eCKP0#3cT3a$|0fz{;I&u)uMA7n54pR;c4U&flJ
zpL!Tw>qLRZ-YS1@vaZ*?lwT<@HQuC8YKRHNxURa7BWBAo4l5g4>`m1phS0oW?nD`x
ze)RmL+(J{*QlJvspxX?iYDlL7sd8)Pz*Lf;r3fFvt2{c!sV&JccFLf?!fM9{oO%*W
zCx~r*HTl6NdMjD-mNjs>{+!LH%QFxT=&b2WLr%^NqGnWjHnyaOBKDhj>`Mc1XD)fH
zgyM5iN~*K5Hfp#2CqrYFyw$Qj55`9m*2M%zM065|#2SX1YF%@MvNvN@+_f_lXv_zB
zF3vX83-gRjWvGRe?YG4;9V?^nL563KyX
z5H=A)>lMw|7o4;pnP`pV0e$yUxwHWLsP1@+z&Xd85dnVhy|0*BN)x|8O