diff --git a/.gitignore b/.gitignore
index e2f92125..d1821376 100644
--- a/.gitignore
+++ b/.gitignore
@@ -53,6 +53,7 @@ typings/
# dotenv environment variable files
.env*
+./docker/kratos/config/kratos.yml
# Mac files
.DS_Store
@@ -82,3 +83,13 @@ docker/nginx/conf.d/server-override/*
__pycache__
/.idea/
/venv*
+
+# CockroachDB certificates
+docker/cockroach/certs/*.crt
+docker/cockroach/certs/*.key
+docker/kratos/cr_certs/*.crt
+docker/kratos/cr_certs/*.key
+
+# Oathkeeper JWKS signing token
+docker/kratos/oathkeeper/id_token.jwks.json
+/docker/kratos/config/kratos.yml
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..6ec8e548
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,2 @@
+/package.json
+/package-lock.json
\ No newline at end of file
diff --git a/README.md b/README.md
index 8cd84d05..59c2e5df 100644
--- a/README.md
+++ b/README.md
@@ -26,12 +26,160 @@ following Siacoin address:
`fb6c9320bc7e01fbb9cd8d8c3caaa371386928793c736837832e634aaaa484650a3177d6714a`
+### MongoDB Setup
+
+Mongo needs a couple of extra steps in order to start a secure cluster.
+
+- Open port 27017 on all nodes that will take part in the cluster. Ideally, you would only open the port for the other
+ nodes in the cluster.
+- Manually run an initialisation `docker run` with extra environment variables that will initialise the admin user with
+ a password (example below).
+- Manually add a `mgkey` file under `./docker/data/mongo` with the respective secret (
+ see [Mongo's keyfile access control](https://docs.mongodb.com/manual/tutorial/enforce-keyfile-access-control-in-existing-replica-set/)
+ for details).
+- During the initialisation run mentioned above, we need to make two extra steps within the container:
+ - Change the ownership of `mgkey` to `mongodb:mongodb`
+ - Change its permissions to 400
+- After these steps are done we can open a mongo shell on the master node and run `rs.add()` in order to add the new
+ node to the cluster.
+
+Example initialisation docker run command:
+
+```
+docker run \
+ --rm \
+ --name mg \
+ -p 27017:27017 \
+ -e MONGO_INITDB_ROOT_USERNAME= \
+ -e MONGO_INITDB_ROOT_PASSWORD= \
+ -v /home/user/skynet-webportal/docker/data/mongo/db:/data/db \
+ -v /home/user/skynet-webportal/docker/data/mongo/mgkey:/data/mgkey \
+ mongo --keyFile=/data/mgkey --replSet=skynet
+```
+
+Regular docker run command:
+
+```
+docker run \
+ --rm \
+ --name mg \
+ -p 27017:27017 \
+ -v /home/user/skynet-webportal/docker/data/mongo/db:/data/db \
+ -v /home/user/skynet-webportal/docker/data/mongo/mgkey:/data/mgkey \
+ mongo --keyFile=/data/mgkey --replSet=skynet
+```
+
+Cluster initialisation mongo command:
+
+```
+rs.initiate(
+ {
+ _id : "skynet",
+ members: [
+ { _id : 0, host : "mongo:27017" }
+ ]
+ }
+)
+```
+
+Add more nodes when they are ready:
+
+```
+rs.add("second.node.net:27017")
+```
+
+### Kratos & Oathkeeper Setup
+
+[Kratos](https://www.ory.sh/kratos) is our user management system of choice and
+[Oathkeeper](https://www.ory.sh/oathkeeper) is the identity and access proxy.
+
+Most of the needed config is already under `docker/kratos`. The only two things that need to be changed are the config
+for Kratos that might contain you email server password, and the JWKS Oathkeeper uses to sign its JWT tokens.
+
+Make sure to create your own`docker/kratos/config/kratos.yml` by copying the `kratos.yml.sample` in the same directory.
+Also make sure to never add that file to source control because it will most probably contain your email password in
+plain text!
+
+To override the JWKS you will need to directly edit
+`docker/kratos/oathkeeper/id_token.jwks.json` and replace it with your generated key set. If you don't know how to
+generate a key set you can use this code:
+
+```go
+package main
+
+import (
+ "encoding/json"
+ "log"
+ "os"
+
+ "github.com/ory/hydra/jwk"
+)
+
+func main() {
+ gen := jwk.RS256Generator{
+ KeyLength: 2048,
+ }
+ jwks, err := gen.Generate("", "sig")
+ if err != nil {
+ log.Fatal(err)
+ }
+ jsonbuf, err := json.MarshalIndent(jwks, "", " ")
+ if err != nil {
+ log.Fatal("failed to generate JSON: %s", err)
+ }
+ os.Stdout.Write(jsonbuf)
+}
+```
+
+While you can directly put the output of this programme into the file mentioned above, you can also remove the public
+key from the set and change the `kid` of the private key to not include the prefix `private:`.
+
+### CockroachDB Setup
+
+Kratos uses CockroachDB to store its data. For that data to be shared across all nodes that comprise your portal cluster
+setup, we need to set up a CockroachDB cluster, complete with secure communication.
+
+#### Generate the certificates for secure communication
+
+For a detailed walk-through, please check [this guide](https://www.cockroachlabs.com/docs/v20.2/secure-a-cluster.html)
+out.
+
+Steps:
+
+1. Start a local cockroach docker instance:
+ `docker run -d -v ":/cockroach/cockroach-secure" --name=crdb cockroachdb/cockroach start --insecure`
+1. Get a shall into that instance: `docker exec -it crdb /bin/bash`
+1. Go to the directory we which we mapped to a local dir: `cd /cockroach/cockroach-secure`
+1. Create the subdirectories in which to create certificates and keys: `mkdir certs my-safe-directory`
+1. Create the CA (Certificate Authority) certificate and key
+ pair: `cockroach cert create-ca --certs-dir=certs --ca-key=my-safe-directory/ca.key`
+1. Create a client certificate and key pair for the root
+ user: `cockroach cert create-client root --certs-dir=certs --ca-key=my-safe-directory/ca.key`
+1. Create the certificate and key pair for your
+ nodes: `cockroach cert create-node cockroach mynode.siasky.net --certs-dir=certs --ca-key=my-safe-directory/ca.key`.
+ Don't forget the `cockroach` node name - it's needed by our docker-compose setup. If you want to create certificates
+ for more nodes, just delete the `node.*` files (after you've finished the next steps for this node!) and re-run the
+ above command with the new node name.
+1. Put the contents of the `certs` folder under `docker/cockroach/certs/*` under your portal's root dir and store the
+ content of `my-safe-directory` somewhere safe.
+1. Put _another copy_ of those certificates under `docker/kratos/cr_certs` and change permissions of the `*.key` files,
+ so they can be read by anyone (644).
+
+#### Configure your CockroachDB node
+
+There is some configuration that needs to be added to your `.env`file, namely:
+
+1. CR_NODE - the name of your node
+1. CR_IP - the public IP of your node
+1. CR_CLUSTER_NODES - a list of IPs and ports which make up your cluster, e.g.
+ `95.216.13.185:26257,147.135.37.21:26257,144.76.136.122:26257`. This will be the list of nodes that will make up your
+ cluster, so make sure those are accurate.
+
## Contributing
### Testing Your Code
-Before pushing your code you should verify that it will pass our online test
-suite.
+Before pushing your code, you should verify that it will pass our online test suite.
**Cypress Tests**
Verify the Cypress test suite by doing the following:
diff --git a/docker-compose.accounts.yml b/docker-compose.accounts.yml
new file mode 100644
index 00000000..22d24541
--- /dev/null
+++ b/docker-compose.accounts.yml
@@ -0,0 +1,167 @@
+version: "3.7"
+
+x-logging: &default-logging
+ driver: json-file
+ options:
+ max-size: "10m"
+ max-file: "3"
+
+services:
+ webapp:
+ build:
+ args:
+ WITH_ACCOUNTS: 1 # enable accounts frontend
+
+ nginx:
+ environment:
+ - ACCOUNTS_ENABLED=1
+ volumes:
+ - ./docker/accounts/nginx.account.conf:/etc/nginx/conf.extra.d/nginx.account.conf:ro
+ depends_on:
+ - accounts
+
+ accounts:
+ build:
+ context: ./docker/accounts
+ dockerfile: Dockerfile
+ container_name: accounts
+ restart: unless-stopped
+ logging: *default-logging
+ env_file:
+ - .env
+ environment:
+ - SKYNET_DB_HOST=${SKYNET_DB_HOST}
+ - SKYNET_DB_PORT=${SKYNET_DB_PORT}
+ - SKYNET_DB_USER=${SKYNET_DB_USER}
+ - SKYNET_DB_PASS=${SKYNET_DB_PASS}
+ - COOKIE_DOMAIN=${COOKIE_DOMAIN}
+ - COOKIE_HASH_KEY=${COOKIE_HASH_KEY}
+ - COOKIE_ENC_KEY=${COOKIE_ENC_KEY}
+ - STRIPE_API_KEY=${STRIPE_API_KEY}
+ - STRIPE_WEBHOOK_SECRET=${STRIPE_WEBHOOK_SECRET}
+ - SKYNET_ACCOUNTS_LOG_LEVEL=${SKYNET_ACCOUNTS_LOG_LEVEL}
+ - KRATOS_ADDR=${KRATOS_ADDR}
+ - OATHKEEPER_ADDR=${OATHKEEPER_ADDR}
+ expose:
+ - 3000
+ networks:
+ shared:
+ ipv4_address: 10.10.10.70
+ depends_on:
+ - mongo
+ - oathkeeper
+
+ mongo:
+ image: mongo:4.4.1
+ command: --keyFile=/data/mgkey --replSet=skynet
+ container_name: mongo
+ restart: unless-stopped
+ logging: *default-logging
+ volumes:
+ - ./docker/data/mongo/db:/data/db
+ - ./docker/data/mongo/mgkey:/data/mgkey:rw
+ networks:
+ shared:
+ ipv4_address: 10.10.10.71
+ ports:
+ - "27017:27017"
+
+ kratos-migrate:
+ image: oryd/kratos:v0.5.5-alpha.1
+ container_name: kratos-migrate
+ restart: "no"
+ logging: *default-logging
+ environment:
+ - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt
+ - SQA_OPT_OUT=true
+ volumes:
+ - ./docker/kratos/config:/etc/config/kratos
+ - ./docker/data/cockroach/sqlite:/var/lib/sqlite
+ - ./docker/kratos/cr_certs:/certs
+ command: -c /etc/config/kratos/kratos.yml migrate sql -e --yes
+ networks:
+ shared:
+ ipv4_address: 10.10.10.80
+ depends_on:
+ - cockroach
+
+ kratos:
+ image: oryd/kratos:v0.5.5-alpha.1
+ container_name: kratos
+ restart: unless-stopped
+ logging: *default-logging
+ expose:
+ - 4433 # public
+ - 4434 # admin
+ environment:
+ - DSN=cockroach://root@cockroach:26257/defaultdb?max_conns=20&max_idle_conns=4&sslmode=verify-full&sslcert=/certs/node.crt&sslkey=/certs/node.key&sslrootcert=/certs/ca.crt
+ - LOG_LEVEL=trace
+ - SERVE_PUBLIC_BASE_URL=${SKYNET_DASHBOARD_URL}/.ory/kratos/public/
+ - SQA_OPT_OUT=true
+ command: serve -c /etc/config/kratos/kratos.yml
+ volumes:
+ - ./docker/kratos/config:/etc/config/kratos
+ - ./docker/data/cockroach/sqlite:/var/lib/sqlite
+ - ./docker/kratos/cr_certs:/certs
+ networks:
+ shared:
+ ipv4_address: 10.10.10.81
+ depends_on:
+ - kratos-migrate
+
+ dashboard:
+ build:
+ context: ./packages/dashboard
+ dockerfile: Dockerfile
+ container_name: dashboard
+ restart: unless-stopped
+ logging: *default-logging
+ env_file:
+ - .env
+ environment:
+ - NEXT_PUBLIC_SKYNET_PORTAL_API=${SKYNET_PORTAL_API}
+ - NEXT_PUBLIC_SKYNET_DASHBOARD_URL=${SKYNET_DASHBOARD_URL}
+ - NEXT_PUBLIC_KRATOS_BROWSER_URL=${SKYNET_DASHBOARD_URL}/.ory/kratos/public
+ - NEXT_PUBLIC_KRATOS_PUBLIC_URL=${SKYNET_DASHBOARD_URL}/.ory/kratos/public
+ - NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY}
+ volumes:
+ - ./docker/data/dashboard/.next:/usr/app/.next
+ networks:
+ shared:
+ ipv4_address: 10.10.10.85
+ expose:
+ - 3000
+
+ oathkeeper:
+ image: oryd/oathkeeper:v0.38
+ container_name: oathkeeper
+ expose:
+ - 4455
+ - 4456
+ command: serve proxy -c "/etc/config/oathkeeper/oathkeeper.yml"
+ environment:
+ - LOG_LEVEL=debug
+ volumes:
+ - ./docker/kratos/oathkeeper:/etc/config/oathkeeper
+ restart: on-failure
+ networks:
+ shared:
+ ipv4_address: 10.10.10.83
+ depends_on:
+ - kratos
+
+ cockroach:
+ image: cockroachdb/cockroach:v20.2.3
+ container_name: cockroach
+ env_file:
+ - .env
+ command: start --advertise-addr=${CR_IP} --join=${CR_CLUSTER_NODES} --certs-dir=/certs --listen-addr=0.0.0.0:26257 --http-addr=0.0.0.0:8080
+ volumes:
+ - ./docker/data/cockroach/sqlite:/cockroach/cockroach-data
+ - ./docker/cockroach/certs:/certs
+ ports:
+ - "4080:8080"
+ - "26257:26257"
+ networks:
+ shared:
+ ipv4_address: 10.10.10.84
diff --git a/docker-compose.uploads.yml b/docker-compose.uploads.yml
new file mode 100644
index 00000000..c7d3043a
--- /dev/null
+++ b/docker-compose.uploads.yml
@@ -0,0 +1,12 @@
+version: "3.7"
+
+services:
+ nginx:
+ build:
+ context: ./docker/nginx
+ dockerfile: Dockerfile.bionic
+ args:
+ RESTY_ADD_PACKAGE_BUILDDEPS: git
+ RESTY_EVAL_PRE_CONFIGURE: git clone https://github.com/fdintino/nginx-upload-module /tmp/nginx-upload-module
+ RESTY_CONFIG_OPTIONS_MORE: --add-module=/tmp/nginx-upload-module
+ RESTY_EVAL_POST_MAKE: /usr/local/openresty/luajit/bin/luarocks install luasocket
diff --git a/docker-compose.yml b/docker-compose.yml
index 79dc437c..4fd2e795 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -166,18 +166,3 @@ services:
depends_on:
- handshake
- handshake-api
-
- mongo:
- image: mongo:4.4.1
- command: --keyFile=/data/mgkey --replSet=skynet
- container_name: mongo
- restart: unless-stopped
- logging: *default-logging
- volumes:
- - ./docker/data/mongo/db:/data/db
- - ./docker/data/mongo/mgkey:/data/mgkey:rw
- networks:
- shared:
- ipv4_address: 10.10.10.70
- ports:
- - "27017:27017"
diff --git a/docker/accounts/Dockerfile b/docker/accounts/Dockerfile
new file mode 100644
index 00000000..8be44370
--- /dev/null
+++ b/docker/accounts/Dockerfile
@@ -0,0 +1,20 @@
+FROM golang:1.15
+LABEL maintainer="NebulousLabs "
+
+ENV GOOS linux
+ENV GOARCH amd64
+
+WORKDIR /root
+
+RUN git clone --single-branch --branch main https://github.com/NebulousLabs/skynet-accounts.git && \
+ cd skynet-accounts && \
+ go mod download && \
+ make release
+
+ENV SKYNET_DB_HOST="localhost"
+ENV SKYNET_DB_PORT="27017"
+ENV SKYNET_DB_USER="username"
+ENV SKYNET_DB_PASS="password"
+ENV SKYNET_ACCOUNTS_PORT=3000
+
+ENTRYPOINT ["skynet-accounts"]
diff --git a/docker/accounts/nginx.account.conf b/docker/accounts/nginx.account.conf
new file mode 100644
index 00000000..f3705200
--- /dev/null
+++ b/docker/accounts/nginx.account.conf
@@ -0,0 +1,20 @@
+server {
+ listen 80;
+ listen [::]:80;
+ server_name account.*;
+
+ location / {
+ proxy_redirect http://127.0.0.1/ https://$host/;
+ proxy_pass http://oathkeeper:4455;
+ }
+}
+
+server {
+ listen 80;
+ listen [::]:80;
+ server_name secure.*;
+
+ if ($host ~ secure.(.*)) {
+ return 301 $scheme://account.$1$request_uri;
+ }
+}
diff --git a/docker/cockroach/certs/README.md b/docker/cockroach/certs/README.md
new file mode 100644
index 00000000..fd957133
--- /dev/null
+++ b/docker/cockroach/certs/README.md
@@ -0,0 +1,2 @@
+This directory needs to contain all certificates needed by this cockroachdb node. Those can be generated by the steps
+outlined in the README in the root directory, under "Setting up CockroachDB".
diff --git a/docker/handshake/Dockerfile b/docker/handshake/Dockerfile
index 09525735..39ca14f2 100644
--- a/docker/handshake/Dockerfile
+++ b/docker/handshake/Dockerfile
@@ -1,8 +1,8 @@
-FROM node:15.8.0-alpine
+FROM node:15.12.0-alpine
WORKDIR /opt/hsd
-RUN apk add --no-cache bash unbound-dev gmp-dev g++ gcc make python2 git
+RUN apk update && apk add bash unbound-dev gmp-dev g++ gcc make python2 git
RUN git clone https://github.com/handshake-org/hsd.git /opt/hsd
RUN npm install --production
diff --git a/docker/kratos/config/identity.schema.json b/docker/kratos/config/identity.schema.json
new file mode 100644
index 00000000..781fc761
--- /dev/null
+++ b/docker/kratos/config/identity.schema.json
@@ -0,0 +1,31 @@
+{
+ "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "Person",
+ "type": "object",
+ "properties": {
+ "traits": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "format": "email",
+ "title": "E-Mail",
+ "minLength": 3,
+ "ory.sh/kratos": {
+ "credentials": {
+ "password": {
+ "identifier": true
+ }
+ },
+ "recovery": {
+ "via": "email"
+ }
+ }
+ }
+ },
+ "required": ["email"],
+ "additionalProperties": true
+ }
+ }
+}
diff --git a/docker/kratos/config/kratos.yml.sample b/docker/kratos/config/kratos.yml.sample
new file mode 100644
index 00000000..15442f0f
--- /dev/null
+++ b/docker/kratos/config/kratos.yml.sample
@@ -0,0 +1,86 @@
+version: v0.5.5-alpha.1
+
+dsn: memory
+
+serve:
+ public:
+ base_url: http://127.0.0.1/
+ cors:
+ enabled: true
+ admin:
+ base_url: http://127.0.0.1/admin/
+
+selfservice:
+ default_browser_return_url: http://127.0.0.1/
+ whitelisted_return_urls:
+ - http://127.0.0.1/
+
+ methods:
+ password:
+ enabled: true
+
+ flows:
+ error:
+ ui_url: http://127.0.0.1/error
+
+ settings:
+ ui_url: http://127.0.0.1/settings
+ privileged_session_max_age: 15m
+
+ recovery:
+ enabled: true
+ ui_url: http://127.0.0.1/recovery
+
+ verification:
+ enabled: true
+ ui_url: http://127.0.0.1/verify
+ after:
+ default_browser_return_url: http://127.0.0.1/
+
+ logout:
+ after:
+ default_browser_return_url: http://127.0.0.1/auth/login
+
+ login:
+ ui_url: http://127.0.0.1/auth/login
+ lifespan: 10m
+
+ registration:
+ lifespan: 10m
+ ui_url: http://127.0.0.1/auth/registration
+ after:
+ password:
+ hooks:
+ - hook: session
+
+log:
+ level: debug
+ format: text
+ leak_sensitive_values: true
+
+password:
+ max_breaches: 100
+
+secrets:
+ cookie:
+ - PLEASE-CHANGE-ME-I-AM-VERY-INSECURE
+
+session:
+ cookie:
+ domain: account.siasky.net
+ lifespan: "720h"
+
+hashers:
+ argon2:
+ parallelism: 1
+ memory: 131072
+ iterations: 2
+ salt_length: 16
+ key_length: 16
+
+identity:
+ default_schema_url: file:///etc/config/kratos/identity.schema.json
+
+courier:
+ smtp:
+ connection_uri: smtps://test:test@mailslurper:1025/?skip_ssl_verify=true
diff --git a/docker/kratos/config/oidc/identity.traits.schema.json b/docker/kratos/config/oidc/identity.traits.schema.json
new file mode 100644
index 00000000..62de3d1b
--- /dev/null
+++ b/docker/kratos/config/oidc/identity.traits.schema.json
@@ -0,0 +1,37 @@
+{
+ "$id": "https://schemas.ory.sh/presets/kratos/quickstart/email-password/identity.schema.json",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "title": "Person",
+ "type": "object",
+ "properties": {
+ "traits": {
+ "type": "object",
+ "properties": {
+ "email": {
+ "type": "string",
+ "format": "email",
+ "title": "E-Mail",
+ "minLength": 3,
+ "ory.sh/kratos": {
+ "credentials": {
+ "password": {
+ "identifier": true
+ }
+ },
+ "verification": {
+ "via": "email"
+ },
+ "recovery": {
+ "via": "email"
+ }
+ }
+ },
+ "website": {
+ "type": "object"
+ }
+ },
+ "required": ["website", "email"],
+ "additionalProperties": false
+ }
+ }
+}
diff --git a/docker/kratos/config/oidc/oidc.github.jsonnet b/docker/kratos/config/oidc/oidc.github.jsonnet
new file mode 100644
index 00000000..06b92bf9
--- /dev/null
+++ b/docker/kratos/config/oidc/oidc.github.jsonnet
@@ -0,0 +1,17 @@
+local claims = {
+ email_verified: false
+} + std.extVar('claims');
+
+{
+ identity: {
+ traits: {
+ // Allowing unverified email addresses enables account
+ // enumeration attacks, especially if the value is used for
+ // e.g. verification or as a password login identifier.
+ //
+ // Therefore we only return the email if it (a) exists and (b) is marked verified
+ // by GitHub.
+ [if "email" in claims && claims.email_verified then "email" else null]: claims.email,
+ },
+ },
+}
diff --git a/docker/kratos/cr_certs/README.md b/docker/kratos/cr_certs/README.md
new file mode 100644
index 00000000..47c143eb
--- /dev/null
+++ b/docker/kratos/cr_certs/README.md
@@ -0,0 +1,7 @@
+This directory needs to contain all certificates needed by this cockroachdb node. Those can be generated by the steps
+outlined in the README in the root directory, under "Setting up CockroachDB".
+
+The only difference between the files here and those under
+`docker/cockroach/certs` is that the files here need to be readable by anyone, while the files under `cockroach` need to
+have their original access rights
+(all *.key files should be 600 instead of 644 there).
diff --git a/docker/kratos/oathkeeper/access-rules.yml b/docker/kratos/oathkeeper/access-rules.yml
new file mode 100644
index 00000000..020b6a27
--- /dev/null
+++ b/docker/kratos/oathkeeper/access-rules.yml
@@ -0,0 +1,116 @@
+- id: "ory:kratos:public"
+ upstream:
+ preserve_host: true
+ url: "http://kratos:4433"
+ strip_path: /.ory/kratos/public
+ match:
+ url: "http://oathkeeper:4455/.ory/kratos/public/<**>"
+ methods:
+ - GET
+ - POST
+ - PUT
+ - DELETE
+ - PATCH
+ authenticators:
+ - handler: noop
+ authorizer:
+ handler: allow
+ mutators:
+ - handler: noop
+
+- id: "dashboard:anonymous"
+ upstream:
+ preserve_host: true
+ url: "http://dashboard:3000"
+ match:
+ url: "http://oathkeeper:4455/<{_next/*,auth/*,recovery,verify,error,favicon.ico}{/,}>"
+ methods:
+ - GET
+ authenticators:
+ - handler: anonymous
+ authorizer:
+ handler: allow
+ mutators:
+ - handler: noop
+
+- id: "dashboard:protected"
+ upstream:
+ preserve_host: true
+ url: "http://dashboard:3000"
+ match:
+ url: "http://oathkeeper:4455/<{,api/*,settings,uploads,downloads,payments}>"
+ methods:
+ - GET
+ - POST
+ - PUT
+ - DELETE
+ - PATCH
+ authenticators:
+ - handler: cookie_session
+ authorizer:
+ handler: allow
+ mutators:
+ - handler: id_token
+ - handler: header
+ config:
+ headers:
+ X-User: "{{ print .Subject }}"
+ errors:
+ - handler: redirect
+ config:
+ to: http://127.0.0.1/auth/login
+
+- id: "accounts:anonymous"
+ upstream:
+ preserve_host: true
+ url: "http://accounts:3000"
+ match:
+ url: "http://oathkeeper<{,:4455}>/<{stripe/prices,stripe/webhook}>"
+ methods:
+ - GET
+ - POST
+ authenticators:
+ - handler: anonymous
+ authorizer:
+ handler: allow
+ mutators:
+ - handler: noop
+
+- id: "accounts:public"
+ upstream:
+ preserve_host: true
+ url: "http://accounts:3000"
+ match:
+ url: "http://oathkeeper<{,:4455}>/<{user/limits}>"
+ methods:
+ - GET
+ authenticators:
+ - handler: cookie_session
+ - handler: noop
+ authorizer:
+ handler: allow
+ mutators:
+ - handler: id_token
+
+- id: "accounts:protected"
+ upstream:
+ preserve_host: true
+ url: "http://accounts:3000"
+ match:
+ url: "http://oathkeeper<{,:4455}>/<{login,logout,user,user/uploads,user/downloads,user/stats}>"
+ methods:
+ - GET
+ - POST
+ - PUT
+ - DELETE
+ - PATCH
+ authenticators:
+ - handler: cookie_session
+ authorizer:
+ handler: allow
+ mutators:
+ - handler: id_token
+ errors:
+ - handler: redirect
+ config:
+ to: http://127.0.0.1/auth/login
diff --git a/docker/kratos/oathkeeper/oathkeeper.yml b/docker/kratos/oathkeeper/oathkeeper.yml
new file mode 100644
index 00000000..6436c2ee
--- /dev/null
+++ b/docker/kratos/oathkeeper/oathkeeper.yml
@@ -0,0 +1,94 @@
+log:
+ level: debug
+ format: json
+
+serve:
+ proxy:
+ cors:
+ enabled: true
+ allowed_origins:
+ - "*"
+ allowed_methods:
+ - POST
+ - GET
+ - PUT
+ - PATCH
+ - DELETE
+ allowed_headers:
+ - Authorization
+ - Content-Type
+ exposed_headers:
+ - Content-Type
+ allow_credentials: true
+ debug: true
+
+errors:
+ fallback:
+ - json
+
+ handlers:
+ redirect:
+ enabled: true
+ config:
+ to: http://127.0.0.1/auth/login
+ when:
+ - error:
+ - unauthorized
+ - forbidden
+ request:
+ header:
+ accept:
+ - text/html
+ json:
+ enabled: true
+ config:
+ verbose: true
+
+access_rules:
+ matching_strategy: glob
+ repositories:
+ - file:///etc/config/oathkeeper/access-rules.yml
+
+authenticators:
+ anonymous:
+ enabled: true
+ config:
+ subject: guest
+
+ cookie_session:
+ enabled: true
+ config:
+ check_session_url: http://kratos:4433/sessions/whoami
+ preserve_path: true
+ extra_from: "@this"
+ subject_from: "identity.id"
+ only:
+ - ory_kratos_session
+
+ noop:
+ enabled: true
+
+authorizers:
+ allow:
+ enabled: true
+
+mutators:
+ noop:
+ enabled: true
+
+ header:
+ enabled: true
+ config:
+ headers:
+ X-User: "{{ print .Subject }}"
+
+ id_token:
+ enabled: true
+ config:
+ issuer_url: http://oathkeeper:4455/
+ jwks_url: file:///etc/config/oathkeeper/id_token.jwks.json
+ ttl: 720h
+ claims: |
+ {
+ "session": {{ .Extra | toJson }}
+ }
diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile
index 71e45a70..bba36f7b 100644
--- a/docker/nginx/Dockerfile
+++ b/docker/nginx/Dockerfile
@@ -1,7 +1,7 @@
FROM openresty/openresty:1.19.3.1-2-bionic
# RUN apt-get update -qq && apt-get install cron logrotate -qq
-# RUN luarocks install luasocket
+RUN luarocks install luasocket
# CMD ["sh", "-c", "service cron start;", "/usr/local/openresty/bin/openresty -g daemon off;"]
CMD ["/usr/local/openresty/bin/openresty", "-g", "daemon off;"]
diff --git a/docker/nginx/Dockerfile.bionic b/docker/nginx/Dockerfile.bionic
new file mode 100644
index 00000000..d51e4c8a
--- /dev/null
+++ b/docker/nginx/Dockerfile.bionic
@@ -0,0 +1,185 @@
+# Dockerfile - Ubuntu Bionic
+# https://github.com/openresty/docker-openresty
+
+ARG RESTY_IMAGE_BASE="ubuntu"
+ARG RESTY_IMAGE_TAG="bionic"
+
+FROM ${RESTY_IMAGE_BASE}:${RESTY_IMAGE_TAG}
+
+LABEL maintainer="Evan Wies "
+
+# Docker Build Arguments
+ARG RESTY_IMAGE_BASE="ubuntu"
+ARG RESTY_IMAGE_TAG="bionic"
+ARG RESTY_VERSION="1.19.3.1"
+ARG RESTY_LUAROCKS_VERSION="3.5.0"
+ARG RESTY_OPENSSL_VERSION="1.1.1i"
+ARG RESTY_OPENSSL_PATCH_VERSION="1.1.1f"
+ARG RESTY_OPENSSL_URL_BASE="https://www.openssl.org/source"
+ARG RESTY_PCRE_VERSION="8.44"
+ARG RESTY_J="1"
+ARG RESTY_CONFIG_OPTIONS="\
+ --with-compat \
+ --with-file-aio \
+ --with-http_addition_module \
+ --with-http_auth_request_module \
+ --with-http_dav_module \
+ --with-http_flv_module \
+ --with-http_geoip_module=dynamic \
+ --with-http_gunzip_module \
+ --with-http_gzip_static_module \
+ --with-http_image_filter_module=dynamic \
+ --with-http_mp4_module \
+ --with-http_random_index_module \
+ --with-http_realip_module \
+ --with-http_secure_link_module \
+ --with-http_slice_module \
+ --with-http_ssl_module \
+ --with-http_stub_status_module \
+ --with-http_sub_module \
+ --with-http_v2_module \
+ --with-http_xslt_module=dynamic \
+ --with-ipv6 \
+ --with-mail \
+ --with-mail_ssl_module \
+ --with-md5-asm \
+ --with-pcre-jit \
+ --with-sha1-asm \
+ --with-stream \
+ --with-stream_ssl_module \
+ --with-threads \
+ "
+ARG RESTY_CONFIG_OPTIONS_MORE=""
+ARG RESTY_LUAJIT_OPTIONS="--with-luajit-xcflags='-DLUAJIT_NUMMODE=2 -DLUAJIT_ENABLE_LUA52COMPAT'"
+
+ARG RESTY_ADD_PACKAGE_BUILDDEPS=""
+ARG RESTY_ADD_PACKAGE_RUNDEPS=""
+ARG RESTY_EVAL_PRE_CONFIGURE=""
+ARG RESTY_EVAL_POST_MAKE=""
+
+# These are not intended to be user-specified
+ARG _RESTY_CONFIG_DEPS="--with-pcre \
+ --with-cc-opt='-DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl/include' \
+ --with-ld-opt='-L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl/lib -Wl,-rpath,/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl/lib' \
+ "
+
+LABEL resty_image_base="${RESTY_IMAGE_BASE}"
+LABEL resty_image_tag="${RESTY_IMAGE_TAG}"
+LABEL resty_version="${RESTY_VERSION}"
+LABEL resty_luarocks_version="${RESTY_LUAROCKS_VERSION}"
+LABEL resty_openssl_version="${RESTY_OPENSSL_VERSION}"
+LABEL resty_openssl_patch_version="${RESTY_OPENSSL_PATCH_VERSION}"
+LABEL resty_openssl_url_base="${RESTY_OPENSSL_URL_BASE}"
+LABEL resty_pcre_version="${RESTY_PCRE_VERSION}"
+LABEL resty_config_options="${RESTY_CONFIG_OPTIONS}"
+LABEL resty_config_options_more="${RESTY_CONFIG_OPTIONS_MORE}"
+LABEL resty_config_deps="${_RESTY_CONFIG_DEPS}"
+LABEL resty_add_package_builddeps="${RESTY_ADD_PACKAGE_BUILDDEPS}"
+LABEL resty_add_package_rundeps="${RESTY_ADD_PACKAGE_RUNDEPS}"
+LABEL resty_eval_pre_configure="${RESTY_EVAL_PRE_CONFIGURE}"
+LABEL resty_eval_post_make="${RESTY_EVAL_POST_MAKE}"
+
+
+RUN DEBIAN_FRONTEND=noninteractive apt-get update \
+ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ build-essential \
+ ca-certificates \
+ curl \
+ gettext-base \
+ libgd-dev \
+ libgeoip-dev \
+ libncurses5-dev \
+ libperl-dev \
+ libreadline-dev \
+ libxslt1-dev \
+ make \
+ perl \
+ unzip \
+ zlib1g-dev \
+ ${RESTY_ADD_PACKAGE_BUILDDEPS} \
+ ${RESTY_ADD_PACKAGE_RUNDEPS} \
+ && cd /tmp \
+ && if [ -n "${RESTY_EVAL_PRE_CONFIGURE}" ]; then eval $(echo ${RESTY_EVAL_PRE_CONFIGURE}); fi \
+ && curl -fSL "${RESTY_OPENSSL_URL_BASE}/openssl-${RESTY_OPENSSL_VERSION}.tar.gz" -o openssl-${RESTY_OPENSSL_VERSION}.tar.gz \
+ && tar xzf openssl-${RESTY_OPENSSL_VERSION}.tar.gz \
+ && cd openssl-${RESTY_OPENSSL_VERSION} \
+ && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.1" ] ; then \
+ echo 'patching OpenSSL 1.1.1 for OpenResty' \
+ && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \
+ fi \
+ && if [ $(echo ${RESTY_OPENSSL_VERSION} | cut -c 1-5) = "1.1.0" ] ; then \
+ echo 'patching OpenSSL 1.1.0 for OpenResty' \
+ && curl -s https://raw.githubusercontent.com/openresty/openresty/ed328977028c3ec3033bc25873ee360056e247cd/patches/openssl-1.1.0j-parallel_build_fix.patch | patch -p1 \
+ && curl -s https://raw.githubusercontent.com/openresty/openresty/master/patches/openssl-${RESTY_OPENSSL_PATCH_VERSION}-sess_set_get_cb_yield.patch | patch -p1 ; \
+ fi \
+ && ./config \
+ no-threads shared zlib -g \
+ enable-ssl3 enable-ssl3-method \
+ --prefix=/usr/local/openresty/openssl \
+ --libdir=lib \
+ -Wl,-rpath,/usr/local/openresty/openssl/lib \
+ && make -j${RESTY_J} \
+ && make -j${RESTY_J} install_sw \
+ && cd /tmp \
+ && curl -fSL https://ftp.pcre.org/pub/pcre/pcre-${RESTY_PCRE_VERSION}.tar.gz -o pcre-${RESTY_PCRE_VERSION}.tar.gz \
+ && tar xzf pcre-${RESTY_PCRE_VERSION}.tar.gz \
+ && cd /tmp/pcre-${RESTY_PCRE_VERSION} \
+ && ./configure \
+ --prefix=/usr/local/openresty/pcre \
+ --disable-cpp \
+ --enable-jit \
+ --enable-utf \
+ --enable-unicode-properties \
+ && make -j${RESTY_J} \
+ && make -j${RESTY_J} install \
+ && cd /tmp \
+ && curl -fSL https://openresty.org/download/openresty-${RESTY_VERSION}.tar.gz -o openresty-${RESTY_VERSION}.tar.gz \
+ && tar xzf openresty-${RESTY_VERSION}.tar.gz \
+ && cd /tmp/openresty-${RESTY_VERSION} \
+ && eval ./configure -j${RESTY_J} ${_RESTY_CONFIG_DEPS} ${RESTY_CONFIG_OPTIONS} ${RESTY_CONFIG_OPTIONS_MORE} ${RESTY_LUAJIT_OPTIONS} \
+ && make -j${RESTY_J} \
+ && make -j${RESTY_J} install \
+ && cd /tmp \
+ && rm -rf \
+ openssl-${RESTY_OPENSSL_VERSION}.tar.gz openssl-${RESTY_OPENSSL_VERSION} \
+ pcre-${RESTY_PCRE_VERSION}.tar.gz pcre-${RESTY_PCRE_VERSION} \
+ openresty-${RESTY_VERSION}.tar.gz openresty-${RESTY_VERSION} \
+ && curl -fSL https://luarocks.github.io/luarocks/releases/luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz -o luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
+ && tar xzf luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
+ && cd luarocks-${RESTY_LUAROCKS_VERSION} \
+ && ./configure \
+ --prefix=/usr/local/openresty/luajit \
+ --with-lua=/usr/local/openresty/luajit \
+ --lua-suffix=jit-2.1.0-beta3 \
+ --with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 \
+ && make build \
+ && make install \
+ && cd /tmp \
+ && if [ -n "${RESTY_EVAL_POST_MAKE}" ]; then eval $(echo ${RESTY_EVAL_POST_MAKE}); fi \
+ && rm -rf luarocks-${RESTY_LUAROCKS_VERSION} luarocks-${RESTY_LUAROCKS_VERSION}.tar.gz \
+ && if [ -n "${RESTY_ADD_PACKAGE_BUILDDEPS}" ]; then DEBIAN_FRONTEND=noninteractive apt-get remove -y --purge ${RESTY_ADD_PACKAGE_BUILDDEPS} ; fi \
+ && DEBIAN_FRONTEND=noninteractive apt-get autoremove -y \
+ && mkdir -p /var/run/openresty \
+ && ln -sf /dev/stdout /usr/local/openresty/nginx/logs/access.log \
+ && ln -sf /dev/stderr /usr/local/openresty/nginx/logs/error.log
+
+# Add additional binaries into PATH for convenience
+ENV PATH=$PATH:/usr/local/openresty/luajit/bin:/usr/local/openresty/nginx/sbin:/usr/local/openresty/bin
+
+# Add LuaRocks paths
+# If OpenResty changes, these may need updating:
+# /usr/local/openresty/bin/resty -e 'print(package.path)'
+# /usr/local/openresty/bin/resty -e 'print(package.cpath)'
+ENV LUA_PATH="/usr/local/openresty/site/lualib/?.ljbc;/usr/local/openresty/site/lualib/?/init.ljbc;/usr/local/openresty/lualib/?.ljbc;/usr/local/openresty/lualib/?/init.ljbc;/usr/local/openresty/site/lualib/?.lua;/usr/local/openresty/site/lualib/?/init.lua;/usr/local/openresty/lualib/?.lua;/usr/local/openresty/lualib/?/init.lua;./?.lua;/usr/local/openresty/luajit/share/luajit-2.1.0-beta3/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/local/openresty/luajit/share/lua/5.1/?.lua;/usr/local/openresty/luajit/share/lua/5.1/?/init.lua"
+
+ENV LUA_CPATH="/usr/local/openresty/site/lualib/?.so;/usr/local/openresty/lualib/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so;/usr/local/openresty/luajit/lib/lua/5.1/?.so"
+
+# Copy nginx configuration files
+COPY nginx.conf /usr/local/openresty/nginx/conf/nginx.conf
+COPY nginx.vh.default.conf /etc/nginx/conf.d/default.conf
+
+CMD ["/usr/local/openresty/bin/openresty", "-g", "daemon off;"]
+
+# Use SIGQUIT instead of default SIGTERM to cleanly drain requests
+# See https://github.com/openresty/docker-openresty/blob/master/README.md#tips--pitfalls
+STOPSIGNAL SIGQUIT
\ No newline at end of file
diff --git a/docker/nginx/conf.d/client.conf b/docker/nginx/conf.d/client.conf
index 4cd36189..4515bda9 100644
--- a/docker/nginx/conf.d/client.conf
+++ b/docker/nginx/conf.d/client.conf
@@ -24,8 +24,8 @@ limit_conn_zone $binary_remote_addr zone=downloads_by_ip:10m;
limit_req_status 429;
limit_conn_status 429;
-# since we are proxying request to nginx from caddy, access logs will contain caddy's ip address
-# as the request address so we need to use real_ip_header module to use ip address from
+# since we are proxying request to nginx from caddy, access logs will contain caddy's ip address
+# as the request address so we need to use real_ip_header module to use ip address from
# X-Forwarded-For header as a real ip address of the request
set_real_ip_from 10.0.0.0/8;
set_real_ip_from 127.0.0.1/32;
@@ -57,6 +57,7 @@ server {
rewrite ^/portals /skynet/portals permanent;
rewrite ^/stats /skynet/stats permanent;
rewrite ^/skynet/blacklist /skynet/blocklist permanent;
+ rewrite ^/account/(.*) https://account.$domain.$tld/$1 permanent;
location / {
# This is only safe workaround to reroute based on some conditions
@@ -113,11 +114,11 @@ server {
local file_exists = io.open("/data/nginx/skynet/prevstats.lua")
if file_exists then
file_exists.close()
-
+
-- because response data is chunked, we need to concat ngx.arg[1] until
-- last chunk is received (when ngx.arg[2] is set to true)
ngx.var.response_body = ngx.var.response_body .. ngx.arg[1]
-
+
if ngx.arg[2] then
local json = require('cjson')
local prevstats = require('/data/nginx/skynet/prevstats')
@@ -153,11 +154,11 @@ server {
# variable definititions - we need to define a variable to be able to access it in lua by ngx.var.something
set $skylink ''; # placeholder for the raw 46 bit skylink
set $rest ''; # placeholder for the rest of the url that gets appended to skylink (path and args)
-
+
# resolve handshake domain by requesting to /hnsres endpoint and assign correct values to $skylink and $rest
access_by_lua_block {
local json = require('cjson')
-
+
-- match the request_uri and extract the hns domain and anything that is passed in the uri after it
-- example: /hns/something/foo/bar?baz=1 matches:
-- > hns_domain_name: something
@@ -222,9 +223,6 @@ server {
end
}
- # overwrite the Cache-Control header to only cache for 60s in case the domain gets updated
- more_set_headers 'Cache-Control: public, max-age=60';
-
# we proxy to another nginx location rather than directly to siad because we don't want to deal with caching here
proxy_pass http://127.0.0.1/$skylink$rest;
@@ -255,7 +253,7 @@ server {
# and we are using it currently for caching registry resolutions from /hns calls
location /skynet/registry/cached {
internal; # internal endpoint only
- access_log off; # do not log traffic
+ access_log off; # do not log traffic
proxy_cache skynet;
proxy_cache_key publickey=$arg_publickey&datakey=$arg_datakey; # cache based on publickey and datakey
@@ -276,6 +274,40 @@ server {
proxy_set_header User-Agent: Sia-Agent;
proxy_read_timeout 600; # siad should timeout with 404 after 5 minutes
proxy_pass http://siad/skynet/registry;
+
+ access_by_lua_block {
+ -- this block runs only when accounts are enabled
+ if os.getenv("ACCOUNTS_ENABLED", "0") == "0" then return end
+
+ local res = ngx.location.capture("/accounts/user/limits", { copy_all_vars = true })
+ if res.status == ngx.HTTP_OK then
+ local json = require('cjson')
+ local limits = json.decode(res.body)
+ if limits.registry > 0 then
+ ngx.sleep(limits.registry / 1000)
+ end
+ end
+ }
+
+ # register the registry access in accounts service (cookies should contain jwt)
+ log_by_lua_block {
+ -- this block runs only when accounts are enabled
+ if os.getenv("ACCOUNTS_ENABLED", "0") == "0" then return end
+
+ if ngx.status == ngx.HTTP_OK or ngx.status == ngx.HTTP_NOT_FOUND then
+ local http = require("socket.http")
+ local headers = { Cookie = ngx.req.get_headers()["Cookie"] }
+ local method = ngx.req.get_method() == ngx.HTTP_GET and "read" or "write"
+ local ok, statusCode, headers, statusText = http.request {
+ url = "http://accounts:3000/track/registry/" .. method,
+ method = "POST",
+ headers = headers
+ }
+ if statusCode ~= ngx.HTTP_NO_CONTENT and statusCode ~= ngx.HTTP_UNAUTHORIZED then
+ ngx.log(ngx.ERR, "accounts endpoint /track/registry/" .. method .. " failed with error " .. statusCode)
+ end
+ end
+ }
}
location /skynet/skyfile {
@@ -306,8 +338,37 @@ server {
set $dir3 $3;
}
+ # access_by_lua_block {
+ # -- this block runs only when accounts are enabled
+ # if os.getenv("ACCOUNTS_ENABLED", "0") == "0" then return end
+
+ # ngx.var.upload_limit_rate = 5 * 1024 * 1024
+ # local res = ngx.location.capture("/accounts/user", { copy_all_vars = true })
+ # if res.status == ngx.HTTP_OK then
+ # local json = require('cjson')
+ # local user = json.decode(res.body)
+ # ngx.var.upload_limit_rate = ngx.var.upload_limit_rate * (user.tier + 1)
+ # end
+ # }
+
# proxy this call to siad endpoint (make sure the ip is correct)
proxy_pass http://siad/skynet/skyfile/$dir1/$dir2/$dir3$is_args$args;
+
+ # register the upload in accounts service (cookies should contain jwt)
+ log_by_lua_block {
+ -- this block runs only when accounts are enabled
+ if os.getenv("ACCOUNTS_ENABLED", "0") == "0" then return end
+
+ local skylink = ngx.header["Skynet-Skylink"]
+ if skylink and ngx.status >= ngx.HTTP_OK and ngx.status < ngx.HTTP_SPECIAL_RESPONSE then
+ local http = require("socket.http")
+ local headers = { Cookie = ngx.req.get_headers()["Cookie"] }
+ local ok, statusCode, headers, statusText = http.request { url = "http://accounts:3000/track/upload/" .. skylink, method = "POST", headers = headers }
+ if statusCode ~= ngx.HTTP_NO_CONTENT and statusCode ~= ngx.HTTP_UNAUTHORIZED then
+ ngx.log(ngx.ERR, "accounts endpoint /track/upload/" .. skylink .. " failed with error " .. statusCode)
+ end
+ end
+ }
}
location ~ "^/(([a-zA-Z0-9-_]{46}|[a-z0-9]{55})(/.*)?)$" {
@@ -322,12 +383,44 @@ server {
}
limit_conn downloads_by_ip 100; # ddos protection: max 100 downloads at a time
- add_header Cache-Control "public, max-age=86400"; # allow consumer to cache response
# we need to explicitly use set directive here because $1 will contain the skylink with
# decoded whitespaces and set will re-encode it for us before passing it to proxy_pass
set $skylink $1;
+ access_by_lua_block {
+ -- this block runs only when accounts are enabled
+ if os.getenv("ACCOUNTS_ENABLED", "0") == "0" then return end
+
+ local res = ngx.location.capture("/accounts/user/limits", { copy_all_vars = true })
+ if res.status == ngx.HTTP_OK then
+ local json = require('cjson')
+ local limits = json.decode(res.body)
+ ngx.var.limit_rate = limits.download
+ end
+ }
+
+ # register the download in accounts service (cookies should contain jwt)
+ log_by_lua_block {
+ -- this block runs only when accounts are enabled
+ if os.getenv("ACCOUNTS_ENABLED", "0") == "0" then return end
+
+ local skylink = ngx.header["Skynet-Skylink"]
+ if skylink and ngx.status >= ngx.HTTP_OK and ngx.status < ngx.HTTP_SPECIAL_RESPONSE then
+ local http = require("socket.http")
+ local headers = { Cookie = ngx.req.get_headers()["Cookie"] }
+ local query = table.concat({ "status=" .. ngx.status, "bytes=" .. ngx.var.body_bytes_sent }, "&")
+ local ok, statusCode, headers, statusText = http.request {
+ url = "http://accounts:3000/track/download/" .. skylink .. "?" .. query,
+ method = "POST",
+ headers = headers
+ }
+ if statusCode ~= ngx.HTTP_NO_CONTENT and statusCode ~= ngx.HTTP_UNAUTHORIZED then
+ ngx.log(ngx.ERR, "accounts endpoint /track/download/" .. skylink .. " failed with error " .. statusCode)
+ end
+ end
+ }
+
proxy_read_timeout 600;
proxy_set_header User-Agent: Sia-Agent;
# proxy this call to siad /skynet/skylink/ endpoint (make sure the ip is correct)
@@ -365,6 +458,14 @@ server {
proxy_pass http://127.0.0.1/$uri?attachment=true&$args;
}
+ location /accounts {
+ internal; # internal endpoint only
+ access_log off; # do not log traffic
+
+ rewrite /accounts(.*) $1 break; # drop the /accounts prefix from uri
+ proxy_pass http://accounts:3000;
+ }
+
# include custom locations, specific to the server
include /etc/nginx/conf.d/server-override/*;
}
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
index 3a5b885e..4fcea569 100644
--- a/docker/nginx/nginx.conf
+++ b/docker/nginx/nginx.conf
@@ -26,6 +26,7 @@ worker_processes 1;
#pid logs/nginx.pid;
env SKYNET_PORTAL_API; # declare env variable to use it in config
+env ACCOUNTS_ENABLED; # declare env variable to use it in config
events {
worker_connections 1024;
@@ -67,4 +68,5 @@ http {
header_filter_by_lua 'ngx.header["Skynet-Portal-Api"] = os.getenv("SKYNET_PORTAL_API")';
include /etc/nginx/conf.d/*.conf;
+ include /etc/nginx/conf.extra.d/*.conf;
}
diff --git a/docker/nginx/nginx.vh.default.conf b/docker/nginx/nginx.vh.default.conf
new file mode 100644
index 00000000..d4aa8d5a
--- /dev/null
+++ b/docker/nginx/nginx.vh.default.conf
@@ -0,0 +1,58 @@
+# nginx.vh.default.conf -- docker-openresty
+#
+# This file is installed to:
+# `/etc/nginx/conf.d/default.conf`
+#
+# It tracks the `server` section of the upstream OpenResty's `nginx.conf`.
+#
+# This config (and any other configs in `etc/nginx/conf.d/`) is loaded by
+# default by the `include` directive in `/usr/local/openresty/nginx/conf/nginx.conf`.
+#
+# See https://github.com/openresty/docker-openresty/blob/master/README.md#nginx-config-files
+#
+
+
+server {
+ listen 80;
+ server_name localhost;
+
+ #charset koi8-r;
+ #access_log /var/log/nginx/host.access.log main;
+
+ location / {
+ root /usr/local/openresty/nginx/html;
+ index index.html index.htm;
+ }
+
+ #error_page 404 /404.html;
+
+ # redirect server error pages to the static page /50x.html
+ #
+ error_page 500 502 503 504 /50x.html;
+ location = /50x.html {
+ root /usr/local/openresty/nginx/html;
+ }
+
+ # proxy the PHP scripts to Apache listening on 127.0.0.1:80
+ #
+ #location ~ \.php$ {
+ # proxy_pass http://127.0.0.1;
+ #}
+
+ # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+ #
+ #location ~ \.php$ {
+ # root /usr/local/openresty/nginx/html;
+ # fastcgi_pass 127.0.0.1:9000;
+ # fastcgi_index index.php;
+ # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
+ # include fastcgi_params;
+ #}
+
+ # deny access to .htaccess files, if Apache's document root
+ # concurs with nginx's one
+ #
+ #location ~ /\.ht {
+ # deny all;
+ #}
+}
\ No newline at end of file
diff --git a/package.json b/package.json
index 06108e34..71155372 100644
--- a/package.json
+++ b/package.json
@@ -5,6 +5,10 @@
"packages/*"
],
"dependencies": {
- "sharp": "^0.27.2"
+ "@tailwindcss/forms": "^0.2.1",
+ "autoprefixer": "^10.2.4",
+ "postcss": "^8.2.6",
+ "sharp": "^0.27.2",
+ "tailwindcss": "^2.0.4"
}
}
diff --git a/packages/dashboard/.env b/packages/dashboard/.env
new file mode 100644
index 00000000..bb640cd8
--- /dev/null
+++ b/packages/dashboard/.env
@@ -0,0 +1,4 @@
+NEXT_PUBLIC_SKYNET_PORTAL_API=https://siasky.net
+NEXT_PUBLIC_SKYNET_DASHBOARD_URL=https://account.siasky.net
+NEXT_PUBLIC_KRATOS_BROWSER_URL=https://account.siasky.net/.ory/kratos/public
+NEXT_PUBLIC_KRATOS_PUBLIC_URL=https://account.siasky.net/.ory/kratos/public
diff --git a/packages/dashboard/.gitignore b/packages/dashboard/.gitignore
new file mode 100644
index 00000000..ea47d16a
--- /dev/null
+++ b/packages/dashboard/.gitignore
@@ -0,0 +1,38 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# env defaults
+!.env
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+# vercel
+.vercel
+.next
diff --git a/packages/dashboard/.prettierignore b/packages/dashboard/.prettierignore
new file mode 100644
index 00000000..571a2ec1
--- /dev/null
+++ b/packages/dashboard/.prettierignore
@@ -0,0 +1,3 @@
+.next
+package.json
+package-lock.json
diff --git a/packages/dashboard/.prettierrc b/packages/dashboard/.prettierrc
new file mode 100644
index 00000000..963354f2
--- /dev/null
+++ b/packages/dashboard/.prettierrc
@@ -0,0 +1,3 @@
+{
+ "printWidth": 120
+}
diff --git a/packages/dashboard/Dockerfile b/packages/dashboard/Dockerfile
new file mode 100644
index 00000000..d5dd31eb
--- /dev/null
+++ b/packages/dashboard/Dockerfile
@@ -0,0 +1,16 @@
+FROM node:15.12.0-alpine
+
+WORKDIR /usr/app
+
+COPY package.json .
+
+ENV NEXT_TELEMETRY_DISABLED 1
+RUN yarn --no-lockfile
+
+COPY public ./public
+COPY src ./src
+COPY styles ./styles
+COPY postcss.config.js .
+COPY tailwind.config.js .
+
+CMD ["sh", "-c", "env | grep -E 'NEXT_PUBLIC|KRATOS|STRIPE' > .env.local && yarn build && yarn start"]
diff --git a/packages/dashboard/README.md b/packages/dashboard/README.md
new file mode 100644
index 00000000..4b412a3c
--- /dev/null
+++ b/packages/dashboard/README.md
@@ -0,0 +1,34 @@
+This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+npm run dev
+# or
+yarn dev
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.
+
+[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.
+
+The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/import?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json
new file mode 100644
index 00000000..38f0fd0e
--- /dev/null
+++ b/packages/dashboard/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "dashboard",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start"
+ },
+ "dependencies": {
+ "@fontsource/metropolis": "^4.1.0",
+ "@ory/kratos-client": "^0.5.4-alpha.1",
+ "@stripe/react-stripe-js": "^1.4.0",
+ "@stripe/stripe-js": "^1.13.0",
+ "@tailwindcss/forms": "^0.2.1",
+ "autoprefixer": "^10.2.5",
+ "classnames": "^2.2.6",
+ "clipboardy": "^2.3.0",
+ "dayjs": "^1.10.4",
+ "express-jwt": "^6.0.0",
+ "fast-levenshtein": "^3.0.0",
+ "formik": "^2.2.6",
+ "http-status-codes": "^2.1.4",
+ "jwks-rsa": "^1.12.2",
+ "ky": "0.25.1",
+ "next": "^10.0.8",
+ "postcss": "^8.2.8",
+ "prettier": "^2.2.1",
+ "pretty-bytes": "^5.5.0",
+ "react": "17.0.1",
+ "react-dom": "17.0.1",
+ "skynet-js": "^3.0.0",
+ "square": "^9.0.0",
+ "stripe": "^8.137.0",
+ "superagent": "^6.1.0",
+ "swr": "^0.5.0",
+ "tailwindcss": "^2.0.3",
+ "yup": "^0.32.9"
+ },
+ "devDependencies": {
+ "@tailwindcss/forms": "^0.2.1"
+ }
+}
diff --git a/packages/dashboard/postcss.config.js b/packages/dashboard/postcss.config.js
new file mode 100644
index 00000000..12a703d9
--- /dev/null
+++ b/packages/dashboard/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/packages/dashboard/public/favicon.ico b/packages/dashboard/public/favicon.ico
new file mode 100644
index 00000000..9229fbf7
Binary files /dev/null and b/packages/dashboard/public/favicon.ico differ
diff --git a/packages/dashboard/src/components/Form/Message.js b/packages/dashboard/src/components/Form/Message.js
new file mode 100644
index 00000000..e8ebb7e8
--- /dev/null
+++ b/packages/dashboard/src/components/Form/Message.js
@@ -0,0 +1,62 @@
+const types = {
+ error: {
+ backgroundColor: "bg-red-50",
+ titleColor: "text-red-800",
+ detailsColor: "text-red-700",
+ iconColor: "text-red-400",
+ icon: (
+
+ ),
+ },
+ info: {
+ backgroundColor: "bg-blue-50",
+ titleColor: "text-blue-800",
+ detailsColor: "text-blue-700",
+ iconColor: "text-blue-400",
+ icon: (
+
+ ),
+ },
+};
+
+export default function Message({ type = "info", title, items = [] }) {
+ const { backgroundColor, titleColor, detailsColor, iconColor, icon } = types[type];
+
+ return (
+
+
+
+
+
+
+ {title &&
{title}
}
+ {items.length > 0 && (
+
+
1 ? "list-disc pl-5 space-y-1" : ""}`}>
+ {items.map((item, index) => (
+ - {item}
+ ))}
+
+
+ )}
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/components/Form/SelfServiceForm.js b/packages/dashboard/src/components/Form/SelfServiceForm.js
new file mode 100644
index 00000000..e00f27ac
--- /dev/null
+++ b/packages/dashboard/src/components/Form/SelfServiceForm.js
@@ -0,0 +1,104 @@
+import { useFormik, getIn, setIn } from "formik";
+import classnames from "classnames";
+import SelfServiceMessages from "./SelfServiceMessages";
+
+export default function SelfServiceForm({ flow, config, fieldsConfig, title, button = "Submit" }) {
+ const fields = config.fields
+ .map((field) => ({ ...field, ...fieldsConfig[field.name] }))
+ .sort((a, b) => (a.position < b.position ? -1 : 1));
+ const formik = useFormik({
+ initialValues: fields.reduce((acc, field) => setIn(acc, field.name, field.value ?? ""), {}),
+ });
+
+ return (
+
+ );
+}
diff --git a/packages/dashboard/src/components/Form/SelfServiceMessages.js b/packages/dashboard/src/components/Form/SelfServiceMessages.js
new file mode 100644
index 00000000..9395e227
--- /dev/null
+++ b/packages/dashboard/src/components/Form/SelfServiceMessages.js
@@ -0,0 +1,45 @@
+import classnames from "classnames";
+
+// const types = {
+// error: {
+// backgroundColor: "bg-red-50",
+// titleColor: "text-red-800",
+// detailsColor: "text-red-700",
+// iconColor: "text-red-400",
+// icon: (
+//
+// ),
+// },
+// info: {
+// backgroundColor: "bg-blue-50",
+// titleColor: "text-blue-800",
+// detailsColor: "text-blue-700",
+// iconColor: "text-blue-400",
+// icon: (
+//
+// ),
+// },
+// };
+
+export default function SelfServiceMessages({ messages = [] }) {
+ if (!messages) return null; // make sure we don't throw on invalid data
+
+ return messages.map(({ text, type }) => (
+
+ {text}
+
+ ));
+}
diff --git a/packages/dashboard/src/components/Layout.js b/packages/dashboard/src/components/Layout.js
new file mode 100644
index 00000000..1d7fe6c2
--- /dev/null
+++ b/packages/dashboard/src/components/Layout.js
@@ -0,0 +1,327 @@
+import Link from "next/link";
+import { useRouter } from "next/router";
+import Head from "next/head";
+import ky from "ky/umd";
+import { useState } from "react";
+import config from "../../src/config";
+
+export default function Layout({ title, children }) {
+ const [menuOpen, openMenu] = useState(false);
+ const [avatarDropdownOpen, openAvatarDropdown] = useState(false);
+ const router = useRouter();
+ const handleSignOut = async (e) => {
+ e.preventDefault();
+
+ try {
+ await ky.post("/logout");
+
+ window.location = `${config.kratos.browser}/self-service/browser/flows/logout`;
+ } catch (error) {
+ console.log(error); // todo: handle errors with a message
+ }
+ };
+
+ return (
+
+
+
Skynet - {title}
+
+
+
+
+
+
+
+
+ {children || (
+
+ )}
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/components/Table.js b/packages/dashboard/src/components/Table.js
new file mode 100644
index 00000000..e3ae6d5e
--- /dev/null
+++ b/packages/dashboard/src/components/Table.js
@@ -0,0 +1,128 @@
+import { useEffect } from "react";
+import classnames from "classnames";
+
+function Button({ children, disabled, className, ...props }) {
+ return (
+
+ );
+}
+
+export default function Table({ items, count, headers, actions, offset, setOffset, pageSize = 10 }) {
+ useEffect(() => {
+ if (offset < 0) setOffset(0);
+ else if (offset >= count && count > 0) setOffset(Math.floor(count / pageSize - 1) * pageSize);
+ else if (offset % pageSize) setOffset(offset - (offset % pageSize));
+ }, [offset, pageSize, setOffset]);
+
+ return (
+
+
+
+
+
+
+
+ {headers.map(({ key, name }) => (
+
+ {name}
+ |
+ ))}
+ {actions.map(({ key, name }) => (
+
+ {name}
+ |
+ ))}
+
+
+
+ {items && items.length ? (
+ items.map((row, index) => (
+
+ {headers.map(({ key, formatter, href, nowrap = true }) => (
+
+ {(formatter ? (
+ formatter(row, key)
+ ) : href ? (
+
+ {row[key]}
+
+ ) : (
+ row[key]
+ )) || <>—>}
+ |
+ ))}
+ {actions.map(({ key, name, action }) => (
+
+
+ {name}
+
+ |
+ ))}
+
+ ))
+ ) : (
+
+
+ no entries
+ |
+
+ )}
+
+
+ {/* This example requires Tailwind CSS v2.0+ */}
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/config.js b/packages/dashboard/src/config.js
new file mode 100644
index 00000000..326ec4e9
--- /dev/null
+++ b/packages/dashboard/src/config.js
@@ -0,0 +1,14 @@
+export default {
+ // https://github.com/ory/kratos-selfservice-ui-node#configuration
+ kratos: {
+ // The URL where ORY Kratos's Public API is located at. If this app and ORY Kratos are running in the same
+ // private network, this should be the private network address (e.g. kratos-public.svc.cluster.local)
+ public: process.env.NEXT_PUBLIC_KRATOS_PUBLIC_URL.replace(/\/+$/, ""),
+ // The URL where ORY Kratos's public API is located, when accessible from the public internet via ORY Oathkeeper.
+ // This could be for example http://kratos.my-app.com/.
+ browser: process.env.NEXT_PUBLIC_KRATOS_BROWSER_URL.replace(/\/+$/, ""),
+ },
+ tiers: {
+ starter: { id: "starter", tier: 1, name: "Free", description: "Pin up to 100GB" },
+ },
+};
diff --git a/packages/dashboard/src/pages/_app.js b/packages/dashboard/src/pages/_app.js
new file mode 100644
index 00000000..5be206d2
--- /dev/null
+++ b/packages/dashboard/src/pages/_app.js
@@ -0,0 +1,21 @@
+import { Elements } from "@stripe/react-stripe-js";
+import { loadStripe } from "@stripe/stripe-js";
+import Head from "next/head";
+import "tailwindcss/tailwind.css";
+import "@fontsource/metropolis/all.css";
+
+const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY);
+
+function MyApp({ Component, pageProps }) {
+ return (
+
+
+
+ Skynet
+
+
+
+ );
+}
+
+export default MyApp;
diff --git a/packages/dashboard/src/pages/api/accounts/login.js b/packages/dashboard/src/pages/api/accounts/login.js
new file mode 100644
index 00000000..4890d52b
--- /dev/null
+++ b/packages/dashboard/src/pages/api/accounts/login.js
@@ -0,0 +1,19 @@
+import superagent from "superagent";
+
+export default async (req, res) => {
+ if (req.cookies.ory_kratos_session) {
+ try {
+ const { header } = await superagent
+ .post("http://oathkeeper:4455/login")
+ .set("cookie", `ory_kratos_session=${req.cookies.ory_kratos_session}`);
+
+ res.setHeader("Set-Cookie", header["set-cookie"]);
+ res.redirect(req.query.return_to ?? "/");
+ } catch (error) {
+ // credentials were correct but accounts service failed
+ res.redirect("/.ory/kratos/public/self-service/browser/flows/logout");
+ }
+ } else {
+ res.redirect("/auth/login"); // redirect to login page if kratos session is missing
+ }
+};
diff --git a/packages/dashboard/src/pages/api/square/cards.js b/packages/dashboard/src/pages/api/square/cards.js
new file mode 100644
index 00000000..603da8f4
--- /dev/null
+++ b/packages/dashboard/src/pages/api/square/cards.js
@@ -0,0 +1,58 @@
+import { Client, Environment } from "square";
+import { StatusCodes } from "http-status-codes";
+
+const client = new Client({
+ environment: Environment.Sandbox,
+ accessToken: process.env.SQUARE_ACCESS_TOKEN,
+});
+
+const api = {
+ GET: async (req, res) => {
+ const user = "R7R0NY1Z8WT11D43564EEFKTYR"; // req.headers["x-user"];
+
+ try {
+ const { result: customerResult } = await client.customersApi.retrieveCustomer(user);
+ const { customer } = customerResult;
+
+ res.json(customer.cards);
+ } catch (error) {
+ res.json([]);
+ }
+ },
+ // POST: async (req, res) => {
+ // const user = req.headers["x-user"];
+ // const card = {
+ // cardNonce: "YOUR_CARD_NONCE",
+ // cardholderName: "Amelia Earhart",
+ // billingAddress: {},
+ // verificationToken: "verification_token0",
+ // };
+
+ // card.bodyBillingAddress.addressLine1 = "500 Electric Ave";
+ // card.bodyBillingAddress.addressLine2 = "Suite 600";
+ // card.bodyBillingAddress.addressLine3 = "address_line_38";
+ // card.bodyBillingAddress.locality = "New York";
+ // card.bodyBillingAddress.sublocality = "sublocality2";
+ // card.bodyBillingAddress.administrativeDistrictLevel1 = "NY";
+ // card.bodyBillingAddress.postalCode = "10003";
+ // card.bodyBillingAddress.country = "US";
+
+ // try {
+ // const { result } = await client.customersApi.createCustomerCard(user, card);
+
+ // res.status(StatusCodes.NO_CONTENT);
+ // } catch (error) {
+ // console.log(Object.keys(error));
+
+ // res.status(StatusCodes.BAD_REQUEST);
+ // }
+ // },
+};
+
+export default (req, res) => {
+ if (req.method in api) {
+ api[req.method](req, res);
+ } else {
+ res.status(StatusCodes.NOT_FOUND);
+ }
+};
diff --git a/packages/dashboard/src/pages/api/square/invoices.js b/packages/dashboard/src/pages/api/square/invoices.js
new file mode 100644
index 00000000..1ad8471a
--- /dev/null
+++ b/packages/dashboard/src/pages/api/square/invoices.js
@@ -0,0 +1,45 @@
+import { Client, Environment } from "square";
+import { StatusCodes } from "http-status-codes";
+
+const client = new Client({
+ environment: Environment.Sandbox,
+ accessToken: process.env.SQUARE_ACCESS_TOKEN,
+});
+
+const api = {
+ GET: async (req, res) => {
+ const user = "NBE7TRXZPGZXNBD64JB6DR5AGR"; // req.headers["x-user"];
+
+ try {
+ // get locations for invoices search query
+ const { result: locationsResponse } = await client.locationsApi.listLocations();
+ const { locations } = locationsResponse;
+
+ // create invoices serach query
+ const locationIds = locations.map(({ id }) => id);
+ const customerIds = [user];
+ const filter = { locationIds, customerIds };
+ const sort = { field: "INVOICE_SORT_DATE", order: "DESC" };
+ const query = { filter, sort };
+
+ // query invoices with given search criteria
+ const { result: invoicesResponse } = await client.invoicesApi.searchInvoices({ query, limit: 10 });
+ const { invoices } = invoicesResponse;
+
+ res.json(invoices);
+ } catch (error) {
+ console.log(error);
+ console.log(error?.errors);
+
+ res.json([]); // todo: error handling
+ }
+ },
+};
+
+export default (req, res) => {
+ if (req.method in api) {
+ return api[req.method](req, res);
+ }
+
+ return res.status(StatusCodes.NOT_FOUND);
+};
diff --git a/packages/dashboard/src/pages/api/square/subscription.js b/packages/dashboard/src/pages/api/square/subscription.js
new file mode 100644
index 00000000..5ece9e68
--- /dev/null
+++ b/packages/dashboard/src/pages/api/square/subscription.js
@@ -0,0 +1,46 @@
+import { Client, Environment } from "square";
+import { StatusCodes } from "http-status-codes";
+
+const client = new Client({
+ environment: Environment.Sandbox,
+ accessToken: process.env.SQUARE_ACCESS_TOKEN,
+});
+
+const api = {
+ GET: async (req, res) => {
+ try {
+ const user = "NBE7TRXZPGZXNBD64JB6DR5AGR"; // req.headers["x-user"];
+
+ // create subscriptions search query
+ const query = { filter: { customerIds: [user] } };
+
+ // query subscriptions with given search criteria
+ const { result: subscriptionsResponse } = await client.subscriptionsApi.searchSubscriptions({ query });
+ const { subscriptions } = subscriptionsResponse;
+
+ // get active subscription
+ const subscription = subscriptions.find(({ status }) => status === "ACTIVE");
+
+ if (!subscription) {
+ return res.status(StatusCodes.NO_CONTENT).end(); // no active subscription found
+ }
+
+ console.log("....", subscription);
+
+ return res.json(subscription);
+ } catch (error) {
+ console.log(error);
+ console.log(error?.errors);
+
+ return res.status(StatusCodes.BAD_REQUEST).end(); // todo: error handling
+ }
+ },
+};
+
+export default (req, res) => {
+ if (req.method in api) {
+ return api[req.method](req, res);
+ }
+
+ return res.status(StatusCodes.NOT_FOUND).end();
+};
diff --git a/packages/dashboard/src/pages/api/square/subscription/cancel.js b/packages/dashboard/src/pages/api/square/subscription/cancel.js
new file mode 100644
index 00000000..9b2f017c
--- /dev/null
+++ b/packages/dashboard/src/pages/api/square/subscription/cancel.js
@@ -0,0 +1,55 @@
+import { Client, Environment } from "square";
+import { StatusCodes } from "http-status-codes";
+
+const client = new Client({
+ environment: Environment.Sandbox,
+ accessToken: process.env.SQUARE_ACCESS_TOKEN,
+});
+
+const cancelSubscription = async (id) => {
+ const { result: subscriptionsResponse } = await client.subscriptionsApi.cancelSubscription(id);
+ const { subscription } = subscriptionsResponse;
+
+ return subscription;
+};
+
+const getActiveSubscription = async (customerId) => {
+ // create subscriptions search query
+ const query = { filter: { customerIds: [customerId] } };
+
+ // query subscriptions with given search criteria
+ const { result: subscriptionsResponse } = await client.subscriptionsApi.searchSubscriptions({ query });
+ const { subscriptions } = subscriptionsResponse;
+
+ // get active subscription with a set cancellation date
+ return subscriptions.find(({ status, canceledDate }) => status === "ACTIVE" && !canceledDate);
+};
+
+const api = {
+ POST: async (req, res) => {
+ try {
+ const user = "NBE7TRXZPGZXNBD64JB6DR5AGR"; // req.headers["x-user"];
+ const subscription = await getActiveSubscription(user);
+
+ if (!subscription) {
+ return res.status(StatusCodes.BAD_REQUEST).end(); // no active subscription found
+ }
+
+ const canceledSubscription = await cancelSubscription(subscription.id);
+
+ return res.json(canceledSubscription);
+ } catch (error) {
+ console.log(error.errors);
+
+ return res.status(StatusCodes.BAD_REQUEST).end(); // todo: error handling
+ }
+ },
+};
+
+export default (req, res) => {
+ if (req.method in api) {
+ return api[req.method](req, res);
+ }
+
+ return res.status(StatusCodes.NOT_FOUND).end();
+};
diff --git a/packages/dashboard/src/pages/api/square/subscription/restore.js b/packages/dashboard/src/pages/api/square/subscription/restore.js
new file mode 100644
index 00000000..8cac9dfc
--- /dev/null
+++ b/packages/dashboard/src/pages/api/square/subscription/restore.js
@@ -0,0 +1,58 @@
+import { Client, Environment } from "square";
+import { StatusCodes } from "http-status-codes";
+
+const client = new Client({
+ environment: Environment.Sandbox,
+ accessToken: process.env.SQUARE_ACCESS_TOKEN,
+});
+
+const updateSubscription = async (id, body) => {
+ const { result: subscriptionsResponse } = await client.subscriptionsApi.updateSubscription(id, body);
+ const { subscription } = subscriptionsResponse;
+
+ return subscription;
+};
+
+const getActiveCanceledSubscription = async (customerId) => {
+ // create subscriptions search query
+ const query = { filter: { customerIds: [customerId] } };
+
+ // query subscriptions with given search criteria
+ const { result: subscriptionsResponse } = await client.subscriptionsApi.searchSubscriptions({ query });
+ const { subscriptions } = subscriptionsResponse;
+
+ // get active subscription with a set cancellation date
+ return subscriptions.find(({ status, canceledDate }) => status === "ACTIVE" && canceledDate);
+};
+
+const api = {
+ POST: async (req, res) => {
+ try {
+ const user = "NBE7TRXZPGZXNBD64JB6DR5AGR"; // req.headers["x-user"];
+ const subscription = await getActiveCanceledSubscription(user);
+
+ if (!subscription) {
+ return res.status(StatusCodes.BAD_REQUEST).end(); // no active subscription with cancel date found
+ }
+
+ // update the subscription setting empty canceledDate
+ const updatedSubscription = await updateSubscription(subscription.id, {
+ subscription: { ...subscription, canceledDate: "" },
+ });
+
+ return res.json(updatedSubscription);
+ } catch (error) {
+ console.log(error.errors);
+
+ return res.status(StatusCodes.BAD_REQUEST).end(); // todo: error handling
+ }
+ },
+};
+
+export default (req, res) => {
+ if (req.method in api) {
+ return api[req.method](req, res);
+ }
+
+ return res.status(StatusCodes.NOT_FOUND).end();
+};
diff --git a/packages/dashboard/src/pages/api/stripe/billing.js b/packages/dashboard/src/pages/api/stripe/billing.js
new file mode 100644
index 00000000..0c855ec4
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stripe/billing.js
@@ -0,0 +1,28 @@
+import ky from "ky/umd";
+import Stripe from "stripe";
+import { StatusCodes } from "http-status-codes";
+
+const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
+
+const getStripeCustomer = (stripeCustomerId = null) => {
+ if (stripeCustomerId) {
+ return stripe.customers.retrieve(stripeCustomerId);
+ }
+ return stripe.customers.create();
+};
+
+export default async (req, res) => {
+ try {
+ const authorization = req.headers.authorization; // authorization header from request
+ const { stripeCustomerId } = await ky("http://accounts:3000/user", { headers: { authorization } }).json();
+ const customer = await getStripeCustomer(stripeCustomerId);
+ const session = await stripe.billingPortal.sessions.create({
+ customer: customer.id,
+ return_url: `${process.env.SKYNET_DASHBOARD_URL}/payments`,
+ });
+
+ res.redirect(session.url);
+ } catch ({ message }) {
+ res.status(StatusCodes.BAD_REQUEST).json({ error: { message } });
+ }
+};
diff --git a/packages/dashboard/src/pages/api/stripe/checkout.js b/packages/dashboard/src/pages/api/stripe/checkout.js
new file mode 100644
index 00000000..4ddf17a9
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stripe/checkout.js
@@ -0,0 +1,59 @@
+import ky from "ky/umd";
+import Stripe from "stripe";
+import { StatusCodes } from "http-status-codes";
+import { isPaidTier } from "../../../services/tiers";
+
+const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
+
+const getStripeCustomer = async (user, authorization) => {
+ if (user.stripeCustomerId) {
+ return stripe.customers.retrieve(user.stripeCustomerId);
+ }
+
+ const customer = await stripe.customers.create();
+
+ // update user instance and include the customer id once created
+ await ky.put(`http://accounts:3000/user`, { headers: { authorization }, json: { stripeCustomerId: customer.id } });
+
+ return customer;
+};
+
+export default async (req, res) => {
+ if (req.method !== "POST") {
+ return res.status(StatusCodes.NOT_FOUND).end();
+ }
+
+ const { price } = req.body;
+
+ if (!price) {
+ return res.status(StatusCodes.BAD_REQUEST).json({ error: { message: "Missing 'price' attribute" } });
+ }
+
+ try {
+ const authorization = req.headers.authorization; // authorization header from request
+ const user = await ky("http://accounts:3000/user", { headers: { authorization } }).json();
+
+ if (isPaidTier(user.tier)) {
+ const message = `Customer can have only one active subscription at a time, use Stripe Customer Portal to manage active subscription`;
+
+ return res.status(StatusCodes.BAD_REQUEST).json({ error: { message } });
+ }
+
+ const customer = await getStripeCustomer(user, authorization);
+ const session = await stripe.checkout.sessions.create({
+ mode: "subscription",
+ payment_method_types: ["card"],
+ line_items: [{ price, quantity: 1 }],
+ customer: customer.id,
+ client_reference_id: user.sub,
+ allow_promotion_codes: true,
+ success_url: `${process.env.SKYNET_DASHBOARD_URL}/payments?session_id={CHECKOUT_SESSION_ID}`,
+ cancel_url: `${process.env.SKYNET_DASHBOARD_URL}/payments`,
+ });
+
+ res.json({ sessionId: session.id });
+ } catch (error) {
+ console.log(error);
+ res.status(StatusCodes.BAD_REQUEST).json({ error: { message: error.message } });
+ }
+};
diff --git a/packages/dashboard/src/pages/api/stripe/subscription.js b/packages/dashboard/src/pages/api/stripe/subscription.js
new file mode 100644
index 00000000..3526d5ac
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stripe/subscription.js
@@ -0,0 +1,23 @@
+import ky from "ky/umd";
+import Stripe from "stripe";
+import { StatusCodes } from "http-status-codes";
+
+const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
+
+export default async (req, res) => {
+ try {
+ const authorization = req.headers.authorization; // authorization header from request
+ const { stripeCustomerId } = await ky("http://accounts:3000/user", { headers: { authorization } }).json();
+ const stripeCustomer = await stripe.customers.retrieve(stripeCustomerId, { expand: ["subscriptions"] });
+ const { subscriptions } = stripeCustomer;
+
+ // todo: find a better way to get current subscription
+ if (subscriptions.total_count) {
+ return res.json(subscriptions.data[0]);
+ }
+
+ res.status(StatusCodes.NO_CONTENT).end();
+ } catch ({ message }) {
+ res.status(StatusCodes.BAD_REQUEST).json({ error: { message } });
+ }
+};
diff --git a/packages/dashboard/src/pages/api/stubs/stripe/prices.js b/packages/dashboard/src/pages/api/stubs/stripe/prices.js
new file mode 100644
index 00000000..ebf013a3
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/stripe/prices.js
@@ -0,0 +1,37 @@
+export default (req, res) => {
+ res.json([
+ {
+ id: "price_1IReYFIzjULiPWN6DqN2DwjN",
+ name: "Skynet Extreme",
+ description: "Skynet Extreme description",
+ tier: 4,
+ price: 80,
+ currency: "usd",
+ stripe: "price_1IReYFIzjULiPWN6DqN2DwjN",
+ productId: "prod_J3m6IuVyh3XOc5",
+ livemode: false,
+ },
+ {
+ id: "price_1IReY5IzjULiPWN6AxPytHEG",
+ name: "Skynet Pro",
+ description: "Skynet Pro description",
+ tier: 3,
+ price: 20,
+ currency: "usd",
+ stripe: "price_1IReY5IzjULiPWN6AxPytHEG",
+ productId: "prod_J3m6ioQg90kZj5",
+ livemode: false,
+ },
+ {
+ id: "price_1IReXpIzjULiPWN66PvsxHL4",
+ name: "Skynet Plus",
+ description: "Skynet Plus description",
+ tier: 2,
+ price: 5,
+ currency: "usd",
+ stripe: "price_1IReXpIzjULiPWN66PvsxHL4",
+ productId: "prod_J3m6xMfDiz2LGE",
+ livemode: false,
+ },
+ ]);
+};
diff --git a/packages/dashboard/src/pages/api/stubs/user.js b/packages/dashboard/src/pages/api/stubs/user.js
new file mode 100644
index 00000000..409bf333
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user.js
@@ -0,0 +1,5 @@
+import user from "./user.json";
+
+export default (req, res) => {
+ res.json(user);
+};
diff --git a/packages/dashboard/src/pages/api/stubs/user.json b/packages/dashboard/src/pages/api/stubs/user.json
new file mode 100644
index 00000000..f41dab0e
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user.json
@@ -0,0 +1,12 @@
+{
+ "firstName": "John",
+ "lastName": "Doe",
+ "email": "john@example.com",
+ "sub": "ab776d6d-f324-4fa7-4k21-7587d5215481",
+ "tier": 1,
+ "subscribedUntil": "0001-01-01T00:00:00Z",
+ "subscriptionStatus": "active",
+ "subscriptionCancelAt": "2021-04-21T00:00:00Z",
+ "subscriptionCancelAtPeriodEnd": true,
+ "stripeCustomerId": "cus_J0iYnAp6LRgsTI"
+}
diff --git a/packages/dashboard/src/pages/api/stubs/user/downloads.js b/packages/dashboard/src/pages/api/stubs/user/downloads.js
new file mode 100644
index 00000000..c4a24c03
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user/downloads.js
@@ -0,0 +1,8 @@
+import items from "./downloads.json";
+
+export default (req, res) => {
+ const offset = parseInt(req.query?.offset ?? 0, 10);
+ const pageSize = parseInt(req.query?.pageSize ?? 10, 10);
+
+ res.json({ items: items.slice(offset, offset + pageSize), count: items.length, pageSize, offset });
+};
diff --git a/packages/dashboard/src/pages/api/stubs/user/downloads.json b/packages/dashboard/src/pages/api/stubs/user/downloads.json
new file mode 100644
index 00000000..edf6ff0d
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user/downloads.json
@@ -0,0 +1,44 @@
+[
+ {
+ "id": 1111,
+ "skylink": "PAL0w4SdA5rFCDGEutgpeQ50Om-YkBabtXVOJAkmedslKw",
+ "name": "ugabuga.pdf",
+ "size": 123123,
+ "downloadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 2222,
+ "skylink": "XABvi7JtJbQSMAcDwnUnmp2FKDPjg8_tTTFP4BwMSxVdEg",
+ "name": "ugabuga.pdf",
+ "size": 8912739812,
+ "downloadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 3333,
+ "skylink": "IADUs8d9CQjUO34LmdaaNPK_STuZo24rpKVfYW3wPPM2uQ",
+ "name": "ugabuga.pdf",
+ "size": 123123,
+ "downloadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 4444,
+ "skylink": "_A2zt5SKoqwnnZU4cBF8uBycSKULXMyeg1c5ZISBr2Q3dA",
+ "name": "ugabuga.pdf",
+ "size": 83943,
+ "downloadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 5555,
+ "skylink": "AAC0uO43g64ULpyrW0zO3bjEknSFbAhm8c-RFP21EQlmSQ",
+ "name": "ugabuga.pdf",
+ "size": 3290489120,
+ "downloadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 6666,
+ "skylink": "CACqf4NlIMlA0CCCieYGjpViPGyfyJ4v1x3bmuCKZX8FKA",
+ "name": "ugabuga.pdf",
+ "size": 1290389,
+ "downloadedOn": "2020-04-02T08:02:17-05:00"
+ }
+]
diff --git a/packages/dashboard/src/pages/api/stubs/user/stats.js b/packages/dashboard/src/pages/api/stubs/user/stats.js
new file mode 100644
index 00000000..81a65545
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user/stats.js
@@ -0,0 +1,5 @@
+import stats from "./stats.json";
+
+export default (req, res) => {
+ res.json(stats);
+};
diff --git a/packages/dashboard/src/pages/api/stubs/user/stats.json b/packages/dashboard/src/pages/api/stubs/user/stats.json
new file mode 100644
index 00000000..29696ca2
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user/stats.json
@@ -0,0 +1,13 @@
+{
+ "storageUsed": 809500672,
+ "numRegReads": 0,
+ "numRegWrites": 0,
+ "numUploads": 13,
+ "numDownloads": 78,
+ "totalUploadsSize": 618649028,
+ "totalDownloadsSize": 32307956843,
+ "bwUploads": 2810183680,
+ "bwDownloads": 32323934976,
+ "bwRegReads": 0,
+ "bwRegWrites": 0
+}
diff --git a/packages/dashboard/src/pages/api/stubs/user/uploads.js b/packages/dashboard/src/pages/api/stubs/user/uploads.js
new file mode 100644
index 00000000..ad8b3d20
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user/uploads.js
@@ -0,0 +1,8 @@
+import items from "./uploads.json";
+
+export default (req, res) => {
+ const offset = parseInt(req.query?.offset ?? 0, 10);
+ const pageSize = parseInt(req.query?.pageSize ?? 10, 10);
+
+ res.json({ items: items.slice(offset, offset + pageSize), count: items.length, pageSize, offset });
+};
diff --git a/packages/dashboard/src/pages/api/stubs/user/uploads.json b/packages/dashboard/src/pages/api/stubs/user/uploads.json
new file mode 100644
index 00000000..efc42359
--- /dev/null
+++ b/packages/dashboard/src/pages/api/stubs/user/uploads.json
@@ -0,0 +1,44 @@
+[
+ {
+ "id": 1111,
+ "skylink": "PAL0w4SdA5rFCDGEutgpeQ50Om-YkBabtXVOJAkmedslKw",
+ "name": "ugabuga.pdf",
+ "size": 123123,
+ "uploadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 2222,
+ "skylink": "XABvi7JtJbQSMAcDwnUnmp2FKDPjg8_tTTFP4BwMSxVdEg",
+ "name": "ugabuga.pdf",
+ "size": 8912739812,
+ "uploadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 3333,
+ "skylink": "IADUs8d9CQjUO34LmdaaNPK_STuZo24rpKVfYW3wPPM2uQ",
+ "name": "ugabuga.pdf",
+ "size": 123123,
+ "uploadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 4444,
+ "skylink": "_A2zt5SKoqwnnZU4cBF8uBycSKULXMyeg1c5ZISBr2Q3dA",
+ "name": "ugabuga.pdf",
+ "size": 83943,
+ "uploadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 5555,
+ "skylink": "AAC0uO43g64ULpyrW0zO3bjEknSFbAhm8c-RFP21EQlmSQ",
+ "name": "ugabuga.pdf",
+ "size": 3290489120,
+ "uploadedOn": "2020-04-02T08:02:17-05:00"
+ },
+ {
+ "id": 6666,
+ "skylink": "CACqf4NlIMlA0CCCieYGjpViPGyfyJ4v1x3bmuCKZX8FKA",
+ "name": "ugabuga.pdf",
+ "size": 1290389,
+ "uploadedOn": "2020-04-02T08:02:17-05:00"
+ }
+]
diff --git a/packages/dashboard/src/pages/auth/login.js b/packages/dashboard/src/pages/auth/login.js
new file mode 100644
index 00000000..481f8d44
--- /dev/null
+++ b/packages/dashboard/src/pages/auth/login.js
@@ -0,0 +1,96 @@
+import Link from "next/link";
+import { Configuration, PublicApi } from "@ory/kratos-client";
+import config from "../../config";
+import SelfServiceForm from "../../components/Form/SelfServiceForm";
+
+const kratos = new PublicApi(new Configuration({ basePath: config.kratos.public }));
+
+export async function getServerSideProps(context) {
+ const flow = context.query.flow;
+ const redirect = encodeURIComponent(`/api/accounts/login?return_to=${context.query.return_to ?? "/"}`);
+
+ if (process.env.NODE_ENV === "development") {
+ return { props: { flow: require("../../../stubs/login.json") } };
+ }
+
+ // The flow is used to identify the login and registration flow and
+ // return data like the csrf_token and so on.
+ if (!flow || typeof flow !== "string") {
+ // No flow ID found in URL, initializing login flow.
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/login/browser?return_to=${redirect}`,
+ },
+ };
+ }
+
+ try {
+ const { status, data } = await kratos.getSelfServiceLoginFlow(flow);
+
+ if (status === 200) return { props: { flow: data } };
+
+ throw new Error(`Failed to retrieve flow ${flow} with code ${status}`);
+ } catch (error) {
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/login/browser?return_to=${redirect}`,
+ },
+ };
+ }
+}
+
+const fieldsConfig = {
+ identifier: {
+ label: "Email address",
+ autoComplete: "email",
+ position: 0,
+ },
+ password: {
+ label: "Password",
+ autoComplete: "current-password",
+ position: 1,
+ },
+ csrf_token: {
+ position: 99,
+ },
+};
+
+export default function Login({ flow }) {
+ return (
+
+
+
+
Sign in to your account
+
+ or{" "}
+
+ sign up
+ {" "}
+ if you don't have one yet
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/auth/registration.js b/packages/dashboard/src/pages/auth/registration.js
new file mode 100644
index 00000000..33230c54
--- /dev/null
+++ b/packages/dashboard/src/pages/auth/registration.js
@@ -0,0 +1,113 @@
+import Link from "next/link";
+import { Configuration, PublicApi } from "@ory/kratos-client";
+import { getIn } from "formik";
+import config from "../../config";
+import levenshtein from "fast-levenshtein";
+import lcs from "../../services/longestCommonSequence";
+import SelfServiceForm from "../../components/Form/SelfServiceForm";
+
+const kratos = new PublicApi(new Configuration({ basePath: config.kratos.public }));
+
+export async function getServerSideProps(context) {
+ const flow = context.query.flow;
+ const redirect = encodeURIComponent(`/api/accounts/login?return_to=${context.query.return_to ?? "/"}`);
+
+ if (process.env.NODE_ENV === "development") {
+ return { props: { flow: require("../../../stubs/registration.json") } };
+ }
+
+ // The flow is used to identify the login and registration flow and
+ // return data like the csrf_token and so on.
+ if (!flow || typeof flow !== "string") {
+ // No flow ID found in URL, initializing registration flow.
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/registration/browser?return_to=${redirect}`,
+ },
+ };
+ }
+
+ try {
+ const { status, data } = await kratos.getSelfServiceRegistrationFlow(flow);
+
+ if (status === 200) return { props: { flow: data } };
+
+ throw new Error(`Failed to retrieve flow ${flow} with code ${status}`);
+ } catch (error) {
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/registration/browser?return_to=${redirect}`,
+ },
+ };
+ }
+}
+
+const fieldsConfig = {
+ "traits.email": {
+ label: "Email address",
+ autoComplete: "email",
+ position: 0,
+ },
+ password: {
+ label: "Password",
+ autoComplete: "new-password",
+ position: 1,
+ checks: [
+ {
+ label: "At least 6 characters long",
+ validate: (values, field) => {
+ const value = getIn(values, field);
+
+ return value && value.length > 5;
+ },
+ },
+ {
+ label: "Significantly different from the email",
+ validate: (values, field) => {
+ const value = getIn(values, field);
+ const email = getIn(values, "traits.email");
+
+ // levenshtein distance higher than 5 and longest common sequence shorter than half of the password
+ return value && email && levenshtein.get(value, email) > 5 && lcs(value, email).length / value.length <= 0.5;
+ },
+ },
+ ],
+ },
+ csrf_token: {
+ position: 99,
+ },
+};
+
+export default function Registration({ flow }) {
+ return (
+
+
+
+
Sign up for a new account
+
+ or{" "}
+
+ sign in
+ {" "}
+ if you already have one
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/downloads.js b/packages/dashboard/src/pages/downloads.js
new file mode 100644
index 00000000..942efd11
--- /dev/null
+++ b/packages/dashboard/src/pages/downloads.js
@@ -0,0 +1,44 @@
+import dayjs from "dayjs";
+import prettyBytes from "pretty-bytes";
+import { useState } from "react";
+import Layout from "../components/Layout";
+import Table from "../components/Table";
+import authServerSideProps from "../services/authServerSideProps";
+import { SkynetClient } from "skynet-js";
+import useAccountsApi from "../services/useAccountsApi";
+
+const skynetClient = new SkynetClient(process.env.NEXT_PUBLIC_SKYNET_PORTAL_API);
+const apiPrefix = process.env.NODE_ENV === "development" ? "/api/stubs" : "";
+const getSkylinkLink = ({ skylink }) => skynetClient.getSkylinkUrl(skylink);
+const getRelativeDate = ({ downloadedOn }) => dayjs(downloadedOn).format("YYYY-MM-DD HH:mm:ss");
+const headers = [
+ { key: "name", name: "Name", nowrap: false, href: getSkylinkLink },
+ { key: "skylink", name: "Skylink" },
+ { key: "size", name: "Size", formatter: ({ size }) => prettyBytes(size) },
+ { key: "downloadedOn", name: "Accessed on", formatter: getRelativeDate },
+];
+const actions = [];
+
+export const getServerSideProps = authServerSideProps(async (context, api) => {
+ const initialData = await api.get("user/downloads?pageSize=10&offset=0").json();
+
+ return { props: { initialData } };
+});
+
+export default function Downloads({ initialData }) {
+ const [offset, setOffset] = useState(0);
+ const { data } = useAccountsApi(`${apiPrefix}/user/downloads?pageSize=10&offset=${offset}`, {
+ initialData: offset === 0 ? initialData : undefined,
+ revalidateOnMount: true,
+ });
+
+ // preload next page if it exists (based on the response from the current page query)
+ const nextPageOffset = data && data.offset + data.pageSize < data.count ? data.offset + data.pageSize : offset;
+ useAccountsApi(`${apiPrefix}/user/downloads?pageSize=10&offset=${nextPageOffset}`);
+
+ return (
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/error.js b/packages/dashboard/src/pages/error.js
new file mode 100644
index 00000000..19a1e7b1
--- /dev/null
+++ b/packages/dashboard/src/pages/error.js
@@ -0,0 +1,68 @@
+import Link from "next/link";
+import { Configuration, PublicApi } from "@ory/kratos-client";
+import config from "../config";
+
+const kratos = new PublicApi(new Configuration({ basePath: config.kratos.public }));
+
+export async function getServerSideProps(context) {
+ const error = context.query.error;
+
+ // No error was send, redirecting back to home.
+ if (!error || typeof error !== "string") {
+ console.log("No error ID found in URL, redirecting to homepage.");
+
+ return { redirect: { permanent: false, destination: "/" } };
+ }
+
+ try {
+ const { status, data } = await kratos.getSelfServiceError(error);
+
+ if ("errors" in data) return { props: { errors: data.errors } };
+
+ throw new Error(`Expected error ${error} to contain "errors" but got ${JSON.stringify(data)}`);
+ } catch (error) {
+ return { redirect: { permanent: false, destination: "/" } };
+ }
+}
+
+export default function Error({ errors }) {
+ return (
+
+
+
+
An error occurred
+
+
+
+ {errors.map((error, index) => (
+
1 ? "mt-3 sm:mt-5" : ""} text-center`}>
+
+ {error.code} - {error.message}
+
+
+
+ ))}
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/index.js b/packages/dashboard/src/pages/index.js
new file mode 100644
index 00000000..696ece24
--- /dev/null
+++ b/packages/dashboard/src/pages/index.js
@@ -0,0 +1,276 @@
+import dayjs from "dayjs";
+import relativeTime from "dayjs/plugin/relativeTime";
+import prettyBytes from "pretty-bytes";
+import Link from "next/link";
+import Layout from "../components/Layout";
+import authServerSideProps from "../services/authServerSideProps";
+import { SkynetClient } from "skynet-js";
+import config from "../config";
+import useAccountsApi from "../services/useAccountsApi";
+import { isFreeTier } from "../services/tiers";
+import { write } from "clipboardy";
+
+dayjs.extend(relativeTime);
+
+const skynetClient = new SkynetClient(process.env.NEXT_PUBLIC_SKYNET_PORTAL_API);
+const apiPrefix = process.env.NODE_ENV === "development" ? "/api/stubs" : "";
+
+export const getServerSideProps = authServerSideProps(async (context, api) => {
+ const stripe = await api.get("stripe/prices").json();
+ const plans = [config.tiers.starter, ...stripe].sort((a, b) => a.tier - b.tier);
+
+ return { props: { plans } };
+});
+
+function SkylinkList({ items = [], timestamp }) {
+ return (
+
+ {items.slice(0, 3).map((item) => (
+ -
+
+
+
+
+
+
+ {prettyBytes(item.size)}
+
+
+
+
+
+ {item[timestamp] &&
}
+
+
+
+
+ ))}
+
+ {!items.length && (
+ -
+
+
+ )}
+
+ );
+}
+
+export default function Home({ plans }) {
+ const { data: user } = useAccountsApi(`${apiPrefix}/user`);
+ const { data: stats } = useAccountsApi(`${apiPrefix}/user/stats`);
+ const { data: downloads } = useAccountsApi(`${apiPrefix}/user/downloads?pageSize=3&offset=0`);
+ const { data: uploads } = useAccountsApi(`${apiPrefix}/user/uploads?pageSize=3&offset=0`);
+
+ const activePlan = plans.find(({ tier }) => (user ? user.tier === tier : isFreeTier(tier)));
+
+ return (
+
+
+
+
+
+
+
+ {/* Heroicon name: outline/users */}
+
+
+
+
- Current plan
+
-
+
{activePlan.name}
+
+
+
+
+
+
+
+
+
+
+
+
- Storage used
+
-
+
{prettyBytes(stats?.storageUsed ?? 0)}
+
+
+
+
+
+
+ {/*
+
+
+
+
+
- Bandwidth used
+
-
+
{prettyBytes(stats?.bwDownloads ?? 0)}
+
+
+
+
+
+
*/}
+
+
+ {/* ============ */}
+
+
+
+
Recent downloads
+
+ {/* This example requires Tailwind CSS v2.0+ */}
+
+
+
+
+
+
Recent uploads
+
+ {/* This example requires Tailwind CSS v2.0+ */}
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/payments.js b/packages/dashboard/src/pages/payments.js
new file mode 100644
index 00000000..c36fe039
--- /dev/null
+++ b/packages/dashboard/src/pages/payments.js
@@ -0,0 +1,193 @@
+import dayjs from "dayjs";
+import Layout from "../components/Layout";
+import ky from "ky/umd";
+import { useEffect, useState } from "react";
+import authServerSideProps from "../services/authServerSideProps";
+import classnames from "classnames";
+import prettyBytes from "pretty-bytes";
+import config from "../config";
+import useAccountsApi from "../services/useAccountsApi";
+import { isFreeTier, isPaidTier } from "../services/tiers";
+
+const apiPrefix = process.env.NODE_ENV === "development" ? "/api/stubs" : "";
+
+const ActiveBadge = () => {
+ return (
+
+ active
+
+ );
+};
+
+export const getServerSideProps = authServerSideProps(async (context, api) => {
+ const [user, stats, stripe] = await Promise.all([
+ api.get("user").json(),
+ api.get("user/stats").json(),
+ api.get("stripe/prices").json(),
+ ]);
+ const plans = [config.tiers.starter, ...stripe].sort((a, b) => a.tier - b.tier);
+
+ return { props: { plans, user, stats } };
+});
+
+export default function Payments({ plans, user: initialUserData, stats: initialStatsData }) {
+ const { data: user } = useAccountsApi(`${apiPrefix}/user`, { initialData: initialUserData });
+ const { data: stats } = useAccountsApi(`${apiPrefix}/user/stats`, { initialData: initialStatsData });
+ const [selectedPlan, setSelectedPlan] = useState(plans.find(({ tier }) => isFreeTier(tier)));
+ const activePlan = plans.find(({ tier }) => (user ? user.tier === tier : isFreeTier(tier)));
+ const handleSubscribe = async () => {
+ try {
+ const price = selectedPlan.stripe;
+ const { sessionId } = await ky.post("/api/stripe/checkout", { json: { price } }).json();
+ const stripe = new Stripe(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY);
+ await stripe.redirectToCheckout({ sessionId });
+ } catch (error) {
+ console.log(error); // todo: handle error
+ }
+ };
+
+ useEffect(() => {
+ if (activePlan && isPaidTier(activePlan.tier)) {
+ setSelectedPlan(activePlan);
+ }
+ }, [activePlan, selectedPlan, setSelectedPlan]);
+
+ return (
+
+
+
+
+
+
+
- Current plan
+ - {activePlan?.name || "—"}
+
+
+
+
+
+
- Subscription status
+ -
+ {isFreeTier(activePlan?.tier) ? "—" : user?.subscriptionStatus}
+
+
+ {user?.subscriptionCancelAtPeriodEnd && (
+
+
+ Your plan will be cancelled on {dayjs(user.subscriptionCancelAt).format("D MMM YYYY")}.
+
+
+ )}
+
+
+
+
+
- Storage used
+ - {prettyBytes(stats.storageUsed)}
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/plans.js b/packages/dashboard/src/pages/plans.js
new file mode 100644
index 00000000..ee319e69
--- /dev/null
+++ b/packages/dashboard/src/pages/plans.js
@@ -0,0 +1,389 @@
+import Layout from "../components/Layout";
+
+export default function Payments() {
+ return (
+
+ {/* This example requires Tailwind CSS v2.0+ */}
+
+
+
+
+ Start using for free, then add a plan to improve the experience. Account plans unlock additional features.
+
+
+
+
+
+
+
+
+
+
Free
+
All the basics for starting a new business
+
+ no cost
+
+
+ Active
+
+
+
+
What's included
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Potenti felis, in cras at at ligula nunc.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Orci neque eget pellentesque.
+
+
+
+
+
+
+
Skynet Plus
+
All the basics for starting a new business
+
+ $5
+ /mo
+
+
+ Buy Skynet Plus
+
+
+
+
What's included
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Potenti felis, in cras at at ligula nunc.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Orci neque eget pellentesque.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Donec mauris sit in eu tincidunt etiam.
+
+
+
+
+
+
+
Skynet Pro
+
All the basics for starting a new business
+
+ $20
+ /mo
+
+
+ Buy Skynet Pro
+
+
+
+
What's included
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Potenti felis, in cras at at ligula nunc.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Orci neque eget pellentesque.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Donec mauris sit in eu tincidunt etiam.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Faucibus volutpat magna.
+
+
+
+
+
+
+
+
What's included
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Potenti felis, in cras at at ligula nunc.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Orci neque eget pellentesque.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Donec mauris sit in eu tincidunt etiam.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Faucibus volutpat magna.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Id sed tellus in varius quisque.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Risus egestas faucibus.
+
+ -
+ {/* Heroicon name: solid/check */}
+
+ Risus cursus ullamcorper.
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/recovery.js b/packages/dashboard/src/pages/recovery.js
new file mode 100644
index 00000000..e64a4213
--- /dev/null
+++ b/packages/dashboard/src/pages/recovery.js
@@ -0,0 +1,95 @@
+import Link from "next/link";
+import { Configuration, PublicApi } from "@ory/kratos-client";
+import config from "../config";
+import SelfServiceForm from "../components/Form/SelfServiceForm";
+
+const kratos = new PublicApi(new Configuration({ basePath: config.kratos.public }));
+
+export async function getServerSideProps(context) {
+ const flow = context.query.flow;
+
+ if (process.env.NODE_ENV === "development") {
+ return { props: { flow: require("../../stubs/recovery.json") } };
+ }
+
+ // The flow is used to identify the login and registration flow and
+ // return data like the csrf_token and so on.
+ if (!flow || typeof flow !== "string") {
+ // No flow ID found in URL, initializing recovery flow.
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/recovery/browser`,
+ },
+ };
+ }
+
+ try {
+ const { status, data } = await kratos.getSelfServiceRecoveryFlow(flow);
+
+ if (status === 200) return { props: { flow: data } };
+
+ throw new Error(`Failed to retrieve flow ${flow} with code ${status}`);
+ } catch (error) {
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/recovery/browser`,
+ },
+ };
+ }
+}
+
+const fieldsConfig = {
+ email: {
+ label: "Your email",
+ autoComplete: "email",
+ position: 0,
+ },
+ csrf_token: {
+ position: 99,
+ },
+};
+
+export default function Recovery({ flow }) {
+ return (
+
+
+
+
Recover your account
+
+
+ sign in
+ {" "}
+ if you suddenly remembered your password
+
+
+ or{" "}
+
+ sign up
+ {" "}
+ for a new account
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/settings.js b/packages/dashboard/src/pages/settings.js
new file mode 100644
index 00000000..6f314ca5
--- /dev/null
+++ b/packages/dashboard/src/pages/settings.js
@@ -0,0 +1,83 @@
+import { Configuration, PublicApi } from "@ory/kratos-client";
+import Layout from "../components/Layout";
+import config from "../config";
+import SelfServiceForm from "../components/Form/SelfServiceForm";
+import authServerSideProps from "../services/authServerSideProps";
+
+const kratos = new PublicApi(new Configuration({ basePath: config.kratos.public }));
+
+export const getServerSideProps = authServerSideProps(async (context) => {
+ const flow = context.query.flow;
+
+ if (process.env.NODE_ENV === "development") {
+ return { props: { flow: require("../../stubs/settings.json") } };
+ }
+
+ // The flow is used to identify the login and registration flow and
+ // return data like the csrf_token and so on.
+ if (!flow || typeof flow !== "string") {
+ // No flow ID found in URL, initializing settings flow.
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/settings/browser`,
+ },
+ };
+ }
+
+ try {
+ const { status, data } = await kratos.getSelfServiceSettingsFlow(flow, {
+ headers: { cookie: context.req.headers.cookie },
+ });
+
+ console.log(flow, status, data);
+
+ if (status === 200) return { props: { flow: data } };
+
+ throw new Error(`Failed to retrieve flow ${flow} with code ${status}`);
+ } catch (error) {
+ console.log(error);
+
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/settings/browser`,
+ },
+ };
+ }
+});
+
+const fieldsConfig = {
+ "traits.email": {
+ label: "Email address",
+ autoComplete: "email",
+ position: 0,
+ },
+ password: {
+ label: "Password",
+ autoComplete: "new-password",
+ position: 1,
+ },
+ csrf_token: {
+ position: 99,
+ },
+};
+
+export default function Settings({ flow }) {
+ const profileConfig = flow.methods.profile.config;
+ const passwordConfig = flow.methods.password.config;
+
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/uploads.js b/packages/dashboard/src/pages/uploads.js
new file mode 100644
index 00000000..d78288f7
--- /dev/null
+++ b/packages/dashboard/src/pages/uploads.js
@@ -0,0 +1,44 @@
+import dayjs from "dayjs";
+import prettyBytes from "pretty-bytes";
+import { useState } from "react";
+import Layout from "../components/Layout";
+import Table from "../components/Table";
+import authServerSideProps from "../services/authServerSideProps";
+import { SkynetClient } from "skynet-js";
+import useAccountsApi from "../services/useAccountsApi";
+
+const skynetClient = new SkynetClient(process.env.NEXT_PUBLIC_SKYNET_PORTAL_API);
+const apiPrefix = process.env.NODE_ENV === "development" ? "/api/stubs" : "";
+const getSkylinkLink = ({ skylink }) => skynetClient.getSkylinkUrl(skylink);
+const getRelativeDate = ({ uploadedOn }) => dayjs(uploadedOn).format("YYYY-MM-DD HH:mm:ss");
+const headers = [
+ { key: "name", name: "Name", nowrap: false, href: getSkylinkLink },
+ { key: "skylink", name: "Skylink" },
+ { key: "size", name: "Size", formatter: ({ size }) => prettyBytes(size) },
+ { key: "uploadedOn", name: "Uploaded on", formatter: getRelativeDate },
+];
+const actions = [];
+
+export const getServerSideProps = authServerSideProps(async (context, api) => {
+ const initialData = await api.get("user/uploads?pageSize=10&offset=0").json();
+
+ return { props: { initialData } };
+});
+
+export default function Uploads({ initialData }) {
+ const [offset, setOffset] = useState(0);
+ const { data } = useAccountsApi(`${apiPrefix}/user/uploads?pageSize=10&offset=${offset}`, {
+ initialData: offset === 0 ? initialData : undefined,
+ revalidateOnMount: true,
+ });
+
+ // preload next page if it exists (based on the response from the current page query)
+ const nextPageOffset = data && data.offset + data.pageSize < data.count ? data.offset + data.pageSize : offset;
+ useAccountsApi(`${apiPrefix}/user/uploads?pageSize=10&offset=${nextPageOffset}`);
+
+ return (
+
+
+
+ );
+}
diff --git a/packages/dashboard/src/pages/verify.js b/packages/dashboard/src/pages/verify.js
new file mode 100644
index 00000000..adcde201
--- /dev/null
+++ b/packages/dashboard/src/pages/verify.js
@@ -0,0 +1,103 @@
+import Link from "next/link";
+import { Configuration, PublicApi } from "@ory/kratos-client";
+import config from "../config";
+import SelfServiceForm from "../components/Form/SelfServiceForm";
+import { useEffect } from "react";
+
+const kratos = new PublicApi(new Configuration({ basePath: config.kratos.public }));
+
+export async function getServerSideProps(context) {
+ const flow = context.query.flow;
+
+ // if (process.env.NODE_ENV === "development") {
+ // return { props: { flow: require("../../stubs/recovery.json") } };
+ // }
+
+ if (!flow || typeof flow !== "string") {
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/verification/browser`,
+ },
+ };
+ }
+
+ try {
+ const { status, data } = await kratos.getSelfServiceVerificationFlow(flow);
+
+ if (status === 200) return { props: { flow: data } };
+
+ throw new Error(`Failed to retrieve flow ${flow} with code ${status}`);
+ } catch (error) {
+ return {
+ redirect: {
+ permanent: false,
+ destination: `${config.kratos.browser}/self-service/verification/browser`,
+ },
+ };
+ }
+}
+
+const fieldsConfig = {
+ email: {
+ label: "Your email",
+ autoComplete: "email",
+ position: 0,
+ },
+ csrf_token: {
+ position: 99,
+ },
+};
+
+export default function Verify({ flow }) {
+ const state = flow.state;
+
+ useEffect(() => {
+ if (state === "passed_challenge") {
+ setTimeout(() => (window.location = "/"), 5000);
+ }
+ }, [state]);
+
+ return (
+
+
+
+
+ {flow.state === "passed_challenge" ? "Verification successful!" : "Account verification"}
+
+
+ {flow.state === "passed_challenge" && (
+ <>
+
You will be redirected automatically
+
+
+ go to dashboard
+
+
+ >
+ )}
+
+
+ {flow.state !== "passed_challenge" && (
+
+ )}
+
+ );
+}
diff --git a/packages/dashboard/src/services/authServerSideProps.js b/packages/dashboard/src/services/authServerSideProps.js
new file mode 100644
index 00000000..bc7bf43c
--- /dev/null
+++ b/packages/dashboard/src/services/authServerSideProps.js
@@ -0,0 +1,27 @@
+import ky from "ky/umd";
+
+const isProduction = process.env.NODE_ENV === "production";
+
+export default function authServerSideProps(getServerSideProps) {
+ return function authenticate(context) {
+ if (isProduction && (!("ory_kratos_session" in context.req.cookies) || !("skynet-jwt" in context.req.cookies))) {
+ return {
+ redirect: {
+ permanent: false,
+ destination: `/api/accounts/login?return_to=${encodeURIComponent(context.resolvedUrl)}`,
+ },
+ };
+ }
+
+ if (getServerSideProps) {
+ const api = ky.create({
+ headers: { cookie: context.req.headers.cookie },
+ prefixUrl: isProduction ? "http://oathkeeper:4455" : "http://localhost:3000/api/stubs",
+ });
+
+ return getServerSideProps(context, api);
+ }
+
+ return { props: {} };
+ };
+}
diff --git a/packages/dashboard/src/services/longestCommonSequence.js b/packages/dashboard/src/services/longestCommonSequence.js
new file mode 100644
index 00000000..5c5f5143
--- /dev/null
+++ b/packages/dashboard/src/services/longestCommonSequence.js
@@ -0,0 +1,65 @@
+// @source https://github.com/trekhleb/javascript-algorithms/blob/master/src/algorithms/sets/longest-common-subsequence/longestCommonSubsequence.js
+// @license MIT https://github.com/trekhleb/javascript-algorithms/blob/master/LICENSE
+
+/**
+ * @param {string[]} set1
+ * @param {string[]} set2
+ * @return {string[]}
+ */
+export default function longestCommonSubsequence(set1, set2) {
+ // Init LCS matrix.
+ const lcsMatrix = Array(set2.length + 1)
+ .fill(null)
+ .map(() => Array(set1.length + 1).fill(null));
+
+ // Fill first row with zeros.
+ for (let columnIndex = 0; columnIndex <= set1.length; columnIndex += 1) {
+ lcsMatrix[0][columnIndex] = 0;
+ }
+
+ // Fill first column with zeros.
+ for (let rowIndex = 0; rowIndex <= set2.length; rowIndex += 1) {
+ lcsMatrix[rowIndex][0] = 0;
+ }
+
+ // Fill rest of the column that correspond to each of two strings.
+ for (let rowIndex = 1; rowIndex <= set2.length; rowIndex += 1) {
+ for (let columnIndex = 1; columnIndex <= set1.length; columnIndex += 1) {
+ if (set1[columnIndex - 1] === set2[rowIndex - 1]) {
+ lcsMatrix[rowIndex][columnIndex] = lcsMatrix[rowIndex - 1][columnIndex - 1] + 1;
+ } else {
+ lcsMatrix[rowIndex][columnIndex] = Math.max(
+ lcsMatrix[rowIndex - 1][columnIndex],
+ lcsMatrix[rowIndex][columnIndex - 1]
+ );
+ }
+ }
+ }
+
+ // Calculate LCS based on LCS matrix.
+ if (!lcsMatrix[set2.length][set1.length]) {
+ // If the length of largest common string is zero then return empty string.
+ return [""];
+ }
+
+ const longestSequence = [];
+ let columnIndex = set1.length;
+ let rowIndex = set2.length;
+
+ while (columnIndex > 0 || rowIndex > 0) {
+ if (set1[columnIndex - 1] === set2[rowIndex - 1]) {
+ // Move by diagonal left-top.
+ longestSequence.unshift(set1[columnIndex - 1]);
+ columnIndex -= 1;
+ rowIndex -= 1;
+ } else if (lcsMatrix[rowIndex][columnIndex] === lcsMatrix[rowIndex][columnIndex - 1]) {
+ // Move left.
+ columnIndex -= 1;
+ } else {
+ // Move up.
+ rowIndex -= 1;
+ }
+ }
+
+ return longestSequence;
+}
diff --git a/packages/dashboard/src/services/tiers.js b/packages/dashboard/src/services/tiers.js
new file mode 100644
index 00000000..4e561e2b
--- /dev/null
+++ b/packages/dashboard/src/services/tiers.js
@@ -0,0 +1,2 @@
+export const isFreeTier = (tier) => tier === 1;
+export const isPaidTier = (tier) => tier > 1;
diff --git a/packages/dashboard/src/services/useAccountsApi.js b/packages/dashboard/src/services/useAccountsApi.js
new file mode 100644
index 00000000..169b12d9
--- /dev/null
+++ b/packages/dashboard/src/services/useAccountsApi.js
@@ -0,0 +1,15 @@
+import useSWR from "swr";
+import { StatusCodes } from "http-status-codes";
+
+const fetcher = (url) =>
+ fetch(url).then((res) => {
+ if (res.status === StatusCodes.UNAUTHORIZED) {
+ window.location.href = `/auth/login?return_to=${encodeURIComponent(window.location.href)}`;
+ }
+
+ return res.json();
+ });
+
+export default function useAccountsApi(key, config) {
+ return useSWR(key, fetcher, config);
+}
diff --git a/packages/dashboard/stubs/login.json b/packages/dashboard/stubs/login.json
new file mode 100644
index 00000000..bb136cd8
--- /dev/null
+++ b/packages/dashboard/stubs/login.json
@@ -0,0 +1,45 @@
+{
+ "id": "bda73c77-1e21-4bfd-b85a-322fce2e4576",
+ "expires_at": "2020-01-28T13:48:04.690715Z",
+ "issued_at": "2020-01-28T13:38:04.690732Z",
+ "request_url": "http://127.0.0.1:4455/auth/browser/login",
+ "methods": {
+ "oidc": {
+ "method": "oidc",
+ "config": {
+ "action": "http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/oidc/auth/bda73c77-1e21-4bfd-b85a-322fce2e4576",
+ "method": "POST",
+ "fields": [
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "QJreyXtUD4oUSJfGNjA/+6ydsQyq0o/rfTL6QK86VadVFg6mwgX5x1QHVQ6uRqKxmwAcavQup3ILCSwl7ke97g=="
+ }
+ ]
+ }
+ },
+ "password": {
+ "method": "password",
+ "config": {
+ "action": "http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/login?request=bda73c77-1e21-4bfd-b85a-322fce2e4576",
+ "method": "POST",
+ "fields": [
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "M1gAKA8fIhw4JOpQ/5m9mKARBAvKhzWkyhbxjtZNLG8m1NBHtk7UUXhrKJhn7yDSl4ypbZR7HT28LSfrlzDEJg=="
+ },
+ { "name": "identifier", "type": "text", "required": true, "value": "asfdasdffads" },
+ { "name": "password", "type": "password", "required": true }
+ ],
+ "errors": [
+ {
+ "message": "The provided credentials are invalid. Check for spelling mistakes in your password or username, email address, or phone number."
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/packages/dashboard/stubs/recovery.json b/packages/dashboard/stubs/recovery.json
new file mode 100644
index 00000000..28fde87a
--- /dev/null
+++ b/packages/dashboard/stubs/recovery.json
@@ -0,0 +1,31 @@
+{
+ "id": "01e21a99-8e69-41f9-b3ba-4967f714c8eb",
+ "type": "browser",
+ "expires_at": "2021-03-18T15:46:30.634635Z",
+ "issued_at": "2021-03-18T14:46:30.634635Z",
+ "request_url": "http://oathkeeper:4455/self-service/recovery/browser",
+ "messages": null,
+ "methods": {
+ "link": {
+ "method": "link",
+ "config": {
+ "action": "http://127.0.0.1:4455/.ory/kratos/public/self-service/recovery/methods/link?flow=01e21a99-8e69-41f9-b3ba-4967f714c8eb",
+ "method": "POST",
+ "fields": [
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "XvPfLJzxmcTWnr2rmLzFcED9Ef1PIkqSBQgx5t0yu0WuIp2S6ll+B9cQ0ClIcLQ=="
+ },
+ {
+ "name": "email",
+ "type": "email",
+ "required": true
+ }
+ ]
+ }
+ }
+ },
+ "state": "choose_method"
+}
diff --git a/packages/dashboard/stubs/registration.json b/packages/dashboard/stubs/registration.json
new file mode 100644
index 00000000..4fe796ae
--- /dev/null
+++ b/packages/dashboard/stubs/registration.json
@@ -0,0 +1,58 @@
+{
+ "id": "dbff7b96-8116-42c5-8624-f9fb28f1db15",
+ "expires_at": "2020-01-28T13:49:01.2274112Z",
+ "issued_at": "2020-01-28T13:39:01.2274261Z",
+ "request_url": "http://127.0.0.1:4455/auth/browser/registration",
+ "methods": {
+ "oidc": {
+ "method": "oidc",
+ "config": {
+ "action": "http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/oidc/auth/dbff7b96-8116-42c5-8624-f9fb28f1db15",
+ "method": "POST",
+ "fields": [
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "xwb6A6iHdsguYwkAM6m3jj196E7TcmiWpAavIRxuAgXSiipsEdaAhW4sy8ir3yrECuBFKI2OQA/SPXlEXRPqTA=="
+ }
+ ]
+ }
+ },
+ "password": {
+ "method": "password",
+ "config": {
+ "errors": [
+ {
+ "message": "The provided credentials are invalid. Check for spelling mistakes in your password or username, email address, or phone number."
+ }
+ ],
+ "action": "http://127.0.0.1:4455/.ory/kratos/public/auth/browser/methods/password/registration?request=dbff7b96-8116-42c5-8624-f9fb28f1db15",
+ "method": "POST",
+ "fields": [
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "xLg4B9WnuC0Ue+j9ay5EQvleaJpOl0H9xJJ7W3+Bwv7RNOhobPZOYFQ0KjXzWNkIzsPF/BBraWSyqa0+Pvwqtw=="
+ },
+ {
+ "name": "password",
+ "type": "password",
+ "required": true,
+ "errors": [{ "message": "password: Is required" }]
+ },
+ {
+ "name": "traits.email",
+ "type": "text",
+ "value": "",
+ "errors": [
+ { "message": "traits.email: String length must be greater than or equal to 3" },
+ { "message": "traits.email: Does not match format 'email'" }
+ ]
+ }
+ ]
+ }
+ }
+ }
+}
diff --git a/packages/dashboard/stubs/settings.json b/packages/dashboard/stubs/settings.json
new file mode 100644
index 00000000..c7502b31
--- /dev/null
+++ b/packages/dashboard/stubs/settings.json
@@ -0,0 +1,49 @@
+{
+ "id": "e01f6bf9-845c-4c4b-a3ce-60691dd7a97c",
+ "type": "browser",
+ "expires_at": "2021-02-18T13:31:43.947193Z",
+ "issued_at": "2021-02-18T12:31:43.947193Z",
+ "request_url": "http://oathkeeper:4455/self-service/settings/browser",
+ "messages": null,
+ "methods": {
+ "password": {
+ "method": "password",
+ "config": {
+ "action": "https://account.siasky.xyz/.ory/kratos/public/self-service/settings/methods/password?flow=e01f6bf9-845c-4c4b-a3ce-60691dd7a97c",
+ "method": "POST",
+ "fields": [
+ { "name": "password", "type": "password", "required": true },
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "i33iydUBN6jqwrkHlLPZ3ap7Ah4uC0UrTadn7zKT0jyouDpr+DF0/1Hbkshye9t7IKwyzOcLt7i6oR/OoEVg+g=="
+ }
+ ]
+ }
+ },
+ "profile": {
+ "method": "profile",
+ "config": {
+ "action": "https://account.siasky.xyz/.ory/kratos/public/self-service/settings/methods/profile?flow=e01f6bf9-845c-4c4b-a3ce-60691dd7a97c",
+ "method": "POST",
+ "fields": [
+ {
+ "name": "csrf_token",
+ "type": "hidden",
+ "required": true,
+ "value": "i33iydUBN6jqwrkHlLPZ3ap7Ah4uC0UrTadn7zKT0jyouDpr+DF0/1Hbkshye9t7IKwyzOcLt7i6oR/OoEVg+g=="
+ },
+ { "name": "traits.email", "type": "email", "value": "karol@nebulous.tech" }
+ ]
+ }
+ }
+ },
+ "identity": {
+ "id": "ab776d6d-f324-4fa7-a728-7587d5215481",
+ "schema_id": "default",
+ "schema_url": "",
+ "traits": { "email": "karol@nebulous.tech" }
+ },
+ "state": "show_form"
+}
diff --git a/packages/dashboard/styles/Home.module.css b/packages/dashboard/styles/Home.module.css
new file mode 100644
index 00000000..80745811
--- /dev/null
+++ b/packages/dashboard/styles/Home.module.css
@@ -0,0 +1,122 @@
+.container {
+ min-height: 100vh;
+ padding: 0 0.5rem;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.main {
+ padding: 5rem 0;
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.footer {
+ width: 100%;
+ height: 100px;
+ border-top: 1px solid #eaeaea;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.footer img {
+ margin-left: 0.5rem;
+}
+
+.footer a {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.title a {
+ color: #0070f3;
+ text-decoration: none;
+}
+
+.title a:hover,
+.title a:focus,
+.title a:active {
+ text-decoration: underline;
+}
+
+.title {
+ margin: 0;
+ line-height: 1.15;
+ font-size: 4rem;
+}
+
+.title,
+.description {
+ text-align: center;
+}
+
+.description {
+ line-height: 1.5;
+ font-size: 1.5rem;
+}
+
+.code {
+ background: #fafafa;
+ border-radius: 5px;
+ padding: 0.75rem;
+ font-size: 1.1rem;
+ font-family: Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New,
+ monospace;
+}
+
+.grid {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ max-width: 800px;
+ margin-top: 3rem;
+}
+
+.card {
+ margin: 1rem;
+ flex-basis: 45%;
+ padding: 1.5rem;
+ text-align: left;
+ color: inherit;
+ text-decoration: none;
+ border: 1px solid #eaeaea;
+ border-radius: 10px;
+ transition: color 0.15s ease, border-color 0.15s ease;
+}
+
+.card:hover,
+.card:focus,
+.card:active {
+ color: #0070f3;
+ border-color: #0070f3;
+}
+
+.card h3 {
+ margin: 0 0 1rem 0;
+ font-size: 1.5rem;
+}
+
+.card p {
+ margin: 0;
+ font-size: 1.25rem;
+ line-height: 1.5;
+}
+
+.logo {
+ height: 1em;
+}
+
+@media (max-width: 600px) {
+ .grid {
+ width: 100%;
+ flex-direction: column;
+ }
+}
diff --git a/packages/dashboard/styles/globals.css b/packages/dashboard/styles/globals.css
new file mode 100644
index 00000000..e2e6d0f0
--- /dev/null
+++ b/packages/dashboard/styles/globals.css
@@ -0,0 +1,16 @@
+html,
+body {
+ padding: 0;
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans,
+ Helvetica Neue, sans-serif;
+}
+
+a {
+ color: inherit;
+ text-decoration: none;
+}
+
+* {
+ box-sizing: border-box;
+}
diff --git a/packages/dashboard/tailwind.config.js b/packages/dashboard/tailwind.config.js
new file mode 100644
index 00000000..09477280
--- /dev/null
+++ b/packages/dashboard/tailwind.config.js
@@ -0,0 +1,18 @@
+module.exports = {
+ purge: ["./src/**/*.js"],
+ darkMode: false, // or 'media' or 'class'
+ theme: {
+ extend: {
+ fontFamily: {
+ sans: ["Metropolis", "Helvetica", "Arial", "Sans-Serif"],
+ },
+ },
+ },
+ variants: {
+ extend: {
+ backgroundColor: ["disabled"],
+ textColor: ["disabled"],
+ },
+ },
+ plugins: [require("@tailwindcss/forms")],
+};
diff --git a/packages/handshake-api/Dockerfile b/packages/handshake-api/Dockerfile
index 1104cb21..4903f90f 100644
--- a/packages/handshake-api/Dockerfile
+++ b/packages/handshake-api/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:15.8.0-alpine
+FROM node:15.12.0-alpine
WORKDIR /usr/app
diff --git a/packages/health-check/Dockerfile b/packages/health-check/Dockerfile
index 9ecc2f14..d543bbff 100644
--- a/packages/health-check/Dockerfile
+++ b/packages/health-check/Dockerfile
@@ -1,4 +1,4 @@
-FROM node:15.8.0-alpine
+FROM node:15.12.0-alpine
WORKDIR /usr/app
diff --git a/packages/webapp/Dockerfile b/packages/webapp/Dockerfile
index db09d2d7..a732c64d 100644
--- a/packages/webapp/Dockerfile
+++ b/packages/webapp/Dockerfile
@@ -1,15 +1,24 @@
-FROM node:15.8.0-alpine
+FROM node:15.12.0-alpine
-RUN apk add --no-cache autoconf automake libtool gcc make g++ zlib-dev file nasm util-linux
+RUN apk update && apk add autoconf automake libtool gcc make g++ zlib-dev file nasm util-linux
WORKDIR /usr/app
+COPY package.json .
+
+ENV CYPRESS_INSTALL_BINARY 0
+
+RUN yarn --no-lockfile
+
COPY src ./src
COPY static ./static
COPY gatsby-config.js .
-COPY package.json .
-ENV CYPRESS_INSTALL_BINARY 0
+ARG WITH_ACCOUNTS=0
+
ENV GATSBY_TELEMETRY_DISABLED 1
-RUN yarn --no-lockfile
-RUN yarn build
+ENV GATSBY_WITH_ACCOUNTS $WITH_ACCOUNTS
+
+EXPOSE 9000
+
+CMD [ "sh", "-c", "yarn build && yarn serve --host 0.0.0.0" ]
diff --git a/packages/webapp/package.json b/packages/webapp/package.json
index d90f8d64..c920b110 100644
--- a/packages/webapp/package.json
+++ b/packages/webapp/package.json
@@ -6,6 +6,7 @@
"dependencies": {
"@fontsource/metropolis": "^4.2.1",
"axios": "0.21.1",
+ "boolean": "^3.0.2",
"bytes": "3.1.0",
"classnames": "2.2.6",
"gatsby": "^3.0.4",
@@ -17,6 +18,7 @@
"gatsby-plugin-sass": "^4.0.2",
"gatsby-source-filesystem": "^3.0.0",
"http-status-codes": "2.1.4",
+ "js-cookie": "^2.2.1",
"jsonp": "0.2.1",
"node-sass": "5.0.0",
"path-browserify": "1.0.1",
diff --git a/packages/webapp/src/components/HomeTop/HomeTop.js b/packages/webapp/src/components/HomeTop/HomeTop.js
index 42e53788..4d1590a3 100644
--- a/packages/webapp/src/components/HomeTop/HomeTop.js
+++ b/packages/webapp/src/components/HomeTop/HomeTop.js
@@ -1,4 +1,5 @@
import React from "react";
+import { boolean } from "boolean";
import logo from "../../images/logo.svg";
import "./HomeTop.scss";
import { Skynet, Deco1, Deco2 } from "../../svg";
@@ -15,6 +16,18 @@ export default function HomeTop() {
The decentralized CDN and file sharing platform for devs. Skynet is the storage foundation for a Free Internet!
+ {boolean(process.env.GATSBY_WITH_ACCOUNTS) && (
+
+
+ Sign up now!
+ {" "}
+ Already have an account? Go to your{" "}
+
+ dashboard
+
+
+ )}
+
diff --git a/packages/webapp/src/components/HomeTop/HomeTop.scss b/packages/webapp/src/components/HomeTop/HomeTop.scss
index 572292c3..046c636d 100644
--- a/packages/webapp/src/components/HomeTop/HomeTop.scss
+++ b/packages/webapp/src/components/HomeTop/HomeTop.scss
@@ -36,10 +36,22 @@
max-width: 560px;
margin: 0 auto;
+ &.auth-links {
+ font-size: 18px;
+
+ .link {
+ font-weight: bold;
+ }
+ }
+
@media (min-width: $largebp) {
font-size: 24px;
max-width: 670px;
}
+
+ & + p {
+ margin-top: 24px;
+ }
}
}
diff --git a/scripts/crdb_backup.sh b/scripts/crdb_backup.sh
new file mode 100644
index 00000000..a216d9db
--- /dev/null
+++ b/scripts/crdb_backup.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Get current working directory (pwd doesn't cut it)
+cwd=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
+# Set the environment:
+set -o allexport
+source $cwd/../.env
+set +o allexport
+# Check for AWS credentials:
+if [[ $AWS_ACCESS_KEY_ID == "" || $AWS_SECRET_ACCESS_KEY == "" ]]; then
+ echo "Missing AWS credentials!"
+ exit 1
+fi
+# Take the current datetime:
+DT=`date +%Y-%m-%d`
+# Create the backup:
+docker exec cockroach \
+ cockroach sql \
+ --host cockroach:26257 \
+ --certs-dir=/certs \
+ --execute="BACKUP TO 's3://skynet-crdb-backups/backups/cockroach/$DT?AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID&AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY';"
diff --git a/scripts/crdb_restore.sh b/scripts/crdb_restore.sh
new file mode 100644
index 00000000..a316984f
--- /dev/null
+++ b/scripts/crdb_restore.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+BACKUP=$1
+if [[ $BACKUP == "" ]]; then
+ echo "No backup name given. It should look like '2020-01-29'."
+ exit 1
+fi
+
+# Get current working directory (pwd doesn't cut it)
+cwd=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
+# Set the environment:
+set -o allexport
+source $cwd/../.env
+set +o allexport
+# Check for AWS credentials:
+if [[ $AWS_ACCESS_KEY_ID == "" || $AWS_SECRET_ACCESS_KEY == "" ]]; then
+ echo "Missing AWS credentials!"
+ exit 1
+fi
+# Restore the backup:
+docker exec cockroach \
+ cockroach sql \
+ --host cockroach:26257 \
+ --certs-dir=/certs \
+ --execute="RESTORE DATABASE defaultdb FROM 's3://skynet-crdb-backups/backups/cockroach/$DT?AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID&AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY';"
diff --git a/scripts/mongo_backup.sh b/scripts/mongo_backup.sh
new file mode 100644
index 00000000..9867bbc3
--- /dev/null
+++ b/scripts/mongo_backup.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# Get current working directory (pwd doesn't cut it)
+cwd=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
+# Set the environment:
+set -o allexport
+source $cwd/../.env
+set +o allexport
+# Check for AWS credentials:
+if [[ $AWS_ACCESS_KEY_ID == "" || $AWS_SECRET_ACCESS_KEY == "" ]]; then
+ echo "Missing AWS credentials!"
+ exit 1
+fi
+# Take the current datetime:
+DT=`date +%Y-%m-%d`
+# Check if a backup already exists:
+totalFoundObjects=$(aws s3 ls s3://skynet-crdb-backups/backups/mongo/ --recursive --summarize | grep "$DT.tgz" | wc -l)
+if [ "$totalFoundObjects" -eq "1" ]; then
+ echo "Backup already exists for today. Exiting."
+ exit 0
+fi
+# Create the backup:
+docker exec mongo \
+ mongodump \
+ -o /data/db/backups/$DT \
+ mongodb://$SKYNET_DB_USER:$SKYNET_DB_PASS@$SKYNET_DB_HOST:$SKYNET_DB_PORT
+# Compress the backup:
+cd $cwd/../docker/data/mongo/db/backups/ && tar -czf $DT.tgz $DT && cd -
+# Upload the backup to S3:
+aws s3 cp $DT.tgz s3://skynet-crdb-backups/backups/mongo/
+# Clean up
+rm -rf $DT.tgz $cwd/../docker/data/mongo/db/backups/$DT
diff --git a/scripts/mongo_restore.sh b/scripts/mongo_restore.sh
new file mode 100644
index 00000000..f9f4396c
--- /dev/null
+++ b/scripts/mongo_restore.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+BACKUP=$1
+if [[ $BACKUP == "" ]]; then
+ echo "No backup name given. It should look like '2020-01-29'."
+ exit 1
+fi
+
+# Get current working directory (pwd doesn't cut it)
+cwd=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
+# Set the environment:
+set -o allexport
+source $cwd/../.env
+set +o allexport
+# Check for AWS credentials:
+if [[ $AWS_ACCESS_KEY_ID == "" || $AWS_SECRET_ACCESS_KEY == "" ]]; then
+ echo "Missing AWS credentials!"
+ exit 1
+fi
+# Check if the backup exists:
+totalFoundObjects=$(aws s3 ls s3://skynet-crdb-backups/backups/mongo/ --recursive --summarize | grep "$DT.tgz" | wc -l)
+if [ "$totalFoundObjects" -eq "0" ]; then
+ echo "This backup doesn't exist!"
+ exit 1
+fi
+# Get the backup from S3:
+aws s3 cp s3://skynet-crdb-backups/backups/mongo/$BACKUP.tgz $BACKUP.tgz
+# Prepare a clean `to_restore` dir:
+rm -rf $cwd/../docker/data/mongo/db/backups/to_restore
+mkdir -p $cwd/../docker/data/mongo/db/backups/to_restore
+# Decompress the backup:
+tar -xzf $BACKUP.tgz -C $cwd/../docker/data/mongo/db/backups/to_restore
+rm $BACKUP.tgz
+# Restore the backup:
+docker exec mongo \
+ mongorestore \
+ mongodb://$SKYNET_DB_USER:$SKYNET_DB_PASS@$SKYNET_DB_HOST:$SKYNET_DB_PORT \
+ /data/db/backups/to_restore/$BACKUP
+# Clean up:
+rm -rf $cwd/../docker/data/mongo/db/backups/to_restore
diff --git a/setup-scripts/README.md b/setup-scripts/README.md
index 7d047421..c6407c61 100644
--- a/setup-scripts/README.md
+++ b/setup-scripts/README.md
@@ -19,6 +19,8 @@ You may want to fork this repository and replace ssh keys in
- [handshake](https://handshake.org) ([github](https://github.com/handshake-org/hsd)): full handshake node
- [handshake-api](https://github.com/NebulousLabs/skynet-webportal/tree/master/packages/handshake-api): simple API talking to the handshake node - [read more](https://github.com/NebulousLabs/skynet-webportal/blob/master/packages/handshake-api/README.md)
- [webapp](https://github.com/NebulousLabs/skynet-webportal/tree/master/packages/webapp): portal frontend application - [read more](https://github.com/NebulousLabs/skynet-webportal/blob/master/packages/webapp/README.md)
+ - [kratos](https://www.ory.sh/kratos/): user account management system
+ - [oathkeeper](https://www.ory.sh/oathkeeper/): identity and access proxy
- discord integration
- [funds-checker](funds-checker.py): script that checks wallet balance and sends status messages to discord periodically
- [health-checker](health-checker.py): script that monitors health-check service for server health issues and reports them to discord periodically
@@ -83,10 +85,21 @@ At this point we have almost everything running, we just need to set up your wal
- `CLOUDFLARE_AUTH_TOKEN` (optional) if using cloudflare as dns loadbalancer (need to change it in Caddyfile too)
- `AWS_ACCESS_KEY_ID` (optional) if using route53 as a dns loadbalancer
- `AWS_SECRET_ACCESS_KEY` (optional) if using route53 as a dns loadbalancer
+ - `PORTAL_NAME` (optional) e.g. `siasky.xyz`
+ - `DISCORD_BOT_TOKEN` (optional) if you're using Discord notifications for health checks and such
+ - `SKYNET_DB_USER` (optional) if using `accounts` this is the MongoDB username
+ - `SKYNET_DB_PASS` (optional) if using `accounts` this is the MongoDB password
+ - `SKYNET_DB_HOST` (optional) if using `accounts` this is the MongoDB address or container name
+ - `SKYNET_DB_PORT` (optional) if using `accounts` this is the MongoDB port
+ - `COOKIE_DOMAIN` (optional) if using `accounts` this is the domain to which your cookies will be issued
+ - `COOKIE_HASH_KEY` (optional) if using `accounts` hashing secret, at least 32 bytes
+ - `COOKIE_ENC_KEY` (optional) if using `accounts` encryption key, at least 32 bytes
+
1. if you have a custom domain and you configured it in `DOMAIN_NAME`, edit `/home/user/skynet-webportal/docker/caddy/Caddyfile` and uncomment `import custom.domain`
1. only for siasky.net domain instances: edit `/home/user/skynet-webportal/docker/caddy/Caddyfile`, uncomment `import siasky.net`
1. `docker-compose up -d` to restart the services so they pick up new env variables
1. `docker exec caddy caddy reload --config /etc/caddy/Caddyfile` to reload Caddyfile configuration
+1. add your custom Kratos configuration to `/home/user/skynet-webportal/docker/kratos/config/kratos.yml` (in particular, the credentials for your mail server should be here, rather than in your source control). For a starting point you can take `docker/kratos/config/kratos.yml.sample`.
## Subdomains
diff --git a/setup-scripts/setup-docker-services.sh b/setup-scripts/setup-docker-services.sh
index c9aecebd..44728e02 100755
--- a/setup-scripts/setup-docker-services.sh
+++ b/setup-scripts/setup-docker-services.sh
@@ -23,17 +23,27 @@ docker-compose --version # sanity check
# Create dummy .env file for docker-compose usage with variables
# * DOMAIN_NAME - the domain name your server is using ie. example.com
# * SKYNET_PORTAL_API - absolute url to the portal api ie. https://example.com
+# * SKYNET_DASHBOARD_URL - (optional) absolute url to the portal dashboard ie. https://account.example.com
# * EMAIL_ADDRESS - this is the administrator contact email you need to supply for communication regarding SSL certification
# * HSD_API_KEY - this is auto generated secure key for your handshake service integration
-# * CLOUDFLARE_AUTH_TOKEN` - (optional) if using cloudflare as dns loadbalancer (need to change it in Caddyfile too)
+# * CLOUDFLARE_AUTH_TOKEN - (optional) if using cloudflare as dns loadbalancer (need to change it in Caddyfile too)
# * AWS_ACCESS_KEY_ID - (optional) if using route53 as a dns loadbalancer
# * AWS_SECRET_ACCESS_KEY - (optional) if using route53 as a dns loadbalancer
# * API_PORT - (optional) the port on which siad is listening, defaults to 9980
# * PORTAL_NAME - the name of the portal, required by the discord bot
-# * DISCORD_BOT_TOKEN - required by the discord bot
+# * DISCORD_BOT_TOKEN - (optional) only required if you're using the discord notifications integration
+# * SKYNET_DB_USER - (optional) if using `accounts` this is the MongoDB username
+# * SKYNET_DB_PASS - (optional) if using `accounts` this is the MongoDB password
+# * SKYNET_DB_HOST - (optional) if using `accounts` this is the MongoDB address or container name
+# * SKYNET_DB_PORT - (optional) if using `accounts` this is the MongoDB port
+# * COOKIE_DOMAIN - (optional) if using `accounts` this is the domain to which your cookies will be issued
+# * COOKIE_HASH_KEY - (optional) if using `accounts` hashing secret, at least 32 bytes
+# * COOKIE_ENC_KEY - (optional) if using `accounts` encryption key, at least 32 bytes
+# * CR_IP - (optional) if using `accounts` the public IP/domain of your server, e.g. `helsinki.siasky.net`
+# * CR_CLUSTER_NODES - (optional) if using `accounts` the list of servers (with ports) which make up your CockroachDB cluster, e.g. `helsinki.siasky.net:26257,germany.siasky.net:26257,us-east.siasky.net:26257`
if ! [ -f /home/user/skynet-webportal/.env ]; then
HSD_API_KEY=$(openssl rand -base64 32) # generate safe random key for handshake
- printf "DOMAIN_NAME=example.com\nSKYNET_PORTAL_API=https://example.com\nEMAIL_ADDRESS=email@example.com\nSIA_WALLET_PASSWORD=\nHSD_API_KEY=${HSD_API_KEY}\nCLOUDFLARE_AUTH_TOKEN=\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nPORTAL_NAME=\nDISCORD_BOT_TOKEN=\n" > /home/user/skynet-webportal/.env
+ printf "DOMAIN_NAME=example.com\nSKYNET_PORTAL_API=https://example.com\nSKYNET_DASHBOARD_URL=https://account.example.com\nEMAIL_ADDRESS=email@example.com\nSIA_WALLET_PASSWORD=\nHSD_API_KEY=${HSD_API_KEY}\nCLOUDFLARE_AUTH_TOKEN=\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\nPORTAL_NAME=\nDISCORD_BOT_TOKEN=\n" > /home/user/skynet-webportal/.env
fi
# Start docker container with nginx and client
diff --git a/setup-scripts/setup-server.sh b/setup-scripts/setup-server.sh
index aaaa97f3..e9e865fe 100755
--- a/setup-scripts/setup-server.sh
+++ b/setup-scripts/setup-server.sh
@@ -14,7 +14,7 @@ mkdir -p /home/user/.ssh
# Install apt packages
sudo apt-get update
-sudo apt-get -y install ufw tmux ranger htop nload gcc g++ make git vim unzip curl
+sudo apt-get -y install ufw tmux ranger htop nload gcc g++ make git vim unzip curl awscli
# Setup GIT credentials (so commands like git stash would work)
git config --global user.email "devs@nebulous.tech"
diff --git a/yarn.lock b/yarn.lock
index 5b4f02f2..12920cd6 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,13 @@
# yarn lockfile v1
+"@apimatic/schema@^0.5.1":
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/@apimatic/schema/-/schema-0.5.1.tgz#673aa4ddcf31311ba9dfbf0e514cb35ab3b3b9f9"
+ integrity sha512-ZtAtLOjDEqxot017qRGK+gvNbZv5tNNDmYiYOpBhFiZwulTZUHT9NwJG+V5nIhdEqIpy5E8ty1C4tTzangfNoQ==
+ dependencies:
+ lodash.flatten "^4.4.0"
+
"@ardatan/aggregate-error@0.0.6":
version "0.0.6"
resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609"
@@ -80,33 +87,32 @@
source-map "^0.5.0"
"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.13.13", "@babel/core@^7.4.5", "@babel/core@^7.7.5":
- version "7.13.13"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.13.tgz#bc44c4a2be2288ec4ddf56b66fc718019c76ac29"
- integrity sha512-1xEs9jZAyKIouOoCmpsgk/I26PoKyvzQ2ixdRpRzfbcp1fL+ozw7TUgdDgwonbTovqRaTfRh50IXuw4QrWO0GA==
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.14.tgz#8e46ebbaca460a63497c797e574038ab04ae6d06"
+ integrity sha512-wZso/vyF4ki0l0znlgM4inxbdrUvCb+cVz8grxDq+6C9k6qbqoIJteQOKicaKjCipU3ISV+XedCqpL2RJJVehA==
dependencies:
"@babel/code-frame" "^7.12.13"
"@babel/generator" "^7.13.9"
"@babel/helper-compilation-targets" "^7.13.13"
- "@babel/helper-module-transforms" "^7.13.12"
+ "@babel/helper-module-transforms" "^7.13.14"
"@babel/helpers" "^7.13.10"
"@babel/parser" "^7.13.13"
"@babel/template" "^7.12.13"
"@babel/traverse" "^7.13.13"
- "@babel/types" "^7.13.13"
+ "@babel/types" "^7.13.14"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
json5 "^2.1.2"
- lodash "^4.17.19"
semver "^6.3.0"
source-map "^0.5.0"
"@babel/eslint-parser@^7.13.4":
- version "7.13.10"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.10.tgz#e272979914f36bb6cea144c14c32bb51632696dd"
- integrity sha512-/I1HQ3jGPhIpeBFeI3wO9WwWOnBYpuR0pX0KlkdGcRQAVX9prB/FCS2HBpL7BiFbzhny1YCiBH8MTZD2jJa7Hg==
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.13.14.tgz#f80fd23bdd839537221914cb5d17720a5ea6ba3a"
+ integrity sha512-I0HweR36D73Ibn/FfrRDMKlMqJHFwidIUgYdMpH+aXYuQC+waq59YaJ6t9e9N36axJ82v1jR041wwqDrDXEwRA==
dependencies:
- eslint-scope "5.1.0"
+ eslint-scope "^5.1.0"
eslint-visitor-keys "^1.3.0"
semver "^6.3.0"
@@ -222,10 +228,10 @@
dependencies:
"@babel/types" "^7.13.12"
-"@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.12":
- version "7.13.12"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz#600e58350490828d82282631a1422268e982ba96"
- integrity sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==
+"@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.14":
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz#e600652ba48ccb1641775413cb32cfa4e8b495ef"
+ integrity sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==
dependencies:
"@babel/helper-module-imports" "^7.13.12"
"@babel/helper-replace-supers" "^7.13.12"
@@ -233,8 +239,8 @@
"@babel/helper-split-export-declaration" "^7.12.13"
"@babel/helper-validator-identifier" "^7.12.11"
"@babel/template" "^7.12.13"
- "@babel/traverse" "^7.13.0"
- "@babel/types" "^7.13.12"
+ "@babel/traverse" "^7.13.13"
+ "@babel/types" "^7.13.14"
"@babel/helper-optimise-call-expression@^7.12.13":
version "7.12.13"
@@ -1056,9 +1062,9 @@
"@babel/plugin-transform-typescript" "^7.13.0"
"@babel/register@^7.12.1":
- version "7.13.8"
- resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.8.tgz#d9051dc6820cb4e86375cc0e2d55a4862b31184f"
- integrity sha512-yCVtABcmvQjRsX2elcZFUV5Q5kDDpHdtXKKku22hNDma60lYuhKmtp1ykZ/okRCPLT2bR5S+cA1kvtBdAFlDTQ==
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.13.14.tgz#bbfa8f4f027c2ebc432e8e69e078b632605f2d9b"
+ integrity sha512-iyw0hUwjh/fzN8qklVqZodbyWjEBOG0KdDnBOpv3zzIgK3NmuRXBmIXH39ZBdspkn8LTHvSboN+oYb4MT43+9Q==
dependencies:
find-cache-dir "^2.0.0"
lodash "^4.17.19"
@@ -1074,7 +1080,14 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
+"@babel/runtime@7.12.5":
+ version "7.12.5"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e"
+ integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
version "7.13.10"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
@@ -1082,9 +1095,9 @@
regenerator-runtime "^0.13.4"
"@babel/standalone@^7.12.6":
- version "7.13.13"
- resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.13.13.tgz#9e2b5116a9e2ff2aae9497300e5be96e551ca827"
- integrity sha512-gCM87jBWLgowuIypBas/R3AaepWUo0inqiNiBoNVtnnSpbSddYXcY8cDA7qqrAOFxWIvuaznjmV2g/UuizblQQ==
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.13.14.tgz#cd4f2a976e3d8ced69b8b0e280988435d655e567"
+ integrity sha512-ZhIZaufaCVMuGt9yLlNTO/ORtI6xNKIHK0D/uEdVUYmS8xROOPgDPZtYesmXBA+xlArlCj5s94g4Nz4g0m0ytA==
"@babel/template@^7.10.4", "@babel/template@^7.12.13", "@babel/template@^7.12.7":
version "7.12.13"
@@ -1109,10 +1122,19 @@
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.4.4":
- version "7.13.13"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.13.tgz#dcd8b815b38f537a3697ce84c8e3cc62197df96f"
- integrity sha512-kt+EpC6qDfIaqlP+DIbIJOclYy/A1YXs9dAf/ljbi+39Bcbc073H6jKVpXEr/EoIh5anGn5xq/yRVzKl+uIc9w==
+"@babel/types@7.8.3":
+ version "7.8.3"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c"
+ integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.13"
+ to-fast-properties "^2.0.0"
+
+"@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.5", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.12.6", "@babel/types@^7.12.7", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.13.14", "@babel/types@^7.4.4":
+ version "7.13.14"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.14.tgz#c35a4abb15c7cd45a2746d78ab328e362cbace0d"
+ integrity sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==
dependencies:
"@babel/helper-validator-identifier" "^7.12.11"
lodash "^4.17.19"
@@ -1302,10 +1324,10 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
-"@fontsource/metropolis@^4.2.1":
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/@fontsource/metropolis/-/metropolis-4.2.1.tgz#49b69c0e3ff940bf2d94ee45627fa1fe3528f59f"
- integrity sha512-PhXqIWHqD+HyTkZr1XT7irKhaObRmHLz+d0js/NuoI30md0X4LXMxkolCL5EbmSDXNXW36nT+A1HCKW71oyd6w==
+"@fontsource/metropolis@^4.1.0", "@fontsource/metropolis@^4.2.1":
+ version "4.2.4"
+ resolved "https://registry.yarnpkg.com/@fontsource/metropolis/-/metropolis-4.2.4.tgz#4057d4e6a989a19665180561957d9599b5bd6f51"
+ integrity sha512-1k8EdiXM9a52SGthSdyWIUGCPQh+yuygjzFbiP+o+ad0ajIhUEd2yj9BA95JBtEOakKIfQ137K3f2CqkVTCbHQ==
"@fontsource/sora@^4.2.2":
version "4.2.2"
@@ -1475,11 +1497,26 @@
is-promise "4.0.0"
tslib "~2.0.1"
+"@hapi/accept@5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.1.tgz#068553e867f0f63225a506ed74e899441af53e10"
+ integrity sha512-fMr4d7zLzsAXo28PRRQPXR1o2Wmu+6z+VY1UzDp0iFo13Twj8WePakwXBiqn3E1aAlTpSNzCXdnnQXFhst8h8Q==
+ dependencies:
+ "@hapi/boom" "9.x.x"
+ "@hapi/hoek" "9.x.x"
+
"@hapi/address@2.x.x":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==
+"@hapi/boom@9.x.x":
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/@hapi/boom/-/boom-9.1.2.tgz#48bd41d67437164a2d636e3b5bc954f8c8dc5e38"
+ integrity sha512-uJEJtiNHzKw80JpngDGBCGAmWjBtzxDCz17A9NO2zCi8LLBlb5Frpq4pXwyN+2JQMod4pKz5BALwyneCgDg89Q==
+ dependencies:
+ "@hapi/hoek" "9.x.x"
+
"@hapi/bourne@1.x.x":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a"
@@ -1490,7 +1527,7 @@
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06"
integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==
-"@hapi/hoek@^9.0.0":
+"@hapi/hoek@9.x.x", "@hapi/hoek@^9.0.0":
version "9.1.1"
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.1.tgz#9daf5745156fd84b8e9889a2dc721f0c58e894aa"
integrity sha512-CAEbWH7OIur6jEOzaai83jq3FmKmv4PmX1JYfs9IrYcGEVI/lyL1EXJGCj7eFVJ0bg5QR8LMxBlEtA+xKiLpFw==
@@ -1934,6 +1971,38 @@
call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0"
+"@next/env@10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@next/env/-/env-10.1.2.tgz#04888eb7115a5b0633dc59e321e5c952917a39d5"
+ integrity sha512-G6kEq7dr7f+unVTUL74lIaB6njB73vEMVi7AhujaNnNZr6z8jQ43jCjNyawQsNyoNWsRo/9x6x9W72PbrGmy/w==
+
+"@next/polyfill-module@10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.1.2.tgz#0cad99af18da0f90a63a25b60602ab46650017e6"
+ integrity sha512-9+xXb33HIPCrV0yM79blqwgLa+fkvm0gYs/wUDI0pPBCHkMpCZA/SWUeF/yKDY6qWO79H3B5pWTziLmzycQPWA==
+
+"@next/react-dev-overlay@10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.1.2.tgz#e98edfdc7fbed4d0cb333594469c7fa62f96e6df"
+ integrity sha512-B81nhgkWr+MbDAXN9I38WIdhAKayfIzrnOXXF2MS4VgxyHBvYQQfmobNNE0XBByyDn0+Ww5s9xg3L6Shh9kWKA==
+ dependencies:
+ "@babel/code-frame" "7.12.11"
+ anser "1.4.9"
+ chalk "4.0.0"
+ classnames "2.2.6"
+ css.escape "1.5.1"
+ data-uri-to-buffer "3.0.1"
+ platform "1.3.6"
+ shell-quote "1.7.2"
+ source-map "0.8.0-beta.0"
+ stacktrace-parser "0.1.10"
+ strip-ansi "6.0.0"
+
+"@next/react-refresh-utils@10.1.2":
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.1.2.tgz#1c60150bb3f004fb9dd02db387a952483e6e2e4c"
+ integrity sha512-SQvtCt6nNOkGKddidQehxtJKMkoapg/kbLy/HwrqU8WdVrVVAk8JQw/QjDHVEsdezRxspeNKbho4L+3jl4c9rw==
+
"@nodelib/fs.scandir@2.1.4":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69"
@@ -1968,6 +2037,25 @@
mkdirp "^1.0.4"
rimraf "^3.0.2"
+"@opentelemetry/api@0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae"
+ integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ==
+ dependencies:
+ "@opentelemetry/context-base" "^0.14.0"
+
+"@opentelemetry/context-base@^0.14.0":
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001"
+ integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw==
+
+"@ory/kratos-client@^0.5.4-alpha.1":
+ version "0.5.4-alpha.1"
+ resolved "https://registry.yarnpkg.com/@ory/kratos-client/-/kratos-client-0.5.4-alpha.1.tgz#6a87a90fd858fc4cb792253b109ea53884098107"
+ integrity sha512-koqwcEtEtGoHdX/WU3O4u6UmbMzbmbA06t5qIZv9S4YauxHZIVZM3VMws1ZK5ObgAMI6O5dCs4WYJrJq+QN48g==
+ dependencies:
+ axios "^0.19.2"
+
"@pmmmwh/react-refresh-webpack-plugin@^0.4.3":
version "0.4.3"
resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766"
@@ -2043,24 +2131,24 @@
escape-string-regexp "^4.0.0"
"@sindresorhus/transliterate@^0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.1.tgz#779b31244781d3c898f185b61d58c89e7c782674"
- integrity sha512-QSdIQ5keUFAZ3KLbfbsntW39ox0Ym8183RqTwBq/ZEFoN3NQAtGV+qWaNdzKpIDHgj9J2CQ2iNDRVU11Zyr7MQ==
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz#ffce368271d153550e87de81486004f2637425af"
+ integrity sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==
dependencies:
escape-string-regexp "^2.0.0"
lodash.deburr "^4.1.0"
-"@storybook/addon-actions@6.2.0-rc.10", "@storybook/addon-actions@^6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.2.0-rc.10.tgz#e2f3a8125b6ff4cd92f0adec43a53e8750bd6bf7"
- integrity sha512-M5JbYDsgV7povpW4nfx1MuwJC4peOjQiThHOvPB8kvMDJqmTom59EodcEcR9N2SIoTXV+MhkGIMU01plrvTDVw==
+"@storybook/addon-actions@6.2.1", "@storybook/addon-actions@^6.2.0-rc.10":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-6.2.1.tgz#af5924969c691a4fe6ec9266ffefe02b95245063"
+ integrity sha512-pRzyJIcso+7FJ4Xv4lJZ/mppFgkdnJ3B/R6QPYl1Enwlxjk2CH2iDD+Hq85WFHGfg5cjtFm3fd9EbPXC09ReeA==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/client-api" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/client-api" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/core-events" "6.2.1"
+ "@storybook/theming" "6.2.1"
core-js "^3.8.2"
fast-deep-equal "^3.1.3"
global "^4.4.0"
@@ -2073,17 +2161,17 @@
util-deprecate "^1.0.2"
uuid-browser "^3.1.0"
-"@storybook/addon-backgrounds@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.2.0-rc.10.tgz#1b65f04aff678a5df7d037923efbe89fec2fcbe5"
- integrity sha512-YXO6gm5kXP9zuS2XMfB0bHw3WmDbrX5gyonOEMsYIabPqwvN26LROkxSLTWEHRulf9wnCiLUpXhfDHzTnUqn9Q==
+"@storybook/addon-backgrounds@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-6.2.1.tgz#3e04dcba3a202f42e2831a2e017bc90ddd2406b7"
+ integrity sha512-ZR9zPHpw0uR3u9Qfx4HG7YBTucTL+l3KZ1uEEIsyDIPrwNTPpzsryzvwS6/Syfo/ndZZP3CTdkYGTBtnt0ALXA==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/core-events" "6.2.1"
+ "@storybook/theming" "6.2.1"
core-js "^3.8.2"
global "^4.4.0"
memoizerific "^1.11.3"
@@ -2091,24 +2179,24 @@
ts-dedent "^2.0.0"
util-deprecate "^1.0.2"
-"@storybook/addon-controls@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.2.0-rc.10.tgz#361256e025310e8f1d25d7168de6d211bde1fd39"
- integrity sha512-QlPLzPhdyhlVctHju3819zkPBTd4TnFmaKd6JZgE3rvwdN/c0A7h4mdpv7u325E9Ki7Uga5sRzT8lDMQ7MwM0w==
+"@storybook/addon-controls@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-6.2.1.tgz#1010c15e6df6b4d003ecf945e6e3b95fd03f56db"
+ integrity sha512-OX2t6R1azMpIZFBcXvxUa2R1TNLrCQMNE8l0BbSzXBI0iJbkh8b4giaPwHE/+DrkCmOv3LeEnEDlVFdUSV7cRQ==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/client-api" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/node-logger" "6.2.0-rc.10"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/client-api" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/node-logger" "6.2.1"
+ "@storybook/theming" "6.2.1"
core-js "^3.8.2"
ts-dedent "^2.0.0"
-"@storybook/addon-docs@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.2.0-rc.10.tgz#40244b47762f03e98f141324065e4abedcf8a092"
- integrity sha512-Q5cR8ngYnt8oZbc7a5kgwOTdbTTlWVYpaCiRTB21bbSN5d2BpJt6hfd60c+nNJmq5W8iQodAPjgSjOYpZAuaww==
+"@storybook/addon-docs@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-6.2.1.tgz#fcfdfd56256f01d8d54710a09d1130292a3f8385"
+ integrity sha512-UIeUDEUDKRmAZW0ZlLMzp9f4iVP76QQOccDGHo7CoZEkj69nuR2g2kdoo0myOSzswq6f4yMgu6Hj4f+v+QCUEg==
dependencies:
"@babel/core" "^7.12.10"
"@babel/generator" "^7.12.11"
@@ -2119,19 +2207,19 @@
"@mdx-js/loader" "^1.6.22"
"@mdx-js/mdx" "^1.6.22"
"@mdx-js/react" "^1.6.22"
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/builder-webpack4" "6.2.0-rc.10"
- "@storybook/client-api" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/core" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/builder-webpack4" "6.2.1"
+ "@storybook/client-api" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/core" "6.2.1"
+ "@storybook/core-events" "6.2.1"
"@storybook/csf" "0.0.1"
- "@storybook/node-logger" "6.2.0-rc.10"
- "@storybook/postinstall" "6.2.0-rc.10"
- "@storybook/source-loader" "6.2.0-rc.10"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/node-logger" "6.2.1"
+ "@storybook/postinstall" "6.2.1"
+ "@storybook/source-loader" "6.2.1"
+ "@storybook/theming" "6.2.1"
acorn "^7.4.1"
acorn-jsx "^5.3.1"
acorn-walk "^7.2.0"
@@ -2154,33 +2242,33 @@
util-deprecate "^1.0.2"
"@storybook/addon-essentials@^6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.2.0-rc.10.tgz#64f5396fab940ddf79c3fdfadbec91c08ea799d6"
- integrity sha512-Zq1TaVGoSJ9VPg1uw8VEV8OB5KQBOLafaCGuZv0P4nUO3sAAmdRnJ7F+WV3U8HvtkeQPFs/FDvQGpR4QrOjg5g==
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-6.2.1.tgz#6b8f5e7f10da431ef287e64df9e47ce6eb2fff78"
+ integrity sha512-jgz37V+FCIk3GKsVdvBf5Toz+yz/FPB1B85wFrkxNpJljdHC1XN5xd41AVFlkEsqzeaTLiHPpthHaPtjaQpbOw==
dependencies:
- "@storybook/addon-actions" "6.2.0-rc.10"
- "@storybook/addon-backgrounds" "6.2.0-rc.10"
- "@storybook/addon-controls" "6.2.0-rc.10"
- "@storybook/addon-docs" "6.2.0-rc.10"
- "@storybook/addon-toolbars" "6.2.0-rc.10"
- "@storybook/addon-viewport" "6.2.0-rc.10"
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/node-logger" "6.2.0-rc.10"
+ "@storybook/addon-actions" "6.2.1"
+ "@storybook/addon-backgrounds" "6.2.1"
+ "@storybook/addon-controls" "6.2.1"
+ "@storybook/addon-docs" "6.2.1"
+ "@storybook/addon-toolbars" "6.2.1"
+ "@storybook/addon-viewport" "6.2.1"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/node-logger" "6.2.1"
core-js "^3.8.2"
regenerator-runtime "^0.13.7"
ts-dedent "^2.0.0"
"@storybook/addon-links@^6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.2.0-rc.10.tgz#da30c573fcbee38f1fb8cf295c52e29b58ac651a"
- integrity sha512-asVXg3gLYsI73YT5g+qxa2iayt+nlSSZtR1QHuys5q2sJorJ/++XVE8q238zbxvUgkWoYhhUFMSvj1UgvXMjxA==
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-6.2.1.tgz#64a9978b9eaec8a85de8b965d823cf5786c1a6ba"
+ integrity sha512-ZVAaNEVdQaL8+OLu6A7yfake0w8cn9YOZAnUcrIPalIVZ7MESy/vfxAE7lzYk17ngC9G+w5ELtzoD4WThTcCNg==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/core-events" "6.2.1"
"@storybook/csf" "0.0.1"
- "@storybook/router" "6.2.0-rc.10"
+ "@storybook/router" "6.2.1"
"@types/qs" "^6.9.5"
core-js "^3.8.2"
global "^4.4.0"
@@ -2200,62 +2288,62 @@
postcss-loader "^4.2.0"
style-loader "^1.3.0"
-"@storybook/addon-toolbars@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.2.0-rc.10.tgz#0abde5ee37e86b89144d2e39e387d642bd6f62a3"
- integrity sha512-lrp/q1aA1Fza9mWOXiiMW2vVZPhxk65XUPsknV5no0N+QqLcDxH59FKoen3Au7aEFYfqujN2LbbTeLW91lGE5Q==
+"@storybook/addon-toolbars@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-6.2.1.tgz#c13121947ba87c53c1e5be91b41543e4b29bce83"
+ integrity sha512-OoHahYl/WcVPhYk8xULlvL34pKWOSZQWTt7kVAdbZqKCNB/T7yy6FkZ7jy56u25oz6bL12DVUeUN4kJn6XxFFA==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/client-api" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/client-api" "6.2.1"
+ "@storybook/components" "6.2.1"
core-js "^3.8.2"
-"@storybook/addon-viewport@6.2.0-rc.10", "@storybook/addon-viewport@^6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.2.0-rc.10.tgz#d9bd496b09a31aad13a60f97f9923e70faa2acfb"
- integrity sha512-VzvGshUsyJhLkHhlktFwvO8dkUGxIvy1jEN5Wm1RTtJmBmwDsm7mFOPjScWsWdLZBTkX6iebPWmB73n/PcbOfA==
+"@storybook/addon-viewport@6.2.1", "@storybook/addon-viewport@^6.2.0-rc.10":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-6.2.1.tgz#89a5fa43316e5a17341866b84556d321f15d0b1f"
+ integrity sha512-mdwMRBraYMCdamkBwzyReaOWD9CwHjQNJ4T3h3kLOMgK8BiKHJxNkXbVCuW7A1GemHK5Mfdu7Uf19quXKHf7+g==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/core-events" "6.2.1"
+ "@storybook/theming" "6.2.1"
core-js "^3.8.2"
global "^4.4.0"
memoizerific "^1.11.3"
prop-types "^15.7.2"
regenerator-runtime "^0.13.7"
-"@storybook/addons@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.2.0-rc.10.tgz#c6c0b7afe89365c27a7de1c3a1b4b17f9c3e4ca9"
- integrity sha512-ouF/NnpivFbOvHJiSWSiKeKOLo3kSG4wYOCNt8LvCEHIKusdKz4XqNNGcIqct+Mu9OSLjcqG3oqenSUldKocKw==
+"@storybook/addons@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-6.2.1.tgz#7f1c7042912b82023e4dfc08f31c4149d90800bd"
+ integrity sha512-HqrpqF+XMnqAJHhN6Te7YYR3Gjcj7Js9bO59jd5AQQ96PBoQ6k5I/tCmripvWVxdak4UfI2p4zn6x7Kkw5bHxA==
dependencies:
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/channels" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
- "@storybook/router" "6.2.0-rc.10"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/api" "6.2.1"
+ "@storybook/channels" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/core-events" "6.2.1"
+ "@storybook/router" "6.2.1"
+ "@storybook/theming" "6.2.1"
core-js "^3.8.2"
global "^4.4.0"
regenerator-runtime "^0.13.7"
-"@storybook/api@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.2.0-rc.10.tgz#7be374372ee41bfd0db941ba6341edd3c9390296"
- integrity sha512-RI0yKxe9fgNi2UllgsZbfl/oXKesazmuLfr57Fgo9vmDSKlFhnxJ2GoImxGL9Xo0OnFKQYJ9o3klgUEdKUAYGg==
+"@storybook/api@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/api/-/api-6.2.1.tgz#e76b6c31578089f0df06fd67486d9bc7d2eca4c1"
+ integrity sha512-W5H5FExLExCbj67OAQYRopeTdADuHOUgQiMoeoYSckdyWQl5DJb2l85yDlr0auZNYbjFHzJqEOs0Loch/NNlYA==
dependencies:
"@reach/router" "^1.3.4"
- "@storybook/channels" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
+ "@storybook/channels" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/core-events" "6.2.1"
"@storybook/csf" "0.0.1"
- "@storybook/router" "6.2.0-rc.10"
+ "@storybook/router" "6.2.1"
"@storybook/semver" "^7.3.2"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/theming" "6.2.1"
"@types/reach__router" "^1.3.7"
core-js "^3.8.2"
fast-deep-equal "^3.1.3"
@@ -2269,10 +2357,10 @@
ts-dedent "^2.0.0"
util-deprecate "^1.0.2"
-"@storybook/builder-webpack4@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.2.0-rc.10.tgz#c674ac2944b7ec68ab598af26ada04ad8ad8f148"
- integrity sha512-x0skFPJxZWBOiIKYueJ7EbyKZe+mlFsPchvQ8yPURQlBz81n2T3Qwb/blTvlsVZ4giHhRC41uHQ1wQQPCF1MUg==
+"@storybook/builder-webpack4@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/builder-webpack4/-/builder-webpack4-6.2.1.tgz#4401186f5ca9f922256b804609936870555c3b9b"
+ integrity sha512-cnGBqDwkSmjKP7hd7HuJHaUVm/ILxjQ1LpXNXzPkd0My+GaG+EPxlhs3TacB9tFHWgpxlHpowAbBsb7RsRei6A==
dependencies:
"@babel/core" "^7.12.10"
"@babel/plugin-proposal-class-properties" "^7.12.1"
@@ -2295,20 +2383,20 @@
"@babel/preset-env" "^7.12.11"
"@babel/preset-react" "^7.12.10"
"@babel/preset-typescript" "^7.12.7"
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/channel-postmessage" "6.2.0-rc.10"
- "@storybook/channels" "6.2.0-rc.10"
- "@storybook/client-api" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/core-common" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
- "@storybook/node-logger" "6.2.0-rc.10"
- "@storybook/router" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/channel-postmessage" "6.2.1"
+ "@storybook/channels" "6.2.1"
+ "@storybook/client-api" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/core-common" "6.2.1"
+ "@storybook/core-events" "6.2.1"
+ "@storybook/node-logger" "6.2.1"
+ "@storybook/router" "6.2.1"
"@storybook/semver" "^7.3.2"
- "@storybook/theming" "6.2.0-rc.10"
- "@storybook/ui" "6.2.0-rc.10"
+ "@storybook/theming" "6.2.1"
+ "@storybook/ui" "6.2.1"
"@types/node" "^14.0.10"
"@types/webpack" "^4.41.26"
autoprefixer "^9.8.6"
@@ -2345,38 +2433,38 @@
webpack-hot-middleware "^2.25.0"
webpack-virtual-modules "^0.2.2"
-"@storybook/channel-postmessage@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.2.0-rc.10.tgz#e8b7f74d1584c0470f0e4369f16a29bce82fc2e5"
- integrity sha512-iGeMqQavMntR/ZC3LVBMcSnDirV9/yBeg7o2UmpbB60Pt+yIf0HpRrgIi0PvY+o6b6YQrX41b57d3SshUe1sHA==
+"@storybook/channel-postmessage@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/channel-postmessage/-/channel-postmessage-6.2.1.tgz#9bb22ef776c315ad09caf1a149fbe16496593821"
+ integrity sha512-6AXxq8QvUzO7OI4qENux2zFiK+n9pVDDRdazZPesWYaD11jrnh7IGMYwa9a3mbVWJchVwc6b74uWUOmvMhG0cQ==
dependencies:
- "@storybook/channels" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
+ "@storybook/channels" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/core-events" "6.2.1"
core-js "^3.8.2"
global "^4.4.0"
qs "^6.10.0"
telejson "^5.1.0"
-"@storybook/channels@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.2.0-rc.10.tgz#764aa98157b45e0b3429ce29ae53c5b3959342e4"
- integrity sha512-IffYpvWh/axzgSpvDX1/ivnRcTqhu+7DZ35dySRNjJZwwG/4C35lxazpkAdv4M62xbA2fq1ldW9vIjdFCYuwfQ==
+"@storybook/channels@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-6.2.1.tgz#3b9f4164dddbb5a2b1628adfaeb0e7c1321d2a1b"
+ integrity sha512-p0QopD9JFIAYkDuVqqmpObcE4apnIZUG9bccRX2yNYCaNrRl3zalV4zDY/2TiwgoFOV2ydKPKdK2ZJcDY5JItg==
dependencies:
core-js "^3.8.2"
ts-dedent "^2.0.0"
util-deprecate "^1.0.2"
-"@storybook/client-api@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.2.0-rc.10.tgz#f4665150b6798f4969602dccc153664b578e5d6c"
- integrity sha512-xtRADGf986Z/jraqtu9wpRNdn9oVTRt7+s6A2aj/FuFGmiQ1z4o7sM6AkQEck1NgJmYOqsxPyV0181QGQ30o/w==
+"@storybook/client-api@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-6.2.1.tgz#21433c9b9baa019bd0bcdcf7f9f96e7e7058bfdf"
+ integrity sha512-ABl83n8F1F5fsjlxcpqWMYP9HDT7stkLKCIkN4zIC0uHWMHtWOYyJzJl166nv+nLjHiQdw+kimgA2jiKQfoF3Q==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/channel-postmessage" "6.2.0-rc.10"
- "@storybook/channels" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/channel-postmessage" "6.2.1"
+ "@storybook/channels" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/core-events" "6.2.1"
"@storybook/csf" "0.0.1"
"@types/qs" "^6.9.5"
"@types/webpack-env" "^1.16.0"
@@ -2391,23 +2479,23 @@
ts-dedent "^2.0.0"
util-deprecate "^1.0.2"
-"@storybook/client-logger@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.2.0-rc.10.tgz#d8d89505c87bc3257fa5ca9b020d666f032de7b5"
- integrity sha512-pA962KKjAj457qmSgKoyqvAPSwNFUMZCMk6imdu8AZ0LHY6qx8toEMQvWTeY3DC/AqjZnfu15z4UR5Fe2tlQNA==
+"@storybook/client-logger@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-6.2.1.tgz#6fb8b39309cdaf6fd431bfe0fe11e4454afc910e"
+ integrity sha512-VDdSaM9MRiiFQF545GFgNJNb6hMC+JHjiV0cfJ3adrs021JE/J3d6Nc8Kn/XcpcX2cFrQsbffrOGaCAWAIllNg==
dependencies:
core-js "^3.8.2"
global "^4.4.0"
-"@storybook/components@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.2.0-rc.10.tgz#da2107ce25438ac4d1ab74697086e4777dc88a42"
- integrity sha512-i6oOwCZgJ5flA80MAhz4Bfrbp+fvufeFeGD7qG57reT1Vt1Aptto+sCmXWx8u/tEQ1ckuMNv0jpcXV6rka++Hg==
+"@storybook/components@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/components/-/components-6.2.1.tgz#da664c075844be49637c8d0b153f5a30cad68f20"
+ integrity sha512-pptXdgifINkc8K0yp55lOlqQywAyAwkuQVXAhbSGZriLn2kT6ei0GElJaEftcGlciOAUvi9H0rvcIvCAlxiPRQ==
dependencies:
"@popperjs/core" "^2.6.0"
- "@storybook/client-logger" "6.2.0-rc.10"
+ "@storybook/client-logger" "6.2.1"
"@storybook/csf" "0.0.1"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/theming" "6.2.1"
"@types/color-convert" "^2.0.0"
"@types/overlayscrollbars" "^1.12.0"
"@types/react-syntax-highlighter" "11.0.5"
@@ -2427,19 +2515,20 @@
react-textarea-autosize "^8.3.0"
regenerator-runtime "^0.13.7"
ts-dedent "^2.0.0"
+ util-deprecate "^1.0.2"
-"@storybook/core-client@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.2.0-rc.10.tgz#1c8a31a7830f705ed3b64bfd0cd3ffa46e9277ed"
- integrity sha512-EZrjF8Oz8DGGZwuWk8vuFm1XzS2lzBaHqYYzoLbt0vdbDMJaJPo/DHp9xOBBwgNj8KGp3WbjYzpxsRJru21I1A==
+"@storybook/core-client@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/core-client/-/core-client-6.2.1.tgz#4431e14b577f0dc52d2f4622e2c7fad9420edfec"
+ integrity sha512-RaHszy6H2aAFqQrF3bwJTDpkTZC7yjVpQm5yK07SQqVz5qKAWmuzeXeNTgUcLo3k54i/GQXf8Knu7Q6M3vs54A==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/channel-postmessage" "6.2.0-rc.10"
- "@storybook/client-api" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/channel-postmessage" "6.2.1"
+ "@storybook/client-api" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/core-events" "6.2.1"
"@storybook/csf" "0.0.1"
- "@storybook/ui" "6.2.0-rc.10"
+ "@storybook/ui" "6.2.1"
ansi-to-html "^0.6.11"
core-js "^3.8.2"
global "^4.4.0"
@@ -2450,10 +2539,10 @@
unfetch "^4.2.0"
util-deprecate "^1.0.2"
-"@storybook/core-common@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.2.0-rc.10.tgz#a78861e2b41fd8beaf490381946b2609d3c039ab"
- integrity sha512-SP7NQO5HPoCKTNftIWDD2LNNr9QPuw5Zojpvcba+mSmJKmmUAXVg8rMvNrDq3756tmxfQ/qK+2jBudvXUc4Afg==
+"@storybook/core-common@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-6.2.1.tgz#2f308ff3b434042938469955626434dac12c22a6"
+ integrity sha512-rr+zKt6GGpknsRQy/krt7fKMZH5Y3o5b6wldtlb65Gl2E8rVdlIP/bvrfOQ2n0je35Z68auIU9il1/xz8f4z8w==
dependencies:
"@babel/core" "^7.12.10"
"@babel/plugin-proposal-class-properties" "^7.12.1"
@@ -2476,7 +2565,7 @@
"@babel/preset-react" "^7.12.10"
"@babel/preset-typescript" "^7.12.7"
"@babel/register" "^7.12.1"
- "@storybook/node-logger" "6.2.0-rc.10"
+ "@storybook/node-logger" "6.2.1"
"@storybook/semver" "^7.3.2"
"@types/glob-base" "^0.3.0"
"@types/micromatch" "^4.0.1"
@@ -2504,29 +2593,29 @@
util-deprecate "^1.0.2"
webpack "4"
-"@storybook/core-events@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.2.0-rc.10.tgz#a6d91fc1caa216e6f4581f87525dc0cbbab03d66"
- integrity sha512-DDSjaXwhXZwjW3NhTeKIlmH2cZIfQNXRacgWJSRBPQEO9K/RsjC5oWH3gtIM2f2fSMoE4Han4TENIqhnSRzHIg==
+"@storybook/core-events@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-6.2.1.tgz#54e41fde06e07d4518e18857bc0ecf0f8d9c79c2"
+ integrity sha512-zZyVkCOQX52n0++/2ui3os6G7CSS0APqG+AlOhu8vF1O+NOknkYSTDPVncFcoWCHnWsS9ANcMwkRRGCocFKD6g==
dependencies:
core-js "^3.8.2"
-"@storybook/core-server@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.2.0-rc.10.tgz#86ab012e97a6078cb3c6f24ca6e1a17913f79268"
- integrity sha512-UOxoSnIW1+JQQJljNurVdujI0x/TqJIUE6+FX31PcCSNkc7n3VS7uq8mJl7mi8EWpvabYLXtiR+5CTyufQQeHw==
+"@storybook/core-server@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-6.2.1.tgz#3d3c88de0f886842a60a789a98feb75091993f11"
+ integrity sha512-GT0jSqa7d7rfkopetK0gbJR68DChLyiU3+avtLkp2lPCiokPS226KshmvJbAwVeNrEgts4afgQzAkxx26/se/Q==
dependencies:
"@babel/core" "^7.12.10"
"@babel/plugin-transform-template-literals" "^7.12.1"
"@babel/preset-react" "^7.12.10"
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/builder-webpack4" "6.2.0-rc.10"
- "@storybook/core-client" "6.2.0-rc.10"
- "@storybook/core-common" "6.2.0-rc.10"
- "@storybook/node-logger" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/builder-webpack4" "6.2.1"
+ "@storybook/core-client" "6.2.1"
+ "@storybook/core-common" "6.2.1"
+ "@storybook/node-logger" "6.2.1"
"@storybook/semver" "^7.3.2"
- "@storybook/theming" "6.2.0-rc.10"
- "@storybook/ui" "6.2.0-rc.10"
+ "@storybook/theming" "6.2.1"
+ "@storybook/ui" "6.2.1"
"@types/node" "^14.0.10"
"@types/node-fetch" "^2.5.7"
"@types/pretty-hrtime" "^1.0.0"
@@ -2570,13 +2659,13 @@
webpack-dev-middleware "^3.7.3"
webpack-virtual-modules "^0.2.2"
-"@storybook/core@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.2.0-rc.10.tgz#b044006341ce14cf7aab73e6fbdb457514639e6b"
- integrity sha512-TzwyZOt2led/9pf3hOp6IoOEoa+w2YU0dtOzCiFx9PPx7Ib3ps2tGKAyhtfzw0n/5ph3KEUoVBItmHNSFdSuxA==
+"@storybook/core@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/core/-/core-6.2.1.tgz#846f25edfb4cb6ef7a7370a39b5c461bf72102e5"
+ integrity sha512-Q13btg+NggY1BoUHIAmNx6P+C3bPwV6LM+nEfNcTO4emfjCrF8j7vIpN+aRzMl+PGSU/QO+fteqp/+S9jc8HBw==
dependencies:
- "@storybook/core-client" "6.2.0-rc.10"
- "@storybook/core-server" "6.2.0-rc.10"
+ "@storybook/core-client" "6.2.1"
+ "@storybook/core-server" "6.2.1"
"@storybook/csf@0.0.1":
version "0.0.1"
@@ -2585,10 +2674,10 @@
dependencies:
lodash "^4.17.15"
-"@storybook/node-logger@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.2.0-rc.10.tgz#6a2d5893c0b0630f736a5d2359d497322aa43479"
- integrity sha512-Zju38apfSyqjI1r7/HQqKDCSDnlbxEimtwoNxp0sn1l8GxZTH6dqtedefGEiwY7sNxCDuIgyXMRPEVUN7zuNug==
+"@storybook/node-logger@6.2.1", "@storybook/node-logger@^6.1.14":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.2.1.tgz#80afe89a3f85e2329c46d530f4690a13d30c7c29"
+ integrity sha512-PuyLORwbvs6uB6dzbY+Uvs/LUW94yD5sbarNGIg866lIzhNT6nZOCRkiEgo7+RD1/mcMz0Lho0kh5Hob2Y5mqQ==
dependencies:
"@types/npmlog" "^4.1.2"
chalk "^4.1.0"
@@ -2596,36 +2685,25 @@
npmlog "^4.1.2"
pretty-hrtime "^1.0.3"
-"@storybook/node-logger@^6.1.14":
- version "6.1.21"
- resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-6.1.21.tgz#bcf882209697acfe4fc60bc224676400bce260ed"
- integrity sha512-wQZZw4n1PG3kGOsczWCBC6+8RagYkrGYDqsVOpUcs5shGbPg5beCXDuzP4nxz2IlsoP9ZtTSaX741H791OIOjA==
- dependencies:
- "@types/npmlog" "^4.1.2"
- chalk "^4.0.0"
- core-js "^3.0.1"
- npmlog "^4.1.2"
- pretty-hrtime "^1.0.3"
-
-"@storybook/postinstall@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.2.0-rc.10.tgz#fc15f2c866e002391c683bcaee245d2586401691"
- integrity sha512-Svl4kuxRpLZLSZMoTrb0iWbtzAiVBdMGESjazCkUNEq7j25QFlRSGh6pUxv5EDHOYGW4Ii1rnswM58z4D4xYTg==
+"@storybook/postinstall@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-6.2.1.tgz#71c276cf658ab42b1fd67f965330941c6e47786a"
+ integrity sha512-NpATQ8qt09/+0FdWpUJ/G/R0SKO9yPcMrOSoub4Knmhr+aBgIoGfQxDl0pwEzvHw6Ookt0eM4k++7wNO8hCa4A==
dependencies:
core-js "^3.8.2"
"@storybook/react@^6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.2.0-rc.10.tgz#c0bcd92cd28f8ea1f8fb4e3117e917ba7b174ee2"
- integrity sha512-XhnKy5SnJg/5+V11rPao6y+xds5BoMUvsWmXnCxeu5zjmPyVYWPkp7rZhWiASngHhv92LVOPXbvw60L2pqLMmA==
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/react/-/react-6.2.1.tgz#d07d5dc3b48823527a6a632189008d4a2c9399be"
+ integrity sha512-k9muo4BqItVnCNx45uQAUP9gQOtEBMQljrUD+UesTxZ11gfWPE4QeUHryJJUsA3ojKtUN8VAQawwHp/5cSFDFw==
dependencies:
"@babel/preset-flow" "^7.12.1"
"@babel/preset-react" "^7.12.10"
"@pmmmwh/react-refresh-webpack-plugin" "^0.4.3"
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/core" "6.2.0-rc.10"
- "@storybook/core-common" "6.2.0-rc.10"
- "@storybook/node-logger" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/core" "6.2.1"
+ "@storybook/core-common" "6.2.1"
+ "@storybook/node-logger" "6.2.1"
"@storybook/semver" "^7.3.2"
"@types/webpack-env" "^1.16.0"
babel-plugin-add-react-displayname "^0.0.5"
@@ -2643,13 +2721,13 @@
ts-dedent "^2.0.0"
webpack "4"
-"@storybook/router@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.2.0-rc.10.tgz#6e1496ee46353d830fde603cb3ea43f56ae01fb0"
- integrity sha512-G2T30gwlwVsvRk/oB8j/ex6DP2cxy2yRBNXok9vgl0r8WNFpiZyUKBXHsUPCD+skMchPaBgh/k/pKExdKgtqHQ==
+"@storybook/router@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/router/-/router-6.2.1.tgz#45a40a13c0cbae54ac4034e3d461d0e9a3f80bcb"
+ integrity sha512-gG4c7NB/z/8zaJjkMFPA4jzENFPg+eywzHK6deuja3iXiEHLd/O0nqwQh1jzxOXLNMWjrCrGm/TTOrz8LbO5Lw==
dependencies:
"@reach/router" "^1.3.4"
- "@storybook/client-logger" "6.2.0-rc.10"
+ "@storybook/client-logger" "6.2.1"
"@types/reach__router" "^1.3.7"
core-js "^3.8.2"
fast-deep-equal "^3.1.3"
@@ -2667,13 +2745,13 @@
core-js "^3.6.5"
find-up "^4.1.0"
-"@storybook/source-loader@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.2.0-rc.10.tgz#4580159beaf26b4ae2e40f326f3225da02fa2a3d"
- integrity sha512-0fbj4VszlGof/A+AzO6knOU4eiaPCpX1bBMfbUPmH0FroiOtU8M6oUZPBpbtPzIH0QkxO9X6X4DDxweZQa6fPA==
+"@storybook/source-loader@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/source-loader/-/source-loader-6.2.1.tgz#547d9dd0590987ba427a2e0fb8bbbf5567165b88"
+ integrity sha512-amK+jAi1UqU6T2QMUnx7o1lMBA0ex2FsoPtzMQR3n758VDw22pd3Fs9GiCsRLAYeTLH9dVoH8FwB3MstpAEhuw==
dependencies:
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
"@storybook/csf" "0.0.1"
core-js "^3.8.2"
estraverse "^5.2.0"
@@ -2683,15 +2761,15 @@
prettier "~2.2.1"
regenerator-runtime "^0.13.7"
-"@storybook/theming@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.2.0-rc.10.tgz#bce4e1f4a3fde12a7da22f7c8822dc009ff7ae20"
- integrity sha512-kUYbQPsYGuEKNHM8XjruufXUStaMuy6KjTPt/Ohi3NojcybOsStJ8ZqtJh8EPBBb9MPaTPJ4L7scXKcuUKZ6yQ==
+"@storybook/theming@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-6.2.1.tgz#ad0ebc0a22560b775eca691b5e72c9db235eaf07"
+ integrity sha512-4sX3Qy6mgYlWpJcJx3AmMfzXhj/o/lVpux9MdhNDRFkDU958k7NhoSdny3ahg59C9t7yQ4chakZynKLgnVkFTA==
dependencies:
"@emotion/core" "^10.1.1"
"@emotion/is-prop-valid" "^0.8.6"
"@emotion/styled" "^10.0.27"
- "@storybook/client-logger" "6.2.0-rc.10"
+ "@storybook/client-logger" "6.2.1"
core-js "^3.8.2"
deep-object-diff "^1.1.0"
emotion-theming "^10.0.27"
@@ -2701,21 +2779,21 @@
resolve-from "^5.0.0"
ts-dedent "^2.0.0"
-"@storybook/ui@6.2.0-rc.10":
- version "6.2.0-rc.10"
- resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.2.0-rc.10.tgz#7716aabaf5ff1cdc61d9a8df7a174d922bb91bd7"
- integrity sha512-4pmk3EScIleOhJAGxf2JXULQAoETzwW66sUh0E0Ie449qHIpkK+qbxr3VxtwA+E14KksxMvlR74sr7dt44jmQw==
+"@storybook/ui@6.2.1":
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/@storybook/ui/-/ui-6.2.1.tgz#ea2567dc14240a67b14a9bec9bc672c01d6e1430"
+ integrity sha512-RUK1feL5XWftXzOxuKvsv8Y6fsznQpOuROgTFhzAJtusyhcqOKMr74BOLX5Ldkb6Le0OVA65nGwxannhzG2dMA==
dependencies:
"@emotion/core" "^10.1.1"
- "@storybook/addons" "6.2.0-rc.10"
- "@storybook/api" "6.2.0-rc.10"
- "@storybook/channels" "6.2.0-rc.10"
- "@storybook/client-logger" "6.2.0-rc.10"
- "@storybook/components" "6.2.0-rc.10"
- "@storybook/core-events" "6.2.0-rc.10"
- "@storybook/router" "6.2.0-rc.10"
+ "@storybook/addons" "6.2.1"
+ "@storybook/api" "6.2.1"
+ "@storybook/channels" "6.2.1"
+ "@storybook/client-logger" "6.2.1"
+ "@storybook/components" "6.2.1"
+ "@storybook/core-events" "6.2.1"
+ "@storybook/router" "6.2.1"
"@storybook/semver" "^7.3.2"
- "@storybook/theming" "6.2.0-rc.10"
+ "@storybook/theming" "6.2.1"
"@types/markdown-to-jsx" "^6.11.3"
copy-to-clipboard "^3.3.1"
core-js "^3.8.2"
@@ -2736,6 +2814,18 @@
resolve-from "^5.0.0"
store2 "^2.12.0"
+"@stripe/react-stripe-js@^1.4.0":
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/@stripe/react-stripe-js/-/react-stripe-js-1.4.0.tgz#a67e72202297fc409dc2c8c4f3fb98e0b61fa06d"
+ integrity sha512-Pz5QmG8PgJ3pi8gOWxlngk+ns63p2L1Ds192fn55ykZNRKfGz3G6sfssUVThHn/NAt2Hp1eCEsy/hvlKnXJI6g==
+ dependencies:
+ prop-types "^15.7.2"
+
+"@stripe/stripe-js@^1.13.0":
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.13.2.tgz#bb2f561085b5dd091355df871d432b8e1fd467f6"
+ integrity sha512-fycUk7ECukNc31lD5apcrUgdRC1BfiIacs+CpacoCjOgo3ablolnWCvDQWMmVWtODYa8bBv2dlBla+Edc5OvZg==
+
"@svgr/babel-plugin-add-jsx-attribute@^5.4.0":
version "5.4.0"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
@@ -2853,11 +2943,33 @@
dependencies:
defer-to-connect "^2.0.0"
+"@tailwindcss/forms@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.2.1.tgz#3244b185854fae1a7cbe8d2456314d8b2d98cf43"
+ integrity sha512-czfvEdY+J2Ogfd6RUSr/ZSUmDxTujr34M++YLnp2cCPC3oJ4kFvFMaRXA6cEXKw7F1hJuapdjXRjsXIEXGgORg==
+ dependencies:
+ mini-svg-data-uri "^1.2.3"
+
+"@tailwindcss/typography@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.4.0.tgz#b80974ad6af93df7b06e1981cb4d79698b6ad5c7"
+ integrity sha512-3BfOYT5MYNEq81Ism3L2qu/HRP2Q5vWqZtZRQqQrthHuaTK9qpuPfbMT5WATjAM5J1OePKBaI5pLoX4S1JGNMQ==
+ dependencies:
+ lodash.castarray "^4.4.0"
+ lodash.isplainobject "^4.0.6"
+ lodash.merge "^4.6.2"
+ lodash.uniq "^4.5.0"
+
"@tokenizer/token@^0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3"
integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==
+"@tootallnate/once@1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
+ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
"@trysound/sax@0.1.1":
version "0.1.1"
resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669"
@@ -2880,6 +2992,14 @@
resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
+"@types/body-parser@*":
+ version "1.19.0"
+ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f"
+ integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
"@types/braces@*":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/braces/-/braces-3.0.0.tgz#7da1c0d44ff1c7eb660a36ec078ea61ba7eb42cb"
@@ -2922,6 +3042,13 @@
resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6"
integrity sha1-zR6FU2M60xhcPy8jns/10mQ+krY=
+"@types/connect@*":
+ version "3.4.34"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.34.tgz#170a40223a6d666006d93ca128af2beb1d9b1901"
+ integrity sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==
+ dependencies:
+ "@types/node" "*"
+
"@types/cookie@^0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.0.tgz#14f854c0f93d326e39da6e3b6f34f7d37513d108"
@@ -2951,9 +3078,9 @@
"@types/estree" "*"
"@types/eslint@*", "@types/eslint@^7.2.6":
- version "7.2.7"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.7.tgz#f7ef1cf0dceab0ae6f9a976a0a9af14ab1baca26"
- integrity sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==
+ version "7.2.8"
+ resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.8.tgz#45cd802380fcc352e5680e1781d43c50916f12ee"
+ integrity sha512-RTKvBsfz0T8CKOGZMfuluDNyMFHnu5lvNr4hWEsQeHXH6FcmIDIozOyWMh36nLGMwVd5UFNXC2xztA8lln22MQ==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
@@ -2973,6 +3100,40 @@
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
+"@types/express-jwt@0.0.42":
+ version "0.0.42"
+ resolved "https://registry.yarnpkg.com/@types/express-jwt/-/express-jwt-0.0.42.tgz#4f04e1fadf9d18725950dc041808a4a4adf7f5ae"
+ integrity sha512-WszgUddvM1t5dPpJ3LhWNH8kfNN8GPIBrAGxgIYXVCEGx6Bx4A036aAuf/r5WH9DIEdlmp7gHOYvSM6U87B0ag==
+ dependencies:
+ "@types/express" "*"
+ "@types/express-unless" "*"
+
+"@types/express-serve-static-core@^4.17.18":
+ version "4.17.19"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.19.tgz#00acfc1632e729acac4f1530e9e16f6dd1508a1d"
+ integrity sha512-DJOSHzX7pCiSElWaGR8kCprwibCB/3yW6vcT8VG3P0SJjnv19gnWG/AZMfM60Xj/YJIp/YCaDHyvzsFVeniARA==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+
+"@types/express-unless@*":
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/@types/express-unless/-/express-unless-0.5.1.tgz#4f440b905e42bbf53382b8207bc337dc5ff9fd1f"
+ integrity sha512-5fuvg7C69lemNgl0+v+CUxDYWVPSfXHhJPst4yTLcqi4zKJpORCxnDrnnilk3k0DTq/WrAUdvXFs01+vUqUZHw==
+ dependencies:
+ "@types/express" "*"
+
+"@types/express@*":
+ version "4.17.11"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.11.tgz#debe3caa6f8e5fcda96b47bd54e2f40c4ee59545"
+ integrity sha512-no+R6rW60JEc59977wIxreQVsIEOAYwgCqldrA/vkpCnbD7MqTefO97lmoBe4WE0F156bC4uLSP1XHDOySnChg==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^4.17.18"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
"@types/get-port@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-3.2.0.tgz#f9e0a11443cc21336470185eae3dfba4495d29bc"
@@ -3085,7 +3246,7 @@
dependencies:
"@types/node" "*"
-"@types/lodash@^4.14.92":
+"@types/lodash@^4.14.165", "@types/lodash@^4.14.92":
version "4.14.168"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
integrity sha512-oVfRvqHV/V6D1yifJbVRU3TMp8OT6o6BG+U9MkwuJ3U8/CsDHvalRpsxBqivn71ztOFZBTfJMvETbqHiaNSj7Q==
@@ -3097,7 +3258,7 @@
dependencies:
"@types/react" "*"
-"@types/mdast@^3.0.0":
+"@types/mdast@^3.0.0", "@types/mdast@^3.0.3":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==
@@ -3111,6 +3272,11 @@
dependencies:
"@types/braces" "*"
+"@types/mime@^1":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
+ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+
"@types/minimatch@*":
version "3.0.4"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
@@ -3136,7 +3302,7 @@
"@types/node" "*"
form-data "^3.0.0"
-"@types/node@*", "@types/node@^14.0.10", "@types/node@^14.14.10":
+"@types/node@*", "@types/node@>=8.1.0", "@types/node@^14.0.10", "@types/node@^14.14.10", "@types/node@^14.14.30":
version "14.14.37"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e"
integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==
@@ -3191,11 +3357,16 @@
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
-"@types/qs@^6.9.5":
+"@types/qs@*", "@types/qs@^6.9.5":
version "6.9.6"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1"
integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==
+"@types/range-parser@*":
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c"
+ integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==
+
"@types/reach__router@^1.3.7":
version "1.3.7"
resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.7.tgz#de8ab374259ae7f7499fc1373b9697a5f3cd6428"
@@ -3247,6 +3418,14 @@
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
+"@types/serve-static@*":
+ version "1.13.9"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e"
+ integrity sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==
+ dependencies:
+ "@types/mime" "^1"
+ "@types/node" "*"
+
"@types/sinonjs__fake-timers@^6.0.1":
version "6.0.2"
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae"
@@ -3284,6 +3463,22 @@
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
+"@types/vfile-message@*":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5"
+ integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw==
+ dependencies:
+ vfile-message "*"
+
+"@types/vfile@^3.0.0":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9"
+ integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw==
+ dependencies:
+ "@types/node" "*"
+ "@types/unist" "*"
+ "@types/vfile-message" "*"
+
"@types/webpack-env@^1.16.0":
version "1.16.0"
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.16.0.tgz#8c0a9435dfa7b3b1be76562f3070efb3f92637b4"
@@ -3335,12 +3530,12 @@
integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==
"@typescript-eslint/eslint-plugin@^4.15.2":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.19.0.tgz#56f8da9ee118fe9763af34d6a526967234f6a7f0"
- integrity sha512-CRQNQ0mC2Pa7VLwKFbrGVTArfdVDdefS+gTw0oC98vSI98IX5A8EVH4BzJ2FOB0YlCmm8Im36Elad/Jgtvveaw==
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.20.0.tgz#9d8794bd99aad9153092ad13c96164e3082e9a92"
+ integrity sha512-sw+3HO5aehYqn5w177z2D82ZQlqHCwcKSMboueo7oE4KU9QiC0SAgfS/D4z9xXvpTc8Bt41Raa9fBR8T2tIhoQ==
dependencies:
- "@typescript-eslint/experimental-utils" "4.19.0"
- "@typescript-eslint/scope-manager" "4.19.0"
+ "@typescript-eslint/experimental-utils" "4.20.0"
+ "@typescript-eslint/scope-manager" "4.20.0"
debug "^4.1.1"
functional-red-black-tree "^1.0.1"
lodash "^4.17.15"
@@ -3348,60 +3543,60 @@
semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/experimental-utils@4.19.0":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.19.0.tgz#9ca379919906dc72cb0fcd817d6cb5aa2d2054c6"
- integrity sha512-9/23F1nnyzbHKuoTqFN1iXwN3bvOm/PRIXSBR3qFAYotK/0LveEOHr5JT1WZSzcD6BESl8kPOG3OoDRKO84bHA==
+"@typescript-eslint/experimental-utils@4.20.0":
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.20.0.tgz#a8ab2d7b61924f99042b7d77372996d5f41dc44b"
+ integrity sha512-sQNlf6rjLq2yB5lELl3gOE7OuoA/6IVXJUJ+Vs7emrQMva14CkOwyQwD7CW+TkmOJ4Q/YGmoDLmbfFrpGmbKng==
dependencies:
"@types/json-schema" "^7.0.3"
- "@typescript-eslint/scope-manager" "4.19.0"
- "@typescript-eslint/types" "4.19.0"
- "@typescript-eslint/typescript-estree" "4.19.0"
+ "@typescript-eslint/scope-manager" "4.20.0"
+ "@typescript-eslint/types" "4.20.0"
+ "@typescript-eslint/typescript-estree" "4.20.0"
eslint-scope "^5.0.0"
eslint-utils "^2.0.0"
"@typescript-eslint/parser@^4.15.2":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.19.0.tgz#4ae77513b39f164f1751f21f348d2e6cb2d11128"
- integrity sha512-/uabZjo2ZZhm66rdAu21HA8nQebl3lAIDcybUoOxoI7VbZBYavLIwtOOmykKCJy+Xq6Vw6ugkiwn8Js7D6wieA==
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.20.0.tgz#8dd403c8b4258b99194972d9799e201b8d083bdd"
+ integrity sha512-m6vDtgL9EABdjMtKVw5rr6DdeMCH3OA1vFb0dAyuZSa3e5yw1YRzlwFnm9knma9Lz6b2GPvoNSa8vOXrqsaglA==
dependencies:
- "@typescript-eslint/scope-manager" "4.19.0"
- "@typescript-eslint/types" "4.19.0"
- "@typescript-eslint/typescript-estree" "4.19.0"
+ "@typescript-eslint/scope-manager" "4.20.0"
+ "@typescript-eslint/types" "4.20.0"
+ "@typescript-eslint/typescript-estree" "4.20.0"
debug "^4.1.1"
-"@typescript-eslint/scope-manager@4.19.0":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.19.0.tgz#5e0b49eca4df7684205d957c9856f4e720717a4f"
- integrity sha512-GGy4Ba/hLXwJXygkXqMzduqOMc+Na6LrJTZXJWVhRrSuZeXmu8TAnniQVKgj8uTRKe4igO2ysYzH+Np879G75g==
+"@typescript-eslint/scope-manager@4.20.0":
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.20.0.tgz#953ecbf3b00845ece7be66246608be9d126d05ca"
+ integrity sha512-/zm6WR6iclD5HhGpcwl/GOYDTzrTHmvf8LLLkwKqqPKG6+KZt/CfSgPCiybshmck66M2L5fWSF/MKNuCwtKQSQ==
dependencies:
- "@typescript-eslint/types" "4.19.0"
- "@typescript-eslint/visitor-keys" "4.19.0"
+ "@typescript-eslint/types" "4.20.0"
+ "@typescript-eslint/visitor-keys" "4.20.0"
-"@typescript-eslint/types@4.19.0":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.19.0.tgz#5181d5d2afd02e5b8f149ebb37ffc8bd7b07a568"
- integrity sha512-A4iAlexVvd4IBsSTNxdvdepW0D4uR/fwxDrKUa+iEY9UWvGREu2ZyB8ylTENM1SH8F7bVC9ac9+si3LWNxcBuA==
+"@typescript-eslint/types@4.20.0":
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.20.0.tgz#c6cf5ef3c9b1c8f699a9bbdafb7a1da1ca781225"
+ integrity sha512-cYY+1PIjei1nk49JAPnH1VEnu7OYdWRdJhYI5wiKOUMhLTG1qsx5cQxCUTuwWCmQoyriadz3Ni8HZmGSofeC+w==
-"@typescript-eslint/typescript-estree@4.19.0":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.19.0.tgz#8a709ffa400284ab72df33376df085e2e2f61147"
- integrity sha512-3xqArJ/A62smaQYRv2ZFyTA+XxGGWmlDYrsfZG68zJeNbeqRScnhf81rUVa6QG4UgzHnXw5VnMT5cg75dQGDkA==
+"@typescript-eslint/typescript-estree@4.20.0":
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.20.0.tgz#8b3b08f85f18a8da5d88f65cb400f013e88ab7be"
+ integrity sha512-Knpp0reOd4ZsyoEJdW8i/sK3mtZ47Ls7ZHvD8WVABNx5Xnn7KhenMTRGegoyMTx6TiXlOVgMz9r0pDgXTEEIHA==
dependencies:
- "@typescript-eslint/types" "4.19.0"
- "@typescript-eslint/visitor-keys" "4.19.0"
+ "@typescript-eslint/types" "4.20.0"
+ "@typescript-eslint/visitor-keys" "4.20.0"
debug "^4.1.1"
globby "^11.0.1"
is-glob "^4.0.1"
semver "^7.3.2"
tsutils "^3.17.1"
-"@typescript-eslint/visitor-keys@4.19.0":
- version "4.19.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.19.0.tgz#cbea35109cbd9b26e597644556be4546465d8f7f"
- integrity sha512-aGPS6kz//j7XLSlgpzU2SeTqHPsmRYxFztj2vPuMMFJXZudpRSehE3WCV+BaxwZFvfAqMoSd86TEuM0PQ59E/A==
+"@typescript-eslint/visitor-keys@4.20.0":
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.20.0.tgz#1e84db034da13f208325e6bfc995c3b75f7dbd62"
+ integrity sha512-NXKRM3oOVQL8yNFDNCZuieRIwZ5UtjNLYtmMx2PacEAGmbaEYtGgVHUHVyZvU/0rYZcizdrWjDo+WBtRPSgq+A==
dependencies:
- "@typescript-eslint/types" "4.19.0"
+ "@typescript-eslint/types" "4.20.0"
eslint-visitor-keys "^2.0.0"
"@webassemblyjs/ast@1.11.0":
@@ -3745,6 +3940,13 @@ adjust-sourcemap-loader@3.0.0:
loader-utils "^2.0.0"
regex-parser "^2.2.11"
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
aggregate-error@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
@@ -3796,10 +3998,10 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^7.0.2:
- version "7.2.4"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.2.4.tgz#8e239d4d56cf884bccca8cca362f508446dc160f"
- integrity sha512-nBeQgg/ZZA3u3SYxyaDvpvDtgZ/EZPF547ARgZBrG9Bhu1vKDwAIjtIf+sDtJUKa2zOcEbmRLBRSyMraS/Oy1A==
+ajv@^8.0.1:
+ version "8.0.3"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.0.3.tgz#81f1b07003b329f000b7912e59a24f52392867b6"
+ integrity sha512-Df6NAivu9KpZw+q8ySijAgLvr1mUA5ihkRvCLCxpdYR21ann5yIuN+PpFxmweSj7i3yjJ0x5LN5KVs0RRzskAQ==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@@ -3816,6 +4018,11 @@ amdefine@>=0.0.4:
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=
+anser@1.4.9:
+ version "1.4.9"
+ resolved "https://registry.yarnpkg.com/anser/-/anser-1.4.9.tgz#1f85423a5dcf8da4631a341665ff675b96845760"
+ integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==
+
anser@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/anser/-/anser-2.0.1.tgz#8d9069291fee18306ffaf2e364a690dcc8ed78ad"
@@ -4002,6 +4209,11 @@ arr-union@^3.1.0:
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+array-filter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83"
+ integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=
+
array-find-index@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
@@ -4033,6 +4245,11 @@ array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.2, array-inclu
get-intrinsic "^1.1.1"
is-string "^1.0.5"
+array-iterate@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7"
+ integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA==
+
array-union@^1.0.1, array-union@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
@@ -4117,6 +4334,16 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
+assert@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32"
+ integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==
+ dependencies:
+ es6-object-assign "^1.1.0"
+ is-nan "^1.2.1"
+ object-is "^1.0.1"
+ util "^0.12.0"
+
assert@^1.1.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
@@ -4135,6 +4362,11 @@ ast-types-flow@^0.0.7:
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad"
integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0=
+ast-types@0.13.2:
+ version "0.13.2"
+ resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48"
+ integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==
+
ast-types@^0.14.2:
version "0.14.2"
resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.14.2.tgz#600b882df8583e3cd4f2df5fa20fa83759d4bdfd"
@@ -4174,7 +4406,7 @@ async-retry-ng@^2.0.1:
resolved "https://registry.yarnpkg.com/async-retry-ng/-/async-retry-ng-2.0.1.tgz#f5285ec1c52654a2ba6a505d0c18b1eadfaebd41"
integrity sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw==
-async@1.5.2:
+async@1.5.2, async@^1.5.0:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
@@ -4236,6 +4468,13 @@ autoprefixer@^9.8.6:
postcss "^7.0.32"
postcss-value-parser "^4.1.0"
+available-typed-arrays@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5"
+ integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ==
+ dependencies:
+ array-filter "^1.0.0"
+
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
@@ -4258,6 +4497,13 @@ axios@0.21.1, axios@^0.21.0, axios@^0.21.1:
dependencies:
follow-redirects "^1.10.0"
+axios@^0.19.2:
+ version "0.19.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
+ integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
+ dependencies:
+ follow-redirects "1.5.10"
+
axobject-query@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
@@ -4427,12 +4673,12 @@ babel-plugin-react-svg@^3.0.3:
resolved "https://registry.yarnpkg.com/babel-plugin-react-svg/-/babel-plugin-react-svg-3.0.3.tgz#7da46a0bd8319f49ac85523d259f145ce5d78321"
integrity sha512-Pst1RWjUIiV0Ykv1ODSeceCBsFOP2Y4dusjq7/XkjuzJdvS9CjpkPMUIoO4MLlvp5PiLCeMlsOC7faEUA0gm3Q==
-babel-plugin-remove-graphql-queries@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-3.1.0.tgz#03e80d40da51c0240e0e9296e7788c25cca284c0"
- integrity sha512-SRQLdxRg74aO8YWi/asxE31qn9bzPzSk28mJ6tHoT7U3Y2VPWhTVCLRXALLlRZEYFyLI4RJKSMT6LdKzN9a79Q==
+babel-plugin-remove-graphql-queries@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-3.2.0.tgz#63e044ee1d299679a9b8180f6b111a3769b7a79d"
+ integrity sha512-cjH42CKC9NjRLZbnPDUucNhnZ2Rq6gfUSLBP2UGfz9KYk/Fi+lzAVU3W+0KUV2DntyoLuV86YwC4mI2QsS3yag==
-babel-plugin-syntax-jsx@^6.18.0:
+babel-plugin-syntax-jsx@6.18.0, babel-plugin-syntax-jsx@^6.18.0:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
@@ -4455,10 +4701,10 @@ babel-plugin-transform-react-remove-prop-types@^0.4.24:
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a"
integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
-babel-preset-gatsby@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-1.1.0.tgz#53176fd26bb798d91b0891d9dffcde5b1a8558cd"
- integrity sha512-GM21xzM1mlUvCmA4pjJxyG3Q2abcrIn1wfGgCBUfw3mwHuy/RibF0L9QzpZUcQTRWy82oAjJteA0qaTLFhOD+g==
+babel-preset-gatsby@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-1.2.0.tgz#2f90fc9094ba5710d22cbe736ed62fefd292cf7a"
+ integrity sha512-ChqM9ahcr9ea/wO+rS3y8z9IRlX9yodxq3c+V6NmYCnZkI/SwB6qp5WEC3FCu3U4XUOrvhAQD+PK2N8r1C4lHA==
dependencies:
"@babel/plugin-proposal-class-properties" "^7.12.1"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
@@ -4473,8 +4719,8 @@ babel-preset-gatsby@^1.1.0:
babel-plugin-dynamic-import-node "^2.3.3"
babel-plugin-macros "^2.8.0"
babel-plugin-transform-react-remove-prop-types "^0.4.24"
- gatsby-core-utils "^2.1.0"
- gatsby-legacy-polyfills "^1.1.0"
+ gatsby-core-utils "^2.2.0"
+ gatsby-legacy-polyfills "^1.2.0"
babel-runtime@^6.26.0:
version "6.26.0"
@@ -4505,9 +4751,11 @@ balanced-match@^1.0.0:
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
base32-encode@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.1.1.tgz#d022d86aca0002a751bbe1bf20eb4a9b1cef4e95"
- integrity sha512-eqa0BeGghj3guezlasdHJhr3+J5ZbbQvxeprkcDMbRQrjlqOT832IUDT4Al4ofAwekFYMqkkM9KMUHs9Cu0HKA==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base32-encode/-/base32-encode-1.2.0.tgz#e150573a5e431af0a998e32bdfde7045725ca453"
+ integrity sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A==
+ dependencies:
+ to-data-view "^1.1.0"
base64-arraybuffer@0.1.4:
version "0.1.4"
@@ -4601,6 +4849,11 @@ big.js@^5.2.2:
resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+bignumber.js@^9.0.0:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5"
+ integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==
+
bin-build@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bin-build/-/bin-build-3.0.0.tgz#c5780a25a8a9f966d8244217e6c1f5082a143861"
@@ -4746,6 +4999,11 @@ boolbase@^1.0.0, boolbase@~1.0.0:
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+boolean@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.3.tgz#0fee0c9813b66bef25a8a6a904bb46736d05f024"
+ integrity sha512-EqrTKXQX6Z3A2nRmMEIlAIfjQOgFnVO2nqZGpbcsPnYGWBwpFqzlrozU1dy+S2iqfYDLh26ef4KrgTxu9xQrxA==
+
boxen@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64"
@@ -4864,7 +5122,7 @@ browserify-sign@^4.0.0:
readable-stream "^3.6.0"
safe-buffer "^5.2.0"
-browserify-zlib@^0.2.0:
+browserify-zlib@0.2.0, browserify-zlib@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
@@ -4881,6 +5139,17 @@ browserslist@4.14.2:
escalade "^3.0.2"
node-releases "^1.1.61"
+browserslist@4.16.1:
+ version "4.16.1"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.1.tgz#bf757a2da376b3447b800a16f0f1c96358138766"
+ integrity sha512-UXhDrwqsNcpTYJBTZsbGATDxZbiVDsx6UjpmRUmtnP10pr8wAYr5LgFoEFw9ixriQH2mv/NX2SfGzE/o8GndLA==
+ dependencies:
+ caniuse-lite "^1.0.30001173"
+ colorette "^1.2.1"
+ electron-to-chromium "^1.3.634"
+ escalade "^3.1.1"
+ node-releases "^1.1.69"
+
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.14.5, browserslist@^4.16.3:
version "4.16.3"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
@@ -4936,6 +5205,11 @@ buffer-crc32@~0.2.3:
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+buffer-equal-constant-time@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
+ integrity sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=
+
buffer-equal@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
@@ -4961,6 +5235,14 @@ buffer-xor@^1.0.3:
resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+buffer@5.6.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786"
+ integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+
buffer@^4.3.0:
version "4.9.2"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
@@ -5228,10 +5510,10 @@ caniuse-api@^3.0.0:
lodash.memoize "^4.1.2"
lodash.uniq "^4.5.0"
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196:
- version "1.0.30001204"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz#256c85709a348ec4d175e847a3b515c66e79f2aa"
- integrity sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001173, caniuse-lite@^1.0.30001179, caniuse-lite@^1.0.30001181, caniuse-lite@^1.0.30001196:
+ version "1.0.30001205"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001205.tgz#d79bf6a6fb13196b4bb46e5143a22ca0242e0ef8"
+ integrity sha512-TL1GrS5V6LElbitPazidkBMD9sa448bQDDLrumDqaggmKFcuU2JW1wTOHJPukAcOMtEmLcmDJEzfRrf+GjM0Og==
capture-exit@^2.0.0:
version "2.0.0"
@@ -5260,7 +5542,7 @@ caw@^2.0.0, caw@^2.0.1:
tunnel-agent "^0.6.0"
url-to-options "^1.0.1"
-ccount@^1.0.0:
+ccount@^1.0.0, ccount@^1.0.3:
version "1.1.0"
resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
@@ -5274,6 +5556,14 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
+chalk@4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.0.0.tgz#6e98081ed2d17faab615eb52ac66ec1fe6209e72"
+ integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -5293,7 +5583,7 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0, chalk@^4.0.0, chalk@^4.1.0:
+chalk@^4.0.0, chalk@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a"
integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==
@@ -5355,6 +5645,21 @@ cheerio@^1.0.0-rc.3:
parse5 "^6.0.0"
parse5-htmlparser2-tree-adapter "^6.0.0"
+chokidar@3.5.1, chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.4.3, chokidar@^3.5.1:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
+ integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
+ dependencies:
+ anymatch "~3.1.1"
+ braces "~3.0.2"
+ glob-parent "~5.1.0"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.5.0"
+ optionalDependencies:
+ fsevents "~2.3.1"
+
chokidar@^2.1.8:
version "2.1.8"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
@@ -5374,21 +5679,6 @@ chokidar@^2.1.8:
optionalDependencies:
fsevents "^1.2.7"
-chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.4.3, chokidar@^3.5.1:
- version "3.5.1"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
- integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
- dependencies:
- anymatch "~3.1.1"
- braces "~3.0.2"
- glob-parent "~5.1.0"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.5.0"
- optionalDependencies:
- fsevents "~2.3.1"
-
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
@@ -5429,11 +5719,16 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-classnames@2.2.6, classnames@^2.2.5, classnames@^2.2.6:
+classnames@2.2.6:
version "2.2.6"
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+classnames@^2.2.5, classnames@^2.2.6:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.0.tgz#19524334bad47ccd99793936b67f9be0860fe835"
+ integrity sha512-UUf/S3eeczXBjHPpSnrZ1ZyxH3KmLW8nVYFUWIZA/dixYMIQr7l94yYKxaAkmPk7HO9dlT6gFqAPZC02tTdfQw==
+
clean-css@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
@@ -5583,7 +5878,7 @@ code-point-at@^1.0.0:
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
-collapse-white-space@^1.0.2:
+collapse-white-space@^1.0.0, collapse-white-space@^1.0.2:
version "1.0.6"
resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
@@ -5653,7 +5948,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-comma-separated-tokens@^1.0.0:
+comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1:
version "1.0.8"
resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea"
integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==
@@ -5800,7 +6095,7 @@ console-stream@^0.1.1:
resolved "https://registry.yarnpkg.com/console-stream/-/console-stream-0.1.1.tgz#a095fe07b20465955f2fafd28b5d72bccd949d44"
integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=
-constants-browserify@^1.0.0:
+constants-browserify@1.0.0, constants-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
@@ -5823,9 +6118,9 @@ content-type@^1.0.4, content-type@~1.0.4:
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
contentful-management@^7.5.1:
- version "7.13.0"
- resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-7.13.0.tgz#b44286d01b48e705eedbb767878ecf41cf8b2f10"
- integrity sha512-Bn4okEcfDws0/nMnKWKk6TXWbJtR0qSq1lnaQIAxcXQvkKnqq+ydsHhebkijmrVw84DI4lZO5Q9n41lsaLLDog==
+ version "7.13.1"
+ resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-7.13.1.tgz#f37756abfc49a8d05a7536f3c13f2effa03da7b5"
+ integrity sha512-qiAtCTCFZaheGOl28B8Kd311AJqqUgYr4SPYQz7Ilb+Mf92KeEgCvrP56f3AbTQqLUCIpKMzvb3ghfjseap82A==
dependencies:
axios "^0.21.0"
contentful-sdk-core "^6.7.0"
@@ -5929,27 +6224,27 @@ core-js-compat@3.9.0:
semver "7.0.0"
core-js-compat@^3.8.1, core-js-compat@^3.9.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455"
- integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.10.0.tgz#3600dc72869673c110215ee7a005a8609dea0fe1"
+ integrity sha512-9yVewub2MXNYyGvuLnMHcN1k9RkvB7/ofktpeKTIaASyB88YYqGzUnu0ywMMhJrDHOMiTjSHWGzR+i7Wb9Z1kQ==
dependencies:
browserslist "^4.16.3"
semver "7.0.0"
core-js-pure@^3.0.0, core-js-pure@^3.8.2:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5"
- integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A==
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.10.0.tgz#dab9d6b141779b622b40567e7a536d2276646c15"
+ integrity sha512-CC582enhrFZStO4F8lGI7QL3SYx7/AIRc+IdSi3btrQGrVsTawo5K/crmKbRrQ+MOMhNX4v+PATn0k2NN6wI7A==
core-js@^2.4.0:
version "2.6.12"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
-core-js@^3.0.1, core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.9.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae"
- integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==
+core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2, core-js@^3.9.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.10.0.tgz#9a020547c8b6879f929306949e31496bbe2ae9b3"
+ integrity sha512-MQx/7TLgmmDVamSyfE+O+5BHvG1aUGj/gHhLn1wVtm2B5u1eVIPvh7vkfjwWKNCjrTJB8+He99IntSQ1qP+vYQ==
core-util-is@1.0.2, core-util-is@~1.0.0:
version "1.0.2"
@@ -6041,10 +6336,10 @@ create-ecdh@^4.0.0:
bn.js "^4.1.0"
elliptic "^6.5.3"
-create-gatsby@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-1.1.0.tgz#91a381886d5127d1f0c7ecf52eaf6fd2e1b9b169"
- integrity sha512-AM9JNlbIOkTinGNiG7J8AnCCykZxJfVENlv1vF7hS3RqGsKeZlv4PADTLCdkeIUhaLcjEiEVv7HbyfK8dA2eoA==
+create-gatsby@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-1.2.0.tgz#c3ff032cd76a16c8f7d9a10cfb960eea9acfe022"
+ integrity sha512-CXvs1wxGqU1m8PMGmcuJfi9x8koFZZu0JwQr+e7MNnUL33wQEnaLSdwFDBUT4cEqFVWXWAcGErBOZT7/XEgh7Q==
create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
version "1.2.0"
@@ -6118,7 +6413,7 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-crypto-browserify@^3.11.0, crypto-browserify@^3.12.0:
+crypto-browserify@3.12.0, crypto-browserify@^3.11.0, crypto-browserify@^3.12.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
@@ -6198,7 +6493,7 @@ css-loader@^5.0.1:
schema-utils "^3.0.0"
semver "^7.3.4"
-css-minimizer-webpack-plugin@^1.2.0:
+css-minimizer-webpack-plugin@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-1.3.0.tgz#d867b4a54ca9920125b30263505e8cca72bc8cf1"
integrity sha512-jFa0Siplmfef4ndKglpVaduY47oHQwioAOEGK0f0vAX0s+vc+SmP6cCMoc+8Adau5600RnOEld5VVdC8CQau7w==
@@ -6239,6 +6534,11 @@ css-select@^3.1.2:
domutils "^2.4.3"
nth-check "^2.0.0"
+css-selector-parser@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.4.1.tgz#03f9cb8a81c3e5ab2c51684557d5aaf6d2569759"
+ integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==
+
css-tree@1.0.0-alpha.37:
version "1.0.0-alpha.37"
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
@@ -6248,9 +6548,9 @@ css-tree@1.0.0-alpha.37:
source-map "^0.6.1"
css-tree@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.2.tgz#9ae393b5dafd7dae8a622475caec78d3d8fbd7b5"
- integrity sha512-wCoWush5Aeo48GLhfHPbmvZs59Z+M7k5+B1xDnXbdWNcEF423DoFdqSWE0PM5aNk5nI5cp1q7ms36zGApY/sKQ==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
dependencies:
mdn-data "2.0.14"
source-map "^0.6.1"
@@ -6270,7 +6570,7 @@ css-what@^4.0.0:
resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233"
integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==
-css.escape@^1.5.1:
+css.escape@1.5.1, css.escape@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=
@@ -6331,6 +6631,22 @@ cssnano-preset-default@^4.0.7:
postcss-svgo "^4.0.2"
postcss-unique-selectors "^4.0.1"
+cssnano-preset-simple@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-1.2.2.tgz#c631bf79ffec7fdfc4069e2f2da3ca67d99d8413"
+ integrity sha512-gtvrcRSGtP3hA/wS8mFVinFnQdEsEpm3v4I/s/KmNjpdWaThV/4E5EojAzFXxyT5OCSRPLlHR9iQexAqKHlhGQ==
+ dependencies:
+ caniuse-lite "^1.0.30001179"
+ postcss "^7.0.32"
+
+cssnano-simple@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-1.2.2.tgz#72c2c3970e67123c3b4130894a30dc1050267007"
+ integrity sha512-4slyYc1w4JhSbhVX5xi9G0aQ42JnRyPg+7l7cqoNyoIDzfWx40Rq3JQZnoAWDu60A4AvKVp9ln/YSUOdhDX68g==
+ dependencies:
+ cssnano-preset-simple "1.2.2"
+ postcss "^7.0.32"
+
cssnano-util-get-arguments@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
@@ -6465,6 +6781,11 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
+data-uri-to-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636"
+ integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==
+
dataloader@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f"
@@ -6480,7 +6801,7 @@ date-fns@^2.14.0:
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1"
integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg==
-dayjs@^1.9.3:
+dayjs@^1.10.4, dayjs@^1.9.3:
version "1.10.4"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
@@ -6492,6 +6813,13 @@ debug@2, debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, de
dependencies:
ms "2.0.0"
+debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@~4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
+ dependencies:
+ ms "2.1.2"
+
debug@4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
@@ -6499,6 +6827,13 @@ debug@4.3.2:
dependencies:
ms "2.1.2"
+debug@=3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
@@ -6506,13 +6841,6 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.1, debug@~4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
- integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
- dependencies:
- ms "2.1.2"
-
decamelize-keys@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
@@ -6644,7 +6972,12 @@ deep-object-diff@^1.1.0:
resolved "https://registry.yarnpkg.com/deep-object-diff/-/deep-object-diff-1.1.0.tgz#d6fabf476c2ed1751fc94d5ca693d2ed8c18bc5a"
integrity sha512-b+QLs5vHgS+IoSNcUE4n9HP2NwcHj7aqnJWsjPtuG75Rh5TOaGt0OjAYInh77d5T16V5cRDC+Pw/6ZZZiETBGw==
-deepmerge@^4.0, deepmerge@^4.0.0, deepmerge@^4.2.2:
+deepmerge@^2.1.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
+ integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
+
+deepmerge@^4.0.0, deepmerge@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
@@ -6748,6 +7081,11 @@ depd@~1.1.2:
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+dequal@2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.2.tgz#85ca22025e3a87e65ef75a7a437b35284a7e319d"
+ integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==
+
des.js@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
@@ -6761,7 +7099,7 @@ destroy@~1.0.4:
resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
-detab@2.0.4:
+detab@2.0.4, detab@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43"
integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==
@@ -6955,6 +7293,11 @@ dom-walk@^0.1.0:
resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==
+domain-browser@4.19.0:
+ version "4.19.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.19.0.tgz#1093e17c0a17dbd521182fe90d49ac1370054af1"
+ integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==
+
domain-browser@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
@@ -6977,6 +7320,13 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
+domhandler@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
+ integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
+ dependencies:
+ domelementtype "^2.0.1"
+
domhandler@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e"
@@ -6992,7 +7342,7 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
-domutils@^2.4.3, domutils@^2.4.4:
+domutils@^2.0.0, domutils@^2.4.3, domutils@^2.4.4:
version "2.5.0"
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.5.0.tgz#42f49cffdabb92ad243278b331fd761c1c2d3039"
integrity sha512-Ho16rzNMOFk2fPwChGh3D2D9OEHAfG19HgmRR2l+WLSsIstNsAYBzePH412bL0y5T44ejABIVfTHQ8nqi/tBCg==
@@ -7081,14 +7431,14 @@ download@^7.1.0:
pify "^3.0.0"
downshift@^6.0.15:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.1.tgz#3c8f5a64cc678e1b45a87b80647ea5351af13e5e"
- integrity sha512-ch8Sh/j7gVqQd7Kcv3A5TkGfldmxmlQrRPZJYWEhzh24+h7WA4vXssuhcGNJrD8YPJlZYQGHcaX8BNhS0IcOvg==
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/downshift/-/downshift-6.1.2.tgz#99d9a03d4da4bf369df766effc3b70f7e789950e"
+ integrity sha512-WnPoQ6miic4+uEzPEfqgeen0t5YREOUabMopU/Juo/UYDMZl0ZACkO6ykWCRg48dlEUmEt6zfaJlj1x7kEy78g==
dependencies:
- "@babel/runtime" "^7.12.5"
+ "@babel/runtime" "^7.13.10"
compute-scroll-into-view "^1.0.17"
prop-types "^15.7.2"
- react-is "^17.0.1"
+ react-is "^17.0.2"
duplexer3@^0.1.4:
version "0.1.4"
@@ -7118,15 +7468,22 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
+ecdsa-sig-formatter@1.0.11:
+ version "1.0.11"
+ resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf"
+ integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==
+ dependencies:
+ safe-buffer "^5.0.1"
+
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
-electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.649:
- version "1.3.701"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.701.tgz#5e796ed7ce88cd77bc7bf831cf311ef6b067c389"
- integrity sha512-Zd9ofdIMYHYhG1gvnejQDvC/kqSeXQvtXF0yRURGxgwGqDZm9F9Fm3dYFnm5gyuA7xpXfBlzVLN1sz0FjxpKfw==
+electron-to-chromium@^1.3.564, electron-to-chromium@^1.3.634, electron-to-chromium@^1.3.649:
+ version "1.3.704"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.704.tgz#894205a237cbe0097d63da8f6d19e605dd13ab51"
+ integrity sha512-6cz0jvawlUe4h5AbfQWxPzb+8LzVyswGAWiGc32EJEmfj39HTQyNPkLXirc7+L4x5I6RgRkzua8Ryu5QZqc8cA==
elegant-spinner@^1.0.1:
version "1.0.1"
@@ -7197,6 +7554,13 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+encoding@0.1.13:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9"
+ integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==
+ dependencies:
+ iconv-lite "^0.6.2"
+
end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
@@ -7214,9 +7578,9 @@ endent@^2.0.1:
objectorarray "^1.0.4"
engine.io-client@~4.1.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.1.2.tgz#823b4f005360321c41445fc23ce8ee028ef2e36b"
- integrity sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ==
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.1.3.tgz#e0ea88aefe76a14cf4375513b194438be3c5e238"
+ integrity sha512-C3JYYyvna0FvSKOWGWpo0/EQ6MayO8uEKam1oedLZRpxLego9Fk6K3UH/Phieu1xPHauM7YqAygJ+6SraVc0Qg==
dependencies:
base64-arraybuffer "0.1.4"
component-emitter "~1.3.0"
@@ -7402,6 +7766,11 @@ es6-iterator@2.0.3, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
+es6-object-assign@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c"
+ integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=
+
es6-shim@^0.35.5:
version "0.35.6"
resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.6.tgz#d10578301a83af2de58b9eadb7c2c9945f7388a0"
@@ -7579,7 +7948,7 @@ eslint-plugin-react@7.23.0:
resolve "^2.0.0-next.3"
string.prototype.matchall "^4.0.4"
-eslint-plugin-react@^7.22.0:
+eslint-plugin-react@^7.23.1:
version "7.23.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.23.1.tgz#f1a2e844c0d1967c822388204a8bc4dee8415b11"
integrity sha512-MvFGhZjI8Z4HusajmSw0ougGrq3Gs4vT/0WgwksZgf5RrLrRa2oYAw56okU4tZJl8+j7IYNuTM+2RnFEuTSdRQ==
@@ -7597,14 +7966,6 @@ eslint-plugin-react@^7.22.0:
resolve "^2.0.0-next.3"
string.prototype.matchall "^4.0.4"
-eslint-scope@5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5"
- integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==
- dependencies:
- esrecurse "^4.1.0"
- estraverse "^4.1.1"
-
eslint-scope@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
@@ -7613,7 +7974,7 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-scope@^5.0.0, eslint-scope@^5.1.1:
+eslint-scope@^5.0.0, eslint-scope@^5.1.0, eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -7638,7 +7999,7 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint-webpack-plugin@^2.5.2:
+eslint-webpack-plugin@^2.5.3:
version "2.5.3"
resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.5.3.tgz#a125585a1d8bb9c939f2a920a9bc9be4a21cdb58"
integrity sha512-LewNevZf9ghDCxCGT6QltNWVi8KIYWc4LKcin8K9Azh1hypG7YAmobUDIU67fAPa+eMjRnU4rjEkLbYI1w5/UA==
@@ -7783,7 +8144,7 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-etag@~1.8.1:
+etag@1.8.1, etag@~1.8.1:
version "1.8.1"
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
@@ -7938,6 +8299,21 @@ express-graphql@^0.9.0:
http-errors "^1.7.3"
raw-body "^2.4.1"
+express-jwt@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/express-jwt/-/express-jwt-6.0.0.tgz#20886c730983ffb1c706a4383235df86eff349b8"
+ integrity sha512-C26y9myRjx7CyhZ+BAT3p+gQyRCoDZ7qo8plCvLDaRT6je6ALIAQknT6XLVQGFKwIy/Ux7lvM2MNap5dt0T7gA==
+ dependencies:
+ async "^1.5.0"
+ express-unless "^0.3.0"
+ jsonwebtoken "^8.1.0"
+ lodash.set "^4.0.0"
+
+express-unless@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/express-unless/-/express-unless-0.3.1.tgz#2557c146e75beb903e2d247f9b5ba01452696e20"
+ integrity sha1-JVfBRudb65A+LSR/m1ugFFJpbiA=
+
express@^4.17.1:
version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
@@ -8011,7 +8387,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
assign-symbols "^1.0.0"
is-extendable "^1.0.1"
-extend@^3.0.0, extend@~3.0.2:
+extend@^3.0.0, extend@^3.0.2, extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
@@ -8113,6 +8489,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+fast-levenshtein@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912"
+ integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==
+ dependencies:
+ fastest-levenshtein "^1.0.7"
+
fast-safe-stringify@^2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743"
@@ -8123,7 +8506,7 @@ fast-shallow-equal@^1.0.0:
resolved "https://registry.yarnpkg.com/fast-shallow-equal/-/fast-shallow-equal-1.0.0.tgz#d4dcaf6472440dcefa6f88b98e3251e27f25628b"
integrity sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==
-fastest-levenshtein@^1.0.12:
+fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.7:
version "1.0.12"
resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
@@ -8351,6 +8734,15 @@ finalhandler@~1.1.2:
statuses "~1.5.0"
unpipe "~1.0.0"
+find-cache-dir@3.3.1, find-cache-dir@^3.3.1:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
+ integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
+ dependencies:
+ commondir "^1.0.1"
+ make-dir "^3.0.2"
+ pkg-dir "^4.1.0"
+
find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
@@ -8360,15 +8752,6 @@ find-cache-dir@^2.0.0, find-cache-dir@^2.1.0:
make-dir "^2.0.0"
pkg-dir "^3.0.0"
-find-cache-dir@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
- integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
- dependencies:
- commondir "^1.0.1"
- make-dir "^3.0.2"
- pkg-dir "^4.1.0"
-
find-root@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
@@ -8447,6 +8830,13 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
+follow-redirects@1.5.10:
+ version "1.5.10"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
+ integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
+ dependencies:
+ debug "=3.1.0"
+
follow-redirects@^1.0.0, follow-redirects@^1.10.0:
version "1.13.3"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.3.tgz#e5598ad50174c1bc4e872301e82ac2cd97f90267"
@@ -8464,6 +8854,11 @@ for-in@^1.0.2:
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@@ -8537,6 +8932,19 @@ formidable@^1.2.2:
resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9"
integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==
+formik@^2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.6.tgz#378a4bafe4b95caf6acf6db01f81f3fe5147559d"
+ integrity sha512-Kxk2zQRafy56zhLmrzcbryUpMBvT0tal5IvcifK5+4YNGelKsnrODFJ0sZQRMQboblWNym4lAW3bt+tf2vApSA==
+ dependencies:
+ deepmerge "^2.1.1"
+ hoist-non-react-statics "^3.3.0"
+ lodash "^4.17.14"
+ lodash-es "^4.17.14"
+ react-fast-compare "^2.0.1"
+ tiny-warning "^1.0.2"
+ tslib "^1.10.0"
+
forwarded@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
@@ -8555,22 +8963,22 @@ fragment-cache@^0.2.1:
map-cache "^0.2.2"
framer-motion@^4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-4.0.3.tgz#e20a32c6825dc08c98e130640cb6441ec2920b7d"
- integrity sha512-5p9VPpgPctMJuNW8CqHSk9k/v3xAUpReWzlgKl1a1fsvqzcFgNGENZPfBwHuukanvMmh3trzO5jZNX0Kc8/pAA==
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-4.1.2.tgz#2fffb7700ca1c3405e697294d155b1aae51c1031"
+ integrity sha512-nVieffLWWmK5gog46PsoecgJCsFV+n6A5GOqoGXkWtvB9jWcscRVIdGzAaPKo2uiJHkGSyXUHU8+lt6YOQVRqw==
dependencies:
- framesync "5.2.3"
+ framesync "5.3.0"
hey-listen "^1.0.8"
- popmotion "9.3.4"
+ popmotion "9.3.5"
style-value-types "4.1.4"
tslib "^2.1.0"
optionalDependencies:
"@emotion/is-prop-valid" "^0.8.2"
-framesync@5.2.3:
- version "5.2.3"
- resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.2.3.tgz#73e26c83e108fb95f05515ee5c6fdf20c9fd47ab"
- integrity sha512-5PxjYm5RxvsT68a9trOOL/61POxL7DcHrbx+j/50CR33mvBdp0aUTI+EfrMeVXprx3XOZ37NWg6r5ZQQOA2arA==
+framesync@5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b"
+ integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==
dependencies:
tslib "^2.1.0"
@@ -8722,10 +9130,10 @@ gatsby-background-image@^1.5.0:
short-uuid "^4.1.0"
sort-media-queries "^0.2.2"
-gatsby-cli@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-3.1.0.tgz#e67deb874d24c02b7d47a3fdf51f2d06bb2d50ae"
- integrity sha512-SOEXePHvk+Lj3XezFOjmtidMUq39hRHQsDa9iAtMvFc6bJxVIm4oGMu59mUWijGEVTlL1kwMOY7kAq1DEEtfNA==
+gatsby-cli@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-3.2.0.tgz#af279e0df295a11f644cd1433ed5b31800940597"
+ integrity sha512-MOj7LgwNX/O30LNdZ1WDUQ4Wiyn3uXFGND7QQepfWpaHvrgtposhy/vseAAR54N5pyehcdLhQkNQkbd4Zw9olA==
dependencies:
"@babel/code-frame" "^7.10.4"
"@types/common-tags" "^1.8.0"
@@ -8735,14 +9143,14 @@ gatsby-cli@^3.1.0:
common-tags "^1.8.0"
configstore "^5.0.1"
convert-hrtime "^3.0.0"
- create-gatsby "^1.1.0"
+ create-gatsby "^1.2.0"
envinfo "^7.7.3"
execa "^3.4.0"
fs-exists-cached "^1.0.0"
fs-extra "^8.1.0"
- gatsby-core-utils "^2.1.0"
- gatsby-recipes "^0.12.0"
- gatsby-telemetry "^2.1.0"
+ gatsby-core-utils "^2.2.0"
+ gatsby-recipes "^0.13.0"
+ gatsby-telemetry "^2.2.0"
hosted-git-info "^3.0.6"
is-valid-path "^0.1.1"
joi "^17.4.0"
@@ -8766,10 +9174,10 @@ gatsby-cli@^3.1.0:
yoga-layout-prebuilt "^1.9.6"
yurnalist "^2.1.0"
-gatsby-core-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-2.1.0.tgz#634989bc3cde1c7add752fbdc3c6a3cdd8e23377"
- integrity sha512-zBNZ4kypfgqrUWNGMQQCXZookssXWaTnLWmxM7TOz5Phjvr0NvQo/xpkUgVbuylkQDwprmg88oRdox8L3zMY9Q==
+gatsby-core-utils@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-2.2.0.tgz#def804d0fc2acde605c5d4da3c1ffbfc9aaf4e2a"
+ integrity sha512-7T6aVJAj0u/VUg+zKOLuxyZLS/8KDQcDeEFCkKY0d7Pd4wV/QqKRLljr0TRVkivRZHXyWQI9fM3ox5DzfkHdCQ==
dependencies:
ci-info "2.0.0"
configstore "^5.0.1"
@@ -8780,119 +9188,117 @@ gatsby-core-utils@^2.1.0:
tmp "^0.2.1"
xdg-basedir "^4.0.0"
-gatsby-graphiql-explorer@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-1.1.0.tgz#00e4cfcad769363e6ea97cf6e36ff618c5e31923"
- integrity sha512-+HqRSR3tkIAqMloEmLxpnfTpAWF9zHyRfPYw6nOhVmEkC75zNrT22XkFp9toitr0qdCVavpAJMhjBpypL9l3qQ==
+gatsby-graphiql-explorer@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-1.2.0.tgz#5e8b64d876e56c288a23c7a7430e2d074aec0fea"
+ integrity sha512-2Ot6RstekslT6kzv28ovwwsRXIRbqLP8FkfjUql2ZrkothMXIGp4s1hl6e1RQ6qB7E+8HO0Xhgg85pmJD4cfOA==
dependencies:
"@babel/runtime" "^7.12.5"
-gatsby-legacy-polyfills@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-1.1.0.tgz#70b0a42d1121b04c872b6320ade0efd8b996aaa8"
- integrity sha512-h+1dvamBzeItxkWUyjlEJ5/1mBR8nOiS2ZO8L6VOL/s4egwTFbL8ehE/yhn/41nSB/KCKjMY9mv7orU/v/Xdaw==
+gatsby-image@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-image/-/gatsby-image-3.2.0.tgz#b9724a2f4559113e478877904df97b2aca022358"
+ integrity sha512-7tNow0zRTrSMBX8BoZFqC/akXCjYuLKElhJe3wVpDTgfgCfoJMNNIrbepOBYORcQqv9YB2WWDQjhwtCro/WRqQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ object-fit-images "^3.2.4"
+ prop-types "^15.7.2"
+
+gatsby-legacy-polyfills@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-1.2.0.tgz#fda9b3b9f6b340a4fdfdd978e84b0847bdfab79c"
+ integrity sha512-WC2LXsQQ/F6zNHhD50gnl2U7XVJnwldnU9xKOLndEfy74GhQ7OONsAYSytMYXdBlMKJW3k15pBfhRMM6incZIw==
dependencies:
core-js-compat "3.9.0"
-gatsby-link@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-3.1.0.tgz#a64795edc032483450103ab235bab68a6f8dc2b8"
- integrity sha512-5l84aGNGYp+8QDWnM030R1TjBms+zgdsNSZrRmwcQ57EF2IW6zRrw+ENSlBrxeV40mkmIXkVmIVbB8XuNKZNrg==
+gatsby-link@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-3.2.0.tgz#87d130dfccab915f9fd989611765d220967417f2"
+ integrity sha512-LyANWBIuMnxivSNF7pnHc0S3mDNMaHNGSacnMynpHw9kVZuu03xi+DnzEqkzon/hgl+yRgQOtganGZgHTHzYFw==
dependencies:
"@babel/runtime" "^7.12.5"
"@types/reach__router" "^1.3.7"
prop-types "^15.7.2"
-gatsby-page-utils@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-1.1.0.tgz#44bbc38a5baf96b97c70ec5be607c594fe12b054"
- integrity sha512-hNjEuWYtU95t6ypXn82eC+7OoArH4i/PnlhHt9DS8xdpf7Ad95Bk+wAhpIlF8iv9f/uf/e5DdbQeSXj1E1TeRw==
+gatsby-page-utils@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-1.2.0.tgz#8c1be23a4701f4b6cdb3fb3c753923fa37bfd895"
+ integrity sha512-8b09VzneD1ze3eSJ4n88ytf3N2kE8PcoYVVyHe/EL5HloUz3EexY1o6oJbePkXsfqqcMGuUsUnPNSbLX+0YGYQ==
dependencies:
"@babel/runtime" "^7.12.5"
bluebird "^3.7.2"
chokidar "^3.5.1"
fs-exists-cached "^1.0.0"
- gatsby-core-utils "^2.1.0"
+ gatsby-core-utils "^2.2.0"
glob "^7.1.6"
lodash "^4.17.21"
micromatch "^4.0.2"
-gatsby-plugin-gatsby-cloud@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-gatsby-cloud/-/gatsby-plugin-gatsby-cloud-2.1.0.tgz#87bdf357d10fa9364e3edd240e6d5b3a8c8e7983"
- integrity sha512-oyB991WgUenVTI1ocGjzHpthZTgHwhZ1xeR2E2WYtVHLZg2A+f2QvrG1y6mFfb0TPAL0RYhzCSgUtTMFXn4dGA==
- dependencies:
- "@babel/runtime" "^7.12.5"
- fs-extra "^8.1.0"
- kebab-hash "^0.1.2"
- lodash "^4.17.21"
- webpack-assets-manifest "^5.0.1"
-
gatsby-plugin-image@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-image/-/gatsby-plugin-image-1.1.2.tgz#85fc4f5356bf29c2098c4371e5396e14a0ff632e"
- integrity sha512-ijuCa/++l+J3lUuEQyDPu1CoQ9dMdjlmgXQIZZvo+ZK25FlWVvZn/tyyg/cFekqv+Ir1Dr8LnHHlxEKdvYkIrw==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-image/-/gatsby-plugin-image-1.2.0.tgz#ad571ba270b5c1e8a679ac33eeccd01ac3370db3"
+ integrity sha512-tG39QNnmld4rpTLettTL6r8BFm1rRrcionBpgUJXi9l5W4UaUn/hKdM9jV8g5aNUzo4YrEcgZcf1v2dPfrz9Iw==
dependencies:
"@babel/code-frame" "^7.12.13"
"@babel/parser" "^7.12.5"
"@babel/traverse" "^7.12.5"
babel-jsx-utils "^1.1.0"
- babel-plugin-remove-graphql-queries "^3.1.0"
+ babel-plugin-remove-graphql-queries "^3.2.0"
camelcase "^5.3.1"
chokidar "^3.5.1"
common-tags "^1.8.0"
fs-extra "^8.1.0"
- gatsby-core-utils "^2.1.0"
+ gatsby-core-utils "^2.2.0"
objectFitPolyfill "^2.3.0"
prop-types "^15.7.2"
gatsby-plugin-manifest@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-3.1.0.tgz#9a40e2c7355663ea0863b199e7ba92af2f655e8d"
- integrity sha512-T3vmSdld5KdKhov1/GFgBZ1fgFdyS1Uw2ehtJy3qTqknO3TLq2AiyMTJVRE5Z6ztYWLkE5Lnc07HZSYSb0ocsA==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-manifest/-/gatsby-plugin-manifest-3.2.0.tgz#512938442542f95ffc8e0cbe5df19db719e935d9"
+ integrity sha512-oU5pvAHZ+qIhCbmTP5Eti73i6pgAnxF/nfwXCSQ7zUjFWzKkjW8tHYK3XmhEYX2ooUX2WeP9e3vp2QdnlmA59Q==
dependencies:
"@babel/runtime" "^7.12.5"
- gatsby-core-utils "^2.1.0"
- gatsby-plugin-utils "^1.1.0"
+ gatsby-core-utils "^2.2.0"
+ gatsby-plugin-utils "^1.2.0"
semver "^7.3.2"
sharp "^0.27.0"
-gatsby-plugin-matomo@0.9.0:
+gatsby-plugin-matomo@0.9.0, gatsby-plugin-matomo@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/gatsby-plugin-matomo/-/gatsby-plugin-matomo-0.9.0.tgz#016a87adf577498fe1e396bdc56d418e7cadd87c"
integrity sha512-PqxVWMXhVOkJbEMLiW3G7tWTx4TMilzV6ywwOM7tCSp4718T+pAb+l0aJl2/bOs9kezxHmKa9yxvH4Kvs1rTYA==
gatsby-plugin-offline@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-offline/-/gatsby-plugin-offline-4.1.0.tgz#92858f5a61077d9e44fa9e933b6a1ceff793b044"
- integrity sha512-lLIooOgZBV91GjqNglIup72wXufEkVyLUDyoHzs7yxAuj1nGUEinWNpp+QLHH9SxI9salyuawzL52GSHTwQlDw==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-offline/-/gatsby-plugin-offline-4.2.0.tgz#c45561fd2682f3aeddcd1de2a4ce8da1bf935052"
+ integrity sha512-WVT1pZhcqgdNIxtWqMheQHda/ifRJC3c/fb7+bM35tGpVywjWDgu0gwvulceTHJz3JX1mkDW9vlvgDI5C1Dlzw==
dependencies:
"@babel/runtime" "^7.12.5"
cheerio "^1.0.0-rc.3"
- gatsby-core-utils "^2.1.0"
+ gatsby-core-utils "^2.2.0"
glob "^7.1.6"
idb-keyval "^3.2.0"
lodash "^4.17.21"
workbox-build "^4.3.1"
-gatsby-plugin-page-creator@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-3.1.0.tgz#98df02c01beabd6274c1f920d5785ec70f6e9c17"
- integrity sha512-0Ji3U8/oPgUCIHUmm5QI09Yz98j8qslqdzDv7veE75+Qqr1oC4ZD650TwH9GVjRKitxwntK+GaNPMS6nDq24kw==
+gatsby-plugin-page-creator@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-3.2.0.tgz#cb33ddbb48d9d5e92e4c2e5c25d3b39e8b64c89f"
+ integrity sha512-9JlR+jA1zRFOtGmTcy/Yr9MDy1//7Vq3VA9CWJ/+4AyGEgbStQ4ObPbK0NE3V4aUuRlDBhj5SsKJ3xOUecVQRA==
dependencies:
"@babel/traverse" "^7.12.5"
"@sindresorhus/slugify" "^1.1.0"
chokidar "^3.5.1"
fs-exists-cached "^1.0.0"
- gatsby-page-utils "^1.1.0"
- gatsby-telemetry "^2.1.0"
+ gatsby-page-utils "^1.2.0"
+ gatsby-telemetry "^2.2.0"
globby "^11.0.2"
lodash "^4.17.21"
gatsby-plugin-postcss@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-postcss/-/gatsby-plugin-postcss-4.1.0.tgz#71100ba9f5aecd3c15eb6c496a774b6358257ad6"
- integrity sha512-5pMpbi9CmQa8j3PwSvUPJ0ydB7QVfbuuCM17ij83ZGpsb2V8Y7+r0CDo6drQ0CGRp8u7TAMcfpSg6JCkvfc1Sg==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-postcss/-/gatsby-plugin-postcss-4.2.0.tgz#45966bfbae9f3ef79e91c3fe5904c1e0bca873fb"
+ integrity sha512-RFyxN0zDi8UuQxvjF/WoFaNxfQkulCsyA6UtIfgs73QZj31VqOJ6bmtjJW2ct6zFeANOJ/nOczbr2nyBcMDnvQ==
dependencies:
"@babel/runtime" "^7.12.5"
postcss-loader "^4.1.0"
@@ -8908,9 +9314,9 @@ gatsby-plugin-purgecss@^6.0.0:
purgecss "^4.0.2"
gatsby-plugin-react-helmet@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-4.1.0.tgz#a210eeb840411fe59d1da1184e2ffb25383cbc9d"
- integrity sha512-vMTtpVnzrYRcBrDt4feui0CxviINtNFwulRbhJ0if63H31Ep0i4jcMzDitVqpHxcImkzQwchK3Qap3JWqr6L6Q==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-4.2.0.tgz#406a8500576fe13674b317041a91b73189b5c58f"
+ integrity sha512-EF9GsIgDpO3qVTMDXzzm9h3G10tNiejp3MfIrSgSE66NGLY/GR8aEsENsOWrjHsHMOs7AaC1eOXbNQ0aJt3Otg==
dependencies:
"@babel/runtime" "^7.12.5"
@@ -8926,7 +9332,7 @@ gatsby-plugin-remove-serviceworker@1.0.0:
resolved "https://registry.yarnpkg.com/gatsby-plugin-remove-serviceworker/-/gatsby-plugin-remove-serviceworker-1.0.0.tgz#9fb433bc8bd766e14e1d3711c4ac6f051e1dff7c"
integrity sha1-n7QzvIvXZuFOHTcRxKxvBR4d/3w=
-gatsby-plugin-robots-txt@1.5.5:
+gatsby-plugin-robots-txt@1.5.5, gatsby-plugin-robots-txt@^1.5.5:
version "1.5.5"
resolved "https://registry.yarnpkg.com/gatsby-plugin-robots-txt/-/gatsby-plugin-robots-txt-1.5.5.tgz#5ec156c2283307031d4890a7d036e11131037cea"
integrity sha512-wLIep04R0cnY+3t9uFVFitA/eLbI6o8xkrUPg6gVxnas/LtzMe5tUiMK5P+idC14B0ohY1y2zl2hP+Bu54/dHQ==
@@ -8935,26 +9341,26 @@ gatsby-plugin-robots-txt@1.5.5:
generate-robotstxt "^8.0.3"
gatsby-plugin-sass@^4.0.2:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-sass/-/gatsby-plugin-sass-4.1.0.tgz#458df0b2b8bcc04bdd040febed106883e2825690"
- integrity sha512-lVm+DGSkAIM2APosbaBqi9OlS5YP1bXVmA2MXJqGdIrb/x9FkrN3psFjiTIuBob2YesAgeQV2OJtJefGGAf4bQ==
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-sass/-/gatsby-plugin-sass-4.2.0.tgz#15802a17e253dbd60530cba7079628255cdb5521"
+ integrity sha512-WnboqnpqZdkkQBYwbwnAAloJqBLuxR4FP2lp7jdrJPW4Drp0MQ2sf7XdtFjbNtmgpdXTeYFRBHazZpd25xsIgA==
dependencies:
"@babel/runtime" "^7.12.5"
resolve-url-loader "^3.1.2"
sass-loader "^10.1.1"
gatsby-plugin-sharp@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-3.1.2.tgz#fd14aa7d729c3a8b8770321c91f33ad59f404185"
- integrity sha512-YH4vd9u18Z0x/iiPqiyDpd8CQP7N7gN1LvvGydtch34sWijdQcCBP/kiZk+hn1iXCvVG4vxLt2DvkY4LaWGUpA==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-sharp/-/gatsby-plugin-sharp-3.2.0.tgz#d0e638f91c823800e5014a83c8860c98dec914c3"
+ integrity sha512-+Y4z/Q0bQL+wA1kb9wvAKlSz+o0+2V3IRxhu8kx/0pfpk48Q0apk+v4UMn7l835yocKfsePj8qvW7Ez0D47O9A==
dependencies:
"@babel/runtime" "^7.12.5"
async "^3.2.0"
bluebird "^3.7.2"
filenamify "^4.2.0"
fs-extra "^9.1.0"
- gatsby-core-utils "^2.1.0"
- gatsby-telemetry "^2.1.0"
+ gatsby-core-utils "^2.2.0"
+ gatsby-telemetry "^2.2.0"
got "^10.7.0"
imagemin "^7.0.1"
imagemin-mozjpeg "^9.0.0"
@@ -8969,10 +9375,10 @@ gatsby-plugin-sharp@^3.1.2:
svgo "1.3.2"
uuid "3.4.0"
-gatsby-plugin-typescript@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-3.1.0.tgz#dafb86c481f8bad84ad761e08f7d6ae83a7c73ba"
- integrity sha512-p1tk/7ECbLefJzmEEl/n6qKofNIXIH2B9Bz0XnKyVaRxXNIbE3VI76qFCm3dFh+MUUg8Q4JKc2WAZcBYIdQeZA==
+gatsby-plugin-typescript@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-3.2.0.tgz#ce86469837e7c9783a8acee7f3859e9b7ad591e8"
+ integrity sha512-C9FqkDfIaI2f/zdWmVVZBCSbGdclr6fOJHpgPJm0DOWHsOMBqmiDjZ+0U2inc0iR0hq5cPqKCQGTisk6clVCNw==
dependencies:
"@babel/core" "^7.12.3"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1"
@@ -8980,26 +9386,26 @@ gatsby-plugin-typescript@^3.1.0:
"@babel/plugin-proposal-optional-chaining" "^7.12.1"
"@babel/preset-typescript" "^7.12.1"
"@babel/runtime" "^7.12.5"
- babel-plugin-remove-graphql-queries "^3.1.0"
+ babel-plugin-remove-graphql-queries "^3.2.0"
-gatsby-plugin-utils@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-1.1.0.tgz#b73f3f196323df3c75e6edb345d221f003b5c152"
- integrity sha512-B21V3tFskfZcVSJVaYy6rLrxHcumbcmhKAYKniKThxCP/0KSqHkfC9+Bopsonk8npRKbVX924OI3UOCKfbgFsg==
+gatsby-plugin-utils@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-1.2.0.tgz#4751d952c9c99f15d4a68497cd1841a90aec6c33"
+ integrity sha512-9+kKeyQdXJtQ/9pthfP4LTiem7coOdBt+8wRTwa+DF331qfzunjekl0uWlZSZBnQpG1uS7GX4R/4tei72cVVmw==
dependencies:
joi "^17.2.1"
-gatsby-react-router-scroll@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-4.1.0.tgz#582a693048cf9a485a567afa11964df366d104fe"
- integrity sha512-P2RIO7Py7QQvIntzmrpiz93B6jZsOwVhSVWp3dDa1YrD4/y43553zrEwczifWicLYcgCy/miMnuctfoKCJuxlg==
+gatsby-react-router-scroll@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-4.2.0.tgz#bb10753c7ba8934a4b6e9eec359b69b556f310fc"
+ integrity sha512-n3KF1wNkWR6S5ZpFdXCEu4JP9xntyZNW2S/B8kumna7r2zclJBOiQWJWTopb7rEMgC/uY+RQRFHgyweaYSqIqQ==
dependencies:
"@babel/runtime" "^7.12.5"
-gatsby-recipes@^0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.12.0.tgz#3b0e313c6f67ffa750c7ff402ca1196f525a2470"
- integrity sha512-WotaMTpVWVP40uO24Iw2ioEAGcO6OZwcJYZz3Ihrb4CmjbKM6KEic8RuXH4d84OTLCvWz0s0lPiIu1IgbnYwgQ==
+gatsby-recipes@^0.13.0:
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.13.0.tgz#de9cfb611052db899c6a2ad8f9368859b82f7e59"
+ integrity sha512-ni3J7wu45XfktDyxjL42zgjRzDqGQZX4/l541P5UbcAjdPAQJBP3qUgyPt2qhtenPYP/iZdbutXKxKjfkckcsQ==
dependencies:
"@babel/core" "^7.12.3"
"@babel/generator" "^7.12.5"
@@ -9024,8 +9430,8 @@ gatsby-recipes@^0.12.0:
express "^4.17.1"
express-graphql "^0.9.0"
fs-extra "^8.1.0"
- gatsby-core-utils "^2.1.0"
- gatsby-telemetry "^2.1.0"
+ gatsby-core-utils "^2.2.0"
+ gatsby-telemetry "^2.2.0"
glob "^7.1.6"
graphql "^15.4.0"
graphql-compose "~7.25.0"
@@ -9060,17 +9466,85 @@ gatsby-recipes@^0.12.0:
xstate "^4.9.1"
yoga-layout-prebuilt "^1.9.6"
+gatsby-remark-classes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-classes/-/gatsby-remark-classes-1.0.0.tgz#6d93f7054a558c2cd7ba73ff5e25a5adc01fd5a9"
+ integrity sha512-F0pM8FdTwqFDDiP2qR4TnZZmkRI6Q3Mry/qzbxI4ORE/7ZnR6EKfvA1DryZ2RnrZyVUnbBEdzmZDPAYcBPE4PA==
+ dependencies:
+ unist-util-select "^2.0.2"
+
+gatsby-remark-copy-linked-files@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-3.2.0.tgz#aedfb7c05c0833fcb9e807127a08be101654503b"
+ integrity sha512-pNKYR9Q3QuIZ3u5msW9dtqszOgKzRqDRtg3kXnqagCC8JbT2IVYI4IG3tP2tTG3CwEOjBtBI0YhUM2KGgzdJ5g==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cheerio "^1.0.0-rc.3"
+ fs-extra "^8.1.0"
+ is-relative-url "^3.0.0"
+ lodash "^4.17.21"
+ path-is-inside "^1.0.2"
+ probe-image-size "^6.0.0"
+ unist-util-visit "^1.4.1"
+
+gatsby-remark-images@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-images/-/gatsby-remark-images-4.2.0.tgz#c8a34c5e9bea47427ff6d65a6ecb52506685bdfe"
+ integrity sha512-LaybtebK/8jF2qLInv/2yAvNioCJXxjhVZqIBs8xQp6sgaWSQ2CMFWARLkJC21OezIObiAGYKCMSKk8bWP6cFQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ chalk "^4.1.0"
+ cheerio "^1.0.0-rc.3"
+ gatsby-core-utils "^2.2.0"
+ is-relative-url "^3.0.0"
+ lodash "^4.17.21"
+ mdast-util-definitions "^1.2.5"
+ potrace "^2.1.8"
+ query-string "^6.13.3"
+ unist-util-select "^1.5.0"
+ unist-util-visit-parents "^2.1.2"
+
+gatsby-remark-prismjs@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-prismjs/-/gatsby-remark-prismjs-4.2.0.tgz#3a40a0246673d20fdab99b097c8ebf193c86ced2"
+ integrity sha512-PTE4p/f+XosSt/VdHJr9U3ruZ3yhqtUpqDuifsVbOOsS6AyvmEY/7WPUThRC+nSVfueG1geVgxrWB0AoaUPKXQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ parse-numeric-range "^0.0.2"
+ unist-util-visit "^1.4.1"
+
+gatsby-remark-responsive-iframe@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-responsive-iframe/-/gatsby-remark-responsive-iframe-3.2.0.tgz#1f9f74f4c43b8b3e77059c591528bce84d8d50c8"
+ integrity sha512-eoxAnAHv0Imh81Fn7Qh5TXiIFTBJBlytq1eXkIrNH0ecqKkmWiiY5Ynr7DRx4UlOHg6pEJD0ZlpL8iN5GbxTyQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cheerio "^1.0.0-rc.3"
+ common-tags "^1.8.0"
+ lodash "^4.17.21"
+ unist-util-visit "^1.4.1"
+
+gatsby-remark-smartypants@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-remark-smartypants/-/gatsby-remark-smartypants-3.2.0.tgz#b1f84b0a4787e558d3a7a4eef59777ebaf7dac83"
+ integrity sha512-caZ44+koorqFul45GYzQRhRRortbqmHhYPv8+oy7GbAkLoZvusLd4mnT7u7Te2PHfMoUuQVA8AxETOeNUcVdzQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ retext "^5.0.0"
+ retext-smartypants "^3.0.3"
+ unist-util-visit "^1.4.1"
+
gatsby-source-filesystem@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-3.1.0.tgz#59d9c5ebced33d954a9927e740168b9c9ee43422"
- integrity sha512-3qFXEi4Hp7NrqTMCJ44vzwMZclD1aHyC5XUXxuuQ+/gT4k4yPIjPTbUdYgDzvrc8/K/5XRvJDB2vprdjxwoeGw==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-3.2.0.tgz#1ceec22a068b235a084b15fb426898ef213fe995"
+ integrity sha512-5CAMdSiasWCciJEneIU1RgS9IcHrTwl8i7xqPxhE9ihBa+Y1RSEX3FdtNGnK3Z5dYQVHMwR0NNOPJ3WZW0rJQQ==
dependencies:
"@babel/runtime" "^7.12.5"
better-queue "^3.8.10"
chokidar "^3.4.3"
file-type "^16.0.0"
fs-extra "^8.1.0"
- gatsby-core-utils "^2.1.0"
+ gatsby-core-utils "^2.2.0"
got "^9.6.0"
md5-file "^5.0.0"
mime "^2.4.6"
@@ -9079,10 +9553,10 @@ gatsby-source-filesystem@^3.0.0:
valid-url "^1.0.9"
xstate "^4.14.0"
-gatsby-telemetry@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-2.1.0.tgz#e7c0f8bc488a93bf4afcd10760f38b50471e754f"
- integrity sha512-ZAmjxYsLyJ9eK3ZGphoIjl1C/Mx732h+PWpyD+NNUPf+GFJcPDVAd/tX9XHjNTVrAN3rAaHuH48wK7JNeC/xIA==
+gatsby-telemetry@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-2.2.0.tgz#c6ed229ea2f1c238200ec4a9e943ead7a366fe9b"
+ integrity sha512-Zx/MP+By8QHgm2fikfq6egmcrwREsWAg2wfqTo0CRax5WUQQWl57zX3b0bIJ+k0sFCvU4XuxP0XrytvzxkVViQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
@@ -9092,7 +9566,7 @@ gatsby-telemetry@^2.1.0:
boxen "^4.2.0"
configstore "^5.0.1"
fs-extra "^8.1.0"
- gatsby-core-utils "^2.1.0"
+ gatsby-core-utils "^2.2.0"
git-up "^4.0.2"
is-docker "^2.1.1"
lodash "^4.17.21"
@@ -9100,17 +9574,43 @@ gatsby-telemetry@^2.1.0:
uuid "3.4.0"
gatsby-transformer-json@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-transformer-json/-/gatsby-transformer-json-3.1.0.tgz#d3cf91c5a6ec98f4a295af97b02b22e54dcb8682"
- integrity sha512-eEd3LkxteckVQt0ka5tH2tJmYSogEfuULg7GPCsh9pcK2hR8YZq2dpFyGzwGREd6FYYkyJTg8KtqSSASiNjJrg==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-transformer-json/-/gatsby-transformer-json-3.2.0.tgz#3cfc4aef0913387b26ecf89b040a48408ed91d61"
+ integrity sha512-U0uOjTXkozFOzoMG46+Vmc7N0CH/hTYrvyIqtxpV+xDPvWNn07Ynk/0qaxAjRANe5oyJHYfTl1vd0Y/9R89AlA==
dependencies:
"@babel/runtime" "^7.12.5"
bluebird "^3.7.2"
+gatsby-transformer-remark@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-3.2.0.tgz#51a608dfc12a1c4c3b266c5076043d068050d049"
+ integrity sha512-z/fykxLNbKTN9fzYypyMwJ09z5YDMgnEPPF1x+szyjvEJhjKF8rfSgP13iKeYuG04Pxrj8L+QKS6xL/+H2lJIA==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ gatsby-core-utils "^2.2.0"
+ gray-matter "^4.0.2"
+ hast-util-raw "^4.0.0"
+ hast-util-to-html "^4.0.1"
+ lodash "^4.17.21"
+ mdast-util-to-hast "^3.0.4"
+ mdast-util-to-string "^1.1.0"
+ mdast-util-toc "^5.0"
+ remark "^10.0.1"
+ remark-parse "^6.0.3"
+ remark-retext "^3.1.3"
+ remark-stringify "6.0.4"
+ retext-english "^3.0.4"
+ sanitize-html "^1.27.5"
+ underscore.string "^3.3.5"
+ unified "^6.2.0"
+ unist-util-remove-position "^1.1.4"
+ unist-util-select "^1.5.0"
+ unist-util-visit "^1.4.1"
+
gatsby-transformer-sharp@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-3.1.0.tgz#958318785828302ef195a071bfb71071c94028be"
- integrity sha512-wj7KFhbqkxT5Ff5R8RDpBz5DweR6frLyIX28n4ryGIqMkgkmEwkIfWcA4/JjocDm4dVwkXKmlwJA1jufkGEpCg==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-transformer-sharp/-/gatsby-transformer-sharp-3.2.0.tgz#f6b8481dfacdc1d8d27c253213982f8571af462b"
+ integrity sha512-2UmkLMCuYCskuyyEqHIPfNg1svgtNxCWWCCfEnAIIhntWfX7mewdhSG7eBciFJep+CYfV6bGZLcb+sKYkb0jvg==
dependencies:
"@babel/runtime" "^7.12.5"
bluebird "^3.7.2"
@@ -9121,10 +9621,20 @@ gatsby-transformer-sharp@^3.0.0:
semver "^7.3.4"
sharp "^0.27.0"
+gatsby-transformer-yaml@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby-transformer-yaml/-/gatsby-transformer-yaml-3.2.0.tgz#ed4588f0642f3f82dbddd213d6ca20e8c3b0341e"
+ integrity sha512-x6nvYas74uIH9II0Ti3cLLT/juRjZN47sgbcG5DVIiOj+tzHmHQMFaqWnxv8o2WTxdfddRmd7beor9VwZd9YRg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ js-yaml "^3.14.1"
+ lodash "^4.17.21"
+ unist-util-select "^1.5.0"
+
gatsby@^3.0.4, gatsby@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-3.1.2.tgz#666420ad991e092b1d7e9fb887c2c31f6a8c4118"
- integrity sha512-3gF954rAkbZimrJe0K8gXl6Xe1AGyu04k813ut1Dzh98xf6WJoJQOFjQKB9MLmrzY7WRS94Pah1/9GuO+5hEpQ==
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-3.2.0.tgz#4b92b3063761572eb8116b9fd4efce3c916bb045"
+ integrity sha512-eVaAR6LQA4D7bPeN1/2Hzk5kt7QJzb0DoPUuBy9daxZy3oPR1Zf6wfdV6RQcW6+ABLpG073h5uOTMxANAlm66A==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/core" "^7.12.3"
@@ -9150,8 +9660,8 @@ gatsby@^3.0.4, gatsby@^3.1.2:
babel-plugin-add-module-exports "^1.0.4"
babel-plugin-dynamic-import-node "^2.3.3"
babel-plugin-lodash "^3.3.4"
- babel-plugin-remove-graphql-queries "^3.1.0"
- babel-preset-gatsby "^1.1.0"
+ babel-plugin-remove-graphql-queries "^3.2.0"
+ babel-preset-gatsby "^1.2.0"
better-opn "^2.0.0"
better-queue "^3.8.10"
bluebird "^3.7.2"
@@ -9166,7 +9676,7 @@ gatsby@^3.0.4, gatsby@^3.1.2:
core-js "^3.9.0"
cors "^2.8.5"
css-loader "^5.0.1"
- css-minimizer-webpack-plugin "^1.2.0"
+ css-minimizer-webpack-plugin "^1.3.0"
css.escape "^1.5.1"
date-fns "^2.14.0"
debug "^3.2.7"
@@ -9180,9 +9690,9 @@ gatsby@^3.0.4, gatsby@^3.1.2:
eslint-plugin-graphql "^4.0.0"
eslint-plugin-import "^2.22.1"
eslint-plugin-jsx-a11y "^6.4.1"
- eslint-plugin-react "^7.22.0"
+ eslint-plugin-react "^7.23.1"
eslint-plugin-react-hooks "^4.2.0"
- eslint-webpack-plugin "^2.5.2"
+ eslint-webpack-plugin "^2.5.3"
event-source-polyfill "^1.0.15"
execa "^4.0.3"
express "^4.17.1"
@@ -9193,16 +9703,16 @@ gatsby@^3.0.4, gatsby@^3.1.2:
find-cache-dir "^3.3.1"
fs-exists-cached "1.0.0"
fs-extra "^8.1.0"
- gatsby-cli "^3.1.0"
- gatsby-core-utils "^2.1.0"
- gatsby-graphiql-explorer "^1.1.0"
- gatsby-legacy-polyfills "^1.1.0"
- gatsby-link "^3.1.0"
- gatsby-plugin-page-creator "^3.1.0"
- gatsby-plugin-typescript "^3.1.0"
- gatsby-plugin-utils "^1.1.0"
- gatsby-react-router-scroll "^4.1.0"
- gatsby-telemetry "^2.1.0"
+ gatsby-cli "^3.2.0"
+ gatsby-core-utils "^2.2.0"
+ gatsby-graphiql-explorer "^1.2.0"
+ gatsby-legacy-polyfills "^1.2.0"
+ gatsby-link "^3.2.0"
+ gatsby-plugin-page-creator "^3.2.0"
+ gatsby-plugin-typescript "^3.2.0"
+ gatsby-plugin-utils "^1.2.0"
+ gatsby-react-router-scroll "^4.2.0"
+ gatsby-telemetry "^2.2.0"
glob "^7.1.6"
got "8.3.2"
graphql "^15.4.0"
@@ -9269,7 +9779,7 @@ gatsby@^3.0.4, gatsby@^3.1.2:
util.promisify "^1.0.1"
uuid "3.4.0"
v8-compile-cache "^2.2.0"
- webpack "^5.16.0"
+ webpack "^5.28.0"
webpack-dev-middleware "^4.1.0"
webpack-dev-server "^3.11.2"
webpack-merge "^5.7.3"
@@ -9300,9 +9810,9 @@ gaze@^1.0.0:
globule "^1.0.0"
gbimage-bridge@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/gbimage-bridge/-/gbimage-bridge-0.1.1.tgz#8feb1b41a357d13bbf80c2ec106e68c9ed15499b"
- integrity sha512-kFdv2u1DshZndyO5cO6f8Gd6yv1ZOLly8+02seaVkHDNH27fVWpAghgDQm8NYXhj9QK937YuspKRC2eaWmDpDw==
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/gbimage-bridge/-/gbimage-bridge-0.1.2.tgz#590eae69f1dbea348dcac3fe35e8254d736bdb9c"
+ integrity sha512-A9aOra36fvieC+7u2PD7FUdVMqWQ5C9UdQTX5nvyCrpeFzUZYLTnMY/mquH453JmLnLQC2Tl363fpyDfj/nDWQ==
generate-robotstxt@^8.0.3:
version "8.0.3"
@@ -9335,6 +9845,13 @@ get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1:
has "^1.0.3"
has-symbols "^1.0.1"
+get-orientation@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/get-orientation/-/get-orientation-1.1.2.tgz#20507928951814f8a91ded0a0e67b29dfab98947"
+ integrity sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==
+ dependencies:
+ stream-parser "^0.3.1"
+
get-own-enumerable-property-symbols@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
@@ -9429,7 +9946,7 @@ github-from-package@0.0.0:
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
-github-slugger@^1.0.0:
+github-slugger@^1.0.0, github-slugger@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9"
integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q==
@@ -9809,6 +10326,16 @@ graphql@^15.4.0:
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.5.0.tgz#39d19494dbe69d1ea719915b578bf920344a69d5"
integrity sha512-OmaM7y0kaK31NKG31q4YbD2beNYa6jBBKtMFT6gLYJljHLJr42IqJ8KX08u3Li/0ifzTU5HjmoOOrwa5BRLeDA==
+gray-matter@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.2.tgz#9aa379e3acaf421193fce7d2a28cebd4518ac454"
+ integrity sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw==
+ dependencies:
+ js-yaml "^3.11.0"
+ kind-of "^6.0.2"
+ section-matter "^1.0.0"
+ strip-bom-string "^1.0.0"
+
gud@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0"
@@ -9969,6 +10496,18 @@ hasha@^5.2.0:
is-stream "^2.0.0"
type-fest "^0.8.0"
+hast-to-hyperscript@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz#5106cbba78edb7c95e2e8a49079371eb196c1ced"
+ integrity sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg==
+ dependencies:
+ comma-separated-tokens "^1.0.0"
+ property-information "^4.0.0"
+ space-separated-tokens "^1.0.0"
+ style-to-object "^0.2.1"
+ unist-util-is "^2.0.0"
+ web-namespaces "^1.1.2"
+
hast-to-hyperscript@^9.0.0:
version "9.0.1"
resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz#9b67fd188e4c81e8ad66f803855334173920218d"
@@ -9982,6 +10521,17 @@ hast-to-hyperscript@^9.0.0:
unist-util-is "^4.0.0"
web-namespaces "^1.0.0"
+hast-util-from-parse5@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz#b7164a7ffc88da4f751dc7c2f801ff8d7c143bab"
+ integrity sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ==
+ dependencies:
+ ccount "^1.0.3"
+ hastscript "^4.0.0"
+ property-information "^4.0.0"
+ web-namespaces "^1.1.2"
+ xtend "^4.0.1"
+
hast-util-from-parse5@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz#554e34abdeea25ac76f5bd950a1f0180e0b3bc2a"
@@ -9994,7 +10544,12 @@ hast-util-from-parse5@^6.0.0:
vfile-location "^3.2.0"
web-namespaces "^1.0.0"
-hast-util-parse-selector@^2.0.0:
+hast-util-is-element@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425"
+ integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==
+
+hast-util-parse-selector@^2.0.0, hast-util-parse-selector@^2.2.0:
version "2.2.5"
resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a"
integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==
@@ -10015,6 +10570,47 @@ hast-util-raw@6.0.1:
xtend "^4.0.0"
zwitch "^1.0.0"
+hast-util-raw@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-4.0.0.tgz#2dc10c9facd9b810ea6ac51df251e6f87c2ed5b5"
+ integrity sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw==
+ dependencies:
+ hast-util-from-parse5 "^4.0.2"
+ hast-util-to-parse5 "^4.0.1"
+ html-void-elements "^1.0.1"
+ parse5 "^5.0.0"
+ unist-util-position "^3.0.0"
+ web-namespaces "^1.0.0"
+ xtend "^4.0.1"
+ zwitch "^1.0.0"
+
+hast-util-to-html@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a"
+ integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg==
+ dependencies:
+ ccount "^1.0.0"
+ comma-separated-tokens "^1.0.1"
+ hast-util-is-element "^1.0.0"
+ hast-util-whitespace "^1.0.0"
+ html-void-elements "^1.0.0"
+ property-information "^4.0.0"
+ space-separated-tokens "^1.0.0"
+ stringify-entities "^1.0.1"
+ unist-util-is "^2.0.0"
+ xtend "^4.0.1"
+
+hast-util-to-parse5@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz#e52534b4bf40dc4e7d0428fcaf6d32bc75c62ee5"
+ integrity sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw==
+ dependencies:
+ hast-to-hyperscript "^5.0.0"
+ property-information "^4.0.0"
+ web-namespaces "^1.0.0"
+ xtend "^4.0.1"
+ zwitch "^1.0.0"
+
hast-util-to-parse5@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz#1ec44650b631d72952066cea9b1445df699f8479"
@@ -10026,6 +10622,21 @@ hast-util-to-parse5@^6.0.0:
xtend "^4.0.0"
zwitch "^1.0.0"
+hast-util-whitespace@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41"
+ integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==
+
+hastscript@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-4.1.0.tgz#ea5593fa6f6709101fc790ced818393ddaa045ce"
+ integrity sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ==
+ dependencies:
+ comma-separated-tokens "^1.0.0"
+ hast-util-parse-selector "^2.2.0"
+ property-information "^4.0.0"
+ space-separated-tokens "^1.0.0"
+
hastscript@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-6.0.0.tgz#e8768d7eac56c3fdeac8a92830d58e811e5bf640"
@@ -10037,7 +10648,7 @@ hastscript@^6.0.0:
property-information "^5.0.0"
space-separated-tokens "^1.0.0"
-he@^1.2.0:
+he@1.2.0, he@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
@@ -10138,9 +10749,9 @@ html-entities@^1.2.0, html-entities@^1.2.1, html-entities@^1.3.1:
integrity sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==
html-entities@^2.1.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.0.tgz#83474887115f12d33a7b85f6573c95223c2940a4"
- integrity sha512-/XzLX7A79umjBdw7yYw99bk20uj+L1hQINB029One2OCIqtHj0o5F+XMRam1pveHF4pEYZyr8RSLYWdhguHrwg==
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
+ integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
html-minifier-terser@^5.0.1:
version "5.1.1"
@@ -10160,7 +10771,7 @@ html-tags@^3.1.0:
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
-html-void-elements@^1.0.0:
+html-void-elements@^1.0.0, html-void-elements@^1.0.1:
version "1.0.5"
resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483"
integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==
@@ -10192,6 +10803,16 @@ htmlparser2@^3.10.1:
inherits "^2.0.1"
readable-stream "^3.1.1"
+htmlparser2@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78"
+ integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^3.0.0"
+ domutils "^2.0.0"
+ entities "^2.0.0"
+
htmlparser2@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.1.tgz#422521231ef6d42e56bd411da8ba40aa36e91446"
@@ -10270,6 +10891,15 @@ http-parser-js@>=0.5.1:
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9"
integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==
+http-proxy-agent@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
http-proxy-middleware@0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a"
@@ -10303,11 +10933,19 @@ http-status-codes@2.1.4, http-status-codes@^2.1.2, http-status-codes@^2.1.4:
resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.1.4.tgz#453d99b4bd9424254c4f6a9a3a03715923052798"
integrity sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg==
-https-browserify@^1.0.0:
+https-browserify@1.0.0, https-browserify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+https-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
+ integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
human-signals@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
@@ -10341,6 +10979,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
dependencies:
safer-buffer ">= 2.1.2 < 3"
+iconv-lite@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01"
+ integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
icss-utils@^4.0.0, icss-utils@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467"
@@ -10502,7 +11147,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -10705,7 +11350,7 @@ is-boolean-object@^1.1.0:
dependencies:
call-bind "^1.0.0"
-is-buffer@^1.1.5:
+is-buffer@^1.1.4, is-buffer@^1.1.5:
version "1.1.6"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
@@ -10855,6 +11500,11 @@ is-function@^1.0.1, is-function@^1.0.2:
resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08"
integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==
+is-generator-function@^1.0.7:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b"
+ integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ==
+
is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
@@ -10914,6 +11564,14 @@ is-map@^2.0.2:
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
+is-nan@^1.2.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d"
+ integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==
+ dependencies:
+ call-bind "^1.0.0"
+ define-properties "^1.1.3"
+
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
@@ -11112,6 +11770,17 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.1"
+is-typed-array@^1.1.3:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e"
+ integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==
+ dependencies:
+ available-typed-arrays "^1.0.2"
+ call-bind "^1.0.2"
+ es-abstract "^1.18.0-next.2"
+ foreach "^2.0.5"
+ has-symbols "^1.0.1"
+
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -11337,6 +12006,15 @@ jest-util@^26.6.2:
is-ci "^2.0.0"
micromatch "^4.0.2"
+jest-worker@27.0.0-next.5:
+ version "27.0.0-next.5"
+ resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28"
+ integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
jest-worker@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5"
@@ -11401,7 +12079,7 @@ js-string-escape@^1.0.1:
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@^3.13.1:
+js-yaml@^3.11.0, js-yaml@^3.13.1, js-yaml@^3.14.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
@@ -11424,6 +12102,13 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+json-bigint@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1"
+ integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==
+ dependencies:
+ bignumber.js "^9.0.0"
+
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
@@ -11528,6 +12213,22 @@ jsonp@0.2.1, jsonp@^0.2.1:
dependencies:
debug "^2.1.3"
+jsonwebtoken@^8.1.0, jsonwebtoken@^8.5.1:
+ version "8.5.1"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
+ integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==
+ dependencies:
+ jws "^3.2.2"
+ lodash.includes "^4.3.0"
+ lodash.isboolean "^3.0.3"
+ lodash.isinteger "^4.0.4"
+ lodash.isnumber "^3.0.3"
+ lodash.isplainobject "^4.0.6"
+ lodash.isstring "^4.0.1"
+ lodash.once "^4.0.0"
+ ms "^2.1.1"
+ semver "^5.6.0"
+
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -11551,12 +12252,38 @@ junk@^3.1.0:
resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1"
integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==
-kebab-hash@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/kebab-hash/-/kebab-hash-0.1.2.tgz#dfb7949ba34d8e70114ea7d83e266e5e2a4abaac"
- integrity sha512-BTZpq3xgISmQmAVzkISy4eUutsUA7s4IEFlCwOBJjvSFOwyR7I+fza+tBc/rzYWK/NrmFHjfU1IhO3lu29Ib/w==
+jwa@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a"
+ integrity sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==
dependencies:
- lodash.kebabcase "^4.1.1"
+ buffer-equal-constant-time "1.0.1"
+ ecdsa-sig-formatter "1.0.11"
+ safe-buffer "^5.0.1"
+
+jwks-rsa@^1.12.2:
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/jwks-rsa/-/jwks-rsa-1.12.3.tgz#40232f85d16734cb82837f38bb3e350a34435400"
+ integrity sha512-cFipFDeYYaO9FhhYJcZWX/IyZgc0+g316rcHnDpT2dNRNIE/lMOmWKKqp09TkJoYlNFzrEVODsR4GgXJMgWhnA==
+ dependencies:
+ "@types/express-jwt" "0.0.42"
+ axios "^0.21.1"
+ debug "^4.1.0"
+ http-proxy-agent "^4.0.1"
+ https-proxy-agent "^5.0.0"
+ jsonwebtoken "^8.5.1"
+ limiter "^1.1.5"
+ lru-memoizer "^2.1.2"
+ ms "^2.1.2"
+ proxy-from-env "^1.1.0"
+
+jws@^3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304"
+ integrity sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==
+ dependencies:
+ jwa "^1.4.1"
+ safe-buffer "^5.0.1"
keyv@3.0.0:
version "3.0.0"
@@ -11625,6 +12352,11 @@ klona@^2.0.4:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
+ky@0.25.1:
+ version "0.25.1"
+ resolved "https://registry.yarnpkg.com/ky/-/ky-0.25.1.tgz#0df0bd872a9cc57e31acd5dbc1443547c881bfbc"
+ integrity sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA==
+
language-subtag-registry@~0.3.2:
version "0.3.21"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a"
@@ -11676,6 +12408,19 @@ levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
+limiter@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2"
+ integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==
+
+line-column@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2"
+ integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI=
+ dependencies:
+ isarray "^1.0.0"
+ isobject "^2.0.0"
+
lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
@@ -11732,9 +12477,9 @@ listr-verbose-renderer@^0.5.0:
figures "^2.0.0"
listr2@^3.2.2:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.4.3.tgz#543bcf849d5ffc70602708b69d2daac73f751699"
- integrity sha512-wZmkzNiuinOfwrGqAwTCcPw6aKQGTAMGXwG5xeU1WpDjJNeBA35jGBeWxR3OF+R6Yl5Y3dRG+3vE8t6PDcSNHA==
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.4.4.tgz#5bb5e0107cc9a8787dcfb5d302c88cbddcdba248"
+ integrity sha512-okQwtieCHDX5erlxcEn2xwNfVQhV+/YiD+U0v+6DQamXnknE7mc6B5fopHl96v1PuZjTpaoChctf96PB6K4XRg==
dependencies:
chalk "^4.1.0"
cli-truncate "^2.1.0"
@@ -11742,7 +12487,7 @@ listr2@^3.2.2:
indent-string "^4.0.0"
log-update "^4.0.0"
p-map "^4.0.0"
- rxjs "^6.6.6"
+ rxjs "^6.6.7"
through "^2.3.8"
wrap-ansi "^7.0.0"
@@ -11877,18 +12622,21 @@ lock@^1.0.0:
resolved "https://registry.yarnpkg.com/lock/-/lock-1.1.0.tgz#53157499d1653b136ca66451071fca615703fa55"
integrity sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU=
-lockfile@^1.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609"
- integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA==
- dependencies:
- signal-exit "^3.0.2"
+lodash-es@^4.17.14, lodash-es@^4.17.15:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+ integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
lodash._reinterpolate@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
+lodash.castarray@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115"
+ integrity sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=
+
lodash.clonedeep@4.5.0, lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
@@ -11904,16 +12652,16 @@ lodash.deburr@^4.1.0:
resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b"
integrity sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s=
-lodash.escaperegexp@^4.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347"
- integrity sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=
-
lodash.every@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7"
integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=
+lodash.flatmap@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e"
+ integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=
+
lodash.flatten@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
@@ -11929,25 +12677,40 @@ lodash.foreach@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=
-lodash.get@^4, lodash.get@^4.0:
+lodash.get@^4:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
-lodash.has@^4.0:
- version "4.5.2"
- resolved "https://registry.yarnpkg.com/lodash.has/-/lodash.has-4.5.2.tgz#d19f4dc1095058cccbe2b0cdf4ee0fe4aa37c862"
- integrity sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=
+lodash.includes@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
+ integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=
+
+lodash.isboolean@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
+ integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
+
+lodash.isinteger@^4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
+ integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=
+
+lodash.isnumber@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
+ integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
lodash.isplainobject@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
-lodash.kebabcase@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
- integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY=
+lodash.isstring@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
+ integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
lodash.map@^4.6.0:
version "4.6.0"
@@ -11964,11 +12727,26 @@ lodash.memoize@^4.1.2:
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-lodash.once@^4.1.1:
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash.once@^4.0.0, lodash.once@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
+lodash.set@^4.0.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
+ integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=
+
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+ integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
+
lodash.template@^4.4.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
@@ -11989,6 +12767,11 @@ lodash.toarray@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE=
+lodash.truncate@^4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
+ integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
+
lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@@ -11999,7 +12782,7 @@ lodash.without@^4.4.0:
resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac"
integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=
-lodash@4, lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.10:
+lodash@4, lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@~4.17.10:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -12157,6 +12940,22 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+lru-cache@~4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.2.tgz#1d17679c069cda5d040991a09dbc2c0db377e55e"
+ integrity sha1-HRdnnAac2l0ECZGgnbwsDbN35V4=
+ dependencies:
+ pseudomap "^1.0.1"
+ yallist "^2.0.0"
+
+lru-memoizer@^2.1.2:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/lru-memoizer/-/lru-memoizer-2.1.4.tgz#b864d92b557f00b1eeb322156a0409cb06dafac6"
+ integrity sha512-IXAq50s4qwrOBrXJklY+KhgZF+5y98PDaNo0gi/v2KQBFLyWr+JyFvijZXkGKjQj/h9c0OwoE+JZbwUXce76hQ==
+ dependencies:
+ lodash.clonedeep "^4.5.0"
+ lru-cache "~4.0.0"
+
lru-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
@@ -12237,6 +13036,11 @@ markdown-escapes@^1.0.0:
resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
+markdown-table@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60"
+ integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==
+
markdown-table@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b"
@@ -12278,6 +13082,13 @@ mdast-squeeze-paragraphs@^4.0.0:
dependencies:
unist-util-remove "^2.0.0"
+mdast-util-compact@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593"
+ integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg==
+ dependencies:
+ unist-util-visit "^1.1.0"
+
mdast-util-compact@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490"
@@ -12285,6 +13096,13 @@ mdast-util-compact@^2.0.0:
dependencies:
unist-util-visit "^2.0.0"
+mdast-util-definitions@^1.2.0, mdast-util-definitions@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74"
+ integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA==
+ dependencies:
+ unist-util-visit "^1.0.0"
+
mdast-util-definitions@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2"
@@ -12340,6 +13158,23 @@ mdast-util-to-hast@10.0.1:
unist-util-position "^3.0.0"
unist-util-visit "^2.0.0"
+mdast-util-to-hast@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40"
+ integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA==
+ dependencies:
+ collapse-white-space "^1.0.0"
+ detab "^2.0.0"
+ mdast-util-definitions "^1.2.0"
+ mdurl "^1.0.1"
+ trim "0.0.1"
+ trim-lines "^1.0.0"
+ unist-builder "^1.0.1"
+ unist-util-generated "^1.1.0"
+ unist-util-position "^3.0.0"
+ unist-util-visit "^1.1.0"
+ xtend "^4.0.1"
+
mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1:
version "0.6.5"
resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe"
@@ -12352,7 +13187,17 @@ mdast-util-to-markdown@^0.6.0, mdast-util-to-markdown@^0.6.1:
repeat-string "^1.0.0"
zwitch "^1.0.0"
-mdast-util-to-string@^1.0.0:
+mdast-util-to-nlcst@^3.2.0:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz#dcd0f51b59515b11a0700aeb40f168ed7ba9ed3d"
+ integrity sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ repeat-string "^1.5.2"
+ unist-util-position "^3.0.0"
+ vfile-location "^2.0.0"
+
+mdast-util-to-string@^1.0.0, mdast-util-to-string@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527"
integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==
@@ -12362,6 +13207,19 @@ mdast-util-to-string@^2.0.0:
resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b"
integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==
+mdast-util-toc@^5.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz#3af0f9c9a764b993538af03f1f79f4e3cec22736"
+ integrity sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==
+ dependencies:
+ "@types/mdast" "^3.0.3"
+ "@types/unist" "^2.0.3"
+ extend "^3.0.2"
+ github-slugger "^1.2.1"
+ mdast-util-to-string "^2.0.0"
+ unist-util-is "^4.0.0"
+ unist-util-visit "^2.0.0"
+
mdn-data@2.0.14:
version "2.0.14"
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
@@ -12372,7 +13230,7 @@ mdn-data@2.0.4:
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
-mdurl@^1.0.0:
+mdurl@^1.0.0, mdurl@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=
@@ -12396,9 +13254,9 @@ mem@^8.0.0:
mimic-fn "^3.1.0"
memfs@^3.1.2, memfs@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26"
- integrity sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A==
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.1.tgz#12301801a14eb3daa9f7491aa0ff09ffec519dd0"
+ integrity sha512-Y5vcpQzWTime4fBTr/fEnxXUxEYUgKbDlty1WX0gaa4ae14I6KmvK1S8HtXOX0elKAE6ENZJctkGtbTFYcRIUw==
dependencies:
fs-monkey "1.0.1"
@@ -12887,7 +13745,12 @@ nano-css@^5.3.1:
stacktrace-js "^2.0.2"
stylis "^4.0.6"
-nanoid@^3.1.20:
+nanoclone@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4"
+ integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==
+
+nanoid@^3.1.16, nanoid@^3.1.20, nanoid@^3.1.22:
version "3.1.22"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844"
integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==
@@ -12914,6 +13777,13 @@ napi-build-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
+native-url@0.3.4:
+ version "0.3.4"
+ resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.3.4.tgz#29c943172aed86c63cee62c8c04db7f5756661f8"
+ integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==
+ dependencies:
+ querystring "^0.2.0"
+
native-url@^0.2.6:
version "0.2.6"
resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae"
@@ -12960,11 +13830,72 @@ next-tick@~1.0.0:
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
+next@^10.0.8:
+ version "10.1.2"
+ resolved "https://registry.yarnpkg.com/next/-/next-10.1.2.tgz#2c508cc2982077f0bad6863be020c10c1d059970"
+ integrity sha512-S2KYS8NXeFmaJd8EyoC/kWi3uIlNz3PghnpDWYwy5dxhbtyaozK7fVpXmDcOTQEyYq3BZG5ph0B+hOsAwMdYfQ==
+ dependencies:
+ "@babel/runtime" "7.12.5"
+ "@hapi/accept" "5.0.1"
+ "@next/env" "10.1.2"
+ "@next/polyfill-module" "10.1.2"
+ "@next/react-dev-overlay" "10.1.2"
+ "@next/react-refresh-utils" "10.1.2"
+ "@opentelemetry/api" "0.14.0"
+ assert "2.0.0"
+ ast-types "0.13.2"
+ browserify-zlib "0.2.0"
+ browserslist "4.16.1"
+ buffer "5.6.0"
+ caniuse-lite "^1.0.30001179"
+ chalk "2.4.2"
+ chokidar "3.5.1"
+ constants-browserify "1.0.0"
+ crypto-browserify "3.12.0"
+ cssnano-simple "1.2.2"
+ domain-browser "4.19.0"
+ encoding "0.1.13"
+ etag "1.8.1"
+ find-cache-dir "3.3.1"
+ get-orientation "1.1.2"
+ https-browserify "1.0.0"
+ jest-worker "27.0.0-next.5"
+ native-url "0.3.4"
+ node-fetch "2.6.1"
+ node-html-parser "1.4.9"
+ node-libs-browser "^2.2.1"
+ os-browserify "0.3.0"
+ p-limit "3.1.0"
+ path-browserify "1.0.1"
+ pnp-webpack-plugin "1.6.4"
+ postcss "8.1.7"
+ process "0.11.10"
+ prop-types "15.7.2"
+ querystring-es3 "0.2.1"
+ raw-body "2.4.1"
+ react-is "16.13.1"
+ react-refresh "0.8.3"
+ stream-browserify "3.0.0"
+ stream-http "3.1.1"
+ string_decoder "1.3.0"
+ styled-jsx "3.3.2"
+ timers-browserify "2.0.12"
+ tty-browserify "0.0.1"
+ use-subscription "1.5.1"
+ util "0.12.3"
+ vm-browserify "1.1.2"
+ watchpack "2.1.1"
+
nice-try@^1.0.4:
version "1.0.5"
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+nlcst-to-string@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc"
+ integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg==
+
no-case@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
@@ -13037,6 +13968,13 @@ node-gyp@^7.1.0:
tar "^6.0.2"
which "^2.0.2"
+node-html-parser@1.4.9:
+ version "1.4.9"
+ resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c"
+ integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==
+ dependencies:
+ he "1.2.0"
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
@@ -13081,7 +14019,7 @@ node-object-hash@^2.0.0:
resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.3.1.tgz#5e4a6ac7f932cec4f90aff2fbdb953cb83344416"
integrity sha512-ab7pm34jqISawXpJ+fHjj2E9CmzDtm2fTTdurgzbWXIrdTEk2q2cSZRzoeGrwa0cvq6Sqezq6S9bhOBYPHRzuQ==
-node-releases@^1.1.61, node-releases@^1.1.70:
+node-releases@^1.1.61, node-releases@^1.1.69, node-releases@^1.1.70:
version "1.1.71"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
@@ -13179,6 +14117,11 @@ normalize.css@^8.0.1:
resolved "https://registry.yarnpkg.com/normalize.css/-/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3"
integrity sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
+not@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/not/-/not-0.1.0.tgz#c9691c1746c55dcfbe54cbd8bd4ff041bc2b519d"
+ integrity sha1-yWkcF0bFXc++VMvYvU/wQbwrUZ0=
+
npm-conf@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9"
@@ -13211,7 +14154,7 @@ npmlog@^4.0.0, npmlog@^4.0.1, npmlog@^4.1.2:
gauge "~2.7.3"
set-blocking "~2.0.0"
-nth-check@^1.0.2:
+nth-check@^1.0.1, nth-check@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
@@ -13262,6 +14205,11 @@ object-copy@^0.1.0:
define-property "^0.2.5"
kind-of "^3.0.3"
+object-fit-images@^3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/object-fit-images/-/object-fit-images-3.2.4.tgz#6c299d38fdf207746e5d2d46c2877f6f25d15b52"
+ integrity sha512-G+7LzpYfTfqUyrZlfrou/PLLLAPNC52FTy5y1CBywX+1/FkxIloOyQXBmZ3Zxa2AWO+lMF0JTuvqbr7G5e5CWg==
+
object-hash@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-2.1.1.tgz#9447d0279b4fcf80cff3259bf66a1dc73afabe09"
@@ -13467,7 +14415,7 @@ original@^1.0.0:
dependencies:
url-parse "^1.4.3"
-os-browserify@^0.3.0:
+os-browserify@0.3.0, os-browserify@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
@@ -13772,7 +14720,17 @@ parse-bmfont-xml@^1.1.4:
xml-parse-from-string "^1.0.0"
xml2js "^0.4.5"
-parse-entities@^1.1.0:
+parse-english@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/parse-english/-/parse-english-4.2.0.tgz#037b68f34d1a1bdf3d33668b87791bdfc1f01e1e"
+ integrity sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ parse-latin "^4.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse-entities@^1.0.2, parse-entities@^1.1.0:
version "1.2.2"
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50"
integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==
@@ -13826,6 +14784,20 @@ parse-json@^5.0.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
+parse-latin@^4.0.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-4.3.0.tgz#1a70fc5601743baa06c5f12253c334fc94b4a917"
+ integrity sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ unist-util-modify-children "^2.0.0"
+ unist-util-visit-children "^1.0.0"
+
+parse-numeric-range@^0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-0.0.2.tgz#b4f09d413c7adbcd987f6e9233c7b4b210c938e4"
+ integrity sha1-tPCdQTx6282Yf26SM8e0shDJOOQ=
+
parse-path@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf"
@@ -13836,6 +14808,11 @@ parse-path@^4.0.0:
qs "^6.9.4"
query-string "^6.13.8"
+parse-srcset@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1"
+ integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE=
+
parse-url@^5.0.0:
version "5.0.2"
resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59"
@@ -13853,6 +14830,11 @@ parse5-htmlparser2-tree-adapter@^6.0.0:
dependencies:
parse5 "^6.0.1"
+parse5@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178"
+ integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==
+
parse5@^6.0.0, parse5@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
@@ -14101,7 +15083,7 @@ pkg-up@3.1.0:
dependencies:
find-up "^3.0.0"
-platform@^1.3.6:
+platform@1.3.6, platform@^1.3.6:
version "1.3.6"
resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7"
integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==
@@ -14142,12 +15124,12 @@ polished@^4.0.5, polished@^4.1.1:
dependencies:
"@babel/runtime" "^7.12.5"
-popmotion@9.3.4, popmotion@^9.3.4:
- version "9.3.4"
- resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-9.3.4.tgz#9dea29e752491396b0beebc360d9837598f24c7c"
- integrity sha512-CwUJwVEkhXZg7ZCtWLrO2lK40g/J+cEwAV0bPxOq83g2UNrvN2HTcUDnlf/rq6QeMKJPwDvXd6R8SsJO5BjDXg==
+popmotion@9.3.5, popmotion@^9.3.4:
+ version "9.3.5"
+ resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-9.3.5.tgz#e821aff3424a021b0f2c93922db31c55cfe64149"
+ integrity sha512-Lr2rq8OP0j8D7CO2/6eO17ALeFCxjx1hfTGbMg+TLqFj+KZSGOoj6gRBVTzDINGqo6LQrORQSSSDaCL5OrB3bw==
dependencies:
- framesync "5.2.3"
+ framesync "5.3.0"
hey-listen "^1.0.8"
style-value-types "4.1.4"
tslib "^2.1.0"
@@ -14569,6 +15551,16 @@ postcss@7.0.21:
source-map "^0.6.1"
supports-color "^6.1.0"
+postcss@8.1.7:
+ version "8.1.7"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.7.tgz#ff6a82691bd861f3354fd9b17b2332f88171233f"
+ integrity sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ==
+ dependencies:
+ colorette "^1.2.1"
+ line-column "^1.0.2"
+ nanoid "^3.1.16"
+ source-map "^0.6.1"
+
postcss@8.2.6:
version "8.2.6"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.6.tgz#5d69a974543b45f87e464bc4c3e392a97d6be9fe"
@@ -14596,13 +15588,13 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.2
source-map "^0.6.1"
supports-color "^6.1.0"
-postcss@^8.1.6, postcss@^8.2.1, postcss@^8.2.8:
- version "8.2.8"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece"
- integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==
+postcss@^8.1.6, postcss@^8.2.1, postcss@^8.2.6, postcss@^8.2.8:
+ version "8.2.9"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.9.tgz#fd95ff37b5cee55c409b3fdd237296ab4096fba3"
+ integrity sha512-b+TmuIL4jGtCHtoLi+G/PisuIl9avxs8IZMSmlABRwNz5RLUUACrC+ws81dcomz1nRezm5YPdXiMEzBEKgYn+Q==
dependencies:
colorette "^1.2.2"
- nanoid "^3.1.20"
+ nanoid "^3.1.22"
source-map "^0.6.1"
potrace@^2.1.8:
@@ -14666,7 +15658,7 @@ prettier@2.2.1, prettier@^2.0.5, prettier@^2.2.1, prettier@~2.2.1:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5"
integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==
-pretty-bytes@^5.1.0, pretty-bytes@^5.4.1:
+pretty-bytes@^5.1.0, pretty-bytes@^5.4.1, pretty-bytes@^5.5.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
@@ -14715,7 +15707,7 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-process@^0.11.10:
+process@0.11.10, process@^0.11.10:
version "0.11.10"
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
@@ -14751,7 +15743,7 @@ promise.prototype.finally@^3.1.0:
es-abstract "^1.17.0-next.0"
function-bind "^1.1.1"
-prompts@2.4.0, prompts@^2.3.2, prompts@^2.4.0:
+prompts@2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7"
integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==
@@ -14759,6 +15751,14 @@ prompts@2.4.0, prompts@^2.3.2, prompts@^2.4.0:
kleur "^3.0.3"
sisteransi "^1.0.5"
+prompts@^2.3.2, prompts@^2.4.0:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.1.tgz#befd3b1195ba052f9fd2fde8a486c4e82ee77f61"
+ integrity sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==
+ dependencies:
+ kleur "^3.0.3"
+ sisteransi "^1.0.5"
+
prop-types@15.7.2, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
@@ -14777,6 +15777,18 @@ proper-lockfile@^4.1.1:
retry "^0.12.0"
signal-exit "^3.0.2"
+property-expr@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.4.tgz#37b925478e58965031bb612ec5b3260f8241e910"
+ integrity sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg==
+
+property-information@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e"
+ integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ==
+ dependencies:
+ xtend "^4.0.1"
+
property-information@^5.0.0, property-information@^5.3.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/property-information/-/property-information-5.6.0.tgz#61675545fb23002f245c6540ec46077d4da3ed69"
@@ -14802,6 +15814,11 @@ proxy-addr@~2.0.5:
forwarded "~0.1.2"
ipaddr.js "1.9.1"
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -14906,7 +15923,7 @@ qs@6.7.0:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-qs@^6.10.0, qs@^6.9.4:
+qs@^6.10.0, qs@^6.6.0, qs@^6.9.4:
version "6.10.1"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a"
integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==
@@ -14927,7 +15944,7 @@ query-string@^5.0.1:
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
-query-string@^6.13.1, query-string@^6.13.8:
+query-string@^6.13.1, query-string@^6.13.3, query-string@^6.13.8:
version "6.14.1"
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a"
integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==
@@ -14937,7 +15954,7 @@ query-string@^6.13.1, query-string@^6.13.8:
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
-querystring-es3@^0.2.0:
+querystring-es3@0.2.1, querystring-es3@^0.2.0:
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
@@ -15007,7 +16024,7 @@ raw-body@2.4.0:
iconv-lite "0.4.24"
unpipe "1.0.0"
-raw-body@^2.4.1:
+raw-body@2.4.1, raw-body@^2.4.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c"
integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==
@@ -15036,9 +16053,9 @@ rc@^1.2.7, rc@^1.2.8:
strip-json-comments "~2.0.1"
react-colorful@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.0.1.tgz#50dcd10cd94bc0b2257492ca8785c53b07805faf"
- integrity sha512-I/ctDkUZVCIKvIqBwqQWphPxDUJv8q1omKzQ3XJ6H3PhrxF/1t9olNVcTKBJSTKDACZJbyJ0cEAUi3rvAZWdSA==
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/react-colorful/-/react-colorful-5.1.0.tgz#45c8044d80bc0e7ee08dc78c760e6694f3745ca2"
+ integrity sha512-ZXKcQbSuuHaN5tOHORI+G9/tXsGxk/6qlAbfETfZILwwWwngyJiyYRhUJjI+Esk71BhhQRdj0v7cFHDnD95jtQ==
react-countup@4.3.3:
version "4.3.3"
@@ -15166,6 +16183,11 @@ react-error-overlay@^6.0.9:
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a"
integrity sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==
+react-fast-compare@^2.0.1:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
+ integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
+
react-fast-compare@^3.0.1, react-fast-compare@^3.1.1, react-fast-compare@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
@@ -15201,12 +16223,12 @@ react-inspector@^5.1.0:
is-dom "^1.0.0"
prop-types "^15.0.0"
-react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1:
+react-is@16.13.1, react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-react-is@^17.0.1:
+react-is@^17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
@@ -15249,7 +16271,7 @@ react-popper@^2.2.4:
react-fast-compare "^3.0.1"
warning "^4.0.2"
-react-refresh@^0.8.3:
+react-refresh@0.8.3, react-refresh@^0.8.3:
version "0.8.3"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f"
integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==
@@ -15259,6 +16281,14 @@ react-refresh@^0.9.0:
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf"
integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==
+react-share@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/react-share/-/react-share-4.4.0.tgz#cabbf2111d7a907a888ab4d89d08410329efd5ee"
+ integrity sha512-POe8Ge/JT9Ew9iyW7CiYsCCWCb8uMJWqFl9S7W0fJ/oH5gBJNzukH0bL5vSr17KKG5h15d3GfKaoviI22BKeYA==
+ dependencies:
+ classnames "^2.2.5"
+ jsonp "^0.2.1"
+
react-side-effect@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3"
@@ -15447,7 +16477,7 @@ read@^1.0.7:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0:
+readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
@@ -15713,7 +16743,7 @@ remark-parse@8.0.3:
vfile-location "^3.0.0"
xtend "^4.0.1"
-remark-parse@^6.0.3:
+remark-parse@^6.0.0, remark-parse@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a"
integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg==
@@ -15734,6 +16764,13 @@ remark-parse@^6.0.3:
vfile-location "^2.0.0"
xtend "^4.0.1"
+remark-retext@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/remark-retext/-/remark-retext-3.1.3.tgz#77173b1d9d13dab15ce5b38d996195fea522ee7f"
+ integrity sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw==
+ dependencies:
+ mdast-util-to-nlcst "^3.2.0"
+
remark-slug@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c"
@@ -15750,6 +16787,26 @@ remark-squeeze-paragraphs@4.0.0:
dependencies:
mdast-squeeze-paragraphs "^4.0.0"
+remark-stringify@6.0.4, remark-stringify@^6.0.0:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088"
+ integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==
+ dependencies:
+ ccount "^1.0.0"
+ is-alphanumeric "^1.0.0"
+ is-decimal "^1.0.0"
+ is-whitespace-character "^1.0.0"
+ longest-streak "^2.0.1"
+ markdown-escapes "^1.0.0"
+ markdown-table "^1.1.0"
+ mdast-util-compact "^1.0.0"
+ parse-entities "^1.0.2"
+ repeat-string "^1.5.4"
+ state-toggle "^1.0.0"
+ stringify-entities "^1.0.1"
+ unherit "^1.0.4"
+ xtend "^4.0.1"
+
remark-stringify@^8.1.0:
version "8.1.1"
resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5"
@@ -15770,6 +16827,15 @@ remark-stringify@^8.1.0:
unherit "^1.0.4"
xtend "^4.0.1"
+remark@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df"
+ integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ==
+ dependencies:
+ remark-parse "^6.0.0"
+ remark-stringify "^6.0.0"
+ unified "^7.0.0"
+
remove-trailing-separator@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
@@ -15791,7 +16857,7 @@ repeat-element@^1.1.2:
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
-repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1:
+repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
@@ -15803,6 +16869,11 @@ repeating@^2.0.0:
dependencies:
is-finite "^1.0.0"
+replace-ext@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
+ integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=
+
replace-ext@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a"
@@ -15980,6 +17051,46 @@ ret@~0.1.10:
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+retext-english@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/retext-english/-/retext-english-3.0.4.tgz#f978828d51fbcee842bc3807a45b7f709822ea8d"
+ integrity sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw==
+ dependencies:
+ parse-english "^4.0.0"
+ unherit "^1.0.4"
+
+retext-latin@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/retext-latin/-/retext-latin-2.0.4.tgz#ef5d34ae7641ae56b0675ea391095e8ee762b251"
+ integrity sha512-fOoSSoQgDZ+l/uS81oxI3alBghDUPja0JEl0TpQxI6MN+dhM6fLFumPJwMZ4PJTyL5FFAgjlsdv8IX+6IRuwMw==
+ dependencies:
+ parse-latin "^4.0.0"
+ unherit "^1.0.4"
+
+retext-smartypants@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/retext-smartypants/-/retext-smartypants-3.0.3.tgz#9c982dcc210ae3bb36f4bc46aae802798fce43f9"
+ integrity sha512-/0fIipYayOvvucn3yjxvWwyT9P6p8gbpqdqUQNs1+L7av2hxatmiA9sk+fygJSDn5OXRyhBzcezvTbEmEabfIQ==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+ unist-util-visit "^1.0.0"
+
+retext-stringify@^2.0.0:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/retext-stringify/-/retext-stringify-2.0.4.tgz#496d6c532f7dc6d15e4b262de0266e828f72efa9"
+ integrity sha512-xOtx5mFJBoT3j7PBtiY2I+mEGERNniofWktI1cKXvjMEJPOuqve0dghLHO1+gz/gScLn4zqspDGv4kk2wS5kSA==
+ dependencies:
+ nlcst-to-string "^2.0.0"
+
+retext@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/retext/-/retext-5.0.0.tgz#5d9018c4a677d6103c142362d76f50eb1d398bf6"
+ integrity sha1-XZAYxKZ31hA8FCNi129Q6x05i/Y=
+ dependencies:
+ retext-latin "^2.0.0"
+ retext-stringify "^2.0.0"
+ unified "^6.0.0"
+
retry@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
@@ -16041,9 +17152,9 @@ rsvp@^4.8.4:
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
rtl-css-js@^1.14.0:
- version "1.14.0"
- resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.14.0.tgz#daa4f192a92509e292a0519f4b255e6e3c076b7d"
- integrity sha512-Dl5xDTeN3e7scU1cWX8c9b6/Nqz3u/HgR4gePc1kWXYiQWVQbKCEyK6+Hxve9LbcJ5EieHy1J9nJCN3grTtGwg==
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.14.1.tgz#f79781d6a0c510abe73fde60aa3cbe9dfd134a45"
+ integrity sha512-G9N1s/6329FpJr8k9e1U/Lg0IDWThv99sb7k0IrXHjSnubxe01h52/ajsPRafJK1/2Vqrhz3VKLe3E1dx6jS9Q==
dependencies:
"@babel/runtime" "^7.1.2"
@@ -16071,10 +17182,10 @@ rx@4.1.0:
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
integrity sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=
-rxjs@^6.3.3, rxjs@^6.6.0, rxjs@^6.6.6:
- version "6.6.6"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70"
- integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==
+rxjs@^6.3.3, rxjs@^6.6.0, rxjs@^6.6.7:
+ version "6.6.7"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
dependencies:
tslib "^1.9.0"
@@ -16100,7 +17211,7 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
-"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
+"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -16120,6 +17231,16 @@ sane@^4.0.3:
minimist "^1.1.1"
walker "~1.0.5"
+sanitize-html@^1.27.5:
+ version "1.27.5"
+ resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.27.5.tgz#6c8149462adb23e360e1bb71cc0bae7f08c823c7"
+ integrity sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==
+ dependencies:
+ htmlparser2 "^4.1.0"
+ lodash "^4.17.15"
+ parse-srcset "^1.0.2"
+ postcss "^7.0.27"
+
sass-graph@2.2.5:
version "2.2.5"
resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.5.tgz#a981c87446b8319d96dce0671e487879bd24c2e8"
@@ -16181,7 +17302,7 @@ schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0:
ajv "^6.12.4"
ajv-keywords "^3.5.2"
-schema-utils@^3.0, schema-utils@^3.0.0:
+schema-utils@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef"
integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==
@@ -16203,6 +17324,14 @@ scss-tokenizer@^0.2.3:
js-base64 "^2.1.8"
source-map "^0.4.2"
+section-matter@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167"
+ integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==
+ dependencies:
+ extend-shallow "^2.0.1"
+ kind-of "^6.0.0"
+
seek-bzip@^1.0.5:
version "1.0.6"
resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4"
@@ -16542,7 +17671,7 @@ skynet-js@3.0.0:
url-join "^4.0.1"
url-parse "^1.4.7"
-skynet-js@^3.0.2:
+skynet-js@^3.0.0, skynet-js@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/skynet-js/-/skynet-js-3.0.2.tgz#d08a33066ee85b86e4ffc7c31591239a88da6fbe"
integrity sha512-rbmpOGbDwg2FcsZ7HkmGhVaUwWO6kaysRFKTBC3yGiV+b6fbnpPPNCskvh8kWwbTsj+koWkSRUFYqG7cc+eTuA==
@@ -16764,6 +17893,13 @@ source-map@0.7.3, source-map@^0.7.3, source-map@~0.7.2:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
+source-map@0.8.0-beta.0:
+ version "0.8.0-beta.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
+ integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
+ dependencies:
+ whatwg-url "^7.0.0"
+
source-map@^0.4.2:
version "0.4.4"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
@@ -16847,11 +17983,30 @@ split-string@^3.0.1, split-string@^3.0.2:
dependencies:
extend-shallow "^3.0.0"
+sprintf-js@^1.0.3:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673"
+ integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+square@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/square/-/square-9.1.0.tgz#016ffb3cbf67828c31a0ea24c3753e5c7ea2ebad"
+ integrity sha512-DVSV/F/2U+fQ0F+OgfQQRkGs0rSUKpsqKAo/m+Gtt2oPaL4hQff/QaALldxG2gCD3oQqzdy3Q9Oevce11ytPWA==
+ dependencies:
+ "@apimatic/schema" "^0.5.1"
+ "@types/node" "^14.14.30"
+ axios "^0.21.1"
+ detect-node "^2.0.4"
+ form-data "^3.0.0"
+ json-bigint "^1.0.0"
+ lodash.flatmap "^4.5.0"
+ tiny-warning "^1.0.3"
+
squeak@^1.0.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/squeak/-/squeak-1.3.0.tgz#33045037b64388b567674b84322a6521073916c3"
@@ -16947,6 +18102,13 @@ stacktrace-js@^2.0.2:
stack-generator "^2.0.5"
stacktrace-gps "^3.0.4"
+stacktrace-parser@0.1.10:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a"
+ integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==
+ dependencies:
+ type-fest "^0.7.1"
+
state-toggle@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
@@ -16984,6 +18146,14 @@ store2@^2.12.0:
resolved "https://registry.yarnpkg.com/store2/-/store2-2.12.0.tgz#e1f1b7e1a59b6083b2596a8d067f6ee88fd4d3cf"
integrity sha512-7t+/wpKLanLzSnQPX8WAcuLCCeuSHoWdQuh9SB3xD0kNOM38DNf+0Oa+wmvxmYueRzkmh6IcdKFtvTa+ecgPDw==
+stream-browserify@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f"
+ integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==
+ dependencies:
+ inherits "~2.0.4"
+ readable-stream "^3.5.0"
+
stream-browserify@^2.0.1, stream-browserify@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
@@ -17000,6 +18170,16 @@ stream-each@^1.1.0:
end-of-stream "^1.1.0"
stream-shift "^1.0.0"
+stream-http@3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564"
+ integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.4"
+ readable-stream "^3.6.0"
+ xtend "^4.0.2"
+
stream-http@^2.7.2:
version "2.8.3"
resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
@@ -17011,7 +18191,7 @@ stream-http@^2.7.2:
to-arraybuffer "^1.0.0"
xtend "^4.0.0"
-stream-parser@~0.3.1:
+stream-parser@^0.3.1, stream-parser@~0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773"
integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=
@@ -17048,6 +18228,11 @@ string-env-interpolation@1.0.1:
resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152"
integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==
+string-hash@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
+
string-natural-compare@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
@@ -17146,7 +18331,7 @@ string.prototype.trimstart@^1.0.4:
call-bind "^1.0.2"
define-properties "^1.1.3"
-string_decoder@^1.0.0, string_decoder@^1.1.1:
+string_decoder@1.3.0, string_decoder@^1.0.0, string_decoder@^1.1.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
@@ -17165,6 +18350,16 @@ string_decoder@~1.1.1:
dependencies:
safe-buffer "~5.1.0"
+stringify-entities@^1.0.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7"
+ integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==
+ dependencies:
+ character-entities-html4 "^1.0.0"
+ character-entities-legacy "^1.0.0"
+ is-alphanumerical "^1.0.0"
+ is-hexadecimal "^1.0.0"
+
stringify-entities@^3.0.0, stringify-entities@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903"
@@ -17211,6 +18406,11 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
dependencies:
ansi-regex "^4.1.0"
+strip-bom-string@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92"
+ integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=
+
strip-bom@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
@@ -17279,6 +18479,14 @@ strip-outer@^1.0.0, strip-outer@^1.0.1:
dependencies:
escape-string-regexp "^1.0.2"
+stripe@^8.137.0:
+ version "8.141.0"
+ resolved "https://registry.yarnpkg.com/stripe/-/stripe-8.141.0.tgz#a0c27f7255e00ebb47af3a0c1849e0c431f0fd30"
+ integrity sha512-CRGmx1WYENj16L37TujJg+KscGn8LbYbXqRCPdaepr7BzHIdAFJfQhNfdFkShW5Z9rbmo6mA2fiAOf1S3FIoSw==
+ dependencies:
+ "@types/node" ">=8.1.0"
+ qs "^6.6.0"
+
strtok3@^6.0.3:
version "6.0.8"
resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.0.8.tgz#c839157f615c10ba0f4ae35067dad9959eeca346"
@@ -17311,6 +18519,13 @@ style-to-object@0.3.0, style-to-object@^0.3.0:
dependencies:
inline-style-parser "0.1.1"
+style-to-object@^0.2.1:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb"
+ integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng==
+ dependencies:
+ inline-style-parser "0.1.1"
+
style-value-types@4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/style-value-types/-/style-value-types-4.1.4.tgz#80f37cb4fb024d6394087403dfb275e8bb627e75"
@@ -17319,6 +18534,20 @@ style-value-types@4.1.4:
hey-listen "^1.0.8"
tslib "^2.1.0"
+styled-jsx@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018"
+ integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g==
+ dependencies:
+ "@babel/types" "7.8.3"
+ babel-plugin-syntax-jsx "6.18.0"
+ convert-source-map "1.7.0"
+ loader-utils "1.2.3"
+ source-map "0.7.3"
+ string-hash "1.1.3"
+ stylis "3.5.4"
+ stylis-rule-sheet "0.0.10"
+
stylehacks@^4.0.0:
version "4.0.3"
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5"
@@ -17328,6 +18557,16 @@ stylehacks@^4.0.0:
postcss "^7.0.0"
postcss-selector-parser "^3.0.0"
+stylis-rule-sheet@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
+ integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==
+
+stylis@3.5.4:
+ version "3.5.4"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
+ integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==
+
stylis@^4.0.6:
version "4.0.9"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.9.tgz#ae3d5283aa439225cf79dd2d0cf46f8bfd4ad393"
@@ -17338,7 +18577,7 @@ sudo-prompt@^8.2.0:
resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e"
integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==
-superagent@^6.0.0:
+superagent@^6.0.0, superagent@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6"
integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==
@@ -17381,6 +18620,13 @@ supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0:
dependencies:
has-flag "^4.0.0"
+supports-color@^8.0.0:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
+ dependencies:
+ has-flag "^4.0.0"
+
svg-parser@^2.0.2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
@@ -17430,6 +18676,13 @@ svgo@^2.0.3:
csso "^4.2.0"
stable "^0.1.8"
+swr@^0.5.0:
+ version "0.5.5"
+ resolved "https://registry.yarnpkg.com/swr/-/swr-0.5.5.tgz#c72c1615765f33570a16bbb13699e3ac87eaaa3a"
+ integrity sha512-u4mUorK9Ipt+6LEITvWRWiRWAQjAysI6cHxbMmMV1dIdDzxMnswWo1CyGoyBHXX91CchxcuoqgFZ/ycx+YfhCA==
+ dependencies:
+ dequal "2.0.2"
+
symbol-observable@^1.1.0, symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
@@ -17454,16 +18707,21 @@ sync-fetch@0.3.0:
node-fetch "^2.6.1"
table@^6.0.4:
- version "6.0.7"
- resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34"
- integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==
+ version "6.0.9"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.0.9.tgz#790a12bf1e09b87b30e60419bafd6a1fd85536fb"
+ integrity sha512-F3cLs9a3hL1Z7N4+EkSscsel3z55XT950AvB05bwayrNg5T1/gykXtigioTAjbltvbMSJvvhFCbnf6mX+ntnJQ==
dependencies:
- ajv "^7.0.2"
- lodash "^4.17.20"
+ ajv "^8.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ lodash.clonedeep "^4.5.0"
+ lodash.flatten "^4.4.0"
+ lodash.truncate "^4.4.2"
slice-ansi "^4.0.0"
string-width "^4.2.0"
-tailwindcss@^2.0.3:
+tailwindcss@^2.0.3, tailwindcss@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-2.0.4.tgz#cf13e62738c3a27065664e449d93b66ee2945506"
integrity sha512-WhgR0oiBxGOZ9jY0yVfaJCHnckR7U74Fs/BMsYxGdwGJQ5Hd/HlaKD26bEJFZOvYScJo0QcUj2ImldzedsG7Bw==
@@ -17494,7 +18752,7 @@ tapable@^1.0.0, tapable@^1.1.3:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-tapable@^2.0, tapable@^2.1.1, tapable@^2.2.0:
+tapable@^2.1.1, tapable@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==
@@ -17684,7 +18942,7 @@ timed-out@^4.0.0, timed-out@^4.0.1:
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
-timers-browserify@^2.0.4:
+timers-browserify@2.0.12, timers-browserify@^2.0.4:
version "2.0.12"
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
@@ -17714,6 +18972,11 @@ tiny-emitter@^2.0.0:
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
+tiny-warning@^1.0.2, tiny-warning@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
+ integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
+
tinycolor2@^1.4.1:
version "1.4.2"
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
@@ -17748,6 +19011,11 @@ to-buffer@^1.1.1:
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
+to-data-view@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/to-data-view/-/to-data-view-1.1.0.tgz#08d6492b0b8deb9b29bdf1f61c23eadfa8994d00"
+ integrity sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==
+
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -17818,6 +19086,11 @@ token-types@^2.0.0:
"@tokenizer/token" "^0.1.1"
ieee754 "^1.2.1"
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
+ integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=
+
tough-cookie@~2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
@@ -17826,11 +19099,23 @@ tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
+ integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
+ dependencies:
+ punycode "^2.1.0"
+
traverse@0.6.6:
version "0.6.6"
resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137"
integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=
+trim-lines@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115"
+ integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA==
+
trim-newlines@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@@ -17876,9 +19161,9 @@ trough@^1.0.0:
integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==
ts-dedent@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.1.0.tgz#2df17a997ee5310a96d2be7adca0ba7c3eabf36a"
- integrity sha512-HbmrG+lCgk5W8LQTALxBxQRBDeAhQKRzdqVhHLUkVd5nYT+b6zDzbRMjiA8wqrWDa33X09WdnW4zEsdwQArTaw==
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.1.1.tgz#6dd56870bb5493895171334fa5d7e929107e5bbc"
+ integrity sha512-riHuwnzAUCfdIeTBNUq7+Yj+ANnrMXo/7+Z74dIdudS7ys2k8aSGMzpJRMFDF7CLwUTbtvi1ZZff/Wl+XxmqIA==
ts-easing@^0.2.0:
version "0.2.0"
@@ -17949,6 +19234,11 @@ tty-browserify@0.0.0:
resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+tty-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
+ integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
+
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@@ -18010,6 +19300,11 @@ type-fest@^0.6.0:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
+type-fest@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48"
+ integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==
+
type-fest@^0.8.0, type-fest@^0.8.1:
version "0.8.1"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
@@ -18073,6 +19368,14 @@ unc-path-regex@^0.1.2:
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
+underscore.string@^3.3.5:
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023"
+ integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==
+ dependencies:
+ sprintf-js "^1.0.3"
+ util-deprecate "^1.0.2"
+
unfetch@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be"
@@ -18121,6 +19424,32 @@ unified@9.2.0:
trough "^1.0.0"
vfile "^4.0.0"
+unified@^6.0.0, unified@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba"
+ integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==
+ dependencies:
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^1.1.0"
+ trough "^1.0.0"
+ vfile "^2.0.0"
+ x-is-string "^0.1.0"
+
+unified@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13"
+ integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw==
+ dependencies:
+ "@types/unist" "^2.0.0"
+ "@types/vfile" "^3.0.0"
+ bail "^1.0.0"
+ extend "^3.0.0"
+ is-plain-obj "^1.1.0"
+ trough "^1.0.0"
+ vfile "^3.0.0"
+ x-is-string "^0.1.0"
+
unified@^8.4.2:
version "8.4.2"
resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1"
@@ -18178,11 +19507,23 @@ unist-builder@2.0.3, unist-builder@^2.0.0:
resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436"
integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==
-unist-util-generated@^1.0.0:
+unist-builder@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17"
+ integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg==
+ dependencies:
+ object-assign "^4.1.0"
+
+unist-util-generated@^1.0.0, unist-util-generated@^1.1.0:
version "1.1.6"
resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b"
integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==
+unist-util-is@^2.0.0:
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20"
+ integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA==
+
unist-util-is@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd"
@@ -18193,12 +19534,19 @@ unist-util-is@^4.0.0:
resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797"
integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==
+unist-util-modify-children@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2"
+ integrity sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg==
+ dependencies:
+ array-iterate "^1.0.0"
+
unist-util-position@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47"
integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==
-unist-util-remove-position@^1.0.0:
+unist-util-remove-position@^1.0.0, unist-util-remove-position@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020"
integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==
@@ -18226,6 +19574,31 @@ unist-util-remove@^2.0.0:
dependencies:
unist-util-is "^4.0.0"
+unist-util-select@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/unist-util-select/-/unist-util-select-1.5.0.tgz#a93c2be8c0f653827803b81331adec2aa24cd933"
+ integrity sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM=
+ dependencies:
+ css-selector-parser "^1.1.0"
+ debug "^2.2.0"
+ nth-check "^1.0.1"
+
+unist-util-select@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/unist-util-select/-/unist-util-select-2.0.2.tgz#cb2774b599695172e7b60a8b5f50793e418f7ea6"
+ integrity sha512-Yv5Z5ShMxv7Z9Dw175tKvOiRVXV4FrMHG778DSD9Z0jALgb3wAx9DoeInr3200QlYp71rYUXzzJdCb76xKdrCw==
+ dependencies:
+ css-selector-parser "^1.1.0"
+ not "^0.1.0"
+ nth-check "^1.0.1"
+ unist-util-is "^3.0.0"
+ zwitch "^1.0.3"
+
+unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6"
+ integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==
+
unist-util-stringify-position@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
@@ -18233,7 +19606,12 @@ unist-util-stringify-position@^2.0.0:
dependencies:
"@types/unist" "^2.0.2"
-unist-util-visit-parents@^2.0.0:
+unist-util-visit-children@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz#e8a087e58a33a2815f76ea1901c15dec2cb4b432"
+ integrity sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ==
+
+unist-util-visit-parents@^2.0.0, unist-util-visit-parents@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9"
integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==
@@ -18257,7 +19635,7 @@ unist-util-visit@2.0.3, unist-util-visit@^2.0.0, unist-util-visit@^2.0.2:
unist-util-is "^4.0.0"
unist-util-visit-parents "^3.0.0"
-unist-util-visit@^1.1.0:
+unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3"
integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==
@@ -18409,6 +19787,13 @@ use-latest@^1.0.0:
dependencies:
use-isomorphic-layout-effect "^1.0.0"
+use-subscription@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1"
+ integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==
+ dependencies:
+ object-assign "^4.1.1"
+
use@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
@@ -18462,6 +19847,18 @@ util@0.10.3:
dependencies:
inherits "2.0.1"
+util@0.12.3, util@^0.12.0:
+ version "0.12.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888"
+ 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"
+
util@^0.11.0:
version "0.11.1"
resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
@@ -18541,7 +19938,7 @@ vfile-location@^3.0.0, vfile-location@^3.2.0:
resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
-vfile-message@^2.0.0:
+vfile-message@*, vfile-message@^2.0.0:
version "2.0.4"
resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==
@@ -18549,6 +19946,33 @@ vfile-message@^2.0.0:
"@types/unist" "^2.0.0"
unist-util-stringify-position "^2.0.0"
+vfile-message@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1"
+ integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA==
+ dependencies:
+ unist-util-stringify-position "^1.1.1"
+
+vfile@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a"
+ integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==
+ dependencies:
+ is-buffer "^1.1.4"
+ replace-ext "1.0.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-message "^1.0.0"
+
+vfile@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803"
+ integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ==
+ dependencies:
+ is-buffer "^2.0.0"
+ replace-ext "1.0.0"
+ unist-util-stringify-position "^1.0.0"
+ vfile-message "^1.0.0"
+
vfile@^4.0.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624"
@@ -18559,7 +19983,7 @@ vfile@^4.0.0:
unist-util-stringify-position "^2.0.0"
vfile-message "^2.0.0"
-vm-browserify@^1.0.1:
+vm-browserify@1.1.2, vm-browserify@^1.0.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
@@ -18585,6 +20009,14 @@ watchpack-chokidar2@^2.0.1:
dependencies:
chokidar "^2.1.8"
+watchpack@2.1.1, watchpack@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7"
+ integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==
+ dependencies:
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.1.2"
+
watchpack@^1.7.4:
version "1.7.5"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
@@ -18596,14 +20028,6 @@ watchpack@^1.7.4:
chokidar "^3.4.1"
watchpack-chokidar2 "^2.0.1"
-watchpack@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7"
- integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==
- dependencies:
- glob-to-regexp "^0.4.1"
- graceful-fs "^4.1.2"
-
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
@@ -18611,24 +20035,15 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
-web-namespaces@^1.0.0:
+web-namespaces@^1.0.0, web-namespaces@^1.1.2:
version "1.1.4"
resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec"
integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==
-webpack-assets-manifest@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/webpack-assets-manifest/-/webpack-assets-manifest-5.0.1.tgz#5f2b45579e87f122dc9af714f9508c462383a722"
- integrity sha512-4Hpv0eP1yL06cvERpwxZ+N0Pmns5j/WtiaKZeoNsFUFZB52F6wPycCyxhdyfFKMxdwC/+xeTTlBffY62I3kh2Q==
- dependencies:
- chalk "^4.0"
- deepmerge "^4.0"
- lockfile "^1.0"
- lodash.escaperegexp "^4.0"
- lodash.get "^4.0"
- lodash.has "^4.0"
- schema-utils "^3.0"
- tapable "^2.0"
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
webpack-dev-middleware@^3.7.2, webpack-dev-middleware@^3.7.3:
version "3.7.3"
@@ -18787,7 +20202,7 @@ webpack@4:
watchpack "^1.7.4"
webpack-sources "^1.4.1"
-webpack@^5.16.0:
+webpack@^5.28.0:
version "5.28.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.28.0.tgz#0de8bcd706186b26da09d4d1e8cbd3e4025a7c2f"
integrity sha512-1xllYVmA4dIvRjHzwELgW4KjIU1fW4PEuEnjsylz7k7H5HgPOctIq7W1jrt3sKH9yG5d72//XWzsHhfoWvsQVg==
@@ -18830,6 +20245,15 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
@@ -18851,6 +20275,19 @@ which-pm-runs@^1.0.0:
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
+which-typed-array@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff"
+ integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==
+ dependencies:
+ available-typed-arrays "^1.0.2"
+ call-bind "^1.0.0"
+ es-abstract "^1.18.0-next.1"
+ foreach "^2.0.5"
+ function-bind "^1.1.1"
+ has-symbols "^1.0.1"
+ is-typed-array "^1.1.3"
+
which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -19091,6 +20528,11 @@ ws@^6.2.1:
dependencies:
async-limiter "~1.0.0"
+x-is-string@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82"
+ integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI=
+
xdg-basedir@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
@@ -19297,6 +20739,19 @@ yoga-layout-prebuilt@^1.9.6:
dependencies:
"@types/yoga-layout" "1.9.2"
+yup@^0.32.9:
+ version "0.32.9"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.9.tgz#9367bec6b1b0e39211ecbca598702e106019d872"
+ integrity sha512-Ci1qN+i2H0XpY7syDQ0k5zKQ/DoxO0LzPg8PAR/X4Mpj6DqaeCoIYEEjDJwhArh3Fa7GWbQQVDZKeXYlSH4JMg==
+ dependencies:
+ "@babel/runtime" "^7.10.5"
+ "@types/lodash" "^4.14.165"
+ lodash "^4.17.20"
+ lodash-es "^4.17.15"
+ nanoclone "^0.2.1"
+ property-expr "^2.0.4"
+ toposort "^2.0.2"
+
yurnalist@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-2.1.0.tgz#44cf7ea5a33a8fab4968cc8c2970489f93760902"
@@ -19308,7 +20763,7 @@ yurnalist@^2.1.0:
read "^1.0.7"
strip-ansi "^5.2.0"
-zwitch@^1.0.0:
+zwitch@^1.0.0, zwitch@^1.0.3:
version "1.0.5"
resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==